Adding model collection view for the regTime.
Setup to add registrant from the regTime view.
setClassRegistrants: function( registrants ){
for ( var i = 0; i < registrants.length; i++ ) {
var foundClass = this.classes.findWhere({ id: registrants[i].class_id });
- console.log( foundClass );
if ( foundClass != undefined ) {
- foundClass.registrants.create( registrants[i] );
- var newReg = foundClass.registrants.pop();
- foundClass.set({selectedTime: newReg.get( 'reg_time' ) });
+ var foundRegTime = _.where(app.Times, { id: registrants[i].reg_time });
+ // Now add the time if needed
+ var hasRegTime = _.findWhere(foundClass, { reg_time: foundRegTime.id });
+ if ( !hasRegTime ) {
+ foundClass.regTimes.create( foundRegTime[0] );
+ hasRegTime = foundClass.regTimes.findWhere({ id: foundRegTime[0].id });
+ }
+ // Add the registrant
+ var nRegTime = foundClass.regTimes.findWhere({id: hasRegTime.get('id')});
+ // console.log( nRegTime );
+ nRegTime.registrants.create( registrants[i] );
+
+ // var newReg = foundClass.registrants.pop();
+ // foundClass.set({selectedTime: newReg.get( 'reg_time' ) });
}
}
},
},
updateTimeSelection: function(e){
- // console.log(e);
- // if ( this.newRegAccount ) {
- // this.newRegAccount.destroy();
- // this.newRegAccountView.remove();
- // }
// Check to see if the time is already in the collection
// If it is then do nothing
- var findRegTime = this.model.regTimes.get( e.currentTarget.value );
+ var findRegTime = this.model.regTimes.findWhere({ id: e.currentTarget.value });
if ( !findRegTime ) {
this.model.set({ selectedTime: parseInt( e.currentTarget.value ) });
// Add the RegTime model/view into this view
- var foundRegTime = app.times.get( e.currentTarget.value );
- foundRegTime.set({parent: this.model});
- this.model.regTimes.create( foundRegTime );
+ // console.log( e.currentTarget.value );
+ console.log( app.Times );
+ var targetTime = null;
+ for ( var i = 0; i < app.Times.length; i++ ) {
+ if ( app.Times[i].id == e.currentTarget.value ) {
+ targetTime = app.Times[i];
+ }
+ }
+ if ( targetTime ) {
+ var selectedTime = new app.Models.Front.RegTime( targetTime );
+ selectedTime.set({parent: this.model});
+ this.model.regTimes.create( selectedTime );
+ }
}
},
});
-// js/views/regClass.js
+// js/views/front/regTime.js
var newId = 0;
app.Views.Front.RegTime = Backbone.View.extend({
tagName: 'div',
template: _.template( jQuery('#regTime-template').html() ),
initialize: function(){
+ this.listenTo( this.model.registrants, 'add', this.addOne );
+ this.listenTo( this.model.registrants, 'create', this.addOne );
+ this.listenTo( this.model.registrants, 'remove', this.deleteOne );
+ this.listenTo( this.model, 'change', this.render );
return this;
},
var state = this.$('.add_reg_state').val().trim();
var zip = this.$('.add_reg_zip').val().trim();
var country = this.$('.add_reg_country').val().trim();
- var sTime = this.model.get( 'selectedTime' );
+ var sTime = this.model.get( 'rate_id' );
if ( this.$('#add_reg-select-time').length ) {
var times = this.model.get( 'times' );
- var rateId = null;
- // Setup the needed reg_rate
- _.each( times, function( time ){
- if ( time.id == sTime ) {
- rateId = time.rate_id;
- }
- } );
} else {
var times = this.model.get( 'times' );
- var rateId = null;
- _.each( times, function( time ){
- rateId = time.rate_id;
- } );
+ }
+ var rateId = this.model.get( 'rate_id' );
+ if ( !rateId ) {
+ console.log( 'No rate id!' );
+ console.log( sTime );
+ return;
}
if ( fname === '' || lname === '' ) {
alert( 'First and Last name required!' );
reg_request: regRequest.id,
reg_time: this.model.get( 'id' ),
reg_event: this.model.get( 'reg_event' ), // Todo: use correct reg_event
- reg_class: this.model.get( 'id' ), // Todo: use correct reg_class
+ reg_class: this.model.get( 'parent' ).id, // Todo: use correct reg_class
event_name: regEvent.get( 'event_name' ),
reg_rate: rateId,
email: email,
}
},
+ addOne: function( item ){
+ this.model.set({selectedTime: item.get('reg_time') })
+ this.render();
+ },
+ deleteOne: function( item ){
+ this.render();
+ },
});
app.Views.Front.RegistrantForm = Backbone.View.extend({
setClassRegistrants: function( registrants ){
for ( var i = 0; i < registrants.length; i++ ) {
var foundClass = this.classes.findWhere({ id: registrants[i].class_id });
- console.log( foundClass );
if ( foundClass != undefined ) {
- foundClass.registrants.create( registrants[i] );
- var newReg = foundClass.registrants.pop();
- foundClass.set({selectedTime: newReg.get( 'reg_time' ) });
+ var foundRegTime = _.where(app.Times, { id: registrants[i].reg_time });
+ // Now add the time if needed
+ var hasRegTime = _.findWhere(foundClass, { reg_time: foundRegTime.id });
+ if ( !hasRegTime ) {
+ foundClass.regTimes.create( foundRegTime[0] );
+ hasRegTime = foundClass.regTimes.findWhere({ id: foundRegTime[0].id });
+ }
+ // Add the registrant
+ var nRegTime = foundClass.regTimes.findWhere({id: hasRegTime.get('id')});
+ // console.log( nRegTime );
+ nRegTime.registrants.create( registrants[i] );
+
+ // var newReg = foundClass.registrants.pop();
+ // foundClass.set({selectedTime: newReg.get( 'reg_time' ) });
}
}
},
},
updateTimeSelection: function(e){
- // console.log(e);
- // if ( this.newRegAccount ) {
- // this.newRegAccount.destroy();
- // this.newRegAccountView.remove();
- // }
// Check to see if the time is already in the collection
// If it is then do nothing
- var findRegTime = this.model.regTimes.get( e.currentTarget.value );
+ var findRegTime = this.model.regTimes.findWhere({ id: e.currentTarget.value });
if ( !findRegTime ) {
this.model.set({ selectedTime: parseInt( e.currentTarget.value ) });
// Add the RegTime model/view into this view
- var foundRegTime = app.times.get( e.currentTarget.value );
- foundRegTime.set({parent: this.model});
- this.model.regTimes.create( foundRegTime );
+ // console.log( e.currentTarget.value );
+ console.log( app.Times );
+ var targetTime = null;
+ for ( var i = 0; i < app.Times.length; i++ ) {
+ if ( app.Times[i].id == e.currentTarget.value ) {
+ targetTime = app.Times[i];
+ }
+ }
+ if ( targetTime ) {
+ var selectedTime = new app.Models.Front.RegTime( targetTime );
+ selectedTime.set({parent: this.model});
+ this.model.regTimes.create( selectedTime );
+ }
}
},
-// js/views/regClass.js
+// js/views/front/regTime.js
var newId = 0;
app.Views.Front.RegTime = Backbone.View.extend({
tagName: 'div',
template: _.template( jQuery('#regTime-template').html() ),
initialize: function(){
+ this.listenTo( this.model.registrants, 'add', this.addOne );
+ this.listenTo( this.model.registrants, 'create', this.addOne );
+ this.listenTo( this.model.registrants, 'remove', this.deleteOne );
+ this.listenTo( this.model, 'change', this.render );
return this;
},
var state = this.$('.add_reg_state').val().trim();
var zip = this.$('.add_reg_zip').val().trim();
var country = this.$('.add_reg_country').val().trim();
- var sTime = this.model.get( 'selectedTime' );
+ var sTime = this.model.get( 'rate_id' );
if ( this.$('#add_reg-select-time').length ) {
var times = this.model.get( 'times' );
- var rateId = null;
- // Setup the needed reg_rate
- _.each( times, function( time ){
- if ( time.id == sTime ) {
- rateId = time.rate_id;
- }
- } );
} else {
var times = this.model.get( 'times' );
- var rateId = null;
- _.each( times, function( time ){
- rateId = time.rate_id;
- } );
+ }
+ var rateId = this.model.get( 'rate_id' );
+ if ( !rateId ) {
+ console.log( 'No rate id!' );
+ console.log( sTime );
+ return;
}
if ( fname === '' || lname === '' ) {
alert( 'First and Last name required!' );
reg_request: regRequest.id,
reg_time: this.model.get( 'id' ),
reg_event: this.model.get( 'reg_event' ), // Todo: use correct reg_event
- reg_class: this.model.get( 'id' ), // Todo: use correct reg_class
+ reg_class: this.model.get( 'parent' ).id, // Todo: use correct reg_class
event_name: regEvent.get( 'event_name' ),
reg_rate: rateId,
email: email,
}
},
+ addOne: function( item ){
+ this.model.set({selectedTime: item.get('reg_time') })
+ this.render();
+ },
+ deleteOne: function( item ){
+ this.render();
+ },
});
} // - End loop through events.
}
- // echo '<pre>$registrants: ' . print_r( $registrants, true ) . '</pre>';
+ echo '<pre>$registrants: ' . print_r( $registrants, true ) . '</pre>';
// Compile template data
$templateData = array(
</div>
{/literal}{if $regEvent.time_specific.value}
<div>
- Selected Time: <span id="reg-time-display-{literal}<%= id %>{/literal}">{literal}<%= reg_time_text %>{/literal}</span>
+ <!-- Selected Time: <span id="reg-time-display-{literal}<%= id %>{/literal}">{literal}<%= reg_time_text %>{/literal}</span> -->
<input type="hidden" id="reg-time-{literal}<%= id %>{/literal}" value="{literal}<%- reg_time %>{/literal}">
</div>
{/if}{literal}
Models: { Front: {}, Admin: {} },
Collections: { Front: {}, Admin: {} },
Views: { Front: {}, Admin: {} },
+ Times: {$regTimesJSON},
isValidEmail: function( email ){
var regex = {literal}/^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;{/literal}
return regex.test(email);
regEvent.setClasses( {$regClassesJSON} );
regEvent.setClassRegistrants( {$regJSON} );
var glmApp = new app.Views.Front.App();
- app.times = new app.Collections.Front.RegTimes( {$regTimesJSON} );
});
</script>