From 433fbcf524fa1750456c26d92b3be94b59205ed9 Mon Sep 17 00:00:00 2001 From: Stephan Schultz Date: Mon, 5 Sep 2016 16:29:23 +0200 Subject: [PATCH] Mapped management buttons to API calls --- .../datastore/datastore-indexes-auto.xml | 13 +- IntelliQ/backend/datastore/local_db.bin | Bin 2855 -> 2897 bytes .../backend/src/main/webapp/static/js/api.js | 8 +- .../src/main/webapp/static/js/manage_queue.js | 214 +++++++++++++++--- .../main/webapp/website/en/manage_queue.jsp | 41 +++- .../website/includes/en/common_footer.jsp | 6 +- .../website/includes/en/common_head.jsp | 4 + 7 files changed, 230 insertions(+), 56 deletions(-) diff --git a/IntelliQ/backend/datastore/datastore-indexes-auto.xml b/IntelliQ/backend/datastore/datastore-indexes-auto.xml index 36e85fa..1bcac64 100644 --- a/IntelliQ/backend/datastore/datastore-indexes-auto.xml +++ b/IntelliQ/backend/datastore/datastore-indexes-auto.xml @@ -1,15 +1,14 @@ - + - - - - - + + + + - + diff --git a/IntelliQ/backend/datastore/local_db.bin b/IntelliQ/backend/datastore/local_db.bin index 2dacdc0f32a18b90e66e8b3835ad055224fb5588..7a54f2d0a511d5175069ee547dd7e74c47fe49ab 100644 GIT binary patch delta 206 zcmZ23c2R7CETiQ{Iafxt&&7odbqow(lEvPE0R-5}Ie;Vxvz0J#h8Cw5P3~vxkYFq= zVql7PTJu@_2OCGo111KBiUI}(CgaWaEdLl8r6=35iL)?s>|mVypG%6jgn>UGwJ0~U zxHvOEZ*nc06gyKX$R@tc+Dxw)HmNmEDUY)#_%N%aXcCaa% fyV;$YI0H*lOH(~dQgcDZ2ryJsfXv~9P|Oto4Td@M delta 169 zcmca8wp?t2EF=3yIafv8DMLVteEdGOyBjf=S14Bi@=5Cf(jI5lY#i>P;>)4c;n2a`SGW}zmY{4eQ zs4)2;hs@?uHc7_KcR3uHCik=JGRjQe%f6On{>w8LC+BgPgO$kxl}YhcfE>eF0j8KM E0IA_GVgLXD diff --git a/IntelliQ/backend/src/main/webapp/static/js/api.js b/IntelliQ/backend/src/main/webapp/static/js/api.js index 89fd092..d84d815 100644 --- a/IntelliQ/backend/src/main/webapp/static/js/api.js +++ b/IntelliQ/backend/src/main/webapp/static/js/api.js @@ -455,7 +455,7 @@ var intelliqApi = function(){ } api.populateQueue = function(queueKeyId) { - var request = api.request(api.ENDPOINT_QUEUE_GET); + var request = api.request(api.ENDPOINT_QUEUE_POPULATE); request.addParameter("queueKeyId", queueKeyId); request.addParameter("count", 25); @@ -537,17 +537,17 @@ var intelliqApi = function(){ } api.clearAllQueueItems = function(queueKeyId) { - return api.clearQueueItems(queueKeyId).withStatus(STATUS_ALL).keepWaiting(false); + return api.clearQueueItems(queueKeyId).withStatus(api.STATUS_ALL).keepWaiting(false); } api.clearProcessedQueueItems = function(queueKeyId) { - return api.clearQueueItems(queueKeyId).withStatus(STATUS_ALL).keepWaiting(true); + return api.clearQueueItems(queueKeyId).withStatus(api.STATUS_ALL).keepWaiting(true); } api.clearQueueItems = function(queueKeyId) { var request = api.request(api.ENDPOINT_QUEUE_CLEAR); request.addParameter("queueKeyId", queueKeyId); - request.addParameter("status", STATUS_ALL); + request.addParameter("status", api.STATUS_ALL); request.addParameter("clearWaiting", "false"); request.addParameter("clearCalled", "false"); diff --git a/IntelliQ/backend/src/main/webapp/static/js/manage_queue.js b/IntelliQ/backend/src/main/webapp/static/js/manage_queue.js index 048b069..b681102 100644 --- a/IntelliQ/backend/src/main/webapp/static/js/manage_queue.js +++ b/IntelliQ/backend/src/main/webapp/static/js/manage_queue.js @@ -16,6 +16,7 @@ var onUserReady = function(user) { function updateQueue() { requestQueue().then(function(queue){ renderQueue(queue); + setupQueueManagementButtons(); updateQueueItems(); startUpdatingQueueItems(UPDATE_INTERVAL_DEFAULT); }).catch(function(error){ @@ -145,6 +146,7 @@ function renderQueueItemChangesSinceLastUpdate(queueItems) { function renderQueue(queue) { console.log(queue); + $("#addNewCustomerButton").removeClass("disabled"); //TODO: update labels & buttons } @@ -161,6 +163,12 @@ function renderCalledQueueItems(queueItems) { var items = intelliqApi.filterQueueItems(queueItems) .byStatus(intelliqApi.STATUS_CALLED); renderQueueItems(items, container); + + if (items.length > 0) { + $("#markAllAsDoneButton").removeClass("disabled"); + } else { + $("#markAllAsDoneButton").addClass("disabled"); + } } function renderWaitingQueueItems(queueItems) { @@ -168,6 +176,12 @@ function renderWaitingQueueItems(queueItems) { var items = intelliqApi.filterQueueItems(queueItems) .byStatus(intelliqApi.STATUS_WAITING); renderQueueItems(items, container); + + if (items.length > 0) { + $("#callNextCustomerButton").removeClass("disabled"); + } else { + $("#callNextCustomerButton").addClass("disabled"); + } } function renderProcessedQueueItems(queueItems) { @@ -175,10 +189,15 @@ function renderProcessedQueueItems(queueItems) { var items = intelliqApi.filterQueueItems(queueItems) .byStatus(intelliqApi.STATUS_DONE); renderQueueItems(items, container); + + if (items.length > 0) { + $("#clearProcessedCustomersButton").removeClass("disabled"); + } else { + $("#clearProcessedCustomersButton").addClass("disabled"); + } } function onQueueItemsModified() { - //renderAllQueueItems(queueItems); updateQueueItems(); } @@ -186,58 +205,185 @@ function onQueueItemsModified() { Actions */ +function callNextQueueItem() { + try { + var items = intelliqApi.filterQueueItems(queueItems) + .byStatus(intelliqApi.STATUS_WAITING); + if (items.length == 0) { + throw getString("noQueueItems"); + } + var queueItem = items[0]; + callQueueItem(queueItem); + } catch(error) { + console.log(error); + showErrorMessage(error); + } +} + function callQueueItem(queueItem) { - Materialize.toast(getString("calling", queueItem.name), 3000); - var request = intelliqApi.markQueueItemAsCalled(queue.key.id, queueItem.key.id) - .setGoogleIdToken(authenticator.getInstance().getUserIdToken()); + try { + Materialize.toast(getString("calling", queueItem.name), 3000); + var request = intelliqApi.markQueueItemAsCalled(queue.key.id, queueItem.key.id) + .setGoogleIdToken(authenticator.getInstance().getUserIdToken()); - request.send().then(function(data){ - console.log(data); - onQueueItemsModified(); - }).catch(function(error){ + request.send().then(function(data){ + console.log(data); + onQueueItemsModified(); + }).catch(function(error){ + console.log(error); + showErrorMessage(error); + }); + } catch(error) { console.log(error); showErrorMessage(error); - }); + } } function cancelQueueItem(queueItem) { - Materialize.toast(getString("cancelling", queueItem.name), 3000); - var request = intelliqApi.markQueueItemAsCanceled(queue.key.id, queueItem.key.id) - .setGoogleIdToken(authenticator.getInstance().getUserIdToken()); + try { + Materialize.toast(getString("cancelling", queueItem.name), 3000); + var request = intelliqApi.markQueueItemAsCanceled(queue.key.id, queueItem.key.id) + .setGoogleIdToken(authenticator.getInstance().getUserIdToken()); - request.send().then(function(data){ - console.log(data); - onQueueItemsModified(); - }).catch(function(error){ + request.send().then(function(data){ + console.log(data); + onQueueItemsModified(); + }).catch(function(error){ + console.log(error); + showErrorMessage(error); + }); + } catch(error) { console.log(error); showErrorMessage(error); - }); + } +} + +function markAllCalledQueueItemsAsDone() { + try { + Materialize.toast(getString("markingCalledAsDone"), 3000); + var request = intelliqApi.markAllQueueItemsAsDone(queue.key.id) + .setGoogleIdToken(authenticator.getInstance().getUserIdToken()); + + request.send().then(function(data){ + console.log(data); + onQueueItemsModified(); + }).catch(function(error){ + console.log(error); + showErrorMessage(error); + }); + } catch(error) { + console.log(error); + showErrorMessage(error); + } } function markQueueItemAsDone(queueItem) { - Materialize.toast(getString("markingAsDone", queueItem.name), 3000); - var request = intelliqApi.markQueueItemAsDone(queue.key.id, queueItem.key.id) - .setGoogleIdToken(authenticator.getInstance().getUserIdToken()); + try { + Materialize.toast(getString("markingAsDone", queueItem.name), 3000); + var request = intelliqApi.markQueueItemAsDone(queue.key.id, queueItem.key.id) + .setGoogleIdToken(authenticator.getInstance().getUserIdToken()); - request.send().then(function(data){ - console.log(data); - onQueueItemsModified(); - }).catch(function(error){ + request.send().then(function(data){ + console.log(data); + onQueueItemsModified(); + }).catch(function(error){ + console.log(error); + showErrorMessage(error); + }); + } catch(error) { console.log(error); showErrorMessage(error); - }); + } +} + +function deleteAllQueueItems() { + try { + Materialize.toast(getString("deletingQueueItems"), 3000); + var request = intelliqApi.clearAllQueueItems(queue.key.id) + .setGoogleIdToken(authenticator.getInstance().getUserIdToken()); + + request.send().then(function(data){ + console.log(data); + onQueueItemsModified(); + }).catch(function(error){ + console.log(error); + showErrorMessage(error); + }); + } catch(error) { + console.log(error); + showErrorMessage(error); + } +} + +function deleteAllProcessedQueueItems() { + try { + Materialize.toast(getString("deletingQueueItems"), 3000); + var request = intelliqApi.clearProcessedQueueItems(queue.key.id) + .setGoogleIdToken(authenticator.getInstance().getUserIdToken()); + + request.send().then(function(data){ + console.log(data); + onQueueItemsModified(); + }).catch(function(error){ + console.log(error); + showErrorMessage(error); + }); + } catch(error) { + console.log(error); + showErrorMessage(error); + } } function deleteQueueItem(queueItem) { - Materialize.toast(getString("deleting", queueItem.name), 3000); - var request = intelliqApi.deleteQueueItem(queue.key.id, queueItem.key.id) - .setGoogleIdToken(authenticator.getInstance().getUserIdToken()); - - request.send().then(function(data){ - console.log(data); - onQueueItemsModified(); - }).catch(function(error){ + try { + Materialize.toast(getString("deleting", queueItem.name), 3000); + var request = intelliqApi.deleteQueueItem(queue.key.id, queueItem.key.id) + .setGoogleIdToken(authenticator.getInstance().getUserIdToken()); + + request.send().then(function(data){ + console.log(data); + onQueueItemsModified(); + }).catch(function(error){ + console.log(error); + showErrorMessage(error); + }); + } catch(error) { console.log(error); showErrorMessage(error); - }); + } +} + +function populateQueue() { + try { + Materialize.toast(getString("populatingQueue"), 3000); + var request = intelliqApi.populateQueue(queue.key.id).withItems(25) + .setGoogleIdToken(authenticator.getInstance().getUserIdToken()); + + request.send().then(function(data){ + console.log(data); + onQueueItemsModified(); + }).catch(function(error){ + console.log(error); + showErrorMessage(error); + }); + } catch(error) { + console.log(error); + showErrorMessage(error); + } } + +function showAddNewQueueItemModal() { + +} + +function setupQueueManagementButtons() { + $("#markAllAsDoneButton").click(markAllCalledQueueItemsAsDone); + $("#callNextCustomerButton").click(callNextQueueItem); + $("#addNewCustomerButton").click(showAddNewQueueItemModal); + $("#clearProcessedCustomersButton").click(deleteAllProcessedQueueItems); + + $("#editQueueButton").attr("href", intelliqApi.getUrls().forQueue(queue).edit()) + $("#manageBusinessButton").attr("href", intelliqApi.getUrls().forBusiness({key: {id: queue.businessKeyId}}).manage()) + $("#addDummCustomersButton").click(populateQueue); + $("#deleteAllCustomersButton").click(deleteAllQueueItems); +} \ No newline at end of file diff --git a/IntelliQ/backend/src/main/webapp/website/en/manage_queue.jsp b/IntelliQ/backend/src/main/webapp/website/en/manage_queue.jsp index 7a5220f..e34bb67 100644 --- a/IntelliQ/backend/src/main/webapp/website/en/manage_queue.jsp +++ b/IntelliQ/backend/src/main/webapp/website/en/manage_queue.jsp @@ -19,7 +19,7 @@
<%@include file="../includes/en/common_footer.jsp"%> diff --git a/IntelliQ/backend/src/main/webapp/website/includes/en/common_footer.jsp b/IntelliQ/backend/src/main/webapp/website/includes/en/common_footer.jsp index bf1627e..2b52e12 100644 --- a/IntelliQ/backend/src/main/webapp/website/includes/en/common_footer.jsp +++ b/IntelliQ/backend/src/main/webapp/website/includes/en/common_footer.jsp @@ -45,8 +45,7 @@
Links
@@ -56,8 +55,7 @@ diff --git a/IntelliQ/backend/src/main/webapp/website/includes/en/common_head.jsp b/IntelliQ/backend/src/main/webapp/website/includes/en/common_head.jsp index 225cfcc..d493f76 100644 --- a/IntelliQ/backend/src/main/webapp/website/includes/en/common_head.jsp +++ b/IntelliQ/backend/src/main/webapp/website/includes/en/common_head.jsp @@ -25,12 +25,16 @@ "calling": "Calling [VALUE]", "markingAsDone": "Marking [VALUE] as done", + "markingCalledAsDone": "Marking called as done", "cancelling": "Canceling [VALUE]", "deleting": "Deleting [VALUE]", + "deletingQueueItems": "Deleting queue items", + "noQueueItems": "No queue items available", "editBusiness": "Edit Business", "addBusiness": "Add Business", "editQueue": "Edit Queue", + "populatingQueue": "Popuating queue", "locatingDevice": "Updating device location", "geocodingAddress": "Getting location for address",