width: 100%;
display: none;
}
+.registrant-add {
+ width: 100%;
+ clear: both;
+}
.editing .registrant-edit {
display: block;
}
.editing .registrant-label {
display: none;
}
-.registrant-edit input[type='text'] {
+.registrant-edit input[type='text'],
+.registrant-add input[type='text']
+{
width: 40% !important;
float: left;
margin-right: 1rem;
}
-.registrant-edit input[type='submit'] {
+.registrant-edit input[type='submit'],
+.registrant-add input[type='submit'] {
width: 10%;
float: left;
padding: .5rem .2rem;
margin: 0;
font-size: .75rem;
}
+.glm-reg-level-registrant-delete {
+ float: right;
+}
+label.registrant-label {
+ width: 80%;
+}
// eventRegApp.js
var app = app || {};
-jQuery(document).ready(function($){
+var registrant1 = new app.EventRegistrant({ 'name': 'Steve Sutton', 'email': 'steve@gaslightmedia.com' }),
+ registrant2 = new app.EventRegistrant({ 'name': 'Laury Garcia van Rooiken', 'email': 'laury@gaslightmedia.com' }),
+ registrant3 = new app.EventRegistrant({ 'name': 'Anthony Talarico', 'email': 'talarico@gaslightmedia.com' });
- var registrant1 = new app.EventRegistrant({ 'name': 'Steve Sutton', 'email': 'steve@gaslightmedia.com' }),
- registrant2 = new app.EventRegistrant({ 'name': 'Laury Garcia van Rooiken', 'email': 'laury@gaslightmedia.com' }),
- registrant3 = new app.EventRegistrant({ 'name': 'Anthony Talarico', 'email': 'talarico@gaslightmedia.com' });
+app.EventRegistrants = new app.EventRegistrantList();
- app.EventRegistrants = new app.EventRegistrantList( [
- registrant1,
- registrant2,
- registrant3
- ] );
+jQuery(document).ready(function($){
new app.EventRegistrantListView();
- console.log( app.EventRegistrants );
});
// Event Registrant Model
app.EventRegistrant = Backbone.Model.extend({
+
// Default registrant values
defaults: {
name: '',
email: '',
},
+ initialize: function(){
+ this.on( 'invalid', function( model, error ){
+ console.log(error);
+ });
+ },
+
+ validate: function( attribs, options ){
+ if ( attribs.name === undefined || attribs.name === '' ) {
+ return 'Need a name!';
+ }
+ if ( attribs.email === undefined || attribs.email === '' ) {
+ return 'Need an email address!';
+ }
+ },
+
});
eventRegistrantTpl: _.template( $('#eventRegistrant-template').html() ),
events: {
- 'dblclick label': 'edit',
+ 'click label': 'edit',
+ 'click .glm-reg-level-registrant-delete': 'deleteOne',
'click .saveRegistrant': 'close',
},
initialize: function(){
this.listenTo( this.model, 'change', this.render );
+ this.listenTo( this.model, 'destroy', this.remove );
return this;
},
return this;
},
+ deleteOne: function(){
+ this.model.destroy();
+ },
+
edit: function(){
this.$el.addClass( 'editing' );
this.$nameInput.focus();
el: '.glm-reg-level',
initialize: function(){
+ this.$newName = this.$('.addName');
+ this.$newEmail = this.$('.addEmail');
+
this.listenTo( app.EventRegistrants, 'add', this.addOne );
this.listenTo( app.EventRegistrants, 'reset', this.addAll );
app.EventRegistrants.fetch();
//this.render();
},
+ deleteOne: function( el ){
+ console.log( el );
+ console.log( 'deleteOne called on listView' );
+ //app.EventRegistrants.fetch();
+ },
+
+ events: {
+ 'click .addRegistrant': 'newEntry',
+ },
+
+ newEntry: function(){
+ if ( !this.$newName.val().trim() || !this.$newEmail.val().trim() ) {
+ return;
+ }
+ var emailMatches = app.EventRegistrants.where({email: this.$newEmail.val().trim()});
+ app.EventRegistrants.create( this.newAttributes() );
+ this.$newName.val('');
+ this.$newEmail.val('');
+ },
+
+ newAttributes: function(){
+ return {
+ name: this.$newName.val().trim(),
+ email: this.$newEmail.val().trim()
+ };
+ },
+
addOne: function(item){
- var view = new app.EventRegistrantView({ model: item });
- this.$el.append( view.render().el );
+ if ( item.isValid() ) {
+ var view = new app.EventRegistrantView({ model: item });
+ this.$el.append( view.render().el );
+ }
},
addAll: function(){
<p> - event description - </p>
</script>
<script type="text/template" id="eventRegistrant-template">
+ <a class="glm-reg-level-registrant-delete">Delete</a>
<label class="registrant-label">
<span class="glm-reg-level-registrant-name"><%= name %></span>
<span class="glm-reg-level-registrant-email"><%= email %></span>
<div class="glm-reg-level">
<h3>{$level.name}</h3>
<p>{$level.descr}</p>
- <span class="glm-reg-level-add-registrant">+</span>
+ <div class="registrant-add clearfix">
+ <input type="text" class="addName" placeholder="Enter Name">
+ <input type="text" class="addEmail" placeholder="Enter Email Address">
+ <input type="submit" class="addRegistrant" value="Add">
+ </div>
+ <!-- <span class="glm-reg-level-add-registrant">+</span> -->
</div>
{/foreach}
<div class="glm-reg-submit">