diff --git a/src/components/project/UploadDialog.vue b/src/components/project/UploadDialog.vue index 233899eb..5b8297bf 100644 --- a/src/components/project/UploadDialog.vue +++ b/src/components/project/UploadDialog.vue @@ -50,18 +50,66 @@ -
- + +
+
+ {{ $t('uploadSample.userIdConfig') }} +
+ + + + + + + + {{ $t('uploadSample.userIdOptions[0]') }} + + + + + + + + + + {{ $t('uploadSample.userIdOptions[1]') }} + + + + + + + + + + {{ $t('uploadSample.userIdOptions[2]') }} + + + + + + + + + + {{ $t('uploadSample.userIdOptions[3]') }} + + + +
+ + @@ -82,7 +130,7 @@ icon="cloud_upload" label="Upload sample" :loading="uploadSample.submitting" - :disable="disableUploadBtn || customUserId === ''" + :disable="disableUploadBtn" @click="uploadSamples()" > @@ -167,12 +215,12 @@ export default defineComponent({ generateNewSentIds: false, samplesWithoutSentIds, rtl: false, + userId: 'username', }; }, computed: { - ...mapState(useUserStore, { userid: 'id' }), - ...mapState(useUserStore, ['username', 'reservedUserId']), + ...mapState(useUserStore, ['username', 'reservedUserIds']), ...mapState(useProjectStore, ['blindAnnotationMode']), disableTokenizeBtn() { if (this.option.value == 'plainText') { @@ -185,15 +233,15 @@ export default defineComponent({ let disable = true; if (this.samplesWithoutSentIds.length > 0) { disable = !this.generateNewSentIds; - } else if (this.uploadSample.attachment.file.length > 0) { + } else if (this.uploadSample.attachment.file.length > 0 && this.userId !== 'other') { + disable = false; + } + else if (this.uploadSample.attachment.file.length > 0 && this.userId === 'other' && this.customUserId !== '') { disable = false; } return disable; }, }, - mounted() { - this.customUserId = this.username; - }, methods: { async preprocess() { this.warningMessage = ''; @@ -265,7 +313,7 @@ export default defineComponent({ for (const file of this.uploadSample.attachment.file) { form.append('files', file); } - form.append('userId', this.customUserId); + form.append('userId', this.selectedUserId()); form.append('rtl', JSON.stringify(this.rtl)) if (this.generateNewSentIds) { form.append('samplesWithoutSentIds', JSON.stringify(this.samplesWithoutSentIds)); @@ -291,7 +339,7 @@ export default defineComponent({ }, tokenizeSample() { const data = { - username: this.customUserId, + username: this.selectedUserId(), text: this.text.normalize('NFC'), option: this.option.value, lang: this.lang.value, @@ -309,6 +357,17 @@ export default defineComponent({ notifyError({ error: 'Invalid request' }); }); }, + selectedUserId() { + if (this.userId === 'username') { + return this.username; + } + else if (this.userId === 'other') { + return this.customUserId; + } + else { + return this.userId; + } + }, closeDialog() { this.uploadDialModel = false; this.uploadSample.attachment.file = []; diff --git a/src/i18n/en-us/index.ts b/src/i18n/en-us/index.ts index a1eef033..831f40de 100644 --- a/src/i18n/en-us/index.ts +++ b/src/i18n/en-us/index.ts @@ -430,7 +430,7 @@ export default { sampleName: 'Sample Name', horizontalHint: 'Each sentence on a separate line, the tokens are separated by spaces.', verticalHint: 'Each token on a separate line, with an empty line indicating the end of sentence.', - customUsername: "Custom UserId By default it's your username", + customUsername: "Custom UserId", text: 'text', tokenizeBtn: 'Tokenize', selectFiles: 'Select one or multiple conll files', @@ -438,6 +438,13 @@ export default { uploadFileTooltip: 'Select file to upload', reservedUsernameError: 'is reserved username for ArboratorGrew', emptyUsernameError: 'You can not upload file without userId please type something', + userIdConfig: 'User Id configuration', + userIdOptions: [ + 'Import your trees under your username', + 'Import your trees as validated trees', + 'Import your trees as base_tree', + 'Import your trees using custom username' + ], }, advancedFilter: { textFilter: 'Text filter', diff --git a/src/i18n/fr-fra/index.ts b/src/i18n/fr-fra/index.ts index 69373b23..e16d9794 100644 --- a/src/i18n/fr-fra/index.ts +++ b/src/i18n/fr-fra/index.ts @@ -427,7 +427,7 @@ export default { sampleName: "Le nom d'échantillon", horizontalHint: 'Chaque phrase se trouve sur une ligne séparée, les tokens sont séparés par des espaces..', verticalHint: 'Chaque token est écrit sur une ligne séparée, une ligne vide indiquant la fin de la phrase.', - customUsername: "UserId personnalisé par défaut il s'agit de votre username", + customUsername: "UserId personnalisé", text: 'texte', tokenizeBtn: 'Tokéniser', selectFiles: 'Sélectionnez un ou plusieurs fichiers CONLL', @@ -435,6 +435,13 @@ export default { uploadFileTooltip: 'sélectionnez un fichier', reservedUsernameError: 'est un nom réservé pour ArboratorGrew', emptyUsernameError: 'Vous ne pouvez pas télécharger de fichier sans userId, veuillez saisir quelque chose.', + userIdConfig: 'Configuration du UserId', + userIdOptions: [ + "Importez vos arbres sous votre nom d'utilisateurs", + 'Importez vos arbres comme des arbres validated', + 'Importez vos arbres comme des arbres base_tree', + "Importez vos arbres en utilisant un nom d'utilisateur personalisé", + ], }, advancedFilter: { textFilter: 'Filtre du texte', diff --git a/src/pinia/modules/user/defaultState.ts b/src/pinia/modules/user/defaultState.ts index 463ddba8..468440d3 100644 --- a/src/pinia/modules/user/defaultState.ts +++ b/src/pinia/modules/user/defaultState.ts @@ -24,7 +24,7 @@ export interface UserStateInterface { query_class: string | null; super_admin: boolean; username: string; - reservedUserId: string; + reservedUserIds: string[]; } // default user state @@ -55,6 +55,6 @@ export default function defaultState(): UserStateInterface { query_class: null, super_admin: false, username: '', - reservedUserId: 'base_tree', + reservedUserIds: ['base_tree', 'validated'], }; }