all files / workbook/base/ data.js

98.33% Statements 235/239
96.82% Branches 213/220
100% Functions 15/15
98.32% Lines 234/238
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358   21246× 21246× 21246× 21246× 21246× 21246× 21245× 21245×       21246× 21246× 21246×   21246×   21246× 21246× 21244× 21244× 21244× 21244× 21244× 21244× 21244× 21244× 206× 206× 206× 206× 206× 206× 206× 206× 206× 206× 130× 130×     76×   206× 219× 219× 219× 219× 24890× 24890× 24890× 24890× 538280× 222× 222×   538058× 538058× 538058× 3261× 2764× 215× 127×     88×       2549×   2764× 2764× 743×           743× 209×         497× 497×   3261×     534797× 524997× 20656× 20656× 20419× 80× 75×     20339× 20338× 20338×       20656×     504341×     534797×     538056× 23918× 23918× 23918× 10×   23918×   538056×   24888×         21038× 21038× 21038× 124827×   124820× 1087× 1087×   123733× 123733× 123733× 4627351×   4627351× 4627351× 4627351× 181×     4627350× 155× 155× 2216× 5655× 155×   5500× 5500× 4962×   5500× 3439×   5500×   1925× 1925×   5500×       4627195× 118× 249× 249×   249× 249×       4627077× 66× 161× 161×   161× 161×       4627350× 1862× 1862×   4625488× 51× 51×   4625437× 4184× 4184× 4184×   4625437× 4625437×   123732×     21243×         23219× 23218× 10×   23208× 104×   104× 104×     23104× 20553×     2551× 2551× 2015× 2015× 37×   37× 37×     2551×           14×       11×                     8515× 8515× 8515× 8515× 8515× 256× 238×   234×     8515× 20557× 2469× 2469×   20557× 901× 901× 7694×     7693×     901× 901×   20557× 1445× 1337× 1337× 1158×     1445× 1296×   1445× 1445× 6742×   1445×     20557×   8515× 8515× 20557× 20557×        
define(["require", "exports", "../index", "../common/index", "../common/index", "./index", "@syncfusion/ej2-base", "./../index"], function (require, exports, index_1, index_2, index_3, index_4, ej2_base_1, index_5) {
    "use strict";
    Object.defineProperty(exports, "__esModule", { value: true });
    function getData(context, address, columnWiseData, valueOnly, frozenIndexes, filterDialog, formulaCellRef, idx, skipHiddenRows, commonAddr, dateValueForSpecificColIdx, dateColData) {
        if (skipHiddenRows === void 0) { skipHiddenRows = true; }
        return new Promise(function (resolve) {
            resolve((function () {
                var sheetIdx;
                var lastIndex = address.lastIndexOf('!');
                if (lastIndex > -1) {
                    sheetIdx = index_1.getSheetIndex(context, address.substring(0, lastIndex));
                    address = address.substring(lastIndex + 1);
                }
                else {
                    sheetIdx = context.activeSheetIndex;
                }
                var sheet = index_1.getSheet(context, sheetIdx);
                var indexes = index_2.getIndexesFromAddress(commonAddr || address);
                var args = {
                    sheet: sheet, indexes: indexes, formulaCellRef: formulaCellRef, sheetIndex: idx,
                    promise: new Promise(function (resolve) { resolve((function () { })()); })
                };
                context.notify(index_2.updateSheetFromDataSource, args);
                return args.promise.then(function () {
                    var i;
                    var row;
                    var data;
                    var sRow = indexes[0];
                    var frozenRow = context.frozenRowCount(sheet);
                    var frozenCol = context.frozenColCount(sheet);
                    var isDateCol = !!dateColData;
                    if (columnWiseData) {
                        data = [];
                        var index_6;
                        var cells_1;
                        var parsedNumVal_1;
                        var key_1;
                        var cellProp_1;
                        var localeObj_1;
                        var intl_1;
                        var autoDetectFormatFn_1;
                        if (valueOnly) {
                            localeObj_1 = ej2_base_1.getNumericObject(context.locale);
                            intl_1 = new ej2_base_1.Internationalization(context.locale);
                        }
                        else {
                            autoDetectFormatFn_1 = index_5.getAutoDetectFormatParser(context);
                        }
                        address.split(',').forEach(function (addr, addrIdx) {
                            indexes = index_1.getRangeIndexes(addr);
                            index_6 = 0;
                            sRow = indexes[0];
                            while (sRow <= indexes[2]) {
                                cells_1 = data[index_6] || {};
                                row = index_4.getRow(sheet, sRow);
                                i = indexes[1];
                                while (i <= indexes[3]) {
                                    if (skipHiddenRows && index_4.isHiddenRow(sheet, sRow) && !(filterDialog && index_1.isFilterHidden(sheet, sRow))) {
                                        sRow++;
                                        continue;
                                    }
                                    key_1 = index_2.getColumnHeaderText(i + 1);
                                    var cell = row ? index_4.getCell(sRow, i, sheet) : null;
                                    if (valueOnly) {
                                        if (cell && (cell.value || cell.value === 0)) {
                                            if (cell.formattedText && cell.format && !cell.format.includes('*')) {
                                                if (index_5.isCustomDateTime(cell.format, false)) {
                                                    cells_1[key_1] = index_2.intToDate(cell.value);
                                                }
                                                else {
                                                    cells_1[key_1] = cell.formattedText.toString().trim();
                                                }
                                            }
                                            else {
                                                cells_1[key_1] = getValueFromFormat(context, cell, sRow, i, false, intl_1);
                                            }
                                            cellProp_1 = cell.value;
                                            if (typeof cellProp_1 === 'string') {
                                                Iif (localeObj_1.decimal !== '.' && cellProp_1.includes(localeObj_1.decimal)) {
                                                    parsedNumVal_1 = cellProp_1.replace(localeObj_1.decimal, '.');
                                                    if (index_3.isNumber(parsedNumVal_1)) {
                                                        cellProp_1 = parseFloat(parsedNumVal_1);
                                                    }
                                                }
                                                else if (index_3.isNumber(cellProp_1)) {
                                                    cellProp_1 = parseFloat(cellProp_1);
                                                }
                                            }
                                        }
                                        else {
                                            cells_1[key_1] = '';
                                            cellProp_1 = null;
                                        }
                                        cells_1[key_1 + "_value"] = cellProp_1;
                                    }
                                    else {
                                        if ((cell && (cell.formula || !ej2_base_1.isNullOrUndefined(cell.value))) || Object.keys(cells_1).length) {
                                            if (i === dateValueForSpecificColIdx) {
                                                cellProp_1 = { value: getValueFromFormat(context, cell, sRow, i, true) };
                                                if (cellProp_1.value && typeof cellProp_1.value === 'string') {
                                                    if (index_3.isNumber(cellProp_1.value) && !cell.value.toString().includes('\n')) {
                                                        if (!cell.format || cell.format !== '@') {
                                                            cellProp_1.value = parseFloat(cellProp_1.value);
                                                        }
                                                    }
                                                    else if (!cell.format) {
                                                        autoDetectFormatFn_1(cell);
                                                        if (index_3.isNumber(cell.value) && !cell.value.toString().includes('\n')) {
                                                            cellProp_1.value = parseFloat(cell.value);
                                                        }
                                                    }
                                                }
                                                cells_1[key_1] = ej2_base_1.extend({}, cell, cellProp_1);
                                            }
                                            else {
                                                cells_1[key_1] = cell;
                                            }
                                        }
                                        if (cell && ((!!cell.rowSpan && cell.rowSpan !== 1) || (!!cell.colSpan && cell.colSpan !== 1))) {
                                            data = [{ throwMergeAlert: true }];
                                            return;
                                        }
                                    }
                                    if (i === indexes[3] && Object.keys(cells_1).length) {
                                        cells_1['__rowIndex'] = (sRow + 1).toString();
                                        data[index_6] = cells_1;
                                        if (isDateCol && addrIdx === 0 && !index_1.isFilterHidden(sheet, sRow)) {
                                            dateColData.push(cells_1);
                                        }
                                        index_6++;
                                    }
                                    i++;
                                }
                                sRow++;
                            }
                        });
                    }
                    else {
                        data = new Map();
                        var checkFrozenIdx = !!(!valueOnly && frozenIndexes && frozenIndexes.length);
                        while (sRow <= indexes[2]) {
                            if (checkFrozenIdx && sRow >= frozenRow && sRow < frozenIndexes[0]) {
                                sRow = frozenIndexes[0];
                                continue;
                            }
                            if (!valueOnly && index_4.isHiddenRow(sheet, sRow)) {
                                sRow++;
                                continue;
                            }
                            row = index_4.getRow(sheet, sRow);
                            i = indexes[1];
                            while (i <= indexes[3]) {
                                var eventArgs = { cell: index_4.getCell(sRow, i, sheet), address: index_2.getCellAddress(sRow, i),
                                    rowIndex: sRow, colIndex: i };
                                context.trigger(index_3.queryCellInfo, eventArgs);
                                var cellObj = index_4.getCell(sRow, i, sheet, false, true);
                                if (cellObj.formula && cellObj.formula.toUpperCase().includes('UNIQUE')) {
                                    context.notify(index_5.calculateFormula, { cell: cellObj, rowIdx: sRow, colIdx: i, sheetIndex: context.activeSheetIndex,
                                        address: eventArgs.address });
                                }
                                if (cellObj.colSpan > 1 && cellObj.rowSpan > 1) {
                                    var cell = void 0;
                                    for (var j = sRow, len = sRow + cellObj.rowSpan; j < len; j++) {
                                        for (var k = i, len_1 = i + cellObj.colSpan; k < len_1; k++) {
                                            if (j === sRow && k === i) {
                                                continue;
                                            }
                                            cell = new Object();
                                            if (j !== sRow) {
                                                cell.rowSpan = sRow - j;
                                            }
                                            if (k !== i) {
                                                cell.colSpan = i - k;
                                            }
                                            if (sheet.rows[j] && sheet.rows[j].cells &&
                                                sheet.rows[j].cells[k]) {
                                                delete sheet.rows[j].cells[k].value;
                                                delete sheet.rows[j].cells[k].formula;
                                            }
                                            index_5.setCell(j, k, sheet, cell, true);
                                        }
                                    }
                                }
                                else if (cellObj.colSpan > 1) {
                                    for (var j = i + 1, len = i + cellObj.colSpan; j < len; j++) {
                                        index_5.setCell(sRow, j, sheet, { colSpan: i - j }, true);
                                        Eif (sheet.rows[sRow] && sheet.rows[sRow].cells &&
                                            sheet.rows[sRow].cells[j]) {
                                            delete sheet.rows[sRow].cells[j].value;
                                            delete sheet.rows[sRow].cells[j].formula;
                                        }
                                    }
                                }
                                else if (cellObj.rowSpan > 1) {
                                    for (var j = sRow + 1, len = sRow + cellObj.rowSpan; j < len; j++) {
                                        index_5.setCell(j, i, sheet, { rowSpan: sRow - j }, true);
                                        Eif (sheet.rows[j] && sheet.rows[j].cells &&
                                            sheet.rows[j].cells[i]) {
                                            delete sheet.rows[j].cells[i].value;
                                            delete sheet.rows[j].cells[i].formula;
                                        }
                                    }
                                }
                                if (!valueOnly && index_4.isHiddenCol(sheet, i)) {
                                    i++;
                                    continue;
                                }
                                if (checkFrozenIdx && i >= frozenCol && i < frozenIndexes[1]) {
                                    i = frozenIndexes[1];
                                    continue;
                                }
                                if (cellObj.style) {
                                    var style = {};
                                    Object.assign(style, cellObj.style);
                                    cellObj.style = style;
                                }
                                data.set(eventArgs.address, cellObj);
                                i++;
                            }
                            sRow++;
                        }
                    }
                    return data;
                });
            })());
        });
    }
    exports.getData = getData;
    function getValueFromFormat(context, cell, rowIdx, colIdx, getIntValueFromDate, intl) {
        if (cell) {
            if (ej2_base_1.isNullOrUndefined(cell.value)) {
                return '';
            }
            if (cell.format) {
                var args = { value: cell.value, formattedText: cell.value, cell: cell, format: cell.format,
                    checkDate: !getIntValueFromDate, rowIndex: rowIdx, colIndex: colIdx, dataUpdate: true };
                context.notify(index_3.getFormattedCellObject, args);
                return args.dateObj && args.dateObj.toString() !== 'Invalid Date' ? args.dateObj : (getIntValueFromDate ? args.value :
                    args.formattedText.toString().trim());
            }
            else if (getIntValueFromDate) {
                return cell.value;
            }
            else {
                var cellVal = cell.value;
                if (index_3.isNumber(cellVal)) {
                    cellVal = Number(cell.value).toString();
                    if (cellVal.includes('.') || cellVal.length > 11) {
                        var options = { args: { value: cellVal, updateValue: true }, fResult: cellVal,
                            cellVal: cellVal, intl: intl };
                        context.notify(index_1.parseDecimalNumber, options);
                        cellVal = options.fResult;
                    }
                }
                return cellVal;
            }
        }
        else {
            return '';
        }
    }
    exports.getValueFromFormat = getValueFromFormat;
    function getModel(model, idx) {
        var diff;
        var j;
        var prevIdx;
        if (ej2_base_1.isUndefined(model[idx]) || !(model[idx] && model[idx].index === idx)) {
            for (var i = 0; i <= idx; i++) {
                if (model && model[i]) {
                    diff = model[i].index - i;
                    if (diff > 0) {
                        model.forEach(function (value, index) {
                            if (value && value.index) {
                                prevIdx = value.index;
                                j = 1;
                            }
                            if (value && !value.index && index !== 0) {
                                value.index = prevIdx + j;
                            }
                            j++;
                        });
                        while (diff--) {
                            model.splice(i, 0, null);
                        }
                        i += diff;
                    }
                }
                else Eif (model) {
                    model[i] = null;
                }
                else {
                    model = [];
                }
            }
        }
        return model[idx];
    }
    exports.getModel = getModel;
    function processIdx(model, isSheet, context, isSort) {
        var j;
        var diff = 0;
        var cnt;
        var len = model.length;
        if (isSort && model.length > 0) {
            model.sort(function (a, b) {
                if (!ej2_base_1.isNullOrUndefined(a) && !ej2_base_1.isUndefined(a.index) && !ej2_base_1.isNullOrUndefined(b) && !ej2_base_1.isUndefined(b.index)) {
                    return a.index - b.index;
                }
                return 0;
            });
        }
        var _loop_1 = function (i) {
            if (!ej2_base_1.isNullOrUndefined(model[i]) && !ej2_base_1.isUndefined(model[i].index)) {
                cnt = diff = model[i].index - i;
                delete model[i].index;
            }
            if (diff > 0) {
                j = 0;
                while (diff--) {
                    if (isSheet) {
                        context.createSheet(i + j);
                        j++;
                    }
                    else {
                        model.splice(i, 0, null);
                    }
                }
                i += cnt;
                len += cnt;
            }
            if (isSheet) {
                if (model[i].id < 1) {
                    model[i].id = index_4.getMaxSheetId(context.sheets);
                    if (model[i].properties) {
                        model[i].properties.id = model[i].id;
                    }
                }
                if (!model[i].name) {
                    context.setSheetPropertyOnMute(model[i], 'name', 'Sheet' + index_4.getSheetNameCount(context));
                }
                var cellCnt_1 = 0;
                model[i].rows.forEach(function (row) {
                    cellCnt_1 = Math.max(cellCnt_1, (row && row.cells && row.cells.length - 1) || 0);
                });
                context.setSheetPropertyOnMute(model[i], 'usedRange', { rowIndex: model[i].rows.length ? model[i].rows.length - 1 : 0,
                    colIndex: cellCnt_1 });
            }
            out_i_1 = i;
        };
        var out_i_1;
        for (var i = 0; i < len; i++) {
            _loop_1(i);
            i = out_i_1;
        }
    }
    exports.processIdx = processIdx;
});