diff --git a/Client/WebServer/css/governance.css b/Client/WebServer/css/governance.css index bf76b028c..ec2258bec 100644 --- a/Client/WebServer/css/governance.css +++ b/Client/WebServer/css/governance.css @@ -737,7 +737,7 @@ vertical-align: top; } - .governance-info-table > thead > tr > th { + .governance-info-table > thead > tr > th > a { vertical-align: middle; text-transform: none; background-color: #333; diff --git a/Projects/Governance/UI/Spaces/Reports-Space/ReportsSpace.js b/Projects/Governance/UI/Spaces/Reports-Space/ReportsSpace.js index aaaf1f788..cc938184b 100644 --- a/Projects/Governance/UI/Spaces/Reports-Space/ReportsSpace.js +++ b/Projects/Governance/UI/Spaces/Reports-Space/ReportsSpace.js @@ -7,6 +7,8 @@ function newGobernanceReportsSpace() { reportsPage: undefined, footer: undefined, userProfiles: undefined, + tablesSortingOrders: undefined, + changeTableSortingOrder, physics: physics, draw: draw, getContainer: getContainer, @@ -64,6 +66,13 @@ function newGobernanceReportsSpace() { thisObject.userProfiles.initialize() setupSidePanelTab() + + thisObject.tablesSortingOrders = { + userProfiles: { + property: 'name', + order: 'ascending' + } + } isInitialized = true @@ -123,6 +132,10 @@ function newGobernanceReportsSpace() { } } + function changeTableSortingOrder(table, property, order){ + + } + function onOpening() { thisObject.reportsPage.render() } diff --git a/Projects/Governance/UI/Spaces/Reports-Space/UserProfiles.js b/Projects/Governance/UI/Spaces/Reports-Space/UserProfiles.js index d7b9adb3e..ad2392e14 100644 --- a/Projects/Governance/UI/Spaces/Reports-Space/UserProfiles.js +++ b/Projects/Governance/UI/Spaces/Reports-Space/UserProfiles.js @@ -20,39 +20,104 @@ function newGovernanceReportsUserProfiles() { thisObject.resultCounter = 0 let HTML = '' - let userProfiles = [] + let tableRecords = [] + let tableRecordDefinition = { + "properties": [ + { + "name": "name", + "label": "Name", + "type": "string" + }, + { + "name": "blockchainPower", + "label": "Blockchain Power", + "type": "number" + }, + { + "name": "delegatedPower", + "label": "Name", + "type": "number" + }, + { + "name": "tokenPower", + "label": "Token Power", + "type": "number" + } + ] + } let resultsArary = UI.projects.foundations.spaces.designSpace.workspace.getHierarchyHeadsByNodeType('User Profile') for (let j = 0; j < resultsArary.length; j++) { let node = resultsArary[j] - let userProfile = { + let tableRecord = { "name": node.name, "blockchainPower": node.payload.blockchainTokens, "delegatedPower": node.payload.tokenPower - node.payload.blockchainTokens, "tokenPower": node.payload.tokenPower } - userProfiles.push(userProfile) + tableRecords.push(tableRecord) } - userProfiles.sort((a, b) => (a.name.toLowerCase() > b.name.toLowerCase()) ? 1 : -1) + /* + Apply the sorting order for this table. + */ + 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) { + propertyType = property.type + break + } + } + + switch (propertyType) { + case 'string': { + switch (sortingOrder.order) { + case 'ascending': { + tableRecords.sort((a, b) => (a[sortingOrder.property].toLowerCase() > b[sortingOrder.property].toLowerCase()) ? 1 : -1) + break + } + case 'descending': { + tableRecords.sort((a, b) => (a[sortingOrder.property].toLowerCase() > b[sortingOrder.property].toLowerCase()) ? -1 : 1) + break + } + } + break + } + case 'number': { + switch (sortingOrder.order) { + case 'ascending': { + tableRecords.sort((a, b) => (a[sortingOrder.property] > b[sortingOrder.property]) ? 1 : -1) + break + } + case 'descending': { + tableRecords.sort((a, b) => (a[sortingOrder.property] > b[sortingOrder.property]) ? -1 : 1) + break + } + } + break + } + } let odd = false HTML = HTML + '
| ' + 'Name' + ' | ' - HTML = HTML + '' + 'Blockchain Power' + ' | ' - HTML = HTML + '' + 'Delegated Power' + ' | ' - HTML = HTML + '' + 'Token Power' + ' | ' + for (let i = 0; i < tableRecordDefinition.properties.length; i++) { + let property = tableRecordDefinition.properties[i] + HTML = HTML + '' + '' + property.label + '' + ' | ' + } HTML = HTML + '
|---|---|---|---|---|
| ' + userProfile[property] + ' | ' + for (var property in tableRecord) { + if (Object.prototype.hasOwnProperty.call(tableRecord, property)) { + HTML = HTML + '' + tableRecord[property] + ' | ' } }