Files
MIND/frontend/static/js/show.js
2025-05-17 20:01:19 +02:00

136 lines
4.6 KiB
JavaScript

function showAdd(type) {
const default_service = getLocalStorage('default_service')['default_service'];
inputs.enabled.checked = true;
inputs.template.value = '0';
inputs.title.value = '';
inputs.text.value = '';
inputs.time.value = '';
inputs.notification_service.querySelectorAll('input[type="checkbox"]')
.forEach(c => c.checked = false);
inputs.notification_service.querySelector(
`input[type="checkbox"][data-id="${default_service}"]`
).checked = true;
document.querySelectorAll('.weekday-bar > input[type="checkbox"]')
.forEach(el => el.checked = false);
toggleNormal();
selectColor(colors[0]);
inputs.color_toggle.checked = false;
document.getElementById('test-reminder').classList.remove('show-sent');
const cl = document.getElementById('info').classList;
cl.forEach(c => {
if (infoClasses.includes(c)) cl.remove(c)
});
document.querySelector('.options > button[type="submit"]').innerText = 'Add';
document.querySelector('#test-reminder > div:first-child').innerText = 'Test';
const title = document.querySelector('#info h2');
if (type === reminderTypes.reminder) {
cl.add('show-add-reminder');
title.innerText = 'Add a reminder';
inputs.time.setAttribute('required', '');
} else if (type === reminderTypes.template) {
cl.add('show-add-template');
title.innerText = 'Add a template';
inputs.time.removeAttribute('required');
} else if (type === reminderTypes.static_reminder) {
cl.add('show-add-static-reminder');
title.innerText = 'Add a static reminder';
inputs.time.removeAttribute('required');
} else
return;
showWindow('info');
};
function showEdit(id, type) {
let url;
if (type === reminderTypes.reminder) {
url = `${urlPrefix}/api/reminders/${id}?api_key=${apiKey}`;
inputs.time.setAttribute('required', '');
} else if (type === reminderTypes.template) {
url = `${urlPrefix}/api/templates/${id}?api_key=${apiKey}`;
inputs.time.removeAttribute('required');
type_buttons.repeat_interval.removeAttribute('required');
} else if (type === reminderTypes.static_reminder) {
url = `${urlPrefix}/api/staticreminders/${id}?api_key=${apiKey}`;
document.getElementById('test-reminder').classList.remove('show-sent');
inputs.time.removeAttribute('required');
type_buttons.repeat_interval.removeAttribute('required');
} else return;
fetch(url)
.then(response => {
if (!response.ok) return Promise.reject(response.status);
return response.json();
})
.then(json => {
document.getElementById('info').dataset.id = id;
inputs.color_toggle.checked = false;
selectColor(json.result.color || colors[0]);
inputs.title.value = json.result.title;
if (type === reminderTypes.reminder) {
inputs.enabled.checked = json.result.enabled;
var trigger_date = new Date(
(json.result.time
+ new Date(json.result.time * 1000).getTimezoneOffset()
* -60
) * 1000
);
inputs.time.value =
trigger_date.toLocaleString('en-CA').slice(0,10)
+ 'T'
+ trigger_date.toTimeString().slice(0,5);
};
inputs.notification_service.querySelectorAll('input[type="checkbox"]').forEach(
c => c.checked = json.result.notification_services.includes(parseInt(c.dataset.id))
);
if (type == reminderTypes.reminder) {
if (json.result.repeat_interval !== null) {
toggleRepeated();
type_buttons.repeat_interval.value = json.result.repeat_interval;
type_buttons.repeat_quantity.value = json.result.repeat_quantity;
}
else if (json.result.weekdays !== null) {
toggleWeekDay();
[...document.querySelectorAll('.weekday-bar > input[type="checkbox"]')]
.map((el, index) => [el, index])
.forEach(el => el[0].checked = json.result.weekdays.includes(el[1]))
} else
toggleNormal();
};
inputs.text.value = json.result.text;
showWindow('info');
})
.catch(e => {
if (e === 401)
window.location.href = `${urlPrefix}/`;
else
console.log(e);
});
const cl = document.getElementById('info').classList;
cl.forEach(c => {
if (infoClasses.includes(c)) cl.remove(c)
});
document.querySelector('.options > button[type="submit"]').innerText = 'Save';
const title = document.querySelector('#info h2');
const test_text = document.querySelector('#test-reminder > div:first-child');
if (type === reminderTypes.reminder) {
cl.add('show-edit-reminder');
title.innerText = 'Edit a reminder';
test_text.innerText = 'Test';
} else if (type === reminderTypes.template) {
cl.add('show-edit-template');
title.innerText = 'Edit a template';
test_text.innerText = 'Test';
} else if (type === reminderTypes.static_reminder) {
cl.add('show-edit-static-reminder');
title.innerText = 'Edit a static reminder';
test_text.innerText = 'Trigger';
} else
return;
};