Как написать свой плагин?
1. Перейдите в 'проект -> подпрограммы' или нажмите 'F12'.
2. Выберете 'New JavaScript Subroutine'.

3. Введите новое имя подпрограммы.

4. Нажмите добавить, в открывшемся окне введите имя псевдонима. В поле "Тип" выберете значение "OBJID".

2. Выберете 'New JavaScript Subroutine'.

3. Введите новое имя подпрограммы.

4. Нажмите добавить, в открывшемся окне введите имя псевдонима. В поле "Тип" выберете значение "OBJID".

/*Проверяем, существует ли такой инстанс графика если нет, то возвращает ошибку и завершает подпрограмму. */ if (!MyChart ) { errorMessage('Введите текст ошибки'); return; }; /*этот блок проверяет соответствует ли тип диаграммы столбчатому типу если нет, то возвращает ошибку и завершает подпрограмму. Диаграмма столбчатая : 'bar' Диаграмма линейчатая с областями: 'line' Диаграмма кольцевая: 'doughnut' Диаграмма круговая: 'pie' Диаграмма полярной области: 'polarArea' Диаграмма радарная: 'radar' */ if (MyChart.config.type!=='bar'){ errorMessage('Введите текст ошибки'); return; }; /*Создаем плагин и помещаем его в константу*/ const MyPlagin = { id: 'MyPlagin', afterDraw(chart, args, options) { const { ctx } = chart; /*Тут тело Вашего плагина */ ctx.save(); /* сохраняем внесенные изменения
ctx.fillStyle ctx.font ctx.textAlign ctx.textBaseline ctx.fillText(); // выводим метку */ ctx.restore(); } }; /* Проверяем, существует ли в конфигурации графика блок плагинов
если нет, то создаем */ if (!MyChart .config.plugins) { MyChart .config.plugins = []; }; // Проверяем, не добавлен ли уже этот плагин
const pluginExists = MyChart .config.plugins.some(plugin => plugin.id === MyPlagin.id); if (!pluginExists) { MyChart .config.plugins.push(MyPlagin); }; // Обновляем график MyChart .update(); |
5. Теперь вернитесь в основной редактор программы и добавьте вызов собственной подпрограммы с помощью функции myFunctionChart.
Ознакомьтесь с полным примером плагина выводящего значения точек и присваивающего символы к значениям
Ознакомьтесь с полным примером плагина выводящего значения точек и присваивающего символы к значениям
labels = ['%'];
/*Проверяем, существует ли такой инстанс графика если нет, то возвращает ошибку и завершает подпрограмму. */ if (!MyChart ) {
errorMessage('Введите текст ошибки'); return; }; /*этот блок проверяет соответствует ли тип диаграммы столбчатому типу
если нет, то возвращает ошибку и завершает подпрограмму. Диаграмма столбчатая : 'bar' Диаграмма линейчатая с областями: 'line' Диаграмма кольцевая: 'doughnut' Диаграмма круговая: 'pie' Диаграмма полярной области: 'polarArea' Диаграмма радарная: 'radar' */ if (MyChart.config.type!=='bar'){
errorMessage('Введите текст ошибки'); return; }; /*Создаем плагин и помещаем его в константу*/
const MyPlagin = { id: 'MyPlagin', afterDraw(chart, args, options) { const {ctx} = chart; chart.data.datasets.forEach((dataset, i) => { const meta = chart.getDatasetMeta(i); if (!meta.hidden) { meta.data.forEach((bar, index) => { const value = dataset.data[index]; let formattedValue; // Получаем символ для данного индекса метки
const currentLabel = labels[index] ? labels[index] : labels[labels.length-1]; // Форматирование значения с символом formattedValue = value + currentLabel const x = bar.x; const y = bar.y - 5; ctx.save(); ctx.fillStyle = 'black'; // цвет текста ctx.font = 'bold 12px sans-serif'; ctx.textAlign = 'center'; ctx.textBaseline = 'middle'; ctx.fillText(formattedValue, x, y); // выводим метку чуть выше столбца ctx.restore(); }); } }); } }; /* Проверяем, существует ли в конфигурации графика блок плагинов если нет, то создаем */ if (!MyChart .config.plugins) { MyChart .config.plugins = []; }; // Проверяем, не добавлен ли уже этот плагин
const pluginExists = MyChart .config.plugins.some(plugin => plugin.id === MyPlagin.id); if (!pluginExists) { MyChart .config.plugins.push(MyPlagin); }; // Обновляем график
MyChart .update(); |
Для написания собственных функций и плагинов используйте документацию chart.js https://www.chartjs.org/docs/latest/ Версия 4.4.7
|
