Compare commits

...

19 Commits

Author SHA1 Message Date
Jakub Juszczak
4347fe906e chore(release): 3.1.0 2018-01-12 14:08:23 +01:00
Jakub Juszczak
662329846e chore(docs): Update README with section about single file components and reactivemixins options 2018-01-12 13:59:43 +01:00
Jakub Juszczak
ecae747ba3 chore(examples): Update reactive prop examples 2018-01-12 13:52:45 +01:00
Jakub Juszczak
75bfa5ccbc chore(dependencies): Remove nightwatch as not used 2018-01-12 13:47:38 +01:00
Jakub
8f91703e9f Merge pull request #292 from apertureless/feature/remove_defaults
Feature/remove defaults
2018-01-12 13:35:25 +01:00
Jakub Juszczak
ac5d4d824c feat(charts): Remove default styling 2018-01-12 13:30:29 +01:00
Jakub Juszczak
db0040e613 chore(dependencies): Remove lodash-merge 2018-01-12 13:29:59 +01:00
Jakub
3b46bc8f03 Merge pull request #291 from apertureless/feature/fix_reactive_mixins
fix(mixins): Check for chartjs instance before rendering chart
2018-01-12 13:16:43 +01:00
Jakub Juszczak
39ff839d92 fix(mixins): Check for chartjs instance before rendering chart
Closes #288
2018-01-12 13:13:46 +01:00
Jakub
0506b4ee35 Merge pull request #276 from daniel-shuy/develop
Add prop for inline plugins
2017-12-15 09:50:49 +01:00
Daniel Shuy
072724fc6f Fix references to private _plugins data property 2017-12-13 20:58:43 +08:00
Daniel Shuy
dd9a5b855d Fix test cases for inline prop 2017-12-13 20:33:40 +08:00
Daniel Shuy
5486560257 Add prop for inline plugins 2017-12-13 20:10:01 +08:00
Jakub
ae13d71081 Merge pull request #266 from Beomi/develop
Fix typo on readme.md (Three shaking)
2017-12-01 14:35:37 +01:00
Beomi
1902bf0b0e Fix typo on readme.md
`three shaking` > `tree shaking`
2017-12-01 15:05:36 +09:00
Jakub
b0ad387856 Merge pull request #253 from bevingtongroup/fix-windows-node-env
fix NODE_ENV=... on windows
2017-11-14 17:11:27 +01:00
Cormac Relf
b7074e428f windows build: fix NODE_ENV on windows 2017-11-14 17:14:55 +11:00
Jakub Juszczak
d9e5d5a5f0 💎 Release new version 3.0.2
Fixed unpkg target
2017-11-07 11:03:36 +01:00
Jakub Juszczak
a5f112e952 📝 Update CHANGELOG 2017-11-06 16:28:13 +01:00
33 changed files with 1011 additions and 1051 deletions

View File

