territories-dashboard-lib 0.1.33b1__py3-none-any.whl → 1.1.1.dev7__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- territories_dashboard_lib/geo_lib/admin.py +3 -1
- territories_dashboard_lib/geo_lib/migrations/0002_geoelement_linked_to_indicator.py +18 -0
- territories_dashboard_lib/geo_lib/migrations/0003_geofeature_color_column_geofeature_size_column.py +23 -0
- territories_dashboard_lib/geo_lib/models.py +17 -0
- territories_dashboard_lib/geo_lib/payloads.py +7 -21
- territories_dashboard_lib/geo_lib/views.py +58 -53
- territories_dashboard_lib/indicators_lib/enums.py +61 -37
- territories_dashboard_lib/indicators_lib/methodo_pdf.py +6 -1
- territories_dashboard_lib/indicators_lib/migrations/0004_alter_indicator_min_mesh.py +18 -0
- territories_dashboard_lib/indicators_lib/migrations/0005_auto_20251203_1621.py +124 -0
- territories_dashboard_lib/indicators_lib/models.py +7 -4
- territories_dashboard_lib/indicators_lib/payloads.py +14 -1
- territories_dashboard_lib/indicators_lib/query/commons.py +90 -104
- territories_dashboard_lib/indicators_lib/query/comparison.py +8 -3
- territories_dashboard_lib/indicators_lib/query/details.py +8 -13
- territories_dashboard_lib/indicators_lib/query/histogram.py +6 -1
- territories_dashboard_lib/indicators_lib/query/indicator_card.py +12 -7
- territories_dashboard_lib/indicators_lib/query/top_10.py +13 -12
- territories_dashboard_lib/indicators_lib/query/utils.py +9 -0
- territories_dashboard_lib/indicators_lib/table.py +15 -12
- territories_dashboard_lib/indicators_lib/views.py +49 -59
- territories_dashboard_lib/superset_lib/logic.py +24 -25
- territories_dashboard_lib/superset_lib/migrations/0002_alter_filter_mesh.py +18 -0
- territories_dashboard_lib/tracking_lib/enums.py +1 -0
- territories_dashboard_lib/tracking_lib/migrations/0005_alter_page_cmp_territory_mesh_alter_page_submesh_and_more.py +28 -0
- territories_dashboard_lib/tracking_lib/migrations/0006_alter_event_name.py +18 -0
- territories_dashboard_lib/tracking_lib/payloads.py +4 -2
- territories_dashboard_lib/tracking_lib/views.py +7 -6
- territories_dashboard_lib/website_lib/conf.py +28 -0
- territories_dashboard_lib/website_lib/context_processors.py +5 -6
- territories_dashboard_lib/website_lib/migrations/0005_mainconf_meshes.py +20 -0
- territories_dashboard_lib/website_lib/models.py +12 -0
- territories_dashboard_lib/website_lib/params.py +34 -22
- territories_dashboard_lib/website_lib/serializers.py +1 -0
- territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/pages/indicators/anchor.mjs +45 -0
- territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/pages/indicators/comparaison/page.mjs +5 -9
- territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/pages/indicators/details/histogram.mjs +4 -1
- territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/pages/indicators/details/page.mjs +2 -7
- territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/pages/indicators/details/proportions.mjs +3 -2
- territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/pages/indicators/details/top10.mjs +4 -2
- territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/pages/indicators/details/utils.mjs +14 -5
- territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/pages/indicators/dom.mjs +0 -15
- territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/pages/indicators/enums.mjs +13 -10
- territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/pages/indicators/side_panel.mjs +1 -15
- territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/pages/indicators/theme/page.mjs +5 -9
- territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/react/indicatorMap.bundle.js +1 -1
- territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/react/sankeyGraph.bundle.js +1 -1
- territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/react/vendors.bundle.js +1 -1
- territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/layout/base.css +12 -0
- territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/layout/header.html +1 -1
- territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/comparaison/[theme]/page.html +4 -3
- territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/components/anchor.html +14 -0
- territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/components/geo_params.html +3 -3
- territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/components/indicator-card.html +14 -8
- territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/components/select_territory.html +32 -0
- territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/components/side_panel_geo.html +8 -35
- territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/details/components/histogram.html +1 -0
- territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/details/components/no-data.html +1 -0
- territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/details/components/proportions.html +1 -0
- territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/details/components/top10.html +1 -0
- territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/details/map.css +3 -2
- territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/details/page.css +8 -0
- territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/details/page.html +9 -8
- territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/methodo/methodo.js +28 -0
- territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/methodo/page.html +40 -0
- territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/themes/page.html +4 -3
- territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/sitemap/page.html +9 -0
- territories_dashboard_lib/website_lib/templatetags/other_filters.py +6 -3
- territories_dashboard_lib/website_lib/views.py +100 -0
- {territories_dashboard_lib-0.1.33b1.dist-info → territories_dashboard_lib-1.1.1.dev7.dist-info}/METADATA +3 -3
- {territories_dashboard_lib-0.1.33b1.dist-info → territories_dashboard_lib-1.1.1.dev7.dist-info}/RECORD +74 -62
- territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/components/side_panel_methodo.css +0 -29
- territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/components/side_panel_methodo.html +0 -45
- territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/components/side_panel_methodo.js +0 -19
- {territories_dashboard_lib-0.1.33b1.dist-info → territories_dashboard_lib-1.1.1.dev7.dist-info}/WHEEL +0 -0
- {territories_dashboard_lib-0.1.33b1.dist-info → territories_dashboard_lib-1.1.1.dev7.dist-info}/licenses/licence.md +0 -0
- {territories_dashboard_lib-0.1.33b1.dist-info → territories_dashboard_lib-1.1.1.dev7.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
function enableAnchorLinks() {
|
|
2
|
+
document.querySelectorAll("button.anchor-link").forEach((button) => {
|
|
3
|
+
const describedBy = button.getAttribute("aria-describedby");
|
|
4
|
+
button.addEventListener("click", () => {
|
|
5
|
+
const anchor = button.dataset.anchor;
|
|
6
|
+
window.history.replaceState(undefined, undefined, "#" + anchor);
|
|
7
|
+
navigator.clipboard.writeText(window.location.href);
|
|
8
|
+
setTimeout(() => {
|
|
9
|
+
// to close the tooltip and not trigger it again when reloading the URL
|
|
10
|
+
button.parentElement.click();
|
|
11
|
+
}, 500);
|
|
12
|
+
});
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
function trackAnchorLinks() {
|
|
17
|
+
const buttons = document.querySelectorAll('button[data-track="true"]');
|
|
18
|
+
console.log("BUTTONS", buttons);
|
|
19
|
+
if (buttons.length === 0) return;
|
|
20
|
+
|
|
21
|
+
const observer = new IntersectionObserver((entries) => {
|
|
22
|
+
entries.forEach((entry) => {
|
|
23
|
+
if (entry.isIntersecting) {
|
|
24
|
+
fetch("/api/tracking/event/", {
|
|
25
|
+
method: "POST",
|
|
26
|
+
body: JSON.stringify({
|
|
27
|
+
indicator: entry.target.dataset.indicator,
|
|
28
|
+
event: "vue-resume-indicateur",
|
|
29
|
+
}),
|
|
30
|
+
});
|
|
31
|
+
observer.unobserve(entry.target);
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
window.addEventListener(
|
|
37
|
+
"scroll",
|
|
38
|
+
() => {
|
|
39
|
+
buttons.forEach((button) => observer.observe(button));
|
|
40
|
+
},
|
|
41
|
+
{ once: true }
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export { enableAnchorLinks, trackAnchorLinks };
|
|
@@ -2,10 +2,11 @@
|
|
|
2
2
|
import { callData, getSearchParams } from "./data.mjs";
|
|
3
3
|
import { delaySpinner, getClosestIndicator } from "../dom.mjs";
|
|
4
4
|
import { handleFilterClick, initializeFilters } from "../filters.mjs";
|
|
5
|
-
import { addSidePanelListener
|
|
5
|
+
import { addSidePanelListener } from "../side_panel.mjs";
|
|
6
6
|
|
|
7
7
|
import { exportImageAsync } from "../export-graph.mjs";
|
|
8
8
|
import { exportToCSV } from "../export.mjs";
|
|
9
|
+
import { enableAnchorLinks, trackAnchorLinks } from "../anchor.mjs";
|
|
9
10
|
|
|
10
11
|
Chart.register(
|
|
11
12
|
Chart.CategoryScale,
|
|
@@ -43,14 +44,6 @@ document.querySelectorAll(".indicator-card").forEach((indicatorCard) => {
|
|
|
43
44
|
callData(indicator);
|
|
44
45
|
});
|
|
45
46
|
});
|
|
46
|
-
|
|
47
|
-
indicatorCard
|
|
48
|
-
.querySelectorAll('button[aria-controls="slide-panel-methodo"]')
|
|
49
|
-
.forEach((button) => {
|
|
50
|
-
button.addEventListener("click", () => {
|
|
51
|
-
openMethodoSidePanel(indicator, button);
|
|
52
|
-
});
|
|
53
|
-
});
|
|
54
47
|
});
|
|
55
48
|
|
|
56
49
|
document
|
|
@@ -105,3 +98,6 @@ document.addEventListener("DOMContentLoaded", () => {
|
|
|
105
98
|
});
|
|
106
99
|
addSidePanelListener();
|
|
107
100
|
});
|
|
101
|
+
|
|
102
|
+
enableAnchorLinks();
|
|
103
|
+
trackAnchorLinks();
|
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
} from "../enums.mjs";
|
|
9
9
|
import { makeChart, setBackgroundInDatasets } from "../utils.mjs";
|
|
10
10
|
|
|
11
|
-
import { addEmptyGraphMessage } from "./utils.mjs";
|
|
11
|
+
import { addEmptyGraphMessage, removeEmptyGraphMessage } from "./utils.mjs";
|
|
12
12
|
import { formatIndicatorValue } from "../format.mjs";
|
|
13
13
|
|
|
14
14
|
function getDatalabels(dataset, mesh) {
|
|
@@ -94,9 +94,12 @@ export function makeHistogramChart(indicator) {
|
|
|
94
94
|
const { datasetsHistogramBarChart: dataset, deciles } = histogramData;
|
|
95
95
|
|
|
96
96
|
const ctx = document.getElementById("histogramChart");
|
|
97
|
+
|
|
97
98
|
if (Object.keys(dataset).length === 0) {
|
|
98
99
|
addEmptyGraphMessage(ctx);
|
|
99
100
|
return;
|
|
101
|
+
} else {
|
|
102
|
+
removeEmptyGraphMessage(ctx);
|
|
100
103
|
}
|
|
101
104
|
|
|
102
105
|
const labels = deciles.map((decile) => formatIndicatorValue(decile));
|
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
updateFiltersReminder,
|
|
8
8
|
updateUrlWithFilters,
|
|
9
9
|
} from "../filters.mjs";
|
|
10
|
-
import { addSidePanelListener
|
|
10
|
+
import { addSidePanelListener } from "../side_panel.mjs";
|
|
11
11
|
|
|
12
12
|
import { exportImageAsync } from "../export-graph.mjs";
|
|
13
13
|
import { exportToCSV } from "../export.mjs";
|
|
@@ -33,12 +33,7 @@ initializeFilters(indicator);
|
|
|
33
33
|
callData(indicator);
|
|
34
34
|
makeMap(indicator);
|
|
35
35
|
makeSankeyGraph(indicator);
|
|
36
|
-
|
|
37
|
-
'button[aria-controls="slide-panel-methodo"]'
|
|
38
|
-
);
|
|
39
|
-
openMethodoButton.addEventListener("click", () => {
|
|
40
|
-
openMethodoSidePanel(indicator, openMethodoButton);
|
|
41
|
-
});
|
|
36
|
+
|
|
42
37
|
document.querySelectorAll(".filter-tag").forEach((button) => {
|
|
43
38
|
button.addEventListener("click", async () => {
|
|
44
39
|
await handleFilterClick(indicator);
|
|
@@ -2,7 +2,7 @@ import { getIndicatorDataScript, getParams } from "../dom.mjs";
|
|
|
2
2
|
import { getToolTip, makeChart, setBackgroundInDatasets } from "../utils.mjs";
|
|
3
3
|
|
|
4
4
|
import { COLORS } from "../enums.mjs";
|
|
5
|
-
import { addEmptyGraphMessage } from "./utils.mjs";
|
|
5
|
+
import { addEmptyGraphMessage, removeEmptyGraphMessage } from "./utils.mjs";
|
|
6
6
|
import { formatIndicatorValue } from "../format.mjs";
|
|
7
7
|
|
|
8
8
|
function getPlugins(indicator, total) {
|
|
@@ -67,6 +67,8 @@ function makeProportionsChart(indicator) {
|
|
|
67
67
|
if (datasets.length === 0 || emptyDatasets) {
|
|
68
68
|
addEmptyGraphMessage(ctx);
|
|
69
69
|
return;
|
|
70
|
+
} else {
|
|
71
|
+
removeEmptyGraphMessage(ctx);
|
|
70
72
|
}
|
|
71
73
|
|
|
72
74
|
const total = datasets.map((d) => d.data[0]).reduce((a, b) => a + b, 0);
|
|
@@ -92,7 +94,6 @@ function makeProportionsChart(indicator) {
|
|
|
92
94
|
},
|
|
93
95
|
},
|
|
94
96
|
};
|
|
95
|
-
|
|
96
97
|
makeChart(ctx, "bar", data, options);
|
|
97
98
|
}
|
|
98
99
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { getToolTip, makeChart, setBackgroundInDatasets } from "../utils.mjs";
|
|
2
2
|
|
|
3
|
-
import { addEmptyGraphMessage } from "./utils.mjs";
|
|
3
|
+
import { addEmptyGraphMessage, removeEmptyGraphMessage } from "./utils.mjs";
|
|
4
4
|
import { formatIndicatorValue } from "../format.mjs";
|
|
5
5
|
import { getIndicatorDataScript } from "../dom.mjs";
|
|
6
6
|
|
|
@@ -40,9 +40,11 @@ function makeTop10Chart(indicator) {
|
|
|
40
40
|
datasets,
|
|
41
41
|
};
|
|
42
42
|
|
|
43
|
-
if (data.labels.length === 0) {
|
|
43
|
+
if (data.labels.length === 0 || datasets.length === 0) {
|
|
44
44
|
addEmptyGraphMessage(ctx);
|
|
45
45
|
return;
|
|
46
|
+
} else {
|
|
47
|
+
removeEmptyGraphMessage(ctx);
|
|
46
48
|
}
|
|
47
49
|
|
|
48
50
|
const options = {
|
|
@@ -1,8 +1,17 @@
|
|
|
1
1
|
function addEmptyGraphMessage(ctx) {
|
|
2
|
-
const
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
const oldChart = Chart.getChart(ctx);
|
|
3
|
+
if (oldChart) {
|
|
4
|
+
oldChart.destroy();
|
|
5
|
+
}
|
|
6
|
+
const noMessageDiv =
|
|
7
|
+
ctx.parentElement.parentElement.querySelector(".no-data-message");
|
|
8
|
+
if (noMessageDiv) noMessageDiv.dataset.show = "true";
|
|
6
9
|
}
|
|
7
10
|
|
|
8
|
-
|
|
11
|
+
function removeEmptyGraphMessage(ctx) {
|
|
12
|
+
const noMessageDiv =
|
|
13
|
+
ctx.parentElement.parentElement.querySelector(".no-data-message");
|
|
14
|
+
if (noMessageDiv) noMessageDiv.dataset.show = "false";
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export { addEmptyGraphMessage, removeEmptyGraphMessage };
|
|
@@ -1,17 +1,3 @@
|
|
|
1
|
-
function fillMethodoSidePanel(indicator) {
|
|
2
|
-
const container = document.getElementById(
|
|
3
|
-
"slide-panel-content-methodo-markdown"
|
|
4
|
-
);
|
|
5
|
-
container.innerHTML = indicator.methodo_html;
|
|
6
|
-
const exportButton = document.getElementById("methodo-export-button");
|
|
7
|
-
exportButton.dataset.indicatorName = indicator.name;
|
|
8
|
-
exportButton.dataset.indicatorTitle = indicator.title;
|
|
9
|
-
document.getElementById("slide-panel-methodo-indicator-title").textContent =
|
|
10
|
-
indicator.title;
|
|
11
|
-
document.getElementById("slide-panel-methodo-theme-title").textContent =
|
|
12
|
-
indicator.theme;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
1
|
function getClosestIndicator(element) {
|
|
16
2
|
const indicatorId = element.closest(".indicator-card").dataset.indicator;
|
|
17
3
|
return JSON.parse(document.getElementById(indicatorId).textContent);
|
|
@@ -81,7 +67,6 @@ function delaySpinner() {
|
|
|
81
67
|
export {
|
|
82
68
|
delaySpinner,
|
|
83
69
|
getClosestIndicator,
|
|
84
|
-
fillMethodoSidePanel,
|
|
85
70
|
makeIndicatorDataScript,
|
|
86
71
|
getIndicatorDataScript,
|
|
87
72
|
getIsAlternativeUnit,
|
|
@@ -2,11 +2,12 @@ const THOUSANDS = "k";
|
|
|
2
2
|
const MILLIONS = "M";
|
|
3
3
|
|
|
4
4
|
const MeshLevel = {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
5
|
+
fr: "fr",
|
|
6
|
+
reg: "reg",
|
|
7
|
+
dep: "dep",
|
|
8
|
+
epci: "epci",
|
|
9
|
+
com: "com",
|
|
10
|
+
aom: "aom",
|
|
10
11
|
};
|
|
11
12
|
|
|
12
13
|
const COLORS = {
|
|
@@ -76,16 +77,18 @@ const PATTERNS = [
|
|
|
76
77
|
|
|
77
78
|
function getMeshLevelTitle(meshLevel) {
|
|
78
79
|
switch (meshLevel) {
|
|
79
|
-
case MeshLevel.
|
|
80
|
+
case MeshLevel.reg:
|
|
80
81
|
return "Région";
|
|
81
|
-
case MeshLevel.
|
|
82
|
+
case MeshLevel.dep:
|
|
82
83
|
return "Département";
|
|
83
|
-
case MeshLevel.
|
|
84
|
+
case MeshLevel.epci:
|
|
84
85
|
return "Intercommunalité";
|
|
85
|
-
case MeshLevel.
|
|
86
|
+
case MeshLevel.com:
|
|
86
87
|
return "Commune";
|
|
87
|
-
case MeshLevel.
|
|
88
|
+
case MeshLevel.fr:
|
|
88
89
|
return "France entière";
|
|
90
|
+
case MeshLevel.aom:
|
|
91
|
+
return "AOM";
|
|
89
92
|
}
|
|
90
93
|
}
|
|
91
94
|
|
|
@@ -1,22 +1,13 @@
|
|
|
1
|
-
import { fillMethodoSidePanel } from "./dom.mjs";
|
|
2
|
-
|
|
3
1
|
let buttonWhichOpenedPanel = null;
|
|
4
2
|
|
|
5
3
|
function closeSidePanel() {
|
|
6
4
|
const sidePanelGeo = document.getElementById("slide-panel-geo");
|
|
7
|
-
const sidePanelMethodo = document.getElementById("slide-panel-methodo");
|
|
8
5
|
sidePanelGeo.classList.remove("tdbmd-slide-panel--show");
|
|
9
|
-
sidePanelMethodo.classList.remove("tdbmd-slide-panel--show");
|
|
10
6
|
if (sidePanelGeo.style.display === "block") {
|
|
11
7
|
setTimeout(() => {
|
|
12
8
|
sidePanelGeo.style.display = "none";
|
|
13
9
|
}, 500);
|
|
14
10
|
}
|
|
15
|
-
if (sidePanelMethodo.style.display === "block") {
|
|
16
|
-
setTimeout(() => {
|
|
17
|
-
sidePanelMethodo.style.display = "none";
|
|
18
|
-
}, 500);
|
|
19
|
-
}
|
|
20
11
|
document.querySelectorAll(".validate-territory-btn").forEach((btn) => {
|
|
21
12
|
delete btn.dataset.comparison;
|
|
22
13
|
});
|
|
@@ -73,11 +64,6 @@ function releaseFocusTrap() {
|
|
|
73
64
|
document.removeEventListener("keydown", focusTrapListener);
|
|
74
65
|
}
|
|
75
66
|
|
|
76
|
-
function openMethodoSidePanel(indicator, button) {
|
|
77
|
-
fillMethodoSidePanel(indicator);
|
|
78
|
-
openSidePanel(button, "methodo");
|
|
79
|
-
}
|
|
80
|
-
|
|
81
67
|
function addSidePanelListener() {
|
|
82
68
|
const button = document.querySelector(
|
|
83
69
|
'button[aria-controls="slide-panel-geo"][data-comparison="false"]'
|
|
@@ -100,4 +86,4 @@ function addSidePanelListener() {
|
|
|
100
86
|
});
|
|
101
87
|
}
|
|
102
88
|
|
|
103
|
-
export {
|
|
89
|
+
export { addSidePanelListener };
|
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
handleFilterClick,
|
|
14
14
|
initializeFilters,
|
|
15
15
|
} from "../filters.mjs";
|
|
16
|
-
import { addSidePanelListener
|
|
16
|
+
import { addSidePanelListener } from "../side_panel.mjs";
|
|
17
17
|
|
|
18
18
|
import { exportImageAsync } from "../export-graph.mjs";
|
|
19
19
|
import { exportToCSV } from "../export.mjs";
|
|
@@ -21,6 +21,7 @@ import { exportToCSV } from "../export.mjs";
|
|
|
21
21
|
import { updateHistoryDOM } from "./history.mjs";
|
|
22
22
|
import { updateMainValueDOM } from "./main-value.mjs";
|
|
23
23
|
import { updateStatisticsDOM } from "./statistics.mjs";
|
|
24
|
+
import { enableAnchorLinks, trackAnchorLinks } from "../anchor.mjs";
|
|
24
25
|
|
|
25
26
|
Chart.register(
|
|
26
27
|
Chart.CategoryScale,
|
|
@@ -117,14 +118,6 @@ document.querySelectorAll(".indicator-card").forEach((indicatorCard) => {
|
|
|
117
118
|
toggleIndicatorUnit(event.target);
|
|
118
119
|
});
|
|
119
120
|
});
|
|
120
|
-
|
|
121
|
-
indicatorCard
|
|
122
|
-
.querySelectorAll('button[aria-controls="slide-panel-methodo"]')
|
|
123
|
-
.forEach((button) => {
|
|
124
|
-
button.addEventListener("click", () => {
|
|
125
|
-
openMethodoSidePanel(indicator, button);
|
|
126
|
-
});
|
|
127
|
-
});
|
|
128
121
|
});
|
|
129
122
|
|
|
130
123
|
document.addEventListener("DOMContentLoaded", () => {
|
|
@@ -162,3 +155,6 @@ document
|
|
|
162
155
|
button.removeAttribute("disabled");
|
|
163
156
|
});
|
|
164
157
|
});
|
|
158
|
+
|
|
159
|
+
enableAnchorLinks();
|
|
160
|
+
trackAnchorLinks();
|