Делаю дашборд, на странице 12 графиков, и 12 названий этих графиков. 24 requests, 981 kb transfered, 9.5 resources, finish: 31.36s. Сам код примерно такой и так к каждому графику. Как можно уменьшить количество запросов?
<script>
$(document).ready(function() {
$.ajax({
url: '/api/dashboard/second',
success: function(json) {
var name = [];
for (index = 0; index < json.data.length; ++index) {
if(json.data[index]['graphId'] == 5) {
for (i = 0; i < json.data[index]['values'].length; ++i) {
if(name.indexOf(json.data[index]['values'][i]['x']) == -1)
name.push(json.data[index]['values'][i]['x']);
}
}
document.getElementById("text-1").innerHTML = name;
}
}
});
});
$(document).ready(function() {
$.ajax({
url: '/api/dashboard/second',
success: function(json) {
var name = [];
for(index = 0; index < json.data.length; ++index) {
if(json.data[index]['graphId'] == 5) {
for(i = 0; i < json.data[index]['values'].length; ++i) {
if(name.indexOf(json.data[index]['values'][i]['x']) == -1)
name.push(json.data[index]['values'][i]['x']);
}
}
document.getElementById("text-1").innerHTML = name;
}
}
});
});
$(document).ready(function() {
$.ajax({
url: '/api/dashboard/second',
success: function(json) {
var name = [];
for(index = 0; index < json.data.length; ++index) {
if(json.data[index]['graphId'] == 3) {
for(i = 0; i < json.data[index]['values'].length; ++i) {
if(name.indexOf(json.data[index]['values'][i]['x']) == -1)
name.push(json.data[index]['values'][i]['x']);
}
}
document.getElementById("text-2").innerHTML = name;
}
}
});
});
$(document).ready(function() {
$.ajax({
url: '/api/dashboard/second',
success: function(json) {
var name = [];
for(index = 0; index < json.data.length; ++index) {
if(json.data[index]['graphId'] == 4) {
for(i = 0; i < json.data[index]['values'].length; ++i) {
if(name.indexOf(json.data[index]['values'][i]['x']) == -1)
name.push(json.data[index]['values'][i]['x']);
}
}
document.getElementById("text-3").innerHTML = name;
}
}
});
});
</script>
<script type="text/javascript">
$(document).ready(function() {
$.ajax({
url: '/api/dashboard/second',
success: function(json) {
var data = [];
for(index = 0; index < json.data.length; ++index) {
if(json.data[index]['graphId'] == 5) {
for(i = 0; i < json.data[index]['values'].length; ++i) {
data.push(json.data[index]['values'][i]['value']);
}
}
}
Chart.defaults.global.defaultFontColor = 'black';
Chart.defaults.global.defaultFontFamily = 'Verdana';
var ctx = document.getElementById("pie-chart-1");
var myChart = new Chart(ctx, {
type: 'pie',
data: {
labels: ["Расходы", "Доходы"],
datasets: [{
backgroundColor: ["#3e95cd", "#8e5ea2", "#3cba9f", "#e8c3b9", "#c45850"],
data: data
}]
},
options: {
legend: {
position: "left",
display: true,
},
plugins: {
datalabels: {
fontColor: 'black',
}
}
}
});
}
});
});
</script>
Сделайте, чтоб API по запросу /api/dashboard/graphics
возвращало сразу данный всех графиков типа такого:
{
"response": [
{
"graphId": '1',
"data": [1, 2, 3, 4, 5, 6],
"labels": [12, 14, 16, 18, 20, 22]
},
{
"graphId": '2',
"data": [1, 3, 5, 7],
"labels": [14, 15, 16, 17]
},
{
...
}
],
}
Кстати, советую использовать вместо простого for'а for...of или forEach
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
При переходе по якорной ссылке к якорю в меню "iPhone" отрезаются все блоки сверхуКто сталкивался с данной проблемой и как можно решить? Cсылка...
Стоит задача создания уникальных переменных, которые будут содеражать в себе настройки сервераЗадумывается так, что эти переменные можно...
Есть пару UserControl: AuthControl и CalculateControlДля этих контролов есть ViewModel: AuthViewModel
Реализован проект на AspNet MVC 5