UNPKG

@syncfusion/ej2-spreadsheet

Version:

Feature-rich JavaScript Spreadsheet (Excel) control with built-in support for selection, editing, formatting, importing and exporting to Excel

106 lines (105 loc) 4.08 kB
import { getRangeIndexes } from '../common/index'; import { getCell, setCell, getSheetIndex, getSheet } from '../base/index'; import { importModelUpdate, setImage } from '../common/event'; import { isUndefined } from '@syncfusion/ej2-base'; /** * Specifies image. */ var WorkbookImage = /** @class */ (function () { function WorkbookImage(parent) { this.parent = parent; this.addEventListener(); } WorkbookImage.prototype.setImage = function (args) { var lastIndex = args.range ? args.range.lastIndexOf('!') : -1; var imgRange = args.range ? (lastIndex > -1) ? args.range.substring(lastIndex + 1) : args.range : this.parent.getActiveSheet().selectedRange; var sheetIdx = (args.range && lastIndex > -1) ? getSheetIndex(this.parent, args.range.substring(0, lastIndex)) : this.parent.activeSheetIndex; var indexes = getRangeIndexes(imgRange); var sheet = isUndefined(sheetIdx) ? this.parent.getActiveSheet() : getSheet(this.parent, sheetIdx); var cell = getCell(indexes[0], indexes[1], sheet); var oldImgData; var imgData = args.options; if (cell && cell.image) { oldImgData = cell.image; if (args.isPositionChanged) { for (var i = 0; i < oldImgData.length; i++) { for (var j = 0; j < imgData.length; j++) { oldImgData[i] = imgData[j]; if (document.getElementById(imgData[j].id)) { args.isElementRemoved = true; document.getElementById(imgData[j].id).remove(); } } } } else { oldImgData = cell.image; for (var i = 0; i < imgData.length; i++) { oldImgData.push(imgData[i]); } } } setCell(indexes[0], indexes[1], sheet, { image: (cell && cell.image) ? oldImgData : imgData }, true); return args.isElementRemoved; }; WorkbookImage.prototype.updateImagesFromSheet = function () { this.parent.sheets.forEach(function (sheet) { if (sheet.imageColl) { sheet.imageColl.forEach(function (model) { var imageModel = model; var indexes = imageModel.address; delete imageModel.address; var cell = getCell(indexes[0], indexes[1], sheet); if (cell && cell.image) { cell.image.push(imageModel); } else { setCell(indexes[0], indexes[1], sheet, { image: [imageModel] }, true); } }); delete sheet.imageColl; } }); }; /** * Adding event listener for number format. * * @returns {void} - Adding event listener for number format. */ WorkbookImage.prototype.addEventListener = function () { this.parent.on(setImage, this.setImage, this); this.parent.on(importModelUpdate, this.updateImagesFromSheet, this); }; /** * Removing event listener for number format. * * @returns {void} */ WorkbookImage.prototype.removeEventListener = function () { if (!this.parent.isDestroyed) { this.parent.off(setImage, this.setImage); this.parent.off(importModelUpdate, this.updateImagesFromSheet); } }; /** * To Remove the event listeners. * * @returns {void} - To Remove the event listeners. */ WorkbookImage.prototype.destroy = function () { this.removeEventListener(); this.parent = null; }; /** * Get the workbook number format module name. * * @returns {string} - Get the module name. */ WorkbookImage.prototype.getModuleName = function () { return 'workbookImage'; }; return WorkbookImage; }()); export { WorkbookImage };