| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- const _ = require('../../../utils/under-dash');
- const BaseXform = require('../base-xform');
- function booleanToXml(model) {
- return model ? '1' : undefined;
- }
- function pageOrderToXml(model) {
- switch (model) {
- case 'overThenDown':
- return model;
- default:
- return undefined;
- }
- }
- function cellCommentsToXml(model) {
- switch (model) {
- case 'atEnd':
- case 'asDisplyed':
- return model;
- default:
- return undefined;
- }
- }
- function errorsToXml(model) {
- switch (model) {
- case 'dash':
- case 'blank':
- case 'NA':
- return model;
- default:
- return undefined;
- }
- }
- function pageSizeToModel(value) {
- return value !== undefined ? parseInt(value, 10) : undefined;
- }
- class PageSetupXform extends BaseXform {
- get tag() {
- return 'pageSetup';
- }
- render(xmlStream, model) {
- if (model) {
- const attributes = {
- paperSize: model.paperSize,
- orientation: model.orientation,
- horizontalDpi: model.horizontalDpi,
- verticalDpi: model.verticalDpi,
- pageOrder: pageOrderToXml(model.pageOrder),
- blackAndWhite: booleanToXml(model.blackAndWhite),
- draft: booleanToXml(model.draft),
- cellComments: cellCommentsToXml(model.cellComments),
- errors: errorsToXml(model.errors),
- scale: model.scale,
- fitToWidth: model.fitToWidth,
- fitToHeight: model.fitToHeight,
- firstPageNumber: model.firstPageNumber,
- useFirstPageNumber: booleanToXml(model.firstPageNumber),
- usePrinterDefaults: booleanToXml(model.usePrinterDefaults),
- copies: model.copies,
- };
- if (_.some(attributes, value => value !== undefined)) {
- xmlStream.leafNode(this.tag, attributes);
- }
- }
- }
- parseOpen(node) {
- switch (node.name) {
- case this.tag:
- this.model = {
- paperSize: pageSizeToModel(node.attributes.paperSize),
- orientation: node.attributes.orientation || 'portrait',
- horizontalDpi: parseInt(node.attributes.horizontalDpi || '4294967295', 10),
- verticalDpi: parseInt(node.attributes.verticalDpi || '4294967295', 10),
- pageOrder: node.attributes.pageOrder || 'downThenOver',
- blackAndWhite: node.attributes.blackAndWhite === '1',
- draft: node.attributes.draft === '1',
- cellComments: node.attributes.cellComments || 'None',
- errors: node.attributes.errors || 'displayed',
- scale: parseInt(node.attributes.scale || '100', 10),
- fitToWidth: parseInt(node.attributes.fitToWidth || '1', 10),
- fitToHeight: parseInt(node.attributes.fitToHeight || '1', 10),
- firstPageNumber: parseInt(node.attributes.firstPageNumber || '1', 10),
- useFirstPageNumber: node.attributes.useFirstPageNumber === '1',
- usePrinterDefaults: node.attributes.usePrinterDefaults === '1',
- copies: parseInt(node.attributes.copies || '1', 10),
- };
- return true;
- default:
- return false;
- }
- }
- parseText() {}
- parseClose() {
- return false;
- }
- }
- module.exports = PageSetupXform;
|