From 61ec3fcfff4448d840d883db98cd0d8ed925e054 Mon Sep 17 00:00:00 2001
From: Ramesh Kumar <ramesh.p@matriotsolutions.com>
Date: Mon, 5 Apr 2021 21:14:08 +0530
Subject: [PATCH] TMSS-577: Mimimum validation and negative value parsing
 added.

---
 .../tmss_webapp/src/components/JSONEditor/JEditor.js      | 2 +-
 SAS/TMSS/frontend/tmss_webapp/src/utils/unit.converter.js | 8 +++++---
 SAS/TMSS/frontend/tmss_webapp/src/utils/validator.js      | 4 ++--
 3 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/SAS/TMSS/frontend/tmss_webapp/src/components/JSONEditor/JEditor.js b/SAS/TMSS/frontend/tmss_webapp/src/components/JSONEditor/JEditor.js
index 5af6f357d38..fce56dec489 100644
--- a/SAS/TMSS/frontend/tmss_webapp/src/components/JSONEditor/JEditor.js
+++ b/SAS/TMSS/frontend/tmss_webapp/src/components/JSONEditor/JEditor.js
@@ -163,7 +163,7 @@ function Jeditor(props) {
                     errors.push({
                         path: path,
                         property: 'validationType',
-                        message: 'Not a valid input. Mimimum: 00:00:00.0000degrees 0r 0, Maximum:90:00:00.0000degrees or 1.5708'
+                        message: 'Not a valid input. Mimimum: -90:00:00.0000degrees 0r -1.57079632679489661923, Maximum:90:00:00.0000degrees or 1.57079632679489661923'
                     });
                 }
             } else if (schema.validationType === "distanceOnSky") {
diff --git a/SAS/TMSS/frontend/tmss_webapp/src/utils/unit.converter.js b/SAS/TMSS/frontend/tmss_webapp/src/utils/unit.converter.js
index 17569078541..3c94e1d623d 100644
--- a/SAS/TMSS/frontend/tmss_webapp/src/utils/unit.converter.js
+++ b/SAS/TMSS/frontend/tmss_webapp/src/utils/unit.converter.js
@@ -65,12 +65,14 @@ const UnitConverter = {
      */
     getAngleInput(prpInput, isDegree) {
         if (prpInput){
+            const isNegative = prpInput<0;
+            prpInput = prpInput * (isNegative?-1:1);
             const degrees = prpInput * 180 / Math.PI;
             if (isDegree) {
                 const dd = Math.floor(prpInput * 180 / Math.PI);
                 const mm = Math.floor((degrees-dd) * 60);
                 const ss = round((degrees-dd-(mm/60)) * 3600,4);
-                return (dd<10?`0${dd}`:`${dd}`) + 'd' + (mm<10?`0${mm}`:`${mm}`) + 'm' + (ss<10?`0${ss}`:`${ss}`) + 's';
+                return (isNegative?'-':'') + (dd<10?`0${dd}`:`${dd}`) + 'd' + (mm<10?`0${mm}`:`${mm}`) + 'm' + (ss<10?`0${ss}`:`${ss}`) + 's';
             }   else {
                 const hh = Math.floor(degrees/15);
                 const mm = Math.floor((degrees - (hh*15))/15 * 60 );
@@ -78,7 +80,7 @@ const UnitConverter = {
                 return (hh<10?`0${hh}`:`${hh}`) + 'h' + (mm<10?`0${mm}`:`${mm}`) + 'm' + (ss<10?`0${ss}`:`${ss}`) + 's';
             }
         } else {
-            return "00:00:00";
+            return isDegree?"0d0m0s":'0h0m0s';
         }
     },
 
@@ -121,7 +123,7 @@ const UnitConverter = {
             return 'deg_format';
         }   else if (input.match(/^([0-1]?\d|2[0-3]):([0-5]?\d):([0-5]?\d)(\.\d{1,4})? ?h(our)?s?$/)) {
             return 'hour_format';
-        }   else if (input.match(/^[0-6](.\d+)?$/)) {
+        }   else if (input.match(/^\-?[0-6](.\d{1,20})?$/)) {
             return 'radians';
         }   else {
             return null;
diff --git a/SAS/TMSS/frontend/tmss_webapp/src/utils/validator.js b/SAS/TMSS/frontend/tmss_webapp/src/utils/validator.js
index 876f4574c47..f7612d15d63 100644
--- a/SAS/TMSS/frontend/tmss_webapp/src/utils/validator.js
+++ b/SAS/TMSS/frontend/tmss_webapp/src/utils/validator.js
@@ -4,7 +4,7 @@ const Validator = {
     validateTime(value) {
         const angleType = UnitConverter.getAngleInputType(value);
         if (angleType && ['hms', 'hours', 'hour_format', 'radians'].indexOf(angleType)>=0) {
-            if (angleType === 'radians' && parseFloat(value) > 6.2830) {
+            if (angleType === 'radians' && (parseFloat(value)<0 || parseFloat(value) > 6.2831)) {
                 return false;
             }
             return true;
@@ -14,7 +14,7 @@ const Validator = {
     validateAngle(value) {
         const angleType = UnitConverter.getAngleInputType(value);
         if (angleType && ['dms', 'degrees', 'deg_format', 'radians'].indexOf(angleType)>=0) {
-            if (angleType === 'radians' && parseFloat(value) > 1.5707) {
+            if (angleType === 'radians' && (parseFloat(value) < -1.57079632679489661923 || parseFloat(value) > 1.57079632679489661923)) {
                 return false;
             }
             return true;
-- 
GitLab