{"version":3,"file":"chart_controller-CeWnLPo2.js","sources":["../../../app/javascript/entrypoints/controllers/chart_controller.js"],"sourcesContent":["import {\n Chart,\n CategoryScale,\n LinearScale,\n PointElement,\n LineElement,\n Title,\n Tooltip,\n Legend,\n} from \"chart.js\";\nimport ChartDataLabels from \"chartjs-plugin-datalabels\";\n\nimport _ from \"lodash\";\n\nimport { useWindowResize } from \"stimulus-use\";\nimport { useMutation } from \"stimulus-use\";\n\nChart.register(\n CategoryScale,\n LinearScale,\n PointElement,\n LineElement,\n Title,\n Tooltip,\n Legend,\n ChartDataLabels\n);\n\nimport BaseChartController from \"./base_chart_controller\";\n\nconst red = \"rgba(255, 0, 0, 1)\";\nconst black = \"rgb(0, 0, 0, 1)\";\n\nexport default class extends BaseChartController {\n jsonDataValueChanged(event) {\n if (!this.initial) {\n this.initial = true;\n } else {\n let previousTracking = this.tracking;\n let previousName = this.name;\n\n var { chart, rows } = this.setValues();\n\n if (chart) {\n chart.data.labels = this.labels;\n chart.data.datasets[0].data = this.values;\n\n chart.options = this.options(rows);\n\n if (previousName != this.name) {\n chart.update(\"reset\");\n chart.update(\"none\");\n return;\n }\n\n if (previousTracking !== this.tracking) {\n chart.update(\"none\");\n return;\n } else {\n chart.update(\"none\");\n }\n } else {\n const ctx = document.getElementById(\"canvas-element\").getContext(\"2d\");\n this.createChart(ctx, rows, this.element);\n }\n }\n }\n\n setValues() {\n let chart = Chart.getChart(\"canvas-element\");\n\n const data = this.jsonDataValue;\n const rows = this.jsonDataValue.rows;\n\n this.id = data.id;\n this.name = data.name;\n this.dataType = data.data_type;\n this.reverse = data.upside_down;\n this.decimalPlaces = data.decimal_places;\n this.tracking = data.tracking;\n this.endOfWeek = data.end_of_week;\n\n this.autoScale = data.auto_scale;\n this.min = data.min;\n this.max = data.max;\n this.goal = data.goal;\n\n this.notes = data.notes;\n\n if (this.tracking == \"week\") {\n this.labels = Object.keys(rows).map((key) => this.endOfWeek[key]);\n this.originalLabels = Object.keys(data.rows);\n } else {\n this.labels = Object.keys(rows) || [];\n }\n\n this.values = Object.values(rows) || [];\n\n return { chart, rows };\n }\n\n handleResize() {\n useMutation(this, {\n attributes: true,\n element: document.getElementById(\"main-menu\"),\n });\n\n window.addEventListener(\"transitionend\", (event) => {\n const chart = Chart.getChart(\"canvas-element\");\n if (chart) {\n setTimeout(() => {\n chart.resize();\n }, 100);\n }\n });\n }\n\n mutate(entries) {\n for (const mutation of entries) {\n if (\n mutation.type === \"attributes\" &&\n mutation.attributeName === \"data-expanded\"\n ) {\n const chart = Chart.getChart(\"canvas-element\");\n if (chart) {\n setTimeout(() => {\n chart.resize();\n }, 100);\n }\n }\n }\n }\n\n chartTargetDisconnect() {\n window.removeEventListener(\"transitionend\", this.handleResize);\n }\n\n chartTargetConnected(element) {\n useWindowResize(this);\n this.handleResize();\n\n const parsedData = this.jsonDataValue;\n\n if (_.isEmpty(parsedData) || _.isEmpty(parsedData.rows)) {\n return;\n }\n\n const ctx = document.getElementById(element.id).getContext(\"2d\");\n\n var { rows } = this.setValues();\n this.createChart(ctx, rows, element);\n }\n\n basicLineChartSettings = () => {\n return {\n borderColor: (ctx) => {\n let color = black;\n\n if (\n ctx.index != 0 &&\n parseFloat(this.values[ctx.index - 1]) >=\n parseFloat(this.values[ctx.index])\n ) {\n color = red;\n }\n\n if (this.reverse) return color == black ? red : black;\n return color;\n },\n backgroundColor: (ctx, options) => {\n let color = black;\n\n if (\n ctx.index != 0 &&\n parseFloat(this.values[ctx.index - 1]) >=\n parseFloat(this.values[ctx.index])\n ) {\n color = red;\n }\n\n if (this.reverse) return color == black ? red : black;\n return color;\n },\n segment: {\n borderColor: (ctx) => {\n let color = black;\n\n if (parseFloat(ctx.p0.raw) >= parseFloat(ctx.p1.raw)) {\n color = red;\n }\n\n if (this.reverse) return color == black ? red : black;\n return color;\n },\n },\n };\n };\n}\n"],"names":["Chart","CategoryScale","LinearScale","PointElement","LineElement","Title","Tooltip","Legend","ChartDataLabels","red","black","chart_controller","BaseChartController","__publicField","ctx","color","options","event","previousTracking","previousName","chart","rows","data","key","useMutation","entries","mutation","element","useWindowResize","parsedData","_"],"mappings":"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"}