diff --git a/public/js/appChart.js b/public/js/appChart.js
index fe5aade993914f1cbd4e6f095002c494bc7deb15..16780a0bc138a362d2fc99acea042bebf494e314 100644
--- a/public/js/appChart.js
+++ b/public/js/appChart.js
@@ -50,12 +50,13 @@ import {
   getAbbreviationsForSelectedOptionsFromAllDropDownLists,
 } from "./src_modules/dropDownListHelpers.mjs";
 
-import {
-  drawHeatmapBasedOnSelectedOptions,
-  drawScatterPlotFromChartSelection,
-  drawLineChartBasedOnSelectedAggregationOptions,
-  drawColumnChartBasedOnSelectedAggregationOptions,
-} from "./src_modules/dropDownListProcessing.mjs";
+import { drawColumnChartBasedOnSelectedAggregationOptions } from "./src_modules/dropDownListChartColumn.mjs";
+
+import { drawHeatmapBasedOnSelectedOptions } from "./src_modules/dropDownListChartHeatmap.mjs";
+
+import { drawLineChartBasedOnSelectedAggregationOptions } from "./src_modules/dropDownListChartLine.mjs";
+
+import { drawScatterPlotFromChartSelection } from "./src_modules/dropDownListChartScatterPlot.mjs";
 
 /**
  * Use the `vanillaDropDown` library to style the buildings & data points drop down list
diff --git a/public/js/src_modules/dropDownListChartColumn.mjs b/public/js/src_modules/dropDownListChartColumn.mjs
new file mode 100644
index 0000000000000000000000000000000000000000..01c35b97dfa6e188387d4c628db0ffc2e6428b79
--- /dev/null
+++ b/public/js/src_modules/dropDownListChartColumn.mjs
@@ -0,0 +1,186 @@
+import { drawColumnChartHighcharts } from "./chartColumn.mjs";
+
+import {
+  calculateAndFormatDailySumObservations,
+  calculateAndFormatMonthlySumObservations,
+  calculateAndFormatDailyMaximumObservations,
+  calculateAndFormatMonthlyMaximumObservations,
+  calculateAndFormatDailyMinimumObservations,
+  calculateAndFormatMonthlyMinimumObservations,
+  calculateAndFormatDailyAverageObservations,
+  calculateAndFormatMonthlyAverageObservations,
+} from "./dropDownListProcessing.mjs";
+
+/**
+ * Draw a column chart based on the selected aggregation options from a drop-down list
+ *
+ * @param {String} selectedAggregationType A string representing the selected aggregation type. The currently supported strings include `Sum`, `Maximum`, `Minimum` and `Average`
+ * @param {String} selectedAggregationDuration A string representing the selected aggregation duration. The currently supported strings include `Daily` and `Monthly`
+ * @param {Array} observationsAggregationNestedArr An array made up of sub-array(s) of aggregated observations
+ * @param {String} selectedSamplingRateAbbrev A string representing the abbreviated form of the selected sampling rate option
+ * @param {Array} uniqueCalendarDatesNestedArr An array made up of sub-array(s) of unique calendar date(s) string(s)
+ * @param {Array} formattedMetadataNestedArr An array of sub-arrays of formatted metadata properties
+ * @returns {undefined} undefined
+ */
+export const drawColumnChartBasedOnSelectedAggregationOptions = function (
+  selectedAggregationTypeArr,
+  selectedAggregationDuration,
+  observationsAggregationNestedArr,
+  selectedSamplingRateAbbrev,
+  uniqueCalendarDatesNestedArr,
+  formattedMetadataNestedArr
+) {
+  if (
+    selectedAggregationTypeArr === "Sum" &&
+    selectedAggregationDuration === "Daily"
+  ) {
+    // Formatted observations and metadata for chart - daily / sum
+    const [
+      formattedObservationsSumDailyNestedArr,
+      extractedFormattedDatastreamProperties,
+    ] = calculateAndFormatDailySumObservations(
+      uniqueCalendarDatesNestedArr,
+      observationsAggregationNestedArr,
+      selectedSamplingRateAbbrev,
+      formattedMetadataNestedArr
+    );
+
+    drawColumnChartHighcharts(
+      formattedObservationsSumDailyNestedArr,
+      extractedFormattedDatastreamProperties
+    );
+  } else if (
+    selectedAggregationTypeArr === "Sum" &&
+    selectedAggregationDuration === "Monthly"
+  ) {
+    // Formatted observations and metadata for chart - monthly / sum
+    const [
+      formattedObservationsSumMonthlyNestedArr,
+      extractedFormattedDatastreamProperties,
+    ] = calculateAndFormatMonthlySumObservations(
+      uniqueCalendarDatesNestedArr,
+      observationsAggregationNestedArr,
+      selectedSamplingRateAbbrev,
+      formattedMetadataNestedArr
+    );
+
+    drawColumnChartHighcharts(
+      formattedObservationsSumMonthlyNestedArr,
+      extractedFormattedDatastreamProperties
+    );
+  } else if (
+    selectedAggregationTypeArr === "Maximum" &&
+    selectedAggregationDuration === "Daily"
+  ) {
+    // Formatted observations and metadata for chart - daily / maximum
+    const [
+      formattedObservationsMaximumDailyNestedArr,
+      extractedFormattedDatastreamProperties,
+    ] = calculateAndFormatDailyMaximumObservations(
+      uniqueCalendarDatesNestedArr,
+      observationsAggregationNestedArr,
+      selectedSamplingRateAbbrev,
+      formattedMetadataNestedArr
+    );
+
+    drawColumnChartHighcharts(
+      formattedObservationsMaximumDailyNestedArr,
+      extractedFormattedDatastreamProperties
+    );
+  } else if (
+    selectedAggregationTypeArr === "Maximum" &&
+    selectedAggregationDuration === "Monthly"
+  ) {
+    // Formatted observations and metadata for chart - monthly / maximum
+    const [
+      formattedObservationsMaximumMonthlyNestedArr,
+      extractedFormattedDatastreamProperties,
+    ] = calculateAndFormatMonthlyMaximumObservations(
+      uniqueCalendarDatesNestedArr,
+      observationsAggregationNestedArr,
+      selectedSamplingRateAbbrev,
+      formattedMetadataNestedArr
+    );
+
+    drawColumnChartHighcharts(
+      formattedObservationsMaximumMonthlyNestedArr,
+      extractedFormattedDatastreamProperties
+    );
+  } else if (
+    selectedAggregationTypeArr === "Minimum" &&
+    selectedAggregationDuration === "Daily"
+  ) {
+    // Formatted observations and metadata for chart - daily / minimum
+    const [
+      formattedObservationsMinimumDailyNestedArr,
+      extractedFormattedDatastreamProperties,
+    ] = calculateAndFormatDailyMinimumObservations(
+      uniqueCalendarDatesNestedArr,
+      observationsAggregationNestedArr,
+      selectedSamplingRateAbbrev,
+      formattedMetadataNestedArr
+    );
+
+    drawColumnChartHighcharts(
+      formattedObservationsMinimumDailyNestedArr,
+      extractedFormattedDatastreamProperties
+    );
+  } else if (
+    selectedAggregationTypeArr === "Minimum" &&
+    selectedAggregationDuration === "Monthly"
+  ) {
+    // Formatted observations and metadata for chart - monthly / minimum
+    const [
+      formattedObservationsMinimumMonthlyNestedArr,
+      extractedFormattedDatastreamProperties,
+    ] = calculateAndFormatMonthlyMinimumObservations(
+      uniqueCalendarDatesNestedArr,
+      observationsAggregationNestedArr,
+      selectedSamplingRateAbbrev,
+      formattedMetadataNestedArr
+    );
+
+    drawColumnChartHighcharts(
+      formattedObservationsMinimumMonthlyNestedArr,
+      extractedFormattedDatastreamProperties
+    );
+  } else if (
+    selectedAggregationTypeArr === "Average" &&
+    selectedAggregationDuration === "Daily"
+  ) {
+    // Formatted observations and metadata for chart - daily / average
+    const [
+      formattedObservationsAverageDailyNestedArr,
+      extractedFormattedDatastreamProperties,
+    ] = calculateAndFormatDailyAverageObservations(
+      uniqueCalendarDatesNestedArr,
+      observationsAggregationNestedArr,
+      selectedSamplingRateAbbrev,
+      formattedMetadataNestedArr
+    );
+
+    drawColumnChartHighcharts(
+      formattedObservationsAverageDailyNestedArr,
+      extractedFormattedDatastreamProperties
+    );
+  } else if (
+    selectedAggregationTypeArr === "Average" &&
+    selectedAggregationDuration === "Monthly"
+  ) {
+    // Formatted observations and metadata for chart - monthly / average
+    const [
+      formattedObservationsAverageMonthlyNestedArr,
+      extractedFormattedDatastreamProperties,
+    ] = calculateAndFormatMonthlyAverageObservations(
+      uniqueCalendarDatesNestedArr,
+      observationsAggregationNestedArr,
+      selectedSamplingRateAbbrev,
+      formattedMetadataNestedArr
+    );
+
+    drawColumnChartHighcharts(
+      formattedObservationsAverageMonthlyNestedArr,
+      extractedFormattedDatastreamProperties
+    );
+  }
+};
diff --git a/public/js/src_modules/dropDownListChartHeatmap.mjs b/public/js/src_modules/dropDownListChartHeatmap.mjs
new file mode 100644
index 0000000000000000000000000000000000000000..d50ae633891f39400c6d6450feca160b3a034b9b
--- /dev/null
+++ b/public/js/src_modules/dropDownListChartHeatmap.mjs
@@ -0,0 +1,32 @@
+import {
+  formatSensorThingsApiResponseForHeatMap,
+  drawHeatMapHighcharts,
+} from "./chartHeatmap.mjs";
+
+/**
+ * Draw a heatmap based on the selected options from a drop-down list
+ *
+ * @param {Array} observationsComboNestedArr An array that contains non-computed (raw) observations and computed (temperature difference, dT) observations
+ * @param {Object} extractedFormattedDatastreamProperties An object that contains array(s) of formatted Datastream properties
+ * @returns {undefined} undefined
+ */
+export const drawHeatmapBasedOnSelectedOptions = function (
+  observationsComboNestedArr,
+  extractedFormattedDatastreamProperties
+) {
+  // Create formatted array of observations
+  const formattedObservationsHeatMapNestedArr = observationsComboNestedArr.map(
+    (observationsArr) =>
+      formatSensorThingsApiResponseForHeatMap(observationsArr)
+  );
+
+  // Note: The resulting array is nested and is not suitable for heatmap,
+  // extract the nested array
+  const [formattedObservationsHeatMapArr] =
+    formattedObservationsHeatMapNestedArr;
+
+  drawHeatMapHighcharts(
+    formattedObservationsHeatMapArr,
+    extractedFormattedDatastreamProperties
+  );
+};
diff --git a/public/js/src_modules/dropDownListChartLine.mjs b/public/js/src_modules/dropDownListChartLine.mjs
new file mode 100644
index 0000000000000000000000000000000000000000..37e22a8d84c7f46e2c627a36d1af376ffdc76b64
--- /dev/null
+++ b/public/js/src_modules/dropDownListChartLine.mjs
@@ -0,0 +1,186 @@
+import { drawLineChartHighcharts } from "./chartLine.mjs";
+
+import {
+  calculateAndFormatDailySumObservations,
+  calculateAndFormatMonthlySumObservations,
+  calculateAndFormatDailyMaximumObservations,
+  calculateAndFormatMonthlyMaximumObservations,
+  calculateAndFormatDailyMinimumObservations,
+  calculateAndFormatMonthlyMinimumObservations,
+  calculateAndFormatDailyAverageObservations,
+  calculateAndFormatMonthlyAverageObservations,
+} from "./dropDownListProcessing.mjs";
+
+/**
+ * Draw a line chart based on the selected aggregation options from a drop-down list
+ *
+ * @param {String} selectedAggregationType A string representing the selected aggregation type. The currently supported strings include `Sum`, `Maximum`, `Minimum` and `Average`
+ * @param {String} selectedAggregationDuration A string representing the selected aggregation duration. The currently supported strings include `Daily` and `Monthly`
+ * @param {Array} observationsAggregationNestedArr An array made up of sub-array(s) of aggregated observations
+ * @param {String} selectedSamplingRateAbbrev A string representing the abbreviated form of the selected sampling rate option
+ * @param {Array} uniqueCalendarDatesNestedArr An array made up of sub-array(s) of unique calendar date(s) string(s)
+ * @param {Array} formattedMetadataNestedArr An array of sub-arrays of formatted metadata properties
+ * @returns {undefined} undefined
+ */
+export const drawLineChartBasedOnSelectedAggregationOptions = function (
+  selectedAggregationType,
+  selectedAggregationDuration,
+  observationsAggregationNestedArr,
+  selectedSamplingRateAbbrev,
+  uniqueCalendarDatesNestedArr,
+  formattedMetadataNestedArr
+) {
+  if (
+    selectedAggregationType === "Sum" &&
+    selectedAggregationDuration === "Daily"
+  ) {
+    // Formatted observations and metadata for chart - daily / sum
+    const [
+      formattedObservationsSumDailyNestedArr,
+      extractedFormattedDatastreamProperties,
+    ] = calculateAndFormatDailySumObservations(
+      uniqueCalendarDatesNestedArr,
+      observationsAggregationNestedArr,
+      selectedSamplingRateAbbrev,
+      formattedMetadataNestedArr
+    );
+
+    drawLineChartHighcharts(
+      formattedObservationsSumDailyNestedArr,
+      extractedFormattedDatastreamProperties
+    );
+  } else if (
+    selectedAggregationType === "Sum" &&
+    selectedAggregationDuration === "Monthly"
+  ) {
+    // Formatted observations and metadata for chart - monthly / sum
+    const [
+      formattedObservationsSumMonthlyNestedArr,
+      extractedFormattedDatastreamProperties,
+    ] = calculateAndFormatMonthlySumObservations(
+      uniqueCalendarDatesNestedArr,
+      observationsAggregationNestedArr,
+      selectedSamplingRateAbbrev,
+      formattedMetadataNestedArr
+    );
+
+    drawLineChartHighcharts(
+      formattedObservationsSumMonthlyNestedArr,
+      extractedFormattedDatastreamProperties
+    );
+  } else if (
+    selectedAggregationType === "Maximum" &&
+    selectedAggregationDuration === "Daily"
+  ) {
+    // Formatted observations and metadata for chart - daily / maximum
+    const [
+      formattedObservationsMaximumDailyNestedArr,
+      extractedFormattedDatastreamProperties,
+    ] = calculateAndFormatDailyMaximumObservations(
+      uniqueCalendarDatesNestedArr,
+      observationsAggregationNestedArr,
+      selectedSamplingRateAbbrev,
+      formattedMetadataNestedArr
+    );
+
+    drawLineChartHighcharts(
+      formattedObservationsMaximumDailyNestedArr,
+      extractedFormattedDatastreamProperties
+    );
+  } else if (
+    selectedAggregationType === "Maximum" &&
+    selectedAggregationDuration === "Monthly"
+  ) {
+    // Formatted observations and metadata for chart - monthly / maximum
+    const [
+      formattedObservationsMaximumMonthlyNestedArr,
+      extractedFormattedDatastreamProperties,
+    ] = calculateAndFormatMonthlyMaximumObservations(
+      uniqueCalendarDatesNestedArr,
+      observationsAggregationNestedArr,
+      selectedSamplingRateAbbrev,
+      formattedMetadataNestedArr
+    );
+
+    drawLineChartHighcharts(
+      formattedObservationsMaximumMonthlyNestedArr,
+      extractedFormattedDatastreamProperties
+    );
+  } else if (
+    selectedAggregationType === "Minimum" &&
+    selectedAggregationDuration === "Daily"
+  ) {
+    // Formatted observations and metadata for chart - daily / minimum
+    const [
+      formattedObservationsMinimumDailyNestedArr,
+      extractedFormattedDatastreamProperties,
+    ] = calculateAndFormatDailyMinimumObservations(
+      uniqueCalendarDatesNestedArr,
+      observationsAggregationNestedArr,
+      selectedSamplingRateAbbrev,
+      formattedMetadataNestedArr
+    );
+
+    drawLineChartHighcharts(
+      formattedObservationsMinimumDailyNestedArr,
+      extractedFormattedDatastreamProperties
+    );
+  } else if (
+    selectedAggregationType === "Minimum" &&
+    selectedAggregationDuration === "Monthly"
+  ) {
+    // Formatted observations and metadata for chart - monthly / minimum
+    const [
+      formattedObservationsMinimumMonthlyNestedArr,
+      extractedFormattedDatastreamProperties,
+    ] = calculateAndFormatMonthlyMinimumObservations(
+      uniqueCalendarDatesNestedArr,
+      observationsAggregationNestedArr,
+      selectedSamplingRateAbbrev,
+      formattedMetadataNestedArr
+    );
+
+    drawLineChartHighcharts(
+      formattedObservationsMinimumMonthlyNestedArr,
+      extractedFormattedDatastreamProperties
+    );
+  } else if (
+    selectedAggregationType === "Average" &&
+    selectedAggregationDuration === "Daily"
+  ) {
+    // Formatted observations and metadata for chart - daily / average
+    const [
+      formattedObservationsAverageDailyNestedArr,
+      extractedFormattedDatastreamProperties,
+    ] = calculateAndFormatDailyAverageObservations(
+      uniqueCalendarDatesNestedArr,
+      observationsAggregationNestedArr,
+      selectedSamplingRateAbbrev,
+      formattedMetadataNestedArr
+    );
+
+    drawLineChartHighcharts(
+      formattedObservationsAverageDailyNestedArr,
+      extractedFormattedDatastreamProperties
+    );
+  } else if (
+    selectedAggregationType === "Average" &&
+    selectedAggregationDuration === "Monthly"
+  ) {
+    // Formatted observations and metadata for chart - monthly / average
+    const [
+      formattedObservationsAverageMonthlyNestedArr,
+      extractedFormattedDatastreamProperties,
+    ] = calculateAndFormatMonthlyAverageObservations(
+      uniqueCalendarDatesNestedArr,
+      observationsAggregationNestedArr,
+      selectedSamplingRateAbbrev,
+      formattedMetadataNestedArr
+    );
+
+    drawLineChartHighcharts(
+      formattedObservationsAverageMonthlyNestedArr,
+      extractedFormattedDatastreamProperties
+    );
+  }
+};
diff --git a/public/js/src_modules/dropDownListChartScatterPlot.mjs b/public/js/src_modules/dropDownListChartScatterPlot.mjs
new file mode 100644
index 0000000000000000000000000000000000000000..6138881342a0017661c14d9b7ff15d9eddeea84c
--- /dev/null
+++ b/public/js/src_modules/dropDownListChartScatterPlot.mjs
@@ -0,0 +1,33 @@
+import {
+  formatSensorThingsApiResponseForScatterPlot,
+  drawScatterPlotHighcharts,
+} from "./chartScatterPlot.mjs";
+
+/**
+ * Draw a scatter plot based on the selected options from a drop-down list
+ *
+ * @param {Array} observationsComboNestedArr An array that contains non-computed (raw) observations and computed (temperature difference, dT) observations
+ * @param {Object} extractedFormattedDatastreamProperties An object that contains array(s) of formatted Datastream properties
+ * @returns {undefined} undefined
+ */
+export const drawScatterPlotFromChartSelection = function (
+  observationsComboNestedArr,
+  extractedFormattedDatastreamProperties
+) {
+  // Extract values for x-axis and y-axis
+  // x-axis values are first element of nested observations array
+  const [obsXAxisArr] = observationsComboNestedArr.slice(0, 1);
+  // y-axis values are rest of elements of nested observations array
+  const obsYAxisNestedArr = observationsComboNestedArr.slice(1);
+
+  // Create formatted array(s) of observations
+  const formattedObservationsScatterPlotArr = obsYAxisNestedArr.map(
+    (obsYAxisArr) =>
+      formatSensorThingsApiResponseForScatterPlot(obsXAxisArr, obsYAxisArr)
+  );
+
+  drawScatterPlotHighcharts(
+    formattedObservationsScatterPlotArr,
+    extractedFormattedDatastreamProperties
+  );
+};
diff --git a/public/js/src_modules/dropDownListProcessing.mjs b/public/js/src_modules/dropDownListProcessing.mjs
index 123db15692211ef5bd3ae1f03bc595156d0232e5..fc97b8615f188b224df7dc07650476543c0b3888 100644
--- a/public/js/src_modules/dropDownListProcessing.mjs
+++ b/public/js/src_modules/dropDownListProcessing.mjs
@@ -1,21 +1,6 @@
 "use strict";
 
