diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Reservation/reservation.create.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Reservation/reservation.create.js index 2b657133c940fa7dc3fa80f3178685ff8dd0b9d7..510f8ccd624b9999e706c619a6e4035914ba676c 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Reservation/reservation.create.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Reservation/reservation.create.js @@ -99,7 +99,7 @@ export class ReservationCreate extends Component { this.reservationTemplates = responses[1]; let systemTime = moment.utc(responses[2]); this.reservationStrategies = responses[3]; - let reservationTemplate = this.reservationTemplates.find(reason => reason.name === 'resource reservation'); + let reservationTemplate = this.reservationTemplates.length>0?this.reservationTemplates[0]:null; let schema = { properties: {} }; @@ -107,13 +107,12 @@ export class ReservationCreate extends Component { schema = reservationTemplate.schema; } this.setState({ - paramsSchema: schema, + paramsSchema: _.cloneDeep(schema), isLoading: false, reservationTemplate: reservationTemplate, systemTime: systemTime, }); }); - } /** @@ -123,6 +122,7 @@ export class ReservationCreate extends Component { async changeStrategy(strategyId) { this.setState({ isLoading: true }); const reservationStrategy = _.find(this.reservationStrategies, { 'id': strategyId }); + const reservationTemplate = _.find(this.reservationTemplates, { 'id': reservationStrategy.reservation_template_id}); let paramsOutput = {}; if (reservationStrategy.template.parameters) { //if reservation strategy has parameter then prepare output parameter @@ -133,11 +133,19 @@ export class ReservationCreate extends Component { } this.setState({ isLoading: false, + reservationTemplate: reservationTemplate, reservationStrategy: reservationStrategy, + paramsSchema: _.cloneDeep(reservationTemplate.schema), paramsOutput: paramsOutput, isDirty: true }); - this.initReservation(); + if (this.state.editorFunction) { + if (this.state.reservationTemplate === reservationTemplate) { + this.state.editorFunction("setValue", paramsOutput); + } else { + this.state.editorFunction(); + } + } } /** @@ -308,7 +316,7 @@ export class ReservationCreate extends Component { reservation['start_time'] = moment(reservation['start_time']).format(UIConstants.CALENDAR_DATETIME_FORMAT); reservation['stop_time'] = reservation['stop_time'] ? moment(reservation['stop_time']).format(UIConstants.CALENDAR_DATETIME_FORMAT) : null; reservation['project'] = project ? project.url : null; - reservation['specifications_template'] = this.reservationTemplates[0].url; + reservation['specifications_template'] = this.state.reservationTemplate.url; reservation['specifications_doc'] = this.paramsOutput; reservation = await ReservationService.saveReservation(reservation); if (reservation && reservation.id) {