Skip to content

Commit bcc27e7

Browse files
committed
feat: fix date-time bugs in wizard step 2:
1 parent b838e9b commit bcc27e7

File tree

5 files changed

+71
-11
lines changed

5 files changed

+71
-11
lines changed

app/components/forms/wizard/sessions-speakers-step.js

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,16 @@ import { computed } from '@ember/object';
33
import FormMixin from 'open-event-frontend/mixins/form';
44
import EventWizardMixin from 'open-event-frontend/mixins/event-wizard';
55
import { groupBy } from 'lodash-es';
6+
import moment from 'moment';
67

78
export default Component.extend(EventWizardMixin, FormMixin, {
89

910
getValidationRules() {
11+
window.$.fn.form.settings.rules.checkDates = () => {
12+
let startDatetime = moment(this.get('data.speakersCall.startsAt'));
13+
let endDatetime = moment(this.get('data.speakersCall.endsAt'));
14+
return (endDatetime.diff(startDatetime, 'minutes') > 0);
15+
};
1016
return {
1117
inline : true,
1218
delay : false,
@@ -47,6 +53,60 @@ export default Component.extend(EventWizardMixin, FormMixin, {
4753
prompt : this.l10n.t('Please select the Privacy')
4854
}
4955
]
56+
},
57+
startDate: {
58+
identifier : 'start_date',
59+
rules : [
60+
{
61+
type : 'empty',
62+
prompt : this.l10n.t('Please tell us when your event starts')
63+
},
64+
{
65+
type : 'checkDates',
66+
prompt : this.l10n.t('Start date & time ')
67+
}
68+
]
69+
},
70+
endDate: {
71+
identifier : 'end_date',
72+
rules : [
73+
{
74+
type : 'empty',
75+
prompt : this.l10n.t('Please tell us when your event ends')
76+
},
77+
{
78+
type : 'checkDates',
79+
prompt : this.l10n.t('Start date & time should be after End date and time')
80+
}
81+
]
82+
},
83+
startTime: {
84+
identifier : 'start_time',
85+
depends : 'start_date',
86+
rules : [
87+
{
88+
type : 'empty',
89+
prompt : this.l10n.t('Please give a start time')
90+
},
91+
{
92+
type : 'checkDates',
93+
prompt : '.'
94+
}
95+
]
96+
},
97+
endTime: {
98+
identifier : 'end_time',
99+
depends : 'end_date',
100+
rules : [
101+
{
102+
type : 'empty',
103+
prompt : this.l10n.t('Please give an end time')
104+
},
105+
{
106+
type : 'checkDates',
107+
prompt : '.'
108+
}
109+
]
50110
}
51111
}
52112
};
@@ -113,6 +173,9 @@ export default Component.extend(EventWizardMixin, FormMixin, {
113173
this.get('data.microlocations').addObject(this.store.createRecord('microlocation'));
114174
break;
115175
}
176+
},
177+
onChange() {
178+
this.onValid(() => {});
116179
}
117180
}
118181
});

app/models/discount-code.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import moment from 'moment';
55
import { hasMany, belongsTo } from 'ember-data/relationships';
66
import { computedDateTimeSplit } from 'open-event-frontend/utils/computed-helpers';
77

8-
const detectedTimezone = moment.tz.guess();
98

109
/**
1110
* Two different forms of discount code can exist. (Both use the same model)

app/routes/events/view/tickets/discount-codes/create.js

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import Route from '@ember/routing/route';
2-
import moment from 'moment';
32

43
export default Route.extend({
54
titleToken() {
@@ -33,7 +32,6 @@ export default Route.extend({
3332
});
3433
let currentDiscountCode = model.discountCode;
3534
let event = this.modelFor('events.view');
36-
currentDiscountCode.set('validFrom', moment().toISOString());
3735
currentDiscountCode.set('validTill', event.endsAt);
3836
currentDiscountCode.set('minQuantity', 1);
3937
currentDiscountCode.set('maxQuantity', 1);

app/templates/components/forms/wizard/sessions-speakers-step.hbs

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -118,33 +118,35 @@
118118
<div class="five wide field">
119119
<label class="required" for="start_date">{{t 'Starts'}}</label>
120120
{{widgets/forms/date-picker type='text'
121-
inputId='start_date'
121+
name='start_date'
122122
placeholder='MM/DD/YYYY'
123123
rangePosition='start'
124+
onChange=(action 'onChange')
124125
value=data.speakersCall.startsAtDate}}
125126
</div>
126127
<div class="two wide field">
127128
<label for="start_time">&nbsp;</label>
128129
{{widgets/forms/time-picker type='text'
129-
inputId='start_time'
130+
name='start_time'
130131
placeholder='HH:MM'
131-
rangePosition='start'
132+
onChange=(action 'onChange')
132133
value=data.speakersCall.startsAtTime}}
133134
</div>
134135
<div class="five wide field">
135136
<label class="required" for="end_date">{{t 'Ends'}}</label>
136137
{{widgets/forms/date-picker type='text'
137-
inputId='end_date'
138+
name='end_date'
138139
placeholder='MM/DD/YYYY'
139140
rangePosition='end'
141+
onChange=(action 'onChange')
140142
value=data.speakersCall.endsAtDate}}
141143
</div>
142144
<div class="two wide field">
143145
<label for="end_time">&nbsp;</label>
144146
{{widgets/forms/time-picker type='text'
145-
inputId='end_time'
147+
name='end_time'
146148
placeholder='HH:MM'
147-
rangePosition='end'
149+
onChange=(action 'onChange')
148150
value=data.speakersCall.endsAtTime}}
149151
</div>
150152
<div class="five wide field">

app/utils/computed-helpers.js

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,13 +45,11 @@ export const computedSegmentedLink = function(property) {
4545
* @returns {*}
4646
*/
4747
export const computedDateTimeSplit = function(property, segmentFormat, endProperty) {
48-
console.log(property);
4948
return computed(property, {
5049
get() {
5150
return moment(this.get(property)).format(getFormat(segmentFormat));
5251
},
5352
set(key, value) {
54-
console.log(key, value, this);
5553
const newDate = moment(value, getFormat(segmentFormat));
5654
let oldDate = newDate;
5755
if (this.get(property)) {

0 commit comments

Comments
 (0)