From 13d576295e6da8130f70b765c60f8f978a4c17da Mon Sep 17 00:00:00 2001 From: Lance Edgar <lance@wuttaproject.org> Date: Wed, 15 Jan 2025 14:55:27 -0600 Subject: [PATCH] fix: add loading overlay for expensive calls in orders/create --- src/sideshow/web/templates/orders/create.mako | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/sideshow/web/templates/orders/create.mako b/src/sideshow/web/templates/orders/create.mako index 7ed78db..28f4e6b 100644 --- a/src/sideshow/web/templates/orders/create.mako +++ b/src/sideshow/web/templates/orders/create.mako @@ -81,6 +81,7 @@ </template> <div class="panel-block"> + <b-loading v-model="customerLoading" :is-full-page="false" /> <div style="width: 100%;"> <div style="display: flex; flex-direction: row;"> @@ -143,7 +144,7 @@ icon-pack="fas" icon-left="redo" :disabled="refreshingCustomer"> - {{ refreshingCustomer ? "Refreshing" : "Refresh" }} + {{ refreshingCustomer ? "Working, please wait..." : "Refresh" }} </b-button> </div> </b-field> @@ -348,6 +349,7 @@ > <div class="card"> <div class="card-content"> + <b-loading v-model="editItemLoading" :is-full-page="false" /> <${b}-tabs :animated="false" % if request.use_oruga: @@ -829,6 +831,7 @@ batchTotalPriceDisplay: ${json.dumps(normalized_batch['total_price_display'])|n}, customerPanelOpen: false, + customerLoading: false, customerIsKnown: ${json.dumps(customer_is_known)|n}, customerID: ${json.dumps(customer_id)|n}, customerName: ${json.dumps(customer_name)|n}, @@ -853,6 +856,7 @@ editItemRow: null, editItemShowDialog: false, + editItemLoading: false, itemDialogSaving: false, % if request.use_oruga: itemDialogTab: 'product', @@ -1132,6 +1136,7 @@ }, customerChanged(customerID, callback) { + this.customerLoading = true const params = {} if (customerID) { @@ -1149,7 +1154,9 @@ if (callback) { callback() } + this.customerLoading = false }, response => { + this.customerLoading = false this.$buefy.toast.open({ message: "Update failed: " + (response.data.error || "(unknown error)"), type: 'is-danger', @@ -1159,9 +1166,9 @@ }, refreshCustomer() { - this.refreshingContact = true + this.refreshingCustomer = true this.customerChanged(this.customerID, () => { - this.refreshingContact = false + this.refreshingCustomer = false this.$buefy.toast.open({ message: "Customer info has been refreshed.", type: 'is-success', @@ -1321,6 +1328,7 @@ productChanged(productID) { if (productID) { + this.editItemLoading = true const params = { action: 'get_product_info', product_id: productID, @@ -1364,8 +1372,11 @@ this.refreshProductDescription += 1 this.refreshTotalPrice += 1 + this.editItemLoading = false + }, response => { this.clearProduct() + this.editItemLoading = false }) } else { this.clearProduct() @@ -1514,6 +1525,7 @@ itemDialogAttemptSave() { this.itemDialogSaving = true + this.editItemLoading = true const params = { order_qty: this.productQuantity, @@ -1551,9 +1563,11 @@ this.batchTotalPriceDisplay = response.data.batch.total_price_display this.itemDialogSaving = false + this.editItemLoading = false this.editItemShowDialog = false }, response => { this.itemDialogSaving = false + this.editItemLoading = false }) },