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