From 5445044f5072a396ebe9f11756e27818ab9500a3 Mon Sep 17 00:00:00 2001 From: Vasileios Pasialiokis <whiterocket@outlook.com> Date: Tue, 10 Jul 2018 15:46:26 +0300 Subject: [PATCH] port slavesort --- TODO.txt | 11 ++++++++ src/js/assayJS.tw | 55 +++++++++++++++++++++++++++++++++++++ src/utility/miscWidgets.tw | 56 ++++---------------------------------- 3 files changed, 71 insertions(+), 51 deletions(-) diff --git a/TODO.txt b/TODO.txt index b7c5a96afd2..a8ce562749c 100644 --- a/TODO.txt +++ b/TODO.txt @@ -17,3 +17,14 @@ Rules Assistant: main.tw porting: - slaveart +- createsimpletabs +- displaybuilding +- optionssortasappearsonmain +- resetassignmentfilter +- mainlinks +- arcology description +- office description +- slave summary +- use guard +- toychest +- walk past diff --git a/src/js/assayJS.tw b/src/js/assayJS.tw index 849a5e217dd..9a03663c6dc 100644 --- a/src/js/assayJS.tw +++ b/src/js/assayJS.tw @@ -777,3 +777,58 @@ window.SlaveTitle = function SlaveTitle(slave) { } return r; }; + +window.SlaveSort = function SlaveSort(slaves, main=false) { + const V = State.variables; + if (main) { + switch (V.sortSlavesBy) { + case "name": + if (V.sortSlavesOrder == "ascending") + slaves = slaves.sort((a, b) => a.slaveName < b.slaveName ? -1 : 1); + else + slaves = slaves.sort((a, b) => a.slaveName > b.slaveName ? -1 : 1); + break; + case "assignment": + if (V.sortSlavesOrder == "ascending") + slaves = slaves.sort((a, b) => a.assignment < b.assignment ? -1 : 1); + else + slaves = slaves.sort((a, b) => a.assignment > b.assignment ? -1 : 1); + break; + case "seniority": + if (V.sortSlavesOrder == "ascending") + slaves = slaves.sort((a, b) => b.weekAcquired - a.weekAcquired); + else + slaves = slaves.sort((a, b) => a.weekAcquired - b.weekAcquired); + break; + case "actualAge": + if (V.sortSlavesOrder == "ascending") + slaves = slaves.sort((a, b) => a.actualAge - b.actualAge); + else + slaves = slaves.sort((a, b) => b.actualAge - a.actualAge); + break; + case "visualAge": + if (V.sortSlavesOrder == "ascending") + slaves = slaves.sort((a, b) => a.visualAge - b.visualAge); + else + slaves = slaves.sort((a, b) => b.visualAge - a.visualAge); + break; + case "physicalAge": + if (V.sortSlavesOrder == "physicalAge") + slaves = slaves.sort((a, b) => a.physicalAge - b.physicalAge); + else + slaves = slaves.sort((a, b) => b.physicalAge - a.physicalAge); + break; + default: + if (V.sortSlavesOrder == "ascending") + slaves = slaves.sort((a, b) => a.devotion - b.devotion); + else + slaves = slaves.sort((a, b) => b.devotion - a.devotion); + break; + } + V.slaveIndices = slaves2indices(); + } else { + V.slaveIndices = slaves2indices(); + filterInPlace(slaves, s => V.slaveIndices[s] !== undefined); + slaves.sort((a, b) => V.slaveIndices[a] - V.slaveIndices[b]); + } +}; diff --git a/src/utility/miscWidgets.tw b/src/utility/miscWidgets.tw index 2460d62eadb..0d44b849ef3 100644 --- a/src/utility/miscWidgets.tw +++ b/src/utility/miscWidgets.tw @@ -1544,57 +1544,11 @@ This experience $args[0]: array to sort %/ <<widget "SlaveSort">> -<<if passage() == "Main">> - <<switch $sortSlavesBy>> - <<case "name">> - <<if ($sortSlavesOrder == "ascending")>> - <<set $args[0] = $args[0].sort(function(a, b){if(a.slaveName < b.slaveName) return -1; if(a.slaveName > b.slaveName) return 1; return 0;})>> - <<else>> - <<set $args[0] = $args[0].sort(function(a, b){if(a.slaveName > b.slaveName) return -1; if(a.slaveName < b.slaveName) return 1; return 0;})>> - <</if>> - <<case "assignment">> - <<if ($sortSlavesOrder == "ascending")>> - <<set $args[0] = $args[0].sort(function(a, b){if(a.assignment < b.assignment) return -1; if(a.assignment > b.assignment) return 1; return 0;})>> - <<else>> - <<set $args[0] = $args[0].sort(function(a, b){if(a.assignment > b.assignment) return -1; if(a.assignment < b.assignment) return 1; return 0;})>> - <</if>> - <<case "seniority">> - <<if ($sortSlavesOrder == "ascending")>> - <<set $args[0] = $args[0].sort(function(a, b){return b.weekAcquired-a.weekAcquired})>> - <<else>> - <<set $args[0] = $args[0].sort(function(a, b){return a.weekAcquired-b.weekAcquired})>> - <</if>> - <<case "actualAge">> - <<if ($sortSlavesOrder == "ascending")>> - <<set $args[0] = $args[0].sort(function(a, b){return a.actualAge-b.actualAge})>> - <<else>> - <<set $args[0] = $args[0].sort(function(a, b){return b.actualAge-a.actualAge})>> - <</if>> - <<case "visualAge">> - <<if ($sortSlavesOrder == "ascending")>> - <<set $args[0] = $args[0].sort(function(a, b){return a.visualAge-b.visualAge})>> - <<else>> - <<set $args[0] = $args[0].sort(function(a, b){return b.visualAge-a.visualAge})>> - <</if>> - <<case "physicalAge">> - <<if ($sortSlavesOrder == "physicalAge")>> - <<set $args[0] = $args[0].sort(function(a, b){return a.physicalAge-b.physicalAge})>> - <<else>> - <<set $args[0] = $args[0].sort(function(a, b){return b.physicalAge-a.physicalAge})>> - <</if>> - <<default>> - <<if ($sortSlavesOrder == "ascending")>> - <<set $args[0] = $args[0].sort(function(a, b){return a.devotion-b.devotion})>> - <<else>> - <<set $args[0] = $args[0].sort(function(a, b){return b.devotion-a.devotion})>> - <</if>> - <</switch>> - <<set $slaveIndices = slaves2indices()>> -<<else>> - <<set $slaveIndices = slaves2indices()>> - <<set filterInPlace($args[0], function(s) { return $slaveIndices[s] !== undefined; })>> - <<set $args[0].sort(function(a, b) { return $slaveIndices[a] - $slaveIndices[b]; })>> -<</if>> + <<if passage() == "Main">> + <<run SlaveSort($args[0], true)>> + <<else>> + <<run SlaveSort($args[0])>> + <</if>> <</widget>> /% -- GitLab