UNPKG

exceljs

Version:

Excel Workbook Manager - Read and Write xlsx and csv Files.

83 lines (69 loc) 3.12 kB
const BaseXform = require('../../base-xform'); const CompositeXform = require('../../composite-xform'); const ColorXform = require('../../style/color-xform'); const CfvoExtXform = require('./cfvo-ext-xform'); class DatabarExtXform extends CompositeXform { constructor() { super(); this.map = { 'x14:cfvo': (this.cfvoXform = new CfvoExtXform()), 'x14:borderColor': (this.borderColorXform = new ColorXform('x14:borderColor')), 'x14:negativeBorderColor': (this.negativeBorderColorXform = new ColorXform('x14:negativeBorderColor')), 'x14:negativeFillColor': (this.negativeFillColorXform = new ColorXform('x14:negativeFillColor')), 'x14:axisColor': (this.axisColorXform = new ColorXform('x14:axisColor')), }; } static isExt(rule) { // not all databars need ext // TODO: refine this return !rule.gradient; } get tag() { return 'x14:dataBar'; } render(xmlStream, model) { xmlStream.openNode(this.tag, { minLength: BaseXform.toIntAttribute(model.minLength, 0, true), maxLength: BaseXform.toIntAttribute(model.maxLength, 100, true), border: BaseXform.toBoolAttribute(model.border, false), gradient: BaseXform.toBoolAttribute(model.gradient, true), negativeBarColorSameAsPositive: BaseXform.toBoolAttribute(model.negativeBarColorSameAsPositive, true), negativeBarBorderColorSameAsPositive: BaseXform.toBoolAttribute(model.negativeBarBorderColorSameAsPositive, true), axisPosition: BaseXform.toAttribute(model.axisPosition, 'auto'), direction: BaseXform.toAttribute(model.direction, 'leftToRight'), }); model.cfvo.forEach(cfvo => { this.cfvoXform.render(xmlStream, cfvo); }); this.borderColorXform.render(xmlStream, model.borderColor); this.negativeBorderColorXform.render(xmlStream, model.negativeBorderColor); this.negativeFillColorXform.render(xmlStream, model.negativeFillColor); this.axisColorXform.render(xmlStream, model.axisColor); xmlStream.closeNode(); } createNewModel({attributes}) { return { cfvo: [], minLength: BaseXform.toIntValue(attributes.minLength, 0), maxLength: BaseXform.toIntValue(attributes.maxLength, 100), border: BaseXform.toBoolValue(attributes.border, false), gradient: BaseXform.toBoolValue(attributes.gradient, true), negativeBarColorSameAsPositive: BaseXform.toBoolValue(attributes.negativeBarColorSameAsPositive, true), negativeBarBorderColorSameAsPositive: BaseXform.toBoolValue(attributes.negativeBarBorderColorSameAsPositive, true), axisPosition: BaseXform.toStringValue(attributes.axisPosition, 'auto'), direction: BaseXform.toStringValue(attributes.direction, 'leftToRight'), }; } onParserClose(name, parser) { const [, prop] = name.split(':'); switch (prop) { case 'cfvo': this.model.cfvo.push(parser.model); break; default: this.model[prop] = parser.model; break; } } } module.exports = DatabarExtXform;