This commit is contained in:
2023-03-11 17:30:20 +00:00
commit b6c4e025bc
5124 changed files with 1153349 additions and 0 deletions
@@ -0,0 +1,846 @@
var Unibase;
(function (Unibase) {
let Apps;
(function (Apps) {
let Collaboration;
(function (Collaboration) {
let Components;
(function (Components) {
let Sheets;
(function (Sheets) {
class Autofill {
constructor() {
this.hederText = {};
this.colType = { String: "string", Number: "number", Custom: "custom", Formula: "formula", Time: "time", LongDate: "longdate", ShortDate: "shortdate", Scientific: "scientific", Fraction: "fraction", Text: "text", General: "general", Accounting: "accounting", Currency: "currency", Percentage: "percentage", Date: "date", DateTime: "datetime" };
this.customList = [
["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
];
this.UC = {
uniqueOBracket: String.fromCharCode(129),
uniqueCBracket: String.fromCharCode(130),
uniqueCSeparator: String.fromCharCode(131),
uniqueCOperator: String.fromCharCode(132),
uniquePOperator: String.fromCharCode(133),
uniqueSOperator: String.fromCharCode(134),
uniqueMOperator: String.fromCharCode(135),
uniqueDOperator: String.fromCharCode(136),
uniqueModOperator: String.fromCharCode(137),
uniqueConcateOperator: String.fromCharCode(138),
uniqueEqualOperator: String.fromCharCode(139),
uniqueExpOperator: String.fromCharCode(140),
uniqueGTOperator: String.fromCharCode(141),
uniqueLTOperator: String.fromCharCode(142)
};
}
init(base) {
this.base = base;
this.ssObj = base.ssObj;
this.initProp();
}
initProp() {
this.beforeSelectFn = this.beforeSelect.bind(this);
this.base.ssObj.addEventListener("beforeSelect", this.beforeSelectFn);
this.selectFn = this.selected.bind(this);
this.base.ssObj.addEventListener("select", this.selectFn);
this.actionCompleteFn = this.updateAutofill.bind(this);
this.base.ssObj.addEventListener("actionComplete", this.actionCompleteFn);
this.createdFn = this.created.bind(this);
this.base.ssObj.addEventListener("created", this.createdFn);
this.dataBoundFn = this.dataBound.bind(this);
this.base.ssObj.addEventListener("dataBound", this.dataBoundFn);
this.cellEditFn = this.cellEdit.bind(this);
this.base.ssObj.addEventListener("cellEditing", this.cellEditFn);
this.cellSaveFn = this.cellSave.bind(this);
this.base.ssObj.addEventListener("cellSave", this.cellSaveFn);
this.base.ssObj.on("activeSheetChanged", this.updateAutofill, this);
this.base.ssObj.on("mouseDown", this.mouseDown, this);
}
destroy() {
this.base.ssObj.removeEventListener("beforeSelect", this.beforeSelectFn);
this.base.ssObj.removeEventListener("select", this.selectFn);
this.base.ssObj.removeEventListener("actionComplete", this.actionCompleteFn);
this.base.ssObj.removeEventListener("created", this.createdFn);
this.base.ssObj.removeEventListener("dataBound", this.dataBoundFn);
this.base.ssObj.removeEventListener("cellEditing", this.cellEditFn);
this.base.ssObj.removeEventListener("cellSave", this.cellSaveFn);
this.base.ssObj.off("activeSheetChanged", this.updateAutofill);
this.base.ssObj.on("mouseDown", this.mouseDown, this);
ej.base.EventHandler.remove(this.base.ssObj.element, 'mouseup', this.mouseUp);
ej.base.EventHandler.remove(this.base.ssObj.element, 'keydown', this.keypress);
ej.base.EventHandler.remove(this.base.ssObj.element, 'dblclick', this.dblClick);
}
cellEdit() {
this.hideAutofill();
}
cellSave() {
this.updateAutofill();
}
dataBound() {
this.updateAutofill();
}
createBorders() {
if (!this.base.ssObj.element.getElementsByClassName('biz-af-bdr')[0]) {
let content = this.base.ssObj.element.getElementsByClassName('e-sheet-content')[0];
this.bdrAF = content.appendChild(ej.base.createElement('div', { className: 'biz-af-bdr' }));
}
}
hideBorders() {
if (this.bdrAF) {
this.bdrAF.style.display = 'none';
}
}
showBorders() {
if (this.bdrAF) {
this.bdrAF.style.display = '';
}
}
updateBorderDirection(hideDirecton) {
this.bdrAF.style.borderRightWidth = '1px';
this.bdrAF.style.borderLeftWidth = '1px';
this.bdrAF.style.borderTopWidth = '1px';
this.bdrAF.style.borderBottomWidth = '1px';
this.bdrAF.style["border" + hideDirecton + "Width"] = '0px';
}
mouseDown(e) {
if (e.target.classList.contains('biz-autofill')) {
this.isDrag = true;
ej.base.EventHandler.add(this.base.ssObj.element, 'mousemove', this.mouseMoveHandler, this);
this.x = e.clientX;
this.y = e.clientY;
this.indexes = this.base.ssObj.biz.getIndexes();
this.createBorders();
let sel = this.base.ssObj.element.getElementsByClassName('e-selection')[0];
let activecell = this.base.ssObj.element.getElementsByClassName('e-active-cell')[0];
this.selection = sel.classList.contains('e-hide') ? activecell : sel;
this.selOffset = this.selection.getBoundingClientRect();
this.parentOffset = this.selection.offsetParent.getBoundingClientRect();
this.left = parseInt(this.selection.style.left);
this.top = parseInt(this.selection.style.top);
}
}
mouseUp(e) {
this.isDrag = false;
ej.base.EventHandler.remove(this.base.ssObj.element, 'mousemove', this.mouseMoveHandler);
if (this.direction != undefined) {
this.autoFill();
}
this.direction = undefined;
this.hideBorders();
this.isDragged = false;
this.prevTarget = undefined;
}
createAutofill() {
if (!this.base.ssObj.element.getElementsByClassName('biz-autofill')[0]) {
this.element = document.createElement('div');
this.element.classList.add('biz-autofill');
let content = this.base.ssObj.element.getElementsByClassName('e-sheet-content')[0];
content && content.appendChild(this.element);
}
this.element.classList.remove('biz-hide');
}
updateAutofill() {
if (!this.base.ssObj.isEdit) {
this.positionAutofill();
}
else {
this.hideAutofill();
}
}
dblClick() {
setTimeout(() => {
this.hideAutofill();
}, 1);
}
positionAutofill() {
setTimeout(() => {
this.createAutofill();
let selection = this.base.ssObj.element.getElementsByClassName('e-selection')[0];
let activecell = this.base.ssObj.element.getElementsByClassName('e-active-cell')[0];
if (selection && !selection.classList.contains('e-hide')) {
activecell = selection;
}
(this.element && activecell) && (this.element.style.top = parseInt(activecell.style.top) + parseInt(activecell.style.height) - 6 + 'px');
(this.element && activecell) && (this.element.style.left = parseInt(activecell.style.left) + parseInt(activecell.style.width) + -5 + 'px');
}, 10);
}
hideAutofill() {
let ele = this.base.ssObj.element.getElementsByClassName('biz-autofill')[0];
if (ele) {
ele.classList.add('biz-hide');
}
}
mouseMoveHandler(e) {
e.preventDefault();
let x = e.clientX;
let y = e.clientY;
if (e.target === this.prevTarget) {
return;
}
let tr = ej.base.closest(e.target, 'tr');
let td = ej.base.closest(e.target, '.e-cell');
if (!this.isDragged) {
this.showBorders();
}
this.isDragged = true;
if (!tr || !td) {
return;
}
let colIdx = parseInt(td.getAttribute('aria-colindex')) - 1;
let rowIdx = parseInt(tr.getAttribute('aria-rowindex')) - 1;
if (this.indexes[0] <= rowIdx && this.indexes[2] >= rowIdx && this.indexes[1] <= colIdx && this.indexes[3] >= colIdx) {
this.hideBorders();
return;
}
let tdOffset = td.getBoundingClientRect();
let px = 'px';
this.showBorders();
let sheet = this.base.ssObj.biz.getActiveSheet();
let freezeRow = this.base.ssObj.frozenRowCount(sheet);
let freezeCol = this.base.ssObj.frozenColCount(sheet);
let left;
let width;
let top;
let height;
switch (true) {
case this.indexes[3] < colIdx && this.indexes[0] - rowIdx < colIdx - this.indexes[3] && rowIdx - this.indexes[2] < colIdx - this.indexes[3]:
this.direction = "right";
left = this.left + this.selOffset.width;
width = ej.spreadsheet.getCellPosition(sheet, [rowIdx - 1, colIdx + 1], freezeRow, freezeCol).left - (this.left + this.selOffset.width);
this.updateBorderDirection('Left');
this.bdrAF.style.top = this.top + px;
this.bdrAF.style.left = left + px;
this.bdrAF.style.height = this.selOffset.height + px;
this.bdrAF.style.width = width + px;
this.fIndexes = [this.indexes[0], this.indexes[3] + 1, this.indexes[2], colIdx];
this.startCell = { rowIndex: this.indexes[0], colIndex: this.indexes[1] };
this.endCell = { rowIndex: this.indexes[2], colIndex: colIdx };
break;
case this.indexes[1] > colIdx && this.indexes[0] - rowIdx <= this.indexes[1] - colIdx && rowIdx - this.indexes[2] < this.indexes[1] - colIdx:
this.direction = "left";
left = ej.spreadsheet.getCellPosition(sheet, [rowIdx - 1, colIdx], freezeRow, freezeCol).left;
width = this.left - left;
this.updateBorderDirection('Right');
this.bdrAF.style.top = this.top + px;
this.bdrAF.style.left = left + px;
this.bdrAF.style.height = this.selOffset.height + px;
this.bdrAF.style.width = width + px;
this.fIndexes = [this.indexes[0], colIdx, this.indexes[2], this.indexes[3] - 1];
this.startCell = { rowIndex: this.indexes[0], colIndex: colIdx };
this.endCell = { rowIndex: this.indexes[2], colIndex: this.indexes[3] };
break;
case this.indexes[0] > rowIdx:
this.direction = "up";
top = ej.spreadsheet.getCellPosition(sheet, [rowIdx, colIdx - 1], freezeRow, freezeCol).top;
height = this.top - top;
this.updateBorderDirection('Bottom');
this.bdrAF.style.top = top + px;
this.bdrAF.style.left = this.left + px;
this.bdrAF.style.height = height + px;
this.bdrAF.style.width = this.selOffset.width + px;
this.fIndexes = [rowIdx, this.indexes[1], this.indexes[0] - 1, this.indexes[3]];
this.startCell = { rowIndex: rowIdx, colIndex: this.indexes[1] };
this.endCell = { rowIndex: this.indexes[2], colIndex: this.indexes[3] };
break;
case this.indexes[2] < rowIdx:
this.direction = "down";
top = this.top + this.selOffset.height;
height = ej.spreadsheet.getCellPosition(sheet, [rowIdx + 1, colIdx - 1], freezeRow, freezeCol).top - (this.top + this.selOffset.height);
this.updateBorderDirection('Top');
this.bdrAF.style.top = top + px;
this.bdrAF.style.left = this.left + px;
this.bdrAF.style.height = height + px;
this.bdrAF.style.width = this.selOffset.width + px;
this.fIndexes = [this.indexes[2] + 1, this.indexes[1], rowIdx, this.indexes[3]];
this.startCell = { rowIndex: this.indexes[0], colIndex: this.indexes[1] };
this.endCell = { rowIndex: rowIdx, colIndex: this.indexes[3] };
break;
default:
this.direction = undefined;
break;
}
this.prevTarget = e.target;
this.drawAutoFill(e);
}
drawAutoFill(e) {
}
selected(e) {
this.range = e.range;
this.updateAutofill();
}
beforeSelect(e) {
if (this.isDrag) {
e.cancel = true;
}
this.hideAutofill();
}
created() {
ej.base.EventHandler.add(this.base.ssObj.element, 'mouseup', this.mouseUp, this);
ej.base.EventHandler.add(this.base.ssObj.element, 'keydown', this.keypress, this);
ej.base.EventHandler.add(this.base.ssObj.element, 'dblclick', this.dblClick, this);
}
keypress() {
this.updateAutofill();
}
autoFill() {
let options = {};
let sheetIdx = this.base.getSheetIndex();
options.sheetIdx = sheetIdx;
options.dataRange = this.indexes;
options.fillRange = this.fIndexes;
this.base.ssObj.updateUndoRedoCollection({ name: 'bizAction', args: { action: 'autofill', options: options, direction: this.direction, oldCells: this.base.getCellsFromIndexes(options.fillRange) } });
this.applyValues(options);
this.base.ssObj.selectRange(this.base.generateHeaderText(this.startCell.colIndex + 1) + (this.startCell.rowIndex + 1) + ':' + this.base.generateHeaderText(this.endCell.colIndex + 1) + (this.endCell.rowIndex + 1));
let args = { action: "autofill" };
Unibase.Apps.Collaboration.Components.Common.Download.Instance().ssAutoSave(args, this.base, true);
this.updateAutofill();
}
applyAutofill(options, direction) {
this.direction = direction;
this.applyValues(options);
this.direction = undefined;
}
applyValues(options) {
let pos = { Down: 'down', Up: 'up', Left: 'left', Right: 'right' };
let val, plen, patterns, patrn, pRanges, patrnRange, fillRange, cellObjs, data, temp, dlen, j, k, l, tlen, tot, hasRef, format, formats, cells, clen, cellIdx, cellProps, i = 0, dataObj = {};
let drSR = options.dataRange[0];
let drSC = options.dataRange[1];
let drER = options.dataRange[2];
let drEC = options.dataRange[3];
let frSR = options.fillRange[0];
let frSC = options.fillRange[1];
let frER = options.fillRange[2];
let frEC = options.fillRange[3];
let isVFill = [pos.Down, pos.Up].indexOf(this.direction) > -1;
let isRFill = [pos.Up, pos.Left].indexOf(this.direction) > -1;
let sheet = this.base.ssObj.biz.getActiveSheet();
let len = isVFill ? drEC - drSC : drER - drSR;
while (i <= len) {
pRanges = this.updateFillValues(isVFill, drSR, drSC, drER, drEC, frSR, frSC, frER, frEC, i);
patrnRange = pRanges.patrnRange;
fillRange = pRanges.fillRange;
patterns = this.createPattern(patrnRange, { isRFill: isRFill, isVFill: isVFill });
cellObjs = this.getData(patrnRange);
data = this.getRawData(cellObjs);
dlen = data.length;
if (!patterns)
return;
plen = patterns.length;
cells = this.getSelectedRange({ rowIndex: fillRange[0], colIndex: fillRange[1] }, { rowIndex: fillRange[2], colIndex: fillRange[3] });
clen = cells.length;
if (isRFill) {
cells = cells.reverse();
patterns = patterns.reverse();
patterns = this.ensurePattern(patterns);
cellObjs = cellObjs.reverse();
data = data.reverse();
}
j = 0;
while (j < clen) {
dataObj = {};
cellIdx = cells[j];
patrn = patterns[j % plen];
if (this.isNumber(patrn))
patrn = patterns[patrn];
switch (patrn.type) {
case this.colType.Number:
val = this.round(patrn.regVal.a + (patrn.regVal.b * patrn.i), 5);
if (isRFill)
patrn.i--;
else
patrn.i++;
break;
case this.colType.String:
val = patrn.val[patrn.i % patrn.val.length];
patrn.i++;
break;
case this.colType.Formula:
hasRef = false;
val = "=";
k = 0;
tlen = patrn.val.length;
while (k < tlen) {
temp = patrn.val[k];
if (this.isObject(temp)) {
hasRef = true;
tot = this.round(temp.a + (temp.b * patrn.i), 0);
if (tot < 1)
val += "#REF!";
else
val += isVFill ? temp.c + (temp.b ? tot : '$' + tot) : (temp.b ? this.base.generateHeaderText(tot) : '$' + this.base.generateHeaderText(tot)) + temp.c;
}
else
val += temp;
k++;
}
if (hasRef && isRFill)
patrn.i--;
else
patrn.i++;
break;
case this.colType.Custom:
val = this.round(patrn.regVal.a + (patrn.regVal.b * patrn.i), 0);
if (val < 0)
val = (val % patrn.len) + patrn.len;
if (val >= patrn.len)
val = val % patrn.len;
val = patrn.val[val];
if (isRFill)
patrn.i--;
else
patrn.i++;
break;
}
l = j % dlen;
let cell = ej.spreadsheet.getCell(cellIdx.rowIndex, cellIdx.colIndex, sheet);
if (cellObjs[l]) {
cell = this.formObjFromValues(cellObjs[l], ['style', 'format', 'wrap', 'isLocked', 'validation', 'hyperlink',]);
cell['value'] = val;
}
else {
cell = {};
}
this.base.ssObj.biz.setCell(cellIdx.rowIndex, cellIdx.colIndex, sheet, cell);
if (cell.validation && cell.validation.isHighlighted) {
this.base.ssObj.addInvalidHighlight(this.base.generateHeaderText(cellIdx.colIndex + 1) + (cellIdx.rowIndex + 1));
}
j++;
}
i++;
}
let args = { options: options, direction: this.direction, action: 'autofill', origin: 'biz', sheetIndex: this.base.getSheetIndex() };
Unibase.Apps.Collaboration.Components.Sheets.Base.Instance().bizSignalr(args);
}
formObjFromValues(cellObj, props) {
let obj = {};
for (let i = 0; i < props.length; i++) {
if (cellObj[props[i]]) {
obj[props[i]] = cellObj[props[i]];
}
}
return obj;
}
updateFillValues(isVFill, drSR, drSC, drER, drEC, frSR, frSC, frER, frEC, i) {
let pStart, pEnd, fStart, fEnd, patrnRange, fillRange;
if (isVFill) {
pStart = { rowIndex: drSR, colIndex: drSC + i };
pEnd = { rowIndex: drER, colIndex: drSC + i };
fStart = { rowIndex: frSR, colIndex: frSC + i };
fEnd = { rowIndex: frER, colIndex: frSC + i };
}
else {
pStart = { rowIndex: drSR + i, colIndex: drSC };
pEnd = { rowIndex: drSR + i, colIndex: drEC };
fStart = { rowIndex: frSR + i, colIndex: frSC };
fEnd = { rowIndex: frSR + i, colIndex: frEC };
}
patrnRange = [pStart.rowIndex, pStart.colIndex, pEnd.rowIndex, pEnd.colIndex];
fillRange = [fStart.rowIndex, fStart.colIndex, fEnd.rowIndex, fEnd.colIndex];
return { patrnRange: patrnRange, fillRange: fillRange };
}
createPattern(range, options) {
let j, idx, temp, regVal, custColl, lCaseColl, lCaseVal, isLCase, diff, len, i = 0, pattern = [];
let patrns = this.createDataPattern(range);
let plen = patrns.length;
let patrn;
if (patrns) {
while (i < plen) {
patrn = patrns[i];
switch (patrn.type) {
case this.colType.Number:
idx = pattern.length;
len = patrn.val.length;
diff = options.isRFill ? -1 : len;
if (len === 1)
patrn.val.push(patrn.val[0] + 1);
regVal = this.getPredictionValue(patrn.val);
temp = { regVal: regVal, type: patrn.type, i: diff };
pattern.push(temp);
j = 1;
while (j < len) {
pattern.push(idx);
j++;
}
break;
case this.colType.String:
idx = pattern.length;
temp = { val: patrn.val, type: patrn.type, i: 0 };
pattern.push(temp);
j = 1;
len = patrn.val.length;
while (j < len) {
pattern.push(idx);
j++;
}
break;
case this.colType.Formula:
len = patrn.val.length;
patrn = this.createFormulaPattern(patrn.val, options);
diff = options.isRFill ? -1 : len;
if (patrn.isInPattern) {
idx = pattern.length;
temp = { val: patrn.val, type: this.colType.Formula, i: diff };
pattern.push(temp);
j = 1;
while (j < len) {
pattern.push(idx);
j++;
}
}
else {
j = 0;
diff = options.isRFill ? -1 : 1;
while (j < len) {
pattern.push({ val: patrn.val[j], type: this.colType.Formula, i: diff });
j++;
}
}
break;
}
i++;
}
return pattern;
}
}
createDataPattern(range) {
let val, type, i = 0;
let obj = {};
let patrn = [];
let cellObjs;
cellObjs = this.getData(range);
let data = this.getRawData(cellObjs);
let dlen = data.length;
if (dlen) {
while (i < dlen) {
val = data[i];
type = this.getType(val);
if (i === 0)
obj = { val: [val], type: type };
else if (type === obj.type)
obj.val.push(val);
else {
patrn.push(obj);
obj = { val: [val], type: type };
}
i++;
}
patrn.push(obj);
return patrn;
}
}
createFormulaPattern(data, options) {
let patrn, j, temp, isInPatrn, patrns = [], i = 0, len = data.length, cRfrType;
while (i < len) {
patrns.push(this.parseFormula(data[i]));
i++;
}
isInPatrn = this.isInPattern(patrns, options.isVFill);
if (isInPatrn) {
patrn = patrns[0];
i = patrn.length;
while (i--) {
temp = patrn[i];
cRfrType = this.isCellReference(temp);
if (cRfrType && (cRfrType !== "absolute"))
patrn[i] = this.getCellRefPrediction(temp, options, null, cRfrType);
}
return { isInPattern: isInPatrn, val: patrn };
}
else {
i = 0;
while (i < len) {
patrn = patrns[i];
j = patrn.length;
while (j--) {
temp = patrn[j];
cRfrType = this.isCellReference(temp);
if (cRfrType && (cRfrType !== "absolute"))
patrns[i][j] = this.getCellRefPrediction(temp, options, len, cRfrType);
}
i++;
}
return { isInPattern: isInPatrn, val: patrns };
}
}
parseFormula(formula) {
var temp, str, len, i = 0, arr = [];
formula = this.markSpecialChar(formula.replace("=", ""));
formula = formula.split(/\(|\)|=|\^|>|<|,|:|\+|-|\*|\/|%|&/g);
len = formula.length;
while (i < len) {
temp = formula[i];
if (!temp) {
i++;
continue;
}
if (temp.length === 1)
arr.push(this.isUniqueChar(temp) ? this.getUniqueCharVal(temp) : temp);
else {
str = temp[0];
if (temp.indexOf('!') > 0) {
if (this.isUniqueChar(str)) {
arr.push(this.getUniqueCharVal(str));
temp = temp.substr(1);
}
str = temp.indexOf('!') + 1;
arr.push(temp.substr(0, str));
arr.push(temp.substr(str));
}
else if (this.isUniqueChar(str)) {
arr.push(this.getUniqueCharVal(str));
arr.push(temp.substr(1));
}
else
arr.push(temp);
}
i++;
}
return arr;
}
getUniqueCharVal(str) {
switch (str) {
case this.UC.uniqueOBracket:
return "(";
case this.UC.uniqueCBracket:
return ")";
case this.UC.uniqueCSeparator:
return ",";
case this.UC.uniqueCOperator:
return ':';
case this.UC.uniquePOperator:
return "+";
case this.UC.uniqueSOperator:
return "-";
case this.UC.uniqueMOperator:
return "*";
case this.UC.uniqueDOperator:
return "/";
case this.UC.uniqueModOperator:
return "%";
case this.UC.uniqueConcateOperator:
return "&";
case this.UC.uniqueEqualOperator:
return "=";
case this.UC.uniqueExpOperator:
return "^";
case this.UC.uniqueGTOperator:
return ">";
case this.UC.uniqueLTOperator:
return "<";
}
return "";
}
isUniqueChar(str) {
var code = str.charCodeAt(str);
return code >= 129 && code <= 142;
}
markSpecialChar(formula) {
formula = formula.replace(/\(/g, "(" + this.UC.uniqueOBracket).replace(/\)/g, ")" + this.UC.uniqueCBracket);
formula = formula.replace(/,/g, "," + this.UC.uniqueCSeparator).replace(/:/g, ":" + this.UC.uniqueCOperator);
formula = formula.replace(/\+/g, "+" + this.UC.uniquePOperator).replace(/-/g, "-" + this.UC.uniqueSOperator);
formula = formula.replace(/\*/g, "*" + this.UC.uniqueMOperator).replace(/\//g, "/" + this.UC.uniqueDOperator);
formula = formula.replace(/&/g, "&" + this.UC.uniqueConcateOperator);
formula = formula.replace(/=/g, "=" + this.UC.uniqueEqualOperator);
formula = formula.replace(/\^/g, "^" + this.UC.uniqueExpOperator);
formula = formula.replace(/>/g, ">" + this.UC.uniqueGTOperator).replace(/</g, "<" + this.UC.uniqueLTOperator);
return formula.replace(/%/g, "%" + this.UC.uniqueModOperator);
}
isInPattern(patrn, isVFill) {
var oldPatrn, olen, newPatrn, nlen, oldStr, newStr, oldInt, newInt, eStr = "", i = 0, j = 1, plen = patrn.length, nregx = new RegExp("[0-9$]", "g"), aregx = new RegExp("[a-z$]", "gi");
if (plen === 1)
return false;
while (j < plen) {
oldPatrn = patrn[i];
newPatrn = patrn[j];
olen = oldPatrn.length;
nlen = newPatrn.length;
if (olen !== nlen)
return false;
else {
while (olen--) {
oldStr = oldPatrn[olen];
newStr = newPatrn[olen];
if (this.isCellReference(oldStr) === this.isCellReference(newStr)) {
if (isVFill) {
oldInt = Number(oldStr.replace(aregx, eStr));
newInt = Number(newStr.replace(aregx, eStr));
}
else {
oldInt = this.generateColCount(oldStr.replace(nregx, eStr));
newInt = this.generateColCount(newStr.replace(nregx, eStr));
}
if (oldInt !== newInt - 1)
return false;
}
else if (oldStr !== newStr)
return false;
}
}
i++;
j++;
}
return true;
}
generateColCount(text) {
var colCount = 0;
text = text.split('').reverse().join('');
for (var i = text.length - 1; i >= 0; i--) {
colCount += (text[i].charCodeAt(text[i]) - 64) * (Math.pow(26, i));
}
return colCount;
}
getData(range) {
let sheet = this.base.ssObj.biz.getActiveSheet();
let data = [];
let obj;
let newRange = this.base.swapRange(range);
for (let i = newRange[0]; i <= newRange[2]; i++) {
for (let j = newRange[1]; j <= newRange[3]; j++) {
obj = sheet.rows[i] ? sheet.rows[i].cells[j] : undefined;
data.push(obj);
}
}
return data;
}
getRawData(arr) {
let len = arr.length;
let newArr = [];
for (let i = 0; i < len; i++) {
if (!arr[i] || !arr[i].value || arr[i].value.length === 0) {
newArr.push('');
}
else if (arr[i].formula) {
newArr.push(arr[i].formula);
}
else if (arr[i].value) {
newArr.push(arr[i].value);
}
}
return newArr;
}
isCellReference(text) {
return /^[a-z]{1,3}\d{1,7}$/gi.test(text) ? "relative" : (/^\$[a-z]{1,3}\$\d{1,7}$/gi.test(text) ? "absolute" : (/^((\$[a-z]{1,3})\d{1,7}|[a-z]{1,3}(\$\d{1,7}))$/gi.test(text) ? "mixed" : false));
}
getCellRefPrediction(text, options, length, rfrType) {
text = text.toUpperCase();
var eStr = "", aRegx = new RegExp("[a-z$]", "gi"), nRegx = new RegExp("[0-9$]", "g"), str = options.isVFill ? text.replace(nRegx, eStr) : text.replace(aRegx, eStr);
let temp = options.isVFill ? Number(text.replace(aRegx, eStr)) : this.generateColCount(text.replace(nRegx, eStr)), arr = [temp], isColAbslt = text[0] === '$';
if (length && length !== 1)
arr.push(temp + length);
else
arr.push(temp + 1);
temp = this.getPredictionValue(arr);
if (rfrType && (rfrType === "mixed")) {
if (isColAbslt === options.isVFill)
str = '$' + str;
else
temp.b = 0;
}
temp.c = str;
return temp;
}
getType(val) {
let type1;
let type = this.isCustomType(val);
if (type)
type1 = type;
else if (this.isFormula(val))
type1 = this.colType.Formula;
else if (this.isNumber(val))
type1 = this.colType.Number;
return type1 || this.colType.String;
}
isCustomType(val) {
val = val + "";
val = val.toLowerCase();
let i = this.customList.length;
while (i--) {
if (this.toArrayLowerCase(this.customList[i].slice(0)).indexOf(val) > -1)
return this.colType.Custom + i;
}
return false;
}
toArrayLowerCase(args) {
for (let i = 0; i < args.length; i++)
args[i] = args[i].toString().toLowerCase();
return args;
}
isFormula(formula) {
let obrackets, cbrackets;
if (formula) {
if (!formula.toString().indexOf("=") && formula.length > 1) {
obrackets = formula.split("(").length - 1;
cbrackets = formula.split(")").length - 1;
return obrackets === cbrackets;
}
}
return false;
}
isNumber(val) {
return val - parseFloat(val) >= 0;
}
round(val, digits) {
let str = val + 'e' + digits;
let str1 = 'e-' + digits;
return Number(Math.round(str) + str1);
}
getPredictionValue(args) {
let i = 0, sumx = 0, sumy = 0, sumxy = 0, sumxx = 0, n = args.length;
while (i < n) {
sumx = sumx + i;
sumy = sumy + Number(args[i]);
sumxy = sumxy + (i * Number(args[i]));
sumxx = sumxx + (i * i);
i++;
}
let a = this.round(((sumy * sumxx) - (sumx * sumxy)) / ((n * sumxx) - (sumx * sumx)), 5), b = this.round(((n * sumxy) - (sumx * sumy)) / ((n * sumxx) - (sumx * sumx)), 5);
return { a: a, b: b };
}
ensurePattern(patterns) {
let patrn, idx = -1, i = patterns.length;
while (i--) {
patrn = patterns[i];
if (this.isObject(patrn)) {
idx = i;
if (patrn.type === this.colType.String)
patrn.val = patrn.val.reverse();
}
else
patterns[i] = idx;
}
return patterns;
}
isObject(obj) {
if (typeof obj !== "object")
return false;
return Object.prototype.toString.call(obj) === "[object Object]";
}
getSelectedRange(startcell, endcell) {
let i, j, k, l, arr = [], range = this.base.swapRange([startcell.rowIndex, startcell.colIndex, endcell.rowIndex, endcell.colIndex]);
i = range[0], j = range[2];
while (i <= j) {
k = range[1];
l = range[3];
while (k <= l) {
arr.push({ rowIndex: i, colIndex: k });
k++;
}
i++;
}
return arr;
}
static Instance() {
if (this.instance === undefined) {
this.instance = new Autofill();
}
return this.instance;
}
}
Sheets.Autofill = Autofill;
})(Sheets = Components.Sheets || (Components.Sheets = {}));
})(Components = Collaboration.Components || (Collaboration.Components = {}));
})(Collaboration = Apps.Collaboration || (Apps.Collaboration = {}));
})(Apps = Unibase.Apps || (Unibase.Apps = {}));
})(Unibase || (Unibase = {}));
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,489 @@
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var Unibase;
(function (Unibase) {
let Apps;
(function (Apps) {
let Collaboration;
(function (Collaboration) {
let Components;
(function (Components) {
let Sheets;
(function (Sheets) {
class Dialogue {
constructor() {
this.hederText = {};
this.hasHeader = false;
}
init(base) {
this.base = base;
this.base.mouseDownHandlers.push(this.mouseDown.bind(this));
this.util = Unibase.Apps.Collaboration.Components.Common.Util.Instance();
}
mouseDown(e) {
if (this.rdDailouge) {
let cbox = ej.base.closest(e.target, '.e-checkbox-wrapper');
if (cbox) {
let tickicon = cbox.firstElementChild;
tickicon.classList.contains('e-check') ? tickicon.classList.remove('e-check') : tickicon.classList.add('e-check');
if (cbox.classList.contains('rd-selectAll')) {
var cboxes = this.rdDailouge.element.querySelector('#rd-checkboxes-container').querySelectorAll('.e-frame');
if (cbox.firstElementChild.classList.contains('e-check')) {
cbox.firstElementChild.classList.remove('e-stop');
cboxes.forEach((e) => { e.classList.add('e-check'); });
document.getElementsByClassName("rd-btn")[0].classList.remove("e-disabled");
document.getElementsByClassName("rd-btn")[0].removeAttribute("disabled");
}
else {
cbox.firstElementChild.classList.add('e-stop');
cboxes.forEach((e) => { e.classList.remove('e-check'); });
document.getElementsByClassName("rd-btn")[0].classList.add("e-disabled");
document.getElementsByClassName("rd-btn")[0].setAttribute("disabled", "true");
}
}
if (cbox.classList.contains('rd-colCheckbox')) {
var cboxes = this.rdDailouge.element.querySelector('#rd-checkboxes').querySelectorAll('.e-frame');
var eCheckCount = this.rdDailouge.element.querySelector('#rd-checkboxes').querySelectorAll('.e-check').length;
eCheckCount === 0 ? (document.getElementsByClassName("rd-btn")[0].classList.add("e-disabled"),
document.getElementsByClassName("rd-btn")[0].setAttribute("disabled", "true")) :
(document.getElementsByClassName("rd-btn")[0].removeAttribute("disabled"),
document.getElementsByClassName("rd-btn")[0].classList.remove("e-disabled"));
eCheckCount < cboxes.length ?
(document.getElementsByClassName("rd-selectAll")[0].firstElementChild.classList.remove("e-check"),
document.getElementsByClassName("rd-selectAll")[0].firstElementChild.classList.add("e-stop")) :
(document.getElementsByClassName("rd-selectAll")[0].firstElementChild.classList.add("e-check"),
document.getElementsByClassName("rd-selectAll")[0].firstElementChild.classList.remove("e-stop"));
}
}
}
}
removeDuplicate(range, header, colSelected) {
this.obj = {};
let sheet = this.base.ssObj.biz.getActiveSheet();
this.rngIndexes = this.base.getIndexesFromAddress(range);
this.hasHeader = header;
(header) ? this.rowStartCell = this.rngIndexes[0] + 1 : this.rowStartCell = this.rngIndexes[0];
this.columnStartCell = this.rngIndexes[1];
this.rowEndCell = this.rngIndexes[2];
this.columnEndCell = this.rngIndexes[3];
this.selected = colSelected;
for (let i = this.rowStartCell; i <= this.rowEndCell; i++) {
let wholeRow = [];
for (let j = this.columnStartCell; j <= this.columnEndCell; j++) {
if (this.selected[j] == undefined) {
var isColChecked = document.querySelector("#rd-checkboxes").querySelector('div[value="' + j + '"]').firstElementChild.classList.contains('e-check');
this.selected[j] = isColChecked;
}
if (!this.selected[j]) {
continue;
}
let cellInfo = ej.spreadsheet.getCell(i, j, sheet);
if (!cellInfo) {
wholeRow.push(null);
}
else {
wholeRow.push(this.util.getCellValues(cellInfo));
}
if (cellInfo) {
this.base.ssObj.biz.setCell(i, j, sheet, {});
delete sheet.rows[i].cells[j];
}
}
if (wholeRow) {
this.addToObj(JSON.stringify(wholeRow));
}
}
var k = 0;
var cellValue;
var keys = Object.keys(this.obj);
for (let i = this.rowStartCell; i <= this.rowEndCell; i++) {
var row;
(keys[k]) ? row = JSON.parse(keys[k]) : row = undefined;
var l = 0;
for (let j = this.columnStartCell; j <= this.columnEndCell; j++) {
if (!this.selected[j]) {
continue;
}
(row) ? cellValue = row[l] : cellValue = undefined;
if (cellValue) {
if (!(cellValue.value === undefined)) {
this.base.ssObj.biz.setCell(i, j, sheet, cellValue);
}
}
l++;
}
k++;
}
var duplicateCount = this.selectedRow - Object.keys(this.obj).length;
Unibase.Apps.Collaboration.Components.Common.Download.Instance().ssAutoSave({ action: 'removeDuplicates' }, this.base, true);
if (this.base.getSheetIndex() >= 0) {
if (!this.hasHeader) {
this.base.ssObj.selectRange(this.base.generateHeaderText(this.columnStartCell + 1) + (this.rowStartCell + 1) + ":" + this.base.generateHeaderText(this.columnEndCell + 1) + (this.rowEndCell - duplicateCount + 1));
}
else {
this.base.ssObj.selectRange(this.base.generateHeaderText(this.columnStartCell + 1) + (this.rowStartCell) + ":" + this.base.generateHeaderText(this.columnEndCell + 1) + (this.rowEndCell - duplicateCount + 2));
}
}
this.rdDailouge.destroy();
}
RDshowUniqueDailog() {
var keys = Object.keys(this.obj);
var duplicateCount;
this.hasHeader ? duplicateCount = this.selectedRow - keys.length - 1 : duplicateCount = this.selectedRow - keys.length;
if (duplicateCount == 0) {
var duplicateValuesText = "No duplicate rows were found.";
}
else if (duplicateCount == 1) {
var duplicateValuesText = "1 duplicate row were found and removed.";
}
else {
var duplicateValuesText = `${duplicateCount} duplicate rows were found and removed.`;
}
if (keys.length == 1) {
var uniqueValuesText = `1 unique row remains.`;
}
else {
var uniqueValuesText = `${keys.length} unique rows remains.`;
}
this.rdDailouge = new ej.popups.Dialog({
isModal: true,
header: 'Remove Duplicates',
content: `<div id='removedup-container'>
<div id='rd-duplicatevaluetxt'></div>
<br/>
<div id='rd-uniquevaluetxt'></div>
</div>`,
width: '470px',
height: '180px',
buttons: [{
click: this.hideRdDailouge.bind(this),
buttonModel: { content: 'Ok', isPrimary: true }
}]
});
this.rdDailouge.appendTo("#removeduplicates");
document.getElementById("rd-duplicatevaluetxt").append(duplicateValuesText);
document.getElementById("rd-uniquevaluetxt").append(uniqueValuesText);
}
;
addToObj(param) {
if (!this.obj[param]) {
this.obj[param] = 1;
}
}
renderDuplicateDailouge() {
this.range = this.base.ssObj.biz.getRange();
this.rngIndexes = this.base.getIndexesFromAddress(this.range);
this.selectedCol = this.rngIndexes[3] - this.rngIndexes[1] + 1;
this.selectedRow = this.rngIndexes[2] - this.rngIndexes[0] + 1;
this.rowStartCell = this.rngIndexes[0];
this.columnStartCell = this.rngIndexes[1];
this.rowEndCell = this.rngIndexes[2];
this.columnEndCell = this.rngIndexes[3];
if (!(this.rowStartCell - this.rowEndCell == 0 && this.columnStartCell - this.columnEndCell == 0)) {
if (this.selectedCol > 1 && this.selectedRow > 1) {
var selectedcolrowtext = `${this.selectedCol} columns and ${this.selectedRow} rows selected`;
}
else if (this.selectedCol > 1 && this.selectedRow == 1) {
var selectedcolrowtext = `${this.selectedCol} columns and ${this.selectedRow} row selected`;
}
else if (this.selectedCol == 1 && this.selectedRow > 1) {
var selectedcolrowtext = `${this.selectedCol} column and ${this.selectedRow} rows selected`;
}
var checkboxes = [];
if (this.selectedCol > 0) {
for (let i = this.columnStartCell; i <= this.columnEndCell; i++) {
var colName = this.base.generateHeaderText(i + 1);
var cbox = ej.buttons.createCheckBox(this.base.ssObj.createElement, false, { checked: true, label: 'Columns ' + colName, cssClass: 'rd-colCheckbox' });
cbox.setAttribute('value', i);
checkboxes.push(cbox);
}
}
var elem = document.getElementById("removedup-container");
if (!elem) {
var hasHeader = ej.buttons.createCheckBox(this.base.ssObj.createElement, false, { checked: false, cssClass: 'rd-hasHeader' });
var selectAll = ej.buttons.createCheckBox(this.base.ssObj.createElement, false, { checked: true, label: 'Select all', cssClass: 'rd-selectAll' });
this.rdDailouge = new ej.popups.Dialog({
isModal: true,
header: 'Remove Duplicates',
content: `<div id='removedup-container'>
<div id='rd-selectedColumns-container'>
<div id="rd-selectedColumns-title-data"></div>
<div id="rd-hasHeader-checkbox"></div>
<span id="rd-hasHeader-content">Data has header row</span>
</div>
<div id="rd-selectedColumns-info-wrapper">
<div id="rd-selectedColumns-info-analyze">Select Columns to analyze</div>
<div id="rd-checkboxes-container">
<div id="rd-selectAll"> </div>
<div id="rd-checkboxes"></div>
</div></div>
</div>`,
showCloseIcon: false,
created: () => {
document.getElementById("rd-hasHeader-checkbox").appendChild(hasHeader);
document.getElementById("rd-selectAll").appendChild(selectAll);
document.getElementById("rd-selectedColumns-title-data").append(selectedcolrowtext);
checkboxes.forEach(element => {
document.getElementById("rd-checkboxes").appendChild(element);
});
setTimeout(() => {
if (document.getElementById("rd-checkboxes-container").offsetHeight < 250) {
document.getElementById("rd-checkboxes-container").style.overflowY = 'hidden';
}
else {
document.getElementById("rd-checkboxes").style.overflowY = "";
}
}, 0);
},
open: () => {
},
width: '350px',
height: 'auto',
closeOnEscape: false,
buttons: [{
click: this.hideRdDailouge.bind(this),
buttonModel: { content: 'Cancel' }
},
{
click: this.processDup.bind(this),
buttonModel: { content: 'Remove Duplicates', isPrimary: true, cssClass: "rd-btn" }
}],
});
this.rdDailouge.appendTo("#removeduplicates");
}
else {
document.getElementById("rd-selectedColumns-title-data").innerHTML = "";
document.getElementById("rd-selectedColumns-title-data").innerHTML = selectedcolrowtext;
this.rdDailouge.show();
}
}
else {
this.rdDailouge = new ej.popups.Dialog({
isModal: true,
header: 'Remove Duplicates',
content: `<div id='removedup-container'>Please select a range of cells containing values.</div>`,
width: '470px',
height: '130px',
created: () => {
document.getElementById("removeduplicates_dialog-content").style.overflowY = 'hidden';
},
buttons: [{
click: this.hideRdDailouge.bind(this),
buttonModel: { content: 'Ok', isPrimary: true }
}]
});
this.rdDailouge.appendTo("#removeduplicates");
}
}
hideRdDailouge() {
this.rdDailouge.element.removeEventListener("mousedown", (e) => { });
this.rdDailouge.hide();
this.rdDailouge.destroy();
}
processDup() {
let header = false;
if (document.getElementsByClassName("rd-hasHeader")[0].firstElementChild.classList.contains("e-check")) {
header = true;
}
let range = this.base.ssObj.biz.getRange();
let indexes = this.base.ssObj.biz.getIndexes();
let args = { range: range, indexes: indexes, sheetIndex: this.base.getSheetIndex(), header: header, action: 'removeDuplicates', origin: 'biz' };
this.base.ssObj.updateUndoRedoCollection({ name: 'bizAction', args: { action: 'removeDuplicates', options: args, oldCells: this.base.getCellsFromIndexes(indexes) } });
this.removeDuplicate(range, header, {});
this.base.removeCopyIndicator();
args['colSelected'] = this.selected;
this.RDshowUniqueDailog();
Unibase.Apps.Collaboration.Components.Sheets.Base.Instance().bizSignalr(args);
}
renderMenubarFullscreenDialog() {
if (!this.menubarFullscreenDialogObj) {
this.menubarFullscreenDialogObj = new ej.popups.Dialog({
content: `<div id='menubar-fullscreen-container'>
<div id='menubar-fullscreenf11-message'>
Press <span class= "menubar-esc">Esc</span> to exit full screen <span class="biz-ss-menubarfullscreen-dismiss"> Dismiss </span></div>
</div>`,
width: '470px',
height: '45px',
position: { X: 'center', Y: 14 },
animationSettings: { effect: 'None' },
closeOnEscape: true,
cssClass: "biz-ss-menubar-fullscreen",
Close: this.hideSsMenubarFullscreenDialog.bind(this),
});
this.menubarFullscreenDialogObj.appendTo("#biz-ss-menubar-fullscreendialog");
}
else {
this.menubarFullscreenDialogObj.show();
}
}
hideSsMenubarFullscreenDialog() {
this.menubarFullscreenDialogObj.destroy();
if (document.getElementById("menubar-fullscreen-container"))
document.getElementById("menubar-fullscreen-container").parentElement.remove();
setTimeout(() => {
this.menubarFullscreenDialogObj = null;
}, 1000);
}
renderResizeDialog() {
let sheet = this.base.ssObj.biz.getActiveSheet();
let indexes = this.base.ssObj.biz.getIndexes();
let isRowsSelected = this.base.ssObj.biz.isRowsSelected(indexes);
let row = (indexes[2] - indexes[0] + 1);
let col = (indexes[3] - indexes[1] + 1);
let heading = "";
let radio1Text = "";
let inputValue;
if (isRowsSelected) {
if (row == 1)
heading = "Resize row " + (indexes[0] + 1);
else
heading = "Resize rows " + (indexes[0] + 1) + " - " + (indexes[2] + 1);
radio1Text = "Specify row height in pixels: (Default 18)";
inputValue = sheet.rows[indexes[0]] && sheet.rows[indexes[0]].height || 18.5;
}
else {
if (col == 1)
heading = "Resize column " + (this.base.generateHeaderText(indexes[0] + 1));
else
heading = "Resize columns " + this.base.generateHeaderText(indexes[1] + 1) + " - " + this.base.generateHeaderText(indexes[3] + 1);
radio1Text = "Specify column width in pixels: (Default 64)";
inputValue = sheet.columns[indexes[1]] && sheet.columns[indexes[1]].width || 64;
}
if (inputValue == undefined)
inputValue = '';
this.radiobutton = new ej.buttons.RadioButton({ label: radio1Text, name: 'resizetofit', checked: true, value: "resizeroworcol" });
this.resizeDialogObj = new ej.popups.Dialog({
content: `<div id='resize-dialog-container'>
<div id='resize-dialog-content'>
<ul>
<li><input type="radio" id="header-checkbox"></li>
<div class="e-input-group resize-input-div">
<input class="e-input" name='input' type="text" value="${inputValue}" id="resize-input" />
</div>
<li><input type="radio" id="resizetofit-checkbox"></li>
</ul>
</div>
</div>`,
width: '470px',
height: 'auto',
header: heading,
animationSettings: { effect: 'None' },
showCloseIcon: true,
closeOnEscape: true,
target: document.body.querySelectorAll('._bizgaze_popup_container')[document.body.querySelectorAll('._bizgaze_popup_container').length - 1],
created: this.resizeDialogCreated.bind(this),
cssClass: "biz-ss-resizetofit",
buttons: [
{
click: this.hideResizeDialog.bind(this),
buttonModel: { content: 'Cancel' }
},
{
click: this.processResize.bind(this),
buttonModel: { content: 'Ok', isPrimary: true }
}
],
Close: this.hideResizeDialog.bind(this),
});
this.resizeDialogObj.appendTo("#biz-ss-resizetofit-dialog");
}
resizeDialogCreated() {
this.radiobutton.appendTo('#header-checkbox');
this.radiobutton = new ej.buttons.RadioButton({ label: 'Resize to fit', name: 'resizetofit', value: "resizetofit" });
this.radiobutton.appendTo('#resizetofit-checkbox');
document.getElementsByClassName("biz-ss-resizetofit")[0].style.maxHeight = "";
}
hideResizeDialog() {
if (this.resizeDialogObj) {
this.resizeDialogObj.destroy();
setTimeout(() => {
this.resizeDialogObj = null;
});
}
}
processResize() {
return __awaiter(this, void 0, void 0, function* () {
let range = this.base.ssObj.biz.getRange();
let resizedHeaders = [];
let changedValues = [];
let resizeValue = Number(document.getElementById("resize-input").value);
let ranges = range.split(" ");
for (var i = 0; i < ranges.length; i++) {
let currentIndexes = this.base.swapRange(ej.spreadsheet.getIndexesFromAddress(ranges[i]));
yield this.resizeHeaders(currentIndexes, resizeValue, ranges[i]).then((response) => {
changedValues = changedValues.concat(response.changedValues);
resizedHeaders = resizedHeaders.concat(response.resizedHeaders);
});
}
this.hideResizeDialog();
this.base.focusDocumentViewer();
(changedValues.length > 0) && this.base.download.ssAutoSave({ action: "imageincell", changedValues: changedValues }, this.base, true);
(resizedHeaders.length > 0) && this.base.download.ssAutoSave({ action: "headerResize", resizedHeaders: resizedHeaders }, this.base, true);
});
}
resizeHeaders(indexes, resizeValue, range) {
return __awaiter(this, void 0, void 0, function* () {
let resizedHeaders = [];
let changedValues = [];
let sheetIdx = this.base.getSheetIndex();
let isRowsSelected = this.base.ssObj.biz.isRowsSelected(indexes);
let selectedRadio = document.querySelector('input[name="resizetofit"]:checked').value;
if (selectedRadio == "resizeroworcol") {
if (isRowsSelected) {
for (var i = indexes[0]; i <= indexes[2]; i++) {
yield this.setRowHeight(resizeValue, i);
resizedHeaders.push({ rowIndex: i, height: resizeValue, sheetIndex: sheetIdx, resizeType: "row" });
}
changedValues = changedValues.concat(this.base.setRowIncellImageSize(range));
}
else {
for (var i = indexes[1]; i <= indexes[3]; i++) {
yield this.setColWidth(resizeValue, i);
resizedHeaders.push({ colIndex: i, width: resizeValue, sheetIndex: sheetIdx, resizeType: "col" });
}
changedValues = changedValues.concat(this.base.setColumnIncellImageSize(range));
}
}
else {
this.base.ssObj.autoFit(range);
if (isRowsSelected)
changedValues = changedValues.concat(this.base.setRowIncellImageSize(range));
else
changedValues = changedValues.concat(this.base.setColumnIncellImageSize(range));
}
return {
changedValues: changedValues, resizedHeaders: resizedHeaders
};
});
}
setRowHeight(resizeValue, rowIdx) {
return __awaiter(this, void 0, void 0, function* () {
yield this.base.ssObj.setRowHeight(resizeValue + "px", rowIdx);
});
}
setColWidth(resizeValue, colIdx) {
return __awaiter(this, void 0, void 0, function* () {
yield this.base.ssObj.setColWidth(resizeValue + "px", colIdx);
});
}
static Instance() {
if (this.instance === undefined) {
this.instance = new Dialogue();
}
return this.instance;
}
}
Sheets.Dialogue = Dialogue;
})(Sheets = Components.Sheets || (Components.Sheets = {}));
})(Components = Collaboration.Components || (Collaboration.Components = {}));
})(Collaboration = Apps.Collaboration || (Apps.Collaboration = {}));
})(Apps = Unibase.Apps || (Unibase.Apps = {}));
})(Unibase || (Unibase = {}));
File diff suppressed because one or more lines are too long
+31
View File
@@ -0,0 +1,31 @@
var __awaiter=this&&this.__awaiter||function(n,t,i,r){function u(n){return n instanceof i?n:new i(function(t){t(n)})}return new(i||(i=Promise))(function(i,f){function o(n){try{e(r.next(n))}catch(t){f(t)}}function s(n){try{e(r["throw"](n))}catch(t){f(t)}}function e(n){n.done?i(n.value):u(n.value).then(o,s)}e((r=r.apply(n,t||[])).next())})},Unibase;(function(n){let t;(function(t){let i;(function(t){let i;(function(t){let i;(function(t){class i{constructor(){this.hederText={};this.hasHeader=!1}init(t){this.base=t;this.base.mouseDownHandlers.push(this.mouseDown.bind(this));this.util=n.Apps.Collaboration.Components.Common.Util.Instance()}mouseDown(n){var t,i;if(this.rdDailouge){let r=ej.base.closest(n.target,".e-checkbox-wrapper");if(r){let n=r.firstElementChild;n.classList.contains("e-check")?n.classList.remove("e-check"):n.classList.add("e-check");r.classList.contains("rd-selectAll")&&(t=this.rdDailouge.element.querySelector("#rd-checkboxes-container").querySelectorAll(".e-frame"),r.firstElementChild.classList.contains("e-check")?(r.firstElementChild.classList.remove("e-stop"),t.forEach(n=>{n.classList.add("e-check")}),document.getElementsByClassName("rd-btn")[0].classList.remove("e-disabled"),document.getElementsByClassName("rd-btn")[0].removeAttribute("disabled")):(r.firstElementChild.classList.add("e-stop"),t.forEach(n=>{n.classList.remove("e-check")}),document.getElementsByClassName("rd-btn")[0].classList.add("e-disabled"),document.getElementsByClassName("rd-btn")[0].setAttribute("disabled","true")));r.classList.contains("rd-colCheckbox")&&(t=this.rdDailouge.element.querySelector("#rd-checkboxes").querySelectorAll(".e-frame"),i=this.rdDailouge.element.querySelector("#rd-checkboxes").querySelectorAll(".e-check").length,i===0?(document.getElementsByClassName("rd-btn")[0].classList.add("e-disabled"),document.getElementsByClassName("rd-btn")[0].setAttribute("disabled","true")):(document.getElementsByClassName("rd-btn")[0].removeAttribute("disabled"),document.getElementsByClassName("rd-btn")[0].classList.remove("e-disabled")),i<t.length?(document.getElementsByClassName("rd-selectAll")[0].firstElementChild.classList.remove("e-check"),document.getElementsByClassName("rd-selectAll")[0].firstElementChild.classList.add("e-stop")):(document.getElementsByClassName("rd-selectAll")[0].firstElementChild.classList.add("e-check"),document.getElementsByClassName("rd-selectAll")[0].firstElementChild.classList.remove("e-stop")))}}}removeDuplicate(t,i,r){var l,e,u,s,o,h,c;this.obj={};let f=this.base.ssObj.biz.getActiveSheet();this.rngIndexes=this.base.getIndexesFromAddress(t);this.hasHeader=i;this.rowStartCell=i?this.rngIndexes[0]+1:this.rngIndexes[0];this.columnStartCell=this.rngIndexes[1];this.rowEndCell=this.rngIndexes[2];this.columnEndCell=this.rngIndexes[3];this.selected=r;for(let n=this.rowStartCell;n<=this.rowEndCell;n++){let t=[];for(let i=this.columnStartCell;i<=this.columnEndCell;i++)if(this.selected[i]==undefined&&(l=document.querySelector("#rd-checkboxes").querySelector('div[value="'+i+'"]').firstElementChild.classList.contains("e-check"),this.selected[i]=l),this.selected[i]){let r=ej.spreadsheet.getCell(n,i,f);r?t.push(this.util.getCellValues(r)):t.push(null);r&&(this.base.ssObj.biz.setCell(n,i,f,{}),delete f.rows[n].cells[i])}t&&this.addToObj(JSON.stringify(t))}e=0;s=Object.keys(this.obj);for(let n=this.rowStartCell;n<=this.rowEndCell;n++){o=s[e]?JSON.parse(s[e]):undefined;h=0;for(let t=this.columnStartCell;t<=this.columnEndCell;t++)this.selected[t]&&(u=o?o[h]:undefined,u&&(u.value===undefined||this.base.ssObj.biz.setCell(n,t,f,u)),h++);e++}c=this.selectedRow-Object.keys(this.obj).length;n.Apps.Collaboration.Components.Common.Download.Instance().ssAutoSave({action:"removeDuplicates"},this.base,!0);this.base.getSheetIndex()>=0&&(this.hasHeader?this.base.ssObj.selectRange(this.base.generateHeaderText(this.columnStartCell+1)+this.rowStartCell+":"+this.base.generateHeaderText(this.columnEndCell+1)+(this.rowEndCell-c+2)):this.base.ssObj.selectRange(this.base.generateHeaderText(this.columnStartCell+1)+(this.rowStartCell+1)+":"+this.base.generateHeaderText(this.columnEndCell+1)+(this.rowEndCell-c+1)));this.rdDailouge.destroy()}RDshowUniqueDailog(){var n=Object.keys(this.obj),t,i,r;t=this.hasHeader?this.selectedRow-n.length-1:this.selectedRow-n.length;i=t==0?"No duplicate rows were found.":t==1?"1 duplicate row were found and removed.":`${t} duplicate rows were found and removed.`;r=n.length==1?`1 unique row remains.`:`${n.length} unique rows remains.`;this.rdDailouge=new ej.popups.Dialog({isModal:!0,header:"Remove Duplicates",content:`<div id='removedup-container'>
<div id='rd-duplicatevaluetxt'></div>
<br/>
<div id='rd-uniquevaluetxt'></div>
</div>`,width:"470px",height:"180px",buttons:[{click:this.hideRdDailouge.bind(this),buttonModel:{content:"Ok",isPrimary:!0}}]});this.rdDailouge.appendTo("#removeduplicates");document.getElementById("rd-duplicatevaluetxt").append(i);document.getElementById("rd-uniquevaluetxt").append(r)}addToObj(n){this.obj[n]||(this.obj[n]=1)}renderDuplicateDailouge(){var n,t,r,i,u,f,e;if(this.range=this.base.ssObj.biz.getRange(),this.rngIndexes=this.base.getIndexesFromAddress(this.range),this.selectedCol=this.rngIndexes[3]-this.rngIndexes[1]+1,this.selectedRow=this.rngIndexes[2]-this.rngIndexes[0]+1,this.rowStartCell=this.rngIndexes[0],this.columnStartCell=this.rngIndexes[1],this.rowEndCell=this.rngIndexes[2],this.columnEndCell=this.rngIndexes[3],this.rowStartCell-this.rowEndCell==0&&this.columnStartCell-this.columnEndCell==0)this.rdDailouge=new ej.popups.Dialog({isModal:!0,header:"Remove Duplicates",content:`<div id='removedup-container'>Please select a range of cells containing values.</div>`,width:"470px",height:"130px",created:()=>{document.getElementById("removeduplicates_dialog-content").style.overflowY="hidden"},buttons:[{click:this.hideRdDailouge.bind(this),buttonModel:{content:"Ok",isPrimary:!0}}]}),this.rdDailouge.appendTo("#removeduplicates");else{if(this.selectedCol>1&&this.selectedRow>1?n=`${this.selectedCol} columns and ${this.selectedRow} rows selected`:this.selectedCol>1&&this.selectedRow==1?n=`${this.selectedCol} columns and ${this.selectedRow} row selected`:this.selectedCol==1&&this.selectedRow>1&&(n=`${this.selectedCol} column and ${this.selectedRow} rows selected`),t=[],this.selectedCol>0)for(let n=this.columnStartCell;n<=this.columnEndCell;n++)r=this.base.generateHeaderText(n+1),i=ej.buttons.createCheckBox(this.base.ssObj.createElement,!1,{checked:!0,label:"Columns "+r,cssClass:"rd-colCheckbox"}),i.setAttribute("value",n),t.push(i);u=document.getElementById("removedup-container");u?(document.getElementById("rd-selectedColumns-title-data").innerHTML="",document.getElementById("rd-selectedColumns-title-data").innerHTML=n,this.rdDailouge.show()):(f=ej.buttons.createCheckBox(this.base.ssObj.createElement,!1,{checked:!1,cssClass:"rd-hasHeader"}),e=ej.buttons.createCheckBox(this.base.ssObj.createElement,!1,{checked:!0,label:"Select all",cssClass:"rd-selectAll"}),this.rdDailouge=new ej.popups.Dialog({isModal:!0,header:"Remove Duplicates",content:`<div id='removedup-container'>
<div id='rd-selectedColumns-container'>
<div id="rd-selectedColumns-title-data"></div>
<div id="rd-hasHeader-checkbox"></div>
<span id="rd-hasHeader-content">Data has header row</span>
</div>
<div id="rd-selectedColumns-info-wrapper">
<div id="rd-selectedColumns-info-analyze">Select Columns to analyze</div>
<div id="rd-checkboxes-container">
<div id="rd-selectAll"> </div>
<div id="rd-checkboxes"></div>
</div></div>
</div>`,showCloseIcon:!1,created:()=>{document.getElementById("rd-hasHeader-checkbox").appendChild(f),document.getElementById("rd-selectAll").appendChild(e),document.getElementById("rd-selectedColumns-title-data").append(n),t.forEach(n=>{document.getElementById("rd-checkboxes").appendChild(n)}),setTimeout(()=>{document.getElementById("rd-checkboxes-container").offsetHeight<250?document.getElementById("rd-checkboxes-container").style.overflowY="hidden":document.getElementById("rd-checkboxes").style.overflowY=""},0)},open:()=>{},width:"350px",height:"auto",closeOnEscape:!1,buttons:[{click:this.hideRdDailouge.bind(this),buttonModel:{content:"Cancel"}},{click:this.processDup.bind(this),buttonModel:{content:"Remove Duplicates",isPrimary:!0,cssClass:"rd-btn"}}]}),this.rdDailouge.appendTo("#removeduplicates"))}}hideRdDailouge(){this.rdDailouge.element.removeEventListener("mousedown",()=>{});this.rdDailouge.hide();this.rdDailouge.destroy()}processDup(){let t=!1;document.getElementsByClassName("rd-hasHeader")[0].firstElementChild.classList.contains("e-check")&&(t=!0);let r=this.base.ssObj.biz.getRange(),u=this.base.ssObj.biz.getIndexes(),i={range:r,indexes:u,sheetIndex:this.base.getSheetIndex(),header:t,action:"removeDuplicates",origin:"biz"};this.base.ssObj.updateUndoRedoCollection({name:"bizAction",args:{action:"removeDuplicates",options:i,oldCells:this.base.getCellsFromIndexes(u)}});this.removeDuplicate(r,t,{});this.base.removeCopyIndicator();i.colSelected=this.selected;this.RDshowUniqueDailog();n.Apps.Collaboration.Components.Sheets.Base.Instance().bizSignalr(i)}renderMenubarFullscreenDialog(){this.menubarFullscreenDialogObj?this.menubarFullscreenDialogObj.show():(this.menubarFullscreenDialogObj=new ej.popups.Dialog({content:`<div id='menubar-fullscreen-container'>
<div id='menubar-fullscreenf11-message'>
Press <span class= "menubar-esc">Esc</span> to exit full screen <span class="biz-ss-menubarfullscreen-dismiss"> Dismiss </span></div>
</div>`,width:"470px",height:"45px",position:{X:"center",Y:14},animationSettings:{effect:"None"},closeOnEscape:!0,cssClass:"biz-ss-menubar-fullscreen",Close:this.hideSsMenubarFullscreenDialog.bind(this)}),this.menubarFullscreenDialogObj.appendTo("#biz-ss-menubar-fullscreendialog"))}hideSsMenubarFullscreenDialog(){this.menubarFullscreenDialogObj.destroy();document.getElementById("menubar-fullscreen-container")&&document.getElementById("menubar-fullscreen-container").parentElement.remove();setTimeout(()=>{this.menubarFullscreenDialogObj=null},1e3)}renderResizeDialog(){let i=this.base.ssObj.biz.getActiveSheet(),n=this.base.ssObj.biz.getIndexes(),f=this.base.ssObj.biz.isRowsSelected(n),e=n[2]-n[0]+1,o=n[3]-n[1]+1,r="",u="",t;f?(r=e==1?"Resize row "+(n[0]+1):"Resize rows "+(n[0]+1)+" - "+(n[2]+1),u="Specify row height in pixels: (Default 18)",t=i.rows[n[0]]&&i.rows[n[0]].height||18.5):(r=o==1?"Resize column "+this.base.generateHeaderText(n[0]+1):"Resize columns "+this.base.generateHeaderText(n[1]+1)+" - "+this.base.generateHeaderText(n[3]+1),u="Specify column width in pixels: (Default 64)",t=i.columns[n[1]]&&i.columns[n[1]].width||64);t==undefined&&(t="");this.radiobutton=new ej.buttons.RadioButton({label:u,name:"resizetofit",checked:!0,value:"resizeroworcol"});this.resizeDialogObj=new ej.popups.Dialog({content:`<div id='resize-dialog-container'>
<div id='resize-dialog-content'>
<ul>
<li><input type="radio" id="header-checkbox"></li>
<div class="e-input-group resize-input-div">
<input class="e-input" name='input' type="text" value="${t}" id="resize-input" />
</div>
<li><input type="radio" id="resizetofit-checkbox"></li>
</ul>
</div>
</div>`,width:"470px",height:"auto",header:r,animationSettings:{effect:"None"},showCloseIcon:!0,closeOnEscape:!0,target:document.body.querySelectorAll("._bizgaze_popup_container")[document.body.querySelectorAll("._bizgaze_popup_container").length-1],created:this.resizeDialogCreated.bind(this),cssClass:"biz-ss-resizetofit",buttons:[{click:this.hideResizeDialog.bind(this),buttonModel:{content:"Cancel"}},{click:this.processResize.bind(this),buttonModel:{content:"Ok",isPrimary:!0}}],Close:this.hideResizeDialog.bind(this)});this.resizeDialogObj.appendTo("#biz-ss-resizetofit-dialog")}resizeDialogCreated(){this.radiobutton.appendTo("#header-checkbox");this.radiobutton=new ej.buttons.RadioButton({label:"Resize to fit",name:"resizetofit",value:"resizetofit"});this.radiobutton.appendTo("#resizetofit-checkbox");document.getElementsByClassName("biz-ss-resizetofit")[0].style.maxHeight=""}hideResizeDialog(){this.resizeDialogObj&&(this.resizeDialogObj.destroy(),setTimeout(()=>{this.resizeDialogObj=null}))}processResize(){return __awaiter(this,void 0,void 0,function*(){let u=this.base.ssObj.biz.getRange(),n=[],t=[],f=Number(document.getElementById("resize-input").value),r=u.split(" ");for(var i=0;i<r.length;i++){let u=this.base.swapRange(ej.spreadsheet.getIndexesFromAddress(r[i]));yield this.resizeHeaders(u,f,r[i]).then(i=>{t=t.concat(i.changedValues),n=n.concat(i.resizedHeaders)})}this.hideResizeDialog();this.base.focusDocumentViewer();t.length>0&&this.base.download.ssAutoSave({action:"imageincell",changedValues:t},this.base,!0);n.length>0&&this.base.download.ssAutoSave({action:"headerResize",resizedHeaders:n},this.base,!0)})}resizeHeaders(n,t,i){return __awaiter(this,void 0,void 0,function*(){var r;let f=[],u=[],e=this.base.getSheetIndex(),o=this.base.ssObj.biz.isRowsSelected(n),s=document.querySelector('input[name="resizetofit"]:checked').value;if(s=="resizeroworcol")if(o){for(r=n[0];r<=n[2];r++)yield this.setRowHeight(t,r),f.push({rowIndex:r,height:t,sheetIndex:e,resizeType:"row"});u=u.concat(this.base.setRowIncellImageSize(i))}else{for(r=n[1];r<=n[3];r++)yield this.setColWidth(t,r),f.push({colIndex:r,width:t,sheetIndex:e,resizeType:"col"});u=u.concat(this.base.setColumnIncellImageSize(i))}else this.base.ssObj.autoFit(i),u=o?u.concat(this.base.setRowIncellImageSize(i)):u.concat(this.base.setColumnIncellImageSize(i));return{changedValues:u,resizedHeaders:f}})}setRowHeight(n,t){return __awaiter(this,void 0,void 0,function*(){yield this.base.ssObj.setRowHeight(n+"px",t)})}setColWidth(n,t){return __awaiter(this,void 0,void 0,function*(){yield this.base.ssObj.setColWidth(n+"px",t)})}static Instance(){return this.instance===undefined&&(this.instance=new i),this.instance}}t.Dialogue=i})(i=t.Sheets||(t.Sheets={}))})(i=t.Components||(t.Components={}))})(i=t.Collaboration||(t.Collaboration={}))})(t=n.Apps||(n.Apps={}))})(Unibase||(Unibase={}));
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,210 @@
var Unibase;
(function (Unibase) {
let Apps;
(function (Apps) {
let Collaboration;
(function (Collaboration) {
let Components;
(function (Components) {
let Sheets;
(function (Sheets) {
class SpellChecker {
constructor() {
this.dic = {};
this.hederText = {};
}
init(base) {
this.base = base;
this.ssObj = this.base.ssObj;
}
processWords() {
this.dic = {};
this.words = '';
let sheet = this.ssObj.biz.getActiveSheet();
let rngIndexes = this.base.getIndexesFromAddress(sheet.selectedRange);
for (let i = rngIndexes[0]; i <= rngIndexes[2]; i++) {
if (!this.ssObj.biz.isRowAvailable(i, sheet)) {
continue;
}
for (let j = rngIndexes[1]; j <= rngIndexes[3]; j++) {
let cellObj = ej.spreadsheet.getCell(i, j, sheet);
if (cellObj && cellObj.value && typeof cellObj.value !== 'number') {
let value = cellObj.value.toString();
let temp = value.split(' ');
let values = [];
for (let k = 0; k < temp.length; k++) {
let val = temp[k];
if (!this.dic[val]) {
this.dic[val.trim()] = [{ rowIndex: i, colIndex: j }];
values.push(val.trim());
}
else {
this.dic[val.trim()].push({ rowIndex: i, colIndex: j });
}
}
values.length && (this.words = this.words + ' ' + values.toString().replaceAll(',', ' '));
}
}
}
this.splitWords = this.words.trim().split(' ').reverse();
this.requestServer();
}
requestServer() {
var data = {
LanguageID: 1033,
TexttoCheck: this.words.trim(),
CheckSpelling: true,
CheckSuggestion: true,
AddWord: false,
};
Unibase.Apps.Collaboration.DocumentManager.Instance().spellCheck(data).then((res) => { this.successCallback(res); });
}
successCallback(result) {
this.ssObj.allowEditing = false;
for (var i = 0; i < result.length; i++) {
result[i] = JSON.parse(result[i]);
}
this.result = result.reverse();
ej.popups.hideSpinner(this.dlgObj.element);
this.dlgObj.content = `<div>
<span class="biz-sc-info"></span>
<div style="padding-top: 10px">
<input class="biz-sc-value" type="text"/>
<input type="text" class='biz-sc-sugg'/>
</div>
<div style="padding-top: 10px">
<button type="text" class='biz-sc-change'>Change</button>
<button type="text" class='biz-sc-ignore'>Ignore</button>
</div>
</div>`;
this.dlgObj.dataBind();
this.dlgObj.element.querySelector('.e-footer-content').classList.add('biz-hide');
this.infoElem = this.dlgObj.element.querySelector('.biz-sc-info');
this.textObj = new ej.inputs.TextBox({}, this.dlgObj.element.querySelector('.biz-sc-value'));
this.ddSug = new ej.dropdowns.DropDownList({
dataSource: [], select: (e) => {
this.textObj.value = e.itemData.value;
}
}, this.dlgObj.element.querySelector('.biz-sc-sugg'));
let items = [
{
text: 'Change all',
}
];
this.spanElem = this.dlgObj.element.querySelector('.biz-sc-info');
this.ddChange = new ej.splitbuttons.SplitButton({ items: items, click: (e) => { this.change(); }, select: (e) => { this.changeAll(); } }, this.dlgObj.element.querySelector('.biz-sc-change'));
items = [
{
text: 'Ignore all',
}
];
this.ddIgnore = new ej.splitbuttons.SplitButton({ items: items, click: (e) => { this.ignore(); }, select: (e) => { this.ignoreAll(); } }, this.dlgObj.element.querySelector('.biz-sc-ignore'));
this.moveNext();
}
convertAsItemModel(items) {
for (let i = 0; i < items.length; i++) {
items[i] = { text: items[i] };
}
}
moveNext(skipPop) {
if (!this.splitWords.length) {
this.dlgObj.content = 'No spelling errors';
this.dlgObj.height = '95px';
this.dlgObj.dataBind();
this.dlgObj.element.querySelector('.e-footer-content').classList.remove('biz-hide');
this.ssObj.allowEditing = true;
setTimeout(() => {
this.destroySpellDialog();
}, 3000);
return;
}
if (!skipPop) {
this.value = this.splitWords.pop();
this.spellObj = this.result.pop();
this.spanElem.innerHTML = "Change <b>" + this.value + "</b> to:";
}
let addr = this.dic[this.value];
if (this.spellObj['Suggestions'] && this.spellObj['Suggestions'].length && addr.length) {
this.ssObj.selectRange(this.base.generateHeaderText(addr[0].colIndex + 1) + (addr[0].rowIndex + 1));
this.ddSug.dataSource = this.spellObj['Suggestions'];
this.ddSug.value = this.spellObj['Suggestions'][0];
this.textObj.value = this.spellObj['Suggestions'][0];
}
else {
delete this.dic[this.value];
this.moveNext();
}
}
change() {
let addr = this.dic[this.value];
let sheet = this.ssObj.biz.getActiveSheet();
let cellObj = ej.spreadsheet.getCell(addr[0].rowIndex, addr[0].colIndex, sheet);
let value = cellObj.value === this.value ? this.textObj.value : cellObj.value.replace(this.value, this.textObj.value);
let args = { rowIdx: addr[0].rowIndex, colIdx: addr[0].colIndex, value: value, action: 'spellcheck', origin: 'biz', sheetIndex: this.base.getSheetIndex() };
this.applySpellValue(addr[0].rowIndex, addr[0].colIndex, value);
this.ignore();
Unibase.Apps.Collaboration.Components.Sheets.Base.Instance().bizSignalr(args);
}
applySpellValue(rowIdx, colIdx, value) {
let sheet = this.ssObj.biz.getActiveSheet();
let cellObj = ej.spreadsheet.getCell(rowIdx, colIdx, sheet);
cellObj.value = value;
this.ssObj.biz.setCell(rowIdx, colIdx, sheet, cellObj);
Unibase.Apps.Collaboration.Components.Common.Download.Instance().ssAutoSave({ action: "cellSave", eventArgs: { address: "sheet!" + this.base.ssObj.biz.getRange() } }, this.base, true);
}
changeAll() {
let len = this.dic[this.value].length;
for (let i = 0; i < len; i++) {
this.change();
}
}
ignore() {
this.dic[this.value].shift();
this.moveNext(true);
}
ignoreAll() {
delete this.dic[this.value];
this.moveNext();
}
renderSpellDialog() {
let div = this.ssObj.element.querySelector('.biz-spelldlg') || ej.base.createElement('div', { className: 'biz-spelldlg' });
this.ssObj.element.querySelector('.e-sheet-panel').appendChild(div);
this.dlgObj = new ej.popups.Dialog({
target: this.ssObj.element.querySelector('.e-sheet-panel'),
content: '',
width: '350px',
height: '170px',
position: { X: 'right', Y: 'top' },
animationSettings: { effect: 'None' },
showCloseIcon: false,
buttons: [{
click: this.destroySpellDialog.bind(this),
buttonModel: { content: 'Close' }
}],
open: () => {
ej.popups.createSpinner({ target: this.dlgObj.element });
ej.popups.showSpinner(this.dlgObj.element);
},
});
this.dlgObj.appendTo(div);
this.processWords();
}
destroySpellDialog() {
this.ddSug.destroy();
this.ddChange.destroy();
this.ddIgnore.destroy();
this.dlgObj.destroy();
}
static Instance() {
if (this.instance === undefined) {
this.instance = new SpellChecker();
}
return this.instance;
}
}
Sheets.SpellChecker = SpellChecker;
})(Sheets = Components.Sheets || (Components.Sheets = {}));
})(Components = Collaboration.Components || (Collaboration.Components = {}));
})(Collaboration = Apps.Collaboration || (Apps.Collaboration = {}));
})(Apps = Unibase.Apps || (Unibase.Apps = {}));
})(Unibase || (Unibase = {}));
File diff suppressed because one or more lines are too long
+11
View File
@@ -0,0 +1,11 @@
var Unibase;(function(n){let t;(function(t){let i;(function(t){let i;(function(t){let i;(function(t){class i{constructor(){this.dic={};this.hederText={}}init(n){this.base=n;this.ssObj=this.base.ssObj}processWords(){this.dic={};this.words="";let t=this.ssObj.biz.getActiveSheet(),n=this.base.getIndexesFromAddress(t.selectedRange);for(let i=n[0];i<=n[2];i++)if(this.ssObj.biz.isRowAvailable(i,t))for(let r=n[1];r<=n[3];r++){let n=ej.spreadsheet.getCell(i,r,t);if(n&&n.value&&typeof n.value!="number"){let f=n.value.toString(),u=f.split(" "),t=[];for(let n=0;n<u.length;n++){let f=u[n];this.dic[f]?this.dic[f.trim()].push({rowIndex:i,colIndex:r}):(this.dic[f.trim()]=[{rowIndex:i,colIndex:r}],t.push(f.trim()))}t.length&&(this.words=this.words+" "+t.toString().replaceAll(","," "))}}this.splitWords=this.words.trim().split(" ").reverse();this.requestServer()}requestServer(){var t={LanguageID:1033,TexttoCheck:this.words.trim(),CheckSpelling:!0,CheckSuggestion:!0,AddWord:!1};n.Apps.Collaboration.DocumentManager.Instance().spellCheck(t).then(n=>{this.successCallback(n)})}successCallback(n){this.ssObj.allowEditing=!1;for(var t=0;t<n.length;t++)n[t]=JSON.parse(n[t]);this.result=n.reverse();ej.popups.hideSpinner(this.dlgObj.element);this.dlgObj.content=`<div>
<span class="biz-sc-info"></span>
<div style="padding-top: 10px">
<input class="biz-sc-value" type="text"/>
<input type="text" class='biz-sc-sugg'/>
</div>
<div style="padding-top: 10px">
<button type="text" class='biz-sc-change'>Change</button>
<button type="text" class='biz-sc-ignore'>Ignore</button>
</div>
</div>`;this.dlgObj.dataBind();this.dlgObj.element.querySelector(".e-footer-content").classList.add("biz-hide");this.infoElem=this.dlgObj.element.querySelector(".biz-sc-info");this.textObj=new ej.inputs.TextBox({},this.dlgObj.element.querySelector(".biz-sc-value"));this.ddSug=new ej.dropdowns.DropDownList({dataSource:[],select:n=>{this.textObj.value=n.itemData.value}},this.dlgObj.element.querySelector(".biz-sc-sugg"));let i=[{text:"Change all"}];this.spanElem=this.dlgObj.element.querySelector(".biz-sc-info");this.ddChange=new ej.splitbuttons.SplitButton({items:i,click:()=>{this.change()},select:()=>{this.changeAll()}},this.dlgObj.element.querySelector(".biz-sc-change"));i=[{text:"Ignore all"}];this.ddIgnore=new ej.splitbuttons.SplitButton({items:i,click:()=>{this.ignore()},select:()=>{this.ignoreAll()}},this.dlgObj.element.querySelector(".biz-sc-ignore"));this.moveNext()}convertAsItemModel(n){for(let t=0;t<n.length;t++)n[t]={text:n[t]}}moveNext(n){if(!this.splitWords.length){this.dlgObj.content="No spelling errors";this.dlgObj.height="95px";this.dlgObj.dataBind();this.dlgObj.element.querySelector(".e-footer-content").classList.remove("biz-hide");this.ssObj.allowEditing=!0;setTimeout(()=>{this.destroySpellDialog()},3e3);return}n||(this.value=this.splitWords.pop(),this.spellObj=this.result.pop(),this.spanElem.innerHTML="Change <b>"+this.value+"<\/b> to:");let t=this.dic[this.value];this.spellObj.Suggestions&&this.spellObj.Suggestions.length&&t.length?(this.ssObj.selectRange(this.base.generateHeaderText(t[0].colIndex+1)+(t[0].rowIndex+1)),this.ddSug.dataSource=this.spellObj.Suggestions,this.ddSug.value=this.spellObj.Suggestions[0],this.textObj.value=this.spellObj.Suggestions[0]):(delete this.dic[this.value],this.moveNext())}change(){let t=this.dic[this.value],u=this.ssObj.biz.getActiveSheet(),i=ej.spreadsheet.getCell(t[0].rowIndex,t[0].colIndex,u),r=i.value===this.value?this.textObj.value:i.value.replace(this.value,this.textObj.value),f={rowIdx:t[0].rowIndex,colIdx:t[0].colIndex,value:r,action:"spellcheck",origin:"biz",sheetIndex:this.base.getSheetIndex()};this.applySpellValue(t[0].rowIndex,t[0].colIndex,r);this.ignore();n.Apps.Collaboration.Components.Sheets.Base.Instance().bizSignalr(f)}applySpellValue(t,i,r){let u=this.ssObj.biz.getActiveSheet(),f=ej.spreadsheet.getCell(t,i,u);f.value=r;this.ssObj.biz.setCell(t,i,u,f);n.Apps.Collaboration.Components.Common.Download.Instance().ssAutoSave({action:"cellSave",eventArgs:{address:"sheet!"+this.base.ssObj.biz.getRange()}},this.base,!0)}changeAll(){let n=this.dic[this.value].length;for(let t=0;t<n;t++)this.change()}ignore(){this.dic[this.value].shift();this.moveNext(!0)}ignoreAll(){delete this.dic[this.value];this.moveNext()}renderSpellDialog(){let n=this.ssObj.element.querySelector(".biz-spelldlg")||ej.base.createElement("div",{className:"biz-spelldlg"});this.ssObj.element.querySelector(".e-sheet-panel").appendChild(n);this.dlgObj=new ej.popups.Dialog({target:this.ssObj.element.querySelector(".e-sheet-panel"),content:"",width:"350px",height:"170px",position:{X:"right",Y:"top"},animationSettings:{effect:"None"},showCloseIcon:!1,buttons:[{click:this.destroySpellDialog.bind(this),buttonModel:{content:"Close"}}],open:()=>{ej.popups.createSpinner({target:this.dlgObj.element}),ej.popups.showSpinner(this.dlgObj.element)}});this.dlgObj.appendTo(n);this.processWords()}destroySpellDialog(){this.ddSug.destroy();this.ddChange.destroy();this.ddIgnore.destroy();this.dlgObj.destroy()}static Instance(){return this.instance===undefined&&(this.instance=new i),this.instance}}t.SpellChecker=i})(i=t.Sheets||(t.Sheets={}))})(i=t.Components||(t.Components={}))})(i=t.Collaboration||(t.Collaboration={}))})(t=n.Apps||(n.Apps={}))})(Unibase||(Unibase={}));