From a1dc555c2088f61f76e6afc6288994a7f1ea4050 Mon Sep 17 00:00:00 2001 From: Ramesh Kumar <ramesh.p@matriotsolutions.com> Date: Thu, 18 Aug 2022 12:52:23 +0530 Subject: [PATCH] TMSS-1934: Added reference pointing constraint columns to the SU set editor --- .../Scheduling/excelview.schedulingset.js | 69 ++++++++++++++++++- .../tmss_webapp/src/utils/unit.converter.js | 2 +- 2 files changed, 68 insertions(+), 3 deletions(-) diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/excelview.schedulingset.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/excelview.schedulingset.js index fe38fc7e9dd..b416c90992a 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/excelview.schedulingset.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/excelview.schedulingset.js @@ -776,6 +776,11 @@ export class SchedulingSetCreate extends Component { this.agSUWithDefaultValue['min_calibrator_elevation'] = observStrategyContraints?.sky?.min_elevation && observStrategyContraints.sky.min_elevation.calibrator?((observStrategyContraints.sky.min_elevation.calibrator * 180) / Math.PI).toFixed(2):((this.resolvedConstraintSchema.properties.sky.properties.min_elevation.properties.calibrator.default * 180) / Math.PI).toFixed(2); this.agSUWithDefaultValue['offset_from'] = observStrategyContraints?.sky?.transit_offset.from?(observStrategyContraints.sky.transit_offset.from<0?'-':'')+UnitConverter.getSecsToHHmmss(observStrategyContraints.sky.transit_offset.from):"00:00:00"; this.agSUWithDefaultValue['offset_to'] = observStrategyContraints?.sky?.transit_offset.to?(observStrategyContraints.sky.transit_offset.to<0?'-':'')+UnitConverter.getSecsToHHmmss(observStrategyContraints.sky.transit_offset.to):"00:00:00"; + this.agSUWithDefaultValue['ref_pointing_enabled'] = observStrategyContraints?.sky?.reference_pointing?.enabled || this.resolvedConstraintSchema.properties.sky.properties.reference_pointing.properties.enabled.default; + this.agSUWithDefaultValue['ref_pointing_angle1'] = observStrategyContraints?.sky?.reference_pointing?.pointing?.angle1?UnitConverter.getAngleInput(observStrategyContraints.sky.reference_pointing.pointing.angle1,false):UnitConverter.getAngleInput(this.resolvedConstraintSchema.properties.sky.properties.reference_pointing.properties.pointing.default.angle1, false); + this.agSUWithDefaultValue['ref_pointing_angle2'] = observStrategyContraints?.sky?.reference_pointing?.pointing?.angle2?UnitConverter.getAngleInput(observStrategyContraints.sky.reference_pointing.pointing.angle2,true):UnitConverter.getAngleInput(this.resolvedConstraintSchema.properties.sky.properties.reference_pointing.properties.pointing.default.angle2, true); + this.agSUWithDefaultValue['ref_pointing_direction_type'] = observStrategyContraints?.sky?.reference_pointing?.pointing?.direction_type || this.resolvedConstraintSchema.properties.sky.properties.reference_pointing.properties.pointing.default.direction_type; + this.agSUWithDefaultValue['ref_pointing_target'] = observStrategyContraints?.sky?.reference_pointing?.pointing?.target || this.resolvedConstraintSchema.properties.sky.properties.reference_pointing.properties.pointing.default.target; this.agSUWithDefaultValue['md_sun'] = observStrategyContraints?.sky?.min_distance && !isNaN(observStrategyContraints.sky.min_distance.sun) ? ((observStrategyContraints.sky.min_distance.sun * 180)/Math.PI).toFixed(2): ((this.resolvedConstraintSchema.properties.sky.properties.min_distance.properties.sun.default * 180) / Math.PI).toFixed(2); this.agSUWithDefaultValue['md_moon'] = observStrategyContraints?.sky?.min_distance && !isNaN(observStrategyContraints.sky.min_distance.moon) ? ((observStrategyContraints.sky.min_distance.moon * 180)/Math.PI).toFixed(2): ((this.resolvedConstraintSchema.properties.sky.properties.min_distance.properties.moon.default * 180) / Math.PI).toFixed(2); this.agSUWithDefaultValue['md_jupiter'] = observStrategyContraints?.sky?.min_distance && !isNaN(observStrategyContraints.sky.min_distance.jupiter) ? ((observStrategyContraints.sky.min_distance.jupiter * 180)/Math.PI).toFixed(2): ((this.resolvedConstraintSchema.properties.sky.properties.min_distance.properties.jupiter.default * 180) / Math.PI).toFixed(2); @@ -880,6 +885,19 @@ export class SchedulingSetCreate extends Component { observationProps['md_moon'] = constraint.sky.min_distance.moon; //constraint.sky.min_distance.moon:0; observationProps['md_jupiter'] = constraint.sky.min_distance.jupiter;//constraint.sky.min_distance.jupiter:0; } + if (constraint.sky.reference_pointing) { + observationProps['ref_pointing_enabled'] = constraint.sky.reference_pointing.enabled; + observationProps['ref_pointing_angle1'] = UnitConverter.getAngleInput(constraint.sky.reference_pointing.pointing.angle1, false); + observationProps['ref_pointing_angle2'] = UnitConverter.getAngleInput(constraint.sky.reference_pointing.pointing.angle2, true); + observationProps['ref_pointing_direction_type'] = constraint.sky.reference_pointing.pointing.direction_type; + observationProps['ref_pointing_target'] = constraint.sky.reference_pointing.pointing.target; + } else { + observationProps['ref_pointing_enabled'] = this.resolvedConstraintSchema.properties.sky.properties.reference_pointing.properties.enabled.default; + observationProps['ref_pointing_angle1'] = UnitConverter.getAngleInput(this.resolvedConstraintSchema.properties.sky.properties.reference_pointing.properties.pointing.default.angle1, false); + observationProps['ref_pointing_angle2'] = UnitConverter.getAngleInput(this.resolvedConstraintSchema.properties.sky.properties.reference_pointing.properties.pointing.default.angle2, true); + observationProps['ref_pointing_direction_type'] = this.resolvedConstraintSchema.properties.sky.properties.reference_pointing.properties.pointing.default.direction_type; + observationProps['ref_pointing_target'] = this.resolvedConstraintSchema.properties.sky.properties.reference_pointing.properties.pointing.default.target; + } } observationProps['custId'] = this.custId++; observationPropsList.push(observationProps); @@ -1742,6 +1760,11 @@ export class SchedulingSetCreate extends Component { this.constraintVariables.push('min_calibrator_elevation'); this.constraintVariables.push('offset_from'); this.constraintVariables.push('offset_to'); + this.constraintVariables.push('ref_pointing_enabled'); + this.constraintVariables.push('ref_pointing_angle1'); + this.constraintVariables.push('ref_pointing_angle2'); + this.constraintVariables.push('ref_pointing_direction_type'); + this.constraintVariables.push('ref_pointing_target'); columnDefs.push({headerName: 'Daily', headerTooltip: 'Daily',field: 'daily',cellEditor: 'multiselector', valueSetter: function(params) {}}, {headerName: 'Sky',headerTooltip: 'Sky', children: [ @@ -1792,10 +1815,44 @@ export class SchedulingSetCreate extends Component { } else { return { backgroundColor: ''}; } - }}, + }} ], }); - + // Add reference pointing constraint + columnDefs.push({headerName: `${this.resolvedConstraintSchema.properties.sky.properties.reference_pointing.title}`, + headerTooltip: `${this.resolvedConstraintSchema.properties.sky.properties.reference_pointing.description}`, children: [ + {headerName: 'Enabled', headerTooltip: `${this.resolvedConstraintSchema.properties.sky.properties.reference_pointing.properties.enabled.description}`,field: 'ref_pointing_enabled', + cellEditor: 'agSelectCellEditor', + cellEditorParams: { + values: [true, false], + }}, + {headerName: 'Angle1', headerTooltip: 'Reference Pointing - Angle1',field: 'ref_pointing_angle1', + type:'numberValueColumn', cellRenderer: 'timeInputMask',cellEditor: 'timeInputMask', valueSetter: 'valueSetter', + cellStyle: function(params) { + if (params.value && !Validator.validateTimeAndAngle(params.value)) { + return { backgroundColor: BG_COLOR}; + } else { + return { backgroundColor: ''}; + } + }}, + {headerName: 'Angle2', headerTooltip: 'Reference Pointing - Angle2',field: 'ref_pointing_angle2', + type:'numberValueColumn', cellRenderer: 'degreeInputMask',cellEditor: 'degreeInputMask', valueSetter: 'valueSetter', + cellStyle: function(params) { + if (params.value && !Validator.validateAngle(params.value)) { + return { backgroundColor: BG_COLOR}; + } else { + return { backgroundColor: ''}; + } + }}, + {headerName: 'Reference Frame', headerTooltip: 'Reference Pointing - Reference Frame',field: 'ref_pointing_direction_type', + cellEditor: 'agSelectCellEditor', + cellEditorParams: { + values: this.resolvedConstraintSchema.definitions.pointing.properties.direction_type.enum, + } + }, + {headerName: 'Target', headerTooltip: 'Refernce Pointing - Target',field: 'ref_pointing_target'} + ] + }); this.constraintVariables.push('md_sun'); this.constraintVariables.push('md_moon'); this.constraintVariables.push('md_jupiter'); @@ -2584,6 +2641,14 @@ export class SchedulingSetCreate extends Component { constraint.sky.min_elevation.target = isNaN(suRow.min_target_elevation)?0:suRow.min_target_elevation; constraint.sky.min_elevation.calibrator = isNaN(suRow.min_calibrator_elevation)?0:suRow.min_calibrator_elevation; + let ref_pointing = { enabled: false, pointing: {target:"-"}}; + ref_pointing.enabled = suRow.ref_pointing_enabled; + ref_pointing.pointing.angle1 = UnitConverter.parseAngle(suRow.ref_pointing_angle1); + ref_pointing.pointing.angle2 = UnitConverter.parseAngle(suRow.ref_pointing_angle2); + ref_pointing.pointing.direction_type = suRow.ref_pointing_direction_type; + ref_pointing.pointing.target = suRow.ref_pointing_target; + constraint.sky.reference_pointing = ref_pointing; + return constraint; } 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 db936c9cab9..63691a79a78 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/utils/unit.converter.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/utils/unit.converter.js @@ -198,7 +198,7 @@ const UnitConverter = { */ getAngleInputType(input) { input +=''; - if (input.match(/^((\-?)|(\+?))((\d0?d(0?0m)(0?0(\.\d{1,4})?s))|(([0-9]?\d{2,3})d(([0-5]?\d)m)(([0-5]?\d)(\.\d{1,4})?s)))$/)) { + if (input.match(/^((\-?)|(\+?))((\d0?d(0?0m)(0?0(\.\d{1,4})?s))|(([0-9]?\d{0,1})d(([0-5]?\d)m)(([0-5]?\d)(\.\d{1,4})?s)))$/)) { return 'dms'; } else if (input.match(/^((\-?)|(\+?))((\d0(.0{1,4})?)|([0-9]?\d{1,3})(\.\d{1,4})?) ?d(egree)?s?$/)) { return 'degrees'; -- GitLab