sheet-properties-xform.js 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. const BaseXform = require('../base-xform');
  2. const ColorXform = require('../style/color-xform');
  3. const PageSetupPropertiesXform = require('./page-setup-properties-xform');
  4. const OutlinePropertiesXform = require('./outline-properties-xform');
  5. class SheetPropertiesXform extends BaseXform {
  6. constructor() {
  7. super();
  8. this.map = {
  9. tabColor: new ColorXform('tabColor'),
  10. pageSetUpPr: new PageSetupPropertiesXform(),
  11. outlinePr: new OutlinePropertiesXform(),
  12. };
  13. }
  14. get tag() {
  15. return 'sheetPr';
  16. }
  17. render(xmlStream, model) {
  18. if (model) {
  19. xmlStream.addRollback();
  20. xmlStream.openNode('sheetPr');
  21. let inner = false;
  22. inner = this.map.tabColor.render(xmlStream, model.tabColor) || inner;
  23. inner = this.map.pageSetUpPr.render(xmlStream, model.pageSetup) || inner;
  24. inner = this.map.outlinePr.render(xmlStream, model.outlineProperties) || inner;
  25. if (inner) {
  26. xmlStream.closeNode();
  27. xmlStream.commit();
  28. } else {
  29. xmlStream.rollback();
  30. }
  31. }
  32. }
  33. parseOpen(node) {
  34. if (this.parser) {
  35. this.parser.parseOpen(node);
  36. return true;
  37. }
  38. if (node.name === this.tag) {
  39. this.reset();
  40. return true;
  41. }
  42. if (this.map[node.name]) {
  43. this.parser = this.map[node.name];
  44. this.parser.parseOpen(node);
  45. return true;
  46. }
  47. return false;
  48. }
  49. parseText(text) {
  50. if (this.parser) {
  51. this.parser.parseText(text);
  52. return true;
  53. }
  54. return false;
  55. }
  56. parseClose(name) {
  57. if (this.parser) {
  58. if (!this.parser.parseClose(name)) {
  59. this.parser = undefined;
  60. }
  61. return true;
  62. }
  63. if (this.map.tabColor.model || this.map.pageSetUpPr.model || this.map.outlinePr.model) {
  64. this.model = {};
  65. if (this.map.tabColor.model) {
  66. this.model.tabColor = this.map.tabColor.model;
  67. }
  68. if (this.map.pageSetUpPr.model) {
  69. this.model.pageSetup = this.map.pageSetUpPr.model;
  70. }
  71. if (this.map.outlinePr.model) {
  72. this.model.outlineProperties = this.map.outlinePr.model;
  73. }
  74. } else {
  75. this.model = null;
  76. }
  77. return false;
  78. }
  79. }
  80. module.exports = SheetPropertiesXform;