You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by mi...@apache.org on 2023/08/16 14:01:26 UTC

[superset] 01/04: fix: Calendar Heatmap day offset (#24989)

This is an automated email from the ASF dual-hosted git repository.

michaelsmolina pushed a commit to branch 3.0
in repository https://gitbox.apache.org/repos/asf/superset.git

commit 3ffc5b69f8e8f37f2949f8d41884ebfb81321bbc
Author: Michael S. Molina <70...@users.noreply.github.com>
AuthorDate: Tue Aug 15 13:35:35 2023 -0300

    fix: Calendar Heatmap day offset (#24989)
    
    (cherry picked from commit 025e4d4772e778097da7b9e1675782b73eaa887c)
---
 .../src/vendor/cal-heatmap.js                           | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)

diff --git a/superset-frontend/plugins/legacy-plugin-chart-calendar/src/vendor/cal-heatmap.js b/superset-frontend/plugins/legacy-plugin-chart-calendar/src/vendor/cal-heatmap.js
index 760bf0ce2b..482a315392 100644
--- a/superset-frontend/plugins/legacy-plugin-chart-calendar/src/vendor/cal-heatmap.js
+++ b/superset-frontend/plugins/legacy-plugin-chart-calendar/src/vendor/cal-heatmap.js
@@ -296,8 +296,21 @@ var CalHeatMap = function () {
     // Used mainly to convert the datas if they're not formatted like expected
     // Takes the fetched "data" object as argument, must return a json object
     // formatted like {timestamp:count, timestamp2:count2},
-    afterLoadData: function (data) {
-      return data;
+    afterLoadData: function (timestamps) {
+      // See https://github.com/wa0x6e/cal-heatmap/issues/126#issuecomment-373301803
+      const stdTimezoneOffset = date => {
+        const jan = new Date(date.getFullYear(), 0, 1);
+        const jul = new Date(date.getFullYear(), 6, 1);
+        return Math.max(jan.getTimezoneOffset(), jul.getTimezoneOffset());
+      };
+      const offset = stdTimezoneOffset(new Date()) * 60;
+      let results = {};
+      for (let timestamp in timestamps) {
+        const value = timestamps[timestamp];
+        timestamp = parseInt(timestamp, 10);
+        results[timestamp + offset] = value;
+      }
+      return results;
     },
 
     // Callback triggered after calling and completing update().