From 224b0a99945be5b9b1586fde9007a2351ce1849a Mon Sep 17 00:00:00 2001 From: Pasquale Pizzuti Date: Fri, 12 Apr 2024 12:49:20 +0200 Subject: [PATCH 01/10] sorting versions by timestamp --- Taskodrome/files/scripts/data_source.js | 7 +++++-- Taskodrome/files/scripts/dev_page.js | 6 +++--- Taskodrome/files/scripts/status_page.js | 6 +++--- Taskodrome/pages/main.php | 2 +- 4 files changed, 12 insertions(+), 9 deletions(-) diff --git a/Taskodrome/files/scripts/data_source.js b/Taskodrome/files/scripts/data_source.js index 248533c..8abba0f 100644 --- a/Taskodrome/files/scripts/data_source.js +++ b/Taskodrome/files/scripts/data_source.js @@ -175,10 +175,13 @@ var DataSource = (function() { }; function getVersions() { - var ret = [""]; + var ret = [{version:""}]; var versions = document.getElementsByClassName("version"); for (var i = 0; i != versions.length; ++i) { - ret.push(versions[i].getAttribute("value")); + ret.push({ + version: versions[i].getAttribute("value"), + timestamp: versions[i].getAttribute("timestamp") + }); } return ret; }; diff --git a/Taskodrome/files/scripts/dev_page.js b/Taskodrome/files/scripts/dev_page.js index 8598df1..ba857bc 100644 --- a/Taskodrome/files/scripts/dev_page.js +++ b/Taskodrome/files/scripts/dev_page.js @@ -27,7 +27,7 @@ var DevPage = (function() { var versions = DataSource.Inst().Versions(); function versionSorter(a, b) { - if(a > b) return 1; else return -1; + if(a.timestamp > b.timestamp) return 1; else return -1; }; versions.sort(versionSorter); @@ -48,10 +48,10 @@ var DevPage = (function() { function fillGrid(grid, versions, columnHandler, page) { function addVersion(version) { - grid.addBlock(new Block(version, columnHandler, page)); + grid.addBlock(new Block(version.version, columnHandler, page)); function addIssue(issue) { - if (issue.version == version) { + if (issue.version == version.version) { grid.addCard(new Card(issue.id, DataSource.Inst().UserName(issue.handler_id), issue.version, issue.summary, issue.description, issue.severity, issue.priority, issue.priorityCode, issue.reproducibility, issue.updateTime, issue.status, false, m_cardTransferHandler, columnHandler, page)); diff --git a/Taskodrome/files/scripts/status_page.js b/Taskodrome/files/scripts/status_page.js index 5ac397b..ee59da2 100644 --- a/Taskodrome/files/scripts/status_page.js +++ b/Taskodrome/files/scripts/status_page.js @@ -21,7 +21,7 @@ var StatusPage = (function() { var versions = DataSource.Inst().Versions(); function versionSorter(a, b) { - if(a > b) return 1; else return -1; + if(a.timestamp > b.timestamp) return 1; else return -1; }; versions.sort(versionSorter); @@ -42,10 +42,10 @@ var StatusPage = (function() { function fillGrid(grid, versions, columnHandler, page) { function addVersion(version) { - grid.addBlock(new Block(version, columnHandler, page)); + grid.addBlock(new Block(version.version, columnHandler, page)); function addIssue(issue) { - if (issue.version == version) { + if (issue.version == version.version) { var card = new Card(issue.id, DataSource.Inst().UserName(issue.handler_id), issue.version, issue.summary, issue.description, issue.severity, issue.priority, issue.priorityCode, issue.reproducibility, issue.updateTime, issue.status, true, m_cardTransferHandler, columnHandler, page); diff --git a/Taskodrome/pages/main.php b/Taskodrome/pages/main.php index b18f0b3..4a25c56 100644 --- a/Taskodrome/pages/main.php +++ b/Taskodrome/pages/main.php @@ -185,7 +185,7 @@ function write_bug_rows( $p_rows ) $t_versions_cnt = count( $t_versions ); for( $k=0; $k < $t_versions_cnt; $k++ ) { $ver_id = $t_versions[$k]['id']; - print '

'; + print '

'; } print '

'; From 94a5dbc2d7a8614b5fb5ed3bec03a563cd046875 Mon Sep 17 00:00:00 2001 From: Pasquale Pizzuti Date: Fri, 12 Apr 2024 12:53:27 +0200 Subject: [PATCH 02/10] sorting versions by timestamp --- Taskodrome/files/scripts/dev_page.js | 2 +- Taskodrome/files/scripts/status_page.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Taskodrome/files/scripts/dev_page.js b/Taskodrome/files/scripts/dev_page.js index ba857bc..71b2b34 100644 --- a/Taskodrome/files/scripts/dev_page.js +++ b/Taskodrome/files/scripts/dev_page.js @@ -75,7 +75,7 @@ var DevPage = (function() { var oldVersion = card.getVersion(); if (src.m_block != dst.m_block) { - card.setVersion(m_versions[dst.m_block]); + card.setVersion(m_versions[dst.m_block].version); } var oldStatus = card.getStatus(); diff --git a/Taskodrome/files/scripts/status_page.js b/Taskodrome/files/scripts/status_page.js index ee59da2..eeea2e8 100644 --- a/Taskodrome/files/scripts/status_page.js +++ b/Taskodrome/files/scripts/status_page.js @@ -95,7 +95,7 @@ var StatusPage = (function() { var oldVersion = card.getVersion(); if (src.m_block != dst.m_block) { - card.setVersion(m_versions[dst.m_block]); + card.setVersion(m_versions[dst.m_block].version); } if (src.m_column != dst.m_column) { From b9ad632ccf4ec5d7afd5d7449a41903691ad61d0 Mon Sep 17 00:00:00 2001 From: Pasquale Pizzuti Date: Fri, 12 Apr 2024 15:49:44 +0200 Subject: [PATCH 03/10] fix versions --- Taskodrome/files/scripts/dev_page.js | 14 +++++++------- Taskodrome/files/scripts/status_page.js | 14 +++++++------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/Taskodrome/files/scripts/dev_page.js b/Taskodrome/files/scripts/dev_page.js index 71b2b34..50a7dde 100644 --- a/Taskodrome/files/scripts/dev_page.js +++ b/Taskodrome/files/scripts/dev_page.js @@ -25,11 +25,11 @@ var DevPage = (function() { return m_columnHandler.getColumnIndex(card.getOwner()); }; - var versions = DataSource.Inst().Versions(); - function versionSorter(a, b) { + var versions = DataSource.Inst().Versions().sort(function (a, b) { if(a.timestamp > b.timestamp) return 1; else return -1; - }; - versions.sort(versionSorter); + }).map(function (e) { + return e.version; + }); m_cardTransferNotifier = new CardTransferNotifier(); m_cardTransferHandler = new CardTransferHandler(m_cardTransferNotifier); @@ -48,10 +48,10 @@ var DevPage = (function() { function fillGrid(grid, versions, columnHandler, page) { function addVersion(version) { - grid.addBlock(new Block(version.version, columnHandler, page)); + grid.addBlock(new Block(version, columnHandler, page)); function addIssue(issue) { - if (issue.version == version.version) { + if (issue.version == version) { grid.addCard(new Card(issue.id, DataSource.Inst().UserName(issue.handler_id), issue.version, issue.summary, issue.description, issue.severity, issue.priority, issue.priorityCode, issue.reproducibility, issue.updateTime, issue.status, false, m_cardTransferHandler, columnHandler, page)); @@ -75,7 +75,7 @@ var DevPage = (function() { var oldVersion = card.getVersion(); if (src.m_block != dst.m_block) { - card.setVersion(m_versions[dst.m_block].version); + card.setVersion(m_versions[dst.m_block]); } var oldStatus = card.getStatus(); diff --git a/Taskodrome/files/scripts/status_page.js b/Taskodrome/files/scripts/status_page.js index eeea2e8..f228aa0 100644 --- a/Taskodrome/files/scripts/status_page.js +++ b/Taskodrome/files/scripts/status_page.js @@ -19,11 +19,11 @@ var StatusPage = (function() { return m_columnHandler.getColumnIndex(DataSource.Inst().StatusName(card.getStatus())); }; - var versions = DataSource.Inst().Versions(); - function versionSorter(a, b) { + var versions = DataSource.Inst().Versions().sort(function (a, b) { if(a.timestamp > b.timestamp) return 1; else return -1; - }; - versions.sort(versionSorter); + }).map(function (e) { + return e.version; + }); m_cardTransferNotifier = new CardTransferNotifier(); m_cardTransferHandler = new CardTransferHandler(m_cardTransferNotifier); @@ -42,10 +42,10 @@ var StatusPage = (function() { function fillGrid(grid, versions, columnHandler, page) { function addVersion(version) { - grid.addBlock(new Block(version.version, columnHandler, page)); + grid.addBlock(new Block(version, columnHandler, page)); function addIssue(issue) { - if (issue.version == version.version) { + if (issue.version == version) { var card = new Card(issue.id, DataSource.Inst().UserName(issue.handler_id), issue.version, issue.summary, issue.description, issue.severity, issue.priority, issue.priorityCode, issue.reproducibility, issue.updateTime, issue.status, true, m_cardTransferHandler, columnHandler, page); @@ -95,7 +95,7 @@ var StatusPage = (function() { var oldVersion = card.getVersion(); if (src.m_block != dst.m_block) { - card.setVersion(m_versions[dst.m_block].version); + card.setVersion(m_versions[dst.m_block]); } if (src.m_column != dst.m_column) { From c3d25638ba1c0534885af5d90c72d215172dd5b6 Mon Sep 17 00:00:00 2001 From: Pasquale Pizzuti Date: Fri, 12 Apr 2024 17:05:33 +0200 Subject: [PATCH 04/10] fix undefined --- Taskodrome/files/scripts/block/block.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Taskodrome/files/scripts/block/block.js b/Taskodrome/files/scripts/block/block.js index 191535e..1506d9a 100644 --- a/Taskodrome/files/scripts/block/block.js +++ b/Taskodrome/files/scripts/block/block.js @@ -58,9 +58,9 @@ function Block(name, /** @type {ColumnHandler} */columnHandler, /** @type {Page} }; this.setTop = function(top) { + var width = columnHandler.getColumnWidth(); if (this.toBeDrawn()) { m_blockGr.setPos(new Position(0, top + V_OFFSET)); - var width = columnHandler.getColumnWidth(); this.m_bounds = { top : top, bottom : m_blockGr.m_bounds.bottom, left : this.m_bounds.left, right : this.m_bounds.left + width * columnHandler.getColumnNumber() }; for (var i = 0; i != columnHandler.getColumnNumber(); ++i) { var pos = new Position(this.m_bounds.left + width * i, m_blockGr.m_bounds.bottom); From 38704168213ecc9b60fe9d7f67f3cb861b49dce1 Mon Sep 17 00:00:00 2001 From: Pasquale Pizzuti Date: Sat, 13 Apr 2024 09:17:23 +0200 Subject: [PATCH 05/10] visualizzare status board first --- Taskodrome/Taskodrome.php | 1 + Taskodrome/files/scripts/data_source.js | 12 ++++++++++++ Taskodrome/files/scripts/starter.js | 7 ++----- Taskodrome/lang/strings_english.txt | 2 ++ Taskodrome/pages/config.php | 6 ++++++ Taskodrome/pages/config_page.php | 25 +++++++++++++++++++++++++ Taskodrome/pages/main.php | 1 + 7 files changed, 49 insertions(+), 5 deletions(-) diff --git a/Taskodrome/Taskodrome.php b/Taskodrome/Taskodrome.php index 6217b8d..e531a27 100644 --- a/Taskodrome/Taskodrome.php +++ b/Taskodrome/Taskodrome.php @@ -48,6 +48,7 @@ public function config() } return array( + "status_board_first" => false, "status_board_order_default" => $status_list, "status_board_order" => $status_list, "cooldown_period_days" => 14, diff --git a/Taskodrome/files/scripts/data_source.js b/Taskodrome/files/scripts/data_source.js index 8abba0f..36c7dd6 100644 --- a/Taskodrome/files/scripts/data_source.js +++ b/Taskodrome/files/scripts/data_source.js @@ -2,6 +2,7 @@ var DataSource = (function() { var m_inst = null; var m_issues_raw = null; + var m_status_board_first = false; var m_cooldown_period = 0; var m_allowed_statuses_map = null; var m_statuses = null; @@ -49,6 +50,15 @@ var DataSource = (function() { return m_issues_raw; }; + function getStatusBoardFirst() { + var statusBoardFirst = document.getElementById("status_board_first").getAttribute("value") == "1"; + return statusBoardFirst; + }; + + var StatusBoardFirst = function() { + return m_status_board_first; + }; + function getCooldownPeriod() { var cooldownPeriodDays = parseInt(document.getElementById("cooldown_period_days").getAttribute("value"), 10); var cooldownPeriodHours = parseInt(document.getElementById("cooldown_period_hours").getAttribute("value"), 10); @@ -302,6 +312,7 @@ var DataSource = (function() { var CreateInst = function() { m_issues_raw = getIssuesRaw(); + m_status_board_first = getStatusBoardFirst(); m_cooldown_period = getCooldownPeriod(); m_allowed_statuses_map = getStatusesAllowanceMap(); m_status_color_map = getStatusColors(); @@ -317,6 +328,7 @@ var DataSource = (function() { m_dependencies = getDependencies(); return { IssuesRaw: IssuesRaw, + StatusBoardFirst: StatusBoardFirst, CooldownPeriod: CooldownPeriod, IsTransferAllowed: IsTransferAllowed, GetColorOfStatus: GetColorOfStatus, diff --git a/Taskodrome/files/scripts/starter.js b/Taskodrome/files/scripts/starter.js index 4ee7e4a..5d2ded0 100644 --- a/Taskodrome/files/scripts/starter.js +++ b/Taskodrome/files/scripts/starter.js @@ -1,10 +1,7 @@ function pageOnLoad() { - openPage(); - DataSource.Inst(); - + openPage(); initVersionVisibility(); - DevPage.Inst(); StatusPage.Inst(); RelPage.Inst(); @@ -18,7 +15,7 @@ function openPage() { var prevGrid = window.location.href.substr(markIndex + 1, 2); openBoard(prevGrid); } else { - openBoard("dg"); + openBoard(DataSource.Inst().StatusBoardFirst()?"sg":"dg"); } }; diff --git a/Taskodrome/lang/strings_english.txt b/Taskodrome/lang/strings_english.txt index 3630ca6..bd86ecb 100644 --- a/Taskodrome/lang/strings_english.txt +++ b/Taskodrome/lang/strings_english.txt @@ -18,6 +18,8 @@ $s_plugin_Taskodrome_config_title = 'Taskodrome Plugin Configuration'; $s_plugin_Taskodrome_default_value = 'Default value:
%s
'; +$s_plugin_Taskodrome_status_board_first_label = 'Status board view preferred'; + $s_plugin_Taskodrome_status_board_order_label = 'Status board order'; $s_plugin_Taskodrome_cooldown_period_label = 'Cooldown period'; diff --git a/Taskodrome/pages/config.php b/Taskodrome/pages/config.php index 0cf9347..db8a60a 100644 --- a/Taskodrome/pages/config.php +++ b/Taskodrome/pages/config.php @@ -6,6 +6,12 @@ access_ensure_global_level( config_get( 'manage_plugin_threshold' ) ); require_once( config_get( 'plugin_path' ) . 'Taskodrome/core/config_helper.php' ); +$f_status_first = gpc_get_bool( 'status_board_first' ); + +if( plugin_config_get( 'status_board_first', null, false, null, helper_get_current_project() ) != $f_status_first ) { + plugin_config_set( 'status_board_first', $f_status_first, NO_USER, helper_get_current_project() ); +} + $f_status_order = gpc_get_string( 'status_board_order' ); if( plugin_config_get( 'status_board_order', null, false, null, helper_get_current_project() ) != $f_status_order ) { diff --git a/Taskodrome/pages/config_page.php b/Taskodrome/pages/config_page.php index 98b40de..e5fe863 100644 --- a/Taskodrome/pages/config_page.php +++ b/Taskodrome/pages/config_page.php @@ -33,6 +33,31 @@
+ + + + + +
+ + + +
+ + + +
+ + > + +
diff --git a/Taskodrome/pages/main.php b/Taskodrome/pages/main.php index 4a25c56..1094398 100644 --- a/Taskodrome/pages/main.php +++ b/Taskodrome/pages/main.php @@ -190,6 +190,7 @@ function write_bug_rows( $p_rows ) print '

'; print '

'; + print '

'; print '

'; print '

'; print '

'; From 3115f2c04be53af661d2878a4cd942d7b17ed220 Mon Sep 17 00:00:00 2001 From: Pasquale Pizzuti Date: Sat, 13 Apr 2024 09:24:42 +0200 Subject: [PATCH 06/10] =?UTF-8?q?anomalie=20ordinate=20per=20priorit=C3=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Taskodrome/files/scripts/dev_page.js | 4 +++- Taskodrome/files/scripts/status_page.js | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/Taskodrome/files/scripts/dev_page.js b/Taskodrome/files/scripts/dev_page.js index 50a7dde..7c0f55d 100644 --- a/Taskodrome/files/scripts/dev_page.js +++ b/Taskodrome/files/scripts/dev_page.js @@ -57,7 +57,9 @@ var DevPage = (function() { m_cardTransferHandler, columnHandler, page)); } }; - DataSource.Inst().IssuesRaw().forEach(addIssue); + DataSource.Inst().IssuesRaw().sort(function (a, b) { + if(a.priorityCode < b.priorityCode) return 1; else return -1; + }).forEach(addIssue); }; versions.forEach(addVersion); }; diff --git a/Taskodrome/files/scripts/status_page.js b/Taskodrome/files/scripts/status_page.js index f228aa0..b8829c2 100644 --- a/Taskodrome/files/scripts/status_page.js +++ b/Taskodrome/files/scripts/status_page.js @@ -53,7 +53,9 @@ var StatusPage = (function() { grid.addCard(card); } }; - DataSource.Inst().IssuesRaw().forEach(addIssue); + DataSource.Inst().IssuesRaw().sort(function (a, b) { + if(a.priorityCode < b.priorityCode) return 1; else return -1; + }).forEach(addIssue); }; versions.forEach(addVersion); }; From 59ea5059e00a5a00d73d2c94c7a0d50e31f3d924 Mon Sep 17 00:00:00 2001 From: Pasquale Pizzuti Date: Sun, 14 Apr 2024 00:02:51 +0200 Subject: [PATCH 07/10] Improvments - added option to show status board first - sorted versions by timestamp - sorted issues by priority - some bugfixes --- Taskodrome/Taskodrome.php | 1 + Taskodrome/files/scripts/block/block.js | 2 +- Taskodrome/files/scripts/data_source.js | 19 +++++++++++++++++-- Taskodrome/files/scripts/dev_page.js | 14 ++++++++------ Taskodrome/files/scripts/starter.js | 7 ++----- Taskodrome/files/scripts/status_page.js | 14 ++++++++------ Taskodrome/lang/strings_english.txt | 2 ++ Taskodrome/pages/config.php | 6 ++++++ Taskodrome/pages/config_page.php | 25 +++++++++++++++++++++++++ Taskodrome/pages/main.php | 3 ++- 10 files changed, 72 insertions(+), 21 deletions(-) diff --git a/Taskodrome/Taskodrome.php b/Taskodrome/Taskodrome.php index 6217b8d..e531a27 100644 --- a/Taskodrome/Taskodrome.php +++ b/Taskodrome/Taskodrome.php @@ -48,6 +48,7 @@ public function config() } return array( + "status_board_first" => false, "status_board_order_default" => $status_list, "status_board_order" => $status_list, "cooldown_period_days" => 14, diff --git a/Taskodrome/files/scripts/block/block.js b/Taskodrome/files/scripts/block/block.js index 191535e..1506d9a 100644 --- a/Taskodrome/files/scripts/block/block.js +++ b/Taskodrome/files/scripts/block/block.js @@ -58,9 +58,9 @@ function Block(name, /** @type {ColumnHandler} */columnHandler, /** @type {Page} }; this.setTop = function(top) { + var width = columnHandler.getColumnWidth(); if (this.toBeDrawn()) { m_blockGr.setPos(new Position(0, top + V_OFFSET)); - var width = columnHandler.getColumnWidth(); this.m_bounds = { top : top, bottom : m_blockGr.m_bounds.bottom, left : this.m_bounds.left, right : this.m_bounds.left + width * columnHandler.getColumnNumber() }; for (var i = 0; i != columnHandler.getColumnNumber(); ++i) { var pos = new Position(this.m_bounds.left + width * i, m_blockGr.m_bounds.bottom); diff --git a/Taskodrome/files/scripts/data_source.js b/Taskodrome/files/scripts/data_source.js index 248533c..36c7dd6 100644 --- a/Taskodrome/files/scripts/data_source.js +++ b/Taskodrome/files/scripts/data_source.js @@ -2,6 +2,7 @@ var DataSource = (function() { var m_inst = null; var m_issues_raw = null; + var m_status_board_first = false; var m_cooldown_period = 0; var m_allowed_statuses_map = null; var m_statuses = null; @@ -49,6 +50,15 @@ var DataSource = (function() { return m_issues_raw; }; + function getStatusBoardFirst() { + var statusBoardFirst = document.getElementById("status_board_first").getAttribute("value") == "1"; + return statusBoardFirst; + }; + + var StatusBoardFirst = function() { + return m_status_board_first; + }; + function getCooldownPeriod() { var cooldownPeriodDays = parseInt(document.getElementById("cooldown_period_days").getAttribute("value"), 10); var cooldownPeriodHours = parseInt(document.getElementById("cooldown_period_hours").getAttribute("value"), 10); @@ -175,10 +185,13 @@ var DataSource = (function() { }; function getVersions() { - var ret = [""]; + var ret = [{version:""}]; var versions = document.getElementsByClassName("version"); for (var i = 0; i != versions.length; ++i) { - ret.push(versions[i].getAttribute("value")); + ret.push({ + version: versions[i].getAttribute("value"), + timestamp: versions[i].getAttribute("timestamp") + }); } return ret; }; @@ -299,6 +312,7 @@ var DataSource = (function() { var CreateInst = function() { m_issues_raw = getIssuesRaw(); + m_status_board_first = getStatusBoardFirst(); m_cooldown_period = getCooldownPeriod(); m_allowed_statuses_map = getStatusesAllowanceMap(); m_status_color_map = getStatusColors(); @@ -314,6 +328,7 @@ var DataSource = (function() { m_dependencies = getDependencies(); return { IssuesRaw: IssuesRaw, + StatusBoardFirst: StatusBoardFirst, CooldownPeriod: CooldownPeriod, IsTransferAllowed: IsTransferAllowed, GetColorOfStatus: GetColorOfStatus, diff --git a/Taskodrome/files/scripts/dev_page.js b/Taskodrome/files/scripts/dev_page.js index 8598df1..7c0f55d 100644 --- a/Taskodrome/files/scripts/dev_page.js +++ b/Taskodrome/files/scripts/dev_page.js @@ -25,11 +25,11 @@ var DevPage = (function() { return m_columnHandler.getColumnIndex(card.getOwner()); }; - var versions = DataSource.Inst().Versions(); - function versionSorter(a, b) { - if(a > b) return 1; else return -1; - }; - versions.sort(versionSorter); + var versions = DataSource.Inst().Versions().sort(function (a, b) { + if(a.timestamp > b.timestamp) return 1; else return -1; + }).map(function (e) { + return e.version; + }); m_cardTransferNotifier = new CardTransferNotifier(); m_cardTransferHandler = new CardTransferHandler(m_cardTransferNotifier); @@ -57,7 +57,9 @@ var DevPage = (function() { m_cardTransferHandler, columnHandler, page)); } }; - DataSource.Inst().IssuesRaw().forEach(addIssue); + DataSource.Inst().IssuesRaw().sort(function (a, b) { + if(a.priorityCode < b.priorityCode) return 1; else return -1; + }).forEach(addIssue); }; versions.forEach(addVersion); }; diff --git a/Taskodrome/files/scripts/starter.js b/Taskodrome/files/scripts/starter.js index 4ee7e4a..5d2ded0 100644 --- a/Taskodrome/files/scripts/starter.js +++ b/Taskodrome/files/scripts/starter.js @@ -1,10 +1,7 @@ function pageOnLoad() { - openPage(); - DataSource.Inst(); - + openPage(); initVersionVisibility(); - DevPage.Inst(); StatusPage.Inst(); RelPage.Inst(); @@ -18,7 +15,7 @@ function openPage() { var prevGrid = window.location.href.substr(markIndex + 1, 2); openBoard(prevGrid); } else { - openBoard("dg"); + openBoard(DataSource.Inst().StatusBoardFirst()?"sg":"dg"); } }; diff --git a/Taskodrome/files/scripts/status_page.js b/Taskodrome/files/scripts/status_page.js index 5ac397b..b8829c2 100644 --- a/Taskodrome/files/scripts/status_page.js +++ b/Taskodrome/files/scripts/status_page.js @@ -19,11 +19,11 @@ var StatusPage = (function() { return m_columnHandler.getColumnIndex(DataSource.Inst().StatusName(card.getStatus())); }; - var versions = DataSource.Inst().Versions(); - function versionSorter(a, b) { - if(a > b) return 1; else return -1; - }; - versions.sort(versionSorter); + var versions = DataSource.Inst().Versions().sort(function (a, b) { + if(a.timestamp > b.timestamp) return 1; else return -1; + }).map(function (e) { + return e.version; + }); m_cardTransferNotifier = new CardTransferNotifier(); m_cardTransferHandler = new CardTransferHandler(m_cardTransferNotifier); @@ -53,7 +53,9 @@ var StatusPage = (function() { grid.addCard(card); } }; - DataSource.Inst().IssuesRaw().forEach(addIssue); + DataSource.Inst().IssuesRaw().sort(function (a, b) { + if(a.priorityCode < b.priorityCode) return 1; else return -1; + }).forEach(addIssue); }; versions.forEach(addVersion); }; diff --git a/Taskodrome/lang/strings_english.txt b/Taskodrome/lang/strings_english.txt index 3630ca6..bd86ecb 100644 --- a/Taskodrome/lang/strings_english.txt +++ b/Taskodrome/lang/strings_english.txt @@ -18,6 +18,8 @@ $s_plugin_Taskodrome_config_title = 'Taskodrome Plugin Configuration'; $s_plugin_Taskodrome_default_value = 'Default value:
%s
'; +$s_plugin_Taskodrome_status_board_first_label = 'Status board view preferred'; + $s_plugin_Taskodrome_status_board_order_label = 'Status board order'; $s_plugin_Taskodrome_cooldown_period_label = 'Cooldown period'; diff --git a/Taskodrome/pages/config.php b/Taskodrome/pages/config.php index 0cf9347..db8a60a 100644 --- a/Taskodrome/pages/config.php +++ b/Taskodrome/pages/config.php @@ -6,6 +6,12 @@ access_ensure_global_level( config_get( 'manage_plugin_threshold' ) ); require_once( config_get( 'plugin_path' ) . 'Taskodrome/core/config_helper.php' ); +$f_status_first = gpc_get_bool( 'status_board_first' ); + +if( plugin_config_get( 'status_board_first', null, false, null, helper_get_current_project() ) != $f_status_first ) { + plugin_config_set( 'status_board_first', $f_status_first, NO_USER, helper_get_current_project() ); +} + $f_status_order = gpc_get_string( 'status_board_order' ); if( plugin_config_get( 'status_board_order', null, false, null, helper_get_current_project() ) != $f_status_order ) { diff --git a/Taskodrome/pages/config_page.php b/Taskodrome/pages/config_page.php index 98b40de..e5fe863 100644 --- a/Taskodrome/pages/config_page.php +++ b/Taskodrome/pages/config_page.php @@ -33,6 +33,31 @@
+ + + + + +
+ + + +
+ + + +
+ + > + +
diff --git a/Taskodrome/pages/main.php b/Taskodrome/pages/main.php index b18f0b3..1094398 100644 --- a/Taskodrome/pages/main.php +++ b/Taskodrome/pages/main.php @@ -185,11 +185,12 @@ function write_bug_rows( $p_rows ) $t_versions_cnt = count( $t_versions ); for( $k=0; $k < $t_versions_cnt; $k++ ) { $ver_id = $t_versions[$k]['id']; - print '

'; + print '

'; } print '

'; print '

'; + print '

'; print '

'; print '

'; print '

'; From 95ae1b7880815b5479d5cb1975c821c0d76bc784 Mon Sep 17 00:00:00 2001 From: Pasquale Pizzuti Date: Tue, 16 Apr 2024 18:23:57 +0200 Subject: [PATCH 08/10] grid columns number based on device width --- Taskodrome/files/scripts/column_handler.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/Taskodrome/files/scripts/column_handler.js b/Taskodrome/files/scripts/column_handler.js index e9e9e31..b7ca81a 100644 --- a/Taskodrome/files/scripts/column_handler.js +++ b/Taskodrome/files/scripts/column_handler.js @@ -20,7 +20,17 @@ function ColumnHandler(/** @type {Array.} */headers, canvasWidth) { this.getColumnWidth = function() { if (m_columnWidth == 0) { - var MIN_WIDTH = Math.floor(canvasWidth / 7); + var MIN_COL; + if (canvasWidth < 1320) { + MIN_COL = 5; + } else if (canvasWidth < 1540) { + MIN_COL = 6; + } else if (canvasWidth < 1760) { + MIN_COL = 7; + } else { + MIN_COL = 8; + } + var MIN_WIDTH = Math.floor(canvasWidth / MIN_COL); if (this.getColumnNumber() != 0) { m_columnWidth = Math.max(Math.floor(canvasWidth / this.getColumnNumber()), MIN_WIDTH); } else { From 095913c5a448994e87810d781375ca8933729015 Mon Sep 17 00:00:00 2001 From: Pasquale Pizzuti Date: Thu, 18 Apr 2024 15:49:29 +0200 Subject: [PATCH 09/10] fixed rollback on bug update failed --- Taskodrome/files/scripts/dev_page.js | 13 ++++++++++++- Taskodrome/files/scripts/issue_updater.js | 20 +++++++++++++------- Taskodrome/files/scripts/status_page.js | 11 ++++++++++- 3 files changed, 35 insertions(+), 9 deletions(-) diff --git a/Taskodrome/files/scripts/dev_page.js b/Taskodrome/files/scripts/dev_page.js index 7c0f55d..012723d 100644 --- a/Taskodrome/files/scripts/dev_page.js +++ b/Taskodrome/files/scripts/dev_page.js @@ -87,6 +87,7 @@ var DevPage = (function() { card.setStatus(50); } + var oldOwner = card.getOwner(); if (src.m_column != dst.m_column) { card.setOwner(m_columnHandler.getColumnName(dst.m_column)); } @@ -96,7 +97,17 @@ var DevPage = (function() { var data = new IssueData(); data.Init(card.getId(), DataSource.Inst().UserId(card.getOwner()), card.getVersion()); - m_updater.send(data); + m_updater.send(data, function() { + var newVersion = card.getVersion(); + card.setVersion(oldVersion); + var newStatus = card.getStatus(); + card.setStatus(oldStatus); + var newOwner = card.getOwner(); + card.setOwner(oldOwner); + DevPage.Inst().UpdateCard(newVersion, newOwner, card); + StatusPage.Inst().UpdateCard(newVersion, newStatus, card); + RelPage.Inst().UpdateCard(card); + }); }; }; diff --git a/Taskodrome/files/scripts/issue_updater.js b/Taskodrome/files/scripts/issue_updater.js index a170c36..becdec4 100644 --- a/Taskodrome/files/scripts/issue_updater.js +++ b/Taskodrome/files/scripts/issue_updater.js @@ -19,11 +19,11 @@ function IssueData() { function IssueUpdater() { var HTTP_REQUEST_TIMEOUT = 4000; - this.send = function(/** @type {IssueData} */issue_data) { - requestViewPage(issue_data); + this.send = function(/** @type {IssueData} */issue_data, rollback_fn) { + requestViewPage(issue_data, rollback_fn); }; - function requestViewPage(/** @type {IssueData} */issue_data) { + function requestViewPage(/** @type {IssueData} */issue_data, rollback_fn) { var request = new XMLHttpRequest(); var address = getPathToMantisFile(window, "view.php"); address = address + "?id=" + issue_data.m_issue_id; @@ -33,7 +33,7 @@ function IssueUpdater() { function onReadyStateChange() { if (request.readyState == 4 && request.status == 200) { console.log("requestViewPage OK"); - requesBugUpdatePage(request, issue_data); + requesBugUpdatePage(request, issue_data, rollback_fn); } else if (request.readyState == 0 || request.status == 404) { request.onreadystatechange = null; request.abort(); @@ -50,7 +50,7 @@ function IssueUpdater() { request.send(null); }; - function requesBugUpdatePage(requestPrev, /** @type {IssueData} */issue_data) { + function requesBugUpdatePage(requestPrev, /** @type {IssueData} */issue_data, rollback_fn) { var page_text = requestPrev.responseText; var security_token = getValueByName(page_text, "bug_update_page_token"); @@ -63,7 +63,7 @@ function IssueUpdater() { function onReadyStateChange() { if (request.readyState == 4 && request.status == 200) { console.log("requesBugUpdatePage OK"); - requestBugUpdate(request, issue_data); + requestBugUpdate(request, issue_data, rollback_fn); } else if (request.readyState == 0 || request.status == 404) { request.onreadystatechange = null; request.abort(); @@ -82,7 +82,7 @@ function IssueUpdater() { request.send(parameters); }; - function requestBugUpdate(requestPrev, /** @type {IssueData} */issue_data) { + function requestBugUpdate(requestPrev, /** @type {IssueData} */issue_data, rollback_fn) { var page_text = requestPrev.responseText; var security_token = getValueByName(page_text, "bug_update_token"); var last_updated = getValueByName(page_text, "last_updated"); @@ -95,6 +95,12 @@ function IssueUpdater() { function onReadyStateChange() { if (request.readyState == 4 && request.status == 200) { + if (request.responseURL == address) { + console.log("requestBugUpdate failed"); + if (rollback_fn) { + rollback_fn(); + } + } console.log("requestBugUpdate OK"); } else if (request.readyState == 0 || request.status == 404) { request.onreadystatechange = null; diff --git a/Taskodrome/files/scripts/status_page.js b/Taskodrome/files/scripts/status_page.js index b8829c2..475e7f8 100644 --- a/Taskodrome/files/scripts/status_page.js +++ b/Taskodrome/files/scripts/status_page.js @@ -100,6 +100,7 @@ var StatusPage = (function() { card.setVersion(m_versions[dst.m_block]); } + var oldStatus = card.getStatus(); if (src.m_column != dst.m_column) { card.setStatus(DataSource.Inst().StatusId(m_columnHandler.getColumnName(dst.m_column))); } @@ -109,7 +110,15 @@ var StatusPage = (function() { var data = new IssueData(); data.InitWStatus(card.getId(), DataSource.Inst().UserId(card.getOwner()), card.getVersion(), card.getStatus()); - m_updater.send(data); + m_updater.send(data, function() { + var newVersion = card.getVersion(); + card.setVersion(oldVersion); + var newStatus = card.getStatus(); + card.setStatus(oldStatus); + DevPage.Inst().UpdateCard(newVersion, card.getOwner(), card); + StatusPage.Inst().UpdateCard(newVersion, newStatus, card); + RelPage.Inst().UpdateCard(card); + }); }; }; From 39342775bb685dbedb3ae51cd722dbc2e3308d9c Mon Sep 17 00:00:00 2001 From: Pasquale Pizzuti Date: Wed, 24 Apr 2024 11:11:51 +0200 Subject: [PATCH 10/10] added resolution (#3) Co-authored-by: Pasquale Pizzuti --- Taskodrome/files/scripts/issue_updater.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Taskodrome/files/scripts/issue_updater.js b/Taskodrome/files/scripts/issue_updater.js index becdec4..c7056af 100644 --- a/Taskodrome/files/scripts/issue_updater.js +++ b/Taskodrome/files/scripts/issue_updater.js @@ -122,6 +122,10 @@ function IssueUpdater() { + "&last_updated=" + last_updated; if (issue_data.m_status) { parameters += "&status=" + issue_data.m_status; + if (issue_data.m_status == 80) { + parameters += "&resolution=" + 20; + parameters += "&fixed_in_version=" + issue_data.m_version; + } } request.send(parameters); };