Skip to content

Commit 4cc424e

Browse files
committed
view field rework; a lot of stuff is broken
1 parent fc88234 commit 4cc424e

File tree

77 files changed

+442
-251
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

77 files changed

+442
-251
lines changed

exampleVault/Input Fields/Inline Select.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
select: a
33
select2: 1
4-
select3: 1 hour
4+
select3: 2 hours
55
---
66

77
```meta-bind
@@ -14,4 +14,4 @@ INPUT[inlineSelect(option(1, a), option(2, b), showcase):select2]
1414

1515
```meta-bind
1616
INPUT[inlineSelect(option(1 hour, a), option(2 hours, b), showcase):select3]
17-
```
17+
```

src/api/API.ts

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,5 @@
11
import { InputFieldMDRC, RenderChildType } from '../renderChildren/InputFieldMDRC';
2-
import {
3-
JsViewFieldDeclaration,
4-
UnvalidatedViewFieldDeclaration,
5-
ViewFieldDeclaration,
6-
ViewFieldDeclarationParser,
7-
} from '../parsers/ViewFieldDeclarationParser';
2+
import { ViewFieldDeclarationParser } from '../parsers/viewFieldParser/ViewFieldDeclarationParser';
83
import { BindTargetParser } from '../parsers/BindTargetParser';
94
import { ViewFieldMDRC } from '../renderChildren/ViewFieldMDRC';
105
import { JsViewFieldMDRC } from '../renderChildren/JsViewFieldMDRC';
@@ -19,6 +14,7 @@ import { Signal } from '../utils/Signal';
1914
import { BindTargetScope } from '../metadata/BindTargetScope';
2015
import { MetaBindTable } from '../metaBindTable/MetaBindTable';
2116
import { NewInputFieldFactory } from '../inputFields/_new/NewInputFieldFactory';
17+
import { JsViewFieldDeclaration, UnvalidatedViewFieldDeclaration, ViewFieldDeclaration } from '../parsers/viewFieldParser/ViewFieldDeclaration';
2218

