47 lines
1.2 KiB
JavaScript
47 lines
1.2 KiB
JavaScript
/**
|
|
* @file
|
|
* Charts API.
|
|
*/
|
|
((Drupal) => {
|
|
|
|
Drupal.Charts = Drupal.Charts || {};
|
|
Drupal.Charts.Configs = Drupal.Charts.Configs || [];
|
|
|
|
/**
|
|
* @typedef {class} Drupal.Charts.Contents
|
|
*/
|
|
|
|
Drupal.Charts.Contents = class {
|
|
constructor() {
|
|
const chartsElements = document.querySelectorAll('[data-chart]');
|
|
chartsElements.forEach(function (el) {
|
|
const id = el.getAttribute('id');
|
|
Drupal.Charts.Configs[id] = JSON.parse(el.getAttribute('data-chart'));
|
|
Drupal.Charts.Configs[id].drupalChartDivElement = el;
|
|
Drupal.Charts.Configs[id].drupalChartDivId = id;
|
|
});
|
|
}
|
|
|
|
initialize(id) {
|
|
const event = new CustomEvent('drupalChartsConfigsInitialization', {
|
|
detail: Drupal.Charts.Configs[id]
|
|
});
|
|
Drupal.Charts.Configs[id].drupalChartDivElement.dispatchEvent(event);
|
|
}
|
|
|
|
static update(id, data) {
|
|
if (Drupal.Charts.Configs.hasOwnProperty(id)) {
|
|
Drupal.Charts.Configs[id] = data;
|
|
}
|
|
}
|
|
|
|
getData(id) {
|
|
if (Drupal.Charts.Configs.hasOwnProperty(id)) {
|
|
this.initialize(id);
|
|
return Drupal.Charts.Configs[id];
|
|
}
|
|
return {};
|
|
}
|
|
};
|
|
})(Drupal);
|