Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor: Extract identical code #305

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,5 +15,8 @@ module.exports = {
'arrow-parens': 0,
// allow debugger during development
'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0
},
"globals": {
"LIB_VERSION": true
}
}
9 changes: 8 additions & 1 deletion build/webpack.base.conf.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
'use strict'
const webpack = require('webpack')
const path = require('path')
const utils = require('./utils')
const config = require('../config')
const vueLoaderConfig = require('./vue-loader.conf')
const npmCfg = require('../package.json')

function resolve (dir) {
return path.join(__dirname, '..', dir)
Expand Down Expand Up @@ -72,5 +74,10 @@ module.exports = {
}
}
]
}
},
plugins: [
new webpack.DefinePlugin({
LIB_VERSION: JSON.stringify(npmCfg.version)
})
]
}
245 changes: 79 additions & 166 deletions dist/vue-chartjs.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
exports["VueChartJs"] = factory(require("chart.js"));
else
root["VueChartJs"] = factory(root["Chart"]);
})(typeof self !== 'undefined' ? self : this, function(__WEBPACK_EXTERNAL_MODULE_4__) {
})(typeof self !== 'undefined' ? self : this, function(__WEBPACK_EXTERNAL_MODULE_1__) {
return /******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
Expand Down Expand Up @@ -85,27 +85,89 @@ return /******/ (function(modules) { // webpackBootstrap
"use strict";
Object.defineProperty(__webpack_exports__, "__esModule", { value: true });

// EXTERNAL MODULE: ./src/mixins/reactiveData.js
var reactiveData = __webpack_require__(1);
var reactiveData_default = /*#__PURE__*/__webpack_require__.n(reactiveData);
// CONCATENATED MODULE: ./src/mixins/index.js
function dataHandler(newData, oldData) {
if (oldData) {
var chart = this.$data._chart;
var newDatasetLabels = newData.datasets.map(function (dataset) {
return dataset.label;
});
var oldDatasetLabels = oldData.datasets.map(function (dataset) {
return dataset.label;
});
var oldLabels = JSON.stringify(oldDatasetLabels);
var newLabels = JSON.stringify(newDatasetLabels);

if (newLabels === oldLabels && oldData.datasets.length === newData.datasets.length) {
newData.datasets.forEach(function (dataset, i) {
var oldDatasetKeys = Object.keys(oldData.datasets[i]);
var newDatasetKeys = Object.keys(dataset);
var deletionKeys = oldDatasetKeys.filter(function (key) {
return key !== '_meta' && newDatasetKeys.indexOf(key) === -1;
});
deletionKeys.forEach(function (deletionKey) {
delete chart.data.datasets[i][deletionKey];
});

// EXTERNAL MODULE: ./src/mixins/reactiveProp.js
var reactiveProp = __webpack_require__(2);
var reactiveProp_default = /*#__PURE__*/__webpack_require__.n(reactiveProp);
for (var attribute in dataset) {
if (dataset.hasOwnProperty(attribute)) {
chart.data.datasets[i][attribute] = dataset[attribute];
}
}
});

// CONCATENATED MODULE: ./src/mixins/index.js
if (newData.hasOwnProperty('labels')) {
chart.data.labels = newData.labels;
}

if (newData.hasOwnProperty('xLabels')) {
chart.data.xLabels = newData.xLabels;
}

if (newData.hasOwnProperty('yLabels')) {
chart.data.yLabels = newData.yLabels;
}

chart.update();
} else {
chart.destroy();
this.renderChart(this.chartData, this.options);
}
} else {
if (this.$data._chart) {
this.$data._chart.destroy();
}

this.renderChart(this.chartData, this.options);
}
}

var reactiveData = {
data: function data() {
return {
chartData: null
};
},
watch: {
'chartData': dataHandler
}
};
var reactiveProp = {
props: {
chartData: {
required: true
}
},
watch: {
'chartData': dataHandler
}
};
/* harmony default export */ var mixins = ({
reactiveData: reactiveData_default.a,
reactiveProp: reactiveProp_default.a
reactiveData: reactiveData,
reactiveProp: reactiveProp
});
// EXTERNAL MODULE: ./package.json
var package_0 = __webpack_require__(3);
var package_default = /*#__PURE__*/__webpack_require__.n(package_0);

// EXTERNAL MODULE: external {"root":"Chart","commonjs":"chart.js","commonjs2":"chart.js","amd":"chart.js"}
var external___root___Chart___commonjs___chart_js___commonjs2___chart_js___amd___chart_js__ = __webpack_require__(4);
var external___root___Chart___commonjs___chart_js___commonjs2___chart_js___amd___chart_js__ = __webpack_require__(1);
var external___root___Chart___commonjs___chart_js___commonjs2___chart_js___amd___chart_js___default = /*#__PURE__*/__webpack_require__.n(external___root___Chart___commonjs___chart_js___commonjs2___chart_js___amd___chart_js__);

// CONCATENATED MODULE: ./src/BaseCharts.js
Expand Down Expand Up @@ -214,9 +276,8 @@ var Scatter = generateChart('scatter-chart', 'scatter');
/* concated harmony reexport */__webpack_require__.d(__webpack_exports__, "mixins", function() { return mixins; });



var VueCharts = {
version: package_default.a.version,
version: LIB_VERSION,
Bar: Bar,
HorizontalBar: HorizontalBar,
Doughnut: Doughnut,
Expand All @@ -235,155 +296,7 @@ var VueCharts = {
/* 1 */
/***/ (function(module, exports) {

module.exports = {
data: function data() {
return {
chartData: null
};
},
watch: {
'chartData': {
handler: function handler(newData, oldData) {
if (oldData) {
var chart = this.$data._chart;
var newDatasetLabels = newData.datasets.map(function (dataset) {
return dataset.label;
});
var oldDatasetLabels = oldData.datasets.map(function (dataset) {
return dataset.label;
});
var oldLabels = JSON.stringify(oldDatasetLabels);
var newLabels = JSON.stringify(newDatasetLabels);

if (newLabels === oldLabels && oldData.datasets.length === newData.datasets.length) {
newData.datasets.forEach(function (dataset, i) {
var oldDatasetKeys = Object.keys(oldData.datasets[i]);
var newDatasetKeys = Object.keys(dataset);
var deletionKeys = oldDatasetKeys.filter(function (key) {
return key !== '_meta' && newDatasetKeys.indexOf(key) === -1;
});
deletionKeys.forEach(function (deletionKey) {
delete chart.data.datasets[i][deletionKey];
});

for (var attribute in dataset) {
if (dataset.hasOwnProperty(attribute)) {
chart.data.datasets[i][attribute] = dataset[attribute];
}
}
});

if (newData.hasOwnProperty('labels')) {
chart.data.labels = newData.labels;
}

if (newData.hasOwnProperty('xLabels')) {
chart.data.xLabels = newData.xLabels;
}

if (newData.hasOwnProperty('yLabels')) {
chart.data.yLabels = newData.yLabels;
}

chart.update();
} else {
chart.destroy();
this.renderChart(this.chartData, this.options);
}
} else {
if (this.$data._chart) {
this.$data._chart.destroy();
}

this.renderChart(this.chartData, this.options);
}
}
}
}
};

/***/ }),
/* 2 */
/***/ (function(module, exports) {

module.exports = {
props: {
chartData: {
required: true
}
},
watch: {
'chartData': {
handler: function handler(newData, oldData) {
if (oldData) {
var chart = this.$data._chart;
var newDatasetLabels = newData.datasets.map(function (dataset) {
return dataset.label;
});
var oldDatasetLabels = oldData.datasets.map(function (dataset) {
return dataset.label;
});
var oldLabels = JSON.stringify(oldDatasetLabels);
var newLabels = JSON.stringify(newDatasetLabels);

if (newLabels === oldLabels && oldData.datasets.length === newData.datasets.length) {
newData.datasets.forEach(function (dataset, i) {
var oldDatasetKeys = Object.keys(oldData.datasets[i]);
var newDatasetKeys = Object.keys(dataset);
var deletionKeys = oldDatasetKeys.filter(function (key) {
return key !== '_meta' && newDatasetKeys.indexOf(key) === -1;
});
deletionKeys.forEach(function (deletionKey) {
delete chart.data.datasets[i][deletionKey];
});

for (var attribute in dataset) {
if (dataset.hasOwnProperty(attribute)) {
chart.data.datasets[i][attribute] = dataset[attribute];
}
}
});

if (newData.hasOwnProperty('labels')) {
chart.data.labels = newData.labels;
}

if (newData.hasOwnProperty('xLabels')) {
chart.data.xLabels = newData.xLabels;
}

if (newData.hasOwnProperty('yLabels')) {
chart.data.yLabels = newData.yLabels;
}

chart.update();
} else {
chart.destroy();
this.renderChart(this.chartData, this.options);
}
} else {
if (this.$data._chart) {
this.$data._chart.destroy();
}

this.renderChart(this.chartData, this.options);
}
}
}
}
};

/***/ }),
/* 3 */
/***/ (function(module, exports) {

module.exports = {"name":"vue-chartjs","version":"3.1.1","description":"Vue.js wrapper for chart.js for creating beautiful charts.","author":"Jakub Juszczak <[email protected]>","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":"[email protected]","web":"http://www.jakubjuszczak.de"}],"repository":{"type":"git","url":"git+ssh://[email protected]: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 && 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":{},"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":"^5.1.1","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","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"]}}

/***/ }),
/* 4 */
/***/ (function(module, exports) {

module.exports = __WEBPACK_EXTERNAL_MODULE_4__;
module.exports = __WEBPACK_EXTERNAL_MODULE_1__;

/***/ })
/******/ ]);
Expand Down
Loading