From 86504e2878ed395a4d303c3bb083038732620d66 Mon Sep 17 00:00:00 2001 From: Jin-Hee Park <53548023+jhee564@users.noreply.github.com> Date: Tue, 8 Feb 2022 15:40:51 +0900 Subject: [PATCH] =?UTF-8?q?[#1038]=20chart=20select=20item=20=EC=98=B5?= =?UTF-8?q?=EC=85=98=20=EA=B4=80=EB=A0=A8=20=EB=A1=9C=EC=A7=81=20=EA=B0=9C?= =?UTF-8?q?=EC=84=A0=20(#1060)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: jinhee park --- docs/views/barChart/api/barChart.md | 34 +++-- docs/views/barChart/example/Event.vue | 31 +++- docs/views/barChart/example/Time.vue | 14 ++ docs/views/lineChart/api/lineChart.md | 36 +++-- docs/views/lineChart/example/Event.vue | 7 + package.json | 2 +- src/components/chart/Chart.vue | 18 ++- src/components/chart/chart.core.js | 25 +++- src/components/chart/element/element.tip.js | 34 +++-- src/components/chart/model/model.store.js | 120 ++++++++++++---- .../chart/plugins/plugins.interaction.js | 132 ++---------------- src/components/chart/uses.js | 10 +- 12 files changed, 268 insertions(+), 195 deletions(-) diff --git a/docs/views/barChart/api/barChart.md b/docs/views/barChart/api/barChart.md index ffc2b40fb..6e8a98cf1 100644 --- a/docs/views/barChart/api/barChart.md +++ b/docs/views/barChart/api/barChart.md @@ -3,6 +3,7 @@ ``` ## Props -### 1. data +### 1. v-model:selectedItem + - option에서 [selectItem](#selectitem) 옵션을 사용할 경우 유효한 바인딩 + - 현재 선택된 Item에 대한 정보 (seriesID, dataIndex) +#### Example +``` +const selectedItem = ref({ + seriesID: 'series1', // Series ID (key) + dataIndex: 0, // 몇번째 데이터인지 +}); +``` + + +### 2. data | 이름 | 타입 | 디폴트 | 설명 | 종류 | |------------ |-----------|---------|-------------------------|---------------------------------------------------| | series | Object | {} | 특정 데이터에 대한 시리즈 옵션 | | @@ -66,7 +79,7 @@ const chartData = { } ``` -### 2. options +### 3. options | 이름 | 타입 | 디폴트 | 설명 | 종류(예시) | |------------ |-----------|---------|-------------------------|---------------------------------------------------| | type | String | '' | series 별로 type값을 지정하지 않을 경우 일괄 적용될 차트의 타입 | 'bar', 'pie', 'line', 'scatter' | @@ -241,15 +254,16 @@ const chartData = { | tipBackground | Hex, RGB, RGBA Code(String) | '#000000' | tip 배경색상 | | | tipTextColor | Hex, RGB, RGBA Code(String) | '#FFFFFF' | tip 글자 색상 | | ->### Event -| 이름 | 파라미터 | 설명 | - |------|----------|------| - | click | selectedItem | 클릭된 series의 label, value, seriesID 값을 반환 | - | dbl-click | selectedItem | 더블 클릭된 series의 label, value, seriesID 값을 반환 | - * 단, `selectedItem` 옵션의 `use`값이 `true` 이어야 `selectedItem` 객체를 반환하며 false일 경우 빈 객체를 반환 - -### 3. resize-timeout +### 4. resize-timeout - Default : 0 - debounce 사용. 연속으로 이벤트가 발생한 경우, 마지막 이벤트가 끝난 시점을 기준으로 `주어진 시간 (resize-timeout)` 이후 콜백 실행 + +### 5. Event +| 이름 | 파라미터 | 설명 | + |------|----------|------| +| click | selectedItem | 클릭된 series의 label, value, seriesID 값을 반환 | +| dbl-click | selectedItem | 더블 클릭된 series의 label, value, seriesID 값을 반환 | +* 단, `selectedItem` 옵션의 `use`값이 `true` 이어야 `selectedItem` 객체를 반환하며 false일 경우 빈 객체를 반환 + diff --git a/docs/views/barChart/example/Event.vue b/docs/views/barChart/example/Event.vue index 71f6c38f2..094f868fe 100644 --- a/docs/views/barChart/example/Event.vue +++ b/docs/views/barChart/example/Event.vue @@ -2,6 +2,7 @@
- select Value1 + @click="toggleSelectData"> + select toggle 1 - 2

+
+ 기본 선택값 v-model +
+ {{ defaultSelectItem }} +

클릭된 라벨
@@ -38,10 +44,12 @@ const chartData = { series: { series1: { name: 'series#1' }, + series2: { name: 'series#2' }, }, labels: ['value1', 'value2', 'value3', 'value4', 'value5'], data: { series1: [100, 150, 51, 150, 350], + series2: [100, 150, 51, 150, 450], }, }; @@ -75,6 +83,12 @@ selectItem: { use: true, showTextTip: true, + tipBackground: '#FF00FF', + }, + maxTip: { + use: true, + showTextTip: true, + tipBackground: '#FF0000', }, }; @@ -88,8 +102,14 @@ dblClickedLabel.value = target.label; }; - const selectValue1 = () => { - chart.value.selectItemByLabel('value1'); + const defaultSelectItem = ref({ + seriesID: 'series1', + dataIndex: 1, + }); + + const toggleSelectData = () => { + const idx = defaultSelectItem.value.dataIndex; + defaultSelectItem.value.dataIndex = idx === 1 ? 2 : 1; }; return { @@ -98,9 +118,10 @@ chartOptions, clickedLabel, dblClickedLabel, + defaultSelectItem, onClick, onDblClick, - selectValue1, + toggleSelectData, }; }, }; diff --git a/docs/views/barChart/example/Time.vue b/docs/views/barChart/example/Time.vue index 9141e0120..08f4ca628 100644 --- a/docs/views/barChart/example/Time.vue +++ b/docs/views/barChart/example/Time.vue @@ -1,6 +1,7 @@