From 7325d2020e9044d16439d60b99357541a570ac8d Mon Sep 17 00:00:00 2001 From: Keith Holliday Date: Wed, 4 Oct 2017 16:47:19 -0500 Subject: [PATCH] Oct 4 fixes (#9159) * Added gem purchase note * Added notification count * Added party reload * Added description when user can no longer purchase gems this month * Prevent modal from showing when pruchasing recently purchased items * Added progress bar * Prevented non leader from loading approvals * Added group billing --- package-lock.json | 95 +++++++++++-------- package.json | 1 + website/client/app.vue | 10 +- website/client/components/appMenu.vue | 4 +- .../client/components/group-plans/billing.vue | 74 +++++++++++++++ .../client/components/group-plans/index.vue | 24 ++++- .../group-plans/taskInformation.vue | 16 +++- .../client/components/notificationMenu.vue | 72 ++++++++------ .../components/payments/buyGemsModal.vue | 6 ++ .../components/settings/subscription.vue | 37 -------- website/client/components/shops/buyModal.vue | 16 +++- .../client/components/shops/market/index.vue | 9 +- .../components/shops/quests/buyQuestModal.vue | 17 +--- .../client/components/shops/quests/index.vue | 8 ++ .../components/shops/seasonal/index.vue | 12 ++- website/client/mixins/buy.js | 15 ++- website/client/mixins/payments.js | 37 ++++++++ website/client/router.js | 7 ++ website/client/store/index.js | 2 + website/common/locales/en/groups.json | 5 +- website/common/locales/en/subscriber.json | 4 +- 21 files changed, 335 insertions(+), 136 deletions(-) create mode 100644 website/client/components/group-plans/billing.vue diff --git a/package-lock.json b/package-lock.json index 883abfa325..7dc8d51797 100644 --- a/package-lock.json +++ b/package-lock.json @@ -68,6 +68,15 @@ "@types/mime": "1.3.1" } }, + "JSONStream": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.1.tgz", + "integrity": "sha1-cH92HgHa6eFvG8+TcDt4xwlmV5o=", + "requires": { + "jsonparse": "1.3.1", + "through": "2.3.8" + } + }, "abbrev": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.0.tgz", @@ -782,6 +791,14 @@ "is-buffer": "1.1.5" } }, + "axios-progress-bar": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/axios-progress-bar/-/axios-progress-bar-0.1.7.tgz", + "integrity": "sha512-xStxJUtcQUH0ulLni5qc8YwvNMTUjO7rmUTsvnxS1bD2GJKEemozP6sJ5OeoC6jjd6MS5FZyx5BlkU/lD8JLUw==", + "requires": { + "nprogress": "0.2.0" + } + }, "babel-code-frame": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", @@ -2325,9 +2342,9 @@ "resolved": "https://registry.npmjs.org/browser-pack/-/browser-pack-6.0.2.tgz", "integrity": "sha1-+GzWzvT1MAyOY+B6TVEvZfv/RTE=", "requires": { + "JSONStream": "1.3.1", "combine-source-map": "0.7.2", "defined": "1.0.0", - "JSONStream": "1.3.1", "through2": "2.0.3", "umd": "3.0.1" } @@ -2357,6 +2374,7 @@ "resolved": "https://registry.npmjs.org/browserify/-/browserify-12.0.2.tgz", "integrity": "sha1-V/IeXm4wj/WYfE2v1EhAsrmPehk=", "requires": { + "JSONStream": "1.3.1", "assert": "1.3.0", "browser-pack": "6.0.2", "browser-resolve": "1.11.2", @@ -2378,7 +2396,6 @@ "inherits": "2.0.3", "insert-module-globals": "7.0.1", "isarray": "0.0.1", - "JSONStream": "1.3.1", "labeled-stream-splicer": "2.0.0", "module-deps": "4.1.1", "os-browserify": "0.1.2", @@ -7389,13 +7406,6 @@ } } }, - "string_decoder": { - "version": "1.0.1", - "bundled": true, - "requires": { - "safe-buffer": "5.0.1" - } - }, "string-width": { "version": "1.0.2", "bundled": true, @@ -7405,6 +7415,13 @@ "strip-ansi": "3.0.1" } }, + "string_decoder": { + "version": "1.0.1", + "bundled": true, + "requires": { + "safe-buffer": "5.0.1" + } + }, "stringstream": { "version": "0.0.5", "bundled": true, @@ -10353,10 +10370,10 @@ "resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.0.1.tgz", "integrity": "sha1-wDv04BywhtW15azorQr+eInWOMM=", "requires": { + "JSONStream": "1.3.1", "combine-source-map": "0.7.2", "concat-stream": "1.5.2", "is-buffer": "1.1.5", - "JSONStream": "1.3.1", "lexical-scope": "1.2.0", "process": "0.11.10", "through2": "2.0.3", @@ -11349,15 +11366,6 @@ "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=" }, - "JSONStream": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.1.tgz", - "integrity": "sha1-cH92HgHa6eFvG8+TcDt4xwlmV5o=", - "requires": { - "jsonparse": "1.3.1", - "through": "2.3.8" - } - }, "jsprim": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", @@ -13257,6 +13265,7 @@ "resolved": "https://registry.npmjs.org/module-deps/-/module-deps-4.1.1.tgz", "integrity": "sha1-IyFYM/HaE/1gbMuAh7RIUty4If0=", "requires": { + "JSONStream": "1.3.1", "browser-resolve": "1.11.2", "cached-path-relative": "1.0.1", "concat-stream": "1.5.2", @@ -13264,7 +13273,6 @@ "detective": "4.5.0", "duplexer2": "0.1.4", "inherits": "2.0.3", - "JSONStream": "1.3.1", "parents": "1.0.1", "readable-stream": "2.0.6", "resolve": "1.4.0", @@ -14640,6 +14648,11 @@ "set-blocking": "2.0.0" } }, + "nprogress": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz", + "integrity": "sha1-y480xTIT2JVyP8urkH6UIq28r7E=" + }, "nth-check": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz", @@ -17234,22 +17247,6 @@ } } }, - "require_optional": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require_optional/-/require_optional-1.0.1.tgz", - "integrity": "sha512-qhM/y57enGWHAe3v/NcwML6a3/vfESLe/sGM2dII+gEO0BpKRUkWZow/tyloNqJyN6kXSl3RyyM8Ll5D/sJP8g==", - "requires": { - "resolve-from": "2.0.0", - "semver": "5.4.1" - }, - "dependencies": { - "semver": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", - "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==" - } - } - }, "require-again": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/require-again/-/require-again-2.0.0.tgz", @@ -17289,6 +17286,22 @@ } } }, + "require_optional": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require_optional/-/require_optional-1.0.1.tgz", + "integrity": "sha512-qhM/y57enGWHAe3v/NcwML6a3/vfESLe/sGM2dII+gEO0BpKRUkWZow/tyloNqJyN6kXSl3RyyM8Ll5D/sJP8g==", + "requires": { + "resolve-from": "2.0.0", + "semver": "5.4.1" + }, + "dependencies": { + "semver": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==" + } + } + }, "requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", @@ -18655,11 +18668,6 @@ "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=" }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" - }, "string-length": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/string-length/-/string-length-0.1.2.tgz", @@ -18693,6 +18701,11 @@ "strip-ansi": "3.0.1" } }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + }, "stringify-object": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-1.0.1.tgz", diff --git a/package.json b/package.json index 46d858eedf..81598e95f1 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,7 @@ "autoprefixer": "^6.4.0", "aws-sdk": "^2.0.25", "axios": "^0.16.0", + "axios-progress-bar": "^0.1.7", "babel-core": "^6.0.0", "babel-eslint": "^7.2.3", "babel-loader": "^6.0.0", diff --git a/website/client/app.vue b/website/client/app.vue index 72318e7db1..618d65da46 100644 --- a/website/client/app.vue +++ b/website/client/app.vue @@ -68,6 +68,8 @@ diff --git a/website/client/components/group-plans/index.vue b/website/client/components/group-plans/index.vue index 037f2fdd1a..1c2cadcd8d 100644 --- a/website/client/components/group-plans/index.vue +++ b/website/client/components/group-plans/index.vue @@ -2,9 +2,14 @@ .row secondary-menu.col-12 router-link.nav-link(:to="{name: 'groupPlanDetailTaskInformation', params: {groupId}}", - exact, :class="{'active': $route.name === 'groupPlanDetailTaskInformation'}") Task Board + exact, :class="{'active': $route.name === 'groupPlanDetailTaskInformation'}") {{ $t('groupTaskBoard') }} router-link.nav-link(:to="{name: 'groupPlanDetailInformation', params: {groupId}}", - exact, :class="{'active': $route.name === 'groupPlanDetailInformation'}") Group Information + exact, :class="{'active': $route.name === 'groupPlanDetailInformation'}") {{ $t('groupInformation') }} + router-link.nav-link( + v-if='isLeader', + :to="{name: 'groupPlanBilling', params: {groupId}}", + exact, + :class="{'active': $route.name === 'groupPlanBilling'}") {{ $t('groupBilling') }} .col-12 router-view @@ -12,11 +17,26 @@ diff --git a/website/client/components/group-plans/taskInformation.vue b/website/client/components/group-plans/taskInformation.vue index 4e7f783f20..88fc39021b 100644 --- a/website/client/components/group-plans/taskInformation.vue +++ b/website/client/components/group-plans/taskInformation.vue @@ -349,15 +349,21 @@ export default { groupId: this.searchId, }); + let groupedApprovals = this.loadApprovals(); + + tasks.forEach((task) => { + if (groupedApprovals.length > 0) task.approvals = groupedApprovals[task._id]; + this.tasksByType[task.type].push(task); + }); + }, + async loadApprovals () { + if (this.group.leader._id !== this.user._id) return []; + let approvalRequests = await this.$store.dispatch('tasks:getGroupApprovals', { groupId: this.searchId, }); - let groupedApprovals = groupBy(approvalRequests, 'group.taskId'); - tasks.forEach((task) => { - task.approvals = groupedApprovals[task._id]; - this.tasksByType[task.type].push(task); - }); + return groupBy(approvalRequests, 'group.taskId'); }, editTask (task) { this.taskFormPurpose = 'edit'; diff --git a/website/client/components/notificationMenu.vue b/website/client/components/notificationMenu.vue index 1fe4a7e868..28be2e485a 100644 --- a/website/client/components/notificationMenu.vue +++ b/website/client/components/notificationMenu.vue @@ -1,8 +1,7 @@ -