97 lines
3.5 KiB
JavaScript

"use strict";
(function () {
let
control_addAdditionalPrincipalButton = document.getElementById("AddAdditionalPrincipalButton"),
control_additionalPrincipalsList = document.getElementById("AdditionalPrincipalsList"),
control_additionalPrincipalsValidation = document.getElementById("AdditionalPrincipalsValidation"),
control_addWitnessButton = document.getElementById("AddWitnessButton"),
control_currentUserEmail = document.getElementById("CurrentUserEmail"),
control_documentFile = document.getElementById("DocumentFile"),
control_isConfirmed = document.getElementById("IsConfirmed"),
control_newPrincipalEmail = document.getElementById("NewPrincipalEmail"),
control_newWitnessEmail = document.getElementById("NewWitnessEmail"),
control_participantItemTemplate = document.getElementById("ParticipantItemTemplate"),
control_participantsJson = document.getElementById("ParticipantsJson"),
control_uploadDocumentForm = document.getElementById("UploadDocumentForm"),
control_witnessesList = document.getElementById("WitnessesList"),
control_witnessesValidation = document.getElementById("WitnessesValidation");
let signatories = [];
function _addSignatory(control_email, signatoryType, control_signatoryList) {
let email = control_email.value;
if (!email) {
return "Email is required.";
}
if (control_currentUserEmail.value == email) {
return "Email must not be the same as the currently logged in user.";
}
if (signatories.find(x => x.email === email)) {
return "Email already exists.";
}
signatories.push({
email: email,
type: signatoryType
});
let liTemplate = control_participantItemTemplate.cloneNode(true);
let li = liTemplate.content;
li.querySelector(".participantitem__li").setAttribute("data-uid", "");
li.querySelector(".participantitem__email").textContent = email;
let deleteButton = li.querySelector(".participantitem__delete");
deleteButton.addEventListener("click", _deleteParticipant);
deleteButton.control_signatoryList = control_signatoryList;
control_signatoryList.appendChild(li);
control_email.value = "";
}
function _deleteParticipant(sender) {
let li = sender.target.closest("li");
let email = li.querySelector(".participantitem__email").textContent;
jfa.components.dialog.confirm({
message: "Are you sure you want to remove this participant?",
callbackyes: function () {
signatories = signatories.filter(m => m.email != email);
}
});
}
function _bindEvents() {
control_addAdditionalPrincipalButton.addEventListener("click", () => {
let err = _addSignatory(control_newPrincipalEmail, 'Principal', control_additionalPrincipalsList);
control_additionalPrincipalsValidation.textContent = err;
});
control_addWitnessButton.addEventListener("click", () => {
let err = _addSignatory(control_newWitnessEmail, 'Witness', control_witnessesList);
control_witnessesValidation.textContent = err;
});
control_uploadDocumentForm.addEventListener("submit", _onSubmitForm);
}
function _init() {
signatories = JSON.parse(control_participantsJson.value)?.map(p => ({
email: p.Email,
type: p.Type,
uid: p.UID
}));
_bindEvents();
}
function _onSubmitForm(event) {
control_participantsJson.value = JSON.stringify(signatories);
if (control_documentFile.files.length === 0 || !control_isConfirmed.checked) {
event.preventDefault();
return false;
}
return true;
}
_init();
})();