diff options
author | Jacob Schatz <jschatz1@gmail.com> | 2017-04-14 20:27:52 +0300 |
---|---|---|
committer | Jacob Schatz <jschatz1@gmail.com> | 2017-04-14 20:27:52 +0300 |
commit | 616eb5eeba80226c61f76b84585d07c987759525 (patch) | |
tree | 7561dfd8649bc124c558f0b428a834613cc3f2c5 | |
parent | eb8b9b2d363942c8a820f5c09597dd524610f373 (diff) |
Got numbering working.
-rw-r--r-- | app/assets/javascripts/blob/docx/docx.js | 52 |
1 files changed, 24 insertions, 28 deletions
diff --git a/app/assets/javascripts/blob/docx/docx.js b/app/assets/javascripts/blob/docx/docx.js index 50e2b920c0b..80a36810aa6 100644 --- a/app/assets/javascripts/blob/docx/docx.js +++ b/app/assets/javascripts/blob/docx/docx.js @@ -9,7 +9,8 @@ export default class Docx { this.relationships = {}; this.numberings = {}; this.listIncrements = {}; - this.alphabet = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']; + this.lastLevel = 0; + this.alphabet = ['','a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']; } romanize (num) { @@ -71,7 +72,6 @@ export default class Docx { numFmt: $l.find('numFmt').attr('w:val') } }); - console.log(this.numberings); } setHexOrCommonColor(colorString) { @@ -98,11 +98,10 @@ export default class Docx { $(this.container).append($p); return; } + $p = this.setParagraphStyles($paragraph, $p); $textNodes.each((i, el) => { const $el = $(el); var $span; - $p = this.setParagraphStyles($paragraph, $p); - $span = this.setListStyle($el, $p, $paragraph); $span = this.setInternalStyles($el, $p); $span.text($el.text()); $p.append($span); @@ -143,18 +142,6 @@ export default class Docx { return $p; } - setListStyle($el, $p, $paragraph) { - const $r = $el.parent(); - const $listRendered = this.getList($r, $p, $paragraph); - if($listRendered){ - return $listRendered; - } else { - if(this.inList){ - return $el; - } - } - } - setInternalStyles($el, $p) { const $r = $el.parent(); var $span = $('<span></span>'); @@ -305,51 +292,60 @@ export default class Docx { return $p; } + eraseLevelsAboveThisOne(level) { + var count = level+1; + if(this.listIncrements.hasOwnProperty(count)) { + delete this.listIncrements[count]; + this.eraseLevelsAboveThisOne(count); + } + } + getList($paragraph, $p) { const $listInfo = $paragraph.find('numPr'); if($listInfo.length) { - console.log('yes length') const lvl = parseInt($listInfo.find('ilvl').attr('w:val')); const numberInfo = this.numberings[lvl]; const numType = numberInfo.numFmt; - console.log('lvl', lvl); - console.log(this.listIncrements) + if(lvl < this.lastLevel) { + this.eraseLevelsAboveThisOne(lvl); + } + + this.lastLevel = lvl; + if(this.listIncrements.hasOwnProperty(lvl)){ - console.log('has the hasOwnProperty', lvl); this.listIncrements[lvl] = this.listIncrements[lvl] + 1; } else { this.listIncrements[lvl] = 0; } - console.log(this.listIncrements); + const increment = this.listIncrements[lvl]+1; switch(numType) { case 'decimal': - $p.prepend(`<span style='user-select: none;'>1.</span>`); + $p.prepend(`<span style='user-select: none;'>${increment}.</span>`); break; case 'upperRoman': - $p.prepend(`<span style='user-select: none;'>I.</span>`); + $p.prepend(`<span style='user-select: none;'>${this.romanize(increment)}.</span>`); break; case 'lowerRoman': - $p.prepend(`<span style='user-select: none;'>i.</span>`); + $p.prepend(`<span style='user-select: none;'>${this.romanize(increment).toLowerCase()}.</span>`); break; case 'upperLetter': - $p.prepend(`<span style='user-select: none;'>A.</span>`); + $p.prepend(`<span style='user-select: none;'>${this.alphabet[increment].toUpperCase()}.</span>`); break; case 'lowerLetter': - $p.prepend(`<span style='user-select: none;'>a.</span>`); + $p.prepend(`<span style='user-select: none;'>${this.alphabet[increment]}.</span>`); break; default: - $p.prepend(`<span style='user-select: none;'>1.</span>`); + $p.prepend(`<span style='user-select: none;'>${increment}.</span>`); break; } $p.css('margin-left', numberInfo.ind); return $p; } else { - console.log('no length') this.listIncrements = {}; return $p; } |