From 0be9f452f650d56346d5c9b111c10a26a44d12d8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Mateusz=20Micha=C5=82owski?=
Date: Thu, 25 Jul 2024 14:15:03 +0200
Subject: [PATCH] feat(admin): Automatic Contributions update
---
admin/components.d.ts | 46 +++
admin/src/App.vue | 1 +
.../ContributionLink/ContributionLink.vue | 75 +++-
.../ContributionLink/ContributionLinkForm.vue | 379 +++++++++++-------
.../ContributionLink/ContributionLinkList.vue | 34 +-
.../Federation/CommunityVisualizeItem.vue | 76 ++--
admin/src/components/NavBar.vue | 2 +-
.../src/components/Tables/StatisticTable.vue | 31 +-
admin/src/components/input/EditableGroup.vue | 23 +-
.../input/EditableGroupableLabel.vue | 6 +-
admin/src/composables/useToast.js | 41 ++
admin/src/pages/CommunityStatistic.vue | 73 ++--
admin/src/pages/ContributionLinks.vue | 60 ++-
admin/src/pages/CreationConfirm.vue | 47 ++-
admin/src/pages/FederationVisualize.vue | 96 ++---
admin/src/pages/UserSearch.vue | 4 +-
admin/vite.config.js | 5 +-
17 files changed, 609 insertions(+), 390 deletions(-)
create mode 100644 admin/src/composables/useToast.js
diff --git a/admin/components.d.ts b/admin/components.d.ts
index 16c738904..3e26eac67 100644
--- a/admin/components.d.ts
+++ b/admin/components.d.ts
@@ -7,6 +7,40 @@ export {}
/* prettier-ignore */
declare module 'vue' {
export interface GlobalComponents {
+ BAvatar: typeof import('bootstrap-vue-next')['BAvatar']
+ BBadge: typeof import('bootstrap-vue-next')['BBadge']
+ BButton: typeof import('bootstrap-vue-next')['BButton']
+ BCard: typeof import('bootstrap-vue-next')['BCard']
+ BCardText: typeof import('bootstrap-vue-next')['BCardText']
+ BCol: typeof import('bootstrap-vue-next')['BCol']
+ BCollapse: typeof import('bootstrap-vue-next')['BCollapse']
+ BContainer: typeof import('bootstrap-vue-next')['BContainer']
+ BForm: typeof import('bootstrap-vue-next')['BForm']
+ BFormCheckbox: typeof import('bootstrap-vue-next')['BFormCheckbox']
+ BFormGroup: typeof import('bootstrap-vue-next')['BFormGroup']
+ BFormInput: typeof import('bootstrap-vue-next')['BFormInput']
+ BFormRadioGroup: typeof import('bootstrap-vue-next')['BFormRadioGroup']
+ BFormSelect: typeof import('bootstrap-vue-next')['BFormSelect']
+ BFormTextarea: typeof import('bootstrap-vue-next')['BFormTextarea']
+ BInputGroup: typeof import('bootstrap-vue-next')['BInputGroup']
+ BLink: typeof import('bootstrap-vue-next')['BLink']
+ BListGroup: typeof import('bootstrap-vue-next')['BListGroup']
+ BListGroupItem: typeof import('bootstrap-vue-next')['BListGroupItem']
+ BModal: typeof import('bootstrap-vue-next')['BModal']
+ BPagination: typeof import('bootstrap-vue-next')['BPagination']
+ BRow: typeof import('bootstrap-vue-next')['BRow']
+ BTab: typeof import('bootstrap-vue-next')['BTab']
+ BTable: typeof import('bootstrap-vue-next')['BTable']
+ BTableLite: typeof import('bootstrap-vue-next')['BTableLite']
+ BTableSimple: typeof import('bootstrap-vue-next')['BTableSimple']
+ BTabs: typeof import('bootstrap-vue-next')['BTabs']
+ BTbody: typeof import('bootstrap-vue-next')['BTbody']
+ BTd: typeof import('bootstrap-vue-next')['BTd']
+ BTh: typeof import('bootstrap-vue-next')['BTh']
+ BThead: typeof import('bootstrap-vue-next')['BThead']
+ BToastOrchestrator: typeof import('bootstrap-vue-next')['BToastOrchestrator']
+ BTooltip: typeof import('bootstrap-vue-next')['BTooltip']
+ BTr: typeof import('bootstrap-vue-next')['BTr']
ChangeUserRoleFormular: typeof import('./src/components/ChangeUserRoleFormular.vue')['default']
CommunityVisualizeItem: typeof import('./src/components/Federation/CommunityVisualizeItem.vue')['default']
ConfirmRegisterMailFormular: typeof import('./src/components/ConfirmRegisterMailFormular.vue')['default']
@@ -26,7 +60,15 @@ declare module 'vue' {
EditCreationFormular: typeof import('./src/components/EditCreationFormular.vue')['default']
FederationVisualizeItem: typeof import('./src/components/Federation/FederationVisualizeItem.vue')['default']
FigureQrCode: typeof import('./src/components/FigureQrCode.vue')['default']
+ IBiArrowClockwise: typeof import('~icons/bi/arrow-clockwise')['default']
+ IBiBellFill: typeof import('~icons/bi/bell-fill')['default']
+ IBiCheck: typeof import('~icons/bi/check')['default']
IBiEnvelope: typeof import('~icons/bi/envelope')['default']
+ IBiEye: typeof import('~icons/bi/eye')['default']
+ IBiList: typeof import('~icons/bi/list')['default']
+ IBiPencil: typeof import('~icons/bi/pencil')['default']
+ IBiPencilFill: typeof import('~icons/bi/pencil-fill')['default']
+ IBiTrash: typeof import('~icons/bi/trash')['default']
IBiXCircle: typeof import('~icons/bi/x-circle')['default']
IIcBaselineClose: typeof import('~icons/ic/baseline-close')['default']
IOcticonCircleSlash24: typeof import('~icons/octicon/circle-slash24')['default']
@@ -48,4 +90,8 @@ declare module 'vue' {
TransactionLinkList: typeof import('./src/components/TransactionLinkList.vue')['default']
UserQuery: typeof import('./src/components/UserQuery.vue')['default']
}
+ export interface ComponentCustomProperties {
+ vBToggle: typeof import('bootstrap-vue-next')['vBToggle']
+ vBTooltip: typeof import('bootstrap-vue-next')['vBTooltip']
+ }
}
diff --git a/admin/src/App.vue b/admin/src/App.vue
index f7c6c9a9d..c272136a9 100644
--- a/admin/src/App.vue
+++ b/admin/src/App.vue
@@ -1,5 +1,6 @@
+
diff --git a/admin/src/components/ContributionLink/ContributionLink.vue b/admin/src/components/ContributionLink/ContributionLink.vue
index 3b8f5f74f..6440b5eaa 100644
--- a/admin/src/components/ContributionLink/ContributionLink.vue
+++ b/admin/src/components/ContributionLink/ContributionLink.vue
@@ -1,6 +1,6 @@
-
-
{{ $t('math.plus') }} {{ $t('contributionLink.newContributionLink') }}
-
+
-
-
+
+
{{ $t('contributionLink.contributionLinks') }}
-
-
+
+
-
+
{{ $t('contributionLink.noContributionLinks') }}
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-->
+
+
diff --git a/admin/src/components/ContributionLink/ContributionLinkList.vue b/admin/src/components/ContributionLink/ContributionLinkList.vue
index e87a48059..d22ef3af9 100644
--- a/admin/src/components/ContributionLink/ContributionLinkList.vue
+++ b/admin/src/components/ContributionLink/ContributionLinkList.vue
@@ -1,47 +1,47 @@
-
+
-
-
-
+
+
-
-
-
+
+
+
-
-
-
+
+
-
+
-
-
+
+
{{ modalData ? modalData.name : '' }}
-
+
{{ modalData.memo ? modalData.memo : '' }}
-
+
{{ modalData ? modalData.link : '' }}
-
-
+
+
diff --git a/admin/src/pages/ContributionLinks.vue b/admin/src/pages/ContributionLinks.vue
index 02a148065..91eb06dcc 100644
--- a/admin/src/pages/ContributionLinks.vue
+++ b/admin/src/pages/ContributionLinks.vue
@@ -1,45 +1,31 @@
-
+
-
diff --git a/admin/src/pages/CreationConfirm.vue b/admin/src/pages/CreationConfirm.vue
index 2b0f13ca0..f88afe016 100644
--- a/admin/src/pages/CreationConfirm.vue
+++ b/admin/src/pages/CreationConfirm.vue
@@ -13,41 +13,46 @@
-
-
+
+
-
+
+
{{ $t('contributions.open') }}
-
+
{{ $store.state.openCreations }}
-
+
-
-
+
+
-
+
+
{{ $t('contributions.confirms') }}
-
-
+
+
-
+
+
{{ $t('contributions.denied') }}
-
-
+
+
-
+
+
{{ $t('contributions.deleted') }}
-
-
+
+
-
+
+
{{ $t('contributions.all') }}
-
-
+
+
-
+ />
diff --git a/admin/src/pages/FederationVisualize.vue b/admin/src/pages/FederationVisualize.vue
index cab8f0bae..2f87dd5aa 100644
--- a/admin/src/pages/FederationVisualize.vue
+++ b/admin/src/pages/FederationVisualize.vue
@@ -2,69 +2,57 @@
{{ $t('federation.gradidoInstances') }}
-
-
-
+
+
+
+
+
+
+
+
+
+
-
-
- {{ $t('federation.verified') }}
- {{ $t('federation.url') }}
- {{ $t('federation.name') }}
- {{ $t('federation.lastAnnouncedAt') }}
- {{ $t('federation.createdAt') }}
-
-
+
+ {{ $t('federation.verified') }}
+ {{ $t('federation.url') }}
+ {{ $t('federation.name') }}
+ {{ $t('federation.lastAnnouncedAt') }}
+ {{ $t('federation.createdAt') }}
+
+
-
-
+
+
-
diff --git a/admin/src/pages/UserSearch.vue b/admin/src/pages/UserSearch.vue
index 96a4da363..72fa15934 100644
--- a/admin/src/pages/UserSearch.vue
+++ b/admin/src/pages/UserSearch.vue
@@ -51,6 +51,7 @@ import SearchUserTable from '../components/Tables/SearchUserTable'
import UserQuery from '../components/UserQuery'
import { BPagination, BButton } from 'bootstrap-vue-next'
import { useI18n } from 'vue-i18n'
+import { useAppToast } from '@/composables/useToast'
const { t } = useI18n()
@@ -66,6 +67,7 @@ const perPage = ref(25)
const response = ref()
const { creationLabel } = useCreationMonths()
+const { toastSuccess } = useAppToast()
const { result, refetch } = useQuery(searchUsers, {
query: criteria.value,
@@ -90,7 +92,7 @@ const updateRoles = (userId, roles) => {
const updateDeletedAt = (userId, deletedAt) => {
searchResult.value.find((obj) => obj.userId === userId).deletedAt = deletedAt
- // toastSuccess(deletedAt ? $t('user_deleted') : $t('user_recovered'))
+ toastSuccess(deletedAt ? t('user_deleted') : t('user_recovered'))
}
const unconfirmedRegisterMails = () => {
diff --git a/admin/vite.config.js b/admin/vite.config.js
index 44e988040..3075c110c 100644
--- a/admin/vite.config.js
+++ b/admin/vite.config.js
@@ -4,11 +4,14 @@ import commonjs from 'vite-plugin-commonjs'
import Icons from 'unplugin-icons/vite'
import Components from 'unplugin-vue-components/vite'
import IconsResolve from 'unplugin-icons/resolver'
+import { BootstrapVueNextResolver } from 'bootstrap-vue-next'
+
const path = require('path')
export default defineConfig({
base: '/admin/',
server: {
+ host: '0.0.0.0',
port: 8080,
},
resolve: {
@@ -30,7 +33,7 @@ export default defineConfig({
},
}),
Components({
- resolvers: [IconsResolve()],
+ resolvers: [IconsResolve(), BootstrapVueNextResolver()],
dts: true,
}),
Icons({