mirror of
https://github.com/home-assistant/frontend.git
synced 2025-07-25 18:26:35 +00:00
parent
39172f8c49
commit
9dc33de49f
@ -56,7 +56,7 @@
|
|||||||
"vaadin-date-picker": "vaadin/vaadin-date-picker#^2.0.0",
|
"vaadin-date-picker": "vaadin/vaadin-date-picker#^2.0.0",
|
||||||
"web-animations-js": "^2.2.5",
|
"web-animations-js": "^2.2.5",
|
||||||
"webcomponentsjs": "^1.0.10",
|
"webcomponentsjs": "^1.0.10",
|
||||||
"chart.js": "~2.7.1",
|
"chart.js": "~2.7.2",
|
||||||
"moment": "^2.20.0",
|
"moment": "^2.20.0",
|
||||||
"chartjs-chart-timeline": "fanthos/chartjs-chart-timeline#^0.1.4",
|
"chartjs-chart-timeline": "fanthos/chartjs-chart-timeline#^0.1.4",
|
||||||
"chartjs-plugin-zoom": "^0.6.3",
|
"chartjs-plugin-zoom": "^0.6.3",
|
||||||
|
@ -7,70 +7,60 @@
|
|||||||
// Use minified(Chart.min.js) version to fix strange color after uglify
|
// Use minified(Chart.min.js) version to fix strange color after uglify
|
||||||
// eslint-disable-next-line no-unused-vars
|
// eslint-disable-next-line no-unused-vars
|
||||||
/* global Chart moment Color Hammer */
|
/* global Chart moment Color Hammer */
|
||||||
{
|
|
||||||
// This function add a new interaction mode to Chart.js that
|
// This function add a new interaction mode to Chart.js that
|
||||||
// returns one point for every dataset.
|
// returns one point for every dataset.
|
||||||
Chart.Interaction.modes.neareach = function (chart, e, options) {
|
Chart.Interaction.modes.neareach = function (chart, e, options) {
|
||||||
const getRange = {
|
const getRange = {
|
||||||
x: (a, b) => Math.abs(a.x - b.x),
|
x: (a, b) => Math.abs(a.x - b.x),
|
||||||
y: (a, b) => Math.abs(a.y - b.y),
|
y: (a, b) => Math.abs(a.y - b.y),
|
||||||
// eslint-disable-next-line no-restricted-properties
|
// eslint-disable-next-line no-restricted-properties
|
||||||
xy: (a, b) => Math.pow(a.x - b.x, 2) + Math.pow(a.y - b.y, 2),
|
xy: (a, b) => Math.pow(a.x - b.x, 2) + Math.pow(a.y - b.y, 2),
|
||||||
|
};
|
||||||
|
const getRangeMax = {
|
||||||
|
x: r => r,
|
||||||
|
y: r => r,
|
||||||
|
xy: r => r * r,
|
||||||
|
};
|
||||||
|
let position;
|
||||||
|
if (e.native) {
|
||||||
|
position = {
|
||||||
|
x: e.x,
|
||||||
|
y: e.y
|
||||||
};
|
};
|
||||||
const getRangeMax = {
|
} else {
|
||||||
x: r => r,
|
position = Chart.helpers.getRelativePosition(e, chart);
|
||||||
y: r => r,
|
}
|
||||||
xy: r => r * r,
|
const elements = [];
|
||||||
};
|
const elementsRange = [];
|
||||||
let position;
|
const datasets = chart.data.datasets;
|
||||||
if (e.native) {
|
let meta;
|
||||||
position = {
|
options.axis = options.axis || 'xy';
|
||||||
x: e.x,
|
const rangeFunc = getRange[options.axis];
|
||||||
y: e.y
|
const rangeMaxFunc = getRangeMax[options.axis];
|
||||||
};
|
|
||||||
} else {
|
for (let i = 0, ilen = datasets.length; i < ilen; ++i) {
|
||||||
position = Chart.helpers.getRelativePosition(e, chart);
|
if (!chart.isDatasetVisible(i)) {
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
const elements = [];
|
|
||||||
const elementsRange = [];
|
|
||||||
const datasets = chart.data.datasets;
|
|
||||||
let meta;
|
|
||||||
options.axis = options.axis || 'xy';
|
|
||||||
const rangeFunc = getRange[options.axis];
|
|
||||||
const rangeMaxFunc = getRangeMax[options.axis];
|
|
||||||
|
|
||||||
for (let i = 0, ilen = datasets.length; i < ilen; ++i) {
|
meta = chart.getDatasetMeta(i);
|
||||||
if (!chart.isDatasetVisible(i)) {
|
for (let j = 0, jlen = meta.data.length; j < jlen; ++j) {
|
||||||
continue;
|
const element = meta.data[j];
|
||||||
}
|
if (!element._view.skip) {
|
||||||
|
const vm = element._view;
|
||||||
meta = chart.getDatasetMeta(i);
|
const range = rangeFunc(vm, position);
|
||||||
for (let j = 0, jlen = meta.data.length; j < jlen; ++j) {
|
const oldRange = elementsRange[i];
|
||||||
const element = meta.data[j];
|
if (range < rangeMaxFunc(vm.radius + vm.hitRadius)) {
|
||||||
if (!element._view.skip) {
|
if (oldRange === undefined || oldRange > range) {
|
||||||
const vm = element._view;
|
elementsRange[i] = range;
|
||||||
const range = rangeFunc(vm, position);
|
elements[i] = element;
|
||||||
const oldRange = elementsRange[i];
|
|
||||||
if (range < rangeMaxFunc(vm.radius + vm.hitRadius)) {
|
|
||||||
if (oldRange === undefined || oldRange > range) {
|
|
||||||
elementsRange[i] = range;
|
|
||||||
elements[i] = element;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const ret = elements.filter(n => n !== undefined);
|
}
|
||||||
return ret;
|
const ret = elements.filter(n => n !== undefined);
|
||||||
};
|
return ret;
|
||||||
|
};
|
||||||
// Fix infinite loop bug in Chart.js 2.7.1
|
|
||||||
const x = Chart.scaleService.constructors.time.prototype;
|
|
||||||
x._getLabelCapacity = x.getLabelCapacity;
|
|
||||||
x.getLabelCapacity = function () {
|
|
||||||
// eslint-disable-next-line prefer-rest-params
|
|
||||||
const ret = this._getLabelCapacity.apply(this, arguments);
|
|
||||||
return ret > 0 ? ret : 1;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
</script>
|
</script>
|
Loading…
x
Reference in New Issue
Block a user