From 8c3b8f1c80f4db563031bd170e3b14031a1af805 Mon Sep 17 00:00:00 2001 From: rob-ouser-bi Date: Mon, 19 May 2025 18:38:53 +0000 Subject: [PATCH 01/18] [autocommit] bumping build number --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index dc9b4081..faa639de 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "bi-web", - "version": "v1.1.0+839", + "version": "v1.1.0+845", "private": true, "scripts": { "build": "node $npm_package_config_task_path/build.js --dev-audit-level=critical --prod-audit-level=none", @@ -96,5 +96,5 @@ "vue-cli-plugin-axios": "0.0.4", "vue-template-compiler": "^2.7.14" }, - "versionInfo": "https://github.com/Breeding-Insight/bi-web/commit/fa2c71710f278a31e1c4c9dfd549562e7f74c2c0" + "versionInfo": "https://github.com/Breeding-Insight/bi-web/commit/1179a073421d36729efe72f6896dabcc0bb89c4e" } From 6f343055647fa14ab6a4e47ee5f2753d90933cce Mon Sep 17 00:00:00 2001 From: Nick <53413353+nickpalladino@users.noreply.github.com> Date: Mon, 19 May 2025 15:35:00 -0400 Subject: [PATCH 02/18] Update version number --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index faa639de..cb87ba9e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "bi-web", - "version": "v1.1.0+845", + "version": "v1.1.1+845", "private": true, "scripts": { "build": "node $npm_package_config_task_path/build.js --dev-audit-level=critical --prod-audit-level=none", From b52ad98173803ff4c9f42bb553f38a7c4a61f777 Mon Sep 17 00:00:00 2001 From: rob-ouser-bi Date: Mon, 19 May 2025 19:35:29 +0000 Subject: [PATCH 03/18] [autocommit] bumping build number --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index cb87ba9e..e8ace123 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "bi-web", - "version": "v1.1.1+845", + "version": "v1.1.1+849", "private": true, "scripts": { "build": "node $npm_package_config_task_path/build.js --dev-audit-level=critical --prod-audit-level=none", @@ -96,5 +96,5 @@ "vue-cli-plugin-axios": "0.0.4", "vue-template-compiler": "^2.7.14" }, - "versionInfo": "https://github.com/Breeding-Insight/bi-web/commit/1179a073421d36729efe72f6896dabcc0bb89c4e" + "versionInfo": "https://github.com/Breeding-Insight/bi-web/commit/6f343055647fa14ab6a4e47ee5f2753d90933cce" } From fff1b4ce0e409eb9762279b84a7023ee54952a03 Mon Sep 17 00:00:00 2001 From: Nick <53413353+nickpalladino@users.noreply.github.com> Date: Tue, 3 Jun 2025 08:40:09 -0400 Subject: [PATCH 04/18] Try to get running for demo --- task/serve.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/task/serve.js b/task/serve.js index 1579e94d..630fa327 100755 --- a/task/serve.js +++ b/task/serve.js @@ -25,10 +25,13 @@ const port = process.env.PORT || JSON.parse(fs.readFileSync('package.json', 'utf (async () => { let spinner = ora({prefixText: ' ', color: 'yellow'}); try { + // TODO: figure out the issue here + /* spinner = spinner.start('sort package.json'); await execa('npx', ['sort-package-json@3.0.0'], {preferLocal: true}); spinner = spinner.clear() .succeed('package.json sorted'); + */ console.log(`App running at http://localhost:${port}`); await execa.command(`vue-cli-service\ serve --port ${port}`); From 0c082a6f7138e4e74edc40783c10634a06c889fc Mon Sep 17 00:00:00 2001 From: rob-ouser-bi Date: Tue, 3 Jun 2025 12:40:26 +0000 Subject: [PATCH 05/18] [autocommit] bumping build number --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index e8ace123..050014dd 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "bi-web", - "version": "v1.1.1+849", + "version": "v1.1.1+853", "private": true, "scripts": { "build": "node $npm_package_config_task_path/build.js --dev-audit-level=critical --prod-audit-level=none", @@ -96,5 +96,5 @@ "vue-cli-plugin-axios": "0.0.4", "vue-template-compiler": "^2.7.14" }, - "versionInfo": "https://github.com/Breeding-Insight/bi-web/commit/6f343055647fa14ab6a4e47ee5f2753d90933cce" + "versionInfo": "https://github.com/Breeding-Insight/bi-web/commit/fff1b4ce0e409eb9762279b84a7023ee54952a03" } From b5a7206b55fdecafb9bde3a18c2b94254290c072 Mon Sep 17 00:00:00 2001 From: Nick <53413353+nickpalladino@users.noreply.github.com> Date: Tue, 17 Jun 2025 11:03:31 -0400 Subject: [PATCH 06/18] Updated duplicate message to be more accurate --- src/views/import/ImportGermplasm.vue | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/views/import/ImportGermplasm.vue b/src/views/import/ImportGermplasm.vue index 32fa30cf..085b7127 100644 --- a/src/views/import/ImportGermplasm.vue +++ b/src/views/import/ImportGermplasm.vue @@ -81,8 +81,7 @@

New Germplasm count: {{ statistics.Germplasm.newObjectCount }}

New Pedigree Connections: {{ statistics["Pedigree Connections"].newObjectCount }}

From b3d79fb9a1d704152b0723e2f67d76a986ac86cf Mon Sep 17 00:00:00 2001 From: rob-ouser-bi Date: Tue, 17 Jun 2025 18:45:45 +0000 Subject: [PATCH 07/18] [autocommit] bumping build number --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 050014dd..dca686bd 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "bi-web", - "version": "v1.1.1+853", + "version": "v1.1.1+861", "private": true, "scripts": { "build": "node $npm_package_config_task_path/build.js --dev-audit-level=critical --prod-audit-level=none", @@ -96,5 +96,5 @@ "vue-cli-plugin-axios": "0.0.4", "vue-template-compiler": "^2.7.14" }, - "versionInfo": "https://github.com/Breeding-Insight/bi-web/commit/fff1b4ce0e409eb9762279b84a7023ee54952a03" + "versionInfo": "https://github.com/Breeding-Insight/bi-web/commit/a64d41675bc18512781eac2217c15434cae6458a" } From ea459c2d6307d24a8d4705dfdd67ab0dc9fbbe8f Mon Sep 17 00:00:00 2001 From: Nick <53413353+nickpalladino@users.noreply.github.com> Date: Wed, 18 Jun 2025 16:31:08 -0400 Subject: [PATCH 08/18] Update version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index dca686bd..739737e8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "bi-web", - "version": "v1.1.1+861", + "version": "v1.2+861", "private": true, "scripts": { "build": "node $npm_package_config_task_path/build.js --dev-audit-level=critical --prod-audit-level=none", From 3c37b4d9a5e91a26fcdea0ccc7429885e9073f45 Mon Sep 17 00:00:00 2001 From: rob-ouser-bi Date: Wed, 18 Jun 2025 20:31:24 +0000 Subject: [PATCH 09/18] [autocommit] bumping build number --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 739737e8..a1de51de 100644 --- a/package.json +++ b/package.json @@ -96,5 +96,5 @@ "vue-cli-plugin-axios": "0.0.4", "vue-template-compiler": "^2.7.14" }, - "versionInfo": "https://github.com/Breeding-Insight/bi-web/commit/a64d41675bc18512781eac2217c15434cae6458a" + "versionInfo": "https://github.com/Breeding-Insight/bi-web/commit/ea459c2d6307d24a8d4705dfdd67ab0dc9fbbe8f" } From 13d26ce352aef1e8b3cdcfed2f5f23232471ebfe Mon Sep 17 00:00:00 2001 From: Nick <53413353+nickpalladino@users.noreply.github.com> Date: Wed, 18 Jun 2025 22:54:37 -0400 Subject: [PATCH 10/18] Fix version number --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a1de51de..4cb2b5e0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "bi-web", - "version": "v1.2+861", + "version": "v1.2.0+861", "private": true, "scripts": { "build": "node $npm_package_config_task_path/build.js --dev-audit-level=critical --prod-audit-level=none", From fc73038396f3df10575249d7b8b03201aad371b4 Mon Sep 17 00:00:00 2001 From: rob-ouser-bi Date: Thu, 19 Jun 2025 02:54:50 +0000 Subject: [PATCH 11/18] [autocommit] bumping build number --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 4cb2b5e0..617be00d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "bi-web", - "version": "v1.2.0+861", + "version": "v1.2.0+865", "private": true, "scripts": { "build": "node $npm_package_config_task_path/build.js --dev-audit-level=critical --prod-audit-level=none", @@ -96,5 +96,5 @@ "vue-cli-plugin-axios": "0.0.4", "vue-template-compiler": "^2.7.14" }, - "versionInfo": "https://github.com/Breeding-Insight/bi-web/commit/ea459c2d6307d24a8d4705dfdd67ab0dc9fbbe8f" + "versionInfo": "https://github.com/Breeding-Insight/bi-web/commit/13d26ce352aef1e8b3cdcfed2f5f23232471ebfe" } From c826c51c4a3aa82a7f9ca399e5ec654abd069e61 Mon Sep 17 00:00:00 2001 From: Nick <53413353+nickpalladino@users.noreply.github.com> Date: Wed, 9 Jul 2025 16:41:55 -0400 Subject: [PATCH 12/18] Switch to using bi-api calls rather than doing check on front end --- src/breeding-insight/dao/UserDAO.ts | 35 ++++++++++ src/breeding-insight/model/FilterRequest.ts | 26 ++++++++ src/breeding-insight/model/SearchRequest.ts | 26 ++++++++ src/breeding-insight/service/UserService.ts | 40 ++++++++++++ src/components/program/ProgramUsersTable.vue | 67 +++++++++----------- 5 files changed, 156 insertions(+), 38 deletions(-) create mode 100644 src/breeding-insight/model/FilterRequest.ts create mode 100644 src/breeding-insight/model/SearchRequest.ts diff --git a/src/breeding-insight/dao/UserDAO.ts b/src/breeding-insight/dao/UserDAO.ts index f93f69b5..9fa3425c 100644 --- a/src/breeding-insight/dao/UserDAO.ts +++ b/src/breeding-insight/dao/UserDAO.ts @@ -21,6 +21,7 @@ import {BiResponse} from "@/breeding-insight/model/BiResponse"; import {Role} from "@/breeding-insight/model/Role"; import {PaginationQuery} from "@/breeding-insight/model/PaginationQuery"; import {UserSort} from "@/breeding-insight/model/Sort"; +import {SearchRequest} from "@/breeding-insight/model/SearchRequest"; export class UserDAO { @@ -101,6 +102,40 @@ export class UserDAO { } + static getById(id: string): Promise { + return new Promise((resolve, reject) => { + api.call({ url: `${process.env.VUE_APP_BI_API_V1_PATH}/users/${id}`, method: 'get' }) + .then((response: any) => { + const biResponse = new BiResponse(response.data); + resolve(biResponse); + }).catch((error) => reject(error)); + }); + } + + static search(searchRequest: SearchRequest, {page, pageSize}: PaginationQuery, {field, order}: UserSort): Promise { + + return new Promise(((resolve, reject) => { + const config = { + url: `${process.env.VUE_APP_BI_API_V1_PATH}/users/search`, + method: 'post', + data: searchRequest, + params: { + sortField: field, + sortOrder: order, + page, + pageSize + } + } + api.call(config) + .then((response: any) => { + const biResponse = new BiResponse(response.data); + resolve(biResponse); + }).catch((error) => { + reject(error); + }) + })); + } + static updateSystemRoles(id: string, systemRoles: Array) { return new Promise((resolve, reject) => { diff --git a/src/breeding-insight/model/FilterRequest.ts b/src/breeding-insight/model/FilterRequest.ts new file mode 100644 index 00000000..77a9edc4 --- /dev/null +++ b/src/breeding-insight/model/FilterRequest.ts @@ -0,0 +1,26 @@ +/* + * See the NOTICE file distributed with this work for additional information + * regarding copyright ownership. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export class FilterRequest { + field: string; + value: string; + + constructor(field: string, value: string) { + this.field = field; + this.value = value; + } +} diff --git a/src/breeding-insight/model/SearchRequest.ts b/src/breeding-insight/model/SearchRequest.ts new file mode 100644 index 00000000..845327f3 --- /dev/null +++ b/src/breeding-insight/model/SearchRequest.ts @@ -0,0 +1,26 @@ +/* + * See the NOTICE file distributed with this work for additional information + * regarding copyright ownership. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import {FilterRequest} from "@/breeding-insight/model/FilterRequest"; + +export class SearchRequest { + filters: FilterRequest[] = []; + + constructor(filters: FilterRequest[]) { + this.filters = filters; + } +} diff --git a/src/breeding-insight/service/UserService.ts b/src/breeding-insight/service/UserService.ts index b80eb6de..459f3f0b 100644 --- a/src/breeding-insight/service/UserService.ts +++ b/src/breeding-insight/service/UserService.ts @@ -24,6 +24,7 @@ import {Program} from "@/breeding-insight/model/Program"; import {ProgramUser} from "@/breeding-insight/model/ProgramUser"; import {PaginationQuery} from "@/breeding-insight/model/PaginationQuery"; import {ProgramSort, SortOrder, UserSort, UserSortField} from "@/breeding-insight/model/Sort"; +import {SearchRequest} from "@/breeding-insight/model/SearchRequest"; export class UserService { @@ -153,6 +154,45 @@ export class UserService { })); } + static getById(id: string): Promise { + return new Promise((resolve, reject) => { + UserDAO.getById(id).then((biResponse: BiResponse) => { + const result: any = biResponse.result; + const role: Role | undefined = this.parseSystemRoles(result.systemRoles); + const programRoles: ProgramUser[] | undefined = this.parseProgramRoles(result.programRoles); + const user = new User(result.id, result.name, result.orcid, result.email, role, programRoles); + resolve(user); + }).catch((error) => { + error['errorMessage'] = this.errorGetUser; + reject(error); + }); + }); + } + + static search(searchRequest: SearchRequest, + paginationQuery: PaginationQuery = new PaginationQuery(1, 50, true), + sort: UserSort = new UserSort(UserSortField.Name, SortOrder.Ascending)): Promise<[User[], Metadata]> { + return new Promise<[User[], Metadata]>(((resolve, reject) => { + + UserDAO.search(searchRequest, paginationQuery, sort).then((biResponse) => { + + // Parse our users into the vue users param + let users = biResponse.result.data.map((user: any) => { + const role: Role | undefined = this.parseSystemRoles(user.systemRoles); + const programRoles: ProgramUser[] | undefined = this.parseProgramRoles(user.programRoles); + return new User(user.id, user.name, user.orcid, user.email, role, programRoles); + }); + + resolve([users, biResponse.metadata]); + + }).catch((error) => { + error['errorMessage'] = this.errorSearchUsers; + reject(error) + }); + + })); + } + static updateSystemRoles(user: User): Promise { return new Promise((resolve, reject) => { diff --git a/src/components/program/ProgramUsersTable.vue b/src/components/program/ProgramUsersTable.vue index ef66b26c..c7aec7e0 100644 --- a/src/components/program/ProgramUsersTable.vue +++ b/src/components/program/ProgramUsersTable.vue @@ -191,6 +191,7 @@ import { UPDATE_PROGRAM_USER_SORT } from "@/store/sorting/mutation-types"; + import {SearchRequest} from "@/breeding-insight/model/SearchRequest"; @Component({ components: { ExpandableTable, NewDataForm, BasicInputField, BasicSelectField, TableColumn, @@ -218,7 +219,6 @@ export default class ProgramUsersTable extends Vue { private activeProgram?: Program; private activeUser?: User; public users: ProgramUser[] = []; - public systemUsers: User[] = []; private deactivateActive: boolean = false; private newUserActive: boolean = false; @@ -252,7 +252,6 @@ export default class ProgramUsersTable extends Vue { mounted() { this.getRoles(); - this.getSystemUsers(); this.paginationChanged(); } @@ -338,22 +337,23 @@ export default class ProgramUsersTable extends Vue { this.newUser.program = this.activeProgram; try { - this.newUser = this.checkExistingUserByEmail(this.newUser, this.systemUsers); + this.newUser = this.checkExistingUserByEmail(this.newUser); } catch (err) { this.$emit('show-error-notification', err); this.newUserFormState.bus.$emit(DataFormEventBusHandler.SAVE_COMPLETE_EVENT); return; } + // if we found a system user by email in checkExistingUserByEmail then system user exists + const systemUserExisted = this.newUser.id !== undefined; + ProgramUserService.create(this.newUser).then((user: ProgramUser) => { this.paginationController.updatePage(1); this.paginationController.updateOnAdd(); this.getUsers(); - this.getSystemUsers(); // See if the user already existed - //TODO: Reconsider when user search feature is added - if (this.getSystemUserById(user, this.systemUsers)) { + if (systemUserExisted) { this.$emit('show-success-notification', 'Success! Existing user ' + user.name + ' added to program.'); } else { this.$emit('show-success-notification', 'Success! ' + this.newUser.name + ' added.'); @@ -361,13 +361,11 @@ export default class ProgramUsersTable extends Vue { if(this.newUser.email === this.activeUser!.email) this.updateActiveUser(); - this.getSystemUsers(); this.newUser = new ProgramUser(); this.newUserActive = false; }).catch((error) => { this.$emit('show-error-notification', error.errorMessage); this.getUsers(); - this.getSystemUsers(); }).finally(() => this.newUserFormState.bus.$emit(DataFormEventBusHandler.SAVE_COMPLETE_EVENT)) } @@ -379,47 +377,40 @@ export default class ProgramUsersTable extends Vue { Vue.prototype.$ability.update(rules); } - //TODO: Reconsider when user search feature is added - getSystemUsers() { + //TODO: Do we still want this since orcid entry is removed? + checkExistingUserByEmail(user: ProgramUser): ProgramUser { + user.id = undefined; - UserService.getAll().then(([users, metadata]) => { - this.systemUsers = users; + // api call to check if user exists for email + // this was done on front-end before because we didn't have search endpoint at the time + const filter = new FilterRequest('email', user.email); + const request = new SearchRequest(filter); + UserService.search(request).then(([users, metadata]) => { + // email exists + if (users.length === 1) { + user.id = users[0].id; + } }).catch((error) => { // Display error that users cannot be loaded this.$emit('show-error-notification', 'Error while trying to load system users'); throw error; }); - } - - //TODO: Reconsider when user search feature is added - //TODO: Do we still want this since orcid entry is removed? - checkExistingUserByEmail(user: ProgramUser, systemUsers: User[]): ProgramUser { - user.id = undefined; - let usersFound = 0; - for (const systemUser of systemUsers){ - if (user.email === systemUser.email){ - usersFound += 1; - if (systemUser.id){ - user.id = systemUser.id; - } - } - } - - if (usersFound > 1){ - throw "Email matches two different users."; - } - return user; } - //TODO: Reconsider when user search feature is added - getSystemUserById(user: ProgramUser, systemUsers: User[]): User | undefined { - for (const systemUser of systemUsers){ - if (user.id === systemUser.id){ - return systemUser; + getSystemUserById(user: ProgramUser): User | undefined { + + UserService.getById(user.id).then(([users, metadata]) => { + if (users.length === 1) { + return users[0]; } - } + }).catch((error) => { + // Display error that users cannot be loaded + this.$emit('show-error-notification', 'Error while trying to load system user'); + throw error; + }); + return undefined; } From db352c364afca37c5a9384c233c36da7b9516e95 Mon Sep 17 00:00:00 2001 From: Nick <53413353+nickpalladino@users.noreply.github.com> Date: Thu, 10 Jul 2025 14:40:32 -0400 Subject: [PATCH 13/18] Fix error message --- src/breeding-insight/service/UserService.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/breeding-insight/service/UserService.ts b/src/breeding-insight/service/UserService.ts index 459f3f0b..00fbc8f4 100644 --- a/src/breeding-insight/service/UserService.ts +++ b/src/breeding-insight/service/UserService.ts @@ -32,6 +32,7 @@ export class UserService { static errorCreateUser: string = 'Unable to create user'; static errorDeleteUser: string = 'Unable to archive user'; static errorGetUsers: string = 'Error while trying to load roles'; + static errorGetUser: string = 'Error user not found'; static errorDeleteUserNotFound: string = 'Unable to find user to deactivate'; static errorDeleteUserNotAllowed: string = 'You are not allowed to deactivate this user.'; static errorPermissionsEditUser: string = "You don't have permissions to edit the roles of this user."; @@ -147,7 +148,7 @@ export class UserService { resolve([users, biResponse.metadata]); }).catch((error) => { - error['errorMessage'] = this.errorGetUsers; + error['errorMessage'] = this.errorGetUser; reject(error) }); From d8489a33f0e1860a1ed28d599b985b9de8ace3ee Mon Sep 17 00:00:00 2001 From: Nick <53413353+nickpalladino@users.noreply.github.com> Date: Thu, 10 Jul 2025 15:47:52 -0400 Subject: [PATCH 14/18] Fixed async issues --- src/components/program/ProgramUsersTable.vue | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/components/program/ProgramUsersTable.vue b/src/components/program/ProgramUsersTable.vue index c7aec7e0..05a9d512 100644 --- a/src/components/program/ProgramUsersTable.vue +++ b/src/components/program/ProgramUsersTable.vue @@ -192,6 +192,7 @@ UPDATE_PROGRAM_USER_SORT } from "@/store/sorting/mutation-types"; import {SearchRequest} from "@/breeding-insight/model/SearchRequest"; + import {FilterRequest} from "@/breeding-insight/model/FilterRequest"; @Component({ components: { ExpandableTable, NewDataForm, BasicInputField, BasicSelectField, TableColumn, @@ -332,12 +333,12 @@ export default class ProgramUsersTable extends Vue { } - saveUser() { + async saveUser() { this.newUser.program = this.activeProgram; try { - this.newUser = this.checkExistingUserByEmail(this.newUser); + this.newUser = await this.checkExistingUserByEmail(this.newUser); } catch (err) { this.$emit('show-error-notification', err); this.newUserFormState.bus.$emit(DataFormEventBusHandler.SAVE_COMPLETE_EVENT); @@ -378,23 +379,25 @@ export default class ProgramUsersTable extends Vue { } //TODO: Do we still want this since orcid entry is removed? - checkExistingUserByEmail(user: ProgramUser): ProgramUser { + async checkExistingUserByEmail(user: ProgramUser): Promise { user.id = undefined; - // api call to check if user exists for email // this was done on front-end before because we didn't have search endpoint at the time const filter = new FilterRequest('email', user.email); const request = new SearchRequest(filter); - UserService.search(request).then(([users, metadata]) => { + + try { + const [users, metadata] = await UserService.search(request); // email exists if (users.length === 1) { user.id = users[0].id; } - }).catch((error) => { + } catch (error) { // Display error that users cannot be loaded this.$emit('show-error-notification', 'Error while trying to load system users'); throw error; - }); + } + return user; } From 599d7df12b58dd82ae3c12b88f5d680d4bf666d9 Mon Sep 17 00:00:00 2001 From: Nick <53413353+nickpalladino@users.noreply.github.com> Date: Wed, 16 Jul 2025 09:09:23 -0400 Subject: [PATCH 15/18] Update error messages --- src/breeding-insight/service/UserService.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/breeding-insight/service/UserService.ts b/src/breeding-insight/service/UserService.ts index 00fbc8f4..ce3433c0 100644 --- a/src/breeding-insight/service/UserService.ts +++ b/src/breeding-insight/service/UserService.ts @@ -31,8 +31,9 @@ export class UserService { static duplicateEmailMessage : string = 'Email is already in use.'; static errorCreateUser: string = 'Unable to create user'; static errorDeleteUser: string = 'Unable to archive user'; - static errorGetUsers: string = 'Error while trying to load roles'; - static errorGetUser: string = 'Error user not found'; + static errorGetUsers: string = 'Error while trying to load users'; + static errorSearchUsers: string = 'Error while searching users'; + static errorGetUser: string = 'User not found'; static errorDeleteUserNotFound: string = 'Unable to find user to deactivate'; static errorDeleteUserNotAllowed: string = 'You are not allowed to deactivate this user.'; static errorPermissionsEditUser: string = "You don't have permissions to edit the roles of this user."; @@ -148,7 +149,7 @@ export class UserService { resolve([users, biResponse.metadata]); }).catch((error) => { - error['errorMessage'] = this.errorGetUser; + error['errorMessage'] = this.errorGetUsers; reject(error) }); From 90ea586d841ae37090b3054bbda83b013c3ed1ee Mon Sep 17 00:00:00 2001 From: rob-ouser-bi Date: Fri, 1 Aug 2025 20:09:42 +0000 Subject: [PATCH 16/18] [autocommit] bumping build number --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 617be00d..9f3a9821 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "bi-web", - "version": "v1.2.0+865", + "version": "v1.2.0+871", "private": true, "scripts": { "build": "node $npm_package_config_task_path/build.js --dev-audit-level=critical --prod-audit-level=none", @@ -96,5 +96,5 @@ "vue-cli-plugin-axios": "0.0.4", "vue-template-compiler": "^2.7.14" }, - "versionInfo": "https://github.com/Breeding-Insight/bi-web/commit/13d26ce352aef1e8b3cdcfed2f5f23232471ebfe" + "versionInfo": "https://github.com/Breeding-Insight/bi-web/commit/da6d685dc2419789a913008efbe14ff41c4dcc23" } From a6ccdcae3caeff7460fede6475e768d29c4b5467 Mon Sep 17 00:00:00 2001 From: rob-ouser-bi Date: Thu, 28 Aug 2025 16:00:31 +0000 Subject: [PATCH 17/18] [autocommit] bumping build number --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 9f3a9821..034703e2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "bi-web", - "version": "v1.2.0+871", + "version": "v1.2.0+881", "private": true, "scripts": { "build": "node $npm_package_config_task_path/build.js --dev-audit-level=critical --prod-audit-level=none", @@ -96,5 +96,5 @@ "vue-cli-plugin-axios": "0.0.4", "vue-template-compiler": "^2.7.14" }, - "versionInfo": "https://github.com/Breeding-Insight/bi-web/commit/da6d685dc2419789a913008efbe14ff41c4dcc23" + "versionInfo": "https://github.com/Breeding-Insight/bi-web/commit/90ea586d841ae37090b3054bbda83b013c3ed1ee" } From e03c5baef0aeafdc420dc77a25c94b0e90491a15 Mon Sep 17 00:00:00 2001 From: rob-ouser-bi Date: Thu, 28 Aug 2025 16:16:27 +0000 Subject: [PATCH 18/18] [autocommit] bumping build number --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 034703e2..49649609 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "bi-web", - "version": "v1.2.0+881", + "version": "v1.2.0+883", "private": true, "scripts": { "build": "node $npm_package_config_task_path/build.js --dev-audit-level=critical --prod-audit-level=none", @@ -96,5 +96,5 @@ "vue-cli-plugin-axios": "0.0.4", "vue-template-compiler": "^2.7.14" }, - "versionInfo": "https://github.com/Breeding-Insight/bi-web/commit/90ea586d841ae37090b3054bbda83b013c3ed1ee" + "versionInfo": "https://github.com/Breeding-Insight/bi-web/commit/c6827820f268a811a67ad2e3576b3412e4e32c70" }