update active status and archive - api calls
This commit is contained in:
parent
460a9a06cd
commit
b225349931
3 changed files with 98 additions and 21 deletions
|
|
@ -1,14 +1,65 @@
|
||||||
const archiveButtons = document.getElementsByClassName('archive-button');
|
const archiveButtons = document.getElementsByClassName('archive-button');
|
||||||
const activityButtons = document.getElementsByClassName('change-activity-btn');
|
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++){
|
async function updateActiveStatus(id, status) {
|
||||||
archiveButtons[i].addEventListener('click', e => {
|
deactivateActiveStatusCheckboxes()
|
||||||
console.log(e.target.id)
|
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))
|
||||||
|
})
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
|
||||||
|
|
@ -45,18 +45,26 @@
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
{% for campaign in campaigns %}
|
{% for campaign in campaigns %}
|
||||||
<tr>
|
<tr id="{{campaign.id}}-row" >
|
||||||
<td>{{campaign.id}}</td>
|
<td>{{campaign.id}}</td>
|
||||||
<td>{{campaign.title}}</td>
|
<td>{{campaign.title}}</td>
|
||||||
<td>{{campaign.active}}</td>
|
<td id="{{campaign.id}}-active-status">{{campaign.active}}</td>
|
||||||
<td>
|
<td>
|
||||||
<label class="switch">
|
<label class="switch">
|
||||||
<input type="checkbox" id="{{campaign.id}}" class="change-activity-btn" {%if campaign.active%}checked{%endif%}>
|
<input
|
||||||
<span class="slider round"></span>
|
type="checkbox"
|
||||||
</label>
|
value="{{campaign.id}}"
|
||||||
</td>
|
id="active-checkbox-{{campaign.id}}"
|
||||||
<td><button id="{{campaign.id}}" class="archive-button btn btn-primary">Click to archive</button></td>
|
class="change-activity-btn"
|
||||||
</tr>
|
{%if campaign.active%}checked{%endif%}>
|
||||||
|
<span class="slider round"></span>
|
||||||
|
</label>
|
||||||
|
</td>
|
||||||
|
<td><button
|
||||||
|
id="archive-button-{{campaign.id}}"
|
||||||
|
value="{{campaign.id}}"
|
||||||
|
class="archive-button btn btn-primary">Click to archive</button></td>
|
||||||
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ from flask_login import login_required, login_user, current_user, logout_user
|
||||||
from werkzeug.security import check_password_hash, generate_password_hash
|
from werkzeug.security import check_password_hash, generate_password_hash
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
import os
|
import os
|
||||||
|
from time import sleep
|
||||||
|
|
||||||
@campaigns.route('add_campaign')
|
@campaigns.route('add_campaign')
|
||||||
def add_campaign():
|
def add_campaign():
|
||||||
|
|
@ -17,4 +18,21 @@ def add_campaign():
|
||||||
def campaign_page(campaign_id):
|
def campaign_page(campaign_id):
|
||||||
campaign = Campaign.query.filter_by(id=campaign_id).first()
|
campaign = Campaign.query.filter_by(id=campaign_id).first()
|
||||||
return render_template('campaign_page.html',
|
return render_template('campaign_page.html',
|
||||||
campaign=campaign)
|
campaign=campaign)
|
||||||
|
|
||||||
|
@campaigns.route('update_active_status/<id>/<status>', methods=['PUT'])
|
||||||
|
def update_active_status(id, status):
|
||||||
|
if status == 'true':
|
||||||
|
status = True
|
||||||
|
else:
|
||||||
|
status = False
|
||||||
|
Campaign.query.filter_by(id=id).update({'active':status})
|
||||||
|
db.session.commit()
|
||||||
|
sleep(1)
|
||||||
|
return {'status':'success'}
|
||||||
|
|
||||||
|
@campaigns.route('archive_campaign/<id>', methods=['PUT'])
|
||||||
|
def archive_campaign(id):
|
||||||
|
Campaign.query.filter_by(id=id).update({'archived': True, 'active':False})
|
||||||
|
db.session.commit()
|
||||||
|
return {'status':'success'}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue