Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import {Component, Inject, Optional} from "@angular/core";
import {FilterField, FilterFieldValidation} from "../models/filter-field";
import {AbstractBaseDataFieldComponent} from "../../base-component/abstract-base-data-field.component";
import {DATA_FIELD_PORTAL_DATA, DataFieldPortalData} from "../../models/data-field-portal-data-injection-token";
import {TranslateService} from "@ngx-translate/core";

@Component({
selector: 'ncc-abstract-filter-string-query-field',
template: ''
})
export abstract class AbstractFilterStringQueryFieldComponent extends AbstractBaseDataFieldComponent<FilterField> {

constructor(protected _translate: TranslateService,
@Optional() @Inject(DATA_FIELD_PORTAL_DATA) dataFieldPortalData: DataFieldPortalData<FilterField>) {
super(dataFieldPortalData);
}

public getErrorMessage() {
if (this.formControlRef.hasError(FilterFieldValidation.REQUIRED)) {
return this._translate.instant('dataField.validations.required');
}
return '';
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,10 @@ import {Component, ComponentPrefixes} from '../../models/component';
import {FilterMetadata} from '../../../search/models/persistance/filter-metadata';
import {Validation} from '../../models/validation';

export enum FilterFieldValidation {
REQUIRED = 'required'
}

export class FilterField extends DataField<string> {

constructor(stringId: string, title: string,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ export * from './filter-field/abstract-filter-field-content.component';
export * from './filter-field/abstract-filter-field-tab-view.component';
export * from './filter-field/abstract-filter-field-tab-view-content.component';
export * from './filter-field/filter-default-field/abstract-filter-default-field.component';
export * from './filter-field/filter-string-query-field/abstract-filter-string-query-field.component';
export * from './i18n-field/abstract-i18n-field.component';
export * from './i18n-field/i18n-text-field/abstract-i18n-text-field.component';
export * from './i18n-field/i18n-divider-field/abstract-i18n-divider-field.component';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -281,7 +281,7 @@ export class UserFiltersService implements OnDestroy {
value: searchService.filterType
},
[UserFilterConstants.FILTER_FIELD_ID]: {
type: FieldTypeResource.FILTER,
type: FieldTypeResource.CASE_FILTER,
value: searchService.rootPredicate.query.value,
allowedNets,
filterMetadata: this.filterMetadataFromSearchService(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,9 @@ export enum FieldTypeResource {
MULTICHOICE_MAP = 'multichoice_map',
TASK_REF = 'taskRef',
CASE_REF = 'caseRef',
FILTER = 'filter',
CASE_FILTER = 'caseFilter',
TASK_FILTER = 'taskFilter',
PROCESS_FILTER = 'processFilter',
I18N = 'i18n',
STRING_COLLECTION = 'stringCollection'
}
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,9 @@ export class FieldConverterService {
case FieldTypeResource.CASE_REF:
return new CaseRefField(item.stringId, item.name, item.value ? item.value : [], item.behavior,
item.placeholder, item.description, item.layout, item.validations, item.component, item.parentTaskId);
case FieldTypeResource.FILTER:
case FieldTypeResource.CASE_FILTER:
case FieldTypeResource.TASK_FILTER:
case FieldTypeResource.PROCESS_FILTER:
return new FilterField(item.stringId, item.name, item.value ?? '', item.filterMetadata, item.allowedNets,
item.behavior, item.placeholder, item.description, item.layout, item.validations, item.component, item.parentTaskId);
case FieldTypeResource.I18N:
Expand Down Expand Up @@ -146,7 +148,7 @@ export class FieldConverterService {
} else if (item instanceof EnumerationField || item instanceof MultichoiceField) {
return item.fieldType;
} else if (item instanceof FilterField) {
return FieldTypeResource.FILTER;
return FieldTypeResource.CASE_FILTER;
} else if (item instanceof I18nField) {
return FieldTypeResource.I18N;
} else if (item instanceof CaseRefField) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,7 @@ import {
import {SignaturePadFieldComponent} from './text-field/signature-pad-field/signature-pad-field.component';
import { StringCollectionDefaultFieldComponent } from './string-collection-field/string-collection-default-field/string-collection-default-field.component';
import {ComponentPortal} from "@angular/cdk/portal";
import { FilterStringQueryFieldComponent } from './filter-field/filter-string-query-field/filter-string-query-field.component';

@NgModule({
declarations: [
Expand Down Expand Up @@ -192,7 +193,8 @@ import {ComponentPortal} from "@angular/cdk/portal";
EnumerationCaserefFieldComponent,
StringCollectionDefaultFieldComponent,
SignaturePadFieldComponent,
NumberDecimalFieldComponent
NumberDecimalFieldComponent,
FilterStringQueryFieldComponent
],
exports: [
DataFieldTemplateComponent
Expand Down Expand Up @@ -244,6 +246,7 @@ export class DataFieldsComponentModule {
registry.register("file-list-default", (injector: Injector) => new ComponentPortal<any>(FileListDefaultFieldComponent, null, injector));
registry.register("filter-default", (injector: Injector) => new ComponentPortal<any>(FilterDefaultFieldComponent, null, injector));
registry.register("filter-filter-tab-view", (injector: Injector) => new ComponentPortal<any>(FilterDefaultFieldComponent, null, injector));
registry.register("filter-string_query", (injector: Injector) => new ComponentPortal<any>(FilterStringQueryFieldComponent, null, injector));
registry.register("i18n-divider", (injector: Injector) => new ComponentPortal<any>(I18nDividerFieldComponent, null, injector));
registry.register("i18n-text", (injector: Injector) => new ComponentPortal<any>(I18nTextFieldComponent, null, injector));
registry.register("i18n-default", (injector: Injector) => new ComponentPortal<any>(I18nTextFieldComponent, null, injector));
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<mat-form-field [appearance]="dataField.materialAppearance" class="full-width" color="primary">
<mat-label *ngIf="!showLargeLayout.value">{{dataField.title}}</mat-label>
<input matInput
[placeholder]="dataField.placeholder"
[required]="dataField.behavior.required"
[formControl]="formControlRef">
<mat-hint [ngClass]="{'mat-hint-disabled': formControlRef.disabled}">{{dataField.description}}</mat-hint>
<mat-error *ngIf="dataField.isInvalid(formControlRef)">{{getErrorMessage()}}</mat-error>
</mat-form-field>
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
.full-width {
display: block;
margin: 0 auto;
width: 100%;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
import {ComponentFixture, TestBed} from '@angular/core/testing';

import {FilterStringQueryFieldComponent} from './filter-string-query-field.component';
import {
MaterialModule,
TranslateLibModule,
FilterField,
DataFieldPortalData,
DATA_FIELD_PORTAL_DATA,
FilterType,
ConfigurationService,
TestConfigurationService,
WrappedBoolean
} from '@netgrif/components-core';
import {NoopAnimationsModule} from '@angular/platform-browser/animations';
import {HttpClientTestingModule} from "@angular/common/http/testing";
import {FormControl, ReactiveFormsModule} from '@angular/forms';

describe('FilterStringQueryFieldComponent', () => {
let component: FilterStringQueryFieldComponent;
let fixture: ComponentFixture<FilterStringQueryFieldComponent>;

beforeEach(async () => {
await TestBed.configureTestingModule({
declarations: [FilterStringQueryFieldComponent],
imports: [
TranslateLibModule,
HttpClientTestingModule,
MaterialModule,
NoopAnimationsModule,
ReactiveFormsModule
],
providers: [
{provide: ConfigurationService, useClass: TestConfigurationService},
{provide: DATA_FIELD_PORTAL_DATA, useValue: {
dataField: new FilterField('', '', '', {
filterType: FilterType.CASE, predicateMetadata: [], searchCategories: []
}, [], {}, '', ''),
formControlRef: new FormControl(),
showLargeLayout: new WrappedBoolean()
} as DataFieldPortalData<FilterField>
}
]
})
.compileComponents();
});

beforeEach(() => {
fixture = TestBed.createComponent(FilterStringQueryFieldComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});

it('should create', () => {
expect(component).toBeTruthy();
});
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import { Component, Optional, Inject } from '@angular/core';
import { TranslateService } from '@ngx-translate/core';
import { AbstractFilterStringQueryFieldComponent, DATA_FIELD_PORTAL_DATA, DataFieldPortalData, FilterField} from '@netgrif/components-core';

@Component({
selector: 'nc-filter-string-query-field',
templateUrl: './filter-string-query-field.component.html',
styleUrls: ['./filter-string-query-field.component.scss']
})
export class FilterStringQueryFieldComponent extends AbstractFilterStringQueryFieldComponent {

constructor(protected _translate: TranslateService,
@Optional() @Inject(DATA_FIELD_PORTAL_DATA) dataFieldPortalData: DataFieldPortalData<FilterField>) {
super(_translate, dataFieldPortalData);
}

}
Loading