Commit 03511a5a91763463c215e71fcb1df1b39e97b43f
fix and extract error tab!
mix irving committed on 2/10/2017, 5:24:18 AMParent: 10a6e10b5c3d8204fc1eca07af3083614c9d9db5
Files changed
modules_core/app.js | changed |
modules_core/app.mcss | changed |
modules_core/index.js | changed |
modules_core/tabs.js | changed |
modules_core/error.js | added |
modules_core/error.mcss | added |
modules_core/app.js | |||
---|---|---|---|
@@ -27,9 +27,10 @@ | |||
27 | 27 … | ||
28 | 28 … | window.onhashchange = () => view.set(getView()) | |
29 | 29 … | document.body.appendChild(screen) | |
30 | 30 … | ||
31 | - window.addEventListener('error', window.onError = displayError) | ||
31 … | + // tabs (another core module) currently handles this | ||
32 … | + // window.addEventListener('error', window.onError = displayError) | ||
32 | 33 … | ||
33 | 34 … | return screen | |
34 | 35 … | } | |
35 | 36 … | ||
@@ -38,21 +39,21 @@ | |||
38 | 39 … | return api.screen_view(view) | |
39 | 40 … | } | |
40 | 41 … | } | |
41 | 42 … | ||
42 | -function displayError (e) { | ||
43 | - document.body.querySelector('.\\.content').appendChild( | ||
44 | - h('div.page', [ | ||
45 | - h('Error', { title: e.message }, [ | ||
46 | - h('h1', e.message), | ||
47 | - h('big', [ | ||
48 | - h('code', e.filename + ':' + e.lineno) | ||
49 | - ]), | ||
50 | - h('pre', e.error | ||
51 | - ? (e.error.stack || e.error.toString()) | ||
52 | - : e.toString() | ||
53 | - ) | ||
54 | - ]) | ||
55 | - ]) | ||
56 | - ) | ||
57 | -} | ||
43 … | +// function displayError (e) { | ||
44 … | +// document.body.querySelector('.\\.content').appendChild( | ||
45 … | +// h('div.page', [ | ||
46 … | +// h('Error', { title: e.message }, [ | ||
47 … | +// h('h1', e.message), | ||
48 … | +// h('big', [ | ||
49 … | +// h('code', e.filename + ':' + e.lineno) | ||
50 … | +// ]), | ||
51 … | +// h('pre', e.error | ||
52 … | +// ? (e.error.stack || e.error.toString()) | ||
53 … | +// : e.toString() | ||
54 … | +// ) | ||
55 … | +// ]) | ||
56 … | +// ]) | ||
57 … | +// ) | ||
58 … | +// } | ||
58 | 59 … |
modules_core/app.mcss | ||
---|---|---|
@@ -10,20 +10,5 @@ | ||
10 | 10 … | |
11 | 11 … | } |
12 | 12 … | |
13 | 13 … | |
14 | -Error { | |
15 | - padding: 1rem | |
16 | 14 … | |
17 | - h1 { | |
18 | - color: red | |
19 | - } | |
20 | - | |
21 | - big { | |
22 | - } | |
23 | - | |
24 | - pre { | |
25 | - padding: 1rem | |
26 | - border: 1px gainsboro solid | |
27 | - } | |
28 | -} | |
29 | - |
modules_core/index.js | ||
---|---|---|
@@ -2,8 +2,9 @@ | ||
2 | 2 … | 'app': require('./app'), |
3 | 3 … | 'blob-url': require('./blob-url'), |
4 | 4 … | 'crypto': require('./crypto'), |
5 | 5 … | 'external-confirm': require('./external-confirm'), |
6 … | + 'error': require('./error'), | |
6 | 7 … | 'file-input': require('./file-input'), |
7 | 8 … | 'menu': require('./menu'), |
8 | 9 … | 'names': require('./names'), |
9 | 10 … | 'tabs': require('./tabs'), |
modules_core/tabs.js | ||
---|---|---|
@@ -10,8 +10,9 @@ | ||
10 | 10 … | return el |
11 | 11 … | } |
12 | 12 … | |
13 | 13 … | exports.needs = { |
14 … | + build_error: 'first', | |
14 | 15 … | build_scroller: 'first', |
15 | 16 … | screen_view: 'first', |
16 | 17 … | search_box: 'first', |
17 | 18 … | menu: 'first', |
@@ -173,27 +174,28 @@ | ||
173 | 174 … | }) |
174 | 175 … | |
175 | 176 … | // errors tab |
176 | 177 … | var { |
177 | - container: errors, | |
178 … | + container: errorsScroller, | |
178 | 179 … | content: errorsContent |
179 | 180 … | } = api.build_scroller() |
180 | 181 … | |
181 | - // remove loader error handler | |
182 | - if (window.onError) { | |
183 | - window.removeEventListener('error', window.onError) | |
184 | - delete window.onError | |
185 | - } | |
182 … | + errorsScroller.id = '/errors' | |
183 … | + errorsScroller.classList.add('-errors') | |
186 | 184 … | |
185 … | + // remove loader error handler (currently disabled) | |
186 … | + // if (window.onError) { | |
187 … | + // window.removeEventListener('error', window.onError) | |
188 … | + // delete window.onError | |
189 … | + // } | |
190 … | + | |
187 | 191 … | // put errors in a tab |
188 | 192 … | window.addEventListener('error', ev => { |
189 | 193 … | const err = ev.error || ev |
190 | - if(!tabs.has('errors')) | |
191 | - tabs.add(errors, false) | |
192 | - const el = h('div.message', [ | |
193 | - h('strong', err.message), | |
194 | - h('pre', err.stack) | |
195 | - ]) | |
194 … | + if(!tabs.has('/errors')) | |
195 … | + tabs.add(errorsScroller, false) | |
196 … | + | |
197 … | + const el = api.build_error(err) | |
196 | 198 … | if (errorsContent.firstChild) |
197 | 199 … | errorsContent.insertBefore(el, errorsContent.firstChild) |
198 | 200 … | else |
199 | 201 … | errorsContent.appendChild(el) |
modules_core/error.js | ||
---|---|---|
@@ -1,0 +1,23 @@ | ||
1 … | +const fs = require('fs') | |
2 … | +const h = require('../h') | |
3 … | + | |
4 … | +exports.gives = { | |
5 … | + build_error: true, | |
6 … | + mcss: true | |
7 … | +} | |
8 … | + | |
9 … | +exports.create = function (api) { | |
10 … | + return { | |
11 … | + build_error, | |
12 … | + mcss: () => fs.readFileSync(__filename.replace(/js$/, 'mcss'), 'utf8') | |
13 … | + } | |
14 … | + | |
15 … | + function build_error (err) { | |
16 … | + return h('Error', [ | |
17 … | + h('header', err.message), | |
18 … | + h('pre', err.stack) | |
19 … | + ]) | |
20 … | + } | |
21 … | + | |
22 … | +} | |
23 … | + |
modules_core/error.mcss | ||
---|---|---|
@@ -1,0 +1,25 @@ | ||
1 … | +Error { | |
2 … | + padding: 1rem | |
3 … | + | |
4 … | + header { | |
5 … | + color: red | |
6 … | + font-weight: 600 | |
7 … | + } | |
8 … | + | |
9 … | + pre { | |
10 … | + padding: 1rem | |
11 … | + border: 1px gainsboro solid | |
12 … | + } | |
13 … | +} | |
14 … | + | |
15 … | +Scroller -errors { | |
16 … | + div.wrapper { | |
17 … | + width: initial | |
18 … | + max-width: 100% | |
19 … | + | |
20 … | + section.content div { | |
21 … | + border: none | |
22 … | + } | |
23 … | + } | |
24 … | +} | |
25 … | + |
Built with git-ssb-web