mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-02-08 22:56:06 +00:00
Use simpler array for selected ids
This commit is contained in:
@@ -8,7 +8,8 @@ angular.module("admin.orders").controller "ordersCtrl", ($scope, RequestMonitor,
|
||||
{id: 50, name: t('js.admin.orders.index.per_page', results: 50)},
|
||||
{id: 100, name: t('js.admin.orders.index.per_page', results: 100)}
|
||||
]
|
||||
$scope.selected_orders = {}
|
||||
$scope.selected_orders = []
|
||||
$scope.checkboxes = {}
|
||||
$scope.selected = false
|
||||
$scope.select_all = false
|
||||
|
||||
@@ -41,13 +42,24 @@ angular.module("admin.orders").controller "ordersCtrl", ($scope, RequestMonitor,
|
||||
})
|
||||
|
||||
$scope.resetSelected = ->
|
||||
$scope.selected_orders = {}
|
||||
$scope.selected_orders.length = 0
|
||||
$scope.selected = false
|
||||
$scope.select_all = false
|
||||
$scope.checkboxes = {}
|
||||
|
||||
$scope.toggleSelection = (id) ->
|
||||
index = $scope.selected_orders.indexOf(id)
|
||||
|
||||
if index == -1
|
||||
$scope.selected_orders.push(id)
|
||||
else
|
||||
$scope.selected_orders.splice(index, 1)
|
||||
|
||||
$scope.toggleAll = ->
|
||||
$scope.selected_orders.length = 0
|
||||
$scope.orders.forEach (order) ->
|
||||
$scope.selected_orders[order.id] = $scope.select_all
|
||||
$scope.checkboxes[order.id] = $scope.select_all
|
||||
$scope.selected_orders.push order.id if $scope.select_all
|
||||
|
||||
$scope.$watch 'sortOptions', (sort) ->
|
||||
if sort && sort.predicate != ""
|
||||
@@ -56,24 +68,14 @@ angular.module("admin.orders").controller "ordersCtrl", ($scope, RequestMonitor,
|
||||
$scope.fetchResults()
|
||||
, true
|
||||
|
||||
$scope.$watchCollection 'selected_orders', (selected_orders) ->
|
||||
if selected_orders
|
||||
orders_selected = false
|
||||
angular.forEach selected_orders, (checked, order_id) ->
|
||||
if checked
|
||||
orders_selected = true
|
||||
return
|
||||
|
||||
$scope.selected = orders_selected
|
||||
|
||||
$scope.changePage = (newPage) ->
|
||||
$scope.page = newPage
|
||||
$scope.fetchResults(newPage)
|
||||
|
||||
$scope.bulkInvoice = ->
|
||||
params = ''
|
||||
angular.forEach $scope.selected_orders, (selected, order_id) ->
|
||||
params += 'order_ids[]='+order_id+'&' if selected
|
||||
angular.forEach $scope.selected_orders, (order_id) ->
|
||||
params += 'order_ids[]='+order_id+'&'
|
||||
|
||||
$window.open('/admin/orders/bulk_invoice?'+params)
|
||||
true
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
.row.index-controls{'ng-show' => '!RequestMonitor.loading && orders.length > 0'}
|
||||
= render partial: 'per_page_controls'
|
||||
|
||||
%button{'ng-click' => 'bulkInvoice()', 'ng-disabled' => '!selected'}
|
||||
%button{'ng-click' => 'bulkInvoice()', 'ng-disabled' => 'selected_orders.length == 0'}
|
||||
= t('.print_invoices')
|
||||
|
||||
%table#listing_orders.index.responsive{width: "100%", 'ng-init' => 'initialise()', 'ng-show' => "!RequestMonitor.loading && orders.length > 0" }
|
||||
@@ -45,7 +45,7 @@
|
||||
%tbody
|
||||
%tr{ng: {repeat: 'order in orders track by $index', class: {even: "'even'", odd: "'odd'"}}, 'ng-class' => "'state-{{order.state}}'"}
|
||||
%td.align-center
|
||||
%input{type: 'checkbox', 'ng-model' => 'selected_orders[order.id]'}
|
||||
%input{type: 'checkbox', 'ng-model' => 'checkboxes[order.id]', 'ng-change' => 'toggleSelection(order.id)'}
|
||||
%td.align-center
|
||||
{{order.distributor_name}}
|
||||
%td.align-center
|
||||
|
||||
Reference in New Issue
Block a user