Skip to content

Commit 05d7301

Browse files
committed
updating details, status display/update logic
1 parent 8c75f96 commit 05d7301

File tree

9 files changed

+244
-374
lines changed

9 files changed

+244
-374
lines changed

gateway/sds_gateway/static/js/actions/DetailsActionManager.js

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -181,11 +181,9 @@ class DetailsActionManager {
181181
".dataset-details-description",
182182
datasetData.description || "No description provided",
183183
);
184-
this.updateElementText(
185-
modal,
186-
".dataset-details-status",
187-
datasetData.status || "Unknown",
188-
);
184+
// Update status as badge
185+
this.updateStatusBadge(modal, datasetData.status);
186+
189187
this.updateElementText(
190188
modal,
191189
".dataset-details-created",
@@ -306,6 +304,20 @@ class DetailsActionManager {
306304
}
307305
}
308306

307+
/**
308+
* Update status badge
309+
* @param {Element} modal - Modal element
310+
* @param {string} status - Status value ('draft' or 'final')
311+
*/
312+
updateStatusBadge(modal, status) {
313+
const statusContainer = modal.querySelector(".dataset-details-status");
314+
const statusText = status[0].toUpperCase() + status.slice(1);
315+
const statusClass = status === "final" ? "success" : "secondary";
316+
if (statusContainer) {
317+
statusContainer.innerHTML = `<span class="badge bg-${statusClass}">${statusText}</span>`;
318+
}
319+
}
320+
309321
/**
310322
* Set up UUID copy button functionality
311323
* @param {Element} modal - Modal element

gateway/sds_gateway/static/js/actions/PublishActionManager.js

Lines changed: 38 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,13 @@ class PublishActionManager {
1717
*/
1818
initializeEventListeners() {
1919
// Find all publish modals
20-
const publishModals = document.querySelectorAll('[id^="publish-dataset-modal-"]');
20+
const publishModals = document.querySelectorAll(
21+
'[id^="publish-dataset-modal-"]',
22+
);
2123

22-
publishModals.forEach((modal) => {
24+
for (const modal of publishModals) {
2325
const datasetUuid = modal.getAttribute("data-dataset-uuid");
24-
if (!datasetUuid) return;
26+
if (!datasetUuid) continue;
2527

2628
// Explicitly initialize Bootstrap modal to avoid auto-initialization issues
2729
if (window.bootstrap && !bootstrap.Modal.getInstance(modal)) {
@@ -71,7 +73,6 @@ class PublishActionManager {
7173
publishToggle,
7274
visibilitySection,
7375
statusBadge,
74-
datasetUuid,
7576
);
7677
});
7778
}
@@ -96,15 +97,21 @@ class PublishActionManager {
9697
// Handle publish button click
9798
if (publishBtn) {
9899
publishBtn.addEventListener("click", () => {
99-
this.handlePublish(datasetUuid, publishToggle, privateOption, publicOption);
100+
this.handlePublish(
101+
datasetUuid,
102+
statusBadge,
103+
publishToggle,
104+
privateOption,
105+
publicOption,
106+
);
100107
});
101108
}
102-
});
109+
}
103110

104111
// Handle publish button clicks in dropdown (open modal)
105-
document.querySelectorAll(".publish-dataset-btn").forEach((btn) => {
112+
for (const btn of document.querySelectorAll(".publish-dataset-btn")) {
106113
const datasetUuid = btn.getAttribute("data-dataset-uuid");
107-
if (!datasetUuid) return;
114+
if (!datasetUuid) continue;
108115

109116
// Only attach handler if modal exists
110117
const modalId = `publish-dataset-modal-${datasetUuid}`;
@@ -115,15 +122,15 @@ class PublishActionManager {
115122
);
116123
btn.disabled = true;
117124
btn.classList.add("disabled");
118-
return;
125+
continue;
119126
}
120127

121128
btn.addEventListener("click", (e) => {
122129
e.preventDefault();
123130
e.stopPropagation();
124131
this.openPublishModal(datasetUuid);
125132
});
126-
});
133+
}
127134
}
128135

