Statistics
| Branch: | Tag: | Revision:

root / snf-cyclades-app / synnefo / ui / static / snf / js / ui / web / ui_error_view.js @ 6201f0e3

History | View | Annotate | Download (10.9 kB)

1 00469232 Kostas Papadimitriou
// Copyright 2011 GRNET S.A. All rights reserved.
2 00469232 Kostas Papadimitriou
// 
3 00469232 Kostas Papadimitriou
// Redistribution and use in source and binary forms, with or
4 00469232 Kostas Papadimitriou
// without modification, are permitted provided that the following
5 00469232 Kostas Papadimitriou
// conditions are met:
6 00469232 Kostas Papadimitriou
// 
7 00469232 Kostas Papadimitriou
//   1. Redistributions of source code must retain the above
8 00469232 Kostas Papadimitriou
//      copyright notice, this list of conditions and the following
9 00469232 Kostas Papadimitriou
//      disclaimer.
10 00469232 Kostas Papadimitriou
// 
11 00469232 Kostas Papadimitriou
//   2. Redistributions in binary form must reproduce the above
12 00469232 Kostas Papadimitriou
//      copyright notice, this list of conditions and the following
13 00469232 Kostas Papadimitriou
//      disclaimer in the documentation and/or other materials
14 00469232 Kostas Papadimitriou
//      provided with the distribution.
15 00469232 Kostas Papadimitriou
// 
16 00469232 Kostas Papadimitriou
// THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
17 00469232 Kostas Papadimitriou
// OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 00469232 Kostas Papadimitriou
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19 00469232 Kostas Papadimitriou
// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
20 00469232 Kostas Papadimitriou
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21 00469232 Kostas Papadimitriou
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22 00469232 Kostas Papadimitriou
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
23 00469232 Kostas Papadimitriou
// USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
24 00469232 Kostas Papadimitriou
// AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25 00469232 Kostas Papadimitriou
// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
26 00469232 Kostas Papadimitriou
// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27 00469232 Kostas Papadimitriou
// POSSIBILITY OF SUCH DAMAGE.
28 00469232 Kostas Papadimitriou
// 
29 00469232 Kostas Papadimitriou
// The views and conclusions contained in the software and
30 00469232 Kostas Papadimitriou
// documentation are those of the authors and should not be
31 00469232 Kostas Papadimitriou
// interpreted as representing official policies, either expressed
32 00469232 Kostas Papadimitriou
// or implied, of GRNET S.A.
33 00469232 Kostas Papadimitriou
// 
34 00469232 Kostas Papadimitriou
35 dc020cf6 Kostas Papadimitriou
;(function(root){
36 dc020cf6 Kostas Papadimitriou
37 dc020cf6 Kostas Papadimitriou
    // root
38 dc020cf6 Kostas Papadimitriou
    var root = root;
39 dc020cf6 Kostas Papadimitriou
    
40 dc020cf6 Kostas Papadimitriou
    // setup namepsaces
41 dc020cf6 Kostas Papadimitriou
    var snf = root.synnefo = root.synnefo || {};
42 dc020cf6 Kostas Papadimitriou
    var models = snf.models = snf.models || {}
43 dc020cf6 Kostas Papadimitriou
    var storage = snf.storage = snf.storage || {};
44 dc020cf6 Kostas Papadimitriou
    var ui = snf.ui = snf.ui || {};
45 dc020cf6 Kostas Papadimitriou
    var util = snf.util = snf.util || {};
46 dc020cf6 Kostas Papadimitriou
47 dc020cf6 Kostas Papadimitriou
    var views = snf.views = snf.views || {}
48 dc020cf6 Kostas Papadimitriou
49 dc020cf6 Kostas Papadimitriou
    // shortcuts
50 dc020cf6 Kostas Papadimitriou
    var bb = root.Backbone;
51 dc020cf6 Kostas Papadimitriou
52 dc020cf6 Kostas Papadimitriou
    views.ErrorView = views.Overlay.extend({
53 dc020cf6 Kostas Papadimitriou
        
54 dc020cf6 Kostas Papadimitriou
        view_id: "error_view",
55 dc020cf6 Kostas Papadimitriou
        content_selector: "#error-overlay-content",
56 dc020cf6 Kostas Papadimitriou
        css_class: 'overlay-error',
57 dc020cf6 Kostas Papadimitriou
        overlay_id: "error-overlay",
58 edd1d565 Kostas Papadimitriou
        error_stack: {},
59 dc020cf6 Kostas Papadimitriou
60 dc020cf6 Kostas Papadimitriou
        initialize: function() {
61 dc020cf6 Kostas Papadimitriou
            views.ErrorView.__super__.initialize.apply(this, arguments);
62 dc020cf6 Kostas Papadimitriou
            var self = this;
63 dc020cf6 Kostas Papadimitriou
64 dc020cf6 Kostas Papadimitriou
            this.error_state = false;
65 dc020cf6 Kostas Papadimitriou
66 dc020cf6 Kostas Papadimitriou
            this.$(".actions .show-details, .actions .hide-details").click(function() {
67 dc020cf6 Kostas Papadimitriou
                self.$(".error-details").toggle();
68 dc020cf6 Kostas Papadimitriou
                self.$(".show-details").toggle();
69 dc020cf6 Kostas Papadimitriou
                self.$(".hide-details").toggle();
70 dc020cf6 Kostas Papadimitriou
            });
71 dc020cf6 Kostas Papadimitriou
72 dc020cf6 Kostas Papadimitriou
            this.$(".key.details").click(function() {
73 dc020cf6 Kostas Papadimitriou
                $(this).next().toggle();
74 dc020cf6 Kostas Papadimitriou
                if (!$(this).next().is(":visible")) {
75 dc020cf6 Kostas Papadimitriou
                    $(this).addClass("expand");
76 dc020cf6 Kostas Papadimitriou
                } else {
77 dc020cf6 Kostas Papadimitriou
                    $(this).removeClass("expand");
78 dc020cf6 Kostas Papadimitriou
                }
79 dc020cf6 Kostas Papadimitriou
            })
80 dc020cf6 Kostas Papadimitriou
81 dc020cf6 Kostas Papadimitriou
            this.$(".actions .report-error").click(_.bind(function() {
82 dc020cf6 Kostas Papadimitriou
                this.report_error();
83 dc020cf6 Kostas Papadimitriou
            }, this));
84 dc020cf6 Kostas Papadimitriou
85 dc020cf6 Kostas Papadimitriou
            this.$(".actions .hide-details").hide();
86 dc020cf6 Kostas Papadimitriou
87 dc020cf6 Kostas Papadimitriou
            this.$(".reload-app").click(function(){
88 dc020cf6 Kostas Papadimitriou
                window.location.reload(true);
89 9ffd10ce Kostas Papadimitriou
            });
90 9ffd10ce Kostas Papadimitriou
91 9ffd10ce Kostas Papadimitriou
            this.$(".show-next").click(_.bind(function(){
92 9ffd10ce Kostas Papadimitriou
                this.show_next_error();
93 9ffd10ce Kostas Papadimitriou
            }, this));
94 9ffd10ce Kostas Papadimitriou
95 9ffd10ce Kostas Papadimitriou
            this.$(".show-prev").click(_.bind(function(){
96 9ffd10ce Kostas Papadimitriou
                this.show_prev_error();
97 9ffd10ce Kostas Papadimitriou
            }, this));
98 9ffd10ce Kostas Papadimitriou
99 9ffd10ce Kostas Papadimitriou
            this.displaying_error = false;
100 9ffd10ce Kostas Papadimitriou
            this.error_stack_index = [];
101 9ffd10ce Kostas Papadimitriou
            this.error_stack = {};
102 dc020cf6 Kostas Papadimitriou
        },
103 dc020cf6 Kostas Papadimitriou
104 dc020cf6 Kostas Papadimitriou
        error_object: function() {
105 dc020cf6 Kostas Papadimitriou
            return {ns:this.ns, code:this.code, message:this.message, details:this.details};
106 dc020cf6 Kostas Papadimitriou
        },
107 dc020cf6 Kostas Papadimitriou
108 dc020cf6 Kostas Papadimitriou
        report_error: function() {
109 dc020cf6 Kostas Papadimitriou
            this.feedback_view = this.feedback_view || ui.main.feedback_view;
110 edd1d565 Kostas Papadimitriou
            this.hide(false);
111 9ffd10ce Kostas Papadimitriou
            this.displaying_error = true;
112 9ffd10ce Kostas Papadimitriou
113 edd1d565 Kostas Papadimitriou
            window.setTimeout(_.bind(function() {
114 edd1d565 Kostas Papadimitriou
                this.feedback_view.show(this.get_report_message(), true, {error: this.error_object()});
115 edd1d565 Kostas Papadimitriou
            }, this), 400);
116 dc020cf6 Kostas Papadimitriou
        },
117 dc020cf6 Kostas Papadimitriou
118 dc020cf6 Kostas Papadimitriou
        get_report_message: function() {
119 dc020cf6 Kostas Papadimitriou
            var fdb_msg =   "Error report\n" +
120 dc020cf6 Kostas Papadimitriou
                "-------------------" + "\n" +
121 dc020cf6 Kostas Papadimitriou
                "Code: " + this.code + "\n" + 
122 dc020cf6 Kostas Papadimitriou
                "Type: " + this.type + "\n" +
123 dc020cf6 Kostas Papadimitriou
                "Message: " + this.message + "\n" +
124 dc020cf6 Kostas Papadimitriou
                "Module: " + this.ns + "\n" +
125 dc020cf6 Kostas Papadimitriou
                "Details: " + this.details + "\n\n" +
126 dc020cf6 Kostas Papadimitriou
                "Please describe the actions that triggered the error:\n"
127 dc020cf6 Kostas Papadimitriou
            
128 dc020cf6 Kostas Papadimitriou
            return fdb_msg;
129 dc020cf6 Kostas Papadimitriou
        },
130 edd1d565 Kostas Papadimitriou
        
131 dc020cf6 Kostas Papadimitriou
        show_error: function(ns, code, message, type, details, error_options) {
132 9ffd10ce Kostas Papadimitriou
            
133 edd1d565 Kostas Papadimitriou
            var error_entry = [ns, code, message, type, details, error_options];
134 9ffd10ce Kostas Papadimitriou
            var last_error_key = this.update_errors_stack(error_entry);
135 9ffd10ce Kostas Papadimitriou
            
136 9ffd10ce Kostas Papadimitriou
            if (!this.is_visible && !this.displaying_error) {
137 9ffd10ce Kostas Papadimitriou
                this.current_error = last_error_key;
138 9ffd10ce Kostas Papadimitriou
                this.display_error.call(this, last_error_key);
139 9ffd10ce Kostas Papadimitriou
                this.show();
140 9ffd10ce Kostas Papadimitriou
            }
141 9ffd10ce Kostas Papadimitriou
142 9ffd10ce Kostas Papadimitriou
            this.update_errors_stack();
143 9ffd10ce Kostas Papadimitriou
        },
144 9ffd10ce Kostas Papadimitriou
145 9ffd10ce Kostas Papadimitriou
        update_errors_stack: function(entry) {
146 9ffd10ce Kostas Papadimitriou
            if (snf.api.error_state != snf.api.STATES.ERROR) { 
147 9ffd10ce Kostas Papadimitriou
                this.error_stack = {};
148 9ffd10ce Kostas Papadimitriou
                this.error_stack_index = [];
149 9ffd10ce Kostas Papadimitriou
            };
150 9ffd10ce Kostas Papadimitriou
151 9ffd10ce Kostas Papadimitriou
            var stack_key = (new Date()).getTime();
152 9ffd10ce Kostas Papadimitriou
            this.error_stack[stack_key] = entry;
153 9ffd10ce Kostas Papadimitriou
            this.error_stack_index.push(stack_key);
154 9ffd10ce Kostas Papadimitriou
            this.errors_occured = this.error_stack_index.length;
155 9ffd10ce Kostas Papadimitriou
            
156 9ffd10ce Kostas Papadimitriou
            this.$(".error-nav").hide();
157 9ffd10ce Kostas Papadimitriou
            //this.update_errors_stack_layout();
158 9ffd10ce Kostas Papadimitriou
            return stack_key;
159 edd1d565 Kostas Papadimitriou
        },
160 edd1d565 Kostas Papadimitriou
161 9ffd10ce Kostas Papadimitriou
        is_last_error: function(stack_key) {
162 9ffd10ce Kostas Papadimitriou
            return this.error_stack_index.indexOf(stack_key) == this.error_stack_index.length - 1;
163 9ffd10ce Kostas Papadimitriou
        },
164 9ffd10ce Kostas Papadimitriou
165 9ffd10ce Kostas Papadimitriou
        is_first_error: function(stack_key) {
166 9ffd10ce Kostas Papadimitriou
            return this.error_stack_index.indexOf(stack_key) == 0;
167 9ffd10ce Kostas Papadimitriou
        },
168 9ffd10ce Kostas Papadimitriou
169 9ffd10ce Kostas Papadimitriou
        update_errors_stack_layout: function() {
170 9ffd10ce Kostas Papadimitriou
            if (!this.current_error) { return };
171 9ffd10ce Kostas Papadimitriou
172 9ffd10ce Kostas Papadimitriou
            if (this.errors_occured <= 1) {
173 9ffd10ce Kostas Papadimitriou
                this.$(".error-nav").hide();
174 9ffd10ce Kostas Papadimitriou
            } else {
175 9ffd10ce Kostas Papadimitriou
                this.$(".error-nav").show();
176 9ffd10ce Kostas Papadimitriou
            };
177 9ffd10ce Kostas Papadimitriou
            
178 9ffd10ce Kostas Papadimitriou
            if (this.is_last_error(this.current_error)) {
179 9ffd10ce Kostas Papadimitriou
                this.$(".show-next").hide();
180 9ffd10ce Kostas Papadimitriou
            } else {
181 9ffd10ce Kostas Papadimitriou
                this.$(".show-next").show();
182 9ffd10ce Kostas Papadimitriou
            }
183 9ffd10ce Kostas Papadimitriou
184 9ffd10ce Kostas Papadimitriou
            if (this.is_first_error(this.current_error)) {
185 9ffd10ce Kostas Papadimitriou
                this.$(".show-prev").hide();
186 9ffd10ce Kostas Papadimitriou
            } else {
187 9ffd10ce Kostas Papadimitriou
                this.$(".show-prev").show();
188 9ffd10ce Kostas Papadimitriou
            }
189 9ffd10ce Kostas Papadimitriou
        },
190 9ffd10ce Kostas Papadimitriou
191 9ffd10ce Kostas Papadimitriou
        show_next_error: function() {
192 9ffd10ce Kostas Papadimitriou
        },
193 9ffd10ce Kostas Papadimitriou
194 9ffd10ce Kostas Papadimitriou
        show_prev_error: function() {
195 9ffd10ce Kostas Papadimitriou
        },
196 9ffd10ce Kostas Papadimitriou
197 9ffd10ce Kostas Papadimitriou
        display_error: function(stack_key) {
198 9ffd10ce Kostas Papadimitriou
            var err = this.error_stack[stack_key];
199 9ffd10ce Kostas Papadimitriou
            var ns = err[0], code = err[1], message = err[2], type = err[3], details = err[4], error_options = err[5]
200 9ffd10ce Kostas Papadimitriou
201 9ce969a7 Kostas Papadimitriou
            this.error_options = {'allow_report': true, 'allow_reload': true, 
202 9ce969a7 Kostas Papadimitriou
                'extra_details': {}, 'non_critical': false, 
203 9ffd10ce Kostas Papadimitriou
                'allow_details': false,
204 9ffd10ce Kostas Papadimitriou
                'allow_close': true };
205 9ce969a7 Kostas Papadimitriou
            
206 dc020cf6 Kostas Papadimitriou
            if (error_options) {
207 dc020cf6 Kostas Papadimitriou
                this.error_options = _.extend(this.error_options, error_options);
208 dc020cf6 Kostas Papadimitriou
            }
209 dc020cf6 Kostas Papadimitriou
210 dc020cf6 Kostas Papadimitriou
            this.code = code;
211 dc020cf6 Kostas Papadimitriou
            this.ns = ns;
212 dc020cf6 Kostas Papadimitriou
            this.type = type;
213 dc020cf6 Kostas Papadimitriou
            this.details = details ? (details.toString ? details.toString() : details) : undefined;
214 dc020cf6 Kostas Papadimitriou
            this.message = message;
215 9ce969a7 Kostas Papadimitriou
            this.title = error_options.title || undefined;
216 dc020cf6 Kostas Papadimitriou
217 dc020cf6 Kostas Papadimitriou
            this.update_details();
218 dc020cf6 Kostas Papadimitriou
            
219 dc020cf6 Kostas Papadimitriou
            if (error_options.non_critical) {
220 dc020cf6 Kostas Papadimitriou
                this.el.addClass("non-critical");
221 6a3a5bf7 Kostas Papadimitriou
                this.error_options.allow_details = false;
222 dc020cf6 Kostas Papadimitriou
            } else {
223 dc020cf6 Kostas Papadimitriou
                this.el.removeClass("non-critical");
224 6a3a5bf7 Kostas Papadimitriou
                this.error_options.allow_details = true;
225 dc020cf6 Kostas Papadimitriou
            }
226 6a3a5bf7 Kostas Papadimitriou
            
227 9ce969a7 Kostas Papadimitriou
            if (APP_DEBUG) {
228 9ce969a7 Kostas Papadimitriou
                this.error_options.allow_details = true;
229 9ce969a7 Kostas Papadimitriou
            }
230 9ce969a7 Kostas Papadimitriou
            
231 dc020cf6 Kostas Papadimitriou
            this.$(".actions .show-details").click();
232 9ffd10ce Kostas Papadimitriou
            this.$(".error-details").hide();
233 dc020cf6 Kostas Papadimitriou
            this.$(".key.details").click();
234 dc020cf6 Kostas Papadimitriou
            this.$(".error-more-details").hide();
235 dc020cf6 Kostas Papadimitriou
        },
236 dc020cf6 Kostas Papadimitriou
237 dc020cf6 Kostas Papadimitriou
        update_details: function() {
238 dc020cf6 Kostas Papadimitriou
            var title = "Application error";
239 dc020cf6 Kostas Papadimitriou
            if (this.ns && this.type) {
240 b15a0cc4 Kostas Papadimitriou
                title = this.title || this.type + " Error";
241 dc020cf6 Kostas Papadimitriou
            }
242 9ce969a7 Kostas Papadimitriou
243 ce93b80c Kostas Papadimitriou
            this.$(".overlay-header .title").text(title);
244 dc020cf6 Kostas Papadimitriou
            this.$(".error-code").text(this.code || "");
245 dc020cf6 Kostas Papadimitriou
            this.$(".error-type").text(this.type || "");
246 dc020cf6 Kostas Papadimitriou
            this.$(".error-module").text(this.ns || "");
247 dc020cf6 Kostas Papadimitriou
            this.$(".message p").text(this.message || "");
248 df251d55 Kostas Papadimitriou
            this.$(".error-more-details p").html($("<pre />", {text:this.details}) || "no info");
249 dc020cf6 Kostas Papadimitriou
250 dc020cf6 Kostas Papadimitriou
            this.$(".extra-details").remove();
251 dc020cf6 Kostas Papadimitriou
            _.each(this.error_options.extra_details, function(value, key){
252 dc020cf6 Kostas Papadimitriou
                var opt = $(('<span class="extra-details key">{0}</span>' +
253 dc020cf6 Kostas Papadimitriou
                            '<span class="extra-details value">{1}</span>').format(key, value))
254 dc020cf6 Kostas Papadimitriou
                this.$(".value.error-type").after(opt);
255 dc020cf6 Kostas Papadimitriou
            })
256 dc020cf6 Kostas Papadimitriou
257 dc020cf6 Kostas Papadimitriou
        },
258 dc020cf6 Kostas Papadimitriou
259 dc020cf6 Kostas Papadimitriou
        beforeOpen: function() {
260 dc020cf6 Kostas Papadimitriou
            this.$(".error-details").hide();
261 a59437e9 Kostas Papadimitriou
            this.$(".key.details").addClass("expand");
262 dc020cf6 Kostas Papadimitriou
            this.$(".show-details").show();
263 dc020cf6 Kostas Papadimitriou
            this.$(".hide-details").hide();
264 6a3a5bf7 Kostas Papadimitriou
            
265 6a3a5bf7 Kostas Papadimitriou
            if (this.error_options.allow_details) {
266 6a3a5bf7 Kostas Papadimitriou
                this.$(".show-details").show();
267 6a3a5bf7 Kostas Papadimitriou
            } else {
268 6a3a5bf7 Kostas Papadimitriou
                this.$(".show-details").hide();
269 6a3a5bf7 Kostas Papadimitriou
            }
270 dc020cf6 Kostas Papadimitriou
271 dc020cf6 Kostas Papadimitriou
            if (this.error_options.allow_report) {
272 dc020cf6 Kostas Papadimitriou
                this.$(".report-error").show();
273 dc020cf6 Kostas Papadimitriou
            } else {
274 dc020cf6 Kostas Papadimitriou
                this.$(".report-error").hide();
275 dc020cf6 Kostas Papadimitriou
            }
276 dc020cf6 Kostas Papadimitriou
277 dc020cf6 Kostas Papadimitriou
            if (this.error_options.allow_reload) {
278 dc020cf6 Kostas Papadimitriou
                this.$(".reload-app").show();
279 dc020cf6 Kostas Papadimitriou
            } else {
280 dc020cf6 Kostas Papadimitriou
                this.$(".reload-app").hide();
281 dc020cf6 Kostas Papadimitriou
            }
282 9ce969a7 Kostas Papadimitriou
283 9ffd10ce Kostas Papadimitriou
            if (this.error_options.allow_close) {
284 9ffd10ce Kostas Papadimitriou
                this.$(".closeme").show();
285 9ffd10ce Kostas Papadimitriou
            } else {
286 9ffd10ce Kostas Papadimitriou
                this.$(".closeme").hide();
287 9ffd10ce Kostas Papadimitriou
            }
288 9ffd10ce Kostas Papadimitriou
289 9ce969a7 Kostas Papadimitriou
        },
290 9ce969a7 Kostas Papadimitriou
291 9ce969a7 Kostas Papadimitriou
        onOpen: function() {
292 9ffd10ce Kostas Papadimitriou
            this.displaying_error = true;
293 9ce969a7 Kostas Papadimitriou
            var self = this;
294 9ce969a7 Kostas Papadimitriou
295 9ce969a7 Kostas Papadimitriou
            this.$(".closeme").unbind("click");
296 9ce969a7 Kostas Papadimitriou
            this.$(".closeme").bind("click", function(){
297 9ffd10ce Kostas Papadimitriou
                self.hide("reset");
298 9ce969a7 Kostas Papadimitriou
            })
299 dc020cf6 Kostas Papadimitriou
        },
300 dc020cf6 Kostas Papadimitriou
301 edd1d565 Kostas Papadimitriou
        hide: function(reset_state) {
302 9ffd10ce Kostas Papadimitriou
            if (reset_state === "reset") {
303 9ffd10ce Kostas Papadimitriou
                // delay reset error state for fade out
304 9ffd10ce Kostas Papadimitriou
                window.setTimeout(_.bind(function(){
305 9ffd10ce Kostas Papadimitriou
                    this.displaying_error = false;
306 9ffd10ce Kostas Papadimitriou
                    this.error_stack = {};
307 9ffd10ce Kostas Papadimitriou
                    snf.api.trigger("reset");
308 9ffd10ce Kostas Papadimitriou
                }, this), 500);
309 9ffd10ce Kostas Papadimitriou
            } else {
310 9ffd10ce Kostas Papadimitriou
                this.displaying_error = false;
311 9ffd10ce Kostas Papadimitriou
            }
312 edd1d565 Kostas Papadimitriou
            views.ErrorView.__super__.hide.apply(this);
313 edd1d565 Kostas Papadimitriou
        },
314 edd1d565 Kostas Papadimitriou
315 edd1d565 Kostas Papadimitriou
        onClose: function(reset_state) {
316 dc020cf6 Kostas Papadimitriou
            this.trigger("close", this);
317 dc020cf6 Kostas Papadimitriou
        }
318 dc020cf6 Kostas Papadimitriou
    });
319 dc020cf6 Kostas Papadimitriou
320 dc020cf6 Kostas Papadimitriou
})(this);