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 Base {
constructor() {
this.isViewOnly = false;
this.editedTime = new Date();
this.lastEditedTime = 0;
this.f2Edit = false;
this.showFormula = false;
this.fontFamilyRecent = [];
this.isFormula = false;
this.isResizing = false;
this.rowwidthcount = 0;
this.isNewSheet = false;
this.reqCount = 0;
this.isInitial = true;
this.clicks = 0;
this.autofillDrag = false;
this.checkedIndexes = [];
this.selectedIndexes = [null, null, null, null];
this.isCtrlA = false;
this.isCreatingNewFile = false;
this.isDriveImport = false;
this.openJSON = false;
}
init(response, res, customresponce, callback) {
this.result = response.result;
this.documentGroup = this.result.DocumentGroup;
this.customresult = customresponce.result;
this.filedata = res.result;
this.FileName = response.result.FileTitle;
this.FileId = response.result.FileId;
this.permissionLevel = response.result.UserPermission;
this.lastEditedTime = response.result.LastUpdateTime;
this.timePeriod = response.result.TimePeriod;
this.username = response.result.LastUpdateByName;
this.folderId = response.result.folderId;
this.fileurl = response.result.FileUrl;
this.Priority = response.result.Priority;
this.newUpload = response.result.NewUpload;
this.NewDocument = response.result.NewDocument;
this.identity = Unibase.Platform.Membership.Infos.Identity.getCurrentUser();
this.unibaseusername = this.identity.name;
this.hederText = {};
this.mouseDownHandlers = [];
this.keyDownHandlers = [];
this.render();
if (callback != null) {
callback();
}
}
clickHandler(e) {
if (e.target.getAttribute('id') == 'importdata-cancel-bt') {
}
if (e.target.getAttribute('id') == 'importdata-select-btn') {
}
}
removeListeners() {
}
unwireBootStrapKeyEvent() {
let popup = document.body.getElementsByClassName('_bizgaze_popup_container');
let events = $._data($(popup)[0], "events");
if (events && events.keydown) {
$(popup).off('keydown.dismiss.bs.modal', events.keydown[0].handler);
}
if (events && events.click) {
events.click.filter((obj) => obj).forEach(click => {
$(popup).off('click.dismiss.bs.modal', click.handler);
});
}
}
clearFindReplace() {
if (!this.ssObj.element.querySelector('.e-find-dlg') && !this.ssObj.element.querySelector('.e-findtool-dlg')) {
this.ssObj.ribbonModule.findValue = '';
this.ssObj.findAndReplaceModule.shortValue = '';
}
}
fullScreenHandler() {
setTimeout(() => {
this.setHeightOnFullScreenChange();
}, 0);
}
processSheetRender() {
this.updateProps();
this.renderMenuBar();
this.refreshHeight();
this.ssRender();
this.ribbon.init(this.result);
if (this.permissionLevel && this.permissionLevel == Unibase.Apps.Collaboration.Enums.Share.Viewer) {
setTimeout(() => {
this.setViewonly();
this.ssObj.dataBind();
}, 0);
}
this.unwireBootStrapKeyEvent();
this.priorityRender();
this.eventListners();
this.colourpicker();
}
connectHub(fileId, documentgroup) {
Unibase.Platform.Helpers.FileCacheHelper.Instance().loadJsFiles(["apps/collaboration/components/docconnector.js", "apps/collaboration/components/unidochub.js"], function () {
Unibase.Apps.Collaboration.Components.DocConnector.Instance().init(fileId, documentgroup);
});
}
sheetColorRender() {
if (!this.NewDocument) {
Unibase.Apps.Collaboration.DocumentManager.Instance().getCustomJsonData(this.FileId).then((res) => {
var result = res.result.tabcolors;
this.sheets = this.ssObj.element.querySelector('.e-sheet-tab').querySelectorAll('.e-toolbar-item');
this.sheetsName = this.ssObj.element.querySelector('.e-sheet-tab .e-active').querySelector('.e-tab-text');
var R;
var G;
var B;
for (var i = 0; i < this.sheets.length; i++) {
if (result.sheets[i].TabColor !== null && result.sheets[i].TabColor !== undefined && result.sheets[i].TabColor.Name !== "0" && result.sheets[i].TabColor.Name !== null && result.sheets[i].TabColor.Name !== undefined) {
if (result.sheets[i].TabColor.R == null || result.sheets[i].TabColor.R == "") {
R = 0;
}
else {
R = result.sheets[i].TabColor.R;
}
if (result.sheets[i].TabColor.G == null || result.sheets[i].TabColor.G == "") {
G = 0;
}
else {
G = result.sheets[i].TabColor.G;
}
if (result.sheets[i].TabColor.B == null || result.sheets[i].TabColor.B == "") {
B = 0;
}
else {
B = result.sheets[i].TabColor.B;
}
document.getElementById(this.sheets[i].id).style.borderBottom = "4px solid rgb(" + R + "," + G + "," + B + ")";
document.getElementById(this.sheets[i].id).firstElementChild.style.height = "100%";
}
}
document.getElementsByClassName("e-indicator e-ignore")[1].style.display = "none";
});
}
document.getElementsByClassName("e-indicator e-ignore")[1].style.display = "none";
}
sheetColorChange(colorcode) {
var sheetIndex = this.ssObj.activeSheetIndex;
if (sheetIndex != null) {
var rgbcolor = [];
var name;
if (colorcode != "0") {
rgbcolor = this.hexToRgb(colorcode);
name = "#" + colorcode;
}
else {
rgbcolor.push(0);
rgbcolor.push(0);
rgbcolor.push(0);
name = colorcode;
}
var data = {
FileId: this.FileId,
TabColor: rgbcolor,
SheetIndex: sheetIndex,
SheetHexCode: name,
};
Unibase.Apps.Collaboration.DocumentManager.Instance().saveSheetColor(data).then((responce) => {
if (colorcode != 0) {
document.getElementById(this.sheets[sheetIndex].id).style.borderBottom = "4px solid rgb(" + rgbcolor[0] + "," + rgbcolor[1] + "," + rgbcolor[2] + ")";
document.getElementById(this.sheets[sheetIndex].id).firstElementChild.style.height = "100%";
}
else {
document.getElementById(this.sheets[sheetIndex].id).style.borderBottom = "none";
}
document.getElementsByClassName("e-indicator e-ignore")[1].style.display = "none";
this.customresult = responce.result.tabcolor;
this.editDetails();
let args = {
origin: 'biz', action: 'colorchange', sheetIndex: this.getSheetIndex()
};
Unibase.Apps.Collaboration.Components.Sheets.Base.Instance().bizSignalr(args);
});
}
}
hexToRgb(hex) {
var rgb = hex.match(/.{1,2}/g);
var arrayRgb = [
parseInt(rgb[0], 16),
parseInt(rgb[1], 16),
parseInt(rgb[2], 16),
];
return arrayRgb;
}
priorityRender() {
if (this.Priority) {
$(".biz_ss_star_icon_" + this.FileId).removeClass("fa-star-o");
$(".biz_ss_star_icon_" + this.FileId).addClass("fa-star");
$(".biz_ss_star_icon_" + this.FileId).removeClass("text-light");
$(".biz_ss_star_icon_" + this.FileId).css("color", "orange");
}
}
render() {
this.renderPopup(this.processSheetRender.bind(this));
}
parseMatchValue(value) {
if (value.trim().toLowerCase() == "true" || value.trim() == "1") {
return true;
}
return false;
}
ssRender() {
this.ssObj = new ej.spreadsheet.Spreadsheet(this.ssSettings);
this.formatpainter.init(this);
this.spellchecker.init(this);
if (this.permissionLevel && this.permissionLevel == Unibase.Apps.Collaboration.Enums.Share.Viewer) {
this.initialLoadFn = this.initialLoad.bind(this);
this.ssObj.on("initialLoad", this.initialLoadFn);
}
this.ssObj.on("initialLoad", this.addFormatsToToolbar.bind(this));
this.ssObj.on("deleteImage", this.deleteImageHandler, this);
this.ssObj.on('performUndoRedo', this.performBizUndoRedo.bind(this));
setTimeout(() => {
this.fontFamilyObj = this.ssObj.element.querySelector('#' + this.ssObj.element.id + '_font_name').ej2_instances[0];
this.fontFamilyObj.addEventListener('beforeOpen', this.fontFamilyBfOpen.bind(this));
this.fontFamilyObj.beforeItemRender = this.fontFamilyBfRender.bind(this);
this.fontFamilyObj.addEventListener('select', this.fontFamilySelect.bind(this));
window.hlookupHandler = (value, range, rowIdx, match) => {
var val = this.ssObj.element.querySelector('.e-spreadsheet-edit').innerText;
range = val.split('(')[1].split(')')[0].split(',')[1];
};
window.vlookupHandler = (value, range, colIdx, match) => {
let sheet = this.ssObj.biz.getActiveSheet();
let val = this.ssObj.element.querySelector('.e-spreadsheet-edit').innerText;
range = val.split('(')[1].split(')')[0].split(',')[1];
colIdx = parseInt(colIdx);
value = value.replace(/['"]+/g, '');
match = this.parseMatchValue(match);
let ranges = ej.spreadsheet.getIndexesFromAddress(range);
let i, j;
let isMatched;
if (value.includes('#NAME')) {
return value;
}
if (ranges[3] - ranges[1] + 1 < colIdx || colIdx < 1) {
return '#REF!';
}
for (i = ranges[0]; i <= ranges[2]; i++) {
if (isMatched) {
break;
}
for (j = ranges[1]; j <= ranges[3]; j++) {
let cellObj = ej.spreadsheet.getCell(i, j, sheet);
if (cellObj && cellObj.value && match ? cellObj.value.toString() === value : cellObj.value.toString().toLowerCase() === value.toLowerCase()) {
isMatched = true;
break;
}
}
}
let cell = ej.spreadsheet.getCell(i - 1, ranges[1] + colIdx - 1, sheet);
if (isMatched && cell) {
return cell.value || '';
}
else {
return '#N/A';
}
};
window.hlookupHandler = (value, range, rowIdx, match) => {
let sheet = this.ssObj.biz.getActiveSheet();
let val = this.ssObj.element.querySelector('.e-spreadsheet-edit').innerText;
range = val.split('(')[1].split(')')[0].split(',')[1];
rowIdx = parseInt(rowIdx);
value = value.replace(/['"]+/g, '');
match = this.parseMatchValue(match);
let ranges = ej.spreadsheet.getIndexesFromAddress(range);
let i, j;
let isMatched;
if (value.includes('#NAME')) {
return value;
}
if (ranges[2] - ranges[0] + 1 < rowIdx || rowIdx < 1) {
return '#REF!';
}
for (i = ranges[0]; i <= ranges[2]; i++) {
if (isMatched) {
break;
}
for (j = ranges[1]; j <= ranges[3]; j++) {
let cellObj = ej.spreadsheet.getCell(i, j, sheet);
if (cellObj && cellObj.value && match ? cellObj.value.toString() === value : cellObj.value.toString().toLowerCase() === value.toLowerCase()) {
isMatched = true;
break;
}
}
}
let cell = ej.spreadsheet.getCell(ranges[0] + rowIdx - 1, j, sheet);
if (isMatched && cell) {
return cell.value || '';
}
else {
return '#N/A';
}
};
this.ssObj.addCustomFunction("hlookupHandler", "hlookup");
this.ssObj.addCustomFunction("vlookupHandler", "vlookup");
}, 1000);
this.wireEvents();
this.ssObj.appendTo('.DocumentViewer');
this.ssObj.biz = {};
this.addUtilFn();
Unibase.Apps.Collaboration.Components.Documents.Instance()._openedfile = this.ssObj;
this.initSetInterval();
document.getElementsByClassName('e-spinner-pane')[0].style.display = 'none';
}
dialogOpenHandler(args) {
if (args.dialogName == "ValidationDialog") {
args.element.ej2_instances[0].addEventListener("open", (arg) => {
document.querySelector(".e-validation-dlg .e-allow input").ej2_instances[0].addEventListener("change", this.validationInputHandler.bind(this));
});
args.element.ej2_instances[0].addEventListener("beforeClose", (arg) => {
document.querySelector(".e-validation-dlg .e-allow input").ej2_instances[0].removeEventListener("change", this.validationInputHandler.bind(this));
});
}
}
validationInputHandler(changedargs) {
let dataNote = "Note: date format should be MM/DD/YYYY";
let timeNote = "Note: time format should be HH:MM:SS AM/PM ";
let listNote = "Note: List will be seperated by comma(,)";
let validationDailog = document.getElementsByClassName("e-validation-dlg")[0];
let ele = document.createElement("div");
let container = document.createElement("div");
container.classList.add("biz-validation-note-wrapper");
ele.classList.add("biz-validation-note");
container.append(ele);
let wrapperElement = document.getElementsByClassName("biz-validation-note-wrapper");
if (changedargs.value == "Date") {
if (wrapperElement.length == 0) {
document.getElementsByClassName("e-cellrange")[0].before(container);
ele.textContent = dataNote;
validationDailog.style.marginTop = "0";
container.style.marginBottom = "10px";
}
else
document.getElementsByClassName("biz-validation-note")[0].textContent = dataNote;
}
else if (changedargs.value == "Time") {
if (wrapperElement.length == 0) {
document.getElementsByClassName("e-cellrange")[0].before(container);
ele.textContent = timeNote;
validationDailog.style.marginTop = "0";
container.style.marginBottom = "10px";
}
else {
document.getElementsByClassName("biz-validation-note")[0].textContent = timeNote;
}
}
else if (changedargs.value == "List") {
if (wrapperElement.length == 0) {
document.getElementsByClassName("e-cellrange")[0].before(container);
ele.textContent = listNote;
validationDailog.style.marginTop = "0";
container.style.marginBottom = "10px";
}
else {
document.getElementsByClassName("biz-validation-note")[0].textContent = listNote;
}
}
else {
(wrapperElement.length !== 0) && wrapperElement[0].remove();
validationDailog.style.marginTop = "";
container.style.marginBottom = "";
}
}
deleteImageHandler(args) {
let sheet = this.ssObj.getActiveSheet();
let sheetName = this.setSheetNameForInCell(sheet.name);
if (!args.id.includes(sheetName) && document.getElementById(args.id)) {
let data = document.getElementById(args.id).style.backgroundImage;
args["src"] = data.substring(5, data.length - 2);
let img = sheet.pictures.find(x => x.imageId == args.id);
setTimeout(() => {
if (img) {
let index = sheet.pictures.indexOf(img);
args.id += "_" + sheetName + "_" + img.row + "_" + img.col + "_import";
(index != -1) && (sheet.pictures.splice(index, 1));
}
}, 150);
}
setTimeout(() => {
args["action"] = args.name;
(args.id.includes(sheetName)) && (this.download.ssAutoSave(args, this, true));
}, 200);
}
initSetInterval() {
if (this.timePeriod === "Minutes" || this.timePeriod === "Minute") {
this.intr = setInterval(() => {
this.lastEditedTime = this.lastEditedTime + 1;
this.username = this.username;
this.timePeriod = this.timePeriod;
if (this.lastEditedTime != 1) {
if (this.lastEditedTime >= 59 && this.timePeriod === "Minutes") {
Unibase.Apps.Collaboration.DocumentManager.Instance().lastEdit(this.FileId).then((response) => {
this.identity = Unibase.Platform.Membership.Infos.Identity.getCurrentUser();
this.unibaseusername = this.identity.name;
this.lastEditedTime = response.result.Lastedittime;
this.username = response.result.LastUpdatedByName;
this.timePeriod = response.result.TimePeriod;
if (this.unibaseusername === this.username) {
let element = (document.getElementsByClassName('biz-ss-lastedited')[0]);
element.value = "last edit was made " + this.lastEditedTime + " " + this.timePeriod + " ago";
}
else {
let element = (document.getElementsByClassName('biz-ss-lastedited')[0]);
element.value = "last edit was made " + this.lastEditedTime + " " + this.timePeriod + " ago by " + this.username;
}
});
}
else {
this.identity = Unibase.Platform.Membership.Infos.Identity.getCurrentUser();
this.unibaseusername = this.identity.name;
if (this.unibaseusername === this.username) {
let element = (document.getElementsByClassName('biz-ss-lastedited')[0]);
element.value = "last edit was made " + this.lastEditedTime + " " + this.timePeriod + " ago";
}
else {
let element = (document.getElementsByClassName('biz-ss-lastedited')[0]);
element.value = "last edit was made " + this.lastEditedTime + " " + this.timePeriod + " ago by " + this.username;
}
}
}
}, 60000);
}
else if (this.timePeriod === "Hour" || this.timePeriod === "Hours") {
this.intrhour = setInterval(() => {
this.lastEditedTime = this.lastEditedTime + 1;
this.username = this.username;
this.timePeriod = this.timePeriod;
if (this.lastEditedTime >= 23 && this.timePeriod === "Hours") {
Unibase.Apps.Collaboration.DocumentManager.Instance().lastEdit(this.FileId).then((response) => {
this.identity = Unibase.Platform.Membership.Infos.Identity.getCurrentUser();
this.unibaseusername = this.identity.name;
this.lastEditedTime = response.result.Lastedittime;
this.username = response.result.LastUpdatedByName;
this.timePeriod = response.result.TimePeriod;
if (this.unibaseusername === this.username) {
let element = (document.getElementsByClassName('biz-ss-lastedited')[0]);
element.value = "last edit was made " + this.lastEditedTime + " " + this.timePeriod + " ago";
}
else {
let element = (document.getElementsByClassName('biz-ss-lastedited')[0]);
element.value = "last edit was made " + this.lastEditedTime + " " + this.timePeriod + " ago by " + this.username;
}
});
}
else {
this.identity = Unibase.Platform.Membership.Infos.Identity.getCurrentUser();
this.unibaseusername = this.identity.name;
if (this.unibaseusername === this.username) {
let element = (document.getElementsByClassName('biz-ss-lastedited')[0]);
element.value = "last edit was made " + this.lastEditedTime + " " + this.timePeriod + " ago";
}
else {
let element = (document.getElementsByClassName('biz-ss-lastedited')[0]);
element.value = "last edit was made " + this.lastEditedTime + " " + this.timePeriod + " ago by " + this.username;
}
}
}, 3600000);
}
}
activeUsers(FileUsers) {
var connecteduser = [];
for (var v in FileUsers) {
let identity = Unibase.Platform.Membership.Infos.Identity.getCurrentUser();
let unibaseId = identity.unibaseId;
if (unibaseId != FileUsers[v].unibaseId) {
connecteduser.push(FileUsers[v].firstName.trim());
}
}
this.connecteduserfirstName = connecteduser;
console.log(this.connecteduserfirstName);
this.showActiveUsers(FileUsers);
return this.connecteduserfirstName;
}
showActiveUsers(FileUsers) {
var onlineusername = document.getElementsByClassName("biz-ss-onlineusersintials")[0];
let identity = Unibase.Platform.Membership.Infos.Identity.getCurrentUser();
let unibaseId = identity.unibaseId;
var connectedUsersFirstChar = [];
for (var user in this.connecteduserfirstName) {
connectedUsersFirstChar.push(this.connecteduserfirstName[user].charAt(0));
}
var element = document.getElementById('biz-ss-connected_users_container');
if (typeof (element) != 'undefined' && element != null) {
element.remove();
}
let html = "";
let html1 = `
' + [i - 4] + '');
$('.users-dropdown .dropdown-menu').append(usersHtml);
}
}
}
fontFamilyBfOpen(args) {
args.element.parentElement.classList.remove('e-font-family');
if (this.fontFamilyRecent.length) {
let defaultItems = this.ssObj.ribbonModule.getFontFamilyItems();
delete defaultItems[5].iconCss;
let sheet = this.ssObj.biz.getActiveSheet();
let range = ej.spreadsheet.getIndexesFromAddress(sheet.activeCell);
let cell = ej.spreadsheet.getCell(range[0], range[1], sheet);
let style = cell && cell.style && cell.style.fontFamily || 'Calibri';
for (let i = 0; i < defaultItems.length; i++) {
if (defaultItems[i].text === style) {
defaultItems[i].iconCss = 'e-icons e-selected-icon';
}
}
let items = this.fontFamilyRecent.concat([{ separator: true }]).concat(defaultItems);
this.fontFamilyObj.items = items;
this.fontFamilyObj.dataBind();
}
}
fontFamilyBfRender(args) {
args.element.style.fontFamily = args.item.text;
}
fontFamilySelect(args) {
this.fontFamilyRecent = this.fontFamilyRecent.filter((e) => { return e.text !== args.item.text; });
this.fontFamilyRecent.unshift({ text: args.item.text });
if (this.fontFamilyRecent.length > 5) {
this.fontFamilyRecent.pop();
}
}
wireEvents() {
if (this.permissionLevel !== Unibase.Apps.Collaboration.Enums.Share.Viewer) {
document.body.addEventListener('mousedown', this.mouseDown.bind(this));
document.body.addEventListener('mouseup', this.mouseUp.bind(this));
document.body.querySelector('.DocumentViewer').addEventListener('keyup', this.keyUp.bind(this));
document.body.addEventListener('dblclick', this.bodyDblClick.bind(this));
document.body.querySelector('.DocumentViewer').addEventListener('keydown', this.keyDown.bind(this));
}
window.addEventListener('keydown', this.windowKeydown.bind(this));
document.body.addEventListener('mouseup', this.viewOnlyMouseUp.bind(this));
document.body.addEventListener('mousedown', this.viewOnlyMouseDown.bind(this));
document.body.querySelector('.DocumentViewer').addEventListener('keydown', this.viewOnlyKeyDown.bind(this));
}
unwireEvents() {
document.body.removeEventListener('mousedown', this.mouseDown.bind(this));
document.body.removeEventListener('mousedown', this.mouseDown.bind(this));
document.body.removeEventListener('mouseup', this.mouseUp.bind(this));
document.body.querySelector('.DocumentViewer').removeEventListener('keydown', this.keyDown.bind(this));
document.body.querySelector('.DocumentViewer').removeEventListener('keyup', this.keyUp.bind(this));
document.body.removeEventListener('mouseup', this.viewOnlyMouseUp.bind(this));
document.body.removeEventListener('mousedown', this.viewOnlyMouseDown.bind(this));
document.body.querySelector('.DocumentViewer').removeEventListener('keydown', this.viewOnlyKeyDown.bind(this));
document.body.removeEventListener('dblclick', this.bodyDblClick.bind(this));
window.removeEventListener('keydown', this.windowKeydown.bind(this));
}
eventListners() {
document.getElementsByClassName("biz-ss-cloudsave")[0].addEventListener('click', (event) => {
Unibase.Apps.Collaboration.Components.Sheets.Ribbon.Instance().renderCloudSavedDialogue();
});
document.getElementsByClassName("biz-ss-cloudloading")[0].addEventListener('click', (event) => {
Unibase.Apps.Collaboration.Components.Sheets.Ribbon.Instance().renderCloudSavingDialogue();
});
document.getElementsByClassName("biz-ss-filename")[0].addEventListener('focusout', (event) => {
if (this.FileId)
this.fileNameChange();
else
this.download.ssAutoSave({ action: "createNewSpreadsheet", eventArgs: {} }, this, false);
});
document.getElementsByClassName("biz-ss-starred")[0].addEventListener('click', (event) => {
});
(this.ssObj.enableContextMenu) && this.ssObj.contextMenuModule.contextMenuInstance.addEventListener("beforeItemRender", (e) => {
var indexes = this.ssObj.biz.getIndexes();
let sheet = this.ssObj.biz.getActiveSheet();
if (e.item.text == "UnHide Rows") {
var rowStart = indexes[0];
var rowEnd = indexes[2];
var rows = sheet.rows;
rows = rows.slice(rowStart, rowEnd + 1);
if (rows.filter(({ hidden }) => hidden == true).length == 1) {
e.element.innerHTML = "UnHide Row";
}
}
if (e.item.text == "UnHide Columns") {
var colStart = indexes[1];
var colEnd = indexes[3];
var cols = sheet.columns;
cols = cols.slice(colStart, colEnd + 1);
if (cols.filter(({ hidden }) => hidden == true).length == 1) {
e.element.innerHTML = "UnHide Column";
}
}
});
document.onpaste = (pasteEvent) => {
let sheet = this.ssObj.getActiveSheet();
let indexes = ej.spreadsheet.getIndexesFromAddress(sheet.activeCell);
let items = (event.clipboardData || event.originalEvent.clipboardData).items;
for (var i = 0; i < 2; i++) {
var item = items[i];
if (item && item.kind === 'file') {
let blob = item.getAsFile();
let reader = new FileReader();
reader.onload = (event) => {
let sheetName = this.setSheetNameForInCell(sheet.name);
this.pastedImageDetails = event;
let cellPstn = ej.spreadsheet.getCellPosition(sheet, [indexes[0], indexes[1]], sheet.frozenRows, sheet.frozenColumns);
let imageModel = {
src: this.pastedImageDetails.target.result,
top: cellPstn.top,
left: cellPstn.left,
id: "spreadsheet_overlay_picture_" + sheetName + "_" + indexes[0] + "_" + indexes[1]
};
let cellInfo = ej.spreadsheet.getCell(indexes[0], indexes[1], sheet);
this.oldCellInfo = Object.assign({}, cellInfo);
(!cellInfo) && (cellInfo = {});
this.setImageSize("top", imageModel);
this.setImageSize("left", imageModel);
cellInfo["image"] = [imageModel];
this.ssObj.biz.setCell(indexes[0], indexes[1], sheet, cellInfo);
this.download.ssAutoSave({ action: "cellSave", eventArgs: { address: "sheet!" + this.ssObj.biz.getRange() } }, this, true);
let args_undoredo = { indexes: indexes, range: this.ssObj.biz.getRange(), cellInfo: cellInfo, action: 'insertimage', origin: 'biz', sheetIndex: this.getSheetIndex() };
this.ssObj.updateUndoRedoCollection({ name: 'bizAction', args: { action: 'bizImageInCell', options: args_undoredo, oldCells: this.oldCellInfo } });
this.bizSignalr(args_undoredo);
};
reader.readAsDataURL(blob);
}
}
};
window.onkeyup = (event) => {
if (event.keyCode == 27 && this.fullscreen.ssMenuBarFullScreen) {
let sheetPannelElement = document.getElementById("DocumentViewer_sheet_panel");
this.ssObj.element.parentElement.nextElementSibling.style.display = "inline-block";
this.ssObj.element.parentElement.previousElementSibling.style.display = "block";
document.getElementById('DocumentViewer_ribbon').style.display = 'block';
var toolbarPannelHeight = sheetPannelElement.previousElementSibling.previousElementSibling.offsetHeight;
var formulaPannelHeight = sheetPannelElement.previousElementSibling.offsetHeight;
var sheetTabPannelHeight = sheetPannelElement.nextElementSibling.offsetHeight;
var documentviewerHeight = this.ssObj.element.offsetHeight;
document.getElementById("DocumentViewer_sheet_panel").style.height = (documentviewerHeight - toolbarPannelHeight - formulaPannelHeight - sheetTabPannelHeight) + 'px';
this.fullscreen.ssMenuBarFullScreen = false;
}
};
document.getElementsByClassName("biz-ss-filename")[0].addEventListener("input", () => {
this.setFileNameElementWidth();
});
}
getTextWidth(text, font = this.getCanvasFontSize()) {
const canvas = this.getTextWidth.canvas || (this.getTextWidth.canvas = document.createElement("canvas"));
const context = canvas.getContext("2d");
context.font = font;
const metrics = context.measureText(text);
return metrics.width;
}
getCssStyle(element, prop) {
return window.getComputedStyle(element, null).getPropertyValue(prop);
}
getCanvasFontSize(el = document.body) {
const fontWeight = this.getCssStyle(el, 'font-weight') || 'normal';
const fontSize = this.getCssStyle(el, 'font-size') || '16px';
const fontFamily = this.getCssStyle(el, 'font-family') || 'Times New Roman';
return `${fontWeight} ${fontSize} ${fontFamily}`;
}
setFileNameElementWidth() {
let fileNameEle = document.getElementsByClassName("biz-ss-filename")[0];
fileNameEle.style.width = (this.getTextWidth(fileNameEle.value) + 8) + "px";
}
mouseUp(e) {
setTimeout((e) => {
let customSortDlg = document.getElementsByClassName("e-customsort-dlg")[0];
if (customSortDlg) {
let addBtnSort = document.getElementsByClassName("e-sort-addbtn")[0];
let dataSourceLen = document.querySelector(".e-sort-field.e-control").ej2_instances[0].dataSource.length;
let numberOfList = document.querySelector(".e-list-sort.e-sort-template").firstElementChild.firstElementChild.children.length;
if (dataSourceLen === numberOfList) {
addBtnSort.classList.add("e-disabled");
addBtnSort.disabled = true;
}
else {
addBtnSort.classList.remove("e-disabled");
addBtnSort.disabled = false;
}
}
}, 300);
}
viewOnlyMouseUp(e) {
if (this.fullscreen.ssMenuBarFullScreen) {
setTimeout(() => {
if (e.toElement.title == "Expand Formula Bar" || e.toElement.title == "Collapse Formula Bar") {
let sheetPannelElement = document.getElementById("DocumentViewer_sheet_panel");
var formulaPannelHeight = sheetPannelElement.previousElementSibling.offsetHeight;
var sheetTabPannelHeight = sheetPannelElement.nextElementSibling.offsetHeight;
sheetPannelElement.style.height = (window.innerHeight - formulaPannelHeight - sheetTabPannelHeight) + 'px';
}
}, 200);
}
}
mouseDown(e) {
let sheet = this.ssObj.biz.getActiveSheet();
this.clearFindReplace();
this.mouseDownHandlers.forEach((hanlder) => { hanlder.call(this, e); });
var range = this.ssObj.biz.getIndexes();
this.cellRowStart = range[0];
this.cellColStart = range[1];
this.cellRowEnd = range[2];
this.cellColEnd = range[3];
let moveToDialog = document.getElementsByClassName("copyto_dialog");
let importDialog = document.getElementsByClassName("biz-ss-import-dialog");
let resizeDialog = document.getElementById("biz-ss-resizetofit-dialog_dialog-header");
let cloudSaved = e.target.closest(".biz-ss-cloudsave-container");
let selectedTab = e.target.closest(".e-tab-wrap");
let cloudSaving = e.target.closest(".biz-ss-cloudloading-container");
this.clicks++;
setTimeout(() => {
this.clicks = 0;
}, 400);
if (!(cloudSaved)) {
if (document.getElementById('biz-ss-cloudsave-container')) {
this.ribbon.ssCloudSavedDialougObj.destroy();
}
}
if (!(cloudSaving)) {
if (document.getElementById('biz-ss-cloudloading-container')) {
this.ribbon.ssCloudSavingDialougObj.destroy();
}
}
if (this.clicks === 2) {
let changedValues = [];
this.clicks = 0;
if (e.target.classList.contains("e-autofill")) {
this.autofillDrag = true;
let indexes = this.ssObj.biz.getIndexes();
let sheet = this.ssObj.getActiveSheet();
let cellInfo = ej.spreadsheet.getCell(indexes[0], indexes[1], sheet);
let leftCellsCount = 0;
let currentFormula;
let obj;
if (cellInfo && cellInfo.formula) {
for (var i = indexes[0] + 1; i < 100000000000000; i++) {
let cell = ej.spreadsheet.getCell(i, indexes[1] - 1, sheet);
if (this.checkCellObjHasValue(cell))
leftCellsCount++;
else
i = 100000000000000;
}
if (cellInfo.formula.includes(":") && cellInfo.formula.includes("(")) {
let ranges = cellInfo.formula.split(":");
let row1 = Number(ranges[0].match(/\d/g).join(""));
let row2 = Number(ranges[1].match(/\d/g).join(""));
for (var i = indexes[0] + 1; i <= indexes[0] + leftCellsCount; i++) {
ranges[0] = ranges[0].replace(row1.toString(), (row1 + 1).toString());
ranges[1] = ranges[1].replace(row2.toString(), (row2 + 1).toString());
currentFormula = ranges.join(":");
obj = ej.spreadsheet.getCell(i, indexes[1], sheet);
if (!obj)
obj = { formula: currentFormula };
else
obj["formula"] = currentFormula;
this.ssObj.biz.setCell(i, indexes[1], sheet, obj);
let change = { Row: i, cell: indexes[1], CellInfo: obj };
changedValues.push(change);
row1++;
row2++;
}
}
else if (cellInfo.formula.includes("(")) {
for (var i = indexes[0] + 1; i <= indexes[0] + leftCellsCount; i++) {
let row;
let formulaRange = cellInfo.formula.split("(");
row = Number(formulaRange[1].match(/\d/g).join(""));
currentFormula = cellInfo.formula.replace(row.toString(), (i + 1));
obj = ej.spreadsheet.getCell(i, indexes[1], sheet);
if (!obj)
obj = { formula: currentFormula };
else
obj["formula"] = currentFormula;
this.ssObj.biz.setCell(i, indexes[1], sheet, obj);
let change = { Row: i, cell: indexes[1], CellInfo: obj };
changedValues.push(change);
}
}
else if (cellInfo.formula.includes(":")) {
let ranges = cellInfo.formula.split(":");
let row1 = Number(ranges[0].match(/\d/g).join(""));
let row2 = Number(ranges[1].match(/\d/g).join(""));
for (var i = indexes[0] + 1; i <= indexes[0] + leftCellsCount; i++) {
ranges[0] = ranges[0].replace(row1.toString(), (row1 + 1).toString());
ranges[1] = ranges[1].replace(row2.toString(), (row2 + 1).toString());
currentFormula = ranges.join(":");
obj = ej.spreadsheet.getCell(i, indexes[1], sheet);
if (!obj)
obj = { formula: currentFormula };
else
obj["formula"] = currentFormula;
this.ssObj.biz.setCell(i, indexes[1], sheet, obj);
let change = { Row: i, cell: indexes[1], CellInfo: obj };
changedValues.push(change);
row1++;
row2++;
}
}
else {
let row = Number(cellInfo.formula.match(/\d/g).join(""));
for (var i = indexes[0] + 1; i <= indexes[0] + leftCellsCount; i++) {
currentFormula = cellInfo.formula.replace(row.toString(), (i + 1));
obj = ej.spreadsheet.getCell(i, indexes[1], sheet);
if (!obj)
obj = { formula: currentFormula };
else
obj["formula"] = currentFormula;
this.ssObj.biz.setCell(i, indexes[1], sheet, obj);
let change = { Row: i, cell: indexes[1], CellInfo: obj };
changedValues.push(change);
}
}
}
(changedValues.length > 0) && this.download.ssAutoSave({ action: "imageincell", changedValues: changedValues }, this, true);
this.ssObj.selectRange(sheet.activeCell + ":" + this.generateHeaderText(indexes[3] + 1) + (changedValues.pop().Row + 1));
}
}
if (moveToDialog.length > 0) {
let unicld = Unibase.Apps.Collaboration.Components.UniCloud.Instance();
let copyto = e.target.closest(".copyto_dialog");
if (!(copyto)) {
if (document.getElementsByClassName(".copyto_dialog")) {
$("#_bizgaze_modal").modal("hide");
$("#_bizgaze_modal").empty();
}
}
this.selectFileEffectInDialog(e);
if (e.target.id === "copyto_select_btn") {
if (unicld.copyToSelectedFileId !== 0) {
Unibase.Platform.Helpers.NavigationHelper.Instance().showLoading();
let base = Unibase.Apps.Collaboration.Components.Sheets.Base.Instance();
let sheetIdx = base.getSheetIndex();
let parsed = base.ssObj.sheets[sheetIdx];
$("#_bizgaze_modal").modal("hide");
$(".modal-backdrop")[$(".modal-backdrop").length - 1].remove();
$("#moveToModal").empty();
if (unicld.copyToSelectedFileId === base.FileId) {
let count = 0;
let sheets = base.ssObj.sheets;
let sheetnames = base.ssObj.sheets.map(x => x.name);
let sheetName;
if (sheetnames.includes("Copy of " + parsed.name)) {
sheets.forEach((sheet) => {
if (sheet.name.startsWith("Copy of " + parsed.name))
count++;
});
sheetName = "Copy of " + parsed.name + "(" + count + ")";
}
else {
sheetName = "Copy of " + parsed.name;
}
let saveType = "insertsheetinsamewb";
let data = {
FileId: base.FileId,
sheetName: sheetName,
autosavetype: saveType,
sheetIndex: Unibase.Apps.Collaboration.Components.Sheets.Base.Instance().getSheetIndex(),
requestId: Unibase.Apps.Collaboration.Components.Common.Download.Instance().requestId + 1,
};
Unibase.Apps.Collaboration.DocumentManager.Instance().ssAutoSave(data).then(() => {
Unibase.Apps.Collaboration.DocumentManager.Instance().getJsonData(base.FileId).then((sheetdata) => {
if (sheetdata.result != null) {
let newdata = sheetdata.result;
this.removeSheetIndexProp(newdata.Workbook);
base.ssObj.openFromJson({ file: newdata });
}
else {
}
Unibase.Platform.Helpers.NavigationHelper.Instance().hideLoading();
});
});
}
else {
let data = {
FileId: base.FileId,
copytofileid: unicld.copyToSelectedFileId,
sheetIndex: base.getSheetIndex(),
requestId: Unibase.Apps.Collaboration.Components.Common.Download.Instance().requestId + 1,
};
Unibase.Apps.Collaboration.DocumentManager.Instance().CopySheetInToExistingWorkbook(data).then((res) => {
Unibase.Platform.Helpers.NavigationHelper.Instance().hideLoading();
if (res.errors) {
}
else {
}
});
}
}
else {
unicld.moveToFolderElement.firstElementChild.click();
}
}
}
if (e.target.parentElement.id === "DocumentViewer_currencyformat") {
for (let i = this.cellRowStart; i <= this.cellRowEnd; i++) {
for (let j = this.cellColStart; j <= this.cellColEnd; j++) {
var cellInfo = ej.spreadsheet.getCell(i, j, sheet);
cellInfo["format"] = "$#,##0.00";
this.ssObj.biz.setCell(i, j, sheet, cellInfo);
}
}
}
if (e.target.parentElement.id === "DocumentViewer_percentageformat") {
for (let i = this.cellRowStart; i <= this.cellRowEnd; i++) {
for (let j = this.cellColStart; j <= this.cellColEnd; j++) {
var cellInfo = ej.spreadsheet.getCell(i, j, sheet);
cellInfo["format"] = ".00%";
this.ssObj.biz.setCell(i, j, sheet, cellInfo);
}
}
}
if (e.target.classList.contains("biz-ss-fileshare-btn")) {
Unibase.Platform.Helpers.FileCacheHelper.Instance().loadJsFiles(['apps/collaboration/components/old_unicloud.js', 'platform/apps/managers/appmanager.js', 'platform/apps/enums/appconfigurationtypes.js'], () => {
Unibase.Apps.Collaboration.Components.UniCloud.Instance().share(this.FileId, "file", 0);
});
}
if (importDialog.length > 0) {
this.selectFileEffectInDialog(e);
if (e.target.id == "importfile-drive-cancel-btn") {
this.ribbon.ssImportDialougObj.hide();
setTimeout(() => {
if (this.ribbon.ssImportDialougObj)
this.ribbon.ssImportDialougObj.destroy();
this.ribbon.ssImportDialougObj = null;
}, 1000);
}
else if (e.target.id == "importfile-drive-select-btn") {
this.isDriveImport = true;
let obj = {
name: this.ribbon.driveSelectedLiElement.textContent.trim(),
fileid: this.ribbon.driveSelectedFileId,
};
let importObj = {
upload: false,
existingfileid: this.ribbon.driveSelectedFileId,
FileId: this.FileId,
filedata: "",
filetype: "",
filename: "",
FilePath: null,
RefId: 0,
};
this.ribbon.spreadsheetImportedFileData = importObj;
this.ribbon.spreadsheetImportedReplaceFileData = importObj;
this.ribbon.importedFile = { files: [obj] };
this.ribbon.ssImportDialougObj.destroy();
this.ribbon.ssimportedFileDataDailog();
}
}
if (resizeDialog) {
if (e.target.classList.contains("e-dlg-closeicon-btn") || e.target.classList.contains("e-icon-dlg-close")) {
this.dialogue.hideResizeDialog();
}
}
if (selectedTab) {
let selectedTabText = selectedTab.querySelector(".e-tab-text").textContent;
if (selectedTabText && e.which == 3)
selectedTab ? (this.selectedSheetName = selectedTab.textContent) : (this.selectedSheetName = null);
else
this.selectedSheetName = null;
}
}
viewOnlyMouseDown(e) {
let fullscreenDialog = document.getElementsByClassName("biz-ss-menubar-fullscreen");
let requestAcessDialog = e.target.closest(".biz-ss-requestaccess-dialog");
if (fullscreenDialog.length > 0) {
if (e.target.classList.contains("biz-ss-menubarfullscreen-dismiss"))
this.dialogue.hideSsMenubarFullscreenDialog();
}
else if (this.viewOnlyDialog) {
var viewonlydialog = ej.base.closest(e.target, '.biz-ss-viewonly-dialog');
if (!viewonlydialog) {
this.viewOnlyDialog.hide();
this.viewOnlyDialog.destroy();
}
}
if (this.requestAccessObj && !requestAcessDialog) {
this.hideRequestAccess();
}
}
checkCellObjHasValue(cell) {
if (!cell)
return false;
else if (cell && cell.value != null && cell.value != undefined && cell.value.toString() != "" && cell.value.toString() != " ")
return true;
else
return false;
}
selectFileEffectInDialog(e) {
let unicld = Unibase.Apps.Collaboration.Components.UniCloud.Instance();
let moveToList = e.target.closest(".copyto_list");
let moveToFileList = e.target.closest(".copyto_file");
let moveTofolder = e.target.closest(".copyto_folder");
let driveSelectBtn = document.getElementById("importfile-drive-select-btn");
let copyToSelectBtn = document.getElementById("copyto_select_btn");
if (moveToList) {
if (document.getElementsByClassName("copyto_select")[0])
document.getElementsByClassName("copyto_select")[0].classList.remove("copyto_select");
let copyto = e.target.closest(".copyto_list");
copyto.classList.add("copyto_select");
unicld.copyToSelectedFileId = 0;
if (moveToFileList) {
let fileid = Number(moveToFileList.id.split("_")[2]);
unicld.copyToSelectedFileId = fileid;
this.ribbon.driveSelectedFileId = fileid;
this.ribbon.driveSelectedLiElement = moveToFileList;
if (driveSelectBtn)
driveSelectBtn.classList.remove("disabled");
else
copyToSelectBtn.classList.remove("disabled");
}
if (driveSelectBtn && driveSelectBtn.classList.contains("disabled"))
driveSelectBtn.classList.remove("disabled");
else if (driveSelectBtn && driveSelectBtn.classList.contains("e-disabled"))
driveSelectBtn.classList.remove("e-disabled");
}
if (moveTofolder) {
unicld.moveToFolderElement = moveTofolder;
(driveSelectBtn) && driveSelectBtn.classList.add("e-disabled");
if (driveSelectBtn)
driveSelectBtn.classList.add("disabled");
else
copyToSelectBtn.classList.add("disabled");
}
}
addUtilFn() {
this.ssObj.biz.getRange = () => { return this.ssObj.getActiveSheet().selectedRange; };
this.ssObj.biz.getIndexes = () => { return this.swapRange(ej.spreadsheet.getIndexesFromAddress(this.ssObj.biz.getRange())); };
this.ssObj.biz.setCell = (rowIdx, colIdx, sheet, cellObj) => {
this.ssObj.clipboardModule.setCell(rowIdx, colIdx, sheet, cellObj, false, false, false);
};
this.ssObj.biz.getCell = (rowIdx, colIdx, sheet) => {
return ej.spreadsheet.getCell(rowIdx, colIdx, sheet);
};
this.ssObj.biz.isRowAvailable = (rowIdx, activeSheet) => {
if (activeSheet.rows[rowIdx]) {
return true;
}
return false;
};
this.ssObj.biz.getActiveSheet = () => {
if (this.ssObj.biz.sheetIndex > -1) {
return this.ssObj.sheets[this.ssObj.biz.sheetIndex];
}
else {
return this.ssObj.getActiveSheet();
}
};
this.ssObj.biz.isRowsSelected = (indexes) => {
if (!indexes) {
indexes = this.ssObj.biz.getIndexes();
}
let colStart = indexes[1];
let colEnd = indexes[3];
let colCount = this.ssObj.getActiveSheet().colCount - 1;
for (var i = indexes[0]; i <= indexes[2]; i++) {
if (!(colStart === 0 && colEnd === colCount))
return false;
}
return true;
};
this.ssObj.biz.isColsSelected = (indexes) => {
if (!indexes) {
indexes = this.ssObj.biz.getIndexes();
}
let rowStart = indexes[0];
let rowEnd = indexes[2];
let rowCount = this.ssObj.getActiveSheet().rowCount - 1;
for (var i = indexes[1]; i <= indexes[3]; i++) {
if (!(rowStart === 0 && rowEnd === rowCount))
return false;
}
return true;
};
this.ssObj.biz.getSheetIndexByname = (name) => {
let len = this.ssObj.sheets.length;
for (let i = 0; i < len; i++) {
if (this.ssObj.sheets[i].name == name) {
return i;
}
}
return -1;
};
this.ssObj.biz.getSheetByName = (name) => {
let len = this.ssObj.sheets.length;
for (let i = 0; i < len; i++) {
if (this.ssObj.sheets[i].name == name) {
return this.ssObj.sheets[i];
}
}
};
}
getIndexesFromAddress(range) {
return this.swapRange(ej.spreadsheet.getIndexesFromAddress(range));
}
getSheetIndex(sheet) {
sheet = sheet ? sheet : this.ssObj.biz.getActiveSheet();
let len = this.ssObj.sheets.length;
for (let i = 0; i < len; i++) {
if (this.ssObj.sheets[i].name == sheet.name) {
return i;
}
}
return -1;
}
getCellsFromIndexes(range, customRange) {
let cells = [];
let sheet = this.ssObj.getActiveSheet();
let k = 0;
for (let i = range[0]; i <= range[2]; i++) {
for (let j = range[1]; j <= (!customRange ? range[3] : range[1] + customRange[k].length); j++) {
cells.push(JSON.parse(JSON.stringify(ej.spreadsheet.getCell(i, j, sheet))));
}
k++;
}
return cells;
}
setCellObjects(range, cells, customRange) {
let sheet = this.ssObj.getActiveSheet();
let k = 0;
for (let i = range[0]; i <= range[2]; i++) {
for (let j = range[1]; j <= (!customRange ? range[3] : range[1] + customRange[k].length); j++) {
let obj = cells.shift();
let cell = ej.spreadsheet.getCell(i, j, sheet);
if (cell && cell.image && cell.image[0]) {
document.getElementById(cell.image[0].id).remove();
}
if (obj) {
this.ssObj.biz.setCell(i, j, sheet, obj);
}
else {
this.ssObj.biz.setCell(i, j, sheet, undefined);
delete sheet.rows[i].cells[j];
}
}
k++;
}
}
generateSheetName(names, name) {
let splitJoin;
if (names.indexOf(name) < 0)
return name;
if (name.lastIndexOf(" (") > -1)
splitJoin = name.substr(0, name.lastIndexOf(" ("));
else
splitJoin = name;
let i = 2;
while (names.indexOf(splitJoin + '(' + i + ")") > -1)
i++;
return name + ' (' + i + ')';
}
clearCell(sheet, rowIdx, colIdx) {
this.ssObj.biz.setCell(rowIdx, colIdx, sheet, {});
delete sheet.rows[rowIdx].cells[colIdx];
}
updateCell(sheet, rowIdx, colIdx, cellObj) {
this.ssObj.biz.setCell(rowIdx, colIdx, sheet, cellObj);
}
clearRow(sheet, rowIdx) {
if (this.ssObj.biz.isRowAvailable(rowIdx, sheet) && sheet.rows[rowIdx].cells) {
let len = sheet.rows[rowIdx].cells.length;
for (let j = 0; j < len; j++) {
this.ssObj.biz.setCell(rowIdx, j, sheet, {});
}
}
delete sheet.rows[rowIdx];
}
updateRow(sheet, rowIdx, rowObj) {
for (var j = 0; rowObj && rowObj.cells && j <= rowObj.cells.length; j++) {
let cell = rowObj.cells[j];
cell && this.ssObj.biz.setCell(rowIdx, j, sheet, cell);
}
rowObj && (sheet.rows[rowIdx] = rowObj);
}
swapRange(cells) {
if (cells[0] > cells[2])
this.swap(cells, 0, 2);
if (cells[1] > cells[3])
this.swap(cells, 1, 3);
return cells;
}
swap(array, x, y) {
if (x == y)
return;
let tmp = array[x];
array[x] = array[y];
array[y] = tmp;
}
generateHeaderText(colIndex) {
if (this.hederText[colIndex]) {
return this.hederText[colIndex];
}
let text = this.generateText(colIndex);
this.hederText[colIndex] = text;
return text;
}
generateText(colIndex) {
let alphabet = "Z";
if (colIndex / 26 > 1)
return this.generateText((colIndex % 26 === 0) ? (colIndex / 26 - 1) : Math.floor(colIndex / 26)) + String.fromCharCode((colIndex % 26) === 0 ? alphabet.charCodeAt(alphabet) : 64 + (colIndex % 26));
else
return String.fromCharCode(64 + (colIndex));
}
updateProps() {
this.element = document.getElementById('DocumentViewer');
this.ribbon = Unibase.Apps.Collaboration.Components.Sheets.Ribbon.Instance();
this.dialogue = Unibase.Apps.Collaboration.Components.Sheets.Dialogue.Instance();
this.autofill = Unibase.Apps.Collaboration.Components.Sheets.Autofill.Instance();
this.formatpainter = Unibase.Apps.Collaboration.Components.Sheets.FormatPainter.Instance();
this.spellchecker = Unibase.Apps.Collaboration.Components.Sheets.SpellChecker.Instance();
this.util = Unibase.Apps.Collaboration.Components.Common.Util.Instance();
this.download = Unibase.Apps.Collaboration.Components.Common.Download.Instance();
this.fullscreen = Unibase.Apps.Collaboration.Components.Fullscreen.Instance();
this.ssSettings = {
contextMenuBeforeOpen: this.cmenuBfOpen.bind(this),
contextMenuItemSelect: this.cmenuSelect.bind(this),
actionComplete: this.actionComplete.bind(this),
beforeCellRender: this.bfCellRender.bind(this),
beforeSelect: this.beforeSelect.bind(this),
actionBegin: this.actionBegin.bind(this),
cellEdit: this.cellEdit.bind(this),
sortComplete: this.sortComplete.bind(this),
openComplete: this.openComplete.bind(this),
cellSave: this.cellSave.bind(this),
dataBound: this.dataBound.bind(this),
beforeCellSave: this.beforeCellSave.bind(this),
created: this.ssCreated.bind(this),
sheets: this.filedata,
allowSave: true,
saveUrl: _appsettings.server_url() + '/apis/v4/unibase/collaboration/documents/spreadsheetdownload',
};
}
beforeSelect(args) {
let ele = document.getElementById("DocumentViewer_edit");
if (ele)
ele.textContent = "";
this.isCtrlA = false;
}
bfCellRender(args) {
if (this.openJSON) {
this.processCustomResponse();
this.openJSON = false;
}
if (this.showFormula) {
let value = '';
if (args.cell && args.cell.value) {
value = args.cell.value;
}
if (args.cell.formula && args.cell.formula.length) {
value = args.cell.formula;
}
args.element.innerHTML = value;
}
if (args && args.cell && args.cell.image && args.cell.image.length > 0) {
let sheet = this.ssObj.getActiveSheet();
let sheetName = this.setSheetNameForInCell(sheet.name);
(sheet["pictures"] == undefined) && (sheet["pictures"] = []);
args.cell.image.forEach((img) => {
if ((!img.id.includes(sheetName)) && (!sheet.pictures.find(x => x.imageId == img.id)))
sheet.pictures.push({ imageId: img.id, row: args.rowIndex, col: args.colIndex });
});
}
}
setSheetNameForInCell(currentSheetName) {
currentSheetName = currentSheetName.replaceAll("(", "");
currentSheetName = currentSheetName.replaceAll(")", "");
if (currentSheetName.includes(" "))
return currentSheetName.split(" ").join("-");
else
return currentSheetName;
}
beforeCellSave(args) {
this.isInitial = false;
this.prevFormulaRange = "";
this.f2Edit = false;
this.prevFormulaRange = "";
this.formulaActiveCell = "";
if (args.value && args.value.length && args.value.length && args.value[0] === '=' && this.lastKeyEvent.keyCode === 13) {
let popup = document.body.querySelector('#' + this.ssObj.element.id + '_ac_popup');
if (popup && popup.classList.contains('e-popup-open')) {
args.cancel = true;
this.ssObj.formulaModule.triggerKeyDownEvent(13);
this.ssObj.formulaModule.hidePopUp();
popup.classList.remove('e-popup-open');
popup.classList.add('e-popup-close');
}
}
this.removeCopyIndicator();
}
cellEdit(args) {
this.isInitial = false;
var indexes = this.ssObj.biz.getIndexes();
let sheet = this.ssObj.biz.getActiveSheet();
let cellInfo = ej.spreadsheet.getCell(indexes[0], indexes[1], sheet);
if (cellInfo && cellInfo.image && cellInfo.image[0] && cellInfo.image[0].id.startsWith("biz_image_in_cell")) {
document.getElementById(cellInfo.image[0].id).style.display = "none";
}
if (this.autofillDrag) {
this.ssObj.endEdit();
this.autofillDrag = false;
}
}
sortComplete(args) {
debugger;
}
cellSave(args) {
var indexes = this.ssObj.biz.getIndexes();
let sheet = this.ssObj.biz.getActiveSheet();
let cellInfo = ej.spreadsheet.getCell(indexes[0], indexes[1], sheet);
if (cellInfo && cellInfo.value && cellInfo.value != "") {
if (cellInfo.image && cellInfo.image.length > 0) {
document.getElementById(cellInfo.image[0].id).remove();
cellInfo.image = [];
this.download.ssAutoSave({ action: "imageincell", changedValues: [{ row: indexes[0], cell: indexes[1], cellinfo: cellInfo }] }, this, true);
}
}
else if (cellInfo && cellInfo.image && cellInfo.image.length > 0) {
document.getElementById(cellInfo.image[cellInfo.image.length - 1].id).style.display = "";
}
if (this.showFormula) {
let value = '';
if (args.value) {
value = args.value;
}
if (args.formula && args.formula.length) {
value = args.formula;
}
args.element.innerHTML = value;
}
this.removeCopyIndicator();
}
openComplete() {
setTimeout(() => { this.addImageClassToAllImages(); }, 3000);
}
ssCreated() {
this.openJSON = true;
this.removeSheetIndexProp(this.filedata.Workbook);
this.ssObj.openFromJson({ file: this.filedata });
this.container.addEventListener('fullscreenchange', this.fullScreenHandler.bind(this));
(this.ssObj.enableContextMenu) && this.ssObj.contextMenuModule.contextMenuInstance.addEventListener('beforeItemRender', this.cmenubfrender.bind(this));
document.getElementsByClassName("e-formula-bar-panel")[0].firstElementChild.lastElementChild.remove();
this.ssObj.element.querySelector('.e-sheet-tab').ej2_instances[0].addEventListener('selected', this.tabSelected.bind(this));
this.focusDocumentViewer();
this.setFileNameElementWidth();
this.ssObj.addEventListener("dialogBeforeOpen", this.dialogOpenHandler.bind(this));
}
removeSheetIndexProp(workbook) {
if (workbook.sheets && workbook.sheets.length > 0) {
for (var i = 0; i < workbook.sheets.length; i++)
(workbook.sheets[i] && workbook.sheets[i].index) && (delete workbook.sheets[i].index);
}
}
processCustomResponse() {
if (this.customresult.richtexts && this.customresult.richtexts.sheets.length) {
let rc = this.customresult.richtexts;
for (let i = 0; i < rc.sheets.length; i++) {
let idx = this.ssObj.biz.getSheetIndexByname(this.customresult.richtexts.sheets[i].name);
this.ssObj.sheets[idx].richtexts = { rows: rc.sheets[0].rows };
}
}
}
autoSave(args) {
if (!(args.action == "import" || args.action == "gotoSheets") && !this.isInitial) {
Unibase.Apps.Collaboration.Components.Common.Download.Instance().saveDocumentFile(this.FileId, "Excel", null, args, this).then(function () { });
}
}
cmenubfrender(args) {
let ele = document.createElement("span");
ele.classList.add("e-badge");
ele.classList.add("biz-contextmenu-badges");
let indexes = this.ssObj.biz.getIndexes();
let sheet = this.ssObj.biz.getActiveSheet();
if (args.item.text === "Filter") {
if (this.ssObj.filterCollection) {
let sheetsWithFilter = this.ssObj.filterCollection.map(x => x.sheetIndex);
if (sheetsWithFilter.includes(this.getSheetIndex())) {
if (args.element.classList.contains("e-disabled")) {
args.element.classList.add("e-disabled");
}
}
}
}
else if (args.item.text === "Clear validation") {
for (var i = indexes[0]; i <= indexes[2]; i++) {
for (var j = indexes[1]; j <= indexes[3]; j++) {
let cellInfo = ej.spreadsheet.getCell(i, j, sheet);
if (cellInfo && !cellInfo.validation) {
args.element.classList.add("e-disabled");
i = indexes[2] + 1;
j = indexes[3] + 1;
}
}
}
}
else if (args.item.text === "Cut") {
ele.textContent = "Ctrl+X";
}
else if (args.item.text === "Copy") {
ele.textContent = "Ctrl+C";
}
else if (args.item.text === "Paste") {
ele.textContent = "Ctrl+V";
}
else if (args.item.text === "Values") {
ele.textContent = "Ctrl+Shift+V";
}
else if (args.item.text === "Hyperlink") {
ele.textContent = "Ctrl+K";
}
if (args && args.element && !args.element.classList.contains("e-separator") && args.element.id !== "DocumentViewer_cmenu_colorpallet")
args.element.append(ele);
if (args.item.text === "Move Right") {
let idx = this.ssObj.biz.getSheetIndexByname((this.selectedSheetName || sheet.name));
if (idx === this.ssObj.sheets.length - 1)
args.element.classList.add("e-disabled");
}
if (args.item.text === "Move Left") {
let idx = this.ssObj.biz.getSheetIndexByname((this.selectedSheetName || sheet.name));
if (idx === 0)
args.element.classList.add("e-disabled");
}
}
cmenuSelect(args) {
let id = this.ssObj.element.id + '_cmenu_';
let sheets = this.ssObj.sheets;
let idx = this.getSheetIndex();
let range = this.ssObj.biz.getRange();
let i1, i2;
switch (args.item.id) {
case id + 'insertrowabove':
case id + 'insertrow':
this.ssObj.contextMenuModule.selectHandler({ item: { id: this.ssObj.element.id + '_cmenu_insert_row_above' } });
break;
case id + 'insertrowbelow':
this.ssObj.contextMenuModule.selectHandler({ item: { id: this.ssObj.element.id + '_cmenu_insert_row_below' } });
break;
case id + 'insertcolright':
this.ssObj.contextMenuModule.selectHandler({ item: { id: this.ssObj.element.id + '_cmenu_insert_column_after' } });
break;
case id + 'insertcolleft':
case id + 'insertcolumn':
this.ssObj.contextMenuModule.selectHandler({ item: { id: this.ssObj.element.id + '_cmenu_insert_column_before' } });
break;
case id + 'shiftright':
this.formatpainter.insertShiftRight(range);
this.download.ssAutoSave({ action: "insertCell" }, this, true);
break;
case id + 'shiftdown':
this.formatpainter.insertShiftDown(range);
break;
case id + 'deleterow':
this.ssObj.contextMenuModule.selectHandler({ item: { id: this.ssObj.element.id + '_cmenu_delete_row' } });
break;
case id + 'deletecolumn':
this.ssObj.contextMenuModule.selectHandler({ item: { id: this.ssObj.element.id + '_cmenu_delete_column' } });
break;
case id + 'shiftleft':
this.formatpainter.deleteShiftLeft(range);
break;
case id + 'shiftup':
this.formatpainter.deleteShiftUp(range);
break;
case id + 'deletevalue':
this.ssObj.editModule.editingHandler('delete');
break;
case id + 'datvalidation':
this.ssObj.notify('initiatedatavalidation', null);
break;
case id + 'highlightinvaliddata':
this.ssObj.addInvalidHighlight();
break;
case id + 'clearhighlight':
this.ssObj.removeInvalidHighlight();
break;
case id + 'clearvalidation':
this.ssObj.notify('removeDataValidation', null);
break;
case id + 'delete_sheet':
args.item.id = "skipped";
this.formatpainter.renderConfirmDlg();
break;
case id + 'biz_insert':
this.ssObj.element.querySelector('.e-add-sheet-tab').click();
break;
case id + 'existingspreadsheet':
break;
case id + 'newspreadsheet':
Unibase.Apps.Collaboration.DocumentManager.Instance().CopySheetToNewSpreadsheet({ FileId: this.FileId, sheetIndex: this.getSheetIndex() }).then((res) => {
});
break;
case id + 'removefilter':
this.ssObj.applyFilter();
let sortingBtn = document.getElementById("DocumentViewer_sorting");
sortingBtn.firstElementChild.style.color = "";
break;
case id + 'changecolor':
break;
case id + 'insertnote':
this.formatpainter.insertNote();
break;
case id + 'clearnotes':
this.formatpainter.clearComment();
break;
case id + 'resizecolumns':
case id + 'resizecolumn':
case id + 'resizerows':
case id + 'resizerow':
this.dialogue.renderResizeDialog();
break;
}
}
cmenuBfOpen(args) {
let target = this.ssObj.contextMenuModule.getTarget(args.event.target);
let id = this.ssObj.element.id + '_cmenu_';
let ins = this.ssObj.contextMenuModule.contextMenuInstance;
let data = this.ssObj.contextMenuModule.getDataSource(target);
let spt = this.ssObj.biz.getRange().split(':');
let stCol = spt[0].replace(/[0-9]/g, '');
let endCol = spt[1].replace(/[0-9]/g, '');
let stRow = spt[0].match(/\d+$/)[0];
let endRow = spt[1].match(/\d+$/)[0];
let indexes = this.ssObj.biz.getIndexes();
let isRowsSelected = this.ssObj.biz.isRowsSelected(indexes);
let isColsSelected = this.ssObj.biz.isColsSelected(indexes);
let row = (indexes[2] - indexes[0] + 1);
let col = (indexes[3] - indexes[1] + 1);
let sheet = this.ssObj.biz.getActiveSheet();
let range = this.ssObj.getActiveSheet().selectedRange;
let count = (range.match(/:/g) || []).length;
let ranges;
let dataValidationItems = [{ text: 'Data validation', iconCss: '', id: id + 'datvalidation' },
{ text: 'Highlight invalid data', iconCss: '', id: id + 'highlightinvaliddata' },
{ text: 'Clear highlight', iconCss: '', id: id + 'clearhighlight' },
{ text: 'Clear validation', cssClass: "e-disabled", iconCss: '', id: id + 'clearvalidation' },];
switch (target) {
case 'Content':
if (count <= 1) {
data.push({ separator: true });
if (isRowsSelected) {
data.push({ text: 'Insert ' + row + ' above', iconCss: '', id: id + 'insertrowabove' });
data.push({ text: 'Insert ' + row + ' below', iconCss: '', id: id + 'insertrowbelow' });
}
else {
!isColsSelected && data.push({ text: 'Insert ' + row + ' row' + (row > 1 ? 's' : ''), iconCss: '', id: id + 'insertrow' });
}
if (isColsSelected) {
data.push({ text: 'Insert ' + col + ' left', iconCss: '', id: id + 'insertcolleft' });
data.push({ text: 'Insert ' + col + ' right', iconCss: '', id: id + 'insertcolright' });
}
else {
!isRowsSelected && data.push({ text: 'Insert ' + col + ' column' + (col > 1 ? 's' : ''), iconCss: '', id: id + 'insertcolumn' });
}
data.push({ text: 'Insert cells', iconCss: '', id: id + 'insertcells', items: [{ text: 'Shift right', iconCss: '', id: id + 'shiftright' }, { text: 'Shift down', iconCss: '', id: id + 'shiftdown' }] });
data.push({ separator: true });
!isColsSelected && data.push({ text: row > 1 ? 'Delete selected rows' : 'Delete row', iconCss: '', id: id + 'deleterow' });
!isRowsSelected && data.push({ text: stCol === endCol ? 'Delete column ' + stCol : 'Delete columns ' + stCol + ' - ' + endCol, iconCss: '', id: id + 'deletecolumn' });
data.push({ text: 'Delete cells', iconCss: '', id: id + 'deletecells', items: [{ text: 'Shift left', iconCss: '', id: id + 'shiftleft' }, { text: 'Shift up', iconCss: '', id: id + 'shiftup' }] });
data.push({ separator: true });
data.push({ text: 'Insert note', iconCss: '', id: id + 'insertnote' });
if (sheet.comments && sheet.comments.rows[indexes[0]] && sheet.comments.rows[indexes[0]].cells[indexes[1]]) {
data.push({ text: 'Clear notes', iconCss: '', id: id + 'clearnotes' });
}
}
data.push({ text: 'Validations', iconCss: '', id: id + 'datvalidation', items: dataValidationItems });
data.find(x => x.text == "Filter").items.splice(2, 0, { text: "Remove filter", id: id + "removefilter" });
break;
case 'ColumnHeader':
data.splice(5, 1);
if (isColsSelected) {
data.splice(5, 0, { text: 'Insert ' + col + ' left', iconCss: '', id: id + 'insertcolleft' });
data.splice(6, 0, { text: 'Insert ' + col + ' right', iconCss: '', id: id + 'insertcolright' });
if (range.includes(" "))
data.splice(9, 0, { text: 'Resize selected columns', iconCss: '', id: id + 'resizecolumns' });
else if (col > 1) {
let cols = this.generateText((indexes[1] + 1)) + " - " + this.generateText((indexes[3] + 1));
data.splice(9, 0, { text: 'Resize Columns ' + cols, iconCss: '', id: id + 'resizecolumns' });
}
else
data.splice(9, 0, { text: 'Resize Column', iconCss: '', id: id + 'resizecolumn' });
}
else
data.splice(5, 0, { text: 'Insert ' + col + ' column' + (col > 1 ? 's' : ''), iconCss: '', id: id + 'insertcolumn' });
data.splice(data.length - 1, 0, { text: 'Clear column' + (col > 1 ? 's' : ''), iconCss: '', id: id + 'deletevalue' });
data.push({ separator: true });
data.push({ text: 'Validations', iconCss: '', id: id + 'datvalidation', items: dataValidationItems });
break;
case 'RowHeader':
data.splice(5, 1);
if (isRowsSelected) {
data.splice(5, 0, { text: 'Insert ' + row + ' above', iconCss: '', id: id + 'insertrowabove' });
data.splice(6, 0, { text: 'Insert ' + row + ' below', iconCss: '', id: id + 'insertrowbelow' });
if (range.includes(" "))
data.splice(10, 0, { text: 'Resize selected rows', iconCss: '', id: id + 'resizerows' });
else if (row > 1)
data.splice(10, 0, { text: 'Resize rows ' + (indexes[0] + 1) + " - " + (indexes[2] + 1), iconCss: '', id: id + 'resizerows' });
else
data.splice(10, 0, { text: 'Resize row ', iconCss: '', id: id + 'resizerow' });
}
else
data.splice(5, 0, { text: 'Insert ' + row + ' row' + (row > 1 ? 's' : ''), iconCss: '', id: id + 'insertrow' });
data.splice(data.length - 1, 0, { text: 'Clear row' + (row > 1 ? 's' : ''), iconCss: '', id: id + 'deletevalue' });
data.push({ separator: true });
data.push({ text: 'Validations', iconCss: '', id: id + 'datvalidation', items: dataValidationItems });
break;
case 'Footer':
data[0].id = this.ssObj.element.id + '_cmenu_biz_insert';
data.push({
text: 'Copy to', iconCss: '', id: id + 'copyto', items: [{ text: "New Spreadsheet", iconCss: '', id: id + 'newspreadsheet' },
{ text: "Existing Spreadsheet", iconCss: '', id: id + 'existingspreadsheet' }]
});
data.push({ text: 'Change Color', iconCss: '', id: id + 'changecolor', items: [{ id: id + 'colorpallet' }] });
break;
}
if (target.length) {
ins.items = data;
ins.dataBind();
if (target === 'footer') {
}
if (target === 'Content') {
}
}
if (args.items && args.items[0] && args.items[0].id == id + "colorpallet") {
document.getElementById(id + "colorpallet").appendChild(this.changecolor);
args.element.style.height = "225px";
let top = window.innerHeight - 400;
args.element.style.top = args.element.style.top + top + "px";
args.element.style.borderRadius = "5px";
}
}
tabSelected() {
this.updateSheetIcon();
}
colourpicker() {
this.changecolor = document.createElement("div");
this.changecolor.setAttribute("id", "changecolor_" + this.FileId);
document.body.appendChild(this.changecolor);
this.ModalHtml = `
`;
$("#changecolor_" + this.FileId).html(this.ModalHtml);
var palette = [
'000000', '434343', '666666', '999999', 'b7b7b7', 'cccccc', 'd9d9d9', 'efefef', 'f3f3f3', 'ffffff',
'980000', 'ff0000', 'ff9900', 'ffff00', '00ff00', '00ffff', '4a86e8', '0000ff', '9900ff', 'ff00ff',
'e6b8af', 'f4cccc', 'fce5cd', 'fff2cc', 'd9ead3', 'd0e0e3', 'c9daf8', 'cfe2f3', 'd9d2e9', 'ead1dc',
'dd7e6b', 'ea9999', 'f9cb9c', 'ffe599', 'b6d7a8', 'a2c4c9', 'a4c2f4', '9fc5e8', 'b4a7d6', 'd5a6bd',
'cc4125', 'e06666', 'f6b26b', 'ffd966', '93c47d', '76a5af', '6d9eeb', '6fa8dc', '8e7cc3', 'c27ba0',
'a61c00', 'cc0000', 'e69138', 'f1c232', '6aa84f', '45818e', '3c78d8', '3d85c6', '674ea7', 'a64d79',
'85200c', '990000', 'b45f06', 'bf9000', '38761d', '134f5c', '1155cc', '0b5394', '351c75', '741b47',
'5b0f00', '660000', '783f04', '7f6000', '274e13', '0c343d', '1c4587', '073763', '20124d', '4c1130',
];
var k = 0;
var html = "";
var html1 = "";
for (let i = 0; i < 8; i++) {
html = `
`;
$("#colourpalette").append(html);
var rowcount = 10;
let j = 0;
for (j; j < rowcount; j++) {
html1 = ``;
$("#biz-ss-colorpallet-" + i).append(html1);
k++;
}
$("#biz-ss-colorpallet-" + i).append("
");
}
}
updatePadding(isAdd) {
let active = this.ssObj.element.querySelector('.e-sheet-tab').querySelector('.biz-dd-active');
if (active) {
let parent = active.parentElement;
isAdd ? parent.classList.add('biz-dd-parent') : parent.classList.remove('biz-dd-parent');
}
}
updateSheetIcon() {
let sheets = this.ssObj.sheets;
let activeSheet = this.ssObj.getActiveSheet();
let sheetsElem = this.ssObj.element.querySelector('.e-sheet-tab').querySelectorAll('.e-text-wrap');
for (let i = 0; i < sheets.length; i++) {
if (sheetsElem[i] && !sheetsElem[i].querySelectorAll('.biz-dd-wrap').length) {
let wrap = ej.base.createElement('div', { className: 'biz-dd-wrap' });
let icon = ej.base.createElement('span', { className: 'e-icons biz-dd-icon' });
wrap.appendChild(icon);
sheetsElem[i].appendChild(wrap);
}
let wrap = sheetsElem[i].querySelector('.biz-dd-wrap');
wrap.classList.remove('biz-dd-active');
if (activeSheet.name === sheetsElem[i].querySelector('.e-tab-text').innerText) {
wrap.classList.add('biz-dd-active');
}
}
}
dataBound(args) {
if (this.isInitial) {
this.reqCount++;
if (this.reqCount == 2)
this.isInitial = false;
}
setTimeout(() => {
this.ssObj.sheetTabsModule.refreshSheetTab();
this.sheetColorRender();
}, 50);
this.updateSheetIcon();
this.formatpainter.updateEdgesOnBound();
}
actionBegin(args) {
this.prevFormulaRange = "";
this.formulaActiveCell = "";
this.isFormula = false;
if (args.action === "filter") {
this.sortingBtn = document.getElementById("DocumentViewer_sorting");
this.sortingBtn.firstElementChild.style.color = "rgb(12 143 11)";
}
else if (args.action === 'renameSheet') {
let active = this.ssObj.element.querySelector('.e-sheet-tab').querySelector('.biz-dd-active');
this.updatePadding(true);
active.remove();
}
else if (args.action === 'beforeInsertImage') {
var indexes = this.ssObj.biz.getIndexes();
let sheet = this.ssObj.biz.getActiveSheet();
this.oldCellInfo = Object.assign({}, ej.spreadsheet.getCell(indexes[0], indexes[1], sheet));
}
else if (args.action === 'clipboard') {
(args.args && args.args.eventArgs && args.args.eventArgs.copiedInfo && args.args.eventArgs.copiedInfo.isCut) && this.removeInCellImage(args.args.eventArgs.pastedRange);
}
}
actionComplete(args) {
this.prevFormulaRange = "";
this.formulaActiveCell = "";
args.action === 'cellSave' && (this.f2Edit = false, this.isFormula = false);
if (args.eventArgs && args.eventArgs.modelType && (args.eventArgs.modelType == "Sheet" || args.eventArgs.modelType == "Row" || args.eventArgs.modelType == "Column") && (args.action == "insert" || args.action == "delete")) {
args.eventArgs.sheet = [];
this.focusDocumentViewer();
}
if (args.action == "resizeToFit") {
this.ribbon.imageInCell = true;
}
if (args.action !== 'import' && Unibase.Apps.Collaboration.Components.Documents.Instance()._openedfile.signalrData != JSON.stringify(args)) {
var onlineStatus = (window.navigator.onLine ? 'on' : 'off') + 'line';
window.addEventListener('online', () => document.getElementsByClassName('biz-ss-cloudsave')[0].style.display = 'inline-block');
window.addEventListener('online', () => document.getElementsByClassName("biz-ss-cloudoff")[0].style.display = "none");
window.addEventListener('offline', () => document.getElementsByClassName('biz-ss-cloudsave')[0].style.display = 'none');
window.addEventListener('offline', () => document.getElementsByClassName("biz-ss-cloudoff")[0].style.display = "inline-block");
try {
Unibase.Apps.Collaboration.Hubs.UniDocHub.Instance(_appsettings.dochub_url()).
getConnection().
invoke("ChangeDoc", Unibase.Apps.Collaboration.Components.Sheets.Base.Instance().FileId, JSON.stringify(args));
}
catch (_a) {
}
}
if (args.eventArgs && args.eventArgs.modelType && args.eventArgs.modelType == "Row" && args.action == "delete") {
this.removeInCellImage("", [args.eventArgs.startIndex, 0, args.eventArgs.endIndex, this.ssObj.biz.getActiveSheet().usedRange.colIndex]);
}
if (args.eventArgs && args.eventArgs.modelType && args.eventArgs.modelType == "Column" && args.action == "delete") {
this.removeInCellImage("", [0, args.eventArgs.startIndex, this.ssObj.biz.getActiveSheet().usedRange.rowIndex, args.eventArgs.endIndex]);
}
if (args.action === 'renameSheet') {
this.updateSheetIcon();
this.updatePadding(false);
this.sheetColorRender();
}
if (args.action === 'moveSheet') {
this.ssObj.sheets[args.position].index = args.position;
this.ssObj.sheets[args.sheetIndexes[0]].index = args.sheetIndexes[0];
var data = {
FileId: this.FileId,
PreviousSheetIndex: args.sheetIndexes[0],
PresentSheetIndex: args.position,
};
Unibase.Apps.Collaboration.DocumentManager.Instance().updateSheetColorIndex(data).then((res) => {
this.customresult = res.result;
this.sheetColorRender();
});
this.focusDocumentViewer();
}
if (args.action === 'insert') {
if (args.eventArgs.insertType === "Row") {
this.ssObj.insertRow(args.eventArgs.index, args.eventArgs.index);
}
if (args.eventArgs.insertType === "Column") {
this.ssObj.insertColumn([{ index: args.eventArgs.index, width: 95 }], args.eventArgs.index);
}
}
if (args.action == "insertImage") {
this.actionInsertImage(args);
}
if (args.action === "imageRefresh" && args && args.eventArgs && args.eventArgs.id) {
this.imageRefresh(args);
}
if (args.action === "resize" && !this.isResizing) {
this.resizeImagesOnActionResize(args);
this.isResizing = true;
this.adjustRowsAndColumnWidth(args);
this.isResizing = false;
}
if (args.action === "cellDelete")
this.removeInCellImage(args.eventArgs.address.split("!")[1]);
if (args.action === "format") {
setTimeout(() => {
this.setIncellImageHeightOnFontChange(args);
}, 100);
}
if (args.action === 'resize' || (args.action === 'format' && args.eventArgs.style && args.eventArgs.style.fontSize)) {
if (args.eventArgs.isCol) {
let size = parseInt(args.eventArgs.width) - parseInt(args.eventArgs.oldWidth);
this.formatpainter.refreshEdges(false, undefined, args.eventArgs.index, size);
}
else if (args.eventArgs.isCol === false) {
let size = parseInt(args.eventArgs.height) - parseInt(args.eventArgs.oldHeight);
this.formatpainter.refreshEdges(false, args.eventArgs.index, undefined, size);
}
else {
this.formatpainter.refreshEdges(false);
}
}
if (args.action === 'clipboard') {
this.removeCopyIndicator();
this.clipboardBizImages(args);
(args.eventArgs && args.eventArgs.copiedInfo && args.eventArgs.copiedInfo.isCut) && (this.removeInCellImage(args.eventArgs.pastedRange.split("!")[1]));
}
if (args.action === "gotoSheet") {
this.sortingBtn = document.getElementById("DocumentViewer_sorting");
this.sortingBtn.firstElementChild.style.color = "";
if ((this.ssObj.filterCollection) && this.ssObj.filterCollection.find(x => x.sheetIndex === args.eventArgs.currentSheetIndex)) {
this.sortingBtn.firstElementChild.style.color = "rgb(12 143 11)";
}
setTimeout(() => { this.addImageClassToAllImages(); }, 1000);
this.focusDocumentViewer();
}
if (args.action === "filter" && !this.isInitial) {
this.updateFilters(args);
}
if (args.action == "import") {
this.updateFilterIcon();
}
this.removeCopyIndicator();
args.action == "gotoSheet" && (setTimeout(() => { this.addImageClassToAllImages(); }, 1000));
(this.ribbon.imageInCell) ? (this.ribbon.imageInCell = false) : this.autoSave(args);
}
updateFilterIcon() {
setTimeout(() => {
this.sortingBtn = document.getElementById("DocumentViewer_sorting");
if (this.ssObj.filterModule.filterCollection.has(this.getSheetIndex())) {
this.sortingBtn.firstElementChild.style.color = "rgb(12 143 11)";
}
else {
this.sortingBtn.firstElementChild.style.color = "";
}
});
}
focusDocumentViewer() {
setTimeout(() => {
document.getElementById("DocumentViewer").focus();
}, 100);
}
removeInCellImage(range, indexes) {
let rangeIndexes;
if (!indexes) {
rangeIndexes = ej.spreadsheet.getIndexesFromAddress(range);
}
else {
rangeIndexes = indexes;
}
let sheet = this.ssObj.biz.getActiveSheet();
let sheetName = this.setSheetNameForInCell(sheet.name);
for (var i = rangeIndexes[0]; i <= rangeIndexes[2]; i++) {
for (var j = rangeIndexes[1]; j <= rangeIndexes[3]; j++) {
let idEndswith = sheetName + "_" + i + "_" + j;
let cell = ej.spreadsheet.getCell(i, j, sheet);
if (cell && cell.image && cell.image[0] && cell.image[0].id.startsWith("biz_image_in_cell")) {
let img = document.getElementById(cell.image[0].id);
if (img)
img.remove();
}
else if (document.querySelector(`[id$= ${idEndswith}]`)) {
let img = document.querySelector(`[id$= ${idEndswith}]`);
if (img)
img.remove();
}
}
}
}
removeCopyIndicator() {
if (document.getElementsByClassName("e-copy-indicator")[0])
document.getElementsByClassName("e-copy-indicator")[0].style.display = "none";
if (document.getElementsByClassName("e-formularef-indicator")[0])
document.getElementsByClassName("e-formularef-indicator")[0].remove();
}
updateFilters(args) {
this.ribbon.imageInCell = true;
let sheetIdx = this.getSheetIndex();
if (args.eventArgs.filterOptions) {
let collection = {
sheetIdx: sheetIdx, column: [], criteria: [], dataType: [], filterRange: args.eventArgs.range,
hasFilter: true, predicates: [], value: []
};
this.download.ssAutoSave({ action: "applyFilter", collection: collection }, this, true);
}
else if (args.eventArgs.predicates) {
let cols = args.eventArgs.predicates.map(x => x.field);
let collection = {
sheetIdx: sheetIdx,
column: cols.map(this.lettersToNumber),
criteria: args.eventArgs.predicates.map(x => x.operator),
dataType: args.eventArgs.predicates.map(x => x.type),
filterRange: args.eventArgs.range,
hasFilter: true,
predicates: args.eventArgs.predicates.map(x => x.predicate),
value: args.eventArgs.predicates.map(x => x.value),
};
this.download.ssAutoSave({ action: "updateFilter", collection: collection }, this, true);
if (this.ssObj.sheets[sheetIdx] && this.ssObj.sheets[sheetIdx].rows) {
for (var i = 0; i < this.ssObj.sheets[sheetIdx].rows.length; i++) {
if (this.ssObj.sheets[sheetIdx].rows[i] && this.ssObj.sheets[sheetIdx].rows[i].hidden && this.ssObj.sheets[sheetIdx].rows[i].cells) {
for (var j = 0; j < this.ssObj.sheets[sheetIdx].rows[i].cells.length; j++) {
if (this.ssObj.sheets[sheetIdx].rows[i].cells[j] && this.ssObj.sheets[sheetIdx].rows[i].cells[j].image && this.ssObj.sheets[sheetIdx].rows[i].cells[j].image[0] && this.ssObj.sheets[sheetIdx].rows[i].cells[j].image[0].id.startsWith("biz_image_in_cell")) {
let img = document.getElementById(this.ssObj.sheets[sheetIdx].rows[i].cells[j].image[0].id);
if (img)
img.style.display = "none";
}
}
}
else if (this.ssObj.sheets[sheetIdx].rows[i].cells) {
for (var j = 0; j < this.ssObj.sheets[sheetIdx].rows[i].cells.length; j++) {
if (this.ssObj.sheets[sheetIdx].rows[i].cells[j] && this.ssObj.sheets[sheetIdx].rows[i].cells[j].image && this.ssObj.sheets[sheetIdx].rows[i].cells[j].image[0] && this.ssObj.sheets[sheetIdx].rows[i].cells[j].image[0].id.startsWith("biz_image_in_cell")) {
let img = document.getElementById(this.ssObj.sheets[sheetIdx].rows[i].cells[j].image[0].id);
img.style.display = "";
}
}
}
}
}
}
else if (!args.eventArgs.filterOptions && !args.eventArgs.predicates) {
if (this.ssObj.sheets[sheetIdx] && this.ssObj.sheets[sheetIdx].rows) {
for (var i = 0; i < this.ssObj.sheets[sheetIdx].rows.length; i++) {
if (this.ssObj.sheets[sheetIdx].rows[i] && this.ssObj.sheets[sheetIdx].rows[i].hidden && this.ssObj.sheets[sheetIdx].rows[i].hidden == false && this.ssObj.sheets[sheetIdx].rows[i].cells) {
for (var j = 0; j < this.ssObj.sheets[sheetIdx].rows[i].cells.length; j++) {
if (this.ssObj.sheets[sheetIdx].rows[i].cells[j] && this.ssObj.sheets[sheetIdx].rows[i].cells[j].image && this.ssObj.sheets[sheetIdx].rows[i].cells[j].image[0] && this.ssObj.sheets[sheetIdx].rows[i].cells[j].image[0].id.startsWith("biz_image_in_cell")) {
let img = document.getElementById(this.ssObj.sheets[sheetIdx].rows[i].cells[j].image[0].id);
img.style.display = "";
}
}
}
}
}
this.download.ssAutoSave({ action: "removeFilter", sheetIndex: this.getSheetIndex() }, this, true);
}
}
setIncellImageHeightOnFontChange(args) {
if (args.eventArgs && args.eventArgs.style && args.eventArgs.style.fontSize) {
let indexes = this.ssObj.biz.getIndexes();
let sheetIdx = this.getSheetIndex();
let sheet = this.ssObj.biz.getActiveSheet();
let freezeRow = this.ssObj.frozenRowCount(sheet);
let freezeCol = this.ssObj.frozenColCount(sheet);
let changedValues = [];
let remainingRowsImglist = [];
if (sheet.rows[indexes[0]].cells) {
let currentRowImageslist = [];
for (var i = indexes[0]; i <= indexes[2]; i++) {
currentRowImageslist = currentRowImageslist.concat(sheet.rows[i].cells.filter(x => x && x.image).map(x => x && x.image[0]));
}
currentRowImageslist.forEach(x => {
if ((x && x.id && x.id).startsWith("biz_image_in_cell")) {
let currentrow = Number(x.id.split("_")[5]);
let currentcol = Number(x.id.split("_")[6]);
let height = (this.ssObj.sheets[sheetIdx].rows[currentrow].height || 19);
let cellPstn = ej.spreadsheet.getCellPosition(sheet, [currentrow, currentcol], freezeRow, freezeCol);
if (document.getElementById(x.id)) {
(document.getElementById(x.id).style.top = cellPstn.top + "px");
document.getElementById(x.id).style.height = height + "px";
}
let cell = ej.spreadsheet.getCell(currentrow, currentcol, sheet);
cell.image[0].height = height - 2;
this.setImageSize("top", cell.image[0]);
this.setImageSize("left", cell.image[0]);
changedValues.push({ row: currentrow, cell: currentcol, cellinfo: cell });
}
});
}
for (let i = indexes[2] + 1; i < sheet.rows.length; i++) {
let list = sheet.rows[i] && sheet.rows[i].cells && sheet.rows[i].cells.filter(x => x && x.image).map(x => x && x.image[0]);
(list) && (remainingRowsImglist = remainingRowsImglist.concat(list));
}
remainingRowsImglist.forEach(x => {
if ((x && x.id && x.id).startsWith("biz_image_in_cell")) {
let row = parseInt(x.id.split("_")[5]);
let col = parseInt(x.id.split("_")[6]);
let cell = ej.spreadsheet.getCell(row, col, sheet);
let cellPstn = ej.spreadsheet.getCellPosition(sheet, [row, col], freezeRow, freezeCol);
if (document.getElementById(x.id))
(document.getElementById(x.id).style.top = cellPstn.top + "px");
cell.image[0].top = cellPstn.top;
this.setImageSize("top", cell.image[0]);
this.setImageSize("left", cell.image[0]);
changedValues.push({ row: row, cell: col, cellinfo: cell });
}
});
this.ribbon.imageInCell = true;
changedValues.length > 0 && this.download.ssAutoSave({ action: "imageincell", changedValues: changedValues }, this, true);
}
}
setColumnIncellImageSize(range) {
let sheet = this.ssObj.biz.getActiveSheet();
let changedValuesArray = [];
let indexes = this.swapRange(ej.spreadsheet.getIndexesFromAddress(range));
for (var i = 0; i <= sheet.usedRange.rowIndex; i++) {
for (var j = indexes[1]; j <= sheet.usedRange.colIndex; j++) {
changedValuesArray = changedValuesArray.concat(this.performImageResize(sheet, i, j));
}
}
return changedValuesArray;
}
setRowIncellImageSize(range) {
let sheet = this.ssObj.biz.getActiveSheet();
let changedValuesArray = [];
let indexes = this.swapRange(ej.spreadsheet.getIndexesFromAddress(range));
for (var i = indexes[0]; i <= sheet.usedRange.rowIndex; i++) {
for (var j = 0; j <= sheet.usedRange.colIndex; j++) {
changedValuesArray = changedValuesArray.concat(this.performImageResize(sheet, i, j));
}
}
return changedValuesArray;
}
performImageResize(sheet, row, col) {
let changedValuesArray = [];
let cell = ej.spreadsheet.getCell(row, col, sheet);
if (cell && cell.image && cell.image.find(x => x.id.startsWith("biz_image_in_cell"))) {
let imageModel = cell.image.find(x => x.id.startsWith("biz_image_in_cell"));
let imgIdx = cell.image.indexOf(imageModel);
let height = (sheet.rows[row].height || 19) - 2;
let width = (sheet.columns[col].width || 64) - 1;
let cellPstn = ej.spreadsheet.getCellPosition(sheet, [row, col], sheet.frozenRows, sheet.frozenColumns);
if (document.getElementById(imageModel.id)) {
document.getElementById(imageModel.id).style.top = cellPstn.top + "px";
document.getElementById(imageModel.id).style.left = cellPstn.left + "px";
document.getElementById(imageModel.id).style.height = height + "px";
document.getElementById(imageModel.id).style.width = width + "px";
}
cell.image[0].top = cellPstn.top;
cell.image[0].left = cellPstn.left;
cell.image[0].height = height;
cell.image[0].width = width;
this.setImageSize("top", cell.image[0]);
this.setImageSize("left", cell.image[0]);
changedValuesArray.push({ row: row, cell: col, cellinfo: cell });
}
return changedValuesArray;
}
imageRefresh(args) {
let sheet = this.ssObj.getActiveSheet();
let idSplit = args.eventArgs.id.split("_");
let row = args.eventArgs.currentRowIdx;
let col = args.eventArgs.currentColIdx;
let cellInfo = ej.spreadsheet.getCell(row, col, sheet);
let sheetName = this.setSheetNameForInCell(sheet.name);
let curretImg = cellInfo.image.find(x => x.id == args.eventArgs.id);
if (cellInfo && cellInfo.image && curretImg) {
let newImgId;
if (curretImg.id.includes(sheetName)) {
for (var i = 0; i < 3; i++)
idSplit.pop();
}
else if (!curretImg.id.includes(sheetName)) {
if (sheet.pictures) {
let index = sheet.pictures.findIndex(x => x.imageId == args.eventArgs.id);
(index != -1) && (sheet.pictures.splice(index, 1));
}
}
newImgId = idSplit.join("_") + "_" + sheetName + "_" + row + "_" + col;
let ele = document.getElementById(args.eventArgs.id);
(ele) && (ele.id = newImgId);
cellInfo.image[0].id = newImgId;
cellInfo.image[0].left = args.eventArgs.currentLeft;
cellInfo.image[0].top = args.eventArgs.currentTop;
cellInfo.image[0].height = parseInt(ele.style.height);
cellInfo.image[0].width = parseInt(ele.style.width);
this.setImageSize("top", cellInfo.image[0]);
this.setImageSize("left", cellInfo.image[0]);
this.setImageSize("height", cellInfo.image[0]);
this.setImageSize("width", cellInfo.image[0]);
let changedValues = [{
row: args.eventArgs.prevRowIdx, cell: args.eventArgs.prevColIdx,
cellInfo: ej.spreadsheet.getCell(args.eventArgs.prevRowIdx, args.eventArgs.prevColIdx, sheet)
}, { row: row, cell: col, cellInfo: cellInfo }];
this.ribbon.imageInCell = true;
(changedValues.length > 0) && this.download.ssAutoSave({ action: "imageRefresh", changedValues: changedValues }, this, true);
}
}
clipboardBizImages(args) {
let sheetName;
let sheetIdx = this.getSheetIndex();
let sheet = this.ssObj.biz.getActiveSheet();
let freezeRow = this.ssObj.frozenRowCount(sheet);
let freezeCol = this.ssObj.frozenColCount(sheet);
let changedValues = [];
let pastedRange;
if (args.action == "cellDrag") {
pastedRange = args.pastedCellIdxs;
}
else {
pastedRange = this.ssObj.biz.getIndexes(args.eventArgs.pastedRange.split("!")[1]);
}
for (var i = pastedRange[0]; i <= pastedRange[2]; i++) {
for (var j = pastedRange[1]; j <= pastedRange[3]; j++) {
let cellInfo = ej.spreadsheet.getCell(i, j, sheet);
sheetName = this.setSheetNameForInCell(sheet.name);
if (cellInfo && cellInfo.image && cellInfo.image[0].id.startsWith("biz_image_in_cell_")) {
let cellPstn = ej.spreadsheet.getCellPosition(sheet, [i, j], freezeRow, freezeCol);
let img = cellInfo.image[0];
let height, width;
height = (this.ssObj.sheets[sheetIdx].rows[i].height || 19) - 1;
width = (this.ssObj.sheets[sheetIdx].columns[j].width || 64) - 1;
if (args.eventArgs.copiedInfo.isCut) {
let ele = document.getElementById(cellInfo.image[0].id);
img.id = "biz_image_in_cell_" + sheetName + "_" + i + "_" + j;
ele.id = img.id;
ele.style.height = height + "px";
ele.style.width = width + "px";
ele.style.top = cellPstn.top + "px";
ele.style.left = cellPstn.left + "px";
}
else {
let prevEle = document.getElementById(cellInfo.image[0].id);
var div = document.createElement("div");
div.id = "biz_image_in_cell_" + sheetName + "_" + i + "_" + j;
div.style.top = cellPstn.top + "px";
div.style.left = cellPstn.left + "px";
div.style.height = height + "px";
div.style.width = width + "px";
div.style.backgroundImage = "url(" + cellInfo.image[0].src + ")";
div.classList.add('e-ss-overlay');
div.classList.add('biz_image_in_cell');
prevEle.after(div);
img.id = div.id;
}
img.left = cellPstn.left;
img.top = cellPstn.top;
img.width = width;
img.height = height;
this.setImageSize("top", img);
this.setImageSize("left", img);
cellInfo.image[0] = img;
changedValues.push({ row: i, cell: j, cellinfo: cellInfo });
this.ribbon.imageInCell = true;
}
}
}
if (changedValues.length > 0) {
this.download.ssAutoSave({ action: "imageincell", changedValues: changedValues }, this, true);
}
}
actionInsertImage(args) {
let sheetIdx = (args.sheetIndex) ? args.sheetIndex : this.getSheetIndex();
var indexes = (args.indexes) ? args.indexes : this.ssObj.biz.getIndexes();
let sheet = this.ssObj.biz.getActiveSheet();
let cellInfo = (args.cellInfo) ? args.cellInfo : ej.spreadsheet.getCell(indexes[0], indexes[1], sheet);
if (args.origin == "biz") {
this.ssObj.biz.setCell(indexes[0], indexes[1], sheet, cellInfo);
this.download.ssAutoSave({ action: "imageincell", changedValues: [{ row: indexes[0], cell: indexes[1], cellinfo: cellInfo }] }, this, true);
return;
}
let sheetName = this.setSheetNameForInCell(sheet.name);
let img = cellInfo.image.find(x => x.id == args.eventArgs.id);
let ele = document.getElementById(args.eventArgs.id);
if (this.ribbon.imageInCell) {
if (cellInfo.image && cellInfo.image.find(x => x.id.startsWith("biz_image_in_cell"))) {
let prevImgInCell = cellInfo.image.find(x => x.id.startsWith("biz_image_in_cell"));
document.getElementById(prevImgInCell.id).remove();
let prevImgIndex = cellInfo.image.indexOf(prevImgInCell);
if (~prevImgIndex)
cellInfo.image.splice(prevImgIndex, 1);
}
img.id = "biz_image_in_cell_" + sheetName + "_" + indexes[0] + "_" + indexes[1];
let height, width;
height = (this.ssObj.sheets[sheetIdx].rows[indexes[0]].height || 19) - 1;
ele.style.height = height + "px";
img.height = height;
width = (this.ssObj.sheets[sheetIdx].columns[indexes[1]].width || 64) - 1;
ele.style.width = width + "px";
img.width = width;
cellInfo.value = "";
ele.classList.add("biz_image_in_cell");
}
else {
img.id = "spreadsheet_overlay_picture_" + sheetName + "_" + indexes[0] + "_" + indexes[1];
}
this.setImageSize("top", img);
this.setImageSize("left", img);
ele.id = img.id;
cellInfo.image[(cellInfo.image.length) - 1] = img;
this.download.ssAutoSave({ action: "imageincell", changedValues: [{ row: indexes[0], cell: indexes[1], cellinfo: cellInfo }] }, this, true);
let args_undoredo = { indexes: indexes, range: this.ssObj.biz.getRange(), cellInfo: cellInfo, action: 'insertimage', origin: 'biz', sheetIndex: sheetIdx };
(this.ribbon.imageInCell) && this.ssObj.updateUndoRedoCollection({ name: 'bizAction', args: { action: 'bizImageInCell', options: args_undoredo, oldCells: this.oldCellInfo } });
this.oldCellInfo = {};
this.ribbon.imageInCell = true;
this.bizSignalr(args_undoredo);
setTimeout(() => {
const index = this.ssObj.undoredoModule.undoCollection.indexOf(this.ssObj.undoredoModule.undoCollection.filter(x => x.name == "bizAction").pop());
this.ssObj.undoredoModule.undoCollection.splice(index + 1, 1);
}, 500);
}
setImageSize(direction, img) {
if (img[direction] % 1 != 0) {
if (parseInt(img[direction].toString().split(".")[1]) < 50) {
img[direction] = parseInt(img[direction].toString().split(".")[0]);
}
else {
img[direction] = parseInt(img[direction].toString().split(".")[0]) + 1;
}
}
else {
img[direction] = parseInt(img[direction]);
}
}
resizeImagesOnActionResize(args) {
let sheet = this.ssObj.biz.getActiveSheet();
if (args.eventArgs.isCol) {
if (sheet.rows && sheet.rows.length > 0) {
let changedValues = [];
let availableRows = sheet.rows.length;
for (var i = 0; i < availableRows; i++) {
let cellInfo = ej.spreadsheet.getCell(i, args.eventArgs.index, sheet);
if (cellInfo && cellInfo.image && cellInfo.image.length > 0 && cellInfo.image[0].id.startsWith("biz_image_in_cell")) {
document.getElementById(cellInfo.image[0].id).style.width = args.eventArgs.width;
cellInfo.image[0].width = parseInt(args.eventArgs.width);
changedValues.push({ row: i, cell: args.eventArgs.index, cellinfo: cellInfo });
}
}
for (var i = 0; i < availableRows; i++) {
for (var j = args.eventArgs.index + 1; j < sheet.columns.length; j++) {
let cellInfo = ej.spreadsheet.getCell(i, j, sheet);
if (cellInfo && cellInfo.image && cellInfo.image.length > 0 && cellInfo.image[0].id.startsWith("biz_image_in_cell")) {
let previousWidth = cellInfo.image[0].left;
let changedWidth = Number(args.eventArgs.width.split("p")[0]) - Number(args.eventArgs.oldWidth.split("p")[0]);
let changedWidthWithoutDecimal = parseInt(changedWidth.toString().split(".")[0]);
if (changedWidth % 1 != 0) {
if (parseInt(changedWidth.toString().split(".")[1]) > 50) {
if (Math.sign(changedWidth) === -1) {
changedWidth = changedWidthWithoutDecimal - 1;
}
else if (Math.sign(changedWidth) === 1) {
changedWidth = changedWidthWithoutDecimal + 1;
}
}
}
let newWidth = previousWidth + changedWidth;
if (document.getElementById(cellInfo.image[0].id)) {
document.getElementById(cellInfo.image[0].id).style.left = newWidth + 'px';
}
cellInfo.image[0].left = newWidth;
changedValues.push({ row: i, cell: j, cellinfo: cellInfo });
}
}
}
changedValues.length > 0 && this.download.ssAutoSave({ action: "imageincell", changedValues: changedValues }, this, true);
}
}
else {
let changedValues = [];
let remainingRowsImglist = [];
if (sheet.rows[args.eventArgs.index]) {
if (sheet.rows[args.eventArgs.index].cells) {
let currentRowImageslist = sheet.rows[args.eventArgs.index].cells.filter(x => x && x.image).map(x => x && x.image[0]);
currentRowImageslist.forEach(x => {
if ((x && x.id && x.id).startsWith("biz_image_in_cell")) {
document.getElementById(x.id).style.height = parseInt(args.eventArgs.height) - 2 + "px";
let col = parseInt(x.id.split("_")[6]);
let row = args.eventArgs.index;
let cell = ej.spreadsheet.getCell(row, col, sheet);
cell.image[0].height = parseInt(args.eventArgs.height) - 2;
changedValues.push({ row: row, cell: col, cellinfo: cell });
}
});
}
}
for (var i = parseInt(args.eventArgs.index) + 1; i < sheet.rows.length; i++) {
let list = sheet.rows[i] && sheet.rows[i].cells && sheet.rows[i].cells.filter(x => x && x.image).map(x => x && x.image[0]);
(list) && (remainingRowsImglist = remainingRowsImglist.concat(list));
}
remainingRowsImglist.forEach(x => {
if ((x && x.id && x.id).startsWith("biz_image_in_cell")) {
let row = parseInt(x.id.split("_")[5]);
let col = parseInt(x.id.split("_")[6]);
let cell = ej.spreadsheet.getCell(row, col, sheet);
let previousHeight = cell.image[0].top;
let changedHeight = Number(args.eventArgs.height.split("p")[0]) - Number(args.eventArgs.oldHeight.split("p")[0]);
let changedHeightWithoutDecimal = parseInt(changedHeight.toString().split(".")[0]);
if (changedHeight % 1 != 0) {
if (parseInt(changedHeight.toString().split(".")[1]) > 50) {
if (Math.sign(changedHeight) === -1) {
changedHeight = changedHeightWithoutDecimal - 1;
}
else if (Math.sign(changedHeight) === 1) {
changedHeight = changedHeightWithoutDecimal + 1;
}
}
}
let newHeight = previousHeight + changedHeight;
if (document.getElementById(x.id)) {
(document.getElementById(x.id).style.top = newHeight + "px");
}
cell.image[0].top = newHeight;
changedValues.push({ row: row, cell: col, cellinfo: cell });
}
});
changedValues.length > 0 && this.download.ssAutoSave({ action: "imageincell", changedValues: changedValues }, this, true);
}
}
addImageClassToAllImages() {
let elements = document.querySelectorAll("[id^=biz_image_in_cell]");
elements.forEach(ele => ele.classList.add("biz_image_in_cell"));
}
bizSignalr(args) {
var onlineStatus = (window.navigator.onLine ? 'on' : 'off') + 'line';
window.addEventListener('online', () => document.getElementsByClassName('biz-ss-cloudsave')[0].style.display = 'inline-block');
window.addEventListener('online', () => document.getElementsByClassName("biz-ss-cloudoff")[0].style.display = "none");
window.addEventListener('offline', () => document.getElementsByClassName('biz-ss-cloudsave')[0].style.display = 'none');
window.addEventListener('offline', () => document.getElementsByClassName("biz-ss-cloudoff")[0].style.display = "inline-block");
try {
Unibase.Apps.Collaboration.Hubs.UniDocHub.Instance(_appsettings.dochub_url()).
getConnection().
invoke("ChangeDoc", Unibase.Apps.Collaboration.Components.Sheets.Base.Instance().FileId, JSON.stringify(args));
}
catch (_a) {
}
}
refreshHeight() {
var rootHeight = this.element.parentElement.parentElement.offsetHeight;
var rbnHeight = this.ribbonElem.offsetHeight;
this.element.parentElement.style.height = (rootHeight - rbnHeight) + 'px';
}
adjustRowsAndColumnWidth(args) {
return __awaiter(this, void 0, void 0, function* () {
var indexes;
var type;
var newSize;
var oldSize;
var size;
let spltedrange = this.ssObj.getActiveSheet().selectedRange;
if (args.indexes != null) {
indexes = args.indexes;
}
else {
indexes = this.ssObj.biz.getIndexes();
}
if (args.undo) {
let rowstart = args.eventArgs.range[0];
let colstart = args.eventArgs.range[1];
let rowend = args.eventArgs.range[2];
let colend = args.eventArgs.range[3];
if (args.eventArgs.width) {
for (let i = colstart; i <= colend; i++)
yield this.dialogue.setColWidth(args.eventArgs.width[i].width, i);
}
if (args.eventArgs.height) {
for (let j = rowstart; j <= rowend; j++)
yield this.dialogue.setRowHeight(args.eventArgs.height[j].height, j);
}
}
else if (spltedrange.includes(" ") || (indexes[3] - indexes[1] > 0) || (indexes[2] - indexes[0] > 0)) {
if (args.eventArgs.width) {
type = "Column";
newSize = args.eventArgs.width;
oldSize = this.ssObj.getActiveSheet().columns;
size = args.eventArgs.width.replace(/[^0-9]/g, "");
if (parseInt(size) <= 30) {
args.eventArgs.width = '30px';
}
}
if (args.eventArgs.height) {
type = "Row";
newSize = args.eventArgs.height;
oldSize = this.ssObj.getActiveSheet().rows;
size = args.eventArgs.height.replace(/[^0-9]/g, "");
if (parseInt(size) <= 21) {
args.eventArgs.height = '21px';
}
}
this.ssObj.updateUndoRedoCollection({ name: 'bizAction', args: { action: 'resize', eventArgs: { index: args.eventArgs.index, newSize: newSize, type: type, sheetIdx: args.eventArgs.sheetIdx, oldSize: oldSize, range: indexes } } });
var array = spltedrange.split(" ");
for (let i = 0; i < array.length; i++) {
var splitedrange = ej.spreadsheet.getIndexesFromAddress(array[i]);
let rowstart = splitedrange[0];
let colstart = splitedrange[1];
let rowend = splitedrange[2];
let colend = splitedrange[3];
if (args.eventArgs.width) {
for (let i = colstart; i <= colend; i++)
yield this.dialogue.setColWidth(args.eventArgs.width, i);
}
if (args.eventArgs.height) {
for (let j = rowstart; j <= rowend; j++)
yield this.dialogue.setRowHeight(args.eventArgs.height, j);
}
if (!args.indexes) {
args.origin = "biz";
args.indexes = indexes;
this.bizSignalr(args);
this.autoSave(args);
}
}
this.ribbon.imageInCell = true;
setTimeout(() => {
const index = this.ssObj.undoredoModule.undoCollection.indexOf(this.ssObj.undoredoModule.undoCollection.filter(x => x.name == "bizAction").pop());
this.ssObj.undoredoModule.undoCollection.splice(index + 1, 1);
}, 500);
}
});
}
fileNameChange() {
var tempfilename = $(".biz-ss-filename").val();
var data = {
Title: tempfilename,
Id: this.FileId,
Type: "File",
};
Unibase.Apps.Collaboration.DocumentManager.Instance().renameFileTitle(data);
}
renderPopup(callback) {
Unibase.Apps.Collaboration.Components.Documents.Instance().loadForm(0, this.FileId, 0, callback, this.documentGroup);
}
renderMenuBar() {
let containers = document.body.getElementsByClassName('_bizgaze_popup_container');
this.container = containers[containers.length - 1];
this.container.insertBefore(this.util.createElement("div", 'class', 'biz-ss-ribbon'), this.container.firstElementChild);
this.util.appendChildren('DocumentViewer', 0);
this.util.appendChildren('biz-ss-ribbon', 0, this.util.createElement("div", 'class', 'biz-ss-sheetlogo'), this.util.createElement("div", 'class', 'biz-ss-tooolbar'), this.util.createElement("div", 'class', 'biz-ss-userdetails e-ribbon e-collapsed'), this.util.createElement("div", 'class', 'biz-ss-username-wrapper'));
this.util.appendChildren('biz-ss-sheetlogo', 0, this.util.createElement("img", 'class', 'biz-ss-logo'));
this.util.appendChildren('biz-ss-tooolbar', 0, this.util.createElement("div", 'class', 'biz-ss-fileinfo'), this.util.createElement("div", 'class', 'biz-ss-fileshare-wrapper'), this.util.createElement("div", 'class', 'biz-ss-onlineusers'), this.util.createElement("div", 'class', 'biz-ss-toolbarmenu'));
this.util.appendChildren('biz-ss-fileshare-wrapper', 0, this.util.createElement("div", 'class', 'biz-ss-fileshare'));
this.util.appendChildren('biz-ss-onlineusers', 0, this.util.createElement("div", 'class', 'biz-ss-onlineusersintials d-flex flex-row text-white mx-35 pull-right'));
this.util.appendChildren('biz-ss-fileshare', 0, this.util.createElement("button", 'class', 'biz-ss-fileshare-btn'));
this.util.appendChildren('biz-ss-fileinfo', 0, this.util.createElement("input", 'class', 'biz-ss-filename'), this.util.createElement('div', 'class', 'biz-ss-starred'), this.util.createElement('div', 'class', 'biz-ss-autosave'));
this.util.appendChildren('biz-ss-starred', 0, this.util.createElement("span", 'id', 'biz-ss-star'), this.util.createElement("i", 'class', 'fa fa-star-o text-light font-7 biz_ss_star_icon_' + this.FileId));
this.util.appendChildren('biz-ss-autosave', 0, this.util.createElement("img", 'class', 'biz-ss-saveicon biz-ss-cloudsave'), this.util.createElement("img", 'class', 'biz-ss-saveicon biz-ss-cloudoff'), this.util.createElement("div", 'class', 'biz-ss-cloudloading e-icons'), this.util.createElement('div', 'class', 'biz-ss-saving'));
this.util.appendChildren('biz-ss-userdetails', 0, this.util.createElement("div", 'class', 'biz-ss-userinitial'));
this.util.appendChildren('biz-ss-toolbarmenu', 0, this.util.createElement("ul", 'id', 'menu'), this.util.createElement("input", 'class', 'biz-ss-lastedited'));
document.getElementsByClassName("biz-ss-logo")[0].setAttribute('src', 'imgs/BizgazeSheetsIcon.svg');
document.getElementsByClassName("biz-ss-cloudsave")[0].setAttribute('src', 'imgs/cloud-computing.svg');
document.getElementsByClassName("biz-ss-cloudsave")[0].setAttribute('title', 'See document status');
document.getElementsByClassName("biz-ss-cloudoff")[0].setAttribute('src', 'imgs/cloud-off.svg');
document.getElementsByClassName("biz-ss-cloudoff")[0].style.display = "none";
let htmlelement = document.getElementsByClassName('biz-ss-filename')[0];
this.util.addAttributes(htmlelement, {
'value': this.FileName,
'type': 'text'
});
let attributesforautosave = {
'type': 'span'
};
this.userInitial = document.getElementsByClassName("biz-ss-userinitial")[0];
let identity = Unibase.Platform.Membership.Infos.Identity.getCurrentUser();
if (!identity.photoUrl) {
this.userInitial.textContent += identity.name.trim().slice(0, 1);
this.userInitial.classList.add('biz-ss-initial-text');
}
else {
this.userInitial.classList.add('biz-ss-initial-img');
this.userInitial.style.backgroundImage = "url(" + identity.photoUrl + ")";
}
if (!this.newUpload) {
if (this.lastEditedTime != 0) {
if (this.unibaseusername === this.username) {
let htmlelementlastedited = document.getElementsByClassName('biz-ss-lastedited')[0];
this.util.addAttributes(htmlelementlastedited, {
'value': 'last edit was made ' + this.lastEditedTime + ' ' + this.timePeriod + ' ago',
'type': 'span'
});
}
else {
let htmlelementlastedited = document.getElementsByClassName('biz-ss-lastedited')[0];
this.util.addAttributes(htmlelementlastedited, {
'value': 'last edit was made ' + this.lastEditedTime + ' ' + this.timePeriod + ' ago by ' + this.username,
'type': 'span'
});
}
}
else {
if (this.unibaseusername === this.username) {
let htmlelementlastedited = document.getElementsByClassName('biz-ss-lastedited')[0];
this.util.addAttributes(htmlelementlastedited, {
'value': 'last edit was made seconds ago ',
'type': 'span'
});
}
else {
let htmlelementlastedited = document.getElementsByClassName('biz-ss-lastedited')[0];
this.util.addAttributes(htmlelementlastedited, {
'value': 'last edit was made seconds ago by ' + this.username,
'type': 'span'
});
}
}
}
let htmlelementforautosave = document.getElementsByClassName('biz-ss-saving')[0];
this.util.addAttributes(htmlelementforautosave, attributesforautosave);
document.getElementsByClassName('biz-ss-lastedited')[0].setAttribute('disabled', "");
document.getElementsByClassName('biz-ss-saving')[0].style.display = 'none';
document.getElementsByClassName('biz-ss-saving')[0].innerText = 'Saving...';
document.getElementsByClassName("biz-ss-fileshare-btn")[0].style.backgroundColor = "#049503";
var shareBtn = new ej.buttons.Button({ cssClass: `e-primary`, content: `Share`, iconCss: 'biz-ss-fileshare-icon icon-ss-lockopen' });
shareBtn.appendTo(".biz-ss-fileshare-btn");
document.getElementsByClassName("biz-ss-userinitial")[0].setAttribute("title", identity.name.trim());
let color = this.util.colorHash(identity.name.trim());
document.getElementsByClassName("biz-ss-userinitial")[0].style.backgroundColor = color.hex;
this.ribbonElem = document.body.getElementsByClassName('biz-ss-ribbon')[0];
}
editDetails() {
if (this.FileId != 0) {
Unibase.Apps.Collaboration.DocumentManager.Instance().lastEdit(this.FileId).then((response) => {
this.identity = Unibase.Platform.Membership.Infos.Identity.getCurrentUser();
this.unibaseusername = this.identity.name;
this.lastEditedTime = response.result.Lastedittime;
this.username = response.result.LastUpdatedByName;
this.timePeriod = response.result.TimePeriod;
if (this.unibaseusername === this.username && this.lastEditedTime === 0) {
let element = (document.getElementsByClassName('biz-ss-lastedited')[0]);
element.value = "last edit was made seconds ago";
}
else if (this.unibaseusername === this.username && this.lastEditedTime !== 0) {
let element = (document.getElementsByClassName('biz-ss-lastedited')[0]);
element.value = "last edit was made " + this.lastEditedTime + " " + this.timePeriod + " ago";
}
else {
let element = (document.getElementsByClassName('biz-ss-lastedited')[0]);
element.value = "last edit was made seconds ago by " + this.username;
}
});
}
clearInterval(this.intr);
clearInterval(this.intrhour);
this.initSetInterval();
}
windowKeydown(e) {
if (e.keyCode === 116)
(this.fileurl) && (window.location.href = window.origin + "#/documents/" + this.fileurl + "/Excel/0");
this.ctrl_Shift_S(e);
}
keyDown(e) {
let sheet = this.ssObj.biz.getActiveSheet();
let indexes = this.ssObj.biz.getIndexes();
let editDiv = document.getElementById("DocumentViewer_edit");
this.lastKeyEvent = e;
this.cellRowStart = indexes[0];
this.cellColStart = indexes[1];
this.cellRowEnd = indexes[2];
this.cellColEnd = indexes[3];
let sheetIdx = this.getSheetIndex();
let availableRows = sheet.rows.length;
let availableCols = sheet.columns.length;
let indexesToInitiateFormula = [];
let prevFormulaIndexes = [];
let cellInfo = ej.spreadsheet.getCell(this.cellRowStart, this.cellColStart, sheet);
let evtobj = window.event ? event : e;
if (document.getElementById("DocumentViewer_text_align"))
var textAlign = document.getElementById("DocumentViewer_text_align").ej2_instances[0];
if (document.getElementById("DocumentViewer_vertical_align"))
var verticalAlign = document.getElementById("DocumentViewer_vertical_align").ej2_instances[0];
let popup = document.body.querySelector('#' + this.ssObj.element.id + '_ac_popup');
if (editDiv && editDiv.textContent) {
if (this.ssObj.isEdit && editDiv.textContent.startsWith("=")) {
this.isFormula = true;
if (!popup) {
if (!evtobj.ctrlKey && !evtobj.shiftKey) {
if (e.keyCode == 37) {
if (this.prevFormulaRange) {
this.setFormlaActiveCell(this.prevFormulaRange);
prevFormulaIndexes = ej.spreadsheet.getIndexesFromAddress(this.prevFormulaRange);
if (prevFormulaIndexes[3] == 0)
this.prevFormulaRange = this.generateHeaderText(prevFormulaIndexes[1] + 1) + (prevFormulaIndexes[0] + 1);
else
this.prevFormulaRange = this.generateHeaderText(prevFormulaIndexes[1]) + (prevFormulaIndexes[0] + 1);
}
else {
prevFormulaIndexes = this.ssObj.biz.getIndexes();
if (prevFormulaIndexes[3] >= 0) {
let formulaRange = "";
if (prevFormulaIndexes[3] == 0)
formulaRange = this.generateHeaderText(prevFormulaIndexes[1] + 1) + (prevFormulaIndexes[0] + 1);
else
formulaRange = this.generateHeaderText(prevFormulaIndexes[1]) + (prevFormulaIndexes[0] + 1);
this.prevFormulaRange = formulaRange;
}
}
this.formulaActiveCell = this.prevFormulaRange;
}
else if (e.keyCode == 39) {
if (this.prevFormulaRange) {
this.setFormlaActiveCell(this.prevFormulaRange);
prevFormulaIndexes = ej.spreadsheet.getIndexesFromAddress(this.prevFormulaRange);
this.prevFormulaRange = this.generateHeaderText(prevFormulaIndexes[1] + 2) + (prevFormulaIndexes[0] + 1);
}
else {
prevFormulaIndexes = this.ssObj.biz.getIndexes();
let formulaRange = this.generateHeaderText(prevFormulaIndexes[1] + 2) + (prevFormulaIndexes[0] + 1);
this.prevFormulaRange = formulaRange;
}
this.formulaActiveCell = this.prevFormulaRange;
}
else if (e.keyCode == 38) {
if (this.prevFormulaRange) {
this.setFormlaActiveCell(this.prevFormulaRange);
prevFormulaIndexes = ej.spreadsheet.getIndexesFromAddress(this.prevFormulaRange);
if (prevFormulaIndexes[2] == 0)
this.prevFormulaRange = this.generateHeaderText(prevFormulaIndexes[1] + 1) + (prevFormulaIndexes[0] + 1);
else
this.prevFormulaRange = this.generateHeaderText(prevFormulaIndexes[1] + 1) + (prevFormulaIndexes[0]);
}
else {
prevFormulaIndexes = this.ssObj.biz.getIndexes();
let formulaRange = "";
if (prevFormulaIndexes[2] == 0)
formulaRange = this.generateHeaderText(prevFormulaIndexes[1] + 1) + (prevFormulaIndexes[0] + 1);
else
formulaRange = this.generateHeaderText(prevFormulaIndexes[1] + 1) + (prevFormulaIndexes[0]);
this.prevFormulaRange = formulaRange;
}
this.formulaActiveCell = this.prevFormulaRange;
}
else if (e.keyCode == 40) {
if (this.prevFormulaRange) {
this.setFormlaActiveCell(this.prevFormulaRange);
prevFormulaIndexes = ej.spreadsheet.getIndexesFromAddress(this.prevFormulaRange);
this.prevFormulaRange = this.generateHeaderText(prevFormulaIndexes[1] + 1) + (prevFormulaIndexes[0] + 2);
}
else {
prevFormulaIndexes = this.ssObj.biz.getIndexes();
let formulaRange = this.generateHeaderText(prevFormulaIndexes[1] + 1) + (prevFormulaIndexes[0] + 2);
this.prevFormulaRange = formulaRange;
}
this.formulaActiveCell = this.prevFormulaRange;
}
}
if ((!evtobj.ctrlKey && evtobj.shiftKey)) {
if (e.keyCode == 40) {
if (this.prevFormulaRange) {
prevFormulaIndexes = this.swapRange(ej.spreadsheet.getIndexesFromAddress(this.prevFormulaRange));
if (this.formulaActiveCell == this.generateHeaderText(prevFormulaIndexes[1] + 1) + (prevFormulaIndexes[0] + 1) || this.formulaActiveCell == this.generateHeaderText(prevFormulaIndexes[3] + 1) + (prevFormulaIndexes[0] + 1))
this.prevFormulaRange = this.generateHeaderText(prevFormulaIndexes[1] + 1) + (prevFormulaIndexes[0] + 1) + ":" + this.generateHeaderText(prevFormulaIndexes[3] + 1) + (prevFormulaIndexes[2] + 2);
else
this.prevFormulaRange = this.generateHeaderText(prevFormulaIndexes[1] + 1) + (prevFormulaIndexes[0] + 2) + ":" + this.generateHeaderText(prevFormulaIndexes[3] + 1) + (prevFormulaIndexes[2] + 1);
}
else {
this.formulaActiveCell = sheet.activeCell;
this.prevFormulaRange = this.formulaActiveCell + ":" + this.generateHeaderText(this.cellColEnd + 1) + (this.cellRowEnd + 2);
}
}
else if (e.keyCode == 39) {
if (this.prevFormulaRange) {
prevFormulaIndexes = this.swapRange(ej.spreadsheet.getIndexesFromAddress(this.prevFormulaRange));
if (this.formulaActiveCell == this.generateHeaderText(prevFormulaIndexes[1] + 1) + (prevFormulaIndexes[0] + 1) || this.formulaActiveCell == this.generateHeaderText(prevFormulaIndexes[1] + 1) + (prevFormulaIndexes[2] + 1))
this.prevFormulaRange = this.generateHeaderText(prevFormulaIndexes[1] + 1) + (prevFormulaIndexes[0] + 1) + ":" + this.generateHeaderText(prevFormulaIndexes[3] + 2) + (prevFormulaIndexes[2] + 1);
else
this.prevFormulaRange = this.generateHeaderText(prevFormulaIndexes[1] + 2) + (prevFormulaIndexes[0] + 1) + ":" + this.generateHeaderText(prevFormulaIndexes[3] + 1) + (prevFormulaIndexes[2] + 1);
}
else {
this.formulaActiveCell = sheet.activeCell;
this.prevFormulaRange = this.formulaActiveCell + ":" + this.generateHeaderText(this.cellColEnd + 2) + (this.cellRowEnd + 1);
}
}
else if (e.keyCode == 38) {
if (this.prevFormulaRange) {
prevFormulaIndexes = this.swapRange(ej.spreadsheet.getIndexesFromAddress(this.prevFormulaRange));
if ((this.formulaActiveCell == this.generateHeaderText(prevFormulaIndexes[1] + 1) + (prevFormulaIndexes[0] + 1) || this.formulaActiveCell == this.generateHeaderText(prevFormulaIndexes[3] + 1) + (prevFormulaIndexes[0] + 1)) && (prevFormulaIndexes[2] - prevFormulaIndexes[0] > 0))
this.prevFormulaRange = this.generateHeaderText(prevFormulaIndexes[1] + 1) + (prevFormulaIndexes[0] + 1) + ":" + this.generateHeaderText(prevFormulaIndexes[3] + 1) + (prevFormulaIndexes[2]);
else
this.prevFormulaRange = this.generateHeaderText(prevFormulaIndexes[1] + 1) + (prevFormulaIndexes[0]) + ":" + this.generateHeaderText(prevFormulaIndexes[3] + 1) + (prevFormulaIndexes[2] + 1);
}
else {
this.formulaActiveCell = sheet.activeCell;
this.prevFormulaRange = this.generateHeaderText(this.cellColStart + 1) + (this.cellRowStart) + ":" + this.generateHeaderText(this.cellColEnd + 1) + (this.cellRowEnd + 1);
}
}
else if (e.keyCode == 37) {
if (this.prevFormulaRange) {
prevFormulaIndexes = this.swapRange(ej.spreadsheet.getIndexesFromAddress(this.prevFormulaRange));
if (this.formulaActiveCell == this.generateHeaderText(prevFormulaIndexes[1] + 1) + (prevFormulaIndexes[0] + 1) || this.formulaActiveCell == this.generateHeaderText(prevFormulaIndexes[1] + 1) + (prevFormulaIndexes[2] + 1))
this.prevFormulaRange = this.generateHeaderText(prevFormulaIndexes[1] + 1) + (prevFormulaIndexes[0] + 1) + ":" + this.generateHeaderText(prevFormulaIndexes[3]) + (prevFormulaIndexes[2] + 1);
else
this.prevFormulaRange = this.generateHeaderText(prevFormulaIndexes[1]) + (prevFormulaIndexes[0] + 1) + ":" + this.generateHeaderText(prevFormulaIndexes[3] + 1) + (prevFormulaIndexes[2] + 1);
}
else {
this.formulaActiveCell = sheet.activeCell;
this.prevFormulaRange = this.generateHeaderText(this.cellColStart) + (this.cellRowStart + 1) + ":" + this.generateHeaderText(this.cellColEnd + 1) + (this.cellRowEnd + 1);
}
}
}
if ((evtobj.ctrlKey && evtobj.shiftKey)) {
let newIndexes;
let activeCellIndexes;
if (e.keyCode == 40) {
if (this.prevFormulaRange) {
prevFormulaIndexes = this.swapRange(ej.spreadsheet.getIndexesFromAddress(this.prevFormulaRange));
let args = {
evtobj: evtobj, indexes: prevFormulaIndexes, activeCell: this.formulaActiveCell, availableRows: availableRows,
availableCols: availableCols
};
indexesToInitiateFormula = this.getIndexesOnCtrlShifArrows(args);
activeCellIndexes = ej.spreadsheet.getIndexesFromAddress(this.formulaActiveCell);
newIndexes = this.swapRange([activeCellIndexes[0] + 1, activeCellIndexes[1] + 1, indexesToInitiateFormula[1], indexesToInitiateFormula[0]]);
this.prevFormulaRange = this.generateHeaderText(newIndexes[1]) + (newIndexes[0]) + ":" + this.generateHeaderText(newIndexes[3]) + (newIndexes[2]);
}
else {
this.formulaActiveCell = sheet.activeCell;
let args = {
evtobj: evtobj, indexes: indexes, activeCell: this.formulaActiveCell, availableRows: availableRows,
availableCols: availableCols
};
indexesToInitiateFormula = this.getIndexesOnCtrlShifArrows(args);
let formulaRange = this.generateHeaderText(this.cellColStart + 1) + (this.cellRowStart + 1) + ":" + this.generateHeaderText(indexesToInitiateFormula[0]) + (indexesToInitiateFormula[1]);
this.prevFormulaRange = formulaRange;
}
}
else if (e.keyCode == 39) {
if (this.prevFormulaRange) {
prevFormulaIndexes = this.swapRange(ej.spreadsheet.getIndexesFromAddress(this.prevFormulaRange));
let args = {
evtobj: evtobj, indexes: prevFormulaIndexes, activeCell: this.formulaActiveCell, availableRows: availableRows,
availableCols: availableCols
};
indexesToInitiateFormula = this.getIndexesOnCtrlShifArrows(args);
activeCellIndexes = ej.spreadsheet.getIndexesFromAddress(this.formulaActiveCell);
newIndexes = this.swapRange([activeCellIndexes[0] + 1, activeCellIndexes[1] + 1, indexesToInitiateFormula[1], indexesToInitiateFormula[0]]);
this.prevFormulaRange = this.generateHeaderText(newIndexes[1]) + (newIndexes[0]) + ":" + this.generateHeaderText(newIndexes[3]) + (newIndexes[2]);
}
else {
this.formulaActiveCell = sheet.activeCell;
prevFormulaIndexes = this.ssObj.biz.getIndexes();
let args = {
evtobj: evtobj, indexes: prevFormulaIndexes, activeCell: this.formulaActiveCell, availableRows: availableRows,
availableCols: availableCols
};
indexesToInitiateFormula = this.getIndexesOnCtrlShifArrows(args);
let formulaRange = this.generateHeaderText(this.cellColStart + 1) + (this.cellRowStart + 1) + ":" + this.generateHeaderText(indexesToInitiateFormula[0]) + (indexesToInitiateFormula[1]);
this.prevFormulaRange = formulaRange;
}
}
else if (e.keyCode == 38) {
if (this.prevFormulaRange) {
prevFormulaIndexes = this.swapRange(ej.spreadsheet.getIndexesFromAddress(this.prevFormulaRange));
let args = {
evtobj: evtobj, indexes: prevFormulaIndexes, activeCell: this.formulaActiveCell, availableRows: availableRows,
availableCols: availableCols
};
indexesToInitiateFormula = this.getIndexesOnCtrlShifArrows(args);
activeCellIndexes = ej.spreadsheet.getIndexesFromAddress(this.formulaActiveCell);
newIndexes = this.swapRange([activeCellIndexes[0] + 1, activeCellIndexes[1] + 1, indexesToInitiateFormula[1], indexesToInitiateFormula[0]]);
this.prevFormulaRange = this.generateHeaderText(newIndexes[1]) + (newIndexes[0]) + ":" + this.generateHeaderText(newIndexes[3]) + (newIndexes[2]);
}
else {
this.formulaActiveCell = sheet.activeCell;
prevFormulaIndexes = this.ssObj.biz.getIndexes();
if (prevFormulaIndexes[0] > 0) {
let args = {
evtobj: evtobj, indexes: prevFormulaIndexes, activeCell: this.formulaActiveCell, availableRows: availableRows,
availableCols: availableCols
};
indexesToInitiateFormula = this.getIndexesOnCtrlShifArrows(args);
let formulaRange = this.generateHeaderText(this.cellColStart + 1) + (this.cellRowStart + 1) + ":" + this.generateHeaderText(indexesToInitiateFormula[0]) + (indexesToInitiateFormula[1]);
this.prevFormulaRange = formulaRange;
}
}
}
else if (e.keyCode == 37) {
if (this.prevFormulaRange) {
prevFormulaIndexes = this.swapRange(ej.spreadsheet.getIndexesFromAddress(this.prevFormulaRange));
let args = {
evtobj: evtobj, indexes: prevFormulaIndexes, activeCell: this.formulaActiveCell, availableRows: availableRows,
availableCols: availableCols
};
indexesToInitiateFormula = this.getIndexesOnCtrlShifArrows(args);
activeCellIndexes = ej.spreadsheet.getIndexesFromAddress(this.formulaActiveCell);
newIndexes = this.swapRange([activeCellIndexes[0] + 1, activeCellIndexes[1] + 1, indexesToInitiateFormula[1], indexesToInitiateFormula[0]]);
this.prevFormulaRange = this.generateHeaderText(newIndexes[1]) + (newIndexes[0]) + ":" + this.generateHeaderText(newIndexes[3]) + (newIndexes[2]);
}
else {
this.formulaActiveCell = sheet.activeCell;
prevFormulaIndexes = this.ssObj.biz.getIndexes();
if (prevFormulaIndexes[2] > 0) {
let args = {
evtobj: evtobj, indexes: prevFormulaIndexes, activeCell: this.formulaActiveCell, availableRows: availableRows,
availableCols: availableCols
};
indexesToInitiateFormula = this.getIndexesOnCtrlShifArrows(args);
let formulaRange = this.generateHeaderText(this.cellColStart + 1) + (this.cellRowStart + 1) + ":" + this.generateHeaderText(indexesToInitiateFormula[0]) + (indexesToInitiateFormula[1]);
this.prevFormulaRange = formulaRange;
}
}
}
}
if ((e.keyCode == 37 || e.keyCode == 38 || e.keyCode == 39 || e.keyCode == 40) && this.isFormula) {
if (editDiv.textContent.includes("(")) {
let formula = editDiv.textContent.split("(");
editDiv.textContent = formula[0] + "(" + this.prevFormulaRange;
}
else
editDiv.textContent = "=" + this.prevFormulaRange;
let col = { formulaSheetIdx: sheetIdx, name: "initiateFormulaReference", range: this.prevFormulaRange };
this.ssObj.selectionModule.initiateFormulaSelection(col);
setTimeout(() => {
let range = document.createRange();
var el = this.ssObj.element.querySelector('#' + this.ssObj.element.id + '_edit');
;
var selection = window.getSelection();
range = document.createRange();
selection.removeAllRanges();
range.selectNodeContents(el);
range.collapse(false);
selection.addRange(range);
el.focus();
}, 0);
}
}
}
else {
this.isFormula = false;
}
}
else {
this.isFormula = false;
}
if (evtobj.ctrlKey && evtobj.shiftKey && !this.isFormula && !this.ssObj.isEdit) {
if (evtobj.keyCode == 76) {
e.preventDefault();
e.stopImmediatePropagation();
textAlign.trigger('select', { item: textAlign.items[0] });
}
if (evtobj.keyCode == 69) {
e.preventDefault();
e.stopImmediatePropagation();
textAlign.trigger('select', { item: textAlign.items[1] });
}
if (evtobj.keyCode == 82) {
e.preventDefault();
textAlign.trigger('select', { item: textAlign.items[2] });
}
if (evtobj.keyCode == 84) {
e.preventDefault();
e.stopImmediatePropagation();
verticalAlign.trigger('select', { item: verticalAlign.items[0] });
}
if (evtobj.keyCode == 77) {
e.preventDefault();
verticalAlign.trigger('select', { item: verticalAlign.items[1] });
}
if (evtobj.keyCode == 66) {
e.preventDefault();
e.stopImmediatePropagation();
verticalAlign.trigger('select', { item: verticalAlign.items[2] });
}
}
if (e.keyCode == 113) {
if (this.ssObj.isEdit)
this.f2Edit = true;
}
if (e.keyCode == 113 && e.shiftKey) {
e.preventDefault();
this.formatpainter.insertNote();
}
if (this.ssObj.isEdit) {
if (!this.isFormula && !this.f2Edit && !evtobj.shiftKey && !evtobj.ctrlKey && (e.keyCode == 37 || e.keyCode == 38 || e.keyCode == 39 || e.keyCode == 40)) {
var val = document.getElementsByClassName("e-spreadsheet-edit")[0].innerText;
if (cellInfo == null) {
cellInfo = {};
}
cellInfo["value"] = val;
this.ssObj.biz.setCell(this.cellRowStart, this.cellColStart, sheet, cellInfo);
this.ssObj.endEdit();
this.f2Edit = false;
}
}
if (!evtobj.shiftKey && evtobj.ctrlKey && (e.keyCode == 68 || e.keyCode == 82 || e.keyCode == 13)) {
e.preventDefault();
let args = {
origin: 'biz', action: 'shortcuts', range: indexes, e: e, evtobj: evtobj, sheet: sheet, sheetIndex: this.getSheetIndex()
};
this.ssObj.updateUndoRedoCollection({ name: 'bizAction', args: { action: 'shortcuts', options: args, oldCells: this.getCellsFromIndexes(args.range) } });
this.shortcuts(args);
Unibase.Apps.Collaboration.Components.Sheets.Base.Instance().bizSignalr(args);
this.download.ssAutoSave({ action: 'shortcuts' }, this, true);
}
this.clearFindReplace();
}
viewOnlyKeyDown(e) {
let sheet = this.ssObj.biz.getActiveSheet();
let indexes = this.ssObj.biz.getIndexes();
let availableRows = sheet.rows.length;
let availableCols = sheet.columns.length;
let evtobj = window.event ? event : e;
let activeCell = sheet.activeCell;
let sheetIdx = this.getSheetIndex();
let selectedIndex = [];
let fullscreenDialog = document.getElementById("menubar-fullscreen-container");
if (evtobj.ctrlKey && evtobj.shiftKey && !this.isFormula && !this.ssObj.isEdit) {
let keyPressArgs = {
evtobj: evtobj, indexes: indexes, activeCell: activeCell, availableCols: availableCols,
availableRows: availableRows
};
selectedIndex = this.getIndexesOnCtrlShifArrows(keyPressArgs);
}
if (fullscreenDialog && e.keyCode == 27)
this.dialogue.hideSsMenubarFullscreenDialog();
if (evtobj.ctrlKey && e.keyCode == 65 && !this.ssObj.isEdit)
this.ctrlA_Function();
if (e.keyCode == 122) {
e.preventDefault();
this.openFullscreen(this.container);
}
if (evtobj.keyCode == 37 || evtobj.keyCode == 39 || evtobj.keyCode == 38 || evtobj.keyCode == 40) {
this.ssObj.selectRange(this.ssObj.sheets[sheetIdx].activeCell + ":" + this.generateHeaderText(selectedIndex[0]) + (selectedIndex[1]));
}
this.ctrl_Shift_S(e);
}
ctrl_Shift_S(e) {
if (e.keyCode == 83 && ((e.ctrlKey && !e.shiftKey) || (e.ctrlKey && e.shiftKey))) {
e.preventDefault();
e.stopImmediatePropagation();
}
}
ctrlA_Function() {
if (!this.isCtrlA) {
this.isCtrlA = true;
for (var i = this.cellRowStart; i <= this.cellRowEnd; i++) {
for (var j = this.cellColStart; j <= this.cellColEnd; j++)
this.checksForCellsWithValues([i, j]);
}
if ((this.selectedIndexes[0] !== this.cellRowStart || this.selectedIndexes[1] !== this.cellColStart || this.selectedIndexes[2] !== this.cellRowEnd || this.selectedIndexes[3] !== this.cellColEnd)) {
this.ssObj.selectRange(this.generateHeaderText(this.selectedIndexes[1] + 1) + (this.selectedIndexes[0] + 1) + ":" + this.generateHeaderText(this.selectedIndexes[3] + 1) + (this.selectedIndexes[2] + 1));
this.isCtrlA = true;
}
else
this.ctrlA_Function();
this.checkedIndexes = [];
this.selectedIndexes = [null, null, null, null];
}
else {
this.isCtrlA = false;
var elem = document.body.querySelector('.e-selectall');
var pos = elem.getBoundingClientRect();
this.ssObj.selectionModule.mouseDownHandler({ target: elem, shiftKey: false, ctrlKey: false, type: 'mousedown', clientY: pos.top, clientX: pos.left });
this.checkedIndexes = [];
this.selectedIndexes = [null, null, null, null];
}
}
getIndexesOnCtrlShifArrows(args) {
let nextCellInfo;
let cellInfo;
let selectedIndex = [];
let sheet = this.ssObj.biz.getActiveSheet();
this.cellRowStart = args.indexes[0];
this.cellColStart = args.indexes[1];
this.cellRowEnd = args.indexes[2];
this.cellColEnd = args.indexes[3];
if (args.evtobj.keyCode == 40) {
args.evtobj.preventDefault();
args.evtobj.stopImmediatePropagation();
if (args.activeCell === this.generateHeaderText(this.cellColStart + 1) + (this.cellRowStart + 1)) {
nextCellInfo = ej.spreadsheet.getCell(this.cellRowEnd + 1, this.cellColStart, sheet);
for (var i = this.cellRowEnd + 1; i < 10000000; i++) {
for (var j = this.cellColStart; j <= this.cellColStart; j++) {
cellInfo = ej.spreadsheet.getCell(i, j, sheet);
if (j == this.cellColStart) {
if (((this.checkCellObjHasValue(nextCellInfo)) && !(this.checkCellObjHasValue(cellInfo)) || (i >= args.availableRows || j >= args.availableCols))) {
selectedIndex.push(this.cellColEnd + 1, i, i, j, this.cellRowEnd, this.cellColEnd);
i = 10000000;
}
else if ((!(this.checkCellObjHasValue(nextCellInfo)) && (this.checkCellObjHasValue(cellInfo))) || (i >= args.availableRows || j >= args.availableCols)) {
selectedIndex.push(this.cellColEnd + 1, i + 1, i, j, this.cellRowEnd, this.cellColEnd);
i = 10000000;
}
}
}
}
}
else if (args.activeCell === this.generateHeaderText(this.cellColStart + 1) + (this.cellRowEnd + 1)) {
nextCellInfo = ej.spreadsheet.getCell(this.cellRowStart + 1, this.cellColStart, sheet);
for (var i = this.cellRowStart + 1; i < 10000000; i++) {
for (var j = this.cellColStart; j <= this.cellColStart; j++) {
cellInfo = ej.spreadsheet.getCell(i, j, sheet);
if (((this.checkCellObjHasValue(nextCellInfo)) && !(this.checkCellObjHasValue(cellInfo)) || (i >= args.availableRows || j >= args.availableCols))) {
selectedIndex.push(this.cellColEnd + 1, i, i, j, this.cellRowEnd, this.cellColEnd);
i = 10000000;
}
else if ((!(this.checkCellObjHasValue(nextCellInfo)) && (this.checkCellObjHasValue(cellInfo))) || (i >= args.availableRows || j >= args.availableCols)) {
selectedIndex.push(this.cellColEnd + 1, i + 1, i, j, this.cellRowEnd, this.cellColEnd);
i = 10000000;
}
}
}
}
else if (args.activeCell === this.generateHeaderText(this.cellColEnd + 1) + (this.cellRowEnd + 1)) {
nextCellInfo = ej.spreadsheet.getCell(this.cellRowStart + 1, this.cellColEnd, sheet);
for (var i = this.cellRowStart + 1; i < 10000000; i++) {
for (var j = this.cellColEnd; j <= this.cellColEnd; j++) {
cellInfo = ej.spreadsheet.getCell(i, j, sheet);
if (((this.checkCellObjHasValue(nextCellInfo)) && !(this.checkCellObjHasValue(cellInfo)) || (i >= args.availableRows || j >= args.availableCols))) {
selectedIndex.push(this.cellColStart + 1, i, i, j, this.cellRowEnd, this.cellColEnd);
i = 10000000;
}
else if ((!(this.checkCellObjHasValue(nextCellInfo)) && (this.checkCellObjHasValue(cellInfo))) || (i >= args.availableRows || j >= args.availableCols)) {
selectedIndex.push(this.cellColStart + 1, i + 1, i, j, this.cellRowEnd, this.cellColEnd);
i = 10000000;
}
}
}
}
else {
nextCellInfo = ej.spreadsheet.getCell(this.cellRowEnd + 1, this.cellColEnd, sheet);
for (let i = this.cellRowEnd + 1; i < 10000000; i++) {
for (let j = this.cellColEnd; j <= this.cellColEnd; j++) {
cellInfo = ej.spreadsheet.getCell(i, j, sheet);
if (j == this.cellColEnd) {
if (((this.checkCellObjHasValue(nextCellInfo)) && !(this.checkCellObjHasValue(cellInfo))) || (i >= args.availableRows || j >= args.availableCols)) {
selectedIndex.push(this.cellColStart + 1, i, i, j, this.cellRowEnd, this.cellColEnd);
i = 10000000;
}
else if ((!(this.checkCellObjHasValue(nextCellInfo)) && (this.checkCellObjHasValue(cellInfo))) || (i >= args.availableRows || j >= args.availableCols)) {
selectedIndex.push(this.cellColStart + 1, i + 1, i, j, this.cellRowEnd, this.cellColEnd);
i = 10000000;
}
}
}
}
}
}
else if (args.evtobj.keyCode == 38) {
args.evtobj.preventDefault();
args.evtobj.stopImmediatePropagation();
if (args.activeCell === this.generateHeaderText(this.cellColStart + 1) + (this.cellRowStart + 1)) {
nextCellInfo = ej.spreadsheet.getCell(this.cellRowEnd - 1, this.cellColStart, sheet);
for (let i = this.cellRowEnd - 1; i < 1000000000; i--) {
for (let j = this.cellColStart; j <= this.cellColStart; j++) {
cellInfo = ej.spreadsheet.getCell(i, j, sheet);
if (j == this.cellColStart) {
if (((this.checkCellObjHasValue(nextCellInfo)) && !(this.checkCellObjHasValue(cellInfo))) || (i >= args.availableRows || j >= args.availableCols)) {
selectedIndex.push(this.cellColEnd + 1, i + 2, i, j, this.cellRowStart, this.cellColEnd);
i = 1000000001;
}
else if ((!(this.checkCellObjHasValue(nextCellInfo)) && (this.checkCellObjHasValue(cellInfo))) || (i >= args.availableRows || j >= args.availableCols)) {
selectedIndex.push(this.cellColEnd + 1, i + 1, i, j, this.cellRowStart, this.cellColEnd);
i = 1000000001;
}
else if (i == -1) {
selectedIndex.push(this.cellColEnd + 1, 1);
i = 1000000001;
}
}
}
}
}
else if (args.activeCell == this.generateHeaderText(this.cellColStart + 1) + (this.cellRowEnd + 1)) {
nextCellInfo = ej.spreadsheet.getCell(this.cellRowStart - 1, this.cellColStart, sheet);
for (let i = this.cellRowStart - 1; i < 1000000000; i--) {
for (let j = this.cellColStart; j <= this.cellColStart; j++) {
cellInfo = ej.spreadsheet.getCell(i, j, sheet);
if (j == this.cellColStart) {
if (((this.checkCellObjHasValue(nextCellInfo)) && !(this.checkCellObjHasValue(cellInfo))) || (i >= args.availableRows || j >= args.availableCols)) {
selectedIndex.push(this.cellColEnd + 1, i + 2, i, j, this.cellRowStart, this.cellColEnd);
i = 1000000001;
}
else if ((!(this.checkCellObjHasValue(nextCellInfo)) && (this.checkCellObjHasValue(cellInfo))) || (i >= args.availableRows || j >= args.availableCols)) {
selectedIndex.push(this.cellColEnd + 1, i + 1, i, j, this.cellRowStart, this.cellColEnd);
i = 1000000001;
}
else if (i == -1) {
selectedIndex.push(this.cellColEnd + 1, 1);
i = 1000000001;
}
}
}
}
}
else if (args.activeCell == this.generateHeaderText(this.cellColEnd + 1) + (this.cellRowEnd + 1)) {
nextCellInfo = ej.spreadsheet.getCell(this.cellRowStart - 1, this.cellColEnd, sheet);
for (let i = this.cellRowStart - 1; i < 1000000000; i--) {
for (let j = this.cellColEnd; j <= this.cellColEnd; j++) {
cellInfo = ej.spreadsheet.getCell(i, j, sheet);
if (j == this.cellColEnd) {
if (((this.checkCellObjHasValue(nextCellInfo)) && !(this.checkCellObjHasValue(cellInfo))) || (i >= args.availableRows || j >= args.availableCols)) {
selectedIndex.push(this.cellColStart + 1, i + 2, i, j, this.cellRowStart, this.cellColEnd);
i = 1000000001;
}
else if ((!(this.checkCellObjHasValue(nextCellInfo)) && (this.checkCellObjHasValue(cellInfo))) || (i >= args.availableRows || j >= args.availableCols)) {
selectedIndex.push(this.cellColStart + 1, i + 1, i, j, this.cellRowStart, this.cellColEnd);
i = 1000000001;
}
else if (i == -1) {
selectedIndex.push(this.cellColStart + 1, 1);
i = 1000000001;
}
}
}
}
}
else {
nextCellInfo = ej.spreadsheet.getCell(this.cellRowEnd - 1, this.cellColEnd, sheet);
for (let i = this.cellRowEnd - 1; i < 1000000000; i--) {
for (let j = this.cellColEnd; j <= this.cellColEnd; j++) {
cellInfo = ej.spreadsheet.getCell(i, j, sheet);
if (j == this.cellColEnd) {
if (((this.checkCellObjHasValue(nextCellInfo)) && !(this.checkCellObjHasValue(cellInfo))) || (i >= args.availableRows || j >= args.availableCols)) {
selectedIndex.push(this.cellColStart + 1, i + 2, i, j, this.cellRowStart, this.cellColEnd);
i = 1000000001;
}
else if ((!(this.checkCellObjHasValue(nextCellInfo)) && (this.checkCellObjHasValue(cellInfo))) || (i >= args.availableRows || j >= args.availableCols)) {
selectedIndex.push(this.cellColStart + 1, i + 1, i, j, this.cellRowStart, this.cellColEnd);
i = 1000000001;
}
else if (i == -1) {
selectedIndex.push(this.cellColStart + 1, 1);
i = 1000000001;
}
}
}
}
}
}
else if (args.evtobj.keyCode == 39) {
args.evtobj.preventDefault();
args.evtobj.stopImmediatePropagation();
if (args.activeCell === this.generateHeaderText(this.cellColStart + 1) + (this.cellRowStart + 1)) {
nextCellInfo = ej.spreadsheet.getCell(this.cellRowStart, this.cellColEnd + 1, sheet);
for (let i = this.cellRowStart; i <= this.cellRowStart; i++) {
for (let j = this.cellColEnd + 1; j < 1000000000 + 1; j++) {
cellInfo = ej.spreadsheet.getCell(i, j, sheet);
if (((this.checkCellObjHasValue(nextCellInfo)) && !(this.checkCellObjHasValue(cellInfo))) || (i >= args.availableRows || j >= args.availableCols)) {
selectedIndex.push(j, this.cellRowEnd + 1, this.cellRowStart, this.cellColStart, i, j);
j = 1000000001;
}
else if ((!(this.checkCellObjHasValue(nextCellInfo)) && (this.checkCellObjHasValue(cellInfo))) || (i >= args.availableRows || j >= args.availableCols)) {
selectedIndex.push(j + 1, this.cellRowEnd + 1, this.cellRowStart, this.cellColStart, i, j);
j = 1000000001;
}
}
}
}
else if (args.activeCell === this.generateHeaderText(this.cellColStart + 1) + (this.cellRowEnd + 1)) {
nextCellInfo = ej.spreadsheet.getCell(this.cellRowEnd, this.cellColEnd + 1, sheet);
for (let i = this.cellRowEnd; i <= this.cellRowEnd; i++) {
for (let j = this.cellColEnd + 1; j < 1000000000 + 1; j++) {
cellInfo = ej.spreadsheet.getCell(i, j, sheet);
if (((this.checkCellObjHasValue(nextCellInfo)) && !(this.checkCellObjHasValue(cellInfo))) || (i >= args.availableRows || j >= args.availableCols)) {
selectedIndex.push(j, this.cellRowStart + 1, this.cellRowStart, this.cellColStart, i, j);
j = 1000000001;
}
else if ((!(this.checkCellObjHasValue(nextCellInfo)) && (this.checkCellObjHasValue(cellInfo))) || (i >= args.availableRows || j >= args.availableCols)) {
selectedIndex.push(j + 1, this.cellRowStart + 1, this.cellRowStart, this.cellColStart, i, j);
j = 1000000001;
}
}
}
}
else if (args.activeCell === this.generateHeaderText(this.cellColEnd + 1) + (this.cellRowEnd + 1)) {
nextCellInfo = ej.spreadsheet.getCell(this.cellRowEnd, this.cellColStart + 1, sheet);
for (let i = this.cellRowEnd; i <= this.cellRowEnd; i++) {
for (let j = this.cellColStart + 1; j < 1000000000 + 1; j++) {
cellInfo = ej.spreadsheet.getCell(i, j, sheet);
if (((this.checkCellObjHasValue(nextCellInfo)) && !(this.checkCellObjHasValue(cellInfo))) || (i >= args.availableRows || j >= args.availableCols)) {
selectedIndex.push(j, this.cellRowStart + 1, this.cellRowStart, this.cellColStart, i, j);
j = 1000000001;
}
else if ((!(this.checkCellObjHasValue(nextCellInfo)) && (this.checkCellObjHasValue(cellInfo))) || (i >= args.availableRows || j >= args.availableCols)) {
selectedIndex.push(j + 1, this.cellRowStart + 1, this.cellRowStart, this.cellColStart, i, j);
j = 1000000001;
}
}
}
}
else {
nextCellInfo = ej.spreadsheet.getCell(this.cellRowStart, this.cellColStart + 1, sheet);
for (let i = this.cellRowStart; i <= this.cellRowStart; i++) {
for (let j = this.cellColStart + 1; j < 1000000000 + 1; j++) {
cellInfo = ej.spreadsheet.getCell(i, j, sheet);
if (((this.checkCellObjHasValue(nextCellInfo)) && !(this.checkCellObjHasValue(cellInfo))) || (i >= args.availableRows || j >= args.availableCols)) {
selectedIndex.push(j, this.cellRowEnd + 1, this.cellRowStart, this.cellColStart, i, j);
j = 1000000001;
}
else if ((!(this.checkCellObjHasValue(nextCellInfo)) && (this.checkCellObjHasValue(cellInfo))) || (i >= args.availableRows || j >= args.availableCols)) {
selectedIndex.push(j + 1, this.cellRowEnd + 1, this.cellRowStart, this.cellColStart, i, j);
j = 1000000001;
}
}
}
}
}
else if (args.evtobj.keyCode == 37) {
args.evtobj.preventDefault();
args.evtobj.stopImmediatePropagation();
if (args.activeCell === this.generateHeaderText(this.cellColStart + 1) + (this.cellRowStart + 1)) {
nextCellInfo = ej.spreadsheet.getCell(this.cellRowStart, this.cellColEnd - 1, sheet);
for (let i = this.cellRowStart; i <= this.cellRowStart; i++) {
for (let j = this.cellColEnd - 1; j < 1000000000; j--) {
cellInfo = ej.spreadsheet.getCell(i, j, sheet);
if (((this.checkCellObjHasValue(nextCellInfo)) && !(this.checkCellObjHasValue(cellInfo))) || (i >= args.availableRows || j >= args.availableCols)) {
selectedIndex.push(j + 2, this.cellRowEnd + 1, i, j = -1 ? 0 : j, this.cellRowStart, this.cellColStart + 1);
j = 1000000001;
}
else if ((!(this.checkCellObjHasValue(nextCellInfo)) && (this.checkCellObjHasValue(cellInfo))) || (i >= args.availableRows || j >= args.availableCols)) {
selectedIndex.push(j + 1, this.cellRowEnd + 1, i, j = -1 ? 0 : j, this.cellRowStart, this.cellColStart + 1);
j = 1000000001;
}
else if (j == -1) {
selectedIndex.push(1, this.cellRowEnd + 1);
j = 1000000001;
}
}
}
}
else if (args.activeCell === this.generateHeaderText(this.cellColStart + 1) + (this.cellRowEnd + 1)) {
nextCellInfo = ej.spreadsheet.getCell(this.cellRowEnd, this.cellColEnd - 1, sheet);
for (let i = this.cellRowEnd; i <= this.cellRowEnd; i++) {
for (let j = this.cellColEnd - 1; j < 1000000000; j--) {
cellInfo = ej.spreadsheet.getCell(i, j, sheet);
if (((this.checkCellObjHasValue(nextCellInfo)) && !(this.checkCellObjHasValue(cellInfo))) || (i >= args.availableRows || j >= args.availableCols)) {
selectedIndex.push(j + 2, this.cellRowStart + 1, i, j = -1 ? 0 : j, this.cellRowStart, this.cellColStart + 1);
j = 1000000001;
}
else if ((!(this.checkCellObjHasValue(nextCellInfo)) && (this.checkCellObjHasValue(cellInfo))) || (i >= args.availableRows || j >= args.availableCols)) {
selectedIndex.push(j + 1, this.cellRowStart + 1, i, j = -1 ? 0 : j, this.cellRowStart, this.cellColStart + 1);
j = 1000000001;
}
else if (j == -1) {
selectedIndex.push(1, this.cellRowStart + 1);
j = 1000000001;
}
}
}
}
else if (args.activeCell === this.generateHeaderText(this.cellColEnd + 1) + (this.cellRowEnd + 1)) {
nextCellInfo = ej.spreadsheet.getCell(this.cellRowEnd, this.cellColStart - 1, sheet);
for (let i = this.cellRowEnd; i <= this.cellRowEnd; i++) {
for (let j = this.cellColStart - 1; j < 1000000000; j--) {
cellInfo = ej.spreadsheet.getCell(i, j, sheet);
if (((this.checkCellObjHasValue(nextCellInfo)) && !(this.checkCellObjHasValue(cellInfo))) || (i >= args.availableRows || j >= args.availableCols)) {
selectedIndex.push(j + 2, this.cellRowStart + 1, i, j = -1 ? 0 : j, this.cellRowStart, this.cellColStart + 1);
j = 1000000001;
}
else if ((!(this.checkCellObjHasValue(nextCellInfo)) && (this.checkCellObjHasValue(cellInfo))) || (i >= args.availableRows || j >= args.availableCols)) {
selectedIndex.push(j + 1, this.cellRowStart + 1, i, j = -1 ? 0 : j, this.cellRowStart, this.cellColStart + 1);
j = 1000000001;
}
else if (j == -1) {
selectedIndex.push(1, this.cellRowStart + 1);
j = 1000000001;
}
}
}
}
else {
nextCellInfo = ej.spreadsheet.getCell(this.cellRowStart, this.cellColStart - 1, sheet);
for (let i = this.cellRowStart; i <= this.cellRowStart; i++) {
for (let j = this.cellColStart - 1; j < 1000000000; j--) {
cellInfo = ej.spreadsheet.getCell(i, j, sheet);
if (((this.checkCellObjHasValue(nextCellInfo)) && !(this.checkCellObjHasValue(cellInfo))) || (i >= args.availableRows || j >= args.availableCols)) {
selectedIndex.push(j + 2, this.cellRowEnd + 1, i, j = -1 ? 0 : j, this.cellRowStart, this.cellColStart + 1);
j = 1000000001;
}
else if ((!(this.checkCellObjHasValue(nextCellInfo)) && (this.checkCellObjHasValue(cellInfo))) || (i >= args.availableRows || j >= args.availableCols)) {
selectedIndex.push(j + 1, this.cellRowEnd + 1, i, j = -1 ? 0 : j, this.cellRowStart, this.cellColStart + 1);
j = 1000000001;
}
else if (j == -1) {
selectedIndex.push(1, this.cellRowEnd + 1);
j = 1000000001;
}
}
}
}
}
return selectedIndex;
}
checksForCellsWithValues(indexes) {
if (this.checkedIndexes.findIndex((x) => x[0] == indexes[0] && x[1] == indexes[1]) === -1) {
this.checkedIndexes.push(indexes);
let sheet = this.ssObj.getActiveSheet();
let cellInfoDown = ej.spreadsheet.getCell(indexes[0] + 1, indexes[1], sheet);
let cellInfoUp = ej.spreadsheet.getCell(indexes[0] - 1, indexes[1], sheet);
let cellInfoLeft = ej.spreadsheet.getCell(indexes[0], indexes[1] - 1, sheet);
let cellInfoRight = ej.spreadsheet.getCell(indexes[0], indexes[1] + 1, sheet);
if (this.selectedIndexes[0] == null || this.selectedIndexes[2] == null) {
this.selectedIndexes[0] = indexes[0];
this.selectedIndexes[2] = indexes[0];
}
if (this.selectedIndexes[1] == null || this.selectedIndexes[3] == null) {
this.selectedIndexes[1] = indexes[1];
this.selectedIndexes[3] = indexes[1];
}
if (this.selectedIndexes[0] > indexes[0])
this.selectedIndexes[0] = indexes[0];
if (this.selectedIndexes[2] < indexes[0])
this.selectedIndexes[2] = indexes[0];
if (this.selectedIndexes[1] > indexes[1])
this.selectedIndexes[1] = indexes[1];
if (this.selectedIndexes[3] < indexes[1])
this.selectedIndexes[3] = indexes[1];
if (this.checkCellObjHasValue(cellInfoDown))
this.checksForCellsWithValues([indexes[0] + 1, indexes[1]]);
if (this.checkCellObjHasValue(cellInfoUp))
this.checksForCellsWithValues([indexes[0] - 1, indexes[1]]);
if (this.checkCellObjHasValue(cellInfoLeft))
this.checksForCellsWithValues([indexes[0], indexes[1] - 1]);
if (this.checkCellObjHasValue(cellInfoRight))
this.checksForCellsWithValues([indexes[0], indexes[1] + 1]);
}
}
setFormlaActiveCell(prevFormula) {
if (prevFormula.includes(":")) {
let singeRange = prevFormula.split(":")[0];
this.formulaActiveCell = singeRange;
}
else
this.formulaActiveCell = prevFormula;
}
keyUp(e) {
if (e.keyCode == 113) {
if (this.ssObj.isEdit)
this.f2Edit = true;
}
}
bodyDblClick(e) {
let importDialog = document.getElementsByClassName("biz-ss-import-dialog");
if (this.ssObj.isEdit)
this.f2Edit = true;
if (importDialog.length > 0) {
if (e.target.classList.contains("copyto_folder")) {
debugger;
let folderid = Number(e.target.id.split("_")[2]);
let foldername = e.target.firstElementChild.textContent.trim();
Unibase.Apps.Collaboration.Components.Sheets.Ribbon.Instance().getFolderItems(folderid, foldername, true);
}
}
}
shortcuts(args) {
var range = args.range;
this.cellRowStart = range[0];
this.cellColStart = range[1];
this.cellRowEnd = range[2];
this.cellColEnd = range[3];
var cellInfo = ej.spreadsheet.getCell(this.cellRowStart, this.cellColStart, args.sheet);
if (args.evtobj.ctrlKey && args.e.keyCode == 13 && !args.evtobj.shiftKey) {
args.e.preventDefault();
args.e.stopImmediatePropagation();
args.e.stopPropagation();
for (var i = this.cellRowStart; i <= this.cellRowEnd; i++) {
for (var j = this.cellColStart; j <= this.cellColEnd; j++)
this.ssObj.biz.setCell(i, j, args.sheet, cellInfo);
}
}
}
scroll(selectedIndex) {
let sheet = this.ssObj.getActiveSheet();
let freezeRow = this.ssObj.frozenRowCount(sheet);
let freezeCol = this.ssObj.frozenColCount(sheet);
var cellPosition = ej.spreadsheet.getCellPosition(sheet, [selectedIndex[2], selectedIndex[3]], freezeRow, freezeCol);
let verticalElem = this.ssObj.element.querySelector('.e-main-panel');
if (!(cellPosition.top > verticalElem.scrollTop && cellPosition.top < verticalElem.scrollTop + verticalElem.offsetHeight) ||
verticalElem.offsetHeight + verticalElem.scrollTop < ej.spreadsheet.getCellPosition(this.ssObj.getActiveSheet(), [selectedIndex[2], selectedIndex[3]], freezeRow, freezeCol).top) {
verticalElem.scrollTop = cellPosition.top - verticalElem.offsetHeight + 20;
}
cellPosition = ej.spreadsheet.getCellPosition(sheet, [selectedIndex[4], selectedIndex[5]], freezeRow, freezeCol);
let horizontalElem = this.ssObj.getScrollElement();
if (!(cellPosition.left > horizontalElem.scrollLeft && cellPosition.left < horizontalElem.scrollLeft + horizontalElem.offsetWidth) || horizontalElem.offsetWidth + horizontalElem.scrollLeft < ej.spreadsheet.getCellPosition(this.ssObj.getActiveSheet(), [selectedIndex[4], selectedIndex[5]], freezeRow, freezeCol).left) {
horizontalElem.scrollLeft = cellPosition.left - horizontalElem.offsetWidth + 20;
}
}
openFullscreen(elem) {
if (elem.requestFullscreen) {
elem.requestFullscreen();
}
else if (elem.webkitRequestFullscreen) {
elem.webkitRequestFullscreen();
}
else if (elem.msRequestFullscreen) {
elem.msRequestFullscreen();
}
}
setHeightOnFullScreenChange() {
let sheetPannelElement = document.getElementById("DocumentViewer_sheet_panel");
var menubarHeight = this.element.parentElement.previousElementSibling.offsetHeight;
var footerHeight = this.element.parentElement.nextElementSibling.offsetHeight;
var toolbarHeight = sheetPannelElement.previousElementSibling.previousElementSibling.offsetHeight;
var sheetTabPannelHeight = sheetPannelElement.nextElementSibling.offsetHeight;
var formulaPannelHeight = sheetPannelElement.previousElementSibling.offsetHeight;
var totalHeight = menubarHeight + footerHeight + formulaPannelHeight + sheetTabPannelHeight + toolbarHeight;
this.element.parentElement.style.height = (window.innerHeight - menubarHeight - footerHeight) + 'px';
sheetPannelElement.style.height = (window.innerHeight - totalHeight) + 'px';
}
setViewonly() {
this.ssObj["allowEditing"] = false;
this.ssObj["allowResizing"] = false;
this.ssObj["enableContextMenu"] = false;
this.ssObj["allowAutoFill"] = false;
document.getElementsByClassName("biz-ss-fileshare-icon")[0].classList.remove("icon-ss-lockopen");
document.getElementsByClassName("biz-ss-fileshare-icon")[0].classList.add("icon-ss-lockclose");
this.ribbon.ssMenubarObj.enableItems(["Import", "Make A Copy", "Edit", "Insert", "Format", "Formulas",
"Data", "Freeze Panes", "Freeze Rows", "Freeze Columns", "Tools"], false);
document.getElementById("DocumentViewer_sheet_tab_panel").firstElementChild.setAttribute("disabled", "true");
document.getElementById("DocumentViewer_ribbon").classList.add("biz-ss-toolbar-wrapper");
document.getElementById("biz-ss-viewonly-btn").addEventListener("click", () => {
if (!(document.getElementById("viewonly-container"))) {
this.viewOnlyDialog = new ej.popups.Dialog({
header: "",
content: `
you can only view this document. To make changes, ask the owner for edit access
`,
width: '240px',
height: '135px',
buttons: [{
click: this.processAccessDailog.bind(this),
buttonModel: { content: 'Request Edit Access', isPrimary: true }
}],
position: { X: 12, Y: 95 },
cssClass: "biz-ss-viewonly-dialog",
});
this.viewOnlyDialog.appendTo('#dialog');
}
});
}
getElem() {
var div = document.createElement('button');
div.setAttribute("id", "biz-ss-viewonly-btn");
let button = new ej.buttons.Button();
button.appendTo(div);
div.innerHTML = 'View Only';
return div;
}
initialLoad() {
let getRibbonItemsFn = this.ssObj.ribbonModule.getRibbonItems.bind(this.ssObj.ribbonModule);
this.ssObj.ribbonModule.getRibbonItems = () => {
let items = getRibbonItemsFn();
let home = items[0].content;
let item = { template: this.getElem(), cssClass: 'biz-ss-viewonly-wrapper', id: this.ssObj.element.id + '_viewonly', tooltipText: "View Only" };
home.splice(items[0].content.length, 0, item);
return items;
};
}
performBizUndoRedo(args, isForce) {
let undoredoModule = this.ssObj.undoredoModule;
let data;
if (!isForce) {
data = args.isUndo ? undoredoModule.undoCollection[undoredoModule.undoCollection.length - 1] : undoredoModule.redoCollection[undoredoModule.redoCollection.length - 1];
}
else {
data = args.isUndo ? undoredoModule.undoCollection.pop() : undoredoModule.redoCollection.pop();
}
if (data && data.action == "resize") {
var k = data;
data = [];
data.args = k;
}
if (!(data && data.args)) {
return;
}
switch (data.args.action) {
case 'autofill':
if (args.isUndo) {
let oldCells = JSON.parse(JSON.stringify(data.args.oldCells));
this.setCellObjects(data.args.options.fillRange, oldCells);
}
else {
this.autofill.applyAutofill(data.args.options, data.args.direction);
}
break;
case 'formatpaint':
if (args.isUndo) {
let oldCells = JSON.parse(JSON.stringify(data.args.oldCells));
this.setCellObjects(data.args.options.destIndexes, oldCells);
}
else {
this.formatpainter.applyFormatPaint(data.args.options.srcRange, data.args.options.destRange, data.args.options.srcSheetIndex);
}
break;
case 'trim':
if (args.isUndo) {
let oldCells = JSON.parse(JSON.stringify(data.args.oldCells));
this.setCellObjects(data.args.range, oldCells);
}
else {
this.ribbon.processTrim(data.args.range);
}
break;
case 'removeDuplicates':
if (args.isUndo) {
let oldCells = JSON.parse(JSON.stringify(data.args.oldCells));
this.setCellObjects(data.args.options.indexes, oldCells);
}
else {
this.dialogue.removeDuplicate(data.args.options.range, data.args.options.header, data.args.options.colSelected);
}
break;
case 'splittext':
if (args.isUndo) {
let oldCells = JSON.parse(JSON.stringify(data.args.oldCells));
this.setCellObjects(data.args.range, oldCells, data.args.stValues);
}
else {
this.formatpainter.applySplitText(data.args.range, data.args.stValues);
}
break;
case 'shiftcells':
if (args.isUndo) {
let dragCells = JSON.parse(JSON.stringify(data.args.dragCells));
let dropCells = JSON.parse(JSON.stringify(data.args.dropCells));
this.setCellObjects(data.args.options.ranges, dragCells);
this.setCellObjects(data.args.options.dropRange, dropCells);
}
else {
let dragCells = JSON.parse(JSON.stringify(data.args.dragCells));
this.setCellObjects(data.args.options.ranges, []);
this.setCellObjects(data.args.options.dropRange, dragCells);
}
break;
case 'deleteshiftup':
if (args.isUndo) {
let oldCells = JSON.parse(JSON.stringify(data.args.oldCells));
this.formatpainter.applyInsertShiftDown(data.args.range, data);
this.setCellObjects(data.args.indexes, oldCells);
}
else {
this.formatpainter.applyDeleteShiftUp(data.args.range, data);
}
break;
case 'deleteshiftleft':
if (args.isUndo) {
let oldCells = JSON.parse(JSON.stringify(data.args.oldCells));
this.formatpainter.applyInsertShiftRight(data.args.range);
this.setCellObjects(data.args.indexes, oldCells);
}
else {
this.formatpainter.applyDeleteShiftLeft(data.args.range);
}
break;
case 'insertshiftdown':
if (args.isUndo) {
this.formatpainter.applyDeleteShiftUp(data.args.range, data);
}
else {
this.formatpainter.applyInsertShiftDown(data.args.range, data);
}
break;
case 'insertshiftright':
if (args.isUndo) {
this.formatpainter.applyDeleteShiftLeft(data.args.range);
}
else {
this.formatpainter.applyInsertShiftRight(data.args.range);
}
break;
case 'shortcuts':
if (args.isUndo) {
let oldCells = [...data.args.oldCells];
this.setCellObjects(data.args.options.range, oldCells);
}
else {
this.shortcuts(data.args.options);
}
break;
case 'bizImageInCell':
if (args.isUndo) {
let oldCells = data.args.oldCells;
oldCells ? "" : oldCells = {};
let idxs = data.args.options.indexes;
this.setCellObjects(idxs, [oldCells]);
this.download.ssAutoSave({ action: "imageincell", changedValues: [{ row: idxs[0], cell: idxs[1], cellinfo: oldCells }] }, this, true);
}
else {
this.actionInsertImage(data.args.options);
}
break;
case 'resize':
if (args.isUndo) {
let oldData;
if (data.args.eventArgs.type === "Column") {
oldData = { args: { undo: true, eventArgs: { index: data.args.eventArgs.index, width: data.args.eventArgs.oldSize, sheetIdx: data.args.eventArgs.sheetIdx, oldWidth: data.args.eventArgs.newSize, range: data.args.eventArgs.range }, action: 'resize', name: 'actionComplete' } };
}
if (data.args.eventArgs.type === "Row") {
oldData = { args: { undo: true, eventArgs: { index: data.args.eventArgs.index, height: data.args.eventArgs.oldSize, sheetIdx: data.args.eventArgs.sheetIdx, oldHeight: data.args.eventArgs.newSize, range: data.args.eventArgs.range }, action: 'resize', name: 'actionComplete' } };
}
this.adjustRowsAndColumnWidth(oldData.args);
}
else {
this.adjustRowsAndColumnWidth(data.args);
}
break;
case 'spell':
if (args.isUndo) {
let oldCells = [...data.args.oldCells];
this.setCellObjects(data.args.options.indexes, oldCells);
}
else {
this.adjustRowsAndColumnWidth(data.args);
}
break;
}
let args1 = { origin: 'biz', action: 'undoredo', sheetIndex: this.getSheetIndex(), isUndo: args.isUndo };
!isForce && Unibase.Apps.Collaboration.Components.Sheets.Base.Instance().bizSignalr(args1);
}
addFormatsToToolbar() {
let getRibbonItemsFn = this.ssObj.ribbonModule.getRibbonItems.bind(this.ssObj.ribbonModule);
this.ssObj.ribbonModule.getRibbonItems = () => {
let items = getRibbonItemsFn();
let home = items[0].content;
let item = [{ prefixIcon: "icon-ss-currency", cssClass: 'biz-ss-currencyformat', id: this.ssObj.element.id + '_currencyformat', tooltipText: "Format as currency" },
{ prefixIcon: "icon-ss-percentage", cssClass: 'biz-ss-percentageformat', id: this.ssObj.element.id + '_percentageformat', tooltipText: "Format as percentage" },
{ template: this.ribbon.getFormulaBtnDdb(), id: this.ssObj.element.id + '_sumformula', tooltipText: "Sum Function", }];
home.splice(8, 0, item[0], item[1]);
home.splice(items[0].content.length - 1, 0, item[2]);
let sortingBtn = home.find(x => x.id == "DocumentViewer_sorting").template.ej2_instances[0];
sortingBtn.addEventListener('select', this.sortingBtnSelect.bind(this));
sortingBtn.addEventListener('beforeItemRender', this.sortingBtnBfRender.bind(this));
let sort = items[0].content.find(x => x.id == "DocumentViewer_sorting");
sort.template.firstElementChild.classList.remove('e-sort-filter-icon');
sort.template.firstElementChild.classList.add('biz-sort-filter-icon');
return items;
};
}
sortingBtnBfRender(args) {
if (args.item.text === "Filter") {
if (this.ssObj.filterModule.filterCollection.has(this.getSheetIndex())) {
var child = args.element.firstElementChild;
args.element.innerHTML = child.outerHTML + "Remove Filter";
args.element.firstElementChild.classList.remove("e-filter-apply");
args.element.firstElementChild.classList.add("e-filter-clear");
}
}
}
sortingBtnBeforeOpen(args) {
if (this.ssObj.filterModule.filterCollection.has(this.getSheetIndex())) {
(args.element.lastElementChild.classList.contains("e-disabled")) && args.element.lastElementChild.classList.remove("e-disabled");
}
else {
!(args.element.lastElementChild.classList.contains("e-disabled")) && args.element.lastElementChild.classList.add("e-disabled");
}
}
sortingBtnSelect(args) {
if (this.ssObj.filterCollection) {
if (args.item.text === "Filter") {
setTimeout(() => {
if (!this.ssObj.filterModule.filterCollection.has(this.getSheetIndex())) {
this.sortingBtn = document.getElementById("DocumentViewer_sorting");
this.sortingBtn.firstElementChild.style.color = "";
}
}, 500);
}
}
}
processAccessDailog() {
this.viewOnlyDialog.hide();
this.viewOnlyDialog.destroy();
this.renderAccessDailog();
}
renderAccessDailog() {
this.requestAccessObj = new ej.popups.Dialog({
header: "Ask the owner to access for edit",
content: `
`,
width: '400px',
buttons: [{
click: this.hideRequestAccess.bind(this),
buttonModel: { content: 'cancel' }
},
{
click: this.hideRequestAccess.bind(this),
buttonModel: { content: 'send', isPrimary: true }
}],
cssClass: "biz-ss-requestaccess-dialog",
target: this.container,
isModal: true,
});
this.requestAccessObj.appendTo('#dialog');
var textareaObj = new ej.inputs.TextBox({
placeholder: 'Enter your message',
floatLabelType: 'Auto',
rows: 4,
});
textareaObj.appendTo('#requestaccess-textarea');
textareaObj.element.setAttribute("rows", "4");
}
hideRequestAccess() {
this.requestAccessObj.hide();
this.requestAccessObj.destroy();
}
lettersToNumber(letters) {
let base = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', i, j, result = 0;
for (i = 0, j = letters.length - 1; i < letters.length; i += 1, j -= 1) {
result += Math.pow(base.length, j) * (base.indexOf(letters[i]) + 1);
}
return result;
}
static Instance() {
if (this.instance === undefined) {
this.instance = new Base();
}
return this.instance;
}
}
Sheets.Base = Base;
})(Sheets = Components.Sheets || (Components.Sheets = {}));
})(Components = Collaboration.Components || (Collaboration.Components = {}));
})(Collaboration = Apps.Collaboration || (Apps.Collaboration = {}));
})(Apps = Unibase.Apps || (Unibase.Apps = {}));
})(Unibase || (Unibase = {}));