diff options
Diffstat (limited to 'js/common.js')
-rwxr-xr-x | js/common.js | 83 |
1 files changed, 68 insertions, 15 deletions
diff --git a/js/common.js b/js/common.js index 1544e6d0b..1f8318862 100755 --- a/js/common.js +++ b/js/common.js @@ -100,7 +100,7 @@ Element.prototype.fadeIn = function(display = undefined){ }; Element.prototype.visible = function() { - return this.style.display != "none" && this.offsetHeight != 0 && this.offsetWidth != 0; + return window.getComputedStyle(this).display != "none"; //&& this.offsetHeight != 0 && this.offsetWidth != 0; } Element.visible = function(elem) { @@ -154,7 +154,10 @@ String.prototype.stripTags = function() { /* exported xhr */ const xhr = { - post: function(url, params = {}, complete = undefined) { + _ts: 0, + post: function(url, params = {}, complete = undefined, failed = undefined) { + this._ts = new Date().getTime(); + console.log('xhr.post', '>>>', params); return new Promise((resolve, reject) => { @@ -165,10 +168,13 @@ const xhr = { postData: dojo.objectToQuery(params), handleAs: "text", error: function(error) { + if (failed != undefined) + failed(error); + reject(error); }, load: function(data, ioargs) { - console.log('xhr.post', '<<<', ioargs.xhr); + console.log('xhr.post', '<<<', ioargs.xhr, (new Date().getTime() - xhr._ts) + " ms"); if (complete != undefined) complete(data, ioargs.xhr); @@ -178,7 +184,7 @@ const xhr = { ); }); }, - json: function(url, params = {}, complete = undefined) { + json: function(url, params = {}, complete = undefined, failed = undefined) { return new Promise((resolve, reject) => this.post(url, params).then((data) => { let obj = null; @@ -187,13 +193,21 @@ const xhr = { obj = JSON.parse(data); } catch (e) { console.error("xhr.json", e, xhr); + + if (failed != undefined) + failed(e); + reject(e); } - console.log('xhr.json', '<<<', obj); + console.log('xhr.json', '<<<', obj, (new Date().getTime() - xhr._ts) + " ms"); if (obj && typeof App != "undefined") if (!App.handleRpcJson(obj)) { + + if (failed != undefined) + failed(obj); + reject(obj); return; } @@ -248,8 +262,11 @@ const Lists = { if (row) checked ? row.addClassName("Selected") : row.removeClassName("Selected"); }, - select: function(elemId, selected) { - $(elemId).querySelectorAll("li").forEach((row) => { + select: function(elem, selected) { + if (typeof elem == "string") + elem = document.getElementById(elem); + + elem.querySelectorAll("li").forEach((row) => { const checkNode = row.querySelector(".dijitCheckBox,input[type=checkbox]"); if (checkNode) { const widget = dijit.getEnclosingWidget(checkNode); @@ -264,6 +281,30 @@ const Lists = { } }); }, + getSelected: function(elem) { + const rv = []; + + if (typeof elem == "string") + elem = document.getElementById(elem); + + elem.querySelectorAll("li").forEach((row) => { + if (row.hasClassName("Selected")) { + const rowVal = row.getAttribute("data-row-value"); + + if (rowVal) { + rv.push(rowVal); + } else { + // either older prefix-XXX notation or separate attribute + const rowId = row.getAttribute("data-row-id") || row.id.replace(/^[A-Z]*?-/, ""); + + if (!isNaN(rowId)) + rv.push(parseInt(rowId)); + } + } + }); + + return rv; + } }; /* exported Tables */ @@ -279,8 +320,11 @@ const Tables = { checked ? row.addClassName("Selected") : row.removeClassName("Selected"); }, - select: function(elemId, selected) { - $(elemId).querySelectorAll("tr").forEach((row) => { + select: function(elem, selected) { + if (typeof elem == "string") + elem = document.getElementById(elem); + + elem.querySelectorAll("tr").forEach((row) => { const checkNode = row.querySelector(".dijitCheckBox,input[type=checkbox]"); if (checkNode) { const widget = dijit.getEnclosingWidget(checkNode); @@ -295,16 +339,25 @@ const Tables = { } }); }, - getSelected: function(elemId) { + getSelected: function(elem) { const rv = []; - $(elemId).querySelectorAll("tr").forEach((row) => { + if (typeof elem == "string") + elem = document.getElementById(elem); + + elem.querySelectorAll("tr").forEach((row) => { if (row.hasClassName("Selected")) { - // either older prefix-XXX notation or separate attribute - const rowId = row.getAttribute("data-row-id") || row.id.replace(/^[A-Z]*?-/, ""); + const rowVal = row.getAttribute("data-row-value"); - if (!isNaN(rowId)) - rv.push(parseInt(rowId)); + if (rowVal) { + rv.push(rowVal); + } else { + // either older prefix-XXX notation or separate attribute + const rowId = row.getAttribute("data-row-id") || row.id.replace(/^[A-Z]*?-/, ""); + + if (!isNaN(rowId)) + rv.push(parseInt(rowId)); + } } }); |