From a0e7e072b7a8d5ea759dd0f801d8d371e6a7d997 Mon Sep 17 00:00:00 2001
From: Muthu <rspmkn@gmail.com>
Date: Tue, 25 Aug 2020 16:14:16 +0530
Subject: [PATCH] TMSS-298 - add default sorting

Added default sorting feature in table
---
 .../tmss_webapp/src/components/ViewTable.js        | 14 ++++++++++----
 .../frontend/tmss_webapp/src/routes/Cycle/list.js  |  3 +++
 .../tmss_webapp/src/routes/Project/list.js         |  2 ++
 .../src/routes/Scheduling/SchedulingUnitList.js    |  4 +++-
 .../src/routes/Scheduling/ViewSchedulingUnit.js    |  5 +++--
 5 files changed, 21 insertions(+), 7 deletions(-)

diff --git a/SAS/TMSS/frontend/tmss_webapp/src/components/ViewTable.js b/SAS/TMSS/frontend/tmss_webapp/src/components/ViewTable.js
index 1265b8af935..8f91d1af243 100644
--- a/SAS/TMSS/frontend/tmss_webapp/src/components/ViewTable.js
+++ b/SAS/TMSS/frontend/tmss_webapp/src/components/ViewTable.js
@@ -229,7 +229,7 @@ const IndeterminateCheckbox = React.forwardRef(
 )
 
 // Our table component
-function Table({ columns, data, defaultheader, optionalheader }) {
+function Table({ columns, data, defaultheader, optionalheader, defaultSortColumn }) {
   const filterTypes = React.useMemo(
     () => ({
       // Add a new fuzzyTextFilterFn filter type.
@@ -280,7 +280,8 @@ function Table({ columns, data, defaultheader, optionalheader }) {
         data,
         defaultColumn,
         filterTypes,
-        initialState: { pageIndex: 0 }
+        initialState: { pageIndex: 0,
+          sortBy: defaultSortColumn }
       },
       useFilters,
       useGlobalFilter,
@@ -421,7 +422,11 @@ function ViewTable(props) {
     // Default Header to show in table and other columns header will not show until user action on UI
     let defaultheader = props.defaultcolumns;
     let optionalheader = props.optionalcolumns;
-    
+    let defaultSortColumn = props.defaultSortColumn;
+    if(!defaultSortColumn){
+      defaultSortColumn =[{}];
+    }
+
     let columns = [];   
     let defaultdataheader =  Object.keys(defaultheader[0]);
     let optionaldataheader =  Object.keys(optionalheader[0]);
@@ -508,7 +513,8 @@ function ViewTable(props) {
  
   return (
     <div>
-        <Table columns={columns} data={tbldata} defaultheader={defaultheader[0]} optionalheader={optionalheader[0]} />
+        <Table columns={columns} data={tbldata} defaultheader={defaultheader[0]} optionalheader={optionalheader[0]} 
+        defaultSortColumn={defaultSortColumn} />
     </div>
   )
 }
diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Cycle/list.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Cycle/list.js
index 8ecbf062ecc..6fe6f2cb46c 100644
--- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Cycle/list.js
+++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Cycle/list.js
@@ -48,6 +48,8 @@ class CycleList extends Component{
                                     "Lofar Observing Time Commissioning (Hrs)" : "filter-input-75",
                                     "Lofar Observing Time Prio A (Hrs)" : "filter-input-75",
                                     "Lofar Observing Time Prio B (Hrs)" : "filter-input-75" }];
+                                     
+        this.defaultSortColumn = [{id: "Cycle Code", desc: false}];                          
     }
 
     getUnitConvertedQuotaValue(cycle, cycleQuota, resourceName) {
@@ -134,6 +136,7 @@ class CycleList extends Component{
                         defaultcolumns={this.defaultcolumns} 
                         optionalcolumns={this.optionalcolumns}
                         columnclassname = {this.columnclassname}
+                        defaultSortColumn= {this.defaultSortColumn}
                         showaction="true"
                         paths={this.state.paths}
                  />  : <></>
diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Project/list.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Project/list.js
index af3869b13dd..ae9cc4c088c 100644
--- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Project/list.js
+++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Project/list.js
@@ -46,6 +46,7 @@ export class ProjectList extends Component{
                 "Category of Period":"filter-input-50",
                 "Cycles":"filter-input-100",
             }],
+            defaultSortColumn: [{id: "Name / Project Code", desc: true}],
             isprocessed: false,
             isLoading: true
         }
@@ -86,6 +87,7 @@ export class ProjectList extends Component{
                         defaultcolumns={this.state.defaultcolumns} 
                         optionalcolumns={this.state.optionalcolumns}
                         columnclassname={this.state.columnclassname}
+                        defaultSortColumn={this.state.defaultSortColumn}
                         showaction="true"
                         paths={this.state.paths}
                         keyaccessor="name"
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 a3ec244ea83..bd8083bd60f 100644
--- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/SchedulingUnitList.js
+++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/SchedulingUnitList.js
@@ -35,7 +35,8 @@ class SchedulingUnitList extends Component{
                 "Template":"filter-input-50",
                 "Duration":"filter-input-50",
                 "Type": "filter-input-75"
-            }]
+            }],
+            defaultSortColumn: [{id: "Type", desc: true},{id: "Created Date", desc: false}],
         }
     }
     
@@ -93,6 +94,7 @@ class SchedulingUnitList extends Component{
                         defaultcolumns={this.state.defaultcolumns} 
                         optionalcolumns={this.state.optionalcolumns}
                         columnclassname={this.state.columnclassname}
+                        defaultSortColumn={this.state.defaultSortColumn}
                         showaction="true"
                         keyaccessor="id"
                         paths={this.state.paths}
diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/ViewSchedulingUnit.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/ViewSchedulingUnit.js
index 2a33a72b8c5..2af9ef7509e 100644
--- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/ViewSchedulingUnit.js
+++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/ViewSchedulingUnit.js
@@ -40,7 +40,6 @@ class ViewSchedulingUnit extends Component{
                 "url":"URL",
                 "actionpath":"actionpath",
             }],
-
             columnclassname: [{
                 "Type":"filter-input-75",
                 "ID":"filter-input-50",
@@ -50,7 +49,8 @@ class ViewSchedulingUnit extends Component{
                 "BluePrint / Task Draft link": "filter-input-100",
                 "Relative Start Time (HH:mm:ss)": "filter-input-75",
                 "Relative End Time (HH:mm:ss)": "filter-input-75",
-            }]
+            }],
+            defaultSortColumn: [{id: "Name", desc: true}],
         }
     }
 
@@ -150,6 +150,7 @@ class ViewSchedulingUnit extends Component{
                         defaultcolumns={this.state.defaultcolumns}
                         optionalcolumns={this.state.optionalcolumns}
                         columnclassname={this.state.columnclassname}
+                        defaultSortColumn={this.state.defaultSortColumn}
                         showaction="true"
                         keyaccessor="id"
                         paths={this.state.paths}
-- 
GitLab