Проблема с преобразованием данных для составного графика
Здравствуйте! Мне нужна помощь в преобразовании данных для создания составной диаграммы в Chart.js. Данные, которые я получаю от сервера, не подходят для использования в Chart.js. Я должен рассчитать процентное соотношение количества ключевых слов по конкретным категориям. Например, в случае с “Увольнениями” в “Продажах” значение составляет 56.52.
Полученные данные от сервера:
const inputData = [
{
title: 'Увольнения',
keywordId: 1,
verticalId: 1,
verticalTitle: 'Продажи',
keywordCount: 20,
},
{
title: 'Прочие',
keywordId: 2,
verticalId: 1,
verticalTitle: 'Продажи',
keywordCount: 26,
},
{
title: 'Прочие',
keywordId: 2,
verticalId: 2,
verticalTitle: 'Маркетинг',
keywordCount: 24,
},
];
Что я уже попробовал:
const processedData = inputData.map((item) => {
const vertTitle = item.verticalTitle;
if (intermediateObj && vertTitle in intermediateObj) {
intermediateObj[item.verticalTitle].total += item.keywordCount;
intermediateObj[item.verticalTitle].items.push({ title: item.title, count: item.keywordCount });
} else {
intermediateObj[item.verticalTitle] = {};
intermediateObj[item.verticalTitle].items = [];
intermediateObj[item.verticalTitle].items.push({ title: item.title, count: item.keywordCount });
intermediateObj[item.verticalTitle].total = item.keywordCount;
}
});
for (let key in intermediateObj) {
intermediateObj[key].items.forEach(el => {
el.percentage = (el.count / intermediateObj[key].total) * 100;
})
}
Ожидаемый результат для Chart.js:
Chart.js требует, чтобы массив datasets содержал объекты с массивами data. Если какое-либо название (ключевое слово, например, “Увольнения” или “Прочие”) отсутствует для определенной категории, мы должны добавить значение 0 в массив data по соответствующему индексу.
{
labels: ['Продажи', 'Маркетинг'],
datasets: [
{
label: 'Увольнения',
data: [43.47, 0]
},
{
label: 'Прочие',
data: [56.52, 100]
}
]
}
Заранее спасибо за вашу помощь!