#c# #sql #asp.net #highcharts #pie-chart
Вопрос:
У меня есть SQL-запрос, который возвращает вывод, аналогичный следующему:
Идентификатор проекта | Завершено | в процессе | Не Начато |
---|---|---|---|
1 | 2 | 1 | 7 |
2 | 2 | 1 | 9 |
3 | 1 | 1 | 3 |
Как я могу зациклить эти данные, возвращенные из SQL в C#, и предоставить их в Highcharts в формате JSON?
В частности, я хочу использовать круг с переменным радиусом, ссылка: https://www.highcharts.com/docs/chart-and-series-types/variable-radius-pie-chart.
Я хочу рассчитать процент завершенности всех проектов и представить их в виде пирога.
Важно: Я хочу, чтобы диаграмма создавалась динамически в зависимости от любого количества возвращаемых записей. Я не хочу сам указывать проекты в серии данных JSON, они должны быть взяты из массива.
SQL:
DROP TABLE IF EXISTS projects;
CREATE TABLE projects(id int primary key, column1 varchar(20),column2 varchar(20),column3 varchar(20));
INSERT INTO projects VALUES( 1,'Completed','Not Started','Completed');
INSERT INTO projects VALUES( 2,'Completed','Not Started','Completed');
INSERT INTO projects VALUES( 3,'Completed','Not Started','In Progress');
select
id,
count(CASE WHEN left(c,9)='Completed' THEN 1 END) as 'Competed',
count(CASE WHEN left(c,11)='In Progress' THEN 1 END) as 'In Progress',
count(CASE WHEN left(c,11)='Not Started' THEN 1 END) as 'Not Started'
from (
SELECT id,Column1 as C from projects
union all
SELECT id,Column2 from projects
union all
SELECT id,Column3 from projects
) x
group by id;
Json:
Highcharts.chart('container', {
chart: {
type: 'variablepie'
},
title: {
text: 'Countries compared by population density and total area.'
},
tooltip: {
headerFormat: '',
pointFormat: '<span style="color:{point.color}">u25CF</span> <b> {point.name}</b><br/>'
'Area (square km): <b>{point.y}</b><br/>'
'Population density (people per square km): <b>{point.z}</b><br/>'
},
series: [{
minPointSize: 10,
innerSize: '20%',
zMin: 0,
name: 'countries',
data: [{
name: 'Spain',
y: 505370,
z: 92.9
}, {
name: 'France',
y: 551500,
z: 118.7
}, {
name: 'Poland',
y: 312685,
z: 124.6
}, {
name: 'Czech Republic',
y: 78867,
z: 137.5
}, {
name: 'Italy',
y: 301340,
z: 201.8
}, {
name: 'Switzerland',
y: 41277,
z: 214.5
}, {
name: 'Germany',
y: 357022,
z: 235.6
}]
}]
});
Комментарии:
1. Можете ли вы предоставить SQL, а также вывод данных JSON?
2. Я просто добавил их. Спасибо!
3. Ваш ожидаемый json не соответствует SQL. С помощью вашего SQL как вы вычисляете
y
amp;z
?4. На самом деле игнорируйте эту проблему, я исправлю ее позже. Представьте, что я хочу только вычислить завершенное как y. Я изменю тип диаграммы на обычную круговую диаграмму, которая принимает только значения y ( завершено ).
5. Это не JSON, это конфигурация JavaScript для отображения диаграммы Highcharts. Просто ожидаемые данные должны быть в формате JSON, проанализированы и добавлены на диаграмму. В API вы можете найти, какой формат данных Highcharts ожидает для отображения переменной круговой диаграммы: api.highcharts.com/highcharts/series.variablepie.data