📄 common.js
字号:
info.element.style.visibility = info.visibility; } return; } var cts = zk._actg1; for (var j = 0; j < cts.length; ++j) { var els = document.getElementsByTagName(cts[j]); var ifr = "IFRAME" == cts[j]; loop_els: for (var k = 0 ; k < els.length; k++) { var el = els[k]; if (!zk.isRealVisible(el)) continue; for (var m = 0; m < ary.length; ++m) { if (zk.isAncestor(ary[m], el)) continue loop_els; } var overlapped = false; if (!ifr || getZKAttr(el, "autohide") == "true") { //Note: z.autohide may be set dynamically, //so consider it as not overlapped for (var m = 0; m < ary.length; ++m) { if (zk.isOverlapped(ary[m], el)) { overlapped = true; break; } } } if (overlapped) { for (var m = 0; m < zk._hidCvred.length; ++m) { if (el == zk._hidCvred[m].element) continue loop_els; } zk._hidCvred .push({element: el, visibility: el.style.visibility}); el.style.visibility = "hidden"; } else { for (var m = 0; m < zk._hidCvred.length; ++m) { if (el == zk._hidCvred[m].element) { el.style.visibility = zk._hidCvred[m].visibility; zk._hidCvred.splice(m, 1); break; } } } } }};/** Retrieve a member by use of a.b.c */zk.resolve = function (fullnm) { for (var j = 0, v = window;;) { var k = fullnm.indexOf('.', j); var nm = k >= 0 ? fullnm.substring(j, k): fullnm.substring(j); v = v[nm]; if (k < 0 || !v) return v; j = k + 1; }};/** Sets the style. */zk.setStyle = function (el, style) { for (var j = 0, k = 0; k >= 0; j = k + 1) { k = style.indexOf(';', j); var s = k >= 0 ? style.substring(j, k): style.substring(j); var l = s.indexOf(':'); var nm, val; if (l < 0) { nm = s.trim(); val = ""; } else { nm = s.substring(0, l).trim(); val = s.substring(l + 1).trim(); } if (nm) el.style[nm.camelize()] = val; }};/** Returns the text-relevant style (same as HTMLs.getTextRelevantStyle). * @param incwd whether to include width * @param inchgh whether to include height */zk.getTextStyle = function (style, incwd, inchgh) { var ts = ""; for (var j = 0, k = 0; k >= 0; j = k + 1) { k = style.indexOf(';', j); var s = k >= 0 ? style.substring(j, k): style.substring(j); var l = s.indexOf(':'); var nm = l < 0 ? s.trim(): s.substring(0, l).trim(); if (nm.startsWith("font") || nm.startsWith("text") || zk._txtstyles.contains(nm) || (incwd && nm == "width") || (inchgh && nm == "height")) ts += s + ';'; } return ts;};if (!zk._txtstyles) zk._txtstyles = ["color", "background-color", "background", "white-space"];/** Backup a style of the specified name. * The second call to backupStyle is ignored until zk.restoreStyle is called. * Usually used with onmouseover. */zk.backupStyle = function (el, nm) { var bknm = "zk_bk" + nm; if (!el.getAttribute(bknm)) el.setAttribute(bknm, el.style[nm] || "_zk_none_");};/** Restore the style of the specified name. * Usually used with onover. */zk.restoreStyle = function (el, nm) { if (el && el.getAttribute && el.style) { //el might be removed! var bknm = "zk_bk" + nm; var val = el.getAttribute(bknm); if (val) { el.removeAttribute(bknm); el.style[nm] = val == "_zk_none_" ? "": val; } }};/** Scroll inner into visible, assuming outer has a scrollbar. */zk.scrollIntoView = function (outer, inner) { if (outer && inner) { var padding = $int(Element.getStyle(inner, "padding-top")); var limit = inner.offsetTop - padding; if (limit < outer.scrollTop) { outer.scrollTop = limit; } else { limit = 3 + inner.offsetTop + inner.offsetHeight - outer.scrollTop - outer.clientHeight; if (limit > 0) outer.scrollTop += limit; } }};/** Go to the specified uri. * @param overwrite whether to overwrite the history * @param target the target frame (ignored if overwrite is true */zk.go = function (url, overwrite, target) { var bProgress = !zk.opera && !zk.keepDesktop && window.location.href.indexOf('#') < 0; //whether to show progress //we don't show progress for opera, since user might press BACK to //return this page (and found the progress dlg remains on browse) // //Bug 1773575: with # and the same url, no redraw if (!url) { if (bProgress) zk.progress(); //BACK button issue window.location.reload(); } else if (overwrite) { if (bProgress) zk.progress(); window.location.replace(url); } else if (target) { //we have to process query string because browser won't do it //even if we use insertHTMLBeforeEnd("<form...") var frm = document.createElement("FORM"); document.body.appendChild(frm); var j = url.indexOf('?'); if (j > 0) { var qs = url.substring(j + 1); url = url.substring(0, j); zk.queryToHiddens(frm, qs); } frm.name = "go"; frm.action = url; frm.method = "GET"; frm.target = target; if (url && !zk.isNewWindow(url, target) && bProgress) zk.progress(); frm.submit(); } else { if (bProgress) zk.progress(); window.location.href = url; }};/** Tests whether a new window will be opened. */zk.isNewWindow = function (url, target) { return url.startsWith("mailto:") || url.startsWith("javascript:") || (target && target != "_self");};/* Convert query string (a=b&c=d) to hiddens of the specified form. */zk.queryToHiddens = function (frm, qs) { for(var j = 0;;) { var k = qs.indexOf('=', j); var l = qs.indexOf('&', j); var nm, val; if (k < 0 || (k > l && l >= 0)) { //no value part nm = l >= 0 ? qs.substring(j, l): qs.substring(j); val = ""; } else { nm = qs.substring(j, k); val = l >= 0 ? qs.substring(k + 1, l): qs.substring(k + 1); } zk.newHidden(nm, val, frm); if (l < 0) return; //done j = l + 1; }};/** Creates a frame if it is not created yet. */zk.newFrame = function (name, src, style) { var frm = $e(name); if (frm) return frm; if (!src) src = zk.getUpdateURI('/web/img/spacer.gif'); //IE with HTTPS: we must specify the src var html = '<iframe id="'+name+'" name="'+name+'" src="'+src+'"'; if (style) html += ' style="'+style+'"'; html += '></iframe>'; zk.insertHTMLBeforeEnd(document.body, html); return $e(name);};/** Returns the nearest form, or null if not available. * @since 3.0.0 */zk.formOf = function (n) { for (; n; n = n.parentNode) if ($tag(n) == "FORM") return n;};/** Creates a hidden field. * @param parent to assign the hidden to. Ignored if null. * @since 3.0.0 */zk.newHidden = function (nm, val, parent) { var inp = document.createElement("INPUT"); inp.type = "hidden"; inp.name = nm; inp.value = val; if (parent) parent.appendChild(inp); return inp;};/** Returns the number of columns (considering colSpan) */zk.ncols = function (cells) { var cnt = 0; if (cells) { for (var j = 0; j < cells.length; ++j) { var span = cells[j].colSpan; if (span >= 1) cnt += span; else ++cnt; } } return cnt;};/** Copies the width of each cell from one row to another. * It handles colspan of srcrows, but not dst's colspan, nor rowspan * * @param {Object} srcrows all rows from the source table. Don't pass just one row * @param {Object} mate a component gird or tree or listbox. * @param {Boolean} stripe whether renders the stripe. * @param {Boolean} again whether re-calculates the width of each cell for opera or safari * @since 3.0.0 */zk.cpCellWidth = function (dst, srcrows, mate, stripe, again) { if (dst == null || srcrows == null || !srcrows.length || !dst.cells.length || !zk.isRealVisible(dst)) return; //Note: With Opera, we cannot use table-layout=fixed and we have to assign //the table width (test case: fixed-table-header.html) var hdtable = dst.parentNode.parentNode; if (hdtable.style.width) { var bdtable = srcrows[0].parentNode.parentNode; bdtable.style.width = hdtable.style.width; } else if (zk.opera && hdtable) { hdtable.style.tableLayout = "auto"; hdtable.style.width = ""; } var found; var scOdd = getZKAttr(mate.element, "scOddRow"), dstwds = [], cacheCss = []; for (var i = 0, even = true; i < srcrows.length; ++i) { var row = srcrows[i]; if (stripe && scOdd && zk.isVisible(row)) { zk.addClass(row, scOdd, !even); even = !even; } if(!found && getZKAttr(row, "sel") == "true") found = row; var cells = row.cells; for (var j = 0, z = 0; j < cells.length; ++j) { if (j < dst.cells.length) { var s = cells[j], d = dst.cells[z]; if (s.colSpan > 1) { if (s.colSpan + z <= dst.cells.length) { var unwd = [], total = 0, ttlOffset = 0; for (var k = 0; k < s.colSpan; k++) { var d = dst.cells[z+k]; if (!dstwds[z+k]) { var wd = d.style.width; if (wd) { if (wd == "auto" || wd.indexOf('%') > -1) d.style.width = zk.revisedSize(d, d.offsetWidth) + "px"; dstwds[z+k] = d.offsetWidth; total += dstwds[z+k]; ttlOffset += d.offsetWidth; } else unwd.push([d, k]); } else { total += dstwds[z+k]; ttlOffset += d.offsetWidth; } } var uuid = $uuid(s); var cell = $e(uuid + "!cell") || $e(uuid + "!cave"); if (unwd.length) { var amount = s.offsetWidth - total; if (amount < unwd.length * 20) { amount = unwd.length * 20; var rwd = zk.revisedSize(s, amount + total); cell.style.width = zk.revisedSize(cell, rwd) + "px"; s.style.width = rwd + "px"; } var each = Math.max(Math.floor((amount) / unwd.length), 0); while (unwd.length) { var data = unwd.shift(); var d = data[0], k = data[1]; if (unwd.length) amount -= each; else each = amount; var wd = zk.safari ? each : zk.revisedSize(d, each); d.style.width = wd + "px"; var cave = $e($uuid(d) + "!cave"); if (cave) cave.style.width = zk.revisedSize(cave, wd) + "px"; dstwds[z+k] = d.offsetWidth; total += dstwds[z+k]; ttlOffset += d.offsetWidth; } } var rwd = zk.revisedSize(s, total); cell.style.width = zk.revisedSize(cell, rwd); + "px"; s.style.width = rwd + "px"; if (!again && i == 0 && zk.ie) setTimeout(function (){zk.cpCellWidth(dst, srcrows, mate, false, true)}, 500); } } else { if (!dstwds[z] || d.offsetWidth != s.offsetWidth || zk.ie || zk.safari) { // Note: we have to specify the width of each column for opera. if (!dstwds[z]) { var wd = d.style.width; if (wd == "auto" || wd.indexOf('%') > -1) d.style.width = zk.revisedSize(d, d.offsetWidth) + "px"; wd = d.style.width; dstwds[z] = wd ? (zk.ie && z == dst.cells.length -1 ? d.offsetWidth - 2 : d.offsetWidth) : zk.ie && z == dst.cells.length-1 ? s.offsetWidth - 2 : s.offsetWidth; var w; if (!wd) { w = zk.revisedSize(d, dstwds[z]); d.style.width = w + "px"; } else w = $int(wd); var cell = $e($uuid(d) + "!cave"); if (cell) cell.style.width = zk.revisedSize(cell, w) + "px"; } var uuid = $uuid(s); var cell = $e(uuid + "!cell") || $e(uuid + "!cave"); if (cell && (!cacheCss[j] || s.className != cacheCss[j][0].el.className || s.style.cssText != "")) { cacheCss[j] = [{el: s , size : zk.sumStyles(s, "lr", zk.borders) + zk.sumStyles(s, "lr", zk.paddings)}, {el: cell, size : zk.sumStyles(cell, "lr", zk.borders) + zk.sumStyles(cell, "lr", zk.paddings)}]; } var rwd = dstwds[z] - cacheCss[j][0].size; if (cell) cell.style.width = Math.max(rwd - cacheCss[j][1].size, 0) + "px"; // #Bugs 1817636 s.style.width = (rwd < 0 ? 0 : rwd) + "px"; } } z += s.colSpan; // header count } } } if (found) zk.scrollIntoView(mate.body, found); if (!again && (zk.safari || zk.opera)) setTimeout(function (){zk.cpCellWidth(dst, srcrows, mate, false, true)}, 5); // Note :we have to re-calculate the width of cell column for safari.};/**Copies the width of each cell from the element's header. * It handles colspan of srcrows. * * @param {Array} dst the element's header. * @param {Array} srcrows each cell. * @since 3.0 */zk.cpCellArrayWidth = function (dst, srcrows) { if (dst == null || srcrows == null || !srcrows.length || !dst.cells.length) return; for (var j = 0, k = srcrows.length; j < k; j++) { var s = srcrows.shift(); var z = s.cellIndex; var d = dst.cells[z]; var wd = 0; if (s.colSpan > 1) { if (s.colSpan + z <= dst.cells.length) { for (var k = 0; k < s.colSpan; k++) { var hd = dst.cells[z+k]; wd += zk.ie && z+k == dst.cells.length -1 ? hd.offsetWidth - 2 : hd.offsetWidth; } } } else wd += zk.ie && z == dst.cells.length -1 ? d.offsetWidth - 2 : d.offsetWidth; var uuid = $uuid(s); var cell = $e(uuid + "!cell") || $e(uuid + "!cave"); var rwd = zk.revisedSize(s, wd); if (cell) cell.style.width = zk.revisedSize(cell, rwd) + "px"; s.style.width = rwd + "px"; }};//Number///** digits specifies at least the number of digits must be ouput. */zk.formatFixed = function (val, digits) { var s = "" + val; for (var j = digits - s.length; --j >= 0;) s = "0" + s; return s;};//Date///** Parses a string into a Date object. * @param strict whether not to lenient */zk.parseDate = function (txt, fmt, strict) { if (!fmt) fmt = "yyyy/MM/dd"; var val = new Date(); var y = val.getFullYear(), m = val.getMonth(), d = val.getDate(); var ts = txt.split(/\W+/); for (var i = 0, j = 0; j < fmt.length; ++j) { var cc = fmt.charAt(j); if (cc == 'y' || cc == 'M' || cc == 'd' || cc == 'E') { var len = 1; for (var k = j; ++k < fmt.length; ++len) if (fmt.charAt(k) != cc) break; var nosep; //no separator if (k < fmt.length) { var c2 = fmt.charAt(k); nosep = c2 == 'y' || c2 == 'M' || c2 == 'd' || c2 == 'E'; } var token = ts[i++]; switch (cc) { case 'y': if (nosep) { if (len <= 3) len = 2; if (token.length > len) { ts[--i] = token.substring(len); token = token.substring(0, len); } } y = $int(token); if (isNaN(y)) return null; //failed if (y < 100) y += y > 29 ? 1900 : 2000; break; case 'M': if (len <= 2) { if (nosep && token.length > 2) { ts[--i] = token.substring(2); token = token.substring(0, 2); } m = $int(token) - 1; if (isNaN(m)) return null; //failed } else { for (var l = 0;; ++l) { if (l == 12) return null; //failed if (len == 3) { if (zk.SMON[l].split(/\W+/)[0] == token) { m = l; break; } } else { if (zk.FMON[l].split(/\W+/)[0] == token) { m = l; break; } } } } break; case 'd': if (nosep) { if (len < 2) len = 2; if (token.length > len) { ts[--i] = token.substring(len); token = token.substring(0, len); } } d = $int(token); if (isNaN(d)) return null; //failed break; //case 'E': ignored } j = k - 1; } } var dt = new Date(y, m, d); if (strict && (dt.getFullYear() != y || dt.getMonth() != m || dt.getDate() != d)) return null; //failed return dt;};/** Generates a formated string for the specified Date object. */zk.formatDate = function (val, fmt) { if (!fmt) fmt = "yyyy/MM/dd"; var txt = ""; for (var j = 0; j < fmt.length; ++j) { var cc = fmt.charAt(j); if (cc == 'y' || cc == 'M' || cc == 'd' || cc == 'E') { var len = 1; for (var k = j; ++k < fmt.length; ++len) if (fmt.charAt(k) != cc) break; switch (cc) { case 'y': if (len <= 3) txt += zk.formatFixed(val.getFullYear() % 100, 2);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -