Skip to content

Commit 3262ca2

Browse files
Alec ProbertAlec Probert
authored andcommitted
VueUiNestedDonut improvements
1 parent 4459407 commit 3262ca2

File tree

4 files changed

+60
-6
lines changed

4 files changed

+60
-6
lines changed

README.md

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,14 @@
66
<a href="https://vue-data-ui.graphieros.com/"><img src="https://vue-data-ui.graphieros.com/vue-data-ui-showcase.png"></a>
77
</p>
88

9-
10-
119
# vue-data-ui
10+
1211
![npm](https://img.shields.io/npm/v/vue-data-ui)
1312
[![MadeWithVueJs.com shield](https://madewithvuejs.com/storage/repo-shields/4526-shield.svg)](https://madewithvuejs.com/p/vue-data-ui/shield-link)
1413
![GitHub issues](https://img.shields.io/github/issues/graphieros/vue-data-ui)
1514
![NPM](https://img.shields.io/npm/l/vue-data-ui)
1615
![npm](https://img.shields.io/npm/dt/vue-data-ui)
17-
![Static Badge](https://img.shields.io/badge/components-37-green)
16+
![Static Badge](https://img.shields.io/badge/components-38-green)
1817

1918
[Interactive documentation](https://vue-data-ui.graphieros.com/)
2019

@@ -23,6 +22,7 @@ A user-empowering data visualization Vue components library.
2322
Available components:
2423

2524
## Charts
25+
2626
- [VueUiXy](https://vue-data-ui.graphieros.com/docs#vue-ui-xy)
2727
- [VueUiDonut](https://vue-data-ui.graphieros.com/docs#vue-ui-donut)
2828
- [VueUiWaffle](https://vue-data-ui.graphieros.com/docs#vue-ui-waffle)
@@ -44,26 +44,31 @@ Available components:
4444
- [VueUiDonutEvolution](https://vue-data-ui.graphieros.com/docs#vue-ui-donut-evolution)
4545
- [VueUiMoodRadar](https://vue-data-ui.graphieros.com/docs#vue-ui-mood-radar)
4646
- [VueUiMolecule](https://vue-data-ui.graphieros.com/docs#vue-ui-molecule)
47-
47+
- [VueUiNestedDonuts](https://vue-data-ui.graphieros.com/docs#vue-ui-nested-donuts)
4848

4949
## Mini charts
50+
5051
- [VueUiSparkline](https://vue-data-ui.graphieros.com/docs#vue-ui-sparkline)
5152
- [VueUiSparkbar](https://vue-data-ui.graphieros.com/docs#vue-ui-sparkbar)
5253
- [VueUiSparkstackbar](https://vue-data-ui.graphieros.com/docs#vue-ui-sparkstackbar)
5354
- [VueUiSparkHistogram](https://vue-data-ui.graphieros.com/docs#vue-ui-sparkhistogram)
5455

5556
## 3d
57+
5658
- [VueUi3dBar](https://vue-data-ui.graphieros.com/docs#vue-ui-3d-bar)
5759

5860
## Tables
61+
5962
- [VueUiTableSparkline](https://vue-data-ui.graphieros.com/docs#vue-ui-table-sparkline)
6063
- [VueUiTable](https://vue-data-ui.graphieros.com/docs#vue-ui-table)
6164

6265
## Rating
66+
6367
- [VueUiRating](https://vue-data-ui.graphieros.com/docs#vue-ui-rating)
6468
- [VueUiSmiley](https://vue-data-ui.graphieros.com/docs#vue-ui-smiley)
6569

6670
## Utilities
71+
6772
- [VueUiScreenshot](https://vue-data-ui.graphieros.com/docs#vue-ui-screenshot)
6873
- [VueUiSkeleton](https://vue-data-ui.graphieros.com/docs#vue-ui-skeleton)
6974
- [VueUiDashboard](https://vue-data-ui.graphieros.com/docs#vue-ui-dashboard)
@@ -73,6 +78,7 @@ Available components:
7378
- [VueUiMiniLoader](https://vue-data-ui.graphieros.com/docs#vue-ui-mini-loader)
7479

7580
# Installation
81+
7682
```
7783
npm i vue-data-ui
7884
```
@@ -103,12 +109,15 @@ Or you can import just what you need in your files:
103109
```
104110

105111
## Typescript
112+
106113
Types are available in the 'vue-data-ui.d.ts' file under the types directory of the package.
107114

108115
## Nuxt
116+
109117
[This repo contains a boilerplate implementation of the vue-data-ui package in Nuxt](https://github.com/graphieros/vue-data-ui-nuxt)
110118

111119
# Customizable tooltips
120+
112121
Charts with tooltips have a config option to customize tooltip contents:
113122

114123
```
@@ -120,14 +129,16 @@ customFormat: ({ seriesIndex, datapoint, series, config }) => {
120129
```
121130

122131
# Slots
132+
123133
Most Vue Data UI chart components include a #svg slot you can use to introduce customized svg elements (shapes, text, etc).
124134

125135
# Config
136+
126137
If for some reason you can't access the documentation website and need to get the default config object for a component:
127138

128139
```
129140
import { getVueDataUiConfig } from "vue-data-ui";
130141
131142
const defaultConfigXy = getVueDataUiConfig("vue_ui_xy");
132143
133-
```
144+
```

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "vue-data-ui",
33
"private": false,
4-
"version": "2.0.22",
4+
"version": "2.0.23",
55
"type": "module",
66
"description": "A user-empowering data visualization Vue components library",
77
"keywords": [

src/App.vue

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2616,6 +2616,7 @@ function selectHistoDatapoint({ datapoint, index }) {
26162616
const nestedDonutsConfig = ref({
26172617
style: {
26182618
chart: {
2619+
backgroundColor: '#1A1A1A',
26192620
tooltip: {
26202621
customFormat: ({ datapoint, seriesIndex, series, config }) => {
26212622
console.log({ datapoint, seriesIndex, series, config })

src/components/vue-ui-nested-donuts.vue

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,29 @@ const mutableDataset = computed(() => {
157157
})
158158
})
159159
160+
const gradientSets = computed(() => {
161+
return [...immutableDataset.value].map((ds, i) => {
162+
const sizeRatio = i * donutSize.value / immutableDataset.value.length;
163+
164+
return {
165+
sizeRatio,
166+
donut: makeDonut(
167+
{ series: [{ value: 1}] },
168+
svg.value.width / 2,
169+
svg.value.height / 2,
170+
donutSize.value - sizeRatio,
171+
donutSize.value - sizeRatio,
172+
1.99999,
173+
2,
174+
1,
175+
360,
176+
105.25,
177+
donutSize.value / immutableDataset.value.length * donutConfig.value.style.chart.layout.donut.spacingRatio
178+
)[0]
179+
}
180+
})
181+
})
182+
160183
const selectedDonut = ref(null);
161184
const selectedDatapoint = ref(null);
162185
const selectedDatapointIndex = ref(null);
@@ -476,6 +499,25 @@ defineExpose({
476499
</g>
477500
</g>
478501
502+
<!-- GRADIENTS -->
503+
<defs>
504+
<radialGradient v-for="(gradient, i) in gradientSets" :id="`radial_${uid}_${i}`" cx="50%" cy="50%" r="50%" :fr="30 - (1 * (i+1)) + '%'">
505+
<stop offset="0%" stop-color="#FFFFFF" stop-opacity="0"/>
506+
<stop :offset="70 - (20 * i) + '%'" stop-color="#FFFFFF" :stop-opacity="donutConfig.style.chart.gradientIntensity / 100"/>
507+
<stop offset="100%" stop-color="#FFFFFF" stop-opacity="0"/>
508+
</radialGradient>
509+
</defs>
510+
<g v-if="donutConfig.style.chart.useGradient">
511+
<g v-for="(gradient, i) in gradientSets">
512+
<path
513+
:d="gradient.donut.arcSlice"
514+
:fill="`url(#radial_${uid}_${i})`"
515+
stroke="transparent"
516+
stroke-width="0"
517+
/>
518+
</g>
519+
</g>
520+
479521
<!-- DATALABELS -->
480522
<g v-if="donutConfig.style.chart.layout.labels.dataLabels.show">
481523
<g v-for="(item, i) in mutableDataset">

0 commit comments

Comments
 (0)