initial commit
[namibia] / public / js / app / portal-workspace / replyview.js
1 ;(function(){
2
3         window._w.replyview = {
4
5                 auctionId : null,
6                 itemId    : null,
7                 itemData  : null,
8                 formMeta  : null,
9                 ti        : null,
10
11                 onViewTemplateReady : function( template, event, eventData )
12                 {
13                         _w.replyview.ti = _t[template];
14                         _w.replyview.itemData = null;
15
16                         _w.replyview.setReplyViewFormMeta();
17                         _w.replyview.ti.hydrate(_w.replyview.formMeta);
18
19                         // Retrieve initial view data.
20                         _w.replyview.itemId    = App.Util.getUrlParam('id');
21                         _w.replyview.auctionId = App.Util.getUrlParam('auctionId');
22                         App.API.getTask(
23                                 'viewQuestion:' + _w.replyview.itemId, 'Auction', 'Question.View', _w.replyview.auctionId,
24                                 {'id':_w.replyview.itemId}, _w.replyview._onReplyViewDataReceived, _w.taskContractError
25                         );
26                         App.API.getTask(
27                                 'createReply:' + _w.replyview.itemId, 'Auction', 'Reply.Create', _w.replyview.auctionId,
28                                 {}, function() {}, _w.taskContractError
29                         );
30                 },
31
32                 onViewPublished : function( template, event, eventData )
33                 {
34                         if (null != _w.replyview.itemData)
35                         {
36                                 _w.replyview._onDataAndTemplate();
37                         }
38                 },
39
40                 setReplyViewFormMeta : function( data )
41                 {
42                         if (!data)
43                         {
44                                 data = {};
45                         }
46                         _w.replyview.formMeta = {
47                                 'vehicle' : {
48                                         title : 'Vehicle',
49                                         value : data.auction
50                                                 ? data.auction.stock.type.model.make.name
51                                                         + ', ' + data.auction.stock.type.model.name
52                                                         + ', ' + data.auction.stock.type.name
53                                                         + ' (' + data.auction.stock.vehicleYear.name + ')'
54                                                 : ''
55                                 },
56                                 'created' : {
57                                         title : 'Created',
58                                         value : data.created ? ((data.created).split(' '))[0] : ''
59                                 },
60                                 'company' : {
61                                         title : 'Company',
62                                         value : data.company ? data.company.name : ''
63                                 },
64                                 'user' : {
65                                         title : 'User',
66                                         value : data.profile ? data.profile.firstName + ' ' + data.profile.familyName : ''
67                                 },
68                                 'question' : {
69                                         title : 'Question',
70                                         value : data.question ? data.question : ''
71                                 },
72                                 'reply' : {
73                                         type  : 'textarea-styled',
74                                         disabled : data.reply && data.reply.id ? true : false,
75                                         id    : 'reply',
76                                         title : 'Reply',
77                                         style : 'span12',
78                                         areaStyle : 'span12',
79                                         value : data.reply ? data.reply.reply : ''
80                                 }
81                         };
82                 },
83
84                 _onDataAndTemplate : function() {
85                         _w.replyview._setupValidation();
86                 },
87
88                 _onReplyViewDataReceived : function( response )
89                 {
90                         _w.replyview.itemId = response.Data.id;
91                         _w.replyview.itemData = response.Data;
92                         _w.replyview.setReplyViewFormMeta(response.Data);
93                         _w.replyview.ti.hydrate(_w.replyview.formMeta);
94                         if (_w.replyview.ti.published)
95                         {
96                                 _w.replyview._onDataAndTemplate();
97                         }
98                 },
99
100                 _setupValidation : function ()
101                 {
102                         $('#frmReplyView').validate({
103                                 submitHandler: function( form ) {
104                                         if ('' == $('#reply').val())
105                                         {
106                                                 alert('Please specify a reply.');
107                                                 return;
108                                         }
109                                         $('#btnUpdate').prop('disabled', true);
110                                         var data = _w.replyview._prepReplyUpdateData();
111                                         App.API.execTask(
112                                                         'createReply:' + _w.replyview.itemId, data, {},
113                                                         _w.replyview._onReplyUpdated, _w.taskExecError
114                                                 );
115                                 }
116                         });
117                         $('#btnUpdate').prop('disabled', false);
118                         if (!_w.replyview.itemData.reply || !_w.replyview.itemData.reply.id)
119                         {
120                                 $('#btnUpdate').show();
121                         }
122                 },
123
124                 _prepReplyUpdateData : function()
125                 {
126                         var data = {
127                                         Reply : {
128                                                 question : _w.replyview.itemId,
129                                                 reply    : $('#reply').val()
130                                         }
131                         };
132                         return data;
133                 },
134
135                 _onReplyUpdated : function( response )
136                 {
137                         window.location.hash = '/settings';
138                 }
139
140         };
141
142 })();