user registration remove company and owner etc
[namibia] / public / js / app / admin-workspace / newsletters.js
1 ;(function(){
2
3         window._w.newsletters = {
4
5                 itemId        : null,
6                 itemData      : null,
7                 formMeta      : null,
8                 ti            : null,
9                 newItem       : false,
10
11                 onTemplateReady : function( template, event, eventData )
12                 {
13                         _w.newsletters.ti = _t[template];
14
15                         _w.newsletters.initGrids();
16
17                         // Newsletter grid
18                         if (null == App.API.taskContract('gridSystemNewsletter'))
19                         {
20                                 App.API.getTask(
21                                                 'gridSystemNewsletter', 'Newsletter', 'Newsletter.Grid', null,
22                                                 {}, _w.newsletters.loadNewsletterGrid, _w.taskContractError
23                                                 );
24                         }
25                         else
26                         {
27                                 _w.newsletters.loadNewsletterGrid( null, {}, {} );
28                         }
29                 },
30
31                 onTemplatePublished : function( template, event, eventData )
32                 {
33                         $(".gridNewsletterFilter").keypress(function (evt) {
34                                 var charCode = evt.charCode || evt.keyCode;
35                                 if (charCode  == 13) { //Enter key's keycode
36                                         $('#btnNewsletterSearch').click();
37                                 }
38                         });
39
40                         _w.newsletters.ti = _t[template];
41
42                         // Newsletter grid
43                         $('#btnNewsletterAdd').click(function() {
44                                 window.location.hash = '/newsletterview?id=0';
45                         });
46             $('#btnNewsletterClearSearch').click(_w.newsletters.clearNewsletterGridContext);
47             $('#btnNewsletterSearch').click(_w.newsletters.searchNewsletterGrid);
48
49                 },
50
51                 initGrids : function()
52                 {
53
54                         _w.newsletters.ti.hydrate({
55                                 // Newsletter grid
56                                 'gridNewsletterTitle': 'Manage newsletters',
57                                 'gridNewsletterColumnHeaders': {
58                                         constructor: 'GridColumnHeader',
59                                         items: {
60                                                 Subject: {
61                                                         id: 'gridNewsletterColumn_Subject',
62                                                         title: 'SUBJECT',
63                                                         orderAsc: {
64                                                                 id: 'gridNewsletterOrder_SubjectAsc',
65                                                                 bind: $.proxy(_w.newsletters.orderNewsletterGrid, this, 'newsletter.subject', 'ASC')
66                                                         },
67                                                         orderDesc: {
68                                                                 id: 'gridNewsletterOrder_SubjectDesc',
69                                                                 bind: $.proxy(_w.newsletters.orderNewsletterGrid, this, 'newsletter.subject', 'DESC')
70                                                         }
71                                                 },
72                                                 Created: {
73                                                         id: 'gridNewsletterColumn_Created',
74                                                         title: 'CREATED',
75                                                         orderAsc: {
76                                                                 id: 'gridNewsletterOrder_CreatedAsc',
77                                                                 bind: $.proxy(_w.newsletters.orderNewsletterGrid, this, 'newsletter.created', 'ASC')
78                                                         },
79                                                         orderDesc: {
80                                                                 id: 'gridNewsletterOrder_CreatedDesc',
81                                                                 bind: $.proxy(_w.newsletters.orderNewsletterGrid, this, 'newsletter.created', 'DESC')
82                                                         }
83                                                 },
84                                                 SentTo: {
85                                                         id: 'gridNewsletterColumn_SentTo',
86                                                         title: 'SENT TO',
87                                                         orderAsc: {
88                                                                 id: 'gridNewsletterOrder_SentToAsc',
89                                                                 bind: $.proxy(_w.newsletters.orderNewsletterGrid, this, 'newsletter.sentTo', 'ASC')
90                                                         },
91                                                         orderDesc: {
92                                                                 id: 'gridNewsletterOrder_SentToDesc',
93                                                                 bind: $.proxy(_w.newsletters.orderNewsletterGrid, this, 'newsletter.sentTo', 'DESC')
94                                                         }
95                                                 },
96                                                 Status: {
97                                                         id: 'gridNewsletterColumn_Status',
98                                                         title: 'STATUS',
99                                                         orderAsc: {
100                                                                 id: 'gridNewsletterOrder_StatusAsc',
101                                                                 bind: $.proxy(_w.newsletters.orderNewsletterGrid, this, 'newsletter.jobState', 'ASC')
102                                                         },
103                                                         orderDesc: {
104                                                                 id: 'gridNewsletterOrder_StatusDesc',
105                                                                 bind: $.proxy(_w.newsletters.orderNewsletterGrid, this, 'newsletter.jobState', 'DESC')
106                                                         }
107                                                 }
108                                         }
109                                 },
110                                 'gridNewsletterColumnFilters': {
111                                         constructor: 'GridColumnFilter',
112                                         items: {
113                                                 Subject : {
114                                                         id: 'gridNewsletterFilter_Subject',
115                                                         context: 'gridNewsletterFilter'
116                                                 },
117                                                 Created: {
118                                                         id: 'gridNewsletterFilter_Created',
119                                                         context: 'gridNewsletterFilter'
120                                                 },
121                                                 SentTo: {
122                                                         id: 'gridNewsletterFilter_SentTo',
123                                                         context: 'gridNewsletterFilter'
124                                                 },
125                                                 Status: {
126                                                         id: 'gridNewsletterFilter_Status',
127                                                         context: 'gridNewsletterFilter'
128                                                 }
129                                         }
130                                 },
131                                 'gridNewsletterRowRepeater': {},
132                                 'gridNewsletterPager': {}
133                         });
134
135                 },
136
137                 loadNewsletterGrid : function( contract, data, options )
138                 {
139                         App.API.execTask(
140                                         'gridSystemNewsletter', data, options,
141                                         _w.newsletters._onNewsletterGridDataReceived, _w.taskExecError
142                                         );
143                 },
144
145                 pageNewsletterGrid : function( page )
146                 {
147                         _w.newsletters.loadNewsletterGrid( {}, {"Grid":{"Page":page}} );
148                 },
149
150                 clearNewsletterGridContext : function()
151                 {
152                         $('.gridNewsletterContext').val('');
153                         $('.gridNewsletterFilter').val('');
154                         _w.newsletters.searchNewsletterGrid();
155                 },
156
157                 searchNewsletterGrid : function()
158                 {
159                         var filter = {
160                                         count: 0,
161                                         filters: {}
162                         };
163                         filter = _w.filterIfnotEmpty(filter, 'gridNewsletterFilter_Subject', 'newsletter.subject');
164                         filter = _w.filterIfnotEmpty(filter, 'gridNewsletterFilter_Created', 'newsletter.created');
165                         filter = _w.filterIfnotEmpty(filter, 'gridNewsletterFilter_Status', 'newsletter.jobState');
166                         filter = _w.filterIfnotEmpty(filter, 'gridNewsletterFilter_SentTo', 'newsletter.sentTo');
167                         var request = {"Grid":{
168                             "Page": 1,
169                             "Filter": filter.filters
170                           }};
171                         _w.newsletters.loadNewsletterGrid( null, request, {} );
172                 },
173
174                 _onNewsletterGridDataReceived : function( response )
175                 {
176                         _w.newsletters.ti.hydrateParam('gridNewsletterRowRepeater', {});
177                         _w.populateFilters(response.Data.Meta.Filters, {
178                                 'newsletter.subject'    : 'gridNewsletterFilter_Subject',
179                                 'newsletter.created'    : 'gridNewsletterFilter_Created',
180                                 'newsletter.jobState'   : 'gridNewsletterFilter_Status',
181                                 'newsletter.sentTo'     : 'gridNewsletterFilter_SentTo'
182                         });
183                         var gridData = [];
184                         for (var i = 0; i < response.Data.DataSet.length; i++)
185                         {
186                                 var row = response.Data.DataSet[i];
187                                 gridData.push({
188                                         url: 'newsletterview',
189                                         prepend: {},
190                                         style: {},
191                                         items: {
192                                                 'id'         : row.id,
193                                                 'Subject'    : row.subject,
194                                                 'Created'    : row.created,
195                                                 'SentTo'     : row.sentTo,
196                                                 'Status'     : row.jobState
197                                 }
198                                 });
199                         }
200                         _w.newsletters.ti.hydrateParam('gridNewsletterRowRepeater', {
201                                 constructor : 'GridDataRow',
202                                 items       : gridData
203                         });
204                         response.Data.Meta.itemName = 'newsletterPager';
205                         response.Data.Meta.bind = _w.newsletters.pageNewsletterGrid;
206                         _w.newsletters.ti.hydrateParam('gridNewsletterPager', {
207                                 constructor : 'GridPager',
208                                 items       : [response.Data.Meta]
209                         });
210                 },
211
212                 orderNewsletterGrid : function(field, direction)
213                 {
214                         var order = {};
215                         order[field] = direction;
216                         _w.newsletters.loadNewsletterGrid( {}, {"Grid":{"Page": 1, "OrderBy": order}} );
217                 }
218
219         };
220
221 })();