diff --git a/resources/i18n/en.json5 b/resources/i18n/en.json5 index 7b814fd5bc..385fefd156 100644 --- a/resources/i18n/en.json5 +++ b/resources/i18n/en.json5 @@ -1614,6 +1614,24 @@ + "process.new.select-parameters": "Parameters", + + "process.new.submit": "Submit", + + "process.new.select-script": "Script", + + "process.new.select-script.placeholder": "Choose a script...", + + "process.new.select-script.required": "Script is required", + + "process.new.parameter.file.upload-button": "Select file...", + + "process.new.parameter.file.required": "Please select a file", + + "process.new.parameter.string.required": "Parameter value is required", + + + "publication.listelement.badge": "Publication", "publication.page.description": "Description", diff --git a/src/app/core/data/processes/script-data.service.ts b/src/app/core/data/processes/script-data.service.ts index 66f81baffe..9841ef3862 100644 --- a/src/app/core/data/processes/script-data.service.ts +++ b/src/app/core/data/processes/script-data.service.ts @@ -1,6 +1,5 @@ import { Injectable } from '@angular/core'; import { DataService } from '../data.service'; -import { RequestService } from '../request.service'; import { RemoteDataBuildService } from '../../cache/builders/remote-data-build.service'; import { Store } from '@ngrx/store'; import { CoreState } from '../../core.reducers'; @@ -10,6 +9,11 @@ import { NotificationsService } from '../../../shared/notifications/notification import { HttpClient } from '@angular/common/http'; import { DefaultChangeAnalyzer } from '../default-change-analyzer.service'; import { Script } from '../../../process-page/scripts/script.model'; +import { ProcessParameter } from '../../../process-page/processes/process-parameter.model'; +import { map } from 'rxjs/operators'; +import { URLCombiner } from '../../url-combiner/url-combiner'; +import { MultipartPostRequest, RestRequest } from '../request.models'; +import { RequestService } from '../request.service'; @Injectable() export class ScriptDataService extends DataService
-
- - + + + +
-
+ diff --git a/src/app/process-page/new/new-process.component.ts b/src/app/process-page/new/new-process.component.ts index 57da770dd9..0c98d4d8b4 100644 --- a/src/app/process-page/new/new-process.component.ts +++ b/src/app/process-page/new/new-process.component.ts @@ -1,6 +1,8 @@ import { Component, OnInit } from '@angular/core'; import { Script } from '../scripts/script.model'; import { Process } from '../processes/process.model'; +import { ProcessParameter } from '../processes/process-parameter.model'; +import { ScriptDataService } from '../../core/data/processes/script-data.service'; @Component({ selector: 'ds-new-process', @@ -10,13 +12,32 @@ import { Process } from '../processes/process.model'; export class NewProcessComponent implements OnInit { public selectedScript: Script; public process: Process; + public parameters: ProcessParameter[]; + public files: File[] = []; + + constructor(private scriptService: ScriptDataService) { + } ngOnInit(): void { this.process = new Process(); } - selectScript(script: Script) { - this.selectedScript = script; - console.log('selected script: ', script); + submitForm() { + const stringParameters: ProcessParameter[] = this.parameters.map((parameter: ProcessParameter) => { + return { + name: parameter.name, + value: this.checkValue(parameter) + }; + } + ); + this.scriptService.invocate(this.selectedScript.id, stringParameters, this.files) + } + + checkValue(processParameter: ProcessParameter): string { + if (typeof processParameter.value === 'object') { + this.files = [...this.files, processParameter.value]; + return processParameter.value.name; + } + return processParameter.value; } } diff --git a/src/app/process-page/new/process-parameters/parameter-select/parameter-select.component.html b/src/app/process-page/new/process-parameters/parameter-select/parameter-select.component.html index 63aa5afaf9..204b90dc77 100644 --- a/src/app/process-page/new/process-parameters/parameter-select/parameter-select.component.html +++ b/src/app/process-page/new/process-parameters/parameter-select/parameter-select.component.html @@ -9,7 +9,7 @@ {{param.nameLong || param.name}} - + diff --git a/src/app/process-page/new/process-parameters/parameter-select/parameter-select.component.ts b/src/app/process-page/new/process-parameters/parameter-select/parameter-select.component.ts index 42ae16ca1c..b0145b10a3 100644 --- a/src/app/process-page/new/process-parameters/parameter-select/parameter-select.component.ts +++ b/src/app/process-page/new/process-parameters/parameter-select/parameter-select.component.ts @@ -31,6 +31,7 @@ export class ParameterSelectComponent implements OnInit { set selectedParameter(value: string) { this.parameterValue.name = value; + this.selectedParameterValue = undefined; this.changeParameter.emit(this.parameterValue); } diff --git a/src/app/process-page/new/process-parameters/parameter-value-input/boolean-value-input/boolean-value-input.component.html b/src/app/process-page/new/process-parameters/parameter-value-input/boolean-value-input/boolean-value-input.component.html new file mode 100644 index 0000000000..85b27713d2 --- /dev/null +++ b/src/app/process-page/new/process-parameters/parameter-value-input/boolean-value-input/boolean-value-input.component.html @@ -0,0 +1 @@ + diff --git a/src/app/process-page/new/process-parameters/parameter-value-input/boolean-value-input/boolean-value-input.component.scss b/src/app/process-page/new/process-parameters/parameter-value-input/boolean-value-input/boolean-value-input.component.scss new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/app/process-page/new/process-parameters/parameter-value-input/boolean-value-input/boolean-value-input.component.spec.ts b/src/app/process-page/new/process-parameters/parameter-value-input/boolean-value-input/boolean-value-input.component.spec.ts new file mode 100644 index 0000000000..824d922236 --- /dev/null +++ b/src/app/process-page/new/process-parameters/parameter-value-input/boolean-value-input/boolean-value-input.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { BooleanValueInputComponent } from './boolean-value-input.component'; + +describe('StringValueInputComponent', () => { + let component: BooleanValueInputComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ BooleanValueInputComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(BooleanValueInputComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/process-page/new/process-parameters/parameter-value-input/boolean-value-input/boolean-value-input.component.ts b/src/app/process-page/new/process-parameters/parameter-value-input/boolean-value-input/boolean-value-input.component.ts new file mode 100644 index 0000000000..0c4faf0667 --- /dev/null +++ b/src/app/process-page/new/process-parameters/parameter-value-input/boolean-value-input/boolean-value-input.component.ts @@ -0,0 +1,13 @@ +import { Component, OnInit } from '@angular/core'; +import { ValueInputComponent } from '../value-input.component'; + +@Component({ + selector: 'ds-boolean-value-input', + templateUrl: './boolean-value-input.component.html', + styleUrls: ['./boolean-value-input.component.scss'] +}) +export class BooleanValueInputComponent extends ValueInputComponent implements OnInit { + ngOnInit() { + this.updateValue.emit(true) + } +} diff --git a/src/app/process-page/new/process-parameters/parameter-value-input/date-value-input/date-value-input.component.html b/src/app/process-page/new/process-parameters/parameter-value-input/date-value-input/date-value-input.component.html new file mode 100644 index 0000000000..3b349bfd43 --- /dev/null +++ b/src/app/process-page/new/process-parameters/parameter-value-input/date-value-input/date-value-input.component.html @@ -0,0 +1,7 @@ + +
+
+ {{'process.new.parameter.string.required' | translate}} +
+
diff --git a/src/app/process-page/new/process-parameters/parameter-value-input/date-value-input/date-value-input.component.scss b/src/app/process-page/new/process-parameters/parameter-value-input/date-value-input/date-value-input.component.scss new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/app/process-page/new/process-parameters/parameter-value-input/date-value-input/date-value-input.component.spec.ts b/src/app/process-page/new/process-parameters/parameter-value-input/date-value-input/date-value-input.component.spec.ts new file mode 100644 index 0000000000..5c4b44c3a3 --- /dev/null +++ b/src/app/process-page/new/process-parameters/parameter-value-input/date-value-input/date-value-input.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DateValueInputComponent } from './date-value-input.component'; + +describe('StringValueInputComponent', () => { + let component: DateValueInputComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ DateValueInputComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(DateValueInputComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/process-page/new/process-parameters/parameter-value-input/date-value-input/date-value-input.component.ts b/src/app/process-page/new/process-parameters/parameter-value-input/date-value-input/date-value-input.component.ts new file mode 100644 index 0000000000..f266bebb9a --- /dev/null +++ b/src/app/process-page/new/process-parameters/parameter-value-input/date-value-input/date-value-input.component.ts @@ -0,0 +1,16 @@ +import { Component, OnInit } from '@angular/core'; +import { ValueInputComponent } from '../value-input.component'; + +@Component({ + selector: 'ds-date-value-input', + templateUrl: './date-value-input.component.html', + styleUrls: ['./date-value-input.component.scss'] +}) +export class DateValueInputComponent extends ValueInputComponent { + value: string; + + setValue(value) { + this.value = value; + this.updateValue.emit(value) + } +} diff --git a/src/app/process-page/new/process-parameters/parameter-value-input/file-value-input/file-value-input.component.html b/src/app/process-page/new/process-parameters/parameter-value-input/file-value-input/file-value-input.component.html index cb211e607b..aa58d1ffac 100644 --- a/src/app/process-page/new/process-parameters/parameter-value-input/file-value-input/file-value-input.component.html +++ b/src/app/process-page/new/process-parameters/parameter-value-input/file-value-input/file-value-input.component.html @@ -1,6 +1,10 @@ - + + +
+
+ {{'process.new.parameter.file.required' | translate}} +
+
diff --git a/src/app/process-page/new/process-parameters/parameter-value-input/file-value-input/file-value-input.component.ts b/src/app/process-page/new/process-parameters/parameter-value-input/file-value-input/file-value-input.component.ts index d0fa9793d3..ce54207312 100644 --- a/src/app/process-page/new/process-parameters/parameter-value-input/file-value-input/file-value-input.component.ts +++ b/src/app/process-page/new/process-parameters/parameter-value-input/file-value-input/file-value-input.component.ts @@ -1,33 +1,16 @@ -import { Component, OnInit } from '@angular/core'; -import { FileUploaderOptions } from 'ng2-file-upload'; -import { UploaderOptions } from '../../../../../shared/uploader/uploader-options.model'; +import { Component } from '@angular/core'; +import { ValueInputComponent } from '../value-input.component'; @Component({ selector: 'ds-file-value-input', templateUrl: './file-value-input.component.html', styleUrls: ['./file-value-input.component.scss'] }) -export class FileValueInputComponent implements OnInit { - uploadFilesOptions: FileUploaderOptions; - - constructor() { - } - - ngOnInit() { - this.uploadFilesOptions = new UploaderOptions(); - this.uploadFilesOptions.autoUpload = false; - this.uploadFilesOptions.url = 'bladibla'; - this.uploadFilesOptions.authToken = 'bladibla'; - this.uploadFilesOptions.disableMultipart = true; - this.uploadFilesOptions.formatDataFunctionIsAsync = false; - this.uploadFilesOptions.formatDataFunction((t) => console.log(t)); - } - - onCompleteItem() { - - } - - onUploadError() { - +export class FileValueInputComponent extends ValueInputComponent { + file: File; + setFile(files) { + this.file = files.length > 0 ? files[0] : undefined; + console.log(this.file); + this.updateValue.emit(this.file); } } diff --git a/src/app/process-page/new/process-parameters/parameter-value-input/parameter-value-input.component.html b/src/app/process-page/new/process-parameters/parameter-value-input/parameter-value-input.component.html index 22d60c8f7f..15261975b9 100644 --- a/src/app/process-page/new/process-parameters/parameter-value-input/parameter-value-input.component.html +++ b/src/app/process-page/new/process-parameters/parameter-value-input/parameter-value-input.component.html @@ -1,4 +1,7 @@
- - + + + + +
diff --git a/src/app/process-page/new/process-parameters/parameter-value-input/parameter-value-input.component.ts b/src/app/process-page/new/process-parameters/parameter-value-input/parameter-value-input.component.ts index 17c627b371..5adb96505d 100644 --- a/src/app/process-page/new/process-parameters/parameter-value-input/parameter-value-input.component.ts +++ b/src/app/process-page/new/process-parameters/parameter-value-input/parameter-value-input.component.ts @@ -1,4 +1,4 @@ -import { Component, Input, OnChanges, OnInit } from '@angular/core'; +import { Component, EventEmitter, Input, OnChanges, OnInit, Output } from '@angular/core'; import { ScriptParameterType } from '../../../scripts/script-parameter-type.model'; import { ScriptParameter } from '../../../scripts/script-parameter.model'; @@ -9,5 +9,6 @@ import { ScriptParameter } from '../../../scripts/script-parameter.model'; }) export class ParameterValueInputComponent { @Input() parameter: ScriptParameter; + @Output() updateValue: EventEmitter = new EventEmitter(); parameterTypes = ScriptParameterType; } diff --git a/src/app/process-page/new/process-parameters/parameter-value-input/string-value-input/string-value-input.component.html b/src/app/process-page/new/process-parameters/parameter-value-input/string-value-input/string-value-input.component.html index e572624f22..e0693efffa 100644 --- a/src/app/process-page/new/process-parameters/parameter-value-input/string-value-input/string-value-input.component.html +++ b/src/app/process-page/new/process-parameters/parameter-value-input/string-value-input/string-value-input.component.html @@ -1 +1,7 @@ - + +
+
+ {{'process.new.parameter.string.required' | translate}} +
+
diff --git a/src/app/process-page/new/process-parameters/parameter-value-input/string-value-input/string-value-input.component.ts b/src/app/process-page/new/process-parameters/parameter-value-input/string-value-input/string-value-input.component.ts index 5c88523d8d..86db8b87d9 100644 --- a/src/app/process-page/new/process-parameters/parameter-value-input/string-value-input/string-value-input.component.ts +++ b/src/app/process-page/new/process-parameters/parameter-value-input/string-value-input/string-value-input.component.ts @@ -1,15 +1,16 @@ import { Component, OnInit } from '@angular/core'; +import { ValueInputComponent } from '../value-input.component'; @Component({ selector: 'ds-string-value-input', templateUrl: './string-value-input.component.html', styleUrls: ['./string-value-input.component.scss'] }) -export class StringValueInputComponent implements OnInit { +export class StringValueInputComponent extends ValueInputComponent { + value: string; - constructor() { } - - ngOnInit() { + setValue(value) { + this.value = value; + this.updateValue.emit(value) } - } diff --git a/src/app/process-page/new/process-parameters/parameter-value-input/value-input.component.ts b/src/app/process-page/new/process-parameters/parameter-value-input/value-input.component.ts new file mode 100644 index 0000000000..949c48728d --- /dev/null +++ b/src/app/process-page/new/process-parameters/parameter-value-input/value-input.component.ts @@ -0,0 +1,5 @@ +import { EventEmitter, Output } from '@angular/core'; + +export abstract class ValueInputComponent { + @Output() updateValue: EventEmitter = new EventEmitter() +} diff --git a/src/app/process-page/new/process-parameters/process-parameters.component.html b/src/app/process-page/new/process-parameters/process-parameters.component.html index 98c364cbee..24e9c9b1e3 100644 --- a/src/app/process-page/new/process-parameters/process-parameters.component.html +++ b/src/app/process-page/new/process-parameters/process-parameters.component.html @@ -1,5 +1,5 @@
- + = new EventEmitter(); parameterValues: ProcessParameter[]; ngOnChanges(changes: SimpleChanges): void { @@ -27,6 +29,7 @@ export class ProcessParametersComponent implements OnChanges { if (index === this.parameterValues.length - 1) { this.addParameter(); } + this.updateParameters.emit(this.parameterValues.filter((param: ProcessParameter) => hasValue(param.name))); } removeParameter(index: number) { diff --git a/src/app/process-page/new/scripts-select/scripts-select.component.html b/src/app/process-page/new/scripts-select/scripts-select.component.html index 781566aec8..44b06079ae 100644 --- a/src/app/process-page/new/scripts-select/scripts-select.component.html +++ b/src/app/process-page/new/scripts-select/scripts-select.component.html @@ -1,11 +1,11 @@
- +