From 742f0c14c03cff7df585b681522551cceed0a879 Mon Sep 17 00:00:00 2001
From: Pithon Kabiro <pithon.kabiro@hft-stuttgart.de>
Date: Fri, 22 Oct 2021 18:34:56 +0200
Subject: [PATCH] New function: abbreviate temp phenomenon name

... for use in the y-axis text of charts
---
 public/js/src_modules/chartColumn.mjs      |  3 ++-
 public/js/src_modules/chartHelpers.mjs     | 26 ++++++++++++++++++++++
 public/js/src_modules/chartScatterPlot.mjs |  3 ++-
 3 files changed, 30 insertions(+), 2 deletions(-)

diff --git a/public/js/src_modules/chartColumn.mjs b/public/js/src_modules/chartColumn.mjs
index 1608f4a..d971746 100644
--- a/public/js/src_modules/chartColumn.mjs
+++ b/public/js/src_modules/chartColumn.mjs
@@ -5,6 +5,7 @@ import {
   createFullTitleForLineOrColumnChart,
   createCombinedTextDelimitedByComma,
   createSubtitleForChart,
+  abbreviateTemperaturePhenomenonNames,
   createTooltipDateString,
 } from "./chartHelpers.mjs";
 
@@ -148,7 +149,7 @@ const drawColumnChartHighcharts = function (
   const textChartSubtitle = createSubtitleForChart(datastreamNamesArr);
 
   const textYAxisTitle = createYAxisTitleTextColumnChart(
-    phenomenonNamesArr,
+    abbreviateTemperaturePhenomenonNames(phenomenonNamesArr),
     unitOfMeasurementSymbolsArr
   );
 
diff --git a/public/js/src_modules/chartHelpers.mjs b/public/js/src_modules/chartHelpers.mjs
index 1ef5745..0c633b3 100644
--- a/public/js/src_modules/chartHelpers.mjs
+++ b/public/js/src_modules/chartHelpers.mjs
@@ -352,6 +352,31 @@ const createSubtitleForHeatmap = function (datastreamNamesArr) {
   )}`;
 };
 
+/**
+ * Abbreviate temperature phenomenon names for use in chart y-axis title strings where space is limited
+ *
+ * @param {Array} phenomenonNamesArr An array of phenomenon name strings
+ * @returns {Array} An array that contains abbreviated temperature phenomenon strings
+ */
+const abbreviateTemperaturePhenomenonNames = function (phenomenonNamesArr) {
+  // We're interested in phenomenon names that contain the substrings
+  // `temperature` or `Temperature`
+  return phenomenonNamesArr.map((phenomenonName) => {
+    // Case 1: Temperature phenomenon name string variant 1
+    if (phenomenonName.includes("temperature")) {
+      return phenomenonName.replace("temperature", "temp.");
+    }
+    // Case 2: Temperature phenomenon name string variant 2
+    else if (phenomenonName.includes("Temperature")) {
+      return phenomenonName.replace("Temperature", "Temp.");
+    }
+    // Case 3: The other phenomenon name strings
+    else {
+      return phenomenonName;
+    }
+  });
+};
+
 /**
  * Creates a date string that is used in a shared tooltip for a line or column chart
  * @param {Number} pointXAxisValue The x-axis value (Unix timestamp) which is common for a set of data points
@@ -389,6 +414,7 @@ export {
   createTitleForHeatmap,
   createSubtitleForChart,
   createSubtitleForHeatmap,
+  abbreviateTemperaturePhenomenonNames,
   createTooltipDateString,
   convertHexColorToRGBColor,
   removeTransparencyFromColor,
diff --git a/public/js/src_modules/chartScatterPlot.mjs b/public/js/src_modules/chartScatterPlot.mjs
index e10275b..1919537 100644
--- a/public/js/src_modules/chartScatterPlot.mjs
+++ b/public/js/src_modules/chartScatterPlot.mjs
@@ -6,6 +6,7 @@ import {
   convertHexColorToRGBColor,
   createCombinedTextDelimitedByAmpersand,
   createCombinedTextDelimitedByComma,
+  abbreviateTemperaturePhenomenonNames,
   createSubtitleForChart,
   removeTransparencyFromColor,
 } from "./chartHelpers.mjs";
@@ -211,7 +212,7 @@ const drawScatterPlotHighcharts = function (
   );
 
   const Y_AXIS_TITLE = createYAxisTitleTextScatterPlot(
-    phenomenonNamesArr,
+    abbreviateTemperaturePhenomenonNames(phenomenonNamesArr),
     unitOfMeasurementSymbolsArr
   );
 
-- 
GitLab