logster 2.1.0 → 2.1.1
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/.gitignore +19 -19
- data/.rubocop.yml +1 -1
- data/.travis.yml +16 -16
- data/CHANGELOG.md +169 -166
- data/Gemfile +4 -4
- data/Guardfile +8 -8
- data/LICENSE.txt +22 -22
- data/README.md +99 -99
- data/Rakefile +21 -21
- data/assets/fonts/FontAwesome.otf +0 -0
- data/assets/fonts/fontawesome-webfont.eot +0 -0
- data/assets/fonts/fontawesome-webfont.svg +639 -639
- data/assets/fonts/fontawesome-webfont.ttf +0 -0
- data/assets/fonts/fontawesome-webfont.woff +0 -0
- data/assets/fonts/fontawesome-webfont.woff2 +0 -0
- data/assets/images/Icon-144_rounded.png +0 -0
- data/assets/images/Icon-144_square.png +0 -0
- data/assets/images/icon_144x144.png +0 -0
- data/assets/images/icon_64x64.png +0 -0
- data/assets/javascript/client-app.js +100 -100
- data/assets/stylesheets/client-app.css +0 -0
- data/build_client_app.sh +0 -0
- data/client-app/.editorconfig +20 -20
- data/client-app/.ember-cli +9 -9
- data/client-app/.eslintignore +19 -19
- data/client-app/.eslintrc.js +46 -46
- data/client-app/.gitignore +23 -23
- data/client-app/.travis.yml +27 -27
- data/client-app/.watchmanconfig +3 -3
- data/client-app/README.md +57 -57
- data/client-app/app/app.js +14 -14
- data/client-app/app/components/actions-menu.js +37 -37
- data/client-app/app/components/env-tab.js +44 -44
- data/client-app/app/components/message-info.js +65 -65
- data/client-app/app/components/message-row.js +45 -45
- data/client-app/app/components/panel-resizer.js +74 -74
- data/client-app/app/components/tab-contents.js +27 -27
- data/client-app/app/components/tab-link.js +5 -5
- data/client-app/app/components/tabbed-section.js +32 -32
- data/client-app/app/components/time-formatter.js +25 -25
- data/client-app/app/components/update-time.js +21 -21
- data/client-app/app/controllers/index.js +105 -105
- data/client-app/app/controllers/show.js +13 -13
- data/client-app/app/index.html +29 -29
- data/client-app/app/initializers/app-init.js +72 -72
- data/client-app/app/lib/preload.js +14 -14
- data/client-app/app/lib/utilities.js +140 -140
- data/client-app/app/models/message-collection.js +178 -178
- data/client-app/app/models/message.js +100 -100
- data/client-app/app/resolver.js +3 -3
- data/client-app/app/router.js +14 -14
- data/client-app/app/routes/index.js +57 -57
- data/client-app/app/routes/show.js +14 -14
- data/client-app/app/styles/app.css +521 -521
- data/client-app/app/templates/application.hbs +2 -2
- data/client-app/app/templates/components/actions-menu.hbs +12 -12
- data/client-app/app/templates/components/env-tab.hbs +10 -10
- data/client-app/app/templates/components/message-info.hbs +41 -41
- data/client-app/app/templates/components/message-row.hbs +15 -15
- data/client-app/app/templates/components/panel-resizer.hbs +3 -3
- data/client-app/app/templates/components/tabbed-section.hbs +10 -10
- data/client-app/app/templates/components/time-formatter.hbs +1 -1
- data/client-app/app/templates/index.hbs +58 -58
- data/client-app/app/templates/show.hbs +7 -7
- data/client-app/config/environment.js +51 -51
- data/client-app/config/optional-features.json +3 -3
- data/client-app/config/targets.js +18 -18
- data/client-app/ember-cli-build.js +29 -29
- data/client-app/package-lock.json +11365 -11365
- data/client-app/package.json +56 -56
- data/client-app/testem.js +25 -25
- data/client-app/tests/index.html +34 -34
- data/client-app/tests/integration/components/actions-menu-test.js +26 -26
- data/client-app/tests/integration/components/env-tab-test.js +73 -73
- data/client-app/tests/integration/components/message-info-test.js +26 -26
- data/client-app/tests/integration/components/message-row-test.js +26 -26
- data/client-app/tests/integration/components/panel-resizer-test.js +26 -26
- data/client-app/tests/integration/components/tab-contents-test.js +26 -26
- data/client-app/tests/integration/components/tab-link-test.js +26 -26
- data/client-app/tests/integration/components/tabbed-section-test.js +26 -26
- data/client-app/tests/integration/components/time-formatter-test.js +26 -26
- data/client-app/tests/integration/components/update-time-test.js +26 -26
- data/client-app/tests/test-helper.js +8 -8
- data/client-app/tests/unit/controllers/index-test.js +12 -12
- data/client-app/tests/unit/controllers/show-test.js +12 -12
- data/client-app/tests/unit/initializers/app-init-test.js +31 -31
- data/client-app/tests/unit/routes/index-test.js +11 -11
- data/client-app/tests/unit/routes/show-test.js +11 -11
- data/lib/examples/sidekiq_logster_reporter.rb +21 -21
- data/lib/logster.rb +54 -54
- data/lib/logster/base_store.rb +141 -141
- data/lib/logster/configuration.rb +25 -25
- data/lib/logster/defer_logger.rb +14 -14
- data/lib/logster/ignore_pattern.rb +65 -65
- data/lib/logster/logger.rb +113 -113
- data/lib/logster/message.rb +212 -212
- data/lib/logster/middleware/debug_exceptions.rb +26 -26
- data/lib/logster/middleware/reporter.rb +55 -55
- data/lib/logster/middleware/viewer.rb +221 -221
- data/lib/logster/rails/railtie.rb +63 -63
- data/lib/logster/redis_store.rb +566 -566
- data/lib/logster/scheduler.rb +54 -40
- data/lib/logster/version.rb +3 -3
- data/lib/logster/web.rb +14 -14
- data/logster.gemspec +35 -35
- data/test/examples/test_sidekiq_reporter_example.rb +46 -46
- data/test/fake_data/Gemfile +4 -4
- data/test/fake_data/generate.rb +10 -10
- data/test/logster/middleware/test_reporter.rb +19 -19
- data/test/logster/middleware/test_viewer.rb +96 -96
- data/test/logster/test_base_store.rb +147 -147
- data/test/logster/test_defer_logger.rb +34 -34
- data/test/logster/test_ignore_pattern.rb +41 -41
- data/test/logster/test_logger.rb +86 -86
- data/test/logster/test_message.rb +119 -119
- data/test/logster/test_redis_rate_limiter.rb +230 -230
- data/test/logster/test_redis_store.rb +720 -720
- data/test/test_helper.rb +38 -38
- data/vendor/assets/javascripts/logster.js.erb +39 -39
- metadata +2 -2
data/client-app/.travis.yml
CHANGED
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
---
|
|
2
|
-
language: node_js
|
|
3
|
-
node_js:
|
|
4
|
-
- "6"
|
|
5
|
-
|
|
6
|
-
sudo: false
|
|
7
|
-
dist: trusty
|
|
8
|
-
|
|
9
|
-
addons:
|
|
10
|
-
chrome: stable
|
|
11
|
-
|
|
12
|
-
cache:
|
|
13
|
-
directories:
|
|
14
|
-
- $HOME/.npm
|
|
15
|
-
|
|
16
|
-
env:
|
|
17
|
-
global:
|
|
18
|
-
# See https://git.io/vdao3 for details.
|
|
19
|
-
- JOBS=1
|
|
20
|
-
|
|
21
|
-
before_install:
|
|
22
|
-
- npm config set spin false
|
|
23
|
-
|
|
24
|
-
script:
|
|
25
|
-
- npm run lint:hbs
|
|
26
|
-
- npm run lint:js
|
|
27
|
-
- npm test
|
|
1
|
+
---
|
|
2
|
+
language: node_js
|
|
3
|
+
node_js:
|
|
4
|
+
- "6"
|
|
5
|
+
|
|
6
|
+
sudo: false
|
|
7
|
+
dist: trusty
|
|
8
|
+
|
|
9
|
+
addons:
|
|
10
|
+
chrome: stable
|
|
11
|
+
|
|
12
|
+
cache:
|
|
13
|
+
directories:
|
|
14
|
+
- $HOME/.npm
|
|
15
|
+
|
|
16
|
+
env:
|
|
17
|
+
global:
|
|
18
|
+
# See https://git.io/vdao3 for details.
|
|
19
|
+
- JOBS=1
|
|
20
|
+
|
|
21
|
+
before_install:
|
|
22
|
+
- npm config set spin false
|
|
23
|
+
|
|
24
|
+
script:
|
|
25
|
+
- npm run lint:hbs
|
|
26
|
+
- npm run lint:js
|
|
27
|
+
- npm test
|
data/client-app/.watchmanconfig
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
{
|
|
2
|
-
"ignore_dirs": ["tmp", "dist"]
|
|
3
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"ignore_dirs": ["tmp", "dist"]
|
|
3
|
+
}
|
data/client-app/README.md
CHANGED
|
@@ -1,57 +1,57 @@
|
|
|
1
|
-
# client-app
|
|
2
|
-
|
|
3
|
-
This README outlines the details of collaborating on this Ember application.
|
|
4
|
-
A short introduction of this app could easily go here.
|
|
5
|
-
|
|
6
|
-
## Prerequisites
|
|
7
|
-
|
|
8
|
-
You will need the following things properly installed on your computer.
|
|
9
|
-
|
|
10
|
-
* [Git](https://git-scm.com/)
|
|
11
|
-
* [Node.js](https://nodejs.org/) (with npm)
|
|
12
|
-
* [Ember CLI](https://ember-cli.com/)
|
|
13
|
-
* [Google Chrome](https://google.com/chrome/)
|
|
14
|
-
|
|
15
|
-
## Installation
|
|
16
|
-
|
|
17
|
-
* `git clone <repository-url>` this repository
|
|
18
|
-
* `cd client-app`
|
|
19
|
-
* `npm install`
|
|
20
|
-
|
|
21
|
-
## Running / Development
|
|
22
|
-
|
|
23
|
-
* `ember serve`
|
|
24
|
-
* Visit your app at [http://localhost:4200](http://localhost:4200).
|
|
25
|
-
* Visit your tests at [http://localhost:4200/tests](http://localhost:4200/tests).
|
|
26
|
-
|
|
27
|
-
### Code Generators
|
|
28
|
-
|
|
29
|
-
Make use of the many generators for code, try `ember help generate` for more details
|
|
30
|
-
|
|
31
|
-
### Running Tests
|
|
32
|
-
|
|
33
|
-
* `ember test`
|
|
34
|
-
* `ember test --server`
|
|
35
|
-
|
|
36
|
-
### Linting
|
|
37
|
-
|
|
38
|
-
* `npm run lint:hbs`
|
|
39
|
-
* `npm run lint:js`
|
|
40
|
-
* `npm run lint:js -- --fix`
|
|
41
|
-
|
|
42
|
-
### Building
|
|
43
|
-
|
|
44
|
-
* `ember build` (development)
|
|
45
|
-
* `ember build --environment production` (production)
|
|
46
|
-
|
|
47
|
-
### Deploying
|
|
48
|
-
|
|
49
|
-
Specify what it takes to deploy your app.
|
|
50
|
-
|
|
51
|
-
## Further Reading / Useful Links
|
|
52
|
-
|
|
53
|
-
* [ember.js](https://emberjs.com/)
|
|
54
|
-
* [ember-cli](https://ember-cli.com/)
|
|
55
|
-
* Development Browser Extensions
|
|
56
|
-
* [ember inspector for chrome](https://chrome.google.com/webstore/detail/ember-inspector/bmdblncegkenkacieihfhpjfppoconhi)
|
|
57
|
-
* [ember inspector for firefox](https://addons.mozilla.org/en-US/firefox/addon/ember-inspector/)
|
|
1
|
+
# client-app
|
|
2
|
+
|
|
3
|
+
This README outlines the details of collaborating on this Ember application.
|
|
4
|
+
A short introduction of this app could easily go here.
|
|
5
|
+
|
|
6
|
+
## Prerequisites
|
|
7
|
+
|
|
8
|
+
You will need the following things properly installed on your computer.
|
|
9
|
+
|
|
10
|
+
* [Git](https://git-scm.com/)
|
|
11
|
+
* [Node.js](https://nodejs.org/) (with npm)
|
|
12
|
+
* [Ember CLI](https://ember-cli.com/)
|
|
13
|
+
* [Google Chrome](https://google.com/chrome/)
|
|
14
|
+
|
|
15
|
+
## Installation
|
|
16
|
+
|
|
17
|
+
* `git clone <repository-url>` this repository
|
|
18
|
+
* `cd client-app`
|
|
19
|
+
* `npm install`
|
|
20
|
+
|
|
21
|
+
## Running / Development
|
|
22
|
+
|
|
23
|
+
* `ember serve`
|
|
24
|
+
* Visit your app at [http://localhost:4200](http://localhost:4200).
|
|
25
|
+
* Visit your tests at [http://localhost:4200/tests](http://localhost:4200/tests).
|
|
26
|
+
|
|
27
|
+
### Code Generators
|
|
28
|
+
|
|
29
|
+
Make use of the many generators for code, try `ember help generate` for more details
|
|
30
|
+
|
|
31
|
+
### Running Tests
|
|
32
|
+
|
|
33
|
+
* `ember test`
|
|
34
|
+
* `ember test --server`
|
|
35
|
+
|
|
36
|
+
### Linting
|
|
37
|
+
|
|
38
|
+
* `npm run lint:hbs`
|
|
39
|
+
* `npm run lint:js`
|
|
40
|
+
* `npm run lint:js -- --fix`
|
|
41
|
+
|
|
42
|
+
### Building
|
|
43
|
+
|
|
44
|
+
* `ember build` (development)
|
|
45
|
+
* `ember build --environment production` (production)
|
|
46
|
+
|
|
47
|
+
### Deploying
|
|
48
|
+
|
|
49
|
+
Specify what it takes to deploy your app.
|
|
50
|
+
|
|
51
|
+
## Further Reading / Useful Links
|
|
52
|
+
|
|
53
|
+
* [ember.js](https://emberjs.com/)
|
|
54
|
+
* [ember-cli](https://ember-cli.com/)
|
|
55
|
+
* Development Browser Extensions
|
|
56
|
+
* [ember inspector for chrome](https://chrome.google.com/webstore/detail/ember-inspector/bmdblncegkenkacieihfhpjfppoconhi)
|
|
57
|
+
* [ember inspector for firefox](https://addons.mozilla.org/en-US/firefox/addon/ember-inspector/)
|
data/client-app/app/app.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import Application from "@ember/application";
|
|
2
|
-
import Resolver from "./resolver";
|
|
3
|
-
import loadInitializers from "ember-load-initializers";
|
|
4
|
-
import config from "./config/environment";
|
|
5
|
-
|
|
6
|
-
const App = Application.extend({
|
|
7
|
-
modulePrefix: config.modulePrefix,
|
|
8
|
-
podModulePrefix: config.podModulePrefix,
|
|
9
|
-
Resolver
|
|
10
|
-
});
|
|
11
|
-
|
|
12
|
-
loadInitializers(App, config.modulePrefix);
|
|
13
|
-
|
|
14
|
-
export default App;
|
|
1
|
+
import Application from "@ember/application";
|
|
2
|
+
import Resolver from "./resolver";
|
|
3
|
+
import loadInitializers from "ember-load-initializers";
|
|
4
|
+
import config from "./config/environment";
|
|
5
|
+
|
|
6
|
+
const App = Application.extend({
|
|
7
|
+
modulePrefix: config.modulePrefix,
|
|
8
|
+
podModulePrefix: config.podModulePrefix,
|
|
9
|
+
Resolver
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
loadInitializers(App, config.modulePrefix);
|
|
13
|
+
|
|
14
|
+
export default App;
|
|
@@ -1,37 +1,37 @@
|
|
|
1
|
-
import Component from "@ember/component";
|
|
2
|
-
import { observer } from "@ember/object";
|
|
3
|
-
|
|
4
|
-
export default Component.extend({
|
|
5
|
-
showMenu: false,
|
|
6
|
-
tagName: "span",
|
|
7
|
-
|
|
8
|
-
init() {
|
|
9
|
-
this._super(...arguments);
|
|
10
|
-
this.bindingFunction = this.bindingFunction.bind(this);
|
|
11
|
-
},
|
|
12
|
-
|
|
13
|
-
bindingFunction(event) {
|
|
14
|
-
const context = this.$()[0];
|
|
15
|
-
if (!Em.$.contains(context, event.target) && context !== event.target) {
|
|
16
|
-
this.set("showMenu", false);
|
|
17
|
-
}
|
|
18
|
-
},
|
|
19
|
-
|
|
20
|
-
bindDocument: observer("showMenu", function() {
|
|
21
|
-
const $document = Em.$(document);
|
|
22
|
-
if (this.get("showMenu")) {
|
|
23
|
-
$document.on("click", this.get("bindingFunction"));
|
|
24
|
-
} else {
|
|
25
|
-
$document.unbind("click", this.get("bindingFunction"));
|
|
26
|
-
}
|
|
27
|
-
}),
|
|
28
|
-
|
|
29
|
-
actions: {
|
|
30
|
-
expandMenu() {
|
|
31
|
-
this.toggleProperty("showMenu");
|
|
32
|
-
},
|
|
33
|
-
share() {
|
|
34
|
-
this.share();
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
});
|
|
1
|
+
import Component from "@ember/component";
|
|
2
|
+
import { observer } from "@ember/object";
|
|
3
|
+
|
|
4
|
+
export default Component.extend({
|
|
5
|
+
showMenu: false,
|
|
6
|
+
tagName: "span",
|
|
7
|
+
|
|
8
|
+
init() {
|
|
9
|
+
this._super(...arguments);
|
|
10
|
+
this.bindingFunction = this.bindingFunction.bind(this);
|
|
11
|
+
},
|
|
12
|
+
|
|
13
|
+
bindingFunction(event) {
|
|
14
|
+
const context = this.$()[0];
|
|
15
|
+
if (!Em.$.contains(context, event.target) && context !== event.target) {
|
|
16
|
+
this.set("showMenu", false);
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
|
|
20
|
+
bindDocument: observer("showMenu", function() {
|
|
21
|
+
const $document = Em.$(document);
|
|
22
|
+
if (this.get("showMenu")) {
|
|
23
|
+
$document.on("click", this.get("bindingFunction"));
|
|
24
|
+
} else {
|
|
25
|
+
$document.unbind("click", this.get("bindingFunction"));
|
|
26
|
+
}
|
|
27
|
+
}),
|
|
28
|
+
|
|
29
|
+
actions: {
|
|
30
|
+
expandMenu() {
|
|
31
|
+
this.toggleProperty("showMenu");
|
|
32
|
+
},
|
|
33
|
+
share() {
|
|
34
|
+
this.share();
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
});
|
|
@@ -1,44 +1,44 @@
|
|
|
1
|
-
import Component from "@ember/component";
|
|
2
|
-
import { computed } from "@ember/object";
|
|
3
|
-
import { buildHashString } from "client-app/lib/utilities";
|
|
4
|
-
|
|
5
|
-
export default Component.extend({
|
|
6
|
-
current: 1,
|
|
7
|
-
|
|
8
|
-
didUpdateAttrs() {
|
|
9
|
-
this.set("current", 1);
|
|
10
|
-
},
|
|
11
|
-
|
|
12
|
-
isEnvArray: computed("message.env", function() {
|
|
13
|
-
return Array.isArray(this.get("message.env"));
|
|
14
|
-
}),
|
|
15
|
-
|
|
16
|
-
html: computed("isEnvArray", "current", function() {
|
|
17
|
-
if (!this.get("isEnvArray")) {
|
|
18
|
-
return buildHashString(this.get("message.env"));
|
|
19
|
-
} else {
|
|
20
|
-
const currentEnv = this.get("message.env")[this.get("current") - 1];
|
|
21
|
-
return buildHashString(currentEnv);
|
|
22
|
-
}
|
|
23
|
-
}),
|
|
24
|
-
|
|
25
|
-
disableBackButtons: computed("current", function() {
|
|
26
|
-
return this.get("current") === 1;
|
|
27
|
-
}),
|
|
28
|
-
|
|
29
|
-
disableForwardButtons: computed("current", "message.env.length", function() {
|
|
30
|
-
return this.get("current") === this.get("message.env.length");
|
|
31
|
-
}),
|
|
32
|
-
|
|
33
|
-
actions: {
|
|
34
|
-
takeStep(dir) {
|
|
35
|
-
const amount = dir === "back" ? -1 : 1;
|
|
36
|
-
this.set("current", this.get("current") + amount);
|
|
37
|
-
},
|
|
38
|
-
|
|
39
|
-
bigJump(dir) {
|
|
40
|
-
const newCurrent = dir === "back" ? 1 : this.get("message.env.length");
|
|
41
|
-
this.set("current", newCurrent);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
});
|
|
1
|
+
import Component from "@ember/component";
|
|
2
|
+
import { computed } from "@ember/object";
|
|
3
|
+
import { buildHashString } from "client-app/lib/utilities";
|
|
4
|
+
|
|
5
|
+
export default Component.extend({
|
|
6
|
+
current: 1,
|
|
7
|
+
|
|
8
|
+
didUpdateAttrs() {
|
|
9
|
+
this.set("current", 1);
|
|
10
|
+
},
|
|
11
|
+
|
|
12
|
+
isEnvArray: computed("message.env", function() {
|
|
13
|
+
return Array.isArray(this.get("message.env"));
|
|
14
|
+
}),
|
|
15
|
+
|
|
16
|
+
html: computed("isEnvArray", "current", function() {
|
|
17
|
+
if (!this.get("isEnvArray")) {
|
|
18
|
+
return buildHashString(this.get("message.env"));
|
|
19
|
+
} else {
|
|
20
|
+
const currentEnv = this.get("message.env")[this.get("current") - 1];
|
|
21
|
+
return buildHashString(currentEnv);
|
|
22
|
+
}
|
|
23
|
+
}),
|
|
24
|
+
|
|
25
|
+
disableBackButtons: computed("current", function() {
|
|
26
|
+
return this.get("current") === 1;
|
|
27
|
+
}),
|
|
28
|
+
|
|
29
|
+
disableForwardButtons: computed("current", "message.env.length", function() {
|
|
30
|
+
return this.get("current") === this.get("message.env.length");
|
|
31
|
+
}),
|
|
32
|
+
|
|
33
|
+
actions: {
|
|
34
|
+
takeStep(dir) {
|
|
35
|
+
const amount = dir === "back" ? -1 : 1;
|
|
36
|
+
this.set("current", this.get("current") + amount);
|
|
37
|
+
},
|
|
38
|
+
|
|
39
|
+
bigJump(dir) {
|
|
40
|
+
const newCurrent = dir === "back" ? 1 : this.get("message.env.length");
|
|
41
|
+
this.set("current", newCurrent);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
});
|
|
@@ -1,65 +1,65 @@
|
|
|
1
|
-
import Component from "@ember/component";
|
|
2
|
-
import { computed } from "@ember/object";
|
|
3
|
-
|
|
4
|
-
export default Component.extend({
|
|
5
|
-
buttons: computed("currentMessage.{canSolve,protected}", function() {
|
|
6
|
-
const canSolve = this.get("currentMessage.canSolve");
|
|
7
|
-
const protect = this.get("currentMessage.protected");
|
|
8
|
-
const buttons = [];
|
|
9
|
-
|
|
10
|
-
if (!protect && canSolve) {
|
|
11
|
-
buttons.push({
|
|
12
|
-
klass: "solve",
|
|
13
|
-
action: "solve",
|
|
14
|
-
icon: "check-square-o",
|
|
15
|
-
label: "Solve",
|
|
16
|
-
danger: true
|
|
17
|
-
});
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
if (!protect) {
|
|
21
|
-
buttons.push(
|
|
22
|
-
{
|
|
23
|
-
klass: "remove",
|
|
24
|
-
action: "remove",
|
|
25
|
-
icon: "trash-o",
|
|
26
|
-
label: "Remove",
|
|
27
|
-
danger: true
|
|
28
|
-
},
|
|
29
|
-
{
|
|
30
|
-
klass: "protect",
|
|
31
|
-
action: "protect",
|
|
32
|
-
icon: "lock",
|
|
33
|
-
label: "Protect"
|
|
34
|
-
}
|
|
35
|
-
);
|
|
36
|
-
} else {
|
|
37
|
-
buttons.push({
|
|
38
|
-
klass: "unprotect",
|
|
39
|
-
action: "unprotect",
|
|
40
|
-
icon: "unlock",
|
|
41
|
-
label: "Unprotect"
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
return buttons;
|
|
46
|
-
}),
|
|
47
|
-
|
|
48
|
-
actions: {
|
|
49
|
-
protect() {
|
|
50
|
-
this.get("currentMessage").protect();
|
|
51
|
-
},
|
|
52
|
-
unprotect() {
|
|
53
|
-
this.get("currentMessage").unprotect();
|
|
54
|
-
},
|
|
55
|
-
remove() {
|
|
56
|
-
this.removeMessage(this.get("currentMessage"));
|
|
57
|
-
},
|
|
58
|
-
solve() {
|
|
59
|
-
this.solveMessage(this.get("currentMessage"));
|
|
60
|
-
},
|
|
61
|
-
share() {
|
|
62
|
-
window.location.pathname = this.get("currentMessage.shareUrl");
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
});
|
|
1
|
+
import Component from "@ember/component";
|
|
2
|
+
import { computed } from "@ember/object";
|
|
3
|
+
|
|
4
|
+
export default Component.extend({
|
|
5
|
+
buttons: computed("currentMessage.{canSolve,protected}", function() {
|
|
6
|
+
const canSolve = this.get("currentMessage.canSolve");
|
|
7
|
+
const protect = this.get("currentMessage.protected");
|
|
8
|
+
const buttons = [];
|
|
9
|
+
|
|
10
|
+
if (!protect && canSolve) {
|
|
11
|
+
buttons.push({
|
|
12
|
+
klass: "solve",
|
|
13
|
+
action: "solve",
|
|
14
|
+
icon: "check-square-o",
|
|
15
|
+
label: "Solve",
|
|
16
|
+
danger: true
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
if (!protect) {
|
|
21
|
+
buttons.push(
|
|
22
|
+
{
|
|
23
|
+
klass: "remove",
|
|
24
|
+
action: "remove",
|
|
25
|
+
icon: "trash-o",
|
|
26
|
+
label: "Remove",
|
|
27
|
+
danger: true
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
klass: "protect",
|
|
31
|
+
action: "protect",
|
|
32
|
+
icon: "lock",
|
|
33
|
+
label: "Protect"
|
|
34
|
+
}
|
|
35
|
+
);
|
|
36
|
+
} else {
|
|
37
|
+
buttons.push({
|
|
38
|
+
klass: "unprotect",
|
|
39
|
+
action: "unprotect",
|
|
40
|
+
icon: "unlock",
|
|
41
|
+
label: "Unprotect"
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
return buttons;
|
|
46
|
+
}),
|
|
47
|
+
|
|
48
|
+
actions: {
|
|
49
|
+
protect() {
|
|
50
|
+
this.get("currentMessage").protect();
|
|
51
|
+
},
|
|
52
|
+
unprotect() {
|
|
53
|
+
this.get("currentMessage").unprotect();
|
|
54
|
+
},
|
|
55
|
+
remove() {
|
|
56
|
+
this.removeMessage(this.get("currentMessage"));
|
|
57
|
+
},
|
|
58
|
+
solve() {
|
|
59
|
+
this.solveMessage(this.get("currentMessage"));
|
|
60
|
+
},
|
|
61
|
+
share() {
|
|
62
|
+
window.location.pathname = this.get("currentMessage.shareUrl");
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
});
|