diff --git a/Projects/Governance/UI/Spaces/Reports-Space/ReportsSpace.js b/Projects/Governance/UI/Spaces/Reports-Space/ReportsSpace.js index cc938184b..e295028ea 100644 --- a/Projects/Governance/UI/Spaces/Reports-Space/ReportsSpace.js +++ b/Projects/Governance/UI/Spaces/Reports-Space/ReportsSpace.js @@ -67,12 +67,7 @@ function newGobernanceReportsSpace() { setupSidePanelTab() - thisObject.tablesSortingOrders = { - userProfiles: { - property: 'name', - order: 'ascending' - } - } + thisObject.tablesSortingOrders = {} isInitialized = true @@ -133,7 +128,9 @@ function newGobernanceReportsSpace() { } function changeTableSortingOrder(table, property, order){ - + thisObject.tablesSortingOrders[table].property = property + thisObject.tablesSortingOrders[table].order = order + thisObject.reportsPage.render() } function onOpening() { diff --git a/Projects/Governance/UI/Spaces/Reports-Space/UserProfiles.js b/Projects/Governance/UI/Spaces/Reports-Space/UserProfiles.js index ad2392e14..e2f113926 100644 --- a/Projects/Governance/UI/Spaces/Reports-Space/UserProfiles.js +++ b/Projects/Governance/UI/Spaces/Reports-Space/UserProfiles.js @@ -21,32 +21,42 @@ function newGovernanceReportsUserProfiles() { thisObject.resultCounter = 0 let HTML = '' let tableRecords = [] + let table = 'userProfiles' let tableRecordDefinition = { "properties": [ { "name": "name", "label": "Name", - "type": "string" + "type": "string", + "order": "ascending" }, { "name": "blockchainPower", "label": "Blockchain Power", - "type": "number" + "type": "number", + "order": "descending" }, { "name": "delegatedPower", "label": "Name", - "type": "number" + "type": "number", + "order": "descending" }, { "name": "tokenPower", "label": "Token Power", - "type": "number" + "type": "number", + "order": "descending" } ] } + /* + Here we get from the workspace all the nodes representing User Profiles. + */ let resultsArary = UI.projects.foundations.spaces.designSpace.workspace.getHierarchyHeadsByNodeType('User Profile') - + /* + Transform the result array into table records. + */ for (let j = 0; j < resultsArary.length; j++) { let node = resultsArary[j] @@ -59,13 +69,24 @@ function newGovernanceReportsUserProfiles() { tableRecords.push(tableRecord) } - /* - Apply the sorting order for this table. + Get the sorting order for this table. + */ + let sortingOrder = UI.projects.governance.spaces.reportsSpace.tablesSortingOrders[table] + /* + Set the default sorting order for this table. + */ + if (sortingOrder === undefined) { + UI.projects.governance.spaces.reportsSpace.tablesSortingOrders[table] = { + property: 'name', + order: 'ascending' + } + sortingOrder = UI.projects.governance.spaces.reportsSpace.tablesSortingOrders[table] + } + /* + Get the property type for the current sorting order. */ - let sortingOrder = UI.projects.governance.spaces.reportsSpace.tablesSortingOrders['userProfiles'] let propertyType - for (let i = 0; i < tableRecordDefinition.properties.length; i++) { let property = tableRecordDefinition.properties[i] if (property.name === sortingOrder.property) { @@ -73,7 +94,9 @@ function newGovernanceReportsUserProfiles() { break } } - + /* + Apply the sorting order for this table. + */ switch (propertyType) { case 'string': { switch (sortingOrder.order) { @@ -103,6 +126,9 @@ function newGovernanceReportsUserProfiles() { } } + /* + Build the HTML + */ let odd = false HTML = HTML + '' @@ -110,7 +136,31 @@ function newGovernanceReportsUserProfiles() { HTML = HTML + '' for (let i = 0; i < tableRecordDefinition.properties.length; i++) { let property = tableRecordDefinition.properties[i] - HTML = HTML + '' + let newOrder + /* + If the property is the one defining the order, then the new order will be + the opossite order. + */ + if (property.name === sortingOrder.property) { + if (sortingOrder.order === 'ascending') { + newOrder = 'descending' + } else { + newOrder = 'ascending' + } + } else { + /* + If the property is not the current defininf the order, then the new order will + be the default order for that property. + */ + for (let i = 0; i < tableRecordDefinition.properties.length; i++) { + let propertyDefinition = tableRecordDefinition.properties[i] + if (property.name === propertyDefinition.name) { + newOrder = propertyDefinition.order + break + } + } + } + HTML = HTML + '' } HTML = HTML + '' HTML = HTML + ''
' + '' + property.label + '' + '' + '' + property.label + '' + '