| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356 |
- 'use strict';
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
- function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
- function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
- var _ = require('../utils/under-dash');
- var Enums = require('./enums');
- var colCache = require('../utils/col-cache');
- var DEFAULT_COLUMN_WIDTH = 9; // Column defines the column properties for 1 column.
- // This includes header rows, widths, key, (style), etc.
- // Worksheet will condense the columns as appropriate during serialization
- var Column = /*#__PURE__*/function () {
- function Column(worksheet, number, defn) {
- _classCallCheck(this, Column);
- this._worksheet = worksheet;
- this._number = number;
- if (defn !== false) {
- // sometimes defn will follow
- this.defn = defn;
- }
- }
- _createClass(Column, [{
- key: "toString",
- value: function toString() {
- return JSON.stringify({
- key: this.key,
- width: this.width,
- headers: this.headers.length ? this.headers : undefined
- });
- }
- }, {
- key: "equivalentTo",
- value: function equivalentTo(other) {
- return this.width === other.width && this.hidden === other.hidden && this.outlineLevel === other.outlineLevel && _.isEqual(this.style, other.style);
- }
- }, {
- key: "eachCell",
- value: function eachCell(options, iteratee) {
- var colNumber = this.number;
- if (!iteratee) {
- iteratee = options;
- options = null;
- }
- this._worksheet.eachRow(options, function (row, rowNumber) {
- iteratee(row.getCell(colNumber), rowNumber);
- });
- }
- }, {
- key: "_applyStyle",
- // =========================================================================
- // styles
- value: function _applyStyle(name, value) {
- this.style[name] = value;
- this.eachCell(function (cell) {
- cell[name] = value;
- });
- return value;
- }
- }, {
- key: "number",
- get: function get() {
- return this._number;
- }
- }, {
- key: "worksheet",
- get: function get() {
- return this._worksheet;
- }
- }, {
- key: "letter",
- get: function get() {
- return colCache.n2l(this._number);
- }
- }, {
- key: "isCustomWidth",
- get: function get() {
- return this.width !== undefined && this.width !== DEFAULT_COLUMN_WIDTH;
- }
- }, {
- key: "defn",
- get: function get() {
- return {
- header: this._header,
- key: this.key,
- width: this.width,
- style: this.style,
- hidden: this.hidden,
- outlineLevel: this.outlineLevel
- };
- },
- set: function set(value) {
- if (value) {
- this.key = value.key;
- this.width = value.width !== undefined ? value.width : DEFAULT_COLUMN_WIDTH;
- this.outlineLevel = value.outlineLevel;
- if (value.style) {
- this.style = value.style;
- } else {
- this.style = {};
- } // headers must be set after style
- this.header = value.header;
- this._hidden = !!value.hidden;
- } else {
- delete this._header;
- delete this._key;
- delete this.width;
- this.style = {};
- this.outlineLevel = 0;
- }
- }
- }, {
- key: "headers",
- get: function get() {
- return this._header && this._header instanceof Array ? this._header : [this._header];
- }
- }, {
- key: "header",
- get: function get() {
- return this._header;
- },
- set: function set(value) {
- var _this = this;
- if (value !== undefined) {
- this._header = value;
- this.headers.forEach(function (text, index) {
- _this._worksheet.getCell(index + 1, _this.number).value = text;
- });
- } else {
- this._header = undefined;
- }
- }
- }, {
- key: "key",
- get: function get() {
- return this._key;
- },
- set: function set(value) {
- var column = this._key && this._worksheet.getColumnKey(this._key);
- if (column === this) {
- this._worksheet.deleteColumnKey(this._key);
- }
- this._key = value;
- if (value) {
- this._worksheet.setColumnKey(this._key, this);
- }
- }
- }, {
- key: "hidden",
- get: function get() {
- return !!this._hidden;
- },
- set: function set(value) {
- this._hidden = value;
- }
- }, {
- key: "outlineLevel",
- get: function get() {
- return this._outlineLevel || 0;
- },
- set: function set(value) {
- this._outlineLevel = value;
- }
- }, {
- key: "collapsed",
- get: function get() {
- return !!(this._outlineLevel && this._outlineLevel >= this._worksheet.properties.outlineLevelCol);
- }
- }, {
- key: "isDefault",
- get: function get() {
- if (this.isCustomWidth) {
- return false;
- }
- if (this.hidden) {
- return false;
- }
- if (this.outlineLevel) {
- return false;
- }
- var s = this.style;
- if (s && (s.font || s.numFmt || s.alignment || s.border || s.fill || s.protection)) {
- return false;
- }
- return true;
- }
- }, {
- key: "headerCount",
- get: function get() {
- return this.headers.length;
- }
- }, {
- key: "values",
- get: function get() {
- var v = [];
- this.eachCell(function (cell, rowNumber) {
- if (cell && cell.type !== Enums.ValueType.Null) {
- v[rowNumber] = cell.value;
- }
- });
- return v;
- },
- set: function set(v) {
- var _this2 = this;
- if (!v) {
- return;
- }
- var colNumber = this.number;
- var offset = 0;
- if (v.hasOwnProperty('0')) {
- // assume contiguous array, start at row 1
- offset = 1;
- }
- v.forEach(function (value, index) {
- _this2._worksheet.getCell(index + offset, colNumber).value = value;
- });
- }
- }, {
- key: "numFmt",
- get: function get() {
- return this.style.numFmt;
- },
- set: function set(value) {
- this._applyStyle('numFmt', value);
- }
- }, {
- key: "font",
- get: function get() {
- return this.style.font;
- },
- set: function set(value) {
- this._applyStyle('font', value);
- }
- }, {
- key: "alignment",
- get: function get() {
- return this.style.alignment;
- },
- set: function set(value) {
- this._applyStyle('alignment', value);
- }
- }, {
- key: "protection",
- get: function get() {
- return this.style.protection;
- },
- set: function set(value) {
- this._applyStyle('protection', value);
- }
- }, {
- key: "border",
- get: function get() {
- return this.style.border;
- },
- set: function set(value) {
- this._applyStyle('border', value);
- }
- }, {
- key: "fill",
- get: function get() {
- return this.style.fill;
- },
- set: function set(value) {
- this._applyStyle('fill', value);
- } // =============================================================================
- // static functions
- }], [{
- key: "toModel",
- value: function toModel(columns) {
- // Convert array of Column into compressed list cols
- var cols = [];
- var col = null;
- if (columns) {
- columns.forEach(function (column, index) {
- if (column.isDefault) {
- if (col) {
- col = null;
- }
- } else if (!col || !column.equivalentTo(col)) {
- col = {
- min: index + 1,
- max: index + 1,
- width: column.width !== undefined ? column.width : DEFAULT_COLUMN_WIDTH,
- style: column.style,
- isCustomWidth: column.isCustomWidth,
- hidden: column.hidden,
- outlineLevel: column.outlineLevel,
- collapsed: column.collapsed
- };
- cols.push(col);
- } else {
- col.max = index + 1;
- }
- });
- }
- return cols.length ? cols : undefined;
- }
- }, {
- key: "fromModel",
- value: function fromModel(worksheet, cols) {
- cols = cols || [];
- var columns = [];
- var count = 1;
- var index = 0;
- while (index < cols.length) {
- var col = cols[index++];
- while (count < col.min) {
- columns.push(new Column(worksheet, count++));
- }
- while (count <= col.max) {
- columns.push(new Column(worksheet, count++, col));
- }
- }
- return columns.length ? columns : null;
- }
- }]);
- return Column;
- }();
- module.exports = Column;
- //# sourceMappingURL=column.js.map
|