pvvJSСhart 1.0
Руководство пользователя
×

Как написать свой плагин?

1. Перейдите в 'проект -> подпрограммы' или нажмите 'F12'.
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
Онлайн помощь создана в Dr.Explain