From 3961e251ca8f5e0dfb83e0f41574364d25de1f1f Mon Sep 17 00:00:00 2001 From: Risto Lahtela <24460436+AuroraLS3@users.noreply.github.com> Date: Fri, 23 Apr 2021 09:29:44 +0300 Subject: [PATCH] Sort Extension dates formatted MMM d yyyy, HH:mm Since data tables supports sorting by value and it is possible to parse using the same formatter that the extensions use, it is possible to support sorting by dates. Affects issues: - Fixed #1305 --- .../html/structure/DynamicHtmlTable.java | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/Plan/common/src/main/java/com/djrapitops/plan/delivery/rendering/html/structure/DynamicHtmlTable.java b/Plan/common/src/main/java/com/djrapitops/plan/delivery/rendering/html/structure/DynamicHtmlTable.java index 462f6a3ac..19f5cb1f3 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/delivery/rendering/html/structure/DynamicHtmlTable.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/delivery/rendering/html/structure/DynamicHtmlTable.java @@ -18,12 +18,16 @@ package com.djrapitops.plan.delivery.rendering.html.structure; import com.djrapitops.plan.extension.table.Table; +import java.text.ParseException; +import java.text.SimpleDateFormat; import java.util.List; public class DynamicHtmlTable implements HtmlTable { private final Header[] headers; private final List rows; + private final SimpleDateFormat dateFormat = new SimpleDateFormat("MMM d yyyy, HH:mm"); + public DynamicHtmlTable(Header[] headers, List rows) { this.headers = headers; this.rows = rows; @@ -76,9 +80,7 @@ public class DynamicHtmlTable implements HtmlTable { if (i > headerLength) { builtBody.append("-"); } else { - builtBody.append(""); - Object value = row[i]; - builtBody.append(value != null ? value : '-'); + appendValue(builtBody, row[i]); } builtBody.append(""); } catch (ClassCastException | ArrayIndexOutOfBoundsException e) { @@ -87,4 +89,14 @@ public class DynamicHtmlTable implements HtmlTable { } builtBody.append(""); } + + private void appendValue(StringBuilder builtBody, Object value) { + String valueString = value != null ? value.toString() : "-"; + try { + long time = dateFormat.parse(valueString).getTime(); + builtBody.append("").append(valueString); + } catch (ParseException e) { + builtBody.append("").append(valueString); + } + } }