@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
JavaScript
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 };