From 19a0765a1a755173d8d894cd2128b7e41ebc2c55 Mon Sep 17 00:00:00 2001 From: Book Pauk Date: Sun, 15 Nov 2020 14:55:02 +0700 Subject: [PATCH] =?UTF-8?q?=D0=A0=D0=B5=D1=84=D0=B0=D0=BA=D1=82=D0=BE?= =?UTF-8?q?=D1=80=D0=B8=D0=BD=D0=B3,=20=D0=BF=D0=BB=D1=8E=D1=81=20=D0=BD?= =?UTF-8?q?=D0=B5=D0=B1=D0=BE=D0=BB=D1=8C=D1=88=D0=B8=D0=B5=20=D0=B4=D0=BE?= =?UTF-8?q?=D0=B4=D0=B5=D0=BB=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Reader/ContentsPage/ContentsPage.vue | 53 ++++++++++--------- 1 file changed, 28 insertions(+), 25 deletions(-) diff --git a/client/components/Reader/ContentsPage/ContentsPage.vue b/client/components/Reader/ContentsPage/ContentsPage.vue index c880ab48..8144fdfa 100644 --- a/client/components/Reader/ContentsPage/ContentsPage.vue +++ b/client/components/Reader/ContentsPage/ContentsPage.vue @@ -27,13 +27,14 @@
- +
+
-
+
{{ item.perc }}%
@@ -43,7 +44,7 @@
-
+
{{ subitem.perc }}%
@@ -97,18 +98,8 @@ class ContentsPage extends Vue { this.contents = []; await this.$nextTick(); - const prepareLabel = (title, bolder = false) => { - let titleParts = title.split('

'); - const textParts = titleParts.filter(v => v).map(v => `

${utils.removeHtmlTags(v)}
`); - if (bolder && textParts.length > 1) - textParts[0] = `${textParts[0]}`; - return textParts.join(''); - } - - const insetStyle = inset => `width: ${inset*20}px`; const pc = parsed.contents; const newpc = []; - //преобразуем все, кроме первого, разделы body в title-subtitle let curSubtitles = []; let prevBodyIndex = -1; @@ -130,25 +121,43 @@ class ContentsPage extends Vue { } } + const prepareLabel = (title, bolder = false) => { + let titleParts = title.split('

'); + const textParts = titleParts.filter(v => v).map(v => `

${utils.removeHtmlTags(v)}
`); + if (bolder && textParts.length > 1) + textParts[0] = `${textParts[0]}`; + return textParts.join(''); + } + + const getIndentStyle = inset => `width: ${inset*20}px`; + + const getLabelStyle = (inset) => { + const fontSizes = ['110%', '100%', '90%', '85%']; + inset = (inset > 3 ? 3 : inset); + return `font-size: ${fontSizes[inset]}`; + }; + //формируем newContents let i = 0; const newContents = []; newpc.forEach((cont) => { const label = prepareLabel(cont.title, true); - const indentStyle = insetStyle(cont.inset); + const indentStyle = getIndentStyle(cont.inset); + const labelStyle = getLabelStyle(cont.inset); let j = 0; const list = []; cont.subtitles.forEach((sub) => { const l = prepareLabel(sub.title); - const s = insetStyle(sub.inset + 1); + const s = getIndentStyle(sub.inset + 1); + const ls = getLabelStyle(cont.inset + 1); const p = parsed.para[sub.paraIndex]; - list[j] = {perc: (p.offset/parsed.textLength*100).toFixed(2), label: l, key: j, offset: p.offset, indentStyle: s}; + list[j] = {perc: (p.offset/parsed.textLength*100).toFixed(2), label: l, key: j, offset: p.offset, indentStyle: s, labelStyle: ls}; j++; }); const p = parsed.para[cont.paraIndex]; - newContents[i] = {perc: (p.offset/parsed.textLength*100).toFixed(0), label, key: i, offset: p.offset, indentStyle, expanded: false, list}; + newContents[i] = {perc: (p.offset/parsed.textLength*100).toFixed(0), label, key: i, offset: p.offset, indentStyle, labelStyle, expanded: false, list}; i++; }); @@ -204,10 +213,10 @@ class ContentsPage extends Vue { .clickable { cursor: pointer; + padding: 10px 0 10px 0; } .item, .subitem { - height: 40px; border-bottom: 1px solid #e0e0e0; } @@ -219,12 +228,6 @@ class ContentsPage extends Vue { width: 40px; } -.expand-button:hover { - background-color: white; - border-radius: 15px; - border: 1px solid #d0d0d0; -} - .subitems-transition { height: 0; transition: height 0.2s linear; @@ -236,6 +239,6 @@ class ContentsPage extends Vue { } .expanded-icon { - transform: rotate(180deg); + transform: rotate(90deg); }