11 onViewTemplateReady : function( template, event, eventData )
13 _w.clubview.ti = _t[template];
14 _w.clubview.initGrid();
16 _w.clubview.setClubViewFormMeta();
17 _w.clubview.ti.hydratePartial(_w.clubview.formMeta);
19 // Retrieve initial view data.
20 _w.clubview.itemId = App.Util.getUrlParam('id');
21 if (0 == _w.clubview.itemId || null == _w.clubview.itemId)
23 _w.clubview.newItem = true;
24 _w.clubview.itemData = {};
26 'createClub', 'PriceGuide', 'Club.Create',
27 null, {}, function(){}, _w.taskContractError
33 _w.clubview.newItem = false;
34 App.DataStore.loadSelectListData('allowedInvites', false, 'Company', 'Company.InviteSelectList', null, {Filter:{club:_w.clubview.itemId}});
36 'inviteMember', 'PriceGuide', 'Member.Invite',
37 null, {}, function(){}, _w.taskContractError
40 'updateClub:' + _w.clubview.itemId, 'PriceGuide', 'Club.Update', null,
41 {'id':_w.clubview.itemId}, $.proxy( _w.clubview._onClubViewDataReceived, this ), _w.taskContractError
44 if (null == App.API.taskContract('gridMember'))
47 'gridMember', 'PriceGuide', 'Member.Grid', null,
48 {}, _w.clubview.loadMemberGrid, _w.taskContractError
53 _w.clubview.loadMemberGrid( null, {}, {} );
59 onViewPublished : function( template, event, eventData )
61 $(".gridMemberFilter").keyup(function (evt) {
62 var charCode = evt.charCode || evt.keyCode;
63 if (charCode == 13) { //Enter key's keycode
64 $('#btnMemberSearch').click();
68 if (_w.clubview.newItem)
70 _w.clubview._setupValidation();
71 $('#invitesection').hide();
72 _w.clubview.setClubViewFormMeta();
73 _w.clubview.ti.hydratePartial(_w.clubview.formMeta);
77 $('#btnInvite').click(function()
79 var members = $('#company').val();
82 alert('Please select at least 1 new member to invite.');
86 for (var i = 0; i < members.length; i++)
91 club : _w.clubview.itemId,
96 App.API.execTaskMulti(
97 'inviteMember', data, {},
98 _w.clubview._onMembersInvited, _w.taskExecError
103 $('#btnMemberClearSearch').click(_w.clubview.clearMemberGridContext);
104 $('#btnMemberSearch').click(_w.clubview.searchMemberGrid);
106 if (!_w.clubview.newItem && null != _w.clubview.itemData)
108 _w.clubview._setupValidation();
112 setClubViewFormMeta : function( data )
118 _w.clubview.formMeta = {
123 value : data.name ? data.name : ''
128 title : 'Use as Send to Price Guide from app',
129 value : data.useAsDefault ? data.useAsDefault : false
135 dataStoreId : 'allowedInvites',
137 value : data.useAsDefault ? data.useAsDefault : false
142 _onClubViewDataReceived : function( response )
144 _w.clubview.itemId = response.Data.id;
145 _w.clubview.itemData = response.Data;
146 _w.clubview.setClubViewFormMeta(response.Data);
147 _w.clubview.ti.hydratePartial(_w.clubview.formMeta);
148 if (_w.clubview.ti.published)
150 _w.clubview._setupValidation();
154 _setupValidation : function ()
156 $('#frmClubView').validate({
158 name: {required: true}
162 minlength: "This field is required."
165 submitHandler: function( form ) {
166 $('#btnUpdate').prop('disabled', true);
167 var data = _w.clubview._prepClubUpdateData();
168 if (_w.clubview.newItem)
171 'createClub', data, {},
172 _w.clubview._onClubUpdated, _w.taskExecError
178 'updateClub:' + _w.clubview.itemId, data, {},
179 _w.clubview._onClubUpdated, _w.taskExecError
184 $('#btnUpdate').prop('disabled', false);
187 _prepClubUpdateData : function()
189 return {Club:_w.clubview.ti.harvest()};
192 _onMembersInvited : function ( responses )
194 _w.clubview.loadMemberGrid();
197 _onClubUpdated : function( response )
199 window.location.hash = '/settings';
202 initGrid : function()
204 _w.clubview.ti.hydrate({
205 // Club membership grid
206 'gridMemberTitle': 'My club members',
207 'gridMemberColumnHeaders': {
208 constructor: 'GridColumnHeader',
211 id: 'gridMemberColumn_Dealer',
214 id: 'gridMemberOrder_DealerAsc',
215 bind: $.proxy(_w.clubview.orderMemberGrid, this, 'company.name', 'ASC')
218 id: 'gridMemberOrder_DealerDesc',
219 bind: $.proxy(_w.clubview.orderMemberGrid, this, 'company.name', 'DESC')
223 id: 'gridMemberColumn_FirstName',
226 id: 'gridMemberOrder_FirstNameAsc',
227 bind: $.proxy(_w.clubview.orderMemberGrid, this, 'contact.firstName', 'ASC')
230 id: 'gridMemberOrder_FirstNameDesc',
231 bind: $.proxy(_w.clubview.orderMemberGrid, this, 'contact.firstName', 'DESC')
235 id: 'gridMemberColumn_FamilyName',
238 id: 'gridMemberOrder_FamilyNameAsc',
239 bind: $.proxy(_w.clubview.orderMemberGrid, this, 'contact.familyName', 'ASC')
242 id: 'gridMemberOrder_FamilyNameDesc',
243 bind: $.proxy(_w.clubview.orderMemberGrid, this, 'contact.familyName', 'DESC')
247 id: 'gridMemberColumn_Email',
250 id: 'gridMemberOrder_EmailAsc',
251 bind: $.proxy(_w.clubview.orderMemberGrid, this, 'contact.email', 'ASC')
254 id: 'gridMemberOrder_EmailDesc',
255 bind: $.proxy(_w.clubview.orderMemberGrid, this, 'contact.email', 'DESC')
259 id: 'gridMemberColumn_Status',
262 id: 'gridMemberOrder_StatusAsc',
263 bind: $.proxy(_w.clubview.orderMemberGrid, this, 'mmbr.status', 'ASC')
266 id: 'gridMemberOrder_StatusDesc',
267 bind: $.proxy(_w.clubview.orderMemberGrid, this, 'mmbr.status', 'DESC')
272 'gridMemberColumnFilters': {
273 constructor: 'GridColumnFilter',
276 id: 'gridMemberFilter_Dealer',
277 context: 'gridMemberFilter'
280 id: 'gridMemberFilter_FirstName',
281 context: 'gridMemberFilter'
284 id: 'gridMemberFilter_FamilyName',
285 context: 'gridMemberFilter'
288 id: 'gridMemberFilter_Email',
289 context: 'gridMemberFilter'
292 id: 'gridMemberFilter_Status',
293 context: 'gridMemberFilter'
297 'gridMemberRowRepeater': {},
298 'gridMemberPager': {}
303 loadMemberGrid : function( contract, data, options )
310 data.Grid = {Filter:{}};
312 if (!data.Grid.Filter)
314 data.Grid.Filter = {};
316 data.Grid.Filter['club.id'] = _w.clubview.itemId;
319 'gridMember', data, options,
320 _w.clubview._onMemberGridDataReceived, _w.taskExecError
324 pageMemberGrid : function( page )
326 _w.clubview.loadMemberGrid( {}, {"Grid":{"Page":page}} );
329 clearMemberGridContext : function()
331 $('.gridMemberContext').val('');
332 $('.gridMemberFilter').val('');
333 _w.clubview.searchMemberGrid();
336 searchMemberGrid : function()
342 filter = _w.filterIfnotEmpty(filter, 'gridMemberFilter_Dealer', 'allowedCompany.name');
343 filter = _w.filterIfnotEmpty(filter, 'gridMemberFilter_FirstName', 'contact.firstName');
344 filter = _w.filterIfnotEmpty(filter, 'gridMemberFilter_FamilyName', 'contact.familyName');
345 filter = _w.filterIfnotEmpty(filter, 'gridMemberFilter_Email', 'contact.email');
346 filter = _w.filterIfnotEmpty(filter, 'gridMemberFilter_Status', 'mmbr.status');
348 var request = {"Grid":{
350 "Filter": filter.filters
352 _w.clubview.loadMemberGrid( null, request, {} );
355 _onMemberGridDataReceived : function( response )
357 _w.clubview.ti.hydrateParam('gridMemberRowRepeater', {});
360 for (var i = 0; i < response.Data.DataSet.length; i++)
362 var row = response.Data.DataSet[i];
369 'id' : {'id':row.id,'clubId':row.club.id},
370 'Dealer' : row.company.name,
371 'FirstName' : row.company.contact.firstName,
372 'FamilyName' : row.company.contact.familyName,
373 'Email' : row.company.contact.email,
374 'Status' : row.status
378 _w.clubview.ti.hydrateParam('gridMemberRowRepeater', {
379 constructor : 'GridDataRow',
382 response.Data.Meta.itemName = 'memberPager';
383 response.Data.Meta.bind = _w.clubview.pageMemberGrid;
384 _w.clubview.ti.hydrateParam('gridMemberPager', {
385 constructor : 'GridPager',
386 items : [response.Data.Meta]
390 orderMemberGrid : function(field, direction)
393 order[field] = direction;
394 _w.clubview.loadMemberGrid( {}, {"Grid":{"Page": 1, "OrderBy": order}} );