-import { drawLineChartHighcharts } from "./chartLine.mjs";
-
-import {
-  formatSensorThingsApiResponseForHeatMap,
-  drawHeatMapHighcharts,
-} from "./chartHeatmap.mjs";
-
-import {
-  formatSensorThingsApiResponseForScatterPlot,
-  drawScatterPlotHighcharts,
-} from "./chartScatterPlot.mjs";
-
-import {
-  formatAggregationResultForColumnChart,
-  drawColumnChartHighcharts,
-} from "./chartColumn.mjs";
+import { formatAggregationResultForColumnChart } from "./chartColumn.mjs";
 
 import { extractUniqueCalendarMonthsFromCalendarDates } from "./aggregateHelpers.mjs";
 
@@ -28,63 +13,6 @@ import {
 
 import { extractPropertiesFromFormattedDatastreamMetadata } from "./fetchedDataProcessing.mjs";
 
-/**
- * Draw a heatmap based on the selected options from a drop-down list
- *
- * @param {Array} observationsComboNestedArr An array that contains non-computed (raw) observations and computed (temperature difference, dT) observations
- * @param {Object} extractedFormattedDatastreamProperties An object that contains array(s) of formatted Datastream properties
- * @returns {undefined} undefined
- */
-const drawHeatmapBasedOnSelectedOptions = function (
-  observationsComboNestedArr,
-  extractedFormattedDatastreamProperties
-) {
-  // Create formatted array(s) for observations
-  const formattedObservationsHeatMapNestedArr = observationsComboNestedArr.map(
-    (observationsArr) =>
-      formatSensorThingsApiResponseForHeatMap(observationsArr)
-  );
-
-  // Note: The resulting array is nested and is not suitable for heatmap,
-  // extract the nested array
-  const [formattedObservationsHeatMapArr] =
-    formattedObservationsHeatMapNestedArr;
-
-  drawHeatMapHighcharts(
-    formattedObservationsHeatMapArr,
-    extractedFormattedDatastreamProperties
-  );
-};
-
-/**
- * Draw a scatter plot based on the selected options from a drop-down list
- *
- * @param {Array} observationsComboNestedArr An array that contains non-computed (raw) observations and computed (temperature difference, dT) observations
- * @param {Object} extractedFormattedDatastreamProperties An object that contains array(s) of formatted Datastream properties
- * @returns {undefined} undefined
- */
-const drawScatterPlotFromChartSelection = function (
-  observationsComboNestedArr,
-  extractedFormattedDatastreamProperties
-) {
-  // Extract values for x-axis and y-axis
-  // x-axis values are first element of nested observations array
-  const [obsXAxisArr] = observationsComboNestedArr.slice(0, 1);
-  // y-axis values are rest of elements of nested observations array
-  const obsYAxisNestedArr = observationsComboNestedArr.slice(1);
-
-  // Create formatted array(s) for observations
-  const formattedObservationsScatterPlotArr = obsYAxisNestedArr.map(
-    (obsYAxisArr) =>
-      formatSensorThingsApiResponseForScatterPlot(obsXAxisArr, obsYAxisArr)
-  );
-
-  drawScatterPlotHighcharts(
-    formattedObservationsScatterPlotArr,
-    extractedFormattedDatastreamProperties
-  );
-};
-
 /**
  * Calculate the daily sum of observations and format these aggregated observations
  *
@@ -100,7 +28,7 @@ const calculateAndFormatDailySumObservations = function (
   selectedSamplingRateAbbrev,
   formattedMetadataNestedArr
 ) {
-  // Calculate sum of values of observations - daily
+  // Calculate SUM / DAILY of values of observations
   const observationsSumDailyNestedArr =
     calculateSumOfObservationValuesWithinInterval(
       observationsAggregationNestedArr,
@@ -109,7 +37,7 @@ const calculateAndFormatDailySumObservations = function (
       "daily"
     );
 
-  // Format the observations - sum / daily
+  // Format the observations
   const formattedObservationsSumDailyNestedArr =
     observationsSumDailyNestedArr.map((obsSumDailyArr, i) =>
       formatAggregationResultForColumnChart(
@@ -154,7 +82,7 @@ const calculateAndFormatMonthlySumObservations = function (
       extractUniqueCalendarMonthsFromCalendarDates(uniqueCalendarDatesArr)
   );
 
-  // Calculate sum of values of observations - monthly
+  // Calculate SUM / MONTHLY of values of observations
   const observationsSumMonthlyNestedArr =
     calculateSumOfObservationValuesWithinInterval(
       observationsAggregationNestedArr,
@@ -163,7 +91,7 @@ const calculateAndFormatMonthlySumObservations = function (
       "monthly"
     );
 
-  // Format the observations - sum / monthly
+  // Format the observations
   const formattedObservationsSumMonthlyNestedArr =
     observationsSumMonthlyNestedArr.map((obsSumMonthlyArr, i) =>
       formatAggregationResultForColumnChart(
@@ -202,7 +130,7 @@ const calculateAndFormatDailyMaximumObservations = function (
   selectedSamplingRateAbbrev,
   formattedMetadataNestedArr
 ) {
-  // Calculate minimum of values of observations - daily
+  // Calculate MAXIMUM / DAILY of values of observations
   const observationsMaximumDailyNestedArr =
     calculateMaximumObservationValuesWithinInterval(
       observationsAggregationNestedArr,
@@ -211,7 +139,7 @@ const calculateAndFormatDailyMaximumObservations = function (
       "daily"
     );
 
-  // Format the observations - min / daily
+  // Format the observations
   const formattedObservationsMaximumDailyNestedArr =
     observationsMaximumDailyNestedArr.map((obsMinDailyArr, i) =>
       formatAggregationResultForColumnChart(
@@ -256,7 +184,7 @@ const calculateAndFormatMonthlyMaximumObservations = function (
       extractUniqueCalendarMonthsFromCalendarDates(uniqueCalendarDatesArr)
   );
 
-  // Calculate minimum of values of observations - monthly
+  // Calculate MAXIMUM / MONTHLY of values of observations
   const observationsMaximumMonthlyNestedArr =
     calculateMaximumObservationValuesWithinInterval(
       observationsAggregationNestedArr,
@@ -265,7 +193,7 @@ const calculateAndFormatMonthlyMaximumObservations = function (
       "monthly"
     );
 
-  // Format the observations - max / monthly
+  // Format the observations
   const formattedObservationsMaximumMonthlyNestedArr =
     observationsMaximumMonthlyNestedArr.map((obsMaxMonthlyArr, i) =>
       formatAggregationResultForColumnChart(
@@ -304,7 +232,7 @@ const calculateAndFormatDailyMinimumObservations = function (
   selectedSamplingRateAbbrev,
   formattedMetadataNestedArr
 ) {
-  // Calculate minimum of values of observations - daily
+  // Calculate MINIMUM / DAILY of values of observations
   const observationsMinimumDailyNestedArr =
     calculateMinimumObservationValuesWithinInterval(
       observationsAggregationNestedArr,
@@ -313,7 +241,7 @@ const calculateAndFormatDailyMinimumObservations = function (
       "daily"
     );
 
-  // Format the observations - min / daily
+  // Format the observations
   const formattedObservationsMinimumDailyNestedArr =
     observationsMinimumDailyNestedArr.map((obsMinDailyArr, i) =>
       formatAggregationResultForColumnChart(
@@ -358,7 +286,7 @@ const calculateAndFormatMonthlyMinimumObservations = function (
       extractUniqueCalendarMonthsFromCalendarDates(uniqueCalendarDatesArr)
   );
 
-  // Calculate minimum of values of observations - monthly
+  // Calculate MINIMUM / MONTHLY of values of observations
   const observationsMinimumMonthlyNestedArr =
     calculateMinimumObservationValuesWithinInterval(
       observationsAggregationNestedArr,
@@ -367,7 +295,7 @@ const calculateAndFormatMonthlyMinimumObservations = function (
       "monthly"
     );
 
-  // Format the observations - min / monthly
+  // Format the observations
   const formattedObservationsMinimumMonthlyNestedArr =
     observationsMinimumMonthlyNestedArr.map((obsMinMonthlyArr, i) =>
       formatAggregationResultForColumnChart(
@@ -406,7 +334,7 @@ const calculateAndFormatDailyAverageObservations = function (
   selectedSamplingRateAbbrev,
   formattedMetadataNestedArr
 ) {
-  // Calculate average of values of observations - daily
+  // Calculate AVERAGE / DAILY of values of observations
   const observationsAverageDailyNestedArr =
     calculateAverageOfObservationValuesWithinInterval(
       observationsAggregationNestedArr,
@@ -415,7 +343,7 @@ const calculateAndFormatDailyAverageObservations = function (
       "daily"
     );
 
-  // Format the observations - average / daily
+  // Format the observations
   const formattedObservationsAverageDailyNestedArr =
     observationsAverageDailyNestedArr.map((obsAverageDailyArr, i) =>
       formatAggregationResultForColumnChart(
@@ -460,7 +388,7 @@ const calculateAndFormatMonthlyAverageObservations = function (
       extractUniqueCalendarMonthsFromCalendarDates(uniqueCalendarDatesArr)
   );
 
-  // Calculate average of values of observations - monthly
+  // Calculate AVERAGE / MONTHLY of values of observations
   const observationsAverageMonthlyNestedArr =
     calculateAverageOfObservationValuesWithinInterval(
       observationsAggregationNestedArr,
@@ -469,7 +397,7 @@ const calculateAndFormatMonthlyAverageObservations = function (
       "monthly"
     );
 
-  // Format the observations - average / monthly
+  // Format the observations
   const formattedObservationsAverageMonthlyNestedArr =
     observationsAverageMonthlyNestedArr.map((obsAverageMonthlyArr, i) =>
       formatAggregationResultForColumnChart(
@@ -493,357 +421,13 @@ const calculateAndFormatMonthlyAverageObservations = function (
   ];
 };
 
-/**
- * Draw a line chart based on the selected aggregation options from a drop-down list
- *
- * @param {String} selectedAggregationType A string representing the selected aggregation type. The currently supported strings include `Sum`, `Maximum`, `Minimum` and `Average`
- * @param {String} selectedAggregationDuration A string representing the selected aggregation duration. The currently supported strings include `Daily` and `Monthly`
- * @param {Array} observationsAggregationNestedArr An array made up of sub-array(s) of aggregated observations
- * @param {String} selectedSamplingRateAbbrev A string representing the abbreviated form of the selected sampling rate option
- * @param {Array} uniqueCalendarDatesNestedArr An array made up of sub-array(s) of unique calendar date(s) string(s)
- * @param {Array} formattedMetadataNestedArr An array of sub-arrays of formatted metadata properties
- * @returns {undefined} undefined
- */
-const drawLineChartBasedOnSelectedAggregationOptions = function (
-  selectedAggregationType,
-  selectedAggregationDuration,
-  observationsAggregationNestedArr,
-  selectedSamplingRateAbbrev,
-  uniqueCalendarDatesNestedArr,
-  formattedMetadataNestedArr
-) {
-  if (
-    selectedAggregationType === "Sum" &&
-    selectedAggregationDuration === "Daily"
-  ) {
-    // Formatted observations and metadata for chart - daily / sum
-    const [
-      formattedObservationsSumDailyNestedArr,
-      extractedFormattedDatastreamProperties,
-    ] = calculateAndFormatDailySumObservations(
-      uniqueCalendarDatesNestedArr,
-      observationsAggregationNestedArr,
-      selectedSamplingRateAbbrev,
-      formattedMetadataNestedArr
-    );
-
-    drawLineChartHighcharts(
-      formattedObservationsSumDailyNestedArr,
-      extractedFormattedDatastreamProperties
-    );
-  } else if (
-    selectedAggregationType === "Sum" &&
-    selectedAggregationDuration === "Monthly"
-  ) {
-    // Formatted observations and metadata for chart - monthly / sum
-    const [
-      formattedObservationsSumMonthlyNestedArr,
-      extractedFormattedDatastreamProperties,
-    ] = calculateAndFormatMonthlySumObservations(
-      uniqueCalendarDatesNestedArr,
-      observationsAggregationNestedArr,
-      selectedSamplingRateAbbrev,
-      formattedMetadataNestedArr
-    );
-
-    drawLineChartHighcharts(
-      formattedObservationsSumMonthlyNestedArr,
-      extractedFormattedDatastreamProperties
-    );
-  } else if (
-    selectedAggregationType === "Maximum" &&
-    selectedAggregationDuration === "Daily"
-  ) {
-    // Formatted observations and metadata for chart - daily / maximum
-    const [
-      formattedObservationsMaximumDailyNestedArr,
-      extractedFormattedDatastreamProperties,
-    ] = calculateAndFormatDailyMaximumObservations(
-      uniqueCalendarDatesNestedArr,
-      observationsAggregationNestedArr,
-      selectedSamplingRateAbbrev,
-      formattedMetadataNestedArr
-    );
-
-    drawLineChartHighcharts(
-      formattedObservationsMaximumDailyNestedArr,
-      extractedFormattedDatastreamProperties
-    );
-  } else if (
-    selectedAggregationType === "Maximum" &&
-    selectedAggregationDuration === "Monthly"
-  ) {
-    // Formatted observations and metadata for chart - monthly / maximum
-    const [
-      formattedObservationsMaximumMonthlyNestedArr,
-      extractedFormattedDatastreamProperties,
-    ] = calculateAndFormatMonthlyMaximumObservations(
-      uniqueCalendarDatesNestedArr,
-      observationsAggregationNestedArr,
-      selectedSamplingRateAbbrev,
-      formattedMetadataNestedArr
-    );
-
-    drawLineChartHighcharts(
-      formattedObservationsMaximumMonthlyNestedArr,
-      extractedFormattedDatastreamProperties
-    );
-  } else if (
-    selectedAggregationType === "Minimum" &&
-    selectedAggregationDuration === "Daily"
-  ) {
-    // Formatted observations and metadata for chart - daily / minimum
-    const [
-      formattedObservationsMinimumDailyNestedArr,
-      extractedFormattedDatastreamProperties,
-    ] = calculateAndFormatDailyMinimumObservations(
-      uniqueCalendarDatesNestedArr,
-      observationsAggregationNestedArr,
-      selectedSamplingRateAbbrev,
-      formattedMetadataNestedArr
-    );
-
-    drawLineChartHighcharts(
-      formattedObservationsMinimumDailyNestedArr,
-      extractedFormattedDatastreamProperties
-    );
-  } else if (
-    selectedAggregationType === "Minimum" &&
-    selectedAggregationDuration === "Monthly"
-  ) {
-    // Formatted observations and metadata for chart - monthly / minimum
-    const [
-      formattedObservationsMinimumMonthlyNestedArr,
-      extractedFormattedDatastreamProperties,
-    ] = calculateAndFormatMonthlyMinimumObservations(
-      uniqueCalendarDatesNestedArr,
-      observationsAggregationNestedArr,
-      selectedSamplingRateAbbrev,
-      formattedMetadataNestedArr
-    );
-
-    drawLineChartHighcharts(
-      formattedObservationsMinimumMonthlyNestedArr,
-      extractedFormattedDatastreamProperties
-    );
-  } else if (
-    selectedAggregationType === "Average" &&
-    selectedAggregationDuration === "Daily"
-  ) {
-    // Formatted observations and metadata for chart - daily / average
-    const [
-      formattedObservationsAverageDailyNestedArr,
-      extractedFormattedDatastreamProperties,
-    ] = calculateAndFormatDailyAverageObservations(
-      uniqueCalendarDatesNestedArr,
-      observationsAggregationNestedArr,
-      selectedSamplingRateAbbrev,
-      formattedMetadataNestedArr
-    );
-
-    drawLineChartHighcharts(
-      formattedObservationsAverageDailyNestedArr,
-      extractedFormattedDatastreamProperties
-    );
-  } else if (
-    selectedAggregationType === "Average" &&
-    selectedAggregationDuration === "Monthly"
-  ) {
-    // Formatted observations and metadata for chart - monthly / average
-    const [
-      formattedObservationsAverageMonthlyNestedArr,
-      extractedFormattedDatastreamProperties,
-    ] = calculateAndFormatMonthlyAverageObservations(
-      uniqueCalendarDatesNestedArr,
-      observationsAggregationNestedArr,
-      selectedSamplingRateAbbrev,
-      formattedMetadataNestedArr
-    );
-
-    drawLineChartHighcharts(
-      formattedObservationsAverageMonthlyNestedArr,
-      extractedFormattedDatastreamProperties
-    );
-  }
-};
-
-/**
- * Draw a column chart based on the selected aggregation options from a drop-down list
- *
- * @param {String} selectedAggregationType A string representing the selected aggregation type. The currently supported strings include `Sum`, `Maximum`, `Minimum` and `Average`
- * @param {String} selectedAggregationDuration A string representing the selected aggregation duration. The currently supported strings include `Daily` and `Monthly`
- * @param {Array} observationsAggregationNestedArr An array made up of sub-array(s) of aggregated observations
- * @param {String} selectedSamplingRateAbbrev A string representing the abbreviated form of the selected sampling rate option
- * @param {Array} uniqueCalendarDatesNestedArr An array made up of sub-array(s) of unique calendar date(s) string(s)
- * @param {Array} formattedMetadataNestedArr An array of sub-arrays of formatted metadata properties
- * @returns {undefined} undefined
- */
-const drawColumnChartBasedOnSelectedAggregationOptions = function (
-  selectedAggregationTypeArr,
-  selectedAggregationDuration,
-  observationsAggregationNestedArr,
-  selectedSamplingRateAbbrev,
-  uniqueCalendarDatesNestedArr,
-  formattedMetadataNestedArr
-) {
-  if (
-    selectedAggregationTypeArr === "Sum" &&
-    selectedAggregationDuration === "Daily"
-  ) {
-    // Formatted observations and metadata for chart - daily / sum
-    const [
-      formattedObservationsSumDailyNestedArr,
-      extractedFormattedDatastreamProperties,
-    ] = calculateAndFormatDailySumObservations(
-      uniqueCalendarDatesNestedArr,
-      observationsAggregationNestedArr,
-      selectedSamplingRateAbbrev,
-      formattedMetadataNestedArr
-    );
-
-    drawColumnChartHighcharts(
-      formattedObservationsSumDailyNestedArr,
-      extractedFormattedDatastreamProperties
-    );
-  } else if (
-    selectedAggregationTypeArr === "Sum" &&
-    selectedAggregationDuration === "Monthly"
-  ) {
-    // Formatted observations and metadata for chart - monthly / sum
-    const [
-      formattedObservationsSumMonthlyNestedArr,
-      extractedFormattedDatastreamProperties,
-    ] = calculateAndFormatMonthlySumObservations(
-      uniqueCalendarDatesNestedArr,
-      observationsAggregationNestedArr,
-      selectedSamplingRateAbbrev,
-      formattedMetadataNestedArr
-    );
-
-    drawColumnChartHighcharts(
-      formattedObservationsSumMonthlyNestedArr,
-      extractedFormattedDatastreamProperties
-    );
-  } else if (
-    selectedAggregationTypeArr === "Maximum" &&
-    selectedAggregationDuration === "Daily"
-  ) {
-    // Formatted observations and metadata for chart - daily / maximum
-    const [
-      formattedObservationsMaximumDailyNestedArr,
-      extractedFormattedDatastreamProperties,
-    ] = calculateAndFormatDailyMaximumObservations(
-      uniqueCalendarDatesNestedArr,
-      observationsAggregationNestedArr,
-      selectedSamplingRateAbbrev,
-      formattedMetadataNestedArr
-    );
-
-    drawColumnChartHighcharts(
-      formattedObservationsMaximumDailyNestedArr,
-      extractedFormattedDatastreamProperties
-    );
-  } else if (
-    selectedAggregationTypeArr === "Maximum" &&
-    selectedAggregationDuration === "Monthly"
-  ) {
-    // Formatted observations and metadata for chart - monthly / maximum
-    const [
-      formattedObservationsMaximumMonthlyNestedArr,
-      extractedFormattedDatastreamProperties,
-    ] = calculateAndFormatMonthlyMaximumObservations(
-      uniqueCalendarDatesNestedArr,
-      observationsAggregationNestedArr,
-      selectedSamplingRateAbbrev,
-      formattedMetadataNestedArr
-    );
-
-    drawColumnChartHighcharts(
-      formattedObservationsMaximumMonthlyNestedArr,
-      extractedFormattedDatastreamProperties
-    );
-  } else if (
-    selectedAggregationTypeArr === "Minimum" &&
-    selectedAggregationDuration === "Daily"
-  ) {
-    // Formatted observations and metadata for chart - daily / minimum
-    const [
-      formattedObservationsMinimumDailyNestedArr,
-      extractedFormattedDatastreamProperties,
-    ] = calculateAndFormatDailyMinimumObservations(
-      uniqueCalendarDatesNestedArr,
-      observationsAggregationNestedArr,
-      selectedSamplingRateAbbrev,
-      formattedMetadataNestedArr
-    );
-
-    drawColumnChartHighcharts(
-      formattedObservationsMinimumDailyNestedArr,
-      extractedFormattedDatastreamProperties
-    );
-  } else if (
-    selectedAggregationTypeArr === "Minimum" &&
-    selectedAggregationDuration === "Monthly"
-  ) {
-    // Formatted observations and metadata for chart - monthly / minimum
-    const [
-      formattedObservationsMinimumMonthlyNestedArr,
-      extractedFormattedDatastreamProperties,
-    ] = calculateAndFormatMonthlyMinimumObservations(
-      uniqueCalendarDatesNestedArr,
-      observationsAggregationNestedArr,
-      selectedSamplingRateAbbrev,
-      formattedMetadataNestedArr
-    );
-
-    drawColumnChartHighcharts(
-      formattedObservationsMinimumMonthlyNestedArr,
-      extractedFormattedDatastreamProperties
-    );
-  } else if (
-    selectedAggregationTypeArr === "Average" &&
-    selectedAggregationDuration === "Daily"
-  ) {
-    // Formatted observations and metadata for chart - daily / average
-    const [
-      formattedObservationsAverageDailyNestedArr,
-      extractedFormattedDatastreamProperties,
-    ] = calculateAndFormatDailyAverageObservations(
-      uniqueCalendarDatesNestedArr,
-      observationsAggregationNestedArr,
-      selectedSamplingRateAbbrev,
-      formattedMetadataNestedArr
-    );
-
-    drawColumnChartHighcharts(
-      formattedObservationsAverageDailyNestedArr,
-      extractedFormattedDatastreamProperties
-    );
-  } else if (
-    selectedAggregationTypeArr === "Average" &&
-    selectedAggregationDuration === "Monthly"
-  ) {
-    // Formatted observations and metadata for chart - monthly / average
-    const [
-      formattedObservationsAverageMonthlyNestedArr,
-      extractedFormattedDatastreamProperties,
-    ] = calculateAndFormatMonthlyAverageObservations(
-      uniqueCalendarDatesNestedArr,
-      observationsAggregationNestedArr,
-      selectedSamplingRateAbbrev,
-      formattedMetadataNestedArr
-    );
-
-    drawColumnChartHighcharts(
-      formattedObservationsAverageMonthlyNestedArr,
-      extractedFormattedDatastreamProperties
-    );
-  }
-};
-
 export {
-  drawHeatmapBasedOnSelectedOptions,
-  drawScatterPlotFromChartSelection,
-  drawLineChartBasedOnSelectedAggregationOptions,
-  drawColumnChartBasedOnSelectedAggregationOptions,
+  calculateAndFormatDailySumObservations,
+  calculateAndFormatMonthlySumObservations,
+  calculateAndFormatDailyMaximumObservations,
+  calculateAndFormatMonthlyMaximumObservations,
+  calculateAndFormatDailyMinimumObservations,
+  calculateAndFormatMonthlyMinimumObservations,
+  calculateAndFormatDailyAverageObservations,
+  calculateAndFormatMonthlyAverageObservations,
 };