Nuxt/examples/storybook/stories/LineChart.story.js

93 lines
2.2 KiB
JavaScript

import {
nStoriesOfWithDefault,
action,
boolean,
text,
color,
array
} from './storybase.js'
import LineChart from '~/components/LineChart'
nStoriesOfWithDefault({ LineChart })
.add('with some data', () => ({
components: { LineChart },
template: `
<div>
<line-chart :data="{
labels: [1,2,3],
datasets: [
{
label: 'Sample',
backgroundColor: 'green',
data: ['1','2','3']
}
]
}" :options="{ maintainAspectRatio: false, responsive:true}"/>
</div>`
}))
.add('with knobs demo', () => {
const maintainAspectRatio = boolean('Aspect Ratio', false)
const responsive = boolean('Responsive', true)
const title = text('Title', 'Sample chart')
const myColor = color('Background Color', 'darkred')
const defaultValue = array('Values', [1, 2, 3, 6, 3, 8])
const defaultLabel = array('Labels', [
"'a'",
"'b'",
"'c'",
"'d'",
"'e'",
"'f'"
])
return {
components: { LineChart },
methods: { onResize: action('resized') },
template: `
<div style="position: relative; height:40vh; width:80vw">
<line-chart :data="{
labels: [${defaultLabel}],
datasets: [
{
label: '${title}',
backgroundColor: '${myColor}',
data: [${defaultValue}]
}
]
}" :options="{ maintainAspectRatio: ${maintainAspectRatio}, responsive:${responsive}, onResize }"/>
</div>
`
}
})
.addVT('with Vuetify', () => {
const data = { "'a'": 1, "'b'": 2, "'c'": 3 }
return `
<line-chart :data="{
labels: [${Object.keys(data)}],
datasets: [
{
label: 'list 1',
backgroundColor: '#41b883',
data: [${Object.values(data)}]
}
]
}" :options="{ maintainAspectRatio: false, responsive:true}"/>
`
})
.addVT(
'with Vuetify2',
`<line-chart :data="{
labels: [1,2,3],
datasets: [
{
label: 'list 2',
backgroundColor: '#41b883',
data: ['1','2','3']
}
]
}" :options="{ maintainAspectRatio: false, responsive:true}"/>
`
)