logster 2.11.4 → 2.12.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/ci.yml +63 -12
- data/.gitignore +2 -0
- data/CHANGELOG.md +15 -5
- data/README.md +8 -0
- data/assets/javascript/.gitkeep +0 -0
- data/assets/javascript/chunk.143.f61340b825c6a3bf6dbe.js +22 -0
- data/assets/javascript/chunk.178.6d9ae01775c898e7b748.js +22 -0
- data/assets/javascript/chunk.468.95dd450003497c781cb3.js +1213 -0
- data/assets/javascript/chunk.916.85a3fc9d873df80f5ea5.js +579 -0
- data/assets/javascript/client-app.js +1259 -280
- data/assets/javascript/vendor.js +4068 -3375
- data/assets/stylesheets/.gitkeep +0 -0
- data/assets/stylesheets/client-app.css +1 -1
- data/assets/stylesheets/vendor.css +1 -1
- data/build_client_app.sh +6 -8
- data/client-app/.editorconfig +0 -1
- data/client-app/.eslintignore +2 -0
- data/client-app/.eslintrc +10 -0
- data/client-app/.gitignore +1 -1
- data/client-app/.prettierignore +21 -0
- data/client-app/.prettierrc +1 -0
- data/client-app/.template-lintrc.js +10 -0
- data/client-app/README.md +4 -5
- data/client-app/app/app.js +2 -2
- data/client-app/app/components/actions-menu.js +21 -21
- data/client-app/app/components/back-trace.js +93 -90
- data/client-app/app/components/env-tab.js +41 -29
- data/client-app/app/components/message-info.js +78 -75
- data/client-app/app/components/message-row.js +20 -17
- data/client-app/app/components/page-nav.js +33 -24
- data/client-app/app/components/panel-resizer.js +53 -37
- data/client-app/app/components/patterns-list.js +101 -84
- data/client-app/app/components/tab-contents.js +15 -19
- data/client-app/app/components/tabbed-section.js +30 -18
- data/client-app/app/components/time-formatter.js +29 -18
- data/client-app/app/controllers/index.js +143 -119
- data/client-app/app/controllers/show.js +17 -13
- data/client-app/app/helpers/or.js +1 -1
- data/client-app/app/initializers/app-init.js +23 -34
- data/client-app/app/lib/decorators.js +4 -2
- data/client-app/app/lib/preload.js +7 -4
- data/client-app/app/lib/utilities.js +55 -54
- data/client-app/app/models/group.js +20 -15
- data/client-app/app/models/message-collection.js +153 -149
- data/client-app/app/models/message.js +60 -58
- data/client-app/app/models/pattern-item.js +24 -22
- data/client-app/app/router.js +2 -2
- data/client-app/app/routes/index.js +19 -12
- data/client-app/app/routes/settings.js +12 -10
- data/client-app/app/routes/show.js +6 -4
- data/client-app/app/services/events.js +4 -0
- data/client-app/app/styles/app.css +2 -0
- data/client-app/app/templates/application.hbs +1 -2
- data/client-app/app/templates/components/actions-menu.hbs +23 -8
- data/client-app/app/templates/components/back-trace.hbs +10 -3
- data/client-app/app/templates/components/env-tab.hbs +9 -7
- data/client-app/app/templates/components/message-info.hbs +65 -34
- data/client-app/app/templates/components/message-row.hbs +25 -8
- data/client-app/app/templates/components/page-nav.hbs +34 -10
- data/client-app/app/templates/components/panel-resizer.hbs +3 -3
- data/client-app/app/templates/components/patterns-list.hbs +54 -20
- data/client-app/app/templates/components/tabbed-section.hbs +12 -4
- data/client-app/app/templates/components/time-formatter.hbs +1 -1
- data/client-app/app/templates/index.hbs +100 -78
- data/client-app/app/templates/settings.hbs +30 -19
- data/client-app/app/templates/show.hbs +9 -8
- data/client-app/config/ember-cli-update.json +18 -0
- data/client-app/config/environment.js +13 -13
- data/client-app/config/icons.js +3 -3
- data/client-app/config/targets.js +16 -8
- data/client-app/ember-cli-build.js +4 -4
- data/client-app/package.json +41 -31
- data/client-app/testem.js +16 -17
- data/client-app/tests/index.html +8 -1
- data/client-app/tests/integration/components/back-trace-test.js +49 -26
- data/client-app/tests/integration/components/env-tab-test.js +79 -53
- data/client-app/tests/integration/components/message-info-test.js +25 -23
- data/client-app/tests/integration/components/patterns-list-test.js +14 -11
- data/client-app/tests/test-helper.js +8 -4
- data/client-app/tests/unit/controllers/index-test.js +32 -16
- data/client-app/tests/unit/controllers/show-test.js +5 -5
- data/client-app/tests/unit/routes/index-test.js +5 -5
- data/client-app/tests/unit/routes/show-test.js +5 -5
- data/client-app/yarn.lock +9673 -0
- data/lib/logster/version.rb +1 -1
- data/logster.gemspec +6 -3
- metadata +15 -6
- data/client-app/.eslintrc.js +0 -60
- data/client-app/.travis.yml +0 -28
- data/client-app/app/components/update-time.js +0 -21
- data/client-app/package-lock.json +0 -16639
|
@@ -1,21 +1,26 @@
|
|
|
1
|
+
import classic from "ember-classic-decorator";
|
|
2
|
+
import { inject as service } from "@ember/service";
|
|
1
3
|
import Route from "@ember/routing/route";
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
SEVERITIES
|
|
4
|
+
import MessageCollection, {
|
|
5
|
+
SEVERITIES,
|
|
5
6
|
} from "client-app/models/message-collection";
|
|
6
7
|
import { isHidden } from "client-app/lib/utilities";
|
|
7
8
|
|
|
8
|
-
|
|
9
|
+
@classic
|
|
10
|
+
export default class IndexRoute extends Route {
|
|
11
|
+
@service events;
|
|
12
|
+
|
|
9
13
|
model() {
|
|
10
14
|
// TODO from preload json?
|
|
11
15
|
return MessageCollection.create();
|
|
12
|
-
}
|
|
16
|
+
}
|
|
13
17
|
|
|
14
18
|
setupController(controller, model) {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
model.set(`show${severity}`, controller[`show${severity}`])
|
|
18
|
-
|
|
19
|
+
super.setupController(controller, model);
|
|
20
|
+
for (const severity of SEVERITIES) {
|
|
21
|
+
model.set(`show${severity}`, controller[`show${severity}`]);
|
|
22
|
+
}
|
|
23
|
+
|
|
19
24
|
model.reload();
|
|
20
25
|
|
|
21
26
|
let times = 0;
|
|
@@ -25,6 +30,7 @@ export default Route.extend({
|
|
|
25
30
|
if (model.loading) {
|
|
26
31
|
return;
|
|
27
32
|
}
|
|
33
|
+
|
|
28
34
|
times += 1;
|
|
29
35
|
const hidden = isHidden();
|
|
30
36
|
let load = !hidden;
|
|
@@ -37,6 +43,7 @@ export default Route.extend({
|
|
|
37
43
|
}
|
|
38
44
|
}
|
|
39
45
|
}
|
|
46
|
+
|
|
40
47
|
// refresh a lot less aggressively in background
|
|
41
48
|
if (load) {
|
|
42
49
|
model.loadMore();
|
|
@@ -46,12 +53,12 @@ export default Route.extend({
|
|
|
46
53
|
}
|
|
47
54
|
}, 3000);
|
|
48
55
|
|
|
49
|
-
this.events.on("panelResized", amount => {
|
|
56
|
+
this.events.on("panelResized", (amount) => {
|
|
50
57
|
controller.resizePanels(amount);
|
|
51
58
|
});
|
|
52
|
-
}
|
|
59
|
+
}
|
|
53
60
|
|
|
54
61
|
deactivate() {
|
|
55
62
|
clearInterval(this.refreshInterval);
|
|
56
63
|
}
|
|
57
|
-
}
|
|
64
|
+
}
|
|
@@ -1,30 +1,32 @@
|
|
|
1
|
+
import classic from "ember-classic-decorator";
|
|
1
2
|
import Route from "@ember/routing/route";
|
|
2
3
|
import { ajax } from "client-app/lib/utilities";
|
|
3
4
|
import Pattern from "client-app/models/pattern-item";
|
|
4
5
|
|
|
5
|
-
|
|
6
|
+
@classic
|
|
7
|
+
export default class SettingsRoute extends Route {
|
|
6
8
|
model() {
|
|
7
9
|
return ajax("/settings.json");
|
|
8
|
-
}
|
|
10
|
+
}
|
|
9
11
|
|
|
10
12
|
setupController(controller, model) {
|
|
11
|
-
|
|
13
|
+
super.setupController(...arguments);
|
|
12
14
|
const suppression = model.suppression;
|
|
13
15
|
const codedSuppression = suppression
|
|
14
|
-
.filter(p => p.hard)
|
|
15
|
-
.map(hash => Pattern.create(hash));
|
|
16
|
+
.filter((p) => p.hard)
|
|
17
|
+
.map((hash) => Pattern.create(hash));
|
|
16
18
|
|
|
17
19
|
const customSuppression = suppression
|
|
18
|
-
.reject(p => p.hard)
|
|
19
|
-
.map(hash => Pattern.create(hash));
|
|
20
|
+
.reject((p) => p.hard)
|
|
21
|
+
.map((hash) => Pattern.create(hash));
|
|
20
22
|
|
|
21
|
-
const grouping = model.grouping.map(hash => Pattern.create(hash));
|
|
23
|
+
const grouping = model.grouping.map((hash) => Pattern.create(hash));
|
|
22
24
|
const showCodedSuppression = codedSuppression.length > 0;
|
|
23
25
|
controller.setProperties({
|
|
24
26
|
showCodedSuppression,
|
|
25
27
|
codedSuppression,
|
|
26
28
|
customSuppression,
|
|
27
|
-
grouping
|
|
29
|
+
grouping,
|
|
28
30
|
});
|
|
29
31
|
}
|
|
30
|
-
}
|
|
32
|
+
}
|
|
@@ -1,14 +1,16 @@
|
|
|
1
|
+
import classic from "ember-classic-decorator";
|
|
1
2
|
import Route from "@ember/routing/route";
|
|
2
3
|
import Message from "client-app/models/message";
|
|
3
4
|
import { preloadOrAjax } from "client-app/lib/utilities";
|
|
4
5
|
|
|
5
|
-
|
|
6
|
+
@classic
|
|
7
|
+
export default class ShowRoute extends Route {
|
|
6
8
|
model(params) {
|
|
7
9
|
return preloadOrAjax("/show/" + params.id + ".json");
|
|
8
|
-
}
|
|
10
|
+
}
|
|
9
11
|
|
|
10
12
|
setupController(controller, model) {
|
|
11
|
-
|
|
13
|
+
super.setupController(...arguments);
|
|
12
14
|
controller.set("model", Message.create(model));
|
|
13
15
|
}
|
|
14
|
-
}
|
|
16
|
+
}
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
{{
|
|
2
|
-
{{outlet}}
|
|
1
|
+
{{outlet}}
|
|
@@ -1,16 +1,31 @@
|
|
|
1
|
-
{{#if actionsInMenu}}
|
|
2
|
-
{{#if showMenu}}
|
|
1
|
+
{{#if @actionsInMenu}}
|
|
2
|
+
{{#if this.showMenu}}
|
|
3
3
|
<div class="actions-menu">
|
|
4
4
|
{{yield}}
|
|
5
5
|
</div>
|
|
6
6
|
{{/if}}
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
|
|
8
|
+
<button
|
|
9
|
+
class="expand btn no-text"
|
|
10
|
+
type="button"
|
|
11
|
+
{{on "click" this.expandMenu}}
|
|
12
|
+
>
|
|
13
|
+
<FaIcon @icon="ellipsis-h" />
|
|
14
|
+
</button>
|
|
15
|
+
|
|
16
|
+
{{#if @showShare}}
|
|
17
|
+
<button class="share btn" type="button" {{on "click" this.share}}>
|
|
18
|
+
<FaIcon @icon="share" />
|
|
19
|
+
<span>Share</span>
|
|
20
|
+
</button>
|
|
10
21
|
{{/if}}
|
|
11
22
|
{{else}}
|
|
12
23
|
{{yield}}
|
|
13
|
-
|
|
14
|
-
|
|
24
|
+
|
|
25
|
+
{{#if @showShare}}
|
|
26
|
+
<button class="share btn" type="button" {{on "click" this.share}}>
|
|
27
|
+
<FaIcon @icon="share" />
|
|
28
|
+
<span>Share</span>
|
|
29
|
+
</button>
|
|
15
30
|
{{/if}}
|
|
16
|
-
{{/if}}
|
|
31
|
+
{{/if}}
|
|
@@ -1,8 +1,15 @@
|
|
|
1
|
-
{{~#each lines as |line|~}}
|
|
1
|
+
{{~#each this.lines as |line|~}}
|
|
2
2
|
<div class="backtrace-line">
|
|
3
3
|
{{~line.line~}}
|
|
4
4
|
{{~#if line.url~}}
|
|
5
|
-
<a
|
|
5
|
+
<a
|
|
6
|
+
href={{line.url}}
|
|
7
|
+
target="_blank"
|
|
8
|
+
class="line-link"
|
|
9
|
+
rel="noopener noreferrer"
|
|
10
|
+
>
|
|
11
|
+
<FaIcon @icon="external-link-square-alt" />
|
|
12
|
+
</a>
|
|
6
13
|
{{~/if~}}
|
|
7
14
|
</div>
|
|
8
|
-
{{~/each~}}
|
|
15
|
+
{{~/each~}}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
{{#if isEnvArray}}
|
|
2
|
-
|
|
3
|
-
list=message.env
|
|
4
|
-
position=currentEnvPosition
|
|
5
|
-
extraClasses="env-nav"
|
|
6
|
-
navigate=envChangedAction}}
|
|
1
|
+
{{#if this.isEnvArray}}
|
|
2
|
+
<PageNav
|
|
3
|
+
@list={{@message.env}}
|
|
4
|
+
@position={{@currentEnvPosition}}
|
|
5
|
+
@extraClasses="env-nav"
|
|
6
|
+
@navigate={{@envChangedAction}}
|
|
7
|
+
/>
|
|
7
8
|
{{/if}}
|
|
8
|
-
|
|
9
|
+
|
|
10
|
+
{{this.html}}
|
|
@@ -1,55 +1,86 @@
|
|
|
1
1
|
<div class="message-info">
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
<TabbedSection @onTabChange={{this.tabChanged}} as |tabActions|>
|
|
3
|
+
<TabContents
|
|
4
|
+
@name="info"
|
|
5
|
+
@hint="show info"
|
|
6
|
+
@currentMessage={{@currentMessage}}
|
|
7
|
+
@tabActions={{tabActions}}
|
|
8
|
+
>
|
|
9
|
+
{{#if @showTitle}}
|
|
5
10
|
<h3>Message
|
|
6
|
-
{{#if currentMessage.showCount}}
|
|
7
|
-
({{currentMessage.count}}
|
|
11
|
+
{{#if @currentMessage.showCount}}
|
|
12
|
+
({{@currentMessage.count}}
|
|
13
|
+
copies reported)
|
|
8
14
|
{{/if}}
|
|
9
15
|
</h3>
|
|
10
16
|
{{/if}}
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
17
|
+
|
|
18
|
+
<pre>{{@currentMessage.message}}</pre>
|
|
19
|
+
</TabContents>
|
|
20
|
+
|
|
21
|
+
<TabContents
|
|
22
|
+
@name="backtrace"
|
|
23
|
+
@defaultTab="true"
|
|
24
|
+
@hint="show backtrace"
|
|
25
|
+
@currentMessage={{@currentMessage}}
|
|
26
|
+
@tabActions={{tabActions}}
|
|
27
|
+
>
|
|
28
|
+
{{#if @showTitle}}
|
|
15
29
|
<h3>Backtrace</h3>
|
|
16
30
|
{{/if}}
|
|
17
|
-
|
|
18
|
-
|
|
31
|
+
|
|
32
|
+
<pre><BackTrace
|
|
19
33
|
class="backtrace"
|
|
20
|
-
backtrace=currentMessage.backtrace
|
|
21
|
-
env=currentMessage.env
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
34
|
+
@backtrace={{@currentMessage.backtrace}}
|
|
35
|
+
@env={{@currentMessage.env}}
|
|
36
|
+
/></pre>
|
|
37
|
+
</TabContents>
|
|
38
|
+
|
|
39
|
+
<TabContents
|
|
40
|
+
@className="env"
|
|
41
|
+
@name="env"
|
|
42
|
+
@hint="show environment"
|
|
43
|
+
@currentMessage={{@currentMessage}}
|
|
44
|
+
@tabActions={{tabActions}}
|
|
45
|
+
>
|
|
46
|
+
{{#if @currentMessage}}
|
|
47
|
+
{{#if @currentMessage.env}}
|
|
48
|
+
{{#if @showTitle}}
|
|
28
49
|
<h3>Env</h3>
|
|
29
50
|
{{/if}}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
51
|
+
|
|
52
|
+
<EnvTab
|
|
53
|
+
@message={{@currentMessage}}
|
|
54
|
+
@currentEnvPosition={{@currentEnvPosition}}
|
|
55
|
+
@envChangedAction={{@envChangedAction}}
|
|
56
|
+
/>
|
|
57
|
+
{{else if @loadingEnv}}
|
|
35
58
|
Loading env...
|
|
36
59
|
{{else}}
|
|
37
60
|
No env for this message.
|
|
38
61
|
{{/if}}
|
|
39
62
|
{{/if}}
|
|
40
|
-
|
|
41
|
-
|
|
63
|
+
</TabContents>
|
|
64
|
+
</TabbedSection>
|
|
42
65
|
|
|
43
|
-
{{#if currentMessage}}
|
|
44
|
-
<div class=
|
|
45
|
-
|
|
46
|
-
{{
|
|
47
|
-
|
|
48
|
-
|
|
66
|
+
{{#if @currentMessage}}
|
|
67
|
+
<div class="message-actions">
|
|
68
|
+
<ActionsMenu
|
|
69
|
+
@actionsInMenu={{@actionsInMenu}}
|
|
70
|
+
@showShare={{@showShare}}
|
|
71
|
+
@share={{this.share}}
|
|
72
|
+
>
|
|
73
|
+
{{#each this.buttons as |btn|}}
|
|
74
|
+
<button
|
|
75
|
+
class="{{btn.klass}} btn {{if btn.danger 'danger' ''}}"
|
|
76
|
+
type="button"
|
|
77
|
+
{{on "click" btn.action}}
|
|
78
|
+
>
|
|
79
|
+
<FaIcon @icon={{btn.icon}} @prefix={{btn.prefix}} />
|
|
49
80
|
<span>{{btn.label}}</span>
|
|
50
81
|
</button>
|
|
51
82
|
{{/each}}
|
|
52
|
-
|
|
83
|
+
</ActionsMenu>
|
|
53
84
|
</div>
|
|
54
85
|
{{/if}}
|
|
55
|
-
</div>
|
|
86
|
+
</div>
|
|
@@ -1,15 +1,32 @@
|
|
|
1
1
|
<div class="count">
|
|
2
|
-
{{#if model.showCount}}
|
|
3
|
-
{{model.count}}
|
|
2
|
+
{{#if @model.showCount}}
|
|
3
|
+
{{@model.count}}
|
|
4
4
|
{{/if}}
|
|
5
5
|
</div>
|
|
6
|
-
|
|
6
|
+
|
|
7
|
+
<div class="severity">
|
|
8
|
+
{{#if @model.glyph}}
|
|
9
|
+
<FaIcon
|
|
10
|
+
@icon={{@model.glyph}}
|
|
11
|
+
@prefix={{@model.prefix}}
|
|
12
|
+
class={{@model.klass}}
|
|
13
|
+
/>
|
|
14
|
+
{{/if}}
|
|
15
|
+
</div>
|
|
16
|
+
|
|
7
17
|
<div class="message-body">
|
|
8
|
-
{{model.displayMessage}}
|
|
18
|
+
{{@model.displayMessage}}
|
|
9
19
|
</div>
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
20
|
+
|
|
21
|
+
<div class="protected">
|
|
22
|
+
{{#if @model.protected}}
|
|
23
|
+
<FaIcon
|
|
24
|
+
@icon="lock"
|
|
25
|
+
title="message is protected, clearing will not remove it"
|
|
26
|
+
/>
|
|
13
27
|
{{/if}}
|
|
14
28
|
</div>
|
|
15
|
-
|
|
29
|
+
|
|
30
|
+
<div class="time">
|
|
31
|
+
<TimeFormatter @timestamp={{@model.timestamp}} />
|
|
32
|
+
</div>
|
|
@@ -1,13 +1,37 @@
|
|
|
1
|
-
<button
|
|
2
|
-
{{
|
|
1
|
+
<button
|
|
2
|
+
disabled={{this.disableBackButtons}}
|
|
3
|
+
class="btn nav-btn no-text"
|
|
4
|
+
type="button"
|
|
5
|
+
{{on "click" (fn this.bigJump "back")}}
|
|
6
|
+
>
|
|
7
|
+
<FaIcon @icon="fast-backward" />
|
|
3
8
|
</button>
|
|
4
|
-
|
|
5
|
-
|
|
9
|
+
|
|
10
|
+
<button
|
|
11
|
+
disabled={{this.disableBackButtons}}
|
|
12
|
+
class="btn nav-btn no-text"
|
|
13
|
+
type="button"
|
|
14
|
+
{{on "click" (fn this.takeStep "back")}}
|
|
15
|
+
>
|
|
16
|
+
<FaIcon @icon="backward" />
|
|
6
17
|
</button>
|
|
7
|
-
|
|
8
|
-
<
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
18
|
+
|
|
19
|
+
<span class="current-number">{{this.displayNumber}}/{{@list.length}}</span>
|
|
20
|
+
|
|
21
|
+
<button
|
|
22
|
+
disabled={{this.disableForwardButtons}}
|
|
23
|
+
class="btn nav-btn no-text"
|
|
24
|
+
type="button"
|
|
25
|
+
{{on "click" (fn this.takeStep "front")}}
|
|
26
|
+
>
|
|
27
|
+
<FaIcon @icon="forward" />
|
|
13
28
|
</button>
|
|
29
|
+
|
|
30
|
+
<button
|
|
31
|
+
disabled={{this.disableForwardButtons}}
|
|
32
|
+
class="btn nav-btn no-text"
|
|
33
|
+
type="button"
|
|
34
|
+
{{on "click" (fn this.bigJump "front")}}
|
|
35
|
+
>
|
|
36
|
+
<FaIcon @icon="fast-forward" />
|
|
37
|
+
</button>
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
<div class=
|
|
2
|
-
<div class=
|
|
3
|
-
<div class=
|
|
1
|
+
<div class="line-1"></div>
|
|
2
|
+
<div class="line-2"></div>
|
|
3
|
+
<div class="line-3"></div>
|
|
@@ -1,44 +1,78 @@
|
|
|
1
|
-
{{#if mutable}}
|
|
2
|
-
<button
|
|
1
|
+
{{#if @mutable}}
|
|
2
|
+
<button class="btn new-pattern" type="button" {{on "click" this.create}}>
|
|
3
|
+
<FaIcon @icon="plus" />
|
|
4
|
+
<span>New</span>
|
|
5
|
+
</button>
|
|
3
6
|
{{/if}}
|
|
4
|
-
|
|
7
|
+
|
|
8
|
+
{{#each this.allPatterns as |pattern|}}
|
|
5
9
|
<div class="pattern-wrapper">
|
|
6
|
-
|
|
7
|
-
type="textfield"
|
|
10
|
+
<Input
|
|
11
|
+
@type="textfield"
|
|
12
|
+
@value={{pattern.valueBuffer}}
|
|
8
13
|
class="pattern-input"
|
|
9
14
|
placeholder="Enter regular expression…"
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
{{#if mutable}}
|
|
15
|
+
disabled={{or this.immutable pattern.saving}}
|
|
16
|
+
/>
|
|
17
|
+
|
|
18
|
+
{{#if @mutable}}
|
|
14
19
|
{{#if pattern.hasBuffer}}
|
|
15
|
-
<button
|
|
16
|
-
{{
|
|
20
|
+
<button
|
|
21
|
+
disabled={{pattern.saving}}
|
|
22
|
+
class="btn ok no-text save shrink"
|
|
23
|
+
type="button"
|
|
24
|
+
{{on "click" (fn this.save pattern)}}
|
|
25
|
+
>
|
|
26
|
+
<FaIcon @icon="check" />
|
|
17
27
|
</button>
|
|
18
28
|
{{/if}}
|
|
19
|
-
|
|
20
|
-
|
|
29
|
+
|
|
30
|
+
<button
|
|
31
|
+
disabled={{pattern.saving}}
|
|
32
|
+
class="btn no-text trash shrink"
|
|
33
|
+
type="button"
|
|
34
|
+
{{on "click" (fn this.trash pattern)}}
|
|
35
|
+
>
|
|
36
|
+
<FaIcon @icon="trash-alt" />
|
|
21
37
|
</button>
|
|
22
38
|
{{/if}}
|
|
23
39
|
|
|
24
|
-
{{#if showCounter}}
|
|
25
|
-
<input
|
|
26
|
-
|
|
27
|
-
|
|
40
|
+
{{#if this.showCounter}}
|
|
41
|
+
<input
|
|
42
|
+
disabled="true"
|
|
43
|
+
title="Number of logs that have been suppressed by this pattern"
|
|
44
|
+
class="count shrink"
|
|
45
|
+
value={{pattern.count}}
|
|
46
|
+
/>
|
|
47
|
+
<button
|
|
48
|
+
class="btn no-text reset shrink"
|
|
49
|
+
title="Reset count of suppressed logs"
|
|
50
|
+
disabled={{pattern.zeroCount}}
|
|
51
|
+
type="button"
|
|
52
|
+
{{on "click" (fn this.resetCount pattern)}}
|
|
53
|
+
>
|
|
54
|
+
<FaIcon @icon="redo-alt" />
|
|
28
55
|
</button>
|
|
29
56
|
{{/if}}
|
|
30
57
|
</div>
|
|
31
|
-
|
|
58
|
+
|
|
59
|
+
{{#if @applyRetroactivelyCheckbox}}
|
|
32
60
|
{{#if pattern.isNew}}
|
|
33
61
|
<div class="retro-checkbox">
|
|
34
|
-
<input
|
|
62
|
+
<input
|
|
63
|
+
checked={{pattern.retroactive}}
|
|
64
|
+
type="checkbox"
|
|
65
|
+
class="checkbox"
|
|
66
|
+
onclick={{fn this.checkboxChanged pattern}}
|
|
67
|
+
/>
|
|
35
68
|
Apply retroactively
|
|
36
69
|
</div>
|
|
37
70
|
{{/if}}
|
|
38
71
|
{{/if}}
|
|
72
|
+
|
|
39
73
|
{{~#if pattern.error~}}
|
|
40
74
|
<pre class="api-error">
|
|
41
75
|
{{~pattern.error~}}
|
|
42
76
|
</pre>
|
|
43
77
|
{{~/if~}}
|
|
44
|
-
{{/each}}
|
|
78
|
+
{{/each}}
|
|
@@ -1,10 +1,18 @@
|
|
|
1
|
-
{{yield
|
|
1
|
+
{{yield
|
|
2
|
+
(hash addTab=this.addTab removeTab=this.removeTab selectTab=this.selectTab)
|
|
3
|
+
}}
|
|
4
|
+
|
|
2
5
|
<ul class="tabs">
|
|
3
|
-
{{#each tabs as |tab|}}
|
|
6
|
+
{{#each this.tabs as |tab|}}
|
|
4
7
|
<li>
|
|
5
|
-
<a
|
|
8
|
+
<a
|
|
9
|
+
title={{unbound tab.hint}}
|
|
10
|
+
href="#"
|
|
11
|
+
class={{if tab.active "active"}}
|
|
12
|
+
{{on "click" (fn this.selectTab tab)}}
|
|
13
|
+
>
|
|
6
14
|
{{unbound tab.name}}
|
|
7
15
|
</a>
|
|
8
16
|
</li>
|
|
9
17
|
{{/each}}
|
|
10
|
-
</ul>
|
|
18
|
+
</ul>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{{time}}
|
|
1
|
+
<span title={{this.title}}>{{this.time}}</span>
|