table ordering working

This commit is contained in:
Luis Fernando Molina committed 2021-07-14 17:54:24 +02:00
1 parent 35f4d49289
commit 0358d48454
2 files changed
+65 -18

No files matched your search

@@ -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() {
@@ -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 + '<table class="governance-info-table">'
@@ -110,7 +136,31 @@ function newGovernanceReportsUserProfiles() {
HTML = HTML + '<tr>'
for (let i = 0; i < tableRecordDefinition.properties.length; i++) {
let property = tableRecordDefinition.properties[i]
HTML = HTML + '<th>' + '<a href="#" onClick="UI.projects.governance.spaces.reportsSpace.changeTableSortingOrder(\'' + property.name + '\')">' + property.label + '</a>' + '</th>'
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 + '<th>' + '<a href="#" onClick="UI.projects.governance.spaces.reportsSpace.changeTableSortingOrder(\'' + table + '\',\'' + property.name + '\',\'' + newOrder + '\')">' + property.label + '</a>' + '</th>'
}
HTML = HTML + '</tr>'
HTML = HTML + '<thead>'