@topvisor/ui 1.1.0-addNativeDialog.10 → 1.1.0-addNativeDialog.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/charts/charts.amd.js +1 -1
- package/charts/charts.amd.js.map +1 -1
- package/charts/charts.js +2 -2
- package/charts/charts.js.map +1 -1
- package/package.json +1 -1
package/charts/charts.amd.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
define(["require","exports","vue","../.chunks/forms-DRhpgERJ.amd","../utils/number.amd","../require/css.amd!../assets/charts.css"],(function(L,C,e,M,g){"use strict";if(typeof e>"u")var e=window.Vue;const k=90,y=10,V=["data-top-icon"],B={class:"top-miniChart_chart"},b=["onMouseenter"],E={class:"top-miniChart_data"},_={class:"top-miniChart_dataValue"},w=["innerHTML"],D=e.defineComponent({__name:"miniChart",props:e.mergeModels({title:{},gIcon:{},color:{default:"blue"},dates:{},values:{},activeDates:{},keysForDyn:{},dynamic:{},isInvert:{type:Boolean},numberCols:{default:k},additionalHTML:{},modelValue:{},valueSuffix:{},hideChartInMobile:{type:Boolean}},{modelValue:{},modelModifiers:{}}),emits:["update:modelValue"],setup(m){const o=m,s=e.useModel(m,"modelValue"),i=t=>{let l=u.value;o.isInvert&&(t-=1,l-=1);let a=l>0?Math.round(t/l*(100-y)):0;return o.isInvert?100-a:a+y},p=t=>o.activeDates.includes(t),u=e.computed(()=>Math.max(...o.values)),c=e.computed(()=>o.dates.slice().reverse()),v=e.computed(()=>o.dates.length?o.numberCols-o.dates.length:0),h=()=>{s.value=null},r=(t,l,a)=>{t.target instanceof HTMLElement&&(s.value={elCol:t.target,date:M.dateFormat(l),value:a===null?"--":a+(o.valueSuffix??"")})},n=e.computed(()=>{let t=o.dynamic;if(typeof t>"u"){const a=o.values[o.keysForDyn.start];t=o.values[o.keysForDyn.end]-a}return(t<0?-1:1)*g.percentOfNumber(Math.abs(t))}),d=e.computed(()=>{let t="stay";return o.isInvert?(n.value>0&&(t="down"),n.value<0&&(t="up")):(n.value>0&&(t="up"),n.value<0&&(t="down")),t});return(t,l)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass({"top-miniChart":!0,"top-miniChart_hideChartInMobile":t.hideChartInMobile,[`top-color_${t.color}`]:!0})},[e.createElementVNode("div",{class:"top-miniChart_title top-ellipsis","data-top-icon":t.gIcon},e.toDisplayString(t.title),9,V),e.createElementVNode("div",B,[e.createElementVNode("div",{class:"top-miniChart_chartGrid",onMouseleave:l[1]||(l[1]=a=>h())},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.value,(a,f)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass({"top-miniChart_chartGridCol":!0,"top-active":p(a)}),onMouseenter:z=>r(z,a,t.values[t.values.length-f-1])},[e.createElementVNode("div",{style:e.normalizeStyle("height:"+i(t.values[t.values.length-f-1])+"%")},null,4)],42,b))),256)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(v.value,()=>(e.openBlock(),e.createElementBlock("div",{class:"top-miniChart_chartGridCol top-miniChart_chartGridCol-none",onMouseenter:l[0]||(l[0]=a=>h())},l[2]||(l[2]=[e.createElementVNode("div",null,null,-1)]),32))),256))],32)]),e.createElementVNode("div",E,[e.createElementVNode("span",{class:e.normalizeClass({"top-miniChart_dataDynamic":!0,[`top-miniChart_dataDynamic-direction_${d.value}`]:!0})},e.toDisplayString(Math.abs(n.value)||""),3),e.createElementVNode("span",_,e.toDisplayString(e.unref(g.percentOfNumber)(t.values[t.values.length-1])||0),1)]),t.additionalHTML?(e.openBlock(),e.createElementBlock("div",{key:0,innerHTML:t.additionalHTML},null,8,w)):e.createCommentVNode("",!0)],2))}}),N={key:0,class:"top-miniCharts_pages"},S=["onClick"],T=e.defineComponent({__name:"miniCharts",props:e.mergeModels({modelValue:{},countCharts:{},hideChartInMobile:{type:Boolean}},{modelValue:{},modelModifiers:{}}),emits:["update:modelValue"],setup(m){const o=m,s=e.useModel(m,"modelValue"),i=e.ref(null);let p;const u=e.ref(1),c=e.ref(1),v=()=>{u.value=Math.round(i.value.scrollHeight/i.value.clientHeight)};e.watch(u,()=>{u.value<c.value&&(c.value=1)}),e.watch(()=>o.countCharts,()=>v(),{flush:"post"});const h=e.computed(()=>{if(!s.value)return{};const r=s.value.elCol.getBoundingClientRect(),n={top:r.bottom+window.scrollY+"px"};return document.documentElement.clientWidth/2>r.right?n.left=r.right+window.scrollX+10+"px":(n.left=r.left+window.scrollX-10+"px",n.transform="translate(-100%, 0)"),n});return e.onMounted(()=>{p=new ResizeObserver(()=>v()),p.observe(i.value),e.watch(c,()=>{const d=(i.value.children[0].clientHeight+parseInt(window.getComputedStyle(i.value).getPropertyValue("row-gap")))*(c.value-1);i.value.scrollTo({top:d,behavior:"smooth"})})}),e.onUnmounted(()=>{p.disconnect()}),(r,n)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["top-miniCharts",{"top-miniCharts":!0,scrollable:u.value>1,"top-miniCharts_hideChartInMobile":r.hideChartInMobile}]),ref_key:"elRef",ref:i},[e.renderSlot(r.$slots,"default"),u.value>1?(e.openBlock(),e.createElementBlock("div",N,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.value,d=>(e.openBlock(),e.createElementBlock("span",{class:e.normalizeClass({"top-active":d===c.value}),onClick:t=>c.value=d},null,10,S))),256))])):e.createCommentVNode("",!0),(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[s.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"top-miniCharts_tooltip",style:e.normalizeStyle(h.value)},[e.createElementVNode("span",null,e.toDisplayString(s.value.date),1),e.createElementVNode("span",null,e.toDisplayString(s.value.value),1)],4)):e.createCommentVNode("",!0)]))],2))}}),H=D,I=T;C.TopMiniChart=H,C.TopMiniCharts=I,Object.defineProperty(C,Symbol.toStringTag,{value:"Module"})}));
|
|
1
|
+
define(["require","exports","vue","../.chunks/forms-DRhpgERJ.amd","../utils/number.amd","../require/css.amd!../assets/charts.css"],(function(L,C,e,M,g){"use strict";if(typeof e>"u")var e=window.Vue;const k=90,y=10,V=["data-top-icon"],B={class:"top-miniChart_chart"},b=["onMouseenter"],E={class:"top-miniChart_data"},_={class:"top-miniChart_dataValue"},w=["innerHTML"],D=e.defineComponent({__name:"miniChart",props:e.mergeModels({title:{},gIcon:{},color:{default:"blue"},dates:{},values:{},activeDates:{},keysForDyn:{},dynamic:{},isInvert:{type:Boolean},numberCols:{default:k},additionalHTML:{},modelValue:{},valueSuffix:{},hideChartInMobile:{type:Boolean}},{modelValue:{},modelModifiers:{}}),emits:["update:modelValue"],setup(m){const o=m,s=e.useModel(m,"modelValue"),i=t=>{let l=u.value;o.isInvert&&(t-=1,l-=1);let a=l>0?Math.round(t/l*(100-y)):0;return o.isInvert?100-a:a+y},p=t=>o.activeDates.includes(t),u=e.computed(()=>Math.max(...o.values)),c=e.computed(()=>o.dates.slice().reverse()),v=e.computed(()=>o.dates.length?o.numberCols-o.dates.length:0),h=()=>{s.value=null},r=(t,l,a)=>{t.target instanceof HTMLElement&&(s.value={elCol:t.target,date:M.dateFormat(l),value:a===null?"--":a+(o.valueSuffix??"")})},n=e.computed(()=>{let t=o.dynamic;if(typeof t>"u"){const a=o.values[o.keysForDyn.start];t=o.values[o.keysForDyn.end]-a}return(t<0?-1:1)*g.percentOfNumber(Math.abs(t))}),d=e.computed(()=>{let t="stay";return o.isInvert?(n.value>0&&(t="down"),n.value<0&&(t="up")):(n.value>0&&(t="up"),n.value<0&&(t="down")),t});return(t,l)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass({"top-miniChart":!0,"top-miniChart_hideChartInMobile":t.hideChartInMobile,[`top-color_${t.color}`]:!0})},[e.createElementVNode("div",{class:"top-miniChart_title top-ellipsis","data-top-icon":t.gIcon},e.toDisplayString(t.title),9,V),e.createElementVNode("div",B,[e.createElementVNode("div",{class:"top-miniChart_chartGrid",onMouseleave:l[1]||(l[1]=a=>h())},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.value,(a,f)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass({"top-miniChart_chartGridCol":!0,"top-active":p(a)}),onMouseenter:z=>r(z,a,t.values[t.values.length-f-1])},[e.createElementVNode("div",{style:e.normalizeStyle("height:"+i(t.values[t.values.length-f-1])+"%")},null,4)],42,b))),256)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(v.value,()=>(e.openBlock(),e.createElementBlock("div",{class:"top-miniChart_chartGridCol top-miniChart_chartGridCol-none",onMouseenter:l[0]||(l[0]=a=>h())},[...l[2]||(l[2]=[e.createElementVNode("div",null,null,-1)])],32))),256))],32)]),e.createElementVNode("div",E,[e.createElementVNode("span",{class:e.normalizeClass({"top-miniChart_dataDynamic":!0,[`top-miniChart_dataDynamic-direction_${d.value}`]:!0})},e.toDisplayString(Math.abs(n.value)||""),3),e.createElementVNode("span",_,e.toDisplayString(e.unref(g.percentOfNumber)(t.values[t.values.length-1])||0),1)]),t.additionalHTML?(e.openBlock(),e.createElementBlock("div",{key:0,innerHTML:t.additionalHTML},null,8,w)):e.createCommentVNode("",!0)],2))}}),N={key:0,class:"top-miniCharts_pages"},S=["onClick"],T=e.defineComponent({__name:"miniCharts",props:e.mergeModels({modelValue:{},countCharts:{},hideChartInMobile:{type:Boolean}},{modelValue:{},modelModifiers:{}}),emits:["update:modelValue"],setup(m){const o=m,s=e.useModel(m,"modelValue"),i=e.ref(null);let p;const u=e.ref(1),c=e.ref(1),v=()=>{u.value=Math.round(i.value.scrollHeight/i.value.clientHeight)};e.watch(u,()=>{u.value<c.value&&(c.value=1)}),e.watch(()=>o.countCharts,()=>v(),{flush:"post"});const h=e.computed(()=>{if(!s.value)return{};const r=s.value.elCol.getBoundingClientRect(),n={top:r.bottom+window.scrollY+"px"};return document.documentElement.clientWidth/2>r.right?n.left=r.right+window.scrollX+10+"px":(n.left=r.left+window.scrollX-10+"px",n.transform="translate(-100%, 0)"),n});return e.onMounted(()=>{p=new ResizeObserver(()=>v()),p.observe(i.value),e.watch(c,()=>{const d=(i.value.children[0].clientHeight+parseInt(window.getComputedStyle(i.value).getPropertyValue("row-gap")))*(c.value-1);i.value.scrollTo({top:d,behavior:"smooth"})})}),e.onUnmounted(()=>{p.disconnect()}),(r,n)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["top-miniCharts",{"top-miniCharts":!0,scrollable:u.value>1,"top-miniCharts_hideChartInMobile":r.hideChartInMobile}]),ref_key:"elRef",ref:i},[e.renderSlot(r.$slots,"default"),u.value>1?(e.openBlock(),e.createElementBlock("div",N,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.value,d=>(e.openBlock(),e.createElementBlock("span",{class:e.normalizeClass({"top-active":d===c.value}),onClick:t=>c.value=d},null,10,S))),256))])):e.createCommentVNode("",!0),(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[s.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"top-miniCharts_tooltip",style:e.normalizeStyle(h.value)},[e.createElementVNode("span",null,e.toDisplayString(s.value.date),1),e.createElementVNode("span",null,e.toDisplayString(s.value.value),1)],4)):e.createCommentVNode("",!0)]))],2))}}),H=D,I=T;C.TopMiniChart=H,C.TopMiniCharts=I,Object.defineProperty(C,Symbol.toStringTag,{value:"Module"})}));
|
|
2
2
|
//# sourceMappingURL=charts.amd.js.map
|
package/charts/charts.amd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"charts.amd.js","sources":["../../src/components/charts/miniChart/miniChart.vue","../../src/components/charts/miniCharts/miniCharts.vue","../../src/components/charts/charts.ts"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { Props } from './types';\nimport { computed } from 'vue';\nimport { dateFormat } from '@/core/utils/date';\nimport { percentOfNumber } from '@/core/utils/number';\nimport { defaultNumberCols, minHeight } from './utils/consts';\n\nconst props = withDefaults(defineProps<Props>(), {\n\tcolor: 'blue',\n\tnumberCols: defaultNumberCols,\n});\nconst model = defineModel<Props['modelValue']>();\n\n/**\n * Расчет высоты колонки (в процентах)\n */\nconst genColHeight = (value: number): number => {\n\tlet maximumValue = maxValue.value;\n\n\t// для графиков средней и медианной делаем максимум 1\n\tif (props.isInvert) {\n\t\tvalue -= 1;\n\t\tmaximumValue -= 1;\n\t}\n\n\tlet height = maximumValue > 0 ? Math.round((value / maximumValue) * (100 - minHeight)) : 0;\n\tif (props.isInvert) return 100 - height;\n\n\treturn height + minHeight;\n};\n\nconst isActiveDate = (date: string) => props.activeDates.includes(date);\n\nconst maxValue = computed(() => Math.max(...props.values));\n\n/**\n * Из-за стиля .top-miniChart_chartGrid - direction: rtl\n */\nconst reversedDates = computed(() => props.dates.slice().reverse());\n\n/**\n * Кол-во пустых колонок\n */\nconst numOfEmptyCols = computed(() => {\n\tif (!props.dates.length) return 0;\n\n\treturn props.numberCols - props.dates.length;\n});\n\nconst resetModel = () => {\n\tmodel.value = null;\n};\n\nconst setModel = (e: Event, date: string, value: number | null) => {\n\tif (!(e.target instanceof HTMLElement)) return;\n\n\tmodel.value = {\n\t\telCol: e.target,\n\t\tdate: dateFormat(date),\n\t\tvalue: value === null ? '--' : value + (props.valueSuffix ?? ''),\n\t};\n};\n\n/**\n * Возвращает численный показатель динамики графика\n */\nconst localDynamic = computed(() => {\n\tlet dynamic = props.dynamic;\n\n\tif (typeof dynamic === 'undefined') {\n\t\tconst prevPeriodValue = props.values[props.keysForDyn.start];\n\t\tconst currentValue = props.values[props.keysForDyn.end];\n\t\tdynamic = currentValue - prevPeriodValue;\n\t}\n\n\tconst sign = dynamic < 0 ? -1 : 1;\n\n\treturn sign * (percentOfNumber(Math.abs(dynamic)) as number);\n});\n\nconst dynamicDirection = computed(() => {\n\tlet direction: 'up' | 'stay' | 'down' = 'stay';\n\n\tif (!props.isInvert) {\n\t\tif (localDynamic.value > 0) direction = 'up';\n\t\tif (localDynamic.value < 0) direction = 'down';\n\t} else {\n\t\tif (localDynamic.value > 0) direction = 'down';\n\t\tif (localDynamic.value < 0) direction = 'up';\n\t}\n\n\treturn direction;\n});\n\n</script>\n\n<template>\n\t<div\n\t\t:class=\"{\n\t\t\t['top-miniChart']: true,\n\t\t\t['top-miniChart_hideChartInMobile']: hideChartInMobile,\n\t\t\t[`top-color_${color}`]: true\n\t\t}\"\n\t>\n\t\t<div\n\t\t\tclass=\"top-miniChart_title top-ellipsis\"\n\t\t\t:data-top-icon=\"gIcon\"\n\t\t>\n\t\t\t{{ title }}\n\t\t</div>\n\n\t\t<div class=\"top-miniChart_chart\">\n\t\t\t<div\n\t\t\t\tclass=\"top-miniChart_chartGrid\"\n\t\t\t\t@mouseleave=\"resetModel()\"\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tv-for=\"(date, i) in reversedDates\"\n\t\t\t\t\t:class=\"{\n\t\t\t\t\t\t['top-miniChart_chartGridCol']: true,\n\t\t\t\t\t\t['top-active']: isActiveDate(date)\n\t\t\t\t\t}\"\n\t\t\t\t\t@mouseenter=\"setModel($event, date, values[values.length - i - 1])\"\n\t\t\t\t>\n\t\t\t\t\t<div :style=\"'height:' + genColHeight(values[values.length - i - 1]) + '%'\"/>\n\t\t\t\t</div>\n\t\t\t\t<div\n\t\t\t\t\tv-for=\"() in numOfEmptyCols\"\n\t\t\t\t\tclass=\"top-miniChart_chartGridCol top-miniChart_chartGridCol-none\"\n\t\t\t\t\t@mouseenter=\"resetModel()\"\n\t\t\t\t>\n\t\t\t\t\t<div></div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<div class=\"top-miniChart_data\">\n\t\t\t<span :class=\"{\n\t\t\t\t['top-miniChart_dataDynamic']: true,\n\t\t\t\t[`top-miniChart_dataDynamic-direction_${dynamicDirection}`]: true,\n\t\t\t}\">\n\t\t\t\t{{ Math.abs(localDynamic) || '' }}\n\t\t\t</span>\n\t\t\t<span class=\"top-miniChart_dataValue\">\n\t\t\t\t{{ percentOfNumber(values[values.length - 1]) || 0 }}\n\t\t\t</span>\n\t\t</div>\n\n\t\t<div\n\t\t\tv-if=\"additionalHTML\"\n\t\t\tv-html=\"additionalHTML\"\n\t\t/>\n\t</div>\n\n</template>\n<style>\n@import \"./styles/miniChart.css\";\n</style>\n","<script setup lang=\"ts\">\nimport { computed, onMounted, onUnmounted, ref, watch } from 'vue';\nimport type { Props, Style } from './miniCharts';\n\nconst props = defineProps<Props>();\nconst model = defineModel<Props['modelValue']>();\n\nconst elRef = ref<HTMLElement | null>(null);\n\nlet pagesResizeObserver: ResizeObserver;\n\n/**\n * Количество страниц\n */\nconst countPages = ref(1);\n\n/**\n * Активная страница\n */\nconst activePage = ref(1);\n\n/**\n * Установка количества страниц в блоке\n */\nconst setCountPages = () => {\n\tcountPages.value = Math.round(elRef.value!.scrollHeight / elRef.value!.clientHeight);\n};\n\nwatch(countPages, () => {\n\tif (countPages.value < activePage.value) {\n\t\tactivePage.value = 1;\n\t}\n});\n\nwatch(\n\t() => props.countCharts,\n\t() => setCountPages(),\n\t{ flush: 'post' },\n);\n\n/**\n * Расчет положения для подсказки\n */\nconst tooltipStyle = computed(() => {\n\tif (!model.value) return {};\n\n\tconst box = model.value.elCol.getBoundingClientRect();\n\n\tconst style: Style = {\n\t\ttop: box.bottom + window.scrollY + 'px',\n\t};\n\n\tif (document.documentElement.clientWidth / 2 > box.right) {\n\t\tstyle.left = box.right + window.scrollX + 10 + 'px';\n\t} else {\n\t\tstyle.left = box.left + window.scrollX - 10 + 'px';\n\t\tstyle.transform = 'translate(-100%, 0)';\n\t}\n\n\treturn style;\n});\n\nonMounted(() => {\n\t/**\n\t * Функционал переключения экранов графиков\n\t */\n\tpagesResizeObserver = new ResizeObserver(() => setCountPages());\n\tpagesResizeObserver.observe(elRef.value!);\n\n\twatch(activePage, () => {\n\t\tconst elMiniChart = elRef.value!.children[0];\n\t\tconst pageHeight = elMiniChart.clientHeight + parseInt(window.getComputedStyle(elRef.value!).getPropertyValue('row-gap'));\n\t\tconst scrollTop = pageHeight * (activePage.value - 1);\n\n\t\telRef.value!.scrollTo({ top: scrollTop, behavior: 'smooth' });\n\t});\n});\n\nonUnmounted(() => {\n\tpagesResizeObserver.disconnect();\n});\n</script>\n\n<template>\n\t<div\n\t\tclass=\"top-miniCharts\"\n\t\t:class=\"{\n\t\t\t['top-miniCharts']: true,\n\t\t\t['scrollable']: countPages > 1,\n\t\t\t['top-miniCharts_hideChartInMobile']: hideChartInMobile,\n\t\t}\"\n\t\tref=\"elRef\"\n\t>\n\n\t\t<slot></slot>\n\n\t\t<div\n\t\t\tv-if=\"countPages > 1\"\n\t\t\tclass=\"top-miniCharts_pages\"\n\t\t>\n\t\t\t<span\n\t\t\t\tv-for=\"n in countPages\"\n\t\t\t\t:class=\"{['top-active']: n === activePage}\"\n\t\t\t\t@click=\"activePage = n\"\n\t\t\t></span>\n\t\t</div>\n\n\t\t<Teleport to=\"body\">\n\t\t\t<div\n\t\t\t\tv-if=\"model\"\n\t\t\t\tclass=\"top-miniCharts_tooltip\"\n\t\t\t\t:style=\"tooltipStyle\"\n\t\t\t>\n\t\t\t\t<span>{{ model.date }}</span>\n\t\t\t\t<span>{{ model.value }}</span>\n\t\t\t</div>\n\t\t</Teleport>\n\t</div>\n\n</template>\n\n<style>\n@import \"./styles/miniCharts.css\";\n</style>\n","import type { ComponentCustomProps } from 'vue';\n\nimport MiniChart from './miniChart/miniChart.vue';\nimport MiniCharts from './miniCharts/miniCharts.vue';\n\nexport const TopMiniChart = MiniChart as typeof MiniChart & ComponentCustomProps;\n\nexport const TopMiniCharts = MiniCharts as typeof MiniCharts & ComponentCustomProps;\n"],"names":["genColHeight","value","maximumValue","maxValue","props","isActiveDate","date","vue","reversedDates","numOfEmptyCols","model","e","forms","localDynamic","dynamic","prevPeriodValue","dynamicDirection","direction","_hoisted_2$1","_cache","$event","resetModel","_hoisted_5","utils_number","_ctx","additionalHTML","elRef","pagesResizeObserver","countPages","activePage","tooltipStyle","box","style","scrollTop","hideChartInMobile","_hoisted_1","n","_hoisted_2","TopMiniChart","_sfc_main$1","TopMiniCharts","_sfc_main"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"charts.amd.js","sources":["../../src/components/charts/miniChart/miniChart.vue","../../src/components/charts/miniCharts/miniCharts.vue","../../src/components/charts/charts.ts"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { Props } from './types';\nimport { computed } from 'vue';\nimport { dateFormat } from '@/core/utils/date';\nimport { percentOfNumber } from '@/core/utils/number';\nimport { defaultNumberCols, minHeight } from './utils/consts';\n\nconst props = withDefaults(defineProps<Props>(), {\n\tcolor: 'blue',\n\tnumberCols: defaultNumberCols,\n});\nconst model = defineModel<Props['modelValue']>();\n\n/**\n * Расчет высоты колонки (в процентах)\n */\nconst genColHeight = (value: number): number => {\n\tlet maximumValue = maxValue.value;\n\n\t// для графиков средней и медианной делаем максимум 1\n\tif (props.isInvert) {\n\t\tvalue -= 1;\n\t\tmaximumValue -= 1;\n\t}\n\n\tlet height = maximumValue > 0 ? Math.round((value / maximumValue) * (100 - minHeight)) : 0;\n\tif (props.isInvert) return 100 - height;\n\n\treturn height + minHeight;\n};\n\nconst isActiveDate = (date: string) => props.activeDates.includes(date);\n\nconst maxValue = computed(() => Math.max(...props.values));\n\n/**\n * Из-за стиля .top-miniChart_chartGrid - direction: rtl\n */\nconst reversedDates = computed(() => props.dates.slice().reverse());\n\n/**\n * Кол-во пустых колонок\n */\nconst numOfEmptyCols = computed(() => {\n\tif (!props.dates.length) return 0;\n\n\treturn props.numberCols - props.dates.length;\n});\n\nconst resetModel = () => {\n\tmodel.value = null;\n};\n\nconst setModel = (e: Event, date: string, value: number | null) => {\n\tif (!(e.target instanceof HTMLElement)) return;\n\n\tmodel.value = {\n\t\telCol: e.target,\n\t\tdate: dateFormat(date),\n\t\tvalue: value === null ? '--' : value + (props.valueSuffix ?? ''),\n\t};\n};\n\n/**\n * Возвращает численный показатель динамики графика\n */\nconst localDynamic = computed(() => {\n\tlet dynamic = props.dynamic;\n\n\tif (typeof dynamic === 'undefined') {\n\t\tconst prevPeriodValue = props.values[props.keysForDyn.start];\n\t\tconst currentValue = props.values[props.keysForDyn.end];\n\t\tdynamic = currentValue - prevPeriodValue;\n\t}\n\n\tconst sign = dynamic < 0 ? -1 : 1;\n\n\treturn sign * (percentOfNumber(Math.abs(dynamic)) as number);\n});\n\nconst dynamicDirection = computed(() => {\n\tlet direction: 'up' | 'stay' | 'down' = 'stay';\n\n\tif (!props.isInvert) {\n\t\tif (localDynamic.value > 0) direction = 'up';\n\t\tif (localDynamic.value < 0) direction = 'down';\n\t} else {\n\t\tif (localDynamic.value > 0) direction = 'down';\n\t\tif (localDynamic.value < 0) direction = 'up';\n\t}\n\n\treturn direction;\n});\n\n</script>\n\n<template>\n\t<div\n\t\t:class=\"{\n\t\t\t['top-miniChart']: true,\n\t\t\t['top-miniChart_hideChartInMobile']: hideChartInMobile,\n\t\t\t[`top-color_${color}`]: true\n\t\t}\"\n\t>\n\t\t<div\n\t\t\tclass=\"top-miniChart_title top-ellipsis\"\n\t\t\t:data-top-icon=\"gIcon\"\n\t\t>\n\t\t\t{{ title }}\n\t\t</div>\n\n\t\t<div class=\"top-miniChart_chart\">\n\t\t\t<div\n\t\t\t\tclass=\"top-miniChart_chartGrid\"\n\t\t\t\t@mouseleave=\"resetModel()\"\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tv-for=\"(date, i) in reversedDates\"\n\t\t\t\t\t:class=\"{\n\t\t\t\t\t\t['top-miniChart_chartGridCol']: true,\n\t\t\t\t\t\t['top-active']: isActiveDate(date)\n\t\t\t\t\t}\"\n\t\t\t\t\t@mouseenter=\"setModel($event, date, values[values.length - i - 1])\"\n\t\t\t\t>\n\t\t\t\t\t<div :style=\"'height:' + genColHeight(values[values.length - i - 1]) + '%'\"/>\n\t\t\t\t</div>\n\t\t\t\t<div\n\t\t\t\t\tv-for=\"() in numOfEmptyCols\"\n\t\t\t\t\tclass=\"top-miniChart_chartGridCol top-miniChart_chartGridCol-none\"\n\t\t\t\t\t@mouseenter=\"resetModel()\"\n\t\t\t\t>\n\t\t\t\t\t<div></div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<div class=\"top-miniChart_data\">\n\t\t\t<span :class=\"{\n\t\t\t\t['top-miniChart_dataDynamic']: true,\n\t\t\t\t[`top-miniChart_dataDynamic-direction_${dynamicDirection}`]: true,\n\t\t\t}\">\n\t\t\t\t{{ Math.abs(localDynamic) || '' }}\n\t\t\t</span>\n\t\t\t<span class=\"top-miniChart_dataValue\">\n\t\t\t\t{{ percentOfNumber(values[values.length - 1]) || 0 }}\n\t\t\t</span>\n\t\t</div>\n\n\t\t<div\n\t\t\tv-if=\"additionalHTML\"\n\t\t\tv-html=\"additionalHTML\"\n\t\t/>\n\t</div>\n\n</template>\n<style>\n@import \"./styles/miniChart.css\";\n</style>\n","<script setup lang=\"ts\">\nimport { computed, onMounted, onUnmounted, ref, watch } from 'vue';\nimport type { Props, Style } from './miniCharts';\n\nconst props = defineProps<Props>();\nconst model = defineModel<Props['modelValue']>();\n\nconst elRef = ref<HTMLElement | null>(null);\n\nlet pagesResizeObserver: ResizeObserver;\n\n/**\n * Количество страниц\n */\nconst countPages = ref(1);\n\n/**\n * Активная страница\n */\nconst activePage = ref(1);\n\n/**\n * Установка количества страниц в блоке\n */\nconst setCountPages = () => {\n\tcountPages.value = Math.round(elRef.value!.scrollHeight / elRef.value!.clientHeight);\n};\n\nwatch(countPages, () => {\n\tif (countPages.value < activePage.value) {\n\t\tactivePage.value = 1;\n\t}\n});\n\nwatch(\n\t() => props.countCharts,\n\t() => setCountPages(),\n\t{ flush: 'post' },\n);\n\n/**\n * Расчет положения для подсказки\n */\nconst tooltipStyle = computed(() => {\n\tif (!model.value) return {};\n\n\tconst box = model.value.elCol.getBoundingClientRect();\n\n\tconst style: Style = {\n\t\ttop: box.bottom + window.scrollY + 'px',\n\t};\n\n\tif (document.documentElement.clientWidth / 2 > box.right) {\n\t\tstyle.left = box.right + window.scrollX + 10 + 'px';\n\t} else {\n\t\tstyle.left = box.left + window.scrollX - 10 + 'px';\n\t\tstyle.transform = 'translate(-100%, 0)';\n\t}\n\n\treturn style;\n});\n\nonMounted(() => {\n\t/**\n\t * Функционал переключения экранов графиков\n\t */\n\tpagesResizeObserver = new ResizeObserver(() => setCountPages());\n\tpagesResizeObserver.observe(elRef.value!);\n\n\twatch(activePage, () => {\n\t\tconst elMiniChart = elRef.value!.children[0];\n\t\tconst pageHeight = elMiniChart.clientHeight + parseInt(window.getComputedStyle(elRef.value!).getPropertyValue('row-gap'));\n\t\tconst scrollTop = pageHeight * (activePage.value - 1);\n\n\t\telRef.value!.scrollTo({ top: scrollTop, behavior: 'smooth' });\n\t});\n});\n\nonUnmounted(() => {\n\tpagesResizeObserver.disconnect();\n});\n</script>\n\n<template>\n\t<div\n\t\tclass=\"top-miniCharts\"\n\t\t:class=\"{\n\t\t\t['top-miniCharts']: true,\n\t\t\t['scrollable']: countPages > 1,\n\t\t\t['top-miniCharts_hideChartInMobile']: hideChartInMobile,\n\t\t}\"\n\t\tref=\"elRef\"\n\t>\n\n\t\t<slot></slot>\n\n\t\t<div\n\t\t\tv-if=\"countPages > 1\"\n\t\t\tclass=\"top-miniCharts_pages\"\n\t\t>\n\t\t\t<span\n\t\t\t\tv-for=\"n in countPages\"\n\t\t\t\t:class=\"{['top-active']: n === activePage}\"\n\t\t\t\t@click=\"activePage = n\"\n\t\t\t></span>\n\t\t</div>\n\n\t\t<Teleport to=\"body\">\n\t\t\t<div\n\t\t\t\tv-if=\"model\"\n\t\t\t\tclass=\"top-miniCharts_tooltip\"\n\t\t\t\t:style=\"tooltipStyle\"\n\t\t\t>\n\t\t\t\t<span>{{ model.date }}</span>\n\t\t\t\t<span>{{ model.value }}</span>\n\t\t\t</div>\n\t\t</Teleport>\n\t</div>\n\n</template>\n\n<style>\n@import \"./styles/miniCharts.css\";\n</style>\n","import type { ComponentCustomProps } from 'vue';\n\nimport MiniChart from './miniChart/miniChart.vue';\nimport MiniCharts from './miniCharts/miniCharts.vue';\n\nexport const TopMiniChart = MiniChart as typeof MiniChart & ComponentCustomProps;\n\nexport const TopMiniCharts = MiniCharts as typeof MiniCharts & ComponentCustomProps;\n"],"names":["genColHeight","value","maximumValue","maxValue","props","isActiveDate","date","vue","reversedDates","numOfEmptyCols","model","e","forms","localDynamic","dynamic","prevPeriodValue","dynamicDirection","direction","_hoisted_2$1","_cache","$event","resetModel","_hoisted_5","utils_number","_ctx","additionalHTML","elRef","pagesResizeObserver","countPages","activePage","tooltipStyle","box","style","scrollTop","hideChartInMobile","_hoisted_1","n","_hoisted_2","TopMiniChart","_sfc_main$1","TopMiniCharts","_sfc_main"],"mappings":"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"}
|
package/charts/charts.js
CHANGED
|
@@ -81,9 +81,9 @@ const A = 90, D = 10, U = ["data-top-icon"], W = { class: "top-miniChart_chart"
|
|
|
81
81
|
(a(!0), i(w, null, H(y.value, () => (a(), i("div", {
|
|
82
82
|
class: "top-miniChart_chartGridCol top-miniChart_chartGridCol-none",
|
|
83
83
|
onMouseenter: o[0] || (o[0] = (n) => M())
|
|
84
|
-
}, o[2] || (o[2] = [
|
|
84
|
+
}, [...o[2] || (o[2] = [
|
|
85
85
|
r("div", null, null, -1)
|
|
86
|
-
]), 32))), 256))
|
|
86
|
+
])], 32))), 256))
|
|
87
87
|
], 32)
|
|
88
88
|
]),
|
|
89
89
|
r("div", j, [
|
package/charts/charts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"charts.js","sources":["../../src/components/charts/miniChart/utils/consts.ts","../../src/components/charts/miniChart/miniChart.vue","../../src/components/charts/miniCharts/miniCharts.vue","../../src/components/charts/charts.ts"],"sourcesContent":["/**\n * Кол-во столбцов по умолчанию\n */\nexport const defaultNumberCols = 90;\n\n/**\n * Минимальная высота колонки (в процентах)\n */\nexport const minHeight = 10; // %","<script setup lang=\"ts\">\nimport type { Props } from './types';\nimport { computed } from 'vue';\nimport { dateFormat } from '@/core/utils/date';\nimport { percentOfNumber } from '@/core/utils/number';\nimport { defaultNumberCols, minHeight } from './utils/consts';\n\nconst props = withDefaults(defineProps<Props>(), {\n\tcolor: 'blue',\n\tnumberCols: defaultNumberCols,\n});\nconst model = defineModel<Props['modelValue']>();\n\n/**\n * Расчет высоты колонки (в процентах)\n */\nconst genColHeight = (value: number): number => {\n\tlet maximumValue = maxValue.value;\n\n\t// для графиков средней и медианной делаем максимум 1\n\tif (props.isInvert) {\n\t\tvalue -= 1;\n\t\tmaximumValue -= 1;\n\t}\n\n\tlet height = maximumValue > 0 ? Math.round((value / maximumValue) * (100 - minHeight)) : 0;\n\tif (props.isInvert) return 100 - height;\n\n\treturn height + minHeight;\n};\n\nconst isActiveDate = (date: string) => props.activeDates.includes(date);\n\nconst maxValue = computed(() => Math.max(...props.values));\n\n/**\n * Из-за стиля .top-miniChart_chartGrid - direction: rtl\n */\nconst reversedDates = computed(() => props.dates.slice().reverse());\n\n/**\n * Кол-во пустых колонок\n */\nconst numOfEmptyCols = computed(() => {\n\tif (!props.dates.length) return 0;\n\n\treturn props.numberCols - props.dates.length;\n});\n\nconst resetModel = () => {\n\tmodel.value = null;\n};\n\nconst setModel = (e: Event, date: string, value: number | null) => {\n\tif (!(e.target instanceof HTMLElement)) return;\n\n\tmodel.value = {\n\t\telCol: e.target,\n\t\tdate: dateFormat(date),\n\t\tvalue: value === null ? '--' : value + (props.valueSuffix ?? ''),\n\t};\n};\n\n/**\n * Возвращает численный показатель динамики графика\n */\nconst localDynamic = computed(() => {\n\tlet dynamic = props.dynamic;\n\n\tif (typeof dynamic === 'undefined') {\n\t\tconst prevPeriodValue = props.values[props.keysForDyn.start];\n\t\tconst currentValue = props.values[props.keysForDyn.end];\n\t\tdynamic = currentValue - prevPeriodValue;\n\t}\n\n\tconst sign = dynamic < 0 ? -1 : 1;\n\n\treturn sign * (percentOfNumber(Math.abs(dynamic)) as number);\n});\n\nconst dynamicDirection = computed(() => {\n\tlet direction: 'up' | 'stay' | 'down' = 'stay';\n\n\tif (!props.isInvert) {\n\t\tif (localDynamic.value > 0) direction = 'up';\n\t\tif (localDynamic.value < 0) direction = 'down';\n\t} else {\n\t\tif (localDynamic.value > 0) direction = 'down';\n\t\tif (localDynamic.value < 0) direction = 'up';\n\t}\n\n\treturn direction;\n});\n\n</script>\n\n<template>\n\t<div\n\t\t:class=\"{\n\t\t\t['top-miniChart']: true,\n\t\t\t['top-miniChart_hideChartInMobile']: hideChartInMobile,\n\t\t\t[`top-color_${color}`]: true\n\t\t}\"\n\t>\n\t\t<div\n\t\t\tclass=\"top-miniChart_title top-ellipsis\"\n\t\t\t:data-top-icon=\"gIcon\"\n\t\t>\n\t\t\t{{ title }}\n\t\t</div>\n\n\t\t<div class=\"top-miniChart_chart\">\n\t\t\t<div\n\t\t\t\tclass=\"top-miniChart_chartGrid\"\n\t\t\t\t@mouseleave=\"resetModel()\"\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tv-for=\"(date, i) in reversedDates\"\n\t\t\t\t\t:class=\"{\n\t\t\t\t\t\t['top-miniChart_chartGridCol']: true,\n\t\t\t\t\t\t['top-active']: isActiveDate(date)\n\t\t\t\t\t}\"\n\t\t\t\t\t@mouseenter=\"setModel($event, date, values[values.length - i - 1])\"\n\t\t\t\t>\n\t\t\t\t\t<div :style=\"'height:' + genColHeight(values[values.length - i - 1]) + '%'\"/>\n\t\t\t\t</div>\n\t\t\t\t<div\n\t\t\t\t\tv-for=\"() in numOfEmptyCols\"\n\t\t\t\t\tclass=\"top-miniChart_chartGridCol top-miniChart_chartGridCol-none\"\n\t\t\t\t\t@mouseenter=\"resetModel()\"\n\t\t\t\t>\n\t\t\t\t\t<div></div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<div class=\"top-miniChart_data\">\n\t\t\t<span :class=\"{\n\t\t\t\t['top-miniChart_dataDynamic']: true,\n\t\t\t\t[`top-miniChart_dataDynamic-direction_${dynamicDirection}`]: true,\n\t\t\t}\">\n\t\t\t\t{{ Math.abs(localDynamic) || '' }}\n\t\t\t</span>\n\t\t\t<span class=\"top-miniChart_dataValue\">\n\t\t\t\t{{ percentOfNumber(values[values.length - 1]) || 0 }}\n\t\t\t</span>\n\t\t</div>\n\n\t\t<div\n\t\t\tv-if=\"additionalHTML\"\n\t\t\tv-html=\"additionalHTML\"\n\t\t/>\n\t</div>\n\n</template>\n<style>\n@import \"./styles/miniChart.css\";\n</style>\n","<script setup lang=\"ts\">\nimport { computed, onMounted, onUnmounted, ref, watch } from 'vue';\nimport type { Props, Style } from './miniCharts';\n\nconst props = defineProps<Props>();\nconst model = defineModel<Props['modelValue']>();\n\nconst elRef = ref<HTMLElement | null>(null);\n\nlet pagesResizeObserver: ResizeObserver;\n\n/**\n * Количество страниц\n */\nconst countPages = ref(1);\n\n/**\n * Активная страница\n */\nconst activePage = ref(1);\n\n/**\n * Установка количества страниц в блоке\n */\nconst setCountPages = () => {\n\tcountPages.value = Math.round(elRef.value!.scrollHeight / elRef.value!.clientHeight);\n};\n\nwatch(countPages, () => {\n\tif (countPages.value < activePage.value) {\n\t\tactivePage.value = 1;\n\t}\n});\n\nwatch(\n\t() => props.countCharts,\n\t() => setCountPages(),\n\t{ flush: 'post' },\n);\n\n/**\n * Расчет положения для подсказки\n */\nconst tooltipStyle = computed(() => {\n\tif (!model.value) return {};\n\n\tconst box = model.value.elCol.getBoundingClientRect();\n\n\tconst style: Style = {\n\t\ttop: box.bottom + window.scrollY + 'px',\n\t};\n\n\tif (document.documentElement.clientWidth / 2 > box.right) {\n\t\tstyle.left = box.right + window.scrollX + 10 + 'px';\n\t} else {\n\t\tstyle.left = box.left + window.scrollX - 10 + 'px';\n\t\tstyle.transform = 'translate(-100%, 0)';\n\t}\n\n\treturn style;\n});\n\nonMounted(() => {\n\t/**\n\t * Функционал переключения экранов графиков\n\t */\n\tpagesResizeObserver = new ResizeObserver(() => setCountPages());\n\tpagesResizeObserver.observe(elRef.value!);\n\n\twatch(activePage, () => {\n\t\tconst elMiniChart = elRef.value!.children[0];\n\t\tconst pageHeight = elMiniChart.clientHeight + parseInt(window.getComputedStyle(elRef.value!).getPropertyValue('row-gap'));\n\t\tconst scrollTop = pageHeight * (activePage.value - 1);\n\n\t\telRef.value!.scrollTo({ top: scrollTop, behavior: 'smooth' });\n\t});\n});\n\nonUnmounted(() => {\n\tpagesResizeObserver.disconnect();\n});\n</script>\n\n<template>\n\t<div\n\t\tclass=\"top-miniCharts\"\n\t\t:class=\"{\n\t\t\t['top-miniCharts']: true,\n\t\t\t['scrollable']: countPages > 1,\n\t\t\t['top-miniCharts_hideChartInMobile']: hideChartInMobile,\n\t\t}\"\n\t\tref=\"elRef\"\n\t>\n\n\t\t<slot></slot>\n\n\t\t<div\n\t\t\tv-if=\"countPages > 1\"\n\t\t\tclass=\"top-miniCharts_pages\"\n\t\t>\n\t\t\t<span\n\t\t\t\tv-for=\"n in countPages\"\n\t\t\t\t:class=\"{['top-active']: n === activePage}\"\n\t\t\t\t@click=\"activePage = n\"\n\t\t\t></span>\n\t\t</div>\n\n\t\t<Teleport to=\"body\">\n\t\t\t<div\n\t\t\t\tv-if=\"model\"\n\t\t\t\tclass=\"top-miniCharts_tooltip\"\n\t\t\t\t:style=\"tooltipStyle\"\n\t\t\t>\n\t\t\t\t<span>{{ model.date }}</span>\n\t\t\t\t<span>{{ model.value }}</span>\n\t\t\t</div>\n\t\t</Teleport>\n\t</div>\n\n</template>\n\n<style>\n@import \"./styles/miniCharts.css\";\n</style>\n","import type { ComponentCustomProps } from 'vue';\n\nimport MiniChart from './miniChart/miniChart.vue';\nimport MiniCharts from './miniCharts/miniCharts.vue';\n\nexport const TopMiniChart = MiniChart as typeof MiniChart & ComponentCustomProps;\n\nexport const TopMiniCharts = MiniCharts as typeof MiniCharts & ComponentCustomProps;\n"],"names":["defaultNumberCols","minHeight","props","__props","model","useModel","genColHeight","value","maximumValue","maxValue","height","isActiveDate","date","computed","reversedDates","numOfEmptyCols","resetModel","setModel","dateFormat","localDynamic","dynamic","prevPeriodValue","percentOfNumber","dynamicDirection","direction","normalizeClass","hideChartInMobile","_ctx","gIcon","createElementVNode","_hoisted_2$1","_cache","$event","normalizeStyle","i","_hoisted_5","toDisplayString","unref","additionalHTML","elRef","ref","pagesResizeObserver","countPages","activePage","setCountPages","watch","tooltipStyle","box","style","onMounted","scrollTop","onUnmounted","openBlock","createElementBlock","_hoisted_1","Fragment","renderList","n","_hoisted_2","createCommentVNode","TopMiniChart","_sfc_main$1","TopMiniCharts","_sfc_main"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"charts.js","sources":["../../src/components/charts/miniChart/utils/consts.ts","../../src/components/charts/miniChart/miniChart.vue","../../src/components/charts/miniCharts/miniCharts.vue","../../src/components/charts/charts.ts"],"sourcesContent":["/**\n * Кол-во столбцов по умолчанию\n */\nexport const defaultNumberCols = 90;\n\n/**\n * Минимальная высота колонки (в процентах)\n */\nexport const minHeight = 10; // %","<script setup lang=\"ts\">\nimport type { Props } from './types';\nimport { computed } from 'vue';\nimport { dateFormat } from '@/core/utils/date';\nimport { percentOfNumber } from '@/core/utils/number';\nimport { defaultNumberCols, minHeight } from './utils/consts';\n\nconst props = withDefaults(defineProps<Props>(), {\n\tcolor: 'blue',\n\tnumberCols: defaultNumberCols,\n});\nconst model = defineModel<Props['modelValue']>();\n\n/**\n * Расчет высоты колонки (в процентах)\n */\nconst genColHeight = (value: number): number => {\n\tlet maximumValue = maxValue.value;\n\n\t// для графиков средней и медианной делаем максимум 1\n\tif (props.isInvert) {\n\t\tvalue -= 1;\n\t\tmaximumValue -= 1;\n\t}\n\n\tlet height = maximumValue > 0 ? Math.round((value / maximumValue) * (100 - minHeight)) : 0;\n\tif (props.isInvert) return 100 - height;\n\n\treturn height + minHeight;\n};\n\nconst isActiveDate = (date: string) => props.activeDates.includes(date);\n\nconst maxValue = computed(() => Math.max(...props.values));\n\n/**\n * Из-за стиля .top-miniChart_chartGrid - direction: rtl\n */\nconst reversedDates = computed(() => props.dates.slice().reverse());\n\n/**\n * Кол-во пустых колонок\n */\nconst numOfEmptyCols = computed(() => {\n\tif (!props.dates.length) return 0;\n\n\treturn props.numberCols - props.dates.length;\n});\n\nconst resetModel = () => {\n\tmodel.value = null;\n};\n\nconst setModel = (e: Event, date: string, value: number | null) => {\n\tif (!(e.target instanceof HTMLElement)) return;\n\n\tmodel.value = {\n\t\telCol: e.target,\n\t\tdate: dateFormat(date),\n\t\tvalue: value === null ? '--' : value + (props.valueSuffix ?? ''),\n\t};\n};\n\n/**\n * Возвращает численный показатель динамики графика\n */\nconst localDynamic = computed(() => {\n\tlet dynamic = props.dynamic;\n\n\tif (typeof dynamic === 'undefined') {\n\t\tconst prevPeriodValue = props.values[props.keysForDyn.start];\n\t\tconst currentValue = props.values[props.keysForDyn.end];\n\t\tdynamic = currentValue - prevPeriodValue;\n\t}\n\n\tconst sign = dynamic < 0 ? -1 : 1;\n\n\treturn sign * (percentOfNumber(Math.abs(dynamic)) as number);\n});\n\nconst dynamicDirection = computed(() => {\n\tlet direction: 'up' | 'stay' | 'down' = 'stay';\n\n\tif (!props.isInvert) {\n\t\tif (localDynamic.value > 0) direction = 'up';\n\t\tif (localDynamic.value < 0) direction = 'down';\n\t} else {\n\t\tif (localDynamic.value > 0) direction = 'down';\n\t\tif (localDynamic.value < 0) direction = 'up';\n\t}\n\n\treturn direction;\n});\n\n</script>\n\n<template>\n\t<div\n\t\t:class=\"{\n\t\t\t['top-miniChart']: true,\n\t\t\t['top-miniChart_hideChartInMobile']: hideChartInMobile,\n\t\t\t[`top-color_${color}`]: true\n\t\t}\"\n\t>\n\t\t<div\n\t\t\tclass=\"top-miniChart_title top-ellipsis\"\n\t\t\t:data-top-icon=\"gIcon\"\n\t\t>\n\t\t\t{{ title }}\n\t\t</div>\n\n\t\t<div class=\"top-miniChart_chart\">\n\t\t\t<div\n\t\t\t\tclass=\"top-miniChart_chartGrid\"\n\t\t\t\t@mouseleave=\"resetModel()\"\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tv-for=\"(date, i) in reversedDates\"\n\t\t\t\t\t:class=\"{\n\t\t\t\t\t\t['top-miniChart_chartGridCol']: true,\n\t\t\t\t\t\t['top-active']: isActiveDate(date)\n\t\t\t\t\t}\"\n\t\t\t\t\t@mouseenter=\"setModel($event, date, values[values.length - i - 1])\"\n\t\t\t\t>\n\t\t\t\t\t<div :style=\"'height:' + genColHeight(values[values.length - i - 1]) + '%'\"/>\n\t\t\t\t</div>\n\t\t\t\t<div\n\t\t\t\t\tv-for=\"() in numOfEmptyCols\"\n\t\t\t\t\tclass=\"top-miniChart_chartGridCol top-miniChart_chartGridCol-none\"\n\t\t\t\t\t@mouseenter=\"resetModel()\"\n\t\t\t\t>\n\t\t\t\t\t<div></div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<div class=\"top-miniChart_data\">\n\t\t\t<span :class=\"{\n\t\t\t\t['top-miniChart_dataDynamic']: true,\n\t\t\t\t[`top-miniChart_dataDynamic-direction_${dynamicDirection}`]: true,\n\t\t\t}\">\n\t\t\t\t{{ Math.abs(localDynamic) || '' }}\n\t\t\t</span>\n\t\t\t<span class=\"top-miniChart_dataValue\">\n\t\t\t\t{{ percentOfNumber(values[values.length - 1]) || 0 }}\n\t\t\t</span>\n\t\t</div>\n\n\t\t<div\n\t\t\tv-if=\"additionalHTML\"\n\t\t\tv-html=\"additionalHTML\"\n\t\t/>\n\t</div>\n\n</template>\n<style>\n@import \"./styles/miniChart.css\";\n</style>\n","<script setup lang=\"ts\">\nimport { computed, onMounted, onUnmounted, ref, watch } from 'vue';\nimport type { Props, Style } from './miniCharts';\n\nconst props = defineProps<Props>();\nconst model = defineModel<Props['modelValue']>();\n\nconst elRef = ref<HTMLElement | null>(null);\n\nlet pagesResizeObserver: ResizeObserver;\n\n/**\n * Количество страниц\n */\nconst countPages = ref(1);\n\n/**\n * Активная страница\n */\nconst activePage = ref(1);\n\n/**\n * Установка количества страниц в блоке\n */\nconst setCountPages = () => {\n\tcountPages.value = Math.round(elRef.value!.scrollHeight / elRef.value!.clientHeight);\n};\n\nwatch(countPages, () => {\n\tif (countPages.value < activePage.value) {\n\t\tactivePage.value = 1;\n\t}\n});\n\nwatch(\n\t() => props.countCharts,\n\t() => setCountPages(),\n\t{ flush: 'post' },\n);\n\n/**\n * Расчет положения для подсказки\n */\nconst tooltipStyle = computed(() => {\n\tif (!model.value) return {};\n\n\tconst box = model.value.elCol.getBoundingClientRect();\n\n\tconst style: Style = {\n\t\ttop: box.bottom + window.scrollY + 'px',\n\t};\n\n\tif (document.documentElement.clientWidth / 2 > box.right) {\n\t\tstyle.left = box.right + window.scrollX + 10 + 'px';\n\t} else {\n\t\tstyle.left = box.left + window.scrollX - 10 + 'px';\n\t\tstyle.transform = 'translate(-100%, 0)';\n\t}\n\n\treturn style;\n});\n\nonMounted(() => {\n\t/**\n\t * Функционал переключения экранов графиков\n\t */\n\tpagesResizeObserver = new ResizeObserver(() => setCountPages());\n\tpagesResizeObserver.observe(elRef.value!);\n\n\twatch(activePage, () => {\n\t\tconst elMiniChart = elRef.value!.children[0];\n\t\tconst pageHeight = elMiniChart.clientHeight + parseInt(window.getComputedStyle(elRef.value!).getPropertyValue('row-gap'));\n\t\tconst scrollTop = pageHeight * (activePage.value - 1);\n\n\t\telRef.value!.scrollTo({ top: scrollTop, behavior: 'smooth' });\n\t});\n});\n\nonUnmounted(() => {\n\tpagesResizeObserver.disconnect();\n});\n</script>\n\n<template>\n\t<div\n\t\tclass=\"top-miniCharts\"\n\t\t:class=\"{\n\t\t\t['top-miniCharts']: true,\n\t\t\t['scrollable']: countPages > 1,\n\t\t\t['top-miniCharts_hideChartInMobile']: hideChartInMobile,\n\t\t}\"\n\t\tref=\"elRef\"\n\t>\n\n\t\t<slot></slot>\n\n\t\t<div\n\t\t\tv-if=\"countPages > 1\"\n\t\t\tclass=\"top-miniCharts_pages\"\n\t\t>\n\t\t\t<span\n\t\t\t\tv-for=\"n in countPages\"\n\t\t\t\t:class=\"{['top-active']: n === activePage}\"\n\t\t\t\t@click=\"activePage = n\"\n\t\t\t></span>\n\t\t</div>\n\n\t\t<Teleport to=\"body\">\n\t\t\t<div\n\t\t\t\tv-if=\"model\"\n\t\t\t\tclass=\"top-miniCharts_tooltip\"\n\t\t\t\t:style=\"tooltipStyle\"\n\t\t\t>\n\t\t\t\t<span>{{ model.date }}</span>\n\t\t\t\t<span>{{ model.value }}</span>\n\t\t\t</div>\n\t\t</Teleport>\n\t</div>\n\n</template>\n\n<style>\n@import \"./styles/miniCharts.css\";\n</style>\n","import type { ComponentCustomProps } from 'vue';\n\nimport MiniChart from './miniChart/miniChart.vue';\nimport MiniCharts from './miniCharts/miniCharts.vue';\n\nexport const TopMiniChart = MiniChart as typeof MiniChart & ComponentCustomProps;\n\nexport const TopMiniCharts = MiniCharts as typeof MiniCharts & ComponentCustomProps;\n"],"names":["defaultNumberCols","minHeight","props","__props","model","useModel","genColHeight","value","maximumValue","maxValue","height","isActiveDate","date","computed","reversedDates","numOfEmptyCols","resetModel","setModel","dateFormat","localDynamic","dynamic","prevPeriodValue","percentOfNumber","dynamicDirection","direction","normalizeClass","hideChartInMobile","_ctx","gIcon","createElementVNode","_hoisted_2$1","_cache","$event","normalizeStyle","i","_hoisted_5","toDisplayString","unref","additionalHTML","elRef","ref","pagesResizeObserver","countPages","activePage","setCountPages","watch","tooltipStyle","box","style","onMounted","scrollTop","onUnmounted","openBlock","createElementBlock","_hoisted_1","Fragment","renderList","n","_hoisted_2","createCommentVNode","TopMiniChart","_sfc_main$1","TopMiniCharts","_sfc_main"],"mappings":";;;;;;AAGO,MAAAA,IAAA,IAKAC,IAAA;;;;;;;;;;;;;;;;;;;;;;;ACDP,UAAAC,IAAAC,GAIAC,IAAAC,EAAAF,GAAA,YAAA,GAKAG,IAAA,CAAAC,MAAA;AACC,UAAAC,IAAAC,EAAA;AAGA,MAAAP,EAAA,aACCK,KAAA,GACAC,KAAA;AAGD,UAAAE,IAAAF,IAAA,IAAA,KAAA,MAAAD,IAAAC,KAAA,MAAAP,EAAA,IAAA;AACA,aAAAC,EAAA,WAAA,MAAAQ,IAEAA,IAAAT;AAAA,IAAgB,GAGjBU,IAAA,CAAAC,MAAAV,EAAA,YAAA,SAAAU,CAAA,GAEAH,IAAAI,EAAA,MAAA,KAAA,IAAA,GAAAX,EAAA,MAAA,CAAA,GAKAY,IAAAD,EAAA,MAAAX,EAAA,MAAA,MAAA,EAAA,QAAA,CAAA,GAKAa,IAAAF,EAAA,MACCX,EAAA,MAAA,SAEAA,EAAA,aAAAA,EAAA,MAAA,SAFA,CAEsC,GAGvCc,IAAA,MAAA;AACC,MAAAZ,EAAA,QAAA;AAAA,IAAc,GAGfa,IAAA,CAAA,GAAAL,GAAAL,MAAA;AACC,MAAA,EAAA,kBAAA,gBAEAH,EAAA,QAAA;AAAA,QAAc,OAAA,EAAA;AAAA,QACJ,MAAAc,EAAAN,CAAA;AAAA,QACY,OAAAL,MAAA,OAAA,OAAAA,KAAAL,EAAA,eAAA;AAAA,MACwC;AAAA,IAC9D,GAMDiB,IAAAN,EAAA,MAAA;AACC,UAAAO,IAAAlB,EAAA;AAEA,UAAA,OAAAkB,IAAA,KAAA;AACC,cAAAC,IAAAnB,EAAA,OAAAA,EAAA,WAAA,KAAA;AAEA,QAAAkB,IADAlB,EAAA,OAAAA,EAAA,WAAA,GAAA,IACAmB;AAAA,MAAyB;AAK1B,cAFAD,IAAA,IAAA,KAAA,KAEAE,EAAA,KAAA,IAAAF,CAAA,CAAA;AAAA,IAAgD,CAAA,GAGjDG,IAAAV,EAAA,MAAA;AACC,UAAAW,IAAA;AAEA,aAAAtB,EAAA,YAICiB,EAAA,QAAA,MAAAK,IAAA,SACAL,EAAA,QAAA,MAAAK,IAAA,UAJAL,EAAA,QAAA,MAAAK,IAAA,OACAL,EAAA,QAAA,MAAAK,IAAA,UAMDA;AAAA,IAAO,CAAA;;MA6DD,OAAAC,EAAA;AAAA,QAtDC,iBAAA;AAAA;QAAwEC,CAAAA,aAAAA,EAAAA,KAAAA,EAAAA,GAAAA;AAAAA,MAAyC,CAAA;AAAA;;QAWjH,OAAA;AAAA,QAJC,iBAAAC,EAAA;AAAA,MACUC,GAAAA,EAAAA,EAAAA,KAAAA,GAAAA,GAAAA,CAAAA;AAAAA,MAERC,EAAA,OAAAC,GAAA;AAAA,QA0BHD,EAAA,OAAA;AAAA,UADC,OAAA;AAAA,UApBC,cAAAE,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAC,MAAAhB,EAAA;AAAA,QACiB,GAAA;AAAA;YAWjB,OAAAS,EAAA;AAAA,cAPC,8BAAA;AAAA;YAAuF,CAAA;AAAA;UAIjC,GAAA;AAAA;cAEiB,OAAAQ,EAAA,YAAA3B,EAAAqB,EAAA,OAAAA,EAAA,OAAA,SAAAO,IAAA,CAAA,CAAA,IAAA,GAAA;AAAA,YAAf,GAAA,MAAA,CAAA;AAAA;;YAQzD,OAAA;AAAA,YAJC,cAAAH,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAC,MAAAhB,EAAA;AAAA,UACiB,GAAA,CAAA,GAAAe,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA;AAAA;UAEZ,EAAA,GAAA,EAAA;;;;QAeRF,EAAA,QAAA;AAAA,UAJE,OAAAJ,EAAA;AAAA,YALK,6BAAA;AAAA;UAAyG,CAAA;AAAA;QAI5FI,EAAA,QAAAM,GAAAC,EAAAC,EAAAf,CAAA,EAAAK,EAAA,OAAAA,EAAA,OAAA,SAAA,CAAA,CAAA,KAAA,CAAA,GAAA,CAAA;AAAA,MAGe,CAAA;AAAA;QAOvC,KAAA;AAAA;MADOW,GAAAA,MAAAA,GAAAA,CAAAA,KAAAA,EAAAA,IAAAA,EAAAA;AAAAA;;;;;;;;;;;;;;;;;AClJX,UAAApC,IAAAC,GACAC,IAAAC,EAAAF,GAAA,YAAA,GAEAoC,IAAAC,EAAA,IAAA;AAEA,QAAAC;AAKA,UAAAC,IAAAF,EAAA,CAAA,GAKAG,IAAAH,EAAA,CAAA,GAKAI,IAAA,MAAA;AACC,MAAAF,EAAA,QAAA,KAAA,MAAAH,EAAA,MAAA,eAAAA,EAAA,MAAA,YAAA;AAAA,IAAmF;AAGpF,IAAAM,EAAAH,GAAA,MAAA;AACC,MAAAA,EAAA,QAAAC,EAAA,UACCA,EAAA,QAAA;AAAA,IACD,CAAA,GAGDE;AAAA,MAAA,MAAA3C,EAAA;AAAA,MACa,MAAA0C,EAAA;AAAA,MACQ,EAAA,OAAA,OAAA;AAAA,IACJ;AAMjB,UAAAE,IAAAjC,EAAA,MAAA;AACC,UAAA,CAAAT,EAAA,MAAA,QAAA,CAAA;AAEA,YAAA2C,IAAA3C,EAAA,MAAA,MAAA,sBAAA,GAEA4C,IAAA;AAAA,QAAqB,KAAAD,EAAA,SAAA,OAAA,UAAA;AAAA,MACe;AAGpC,aAAA,SAAA,gBAAA,cAAA,IAAAA,EAAA,QACCC,EAAA,OAAAD,EAAA,QAAA,OAAA,UAAA,KAAA,QAEAC,EAAA,OAAAD,EAAA,OAAA,OAAA,UAAA,KAAA,MACAC,EAAA,YAAA,wBAGDA;AAAA,IAAO,CAAA;AAGR,WAAAC,EAAA,MAAA;AAIC,MAAAR,IAAA,IAAA,eAAA,MAAAG,EAAA,CAAA,GACAH,EAAA,QAAAF,EAAA,KAAA,GAEAM,EAAAF,GAAA,MAAA;AAGC,cAAAO,KAFAX,EAAA,MAAA,SAAA,CAAA,EACA,eAAA,SAAA,OAAA,iBAAAA,EAAA,KAAA,EAAA,iBAAA,SAAA,CAAA,MACAI,EAAA,QAAA;AAEA,QAAAJ,EAAA,MAAA,SAAA,EAAA,KAAAW,GAAA,UAAA,SAAA,CAAA;AAAA,MAA4D,CAAA;AAAA,IAC5D,CAAA,GAGFC,EAAA,MAAA;AACC,MAAAV,EAAA,WAAA;AAAA,IAA+B,CAAA;MAsCzB,OAAAhB,EAAA,CAAA,kBAAA;AAAA,QAhCiB,kBAAA;AAAA;QAC8C,oCAAAE,EAAA;AAAA,MAA+CD,CAAAA,CAAAA;AAAAA;MAK/G,KAAAa;AAAA,IAAA,GAAA;AAAA;MAGSG,EAAA,QAAA,KAAAU,EAAA,GAAAC,EAAA,OAAAC,GAAA;AAAA,SAWPF,EAAA,EAAA,GAAAC,EAAAE,GAAA,MAAAC,EAAAd,EAAA,OAAA,CAAAe;UADG,OAAAhC,EAAA,EAAA,cAAAgC,MAAAd,EAAA,MAAA,CAAA;AAAA,UAFkC,SAAA,CAAAX,MAAAW,EAAA,QAAAc;AAAA,QACpB,GAAA,MAAA,IAAAC,CAAA;;;QAIJtD,EAAA,SAAAgD,EAAA,GAAAC,EAAA,OAAA;AAAA,UAQZ,KAAA;AAAA;UALC,OAAApB,EAAAa,EAAA,KAAA;AAAA,QACc,GAAA;AAAA;UAEDjB,EAAA,QAAA,MAAAO,EAAAhC,EAAA,MAAA,KAAA,GAAA,CAAA;AAAA,QACC,GAAA,CAAA,KAAAuD,EAAA,IAAA,EAAA;AAAA;;;IC7GjBC,KAAAC,GAEAC,KAAAC;"}
|