diff --git a/cpone-dashboard/menu/result/query.go b/cpone-dashboard/menu/result/query.go index 1e0d37c..75a608c 100644 --- a/cpone-dashboard/menu/result/query.go +++ b/cpone-dashboard/menu/result/query.go @@ -14,6 +14,7 @@ type ResultRow struct { Tests string FileUrl string ReportDate string + ReportVersion string } type ResultSummary struct { @@ -49,7 +50,13 @@ func GetResultRows(mcuID int) ([]ResultRow, error) { AND p.Published_McuDasboardFileUrl != '' THEN COALESCE(CAST(p.Published_McuDasboardLastUpdated AS CHAR), '') ELSE '' - END AS report_date + END AS report_date, + CASE + WHEN p.Published_McuDasboardFileUrl IS NOT NULL + AND p.Published_McuDasboardFileUrl != '' + THEN COALESCE(CAST(UNIX_TIMESTAMP(p.Published_McuDasboardLastUpdated) AS CHAR), '') + ELSE '' + END AS report_version FROM mcu_patient mp LEFT JOIN published_mcu_dashboard_sync p ON p.Published_McuDasboardT_OrderHeaderID = mp.Mcu_PatientOrderID @@ -67,7 +74,7 @@ func GetResultRows(mcuID int) ([]ResultRow, error) { var result []ResultRow for rows.Next() { var r ResultRow - if err := rows.Scan(&r.NIP, &r.Name, &r.Posisi, &r.PacketCode, &r.PacketName, &r.Tests, &r.FileUrl, &r.ReportDate); err != nil { + if err := rows.Scan(&r.NIP, &r.Name, &r.Posisi, &r.PacketCode, &r.PacketName, &r.Tests, &r.FileUrl, &r.ReportDate, &r.ReportVersion); err != nil { continue } result = append(result, r) diff --git a/cpone-dashboard/templates/result/index.html b/cpone-dashboard/templates/result/index.html index 19c3edc..765cdc2 100644 --- a/cpone-dashboard/templates/result/index.html +++ b/cpone-dashboard/templates/result/index.html @@ -109,7 +109,7 @@ {{if .FileUrl}} - @@ -134,7 +134,7 @@ {{if .ReportDate}}

{{.ReportDate | fmtDate}}

{{end}} {{if .FileUrl}} - @@ -145,17 +145,39 @@ {{end}} -
+ + +
{{if .HasMore}}
- Memuat data berikutnya... + Load next data...
{{else}} -
Semua data sudah ditampilkan
+
All data is displayed
{{end}}
{{else}} @@ -202,11 +224,24 @@ function normalizePdfUrl(rawUrl) { } } -function openPDFModal(url, name) { - const safeUrl = normalizePdfUrl(url); - document.getElementById('pdf-modal-frame').src = safeUrl; +function buildPdfUrl(rawUrl, version) { + const safeUrl = normalizePdfUrl(rawUrl); + if (!version) return safeUrl; + try { + const u = new URL(safeUrl, window.location.origin); + u.searchParams.set('v', version); + return u.toString(); + } catch (_) { + const joiner = safeUrl.includes('?') ? '&' : '?'; + return safeUrl + joiner + 'v=' + encodeURIComponent(version); + } +} + +function openPDFModal(url, name, version) { + const finalUrl = buildPdfUrl(url, version); + document.getElementById('pdf-modal-frame').src = finalUrl; document.getElementById('pdf-modal-title').textContent = name; - document.getElementById('pdf-modal-link').href = safeUrl; + document.getElementById('pdf-modal-link').href = finalUrl; const modal = document.getElementById('pdf-modal'); modal.classList.remove('hidden'); modal.classList.add('flex'); @@ -240,7 +275,7 @@ document.addEventListener('keydown', function(e) { {{if .FileUrl}} - @@ -263,7 +298,7 @@ document.addEventListener('keydown', function(e) { {{if .ReportDate}}

{{.ReportDate | fmtDate}}

{{end}}
{{if .FileUrl}} - @@ -275,17 +310,17 @@ document.addEventListener('keydown', function(e) { {{end}} -
+
{{if .HasMore}}
- Memuat data berikutnya... + Load next data...
{{else}} -
Semua data sudah ditampilkan
+
All data is displayed
{{end}}
{{end}}