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: `
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 = {}));