- function createTableRowForAffiliateUserIndex(affiliateUserIndex) { var affiliateUser = getAffiliateUserAtIndex(affiliateUserIndex); var actionsDiv = document.createElement("div"); var actionEdit = document.createElement("button"); actionEdit.className = "w3-button w3-green w3-border w3-tiny"; actionEdit.textContent = "Edit"; actionEdit.index = affiliateUserIndex; actionEdit.onclick = function(event) { var button = event.target; var affiliateUser = getAffiliateUserAtIndex(button.index); if (affiliateUser) showEditAffiliateUserModal(_affiliateUsersUser,affiliateUser,function() { var title = "Edit Affiliate User"; var message = "The affiliate user has been changed"; showMessageModal(title, message); }); }; actionsDiv.appendChild(actionEdit); if (affiliateUser.enabled) { var actionDisable = document.createElement("button"); actionDisable.className = "w3-button w3-green w3-border w3-tiny"; actionDisable.textContent = "Disable"; actionDisable.index = affiliateUserIndex; actionDisable.onclick = function(event) { event.stopPropagation() var button = event.target; var affiliateUser = getAffiliateUserAtIndex(button.index); if (affiliateUser) showQuestionModal("Disable "+affiliateUser.name,"Do you want to disable Affiliate User "+affiliateUser.email+"?",function() { requestAffiliateUsersDisable([affiliateUser.id]); }); }; actionsDiv.appendChild(actionDisable); } else { var actionEnable = document.createElement("button"); actionEnable.className = "w3-button w3-green w3-border w3-tiny"; actionEnable.textContent = "Enable"; actionEnable.index = affiliateUserIndex; actionEnable.onclick = function(event) { event.stopPropagation() var button = event.target; var affiliateUser = getAffiliateUserAtIndex(button.index); if (affiliateUser) showQuestionModal("Enable "+affiliateUser.name,"Do you want to enable Affiliate User "+affiliateUser.email+"?",function() { requestAffiliateUsersEnable([affiliateUser.id]); }); }; actionsDiv.appendChild(actionEnable); } var columns = [ [ createSpan(affiliateUser.affiliate_name?affiliateUser.affiliate_name:"") ], [ createSpan(affiliateUser.email) ], [ actionsDiv ] ]; var titles = null; var rowClassName = null; if (!affiliateUser.enabled) rowClassName = "w3-grey"; tableRow = createTableRow(columns,titles,rowClassName); tableRow.index = affiliateUserIndex; return(tableRow); } function updateAffiliateUser(newAffiliateUser) { for (indexOldAffiliateUser in _affiliateUsers) { var oldAffiliateUser = getAffiliateUserAtIndex(indexOldAffiliateUser); if (oldAffiliateUser.id == newAffiliateUser.id) { _affiliateUsers[indexOldAffiliateUser] = newAffiliateUser; var table = document.querySelector("#affiliate-users-table"); var tr = table.getElementsByTagName("tr"); for (var i = 1; i < tr.length; i++) { if (tr[i].index == indexOldAffiliateUser) { tr[i].replaceWith(createTableRowForAffiliateUserIndex(indexOldAffiliateUser)); break; } } break; } } } function tableFilter() { var input = document.querySelector("#affiliate-users-table-filter-input"); var checkboxHideDisabled = document.querySelector("#affiliate-users-table-filter-hide-disabled"); var filter = input.value.toUpperCase(); var hideDisabled = checkboxHideDisabled.checked; var table = document.querySelector("#affiliate-users-table"); var tr = table.getElementsByTagName("tr"); for (var i = 1; i < tr.length; i++) { var tdEmail = tr[i].getElementsByTagName("td")[0]; var enabled = !tr[i].classList.contains("w3-grey"); var match = enabled || !hideDisabled; if (match && (filter != "")) { if (tdEmail) { var txtValue = tdEmail.textContent || tdName.innerText; match = (txtValue.toUpperCase().indexOf(filter) > -1); } } tr[i].style.display = match ? "" : "none"; } } fetchButton.addEventListener("click", (e) => { fetchContents(); }); function requestAffiliateUsersEnable(affiliateUserIds) { API.call('enable-affiliate-users',{affiliateUserIds: affiliateUserIds.join(',')},true) .then(function(data) { if (data.affiliateUsers) { for (indexAffiliateUser in data.affiliateUsers) { updateAffiliateUser(data.affiliateUsers[indexAffiliateUser]); } } showMessageModal("Enable", "Affiliate User Enable Success"); tableFilter(); }) .catch(error => { if (error instanceof AuthError) { logout(error.message); } else { showMessageModal("Affiliate User Enable Error", error.message); } }); } function requestAffiliateUsersDisable(affiliateUserIds) { API.call('disable-affiliate-users',{affiliateUserIds: affiliateUserIds.join(',')},true) .then(function(data) { if (data.affiliateUsers) { for (indexAffiliateUser in data.affiliateUsers) { updateAffiliateUser(data.affiliateUsers[indexAffiliateUser]); } } showMessageModal("Enable", "Affiliate User Disable Success"); tableFilter(); }) .catch(error => { if (error instanceof AuthError) { logout(error.message); } else { showMessageModal("Affiliate User Disable Error", error.message); } }); } var editAffiliateUserModal = document.querySelector("#edit-affiliate-user-modal"); var editAffiliateUserForm = document.querySelector("#edit-affiliate-user-form"); var editAffiliateUserTitle = document.querySelector("#edit-affiliate-user-title"); var editAffiliateUserAffiliate = document.querySelector("#edit-affiliate-user-affiliate"); var editAffiliateUserEmail = document.querySelector("#edit-affiliate-user-email"); var editAffiliateUserPassword = document.querySelector("#edit-affiliate-user-password"); var editAffiliateUserEnable = document.querySelector("#edit-affiliate-user-enable"); var editAffiliateUserSubmitButton = document.querySelector("#edit-affiliate-user-submit-button"); var editAffiliateUserError = document.querySelector("#edit-affiliate-user-error"); var _editAffiliateUserUser = null; var _editAffiliateUser = null; var _editAffiliateUserOnChangedCallBack = null; function showEditAffiliateUserModal(user,affiliateUser,onChangedCallback) { document.addEventListener("keydown",keydownListenerEditAffiliateUserModal); _editAffiliateUserUser = user; _editAffiliateUserOnChangedCallBack = onChangedCallback; var initAffiliateUser = affiliateUser; if (!initAffiliateUser) { initAffiliateUser = { id: 0, affiliate_id: "", email: "", password: "", enabled: false, rights: {} }; editAffiliateUserTitle.textContent = "New Affiliate User"; } else { if (!initAffiliateUser.affiliate_id) initAffiliateUser.affiliate_id = ""; initAffiliateUser.password = ""; editAffiliateUserTitle.textContent = "Edit Affiliate User"; } _editAffiliateUser = initAffiliateUser; setEditAffiliateUserValues(initAffiliateUser); editAffiliateUserModal.style.display = "block"; } function setEditAffiliateUserValues(affiliateUser) { clearChildren(editAffiliateUserAffiliate); var count = 0; var option = document.createElement("option"); option.value = ""; option.textContent = ""; editAffiliateUserAffiliate.appendChild(option); editAffiliateUserAffiliate.selectedIndex = count++; for (index in _affiliates) { var itAffiliate = _affiliates[index]; var option = document.createElement("option"); option.value = itAffiliate.id; option.textContent = itAffiliate.name; editAffiliateUserAffiliate.appendChild(option); if (affiliateUser.affiliate_id == itAffiliate.id) editAffiliateUserAffiliate.selectedIndex = count; count++; } editAffiliateUserEmail.value = affiliateUser.email; editAffiliateUserPassword.value = ""; if (_editAffiliateUser.id == 0) { editAffiliateUserPassword.required = true; } else { editAffiliateUserPassword.required = false; } editAffiliateUserEnable.checked = affiliateUser.enabled; editAffiliateUserError.style.display = "none"; } function keydownListenerEditAffiliateUserModal(event) { const key = event.key; // Or const {key} = event; in ES6+ if (key === "Escape") { closeEditAffiliateUserModal(); } } function hideEditAffiliateUserModal() { editAffiliateUserModal.style.display = "none"; editAffiliateUserError.style.display = "none"; _editAffiliateUserUser = null; _editAffiliateUser = null; _editAffiliateUserOnChangedCallBack = null; document.removeEventListener("keydown",keydownListenerEditAffiliateUserModal); } function closeEditAffiliateUserModal() { editAffiliateUserError.style.display = "none"; trimEditAffiliateUserModalValues(); var changed = hasAffiliateUserBeenEdited(); if (changed) { showQuestionModal("Affiliate User","Some details have changed.Are you sure you want to leave without saving?",function() { hideEditAffiliateUserModal(); }); } else { hideEditAffiliateUserModal(); } } function trimEditAffiliateUserModalValues() { editAffiliateUserEmail.value = editAffiliateUserEmail.value.trim(); editAffiliateUserPassword.value = editAffiliateUserPassword.value.trim(); } function hasAffiliateUserBeenEdited() { var changed = false; changed = changed || hasInputValueChanged(editAffiliateUserAffiliate,_editAffiliateUser.affiliate_id); changed = changed || hasInputValueChanged(editAffiliateUserEmail,_editAffiliateUser.email); changed = changed || hasInputValueChanged(editAffiliateUserPassword,""); changed = changed || hasCheckboxChanged(editAffiliateUserEnable,_editAffiliateUser.enabled); return(changed); } if (editAffiliateUserForm) { editAffiliateUserForm.addEventListener('submit', function(event) { event.preventDefault(); trimEditAffiliateUserModalValues(); new Promise(function(resolve,reject) { // did anything change var changed = hasAffiliateUserBeenEdited(); if (!changed) { reject({message:"nothing changed"}); } else { resolve(); } }) .then(function() { if (editAffiliateUserEmail.value == "") return Promise.reject({message:"you must enter email"}); if (_editAffiliateUser.id == 0) { if (editAffiliateUserPassword.value == "") return Promise.reject({message:"you must enter password"}); } }) .then(function() { var affiliateUserEdits = {}; if (editAffiliateUserAffiliate.value != _editAffiliateUser.affiliate_id) affiliateUserEdits.affiliate_id = editAffiliateUserAffiliate.value; if (editAffiliateUserEmail.value != _editAffiliateUser.email) affiliateUserEdits.email = editAffiliateUserEmail.value; if (editAffiliateUserPassword.value != _editAffiliateUser.password) affiliateUserEdits.password = editAffiliateUserPassword.value; if (editAffiliateUserEnable.checked != _editAffiliateUser.enabled) affiliateUserEdits.enabled = editAffiliateUserEnable.checked; return(affiliateUserEdits); }) .then(function(affiliateUserEdits) { return API.call("edit-affiliate-user-details",{affiliateUserId:_editAffiliateUser.id,edits: JSON.stringify(affiliateUserEdits)},true); }) .then(function(data) { if (data.affiliateUser) updateAffiliateUser(data.affiliateUser); if (_editAffiliateUserOnChangedCallBack) { _editAffiliateUserOnChangedCallBack(data.affiliateUser); _editAffiliateUserOnChangedCallBack = null; } hideEditAffiliateUserModal(); }) .catch(function(error) { editAffiliateUserError.textContent = error.message; editAffiliateUserError.style.display = "block"; }); }); } -