WIP: Splitting Variant overrides into views

This commit is contained in:
Rob Harrington
2016-02-01 15:30:08 +11:00
parent 8f37aa0522
commit 28b143da73
33 changed files with 311 additions and 172 deletions

View File

@@ -1,2 +0,0 @@
angular.module("admin.dropdown").controller "DropDownCtrl", ($scope) ->
$scope.expanded = false

View File

@@ -1,4 +1,4 @@
angular.module("admin.dropdown").directive "ofnCloseOnClick", ($document) ->
angular.module("admin.dropdown").directive "closeOnClick", () ->
link: (scope, element, attrs) ->
element.click (event) ->
event.stopPropagation()

View File

@@ -1,6 +1,9 @@
angular.module("admin.dropdown").directive "ofnDropDown", ($document) ->
restrict: 'C'
scope: true
link: (scope, element, attrs) ->
scope.expanded = false
outsideClickListener = (event) ->
unless $(event.target).is("div.ofn-drop-down##{attrs.id} div.menu") ||
$(event.target).parents("div.ofn-drop-down##{attrs.id} div.menu").length > 0

View File

@@ -1,4 +1,4 @@
angular.module("admin.indexUtils").directive "ofnToggleColumn", (Columns) ->
angular.module("admin.indexUtils").directive "toggleColumn", (Columns) ->
link: (scope, element, attrs) ->
element.addClass "selected" if scope.column.visible

View File

@@ -0,0 +1,11 @@
angular.module("admin.indexUtils").directive "toggleView", (Views) ->
link: (scope, element, attrs) ->
Views.register
element.addClass "selected" if scope.view.visible
element.click "click", ->
scope.$apply ->
Views.selectView(scope.viewKey)
scope.$watch "view.visible", (newValue, oldValue) ->
element.toggleClass "selected", scope.view.visible

View File

@@ -0,0 +1,16 @@
angular.module("admin.indexUtils").factory 'Views', ($rootScope) ->
new class Views
views: {}
currentView: null
setViews: (views) =>
@views = {}
for key, view of views
@views[key] = view
@selectView(key) if view.visible
@views
selectView: (selectedKey) =>
@currentView = @views[selectedKey]
for key, view of @views
view.visible = (key == selectedKey)

View File

@@ -5,11 +5,14 @@ angular.module("admin.utils").directive "alertRow", ->
message: '@'
buttonText: '@?'
buttonAction: '&?'
dismissed: '=?'
close: "&?"
transclude: true
templateUrl: "admin/alert_row.html"
link: (scope, element, attrs) ->
scope.dismissed = false
scope.dismiss = ->
scope.dismissed = true
scope.close() if scope.close?
element.hide()
return false

View File

@@ -1,17 +1,23 @@
angular.module("admin.variantOverrides").controller "AdminVariantOverridesCtrl", ($scope, $http, $timeout, Indexer, Columns, SpreeApiAuth, PagedFetcher, StatusMessage, RequestMonitor, hubs, producers, hubPermissions, InventoryItems, VariantOverrides, DirtyVariantOverrides) ->
angular.module("admin.variantOverrides").controller "AdminVariantOverridesCtrl", ($scope, $http, $timeout, Indexer, Columns, Views, SpreeApiAuth, PagedFetcher, StatusMessage, RequestMonitor, hubs, producers, hubPermissions, InventoryItems, VariantOverrides, DirtyVariantOverrides) ->
$scope.hubs = Indexer.index hubs
$scope.hub = null
$scope.products = []
$scope.producers = producers
$scope.producersByID = Indexer.index producers
$scope.hubPermissions = hubPermissions
$scope.showHidden = false
$scope.productLimit = 10
$scope.variantOverrides = VariantOverrides.variantOverrides
$scope.inventoryItems = InventoryItems.inventoryItems
$scope.setVisibility = InventoryItems.setVisibility
$scope.StatusMessage = StatusMessage
$scope.RequestMonitor = RequestMonitor
$scope.selectView = Views.selectView
$scope.currentView = -> Views.currentView
$scope.views = Views.setViews
inventory: { name: "Inventory Products", visible: true }
hidden: { name: "Hidden Products", visible: false }
new: { name: "New Products", visible: false }
$scope.columns = Columns.setColumns
producer: { name: "Producer", visible: true }
@@ -22,7 +28,9 @@ angular.module("admin.variantOverrides").controller "AdminVariantOverridesCtrl",
on_demand: { name: "On Demand", visible: false }
reset: { name: "Reset Stock Level", visible: false }
inheritance: { name: "Inheritance", visible: false }
visibility: { name: "Show/Hide", visible: false }
visibility: { name: "Hide", visible: false }
$scope.bulkActions = [ name: "Reset Stock Levels To Defaults", callback: 'resetStock' ]
$scope.resetSelectFilters = ->
$scope.producerFilter = 0
@@ -30,6 +38,9 @@ angular.module("admin.variantOverrides").controller "AdminVariantOverridesCtrl",
$scope.resetSelectFilters()
$scope.filtersApplied = ->
$scope.producerFilter != 0 || $scope.query != ''
$scope.initialise = ->
SpreeApiAuth.authorise()
.then ->

View File

@@ -1,12 +1,17 @@
angular.module("admin.variantOverrides").filter "inventoryProducts", ($filter, InventoryItems) ->
return (products, hub_id, showHidden) ->
return (products, hub_id, views) ->
return [] if !hub_id
return $filter('filter')(products, (product) ->
for variant in product.variants
if InventoryItems.inventoryItems.hasOwnProperty(hub_id) && InventoryItems.inventoryItems[hub_id].hasOwnProperty(variant.id)
if showHidden
return true
if InventoryItems.inventoryItems[hub_id][variant.id].visible
# Important to only return if true, as other variants for this product might be visible
return true if views.inventory.visible
else
return true if InventoryItems.inventoryItems[hub_id][variant.id].visible
false
# Important to only return if true, as other variants for this product might be visible
return true if views.hidden.visible
else
# Important to only return if true, as other variants for this product might be visible
return true if views.new.visible
false
, true)

View File

@@ -1,12 +1,12 @@
angular.module("admin.variantOverrides").filter "inventoryVariants", ($filter, InventoryItems) ->
return (variants, hub_id, showHidden) ->
return (variants, hub_id, views) ->
return [] if !hub_id
return $filter('filter')(variants, (variant) ->
if InventoryItems.inventoryItems.hasOwnProperty(hub_id) && InventoryItems.inventoryItems[hub_id].hasOwnProperty(variant.id)
if showHidden
return true
if InventoryItems.inventoryItems[hub_id][variant.id].visible
return views.inventory.visible
else
return InventoryItems.inventoryItems[hub_id][variant.id].visible
return views.hidden.visible
else
false
return views.new.visible
, true)

View File

@@ -5,4 +5,5 @@ angular.module("admin.variantOverrides").filter "newInventoryProducts", ($filter
return $filter('filter')(products, (product) ->
for variant in product.variants
return true if !InventoryItems.inventoryItems[hub_id].hasOwnProperty(variant.id)
false
, true)

View File

@@ -1,7 +0,0 @@
angular.module("admin.variantOverrides").filter "newInventoryVariants", ($filter, InventoryItems) ->
return (variants, hub_id) ->
return [] if !hub_id
return variants unless InventoryItems.inventoryItems.hasOwnProperty(hub_id)
return $filter('filter')(variants, (variant) ->
!InventoryItems.inventoryItems[hub_id].hasOwnProperty(variant.id)
, true)