diff --git a/SAS/TMSS/frontend/tmss_webapp/src/components/ViewTable.js b/SAS/TMSS/frontend/tmss_webapp/src/components/ViewTable.js index 129b8232bf12d6353bc1507d27f1b17a1821b683..5a48bfde9bbc8f00ea9b3d945170a7ea5a2dbf59 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/components/ViewTable.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/components/ViewTable.js @@ -414,7 +414,7 @@ function MultiSelectFilter({ }) { const [value, setValue] = useState(''); const [filtertype, setFiltertype] = useState('Any'); - + const [filtered, setFiltered] = useState(false); React.useEffect(() => { if (!filterValue && value) { setValue(''); @@ -455,11 +455,27 @@ function MultiSelectFilter({ return [...options.values()] }, [id, preFilteredRows]); + // Function to call the server side filtering + const callServerFilter = (event, isCleared) => { + hasFilters = true; + _.remove(tableOptionsState.filters, function(filter) { return filter.id === Header }); + tableOptionsState.filters.push({id: Header, value: event.target.value}); + if (isCleared) { + hasFilters = false; + if (filtered) { + _.remove(tableOptionsState.filters, function(filter) { return filter.id === Header }); + filterCallback(tableOptionsState, setLoaderFunction); + } + } else { + filterCallback(tableOptionsState, setLoaderFunction); + } + }; + // Render a multi-select box return ( <div onClick={e => { e.stopPropagation() }} > <div style={{ position: 'relative' }} > - <MultiSelect data-testid="multi-select" id="multi-select-1" optionLabel="value" optionValue="value" filter={true} + <MultiSelect data-testid="multi-select" id="multi-select-1" optionLabel="name" optionValue="value" filter={true} value={value} options={options} onChange={e => { @@ -472,6 +488,8 @@ function MultiSelectFilter({ TableUtil.clearColumnFilter(currentTableName, Header); } } + setFiltered(true); + callServerFilter(e); }} maxSelectedLabels="1" selectedItemsLabel="{0} Selected" diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/SchedulingUnitList.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/SchedulingUnitList.js index 990c1afc455317df16cbb52108fedb0fa2825449..1f4d1bba9e3906b536a2070bb1489ac02c0870e3 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/SchedulingUnitList.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/SchedulingUnitList.js @@ -34,7 +34,7 @@ class SchedulingUnitList extends Component{ super(props); this. setToggleBySorting(); this.defaultcolumns = { - status: {name: "Status",filter: "select"}, + status: {name: "Status",filter: "multiselect-filter"}, workflowStatus: {name: "Workflow Status",filter: "select"}, suid: {name: "Scheduling Unit ID", tooltip: this.COMMA_SEPARATE_TOOLTIP}, project:{name:"Project"}, @@ -406,9 +406,11 @@ class SchedulingUnitList extends Component{ */ getStatusList(suFilters) { if (suFilters.data.filters['status']) { + this.statusList = []; suFilters.data.filters['status'].choices.forEach(choice => { - this.statusList.push(choice.value); - }) + const tmpVar = {name: _.startCase(choice.value), value: choice.value}; + this.statusList.push(tmpVar); + }); } } @@ -1199,6 +1201,10 @@ class SchedulingUnitList extends Component{ // Since it is ModelChoiceFilter, it will allow single parameter, so use last parameter if contains multi parameter const values = _.split(filter.value, ","); this.filterQry += 'observation_strategy_template='+values[values.length-1]+"&"; + } else if (filter.id.toLowerCase() === 'status') { + for ( const value of filter.value) { + this.filterQry += 'status='+value+"&"; + } } else { let columnDetails = _.find(this.state.columnMap, {displayName:filter.id}); if(columnDetails) { diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Task/list.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Task/list.js index af675d1a59459e9251f0b09cf969471fe7d756db..b3700aed74ae14afcb6e57f5984a60ec8782765a 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Task/list.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Task/list.js @@ -76,7 +76,7 @@ export class TaskList extends Component { }, status: { name: "Status", - filter: "select" + filter: "multiselect-filter" }, scheduling_unit_draft: { name:"Scheduling Unit ID", @@ -651,9 +651,11 @@ export class TaskList extends Component { */ getStatusList(taskFilters) { if (taskFilters.data.filters['status']) { + this.statusList = []; taskFilters.data.filters['status'].choices.forEach(choice => { - this.statusList.push(choice.value); - }) + const tmpVar = {name: _.startCase(choice.value), value: choice.value}; + this.statusList.push(tmpVar); + }); } } @@ -843,6 +845,10 @@ export class TaskList extends Component { let columnDetails = _.find(this.state.columnMap, {displayName:filter.id}); const values = UnitConverter.getSubbandOutput(filter.value); this.filterQry += columnDetails.orgField+'='+values.toString()+"&"; + } else if (filter.id.toLowerCase() === 'status') { + for ( const value of filter.value) { + this.filterQry += 'status='+value+"&"; + } } else { let columnDetails = _.find(this.state.columnMap, {displayName:filter.id}); if(columnDetails) { diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/view.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/view.js index 4cce86576d2feee1c0766a9b237886225ae14fb5..f4aa10939f13c61e325f96c780030bb69cb5e63a 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/view.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/view.js @@ -1189,19 +1189,21 @@ export class TimelineView extends Component { /** * Get Status list for UI drop down list */ - async getStatusList() { + async getStatusList() { let suStatusList = []; let taskStatusList = []; const suFilters = await ScheduleService.getSchedulingUnitFilterDefinition('blueprint'); if (suFilters && suFilters.data.filters['status']) { suFilters.data.filters['status'].choices.forEach(choice => { - suStatusList.push(choice.value); + const tmpVar = {name: _.startCase(choice.value), value: choice.value}; + suStatusList.push(tmpVar); }); } const taskFilters = await TaskService.getTaskFilterDefinition('blueprint'); if (taskFilters && taskFilters.data.filters['status']) { taskFilters.data.filters['status'].choices.forEach(choice => { - taskStatusList.push(choice.value); + const tmpVar = {name: _.startCase(choice.value), value: choice.value}; + taskStatusList.push(tmpVar); }); } this.setState({suStatusList: suStatusList, taskStatusList: taskStatusList}); diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/week.view.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/week.view.js index 14cecc28ade9d431a96f94a064f5d799490bad29..249cd9ef73a783579f91e34bbe6fc1c70a199fe1 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/week.view.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/week.view.js @@ -902,19 +902,21 @@ export class WeekTimelineView extends Component { /** * Get Status list for UI drop down list */ - async getStatusList() { + async getStatusList() { let suStatusList = []; let taskStatusList = []; const suFilters = await ScheduleService.getSchedulingUnitFilterDefinition('blueprint'); if (suFilters && suFilters.data.filters['status']) { suFilters.data.filters['status'].choices.forEach(choice => { - suStatusList.push(choice.value); + const tmpVar = {name: _.startCase(choice.value), value: choice.value}; + suStatusList.push(tmpVar); }); } const taskFilters = await TaskService.getTaskFilterDefinition('blueprint'); if (taskFilters && taskFilters.data.filters['status']) { taskFilters.data.filters['status'].choices.forEach(choice => { - taskStatusList.push(choice.value); + const tmpVar = {name: _.startCase(choice.value), value: choice.value}; + taskStatusList.push(tmpVar); }); } this.setState({suStatusList: suStatusList, taskStatusList: taskStatusList}); @@ -935,7 +937,6 @@ export class WeekTimelineView extends Component { } render() { - const {dynamicScheduler} = this.state.userrole.userRolePermission; if (this.state.redirect) { return <Redirect to={{ pathname: this.state.redirect }}></Redirect> } diff --git a/SAS/TMSS/frontend/tmss_webapp/src/shared/timeline.constants.js b/SAS/TMSS/frontend/tmss_webapp/src/shared/timeline.constants.js index 65d51fe61b2805b6ef729f418282f41f35309a06..9c592d65eb1f14c42f82dc9562a73836edf054d3 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/shared/timeline.constants.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/shared/timeline.constants.js @@ -4,7 +4,7 @@ const TimelineConstants = { SU_LIST_DEFAULT_COLUMNS: [{ status: { name:"Status", - filter: "select", + filter: "multiselect-filter", }, do_cancel: { name:"Cancelled" @@ -82,7 +82,7 @@ const TimelineConstants = { }], TASK_LIST_DEFAULT_COLUMNS: [{ status: { - name: "Status", filter: "select" + name: "Status", filter: "multiselect-filter" }, do_cancel: { name: "Cancelled"