aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authoreugenijm <eugenijm@protonmail.com>2020-12-12 15:17:42 +0300
committereugenijm <eugenijm@protonmail.com>2020-12-18 13:41:37 +0300
commit481c71517e41cdfc097b489b781847e0319f71fa (patch)
tree075e70529f46149136ae653392513f9171b2a949 /src
parent8d9bf3efc8825afaf07dca4db69cb19f3dfbe411 (diff)
Group staff members by role in the About page
Diffstat (limited to 'src')
-rw-r--r--src/components/staff_panel/staff_panel.js20
-rw-r--r--src/components/staff_panel/staff_panel.vue27
-rw-r--r--src/i18n/en.json6
3 files changed, 44 insertions, 9 deletions
diff --git a/src/components/staff_panel/staff_panel.js b/src/components/staff_panel/staff_panel.js
index 8665648a..b9561bf1 100644
--- a/src/components/staff_panel/staff_panel.js
+++ b/src/components/staff_panel/staff_panel.js
@@ -1,4 +1,6 @@
import map from 'lodash/map'
+import groupBy from 'lodash/groupBy'
+import { mapGetters, mapState } from 'vuex'
import BasicUserCard from '../basic_user_card/basic_user_card.vue'
const StaffPanel = {
@@ -10,9 +12,21 @@ const StaffPanel = {
BasicUserCard
},
computed: {
- staffAccounts () {
- return map(this.$store.state.instance.staffAccounts, nickname => this.$store.getters.findUser(nickname)).filter(_ => _)
- }
+ groupedStaffAccounts () {
+ const staffAccounts = map(this.staffAccounts, this.findUser).filter(_ => _)
+ const groupedStaffAccounts = groupBy(staffAccounts, 'role')
+
+ return [
+ { role: 'admin', users: groupedStaffAccounts['admin'] },
+ { role: 'moderator', users: groupedStaffAccounts['moderator'] }
+ ].filter(group => group.users)
+ },
+ ...mapGetters([
+ 'findUser'
+ ]),
+ ...mapState({
+ staffAccounts: state => state.instance.staffAccounts
+ })
}
}
diff --git a/src/components/staff_panel/staff_panel.vue b/src/components/staff_panel/staff_panel.vue
index 1d13003d..c52ade42 100644
--- a/src/components/staff_panel/staff_panel.vue
+++ b/src/components/staff_panel/staff_panel.vue
@@ -7,11 +7,18 @@
</div>
</div>
<div class="panel-body">
- <basic-user-card
- v-for="user in staffAccounts"
- :key="user.screen_name"
- :user="user"
- />
+ <div
+ v-for="group in groupedStaffAccounts"
+ :key="group.role"
+ class="staff-group"
+ >
+ <h4>{{ $t('general.role.' + group.role) }}</h4>
+ <basic-user-card
+ v-for="user in group.users"
+ :key="user.screen_name"
+ :user="user"
+ />
+ </div>
</div>
</div>
</div>
@@ -20,4 +27,14 @@
<script src="./staff_panel.js" ></script>
<style lang="scss">
+
+.staff-group {
+ padding-left: 1em;
+ padding-top: 1em;
+
+ .basic-user-card {
+ padding-left: 0;
+ }
+}
+
</style>
diff --git a/src/i18n/en.json b/src/i18n/en.json
index 26dd6144..cb4c0205 100644
--- a/src/i18n/en.json
+++ b/src/i18n/en.json
@@ -75,7 +75,11 @@
"confirm": "Confirm",
"verify": "Verify",
"close": "Close",
- "peek": "Peek"
+ "peek": "Peek",
+ "role": {
+ "admin": "Admin",
+ "moderator": "Moderator"
+ }
},
"image_cropper": {
"crop_picture": "Crop picture",