diff --git a/web-app/README.md b/web-app/README.md index 053a0e40..76f3d62f 100644 --- a/web-app/README.md +++ b/web-app/README.md @@ -11,18 +11,17 @@ Monorepo for mergin frontend stuff: * monorepo consists of root directory with own package.json and individual workspaces in `packages` directory * root package.json defines common devDependencies and it cannot hold any non-development dependency * individual workspace package.json defines dependencies used in that particular workspace package -* frontend applications (e.g. app) is also a workspace package (@mergin/app) held in directory [./packages/app](./packages/app). +* frontend application (e.g. app) is also a workspace package (@mergin/app) held in directory [./packages/app](./packages/app). Application constist of several packages in `packages` directory: - @mergin/lib - Shared library for common features -- @mergin/lib-vue2 - Shared library for common features with vuetify and vue 2.7 - @mergin/admin-lib - Shared library for admin - @mergin/app - Web appliacation" - @mergin/admin-app - Web application for administration Library packages with *-lib* name are containing shared code for *-app* applications. -Web application *@mergin/app* is using shared library *@mergin/lib*. Web application for administration *admin-app* is using shared libraries with vue 2.7 *@mergin/admin-lib* and *@mergin/lib-vue2*. +Web application *@mergin/app* is using shared library *@mergin/lib*. Web application for administration *admin-app* is using shared library *@mergin/admin-lib*. For details about development follow instructions in [development guide](../development.md). \ No newline at end of file diff --git a/web-app/package.json b/web-app/package.json index 3ccd6578..5d9812e0 100755 --- a/web-app/package.json +++ b/web-app/package.json @@ -6,7 +6,6 @@ "packages/admin-lib", "packages/app", "packages/admin-app", - "packages/lib-vue2", "packages/*" ], "scripts": { @@ -25,20 +24,16 @@ "build:dev": "yarn workspace @mergin/app build:dev", "build:admin": "yarn workspace @mergin/admin-app build", "build:admin:dev": "yarn workspace @mergin/admin-app build:dev", - "clean:libs": "yarn workspace @mergin/lib clean && yarn workspace @mergin/admin-lib clean && yarn workspace @mergin/lib-vue2 clean", + "clean:libs": "yarn workspace @mergin/lib clean && yarn workspace @mergin/admin-lib clean", "clean:libs:noadmin": "yarn workspace @mergin/lib clean", - "i18n:report": "yarn workspace @mergin/app 18n:report", - "link:dependencies": "yarn link:register && yarn link @mergin/lib && yarn link @mergin/admin-lib && yarn link @mergin/lib-vue2", + "link:dependencies": "yarn link:register && yarn link @mergin/lib && yarn link @mergin/admin-lib", "link:register": "yarn workspaces run link:register", "link:unregister": "yarn workspaces run link:unregister", "types:libs": "yarn workspaces run build:types", "types:lib": "yarn workspace @mergin/lib build:types", - "types:lib-vue2": "yarn workspace @mergin/lib-vue2 build:types", "types:admin-lib": "yarn workspace @mergin/admin-lib build:types", "watch:lib": "yarn workspace @mergin/lib build:lib:watch", - "watch:lib-vue2": "yarn workspace @mergin/lib-vue2 build:lib:watch", "watch:lib:types": "yarn workspace @mergin/lib build:types:watch", - "watch:lib-vue2:types": "yarn workspace @mergin/lib-vue2 build:types:watch", "watch:admin-lib": "yarn workspace @mergin/admin-lib build:lib:watch", "watch:admin-lib:types": "yarn workspace @mergin/admin-lib build:types:watch", "lint:all": "yarn workspaces run lint", @@ -80,7 +75,5 @@ "node": ">=18" }, "version": "0.0.0", - "dependencies": { - "@vitejs/plugin-vue2": "^2.3.1" - } + "dependencies": {} } diff --git a/web-app/packages/admin-app/package.json b/web-app/packages/admin-app/package.json index b7b59ccb..cf5dc4be 100644 --- a/web-app/packages/admin-app/package.json +++ b/web-app/packages/admin-app/package.json @@ -15,19 +15,16 @@ "clean": "echo 'Nothing to clean.'", "link:register": "echo '[@mergin/admin-app] Nothing to register.'", "link:unregister": "echo '[@mergin/admin-app] Nothing to unregister.'", - "lint": "eslint . --ext .js,.vue,.ts", - "i18n:report": "vue-cli-service i18n:report --src './src/admin/**/*.?(js|vue)' --locales './src/admin/locales/**/*.json'" + "lint": "eslint . --ext .js,.vue,.ts" }, "dependencies": { "@tabler/icons-webfont": "^2.42.0", "axios": "^0.28.1", "lodash": "^4.17.21", - "material-icons": "^0.2.3", "pinia": "^2.1.7", "primeflex": "^3.3.1", "primevue": "3.43.0", "vue": "3.3.8", - "vue-i18n": "^9.7.1", "vue-meta": "^3.0.0-alpha.10", "vue-router": "4.2.5" } diff --git a/web-app/packages/admin-app/src/app.ts b/web-app/packages/admin-app/src/app.ts index e9613118..9a266639 100644 --- a/web-app/packages/admin-app/src/app.ts +++ b/web-app/packages/admin-app/src/app.ts @@ -22,8 +22,6 @@ import App from './App.vue' import { createRouter } from './router' import { addRouterToPinia, getPiniaInstance } from './store' -import i18n from '@/plugins/i18n/i18n' - const createMerginApp = () => { const pinia = getPiniaInstance() const router = createRouter(pinia) @@ -37,7 +35,6 @@ const createMerginApp = () => { .mixin(MerginComponentUuidMixin) .use(pinia) .use(router) - .use(i18n) .use(createMetaManager()) .use(PrimeVue, { pt: MMTheme }) .use(ToastService) diff --git a/web-app/packages/admin-app/src/env.d.ts b/web-app/packages/admin-app/src/env.d.ts index dab6e2e2..22c908f8 100644 --- a/web-app/packages/admin-app/src/env.d.ts +++ b/web-app/packages/admin-app/src/env.d.ts @@ -4,11 +4,6 @@ /// -interface ImportMetaEnv { - VITE_VUE_APP_I18N_LOCALE: string - VITE_VUE_APP_I18N_FALLBACK_LOCALE: string -} - interface ImportMeta { - readonly env: ImportMetaEnv + readonly env: unknown } diff --git a/web-app/packages/admin-app/src/modules/layout/components/Sidebar.vue b/web-app/packages/admin-app/src/modules/layout/components/Sidebar.vue index c01bf6e4..d151c0fd 100644 --- a/web-app/packages/admin-app/src/modules/layout/components/Sidebar.vue +++ b/web-app/packages/admin-app/src/modules/layout/components/Sidebar.vue @@ -24,6 +24,12 @@ const sidebarItems = computed(() => [ to: '/projects', icon: 'ti ti-article', active: route.matched.some((item) => item.name === AdminRoutes.PROJECTS) + }, + { + title: 'Settings', + to: '/settings', + icon: 'ti ti-settings', + active: route.matched.some((item) => item.name === AdminRoutes.SETTINGS) } ]) diff --git a/web-app/packages/admin-app/src/plugins/i18n/i18n.ts b/web-app/packages/admin-app/src/plugins/i18n/i18n.ts deleted file mode 100644 index 0b119bcd..00000000 --- a/web-app/packages/admin-app/src/plugins/i18n/i18n.ts +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright (C) Lutra Consulting Limited -// -// SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-MerginMaps-Commercial - -import { createI18n } from 'vue-i18n' - -export default createI18n({ - legacy: false, // Vuetify does not support the legacy mode of vue-i18n - locale: import.meta.env.VITE_VUE_APP_I18N_LOCALE || 'en', - allowComposition: true, - fallbackLocale: import.meta.env.VITE_VUE_APP_I18N_FALLBACK_LOCALE || 'en' -}) diff --git a/web-app/packages/admin-app/src/plugins/i18n/locale/en.json b/web-app/packages/admin-app/src/plugins/i18n/locale/en.json deleted file mode 100644 index 2a8e7309..00000000 --- a/web-app/packages/admin-app/src/plugins/i18n/locale/en.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "avatar": "Vuetify MD", - "buttons": "Buttons", - "calendar": "Calendar", - "charts": "Charts", - "components": "Components", - "ct": "CT", - "dashboard": "Dashboard", - "dtables": "Data Tables", - "eforms": "Extended Forms", - "error": "Error Page", - "etables": "Extended Tables", - "example": "Example", - "forms": "Forms", - "fullscreen": "Full Screen Map", - "google": "Google Maps", - "grid": "Grid System", - "icons": "Icons", - "lock": "Lock Screen Page", - "login": "Login Page", - "maps": "Maps", - "multi": "Multi Level Collapse", - "notifications": "Notifications", - "pages": "Pages", - "plan": "Choose Plan", - "pricing": "Pricing", - "my-profile": "My Profile", - "edit-profile": "Edit Profile", - "register": "Register Page", - "rforms": "Regular Forms", - "rtables": "Regular Tables", - "rtl": "RTL Support", - "search": "Search", - "settings": "Settings", - "tables": "Tables", - "tabs": "Tabs", - "tim": "Creative Tim", - "timeline": "Timeline", - "typography": "Typography", - "upgrade": "Upgrade To PRO", - "user": "User Profile", - "vforms": "Validation Forms", - "widgets": "Widgets", - "wizard": "Wizard" -} diff --git a/web-app/packages/admin-app/src/plugins/i18n/locale/en.json.license b/web-app/packages/admin-app/src/plugins/i18n/locale/en.json.license deleted file mode 100644 index 1420f4b5..00000000 --- a/web-app/packages/admin-app/src/plugins/i18n/locale/en.json.license +++ /dev/null @@ -1,3 +0,0 @@ -Copyright 2019 Creative Tim (https://www.creative-tim.com) - -SPDX-License-Identifier: MIT diff --git a/web-app/packages/admin-app/src/router.ts b/web-app/packages/admin-app/src/router.ts index 38049626..32035f5f 100644 --- a/web-app/packages/admin-app/src/router.ts +++ b/web-app/packages/admin-app/src/router.ts @@ -5,11 +5,9 @@ import { AccountsView, AccountDetailView, - // SettingsView, - // ProjectSettingsView, + SettingsView, ProjectsView, ProjectView, - // LoginView, // useAdminStore AdminRoutes } from '@mergin/admin-lib' @@ -95,7 +93,7 @@ export const createRouter = (pinia: Pinia) => { header: AppHeader }, props: true - } + }, // redirect: { name: 'project-tree' }, // children: [ @@ -178,12 +176,16 @@ export const createRouter = (pinia: Pinia) => { // } // ] // }, - // { - // path: '/settings', - // name: 'settings', - // component: SettingsView, - // props: true - // } + { + path: '/settings', + name: AdminRoutes.SETTINGS, + components: { + default: SettingsView, + sidebar: Sidebar, + header: AppHeader + }, + props: true + } ] }) diff --git a/web-app/packages/admin-app/vite.config.ts b/web-app/packages/admin-app/vite.config.ts index d5a8efb3..d96b4ed8 100644 --- a/web-app/packages/admin-app/vite.config.ts +++ b/web-app/packages/admin-app/vite.config.ts @@ -36,14 +36,12 @@ export default defineConfig(({ mode }) => ({ resolve: { alias: { '@': resolve(__dirname, './src'), - // 'vue-i18n': 'vue-i18n/dist/vue-i18n.cjs.js', url: 'rollup-plugin-node-polyfills/polyfills/url' }, dedupe: [ 'vue', 'pinia', 'vue-router', - 'vuetify', 'primevue', '@mergin/lib', '@mergin/admin-lib' diff --git a/web-app/packages/admin-lib/package.json b/web-app/packages/admin-lib/package.json index 037e7e10..a72de51d 100644 --- a/web-app/packages/admin-lib/package.json +++ b/web-app/packages/admin-lib/package.json @@ -43,6 +43,7 @@ "axios": "^0.28.1", "axios-retry": "^3.2.4", "lodash": "^4.17.21", + "pinia": "^2.1.7", "primeflex": "^3.3.1", "primevue": "3.43.0", "universal-cookie": "^4.0.4", diff --git a/web-app/packages/admin-lib/src/env.d.ts b/web-app/packages/admin-lib/src/env.d.ts index dab6e2e2..22c908f8 100644 --- a/web-app/packages/admin-lib/src/env.d.ts +++ b/web-app/packages/admin-lib/src/env.d.ts @@ -4,11 +4,6 @@ /// -interface ImportMetaEnv { - VITE_VUE_APP_I18N_LOCALE: string - VITE_VUE_APP_I18N_FALLBACK_LOCALE: string -} - interface ImportMeta { - readonly env: ImportMetaEnv + readonly env: unknown } diff --git a/web-app/packages/admin-lib/src/modules/admin/adminApi.ts b/web-app/packages/admin-lib/src/modules/admin/adminApi.ts index e9569e10..a7d25bc6 100644 --- a/web-app/packages/admin-lib/src/modules/admin/adminApi.ts +++ b/web-app/packages/admin-lib/src/modules/admin/adminApi.ts @@ -58,7 +58,7 @@ export const AdminApi = { ) }, - async getServerVersion(): Promise< + async getLatestServerVersion(): Promise< AxiosResponse > { return AdminModule.httpService.get('/v1/latest-version') diff --git a/web-app/packages/admin-lib/src/modules/admin/components/AdminProjectsTable.vue b/web-app/packages/admin-lib/src/modules/admin/components/AdminProjectsTable.vue index 3992fb06..82bd31ea 100644 --- a/web-app/packages/admin-lib/src/modules/admin/components/AdminProjectsTable.vue +++ b/web-app/packages/admin-lib/src/modules/admin/components/AdminProjectsTable.vue @@ -45,6 +45,7 @@ SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-MerginMaps-Commercial @sort="onSort" @row-click="rowClick" data-cy="projects-table" + :row-class="(data) => (data.removed_at ? 'opacity-80' : '')" >