From 040f1805e0d81fb2433159970ed818dc52a4c7a4 Mon Sep 17 00:00:00 2001
From: Oliver <oliver.henry.walters@gmail.com>
Date: Mon, 28 Feb 2022 16:13:08 +1100
Subject: [PATCH] Pass dates displayed in front-end tables through the date
 formatter

---
 .../templates/js/translated/attachment.js     |  3 +++
 InvenTree/templates/js/translated/build.js    |  9 +++++++++
 InvenTree/templates/js/translated/order.js    | 19 +++++++++++++++++--
 InvenTree/templates/js/translated/stock.js    | 18 ++++++++++--------
 4 files changed, 39 insertions(+), 10 deletions(-)

diff --git a/InvenTree/templates/js/translated/attachment.js b/InvenTree/templates/js/translated/attachment.js
index 44061403fa..858ca8bd84 100644
--- a/InvenTree/templates/js/translated/attachment.js
+++ b/InvenTree/templates/js/translated/attachment.js
@@ -165,6 +165,9 @@ function loadAttachmentTable(url, options) {
             {
                 field: 'upload_date',
                 title: '{% trans "Upload Date" %}',
+                formatter: function(value) {
+                    return renderDate(value);
+                }
             },
             {
                 field: 'actions',
diff --git a/InvenTree/templates/js/translated/build.js b/InvenTree/templates/js/translated/build.js
index fb8b870fad..1272670f7b 100644
--- a/InvenTree/templates/js/translated/build.js
+++ b/InvenTree/templates/js/translated/build.js
@@ -1961,6 +1961,9 @@ function loadBuildTable(table, options) {
                 field: 'creation_date',
                 title: '{% trans "Created" %}',
                 sortable: true,
+                formatter: function(value) {
+                    return renderDate(value);
+                }
             },
             {
                 field: 'issued_by',
@@ -1990,11 +1993,17 @@ function loadBuildTable(table, options) {
                 field: 'target_date',
                 title: '{% trans "Target Date" %}',
                 sortable: true,
+                formatter: function(value) {
+                    return renderDate(value);
+                }
             },
             {
                 field: 'completion_date',
                 title: '{% trans "Completion Date" %}',
                 sortable: true,
+                formatter: function(value) {
+                    return renderDate(value);
+                }
             },
         ],
     });
diff --git a/InvenTree/templates/js/translated/order.js b/InvenTree/templates/js/translated/order.js
index 008091bf15..1f5306b7f8 100644
--- a/InvenTree/templates/js/translated/order.js
+++ b/InvenTree/templates/js/translated/order.js
@@ -848,11 +848,17 @@ function loadPurchaseOrderTable(table, options) {
                 field: 'creation_date',
                 title: '{% trans "Date" %}',
                 sortable: true,
+                formatter: function(value) {
+                    return renderDate(value);
+                }
             },
             {
                 field: 'target_date',
                 title: '{% trans "Target Date" %}',
                 sortable: true,
+                formatter: function(value) {
+                    return renderDate(value);
+                }
             },
             {
                 field: 'line_items',
@@ -1269,16 +1275,25 @@ function loadSalesOrderTable(table, options) {
                 sortable: true,
                 field: 'creation_date',
                 title: '{% trans "Creation Date" %}',
+                formatter: function(value) {
+                    return renderDate(value);
+                }
             },
             {
                 sortable: true,
                 field: 'target_date',
                 title: '{% trans "Target Date" %}',
+                formatter: function(value) {
+                    return renderDate(value);
+                }
             },
             {
                 sortable: true,
                 field: 'shipment_date',
                 title: '{% trans "Shipment Date" %}',
+                formatter: function(value) {
+                    return renderDate(value);
+                }
             },
             {
                 sortable: true,
@@ -1430,9 +1445,9 @@ function loadSalesOrderShipmentTable(table, options={}) {
                 sortable: true,
                 formatter: function(value, row) {
                     if (value) {
-                        return value;
+                        return renderDate(value);
                     } else {
-                        return '{% trans "Not shipped" %}';
+                        return '<em>{% trans "Not shipped" %}</em>';
                     }
                 }
             },
diff --git a/InvenTree/templates/js/translated/stock.js b/InvenTree/templates/js/translated/stock.js
index 2d84f11e4a..327dd0ab71 100644
--- a/InvenTree/templates/js/translated/stock.js
+++ b/InvenTree/templates/js/translated/stock.js
@@ -1820,6 +1820,9 @@ function loadStockTable(table, options) {
     col = {
         field: 'stocktake_date',
         title: '{% trans "Stocktake" %}',
+        formatter: function(value) {
+            return renderDate(value);
+        }
     };
 
     if (!options.params.ordering) {
@@ -1833,6 +1836,9 @@ function loadStockTable(table, options) {
         title: '{% trans "Expiry Date" %}',
         visible: global_settings.STOCK_ENABLE_EXPIRY,
         switchable: global_settings.STOCK_ENABLE_EXPIRY,
+        formatter: function(value) {
+            return renderDate(value);
+        }
     };
 
     if (!options.params.ordering) {
@@ -1844,6 +1850,9 @@ function loadStockTable(table, options) {
     col = {
         field: 'updated',
         title: '{% trans "Last Updated" %}',
+        formatter: function(value) {
+            return renderDate(value);
+        }
     };
 
     if (!options.params.ordering) {
@@ -2649,14 +2658,7 @@ function loadStockTrackingTable(table, options) {
         title: '{% trans "Date" %}',
         sortable: true,
         formatter: function(value) {
-            var m = moment(value);
-
-            if (m.isValid()) {
-                var html = m.format('dddd MMMM Do YYYY'); // + '<br>' + m.format('h:mm a');
-                return html;
-            }
-
-            return '<i>{% trans "Invalid date" %}</i>';
+            return renderDate(value);
         }
     });