Skip to content

Commit 163beaf

Browse files
committed
Fixed indicator names popovers
1 parent 92fcbaa commit 163beaf

3 files changed

Lines changed: 32 additions & 1 deletion

File tree

src/assets/js/indicatorSetsTable.js

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,32 @@ var table = new DataTable("#indicatorSetsTable", {
143143
},
144144
});
145145

146+
function escapeAttr(str) {
147+
return String(str ?? "")
148+
.replace(/&/g, "&")
149+
.replace(/"/g, """)
150+
.replace(/'/g, "'")
151+
.replace(/</g, "&lt;")
152+
.replace(/>/g, "&gt;");
153+
}
154+
155+
function initIndicatorPopovers(childContainer) {
156+
if (!childContainer || typeof mdb === "undefined") {
157+
return;
158+
}
159+
$(childContainer).find("[data-mdb-popover-init]").each(function () {
160+
const existing = mdb.Popover.getInstance(this);
161+
if (existing) {
162+
existing.dispose();
163+
}
164+
new mdb.Popover(this, {
165+
container: "body",
166+
trigger: "hover",
167+
delay: { show: 0, hide: 100 },
168+
});
169+
});
170+
}
171+
146172
function format(indicatorSetId, relatedIndicators, indicatorSetDescription) {
147173
if (!relatedIndicators) {
148174
return '<div class="d-flex justify-content-start my-3" style="padding-left: 20px;"><div class="spinner-border text-primary" role="status"><span class="visually-hidden">Loading...</span></div></div>';
@@ -191,10 +217,11 @@ function format(indicatorSetId, relatedIndicators, indicatorSetDescription) {
191217
checkboxTitle =
192218
"Access to this data source is restricted. Contact delphi-support@andrew.cmu.edu for more information.";
193219
}
220+
194221
tableMarkup +=
195222
"<tr>" +
196223
`<td><input ${disabled} title="${checkboxTitle}" type="checkbox" name="selectedIndicator" onclick="addSelectedIndicator(this)" data-indicator-displayname='${indicator.display_name}' data-endpoint="${indicator.endpoint}" data-datasource="${indicator.source}" data-indicator="${indicator.name}" data-time-type="${indicator.time_type}" data-indicator-set="${indicator.indicator_set_name}" data-indicator-set-short-name="${indicator.indicator_set_short_name}" data-member-short-name="${indicator.member_short_name}" ${checked}></td>` +
197-
`<td>${indicator.display_name}</td>` +
224+
`<td><span tabindex="0" data-mdb-container="body" data-mdb-popover-init data-mdb-trigger="hover" data-mdb-placement="right" data-mdb-content="${escapeAttr(indicator.description)}">${indicator.display_name}</span></td>` +
198225
`<td>${indicator.member_name}</td>` +
199226
`<td>${indicator.member_description}</td>` +
200227
'<td style="width: 60%"></td>' +

src/indicatorsets/views.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ def get_related_indicators(queryset, indicator_set_ids: list):
7979
"time_type",
8080
"description",
8181
"member_description",
82+
"description",
8283
"indicator_set__dua_required",
8384
"source_type",
8485
)
@@ -122,6 +123,7 @@ def get_related_indicators(queryset, indicator_set_ids: list):
122123
"time_type": item["time_type"] if item["time_type"] else "",
123124
"description": item["description"] if item["description"] else "",
124125
"member_description": member_description,
126+
"description": item["description"] if item["description"] else "",
125127
"restricted": (
126128
item["indicator_set__dua_required"]
127129
if item["indicator_set__dua_required"]

src/templates/indicatorsets/indicatorSetsTable.html

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -379,6 +379,7 @@
379379
tr.data("description"),
380380
),
381381
).show();
382+
initIndicatorPopovers(row.child());
382383
}
383384
});
384385

@@ -401,6 +402,7 @@
401402
tr.data("description"),
402403
),
403404
).show();
405+
initIndicatorPopovers(this.child());
404406
}
405407
});
406408
}

0 commit comments

Comments
 (0)