2 Commits

Author SHA1 Message Date
21cd43c4cb Add selectall checkbox handling 2012-04-28 23:21:31 +01:00
49e8206aff Merge commit 'release-0.1.0' into develop 2012-01-22 01:15:11 +00:00

View File

@@ -1,22 +1,22 @@
/**
* Sihnon Framework JS Library
*
* Written by Ben Roberts
* Homepage: https://benroberts.net/projects/sihnon-framework/
* Code: https://github.com/optiz0r/sihnon-js-lib/
*
* Dependencies:
* - Bootstrap-*.js
*
* Released under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License
* http://creativecommons.org/licenses/by-nc-sa/3.0/
*/
* Sihnon Framework JS Library
*
* Written by Ben Roberts
* Homepage: https://benroberts.net/projects/sihnon-framework/
* Code: https://github.com/optiz0r/sihnon-js-lib/
*
* Dependencies:
* - Bootstrap-*.js
*
* Released under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License
* http://creativecommons.org/licenses/by-nc-sa/3.0/
*/
/**
* Sihnon Framework object
*
* Entry point for all base framework code
*/
* Sihnon Framework object
*
* Entry point for all base framework code
*/
var sf = {
/**
@@ -176,6 +176,7 @@ var sf = {
*/
init: function() {
sf.ui.dialog.init();
sf.ui.selectall.init();
},
/**
@@ -341,6 +342,38 @@ var sf = {
},
},
/**
* Submodule for handling select-all checkbox groups
*/
selectall: {
init: function() {
// Enable select all/none for checkboxes
$('input[type=checkbox].select-all').click(sf.ui.selectall.updateChildren);
// Enable update of the select-all checkbox as the children are manually changed
$('input[type=checkbox].select-all').each(function() {
$('input[type=checkbox][data-select-all="' + $(this).attr('id') + '"]').click(sf.ui.selectall.updateParent);
});
},
updateChildren: function(parent_id, children) {
$('input[type=checkbox][data-select-all="'+$(this).attr('id')+'"]')
.attr('checked', $(this).attr('checked') == 'checked')
.trigger('change');
},
updateParent: function() {
var parent = $('#' + $(this).attr('data-select-all'));
var children = $('input[type=checkbox][data-select-all="' + parent.attr('id') + '"]');
if (children.filter(':checked').length != children.length) {
parent.attr('checked', false);
} else if (children.not(':checked').length == 0) {
parent.attr('checked', true);
}
},
},
},
/**