@@ -1,11 +1,111 @@
# Change Log
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
<a name="3.1.0"></a>
# [3.1.0](https://github.com/apertureless/vue-chartjs/compare/v3.0.2...v3.1.0) (2018-01-12)
### Bug Fixes
* **mixins:** Check for chartjs instance before rendering chart ([39ff839](https://github.com/apertureless/vue-chartjs/commit/39ff839)), closes [#288](https://github.com/apertureless/vue-chartjs/issues/288)
### Features
* **charts:** Remove default styling ([ac5d4d8](https://github.com/apertureless/vue-chartjs/commit/ac5d4d8))
# Change Log
## [v3.0.1](https://github.com/apertureless/vue-chartjs/tree/v3.0.1) (2017-11-06)
[Full Changelog](https://github.com/apertureless/vue-chartjs/compare/v3.0.0...v3.0.1)
**Closed issues:**
- \[Suggestion\]Loose package dependencies [\#245](https://github.com/apertureless/vue-chartjs/issues/245)
- reactiveData mixin [\#244](https://github.com/apertureless/vue-chartjs/issues/244)
- Customise individual Axis Labels [\#243](https://github.com/apertureless/vue-chartjs/issues/243)
- presets es2015 [\#242](https://github.com/apertureless/vue-chartjs/issues/242)
- Uncaught TypeError: Cannot read property 'transition' of null [\#241](https://github.com/apertureless/vue-chartjs/issues/241)
- Is it possible to create an callback on the onAnimationComplete option [\#240](https://github.com/apertureless/vue-chartjs/issues/240)
- When resizing window, chart returns to first loaded state [\#239](https://github.com/apertureless/vue-chartjs/issues/239)
- Reactively change chart properties [\#237](https://github.com/apertureless/vue-chartjs/issues/237)
- how to enforce the max value on y axis [\#236](https://github.com/apertureless/vue-chartjs/issues/236)
- Chart is not rendered when maintainAspectRatio is set to false and chart container is hidden [\#235](https://github.com/apertureless/vue-chartjs/issues/235)
- How to access Chart.defaults.global [\#234](https://github.com/apertureless/vue-chartjs/issues/234)
- Blank Chart - no data [\#233](https://github.com/apertureless/vue-chartjs/issues/233)
- Maxin with multiple chartData [\#231](https://github.com/apertureless/vue-chartjs/issues/231)
- How to destroy chart before re-rendering? [\#230](https://github.com/apertureless/vue-chartjs/issues/230)
- chnage gridlines color [\#228](https://github.com/apertureless/vue-chartjs/issues/228)
- Stacked bar chart? [\#226](https://github.com/apertureless/vue-chartjs/issues/226)
- Chart crashes when reentering page [\#223](https://github.com/apertureless/vue-chartjs/issues/223)
- 在图表上左右滑动会出现数据错乱的问题 [\#222](https://github.com/apertureless/vue-chartjs/issues/222)
- How do I set the scale of the Y axis? [\#220](https://github.com/apertureless/vue-chartjs/issues/220)
- Upgrading from 2.8.2 to 2.8.3 breaks charts [\#209](https://github.com/apertureless/vue-chartjs/issues/209)
- How to scale the radius property of each bubble in a vue-chartjs bubble chart [\#205](https://github.com/apertureless/vue-chartjs/issues/205)
- Last release is causing problems with Firefox [\#203](https://github.com/apertureless/vue-chartjs/issues/203)
- 🔥 Remove Vue.extend\(\) [\#201](https://github.com/apertureless/vue-chartjs/issues/201)
- Update to webpack@3 [\#134](https://github.com/apertureless/vue-chartjs/issues/134)
**Merged pull requests:**
- Feature/dependency and build fix [\#246](https://github.com/apertureless/vue-chartjs/pull/246) ([apertureless](https://github.com/apertureless))
- Typo fix in EN docs [\#238](https://github.com/apertureless/vue-chartjs/pull/238) ([chakan](https://github.com/chakan))
- Made some small edits to French README.MD [\#232](https://github.com/apertureless/vue-chartjs/pull/232) ([music-mind](https://github.com/music-mind))
- update webpack to version 3 [\#227](https://github.com/apertureless/vue-chartjs/pull/227) ([kingkong64](https://github.com/kingkong64))
## [v3.0.0](https://github.com/apertureless/vue-chartjs/tree/v3.0.0) (2017-10-14)
[Full Changelog](https://github.com/apertureless/vue-chartjs/compare/v2.8.7...v3.0.0)
**Closed issues:**
- Create an image of the chart to download [\#219](https://github.com/apertureless/vue-chartjs/issues/219)
- How to achieve this effect? [\#218](https://github.com/apertureless/vue-chartjs/issues/218)
- Some Error [\#217](https://github.com/apertureless/vue-chartjs/issues/217)
- Avoid mutating a prop directly since the value will be overwritten whenever the parent component re-renders. Instead, use a data or computed property based on the prop's value. Prop being mutated: "chartData" [\#216](https://github.com/apertureless/vue-chartjs/issues/216)
- can't get legendCallback to fire at all [\#212](https://github.com/apertureless/vue-chartjs/issues/212)
- this demo is not support, is it because version older? [\#210](https://github.com/apertureless/vue-chartjs/issues/210)
- how to change value without reload?? [\#208](https://github.com/apertureless/vue-chartjs/issues/208)
- typescript definition? [\#207](https://github.com/apertureless/vue-chartjs/issues/207)
- 使用动态数据时报错 [\#204](https://github.com/apertureless/vue-chartjs/issues/204)
- Commit the final dist js files to github [\#202](https://github.com/apertureless/vue-chartjs/issues/202)
- \[Best Practices❓\] Usage of Private Data [\#182](https://github.com/apertureless/vue-chartjs/issues/182)
- 📝 Update docs & examples - SSR with nuxt [\#172](https://github.com/apertureless/vue-chartjs/issues/172)
- 📝 Update Docs - Section about extending [\#171](https://github.com/apertureless/vue-chartjs/issues/171)
- Register vue-chartjs as vue-plugin? [\#168](https://github.com/apertureless/vue-chartjs/issues/168)
- Avoid mutating a prop directly since the value will be overwritten whenever the parent component re-renders [\#151](https://github.com/apertureless/vue-chartjs/issues/151)
**Merged pull requests:**
- Feature/v3 [\#225](https://github.com/apertureless/vue-chartjs/pull/225) ([apertureless](https://github.com/apertureless))
- ✏️ Spelling in docs [\#215](https://github.com/apertureless/vue-chartjs/pull/215) ([cugu](https://github.com/cugu))
- Fix inaccuracies in Russian translation [\#214](https://github.com/apertureless/vue-chartjs/pull/214) ([pushkyn](https://github.com/pushkyn))
- Add id docs readme support [\#213](https://github.com/apertureless/vue-chartjs/pull/213) ([tesarwijaya](https://github.com/tesarwijaya))
- French translation for README.md [\#211](https://github.com/apertureless/vue-chartjs/pull/211) ([julienc91](https://github.com/julienc91))
## [v2.8.7](https://github.com/apertureless/vue-chartjs/tree/v2.8.7) (2017-09-16)
[Full Changelog](https://github.com/apertureless/vue-chartjs/compare/v2.8.6...v2.8.7)
**Closed issues:**
- 真机和浏览器呈现的效果不一样的问题 [\#199](https://github.com/apertureless/vue-chartjs/issues/199)
- can not use npm install? [\#198](https://github.com/apertureless/vue-chartjs/issues/198)
- Reactive Props - Max Call Stack Exceeded Error [\#197](https://github.com/apertureless/vue-chartjs/issues/197)
- Unmet Peer Dependency [\#196](https://github.com/apertureless/vue-chartjs/issues/196)
- Is there a way to update options? [\#195](https://github.com/apertureless/vue-chartjs/issues/195)
- deepmerge [\#194](https://github.com/apertureless/vue-chartjs/issues/194)
- TypeError: Cannot convert undefined or null to object [\#193](https://github.com/apertureless/vue-chartjs/issues/193)
## [v2.8.6](https://github.com/apertureless/vue-chartjs/tree/v2.8.6) (2017-09-12)
[Full Changelog](https://github.com/apertureless/vue-chartjs/compare/v2.8.5...v2.8.6)
## [v2.8.5](https://github.com/apertureless/vue-chartjs/tree/v2.8.5) (2017-09-12)
[Full Changelog](https://github.com/apertureless/vue-chartjs/compare/v2.8.4...v2.8.5)
**Closed issues:**
- TypeError: Cannot convert undefined or null to object [\#193](https://github.com/apertureless/vue-chartjs/issues/193)
- Chart error since the addition of deepmerge in build 2.8.4 [\#192](https://github.com/apertureless/vue-chartjs/issues/192)
## [v2.8.4](https://github.com/apertureless/vue-chartjs/tree/v2.8.4) (2017-09-08)

View File

@@ -76,7 +76,7 @@ However Chart.js is a `peerDependencies` so you have to install it separately. I
### Webpack 2
If you're using Webpack 2 it will automatically use the `jsnext:main` / `module` entry point. Which is `es/index.js`
It is a __transpiled__ es version of the source. And is not __bundled__ to a module. This way you three shaking will work. Like in the bundled version, `Chart.js` is a `peerDependencies` and need to be installed.
It is a __transpiled__ es version of the source. And is not __bundled__ to a module. This way you tree shaking will work. Like in the bundled version, `Chart.js` is a `peerDependencies` and need to be installed.
## How to use
@@ -165,7 +165,11 @@ However you can simply implement this on your own or use one of the two mixins w
Both are included in the `mixins` module.
The mixins automatically create `chartData` as a prop or data. And add a watcher. If data has changed, the chart will update.
However keep in mind the limitations of vue and javascript for mutations on arrays and objects. More info [here](http://vue-chartjs.org/#/home?id=reactive-data)
However keep in mind the limitations of vue and javascript for mutations on arrays and objects.
**It is important that you pass your options in a local variable named `options`!**
The reason is that if the mixin re-renders the chart it calls `this.renderChart(this.chartData, this.options`)` so don't pass in the options object directly or it will be ignored.
More info [here](http://vue-chartjs.org/#/home?id=reactive-data)
```javascript
// MonthlyIncome.js
@@ -229,6 +233,10 @@ export default {
}
```
## Single File Components
You can create your components in Vues single file components. However it is important that you **do not** have the `<template></template>` included. Because Vue can't merge tempaltes. And the template is included in the mixin. If you leave the template tag in your component, it will overwrite the one which comes from the base chart and you will have a blank screen.
## Available Charts
### Bar Chart

4
dist/vue-chartjs.js vendored
View File

@@ -1,5 +1,5 @@
/*!
* vue-chartjs v3.0.1
* vue-chartjs v3.0.2
* (c) 2017 Jakub Juszczak <jakub@posteo.de>
* http://vue-chartjs.org
*/
@@ -3231,7 +3231,7 @@ module.exports = {
/* 7 */
/***/ (function(module, exports) {
module.exports = {"name":"vue-chartjs","version":"3.0.1","description":"Vue.js wrapper for chart.js for creating beautiful charts.","author":"Jakub Juszczak <jakub@posteo.de>","homepage":"http://vue-chartjs.org","license":"MIT","contributors":[{"name":"Thorsten Lünborg","web":"https://github.com/LinusBorg"},{"name":"Juan Carlos Alonso","web":"https://github.com/jcalonso"}],"maintainers":[{"name":"Jakub Juszczak","email":"jakub@posteo.de","web":"http://www.jakubjuszczak.de"}],"repository":{"type":"git","url":"git+ssh://git@github.com:apertureless/vue-chartjs.git"},"bugs":{"url":"https://github.com/apertureless/vue-chartjs/issues"},"keywords":["ChartJs","Vue","Visualisation","Wrapper","Charts"],"main":"dist/vue-chartjs.js","unpkg":"dist/vue-chartjs.full.min.js","module":"es/index.js","jsnext:main":"es/index.js","files":["src","dist","es"],"scripts":{"dev":"node build/dev-server.js","build":"yarn run release && yarn run build:es","build:es":"cross-env BABEL_ENV=es babel src --out-dir es","unit":"karma start test/unit/karma.conf.js --single-run","e2e":"node test/e2e/runner.js","test":"npm run unit","lint":"eslint --ext .js,.vue src test/unit/specs test/e2e/specs","release":"webpack --progress --hide-modules --config ./build/webpack.release.js && NODE_ENV=production webpack --progress --hide-modules --config ./build/webpack.release.min.js","prepublishOnly":"yarn run lint && yarn run test && yarn run build"},"dependencies":{"lodash.merge":"^4.6.0"},"peerDependencies":{"chart.js":"2.7.x"},"devDependencies":{"@babel/cli":"^7.0.0-beta.31","@babel/core":"^7.0.0-beta.31","@babel/preset-env":"^7.0.0-beta.31","@babel/preset-stage-2":"^7.0.0-beta.31","babel-loader":"8.0.0-beta.0","chai":"^3.5.0","chart.js":"2.7.0","chromedriver":"^2.28.0","connect-history-api-fallback":"^1.1.0","cross-env":"^3.2.4","cross-spawn":"^5.1.0","css-loader":"^0.28.0","eslint":"^3.19.0","eslint-config-standard":"^10.2.1","eslint-friendly-formatter":"^2.0.7","eslint-loader":"^1.7.1","eslint-plugin-html":"^2.0.1","eslint-plugin-import":"^2.2.0","eslint-plugin-node":"^4.2.2","eslint-plugin-promise":"^3.5.0","eslint-plugin-standard":"^3.0.1","eventsource-polyfill":"^0.9.6","express":"^4.15.2","extract-text-webpack-plugin":"^3.0.1","file-loader":"^0.10.1","friendly-errors-webpack-plugin":"^1.6.1","function-bind":"^1.0.2","html-webpack-plugin":"^2.28.0","http-proxy-middleware":"^0.17.4","inject-loader":"^3.0.0","isparta":"^4.0.0","jasmine-core":"^2.5.2","json-loader":"^0.5.4","karma":"^1.5.0","karma-coverage":"^1.1.1","karma-jasmine":"^1.0.2","karma-mocha":"^1.2.0","karma-phantomjs-launcher":"^1.0.4","karma-phantomjs-shim":"^1.4.0","karma-sinon-chai":"^1.2.0","karma-sourcemap-loader":"^0.3.7","karma-spec-reporter":"0.0.30","karma-webpack":"2","lolex":"^1.6.0","mocha":"^3.1.0","nightwatch":"^0.9.14","opn":"^5.1.0","ora":"^1.2.0","phantomjs-prebuilt":"^2.1.13","portfinder":"^1.0.13","selenium-server":"^3.3.1","shelljs":"^0.7.7","sinon":"^2.1.0","sinon-chai":"^2.9.0","url-loader":"^0.5.8","vue":"2.5.2","vue-hot-reload-api":"2.1.0","vue-html-loader":"^1.2.4","vue-loader":"^13.3.0","vue-style-loader":"3.0.1","vue-template-compiler":"2.5.2","webpack":"^3.7.1","webpack-dev-middleware":"^1.10.1","webpack-hot-middleware":"^2.17.1","webpack-merge":"^4.1.0"},"engines":{"node":">=6.9.0","npm":">= 3.0.0"},"browserify":{"transform":["babelify"]},"greenkeeper":{"ignore":["extract-text-webpack-plugin","karma-webpack","webpack","webpack-merge"]}}
module.exports = {"name":"vue-chartjs","version":"3.0.2","description":"Vue.js wrapper for chart.js for creating beautiful charts.","author":"Jakub Juszczak <jakub@posteo.de>","homepage":"http://vue-chartjs.org","license":"MIT","contributors":[{"name":"Thorsten Lünborg","web":"https://github.com/LinusBorg"},{"name":"Juan Carlos Alonso","web":"https://github.com/jcalonso"}],"maintainers":[{"name":"Jakub Juszczak","email":"jakub@posteo.de","web":"http://www.jakubjuszczak.de"}],"repository":{"type":"git","url":"git+ssh://git@github.com:apertureless/vue-chartjs.git"},"bugs":{"url":"https://github.com/apertureless/vue-chartjs/issues"},"keywords":["ChartJs","Vue","Visualisation","Wrapper","Charts"],"main":"dist/vue-chartjs.js","unpkg":"dist/vue-chartjs.min.js","module":"es/index.js","jsnext:main":"es/index.js","files":["src","dist","es"],"scripts":{"dev":"node build/dev-server.js","build":"yarn run release && yarn run build:es","build:es":"cross-env BABEL_ENV=es babel src --out-dir es","unit":"karma start test/unit/karma.conf.js --single-run","e2e":"node test/e2e/runner.js","test":"npm run unit","lint":"eslint --ext .js,.vue src test/unit/specs test/e2e/specs","release":"webpack --progress --hide-modules --config ./build/webpack.release.js && NODE_ENV=production webpack --progress --hide-modules --config ./build/webpack.release.min.js","prepublishOnly":"yarn run lint && yarn run test && yarn run build"},"dependencies":{"lodash.merge":"^4.6.0"},"peerDependencies":{"chart.js":"2.7.x"},"devDependencies":{"@babel/cli":"^7.0.0-beta.31","@babel/core":"^7.0.0-beta.31","@babel/preset-env":"^7.0.0-beta.31","@babel/preset-stage-2":"^7.0.0-beta.31","babel-loader":"8.0.0-beta.0","chai":"^3.5.0","chart.js":"2.7.0","chromedriver":"^2.28.0","connect-history-api-fallback":"^1.1.0","cross-env":"^3.2.4","cross-spawn":"^5.1.0","css-loader":"^0.28.0","eslint":"^3.19.0","eslint-config-standard":"^10.2.1","eslint-friendly-formatter":"^2.0.7","eslint-loader":"^1.7.1","eslint-plugin-html":"^2.0.1","eslint-plugin-import":"^2.2.0","eslint-plugin-node":"^4.2.2","eslint-plugin-promise":"^3.5.0","eslint-plugin-standard":"^3.0.1","eventsource-polyfill":"^0.9.6","express":"^4.15.2","extract-text-webpack-plugin":"^3.0.1","file-loader":"^0.10.1","friendly-errors-webpack-plugin":"^1.6.1","function-bind":"^1.0.2","html-webpack-plugin":"^2.28.0","http-proxy-middleware":"^0.17.4","inject-loader":"^3.0.0","isparta":"^4.0.0","jasmine-core":"^2.5.2","json-loader":"^0.5.4","karma":"^1.5.0","karma-coverage":"^1.1.1","karma-jasmine":"^1.0.2","karma-mocha":"^1.2.0","karma-phantomjs-launcher":"^1.0.4","karma-phantomjs-shim":"^1.4.0","karma-sinon-chai":"^1.2.0","karma-sourcemap-loader":"^0.3.7","karma-spec-reporter":"0.0.30","karma-webpack":"2","lolex":"^1.6.0","mocha":"^3.1.0","nightwatch":"^0.9.14","opn":"^5.1.0","ora":"^1.2.0","phantomjs-prebuilt":"^2.1.13","portfinder":"^1.0.13","selenium-server":"^3.3.1","shelljs":"^0.7.7","sinon":"^2.1.0","sinon-chai":"^2.9.0","url-loader":"^0.5.8","vue":"2.5.2","vue-hot-reload-api":"2.1.0","vue-html-loader":"^1.2.4","vue-loader":"^13.3.0","vue-style-loader":"3.0.1","vue-template-compiler":"2.5.2","webpack":"^3.7.1","webpack-dev-middleware":"^1.10.1","webpack-hot-middleware":"^2.17.1","webpack-merge":"^4.1.0"},"engines":{"node":">=6.9.0","npm":">= 3.0.0"},"browserify":{"transform":["babelify"]},"greenkeeper":{"ignore":["extract-text-webpack-plugin","karma-webpack","webpack","webpack-merge"]}}
/***/ })
/******/ ]);

File diff suppressed because one or more lines are too long

2
package-lock.json generated
View File

@@ -1,6 +1,6 @@
{
"name": "vue-chartjs",
"version": "3.0.0",
"version": "3.1.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {

View File

@@ -1,6 +1,6 @@
{
"name": "vue-chartjs",
"version": "3.0.1",
"version": "3.1.0",
"description": "Vue.js wrapper for chart.js for creating beautiful charts.",
"author": "Jakub Juszczak <jakub@posteo.de>",
"homepage": "http://vue-chartjs.org",
@@ -37,7 +37,7 @@
"Charts"
],
"main": "dist/vue-chartjs.js",
"unpkg": "dist/vue-chartjs.full.min.js",
"unpkg": "dist/vue-chartjs.min.js",
"module": "es/index.js",
"jsnext:main": "es/index.js",
"files": [
@@ -53,12 +53,10 @@
"e2e": "node test/e2e/runner.js",
"test": "npm run unit",
"lint": "eslint --ext .js,.vue src test/unit/specs test/e2e/specs",
"release": "webpack --progress --hide-modules --config ./build/webpack.release.js && NODE_ENV=production webpack --progress --hide-modules --config ./build/webpack.release.min.js",
"release": "webpack --progress --hide-modules --config ./build/webpack.release.js && cross-env NODE_ENV=production webpack --progress --hide-modules --config ./build/webpack.release.min.js",
"prepublishOnly": "yarn run lint && yarn run test && yarn run build"
},
"dependencies": {
"lodash.merge": "^4.6.0"
},
"dependencies": {},
"peerDependencies": {
"chart.js": "2.7.x"
},
@@ -72,7 +70,7 @@
"chart.js": "2.7.0",
"chromedriver": "^2.28.0",
"connect-history-api-fallback": "^1.1.0",
"cross-env": "^3.2.4",
"cross-env": "^5.1.1",
"cross-spawn": "^5.1.0",
"css-loader": "^0.28.0",
"eslint": "^3.19.0",
@@ -108,7 +106,6 @@
"karma-webpack": "2",
"lolex": "^1.6.0",
"mocha": "^3.1.0",
"nightwatch": "^0.9.14",
"opn": "^5.1.0",
"ora": "^1.2.0",
"phantomjs-prebuilt": "^2.1.13",

View File

@@ -1,5 +1,4 @@
import Chart from 'chart.js'
import { mergeOptions } from '../helpers/options'
export default {
render: function (createElement) {
@@ -41,46 +40,32 @@ export default {
},
styles: {
type: Object
},
plugins: {
type: Array,
default () {
return []
}
}
},
data () {
return {
_chart: null,
defaultOptions: {
scales: {
yAxes: [{
ticks: {
beginAtZero: true
},
gridLines: {
display: false
}
}],
xAxes: [ {
gridLines: {
display: false
},
categoryPercentage: 0.5,
barPercentage: 0.2
}]
}
},
plugins: []
_plugins: this.plugins
}
},
methods: {
addPlugin (plugin) {
this.plugins.push(plugin)
this.$data._plugins.push(plugin)
},
renderChart (data, options) {
let chartOptions = mergeOptions(this.defaultOptions, options)
this.$data._chart = new Chart(
this.$refs.canvas.getContext('2d'), {
type: 'bar',
data: data,
options: chartOptions,
plugins: this.plugins
options: options,
plugins: this.$data._plugins
}
)
}

View File

@@ -1,5 +1,4 @@
import Chart from 'chart.js'
import { mergeOptions } from '../helpers/options'
export default {
render: function (createElement) {
@@ -42,48 +41,33 @@ export default {
},
styles: {
type: Object
},
plugins: {
type: Array,
default () {
return []
}
}
},
data () {
return {
_chart: null,
defaultOptions: {
scales: {
yAxes: [{
ticks: {
beginAtZero: true
},
gridLines: {
display: false
}
}],
xAxes: [ {
gridLines: {
display: false
},
categoryPercentage: 0.5,
barPercentage: 0.2
}]
}
},
plugins: []
_plugins: this.plugins
}
},
methods: {
addPlugin (plugin) {
this.plugins.push(plugin)
this.$data._plugins.push(plugin)
},
renderChart (data, options) {
let chartOptions = mergeOptions(this.defaultOptions, options)
this.$data._chart = new Chart(
this.$refs.canvas.getContext('2d'), {
type: 'bubble',
data: data,
options: chartOptions,
plugins: this.plugins
options: options,
plugins: this.$data._plugins
}
)
}

View File

@@ -1,5 +1,4 @@
import Chart from 'chart.js'
import { mergeOptions } from '../helpers/options'
export default {
render: function (createElement) {
@@ -42,31 +41,34 @@ export default {
},
styles: {
type: Object
},
plugins: {
type: Array,
default () {
return []
}
}
},
data () {
return {
_chart: null,
defaultOptions: {
},
plugins: []
_plugins: this.plugins
}
},
methods: {
addPlugin (plugin) {
this.plugins.push(plugin)
this.$data._plugins.push(plugin)
},
renderChart (data, options) {
let chartOptions = mergeOptions(this.defaultOptions, options)
renderChart (data, options) {
this.$data._chart = new Chart(
this.$refs.canvas.getContext('2d'), {
type: 'doughnut',
data: data,
options: chartOptions,
plugins: this.plugins
options: options,
plugins: this.$data._plugins
}
)
}

View File

@@ -1,5 +1,4 @@
import Chart from 'chart.js'
import { mergeOptions } from '../helpers/options'
export default {
render: function (createElement) {
@@ -42,47 +41,33 @@ export default {
},
styles: {
type: Object
},
plugins: {
type: Array,
default () {
return []
}
}
},
data () {
return {
_chart: null,
defaultOptions: {
scales: {
yAxes: [{
ticks: {
beginAtZero: true
},
gridLines: {
display: false
}
}],
xAxes: [ {
gridLines: {
display: false
},
categoryPercentage: 0.5,
barPercentage: 0.2
}]
}
},
plugins: []
_plugins: this.plugins
}
},
methods: {
addPlugin (plugin) {
this.plugins.push(plugin)
this.$data._plugins.push(plugin)
},
renderChart (data, options, type) {
let chartOptions = mergeOptions(this.defaultOptions, options)
renderChart (data, options) {
this.$data._chart = new Chart(
this.$refs.canvas.getContext('2d'), {
type: 'horizontalBar',
data: data,
options: chartOptions,
plugins: this.plugins
options: options,
plugins: this.$data._plugins
}
)
}

View File

@@ -1,5 +1,4 @@
import Chart from 'chart.js'
import { mergeOptions } from '../helpers/options'
export default {
render: function (createElement) {
@@ -42,46 +41,33 @@ export default {
},
styles: {
type: Object
},
plugins: {
type: Array,
default () {
return []
}
}
},
data () {
return {
_chart: null,
defaultOptions: {
scales: {
yAxes: [{
ticks: {
beginAtZero: true
},
gridLines: {
display: false
}
}],
xAxes: [ {
gridLines: {
display: false
}
}]
}
},
plugins: []
_plugins: this.plugins
}
},
methods: {
addPlugin (plugin) {
this.plugins.push(plugin)
this.$data._plugins.push(plugin)
},
renderChart (data, options) {
let chartOptions = mergeOptions(this.defaultOptions, options)
this.$data._chart = new Chart(
this.$refs.canvas.getContext('2d'), {
type: 'line',
data: data,
options: chartOptions,
plugins: this.plugins
options: options,
plugins: this.$data._plugins
}
)
}

View File

@@ -1,5 +1,4 @@
import Chart from 'chart.js'
import { mergeOptions } from '../helpers/options'
export default {
render: function (createElement) {
@@ -42,31 +41,33 @@ export default {
},
styles: {
type: Object
},
plugins: {
type: Array,
default () {
return []
}
}
},
data () {
return {
_chart: null,
defaultOptions: {
},
plugins: []
_plugins: this.plugins
}
},
methods: {
addPlugin (plugin) {
this.plugins.push(plugin)
this.$data._plugins.push(plugin)
},
renderChart (data, options) {
let chartOptions = mergeOptions(this.defaultOptions, options)
this.$data._chart = new Chart(
this.$refs.canvas.getContext('2d'), {
type: 'pie',
data: data,
options: chartOptions,
plugins: this.plugins
options: options,
plugins: this.$data._plugins
}
)
}

View File

@@ -1,5 +1,4 @@
import Chart from 'chart.js'
import { mergeOptions } from '../helpers/options'
export default {
render: function (createElement) {
@@ -42,31 +41,33 @@ export default {
},
styles: {
type: Object
},
plugins: {
type: Array,
default () {
return []
}
}
},
data () {
return {
_chart: null,
defaultOptions: {
},
plugins: []
_plugins: this.plugins
}
},
methods: {
addPlugin (plugin) {
this.plugins.push(plugin)
this.$data._plugins.push(plugin)
},
renderChart (data, options) {
let chartOptions = mergeOptions(this.defaultOptions, options)
this.$data._chart = new Chart(
this.$refs.canvas.getContext('2d'), {
type: 'polarArea',
data: data,
options: chartOptions,
plugins: this.plugins
options: options,
plugins: this.$data._plugins
}
)
}

View File

@@ -1,5 +1,4 @@
import Chart from 'chart.js'
import { mergeOptions } from '../helpers/options'
export default {
render: function (createElement) {
@@ -42,31 +41,33 @@ export default {
},
styles: {
type: Object
},
plugins: {
type: Array,
default () {
return []
}
}
},
data () {
return {
_chart: null,
defaultOptions: {
},
plugins: []
_plugins: this.plugins
}
},
methods: {
addPlugin (plugin) {
this.plugins.push(plugin)
this.$data._plugins.push(plugin)
},
renderChart (data, options) {
let chartOptions = mergeOptions(this.defaultOptions, options)
this.$data._chart = new Chart(
this.$refs.canvas.getContext('2d'), {
type: 'radar',
data: data,
options: chartOptions,
plugins: this.plugins
options: options,
plugins: this.$data._plugins
}
)
}

View File

@@ -1,5 +1,4 @@
import Chart from 'chart.js'
import { mergeOptions } from '../helpers/options'
export default {
render: function (createElement) {
@@ -42,37 +41,33 @@ export default {
},
styles: {
type: Object
},
plugins: {
type: Array,
default () {
return []
}
}
},
data () {
return {
_chart: null,
defaultOptions: {
scales: {
xAxes: [{
type: 'linear',
position: 'bottom'
}]
}
},
plugins: []
_plugins: this.plugins
}
},
methods: {
addPlugin (plugin) {
this.plugins.push(plugin)
this.$data._plugins.push(plugin)
},
renderChart (data, options) {
let chartOptions = mergeOptions(this.defaultOptions, options)
this.$data._chart = new Chart(
this.$refs.canvas.getContext('2d'), {
type: 'scatter',
data: data,
options: chartOptions,
plugins: this.plugins
options: options,
plugins: this.$data._plugins
}
)
}

View File

@@ -5,6 +5,11 @@
<bar-example></bar-example>
</div>
<div class="Chart">
<h1 style="text-align:center;">Horizontal Barchart</h1>
<horizontal-bar-example></horizontal-bar-example>
</div>
<div class="Chart">
<h1 style="text-align:center;">Barchart with reactive mixing for live data</h1>
<reactive-example></reactive-example>
@@ -63,6 +68,7 @@
import ReactiveExample from './ReactiveExample'
import ReactivePropExample from './ReactivePropExample'
import ScatterExample from './ScatterExample'
import HorizontalBarExample from './HorizontalBarExample'
export default {
components: {
@@ -75,7 +81,8 @@
BubbleExample,
ReactiveExample,
ReactivePropExample,
ScatterExample
ScatterExample,
HorizontalBarExample
},
data () {
return {

View File

@@ -4,17 +4,19 @@ import reactiveData from '../mixins/reactiveData'
export default {
extends: Bar,
mixins: [reactiveData],
data () {
return {
chartData: ''
data: () => ({
chartData: '',
options: {
responsive: true,
maintainAspectRatio: false
}
},
}),
created () {
this.fillData()
},
mounted () {
this.renderChart(this.chartData, {responsive: true, maintainAspectRatio: false})
this.renderChart(this.chartData, this.options)
setInterval(() => {
this.fillData()

View File

@@ -4,8 +4,14 @@ import reactiveProp from '../mixins/reactiveProp'
export default {
extends: Bar,
mixins: [reactiveProp],
data: () => ({
options: {
responsive: true,
maintainAspectRatio: false
}
}),
mounted () {
this.renderChart(this.chartData, {responsive: true, maintainAspectRatio: false})
this.renderChart(this.chartData, this.options)
}
}

View File

@@ -1,5 +0,0 @@
import merge from 'lodash.merge'
export function mergeOptions (obj, src) {
return merge(obj, src)
}

View File

@@ -63,6 +63,9 @@ module.exports = {
this.renderChart(this.chartData, this.options)
}
} else {
if (this.$data._chart) {
this.$data._chart.destroy()
}
this.renderChart(this.chartData, this.options)
}
}

View File

@@ -63,6 +63,9 @@ module.exports = {
this.renderChart(this.chartData, this.options)
}
} else {
if (this.$data._chart) {
this.$data._chart.destroy()
}
this.renderChart(this.chartData, this.options)
}
}

View File

@@ -76,9 +76,31 @@ describe('BarChart', () => {
components: { BarChart }
}).$mount(el)
expect(vm.$children[0].plugins).to.exist
expect(vm.$children[0].$data._plugins).to.exist
vm.$children[0].addPlugin(testPlugin)
expect(vm.$children[0].plugins.length).to.equal(1)
expect(vm.$children[0].$data._plugins.length).to.equal(1)
})
it('should add inline plugins based on prop', () => {
const testPlugin = {
id: 'test'
}
const vm = new Vue({
render: function (createElement) {
return createElement(
BarChart, {
props: {
plugins: [testPlugin]
}
}
)
},
components: { BarChart }
}).$mount(el)
expect(vm.$children[0].$data._plugins).to.exist
expect(vm.$children[0].$data._plugins.length).to.equal(1)
})
})

View File

@@ -76,9 +76,31 @@ describe('BubbleChart', () => {
components: { BubbleChart }
}).$mount(el)
expect(vm.$children[0].plugins).to.exist
expect(vm.$children[0].$data._plugins).to.exist
vm.$children[0].addPlugin(testPlugin)
expect(vm.$children[0].plugins.length).to.equal(1)
expect(vm.$children[0].$data._plugins.length).to.equal(1)
})
it('should add inline plugins based on prop', () => {
const testPlugin = {
id: 'test'
}
const vm = new Vue({
render: function (createElement) {
return createElement(
BubbleChart, {
props: {
plugins: [testPlugin]
}
}
)
},
components: { BubbleChart }
}).$mount(el)
expect(vm.$children[0].$data._plugins).to.exist
expect(vm.$children[0].$data._plugins.length).to.equal(1)
})
})

View File

@@ -76,9 +76,31 @@ describe('DoughnutChart', () => {
components: { DoughnutChart }
}).$mount(el)
expect(vm.$children[0].plugins).to.exist
expect(vm.$children[0].$data._plugins).to.exist
vm.$children[0].addPlugin(testPlugin)
expect(vm.$children[0].plugins.length).to.equal(1)
expect(vm.$children[0].$data._plugins.length).to.equal(1)
})
it('should add inline plugins based on prop', () => {
const testPlugin = {
id: 'test'
}
const vm = new Vue({
render: function (createElement) {
return createElement(
DoughnutChart, {
props: {
plugins: [testPlugin]
}
}
)
},
components: { DoughnutChart }
}).$mount(el)
expect(vm.$children[0].$data._plugins).to.exist
expect(vm.$children[0].$data._plugins.length).to.equal(1)
})
})

View File

@@ -76,9 +76,31 @@ describe('HorizontalBarChart', () => {
components: { HorizontalBarChart }
}).$mount(el)
expect(vm.$children[0].plugins).to.exist
expect(vm.$children[0].$data._plugins).to.exist
vm.$children[0].addPlugin(testPlugin)
expect(vm.$children[0].plugins.length).to.equal(1)
expect(vm.$children[0].$data._plugins.length).to.equal(1)
})
it('should add inline plugins based on prop', () => {
const testPlugin = {
id: 'test'
}
const vm = new Vue({
render: function (createElement) {
return createElement(
HorizontalBarChart, {
props: {
plugins: [testPlugin]
}
}
)
},
components: { HorizontalBarChart }
}).$mount(el)
expect(vm.$children[0].$data._plugins).to.exist
expect(vm.$children[0].$data._plugins.length).to.equal(1)
})
})

View File

@@ -76,9 +76,31 @@ describe('LineChart', () => {
components: { LineChart }
}).$mount(el)
expect(vm.$children[0].plugins).to.exist
expect(vm.$children[0].$data._plugins).to.exist
vm.$children[0].addPlugin(testPlugin)
expect(vm.$children[0].plugins.length).to.equal(1)
expect(vm.$children[0].$data._plugins.length).to.equal(1)
})
it('should add inline plugins based on prop', () => {
const testPlugin = {
id: 'test'
}
const vm = new Vue({
render: function (createElement) {
return createElement(
LineChart, {
props: {
plugins: [testPlugin]
}
}
)
},
components: { LineChart }
}).$mount(el)
expect(vm.$children[0].$data._plugins).to.exist
expect(vm.$children[0].$data._plugins.length).to.equal(1)
})
})

View File

@@ -75,9 +75,31 @@ describe('PieChart', () => {
components: { PieChart }
}).$mount(el)
expect(vm.$children[0].plugins).to.exist
expect(vm.$children[0].$data._plugins).to.exist
vm.$children[0].addPlugin(testPlugin)
expect(vm.$children[0].plugins.length).to.equal(1)
expect(vm.$children[0].$data._plugins.length).to.equal(1)
})
it('should add inline plugins based on prop', () => {
const testPlugin = {
id: 'test'
}
const vm = new Vue({
render: function (createElement) {
return createElement(
PieChart, {
props: {
plugins: [testPlugin]
}
}
)
},
components: { PieChart }
}).$mount(el)
expect(vm.$children[0].$data._plugins).to.exist
expect(vm.$children[0].$data._plugins.length).to.equal(1)
})
})

View File

@@ -76,9 +76,31 @@ describe('PolarChart', () => {
components: { PolarChart }
}).$mount(el)
expect(vm.$children[0].plugins).to.exist
expect(vm.$children[0].$data._plugins).to.exist
vm.$children[0].addPlugin(testPlugin)
expect(vm.$children[0].plugins.length).to.equal(1)
expect(vm.$children[0].$data._plugins.length).to.equal(1)
})
it('should add inline plugins based on prop', () => {
const testPlugin = {
id: 'test'
}
const vm = new Vue({
render: function (createElement) {
return createElement(
PolarChart, {
props: {
plugins: [testPlugin]
}
}
)
},
components: { PolarChart }
}).$mount(el)
expect(vm.$children[0].$data._plugins).to.exist
expect(vm.$children[0].$data._plugins.length).to.equal(1)
})
})

View File

@@ -75,9 +75,31 @@ describe('RadarChart', () => {
components: { RadarChart }
}).$mount(el)
expect(vm.$children[0].plugins).to.exist
expect(vm.$children[0].$data._plugins).to.exist
vm.$children[0].addPlugin(testPlugin)
expect(vm.$children[0].plugins.length).to.equal(1)
expect(vm.$children[0].$data._plugins.length).to.equal(1)
})
it('should add inline plugins based on prop', () => {
const testPlugin = {
id: 'test'
}
const vm = new Vue({
render: function (createElement) {
return createElement(
RadarChart, {
props: {
plugins: [testPlugin]
}
}
)
},
components: { RadarChart }
}).$mount(el)
expect(vm.$children[0].$data._plugins).to.exist
expect(vm.$children[0].$data._plugins.length).to.equal(1)
})
})

View File

@@ -76,9 +76,31 @@ describe('ScatterChart', () => {
components: { ScatterChart }
}).$mount(el)
expect(vm.$children[0].plugins).to.exist
expect(vm.$children[0].$data._plugins).to.exist
vm.$children[0].addPlugin(testPlugin)
expect(vm.$children[0].plugins.length).to.equal(1)
expect(vm.$children[0].$data._plugins.length).to.equal(1)
})
it('should add inline plugins based on prop', () => {
const testPlugin = {
id: 'test'
}
const vm = new Vue({
render: function (createElement) {
return createElement(
ScatterChart, {
props: {
plugins: [testPlugin]
}
}
)
},
components: { ScatterChart }
}).$mount(el)
expect(vm.$children[0].$data._plugins).to.exist
expect(vm.$children[0].$data._plugins.length).to.equal(1)
})
})

View File

@@ -1,54 +0,0 @@
import { mergeOptions } from '@/helpers/options'
describe('mergeOptions.js', () => {
const a = {
a: 'a',
b: 'a'
}
const b = {
a: 'b',
b: 'b'
}
const c = {
c: 'c'
}
const an = {
a: {
a: 'a'
},
b: {
b: 'a'
}
}
const bn = {
a: {
a: 'a'
},
b: {
b: 'b'
}
}
it('should replace old a and b if a and b are new', () => {
const ab = mergeOptions(a, b)
expect(ab).to.have.property('a').and.to.equal('b')
expect(ab).to.have.property('b').and.to.equal('b')
})
it('should add c if c is new', () => {
const ac = mergeOptions(a, c)
expect(ac).to.have.property('a').and.to.equal('b')
expect(ac).to.have.property('b').and.to.equal('b')
expect(ac).to.have.property('c').and.to.equal('c')
})
it('should replace old a and b if a and b are new in nested objects', () => {
const ab = mergeOptions(an, bn)
expect(ab).to.have.deep.property('a.a').and.to.equal('a')
expect(ab).to.have.deep.property('b.b').and.to.equal('b')
})
})

1355
yarn.lock

File diff suppressed because it is too large Load Diff