From 14308d3285b442e8373098f4f5c773b6efbbf773 Mon Sep 17 00:00:00 2001 From: Luca Haid Date: Wed, 12 Feb 2025 17:51:29 +0100 Subject: [PATCH] Changed Dashboard --- public/js/pages/DashboardNew/DashboardNew.css | 6 + public/js/pages/DashboardNew/DashboardNew.js | 138 ++++++++++++------ 2 files changed, 98 insertions(+), 46 deletions(-) diff --git a/public/js/pages/DashboardNew/DashboardNew.css b/public/js/pages/DashboardNew/DashboardNew.css index 756e7268f..9f6a4480a 100644 --- a/public/js/pages/DashboardNew/DashboardNew.css +++ b/public/js/pages/DashboardNew/DashboardNew.css @@ -38,6 +38,12 @@ margin-top: 20px; } +.dashboard-buttons { + display: flex; + gap: 1rem; + margin-top: 20px; +} + @media (min-width: 768px) { .dashboard-cards { diff --git a/public/js/pages/DashboardNew/DashboardNew.js b/public/js/pages/DashboardNew/DashboardNew.js index 201f0f166..c08acbdda 100644 --- a/public/js/pages/DashboardNew/DashboardNew.js +++ b/public/js/pages/DashboardNew/DashboardNew.js @@ -190,6 +190,39 @@ Vue.component('tt-timeline-chart', { Vue.component('dashboard-default', { props: ['dashboardData'], + data() { + return { + selectedTimeframe: 'all', + window: window, + moment: moment + } + }, + methods: { + exportTimeline() { + // we need all timelines with "ONT installiert", "Leerrohr", "Bestellungen" + const data = this.dashboardData.timeline[0].map((item, index) => ({ + date: item.date, + bestellungen: item.value, + leerrohr: this.dashboardData.timeline_leerrohr[0][index].value, + ont_installiert: this.dashboardData.timeline_ont_installed[0][index].value + })); + + // dont use any library for the csv + const csv = [ + ['Datum', 'Bestellungen', 'Leerrohr', 'ONT installiert'], + ...data.map(item => [item.date, item.bestellungen, item.leerrohr, item.ont_installiert]) + ].map(row => row.join(',')).join('\n'); + + const blob = new Blob([csv], {type: 'text/csv'}); + const url = URL.createObjectURL(blob); + const a = document.createElement('a'); + + a.href = url; + a.download = 'timeline.csv'; + a.click(); + URL.revokeObjectURL(url); + } + }, template: `

Bestellungen

@@ -307,13 +340,25 @@ Vue.component('dashboard-default', {

Bestellverlauf

+ + +
+ + + + + +
+
Bestellungen @@ -439,57 +491,51 @@ Vue.component('dashboard-rml', {

Bestellverlauf

+
+ + + + + +
+
{ + return selectedTimeframe === 'all' || moment(item.date).isAfter(moment().subtract(selectedTimeframe.split(' ')[0], selectedTimeframe.split(' ')[1])) + }), + color: 'rgb(75, 192, 192)', + fill: true, + yAxisID: 'y', + order: 3 + }, + { + label: 'Leerrohr', + data: dashboardData.timeline_leerrohr[0].filter(item => selectedTimeframe === 'all' || moment(item.date).isAfter(moment().subtract(selectedTimeframe.split(' ')[0], selectedTimeframe.split(' ')[1]))), + color: 'rgb(255, 99, 132)', + fill: false, + yAxisID: 'y', + order: 2 + }, + { + label: 'ONT installiert', + data: dashboardData.timeline_ont_installed[0].filter(item => selectedTimeframe === 'all' || moment(item.date).isAfter(moment().subtract(selectedTimeframe.split(' ')[0], selectedTimeframe.split(' ')[1]))), + color: 'rgb(54, 162, 235)', + fill: false, + yAxisID: 'y', + order: 1 + } + ]" label="KW" :showGrid="false" /> +
-
- ` +
` })