initial work on check-all-checkbox
This commit is contained in:
parent
d9b11bc9a4
commit
278c2c2a82
@ -1020,6 +1020,7 @@ siteLayout' headingOverride widget = do
|
||||
addScript $ StaticR js_utils_alerts_js
|
||||
addScript $ StaticR js_utils_asidenav_js
|
||||
addScript $ StaticR js_utils_asyncTable_js
|
||||
addScript $ StaticR js_utils_checkAll_js
|
||||
addScript $ StaticR js_utils_form_js
|
||||
addScript $ StaticR js_utils_inputs_js
|
||||
addScript $ StaticR js_utils_setup_js
|
||||
|
||||
@ -18,7 +18,7 @@
|
||||
var scrollTable;
|
||||
|
||||
function init() {
|
||||
var table = wrapper.querySelector('#' + tableIdent);
|
||||
var table = wrapper.querySelector('#' + tableIdent);
|
||||
|
||||
if (!table) {
|
||||
return;
|
||||
|
||||
70
static/js/utils/checkAll.js
Normal file
70
static/js/utils/checkAll.js
Normal file
@ -0,0 +1,70 @@
|
||||
(function collonadeClosure() {
|
||||
'use strict';
|
||||
|
||||
window.utils = window.utils || {};
|
||||
|
||||
var JS_INITIALIZED_CLASS = 'js-initialized';
|
||||
var CHECKBOX_SELECTOR = '.checkbox';
|
||||
|
||||
window.utils.checkAll = function(wrapper, options) {
|
||||
|
||||
if (!wrapper || wrapper.classList.contains(JS_INITIALIZED_CLASS)) {
|
||||
return false;
|
||||
}
|
||||
options = options || {};
|
||||
|
||||
var columns = [];
|
||||
|
||||
function init() {
|
||||
|
||||
columns = gatherColumns(wrapper);
|
||||
|
||||
var checkboxColumn = findCheckboxColumn(columns);
|
||||
if (checkboxColumn) {
|
||||
setup(checkboxColumn);
|
||||
}
|
||||
}
|
||||
|
||||
function gatherColumns(table) {
|
||||
var rows = Array.from(table.querySelectorAll('tr'));
|
||||
var cols = [];
|
||||
rows.forEach(function(tr) {
|
||||
var cells = Array.from(tr.querySelectorAll('td'));
|
||||
cells.forEach(function(cell, iCell) {
|
||||
if (!cols[iCell]) {
|
||||
cols[iCell] = [];
|
||||
}
|
||||
cols[iCell].push(cell);
|
||||
});
|
||||
});
|
||||
return cols;
|
||||
}
|
||||
|
||||
function findCheckboxColumn(cols) {
|
||||
var checkboxColumn = null;
|
||||
cols.forEach(function(col, i) {
|
||||
if (isCheckboxColumn(col)) {
|
||||
checkboxColumn = i;
|
||||
}
|
||||
});
|
||||
return checkboxColumn;
|
||||
}
|
||||
|
||||
function isCheckboxColumn(col) {
|
||||
var onlyCheckboxes = true;
|
||||
col.forEach(function(cell) {
|
||||
console.log('checking', cell);
|
||||
if (onlyCheckboxes && !cell.querySelector(CHECKBOX_SELECTOR)) {
|
||||
onlyCheckboxes = false;
|
||||
}
|
||||
});
|
||||
return onlyCheckboxes;
|
||||
}
|
||||
|
||||
function setup(column) {
|
||||
console.log('setting up column', column);
|
||||
}
|
||||
|
||||
init();
|
||||
};
|
||||
})();
|
||||
@ -1,10 +1,11 @@
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
var dbtIdent = #{String $ dbtIdent};
|
||||
var headerDBTableShortcircuit = #{String (toPathPiece HeaderDBTableShortcircuit)};
|
||||
var selector = '#' + dbtIdent + '-table-wrapper:not(.js-initialized)';
|
||||
var selector = '#' + dbtIdent + '-table-wrapper';
|
||||
var wrapper = document.querySelector(selector);
|
||||
|
||||
if (wrapper) {
|
||||
window.utils.setup('asyncTable', wrapper, { headerDBTableShortcircuit, dbtIdent });
|
||||
window.utils.setup('checkAll', wrapper);
|
||||
}
|
||||
});
|
||||
|
||||
Loading…
Reference in New Issue
Block a user