all files / workbook/integrations/ chart.js

99.39% Statements 164/165
94.44% Branches 102/108
100% Functions 21/21
99.38% Lines 160/161
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   1206× 1206×   1206× 1206× 1206× 1206× 1206×   1203× 25× 25× 25× 25× 25×     235× 235× 235× 235× 235× 235× 235× 235× 235× 245×                   245×   243× 243× 243× 243× 243× 243× 243× 54× 54×     189× 189× 57× 57× 57×     132× 132×     243× 243× 295× 295×   295×   295×   243× 295× 243× 243×   243× 166×   243× 14×   14× 10×     243× 243× 243×   243× 222×   243× 194× 194× 194× 194× 10× 10× 10× 10×     184× 184× 184× 184×   194× 194× 194× 193× 193× 84×     109×         49× 49× 49×           243×   235× 235× 245×     233×     233×     233× 233× 233×   32× 32× 32× 32× 33× 33× 33× 30× 37× 37× 30× 30× 30× 30× 30×         33×     32× 43× 43× 43× 32×           97× 112× 97×       30× 30× 31×                       1203× 1203×   175259×        
define(["require", "exports", "../common/index", "../base/index", "../common/event", "@syncfusion/ej2-base"], function (require, exports, index_1, index_2, event_1, ej2_base_1) {
    "use strict";
    Object.defineProperty(exports, "__esModule", { value: true });
    var WorkbookChart = (function () {
        function WorkbookChart(parent) {
            this.parent = parent;
            this.addEventListener();
        }
        WorkbookChart.prototype.addEventListener = function () {
            this.parent.on(event_1.setChart, this.setChartHandler, this);
            this.parent.on(event_1.deleteChartColl, this.deleteChartColl, this);
            this.parent.on(event_1.refreshChartSize, this.refreshChartSize, this);
            this.parent.on(event_1.focusChartBorder, this.focusChartBorder, this);
            this.parent.on(event_1.importModelUpdate, this.updateChartsFromSheet, this);
        };
        WorkbookChart.prototype.removeEventListener = function () {
            if (!this.parent.isDestroyed) {
                this.parent.off(event_1.setChart, this.setChartHandler);
                this.parent.off(event_1.deleteChartColl, this.deleteChartColl);
                this.parent.off(event_1.refreshChartSize, this.refreshChartSize);
                this.parent.off(event_1.focusChartBorder, this.focusChartBorder);
                this.parent.off(event_1.importModelUpdate, this.updateChartsFromSheet);
            }
        };
        WorkbookChart.prototype.setChartHandler = function (args) {
            args.isInitCell = ej2_base_1.isNullOrUndefined(args.isInitCell) ? false : args.isInitCell;
            args.isUndoRedo = ej2_base_1.isNullOrUndefined(args.isUndoRedo) ? true : args.isUndoRedo;
            args.isPaste = ej2_base_1.isNullOrUndefined(args.isPaste) ? false : args.isPaste;
            var sheet;
            var chartModel;
            var chartLength;
            var chart = args.chart;
            var i = 0;
            var _loop_1 = function () {
                if (args.isCut === false) {
                    chart[i] = {
                        range: chart[i].range, id: ej2_base_1.getUniqueID('e_spreadsheet_chart'), theme: chart[i].theme,
                        isSeriesInRows: chart[i].isSeriesInRows, type: chart[i].type,
                        markerSettings: chart[i].markerSettings,
                        title: chart[i].title, legendSettings: chart[i].legendSettings,
                        primaryXAxis: chart[i].primaryXAxis, primaryYAxis: chart[i].primaryYAxis,
                        dataLabelSettings: chart[i].dataLabelSettings,
                        height: chart[i].height, width: chart[i].width
                    };
                }
                if (document.getElementById(args.chart[i].id)) {
                    i++;
                    return "continue";
                }
                chartModel = chart[i];
                chartModel.theme = chartModel.theme || 'Material';
                chartModel.type = chartModel.type || 'Line';
                chartModel.isSeriesInRows = chartModel.isSeriesInRows || false;
                var range = void 0;
                var rangeSheetIdx = this_1.parent.activeSheetIndex;
                if (ej2_base_1.isNullOrUndefined(chartModel.range)) {
                    sheet = this_1.parent.getActiveSheet();
                    range = sheet.selectedRange;
                }
                else {
                    var tokenIdx = chartModel.range.lastIndexOf('!');
                    if (tokenIdx > 0) {
                        rangeSheetIdx = index_2.getSheetIndex(this_1.parent, chartModel.range.substring(0, tokenIdx));
                        sheet = index_2.getSheet(this_1.parent, rangeSheetIdx);
                        range = chartModel.range.substring(tokenIdx + 1);
                    }
                    else {
                        range = chartModel.range;
                        sheet = this_1.parent.getActiveSheet();
                    }
                }
                var rangeData = [];
                range.split(' ').forEach(function (individualRange) {
                    var rangeArray = index_1.getSwapRange(index_1.getRangeIndexes(individualRange));
                    if (rangeArray[0] === 0 && rangeArray[2] === sheet.rowCount - 1 && rangeArray[2] > sheet.usedRange.rowIndex) {
                        rangeArray[2] = sheet.usedRange.rowIndex;
                    }
                    if (rangeArray[1] === 0 && rangeArray[3] === sheet.colCount - 1 && rangeArray[3] > sheet.usedRange.colIndex) {
                        rangeArray[3] = sheet.usedRange.colIndex;
                    }
                    rangeData.push(rangeArray);
                });
                rangeData.sort(function (a, b) { return a[0] === b[0] ? a[1] - b[1] : a[0] - b[0]; });
                var sortedRanges = rangeData.map(function (rangeArray) { return rangeArray.length && index_1.getRangeAddress(rangeArray); });
                Eif (chartModel.range !== '') {
                    chartModel.range = sheet.name + "!" + sortedRanges.join(' ');
                }
                if (ej2_base_1.isNullOrUndefined(chartModel.id)) {
                    chartModel.id = ej2_base_1.getUniqueID('e_spreadsheet_chart');
                }
                if (chartModel.markerSettings && chartModel.markerSettings.visible) {
                    if (chartModel.markerSettings.isFilled === undefined) {
                        chartModel.markerSettings.isFilled = true;
                    }
                    if (chartModel.markerSettings.shape === undefined) {
                        chartModel.markerSettings.shape = 'Circle';
                    }
                }
                chartModel.height = chartModel.height || 290;
                chartModel.width = chartModel.width || 480;
                this_1.parent.notify(event_1.initiateChart, { option: chartModel, isInitCell: args.isInitCell, triggerEvent: args.isUndoRedo, range: args.range,
                    dataSheetIdx: args.dataSheetIdx, isPaste: args.isPaste });
                if (this_1.parent.chartColl.every(function (chartobj) { return chartobj.id !== chartModel.id; })) {
                    this_1.parent.chartColl.push(chartModel);
                }
                if (!args.isInitCell || args.isPaste || args.isUndo || args.isRedo) {
                    var sheetIdx = void 0;
                    var rowIdx = void 0;
                    var colIdx = void 0;
                    if (args.range && (args.isUndo || args.isRedo)) {
                        sheetIdx = index_2.getSheetIndex(this_1.parent, args.range.substring(0, args.range.lastIndexOf('!')));
                        var range_1 = index_1.getSwapRange(index_1.getRangeIndexes(args.range));
                        rowIdx = range_1[0];
                        colIdx = range_1[1];
                    }
                    else {
                        sheetIdx = args.sheetId === undefined ? rangeSheetIdx : index_2.getSheetIndexFromId(this_1.parent, args.sheetId);
                        var indexes = this_1.getIndexesFromChart(chartModel);
                        rowIdx = indexes[0];
                        colIdx = indexes[1];
                    }
                    var sheet_1 = ej2_base_1.isUndefined(sheetIdx) ? this_1.parent.getActiveSheet() : this_1.parent.sheets[sheetIdx];
                    var cell = index_2.getCell(rowIdx, colIdx, sheet_1);
                    if (!this_1.parent.isPrintingProcessing) {
                        chartModel.address = [rowIdx, colIdx];
                        if (cell && cell.chart) {
                            cell.chart.push(chartModel);
                        }
                        else {
                            index_2.setCell(rowIdx, colIdx, sheet_1, { chart: [chartModel] }, true);
                        }
                    }
                }
                else {
                    var indexes = index_1.getRangeIndexes(args.range);
                    var chartIdxes = this_1.getIndexesFromChart(chartModel);
                    if (indexes[0] !== chartIdxes[0] || indexes[1] !== chartIdxes[1]) {
                        chartLength = chart.length;
                        var eventArgs = { prevTop: chartModel.top, prevLeft: chartModel.left, prevRowIdx: indexes[0],
                            prevColIdx: indexes[1], prevHeight: chartModel.height, prevWidth: chartModel.width, currentTop: chartModel.top,
                            currentLeft: chartModel.left, currentRowIdx: chartIdxes[0], currentColIdx: chartIdxes[1], id: chartModel.id,
                            currentHeight: chartModel.height, currentWidth: chartModel.width, requestType: 'chartRefreshOnInit' };
                        this_1.parent.notify(event_1.refreshChartCellOnInit, eventArgs);
                        i -= chartLength - chart.length;
                    }
                }
                i++;
            };
            var this_1 = this;
            while (i < chart.length) {
                _loop_1();
            }
        };
        WorkbookChart.prototype.getIndexesFromChart = function (chart) {
            var chartRowIdx = {
                clientY: Number(index_1.addDPRValue(chart.top).toFixed(2)), isImage: true
            };
            var chartColIdx = {
                clientX: Number(index_1.addDPRValue(chart.left).toFixed(2)), isImage: true
            };
            this.parent.notify(event_1.getChartRowIdxFromClientY, chartRowIdx);
            this.parent.notify(event_1.getChartColIdxFromClientX, chartColIdx);
            return [chartRowIdx.clientY, chartColIdx.clientX];
        };
        WorkbookChart.prototype.refreshChartSize = function (args) {
            var chartCnt;
            var j = 1;
            var sheetCnt = this.parent.sheets.length + 1;
            while (j < sheetCnt) {
                var charts = this.parent.chartColl;
                chartCnt = charts ? charts.length : 0;
                if (chartCnt) {
                    while (chartCnt--) {
                        var chart = this.parent.chartColl[chartCnt];
                        if (args.overlayEle && !ej2_base_1.isNullOrUndefined(args.overlayEle.querySelector('#' + chart.id))) {
                            var chartObj = this.parent.element.querySelector('.' + chart.id);
                            var excelFilter = ej2_base_1.getComponent(chartObj, 'chart') || ej2_base_1.getComponent(chartObj, 'accumulationchart');
                            Eif (excelFilter) {
                                excelFilter.height = args.height;
                                excelFilter.width = args.width;
                            }
                        }
                    }
                }
                j++;
            }
        };
        WorkbookChart.prototype.focusChartBorder = function (args) {
            for (var idx = 0; idx < this.parent.chartColl.length; idx++) {
                var overlayEle = document.getElementById(args.id);
                var chartEle = document.getElementById(this.parent.chartColl[idx].id);
                if (overlayEle && chartEle && ej2_base_1.closest(chartEle, '.' + overlayEle.classList[1]) === overlayEle) {
                    this.parent.notify(event_1.initiateChart, {
                        option: this.parent.chartColl[idx], isRefresh: true
                    });
                }
            }
        };
        WorkbookChart.prototype.deleteChartColl = function (args) {
            for (var idx = 0; idx < this.parent.chartColl.length; idx++) {
                if (this.parent.chartColl[idx].id + '_overlay' === args.id) {
                    this.parent.chartColl.splice(idx, 1);
                }
            }
        };
        WorkbookChart.prototype.updateChartsFromSheet = function () {
            var _this = this;
            this.parent.sheets.forEach(function (sheet) {
                if (sheet.chartColl) {
                    sheet.chartColl.forEach(function (chartModel) {
                        if (ej2_base_1.isNullOrUndefined(chartModel.id)) {
                            chartModel.id = ej2_base_1.getUniqueID('e_spreadsheet_chart');
                        }
                        var indexes = chartModel.address;
                        var cell = index_2.getCell(indexes[0], indexes[1], sheet, true);
                        Eif (cell) {
                            if (!cell.chart) {
                                cell.chart = [];
                            }
                            cell.chart.push(chartModel);
                        }
                        else {
                            index_2.setCell(indexes[0], indexes[1], sheet, { chart: [chartModel] });
                        }
                        Eif (_this.parent.chartColl.every(function (chartobj) { return chartobj.id !== chartModel.id; })) {
                            _this.parent.chartColl.push(chartModel);
                        }
                    });
                }
            });
        };
        WorkbookChart.prototype.destroy = function () {
            this.removeEventListener();
            this.parent = null;
        };
        WorkbookChart.prototype.getModuleName = function () {
            return 'workbookChart';
        };
        return WorkbookChart;
    }());
    exports.WorkbookChart = WorkbookChart;
});