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 Sheets; (function (Sheets) { class Dialogue { constructor() { this.hederText = {}; this.hasHeader = false; } init(base) { this.base = base; this.base.mouseDownHandlers.push(this.mouseDown.bind(this)); this.util = Unibase.Apps.Collaboration.Components.Common.Util.Instance(); } mouseDown(e) { if (this.rdDailouge) { let cbox = ej.base.closest(e.target, '.e-checkbox-wrapper'); if (cbox) { let tickicon = cbox.firstElementChild; tickicon.classList.contains('e-check') ? tickicon.classList.remove('e-check') : tickicon.classList.add('e-check'); if (cbox.classList.contains('rd-selectAll')) { var cboxes = this.rdDailouge.element.querySelector('#rd-checkboxes-container').querySelectorAll('.e-frame'); if (cbox.firstElementChild.classList.contains('e-check')) { cbox.firstElementChild.classList.remove('e-stop'); cboxes.forEach((e) => { e.classList.add('e-check'); }); document.getElementsByClassName("rd-btn")[0].classList.remove("e-disabled"); document.getElementsByClassName("rd-btn")[0].removeAttribute("disabled"); } else { cbox.firstElementChild.classList.add('e-stop'); cboxes.forEach((e) => { e.classList.remove('e-check'); }); document.getElementsByClassName("rd-btn")[0].classList.add("e-disabled"); document.getElementsByClassName("rd-btn")[0].setAttribute("disabled", "true"); } } if (cbox.classList.contains('rd-colCheckbox')) { var cboxes = this.rdDailouge.element.querySelector('#rd-checkboxes').querySelectorAll('.e-frame'); var eCheckCount = this.rdDailouge.element.querySelector('#rd-checkboxes').querySelectorAll('.e-check').length; eCheckCount === 0 ? (document.getElementsByClassName("rd-btn")[0].classList.add("e-disabled"), document.getElementsByClassName("rd-btn")[0].setAttribute("disabled", "true")) : (document.getElementsByClassName("rd-btn")[0].removeAttribute("disabled"), document.getElementsByClassName("rd-btn")[0].classList.remove("e-disabled")); eCheckCount < cboxes.length ? (document.getElementsByClassName("rd-selectAll")[0].firstElementChild.classList.remove("e-check"), document.getElementsByClassName("rd-selectAll")[0].firstElementChild.classList.add("e-stop")) : (document.getElementsByClassName("rd-selectAll")[0].firstElementChild.classList.add("e-check"), document.getElementsByClassName("rd-selectAll")[0].firstElementChild.classList.remove("e-stop")); } } } } removeDuplicate(range, header, colSelected) { this.obj = {}; let sheet = this.base.ssObj.biz.getActiveSheet(); this.rngIndexes = this.base.getIndexesFromAddress(range); this.hasHeader = header; (header) ? this.rowStartCell = this.rngIndexes[0] + 1 : this.rowStartCell = this.rngIndexes[0]; this.columnStartCell = this.rngIndexes[1]; this.rowEndCell = this.rngIndexes[2]; this.columnEndCell = this.rngIndexes[3]; this.selected = colSelected; for (let i = this.rowStartCell; i <= this.rowEndCell; i++) { let wholeRow = []; for (let j = this.columnStartCell; j <= this.columnEndCell; j++) { if (this.selected[j] == undefined) { var isColChecked = document.querySelector("#rd-checkboxes").querySelector('div[value="' + j + '"]').firstElementChild.classList.contains('e-check'); this.selected[j] = isColChecked; } if (!this.selected[j]) { continue; } let cellInfo = ej.spreadsheet.getCell(i, j, sheet); if (!cellInfo) { wholeRow.push(null); } else { wholeRow.push(this.util.getCellValues(cellInfo)); } if (cellInfo) { this.base.ssObj.biz.setCell(i, j, sheet, {}); delete sheet.rows[i].cells[j]; } } if (wholeRow) { this.addToObj(JSON.stringify(wholeRow)); } } var k = 0; var cellValue; var keys = Object.keys(this.obj); for (let i = this.rowStartCell; i <= this.rowEndCell; i++) { var row; (keys[k]) ? row = JSON.parse(keys[k]) : row = undefined; var l = 0; for (let j = this.columnStartCell; j <= this.columnEndCell; j++) { if (!this.selected[j]) { continue; } (row) ? cellValue = row[l] : cellValue = undefined; if (cellValue) { if (!(cellValue.value === undefined)) { this.base.ssObj.biz.setCell(i, j, sheet, cellValue); } } l++; } k++; } var duplicateCount = this.selectedRow - Object.keys(this.obj).length; Unibase.Apps.Collaboration.Components.Common.Download.Instance().ssAutoSave({ action: 'removeDuplicates' }, this.base, true); if (this.base.getSheetIndex() >= 0) { if (!this.hasHeader) { this.base.ssObj.selectRange(this.base.generateHeaderText(this.columnStartCell + 1) + (this.rowStartCell + 1) + ":" + this.base.generateHeaderText(this.columnEndCell + 1) + (this.rowEndCell - duplicateCount + 1)); } else { this.base.ssObj.selectRange(this.base.generateHeaderText(this.columnStartCell + 1) + (this.rowStartCell) + ":" + this.base.generateHeaderText(this.columnEndCell + 1) + (this.rowEndCell - duplicateCount + 2)); } } this.rdDailouge.destroy(); } RDshowUniqueDailog() { var keys = Object.keys(this.obj); var duplicateCount; this.hasHeader ? duplicateCount = this.selectedRow - keys.length - 1 : duplicateCount = this.selectedRow - keys.length; if (duplicateCount == 0) { var duplicateValuesText = "No duplicate rows were found."; } else if (duplicateCount == 1) { var duplicateValuesText = "1 duplicate row were found and removed."; } else { var duplicateValuesText = `${duplicateCount} duplicate rows were found and removed.`; } if (keys.length == 1) { var uniqueValuesText = `1 unique row remains.`; } else { var uniqueValuesText = `${keys.length} unique rows remains.`; } this.rdDailouge = new ej.popups.Dialog({ isModal: true, header: 'Remove Duplicates', content: `

`, width: '470px', height: '180px', buttons: [{ click: this.hideRdDailouge.bind(this), buttonModel: { content: 'Ok', isPrimary: true } }] }); this.rdDailouge.appendTo("#removeduplicates"); document.getElementById("rd-duplicatevaluetxt").append(duplicateValuesText); document.getElementById("rd-uniquevaluetxt").append(uniqueValuesText); } ; addToObj(param) { if (!this.obj[param]) { this.obj[param] = 1; } } renderDuplicateDailouge() { this.range = this.base.ssObj.biz.getRange(); this.rngIndexes = this.base.getIndexesFromAddress(this.range); this.selectedCol = this.rngIndexes[3] - this.rngIndexes[1] + 1; this.selectedRow = this.rngIndexes[2] - this.rngIndexes[0] + 1; this.rowStartCell = this.rngIndexes[0]; this.columnStartCell = this.rngIndexes[1]; this.rowEndCell = this.rngIndexes[2]; this.columnEndCell = this.rngIndexes[3]; if (!(this.rowStartCell - this.rowEndCell == 0 && this.columnStartCell - this.columnEndCell == 0)) { if (this.selectedCol > 1 && this.selectedRow > 1) { var selectedcolrowtext = `${this.selectedCol} columns and ${this.selectedRow} rows selected`; } else if (this.selectedCol > 1 && this.selectedRow == 1) { var selectedcolrowtext = `${this.selectedCol} columns and ${this.selectedRow} row selected`; } else if (this.selectedCol == 1 && this.selectedRow > 1) { var selectedcolrowtext = `${this.selectedCol} column and ${this.selectedRow} rows selected`; } var checkboxes = []; if (this.selectedCol > 0) { for (let i = this.columnStartCell; i <= this.columnEndCell; i++) { var colName = this.base.generateHeaderText(i + 1); var cbox = ej.buttons.createCheckBox(this.base.ssObj.createElement, false, { checked: true, label: 'Columns ' + colName, cssClass: 'rd-colCheckbox' }); cbox.setAttribute('value', i); checkboxes.push(cbox); } } var elem = document.getElementById("removedup-container"); if (!elem) { var hasHeader = ej.buttons.createCheckBox(this.base.ssObj.createElement, false, { checked: false, cssClass: 'rd-hasHeader' }); var selectAll = ej.buttons.createCheckBox(this.base.ssObj.createElement, false, { checked: true, label: 'Select all', cssClass: 'rd-selectAll' }); this.rdDailouge = new ej.popups.Dialog({ isModal: true, header: 'Remove Duplicates', content: `
Data has header row
Select Columns to analyze
`, showCloseIcon: false, created: () => { document.getElementById("rd-hasHeader-checkbox").appendChild(hasHeader); document.getElementById("rd-selectAll").appendChild(selectAll); document.getElementById("rd-selectedColumns-title-data").append(selectedcolrowtext); checkboxes.forEach(element => { document.getElementById("rd-checkboxes").appendChild(element); }); setTimeout(() => { if (document.getElementById("rd-checkboxes-container").offsetHeight < 250) { document.getElementById("rd-checkboxes-container").style.overflowY = 'hidden'; } else { document.getElementById("rd-checkboxes").style.overflowY = ""; } }, 0); }, open: () => { }, width: '350px', height: 'auto', closeOnEscape: false, buttons: [{ click: this.hideRdDailouge.bind(this), buttonModel: { content: 'Cancel' } }, { click: this.processDup.bind(this), buttonModel: { content: 'Remove Duplicates', isPrimary: true, cssClass: "rd-btn" } }], }); this.rdDailouge.appendTo("#removeduplicates"); } else { document.getElementById("rd-selectedColumns-title-data").innerHTML = ""; document.getElementById("rd-selectedColumns-title-data").innerHTML = selectedcolrowtext; this.rdDailouge.show(); } } else { this.rdDailouge = new ej.popups.Dialog({ isModal: true, header: 'Remove Duplicates', content: `
Please select a range of cells containing values.
`, width: '470px', height: '130px', created: () => { document.getElementById("removeduplicates_dialog-content").style.overflowY = 'hidden'; }, buttons: [{ click: this.hideRdDailouge.bind(this), buttonModel: { content: 'Ok', isPrimary: true } }] }); this.rdDailouge.appendTo("#removeduplicates"); } } hideRdDailouge() { this.rdDailouge.element.removeEventListener("mousedown", (e) => { }); this.rdDailouge.hide(); this.rdDailouge.destroy(); } processDup() { let header = false; if (document.getElementsByClassName("rd-hasHeader")[0].firstElementChild.classList.contains("e-check")) { header = true; } let range = this.base.ssObj.biz.getRange(); let indexes = this.base.ssObj.biz.getIndexes(); let args = { range: range, indexes: indexes, sheetIndex: this.base.getSheetIndex(), header: header, action: 'removeDuplicates', origin: 'biz' }; this.base.ssObj.updateUndoRedoCollection({ name: 'bizAction', args: { action: 'removeDuplicates', options: args, oldCells: this.base.getCellsFromIndexes(indexes) } }); this.removeDuplicate(range, header, {}); this.base.removeCopyIndicator(); args['colSelected'] = this.selected; this.RDshowUniqueDailog(); Unibase.Apps.Collaboration.Components.Sheets.Base.Instance().bizSignalr(args); } renderMenubarFullscreenDialog() { if (!this.menubarFullscreenDialogObj) { this.menubarFullscreenDialogObj = new ej.popups.Dialog({ content: ``, width: '470px', height: '45px', position: { X: 'center', Y: 14 }, animationSettings: { effect: 'None' }, closeOnEscape: true, cssClass: "biz-ss-menubar-fullscreen", Close: this.hideSsMenubarFullscreenDialog.bind(this), }); this.menubarFullscreenDialogObj.appendTo("#biz-ss-menubar-fullscreendialog"); } else { this.menubarFullscreenDialogObj.show(); } } hideSsMenubarFullscreenDialog() { this.menubarFullscreenDialogObj.destroy(); if (document.getElementById("menubar-fullscreen-container")) document.getElementById("menubar-fullscreen-container").parentElement.remove(); setTimeout(() => { this.menubarFullscreenDialogObj = null; }, 1000); } renderResizeDialog() { let sheet = this.base.ssObj.biz.getActiveSheet(); let indexes = this.base.ssObj.biz.getIndexes(); let isRowsSelected = this.base.ssObj.biz.isRowsSelected(indexes); let row = (indexes[2] - indexes[0] + 1); let col = (indexes[3] - indexes[1] + 1); let heading = ""; let radio1Text = ""; let inputValue; if (isRowsSelected) { if (row == 1) heading = "Resize row " + (indexes[0] + 1); else heading = "Resize rows " + (indexes[0] + 1) + " - " + (indexes[2] + 1); radio1Text = "Specify row height in pixels: (Default 18)"; inputValue = sheet.rows[indexes[0]] && sheet.rows[indexes[0]].height || 18.5; } else { if (col == 1) heading = "Resize column " + (this.base.generateHeaderText(indexes[0] + 1)); else heading = "Resize columns " + this.base.generateHeaderText(indexes[1] + 1) + " - " + this.base.generateHeaderText(indexes[3] + 1); radio1Text = "Specify column width in pixels: (Default 64)"; inputValue = sheet.columns[indexes[1]] && sheet.columns[indexes[1]].width || 64; } if (inputValue == undefined) inputValue = ''; this.radiobutton = new ej.buttons.RadioButton({ label: radio1Text, name: 'resizetofit', checked: true, value: "resizeroworcol" }); this.resizeDialogObj = new ej.popups.Dialog({ content: `
`, width: '470px', height: 'auto', header: heading, animationSettings: { effect: 'None' }, showCloseIcon: true, closeOnEscape: true, target: document.body.querySelectorAll('._bizgaze_popup_container')[document.body.querySelectorAll('._bizgaze_popup_container').length - 1], created: this.resizeDialogCreated.bind(this), cssClass: "biz-ss-resizetofit", buttons: [ { click: this.hideResizeDialog.bind(this), buttonModel: { content: 'Cancel' } }, { click: this.processResize.bind(this), buttonModel: { content: 'Ok', isPrimary: true } } ], Close: this.hideResizeDialog.bind(this), }); this.resizeDialogObj.appendTo("#biz-ss-resizetofit-dialog"); } resizeDialogCreated() { this.radiobutton.appendTo('#header-checkbox'); this.radiobutton = new ej.buttons.RadioButton({ label: 'Resize to fit', name: 'resizetofit', value: "resizetofit" }); this.radiobutton.appendTo('#resizetofit-checkbox'); document.getElementsByClassName("biz-ss-resizetofit")[0].style.maxHeight = ""; } hideResizeDialog() { if (this.resizeDialogObj) { this.resizeDialogObj.destroy(); setTimeout(() => { this.resizeDialogObj = null; }); } } processResize() { return __awaiter(this, void 0, void 0, function* () { let range = this.base.ssObj.biz.getRange(); let resizedHeaders = []; let changedValues = []; let resizeValue = Number(document.getElementById("resize-input").value); let ranges = range.split(" "); for (var i = 0; i < ranges.length; i++) { let currentIndexes = this.base.swapRange(ej.spreadsheet.getIndexesFromAddress(ranges[i])); yield this.resizeHeaders(currentIndexes, resizeValue, ranges[i]).then((response) => { changedValues = changedValues.concat(response.changedValues); resizedHeaders = resizedHeaders.concat(response.resizedHeaders); }); } this.hideResizeDialog(); this.base.focusDocumentViewer(); (changedValues.length > 0) && this.base.download.ssAutoSave({ action: "imageincell", changedValues: changedValues }, this.base, true); (resizedHeaders.length > 0) && this.base.download.ssAutoSave({ action: "headerResize", resizedHeaders: resizedHeaders }, this.base, true); }); } resizeHeaders(indexes, resizeValue, range) { return __awaiter(this, void 0, void 0, function* () { let resizedHeaders = []; let changedValues = []; let sheetIdx = this.base.getSheetIndex(); let isRowsSelected = this.base.ssObj.biz.isRowsSelected(indexes); let selectedRadio = document.querySelector('input[name="resizetofit"]:checked').value; if (selectedRadio == "resizeroworcol") { if (isRowsSelected) { for (var i = indexes[0]; i <= indexes[2]; i++) { yield this.setRowHeight(resizeValue, i); resizedHeaders.push({ rowIndex: i, height: resizeValue, sheetIndex: sheetIdx, resizeType: "row" }); } changedValues = changedValues.concat(this.base.setRowIncellImageSize(range)); } else { for (var i = indexes[1]; i <= indexes[3]; i++) { yield this.setColWidth(resizeValue, i); resizedHeaders.push({ colIndex: i, width: resizeValue, sheetIndex: sheetIdx, resizeType: "col" }); } changedValues = changedValues.concat(this.base.setColumnIncellImageSize(range)); } } else { this.base.ssObj.autoFit(range); if (isRowsSelected) changedValues = changedValues.concat(this.base.setRowIncellImageSize(range)); else changedValues = changedValues.concat(this.base.setColumnIncellImageSize(range)); } return { changedValues: changedValues, resizedHeaders: resizedHeaders }; }); } setRowHeight(resizeValue, rowIdx) { return __awaiter(this, void 0, void 0, function* () { yield this.base.ssObj.setRowHeight(resizeValue + "px", rowIdx); }); } setColWidth(resizeValue, colIdx) { return __awaiter(this, void 0, void 0, function* () { yield this.base.ssObj.setColWidth(resizeValue + "px", colIdx); }); } static Instance() { if (this.instance === undefined) { this.instance = new Dialogue(); } return this.instance; } } Sheets.Dialogue = Dialogue; })(Sheets = Components.Sheets || (Components.Sheets = {})); })(Components = Collaboration.Components || (Collaboration.Components = {})); })(Collaboration = Apps.Collaboration || (Apps.Collaboration = {})); })(Apps = Unibase.Apps || (Unibase.Apps = {})); })(Unibase || (Unibase = {}));