diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/SchedulingUnitList.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/SchedulingUnitList.js index 5031a12c5dd31f203f377405c9cd1827eaed878e..c2b8dd2267ed422f99696ed80b638e91562ee9e0 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/SchedulingUnitList.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/SchedulingUnitList.js @@ -98,7 +98,11 @@ class SchedulingUnitList extends Component{ do_cancel: { name: "Cancelled", filter: "switch", - }, + }, + targetName: {name: 'Target - Name'}, + targetAngle1: {name: 'Target - Angle 1'}, + targetAngle2: {name: 'Target - Angle 2'}, + targetRef: {name: 'Target - Reference Frame'}, } if (props.hideProjectColumn) { @@ -137,12 +141,10 @@ class SchedulingUnitList extends Component{ "Stations (CS/RS/IS)", "Tasks content (O/P/I)", "Number of SAPs in the target observation", - "Target 1 - Angle 1", - "Target 1 - Angle 2", - "Target 1 - Reference Frame", - "Target 2 - Angle 1", - "Target 2 - Angle 2", - "Target 2 - Reference Frame", + "Target - Name", + "Target - Angle 1", + "Target - Angle 2", + "Target - Reference Frame", "Created_At", "Updated_At" ], @@ -269,6 +271,7 @@ class SchedulingUnitList extends Component{ this.copySpecAndFailedTasks = this.copySpecAndFailedTasks.bind(this); this.scheduleConstraintsArray=this.scheduleConstraintsArray.bind(this); this.capitalize = this.capitalize.bind(this); + this.formatListToNewLineText = this.formatListToNewLineText.bind(this); } capitalize(s) { @@ -554,7 +557,7 @@ class SchedulingUnitList extends Component{ const columnDefinitionToBeRemove = ['status', 'workflowStatus', 'on_sky_start_time', 'on_sky_stop_time', 'process_start_time', 'process_stop_time']; //For Constraint const constColDefToBeRemove = ['observation_strategy_template_name', 'duration', 'observation_strategy_template_id', 'observation_strategy_template_description', 'on_sky_start_time', 'on_sky_stop_time', 'process_start_time', 'process_stop_time', 'task_content', - 'target_observation_sap', 'do_cancel', 'created_at', 'updated_at', 'priority_rank', 'priority_queue', 'output_pinned', 'draft',]; + 'target_observation_sap', 'do_cancel', 'created_at', 'updated_at', 'priority_rank', 'priority_queue', 'output_pinned', 'draft', 'targetName','targetAngle1','targetAngle2','targetRef']; const suFilters = await ScheduleService.getSchedulingUnitFilterDefinition(type); this.columnMap = []; let tmpDefaulColumns = _.cloneDeep(this.state.defaultcolumns[0]); @@ -688,44 +691,6 @@ class SchedulingUnitList extends Component{ output.push(scheduleunit); } } - output.map(su => { - su.taskDetails = su.type==="Draft"?su.task_drafts:su.task_blueprints; - const targetObserv = su && su.taskDetails ? su.taskDetails.find(task => task.specifications_template.type_value==='observation' && task.specifications_doc.SAPs) : null; - // Constructing targets in single string to make it clear display - if (targetObserv && targetObserv.specifications_doc) { - targetObserv.specifications_doc.SAPs.map((target, index) => { - if (index === 0){ - defaultcolumns[`target${index}angle1`] = {name: `Target ${index + 1} - Angle 1`}; - defaultcolumns[`target${index}angle2`] = {name: `Target ${index + 1} - Angle 2`}; - defaultcolumns[`target${index}referenceframe`] = { - name: `Target ${index + 1} - Reference Frame`, - filter: "select" - }; - - } else { - optionalColumns[`target${index}angle1`] = {name: `Target ${index + 1} - Angle 1`}; - optionalColumns[`target${index}angle2`] = {name: `Target ${index + 1} - Angle 2`}; - optionalColumns[`target${index}referenceframe`] = { - name: `Target ${index + 1} - Reference Frame`, - filter: "select" - }; - } - su[`target${index}angle1`] = UnitConverter.getAngleInput(target.digital_pointing.angle1); - su[`target${index}angle2`] = UnitConverter.getAngleInput(target.digital_pointing.angle2,true); - su[`target${index}referenceframe`] = target.digital_pointing.direction_type; - /*optionalColumns[`target${index}angle1`] = {name: `Target ${index + 1} - Angle 1`}; - optionalColumns[`target${index}angle2`] = {name: `Target ${index + 1} - Angle 2`}; - optionalColumns[`target${index}referenceframe`] = { - name: `Target ${index + 1} - Reference Frame`, - filter: "select" - };*/ - columnclassname[`Target ${index + 1} - Angle 1`] = "filter-input-75"; - columnclassname[`Target ${index + 1} - Angle 2`] = "filter-input-75"; - return target; - }); - } - return su; - }); } else if ( suType.toLowerCase() === 'blueprint') { const suIds = _.map(scheduleunits, 'id'); let workflows = await this.timelineCommonUtils.getWorkflowsAndTasks(suIds); @@ -789,10 +754,6 @@ class SchedulingUnitList extends Component{ this.constraintColumns = []; for (const key in derviedscheduleconstraints) { if (key !== '$schema') { - /*const header = _.includes(this.minDistance, key)?` ${this.capitalize(key).replace('_',' ')} (Degrees)`: ` ${this.capitalize(key).replace('_',' ')} `; - defaultcolumns[`${key}`] = { - name: header - };*/ this.constraintColumns.push(key); scheduleunit[key] = derviedscheduleconstraints[key]; } @@ -812,62 +773,57 @@ class SchedulingUnitList extends Component{ this.selectedRows = []; } + /** + * Prepare new line string in table column + * @param {Array} arrayVal + * @returns + */ + formatListToNewLineText(arrayVal){ + return ( + <> + {arrayVal.length>0 && arrayVal.map((item) => ( + <div>{item}</div> + ))} + </> + ); + } + + /** + * Group the target values into 4 columns + * @param {*} schedulingUnits + */ async addTargetColumns(schedulingUnits) { - let optionalColumns = this.state.optionalcolumns[0]; - let defaultcolumns = this.state.defaultcolumns[0]; - let columnclassname = this.state.columnclassname[0]; let dataLoadstatus = false; - - await schedulingUnits.map(su => { + for (let su of schedulingUnits) { su['priority_queue'] = su.priority_queue_value; su.taskDetails = su.type==="Draft"?su.task_drafts:su.task_blueprints; const targetObserv = su.taskDetails ? su.taskDetails.find(task => task.specifications_template.type_value==='observation' && (task.specifications_doc.SAPs || task.specifications_doc.target)) : null; - // const targetObservationSAPs = su.taskDetails.find(task => task.specifications_template.name==='target observation'); - // if (targetObservationSAPs.specifications_doc && targetObservationSAPs.specifications_doc.SAPs) { - // su['target_observation_sap'] = targetObservationSAPs.specifications_doc.SAPs.length; - // } else { - // su['target_observation_sap'] = 0; - // } - // Addin target pointing fields as separate column - // if (targetObserv && targetObserv.specifications_doc) { su['priority_queue'] = su.priority_queue_value; if (targetObserv) { this.suTypeColumnToBeRemove = []; + let targetNames = []; + let targetAngle1s = []; + let targetAngle2s = []; + let targetRefs = []; su['target_observation_sap'] = targetObserv.specifications_doc.target? targetObserv.specifications_doc.target.SAPs.length: targetObserv.specifications_doc.SAPs.length; let SAPs = targetObserv.specifications_doc.target? targetObserv.specifications_doc.target.SAPs: targetObserv.specifications_doc.SAPs - SAPs.map((target, index) => { - su[`target${index}angle1`] = UnitConverter.getAngleInput(target.digital_pointing.angle1); - su[`target${index}angle2`] = UnitConverter.getAngleInput(target.digital_pointing.angle2,true); - su[`target${index}referenceframe`] = target.digital_pointing.direction_type; - if (index === 0 ){ - defaultcolumns[`target${index}angle1`] = {name: `Target ${index + 1} - Angle 1`}; - defaultcolumns[`target${index}angle2`] = {name: `Target ${index + 1} - Angle 2`}; - defaultcolumns[`target${index}referenceframe`] = {name: `Target ${index + 1} - Reference Frame`}; - } else { - optionalColumns[`target${index}angle1`] = {name: `Target ${index + 1} - Angle 1`}; - optionalColumns[`target${index}angle2`] = {name: `Target ${index + 1} - Angle 2`}; - /*optionalColumns[`target${index}referenceframe`] = { - name: `Target ${index + 1} - Reference Frame`, - filter: "select" - };*/ //TODO: Need to check why this code is not working - optionalColumns[`target${index}referenceframe`] = {name: `Target ${index + 1} - Reference Frame`}; - } - this.suTypeColumnToBeRemove.push(`target${index}angle1`); - this.suTypeColumnToBeRemove.push(`target${index}angle2`); - this.suTypeColumnToBeRemove.push(`target${index}referenceframe`); - columnclassname[`Target ${index + 1} - Angle 1`] = "filter-input-75"; - columnclassname[`Target ${index + 1} - Angle 2`] = "filter-input-75"; - columnclassname[`Target ${index + 1} - Reference Frame`] = "filter-input-75"; - return target; - }); + for (const target of SAPs) { + // targetNames.push(target.digital_pointing.target) ; + targetNames.push(target.name) ; + targetAngle1s.push(UnitConverter.getAngleInput(target.digital_pointing.angle1)); + targetAngle2s.push(UnitConverter.getAngleInput(target.digital_pointing.angle2, true)); + targetRefs.push(target.digital_pointing.direction_type); + }; + su['targetName'] = this.formatListToNewLineText(targetNames); + su['targetAngle1'] = this.formatListToNewLineText(targetAngle1s); + su['targetAngle2'] = this.formatListToNewLineText(targetAngle2s); + su['targetRef'] = this.formatListToNewLineText(targetRefs); } else { su['target_observation_sap'] = 0; } - return su; - }); + } await this.setState({ - scheduleunit: schedulingUnits, isLoading: false, optionalColumns: [optionalColumns], - columnclassname: [columnclassname], loadingStatus: dataLoadstatus + scheduleunit: schedulingUnits, isLoading: false, loadingStatus: dataLoadstatus }); this.getFilterColumns(this.changesutype()); } diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/create.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/create.js index 85f49409c64edb6e561a45c74816782cd75f4eb6..b0afedca78429ddc834977a1b6b352ecdea13183 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/create.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/create.js @@ -401,12 +401,8 @@ export class SchedulingUnitCreate extends Component { } } if (constStrategy.sky.transit_offset) { - constStrategy.sky.transit_offset.from = UnitConversion.getHHmmssToSecs(constStrategy.sky.transit_offset.from)*(constStrategy.sky.transit_offset.fromoffset === '-'? -1:1); - constStrategy.sky.transit_offset.to = UnitConversion.getHHmmssToSecs(constStrategy.sky.transit_offset.to)*(constStrategy.sky.transit_offset.tooffset === '-'? -1:1); - delete constStrategy.sky.transit_offset.fromoffset; - delete constStrategy.sky.transit_offset.tooffset - delete this.constraintTemplates[0].schema.properties.sky.properties.transit_offset.properties.fromoffset; - delete this.constraintTemplates[0].schema.properties.sky.properties.transit_offset.properties.tooffset; + constStrategy.sky.transit_offset.from = UnitConversion.getHHmmssToSecs(constStrategy.sky.transit_offset.from); + constStrategy.sky.transit_offset.to = UnitConversion.getHHmmssToSecs(constStrategy.sky.transit_offset.to); } //station diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/edit.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/edit.js index 602144c605297c8601214d4b36a8581c8358304e..50e40dc823a5df4faf6e6ac4bb39dc1234837ef5 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/edit.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/edit.js @@ -427,12 +427,8 @@ export class EditSchedulingUnit extends Component { } const schUnit = { ...this.state.schedulingUnit }; if (constStrategy.sky.transit_offset) { - constStrategy.sky.transit_offset.from = UnitConversion.getHHmmssToSecs(constStrategy.sky.transit_offset.from)*(constStrategy.sky.transit_offset.fromoffset === '-'? -1:1); - constStrategy.sky.transit_offset.to = UnitConversion.getHHmmssToSecs(constStrategy.sky.transit_offset.to)*(constStrategy.sky.transit_offset.tooffset === '-'? -1:1); - delete constStrategy.sky.transit_offset.fromoffset; - delete constStrategy.sky.transit_offset.tooffset - //delete this.constraintTemplates[0].schema.properties.sky.properties.transit_offset.properties.fromoffset; - //delete this.constraintTemplates[0].schema.properties.sky.properties.transit_offset.properties.tooffset; + constStrategy.sky.transit_offset.from = UnitConversion.getHHmmssToSecs(constStrategy.sky.transit_offset.from); + constStrategy.sky.transit_offset.to = UnitConversion.getHHmmssToSecs(constStrategy.sky.transit_offset.to); } schUnit.scheduling_constraints_doc = constStrategy; //station diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/view.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/view.js index ebe521e5ab00d89f05366a2cea8b33f65fb721aa..963bb552796a07bda456ef824bfcf86c94451bae 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/view.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/view.js @@ -192,8 +192,12 @@ export class TimelineView extends Component { }) } } - } - UnitConversion.degreeToRadians(constStrategy.sky); + } + if (constStrategy.sky.transit_offset) { + constStrategy.sky.transit_offset.from = UnitConversion.getHHmmssToSecs(constStrategy.sky.transit_offset.from); + constStrategy.sky.transit_offset.to = UnitConversion.getHHmmssToSecs(constStrategy.sky.transit_offset.to); + } + UnitConversion.degreeToRadians(constStrategy.sky); // getConstraintsEditorOutputService - service call is done for getting updated blueprint id const bluePrintValue = await ScheduleService.getConstraintsEditorOutputService(id); diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/week.view.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/week.view.js index d419a076858a7e554f5b3185ed27ebd250775d61..6760ca0a368098e853124ef3c0325e404c3eefa1 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/week.view.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/week.view.js @@ -181,8 +181,12 @@ export class WeekTimelineView extends Component { }) } } - } - UnitConversion.degreeToRadians(constStrategy.sky); + } + if (constStrategy.sky.transit_offset) { + constStrategy.sky.transit_offset.from = UnitConversion.getHHmmssToSecs(constStrategy.sky.transit_offset.from); + constStrategy.sky.transit_offset.to = UnitConversion.getHHmmssToSecs(constStrategy.sky.transit_offset.to); + } + UnitConversion.degreeToRadians(constStrategy.sky); // getConstraintsEditorOutputService - service call is done for getting updated blueprint id const bluePrintValue = await ScheduleService.getConstraintsEditorOutputService(id); 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 22c07f6e8d3e8cf000ebf14ded24ea8951608792..345e6adbdfc27cbe75bfa9faaa768119b9e47260 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/utils/unit.converter.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/utils/unit.converter.js @@ -82,20 +82,13 @@ const UnitConverter = { } return seconds; }, - getHHmmssToSecs: function (seconds) { - if (seconds) { - seconds = _.trim(seconds); - const strSeconds = _.split(seconds, ":"); - let prefix = 1; - if (_.startsWith(strSeconds[0], '-')) { - prefix = -1; - const startPosition = strSeconds[0].indexOf("-"); - strSeconds[0] = strSeconds[0].substring(startPosition+1, strSeconds[0].length); - } else if (_.startsWith(strSeconds[0], '+')) { - const startPosition = strSeconds[0].indexOf("+"); - strSeconds[0] = strSeconds[0].substring(startPosition+1, strSeconds[0].length); - } - return strSeconds.length > 2 ?prefix * (_.trim(strSeconds[0]) * 3600 + strSeconds[1] * 60 + Number(strSeconds[2])): seconds; + getHHmmssToSecs: function (time) { + if (time) { + time = _.trim(time); + let prefix = _.startsWith(time, '-')?-1:1; + time = time.replace("-","").replace("+",""); + const strSeconds = _.split(time, ":"); + return prefix * (strSeconds[0] * 3600 + strSeconds[1] * 60 + Number(strSeconds[2])); } return 0; },