From 3cd6aca8bb596d71fe4577610322af8c825f3888 Mon Sep 17 00:00:00 2001 From: hms243 Date: Mon, 28 Nov 2022 11:52:24 -0500 Subject: [PATCH 1/2] [BI-1477] - Improve Experiments Table --- src/breeding-insight/model/Sort.ts | 16 ++++ src/breeding-insight/service/BrAPIService.ts | 3 +- .../ExperimentsObservationsTable.vue | 91 ++++++++++++++----- src/store/sorting/getters.ts | 6 ++ src/store/sorting/index.ts | 12 ++- src/store/sorting/mutation-types.ts | 3 + src/store/sorting/mutations.ts | 11 ++- src/store/sorting/types.ts | 4 + .../ExperimentsAndObservations.vue | 18 ++++ 9 files changed, 139 insertions(+), 25 deletions(-) diff --git a/src/breeding-insight/model/Sort.ts b/src/breeding-insight/model/Sort.ts index 4ae6b2898..e4fb614b6 100644 --- a/src/breeding-insight/model/Sort.ts +++ b/src/breeding-insight/model/Sort.ts @@ -168,3 +168,19 @@ export class GermplasmSort { this.order = order; } } + +// experiments +export enum ExperimentSortField { + Name = "name", + Active = "active" +} + +export class ExperimentSort { + field: ExperimentSortField; + order: SortOrder; + + constructor(field: ExperimentSortField, order: SortOrder) { + this.field = field; + this.order = order; + } +} \ No newline at end of file diff --git a/src/breeding-insight/service/BrAPIService.ts b/src/breeding-insight/service/BrAPIService.ts index c6255d0ea..3ae484e14 100644 --- a/src/breeding-insight/service/BrAPIService.ts +++ b/src/breeding-insight/service/BrAPIService.ts @@ -20,7 +20,8 @@ import {BiResponse, Response} from "@/breeding-insight/model/BiResponse"; import {SortOrder} from "@/breeding-insight/model/Sort"; export enum BrAPIType { - GERMPLASM = "germplasm" + GERMPLASM = "germplasm", + EXPERIMENT = "trials" } export class BrAPIService { diff --git a/src/components/experiments/ExperimentsObservationsTable.vue b/src/components/experiments/ExperimentsObservationsTable.vue index d3c603b5f..39a9e9580 100644 --- a/src/components/experiments/ExperimentsObservationsTable.vue +++ b/src/components/experiments/ExperimentsObservationsTable.vue @@ -26,13 +26,18 @@ v-bind:pagination="experimentsPagination" v-on:show-error-notification="$emit('show-error-notification', $event)" v-on:paginate="paginationController.updatePage($event)" - v-on:paginate-toggle-all="paginationController.toggleShowAll()" + v-on:paginate-toggle-all="paginationController.toggleShowAll(experimentsPagination.totalCount.valueOf())" v-on:paginate-page-size="paginationController.updatePageSize($event)" + backend-sorting + v-bind:default-sort="[fieldMap['name'], 'ASC']" + v-on:sort="setSort" + v-on:search="filters = $event" + v-bind:search-debounce="400" > - + {{ props.row.data.trialName }} - + {{ getStatus(props.row.data.active) }} @@ -64,31 +69,50 @@ diff --git a/src/store/sorting/getters.ts b/src/store/sorting/getters.ts index 92d788d35..47d712b28 100644 --- a/src/store/sorting/getters.ts +++ b/src/store/sorting/getters.ts @@ -19,6 +19,7 @@ import {GetterTree} from 'vuex'; import {RootState} from "@/store/types"; import {SortState} from "@/store/sorting/types"; import { + ExperimentSort, GermplasmSort, LocationSort, OntologySort, ProgramSort, @@ -119,5 +120,10 @@ export const getters: GetterTree = { // germplasm germplasmSort(state: SortState): GermplasmSort { return state.germplasmSort; + }, + + // experiment + experimentSort(state: SortState): ExperimentSort { + return state.experimentSort; } }; \ No newline at end of file diff --git a/src/store/sorting/index.ts b/src/store/sorting/index.ts index c53602b82..64ea2a1a0 100644 --- a/src/store/sorting/index.ts +++ b/src/store/sorting/index.ts @@ -20,6 +20,8 @@ import {getters} from '@/store/sorting/getters'; import {mutations} from '@/store/sorting/mutations'; import {RootState} from '@/store/types'; import { + ExperimentSort, + ExperimentSortField, GermplasmSort, GermplasmSortField, LocationSort, @@ -28,7 +30,9 @@ import { OntologySortField, ProgramSort, ProgramSortField, - SortOrder, SystemUserSort, SystemUserSortField, + SortOrder, + SystemUserSort, + SystemUserSortField, UserSort, UserSortField } from "@/breeding-insight/model/Sort"; @@ -58,7 +62,11 @@ state = { programSort: new ProgramSort(ProgramSortField.Name, SortOrder.Ascending), // germplasm table - germplasmSort: new GermplasmSort(GermplasmSortField.AccessionNumber, SortOrder.Ascending) + germplasmSort: new GermplasmSort(GermplasmSortField.AccessionNumber, SortOrder.Ascending), + + //experiment and observation table + experimentSort: new ExperimentSort(ExperimentSortField.Name, SortOrder.Ascending) + }; const namespaced: boolean = true diff --git a/src/store/sorting/mutation-types.ts b/src/store/sorting/mutation-types.ts index 1c7a150a2..4b8a14ff2 100644 --- a/src/store/sorting/mutation-types.ts +++ b/src/store/sorting/mutation-types.ts @@ -42,3 +42,6 @@ export const UPDATE_PROGRAM_SORT = 'updateProgramSort'; // germplasm table export const UPDATE_GERMPLASM_SORT = 'updateGermplasmSort'; + +// experiment table +export const UPDATE_EXPERIMENT_SORT = 'updateExperimentSort'; diff --git a/src/store/sorting/mutations.ts b/src/store/sorting/mutations.ts index 10b26bcd0..e8a6d2078 100644 --- a/src/store/sorting/mutations.ts +++ b/src/store/sorting/mutations.ts @@ -26,10 +26,13 @@ import { ACTIVE_ONT_TOGGLE_SORT_ORDER, ARCHIVED_ONT_TOGGLE_SORT_ORDER, IMPORT_PREVIEW_ONT_TOGGLE_SORT_ORDER, - IMPORT_PREVIEW_ONT_NEW_SORT_COLUMN, UPDATE_GERMPLASM_SORT + IMPORT_PREVIEW_ONT_NEW_SORT_COLUMN, + UPDATE_GERMPLASM_SORT, + UPDATE_EXPERIMENT_SORT } from "@/store/sorting/mutation-types"; import {SortState} from "@/store/sorting/types"; import { + ExperimentSort, GermplasmSort, LocationSort, OntologySort, OntologySortField, ProgramSort, SortOrder, SystemUserSort, @@ -90,5 +93,11 @@ export const mutations: MutationTree = { [UPDATE_GERMPLASM_SORT](state: SortState, sort: GermplasmSort) { state.germplasmSort.field = sort.field; state.germplasmSort.order = sort.order; + }, + + //experiments and observations table + [UPDATE_EXPERIMENT_SORT](state: SortState, sort: ExperimentSort) { + state.experimentSort.field = sort.field; + state.experimentSort.order = sort.order; } }; \ No newline at end of file diff --git a/src/store/sorting/types.ts b/src/store/sorting/types.ts index 5b027a2d5..12324a989 100644 --- a/src/store/sorting/types.ts +++ b/src/store/sorting/types.ts @@ -1,4 +1,5 @@ import { + ExperimentSort, GermplasmSort, LocationSort, OntologySort, @@ -32,4 +33,7 @@ export interface SortState { // germplasm table germplasmSort: GermplasmSort + + // experiment and observation table + experimentSort: ExperimentSort } \ No newline at end of file diff --git a/src/views/experiments-and-observations/ExperimentsAndObservations.vue b/src/views/experiments-and-observations/ExperimentsAndObservations.vue index 1fcc87f51..71ad1749e 100644 --- a/src/views/experiments-and-observations/ExperimentsAndObservations.vue +++ b/src/views/experiments-and-observations/ExperimentsAndObservations.vue @@ -38,6 +38,7 @@ @@ -50,6 +51,10 @@ import {PlusCircleIcon} from 'vue-feather-icons' import {mapGetters} from "vuex"; import {Program} from "@/breeding-insight/model/Program"; import TrialsAndStudiesBase from "@/components/trials/TrialsAndStudiesBase.vue"; +import {ExperimentSort, ExperimentSortField} from "@/breeding-insight/model/Sort"; +import {BackendPaginationController} from "@/breeding-insight/model/view_models/BackendPaginationController"; +import {BiResponse} from "@/breeding-insight/model/BiResponse"; +import {BrAPIService, BrAPIType} from "@/breeding-insight/service/BrAPIService"; @Component({ components: { @@ -65,5 +70,18 @@ export default class ExperimentsAndObservations extends TrialsAndStudiesBase { private activeProgram?: Program; + // Set the method used to populate the experiment table + private experimentsFetch: (programId: string, sort: ExperimentSort, paginationController: BackendPaginationController) => ((filters: any) => Promise) = + function (programId: string, sort: ExperimentSort, paginationController: BackendPaginationController) { + return function (filters: any) { + return BrAPIService.get( + BrAPIType.EXPERIMENT, + programId, + sort, + { pageSize: paginationController.pageSize, page: paginationController.currentPage - 1 }, + filters) + }; + }; + } From 5038bafd702cb4928271ff38c128b91456eaf62b Mon Sep 17 00:00:00 2001 From: hms243 Date: Tue, 29 Nov 2022 12:11:22 -0500 Subject: [PATCH 2/2] [BI-1477] - Remove searching on status --- src/components/experiments/ExperimentsObservationsTable.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/experiments/ExperimentsObservationsTable.vue b/src/components/experiments/ExperimentsObservationsTable.vue index 39a9e9580..cc51cafa9 100644 --- a/src/components/experiments/ExperimentsObservationsTable.vue +++ b/src/components/experiments/ExperimentsObservationsTable.vue @@ -37,7 +37,7 @@ {{ props.row.data.trialName }} - + {{ getStatus(props.row.data.active) }}