Working on the add class to admin reg level
authorSteve Sutton <steve@gaslightmedia.com>
Tue, 12 Sep 2017 18:15:54 +0000 (14:15 -0400)
committerSteve Sutton <steve@gaslightmedia.com>
Tue, 12 Sep 2017 18:15:54 +0000 (14:15 -0400)
It is adding the class level into the regEvent classes collection. I
have it setup for localStorage right now.

js/adminRegApp.js
js/collections/admin/regClasses.js
js/models/admin/regClass.js
js/views/admin/regClass.js
js/views/admin/regEvent.js
js/views/front/account.js
views/admin/registrations/eventEditLevels.html

index 4833fb9..c0a020f 100644 (file)
@@ -1 +1 @@
-app.Models.Admin.RegClass=Backbone.Model.extend({defaults:{id:"new",reg_event:0,name:"",descr:""},initialize:function(){this.rates=new app.Collections.Admin.RegRates}}),app.Models.Admin.RegEvent=Backbone.Model.extend({defaults:{name:"regEvent",event_name:"",event_code:"",notify_email:"",attendees_max:0,attendees_max_per_reg:0,reg_hold_minutes:0,cart_hold_days:0,terms:""},initialize:function(){this.classes=new app.Collections.Admin.RegClasses},setClasses:function(e){this.classes.reset(e)}}),app.Models.Admin.RegRate=Backbone.Model.extend({defaults:{reg_event:0,reg_class:"",name:"",start_days:0,end_days:0,base_rate:0,per_registrant:0,registrant_credits:0},initialize:function(){}}),app.Collections.Admin.RegClasses=Backbone.Collection.extend({model:app.Models.Admin.RegClass}),app.Collections.Admin.RegRates=Backbone.Collection.extend({model:app.Models.Admin.RegRate}),Backbone.emulateJSON=!0,Backbone.emulateHTTP=!0,app.Views.Admin.EventEditLevels=Backbone.View.extend({el:"#regApp",initialize:function(){this.event=new app.Views.Admin.RegEvent({model:regEvent}),this.render()},render:function(){return this.$el.append(this.event.render().el),this},events:{}}),app.Views.Admin.RegClass=Backbone.View.extend({tagName:"div",className:"glm-reg-level",template:_.template(jQuery("#regClass-template").html()),initialize:function(){return this.listenTo(this.model,"change",this.updateCount),this},events:{"click .edit-level":"editLevel"},editLevel:function(){this.$(".class-edit-form").show(),this.$(".class-label").hide(),this.$(".class-name").focus()},render:function(){return this.$el.html(this.template(this.model.toJSON())),this},addOne:function(e){if(e.isValid()){var t=new app.Views.Admin.Account({model:e});this.$el.append(t.render().el)}},addAll:function(){jQuery(".glm-reg-level").html("")}}),app.Views.Admin.RegEvent=Backbone.View.extend({tagName:"div",className:"glm-reg-event-item clearfix",template:_.template(jQuery("#regEvent-template").html()),initialize:function(){this.listenTo(this.model,"change",this.render)},events:{"click .add-reg-level":"addLevel"},addLevel:function(){console.log("Add Level Called");var e=new app.Views.Admin.RegClass({model:new app.Models.Admin.RegClass});this.$el.append(e.render().el)},render:function(){this.$el.html(this.template(this.model.toJSON()));var e=regEvent.classes.map(function(e){return new app.Views.Admin.RegClass({model:e}).render().el});return this.$el.append(e),this}});
\ No newline at end of file
+app.Models.Admin.RegClass=Backbone.Model.extend({defaults:{id:null,parent:0,reg_event:0,name:"",descr:""},initialize:function(){this.rates=new app.Collections.Admin.RegRates}}),app.Models.Admin.RegEvent=Backbone.Model.extend({defaults:{name:"regEvent",event_name:"",event_code:"",notify_email:"",attendees_max:0,attendees_max_per_reg:0,reg_hold_minutes:0,cart_hold_days:0,terms:""},initialize:function(){this.classes=new app.Collections.Admin.RegClasses},setClasses:function(e){this.classes.reset(e)}}),app.Models.Admin.RegRate=Backbone.Model.extend({defaults:{reg_event:0,reg_class:"",name:"",start_days:0,end_days:0,base_rate:0,per_registrant:0,registrant_credits:0},initialize:function(){}}),app.Collections.Admin.RegClasses=Backbone.Collection.extend({model:app.Models.Admin.RegClass,localStorage:new Backbone.LocalStorage("Classes")}),app.Collections.Admin.RegRates=Backbone.Collection.extend({model:app.Models.Admin.RegRate}),Backbone.emulateJSON=!0,Backbone.emulateHTTP=!0,app.Views.Admin.EventEditLevels=Backbone.View.extend({el:"#regApp",initialize:function(){this.event=new app.Views.Admin.RegEvent({model:regEvent}),this.render()},render:function(){return this.$el.append(this.event.render().el),this},events:{}}),app.Views.Admin.RegClass=Backbone.View.extend({tagName:"div",className:"glm-reg-level",template:_.template(jQuery("#regClass-template").html()),initialize:function(){return this.listenTo(this.model,"change",this.render),this},events:{"click .edit-level":"editLevel","click .class-update":"update","click .class-add":"add","click .class-cancel":"cancel"},update:function(){console.log("Update called");var e=this.$(".class-name").val().trim(),t=this.$(".class-descr").val().trim();this.model.save({name:e,descr:t}),this.$(".class-edit-form").hide(),this.$(".class-label").show()},add:function(){console.log("Add called");var e=this.$(".class-name").val().trim(),t=this.$(".class-descr").val().trim();this.model.set({name:e,descr:t}),this.model.get("parent").classes.create(this.model)},cancel:function(){console.log("Cancel called"),this.remove()},editLevel:function(){this.$(".class-edit-form").show(),this.$(".class-label").hide(),this.$(".class-name").focus()},render:function(){return this.$el.html(this.template(this.model.toJSON())),this},addOne:function(e){if(e.isValid()){var t=new app.Views.Admin.RegClasses({model:e});this.$el.append(t.render().el)}},addAll:function(){jQuery(".glm-reg-level").html("")}}),app.Views.Admin.RegEvent=Backbone.View.extend({tagName:"div",className:"glm-reg-event-item clearfix",template:_.template(jQuery("#regEvent-template").html()),initialize:function(){this.listenTo(this.model,"change",this.render),this.listenTo(this.model.classes,"add",this.addOne),this.listenTo(this.model.classes,"create",this.addOne),this.listenTo(this.model.classes,"reset",this.addAll)},events:{"click .add-reg-level":"addLevel"},addLevel:function(){console.log("Add Level Called");var e=new app.Models.Admin.RegClass({parent:this.model}),t=new app.Views.Admin.RegClass({model:e});this.$el.append(t.render().el)},render:function(){this.$el.html(this.template(this.model.toJSON()));var e=regEvent.classes.map(function(e){return new app.Views.Admin.RegClass({model:e}).render().el});return this.$el.append(e),this}});
\ No newline at end of file
index 7c25470..5c226b3 100644 (file)
@@ -4,4 +4,6 @@
 app.Collections.Admin.RegClasses = Backbone.Collection.extend({
     model: app.Models.Admin.RegClass,
 
+    localStorage: new Backbone.LocalStorage( 'Classes' ),
+
 });
