@catull/igniteui-angular
Version:
Ignite UI for Angular is a dependency-free Angular toolkit for building modern web apps
101 lines • 14.3 kB
JavaScript
import { ExportUtilities } from '../exporter-common/export-utilities';
/** @hidden */
var WorksheetDataDictionary = /** @class */ (function () {
function WorksheetDataDictionary(columnCount, columnWidth) {
this.hasNonStringValues = false;
this._dictionary = {};
this._widthsDictionary = {};
this._counter = 0;
this.dirtyKeyCollections();
this._calculateColumnWidth = !columnWidth;
this._columnWidths = new Array(columnCount);
this._columnTypeInfo = new Array(columnCount);
if (!this._calculateColumnWidth) {
this._columnWidths.fill(columnWidth);
}
this.stringsCount = 0;
}
Object.defineProperty(WorksheetDataDictionary.prototype, "columnWidths", {
get: function () {
return this._columnWidths;
},
enumerable: true,
configurable: true
});
WorksheetDataDictionary.prototype.saveValue = function (value, column, isHeader) {
if (this._columnTypeInfo[column] === undefined && isHeader === false) {
this._columnTypeInfo[column] = typeof value === 'string' ||
typeof value === 'boolean' ||
value instanceof Date;
}
var sanitizedValue = '';
var isSavedAsString = this._columnTypeInfo[column] || isHeader;
if (isSavedAsString) {
sanitizedValue = this.sanitizeValue(value);
if (this._dictionary[sanitizedValue] === undefined) {
this._dictionary[sanitizedValue] = this._counter++;
this.dirtyKeyCollections();
}
this.stringsCount++;
}
else {
this.hasNonStringValues = true;
}
if (this._calculateColumnWidth) {
var width = this.getTextWidth(value);
var maxWidth = Math.max(this._columnWidths[column] || 0, width);
this._columnWidths[column] = maxWidth;
}
return isSavedAsString ? this.getSanitizedValue(sanitizedValue) : -1;
};
WorksheetDataDictionary.prototype.getValue = function (value) {
return this.getSanitizedValue(this.sanitizeValue(value));
};
WorksheetDataDictionary.prototype.getSanitizedValue = function (sanitizedValue) {
return this._dictionary[sanitizedValue];
};
WorksheetDataDictionary.prototype.getKeys = function () {
if (!this._keysAreValid) {
this._keys = Object.keys(this._dictionary);
this._keysAreValid = true;
}
return this._keys;
};
WorksheetDataDictionary.prototype.getTextWidth = function (value) {
if (this._widthsDictionary[value] === undefined) {
var context = this.getContext();
var metrics = context.measureText(value);
this._widthsDictionary[value] = metrics.width + WorksheetDataDictionary.TEXT_PADDING;
}
return this._widthsDictionary[value];
};
WorksheetDataDictionary.prototype.getContext = function () {
if (!this._context) {
var canvas = document.createElement('canvas');
this._context = canvas.getContext('2d');
this._context.font = WorksheetDataDictionary.DEFAULT_FONT;
}
return this._context;
};
WorksheetDataDictionary.prototype.sanitizeValue = function (value) {
if (ExportUtilities.hasValue(value) === false) {
return '';
}
else {
var stringValue = String(value);
return stringValue.replace(/&/g, '&')
.replace(/</g, '<')
.replace(/>/g, '>')
.replace(/"/g, '"')
.replace(/'/g, ''');
}
};
WorksheetDataDictionary.prototype.dirtyKeyCollections = function () {
this._keysAreValid = false;
};
WorksheetDataDictionary.DEFAULT_FONT = '11pt Calibri';
WorksheetDataDictionary.TEXT_PADDING = 5;
return WorksheetDataDictionary;
}());
export { WorksheetDataDictionary };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya3NoZWV0LWRhdGEtZGljdGlvbmFyeS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2lnbml0ZXVpLWFuZ3VsYXIvIiwic291cmNlcyI6WyJsaWIvc2VydmljZXMvZXhjZWwvd29ya3NoZWV0LWRhdGEtZGljdGlvbmFyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFdEUsY0FBYztBQUNkO0lBdUJJLGlDQUFZLFdBQW1CLEVBQUUsV0FBbUI7UUFKN0MsdUJBQWtCLEdBQUcsS0FBSyxDQUFDO1FBSzlCLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7UUFDbEIsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFFM0IsSUFBSSxDQUFDLHFCQUFxQixHQUFHLENBQUMsV0FBVyxDQUFDO1FBQzFDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxLQUFLLENBQVMsV0FBVyxDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLEtBQUssQ0FBVSxXQUFXLENBQUMsQ0FBQztRQUV2RCxJQUFJLENBQUMsSUFBSSxDQUFDLHFCQUFxQixFQUFFO1lBQzdCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQ3hDO1FBRUQsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVELHNCQUFXLGlEQUFZO2FBQXZCO1lBQ0ksT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQzlCLENBQUM7OztPQUFBO0lBRU0sMkNBQVMsR0FBaEIsVUFBaUIsS0FBVSxFQUFFLE1BQWMsRUFBRSxRQUFpQjtRQUMxRCxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLEtBQUssU0FBUyxJ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QUMsSUFBSSxDQUFDLENBQUM7WUFDeEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsdUJBQXVCLENBQUMsWUFBWSxDQUFDO1NBQzdEO1FBRUQsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3pCLENBQUM7SUFFTywrQ0FBYSxHQUFyQixVQUFzQixLQUFVO1FBQzVCLElBQUksZUFBZSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxLQUFLLEVBQUU7WUFDM0MsT0FBTyxFQUFFLENBQUM7U0FDYjthQUFNO1lBQ0gsSUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2xDLE9BQU8sV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDO2lCQUN4QixPQUFPLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQztpQkFDckIsT0FBTyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUM7aUJBQ3JCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDO2lCQUN2QixPQUFPLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1NBQzVDO0lBQ0wsQ0FBQztJQUVPLHFEQUFtQixHQUEzQjtRQUNJLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO0lBQy9CLENBQUM7SUEvSGMsb0NBQVksR0FBRyxjQUFjLENBQUM7SUFDOUIsb0NBQVksR0FBRyxDQUFDLENBQUM7SUErSHBDLDhCQUFDO0NBQUEsQUFqSUQsSUFpSUM7U0FqSVksdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXhwb3J0VXRpbGl0aWVzIH0gZnJvbSAnLi4vZXhwb3J0ZXItY29tbW9uL2V4cG9ydC11dGlsaXRpZXMnO1xuXG4vKiogQGhpZGRlbiAqL1xuZXhwb3J0IGNsYXNzIFdvcmtzaGVldERhdGFEaWN0aW9uYXJ5IHtcbiAgICBwcml2YXRlIHN0YXRpYyBERUZBVUxUX0ZPTlQgPSAnMTFwdCBDYWxpYnJpJztcbiAgICBwcml2YXRlIHN0YXRpYyBURVhUX1BBRERJTkcgPSA1O1xuXG4gICAgcHJpdmF0ZSBfZGljdGlvbmFyeTogYW55O1xuICAgIHByaXZhdGUgX3dpZHRoc0RpY3Rpb25hcnk6IGFueTtcblxuICAgIHByaXZhdGUgX3NvcnRlZEtleXNCeVZhbHVlOiBzdHJpbmdbXTtcbiAgICBwcml2YXRlIF9zb3J0ZWRLZXlzQnlWYWx1ZUFyZVZhbGlkOiBib29sZWFuO1xuXG4gICAgcHJpdmF0ZSBfa2V5czogc3RyaW5nW107XG4gICAgcHJpdmF0ZSBfa2V5c0FyZVZhbGlkOiBib29sZWFuO1xuXG4gICAgcHJpdmF0ZSBfY291bnRlcjogbnVtYmVyO1xuICAgIHByaXZhdGUgX2NhbGN1bGF0ZUNvbHVtbldpZHRoOiBib29sZWFuO1xuICAgIHByaXZhdGUgX2NvbHVtbldpZHRoczogbnVtYmVyW107XG4gICAgcHJpdmF0ZSBfY29udGV4dDogYW55O1xuXG4gICAgcHJpdmF0ZSBfY29sdW1uVHlwZUluZm86IGJvb2xlYW5bXTtcbiAgICBwdWJsaWMgaGFzTm9uU3RyaW5nVmFsdWVzID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgc3RyaW5nc0NvdW50OiBudW1iZXI7XG5cbiAgICBjb25zdHJ1Y3Rvcihjb2x1bW5Db3VudDogbnVtYmVyLCBjb2x1bW5XaWR0aDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuX2RpY3Rpb25hcnkgPSB7fTtcbiAgICAgICAgdGhpcy5fd2lkdGhzRGljdGlvbmFyeSA9IHt9O1xuICAgICAgICB0aGlzLl9jb3VudGVyID0gMDtcbiAgICAgICAgdGhpcy5kaXJ0eUtleUNvbGxlY3Rpb25zKCk7XG5cbiAgICAgICAgdGhpcy5fY2FsY3VsYXRlQ29sdW1uV2lkdGggPSAhY29sdW1uV2lkdGg7XG4gICAgICAgIHRoaXMuX2NvbHVtbldpZHRocyA9IG5ldyBBcnJheTxudW1iZXI+KGNvbHVtbkNvdW50KTtcbiAgICAgICAgdGhpcy5fY29sdW1uVHlwZUluZm8gPSBuZXcgQXJyYXk8Ym9vbGVhbj4oY29sdW1uQ291bnQpO1xuXG4gICAgICAgIGlmICghdGhpcy5fY2FsY3VsYXRlQ29sdW1uV2lkdGgpIHtcbiAgICAgICAgICAgIHRoaXMuX2NvbHVtbldpZHRocy5maWxsKGNvbHVtbldpZHRoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc3RyaW5nc0NvdW50ID0gMDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGNvbHVtbldpZHRocygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbHVtbldpZHRocztcbiAgICB9XG5cbiAgICBwdWJsaWMgc2F2ZVZhbHVlKHZhbHVlOiBhbnksIGNvbHVtbjogbnVtYmVyLCBpc0hlYWRlcjogYm9vbGVhbik6IG51bWJlciB7XG4gICAgICAgIGlmICh0aGlzLl9jb2x1bW5UeXBlSW5mb1tjb2x1bW5dID09PSB1bmRlZmluZWQgJiYgaXNIZWFkZXIgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICB0aGlzLl9jb2x1bW5UeXBlSW5mb1tjb2x1bW5dID0gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSBpbnN0YW5jZW9mIERhdGU7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgc2FuaXRpemVkVmFsdWUgPSAnJztcbiAgICAgICAgY29uc3QgaXNTYXZlZEFzU3RyaW5nID0gdGhpcy5fY29sdW1uVHlwZUluZm9bY29sdW1uXSB8fCBpc0hlYWRlcjtcblxuICAgICAgICBpZiAoaXNTYXZlZEFzU3RyaW5nKSB7XG4gICAgICAgICAgICBzYW5pdGl6ZWRWYWx1ZSA9IHRoaXMuc2FuaXRpemVWYWx1ZSh2YWx1ZSk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLl9kaWN0aW9uYXJ5W3Nhbml0aXplZFZhbHVlXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZGljdGlvbmFyeVtzYW5pdGl6ZWRWYWx1ZV0gPSB0aGlzLl9jb3VudGVyKys7XG4gICAgICAgICAgICAgICAgdGhpcy5kaXJ0eUtleUNvbGxlY3Rpb25zKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuc3RyaW5nc0NvdW50ICsrO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5oYXNOb25TdHJpbmdWYWx1ZXMgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX2NhbGN1bGF0ZUNvbHVtbldpZHRoKSB7XG4gICAgICAgICAgICBjb25zdCB3aWR0aCA9IHRoaXMuZ2V0VGV4dFdpZHRoKHZhbHVlKTtcbiAgICAgICAgICAgIGNvbnN0IG1heFdpZHRoID0gTWF0aC5tYXgodGhpcy5fY29sdW1uV2lkdGhzW2NvbHVtbl0gfHwgMCwgd2lkdGgpO1xuICAgICAgICAgICAgdGhpcy5fY29sdW1uV2lkdGhzW2NvbHVtbl0gPSBtYXhXaWR0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpc1NhdmVkQXNTdHJpbmcgPyB0aGlzLmdldFNhbml0aXplZFZhbHVlKHNhbml0aXplZFZhbHVlKSA6IC0xO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRWYWx1ZSh2YWx1ZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U2FuaXRpemVkVmFsdWUodGhpcy5zYW5pdGl6ZVZhbHVlKHZhbHVlKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFNhbml0aXplZFZhbHVlKHNhbml0aXplZFZhbHVlOiBzdHJpbmcpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGljdGlvbmFyeVtzYW5pdGl6ZWRWYWx1ZV07XG4gICAgfVxuXG4gICAgcHVibGljIGdldEtleXMoKTogc3RyaW5nW10ge1xuICAgICAgICBpZiAoIXRoaXMuX2tleXNBcmVWYWxpZCkge1xuICAgICAgICAgICAgdGhpcy5fa2V5cyA9IE9iamVjdC5rZXlzKHRoaXMuX2RpY3Rpb25hcnkpO1xuICAgICAgICAgICAgdGhpcy5fa2V5c0FyZVZhbGlkID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLl9rZXlzO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VGV4dFdpZHRoKHZhbHVlOiBhbnkpOiBudW1iZXIge1xuICAgICAgICBpZiAodGhpcy5fd2lkdGhzRGljdGlvbmFyeVt2YWx1ZV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuICAgICAgICAgICAgY29uc3QgbWV0cmljcyA9IGNvbnRleHQubWVhc3VyZVRleHQodmFsdWUpO1xuICAgICAgICAgICAgdGhpcy5fd2lkdGhzRGljdGlvbmFyeVt2YWx1ZV0gPSBtZXRyaWNzLndpZHRoICsgV29ya3NoZWV0RGF0YURpY3Rpb25hcnkuVEVYVF9QQURESU5HO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX3dpZHRoc0RpY3Rpb25hcnlbdmFsdWVdO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Q29udGV4dCgpOiBhbnkge1xuICAgICAgICBpZiAoIXRoaXMuX2NvbnRleHQpIHtcbiAgICAgICAgICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICAgICAgICAgICAgdGhpcy5fY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuICAgICAgICAgICAgdGhpcy5fY29udGV4dC5mb250ID0gV29ya3NoZWV0RGF0YURpY3Rpb25hcnkuREVGQVVMVF9GT05UO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnRleHQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzYW5pdGl6ZVZhbHVlKHZhbHVlOiBhbnkpOiBzdHJpbmcge1xuICAgICAgICBpZiAoRXhwb3J0VXRpbGl0aWVzLmhhc1ZhbHVlKHZhbHVlKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHN0cmluZ1ZhbHVlID0gU3RyaW5nKHZhbHVlKTtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmdWYWx1ZS5yZXBsYWNlKC8mL2csICcmYW1wOycpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoLzwvZywgJyZsdDsnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC8+L2csICcmZ3Q7JylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvXCIvZywgJyZxdW90OycpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoLycvZywgJyZhcG9zOycpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkaXJ0eUtleUNvbGxlY3Rpb25zKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9rZXlzQXJlVmFsaWQgPSBmYWxzZTtcbiAgICB9XG59XG4iXX0=