📄 zpgrid-output.js
字号:
} // Display grid if (this.headerContainer) { this.headerContainer.style.position = 'relative'; // IE6 requires width for relative element containing other relative // elements if (this.headerContainer.currentStyle && this.headerContainer.currentStyle['width'] == 'auto') { this.headerContainer.style.width = '100%'; } var aHtml = []; aHtml.push('<div id="zpGrid'); aHtml.push(this.id); aHtml.push('Container"><div>'); // Header this.outputTableOpen(aHtml); this.outputFields(aHtml, aCols, aFixedCols, aSpans, aRows, aTotals); this.outputTableClose(aHtml); aHtml.push('</div>'); // Fixed header if (oConfig.fixedLeft > 0 || oConfig.horizontal) { aHtml.push('<div id="zpGrid'); aHtml.push(this.id); if (this.headerContainer.style.setAttribute) { // IE aHtml.push('FixedLeft" style="position:absolute;top:0px;\ left:expression(this.offsetParent.scrollLeft+\'px\')"><div>'); } else { // Other browsers don't support expressions yet aHtml.push('FixedLeft" style="position:absolute;top:0px;left:'); aHtml.push(oContainer.scrollLeft); aHtml.push('px"><div>'); } this.outputTableOpen(aHtml, true); this.outputFields(aHtml, aCols, aFixedCols, aSpans, aRows, aTotals, true); this.outputTableClose(aHtml); aHtml.push('</div></div>'); } aHtml.push('</div>'); // Draw header this.headerContainer.innerHTML = aHtml.join(''); // Clean container oContainer.innerHTML = ''; // Data var oContr = Zapatec.Utils.createElement('div', oContainer, true); oContr.id = 'zpGrid' + this.id + 'BusyContainer'; oContr.style.position = 'absolute'; oContr.style.top = '0px'; oContr.style.left = '0px'; oContr = Zapatec.Utils.createElement('div', oContainer, true); oContr.id = 'zpGrid' + this.id + 'DataContainer'; // Rows aHtml = []; this.outputTableOpen(aHtml, false, 'zpGrid' + this.id + 'DataTable'); this.outputRows(aHtml, aCols, aFixedCols, aSpans, aRows, aTotals, false, oContr); // Pagination if (this.paginationContainers.length) { // Draw the rest of rows this.outputTableClose(aHtml); var oDiv = Zapatec.Utils.createElement('div', oContr, true); oDiv.innerHTML = aHtml.join(''); // Pagination aHtml = []; this.outputPagination(aHtml); for (var iEl = 0; iEl < this.paginationContainers.length; iEl++) { this.paginationContainers[iEl].innerHTML = aHtml.join(''); } } else { // Pagination aHtml.push('</tbody></table></td></tr>'); this.outputPagination(aHtml); aHtml.push('</tbody></table>'); // Draw the rest of rows var oDiv = Zapatec.Utils.createElement('div', oContr, true); oDiv.innerHTML = aHtml.join(''); } // Fixed columns if (oConfig.fixedLeft > 0 || oConfig.horizontal) { var oFixed = Zapatec.Utils.createElement('div', oContr, true); oFixed.id = 'zpGrid' + this.id + 'DataFixedLeft'; if (oFixed.style.setAttribute) { // IE oFixed.style.setAttribute('cssText', 'position:absolute;top:0px;\ left:expression(this.offsetParent.scrollLeft+"px")', 0); } else { // Other browsers don't support expressions yet oFixed.style.position = 'absolute'; oFixed.style.top = '0px'; oFixed.style.left = oContainer.scrollLeft + 'px'; } var aHtml = []; this.outputTableOpen(aHtml, true); // Rows this.outputRows(aHtml, aCols, aFixedCols, aSpans, aRows, aTotals, true, oFixed); this.outputTableClose(aHtml); var oDiv = Zapatec.Utils.createElement('div', oFixed, true); oDiv.innerHTML = aHtml.join(''); } // Right column margin when resizing if (!oConfig.horizontal) { var oRs = Zapatec.Utils.createElement('div', oContr, true); oRs.id = 'zpGrid' + this.id + 'DataColResize'; oRs.style.position = 'absolute'; oRs.style.top = '0px'; oRs.style.left = '0px'; oRs.style.display = 'none'; oRs.className = this.getClassName({ prefix: 'zpGrid', suffix: 'ColResize' }); } } else { // Table var aHtml = []; aHtml.push('<div style="position:absolute;top:0px;left:0px" id="zpGrid'); aHtml.push(this.id); aHtml.push('BusyContainer"></div><div id="zpGrid'); aHtml.push(this.id); aHtml.push('Container"><div>'); this.outputTableOpen(aHtml, false, 'zpGrid' + this.id + 'DataTable'); // Header this.outputFields(aHtml, aCols, aFixedCols, aSpans, aRows, aTotals); // Rows this.outputRows(aHtml, aCols, aFixedCols, aSpans, aRows, aTotals); // Pagination if (this.paginationContainers.length) { // Draw table this.outputTableClose(aHtml); aHtml.push('</div></div>'); oContainer.innerHTML = aHtml.join(''); // Pagination aHtml = []; this.outputPagination(aHtml); for (var iEl = 0; iEl < this.paginationContainers.length; iEl++) { this.paginationContainers[iEl].innerHTML = aHtml.join(''); } } else { // Pagination aHtml.push('</tbody></table></td></tr>'); this.outputPagination(aHtml); aHtml.push('</tbody></table></div></div>'); // Draw table oContainer.innerHTML = aHtml.join(''); } // Fixed columns if ((oConfig.fixedLeft > 0 || oConfig.horizontal) && !oConfig.visibleColumns) { var oFixed = Zapatec.Utils.createElement('div', document.getElementById('zpGrid' + this.id + 'Container'), true); oFixed.id = 'zpGrid' + this.id + 'FixedLeft'; if (oFixed.style.setAttribute) { // IE oFixed.style.setAttribute('cssText', 'position:absolute;top:0px;\ left:expression(this.offsetParent.scrollLeft+"px")', 0); } else { // Other browsers don't support expressions yet oFixed.style.position = 'absolute'; oFixed.style.top = '0px'; oFixed.style.left = oContainer.scrollLeft + 'px'; } var aHtml = []; this.outputTableOpen(aHtml, true); // Header this.outputFields(aHtml, aCols, aFixedCols, aSpans, aRows, aTotals, true); // Rows this.outputRows(aHtml, aCols, aFixedCols, aSpans, aRows, aTotals, true); this.outputTableClose(aHtml); var oDiv = Zapatec.Utils.createElement('div', oFixed, true); oDiv.innerHTML = aHtml.join(''); } } if (this.headerContainer || !oConfig.visibleColumns) { // If there is separate container for totals if (aTotals && this.totalsContainer && this.outputTotals) { this.totalsContainer.style.position = 'relative'; // IE6 requires width for relative element containing other relative // elements if (this.totalsContainer.currentStyle && this.totalsContainer.currentStyle['width'] == 'auto') { this.totalsContainer.style.width = '100%'; } var aHtml = []; aHtml.push('<div id="zpGrid'); aHtml.push(this.id); aHtml.push('TotalsContainer"><div>'); // Totals this.outputTableOpen(aHtml); this.outputTotals(aHtml, aCols, aFixedCols, aTotals); this.outputTableClose(aHtml); aHtml.push('</div>'); // Fixed totals if (oConfig.fixedLeft > 0) { aHtml.push('<div id="zpGrid'); aHtml.push(this.id); if (this.totalsContainer.style.setAttribute) { // IE aHtml.push('TotalsFixedLeft" style="position:absolute;top:0px;\ left:expression(this.offsetParent.scrollLeft+\'px\')"><div>'); } else { // Other browsers don't support expressions yet aHtml.push('TotalsFixedLeft" style="position:absolute;top:0px;left:'); aHtml.push(oContainer.scrollLeft); aHtml.push('px"><div>'); } this.outputTableOpen(aHtml, true); this.outputTotals(aHtml, aCols, aFixedCols, aTotals, true); this.outputTableClose(aHtml); aHtml.push('</div></div>'); } aHtml.push('</div>'); // Draw totals this.totalsContainer.innerHTML = aHtml.join(''); // Right column margin when resizing if (!oConfig.horizontal) { var oRs = Zapatec.Utils.createElement('div', this.totalsContainer, true); oRs.id = 'zpGrid' + this.id + 'TotalsColResize'; oRs.style.position = 'absolute'; oRs.style.top = '0px'; oRs.style.left = '0px'; oRs.style.display = 'none'; oRs.className = this.getClassName({ prefix: 'zpGrid', suffix: 'ColResize' }); } } // Synchronize scrolling this.syncScroll(); } // Custom totals if (typeof oConfig.callbackTotalsDisplay == 'function') { oConfig.callbackTotalsDisplay(this, aTotals); } else if (aTotals && typeof oConfig.callbackTotalDisplay == 'function') { var iTotals = aTotals.length; var iRow; for (iRow = 0; iRow < iTotals; iRow++) { oConfig.callbackTotalDisplay(this, aTotals[iRow]); } } // Custom pagination if (typeof oConfig.callbackPaginationDisplay == 'function' && oConfig.rowsPerPage > 0) { oConfig.callbackPaginationDisplay(this); } // Finish refresh this.onRefresh();};/** * Visualizes row selection. * * @private * @param {object} oRow Row object */Zapatec.Grid.prototype.visualizeSelectRow = function(oRow) { // Check arguments if (!oRow) { return; } // Get table row element var oTr = document.getElementById('zpGrid' + this.id + 'Row' + oRow.i); if (oTr) { // Can be on different page // Get row number because rows can be sorted and filtered /zpGridRow(\d+)/.exec(oTr.className); var sRow = RegExp.$1; // Select row var aClSelected = []; aClSelected.push(' zpGridRowSelected zpGridRowSelected'); aClSelected.push(sRow); aClSelected.push(' zpGridRowSelected'); aClSelected.push(sRow % 2 == 1 ? 'Odd' : 'Even'); if (oTr.className.indexOf('zpGridRowLast') >= 0) { // Last row aClSelected.push(' zpGridRowSelectedLast'); } var sClassSelected = aClSelected.join(''); oTr.className += sClassSelected; // Get fixed part of row oTr = document.getElementById('zpGrid' + this.id + 'Row' + oRow.i + 'Fixed'); if (oTr) { oTr.className += sClassSelected; } }};/** * Visualizes row unselection. * * @private * @param {object} oRow Row object */Zapatec.Grid.prototype.visualizeUnselectRow = function(oRow) { // Check arguments if (!oRow) { return; } // Get table row element var oTr = document.getElementById('zpGrid' + this.id + 'Row' + oRow.i); if (oTr) { // Can be on different page oTr.className = oTr.className.replace(/ zpGridRowSelected[^ ]*/g, ''); // Get fixed part of row oTr = document.getElementById('zpGrid' + this.id + 'Row' + oRow.i + 'Fixed'); if (oTr) { oTr.className = oTr.className.replace(/ zpGridRowSelected[^ ]*/g, ''); } }};/** * Visualizes cell selection. * * @private * @param {object} oCell Cell object */Zapatec.Grid.prototype.visualizeSelectCell = function(oCell) { // Check arguments if (!oCell) { return; } // Get table cell element var oTd = document.getElementById('zpGrid' + this.id + 'Row' + oCell.r + 'Cell' + oCell.i); if (oTd) { // Can be on different page // Select cell var aClSelected = []; aClSelected.push(' zpGridCellSelected zpGridCellSelected'); aClSelected.push(oCell.i); aClSelected.push(' zpGridCellSelected'); aClSelected.push(oCell.i % 2 == 1 ? 'Odd' : 'Even'); if (oCell.i == this.fields.length - 1) { // Last cell aClSelected.push(' zpGridCellSelectedLast'); } oTd.className += aClSelected.join(''); }};/** * Visualizes cell unselection. * * @private * @param {object} oCell Cell object */Zapatec.Grid.prototype.visualizeUnselectCell = function(oCell) { // Check arguments if (!oCell) { return; } // Get table row element var oTd = document.getElementById('zpGrid' + this.id + 'Row' + oCell.r + 'Cell' + oCell.i); if (oTd) { // Can be on different page oTd.className = oTd.className.replace(/ zpGridCellSelected[^ ]*/g, ''); }};/** * Displays filter out forms. * * @private * @param {object} oFilterOut Object passed through config option * @param {object} aVals Array of unique column values */Zapatec.Grid.prototype.visualizeFilterOut = function(oFilterOut, aVals) { // Get container if (!oFilterOut) { return; } var oContr = Zapatec.Widget.getElementById(oFilterOut.container); if (!oContr) { return; } // Get columns var aCols = oFilterOut.column; if (!(aCols instanceof Array)) { aCols = [aCols]; } // Get fields var aFields = []; for (var iCol = 0; iCol < aCols.length; iCol++) { var oField = this.fields[aCols[iCol]]; if (!oField) { continue; } aFields.push(oField); } if (!aFields.length) { return; } // Join column numbers var sCols = aCols.join(','); // "Select all" and "Clear" links var aHtml = []; aHtml.push('<div><a href="javascript:void(0)" onclick="Zapatec.Grid.checkboxSelectAllOnClick(\''); aHtml.push(this.id); aHtml.push("',["); aHtml.push(sCols); aHtml.push('])">'); aHtml.push(this.getMessage('labelSelectAll')); aHtml.push('</a> | <a href="javascript:void(0)" onclick="Zapatec.Grid.checkboxClearAllOnClick(\''); aHtml.push(this.id); aHtml.push("',["); aHtml.push(sCols); aHtml.push('])">'); aHtml.push(this.getMessage('labelClear')); aHtml.push('</a></div>'); // Checkboxes for (var iVal = 0; iVal < aVals.length; iVal++) { var sVal = aVals[iVal].v + ''; var sEscaped = escape(sVal); aHtml.push('<div><input type="checkbox" '); // Check if this value is hidden for (var iField = 0; iField < aFields.length; iField++) { var oField = aFields[iField]; if (!(oField.hiddenValues instanceof Array) || Zapatec.Utils.arrIndexOf(oField.hiddenValues, sVal) < 0) { aHtml.push('checked '); break; } } aHtml.push('onclick="'); if (oFilterOut.onclick) { aHtml.push(oFilterOut.onclick); aHtml.push(';'); } aHtml.push("Zapatec.Grid.checkboxOnClick('"); aHtml.push(this.id); aHtml.push("',["); aHtml.push(sCols); aHtml.push("],unescape('"); aHtml.push(sEscaped); aHtml.push("'),this.checked)\" /><a href=\"javascript:void(0)\" onclick=\"Zapatec.Grid.checkboxLinkOnClick('"); aHtml.push(this.id); aHtml.push("',["); aHtml.push(sCols); aHtml.push("],unescape('"); aHtml.push(sEscaped); aHtml.push("'))\">"); aHtml.push(sVal); aHtml.push('</a></div>'); } oContr.innerHTML = aHtml.join('');};/** * Returns container for "Loading" or "Updating" image. * * @private * @return Container for "Loading" or "Updating" image * @type object */Zapatec.Grid.prototype.getBusyContainer = function() { if (!this.container) { return; } // Get container var oContr = document.getElementById('zpGrid' + this.id + 'BusyContainer'); if (oContr) { oContr.style.left = this.container.scrollLeft + 'px'; oContr.style.top = this.container.scrollTop + 'px'; oContr.style.width = Math.min(this.container.clientWidth, this.getGridDimension
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -