diff --git a/app/admin/static/admin.js b/app/admin/static/admin.js index cece628..c1647a7 100644 --- a/app/admin/static/admin.js +++ b/app/admin/static/admin.js @@ -1,14 +1,65 @@ const archiveButtons = document.getElementsByClassName('archive-button'); const activityButtons = document.getElementsByClassName('change-activity-btn'); -for(let i = 0; i < activityButtons.length; i++){ - activityButtons[i].addEventListener('change', e => { - console.log(e.target.checked, e.target.id) - }) + + + +function deactivateArchiveButtons(){ + for (let i = 0; i < archiveButtons.length; i++){ + archiveButtons[i].disabled=true; + } +} +function activateArchiveButtons(){ + for (let i = 0; i < archiveButtons.length; i++){ + archiveButtons[i].disabled=false; + } +} +function deactivateActiveStatusCheckboxes(){ + for (let i = 0; i < activityButtons.length; i++){ + activityButtons[i].disabled=true; + } +} +function activateActiveStatusCheckboxes(){ + for (let i = 0; i < activityButtons.length; i++){ + activityButtons[i].disabled=false; + } } -for(let i = 0; i < archiveButtons.length; i++){ - archiveButtons[i].addEventListener('click', e => { - console.log(e.target.id) - }) +async function updateActiveStatus(id, status) { + deactivateActiveStatusCheckboxes() + deactivateArchiveButtons() + var result = await fetch(`/campaigns/update_active_status/${id}/${status}`, {method:'PUT'}); + var data = await result.json(); + if (status === true){ + status = 'True' + } else { + status = 'False' + } + document.getElementById(`${id}-active-status`).innerText = status; + activateActiveStatusCheckboxes() + activateArchiveButtons() + } + +async function archiveCampaign(id){ + deactivateActiveStatusCheckboxes() + deactivateArchiveButtons() + var result = await fetch(`/campaigns/archive_campaign/${id}`, {method:'PUT'}); + var data = await result.json(); + document.getElementById(`${id}-row`).remove(); + activateActiveStatusCheckboxes() + activateArchiveButtons() +} + +document.addEventListener("DOMContentLoaded", (event) => { + for(let i = 0; i < activityButtons.length; i++){ + activityButtons[i].addEventListener('change', e => { + updateActiveStatus(parseInt(e.target.value), e.target.checked) + }) + } + for(let i = 0; i < archiveButtons.length; i++){ + archiveButtons[i].addEventListener('click', e => { + archiveCampaign(parseInt(e.target.value)) + }) + } + }); diff --git a/app/admin/templates/administration.html b/app/admin/templates/administration.html index 64ccbbe..9c4feb0 100644 --- a/app/admin/templates/administration.html +++ b/app/admin/templates/administration.html @@ -45,18 +45,26 @@
{% for campaign in campaigns %} -