{"version":3,"file":"chart_actions_controller-tvRXCKdq.js","sources":["../../../app/javascript/entrypoints/controllers/chart_actions_controller.js"],"sourcesContent":["import { Controller } from \"@hotwired/stimulus\";\n\nimport { Chart } from \"chart.js\";\nimport print from \"print-js\";\n\nimport { get } from \"@rails/request.js\";\n\nexport default class extends Controller {\n toggleLabels = (event) => {\n const chart = Chart.getChart(\"canvas-element\");\n let toggleState = false;\n let updatedState = false;\n\n chart.data.datasets.forEach((label, index) => {\n label.datalabels = {\n ...label.datalabels,\n display: !label.datalabels.display,\n };\n\n if (index == 0 && !updatedState) {\n toggleState = label.datalabels.display;\n updatedState = true;\n\n let url = `${event.params.path}?show_values=${toggleState}&num_of_values=${event.params.numOfValues}&tracking=${event.params.tracking}`;\n\n const urlParams = new URLSearchParams(window.location.search);\n const startDate = urlParams.get(\"start_date\");\n const endDate = urlParams.get(\"end_date\");\n\n if (startDate && endDate) {\n url += `&start_date=${startDate}&end_date=${endDate}`;\n }\n\n get(url, {\n responseKind: \"turbo-stream\",\n });\n }\n });\n\n chart.update();\n\n const printButton = document.getElementById(\"print-button\");\n\n if (printButton) {\n const links = printButton.querySelectorAll(\"a\");\n\n links.forEach((link) => {\n const url = new URL(link.href);\n url.searchParams.set(\"show_values\", toggleState);\n link.href = url.toString();\n });\n }\n };\n\n toggleGroupLabels = (event) => {\n const canvases = document.querySelectorAll(\"canvas\");\n let toggleState = false;\n let updatedState = false;\n\n let baseUrl = event.params.path;\n\n // get start and end date from the url params\n const urlParams = new URLSearchParams(window.location.search);\n const startDate = urlParams.get(\"start_date\");\n const endDate = urlParams.get(\"end_date\");\n\n canvases.forEach((canvas, index) => {\n const chart = Chart.getChart(canvas.id);\n\n chart.data.datasets.forEach((label) => {\n label.datalabels = {\n ...label.datalabels,\n display: !label.datalabels.display,\n };\n\n if (index == 0 && !updatedState) {\n toggleState = label.datalabels.display;\n updatedState = true;\n get(\n `${baseUrl}?show_values=${toggleState}&num_of_values=${event.params.numOfValues}&tracking=${event.params.tracking}&start_date=${startDate}&end_date=${endDate}`,\n {\n responseKind: \"turbo-stream\",\n }\n );\n }\n });\n\n chart.update();\n });\n };\n\n triggerPrint = () => {\n const canvasContainer = document.getElementById(\"chart-container\");\n\n const chart = Chart.getChart(\"canvas-element\");\n const previousLineWidth = chart.options.elements.line.borderWidth;\n const previousPointRadius = chart.options.elements.point.radius;\n const previousFontSize = chart.options.scales.y.ticks.font.size;\n const previousYFontSize = chart.options.scales.y.ticks.font.size;\n const previousXFontSize = chart.options.scales.x.ticks.font.size;\n\n chart.options.elements.line.borderWidth = 10;\n chart.options.elements.point.radius = 9;\n chart.options.scales.y.ticks.font.size = 24;\n chart.options.scales.x.ticks.font.size = 24;\n\n const previousDatasets = chart.data.datasets;\n\n chart.data.datasets = chart.data.datasets.map((dataset) => {\n return {\n ...dataset,\n datalabels: {\n ...dataset.datalabels,\n offset: 20,\n font: {\n ...dataset.datalabels.font,\n size: 24,\n },\n },\n };\n });\n\n chart.update(\"none\");\n\n setTimeout(() => {\n print({\n printable: Chart.getChart(\"canvas-element\").canvas.toDataURL(\n \"image/png\",\n 1.0\n ),\n style: \"@page { size: auto landscape }\",\n type: \"image\",\n header: `