add submissionId to fieldparser, and refactor to create fieldparsers using DI

This commit is contained in:
Art Lowel
2019-11-05 15:53:41 +01:00
parent 82367ea778
commit d255838265
29 changed files with 352 additions and 167 deletions

View File

@@ -1,6 +1,12 @@
import { StaticProvider } from '@angular/core';
import { ParserType } from './parser-type';
import { GenericConstructor } from '../../../../core/shared/generic-constructor';
import { FieldParser } from './field-parser';
import {
CONFIG_DATA,
FieldParser,
INIT_FORM_VALUES,
PARSER_OPTIONS,
SUBMISSION_ID
} from './field-parser';
import { DateFieldParser } from './date-field-parser';
import { DropdownFieldParser } from './dropdown-field-parser';
import { RelationGroupFieldParser } from './relation-group-field-parser';
@@ -13,41 +19,92 @@ import { SeriesFieldParser } from './series-field-parser';
import { TagFieldParser } from './tag-field-parser';
import { TextareaFieldParser } from './textarea-field-parser';
const fieldParserDeps = [
SUBMISSION_ID,
CONFIG_DATA,
INIT_FORM_VALUES,
PARSER_OPTIONS,
];
export class ParserFactory {
public static getConstructor(type: ParserType): GenericConstructor<FieldParser> {
public static getProvider(type: ParserType): StaticProvider {
switch (type) {
case ParserType.Date: {
return DateFieldParser
return {
provide: FieldParser,
useClass: DateFieldParser,
deps: [...fieldParserDeps]
}
}
case ParserType.Dropdown: {
return DropdownFieldParser
return {
provide: FieldParser,
useClass: DropdownFieldParser,
deps: [...fieldParserDeps]
}
}
case ParserType.RelationGroup: {
return RelationGroupFieldParser
return {
provide: FieldParser,
useClass: RelationGroupFieldParser,
deps: [...fieldParserDeps]
}
}
case ParserType.List: {
return ListFieldParser
return {
provide: FieldParser,
useClass: ListFieldParser,
deps: [...fieldParserDeps]
}
}
case ParserType.Lookup: {
return LookupFieldParser
return {
provide: FieldParser,
useClass: LookupFieldParser,
deps: [...fieldParserDeps]
}
}
case ParserType.LookupName: {
return LookupNameFieldParser
return {
provide: FieldParser,
useClass: LookupNameFieldParser,
deps: [...fieldParserDeps]
}
}
case ParserType.Onebox: {
return OneboxFieldParser
return {
provide: FieldParser,
useClass: OneboxFieldParser,
deps: [...fieldParserDeps]
}
}
case ParserType.Name: {
return NameFieldParser
return {
provide: FieldParser,
useClass: NameFieldParser,
deps: [...fieldParserDeps]
}
}
case ParserType.Series: {
return SeriesFieldParser
return {
provide: FieldParser,
useClass: SeriesFieldParser,
deps: [...fieldParserDeps]
}
}
case ParserType.Tag: {
return TagFieldParser
return {
provide: FieldParser,
useClass: TagFieldParser,
deps: [...fieldParserDeps]
}
}
case ParserType.Textarea: {
return TextareaFieldParser
return {
provide: FieldParser,
useClass: TextareaFieldParser,
deps: [...fieldParserDeps]
}
}
default: {