129136
/**
@@ -170,7 +177,7 @@ class PublishActionManager {
170177
* @param {HTMLElement} statusBadge - The status badge element
171178
* @param {string} datasetUuid - Dataset UUID
172179
*/
173-
handlePublishToggleChange(publishToggle, visibilitySection, statusBadge, datasetUuid) {
180+
handlePublishToggleChange(publishToggle, visibilitySection, statusBadge) {
174181
if (publishToggle.checked) {
175182
// Publishing - set status to final and show visibility options
176183
if (statusBadge) {
@@ -195,25 +202,32 @@ class PublishActionManager {
195202
/**
196203
* Handle publish button click
197204
* @param {string} datasetUuid - Dataset UUID
205+
* @param {HTMLElement} statusBadge - The status badge element
198206
* @param {HTMLElement} publishToggle - The publish toggle checkbox
199207
* @param {HTMLElement} privateOption - The private option radio button
200208
* @param {HTMLElement} publicOption - The public option radio button
201209
*/
202-
async handlePublish(datasetUuid, publishToggle, privateOption, publicOption) {
210+
async handlePublish(
211+
datasetUuid,
212+
statusBadge,
213+
publishToggle,
214+
privateOption,
215+
publicOption,
216+
) {
203217
if (!window.APIClient) {
204218
console.error("APIClient not available");
205219
return;
206220
}
207221

208222
try {
209-
// Get current values
210-
const status = publishToggle && publishToggle.checked ? "final" : "draft";
211-
const isPublic =
212-
publicOption && publicOption.checked
213-
? "true"
214-
: privateOption && privateOption.checked
215-
? "false"
216-
: "false";
223+
const status = publishToggle?.checked
224+
? "final"
225+
: statusBadge?.textContent?.toLowerCase() || "draft";
226+
const isPublic = publicOption?.checked
227+
? "true"
228+
: privateOption?.checked
229+
? "false"
230+
: "false";
217231

218232
// Prepare data
219233
const data = {
@@ -243,7 +257,9 @@ class PublishActionManager {
243257
);
244258

245259
// Close modal
246-
const modal = document.getElementById(`publish-dataset-modal-${datasetUuid}`);
260+
const modal = document.getElementById(
261+
`publish-dataset-modal-${datasetUuid}`,
262+
);
247263
if (modal) {
248264
const bsModal = bootstrap.Modal.getInstance(modal);
249265
if (bsModal) {
@@ -392,4 +408,4 @@ class PublishActionManager {
392408
alert(message);
393409
}
394410
}
395-
}
411+
}

gateway/sds_gateway/static/js/dataset/DatasetEditingHandler.js

Lines changed: 0 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1240,31 +1240,6 @@ class DatasetEditingHandler {
12401240
window.DOMUtils.hide(addAuthorBtn);
12411241
}
12421242
}
1243-
1244-
// Disable author inputs if dataset is final
1245-
if (window.datasetModeManager?.isExistingFinalDataset()) {
1246-
const authorInputs = authorsList.querySelectorAll(
1247-
".author-name-input, .author-orcid-input",
1248-
);
1249-
for (const input of authorInputs) {
1250-
input.disabled = true;
1251-
input.setAttribute("readonly", "readonly");
1252-
input.classList.add("form-control-plaintext");
1253-
}
1254-
// Also disable remove buttons for authors
1255-
const removeButtons = authorsList.querySelectorAll(
1256-
".remove-author, .cancel-remove-author",
1257-
);
1258-
for (const button of removeButtons) {
1259-
button.disabled = true;
1260-
button.classList.add("disabled-element");
1261-
}
1262-
// Disable add button if not already disabled
1263-
if (addAuthorBtn) {
1264-
addAuthorBtn.disabled = true;
1265-
addAuthorBtn.classList.add("disabled");
1266-
}
1267-
}
12681243
};
12691244

12701245
/**

0 commit comments

Comments
 (0)