mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-01-09 15:43:19 -06:00
132 lines
3.5 KiB
JavaScript
Vendored
132 lines
3.5 KiB
JavaScript
Vendored
/*
|
|
* charts.defaults.js
|
|
* Copyright (c) 2017 thegrumpydictator@gmail.com
|
|
*
|
|
* This file is part of Firefly III.
|
|
*
|
|
* Firefly III is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation, either version 3 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* Firefly III is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
/** global: accounting */
|
|
|
|
|
|
/**
|
|
* Takes a string phrase and breaks it into separate phrases no bigger than 'maxwidth', breaks are made at complete words.
|
|
* https://stackoverflow.com/questions/21409717/chart-js-and-long-labels
|
|
*
|
|
* @param str
|
|
* @param maxwidth
|
|
* @returns {Array}
|
|
*/
|
|
function formatLabel(str, maxwidth) {
|
|
var sections = [];
|
|
str = String(str);
|
|
var words = str.split(" ");
|
|
var temp = "";
|
|
|
|
words.forEach(function (item, index) {
|
|
if (temp.length > 0) {
|
|
var concat = temp + ' ' + item;
|
|
|
|
if (concat.length > maxwidth) {
|
|
sections.push(temp);
|
|
temp = "";
|
|
}
|
|
else {
|
|
if (index === (words.length - 1)) {
|
|
sections.push(concat);
|
|
return;
|
|
}
|
|
else {
|
|
temp = concat;
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|
|
if (index === (words.length - 1)) {
|
|
sections.push(item);
|
|
return;
|
|
}
|
|
|
|
if (item.length < maxwidth) {
|
|
temp = item;
|
|
}
|
|
else {
|
|
sections.push(item);
|
|
}
|
|
|
|
});
|
|
|
|
return sections;
|
|
}
|
|
|
|
var defaultChartOptions = {
|
|
elements: {
|
|
line: {
|
|
cubicInterpolationMode: 'monotone'
|
|
}
|
|
},
|
|
scales: {
|
|
xAxes: [
|
|
{
|
|
gridLines: {
|
|
display: false
|
|
},
|
|
ticks: {
|
|
// Include a dollar sign in the ticks
|
|
callback: function (value, index, values) {
|
|
return formatLabel(value, 20);
|
|
}
|
|
}
|
|
}
|
|
],
|
|
yAxes: [{
|
|
display: true,
|
|
ticks: {
|
|
callback: function (tickValue) {
|
|
"use strict";
|
|
return accounting.formatMoney(tickValue);
|
|
|
|
},
|
|
beginAtZero: true
|
|
}
|
|
|
|
}]
|
|
},
|
|
tooltips: {
|
|
mode: 'label',
|
|
callbacks: {
|
|
label: function (tooltipItem, data) {
|
|
"use strict";
|
|
return data.datasets[tooltipItem.datasetIndex].label + ': ' +
|
|
accounting.formatMoney(tooltipItem.yLabel, data.datasets[tooltipItem.datasetIndex].currency_symbol);
|
|
}
|
|
}
|
|
}
|
|
};
|
|
|
|
var defaultPieOptions = {
|
|
tooltips: {
|
|
callbacks: {
|
|
label: function (tooltipItem, data) {
|
|
"use strict";
|
|
var value = data.datasets[0].data[tooltipItem.index];
|
|
return data.labels[tooltipItem.index] + ': ' + accounting.formatMoney(value);
|
|
}
|
|
}
|
|
},
|
|
maintainAspectRatio: true,
|
|
responsive: true
|
|
}; |