index 53d2e29..1ba7314 100644 (file)
@@ -5,7 +5,8 @@ app.Models.Admin.RegClass = Backbone.Model.extend({
 
     // Defaults
     defaults: {
-        id: 'new',
+        id: null,
+        parent: 0,
         reg_event: 0,
         name: '',
         descr: '',
index 6abc32a..c93331d 100644 (file)
@@ -8,12 +8,39 @@ app.Views.Admin.RegClass = Backbone.View.extend({
     template: _.template( jQuery('#regClass-template').html() ),
 
     initialize: function(){
-        this.listenTo( this.model, 'change', this.updateCount );
+        this.listenTo( this.model, 'change', this.render );
         return this;
     },
 
     events: {
-        'click .edit-level': 'editLevel'
+        'click .edit-level': 'editLevel',
+        'click .class-update': 'update',
+        'click .class-add': 'add',
+        'click .class-cancel': 'cancel',
+    },
+
+    update: function(){
+        console.log('Update called');
+        var cName  = this.$('.class-name').val().trim();
+        var cDescr = this.$('.class-descr').val().trim();
+        this.model.save({ name: cName, descr: cDescr });
+        this.$('.class-edit-form').hide();
+        this.$('.class-label').show();
+    },
+
+    add: function(){
+        console.log('Add called');
+        var cName  = this.$('.class-name').val().trim();
+        var cDescr = this.$('.class-descr').val().trim();
+        this.model.set({ name: cName, descr: cDescr });
+        // Add this new model to the collection.
+        var parentEvent = this.model.get( 'parent' );
+        parentEvent.classes.create( this.model );
+    },
+
+    cancel: function(){
+        console.log('Cancel called');
+        this.remove();
     },
 
     editLevel: function(){
@@ -29,7 +56,7 @@ app.Views.Admin.RegClass = Backbone.View.extend({
 
     addOne: function( item ){
         if ( item.isValid() ) {
-            var view = new app.Views.Admin.Account({ model: item });
+            var view = new app.Views.Admin.RegClasses({ model: item });
             this.$el.append( view.render().el );
         }
     },
index cfec333..e1ca8e7 100644 (file)
@@ -12,16 +12,23 @@ app.Views.Admin.RegEvent = Backbone.View.extend({
     // Called when the view is first created
     initialize: function(){
         this.listenTo( this.model, 'change', this.render );
+        this.listenTo( this.model.classes, 'add', this.addOne );
+        this.listenTo( this.model.classes, 'create', this.addOne );
+        this.listenTo( this.model.classes, 'reset', this.addAll );
     },
 
     events: {
         'click .add-reg-level': 'addLevel',
+        //'click .class-add': 'add',
     },
 
     addLevel: function(){
         console.log( 'Add Level Called' );
         // create a new view and model and add it to classes and call render.
-        var view = new app.Views.Admin.RegClass({ model: new app.Models.Admin.RegClass });
+        // Create the model for the view and add it to the collection
+        var regClass = new app.Models.Admin.RegClass({ parent: this.model });
+        //this.model.classes.add( regClass );
+        var view = new app.Views.Admin.RegClass({ model: regClass });
         this.$el.append(view.render().el);
     },
 
index 335e360..6567c71 100644 (file)
@@ -41,7 +41,7 @@ app.Views.Front.Account = Backbone.View.extend({
         var regemail = this.$emailInput.val().trim();
 
         if ( regemail ) {
-            this.model.save({ email: regemail  });
+            this.model.save({ email: regemail });
         } else {
             this.clear(); // NEW
         }
index b9a6883..6fdb4f9 100644 (file)
     <h3>Registration Levels</h3>
     <a class="add-reg-level">Add Level</a>
     </script>
-    <script type="text/template" id="account-template">
-    <a class="glm-reg-level-registrant-delete">Delete</a>
-    <label class="registrant-label">
-        <span class="glm-reg-level-registrant-email"><%= email %></span>
-    </label>
-    <div class="registrant-edit">
-        <input type="text" class="editEmail" value="<%- email %>">
-        <input type="submit" class="saveRegistrant" value="Save">
-    </div>
-    </script>
     <script type="text/template" id="regClass-template">
-    <a>Delete Level</a>
-    <a class="edit-level">Edit</a>
-    <div class="class-label">
-        <h3><%= name %></h3>
-        <%= descr %>
-    </div>
-    <div class="class-edit-form">
-        <input class="class-name" type="text" name="reg_name_<% if (id) { %><%- id %><% } else { %> new <% } %>" value="<% if (name) { %><%- name %><% } %>">
-        <input class="class-descr" type="text" name="reg_descr_<% if (id) { %><%- id %><% } else { %> new <% } %>" size="90" value="<% if (descr) { %><%- descr %><% } %>">
-    </div>
-    <a class="add-reg-rate">Add Reg Rate</a>
-    </script>
-    <script type="text/template" id="eventReg-account-login">
-    <h4>Login</h4>
-    <a class="glm-reg-account-login" id="loginCancel">Close</a>
-    <input class="login">
-    <input class="password">
-    <input type="submit" class="accountLogin" value="Login">
+    <% if (id) { %>
+        <a>Delete Level</a>
+        <a class="edit-level">Edit</a>
+        <div class="class-label">
+            <h3><%= name %></h3>
+            <%= descr %>
+        </div>
+        <div class="class-edit-form">
+            <input class="class-name" type="text" name="reg_name_<%- id %>" value="<%- name %>">
+            <input class="class-descr" type="text" name="reg_descr_<%- id %>" size="90" value="<%- descr %>">
+            <a class="class-cancel">Cancel</a>
+            <a class="class-update">Update</a>
+        </div>
+        <a class="add-reg-rate">Add Reg Rate</a>
+    <% } else { %>
+        <div class="class-add-form">
+            <input class="class-name" type="text" name="reg_name_new" value="">
+            <input class="class-descr" type="text" name="reg_descr_new" size="90" value="">
+            <a class="class-cancel">Cancel</a>
+            <a class="class-add">Add</a>
+        </div>
+    <% } %>
     </script>
     {/literal}
     <div class="glm-reg-event-list" id="regApp">