diff --git a/README.md b/README.md index c4cb71e1..f69d5b65 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,7 @@ [![Known Vulnerabilities](https://snyk.io/test/github/apertureless/vue-chartjs/badge.svg)](https://snyk.io/test/github/apertureless/vue-chartjs) [![Maintainability](https://api.codeclimate.com/v1/badges/8c0256b16ba7a50a9f93/maintainability)](https://codeclimate.com/github/apertureless/vue-chartjs/maintainability) [![Donate](assets/donate.svg)](https://www.paypal.me/apertureless/50eur) +[![ko-fi](https://www.ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/C0C1WP7C) # vue-chartjs @@ -21,7 +22,7 @@ ## Demo & Docs - 📺 [Demo](http://demo.vue-chartjs.org/) -- 📖 [Docs](http://www.vue-chartjs.org/) +- 📖 [Docs](http://vue-chartjs.org/) ### Compatibility diff --git a/docs/.vuepress/config.js b/docs/.vuepress/config.js index cf0caf6e..2f383ab2 100644 --- a/docs/.vuepress/config.js +++ b/docs/.vuepress/config.js @@ -26,15 +26,26 @@ module.exports = { }, }, '/zh-cn/': { - selectText: 'Languages', + selectText: '选择语言', label: '中文(简体)', - editLinkText: 'Edit this page on GitHub', + sidebar: 'auto', + editLinkText: '在GitHub上编辑本页', + nav: [ + { + text: '指南', + link: '/zh-cn/guide/' + }, + { + text: 'API 参考', + link: '/zh-cn/api/' + } + ], serviceWorker: { updatePopup: { - message: "New content is available.", - buttonText: "Refresh" + message: "有新内容更新.", + buttonText: "刷新" } - }, + } }, '/id/': { selectText: 'Languages', @@ -106,7 +117,7 @@ module.exports = { '/zh-cn/': { lang: 'zh-CN', title: '📈 vue-chartjs', - description: '⚡ Easy and beautiful charts with Chart.js and Vue.js' + description: '⚡ 使用 Chart.js 和 Vue.js 搭建简单和漂亮的图表' }, '/id/': { lang: 'id', diff --git a/docs/zh-cn/README.md b/docs/zh-cn/README.md index 877e567f..85fe9696 100644 --- a/docs/zh-cn/README.md +++ b/docs/zh-cn/README.md @@ -1,14 +1,14 @@ --- home: true heroImage: /vue-chartjs.png -actionText: Get Started → -actionLink: /guide/ +actionText: 起步 → +actionLink: /zh-cn/guide/ features: -- title: Easy - details: Easy for both beginners and pros 🙌 -- title: Extendable - details: Simple to use, easy to extend 💪 -- title: Powerful - details: With the full power of chart.js 💯 +- title: 简单 + details: 适合初学者和专业人士 🙌 +- title: 扩展性 + details: 使用简单, 扩展方便 💪 +- title: 强大 + details: 拥有 chart.js 的全部功能 💯 footer: MIT Licensed | Copyright © 2018-present Jakub Juszczak --- diff --git a/docs/zh-cn/api/README.md b/docs/zh-cn/api/README.md index e69de29b..22266b4a 100644 --- a/docs/zh-cn/api/README.md +++ b/docs/zh-cn/api/README.md @@ -0,0 +1,128 @@ +# 编码参考 + +## Props + +这里有一些`vue-chartjs`提供的基本参数定义. 因为你是 `extend` 他们的, 所以他们是*不可见的*, 但是你可以覆盖他们: + +| 参数名 | 描述 | +|---|---| +| width | 图表宽度 | +| height | 图表高度 | +| chart-id | canvas的id | +| css-classes | css类的字符串 | +| styles | css 样式对象 | +| plugins | chartjs 插件数组 | + +## 事件 + +如果 `reactiveData` 或者 `reactiveProp` mixin 被附加, 下面事件将会被调用: + +| 事件 | 描述| +|---|---| +| `chart:render` | 如果 mixin 执行完全重绘 | +| `chart:destroy` | 如果 mixin 删除图表对象实例 | +| `chart:update` | 如果 mixin 执行更新而不是重绘 | +| `labels:update` | 如果设置了新的labels | +| `xlabels:update` | 如果设置了新的xLabels | +| `ylabels:update` | 如果设置了新的yLabels | + + +## 全局方法 +全局方法需要被引入才能使用. + +### generateChart + +- **类型:** `Function` +- **参数**: `chart-id`, `chart-type` +- **使用:** + +```js +import { generateChart } from 'vue-chartjs' +// 第一个参数是 图表id, 第二个参数是 图表类型. +const CustomLine = generateChart('custom-line', 'LineWithLine') +``` + +## 实例方法 + +实例方法可以在你图表组件内部使用. + +### generateLegend() + +用来生成HTML说明的工具函数. + +- **类型:** `Function` +- **参数**: `none` +- **使用:** + +```js {11} +import { Line } from 'vue-chartjs' + +export default { + extends: Line, + props: ['datasets', 'options'] + data: () => ({ + htmlLegend: null + }) + mounted () { + this.renderChart(this.datasets, this.options) + this.htmlLegend = this.generateLegend() + } +} + +``` + +### addPlugin + +在 Chart.js 你可以定义全局和内联插件. 全局插件在没有 `vue-chartjs`也可以工作. 就像这个文档[Chart.js docs](http://www.chartjs.org/docs/latest/developers/plugins.html) 描述的. + +如果你需要添加内联插件, `vue-chartjs` 暴露出来了一个工具方法 `addPlugin()` +你可以在`renderChart()`方法前调用`addPlugin()`. + +- **类型:** `Function` +- **参数**: `Array` 插件数组 +- **使用:** + +```js +mounted () { + this.addPlugin({ + id: 'my-plugin', + beforeInit: function (chart) { + .... + } + }) +} +``` + +### renderChart() + +创建一个 Chart.js 实例, 并渲染图表 + +- **类型:** `Function` +- **参数**: `Chart Data`, `Chart Options` +- **使用:** + +```js +mounted () { + this.renderChart({ + labels: ['January', 'February'], + datasets: [ + { + label: 'Data One', + backgroundColor: '#f87979', + data: [40, 20] + } + ]}, + { + responsive: true + } + ) +} +``` + +## Chart.js 对象 + +你可以在你的图表组件里, 通过 `this.$data._chart` 访问 Chart.js 对象 + +## Canvas + +你可以通过 `this.$refs.canvas` 访问 canvas diff --git a/docs/zh-cn/guide/README.md b/docs/zh-cn/guide/README.md index e69de29b..4d064bcc 100644 --- a/docs/zh-cn/guide/README.md +++ b/docs/zh-cn/guide/README.md @@ -0,0 +1,472 @@ +# 起步 + +**vue-chartjs** 是 Vue 对于 [Chart.js](https://github.com/chartjs/Chart.js) 的封装. 你可以很简单的创建可复用的图表组件. + +## 介绍 + +`vue-chartjs` 让你在 Vue 中能更好的使用 Chart.js . 非常适合想要尽快启动和运行简单图表的人 + +它抽象了一些简单的逻辑, 但是也暴露了 Chart.js 对象, 提供了极大的灵活性. + +## 安装 + +### NPM + +你可以在 `npm` 下安装 `vue-chartjs`. 当然, 你也需要在项目中安装 `chart.js` 依赖. 因为 `Chart.js` 是一个 [peerDependency](https://docs.npmjs.com/files/package.json#peerdependencies). 这种方式你可以完全控制 Chart.js 的版本 + +`yarn add vue-chartjs chart.js` or `npm install vue-chartjs chart.js --save` + +::: tip +如果你使用的是 vue 1.x 版本, 请使用 `legacy` 标签. 然而, Vue 1 所支持的版本不再维护了. + +`yarn add vue-chartjs@legacy` +::: + +### 浏览器 + +你也可以直接在浏览器中使用 `vue-chartjs`. +先添加 `Chart.js` 脚本, 再添加 `vue-chartjs` 脚本. + +```html + + +``` +## 整合 + +`Chart.js` 将所有可用的图表类型, 都导出为命名组件, 并可以直接导入它们. 这些组件都是普通的 Vue 组件, 然而, 你需要`扩展`它. + +`vue-chartjs` 的想法是提供容易使用的组件, 并且具有最大限度的灵活性和扩展性. 要实现这一点, 你需要创建你自己的 *Chart Component* 并通过 `vue-chartjs` 提供的组件来扩展它. + +这样,Chart组件中的方法和逻辑就可以合并到您自己的图表组件中. + +## 创建你自己的第一个图表 + +你需要引入一个基本图表然后扩展它. 这为处理不同数据时提供了更大的灵活性. 你可以封装你的组件以及使用props来处理数据, 或者你可以直接在组件里输入他们. 当然, 如果那样做, 你的组件就无法复用了. + +你可以引入整个项目或者每个模块单独引用. 之后你需要使用`extends:`或者 `mixins:[]`. 然后在 `mounted()` 中调用 `this.renderChart()`. 这将创建你的图表实例. + +```js{1,4,6} +import { Bar } from 'vue-chartjs' + +export default { + extends: Bar, + mounted () { + this.renderChart(data, options) + } +} +``` + +:::tip +你可以使用 `extends: Bar` 或者 `mixins: [Bar]` +::: + +`this.renderChart()` 方法由 `Bar` 组件提供, 接收两个对象参数.第一个是你的图表数据, 第二个是配置对象. + +在这个文档中查看你需要提供的对象结构 [Chart.js docs](http://www.chartjs.org/docs/latest/#creating-a-chart) . + +### Vue 单文件组件 + +文档中很多例子都是基于javascript文件 而不是 `.vue` 文件. 这是因为你大多数只需要` + + +``` + +::: danger 不要使用Template标签 +不要在你的 `.vue` 文件中引入 `