Integrating StatusMessages into save-bar, adding to variant overrides index

This commit is contained in:
Rob Harrington
2015-11-26 17:26:56 +11:00
parent c781113a65
commit 54e7677888
9 changed files with 35 additions and 40 deletions

View File

@@ -1,7 +1,8 @@
angular.module("admin.indexUtils").directive "saveBar", ->
angular.module("admin.indexUtils").directive "saveBar", (StatusMessage) ->
restrict: "E"
scope:
save: "&"
saving: "&"
dirty: "&"
form: "="
templateUrl: "admin/save_bar.html"
link: (scope, element, attrs) ->
scope.StatusMessage = StatusMessage

View File

@@ -11,6 +11,9 @@ angular.module("admin.indexUtils").factory "StatusMessage", ($timeout) ->
text: ""
style: {}
active: ->
@statusMessage.text != ''
display: (type, text) ->
@statusMessage.text = text
@statusMessage.style = @types[type].style
@@ -20,6 +23,7 @@ angular.module("admin.indexUtils").factory "StatusMessage", ($timeout) ->
@statusMessage.timeout = $timeout =>
@clear()
, timeout, true
null # So we don't return weird timeouts
clear: ->
@statusMessage.text = ''

View File

@@ -1,7 +1,6 @@
angular.module("admin.lineItems").controller 'LineItemsCtrl', ($scope, $timeout, $http, $q, Columns, Dereferencer, Orders, LineItems, Enterprises, OrderCycles, blankOption, VariantUnitManager, RequestMonitor) ->
angular.module("admin.lineItems").controller 'LineItemsCtrl', ($scope, $timeout, $http, $q, StatusMessage, Columns, Dereferencer, Orders, LineItems, Enterprises, OrderCycles, blankOption, VariantUnitManager, RequestMonitor) ->
$scope.initialized = false
$scope.RequestMonitor = RequestMonitor
$scope.saving = false
$scope.filteredLineItems = []
$scope.confirmDelete = true
$scope.startDate = formatDate daysFromToday -7
@@ -55,6 +54,7 @@ angular.module("admin.lineItems").controller 'LineItemsCtrl', ($scope, $timeout,
Dereferencer.dereferenceAttr $scope.lineItems, "supplier", Enterprises.enterprisesByID
Dereferencer.dereferenceAttr $scope.lineItems, "order", Orders.ordersByID
$scope.bulk_order_form.$setPristine()
StatusMessage.clear()
unless $scope.initialized
$scope.initialized = true
$timeout ->
@@ -62,16 +62,20 @@ angular.module("admin.lineItems").controller 'LineItemsCtrl', ($scope, $timeout,
$scope.refreshData()
$scope.submit = =>
$scope.$watch 'bulk_order_form.$dirty', (newVal, oldVal) ->
if newVal == true
StatusMessage.display 'notice', "You have unsaved changes"
$scope.submit = ->
if $scope.bulk_order_form.$valid
$scope.saving = true
StatusMessage.display 'progress', "Saving..."
$q.all(LineItems.saveAll()).then(->
StatusMessage.display 'success', "All changes saved"
$scope.bulk_order_form.$setPristine()
$scope.saving = false
).catch ->
alert "Some errors must be resolved be before you can update orders.\nAny fields with red borders contain errors."
StatusMessage.display 'failure', "Fields with red borders contain errors."
else
alert "Some errors must be resolved be before you can update orders.\nAny fields with red borders contain errors."
StatusMessage.display 'failure', "Fields with red borders contain errors."
$scope.deleteLineItem = (lineItem) ->
if ($scope.confirmDelete && confirm("Are you sure?")) || !$scope.confirmDelete

View File

@@ -1,4 +1,4 @@
angular.module("admin.variantOverrides").controller "AdminVariantOverridesCtrl", ($scope, $timeout, Indexer, SpreeApiAuth, PagedFetcher, StatusMessage, hubs, producers, hubPermissions, VariantOverrides, DirtyVariantOverrides) ->
angular.module("admin.variantOverrides").controller "AdminVariantOverridesCtrl", ($scope, Indexer, SpreeApiAuth, PagedFetcher, StatusMessage, hubs, producers, hubPermissions, VariantOverrides, DirtyVariantOverrides) ->
$scope.hubs = Indexer.index hubs
$scope.hub = null
$scope.products = []
@@ -52,9 +52,10 @@ angular.module("admin.variantOverrides").controller "AdminVariantOverridesCtrl",
.success (updatedVos) ->
DirtyVariantOverrides.clear()
VariantOverrides.updateIds updatedVos
$timeout -> StatusMessage.display 'success', 'Changes saved.'
StatusMessage.display 'success', 'Changes saved.'
$scope.variant_overrides_form.$setPristine()
.error (data, status) ->
$timeout -> StatusMessage.display 'failure', $scope.updateError(data, status)
StatusMessage.display 'failure', $scope.updateError(data, status)
$scope.updateError = (data, status) ->

View File

@@ -1,10 +1,6 @@
#save-bar.animate-show{ ng: { show: 'dirty()' } }
#save-bar.animate-show{ ng: { show: 'form.$dirty || StatusMessage.active()' } }
.twelve.columns.alpha
%h5{ ng: { show: "dirty() && !saving()" } }
You have unsaved changes
%h5{ ng: { hide: "dirty() || saving()" } }
All changes saved
%h5{ ng: { show: "saving()" } }
Saving...
%h5#status-messae{ ng: { style: 'StatusMessage.statusMessage.style' } }
{{ StatusMessage.statusMessage.text || " " }}
.four.columns.omega.text-right
%input.red{type: "button", value: "Save Changes", ng: { click: "save()" } }
%input.red{type: "button", value: "Save Changes", ng: { disabled: '!form.$dirty', click: "save()" } }

View File

@@ -4,8 +4,6 @@
%div{ ng: { app: 'admin.variantOverrides', controller: 'AdminVariantOverridesCtrl', init: 'initialise()' } }
= render 'admin/variant_overrides/filters'
%div{ng: {show: 'hub'}}
%h2 {{ hub.name }}
= render 'admin/variant_overrides/actions'
= render 'admin/variant_overrides/products'
%form{ name: 'variant_overrides_form' }
%save-bar{ save: "update()", form: "variant_overrides_form" }
= render 'admin/variant_overrides/products'

View File

@@ -5,7 +5,7 @@
= render :partial => 'spree/admin/shared/order_sub_menu'
%div{ ng: { app: 'admin.lineItems', controller: 'LineItemsCtrl' } }
%save-bar{ save: "submit()", saving: 'saving', dirty: "bulk_order_form.$dirty" }
%save-bar{ save: "submit()", form: "bulk_order_form" }
.filters{ :class => "sixteen columns alpha" }
.date_filter{ :class => "two columns alpha" }
%label{ :for => 'start_date_filter' }Start Date

View File

@@ -119,10 +119,9 @@ feature %q{
expect(page).to_not have_selector "#save-bar"
fill_in "quantity", :with => 2
expect(page).to have_selector "input[name='quantity'].ng-dirty"
expect(page).to have_selector "#save-bar"
expect(page).to have_button "Save Changes"
expect(page).to have_selector "#save-bar", text: "You have unsaved changes"
click_button "Save Changes"
expect(page).to_not have_selector "#save-bar"
expect(page).to have_selector "#save-bar", text: "All changes saved"
expect(page).to_not have_selector "input[name='quantity'].ng-dirty"
end
end
@@ -132,10 +131,9 @@ feature %q{
expect(page).to_not have_selector "#save-bar"
fill_in "quantity", :with => li1.variant.on_hand + li1.quantity + 10
expect(page).to have_selector "input[name='quantity'].ng-dirty"
expect(page).to have_selector "#save-bar"
expect(page).to have_button "Save Changes"
expect(page).to have_selector "#save-bar", text: "You have unsaved changes"
click_button "Save Changes"
expect(page).to have_selector "#save-bar"
expect(page).to have_selector "#save-bar", text: "Fields with red borders contain errors."
expect(page).to have_selector "input[name='quantity'].ng-dirty.update-error"
expect(page).to have_content "exceeds available stock. Please ensure line items have a valid quantity."
end

View File

@@ -26,13 +26,6 @@ feature %q{
page.should have_select2 'hub_id', options: ['', hub.name, hub2.name]
end
it "displays the hub" do
visit '/admin/variant_overrides'
select2_select hub.name, from: 'hub_id'
page.should have_selector 'h2', text: hub.name
end
end
context "when a hub is selected" do