var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var Unibase; (function (Unibase) { let Apps; (function (Apps) { let Collaboration; (function (Collaboration) { let Components; (function (Components) { let Common; (function (Common) { class Download extends Unibase.Platform.Core.BaseComponent { constructor() { super(...arguments); this.requestId = 0; this.actionsWhileCreatingNewFile = []; } downloadDocumentFile(FileId, documentGroup, documnetfilename, savetype, documentContainer) { if (documentGroup == "Word") { this.fileCacheHelper.loadJsFile("platform/analytics/components/chartviewer/chartviewer.js", () => __awaiter(this, void 0, void 0, function* () { Unibase.Apps.Collaboration.DocumentManager.Instance().getDocumentFileInfo(FileId).then((response) => { var result = response.result; var fileName = result.FileTitle; var filetype = result.FileType; documentContainer.save(fileName, savetype); }); })); } else if (documentGroup == "Excel") { let instance = document.getElementById('DocumentViewer').ej2_instances[0]; instance.saveAsJson().then((res) => { this.dataForJson = res; var JSONData = JSON.stringify(this.dataForJson.jsonObject.Workbook); var sheetIndex = Unibase.Apps.Collaboration.Components.Sheets.Base.Instance().ssObj.activeSheetIndex; this.data = { FileId: FileId, SaveTypeID: savetype, SheetIndex: sheetIndex, }; Unibase.Apps.Collaboration.DocumentManager.Instance().spreadSheetDownload(this.data).then((response) => { this.fileCacheHelper.loadJsFile("tenants/themes/compact/components/notifications/notification.js", () => __awaiter(this, void 0, void 0, function* () { var path = encodeURIComponent(response.result); Unibase.Themes.Compact.Components.Notification.Instance().Downloadfile(path); })); }); }); } } saveDocumentFile(FileId, documentGroup, documentContainer, args, sheetBaseIns) { return __awaiter(this, void 0, void 0, function* () { document.getElementsByClassName('biz-ss-saving')[0].style.display = 'inline-block'; if (document.getElementsByClassName("biz-ss-saveicon")[0].classList.contains("biz-ss-cloudsave")) { document.getElementsByClassName("biz-ss-saveicon")[0].style.display = 'none'; document.getElementsByClassName("biz-ss-cloudloading")[0].style.display = 'inline-block'; } if (documentGroup == "Word") { this.data = { Content: documentContainer.serialize(), FileId: FileId }; yield Unibase.Apps.Collaboration.DocumentManager.Instance().saveWord(this.data).then((response) => { var result = response; Unibase.Apps.Collaboration.Components.DocEditor.Base.Instance().editDetails(); }); } else if (documentGroup == "Excel") { this.ssAutoSave(args, sheetBaseIns, true); } setTimeout(function () { return __awaiter(this, void 0, void 0, function* () { if (document.getElementsByClassName("biz-ss-saveicon")[0].classList.contains("biz-ss-cloudsave")) { document.getElementsByClassName("biz-ss-saveicon")[0].style.display = 'inline-block'; document.getElementsByClassName("biz-ss-cloudloading")[0].style.display = 'none'; document.getElementsByClassName('biz-ss-saving')[0].style.display = 'none'; } }); }, 1000); }); } getCellWithRowAndColByRange(range, sheet) { let idx = ej.spreadsheet.getIndexesFromAddress(range); return { SheetIndex: this.baseIns.ssObj.biz.getSheetIndexByname(sheet.name), row: idx[0], cell: idx[1], cellInfo: this.baseIns.ssObj.biz.getCell(idx[0], idx[1], sheet) }; } ssAutoSave(args, base, saveversion, callback) { if (base.permissionLevel !== Unibase.Apps.Collaboration.Enums.Share.Viewer) { this.requestId++; let refId; let action = args.action; let data; this.baseIns = base; let indexes = base.ssObj.biz.getIndexes(); let sheet = base.ssObj.biz.getActiveSheet(); let sheetIdx = base.getSheetIndex(); let saveType = "cell"; let isCreateNewFile = false; let changedValue = []; let isCut = false; console.log("Save start " + action + " " + Date()); if (args.action == "resize") { (args.eventArgs.isCol) ? action = "colResize" : action = "rowResize"; } ; (args.eventArgs) && (args.eventArgs.modelType) && (args.eventArgs.modelType == "Sheet" && action == "insert") && (action = "insertSheet"); (args.action == "delete") && (args.eventArgs.modelType == "Row") && (action = "deleteRow"); (args.action == "delete") && (args.eventArgs.modelType == "Column") && (action = "deleteCol"); if (args.action == "insertshiftright" || args.action == "deleteshiftleft") { action = "shiftright&left"; } if (args.action == "insertshiftdown" || args.action == "deleteshiftup") { action = "shiftup&down"; } if (args.action != "import" && args.action != "gotoSheet" && !this.baseIns.isCreatingNewFile) { !(base.FileId) && (isCreateNewFile = true, this.baseIns.isCreatingNewFile = true, refId = Unibase.Themes.Providers.DetailHelper.recordId); switch (action) { case "cellSave": indexes = this.baseIns.getIndexesFromAddress(args.eventArgs.address.split("!")[1]); changedValue = [{ Row: indexes[0], Cell: indexes[3], CellInfo: sheet.rows[indexes[0]].cells[indexes[3]] }]; data = { changedvalues: changedValue, iscreatenewfile: isCreateNewFile, FileId: base.FileId, sheetIndex: sheetIdx, autosavetype: saveType, requestId: this.requestId, }; break; case "format": case "validation": case "shortcuts": case "autofill": case "removeDuplicates": case "trim": for (var i = indexes[0]; i <= indexes[2]; i++) { for (var j = indexes[1]; j <= indexes[3]; j++) { var cellInfo = ej.spreadsheet.getCell(i, j, sheet); let obj = { Row: i, cell: j, CellInfo: cellInfo }; (obj.CellInfo) && (obj.CellInfo.validation) && (obj.CellInfo.validation.inCellDropDown == null) && (obj.CellInfo.validation.inCellDropDown = false); changedValue.push(obj); } } data = { changedvalues: changedValue, iscreatenewfile: isCreateNewFile, FileId: base.FileId, sheetIndex: sheetIdx, autosavetype: saveType, modelType: (args.eventArgs) ? args.eventArgs.modelType : null, requestId: this.requestId, saveversions: saveversion, }; break; case "insertImage": case "deleteChart": case "cellDelete": case "insertChart": case "multipleCells": setTimeout(() => { (action == "deleteChart") && (indexes = base.getIndexesFromAddress(args.eventArgs.range.split("!")[1])); for (var i = indexes[0]; i <= indexes[2]; i++) { for (var j = indexes[1]; j <= indexes[3]; j++) { var cellInfo = ej.spreadsheet.getCell(i, j, sheet); let obj = { Row: i, cell: j, CellInfo: cellInfo }; (action == "deleteChart") && (cellInfo.chart) && (cellInfo.chart.pop(cellInfo.chart.find(x => x.id = args.eventArgs.id))) && (cellInfo.chart.length == 0) && (cellInfo.chart = null); (obj.CellInfo) && (obj.CellInfo.validation) && (obj.CellInfo.validation.inCellDropDown == null) && (obj.CellInfo.validation.inCellDropDown = false); if (action == "insertImage") { cellInfo.image.forEach(image => { image.left = parseInt(image.left); image.height = parseInt(image.height); image.top = parseInt(image.top); image.width = parseInt(image.width); }); } else if (action == "cellDelete" && cellInfo && cellInfo.image && cellInfo.image[0] && cellInfo.image.findIndex(x => x.id.startsWith("biz_image_in_cell")) !== -1) { let index = cellInfo.image.findIndex(x => x.id.startsWith("biz_image_in_cell")); cellInfo.image.splice(index, 1); } changedValue.push(obj); } } data = { changedvalues: changedValue, iscreatenewfile: isCreateNewFile, FileId: base.FileId, sheetIndex: sheetIdx, saveversions: saveversion, autosavetype: saveType, modelType: (args.eventArgs) ? args.eventArgs.modelType : null, requestId: this.requestId, }; (isCreateNewFile) && (data["folderId"] = this.baseIns.folderId); (data) && Unibase.Apps.Collaboration.DocumentManager.Instance().ssAutoSave(data); }, 10); break; case "imageRefresh": data = { changedvalues: args.changedValues, iscreatenewfile: isCreateNewFile, FileId: base.FileId, sheetIndex: sheetIdx, autosavetype: saveType, requestId: this.requestId, saveversions: saveversion, }; break; case "insert": saveType = "addRowsAndColumn"; data = { Indexes: this.baseIns.ssObj.biz.getIndexes(), iscreatenewfile: isCreateNewFile, FileId: base.FileId, sheetIndex: sheet.index, autosavetype: saveType, modelType: args.eventArgs.modelType, saveversions: saveversion, requestId: this.requestId, RowIndex: args.eventArgs.index, InsertType: args.eventArgs.insertType, }; break; case "moveSheet": saveType = "moveSheet"; data = { FileId: base.FileId, sheetIndex: sheet.index, autosavetype: saveType, saveversions: saveversion, requestId: this.requestId, Indexes: [args.sheetIndexes.pop(), args.position], }; break; case "deleteRow": saveType = "deleteRow"; data = { Indexes: [args.eventArgs.startIndex, args.eventArgs.endIndex - args.eventArgs.startIndex + 1], iscreatenewfile: isCreateNewFile, FileId: base.FileId, saveversions: saveversion, sheetIndex: sheetIdx, autosavetype: saveType, requestId: this.requestId, }; break; case "deleteCol": saveType = "deleteColumn"; var usedrangeindex = []; var usedrange = this.baseIns.ssObj.getActiveSheet().usedRange; usedrangeindex.push(usedrange.colIndex); usedrangeindex.push(usedrange.rowIndex); data = { Indexes: [args.eventArgs.startIndex, args.eventArgs.endIndex - args.eventArgs.startIndex + 1], iscreatenewfile: isCreateNewFile, FileId: base.FileId, sheetIndex: sheetIdx, autosavetype: saveType, saveversions: saveversion, requestId: this.requestId, RowIndex: args.eventArgs.index, }; break; case "shiftright&left": saveType = "shiftright&left"; data = { Indexes: this.baseIns.ssObj.biz.getIndexes(), iscreatenewfile: isCreateNewFile, FileId: base.FileId, sheetIndex: sheetIdx, autosavetype: saveType, saveversions: saveversion, requestId: this.requestId, Action: args.action, UsedRange: usedrangeindex, }; break; case "shiftup&down": setTimeout(() => { saveType = "shiftup&down"; var usedrangeindex = []; var usedrange = this.baseIns.ssObj.getActiveSheet().usedRange; usedrangeindex.push(usedrange.rowIndex); usedrangeindex.push(usedrange.colIndex); data = { Indexes: this.baseIns.ssObj.biz.getIndexes(), iscreatenewfile: isCreateNewFile, FileId: base.FileId, sheetIndex: sheetIdx, autosavetype: saveType, saveversions: saveversion, requestId: this.requestId, Action: args.action, UsedRange: usedrangeindex, }; (isCreateNewFile) && (data["folderId"] = this.baseIns.folderId); (data) && Unibase.Apps.Collaboration.DocumentManager.Instance().ssAutoSave(data); }, 0); break; case "headers": saveType = "headers"; data = { FileId: base.FileId, iscreatenewfile: isCreateNewFile, sheetIndex: args.eventArgs.sheetIdx, showHeader: args.eventArgs.isShow, autosavetype: saveType, saveversions: saveversion, requestId: this.requestId, }; break; case "gridLines": saveType = "gridlines"; data = { FileId: base.FileId, iscreatenewfile: isCreateNewFile, sheetIndex: args.eventArgs.sheetIdx, showGridlines: args.eventArgs.isShow, autosavetype: saveType, saveversions: saveversion, requestId: this.requestId, }; break; case "freezePanes": saveType = "freezepanes"; data = { FileId: base.FileId, iscreatenewfile: isCreateNewFile, sheetIndex: args.eventArgs.sheetIdx, freezeRow: args.eventArgs.row, freezeColumn: args.eventArgs.column, autosavetype: saveType, saveversions: saveversion, requestId: this.requestId, }; break; case "insertCell": saveType = "selectedRows"; data = { FileId: base.FileId, iscreatenewfile: isCreateNewFile, sheetIndex: sheetIdx, autosavetype: saveType, rowInfo: sheet.rows[indexes[0]], indexes: indexes, saveversions: saveversion, requestId: this.requestId, }; break; case "conditionalFormat": saveType = "conditionalFormat"; changedValue = [{ Row: indexes[0], Cell: indexes[3], ConditionalFormat: sheet.conditionalFormats }]; data = { changedvalues: changedValue, iscreatenewfile: isCreateNewFile, FileId: base.FileId, sheetIndex: sheetIdx, autosavetype: saveType, saveversions: saveversion, requestId: this.requestId, }; break; case "clipboard": if (args.eventArgs && args.eventArgs.copiedInfo && args.eventArgs.copiedInfo.isCut == true) { isCut = true; var cutSheetIndex = base.ssObj.biz.getSheetIndexByname(args.eventArgs.copiedRange.split("!")[0]); var cutCellIndexes = base.swapRange(ej.spreadsheet.getIndexesFromAddress(args.eventArgs.copiedRange.split("!")[1])); } for (var i = indexes[0]; i <= indexes[2]; i++) { for (var j = indexes[1]; j <= indexes[3]; j++) { var cellInfo = ej.spreadsheet.getCell(i, j, sheet); let obj = { Row: i, cell: j, CellInfo: cellInfo }; changedValue.push(obj); } } data = { changedvalues: changedValue, iscreatenewfile: isCreateNewFile, FileId: base.FileId, sheetIndex: args.eventArgs.pasteSheetIndex, autosavetype: saveType, cutSheetIndex: cutSheetIndex, cutCellIndexes: cutCellIndexes, isCut: isCut, saveversions: saveversion, requestId: this.requestId, }; break; case "cellDrag": data = { changedvalues: args.changedValue, iscreatenewfile: isCreateNewFile, FileId: base.FileId, sheetIndex: sheetIdx, autosavetype: saveType, cutSheetIndex: sheetIdx, cutCellIndexes: args.cutCellIdxs, isCut: true, saveversions: saveversion, requestId: this.requestId, }; break; case "newspreadsheet": saveType = "newspreadsheet"; data = { FileId: 0, iscreatenewfile: isCreateNewFile, autosavetype: saveType, requestId: this.requestId, saveversions: saveversion, }; break; case "replaceAll": case "replace": saveType = "replaceAll"; if (action == "replaceAll") { args.eventArgs.addressCollection.forEach((e) => { let sheet = this.baseIns.ssObj.biz.getSheetByName(e.split("!")[0]); changedValue.push(this.getCellWithRowAndColByRange(e.split("!")[1], sheet)); }); } else { let sheet = this.baseIns.ssObj.biz.getSheetByName(args.eventArgs.address.split("!")[0]); changedValue.push(this.getCellWithRowAndColByRange(args.eventArgs.address.split("!")[1], sheet)); } data = { changedvalues: changedValue, FileId: base.FileId, sheetIndex: args.eventArgs.pasteSheetIndex, autosavetype: saveType, saveversions: saveversion, requestId: this.requestId, }; break; case "insertSheet": let sheetIndex = args.eventArgs.index; sheet = base.ssObj.sheets[sheetIndex]; saveType = "insertsheet"; data = { FileId: base.FileId, iscreatenewfile: isCreateNewFile, autosavetype: saveType, sheet: sheet, sheetIndex: sheetIndex, saveversions: saveversion, requestId: this.requestId, }; break; case "removeSheet": saveType = "removeSheet"; data = { FileId: base.FileId, autosavetype: saveType, sheetIndex: args.sheetIndex, saveversions: saveversion, requestId: this.requestId, }; break; case "applyFilter": saveType = "applyFilter"; data = { FileId: base.FileId, autosavetype: saveType, filter: args.collection, requestId: this.requestId, }; break; case "removeFilter": saveType = "removeFilter"; data = { FileId: base.FileId, autosavetype: saveType, sheetIndex: args.sheetIndex, requestId: this.requestId, }; break; case "updateFilter": saveType = "updateFilter"; data = { FileId: base.FileId, autosavetype: saveType, filter: args.collection, requestId: this.requestId, sheetIndex: sheetIdx, }; break; case "renameSheet": saveType = "renameSheet"; data = { FileId: base.FileId, autosavetype: saveType, SheetIndex: sheetIdx, SheetName: args.eventArgs.value, requestId: this.requestId, }; break; case 'destroy': var contId = $("._bizgaze_popup_container:visible").attr("id"); $('#' + contId).modal('hide'); $('#' + contId).remove(); window.close(); break; case "copytonewspreadsheet": saveType = "newwbsheets"; let currentSheet = base.ssObj.workbookSaveModule.getStringifyObject(base.ssObj.sheets[sheetIdx]); let sheetName = base.FileName; data = { FileId: 0, iscreatenewfile: isCreateNewFile, autosavetype: saveType, sheet: currentSheet, requestId: this.requestId, saveversions: saveversion, sheetName: sheetName, }; break; case "colResize": setTimeout(() => { saveType = "colResize"; if (args.eventArgs.index && !args.indexes) args['indexes'] = [0, args.eventArgs.index, 0, args.eventArgs.index]; else if (!(args.indexes && args.eventArgs.index)) args['indexes'] = this.baseIns.ssObj.biz.getIndexes(); data = { FileId: base.FileId, iscreatenewfile: isCreateNewFile, autosavetype: saveType, sheetIndex: sheetIdx, requestId: this.requestId, width: parseInt(args.eventArgs.width), saveversions: saveversion, indexes: args.indexes, }; (isCreateNewFile) && (data["folderId"] = this.baseIns.folderId); (data) && Unibase.Apps.Collaboration.DocumentManager.Instance().ssAutoSave(data); }, 100); break; case "rowResize": setTimeout(() => { saveType = "rowResize"; if (args.eventArgs.index && !args.indexes) args['indexes'] = [args.eventArgs.index, 0, args.eventArgs.index, 0]; else if (!(args.indexes && args.eventArgs.index)) args['indexes'] = this.baseIns.ssObj.biz.getIndexes(); data = { FileId: base.FileId, iscreatenewfile: isCreateNewFile, autosavetype: saveType, sheetIndex: sheetIdx, requestId: this.requestId, height: parseInt(args.eventArgs.height), indexes: args.indexes, saveversions: saveversion, }; (isCreateNewFile) && (data["folderId"] = this.baseIns.folderId); (data) && Unibase.Apps.Collaboration.DocumentManager.Instance().ssAutoSave(data); }, 100); break; case "imageincell": data = { FileId: base.FileId, iscreatenewfile: isCreateNewFile, autosavetype: saveType, requestId: this.requestId, sheetIndex: sheetIdx, saveversions: saveversion, changedvalues: args.changedValues, }; break; case "createNewSpreadsheet": isCreateNewFile = true; saveType = "createNewSpreadsheet"; data = { iscreatenewfile: isCreateNewFile, autosavetype: saveType, requestId: this.requestId, sheetname: document.getElementsByClassName("biz-ss-filename")[0].value }; break; case "headerResize": saveType = "headerResize"; data = { FileId: base.FileId, iscreatenewfile: isCreateNewFile, autosavetype: saveType, requestId: this.requestId, sheetIndex: sheetIdx, saveversions: saveversion, multipleheaderresize: args.resizedHeaders }; break; case "duplicateSheet": saveType = "duplicateSheet"; data = { FileId: base.FileId, autosavetype: saveType, requestId: this.requestId, sheetIndex: args.sheetIndex, saveversions: saveversion, }; break; case "deleteImage": saveType = "deleteImage"; data = { FileId: base.FileId, autosavetype: saveType, requestId: this.requestId, saveversions: saveversion, sheetIndex: sheetIdx, imageId: args.id, imageSource: args.src, }; break; case "resizeToAutoFitColumn": saveType = "resizeToAutoFitColumn"; data = { FileId: base.FileId, autosavetype: saveType, requestId: this.requestId, saveversions: saveversion, sheetIndex: sheetIdx, indexes: args.eventArgs.selectedRange, ColumnWidth: args.eventArgs.columns, }; break; case "resizeToAutoFitRow": saveType = "resizeToAutoFitRow"; data = { FileId: base.FileId, autosavetype: saveType, requestId: this.requestId, saveversions: saveversion, sheetIndex: sheetIdx, indexes: args.eventArgs.selectedRange, RowHeight: args.eventArgs.rows, }; break; case "wrap": saveType = "wrap"; let indxs = ej.spreadsheet.getIndexesFromAddress(args.eventArgs.address.split("!")[1]); data = { FileId: base.FileId, autosavetype: saveType, requestId: this.requestId, saveversions: saveversion, sheetIndex: sheetIdx, indexes: indxs, wrap: args.eventArgs.wrap, }; break; } (isCreateNewFile) && (data["folderId"] = this.baseIns.folderId); (data) && Unibase.Apps.Collaboration.DocumentManager.Instance().ssAutoSave(data).then((response) => { this.baseIns.editDetails(); console.log("Save end " + action + " " + Date()); if (action === "insertSheet" || action === "removeSheet") { Unibase.Apps.Collaboration.DocumentManager.Instance().getCustomJsonData(base.FileId).then((res) => { base.customresult = res.result.tabcolors; }); } else if (response.message == "New spreadsheet has been created" && action !== "copytonewspreadsheet") { this.baseIns.FileId = response.result.FileId; this.baseIns.fileurl = response.result.FileUrl; this.baseIns.FileName = response.result.FileTitle; this.baseIns.isCreatingNewFile = false; for (var i = 0; i < this.actionsWhileCreatingNewFile.length; i++) { this.ssAutoSave(this.actionsWhileCreatingNewFile[i], this.baseIns, true); } } else if ((action === "copytonewspreadsheet" && response.message === "New spreadsheet has been created")) { if (callback != null) { callback(); } } }); } else { this.actionsWhileCreatingNewFile.push(args); } } } static Instance() { if (this.instance === undefined) { this.instance = new Download(); } return this.instance; } } Common.Download = Download; })(Common = Components.Common || (Components.Common = {})); })(Components = Collaboration.Components || (Collaboration.Components = {})); })(Collaboration = Apps.Collaboration || (Apps.Collaboration = {})); })(Apps = Unibase.Apps || (Unibase.Apps = {})); })(Unibase || (Unibase = {}));