Skip to content

Commit

Permalink
migrate admin JS to async/await (#1603)
Browse files Browse the repository at this point in the history
  • Loading branch information
srabraham authored Feb 14, 2025
1 parent bd5db47 commit 94b0eab
Show file tree
Hide file tree
Showing 4 changed files with 141 additions and 165 deletions.
126 changes: 53 additions & 73 deletions src/ims/element/static/admin_events.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,34 +18,23 @@
// Initialize UI
//

function initPage() {
function loadedAccessControlList() {
drawAccess();
}

async function initPage() {
detectTouchDevice();
loadAccessControlList(loadedAccessControlList);
await loadAccessControlList();
drawAccess();
}


let accessControlList = null

function loadAccessControlList(success) {
function ok(data, status, xhr) {
accessControlList = data;

if (success) {
success();
}
}

function fail(error, status, xhr) {
const message = "Failed to load access control list:\n" + error
async function loadAccessControlList() {
try {
accessControlList = await jsonRequestAsync(url_acl, null);
} catch (err) {
const message = `Failed to load access control list:\n${JSON.stringify(err)}`;
console.error(message);
window.alert(message);
}

jsonRequest(url_acl, null, ok, fail);
}


Expand Down Expand Up @@ -114,31 +103,27 @@ function updateEventAccess(event, mode) {
}


function addEvent(sender) {
async function addEvent(sender) {
const event = sender.value.trim();

function refresh() {
loadAccessControlList(drawAccess);
}

function ok(data, status, xhr) {
refresh();
sender.value = ""; // Clear input field
}

function fail(requestError, status, xhr) {
const message = "Failed to add event:\n" + requestError
try {
await jsonRequestAsync(url_events, {"add": [event]});
} catch (err) {
const message = `Failed to add event: ${JSON.stringify(err)}`;
console.log(message);
refresh();
await loadAccessControlList();
drawAccess();
controlHasError($(sender));
window.alert(message);
return;
}

jsonRequest(url_events, {"add": [event]}, ok, fail);
await loadAccessControlList();
drawAccess();
sender.value = ""; // Clear input field
}


function addAccess(sender) {
async function addAccess(sender) {
const container = $(sender).parents(".event_access:first");
const event = container.find(".event_name:first").text();
const mode = container.find(".access_mode:first").text();
Expand Down Expand Up @@ -191,21 +176,21 @@ function addAccess(sender) {
}
}

function ok() {
loadAccessControlList(refresh);
sender.value = ""; // Clear input field
}

function fail() {
loadAccessControlList(refresh);
try {
await sendACL(edits);
} catch (err) {
await loadAccessControlList();
refresh();
controlHasError($(sender));
return;
}

sendACL(edits, ok, fail);
await loadAccessControlList();
refresh();
sender.value = ""; // Clear input field
}


function removeAccess(sender) {
async function removeAccess(sender) {
const container = $(sender).parents(".event_access:first");
const event = container.find(".event_name:first").text();
const mode = container.find(".access_mode:first").text();
Expand Down Expand Up @@ -237,18 +222,18 @@ function removeAccess(sender) {
}
}

function ok() {
loadAccessControlList(refresh);
}

function fail() {
loadAccessControlList(refresh);
try {
await sendACL(edits);
} catch (err) {
await loadAccessControlList();
refresh();
return;
}

sendACL(edits, ok, fail);
await loadAccessControlList(refresh);
refresh();
}

function setValidity(sender) {
async function setValidity(sender) {
const container = $(sender).parents(".event_access:first");
const event = container.find(".event_name:first").text();
const mode = container.find(".access_mode:first").text();
Expand All @@ -273,31 +258,26 @@ function setValidity(sender) {
}
}

function ok() {
loadAccessControlList(refresh);
sender.value = ""; // Clear input field
}

function fail() {
loadAccessControlList(refresh);
try {
await sendACL(edits);
} catch (err) {
await loadAccessControlList();
refresh();
controlHasError($(sender));
return;
}

sendACL(edits, ok, fail);
await loadAccessControlList(refresh);
refresh();
sender.value = ""; // Clear input field
}


function sendACL(edits, success, error) {
function ok(data, status, xhr) {
success();
}

function fail(requestError, status, xhr) {
const message = "Failed to edit ACL:\n" + requestError;
async function sendACL(edits) {
try {
return await jsonRequestAsync(url_acl, edits);
} catch (err) {
const message = `Failed to edit ACL:\n${JSON.stringify(err)}`;
console.log(message);
error();
window.alert(message);
}

jsonRequest(url_acl, edits, ok, fail);
}
47 changes: 17 additions & 30 deletions src/ims/element/static/admin_streets.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,36 +18,28 @@
// Initialize UI
//

function initPage() {
function loadedStreets() {
async function initPage() {
detectTouchDevice();
try {
await loadStreets();
drawStreets();
} catch (err) {
// do nothing
}

detectTouchDevice();
loadStreets(loadedStreets);
}


let streets = null;

function loadStreets(success) {
const url = url_streets;

function ok(data, status, xhr) {
streets = data;

if (success) {
success();
}
}

function fail(error, status, xhr) {
const message = "Failed to load streets:\n" + error;
async function loadStreets() {
try {
streets = await jsonRequestAsync(url_streets, null);
} catch (err) {
const message = `Failed to load streets:\n${JSON.stringify(err)}`;
console.error(message);
window.alert(message);
throw err;
}

jsonRequest(url_streets, null, ok, fail);
}


Expand Down Expand Up @@ -120,17 +112,12 @@ function removeStreet(sender) {
}


function sendStreets(edits, success, error) {
function ok(data, status, xhr) {
success();
}

function fail(requestError, status, xhr) {
const message = "Failed to edit streets:\n" + requestError;
async function sendStreets(edits, success, error) {
try {
await jsonRequestAsync(url_streets, edits);
} catch (err) {
const message = `Failed to edit streets:\n${JSON.stringify(err)}`;
console.log(message);
error();
window.alert(message);
}

jsonRequest(url_streets, edits, ok, fail);
}
Loading

0 comments on commit 94b0eab

Please sign in to comment.