mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-03-05 02:41:33 +00:00
Add date filter fields to BOM
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
orderManagementModule = angular.module("ofn.bulk_order_management", ["ofn.shared_services"])
|
||||
orderManagementModule = angular.module("ofn.bulk_order_management", ["ofn.shared_services", "ofn.shared_directives"])
|
||||
|
||||
orderManagementModule.config [
|
||||
"$httpProvider"
|
||||
@@ -67,8 +67,13 @@ orderManagementModule.controller "AdminOrderMgmtCtrl", [
|
||||
"$scope", "$http", "dataFetcher", "blankEnterprise", "pendingChanges"
|
||||
($scope, $http, dataFetcher, blankEnterprise, pendingChanges) ->
|
||||
|
||||
now = new Date
|
||||
start = new Date( now.getTime() - ( 7 * (1440 * 60 * 1000) ) - ( now.getTime() % ( 1440 * 60 * 1000 ) - now.getTimezoneOffset() * 60 * 1000 ) )
|
||||
end = new Date( now.getTime() - ( now.getTime() % ( 1440 * 60 * 1000 ) - now.getTimezoneOffset() * 60 * 1000 ) + ( 1 * ( 1440 * 60 * 1000 ) ) )
|
||||
$scope.lineItems = []
|
||||
$scope.confirmDelete = true
|
||||
$scope.startDate = formatDate start
|
||||
$scope.endDate = formatDate end
|
||||
$scope.pendingChanges = pendingChanges
|
||||
|
||||
$scope.initialise = (spree_api_key) ->
|
||||
@@ -168,3 +173,17 @@ orderManagementModule.factory "switchClass", [
|
||||
element.removeClass classToAdd
|
||||
, timeout, true)
|
||||
]
|
||||
|
||||
formatDate = (date) ->
|
||||
year = date.getFullYear()
|
||||
month = twoDigitNumber date.getMonth() + 1
|
||||
day = twoDigitNumber date.getDate()
|
||||
hours = twoDigitNumber date.getHours()
|
||||
mins = twoDigitNumber date.getMinutes()
|
||||
secs = twoDigitNumber date.getSeconds()
|
||||
return year + "-" + month + "-" + day + " " + hours + ":" + mins + ":" + secs
|
||||
|
||||
twoDigitNumber = (number) ->
|
||||
twoDigits = "" + number
|
||||
twoDigits = ("0" + number) if number < 10
|
||||
twoDigits
|
||||
@@ -1,4 +1,4 @@
|
||||
productEditModule = angular.module("ofn.bulk_product_edit", ["ofn.shared_services"])
|
||||
productEditModule = angular.module("ofn.bulk_product_edit", ["ofn.shared_services", "ofn.shared_directives"])
|
||||
|
||||
productEditModule.config [
|
||||
"$httpProvider"
|
||||
@@ -78,23 +78,6 @@ productEditModule.directive "ofnToggleColumn", ->
|
||||
scope.column.visible = true
|
||||
element.removeClass "unselected"
|
||||
|
||||
productEditModule.directive "datetimepicker", [
|
||||
"$parse"
|
||||
($parse) ->
|
||||
return (
|
||||
require: "ngModel"
|
||||
link: (scope, element, attrs, ngModel) ->
|
||||
element.datetimepicker
|
||||
dateFormat: "yy-mm-dd"
|
||||
timeFormat: "HH:mm:ss"
|
||||
stepMinute: 15
|
||||
onSelect: (dateText, inst) ->
|
||||
scope.$apply (scope) ->
|
||||
# Fires ngModel.$parsers
|
||||
ngModel.$setViewValue dateText
|
||||
)
|
||||
]
|
||||
|
||||
|
||||
productEditModule.controller "AdminProductEditCtrl", [
|
||||
"$scope", "$timeout", "$http", "dataFetcher"
|
||||
|
||||
18
app/assets/javascripts/admin/shared_directives.js.coffee
Normal file
18
app/assets/javascripts/admin/shared_directives.js.coffee
Normal file
@@ -0,0 +1,18 @@
|
||||
sharedDirectivesModule = angular.module("ofn.shared_directives", [])
|
||||
|
||||
sharedDirectivesModule.directive "datetimepicker", [
|
||||
"$parse"
|
||||
($parse) ->
|
||||
return (
|
||||
require: "ngModel"
|
||||
link: (scope, element, attrs, ngModel) ->
|
||||
element.datetimepicker
|
||||
dateFormat: "yy-mm-dd"
|
||||
timeFormat: "HH:mm:ss"
|
||||
stepMinute: 15
|
||||
onSelect: (dateText, inst) ->
|
||||
scope.$apply (scope) ->
|
||||
# Fires ngModel.$parsers
|
||||
ngModel.$setViewValue dateText
|
||||
)
|
||||
]
|
||||
@@ -1,4 +1,4 @@
|
||||
.filter_select {
|
||||
.filter_select, .date_filter {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
|
||||
@@ -15,7 +15,18 @@
|
||||
Hub
|
||||
%br
|
||||
%select.select2{ :class => "four columns alpha", :id => 'distributor_filter', 'ng-model' => 'distributorFilter', 'ng-options' => 'd.name for d in distributors'}
|
||||
|
||||
.spacer{ :class => "one column alpha" }
|
||||
|
||||
.date_filters{ :class => "four columns alpha" }
|
||||
.date_filter{ :class => "four columns alpha" }
|
||||
Start Date
|
||||
%br
|
||||
%input{ :class => "four columns alpha", :type => "text", :id => 'start_date_filter', 'ng-model' => 'startDate', 'datetimepicker' => "startDate" }
|
||||
.date_filter{ :class => "four columns alpha" }
|
||||
End Date
|
||||
%br
|
||||
%input{ :class => "four columns alpha", :type => "text", :id => 'end_date_filter', 'ng-model' => 'endDate', 'datetimepicker' => "endDate" }
|
||||
%hr{ :class => "sixteen columns alpha", :style => "margin-bottom: 15px" }
|
||||
%table.index#listing_orders.bulk
|
||||
%thead
|
||||
%tr
|
||||
|
||||
@@ -10,6 +10,7 @@ module.exports = function(config) {
|
||||
'app/assets/javascripts/shared/angular-*.js',
|
||||
'app/assets/javascripts/shared/jquery.timeago.js',
|
||||
|
||||
'app/assets/javascripts/admin/shared_directives.js.coffee',
|
||||
'app/assets/javascripts/admin/shared_services.js.coffee',
|
||||
'app/assets/javascripts/admin/order_cycle.js.erb.coffee',
|
||||
'app/assets/javascripts/admin/bulk_order_management.js.coffee',
|
||||
|
||||
@@ -203,6 +203,24 @@ feature %q{
|
||||
end
|
||||
end
|
||||
|
||||
context "using date restriction controls" do
|
||||
let!(:o1) { FactoryGirl.create(:order, state: 'complete', completed_at: Time.now ) }
|
||||
let!(:o2) { FactoryGirl.create(:order, state: 'complete', completed_at: Time.now ) }
|
||||
let!(:li1) { FactoryGirl.create(:line_item, order: o1 ) }
|
||||
let!(:li2) { FactoryGirl.create(:line_item, order: o2 ) }
|
||||
|
||||
before :each do
|
||||
visit '/admin/orders/bulk_management'
|
||||
end
|
||||
|
||||
it "displays date fields for filtering orders, with default values set" do
|
||||
one_week_ago = (Date.today - 7).strftime("%F %T")
|
||||
tonight = Date.tomorrow.strftime("%F %T")
|
||||
page.should have_field "start_date_filter", with: one_week_ago
|
||||
page.should have_field "end_date_filter", with: tonight
|
||||
end
|
||||
end
|
||||
|
||||
context "using action buttons" do
|
||||
context "using delete buttons" do
|
||||
let!(:o1) { FactoryGirl.create(:order, state: 'complete', completed_at: Time.now ) }
|
||||
|
||||
@@ -371,4 +371,27 @@ describe "switchClass service", ->
|
||||
it "sets up a new timeout if 'timeout' parameter is an integer", ->
|
||||
switchClassService elementMock, "class1", ["class2"], 1000
|
||||
expect(timeoutMock).toHaveBeenCalled()
|
||||
expect(elementMock.timeout).toEqual "new timeout"
|
||||
expect(elementMock.timeout).toEqual "new timeout"
|
||||
|
||||
describe "Auxiliary functions", ->
|
||||
describe "getting a zero filled two digit number", ->
|
||||
it "returns the number as a string if its value is greater than or equal to 10", ->
|
||||
expect(twoDigitNumber(10)).toEqual "10"
|
||||
expect(twoDigitNumber(15)).toEqual "15"
|
||||
expect(twoDigitNumber(99)).toEqual "99"
|
||||
|
||||
it "returns the number formatted as a zero filled string if its value is less than 10", ->
|
||||
expect(twoDigitNumber(0)).toEqual "00"
|
||||
expect(twoDigitNumber(1)).toEqual "01"
|
||||
expect(twoDigitNumber(9)).toEqual "09"
|
||||
|
||||
describe "formatting a date", ->
|
||||
it "returns a date formatted as yyyy-mm-dd hh-MM:ss", ->
|
||||
date = new Date
|
||||
date.setYear(2010)
|
||||
date.setMonth(5) # Zero indexed, so 5 is June
|
||||
date.setDate(15)
|
||||
date.setHours(5)
|
||||
date.setMinutes(10)
|
||||
date.setSeconds(30)
|
||||
expect(formatDate(date)).toEqual "2010-06-15 05:10:30"
|
||||
Reference in New Issue
Block a user