From b02967c5eff10de2135eaba30c9210987fa4a2e8 Mon Sep 17 00:00:00 2001 From: Sebastian Kippe Date: Wed, 17 Jul 2019 12:58:16 +0200 Subject: [PATCH] Basic contribution details Adds a details pane for contribution records, similar to contributor profiles. Just the basic details for now. Can be extended with all kinds of data, links, icons, etc. from here on. --- .template-lintrc.js | 3 +- app/models/contribution.js | 10 +- app/styles/app.scss | 1 + .../components/_contribution-details.scss | 60 ++++ .../dashboard/contributions/show.hbs | 49 +++- package-lock.json | 257 +++++++++++++++++- package.json | 2 + 7 files changed, 357 insertions(+), 25 deletions(-) create mode 100644 app/styles/components/_contribution-details.scss diff --git a/.template-lintrc.js b/.template-lintrc.js index 02bee12..f9345c8 100644 --- a/.template-lintrc.js +++ b/.template-lintrc.js @@ -4,6 +4,7 @@ module.exports = { extends: 'recommended', rules: { - 'simple-unless': false + 'simple-unless': false, + 'no-nested-interactive': false } }; diff --git a/app/models/contribution.js b/app/models/contribution.js index f5c30e0..a19c341 100644 --- a/app/models/contribution.js +++ b/app/models/contribution.js @@ -1,4 +1,4 @@ -import EmberObject from '@ember/object'; +import EmberObject, { computed } from '@ember/object'; import bignumber from 'kredits-web/utils/cps/bignumber'; export default EmberObject.extend({ @@ -18,11 +18,17 @@ export default EmberObject.extend({ description: null, details: null, url: null, + date: null, + time: null, ipfsData: '', init () { this._super(...arguments); this.set('details', {}); - } + }, + + iso8601Date: computed('date', 'time', function() { + return this.time ? `${this.date}T${this.time}` : this.date; + }) }); diff --git a/app/styles/app.scss b/app/styles/app.scss index 50b27d4..5db3cf8 100644 --- a/app/styles/app.scss +++ b/app/styles/app.scss @@ -99,6 +99,7 @@ section { @import "forms"; @import "components/contribution-list"; +@import "components/contribution-details"; @import "components/contributor-list"; @import "components/contributor-profile"; @import "components/external-account-link"; diff --git a/app/styles/components/_contribution-details.scss b/app/styles/components/_contribution-details.scss new file mode 100644 index 0000000..7f59a4e --- /dev/null +++ b/app/styles/components/_contribution-details.scss @@ -0,0 +1,60 @@ +section#contribution-details { + header { + nav { + .amount { + font-size: 1.5rem; + } + + .symbol { + // font-size: 0.8rem; + padding-left: 0.2rem; + } + } + } + + .content { + width: 100%; + margin: 0 0 1.5rem; + padding: 2rem 2rem; + + border-top: 1px solid rgba(255,255,255,0.2); + border-bottom: 1px solid rgba(255,255,255,0.2); + background-color: rgba(255,255,255,0.1); + + h3 { + font-size: 1.5rem; + margin-bottom: 2rem; + } + + p { + margin-bottom: 2rem; + + span { + font-size: inherit; + } + + &.who-what-when { + font-size: 1.2rem; + margin-bottom: 1.2rem; + } + + &:last-of-type { + margin-bottom: 0; + } + } + + a { + color: $primary-color; + text-decoration: none; + font-size: inherit; + + &:hover { + text-decoration: underline; + } + } + } + + .actions { + text-align: center; + } +} diff --git a/app/templates/dashboard/contributions/show.hbs b/app/templates/dashboard/contributions/show.hbs index 4f460fb..9dcc8cd 100644 --- a/app/templates/dashboard/contributions/show.hbs +++ b/app/templates/dashboard/contributions/show.hbs @@ -1,16 +1,47 @@
-
-

Details

+
+

Contribution #{{model.id}}

+
+

+ + {{user-avatar contributor=model.contributor}} + {{link-to model.contributor.name "dashboard.contributors.show" model.contributor}} + + contributed + {{moment-from model.iso8601Date}}: +

{{model.description}}

- - Open URL - +

+ Kind: {{model.kind}} +
Status: {{contribution-status model}} +

+ {{#if model.url}} +

+ + Open URL + +

+ {{/if}} +
+ +
+

+ {{#if model.ipfsHash}} + + Inspect IPFS data + + {{/if}} +

\ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 00860f3..fa727e5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6481,6 +6481,12 @@ "silent-error": "^1.1.0" } }, + "ember-cli-import-polyfill": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/ember-cli-import-polyfill/-/ember-cli-import-polyfill-0.2.0.tgz", + "integrity": "sha1-waCKiv+0XJe2dZJicv54z0yhZvI=", + "dev": true + }, "ember-cli-inject-live-reload": { "version": "1.10.2", "resolved": "https://registry.npmjs.org/ember-cli-inject-live-reload/-/ember-cli-inject-live-reload-1.10.2.tgz", @@ -6503,6 +6509,138 @@ "integrity": "sha1-IMtop5D+D94kiN39jvu332/nZvI=", "dev": true }, + "ember-cli-moment-shim": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/ember-cli-moment-shim/-/ember-cli-moment-shim-3.7.1.tgz", + "integrity": "sha512-U3HHuEU7sXQ78v25ifmIa9w4nQPQ7vK/LZ2bt18pN3aKNvIDYiLe/MDeXGmqfFIq3OfruKG+CF+7dOLqxuzSlQ==", + "dev": true, + "requires": { + "broccoli-funnel": "^2.0.0", + "broccoli-merge-trees": "^2.0.0", + "broccoli-source": "^1.1.0", + "broccoli-stew": "^1.5.0", + "chalk": "^1.1.3", + "ember-cli-babel": "^6.6.0", + "ember-cli-import-polyfill": "^0.2.0", + "lodash.defaults": "^4.2.0", + "moment": "^2.19.3", + "moment-timezone": "^0.5.13" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "broccoli-stew": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/broccoli-stew/-/broccoli-stew-1.6.0.tgz", + "integrity": "sha512-sUwCJNnYH4Na690By5xcEMAZqKgquUQnMAEuIiL3Z2k63mSw9Xg+7Ew4wCrFrMmXMcLpWjZDOm6Yqnq268N+ZQ==", + "dev": true, + "requires": { + "broccoli-debug": "^0.6.1", + "broccoli-funnel": "^2.0.0", + "broccoli-merge-trees": "^2.0.0", + "broccoli-persistent-filter": "^1.1.6", + "broccoli-plugin": "^1.3.0", + "chalk": "^2.4.1", + "debug": "^3.1.0", + "ensure-posix-path": "^1.0.1", + "fs-extra": "^5.0.0", + "minimatch": "^3.0.4", + "resolve": "^1.8.1", + "rsvp": "^4.8.3", + "symlink-or-copy": "^1.2.0", + "walk-sync": "^0.3.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + } + } + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ember-cli-babel": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/ember-cli-babel/-/ember-cli-babel-6.18.0.tgz", + "integrity": "sha512-7ceC8joNYxY2wES16iIBlbPSxwKDBhYwC8drU3ZEvuPDMwVv1KzxCNu1fvxyFEBWhwaRNTUxSCsEVoTd9nosGA==", + "dev": true, + "requires": { + "amd-name-resolver": "1.2.0", + "babel-plugin-debug-macros": "^0.2.0-beta.6", + "babel-plugin-ember-modules-api-polyfill": "^2.6.0", + "babel-plugin-transform-es2015-modules-amd": "^6.24.0", + "babel-polyfill": "^6.26.0", + "babel-preset-env": "^1.7.0", + "broccoli-babel-transpiler": "^6.5.0", + "broccoli-debug": "^0.6.4", + "broccoli-funnel": "^2.0.0", + "broccoli-source": "^1.1.0", + "clone": "^2.0.0", + "ember-cli-version-checker": "^2.1.2", + "semver": "^5.5.0" + } + }, + "fs-extra": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-5.0.0.tgz", + "integrity": "sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "rsvp": { + "version": "4.8.5", + "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", + "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, "ember-cli-node-assets": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/ember-cli-node-assets/-/ember-cli-node-assets-0.2.2.tgz", @@ -7051,6 +7189,15 @@ } } }, + "ember-factory-for-polyfill": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/ember-factory-for-polyfill/-/ember-factory-for-polyfill-1.3.1.tgz", + "integrity": "sha512-y3iG2iCzH96lZMTWQw6LWNLAfOmDC4pXKbZP6FxG8lt7GGaNFkZjwsf+Z5GAe7kxfD7UG4lVkF7x37K82rySGA==", + "dev": true, + "requires": { + "ember-cli-version-checker": "^2.1.0" + } + }, "ember-flatpickr": { "version": "2.14.0", "resolved": "https://registry.npmjs.org/ember-flatpickr/-/ember-flatpickr-2.14.0.tgz", @@ -7064,6 +7211,16 @@ "flatpickr": "4.5.2" } }, + "ember-getowner-polyfill": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ember-getowner-polyfill/-/ember-getowner-polyfill-2.2.0.tgz", + "integrity": "sha512-rwGMJgbGzxIAiWYjdpAh04Abvt0s3HuS/VjHzUFhVyVg2pzAuz45B9AzOxYXzkp88vFC7FPaiA4kE8NxNk4A4Q==", + "dev": true, + "requires": { + "ember-cli-version-checker": "^2.1.0", + "ember-factory-for-polyfill": "^1.3.1" + } + }, "ember-load-initializers": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/ember-load-initializers/-/ember-load-initializers-1.1.0.tgz", @@ -7233,6 +7390,52 @@ } } }, + "ember-moment": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/ember-moment/-/ember-moment-7.8.1.tgz", + "integrity": "sha512-qEMWvJYOGGgyusUE9b+2wU7uWUG8aHkzdE6NBtGjaX5NU8SeByQkH8RkA+QKZonWQH3JncdbG6UBqRO1Ng3DYA==", + "dev": true, + "requires": { + "ember-cli-babel": "^6.7.2", + "ember-getowner-polyfill": "^2.2.0", + "ember-macro-helpers": "^2.1.0" + }, + "dependencies": { + "ember-cli-babel": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/ember-cli-babel/-/ember-cli-babel-6.18.0.tgz", + "integrity": "sha512-7ceC8joNYxY2wES16iIBlbPSxwKDBhYwC8drU3ZEvuPDMwVv1KzxCNu1fvxyFEBWhwaRNTUxSCsEVoTd9nosGA==", + "dev": true, + "requires": { + "amd-name-resolver": "1.2.0", + "babel-plugin-debug-macros": "^0.2.0-beta.6", + "babel-plugin-ember-modules-api-polyfill": "^2.6.0", + "babel-plugin-transform-es2015-modules-amd": "^6.24.0", + "babel-polyfill": "^6.26.0", + "babel-preset-env": "^1.7.0", + "broccoli-babel-transpiler": "^6.5.0", + "broccoli-debug": "^0.6.4", + "broccoli-funnel": "^2.0.0", + "broccoli-source": "^1.1.0", + "clone": "^2.0.0", + "ember-cli-version-checker": "^2.1.2", + "semver": "^5.5.0" + } + }, + "ember-macro-helpers": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ember-macro-helpers/-/ember-macro-helpers-2.2.0.tgz", + "integrity": "sha512-/ah3k6GFyrAxA2EE8XzNcrk1BlLw34TXgb+1tNdbWQj8pPoP0Notc00xiEXUDgwJ6kTT3KaEBujFyuIbwe3rsw==", + "dev": true, + "requires": { + "ember-cli-babel": "^6.18.0", + "ember-cli-string-utils": "^1.1.0", + "ember-cli-test-info": "^1.0.0", + "ember-weakmap": "^3.0.0" + } + } + } + }, "ember-promise-helpers": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/ember-promise-helpers/-/ember-promise-helpers-1.0.6.tgz", @@ -9156,7 +9359,8 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -9177,12 +9381,14 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -9197,17 +9403,20 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -9324,7 +9533,8 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -9336,6 +9546,7 @@ "version": "1.0.0", "bundled": true, "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -9350,6 +9561,7 @@ "version": "3.0.4", "bundled": true, "dev": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -9357,12 +9569,14 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "minipass": { "version": "2.3.5", "bundled": true, "dev": true, + "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -9381,6 +9595,7 @@ "version": "0.5.1", "bundled": true, "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -9461,7 +9676,8 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -9473,6 +9689,7 @@ "version": "1.4.0", "bundled": true, "dev": true, + "optional": true, "requires": { "wrappy": "1" } @@ -9558,7 +9775,8 @@ "safe-buffer": { "version": "5.1.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -9594,6 +9812,7 @@ "version": "1.0.2", "bundled": true, "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -9613,6 +9832,7 @@ "version": "3.0.1", "bundled": true, "dev": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -9656,12 +9876,14 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "yallist": { "version": "3.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true } } }, @@ -10743,7 +10965,7 @@ "bs58": "^4.0.1", "buffer": "^5.2.1", "cids": "~0.5.5", - "concat-stream": "github:hugomrdias/concat-stream#057bc7b5d6d8df26c8cf00a3f151b6721a0a8034", + "concat-stream": "github:hugomrdias/concat-stream#feat/smaller", "debug": "^4.1.0", "detect-node": "^2.0.4", "end-of-stream": "^1.4.1", @@ -10765,7 +10987,7 @@ "multibase": "~0.6.0", "multicodec": "~0.5.0", "multihashes": "~0.4.14", - "ndjson": "github:hugomrdias/ndjson#4db16da6b42e5b39bf300c3a7cde62abb3fa3a11", + "ndjson": "github:hugomrdias/ndjson#feat/readable-stream3", "once": "^1.4.0", "peer-id": "~0.12.2", "peer-info": "~0.15.1", @@ -12821,6 +13043,15 @@ "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==", "dev": true }, + "moment-timezone": { + "version": "0.5.26", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.26.tgz", + "integrity": "sha512-sFP4cgEKTCymBBKgoxZjYzlSovC20Y6J7y3nanDc5RoBIXKlZhoYwBoZGe3flwU6A372AcRwScH8KiwV6zjy1g==", + "dev": true, + "requires": { + "moment": ">= 2.9.0" + } + }, "morgan": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.1.tgz", diff --git a/package.json b/package.json index 78408cb..d6709ea 100644 --- a/package.json +++ b/package.json @@ -42,6 +42,7 @@ "ember-cli-htmlbars": "^3.0.0", "ember-cli-htmlbars-inline-precompile": "^1.0.3", "ember-cli-inject-live-reload": "^1.8.2", + "ember-cli-moment-shim": "^3.7.1", "ember-cli-sass": "^7.2.0", "ember-cli-sri": "^2.1.1", "ember-cli-template-lint": "^1.0.0-beta.1", @@ -52,6 +53,7 @@ "ember-load-initializers": "^1.1.0", "ember-macro-helpers": "0.17.0", "ember-maybe-import-regenerator": "^0.1.6", + "ember-moment": "^7.8.1", "ember-promise-helpers": "1.0.6", "ember-qunit": "^3.4.1", "ember-resolver": "^5.0.1",