diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Project/create.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Project/create.js index 68259927abb4b36ad56528fc2f6e9465efda44e0..d69dc73686abba00b3912658ba7add7c9f39b9e2 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Project/create.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Project/create.js @@ -53,7 +53,8 @@ export class ProjectCreate extends Component { this.formRules = { name: {required: true, message: "Name can not be empty"}, description: {required: true, message: "Description can not be empty"}, - priority_rank: {required: true, message: "Enter Project Rank"} + priority_rank: {required: true, message: "Enter Project Rank"}, + archive_subdirectory: {required:true, message:"Enter Storage Path"} }; this.defaultResourcesEnabled = true; // This property and functionality to be concluded based on PO input this.defaultResources = [{name:'LOFAR Observing Time'}, @@ -185,7 +186,7 @@ export class ProjectCreate extends Component { break; } case 'SUB-DIRECTORY': { - const directory = value.replaceAll(' ', '_'); + const directory = value.split(' ').join('_'); project[key] = (directory.substr(-1) === '/' ? directory : `${directory}/`).toLowerCase(); break; } @@ -479,14 +480,17 @@ export class ProjectCreate extends Component { </div> <div className="col-lg-1 col-md-1 col-sm-12"></div> - <label htmlFor="ltastoragepath" className="col-lg-2 col-md-2 col-sm-12">LTA Storage Path </label> + <label htmlFor="ltastoragepath" className="col-lg-2 col-md-2 col-sm-12">LTA Storage Path <span style={{color:'red'}}>*</span> </label> <div className="col-lg-3 col-md-3 col-sm-12"> - <InputText disabled className={this.state.errors.archive_subdirectory ?'input-error':''} id="StoragePath" data-testid="name" + <InputText className={this.state.errors.archive_subdirectory ?'input-error':''} id="StoragePath" data-testid="name" tooltip="Enter storage relative path" tooltipOptions={this.tooltipOptions} maxLength="128" value={this.state.project.archive_subdirectory} onChange={(e) => this.setProjectParams('archive_subdirectory', e.target.value, 'SUB-DIRECTORY')} onBlur={(e) => this.setProjectParams('archive_subdirectory', e.target.value,'SUB-DIRECTORY')}/> </div> + <label className="error"> + {this.state.errors.archive_subdirectory ? this.state.errors.archive_subdirectory : ""} + </label> </div> {this.defaultResourcesEnabled && this.state.resourceList && <div className="p-fluid"> diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Project/edit.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Project/edit.js index 380f13379f8b56d0732f48e036be01c24ee30fc7..c193f7a710e75f09d16f3060e5b286284504946c 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Project/edit.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Project/edit.js @@ -49,7 +49,8 @@ export class ProjectEdit extends Component { this.formRules = { name: {required: true, message: "Name can not be empty"}, description: {required: true, message: "Description can not be empty"}, - priority_rank: {required: true, message: "Enter Project Rank"} + priority_rank: {required: true, message: "Enter Project Rank"}, + archive_subdirectory: {required:true, message: "Enter Storage Path"} }; this.defaultResources = [{name:'LOFAR Observing Time'}, {name:'LOFAR Observing Time prio A'}, @@ -205,8 +206,14 @@ export class ProjectEdit extends Component { project[key] = value?parseInt(value):0; break; } + case 'SUB-DIRECTORY': { + const directory = value.split(' ').join('_'); + project[key] = (directory.substr(-1) === '/' ? directory : `${directory}/`).toLowerCase(); + break; + } case 'PROJECT_NAME': { project[key] = value; + const directory = value.split(' ').join('_'); project['archive_subdirectory'] = (value.substr(-1) === '/' ? value.slice(0, -1) : value).toLowerCase(); break; } @@ -488,15 +495,15 @@ export class ProjectEdit extends Component { </div> <div className="col-lg-1 col-md-1 col-sm-12"></div> - <label htmlFor="ltastoragepath" className="col-lg-2 col-md-2 col-sm-12">LTA Storage Path </label> + <label htmlFor="ltastoragepath" className="col-lg-2 col-md-2 col-sm-12">LTA Storage Path <span style={{color:'red'}}>*</span> </label> <div className="col-lg-3 col-md-3 col-sm-12"> <InputText className={this.state.errors.archive_subdirectory ?'input-error':''} id="StoragePath" data-testid="name" tooltip="Enter storage relative path" tooltipOptions={this.tooltipOptions} maxLength="128" - value={this.state.project.archive_subdirectory} + defaultValue={this.state.project.archive_subdirectory} onChange={(e) => this.setProjectParams('archive_subdirectory', e.target.value, 'SUB-DIRECTORY')} onBlur={(e) => this.setProjectParams('archive_subdirectory', e.target.value,'SUB-DIRECTORY')}/> - <label className={this.state.errors.archieve_subdirectory?"error":"info"}> - {this.state.errors.archieve_subdirectory? this.state.archieve_subdirectory : "Max 128 characters"} + <label className="error"> + {this.state.errors.archive_subdirectory? this.state.archive_subdirectory : ""} </label> </div> </div>