From f750cd4f21699e8457fa15d0b1fcaae14f10482a Mon Sep 17 00:00:00 2001
From: Benjamin Renard <benjamin.renard@akka.eu>
Date: Fri, 27 Aug 2021 10:21:53 +0200
Subject: [PATCH] Add size & display_time in user defined paramters list from WS (#9649)

---
 php/WebServices/WebServer.php | 35 +++++++++++++++++++++++++++++++++++
 1 file changed, 35 insertions(+), 0 deletions(-)

diff --git a/php/WebServices/WebServer.php b/php/WebServices/WebServer.php
index d3da13c..9294a5f 100644
--- a/php/WebServices/WebServer.php
+++ b/php/WebServices/WebServer.php
@@ -382,6 +382,41 @@ class WebServer
 			return  array('success' => true,'ParameterList' => 
 					array("LocalDataBaseParameters" =>  WSConfigClass::getUrl().$locParamDst));
 
+		// Inject size & display_type
+		//  => In derived parameters
+		$dom = new DOMDocument( "1.0");
+		$dom->formatOutput = TRUE;
+		$dom->preserveWhiteSpace = FALSE;
+		$dom->load(WSConfigClass::getWsResultDir().$wsParamDst);
+		$paramNodes = $dom->getElementsByTagName("param");
+		foreach ($paramNodes as $paramNode) {
+			$dim_1 = $paramNode->getAttribute('dim_1');
+			$dim_1 = empty($dim_1) ? 1 : intval($dim_1);
+			$dim_2 = $paramNode->getAttribute('dim_2');
+			$dim_2 = empty($dim_2) ? 1 : intval($dim_2);
+			$paramNode->setAttribute('size', $dim_1 * $dim_2);
+
+			$display_type = 'timeseries';
+			if ($dim_1 > 1 && $dim_2 > 1) {
+				$display_type = 'spectrogram';
+			}
+			else if ($dim_1 > 3 || $dim_2 > 3) {
+				$display_type = 'spectrogram';
+			}
+			$paramNode->setAttribute('display_type', $display_type);
+		}
+		//  => In parameters from an uploaded file
+		$paramNodes = $dom->getElementsByTagName("mydata");
+		foreach ($paramNodes as $paramNode) {
+			// size already exists
+			$display_type = 'timeseries';
+			if ($paramNode->getAttribute('plottype') == 'Spectra') {
+				$display_type = 'spectrogram';
+			}
+			$paramNode->setAttribute('display_type', $display_type);
+		}
+		$dom->save(WSConfigClass::getWsResultDir().$wsParamDst);
+
 		return  array('success' => true,'ParameterList' => 
 					array("UserDefinedParameters" => WSConfigClass::getUrl().$wsParamDst, 
 							"LocalDataBaseParameters" =>  WSConfigClass::getUrl().$locParamDst));
--
libgit2 0.21.2