2319
export class API implements IAPI {
2420
public plugin: MetaBindPlugin;

src/api/IAPI.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { InputFieldDeclarationParser } from '../parsers/inputFieldParser/InputFieldParser';
2-
import { ViewFieldDeclarationParser } from '../parsers/ViewFieldDeclarationParser';
2+
import { ViewFieldDeclarationParser } from '../parsers/viewFieldParser/ViewFieldDeclarationParser';
33
import { BindTargetParser } from '../parsers/BindTargetParser';
44
import { IPlugin } from '../IPlugin';
55
import { InputFieldAPI } from './InputFieldAPI';

src/api/InputFieldAPI.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@ import { ErrorCollection } from '../utils/errors/ErrorCollection';
33
import { IAPI } from './IAPI';
44
import {
55
UnvalidatedBindTargetDeclaration,
6-
UnvalidatedInputFieldArgument,
6+
UnvalidatedFieldArgument,
77
UnvalidatedInputFieldDeclaration,
88
} from '../parsers/inputFieldParser/InputFieldDeclaration';
9-
import { InputFieldArgumentType, InputFieldType } from '../inputFields/InputFieldConfigs';
9+
import { InputFieldArgumentType, InputFieldType } from '../parsers/inputFieldParser/InputFieldConfigs';
1010

1111
export class InputFieldAPI {
1212
private readonly api: IAPI;
@@ -21,7 +21,7 @@ export class InputFieldAPI {
2121
): UnvalidatedInputFieldDeclaration {
2222
const errorCollection = new ErrorCollection('input field declaration');
2323

24-
const mappedArguments: UnvalidatedInputFieldArgument[] = (inputFieldArguments ?? []).map(x => ({
24+
const mappedArguments: UnvalidatedFieldArgument[] = (inputFieldArguments ?? []).map(x => ({
2525
name: { value: x.name },
2626
value: x.value.map(y => ({ value: y })),
2727
}));
@@ -137,7 +137,7 @@ export class InputFieldAPI {
137137
fullDeclaration: override.fullDeclaration,
138138
inputFieldType: override.inputFieldType !== undefined ? override.inputFieldType : unvalidatedDeclaration.inputFieldType,
139139
bindTarget: bindTarget,
140-
arguments: override.arguments.concat(unvalidatedDeclaration.arguments).reduce<UnvalidatedInputFieldArgument[]>((arr, currentValue) => {
140+
arguments: override.arguments.concat(unvalidatedDeclaration.arguments).reduce<UnvalidatedFieldArgument[]>((arr, currentValue) => {
141141
// filter out duplicates
142142
if (arr.find(x => x.name === currentValue.name) === undefined) {
143143
arr.push(currentValue);
Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,15 @@
1-
import { ErrorLevel, MetaBindArgumentError } from '../utils/errors/MetaBindErrors';
2-
import { InputFieldArgumentConfig, InputFieldArgumentValueConfig, InputFieldType } from '../inputFields/InputFieldConfigs';
31
import { ParsingResultNode } from '../parsers/nomParsers/GeneralParsers';
2+
import { ErrorLevel, MetaBindArgumentError } from '../utils/errors/MetaBindErrors';
3+
import { FieldArgumentConfig, FieldArgumentValueConfig } from '../parsers/GeneralConfigs';
44

5-
export abstract class AbstractInputFieldArgument {
5+
export abstract class AbstractFieldArgument<
6+
FieldType extends string,
7+
FieldArgumentType extends string,
8+
FieldConfig extends FieldArgumentConfig<FieldArgumentType, FieldType>
9+
> {
610
value: any;
711

8-
abstract getConfig(): InputFieldArgumentConfig;
12+
abstract getConfig(): FieldConfig;
913

1014
parseValue(value: ParsingResultNode[]): void {
1115
this.validateValues(value, this.getConfig().values);
@@ -14,7 +18,7 @@ export abstract class AbstractInputFieldArgument {
1418

1519
protected abstract _parseValue(value: ParsingResultNode[]): void;
1620

17-
validateValues(value: ParsingResultNode[], allowedValues: InputFieldArgumentValueConfig[][]): void {
21+
validateValues(value: ParsingResultNode[], allowedValues: FieldArgumentValueConfig[][]): void {
1822
const min = allowedValues[0].length;
1923
const max = allowedValues[allowedValues.length - 1].length;
2024

@@ -29,15 +33,15 @@ export abstract class AbstractInputFieldArgument {
2933
}
3034
}
3135

32-
isAllowed(inputFieldType: InputFieldType): boolean {
33-
if (this.getConfig().allowedInputFieldTypes.length === 0) {
36+
isAllowed(fieldType: FieldType): boolean {
37+
if (this.getConfig().allowedFieldTypes.length === 0) {
3438
return true;
3539
}
3640

37-
return this.getConfig().allowedInputFieldTypes.includes(inputFieldType);
41+
return this.getConfig().allowedFieldTypes.includes(fieldType);
3842
}
3943

40-
getAllowedInputFieldsAsString(): string {
41-
return this.getConfig().allowedInputFieldTypes.length === 0 ? 'all' : this.getConfig().allowedInputFieldTypes.join(', ');
44+
getAllowedFieldsAsString(): string {
45+
return this.getConfig().allowedFieldTypes.length === 0 ? 'all' : this.getConfig().allowedFieldTypes.join(', ');
4246
}
4347
}

src/inputFieldArguments/InputFieldArgumentContainer.ts renamed to src/fieldArguments/AbstractFieldArgumentContainer.ts

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,16 @@
1-
import { AbstractInputFieldArgument } from './AbstractInputFieldArgument';
1+
import { InputFieldArgumentType } from '../parsers/inputFieldParser/InputFieldConfigs';
22
import { ErrorLevel, MetaBindParsingError } from '../utils/errors/MetaBindErrors';
3-
import { InputFieldArgumentType } from '../inputFields/InputFieldConfigs';
3+
import { FieldArgumentConfig } from '../parsers/GeneralConfigs';
4+
import { AbstractFieldArgument } from './AbstractFieldArgument';
45

5-
export class InputFieldArgumentContainer {
6-
arguments: AbstractInputFieldArgument[] = [];
6+
export abstract class AbstractFieldArgumentContainer<
7+
FieldType extends string,
8+
FieldArgumentType extends string,
9+
FieldConfig extends FieldArgumentConfig<FieldArgumentType, FieldType>
10+
> {
11+
arguments: AbstractFieldArgument<FieldType, FieldArgumentType, FieldConfig>[] = [];
712

8-
add(argument: AbstractInputFieldArgument): void {
13+
add(argument: AbstractFieldArgument<FieldType, FieldArgumentType, FieldConfig>): void {
914
this.arguments.push(argument);
1015
}
1116

@@ -30,12 +35,14 @@ export class InputFieldArgumentContainer {
3035
}
3136

3237
/**
33-
* Merges two InputFieldArgumentContainers by overriding.
38+
* Merges two FieldArgumentContainers by overriding.
3439
* The arguments form the other container take priority.
3540
*
3641
* @param other
3742
*/
38-
mergeByOverride(other: InputFieldArgumentContainer): InputFieldArgumentContainer {
43+
mergeByOverride(
44+
other: AbstractFieldArgumentContainer<FieldType, FieldArgumentType, FieldConfig>
45+
): AbstractFieldArgumentContainer<FieldType, FieldArgumentType, FieldConfig> {
3946
for (const argument of other.arguments) {
4047
const argumentConfig = argument.getConfig();
4148
if (!argumentConfig.allowMultiple) {
@@ -51,20 +58,22 @@ export class InputFieldArgumentContainer {
5158
}
5259

5360
/**
54-
* Merges two InputFieldArgumentContainers.
61+
* Merges two FieldArgumentContainers.
5562
* If there is an argument that does not allow duplicates in both containers this will throw an error.
5663
*
5764
* @param other
5865
*/
59-
mergeByThrow(other: InputFieldArgumentContainer): InputFieldArgumentContainer {
66+
mergeByThrow(
67+
other: AbstractFieldArgumentContainer<FieldType, FieldArgumentType, FieldConfig>
68+
): AbstractFieldArgumentContainer<FieldType, FieldArgumentType, FieldConfig> {
6069
for (const argument of other.arguments) {
6170
const argumentConfig = argument.getConfig();
6271
if (!argumentConfig.allowMultiple) {
6372
if (this.arguments.filter(x => x.getConfig().type === argumentConfig.type).length > 0) {
6473
throw new MetaBindParsingError(
6574
ErrorLevel.ERROR,
6675
'failed to merge argument container',
67-
'can not merge InputFieldArgumentContainers, since arguments overlap'
76+
'can not merge FieldArgumentContainers, since arguments overlap'
6877
);
6978
}
7079
}
@@ -77,11 +86,11 @@ export class InputFieldArgumentContainer {
7786
return this;
7887
}
7988

80-
getAll(name: InputFieldArgumentType): AbstractInputFieldArgument[] {
89+
getAll(name: FieldArgumentType): AbstractFieldArgument<FieldType, FieldArgumentType, FieldConfig>[] {
8190
return this.arguments.filter(x => x.getConfig().type === name);
8291
}
8392

84-
get(name: InputFieldArgumentType): AbstractInputFieldArgument | undefined {
93+
get(name: FieldArgumentType): AbstractFieldArgument<FieldType, FieldArgumentType, FieldConfig> | undefined {
8594
return this.getAll(name).at(0);
8695
}
8796
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import { AbstractFieldArgument } from '../AbstractFieldArgument';
2+
import { InputFieldArgumentConfig, InputFieldArgumentType, InputFieldType } from '../../parsers/inputFieldParser/InputFieldConfigs';
3+
4+
export abstract class AbstractInputFieldArgument extends AbstractFieldArgument<InputFieldType, InputFieldArgumentType, InputFieldArgumentConfig> {}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import { InputFieldArgumentConfig, InputFieldArgumentType, InputFieldType } from '../../parsers/inputFieldParser/InputFieldConfigs';
2+
import { AbstractFieldArgumentContainer } from '../AbstractFieldArgumentContainer';
3+
4+
export class InputFieldArgumentContainer extends AbstractFieldArgumentContainer<InputFieldType, InputFieldArgumentType, InputFieldArgumentConfig> {}

src/inputFieldArguments/InputFieldArgumentFactory.ts renamed to src/fieldArguments/inputFieldArguments/InputFieldArgumentFactory.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,14 @@ import { MaxValueInputFieldArgument } from './arguments/MaxValueInputFieldArgume
55
import { OptionInputFieldArgument } from './arguments/OptionInputFieldArgument';
66
import { TitleInputFieldArgument } from './arguments/TitleInputFieldArgument';
77
import { OptionQueryInputFieldArgument } from './arguments/OptionQueryInputFieldArgument';
8-
import { ErrorLevel, MetaBindParsingError } from '../utils/errors/MetaBindErrors';
8+
import { ErrorLevel, MetaBindParsingError } from '../../utils/errors/MetaBindErrors';
99
import { AbstractInputFieldArgument } from './AbstractInputFieldArgument';
1010
import { ShowcaseInputFieldArgument } from './arguments/ShowcaseInputFieldArgument';
1111
import { OffValueInputFieldArgument } from './arguments/OffValueInputFieldArgument';
1212
import { OnValueInputFieldArgument } from './arguments/OnValueInputFieldArgument';
1313
import { DefaultValueInputFieldArgument } from './arguments/DefaultValueInputFieldArgument';
1414
import { PlaceholderInputFieldArgument } from './arguments/PlaceholderInputFieldArgument';
15-
import { InputFieldArgumentType } from '../inputFields/InputFieldConfigs';
15+
import { InputFieldArgumentType } from '../../parsers/inputFieldParser/InputFieldConfigs';
1616
import { UseLinksInputFieldArgument } from './arguments/UseLinksInputFieldArgument';
1717

1818
export class InputFieldArgumentFactory {

src/inputFieldArguments/arguments/AddLabelsInputFieldArgument.ts renamed to src/fieldArguments/inputFieldArguments/arguments/AddLabelsInputFieldArgument.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { AbstractInputFieldArgument } from '../AbstractInputFieldArgument';
2-
import { InputFieldArgumentConfig, InputFieldArgumentConfigs } from '../../inputFields/InputFieldConfigs';
3-
import { ParsingResultNode } from '../../parsers/nomParsers/GeneralParsers';
2+
import { InputFieldArgumentConfig, InputFieldArgumentConfigs } from '../../../parsers/inputFieldParser/InputFieldConfigs';
3+
import { ParsingResultNode } from '../../../parsers/nomParsers/GeneralParsers';
44

55
export class AddLabelsInputFieldArgument extends AbstractInputFieldArgument {
66
value: boolean = true;

0 commit comments

Comments
 (0)