diff --git a/server/static/js/statistics.js b/server/static/js/statistics.js index a33b49e..4162177 100644 --- a/server/static/js/statistics.js +++ b/server/static/js/statistics.js @@ -1,11 +1,11 @@ var ctx = document.getElementById('myChart').getContext('2d'); let list = document.getElementById('list_change'); +var myChart = null; function displayRadioValue() { var ele = document.getElementsByName('drone'); for (i = 0; i < ele.length; i++) { - console.log(ele[i]); if (ele[i].checked && ele[i].id =='График по событиям'){ list.innerHTML = ''; let div = document.createElement('div'); @@ -102,251 +102,260 @@ function displayRadioValue() { div.appendChild(div15); list.appendChild(div); - div11.addEventListener('click', ()=>{ - var myChart = new Chart(ctx, { - type: 'pie', - data: { - labels: ['Анкеты', 'Отправки', 'Покупки', 'Подтверждения'], - datasets: [{ - data: [90, 50, 70, 30], - backgroundColor: ['#e91e63', '#00e676', '#ff5722', '#1e88e5'], - borderWidth: 0.5 , - borderColor: '#ddd' - }] - }, - options: { - responsive: false, - title: { - display: true, - position: 'top', - fontSize: 16, - fontColor: '#111', - padding: 20 + function listener() { + if (myChart !== null) { + myChart.destroy(); + } + if(input1.checked){ + myChart = new Chart(ctx, { + type: 'pie', + data: { + labels: ['Анкеты', 'Отправки', 'Покупки', 'Подтверждения'], + datasets: [{ + data: [90, 50, 70, 30], + backgroundColor: ['#e91e63', '#00e676', '#ff5722', '#1e88e5'], + borderWidth: 0.5 , + borderColor: '#ddd' + }] }, - legend: { - display: true, - position: 'bottom', - labels: { - boxWidth: 20, + options: { + responsive: false, + title: { + display: true, + position: 'top', + fontSize: 16, fontColor: '#111', - padding: 15 - } - }, - tooltips: { - enabled: false - }, - plugins: { - datalabels: { - color: '#111', - textAlign: 'center', - font: { - lineHeight: 1.6 - }, - formatter: function(value, ctx) { - return ctx.chart.data.labels[ctx.dataIndex] + '\n' + value + '%'; + padding: 20 + }, + legend: { + display: true, + position: 'bottom', + labels: { + boxWidth: 20, + fontColor: '#111', + padding: 15 + } + }, + tooltips: { + enabled: false + }, + plugins: { + datalabels: { + color: '#111', + textAlign: 'center', + font: { + lineHeight: 1.6 + }, + formatter: function(value, ctx) { + return ctx.chart.data.labels[ctx.dataIndex] + '\n' + value + '%'; + } } } } - } - }); - }) + }); + } - div12.addEventListener('click', ()=>{ - var myChart = new Chart(ctx, { - type: 'pie', - data: { - labels: ['Заполненные', 'Нет'], - datasets: [{ - data: [90, 10], - backgroundColor: ['#e91e63', '#00e676'], - borderWidth: 0.5 , - borderColor: '#ddd' - }] - }, - options: { - responsive: false, - title: { - display: true, - position: 'top', - fontSize: 16, - fontColor: '#111', - padding: 20 + if(input2.checked){ + myChart = new Chart(ctx, { + type: 'pie', + data: { + labels: ['Заполненные', 'Нет'], + datasets: [{ + data: [90, 10], + backgroundColor: ['#e91e63', '#00e676'], + borderWidth: 0.5 , + borderColor: '#ddd' + }] }, - legend: { - display: true, - position: 'bottom', - labels: { - boxWidth: 20, + options: { + responsive: false, + title: { + display: true, + position: 'top', + fontSize: 16, fontColor: '#111', - padding: 15 - } - }, - tooltips: { - enabled: false - }, - plugins: { - datalabels: { - color: '#111', - textAlign: 'center', - font: { - lineHeight: 1.6 - }, - formatter: function(value, ctx) { - return ctx.chart.data.labels[ctx.dataIndex] + '\n' + value + '%'; + padding: 20 + }, + legend: { + display: true, + position: 'bottom', + labels: { + boxWidth: 20, + fontColor: '#111', + padding: 15 + } + }, + tooltips: { + enabled: false + }, + plugins: { + datalabels: { + color: '#111', + textAlign: 'center', + font: { + lineHeight: 1.6 + }, + formatter: function(value, ctx) { + return ctx.chart.data.labels[ctx.dataIndex] + '\n' + value + '%'; + } } } } - } - }); - }) + }); + } - div13.addEventListener('click', ()=>{ - var myChart = new Chart(ctx, { - type: 'pie', - data: { - labels: ['Отправленные', 'Нет'], - datasets: [{ - data: [50, 50], - backgroundColor: ['#e91e63', '#00e676'], - borderWidth: 0.5 , - borderColor: '#ddd' - }] - }, - options: { - responsive: false, - title: { - display: true, - position: 'top', - fontSize: 16, - fontColor: '#111', - padding: 20 + if(input3.checked){ + myChart = new Chart(ctx, { + type: 'pie', + data: { + labels: ['Отправленные', 'Нет'], + datasets: [{ + data: [50, 50], + backgroundColor: ['#e91e63', '#00e676'], + borderWidth: 0.5 , + borderColor: '#ddd' + }] }, - legend: { - display: true, - position: 'bottom', - labels: { - boxWidth: 20, + options: { + responsive: false, + title: { + display: true, + position: 'top', + fontSize: 16, fontColor: '#111', - padding: 15 - } - }, - tooltips: { - enabled: false - }, - plugins: { - datalabels: { - color: '#111', - textAlign: 'center', - font: { - lineHeight: 1.6 - }, - formatter: function(value, ctx) { - return ctx.chart.data.labels[ctx.dataIndex] + '\n' + value + '%'; + padding: 20 + }, + legend: { + display: true, + position: 'bottom', + labels: { + boxWidth: 20, + fontColor: '#111', + padding: 15 + } + }, + tooltips: { + enabled: false + }, + plugins: { + datalabels: { + color: '#111', + textAlign: 'center', + font: { + lineHeight: 1.6 + }, + formatter: function(value, ctx) { + return ctx.chart.data.labels[ctx.dataIndex] + '\n' + value + '%'; + } } } } - } - }); - }) + }); + } - div14.addEventListener('click', ()=>{ - var myChart = new Chart(ctx, { - type: 'pie', - data: { - labels: ['Купленные', 'Нет'], - datasets: [{ - data: [70, 30], - backgroundColor: ['#e91e63', '#00e676'], - borderWidth: 0.5 , - borderColor: '#ddd' - }] - }, - options: { - responsive: false, - title: { - display: true, - position: 'top', - fontSize: 16, - fontColor: '#111', - padding: 20 + if(input4.checked){ + myChart = new Chart(ctx, { + type: 'pie', + data: { + labels: ['Купленные', 'Нет'], + datasets: [{ + data: [70, 30], + backgroundColor: ['#e91e63', '#00e676'], + borderWidth: 0.5 , + borderColor: '#ddd' + }] }, - legend: { - display: true, - position: 'bottom', - labels: { - boxWidth: 20, + options: { + responsive: false, + title: { + display: true, + position: 'top', + fontSize: 16, fontColor: '#111', - padding: 15 - } - }, - tooltips: { - enabled: false - }, - plugins: { - datalabels: { - color: '#111', - textAlign: 'center', - font: { - lineHeight: 1.6 - }, - formatter: function(value, ctx) { - return ctx.chart.data.labels[ctx.dataIndex] + '\n' + value + '%'; + padding: 20 + }, + legend: { + display: true, + position: 'bottom', + labels: { + boxWidth: 20, + fontColor: '#111', + padding: 15 + } + }, + tooltips: { + enabled: false + }, + plugins: { + datalabels: { + color: '#111', + textAlign: 'center', + font: { + lineHeight: 1.6 + }, + formatter: function(value, ctx) { + return ctx.chart.data.labels[ctx.dataIndex] + '\n' + value + '%'; + } } } } - } - }); - }) + }); + } - div15.addEventListener('click', ()=>{ - var myChart = new Chart(ctx, { - type: 'pie', - data: { - labels: ['Подтвержденные', 'Нет'], - datasets: [{ - data: [30, 70], - backgroundColor: ['#e91e63', '#00e676'], - borderWidth: 0.5 , - borderColor: '#ddd' - }] - }, - options: { - responsive: false, - title: { - display: true, - position: 'top', - fontSize: 16, - fontColor: '#111', - padding: 20 + if(input5.checked){ + myChart = new Chart(ctx, { + type: 'pie', + data: { + labels: ['Подтвержденные', 'Нет'], + datasets: [{ + data: [30, 70], + backgroundColor: ['#e91e63', '#00e676'], + borderWidth: 0.5 , + borderColor: '#ddd' + }] }, - legend: { - display: true, - position: 'bottom', - labels: { - boxWidth: 20, + options: { + responsive: false, + title: { + display: true, + position: 'top', + fontSize: 16, fontColor: '#111', - padding: 15 - } - }, - tooltips: { - enabled: false - }, - plugins: { - datalabels: { - color: '#111', - textAlign: 'center', - font: { - lineHeight: 1.6 - }, - formatter: function(value, ctx) { - return ctx.chart.data.labels[ctx.dataIndex] + '\n' + value + '%'; + padding: 20 + }, + legend: { + display: true, + position: 'bottom', + labels: { + boxWidth: 20, + fontColor: '#111', + padding: 15 + } + }, + tooltips: { + enabled: false + }, + plugins: { + datalabels: { + color: '#111', + textAlign: 'center', + font: { + lineHeight: 1.6 + }, + formatter: function(value, ctx) { + return ctx.chart.data.labels[ctx.dataIndex] + '\n' + value + '%'; + } } } } - } - }); - }) - } + }); + } + } + }; + document.querySelectorAll('input[name="list1"]').forEach(input => { + input.addEventListener("change", listener); + }); + if (ele[i].checked && ele[i].id =='График по командам'){ list.innerHTML = ''; let div = document.createElement('div'); @@ -368,7 +377,7 @@ function displayRadioValue() { input1.style.fontWeight = "400"; input1.style.wordWrap = "break-word"; input1.type = "radio"; - input1.setAttribute("name", "list1"); + input1.setAttribute("name", "list2"); var label1 = document.createElement('label'); label1.setAttribute('for', 'Общее кол-во команд - проблемных и нет'); label1.innerHTML = "Общее кол-во команд - проблемных и нет"; @@ -381,7 +390,7 @@ function displayRadioValue() { input2.style.fontWeight = "400"; input2.style.wordWrap = "break-word"; input2.type = "radio"; - input2.setAttribute("name", "list1"); + input2.setAttribute("name", "list2"); var label2 = document.createElement('label'); label2.setAttribute('for', 'Команды с различными проблемами'); label2.innerHTML = "Команды с различными проблемами"; @@ -394,7 +403,7 @@ function displayRadioValue() { input3.style.fontWeight = "400"; input3.style.wordWrap = "break-word"; input3.type = "radio"; - input3.setAttribute("name", "list1"); + input3.setAttribute("name", "list2"); var label3 = document.createElement('label'); label3.setAttribute('for', 'Игроки (кол-во отправивших анкету, купивших подарок, отправивших его, подтвердивших получение)'); label3.innerHTML = "Игроки (кол-во отправивших анкету, купивших подарок, отправивших его, подтвердивших получение)"; @@ -411,153 +420,161 @@ function displayRadioValue() { div.appendChild(div13); list.appendChild(div); - div11.addEventListener('click', ()=>{ - var myChart = new Chart(ctx, { - type: 'pie', - data: { - labels: ['Проблемные', 'Нет'], - datasets: [{ - data: [12, 8], - backgroundColor: ['#e91e63', '#00e676'], - borderWidth: 0.5 , - borderColor: '#ddd' - }] - }, - options: { - responsive: false, - title: { - display: true, - position: 'top', - fontSize: 16, - fontColor: '#111', - padding: 20 + + function listener1() { + if (myChart !== null) { + myChart.destroy(); + } + if(input1.checked){ + myChart = new Chart(ctx, { + type: 'pie', + data: { + labels: ['Проблемные', 'Нет'], + datasets: [{ + data: [12, 8], + backgroundColor: ['#e91e63', '#00e676'], + borderWidth: 0.5 , + borderColor: '#ddd' + }] }, - legend: { - display: true, - position: 'bottom', - labels: { - boxWidth: 20, + options: { + responsive: false, + title: { + display: true, + position: 'top', + fontSize: 16, fontColor: '#111', - padding: 15 - } - }, - tooltips: { - enabled: false - }, - plugins: { - datalabels: { - color: '#111', - textAlign: 'center', - font: { - lineHeight: 1.6 - }, - formatter: function(value, ctx) { - return ctx.chart.data.labels[ctx.dataIndex] + '\n' + value + '%'; + padding: 20 + }, + legend: { + display: true, + position: 'bottom', + labels: { + boxWidth: 20, + fontColor: '#111', + padding: 15 + } + }, + tooltips: { + enabled: false + }, + plugins: { + datalabels: { + color: '#111', + textAlign: 'center', + font: { + lineHeight: 1.6 + }, + formatter: function(value, ctx) { + return ctx.chart.data.labels[ctx.dataIndex] + '\n' + value + '%'; + } } } } - } - }); - }) + }); + } - div12.addEventListener('click', ()=>{ - var myChart = new Chart(ctx, { - type: 'pie', - data: { - labels: ['С заполнением анкет', 'С покупкой', 'С отправкой', 'С подтверждением подарков'], - datasets: [{ - data: [1, 1, 2, 4], - backgroundColor: ['#e91e63', '#00e676', '#ff5722', '#1e88e5'], - borderWidth: 0.5 , - borderColor: '#ddd' - }] - }, - options: { - responsive: false, - title: { - display: true, - position: 'top', - fontSize: 16, - fontColor: '#111', - padding: 20 + if(input2.checked){ + myChart = new Chart(ctx, { + type: 'pie', + data: { + labels: ['С заполнением анкет', 'С покупкой', 'С отправкой', 'С подтверждением подарков'], + datasets: [{ + data: [1, 1, 2, 4], + backgroundColor: ['#e91e63', '#00e676', '#ff5722', '#1e88e5'], + borderWidth: 0.5 , + borderColor: '#ddd' + }] }, - legend: { - display: true, - position: 'bottom', - labels: { - boxWidth: 20, + options: { + responsive: false, + title: { + display: true, + position: 'top', + fontSize: 16, fontColor: '#111', - padding: 15 - } - }, - tooltips: { - enabled: false - }, - plugins: { - datalabels: { - color: '#111', - textAlign: 'center', - font: { - lineHeight: 1.6 - }, - formatter: function(value, ctx) { - return ctx.chart.data.labels[ctx.dataIndex] + '\n' + value + '%'; + padding: 20 + }, + legend: { + display: true, + position: 'bottom', + labels: { + boxWidth: 20, + fontColor: '#111', + padding: 15 + } + }, + tooltips: { + enabled: false + }, + plugins: { + datalabels: { + color: '#111', + textAlign: 'center', + font: { + lineHeight: 1.6 + }, + formatter: function(value, ctx) { + return ctx.chart.data.labels[ctx.dataIndex] + '\n' + value + '%'; + } } } } - } - }); - }) - - div13.addEventListener('click', ()=>{ - var myChart = new Chart(ctx, { - type: 'pie', - data: { - labels: ['Заполнили анкету', 'Купили подарок', 'Отправили подарок', 'Подтвердили получение'], - datasets: [{ - data: [90, 70, 50, 30], - backgroundColor: ['#e91e63', '#00e676', '#ff5722', '#1e88e5'], - borderWidth: 0.5 , - borderColor: '#ddd' - }] - }, - options: { - responsive: false, - title: { - display: true, - position: 'top', - fontSize: 16, - fontColor: '#111', - padding: 20 + }); + } + if(input3.checked){ + myChart = new Chart(ctx, { + type: 'pie', + data: { + labels: ['Заполнили анкету', 'Купили подарок', 'Отправили подарок', 'Подтвердили получение'], + datasets: [{ + data: [90, 70, 50, 30], + backgroundColor: ['#e91e63', '#00e676', '#ff5722', '#1e88e5'], + borderWidth: 0.5 , + borderColor: '#ddd' + }] }, - legend: { - display: true, - position: 'bottom', - labels: { - boxWidth: 20, + options: { + responsive: false, + title: { + display: true, + position: 'top', + fontSize: 16, fontColor: '#111', - padding: 15 - } - }, - tooltips: { - enabled: false - }, - plugins: { - datalabels: { - color: '#111', - textAlign: 'center', - font: { - lineHeight: 1.6 - }, - formatter: function(value, ctx) { - return ctx.chart.data.labels[ctx.dataIndex] + '\n' + value + '%'; + padding: 20 + }, + legend: { + display: true, + position: 'bottom', + labels: { + boxWidth: 20, + fontColor: '#111', + padding: 15 + } + }, + tooltips: { + enabled: false + }, + plugins: { + datalabels: { + color: '#111', + textAlign: 'center', + font: { + lineHeight: 1.6 + }, + formatter: function(value, ctx) { + return ctx.chart.data.labels[ctx.dataIndex] + '\n' + value + '%'; + } } } } - } - }); - }) + }); + } + } } - + document.querySelectorAll('input[name="list2"]').forEach(input => { + input.addEventListener("change", listener1); + }); } } +