/* * Copyright DHTMLX LTD. http://www.dhtmlx.com You allowed to use this component * or parts of it under GPL terms To use it on other terms or get Professional * edition of the component please contact us at sales@dhtmlx.com */ dhtmlXGridObject.prototype.useCSV = function(path) { if (!this._csv_loadXML) { this._csv_loadXML = this.loadXML; this._csv_loadXMLString = this.loadXMLString; this.loadXML = this.loadCSVFile; this.loadXMLString = this.loadCSVFile } }; dhtmlXGridObject.prototype.loadCSVFile = function(path, afterCall) { this.xmlLoader = new dtmlXMLLoaderObject(this._onCSVFileLoad, this); this.xmlLoader.waitCall = afterCall; this.xmlLoader.loadXML(path) }; dhtmlXGridObject.prototype._onCSVFileLoad = function(obj, b, c, d, xml) { var z = this.xmlDoc.responseText; obj.loadCSVString(z) }; dhtmlXGridObject.prototype.enableCSVAutoID = function(mode) { this._csvAID = convertStringToBoolean(mode) }; dhtmlXGridObject.prototype.enableCSVHeader = function(mode) { this._csvHdr = convertStringToBoolean(mode); if (this._csvHdr) this.enableCSVAutoID(true) }; dhtmlXGridObject.prototype.setCSVDelimiter = function(str) { this._csvDelim = (str || this._csvDelim); this._csvDelimX = this._csvDelim.charCodeAt(0); var trans = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, "A", "B", "C", "D", "E", "F"]; this._csvDelimX = "\\x" + trans[Math.floor(this._csvDelimX / 16)] + "" + trans[(this._csvDelimX % 16)] }; dhtmlXGridObject.prototype.loadCSVString = function(str) { if (!this._csvDelimX) this.setCSVDelimiter(); var r1 = new RegExp("^([^" + this._csvDelimX + "]+)" + this._csvDelimX); var r2 = new RegExp("\n([^" + this._csvDelimX + "]+)" + this._csvDelimX, "g"); var r3 = new RegExp("" + this._csvDelimX + "", "g"); if (this._csvHdr) { hdr = str.substr(0, str.indexOf("\n")); str = str.substr(str.indexOf("\n") + 1); hdr = "" + hdr.replace(new RegExp(this._csvDelimX, "g"), ",") + "" }; if (this._csvAID) { str = str .replace(r1, "" + (this._csvHdr ? (hdr + str) : str) + "]]>"; this.xmlLoader = new dtmlXMLLoaderObject(this.doLoadDetails, window, true, this.no_cashe); this.xmlLoader.loadXMLString(str) }; dhtmlXGridObject.prototype.serializeToCSV = function() { this.editStop(); if (this._mathSerialization) this._agetm = "getMathValue"; else this._agetm = "getValue"; var out = ""; if (this._csvHdr) { var a = []; var b = this.hdr.rows[1].cells; for (var i = 0; i < b.length; i++) if ((!this._srClmn) || (this._srClmn[i])) a .push((b[i].firstChild.tagName ? b[i].firstChild : b[i]).innerHTML); out = a.join(this._csvDelim) + "\n" }; var i = 0; var leni = (this._dload) ? this.rowsBuffer[0].length : (this.rowsBuffer[0].length + this.rowsCol.length); for (i; i < leni; i++) { if (i >= this.rowsCol.length && this.pagingOn) { var temp = this._serializeRowToCVS(null, i - this.rowsCol.length) } else { var r = this.rowsCol[i]; var temp = this._serializeRowToCVS(r, i) }; out += temp; if (temp != "") out += "\n" }; return out }; dhtmlXGridObject.prototype._serializeRowToCVS = function(r, i, start, end) { var out = new Array(); if ((!r) || (r._sRow) || (r._rLoad) || (r.tagName == "row")) { if (this.rowsBuffer[1][i]) { var r = this.rowsBuffer[1][i]; if (!this._csvAID) out[out.length] = r.getAttribute("id"); for (var j = 0; j < r.childNodes.length; j++) { if (r.childNodes[j].tagName == "cell") { var c = r.childNodes[j]; out[out.length] = c.firstChild ? c.firstChild.nodeValue : "" } } }; return out }; if (!this._csvAID) out[out.length] = r.idd; start = start || 0; end = end || r.childNodes.length; var changeFl = false; for (var jj = start; jj < end; jj++) if ((!this._srClmn) || (this._srClmn[jj])) { var cvx = r.childNodes[jj]; var zx = this.cells(r.idd, cvx._cellIndex); // =======2007/11/26=====add by xiaoxiao while hidden then cancel // copy data ..... if (zx.cell.style.display == "") { // ��ӵ� if (zx.cell) zxVal = zx[this._agetm](); else zxVal = ""; if ((this._chAttr) && (zx.wasChanged())) changeFl = true; out[out.length] = ((zxVal === null) ? "" : zxVal) if ((this._ecspn) && (cvx.colSpan)) { cvx = cvx.colSpan - 1; for (var u = 0; u < cvx; u++) out[out.length] = "" } } }; if ((this._onlChAttr) && (!changeFl)) return ""; return out.join(this._csvDelim) }; dhtmlXGridObject.prototype.toClipBoard = function(val) { if (window.clipboardData) window.clipboardData.setData("Text", val); else (new Clipboard()).copy(val) }; dhtmlXGridObject.prototype.fromClipBoard = function() { if (window.clipboardData) return window.clipboardData.getData("Text"); else return (new Clipboard()).paste() }; dhtmlXGridObject.prototype.cellToClipboard = function(rowId, cellInd) { if ((!rowId) || (!cellInd)) { if (!this.selectedRows[0]) return; rowId = this.selectedRows[0].idd; cellInd = this.cell._cellIndex }; var ed = this.cells(rowId, cellInd); this.toClipBoard(ed.getLabel ? ed.getLabel() : ed.getValue()) }; dhtmlXGridObject.prototype.updateCellFromClipboard = function(rowId, cellInd) { if ((!rowId) || (!cellInd)) { if (!this.selectedRows[0]) return; rowId = this.selectedRows[0].idd; cellInd = this.cell._cellIndex }; var ed = this.cells(rowId, cellInd); ed[ed.setImage ? "setLabel" : "setValue"](this.fromClipBoard()) }; dhtmlXGridObject.prototype.rowToClipboard = function(rowId) { var out = ""; if (this._mathSerialization) this._agetm = "getMathValue"; else this._agetm = "getValue"; if (rowId) out = this._serializeRowToCVS(this.getRowById(rowId)); else for (var i = 0; i < this.selectedRows.length; i++) { if (out) out += "\n"; out += this._serializeRowToCVS(this.selectedRows[i]) }; this.toClipBoard(out) }; dhtmlXGridObject.prototype.updateRowFromClipboard = function(rowId) { var csv = this.fromClipBoard(); if (!csv) return; if (rowId) var r = this.getRowById(rowId); else var r = this.selectedRows[0]; if (!r) return; csv = csv.split(this._csvDelim); for (var i = 1; i < csv.length; i++) { var ed = this.cells3(r, i - 1); ed[ed.setImage ? "setLabel" : "setValue"](csv[i]) } }; dhtmlXGridObject.prototype.addRowFromClipboard = function() { var csv = this.fromClipBoard(); if (!csv) return; var z = csv.split("\n"); for (var i = 0; i < z.length; i++) if (z[i]) { csv = z[i].split(this._csvDelim); this.addRow(csv[0], csv.slice(1)) } }; dhtmlXGridObject.prototype.gridToClipboard = function() { this.toClipBoard(this.serializeToCSV()) }; dhtmlXGridObject.prototype.gridFromClipboard = function() { var csv = this.fromClipBoard(); if (!csv) return; this.loadCSVString(csv) }; dhtmlXGridObject.prototype.getXLS = function(path) { if (!this.xslform) { this.xslform = document.createElement("FORM"); this.xslform.action = (path || "") + "xls.php"; this.xslform.method = "post"; this.xslform.target = (_isIE ? "_blank" : ""); document.body.appendChild(this.xslform); var i1 = document.createElement("INPUT"); i1.type = "hidden"; i1.name = "csv"; this.xslform.appendChild(i1); var i2 = document.createElement("INPUT"); i2.type = "hidden"; i2.name = "csv_header"; this.xslform.appendChild(i2) }; var cvs = this.serializeToCSV(); this.xslform.childNodes[0].value = cvs; var cvs_header = []; var l = this._cCount; for (var i = 0; i < l; i++) { cvs_header.push(this.getHeaderCol(i)) }; cvs_header = cvs_header.join(','); this.xslform.childNodes[1].value = cvs_header; this.xslform.submit() }; dhtmlXGridObject.prototype.printView = function(path) { var html = ""; html += ""; html += ''; var row_length = this.rowsCol.length; var col_length = this._cCount; var width = this._printWidth(); html += ''; for (var i = 0; i < col_length; i++) { if (this._hrrar && this._hrrar[i]) continue; var colspan = (this.hdr.rows[1].cells[this.hdr.rows[1]._childIndexes ? this.hdr.rows[1]._childIndexes[parseInt(i)] : i].colSpan || 1); for (var j = 1; j < colspan; j++) width[i] += width[j]; html += ''; i += colspan - 1 }; html += ''; for (var i = 2; i < this.hdr.rows.length; i++) html += "" + this.hdr.rows[i].innerHTML + ""; for (var i = 0; i < row_length; i++) { html += ''; for (var j = 0; j < col_length; j++) { if (this._hrrar && this._hrrar[j]) continue; var c = this.cells(this.rowsCol[i].idd, j); if (c.getImage) var value = c.cell.innerHTML; else var value = c.getValue(); var color = this.columnColor[j] ? 'background-color:' + this.columnColor[j] + ';' : ''; var align = this.cellAlign[j] ? 'text-align:' + this.cellAlign[j] + ';' : ''; html += '' }; html += '' }; if (this.ftr) for (var i = 1; i < this.ftr.childNodes[0].rows.length; i++) html += "" + this.ftr.rows[i].innerHTML + ""; html += '
' + this.getHeaderCol(i) + '
' + (value === "" ? " " : value) + '
'; var d = window.open('', '_blank'); d.document.write(html); d.document.close() }; dhtmlXGridObject.prototype._printWidth = function() { var width = []; var total_width = 0; for (var i = 0; i < this._cCount; i++) { var w = this.getColWidth(i); width.push(w); total_width += w }; var percent_width = []; var total_percent_width = 0; for (var i = 0; i < width.length; i++) { var p = Math.floor((width[i] / total_width) * 100); total_percent_width += p; percent_width.push(p) }; percent_width[percent_width.length - 1] += 100 - total_percent_width; return percent_width }; dhtmlXGridObject.prototype.loadObject = function(obj) { }; dhtmlXGridObject.prototype.loadJSONFile = function(path) { }; dhtmlXGridObject.prototype.serializeToObject = function() { }; dhtmlXGridObject.prototype.serializeToJSON = function() { }; if (!window.clipboardData) window.clipboardData = { _make : function() { var clip = Components.classes['@mozilla.org/widget/clipboard;1'] .createInstance(Components.interfaces.nsIClipboard); if (!clip) return null; var trans = Components.classes['@mozilla.org/widget/transferable;1'] .createInstance(Components.interfaces.nsITransferable); if (!trans) return null; trans.addDataFlavor('text/unicode'); var str = Components.classes["@mozilla.org/supports-string;1"] .createInstance(Components.interfaces.nsISupportsString); this._p = [clip, trans, str]; return true }, setData : function(type, text) { netscape.security.PrivilegeManager .enablePrivilege('UniversalXPConnect'); if (!this._make()) return false; this._p[2].data = text; this._p[1].setTransferData("text/unicode", this._p[2], text.length * 2); var clipid = Components.interfaces.nsIClipboard; this._p[0].setData(this._p[1], null, clipid.kGlobalClipboard) }, getData : function(type) { netscape.security.PrivilegeManager .enablePrivilege('UniversalXPConnect'); if (!this._make()) return false; this._p[0].getData(this._p[1], this._p[0].kGlobalClipboard); var strLength = new Object(); var str = new Object(); this._p[1].getTransferData("text/unicode", str, strLength); if (str) str = str.value .QueryInterface(Components.interfaces.nsISupportsString); if (str) return str.data.substring(0, strLength.value / 2); return "" } }; /* * Copyright DHTMLX LTD. http://www.dhtmlx.com You allowed to use this component * or parts of it under GPL terms To use it on other terms or get Professional * edition of the component please contact us at sales@dhtmlx.com */