root / snf-cyclades-app / synnefo / ui / static / snf / js / ui / web / ui_error_view.js @ 435bb7fb
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); |