Browse Source

Merge pull request #271 from wingkwong/feat/i18n

feat: add i18n to authTab & xcMeta
pull/275/head
o1lab 3 years ago committed by GitHub
parent
commit
bac9de1c31
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 51
      packages/nc-gui/components/authTab.vue
  2. 285
      packages/nc-gui/components/project/settings/xcMeta.vue
  3. 16
      packages/nc-gui/static/lang/en.json
  4. 16
      packages/nc-gui/static/lang/ja.json
  5. 16
      packages/nc-gui/static/lang/zh.json

51
packages/nc-gui/components/authTab.vue

@ -1,58 +1,67 @@
<template>
<div class="h-100">
<div class="h-100" style="width: 100%">
<v-tabs height="30" color="x-active">
<v-tab><span class="caption text-capitalize">Users Management</span></v-tab>
<v-tab
><span class="caption text-capitalize">
<!-- Users Management -->
{{ $t('management.tabs.user') }}
</span></v-tab
>
<v-tab-item class="h-100">
<user-management :nodes="nodes"></user-management>
</v-tab-item>
<template v-if="_isUIAllowed('apiTokenTab')">
<v-tab><span class="caption text-capitalize">API Tokens Management</span></v-tab>
<v-tab
><span class="caption text-capitalize">
<!-- API Tokens Management -->
{{ $t('management.tabs.api') }}
</span></v-tab
>
<v-tab-item>
<api-tokens :nodes="nodes"></api-tokens>
</v-tab-item>
</template>
<v-tab><span class="caption text-capitalize">Roles Management</span></v-tab>
<v-tab
><span class="caption text-capitalize">
<!-- Roles Management -->
{{ $t('management.tabs.roles') }}
</span></v-tab
>
<v-tab-item>
<roles :nodes="nodes"></roles>
</v-tab-item>
<!-- <v-tab><span class="caption text-capitalize">Auth Management</span></v-tab>
<!-- <v-tab><span class="caption text-capitalize">Auth Management</span></v-tab>
<v-tab-item>
<auth-hooks :nodes="nodes"></auth-hooks>
</v-tab-item>-->
</v-tabs>
</div>
</div>
</template>
<script>
import DlgLabelSubmitCancel from "@/components/utils/dlgLabelSubmitCancel";
import UserManagement from "@/components/auth/userManagement";
import Roles from "@/components/auth/roles";
import AuthHooks from "@/components/auth/authHooks";
import ApiTokens from "@/components/auth/apiTokens";
import DlgLabelSubmitCancel from '@/components/utils/dlgLabelSubmitCancel';
import UserManagement from '@/components/auth/userManagement';
import Roles from '@/components/auth/roles';
import AuthHooks from '@/components/auth/authHooks';
import ApiTokens from '@/components/auth/apiTokens';
export default {
components: {ApiTokens, AuthHooks, Roles, UserManagement, DlgLabelSubmitCancel},
components: { ApiTokens, AuthHooks, Roles, UserManagement, DlgLabelSubmitCancel },
props: ['nodes'],
name: "auth-tab",
name: 'auth-tab',
data: () => ({
showConfirmDlg: false,
}),
async created() {
},
methods: {}
}
async created() {},
methods: {},
};
</script>
<style scoped lang="scss">
::v-deep {
//.v-tabs-bar {
// border-bottom: solid 1px var(--v-primary-lighten2);
//}
@ -72,7 +81,6 @@ export default {
}
}
}
}
</style>
<!--
@ -81,6 +89,7 @@ export default {
*
* @author Naveen MR <oof1lab@gmail.com>
* @author Pranav C Balan <pranavxc@gmail.com>
* @author Wing-Kam Wong <wingkwong.code@gmail.com>
*
* @license GNU AGPL version 3 or any later version
*

285
packages/nc-gui/components/project/settings/xcMeta.vue

@ -1,8 +1,9 @@
<template>
<div>
<h3 class="text-center mb-5 grey--text text--darken-2">Metadata Operations</h3>
<h3 class="text-center mb-5 grey--text text--darken-2">
<!-- Metadata Operations -->
{{ $t('management.meta.title') }}
</h3>
<v-simple-table class="ma-2 meta-table text-center mx-auto">
<!-- <thead>-->
@ -11,78 +12,121 @@
<!-- </tr>-->
<!-- </thead>-->
<tbody>
<tr>
<td>
<!-- Export all metadata from the meta tables to meta directory. -->
{{ $t('management.meta.operation_1.desc') }}
</td>
<td>
<v-btn
min-width="150"
color="primary"
small
outlined
@click="exportMeta"
:loading="loading === 'export-file'"
>
<v-icon small>mdi-export</v-icon>&nbsp;
<!-- Export to file -->
{{ $t('management.meta.operation_1') }}
</v-btn>
</td>
</tr>
<tr>
<td>Export all metadata from the meta tables to meta directory.</td>
<td>
<v-btn min-width="150" color="primary" small outlined @click="exportMeta"
:loading="loading === 'export-file'">
<v-icon small>mdi-export</v-icon>&nbsp;
Export to file
</v-btn>
</td>
</tr>
<tr>
<td>Import all metadata from the meta directory to meta tables.</td>
<td>
<v-btn
:loading="loading === 'import-file'"
min-width="150" color="info" small outlined @click="importMeta">
<v-icon small>mdi-import</v-icon>&nbsp;
Import
</v-btn>
</td>
</tr>
<tr>
<td>Export project meta to zip file and download.</td>
<td>
<v-btn min-width="150"
color="primary"
small
outlined
:loading="loading === 'export-zip'"
@click="exportMetaZip();">
<v-icon small>mdi-export</v-icon>&nbsp;
Export zip
</v-btn>
</td>
</tr>
<tr>
<td>Import project meta zip file and restart.</td>
<td>
<v-btn min-width="150"
:loading="loading === 'import-zip'"
color="info" small outlined @click="$refs.importFile.click()">
<v-icon small>mdi-import</v-icon>&nbsp;
Import Zip
</v-btn>
<tr>
<td>
<!-- Import all metadata from the meta directory to meta tables. -->
{{ $t('management.meta.operation_2.desc') }}
</td>
<td>
<v-btn
:loading="loading === 'import-file'"
min-width="150"
color="info"
small
outlined
@click="importMeta"
>
<v-icon small>mdi-import</v-icon>&nbsp;
<input type="file" accept=".zip" @change="importMetaZip" v-show="false" ref="importFile">
<!-- Import -->
{{ $t('management.meta.operation_2') }}
</v-btn>
</td>
</tr>
</td>
</tr>
<tr>
<td>Clear all metadata from meta tables.</td>
<td>
<v-btn
:loading="loading === 'reset-metadata'" min-width="150" color="error" small outlined @click="resetMeta">
<v-icon small>mdi-delete-variant</v-icon>&nbsp;
Reset
</v-btn>
</td>
<tr>
<td>
<!-- Export project meta to zip file and download. -->
{{ $t('management.meta.operation_3.desc') }}
</td>
<td>
<v-btn
min-width="150"
color="primary"
small
outlined
:loading="loading === 'export-zip'"
@click="exportMetaZip()"
>
<v-icon small>mdi-export</v-icon>&nbsp;
<!-- Export zip -->
{{ $t('management.meta.operation_3') }}
</v-btn>
</td>
</tr>
<tr>
<td>
<!-- Import project meta zip file and restart. -->
{{ $t('management.meta.operation_4.desc') }}
</td>
<td>
<v-btn
min-width="150"
:loading="loading === 'import-zip'"
color="info"
small
outlined
@click="$refs.importFile.click()"
>
<v-icon small>mdi-import</v-icon>&nbsp;
</tr>
<!-- Import Zip -->
{{ $t('management.meta.operation_4') }}
</v-btn>
<input
type="file"
accept=".zip"
@change="importMetaZip"
v-show="false"
ref="importFile"
/>
</td>
</tr>
<tr>
<td>
<!-- Clear all metadata from meta tables. -->
{{ $t('management.meta.operation_5.desc') }}
</td>
<td>
<v-btn
:loading="loading === 'reset-metadata'"
min-width="150"
color="error"
small
outlined
@click="resetMeta"
>
<v-icon small>mdi-delete-variant</v-icon>&nbsp;
<!-- Reset -->
{{ $t('management.meta.operation_5') }}
</v-btn>
</td>
</tr>
</tbody>
</v-simple-table>
<dlg-label-submit-cancel
type="primary"
v-if="dialogShow"
@ -90,18 +134,15 @@
:dialogShow="dialogShow"
:heading="confirmMessage"
>
</dlg-label-submit-cancel>
</div>
</template>
<script>
import DlgLabelSubmitCancel from "@/components/utils/dlgLabelSubmitCancel";
import DlgLabelSubmitCancel from '@/components/utils/dlgLabelSubmitCancel';
export default {
name: "xc-meta",
name: 'xc-meta',
components: {
DlgLabelSubmitCancel,
},
@ -109,23 +150,25 @@ export default {
loading: null,
dialogShow: false,
confirmAction: null,
confirmMessage: ''
confirmMessage: '',
}),
methods: {
async exportMeta() {
this.dialogShow = true;
this.confirmMessage = 'Do you want to export metadata from meta tables?';
this.confirmAction = async (act) => {
this.confirmAction = async act => {
if (act === 'hideDialog') {
this.dialogShow = false;
} else {
this.loading = 'export-file';
try {
await this.$store.dispatch('sqlMgr/ActSqlOp', [{
// dbAlias: 'db',
env: 'dev'
}, 'xcMetaTablesExportDbToLocalFs']);
await this.$store.dispatch('sqlMgr/ActSqlOp', [
{
// dbAlias: 'db',
env: 'dev',
},
'xcMetaTablesExportDbToLocalFs',
]);
this.$toast.success('Successfully exported metadata').goAway(3000);
} catch (e) {
this.$toast.error('Some internal error occurred').goAway(3000);
@ -133,25 +176,31 @@ export default {
this.dialogShow = false;
this.loading = null;
}
}
}, async exportMetaZip() {
};
},
async exportMetaZip() {
this.dialogShow = true;
this.confirmMessage = 'Do you want to export metadata from meta tables?';
this.confirmAction = async (act) => {
this.confirmAction = async act => {
if (act === 'hideDialog') {
this.dialogShow = false;
} else {
this.loading = 'export-zip';
let data;
try {
data = await this.$store.dispatch('sqlMgr/ActSqlOp', [{
// dbAlias: 'db',
env: 'dev'
}, 'xcMetaTablesExportDbToZip', null, null, {
responseType: 'blob'
}]);
const url = window.URL.createObjectURL(new Blob([data], {type: 'application/zip'}));
data = await this.$store.dispatch('sqlMgr/ActSqlOp', [
{
// dbAlias: 'db',
env: 'dev',
},
'xcMetaTablesExportDbToZip',
null,
null,
{
responseType: 'blob',
},
]);
const url = window.URL.createObjectURL(new Blob([data], { type: 'application/zip' }));
const link = document.createElement('a');
link.href = url;
link.setAttribute('download', 'meta.zip'); //or any other extension
@ -164,56 +213,58 @@ export default {
this.dialogShow = false;
this.loading = null;
}
}
};
},
async resetMeta() {
this.dialogShow = true;
this.confirmMessage = 'Do you want to clear metadata from meta tables?';
this.confirmAction = async (act) => {
this.confirmAction = async act => {
if (act === 'hideDialog') {
this.dialogShow = false;
} else {
this.loading = 'reset-metadata';
try {
await this.$store.dispatch('sqlMgr/ActSqlOp', [{
// dbAlias: 'db',
env: 'dev'
}, 'xcMetaTablesReset',]);
this.$toast.success('Metadata cleared successfully').goAway(3000)
await this.$store.dispatch('sqlMgr/ActSqlOp', [
{
// dbAlias: 'db',
env: 'dev',
},
'xcMetaTablesReset',
]);
this.$toast.success('Metadata cleared successfully').goAway(3000);
} catch (e) {
this.$toast.error('Some internal error occurred').goAway(3000);
}
this.dialogShow = false;
this.loading = null;
}
}
};
},
async importMeta() {
this.dialogShow = true;
this.confirmMessage = 'Do you want to import metadata from meta directory?';
this.confirmAction = async (act) => {
this.confirmAction = async act => {
if (act === 'hideDialog') {
this.dialogShow = false;
} else {
this.loading = 'import-file';
try {
await this.$store.dispatch('sqlMgr/ActSqlOp', [{
env: 'dev'
}, 'xcMetaTablesImportLocalFsToDb']);
await this.$store.dispatch('sqlMgr/ActSqlOp', [
{
env: 'dev',
},
'xcMetaTablesImportLocalFsToDb',
]);
this.$toast.success('Metadata imported successfully').goAway(3000)
this.$toast.success('Metadata imported successfully').goAway(3000);
} catch (e) {
this.$toast.error('Some internal error occurred').goAway(3000);
}
this.dialogShow = false;
this.loading = null;
}
}
};
},
async importMetaZip() {
if (this.$refs.importFile && this.$refs.importFile.files && this.$refs.importFile.files[0]) {
@ -221,10 +272,15 @@ export default {
this.loading = 'import-zip';
try {
this.$refs.importFile.value = '';
await this.$store.dispatch('sqlMgr/ActUpload', [{
// dbAlias: 'db',
env: 'dev'
}, 'xcMetaTablesImportZipToLocalFsAndDb', {}, zipFile]);
await this.$store.dispatch('sqlMgr/ActUpload', [
{
// dbAlias: 'db',
env: 'dev',
},
'xcMetaTablesImportZipToLocalFsAndDb',
{},
zipFile,
]);
this.$toast.success('Successfully imported metadata').goAway(3000);
} catch (e) {
this.$toast.error('Some internal error occurred').goAway(3000);
@ -233,8 +289,8 @@ export default {
this.loading = null;
}
},
}
}
},
};
</script>
<style scoped>
@ -248,6 +304,7 @@ export default {
*
* @author Naveen MR <oof1lab@gmail.com>
* @author Pranav C Balan <pranavxc@gmail.com>
* @author Wing-Kam Wong <wingkwong.code@gmail.com>
*
* @license GNU AGPL version 3 or any later version
*

16
packages/nc-gui/static/lang/en.json

@ -112,5 +112,19 @@
"nav_drawer.share_view.toggle.option1": "Restrict access with a password",
"nav_drawer.share_view.toggle.option2": "Access is password restricted",
"nav_drawer.share_view.password.caption": "Enter the password",
"nav_drawer.share_view.password.button": "Save password"
"nav_drawer.share_view.password.button": "Save password",
"management.tabs.user": "Users Management",
"management.tabs.api": "API Tokens Management",
"management.tabs.roles": "Roles Management",
"management.meta.title": "Metadata Operations",
"management.meta.operation_1": "Export to file",
"management.meta.operation_2": "Import",
"management.meta.operation_3": "Export zip",
"management.meta.operation_4": "Import zip",
"management.meta.operation_5": "Reset",
"management.meta.operation_1.desc": "Export all metadata from the meta tables to meta directory.",
"management.meta.operation_2.desc": "Import all metadata from the meta directory to meta tables.",
"management.meta.operation_3.desc": "Export project meta to zip file and download.",
"management.meta.operation_4.desc": "Import project meta zip file and restart.",
"management.meta.operation_5.desc": "Clear all metadata from meta tables."
}

16
packages/nc-gui/static/lang/ja.json

@ -112,5 +112,19 @@
"nav_drawer.share_view.toggle.option1": "Restrict access with a password",
"nav_drawer.share_view.toggle.option2": "Access is password restricted",
"nav_drawer.share_view.password.caption": "Enter the password",
"nav_drawer.share_view.password.button": "Save password"
"nav_drawer.share_view.password.button": "Save password",
"management.tabs.user": "Users Management",
"management.tabs.api": "API Tokens Management",
"management.tabs.roles": "Roles Management",
"management.meta.title": "Metadata Operations",
"management.meta.operation_1": "Export to file",
"management.meta.operation_2": "Import",
"management.meta.operation_3": "Export zip",
"management.meta.operation_4": "Import zip",
"management.meta.operation_5": "Reset",
"management.meta.operation_1.desc": "Export all metadata from the meta tables to meta directory.",
"management.meta.operation_2.desc": "Import all metadata from the meta directory to meta tables.",
"management.meta.operation_3.desc": "Export project meta to zip file and download.",
"management.meta.operation_4.desc": "Import project meta zip file and restart.",
"management.meta.operation_5.desc": "Clear all metadata from meta tables."
}

16
packages/nc-gui/static/lang/zh.json

@ -112,6 +112,20 @@
"nav_drawer.share_view.toggle.option1": "Restrict access with a password",
"nav_drawer.share_view.toggle.option2": "Access is password restricted",
"nav_drawer.share_view.password.caption": "Enter the password",
"nav_drawer.share_view.password.button": "Save password"
"nav_drawer.share_view.password.button": "Save password",
"management.tabs.user": "Users Management",
"management.tabs.api": "API Tokens Management",
"management.tabs.roles": "Roles Management",
"management.meta.title": "Metadata Operations",
"management.meta.operation_1": "Export to file",
"management.meta.operation_2": "Import",
"management.meta.operation_3": "Export zip",
"management.meta.operation_4": "Import zip",
"management.meta.operation_5": "Reset",
"management.meta.operation_1.desc": "Export all metadata from the meta tables to meta directory.",
"management.meta.operation_2.desc": "Import all metadata from the meta directory to meta tables.",
"management.meta.operation_3.desc": "Export project meta to zip file and download.",
"management.meta.operation_4.desc": "Import project meta zip file and restart.",
"management.meta.operation_5.desc": "Clear all metadata from meta tables."
}
Loading…
Cancel
Save