initial commit
[namibia] / public / js / app / portal-workspace / retailview.js
1 ;(function(){
2
3         window._w.retailview = {
4
5                 itemId : null,
6                 itemData : null,
7                 formMeta : null,
8                 ti : null,
9                 newItem : false,
10
11                 onViewTemplateReady : function( template, event, eventData )
12                 {
13                         _w.retailview.ti = _t[template];
14                         _w.retailview.itemData = null;
15                         _w.retailview.itemId = App.Util.getUrlParam('id');
16                         _w.retailview.newItem = (0 == _w.retailview.itemId || null == _w.retailview.itemId)
17                                 ? true
18                                 : false;
19                         App.DataStore.loadSelectListData('retailers', true, 'Retail', 'Retail.SelectList');
20                         _w.retailview.setRetailViewFormMeta();
21                         _w.retailview.ti.hydrate(_w.retailview.formMeta);
22
23                         // Retrieve initial view data.
24                         if (_w.retailview.newItem)
25                         {
26                                 _w.retailview.itemData = {};
27                                 App.API.getTask(
28                                         'createRetail', 'Company', 'CompanyRetail.Create',
29                                         null, {}, function(){}, _w.taskContractError
30                                 );
31
32                         }
33                         else
34                         {
35                                 App.API.getTask(
36                                         'updateRetail:' + _w.retailview.itemId, 'Company', 'CompanyRetail.Update', null,
37                                         {'id':_w.retailview.itemId}, _w.retailview._onRetailViewDataReceived, _w.taskContractError
38                                 );
39                         }
40
41                 },
42
43                 onViewPublished : function( template, event, eventData )
44                 {
45                         $('#btnArchive').click(_w.retailview._routeToArchived);
46                         $('#btnActivate').click(_w.retailview._routeToActive);
47                         if (_w.retailview.newItem)
48                         {
49                                 _w.retailview._setupValidation();
50                         }
51
52                         if (!_w.retailview.newItem && null != _w.retailview.itemData)
53                         {
54                                 _w.retailview._onDataAndTemplate();
55                         }
56                 },
57
58                 _routeToActive : function()
59                 {
60                         if (!$('#frmRetailView').valid())
61                         {
62                                 return;
63                         }
64                         var data = _w.retailview._prepRetailUpdateData();
65                         data.CompanyRetail.archived = false;
66                         App.API.execTask(
67                                         'updateRetail:' + _w.retailview.itemId, data, {},
68                                         _w.retailview._onRetailUpdated, _w.taskExecError
69                                 );
70                 },
71
72                 _routeToArchived : function()
73                 {
74                         if (!$('#frmRetailView').valid())
75                         {
76                                 return;
77                         }
78                         var data = _w.retailview._prepRetailUpdateData();
79                         data.CompanyRetail.archived = true;
80                         App.API.execTask(
81                                         'updateRetail:' + _w.retailview.itemId, data, {},
82                                         _w.retailview._onRetailUpdated, _w.taskExecError
83                                 );
84                 },
85
86                 setRetailViewFormMeta : function( data )
87                 {
88                         if (!data)
89                         {
90                                 data = {};
91                         }
92                         _w.retailview.formMeta = {
93                                 'retail' : {
94                                         type        : 'select',
95                                         id          : 'retail',
96                                         title       : 'Retailer',
97                                         dataStoreId : 'retailers',
98                                         value       : data.retail ? data.retail.id : '',
99                                         disabled    : _w.retailview.newItem ? false : true
100                                 },
101                                 'username' : {
102                                         type  : 'input',
103                                         id    : 'username',
104                                         title : 'Username',
105                                         value : data.username ? data.username : '',
106                                         maxlength : 150
107                                 },
108                                 'password' : {
109                                         type  : 'input',
110                                         id    : 'password',
111                                         title : 'Password',
112                                         value : data.password ? data.password : '',
113                                         maxlength : 64
114                                 }
115                         };
116                 },
117
118                 _onDataAndTemplate : function() {
119                         if (!_w.retailview.newItem)
120                         {
121                                 if (_w.retailview.itemData.archived)
122                                 {
123                                         $('#btnActivate').show();
124                                 }
125                                 else
126                                 {
127                                         $('#btnArchive').show();
128                                 }
129                         }
130                         _w.retailview._setupValidation();
131                 },
132
133                 _onRetailViewDataReceived : function( response )
134                 {
135                         _w.retailview.itemId = response.Data.id;
136                         _w.retailview.itemData = response.Data;
137                         _w.retailview.setRetailViewFormMeta(response.Data);
138                         _w.retailview.ti.hydrate(_w.retailview.formMeta);
139                         if (_w.retailview.ti.published)
140                         {
141                                 _w.retailview._onDataAndTemplate();
142                         }
143                 },
144
145                 _setupValidation : function ()
146                 {
147                         $('#frmRetailView').validate({
148                                 "rules": {
149                                         retail: "required",
150                                         username: {required: true, maxlength: 150},
151                                         password: {required: true, maxlength: 64}
152                                 },
153                                 invalidHandler: function(event, validator) {
154                                     var errors = validator.numberOfInvalids();
155                                     if (0 < _w.valuationview.validations && errors) {
156                                       var message = errors == 1
157                                         ? 'You missed 1 field. It has been highlighted'
158                                         : 'You missed ' + errors + ' fields. They have been highlighted';
159                                       alert(message);
160                                     }
161                                     _w.valuationview.validations++;
162                                 },
163                                 submitHandler: function( form ) {
164                                         $('#btnUpdate').prop('disabled', true);
165                                         var data = _w.retailview._prepRetailUpdateData();
166                                         if (_w.retailview.newItem)
167                                         {
168                                                 App.API.execTask(
169                                                                 'createRetail', data, {},
170                                                                 _w.retailview._onRetailUpdated, _w.taskExecError
171                                                         );
172                                         }
173                                         else
174                                         {
175                                                 App.API.execTask(
176                                                                 'updateRetail:' + _w.retailview.itemId, data, {},
177                                                                 _w.retailview._onRetailUpdated, _w.taskExecError
178                                                         );
179                                         }
180                                 }
181                         });
182                         $('#btnUpdate').prop('disabled', false);
183                 },
184
185                 _prepRetailUpdateData : function()
186                 {
187                         var data = {CompanyRetail:_w.retailview.ti.harvest()};
188                         return data;
189                 },
190
191                 _onRetailUpdated : function( response )
192                 {
193                         window.location.hash = '/settings';
194                 }
195
196         };
197
198 })();