mirror of
https://github.com/Karaka-Management/oms-SalesAnalysis.git
synced 2026-01-11 11:28:41 +00:00
74 lines
2.2 KiB
JavaScript
74 lines
2.2 KiB
JavaScript
import { jsOMS } from '../../../jsOMS/Utils/oLib.js';
|
|
import { Autoloader } from '../../../jsOMS/Autoloader.js';
|
|
|
|
Autoloader.defineNamespace('omsApp.Modules');
|
|
|
|
omsApp.Modules.SalesAnalysis = class {
|
|
/**
|
|
* @constructor
|
|
*
|
|
* @since 1.0.0
|
|
*/
|
|
constructor (app)
|
|
{
|
|
this.app = app;
|
|
};
|
|
|
|
bind (id)
|
|
{
|
|
const charts = typeof id === 'undefined' ? document.getElementsByTagName('canvas') : [document.getElementById(id)];
|
|
let length = charts.length;
|
|
|
|
for (let i = 0; i < length; ++i) {
|
|
if (charts[i].getAttribute('data-chart') === null
|
|
&& charts[i].getAttribute('data-chart') !== 'undefined'
|
|
) {
|
|
continue;
|
|
}
|
|
|
|
this.bindChart(charts[i]);
|
|
}
|
|
};
|
|
|
|
bindChart (chart)
|
|
{
|
|
if (typeof chart === 'undefined' || !chart) {
|
|
jsOMS.Log.Logger.instance.error('Invalid chart: ' + chart, 'ClientManagement');
|
|
|
|
return;
|
|
}
|
|
|
|
const self = this;
|
|
const data = JSON.parse(chart.getAttribute('data-chart'));
|
|
|
|
if (data.type === 'choropleth') {
|
|
const parts = data.mapurl.split('/');
|
|
const fileName = parts[parts.length - 1];
|
|
const mapName = fileName.replace('.topo.json', '');
|
|
|
|
fetch(data.mapurl).then((r) => r.json()).then((d) => {
|
|
const countries = ChartGeo.topojson.feature(d, d.objects[mapName]).features;
|
|
|
|
data.data.labels = countries.map((c) => c.properties.name);
|
|
|
|
const vals = {};
|
|
const length = data.data.datasets[0].data.length;
|
|
for (let i = 0; i < length; ++i) {
|
|
vals[data.data.datasets[0].data[i].id] = data.data.datasets[0].data[i].value;
|
|
}
|
|
|
|
data.data.datasets[0].data = countries.map((c) => (
|
|
{feature: c, value: (vals.hasOwnProperty(c.id) ? vals[c.id] : null)}
|
|
));
|
|
|
|
const myChart = new Chart(chart.getContext('2d'), data);
|
|
});
|
|
} else {
|
|
const myChart = new Chart(chart.getContext('2d'), data);
|
|
}
|
|
|
|
};
|
|
};
|
|
|
|
window.omsApp.moduleManager.get('SalesAnalysis').bind();
|