diff --git a/docs/compodoc/components-core/coverage.html b/docs/compodoc/components-core/coverage.html
index 61b4ef51bb..484d637dec 100644
--- a/docs/compodoc/components-core/coverage.html
+++ b/docs/compodoc/components-core/coverage.html
@@ -44,7 +44,7 @@
-
+
@@ -7088,7 +7088,7 @@
- projects/netgrif-components-core/src/lib/task-content/model/resource-interface.ts
+ projects/netgrif-components-core/src/lib/task-content/model/resource-interfaces.ts
|
interface |
DataFieldResource |
@@ -9133,7 +9133,7 @@ No results matching "
-
+
diff --git a/docs/compodoc/components-core/interfaces/DataFieldResource.html b/docs/compodoc/components-core/interfaces/DataFieldResource.html
index 716310ac7e..6384da8bd5 100644
--- a/docs/compodoc/components-core/interfaces/DataFieldResource.html
+++ b/docs/compodoc/components-core/interfaces/DataFieldResource.html
@@ -64,7 +64,7 @@
File
@@ -84,156 +84,156 @@ Properties
-
Optional
-
allowedNets
-
-
behavior
-
Optional
-
choices
-
Optional
-
component
-
Optional
-
defaultValue
-
Optional
-
description
-
Optional
-
filterMetadata
-
Optional
-
formatFilter
-
Optional
-
formatting
-
Optional
-
layout
-
Optional
-
minDate
-
Optional
-
minValue
-
-
name
-
Optional
-
options
-
-
order
-
Optional
-
parentTaskId
-
Optional
-
placeholder
-
Optional
-
roles
-
-
stringId
-
Optional
-
subType
-
-
type
-
Optional
-
validations
-
Optional
-
value
@@ -1144,7 +1144,7 @@
-
+
@@ -1172,7 +1172,7 @@
No results matching "
-
+
diff --git a/projects/nae-example-app/src/app/doc/case-view/case-view.component.ts b/projects/nae-example-app/src/app/doc/case-view/case-view.component.ts
index 1ebbad0875..64c7dc9d91 100644
--- a/projects/nae-example-app/src/app/doc/case-view/case-view.component.ts
+++ b/projects/nae-example-app/src/app/doc/case-view/case-view.component.ts
@@ -13,7 +13,12 @@ import {
defaultCaseSearchCategoriesFactory,
NAE_BASE_FILTER,
AllowedNetsServiceFactory,
- AllowedNetsService, UserFilterConstants, TaskSetDataRequestFields
+ AllowedNetsService,
+ UserFilterConstants,
+ DataSet,
+ FieldTypeResource,
+ DataFieldResource,
+ DataFieldValue
} from '@netgrif/components-core';
import {HeaderComponent} from '@netgrif/components';
@@ -50,7 +55,7 @@ export class CaseViewComponent extends AbstractCaseViewComponent implements Afte
@ViewChild('header') public caseHeaderComponent: HeaderComponent;
- additionalFilterData: TaskSetDataRequestFields;
+ additionalFilterData: DataSet;
constructor(caseViewService: CaseViewService, @Optional() overflowService: OverflowService) {
super(caseViewService, overflowService, undefined, {
@@ -61,12 +66,16 @@ export class CaseViewComponent extends AbstractCaseViewComponent implements Afte
createCaseButtonIcon: 'home'
}
});
- this.additionalFilterData = {
- [UserFilterConstants.ORIGIN_VIEW_ID_FIELD_ID]: {
- type: 'text',
- value: 'override'
- }
- };
+ this.additionalFilterData = { fields :
+ {
+ [UserFilterConstants.ORIGIN_VIEW_ID_FIELD_ID]: {
+ type: FieldTypeResource.TEXT,
+ value: {
+ value: 'override'
+ } as DataFieldValue
+ } as DataFieldResource
+ }
+ } as DataSet;
}
ngAfterViewInit(): void {
diff --git a/projects/nae-example-app/src/app/doc/tree-view-example/tree-view-example.component.ts b/projects/nae-example-app/src/app/doc/tree-view-example/tree-view-example.component.ts
index b141263ae4..431ba53046 100644
--- a/projects/nae-example-app/src/app/doc/tree-view-example/tree-view-example.component.ts
+++ b/projects/nae-example-app/src/app/doc/tree-view-example/tree-view-example.component.ts
@@ -55,7 +55,7 @@ export class TreeViewExampleComponent {
};
this._caseResource.createCase(newCaseRequest).subscribe(newCase => {
this.filter = new SimpleFilter('id', FilterType.CASE, {
- query: 'stringId:' + (newCase.outcome as CreateCaseEventOutcome).aCase.stringId
+ query: 'stringId:' + (newCase.outcome as CreateCaseEventOutcome).case.stringId
});
this.loading = false;
});
diff --git a/projects/netgrif-components-core/src/lib/authorization/permission/permission.service.ts b/projects/netgrif-components-core/src/lib/authorization/permission/permission.service.ts
index 209fd8189f..f5ea1b6559 100644
--- a/projects/netgrif-components-core/src/lib/authorization/permission/permission.service.ts
+++ b/projects/netgrif-components-core/src/lib/authorization/permission/permission.service.ts
@@ -15,7 +15,7 @@ export class PermissionService {
constructor(protected userComparator: UserComparatorService, protected _userService: UserService) {
}
- public hasTaskPermission(task: Task | undefined, permission: string): boolean {
+ public hasTaskPermission(task: Task | undefined, permission: PermissionType): boolean {
if (!task) {
return false;
}
@@ -25,7 +25,7 @@ export class PermissionService {
return this.resolvePermissions(rolePermValue, userPermValue);
}
- public hasCasePermission(case_: Case | undefined, permission: string): boolean {
+ public hasCasePermission(case_: Case | undefined, permission: PermissionType): boolean {
if (!case_) {
return false;
}
@@ -39,7 +39,7 @@ export class PermissionService {
return userPermValue === undefined ? (!!rolePermValue) : userPermValue;
}
- public hasNetPermission(action: string, net: PetriNetReferenceWithPermissions): boolean {
+ public hasNetPermission(action: PermissionType, net: PetriNetReferenceWithPermissions): boolean {
if (!net
|| !net.permissions
|| !action
@@ -93,7 +93,7 @@ export class PermissionService {
&& task.assignPolicy === AssignPolicy.manual;
}
- public checkRolePerms(roles: Permissions, permission: string): boolean | undefined {
+ public checkRolePerms(roles: Permissions, permission: PermissionType): boolean | undefined {
let rolePermValue: boolean;
if (!!roles) {
Object.keys(roles).forEach(role => {
@@ -105,7 +105,7 @@ export class PermissionService {
return rolePermValue;
}
- public checkUserPerms(users: UserPermissions, permission): boolean | undefined {
+ public checkUserPerms(users: UserPermissions, permission: PermissionType): boolean | undefined {
let userPermValue: boolean;
if (!!users) {
const loggedUserId = this._userService.user.getSelfOrImpersonated().id;
diff --git a/projects/netgrif-components-core/src/lib/event/model/event-outcomes/case-outcomes/case-event-outcome.ts b/projects/netgrif-components-core/src/lib/event/model/event-outcomes/case-outcomes/case-event-outcome.ts
index bcfac8b7ee..c27dfb8edf 100644
--- a/projects/netgrif-components-core/src/lib/event/model/event-outcomes/case-outcomes/case-event-outcome.ts
+++ b/projects/netgrif-components-core/src/lib/event/model/event-outcomes/case-outcomes/case-event-outcome.ts
@@ -3,5 +3,5 @@ import {Case} from '../../../../resources/interface/case';
export interface CaseEventOutcome extends PetriNetEventOutcome {
- aCase: Case;
+ case: Case;
}
diff --git a/projects/netgrif-components-core/src/lib/event/model/event-outcomes/data-outcomes/get-data-groups-event-outcome.ts b/projects/netgrif-components-core/src/lib/event/model/event-outcomes/data-outcomes/get-data-groups-event-outcome.ts
index 765558c77a..49c4c26b7d 100644
--- a/projects/netgrif-components-core/src/lib/event/model/event-outcomes/data-outcomes/get-data-groups-event-outcome.ts
+++ b/projects/netgrif-components-core/src/lib/event/model/event-outcomes/data-outcomes/get-data-groups-event-outcome.ts
@@ -1,7 +1,8 @@
import {DataGroup} from '../../../../resources/interface/data-groups';
import {TaskEventOutcome} from '../task-outcomes/task-event-outcome';
+import {DataGroupResource} from "../../../../task-content/model/resource-interfaces";
export interface GetDataGroupsEventOutcome extends TaskEventOutcome {
- data: Array;
+ data: Array;
}
diff --git a/projects/netgrif-components-core/src/lib/event/model/event-outcomes/data-outcomes/set-data-event-outcome.ts b/projects/netgrif-components-core/src/lib/event/model/event-outcomes/data-outcomes/set-data-event-outcome.ts
index 5cff4761b9..9e79d348c7 100644
--- a/projects/netgrif-components-core/src/lib/event/model/event-outcomes/data-outcomes/set-data-event-outcome.ts
+++ b/projects/netgrif-components-core/src/lib/event/model/event-outcomes/data-outcomes/set-data-event-outcome.ts
@@ -1,7 +1,8 @@
import {ChangedFieldContainer} from '../../../../resources/interface/changed-field-container';
import {TaskEventOutcome} from '../task-outcomes/task-event-outcome';
+import {DataSet} from "../../../../resources/interface/task-data-sets";
export interface SetDataEventOutcome extends TaskEventOutcome {
- changedFields: ChangedFieldContainer;
+ changedFields: DataSet;
}
diff --git a/projects/netgrif-components-core/src/lib/event/services/event.service.spec.ts b/projects/netgrif-components-core/src/lib/event/services/event.service.spec.ts
index a90fd42cf7..efebbddc5d 100644
--- a/projects/netgrif-components-core/src/lib/event/services/event.service.spec.ts
+++ b/projects/netgrif-components-core/src/lib/event/services/event.service.spec.ts
@@ -6,34 +6,42 @@ import {createMockTask} from '../../utility/tests/utility/create-mock-task';
import {createMockCase} from '../../utility/tests/utility/create-mock-case';
import {ChangedFieldsMap} from './interfaces/changed-fields-map';
import {NoopAnimationsModule} from '@angular/platform-browser/animations';
+import {FieldTypeResource} from "../../task-content/model/field-type-resource";
+import {DataFieldResource} from "../../task-content/model/resource-interfaces";
describe('EventService', () => {
let service: EventService;
const secondChildOutcome = createMockSetDataOutcome({
- changedFields: {
+ fields: {
secondChildOutcome: {
- value: 'secondChildOutcomeValue',
- type: 'text'
- }
+ value: {
+ value: 'secondChildOutcomeValue',
+ },
+ type: FieldTypeResource.TEXT
+ } as DataFieldResource
}
}, createMockTask('secondChildOutcomeTask'), undefined, createMockCase('secondChildOutcomeCase'));
const firstChildOutcome = createMockSetDataOutcome({
- changedFields: {
+ fields: {
firstChildOutcome: {
- value: 'firstChildOutcomeValue',
- type: 'text'
- }
+ value: {
+ value: 'firstChildOutcomeValue',
+ },
+ type: FieldTypeResource.TEXT
+ } as DataFieldResource
}
}, createMockTask('firstChildOutcomeTask'), undefined, createMockCase('firstChildOutcomeCase'), [secondChildOutcome]);
const mainOutcome = createMockSetDataOutcome({
- changedFields: {
+ fields: {
shouldNotBeIncluded: {
- value: 'parentField',
- type: 'text'
- }
+ value: {
+ value: 'parentField',
+ },
+ type: FieldTypeResource.TEXT
+ } as DataFieldResource
}
}, createMockTask('parentOutcomeTask'), undefined, createMockCase('parentOutcomeCase'), [firstChildOutcome]);
@@ -73,12 +81,12 @@ describe('EventService', () => {
expect(Object.keys(result['firstChildOutcomeCase'])).toEqual(['firstChildOutcomeTask']);
expect(Object.keys(result['firstChildOutcomeCase']['firstChildOutcomeTask']))
.toEqual(['taskId', 'firstChildOutcome']);
- expect(result['firstChildOutcomeCase']['firstChildOutcomeTask']['firstChildOutcome']['value'])
+ expect(result['firstChildOutcomeCase']['firstChildOutcomeTask']['firstChildOutcome']['value']['value'])
.toEqual('firstChildOutcomeValue');
expect(Object.keys(result['secondChildOutcomeCase'])).toEqual(['secondChildOutcomeTask']);
expect(Object.keys(result['secondChildOutcomeCase']['secondChildOutcomeTask']))
.toEqual(['taskId', 'secondChildOutcome']);
- expect(result['secondChildOutcomeCase']['secondChildOutcomeTask']['secondChildOutcome']['value'])
+ expect(result['secondChildOutcomeCase']['secondChildOutcomeTask']['secondChildOutcome']['value']['value'])
.toEqual('secondChildOutcomeValue');
});
diff --git a/projects/netgrif-components-core/src/lib/event/services/event.service.ts b/projects/netgrif-components-core/src/lib/event/services/event.service.ts
index 4d7444000c..ef999051f3 100644
--- a/projects/netgrif-components-core/src/lib/event/services/event.service.ts
+++ b/projects/netgrif-components-core/src/lib/event/services/event.service.ts
@@ -4,6 +4,7 @@ import {ChangedFields} from '../../data-fields/models/changed-fields';
import {SetDataEventOutcome} from '../model/event-outcomes/data-outcomes/set-data-event-outcome';
import {ChangedFieldsMap} from './interfaces/changed-fields-map';
import {EventConstants} from '../model/event-constants';
+import {DataSet} from "../../resources/interface/task-data-sets";
@Injectable({
providedIn: 'root'
@@ -24,11 +25,11 @@ export class EventService {
changedFieldsMap: ChangedFieldsMap): ChangedFieldsMap {
outcomes.forEach(childOutcome => {
if (EventConstants.CHANGED_FIELDS in childOutcome
- && !!(childOutcome as SetDataEventOutcome).aCase
+ && !!(childOutcome as SetDataEventOutcome).case
&& !!(childOutcome as SetDataEventOutcome).task) {
const setDataOutcome: SetDataEventOutcome = childOutcome as SetDataEventOutcome;
- const outcomeChangedFields: ChangedFields = (childOutcome as SetDataEventOutcome).changedFields.changedFields;
- const caseId = setDataOutcome.aCase.stringId;
+ const outcomeChangedFields: DataSet = (childOutcome as SetDataEventOutcome).changedFields;
+ const caseId = setDataOutcome.case.stringId;
if (!Object.keys(changedFieldsMap).includes(caseId)) {
changedFieldsMap[caseId] = {};
}
@@ -38,13 +39,13 @@ export class EventService {
taskId
};
}
- Object.keys(outcomeChangedFields).forEach(fieldId => {
+ Object.keys(outcomeChangedFields.fields).forEach(fieldId => {
if (Object.keys(changedFieldsMap[caseId][taskId]).includes(fieldId)) {
Object.keys(outcomeChangedFields[fieldId]).forEach(attribute => {
- changedFieldsMap[caseId][taskId][fieldId][attribute] = outcomeChangedFields[fieldId][attribute];
+ changedFieldsMap[caseId][taskId][fieldId][attribute] = outcomeChangedFields.fields[fieldId][attribute];
});
} else {
- changedFieldsMap[caseId][taskId][fieldId] = setDataOutcome.changedFields.changedFields[fieldId];
+ changedFieldsMap[caseId][taskId][fieldId] = setDataOutcome.changedFields.fields[fieldId];
}
});
}
diff --git a/projects/netgrif-components-core/src/lib/filter/user-filters.service.ts b/projects/netgrif-components-core/src/lib/filter/user-filters.service.ts
index a4303c13a1..7fe9f44424 100644
--- a/projects/netgrif-components-core/src/lib/filter/user-filters.service.ts
+++ b/projects/netgrif-components-core/src/lib/filter/user-filters.service.ts
@@ -10,7 +10,7 @@ import {SimpleFilter} from './models/simple-filter';
import {hasContent} from '../utility/pagination/page-has-content';
import {Task} from '../resources/interface/task';
import {CallChainService} from '../utility/call-chain/call-chain.service';
-import {TaskSetDataRequestBody, TaskSetDataRequestFields} from '../resources/interface/task-set-data-request-body';
+import {TaskDataSets, DataSet} from '../resources/interface/task-data-sets';
import {FieldTypeResource} from '../task-content/model/field-type-resource';
import {Category} from '../search/models/category/category';
import {Net} from '../process/net';
@@ -31,6 +31,7 @@ import {CategoryResolverService} from '../search/category-factory/category-resol
import {DataGroup} from '../resources/interface/data-groups';
import {getFieldFromDataGroups} from '../utility/get-field';
import {EventOutcomeMessageResource} from '../resources/interface/message-resource';
+import {DataFieldResource, DataFieldValue} from "../task-content/model/resource-interfaces";
/**
* Service that manages filters created by users of the application.
@@ -167,7 +168,7 @@ export class UserFiltersService implements OnDestroy {
allowedNets: ReadonlyArray,
searchCategories: ReadonlyArray>>,
viewId?: string,
- additionalData: TaskSetDataRequestFields = {},
+ additionalData: DataSet = { fields: {} } as DataSet,
withDefaultCategories = true,
inheritAllowedNets = true,
navigationItemTaskData: Array = null): Observable {
@@ -243,7 +244,7 @@ export class UserFiltersService implements OnDestroy {
allowedNets: ReadonlyArray,
searchCategories: ReadonlyArray>>,
viewId?: string,
- additionalData: TaskSetDataRequestFields = {},
+ additionalData: DataSet = { fields: {}} as DataSet,
withDefaultCategories = true,
inheritAllowedNets = true,
navigationItemTaskData: Array = null): Observable {
@@ -255,7 +256,7 @@ export class UserFiltersService implements OnDestroy {
}).subscribe(filterCase => {
this._taskService.getTasks(SimpleFilter.fromTaskQuery({
case: {
- id: (filterCase.outcome as CreateCaseEventOutcome).aCase.stringId
+ id: (filterCase.outcome as CreateCaseEventOutcome).case.stringId
}
})).subscribe(page => {
if (!hasContent(page)) {
@@ -269,22 +270,29 @@ export class UserFiltersService implements OnDestroy {
}
const requestBody = {
- [UserFilterConstants.FILTER_TYPE_FIELD_ID]: {
- type: FieldTypeResource.ENUMERATION_MAP,
- value: searchService.filterType
- },
- [UserFilterConstants.FILTER_FIELD_ID]: {
- type: FieldTypeResource.FILTER,
- value: searchService.rootPredicate.query.value,
- allowedNets,
- filterMetadata: this.filterMetadataFromSearchService(
- searchService,
- searchCategories,
- withDefaultCategories,
- inheritAllowedNets
- )
- },
- };
+ fields: {
+ [UserFilterConstants.FILTER_TYPE_FIELD_ID]: {
+ stringId: UserFilterConstants.FILTER_TYPE_FIELD_ID,
+ type: FieldTypeResource.ENUMERATION_MAP,
+ value: {
+ value: searchService.filterType
+ } as DataFieldValue
+ } as DataFieldResource,
+ [UserFilterConstants.FILTER_FIELD_ID]: {
+ type: FieldTypeResource.FILTER,
+ value: {
+ value: searchService.rootPredicate.query.value
+ } as DataFieldValue,
+ allowedNets,
+ filterMetadata: this.filterMetadataFromSearchService(
+ searchService,
+ searchCategories,
+ withDefaultCategories,
+ inheritAllowedNets
+ )
+ } as DataFieldResource,
+ }
+ } as DataSet;
let parentFilterCaseIdField;
if (navigationItemTaskData !== null && navigationItemTaskData !== undefined) {
@@ -295,26 +303,32 @@ export class UserFiltersService implements OnDestroy {
if (parentFilterCaseIdField !== undefined) {
requestBody[UserFilterConstants.PARENT_FILTER_CASE_ID_FIELD_ID] = {
type: FieldTypeResource.TEXT,
- value: parentFilterCaseIdField.value
- };
+ value: {
+ value: parentFilterCaseIdField.value
+ } as DataFieldValue
+ } as DataFieldResource;
} else if (viewId !== undefined || viewId !== '') {
requestBody[UserFilterConstants.ORIGIN_VIEW_ID_FIELD_ID] = {
type: FieldTypeResource.TEXT,
- value: viewId
- };
+ value: {
+ value: viewId
+ } as DataFieldValue
+ } as DataFieldResource;
}
this.assignSetDataFinish(initTask, {
- [initTask.stringId]: {
- ...requestBody,
- ...additionalData
- }
- }, this._callChainService.create(success => {
+ body: {
+ [initTask.stringId]: {
+ ...requestBody,
+ ...additionalData
+ } as DataSet
+ }
+ } as TaskDataSets, this._callChainService.create(success => {
if (!success) {
throw new Error('Filter instance could not be initialized');
}
- result.next((filterCase.outcome as CreateCaseEventOutcome).aCase.stringId);
+ result.next((filterCase.outcome as CreateCaseEventOutcome).case.stringId);
result.complete();
}));
});
@@ -336,7 +350,7 @@ export class UserFiltersService implements OnDestroy {
}
// TODO 6.4.2021 IMPROVEMENT - extract similar method into some utility service
- protected assignSetDataFinish(task: Task, data: TaskSetDataRequestBody, callChain: Subject): void {
+ protected assignSetDataFinish(task: Task, data: TaskDataSets, callChain: Subject): void {
this._taskService.assignTask(task.stringId).subscribe(assignOutcome => {
if (assignOutcome.error) {
this._log.error(`Could not assign task '${task.title}'`, task, assignOutcome.error);
diff --git a/projects/netgrif-components-core/src/lib/panel/task-panel/abstract-task-panel.component.spec.ts b/projects/netgrif-components-core/src/lib/panel/task-panel/abstract-task-panel.component.spec.ts
index b76e2f0d5b..34a8d51100 100644
--- a/projects/netgrif-components-core/src/lib/panel/task-panel/abstract-task-panel.component.spec.ts
+++ b/projects/netgrif-components-core/src/lib/panel/task-panel/abstract-task-panel.component.spec.ts
@@ -311,7 +311,7 @@ class MyTaskResources {
users: {},
userRefs: {}
},
- aCase: createMockCase(),
+ case: createMockCase(),
net: createMockNet(),
outcomes: []
} as AssignTaskEventOutcome
@@ -362,7 +362,7 @@ class MyTaskResources {
users: {},
userRefs: {}
},
- aCase: createMockCase(),
+ case: createMockCase(),
net: createMockNet(),
outcomes: []
} as FinishTaskEventOutcome
diff --git a/projects/netgrif-components-core/src/lib/public/factories/get-net-and-create-case.ts b/projects/netgrif-components-core/src/lib/public/factories/get-net-and-create-case.ts
index c29ca513ab..a9c2c967ac 100644
--- a/projects/netgrif-components-core/src/lib/public/factories/get-net-and-create-case.ts
+++ b/projects/netgrif-components-core/src/lib/public/factories/get-net-and-create-case.ts
@@ -28,7 +28,7 @@ export const getNetAndCreateCase = (router: Router,
snackBarService.openWarningSnackBar(translate.instant('publicView.netNotExist'));
}
})).subscribe(response => {
- router.navigate([route.snapshot.url.join('/') + '/' + (response.outcome as CreateCaseEventOutcome).aCase.stringId]);
+ router.navigate([route.snapshot.url.join('/') + '/' + (response.outcome as CreateCaseEventOutcome).case.stringId]);
publicTaskLoadingService.setLoading$(false);
}, error => {
snackBarService.openErrorSnackBar(translate.instant('publicView.errorCreate') + error);
diff --git a/projects/netgrif-components-core/src/lib/resources/engine-endpoint/case-resource.service.spec.ts b/projects/netgrif-components-core/src/lib/resources/engine-endpoint/case-resource.service.spec.ts
index a080f300bd..7a0da66a91 100644
--- a/projects/netgrif-components-core/src/lib/resources/engine-endpoint/case-resource.service.spec.ts
+++ b/projects/netgrif-components-core/src/lib/resources/engine-endpoint/case-resource.service.spec.ts
@@ -113,7 +113,7 @@ describe('CaseResourceService', () => {
title: '',
netId: ''
}).subscribe(res => {
- expect((res.outcome as CreateCaseEventOutcome).aCase.stringId).toEqual('string');
+ expect((res.outcome as CreateCaseEventOutcome).case.stringId).toEqual('string');
done();
});
@@ -122,7 +122,7 @@ describe('CaseResourceService', () => {
reqLog.flush({
outcome: {
- aCase: {
+ case: {
stringId: 'string'
}
}
diff --git a/projects/netgrif-components-core/src/lib/resources/engine-endpoint/public/public-task-resource.service.ts b/projects/netgrif-components-core/src/lib/resources/engine-endpoint/public/public-task-resource.service.ts
index aca5ae7d1e..e09a81f69d 100644
--- a/projects/netgrif-components-core/src/lib/resources/engine-endpoint/public/public-task-resource.service.ts
+++ b/projects/netgrif-components-core/src/lib/resources/engine-endpoint/public/public-task-resource.service.ts
@@ -9,14 +9,11 @@ import {filter, map} from 'rxjs/operators';
import {FilterType} from '../../../filter/models/filter-type';
import {Filter} from '../../../filter/models/filter';
import {Page} from '../../interface/page';
-import {TaskSetDataRequestBody} from '../../interface/task-set-data-request-body';
+import {TaskDataSets} from '../../interface/task-data-sets';
import {TaskReference} from '../../interface/task-reference';
-import {DataGroup} from '../../interface/data-groups';
-import {DataField} from '../../../data-fields/models/abstract-data-field';
import {Task} from '../../interface/task';
import {HttpEventType, HttpParams} from '@angular/common/http';
import {EventOutcomeMessageResource, MessageResource} from '../../interface/message-resource';
-import {GetDataGroupsEventOutcome} from '../../../event/model/event-outcomes/data-outcomes/get-data-groups-event-outcome';
@Injectable({
providedIn: 'root'
@@ -90,7 +87,7 @@ export class PublicTaskResourceService extends TaskResourceService {
* POST
*/
// {{baseUrl}}/api/public/task/:id/data
- public setData(taskId: string, body: TaskSetDataRequestBody): Observable {
+ public setData(taskId: string, body: TaskDataSets): Observable {
return this._provider.post$('public/task/' + taskId + '/data', this.SERVER_URL, body)
.pipe(map(r => this.changeType(r, undefined)));
}
diff --git a/projects/netgrif-components-core/src/lib/resources/engine-endpoint/task-resource.service.spec.ts b/projects/netgrif-components-core/src/lib/resources/engine-endpoint/task-resource.service.spec.ts
index 6e55219f34..cc6cc2bff5 100644
--- a/projects/netgrif-components-core/src/lib/resources/engine-endpoint/task-resource.service.spec.ts
+++ b/projects/netgrif-components-core/src/lib/resources/engine-endpoint/task-resource.service.spec.ts
@@ -6,6 +6,7 @@ import {SimpleFilter} from '../../filter/models/simple-filter';
import {FilterType} from '../../filter/models/filter-type';
import {TaskResourceService} from './task-resource.service';
import {NoopAnimationsModule} from '@angular/platform-browser/animations';
+import {TaskDataSets} from "../interface/task-data-sets";
describe('TaskResourceService', () => {
let service: TaskResourceService;
@@ -242,7 +243,7 @@ describe('TaskResourceService', () => {
it('should setData', (done) => {
inject([HttpTestingController],
(httpMock: HttpTestingController) => {
- service.setData('id', {}).subscribe(res => {
+ service.setData('id', {} as TaskDataSets).subscribe(res => {
expect(res.outcome).toBeTruthy();
done();
});
diff --git a/projects/netgrif-components-core/src/lib/resources/engine-endpoint/task-resource.service.ts b/projects/netgrif-components-core/src/lib/resources/engine-endpoint/task-resource.service.ts
index 118eb3fefb..580cf48343 100644
--- a/projects/netgrif-components-core/src/lib/resources/engine-endpoint/task-resource.service.ts
+++ b/projects/netgrif-components-core/src/lib/resources/engine-endpoint/task-resource.service.ts
@@ -13,7 +13,7 @@ import {FilterType} from '../../filter/models/filter-type';
import { HttpEventType, HttpParams } from '@angular/common/http';
import {Page} from '../interface/page';
import {FieldConverterService} from '../../task-content/services/field-converter.service';
-import {TaskSetDataRequestBody} from '../interface/task-set-data-request-body';
+import {TaskDataSets} from '../interface/task-data-sets';
import {LoggerService} from '../../logger/services/logger.service';
import {AbstractResourceService} from '../abstract-endpoint/abstract-resource.service';
import {DataGroup} from '../interface/data-groups';
@@ -215,14 +215,14 @@ export class TaskResourceService extends AbstractResourceService implements Coun
const result = [];
dataGroupsArray.forEach(dataGroupResource => {
const dataFields: Array> = [];
- if (!dataGroupResource.fields._embedded) {
- return; // continue
- }
+ // if (!dataGroupResource.fields._embedded) {
+ // return; // continue
+ // }
const fields = [];
- Object.keys(dataGroupResource.fields._embedded).forEach(localizedFields => {
- fields.push(...dataGroupResource.fields._embedded[localizedFields]);
+ Object.keys(dataGroupResource.dataRefs).forEach(fieldId => {
+ fields.push(dataGroupResource.dataRefs[fieldId]);
});
- fields.sort((a, b) => a.order - b.order);
+ //fields.sort((a, b) => a.order - b.order);
dataFields.push(...fields.map(dataFieldResource => this._fieldConverter.toClass(dataFieldResource)));
const dataGroupObject: DataGroup = {
fields: dataFields,
@@ -252,7 +252,7 @@ export class TaskResourceService extends AbstractResourceService implements Coun
* POST
*/
// {{baseUrl}}/api/task/:id/data
- public setData(taskId: string, body: TaskSetDataRequestBody): Observable {
+ public setData(taskId: string, body: TaskDataSets): Observable {
return this._resourceProvider.post$('task/' + taskId + '/data', this.SERVER_URL, body)
.pipe(map(r => this.changeType(r, undefined)));
}
diff --git a/projects/netgrif-components-core/src/lib/resources/interface/changed-field-container.ts b/projects/netgrif-components-core/src/lib/resources/interface/changed-field-container.ts
index bdaf855c24..e20260e283 100644
--- a/projects/netgrif-components-core/src/lib/resources/interface/changed-field-container.ts
+++ b/projects/netgrif-components-core/src/lib/resources/interface/changed-field-container.ts
@@ -1,5 +1,6 @@
import {ChangedFields} from '../../data-fields/models/changed-fields';
+import {DataSet} from "./task-data-sets";
export interface ChangedFieldContainer {
- changedFields: ChangedFields;
+ fields: DataSet;
}
diff --git a/projects/netgrif-components-core/src/lib/resources/interface/data-group-layout.ts b/projects/netgrif-components-core/src/lib/resources/interface/data-group-layout.ts
index e40f16e1c1..26b58046bc 100644
--- a/projects/netgrif-components-core/src/lib/resources/interface/data-group-layout.ts
+++ b/projects/netgrif-components-core/src/lib/resources/interface/data-group-layout.ts
@@ -15,15 +15,15 @@ export enum DataGroupLayoutType {
/**
* A grid based on x, y co-ordinates and width and height of each field
*/
- GRID = 'grid',
+ GRID = 'GRID',
/**
* Evenly sized fields that fill all columns
*/
- FLOW = 'flow',
+ FLOW = 'FLOW',
/**
* Layouting algorithm used in NAE versions < 4.0.0
*/
- LEGACY = 'legacy'
+ LEGACY = 'LEGACY'
}
/**
diff --git a/projects/netgrif-components-core/src/lib/resources/interface/task-data-sets.ts b/projects/netgrif-components-core/src/lib/resources/interface/task-data-sets.ts
new file mode 100644
index 0000000000..e59b784045
--- /dev/null
+++ b/projects/netgrif-components-core/src/lib/resources/interface/task-data-sets.ts
@@ -0,0 +1,28 @@
+import {FilterMetadata} from '../../search/models/persistance/filter-metadata';
+import {DataFieldResource} from "../../task-content/model/resource-interfaces";
+
+/**
+ * Describes request body for task setData endpoint.
+ *
+ * This object is a raw request body for [setData()]{@link TaskResourceService#setData} method in {@link TaskResourceService}.
+ */
+export interface TaskDataSets {
+
+ /**
+ * ID of task, on which changes occurred
+ */
+ body: {
+ [taskId: string]: DataSet
+ };
+}
+
+export interface DataSet {
+
+ /**
+ * ID of the field that changed its value
+ */
+ fields: {
+ [fieldId: string]: DataFieldResource
+ }
+}
+
diff --git a/projects/netgrif-components-core/src/lib/resources/interface/task-set-data-request-body.ts b/projects/netgrif-components-core/src/lib/resources/interface/task-set-data-request-body.ts
deleted file mode 100644
index a1086d6ed9..0000000000
--- a/projects/netgrif-components-core/src/lib/resources/interface/task-set-data-request-body.ts
+++ /dev/null
@@ -1,40 +0,0 @@
-import {FilterMetadata} from '../../search/models/persistance/filter-metadata';
-
-/**
- * Describes request body for task setData endpoint.
- *
- * This object is a raw request body for [setData()]{@link TaskResourceService#setData} method in {@link TaskResourceService}.
- */
-export interface TaskSetDataRequestBody {
-
- /**
- * ID of task, on which changes occurred
- */
- [taskId: string]: TaskSetDataRequestFields;
-}
-
-export interface TaskSetDataRequestFields {
-
- /**
- * ID of the field that changed it's value
- */
- [fieldId: string]: {
- /**
- * type of the changed field
- */
- type: string;
- /**
- * new value
- */
- value?: any;
- /**
- * new `allowed nets` (for field types that support this)
- */
- allowedNets?: ReadonlyArray;
- /**
- * new `filterMetadata` (for field types that support this)
- */
- filterMetadata?: FilterMetadata;
- };
-}
-
diff --git a/projects/netgrif-components-core/src/lib/resources/public-api.ts b/projects/netgrif-components-core/src/lib/resources/public-api.ts
index 5f539f1685..e6d16ee9ca 100644
--- a/projects/netgrif-components-core/src/lib/resources/public-api.ts
+++ b/projects/netgrif-components-core/src/lib/resources/public-api.ts
@@ -31,7 +31,7 @@ export * from './interface/process-role';
export * from './interface/changed-field-container';
export * from './interface/file-resource';
export * from './interface/task-reference';
-export * from './interface/task-set-data-request-body';
+export * from './interface/task-data-sets';
export * from './interface/case-get-request-body';
export * from './interface/field-alignment';
export * from './interface/event-outcome';
diff --git a/projects/netgrif-components-core/src/lib/search/search-component/abstract-search.component.ts b/projects/netgrif-components-core/src/lib/search/search-component/abstract-search.component.ts
index 1f03e8414f..6b05885347 100644
--- a/projects/netgrif-components-core/src/lib/search/search-component/abstract-search.component.ts
+++ b/projects/netgrif-components-core/src/lib/search/search-component/abstract-search.component.ts
@@ -14,7 +14,7 @@ import {SavedFilterMetadata} from '../models/persistance/saved-filter-metadata';
import {ViewIdService} from '../../user/services/view-id.service';
import {NAE_FILTERS_FILTER} from '../../filter/models/filters-filter-injection-token';
import {Filter} from '../../filter/models/filter';
-import {TaskSetDataRequestFields} from '../../resources/interface/task-set-data-request-body';
+import {DataSet} from '../../resources/interface/task-data-sets';
import {NAE_NAVIGATION_ITEM_TASK_DATA} from '../../navigation/model/filter-case-injection-token';
import {DataGroup} from '../../resources/interface/data-groups';
@@ -50,7 +50,7 @@ export abstract class AbstractSearchComponent implements SearchComponentConfigur
* Set data request body, that is sent to the filter in addition to the default body.
* The default body is applied first and can be overridden by this argument.
*/
- @Input() additionalFilterData: TaskSetDataRequestFields = {};
+ @Input() additionalFilterData: DataSet = { fields: {} } as DataSet;
/**
* The emitted data contains the filter case object
diff --git a/projects/netgrif-components-core/src/lib/side-menu/content-components/new-case/abstract-new-case.component.ts b/projects/netgrif-components-core/src/lib/side-menu/content-components/new-case/abstract-new-case.component.ts
index 108b00b2be..5310307935 100644
--- a/projects/netgrif-components-core/src/lib/side-menu/content-components/new-case/abstract-new-case.component.ts
+++ b/projects/netgrif-components-core/src/lib/side-menu/content-components/new-case/abstract-new-case.component.ts
@@ -166,7 +166,7 @@ export abstract class AbstractNewCaseComponent implements OnDestroy {
? 'Confirm new case setup'
: response.outcome.message
,
- data: (response.outcome as CreateCaseEventOutcome).aCase
+ data: (response.outcome as CreateCaseEventOutcome).case
});
} else if (!!response.error) {
this._snackBarService.openWarningSnackBar(this._translate.instant('side-menu.new-case.createCaseError') + ' ' + newCase.title);
diff --git a/projects/netgrif-components-core/src/lib/task-content/model/field-type-resource.ts b/projects/netgrif-components-core/src/lib/task-content/model/field-type-resource.ts
index 0934c77b3e..4d7758f1ee 100644
--- a/projects/netgrif-components-core/src/lib/task-content/model/field-type-resource.ts
+++ b/projects/netgrif-components-core/src/lib/task-content/model/field-type-resource.ts
@@ -2,21 +2,22 @@
* Contains types of renderable data fields.
*/
export enum FieldTypeResource {
- BOOLEAN = 'boolean',
- TEXT = 'text',
- NUMBER = 'number',
- ENUMERATION = 'enumeration',
- MULTICHOICE = 'multichoice',
- DATE = 'date',
- DATE_TIME = 'dateTime',
- USER = 'user',
- USER_LIST = 'userList',
- BUTTON = 'button',
- FILE = 'file',
- FILE_LIST = 'fileList',
- ENUMERATION_MAP = 'enumeration_map',
- MULTICHOICE_MAP = 'multichoice_map',
- TASK_REF = 'taskRef',
- FILTER = 'filter',
- I18N = 'i18n'
+ BOOLEAN = 'BOOLEAN',
+ TEXT = 'TEXT',
+ NUMBER = 'NUMBER',
+ ENUMERATION = 'ENUMERATION',
+ MULTICHOICE = 'MULTICHOICE',
+ DATE = 'DATE',
+ DATE_TIME = 'DATE_TIME',
+ USER = 'USER',
+ USER_LIST = 'USER_LIST',
+ BUTTON = 'BUTTON',
+ FILE = 'FILE',
+ FILE_LIST = 'FILE_LIST',
+ ENUMERATION_MAP = 'ENUMERATION_MAP',
+ MULTICHOICE_MAP = 'MULTICHOICE_MAP',
+ TASK_REF = 'TASK_REF',
+ CASE_REF = 'CASE_REF',
+ FILTER = 'FILTER',
+ I18N = 'I18N'
}
diff --git a/projects/netgrif-components-core/src/lib/task-content/model/resource-interface.ts b/projects/netgrif-components-core/src/lib/task-content/model/resource-interfaces.ts
similarity index 55%
rename from projects/netgrif-components-core/src/lib/task-content/model/resource-interface.ts
rename to projects/netgrif-components-core/src/lib/task-content/model/resource-interfaces.ts
index 912638e8e9..3da89e9f7b 100644
--- a/projects/netgrif-components-core/src/lib/task-content/model/resource-interface.ts
+++ b/projects/netgrif-components-core/src/lib/task-content/model/resource-interfaces.ts
@@ -5,6 +5,36 @@ import {FieldTypeResource} from './field-type-resource';
import {FormatFilter} from '../../data-fields/models/format-filter';
import {Component} from '../../data-fields/models/component';
import {FilterMetadata} from '../../search/models/persistance/filter-metadata';
+import {DataGroupLayout} from "../../resources/interface/data-group-layout";
+import {DataGroupAlignment} from "../../resources/interface/data-groups";
+
+export interface DataGroupResource {
+ data: Array;
+ dataRefs: Map;
+ layout: DataGroupLayout;
+ title: string;
+ alignment: DataGroupAlignment;
+ stretch: boolean;
+ parentTaskId: string;
+ parentTransitionId: string;
+ parentCaseId: string;
+ parentTaskRefId: string;
+ nestingLevel: string;
+}
+
+export interface DataRefResource {
+ fieldId: string;
+ field: DataFieldResource;
+ behavior: Behavior;
+ layout: Layout;
+ component: Component;
+ parentTaskId: string;
+ parentCaseId: string;
+}
+
+export interface DataFieldValue {
+ value: any;
+}
export interface DataFieldResource {
stringId: string;
@@ -12,11 +42,9 @@ export interface DataFieldResource {
name: string;
description?: string;
placeholder?: string;
- behavior: Behavior;
- layout?: Layout;
- order: number;
- value?: string | number | Array | boolean | Array | any;
- defaultValue?: string | number | Array | boolean;
+ behavior?: Behavior;
+ value?: DataFieldValue;
+ defaultValue?: unknown;
choices?: Array;
minValue?: number;
minDate?: string;
diff --git a/projects/netgrif-components-core/src/lib/task-content/public-api.ts b/projects/netgrif-components-core/src/lib/task-content/public-api.ts
index b5702e0231..d9af3a8419 100644
--- a/projects/netgrif-components-core/src/lib/task-content/public-api.ts
+++ b/projects/netgrif-components-core/src/lib/task-content/public-api.ts
@@ -17,6 +17,7 @@ export * from './model/async-rendering-configuration-injection-token';
export * from './model/subgrid';
export * from './model/split-data-group';
export * from './model/task-fields';
+export * from './model/resource-interfaces';
/* MODULES */
export * from './task-content/abstract-task-content.component';
diff --git a/projects/netgrif-components-core/src/lib/task-content/services/field-converter.service.spec.ts b/projects/netgrif-components-core/src/lib/task-content/services/field-converter.service.spec.ts
index 4c1ae1f4fc..6410757f13 100644
--- a/projects/netgrif-components-core/src/lib/task-content/services/field-converter.service.spec.ts
+++ b/projects/netgrif-components-core/src/lib/task-content/services/field-converter.service.spec.ts
@@ -4,7 +4,7 @@ import {TemplateAppearance} from '../../data-fields/models/template-appearance';
import {MaterialAppearance} from '../../data-fields/models/material-appearance';
import moment from 'moment';
import {NoopAnimationsModule} from '@angular/platform-browser/animations';
-import {DataFieldResource} from '../model/resource-interface';
+import {DataFieldResource, DataRefResource} from '../model/resource-interfaces';
import {FieldAlignment} from '../../resources/interface/field-alignment';
import {FieldTypeResource} from '../model/field-type-resource';
import {HttpClientTestingModule} from '@angular/common/http/testing';
@@ -34,6 +34,15 @@ describe('FieldConvertorService', () => {
description: 'string',
placeholder: 'string',
behavior: {editable: true},
+ value: {
+ value: undefined
+ },
+ choices: [],
+ validations: undefined
+ };
+ const dataRef: DataRefResource = {
+ fieldId: 'stringId',
+ field: dataField,
layout: {
x: 0,
y: 0,
@@ -42,29 +51,26 @@ describe('FieldConvertorService', () => {
offset: 0,
template: TemplateAppearance.NETGRIF,
appearance: MaterialAppearance.OUTLINE
- },
- order: 0,
- value: undefined,
- choices: [],
- validations: undefined
- };
- expect(service.formatValueForBackend(service.toClass(dataField), null)).toEqual(null);
+ }
+ } as DataRefResource
+
+ expect(service.formatValueForBackend(service.toClass(dataRef), null)).toEqual(null);
const date = moment();
- dataField.type = FieldTypeResource.DATE;
- expect(service.formatValueForBackend(service.toClass(dataField), null)).toEqual(undefined);
- expect(service.formatValueForBackend(service.toClass(dataField), date))
+ dataRef.field.type = FieldTypeResource.DATE;
+ expect(service.formatValueForBackend(service.toClass(dataRef), null)).toEqual(undefined);
+ expect(service.formatValueForBackend(service.toClass(dataRef), date))
.toEqual(date.format('YYYY-MM-DD'));
- dataField.type = FieldTypeResource.USER;
- expect(service.formatValueForBackend(service.toClass(dataField), {id: 5})).toEqual(5);
+ dataRef.field.type = FieldTypeResource.USER;
+ expect(service.formatValueForBackend(service.toClass(dataRef), {id: 5})).toEqual(5);
- dataField.type = FieldTypeResource.DATE_TIME;
- expect(service.formatValueForBackend(service.toClass(dataField), date))
+ dataRef.field.type = FieldTypeResource.DATE_TIME;
+ expect(service.formatValueForBackend(service.toClass(dataRef), date))
.toEqual(date.format('DD.MM.YYYY HH:mm:ss'));
- dataField.type = FieldTypeResource.NUMBER;
- expect(service.formatValueForBackend(service.toClass(dataField), 5)).toEqual(5);
+ dataRef.field.type = FieldTypeResource.NUMBER;
+ expect(service.formatValueForBackend(service.toClass(dataRef), 5)).toEqual(5);
});
it('should test toClass and resolve method ', () => {
@@ -75,6 +81,16 @@ describe('FieldConvertorService', () => {
description: 'string',
placeholder: 'string',
behavior: {editable: true},
+ value: {
+ value: true
+ },
+ choices: ['ABC'],
+ validations: undefined,
+ subType: 'area'
+ };
+ const dataRef: DataRefResource = {
+ fieldId: 'stringId',
+ field: dataField,
layout: {
x: 0,
y: 0,
@@ -85,58 +101,54 @@ describe('FieldConvertorService', () => {
appearance: MaterialAppearance.OUTLINE,
alignment: FieldAlignment.CENTER
},
- order: 0,
- value: true,
- choices: ['ABC'],
- validations: undefined,
- subType: 'area'
- };
- expect(service.resolveType(service.toClass(dataField))).toEqual('boolean');
+ } as DataRefResource
+
+ expect(service.resolveType(service.toClass(dataRef))).toEqual('BOOLEAN');
- dataField.type = FieldTypeResource.TEXT;
- dataField.value = 'string' as any;
- expect(service.resolveType(service.toClass(dataField))).toEqual('text');
+ dataRef.field.type = FieldTypeResource.TEXT;
+ dataRef.field.value.value = 'string' as any;
+ expect(service.resolveType(service.toClass(dataRef))).toEqual('TEXT');
- dataField.type = FieldTypeResource.NUMBER;
- dataField.value = 5 as any;
- expect(service.resolveType(service.toClass(dataField))).toEqual('number');
+ dataRef.field.type = FieldTypeResource.NUMBER;
+ dataRef.field.value.value = 5 as any;
+ expect(service.resolveType(service.toClass(dataRef))).toEqual('NUMBER');
- dataField.type = FieldTypeResource.ENUMERATION;
- expect(service.resolveType(service.toClass(dataField))).toEqual('enumeration');
+ dataRef.field.type = FieldTypeResource.ENUMERATION;
+ expect(service.resolveType(service.toClass(dataRef))).toEqual('ENUMERATION');
- dataField.type = FieldTypeResource.MULTICHOICE;
- expect(service.resolveType(service.toClass(dataField))).toEqual('multichoice');
+ dataRef.field.type = FieldTypeResource.MULTICHOICE;
+ expect(service.resolveType(service.toClass(dataRef))).toEqual('MULTICHOICE');
- dataField.type = FieldTypeResource.ENUMERATION;
- dataField.choices = {abc: 'abc'} as any;
- expect(service.resolveType(service.toClass(dataField))).toEqual('enumeration');
+ dataRef.field.type = FieldTypeResource.ENUMERATION;
+ dataRef.field.choices = {abc: 'abc'} as any;
+ expect(service.resolveType(service.toClass(dataRef))).toEqual('ENUMERATION');
- dataField.type = FieldTypeResource.MULTICHOICE;
- expect(service.resolveType(service.toClass(dataField))).toEqual('multichoice');
+ dataRef.field.type = FieldTypeResource.MULTICHOICE;
+ expect(service.resolveType(service.toClass(dataRef))).toEqual('MULTICHOICE');
- dataField.type = FieldTypeResource.DATE;
- dataField.value = [2020, 3, 3] as any;
- expect(service.resolveType(service.toClass(dataField))).toEqual('date');
+ dataRef.field.type = FieldTypeResource.DATE;
+ dataRef.field.value.value = [2020, 3, 3] as any;
+ expect(service.resolveType(service.toClass(dataRef))).toEqual('DATE');
- dataField.type = FieldTypeResource.DATE_TIME;
- dataField.value = [2020, 3, 3, 3, 30] as any;
- expect(service.resolveType(service.toClass(dataField))).toEqual('dateTime');
+ dataRef.field.type = FieldTypeResource.DATE_TIME;
+ dataRef.field.value.value = [2020, 3, 3, 3, 30] as any;
+ expect(service.resolveType(service.toClass(dataRef))).toEqual('DATE_TIME');
- dataField.type = FieldTypeResource.USER;
- dataField.value = {id: 5, name: 'name', surname: 'surname', email: 'mail'} as any;
- expect(service.resolveType(service.toClass(dataField))).toEqual('user');
+ dataRef.field.type = FieldTypeResource.USER;
+ dataRef.field.value.value = {id: 5, name: 'name', surname: 'surname', email: 'mail'} as any;
+ expect(service.resolveType(service.toClass(dataRef))).toEqual('USER');
- dataField.type = FieldTypeResource.BUTTON;
- dataField.value = 0 as any;
- expect(service.resolveType(service.toClass(dataField))).toEqual('button');
+ dataRef.field.type = FieldTypeResource.BUTTON;
+ dataRef.field.value .value = 0 as any;
+ expect(service.resolveType(service.toClass(dataRef))).toEqual('BUTTON');
- dataField.type = FieldTypeResource.FILE;
- dataField.value = undefined;
- expect(service.resolveType(service.toClass(dataField))).toEqual('file');
+ dataRef.field.type = FieldTypeResource.FILE;
+ dataRef.field.value.value = undefined;
+ expect(service.resolveType(service.toClass(dataRef))).toEqual('FILE');
- dataField.type = FieldTypeResource.FILE_LIST;
- dataField.value = undefined;
- expect(service.resolveType(service.toClass(dataField))).toEqual('fileList');
+ dataRef.field.type = FieldTypeResource.FILE_LIST;
+ dataRef.field.value.value = undefined;
+ expect(service.resolveType(service.toClass(dataRef))).toEqual('FILE_LIST');
});
afterEach(() => {
diff --git a/projects/netgrif-components-core/src/lib/task-content/services/field-converter.service.ts b/projects/netgrif-components-core/src/lib/task-content/services/field-converter.service.ts
index 1a446f04b8..82810b8695 100644
--- a/projects/netgrif-components-core/src/lib/task-content/services/field-converter.service.ts
+++ b/projects/netgrif-components-core/src/lib/task-content/services/field-converter.service.ts
@@ -1,5 +1,5 @@
import {Injectable} from '@angular/core';
-import {DataFieldResource} from '../model/resource-interface';
+import {DataFieldResource, DataRefResource} from '../model/resource-interfaces';
import {DataField} from '../../data-fields/models/abstract-data-field';
import {BooleanField} from '../../data-fields/boolean-field/models/boolean-field';
import {TextField} from '../../data-fields/text-field/models/text-field';
@@ -35,80 +35,80 @@ export class FieldConverterService {
constructor() {
}
- public toClass(item: DataFieldResource): DataField {
- switch (item.type) {
+ public toClass(item: DataRefResource): DataField {
+ switch (item.field.type) {
case FieldTypeResource.BOOLEAN:
- return new BooleanField(item.stringId, item.name, item.value as boolean, item.behavior,
- item.placeholder, item.description, item.layout, item.validations, item.component, item.parentTaskId);
+ return new BooleanField(item.fieldId, item.field.name, item.field.value.value as boolean, item.behavior,
+ item.field.placeholder, item.field.description, item.layout, item.field.validations, item.component, item.parentTaskId);
case FieldTypeResource.TEXT:
if (this.textFieldNames.includes(item.component?.name)) {
- return new TextAreaField(item.stringId, item.name, this.resolveTextValue(item, item.value), item.behavior,
- item.placeholder, item.description, item.layout, item.validations, item.component, item.parentTaskId);
+ return new TextAreaField(item.fieldId, item.field.name, this.resolveTextValue(item, item.field.value.value), item.behavior,
+ item.field.placeholder, item.field.description, item.layout, item.field.validations, item.component, item.parentTaskId);
}
- return new TextField(item.stringId, item.name, this.resolveTextValue(item, item.value), item.behavior, item.placeholder,
- item.description, item.layout, item.validations, item.component, item.parentTaskId);
+ return new TextField(item.fieldId, item.field.name, this.resolveTextValue(item, item.field.value.value), item.behavior, item.field.placeholder,
+ item.field.description, item.layout, item.field.validations, item.component, item.parentTaskId);
case FieldTypeResource.NUMBER:
- return new NumberField(item.stringId, item.name, item.value as number, item.behavior, item.validations, item.placeholder,
- item.description, item.layout, item.formatFilter, this.resolveNumberComponent(item), item.parentTaskId);
+ return new NumberField(item.fieldId, item.field.name, item.field.value.value as number, item.behavior, item.field.validations, item.field.placeholder,
+ item.field.description, item.layout, item.field.formatFilter, this.resolveNumberComponent(item.field), item.parentTaskId);
case FieldTypeResource.ENUMERATION:
case FieldTypeResource.ENUMERATION_MAP:
return this.resolveEnumField(item);
case FieldTypeResource.MULTICHOICE:
- return new MultichoiceField(item.stringId, item.name, item.value, this.resolveMultichoiceChoices(item),
- item.behavior, item.placeholder, item.description, item.layout, item.type, item.validations,
+ return new MultichoiceField(item.fieldId, item.field.name, item.field.value.value, this.resolveMultichoiceChoices(item.field),
+ item.behavior, item.field.placeholder, item.field.description, item.layout, item.field.type, item.field.validations,
item.component, item.parentTaskId);
case FieldTypeResource.MULTICHOICE_MAP:
- return new MultichoiceField(item.stringId, item.name, item.value, this.resolveMultichoiceOptions(item),
- item.behavior, item.placeholder, item.description, item.layout,
- item.type, item.validations, item.component, item.parentTaskId);
+ return new MultichoiceField(item.fieldId, item.field.name, item.field.value.value, this.resolveMultichoiceOptions(item.field),
+ item.behavior, item.field.placeholder, item.field.description, item.layout,
+ item.field.type, item.field.validations, item.component, item.parentTaskId);
case FieldTypeResource.DATE:
let date;
- if (item.value) {
- date = moment(new Date(item.value[0], item.value[1] - 1, item.value[2]));
+ if (item.field.value.value) {
+ date = moment(new Date(item.field.value.value[0], item.field.value.value[1] - 1, item.field.value.value[2]));
}
- return new DateField(item.stringId, item.name, date, item.behavior, item.placeholder,
- item.description, item.layout, item.validations, item.component, item.parentTaskId);
+ return new DateField(item.fieldId, item.field.name, date, item.behavior, item.field.placeholder,
+ item.field.description, item.layout, item.field.validations, item.component, item.parentTaskId);
case FieldTypeResource.DATE_TIME:
let dateTime;
- if (item.value) {
- dateTime = moment(new Date(item.value[0], item.value[1] - 1, item.value[2], item.value[3], item.value[4]));
+ if (item.field.value.value) {
+ dateTime = moment(new Date(item.field.value.value[0], item.field.value.value[1] - 1, item.field.value.value[2], item.field.value.value[3], item.field.value.value[4]));
}
- return new DateTimeField(item.stringId, item.name, dateTime, item.behavior,
- item.placeholder, item.description, item.layout, item.validations, item.component, item.parentTaskId);
+ return new DateTimeField(item.fieldId, item.field.name, dateTime, item.behavior,
+ item.field.placeholder, item.field.description, item.layout, item.field.validations, item.component, item.parentTaskId);
case FieldTypeResource.USER:
let user;
- if (item.value) {
- user = new UserValue(item.value.id, item.value.name, item.value.surname, item.value.email);
+ if (item.field.value.value) {
+ user = new UserValue(item.field.value.value.id, item.field.value.value.name, item.field.value.value.surname, item.field.value.value.email);
}
- return new UserField(item.stringId, item.name, item.behavior, user,
- item.roles, item.placeholder, item.description, item.layout, item.validations, item.component, item.parentTaskId);
+ return new UserField(item.fieldId, item.field.name, item.behavior, user,
+ item.field.roles, item.field.placeholder, item.field.description, item.layout, item.field.validations, item.component, item.parentTaskId);
case FieldTypeResource.USER_LIST:
let userListValue = new UserListValue(new Map());
- if (item.value) {
- item.value.userValues.forEach(u => userListValue.addUserValue(new UserValue(u.id, u.name, u.surname, u.email)));
+ if (item.field.value.value) {
+ item.field.value.value.userValues.forEach(u => userListValue.addUserValue(new UserValue(u.id, u.name, u.surname, u.email)));
}
- return new UserListField(item.stringId, item.name, item.behavior, userListValue,
- item.placeholder, item.description, item.layout, item.validations, item.component, item.parentTaskId);
+ return new UserListField(item.fieldId, item.field.name, item.behavior, userListValue,
+ item.field.placeholder, item.field.description, item.layout, item.field.validations, item.component, item.parentTaskId);
case FieldTypeResource.BUTTON:
- return new ButtonField(item.stringId, item.name, item.behavior, item.value as number,
- item.placeholder, item.description, item.layout, item.validations, item.component, item.parentTaskId);
+ return new ButtonField(item.fieldId, item.field.name, item.behavior, item.field.value.value as number,
+ item.field.placeholder, item.field.description, item.layout, item.field.validations, item.component, item.parentTaskId);
case FieldTypeResource.FILE:
- return new FileField(item.stringId, item.name, item.behavior, item.value ? item.value : {},
- item.placeholder, item.description, item.layout, null, null, item.validations, item.component,
+ return new FileField(item.fieldId, item.field.name, item.behavior, item.field.value.value ? item.field.value.value : {},
+ item.field.placeholder, item.field.description, item.layout, null, null, item.field.validations, item.component,
item.parentTaskId);
case FieldTypeResource.FILE_LIST:
- return new FileListField(item.stringId, item.name, item.behavior, item.value ? item.value : {},
- item.placeholder, item.description, item.layout, item.validations, null, null, item.component,
+ return new FileListField(item.fieldId, item.field.name, item.behavior, item.field.value.value ? item.field.value.value : {},
+ item.field.placeholder, item.field.description, item.layout, item.field.validations, null, null, item.component,
item.parentTaskId);
case FieldTypeResource.TASK_REF:
- return new TaskRefField(item.stringId, item.name, item.value ? item.value : [], item.behavior,
- item.placeholder, item.description, item.layout, item.validations, item.component, item.parentTaskId);
+ return new TaskRefField(item.fieldId, item.field.name, item.field.value.value ? item.field.value.value : [], item.behavior,
+ item.field.placeholder, item.field.description, item.layout, item.field.validations, item.component, item.parentTaskId);
case FieldTypeResource.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);
+ return new FilterField(item.fieldId, item.field.name, item.field.value.value ?? '', item.field.filterMetadata, item.field.allowedNets,
+ item.behavior, item.field.placeholder, item.field.description, item.layout, item.field.validations, item.component, item.parentTaskId);
case FieldTypeResource.I18N:
- return new I18nField(item.stringId, item.name, item.value ?? {defaultValue: ''}, item.behavior, item.placeholder,
- item.description, item.layout, item.validations, item.component);
+ return new I18nField(item.fieldId, item.field.name, item.field.value.value ?? {defaultValue: ''}, item.behavior, item.field.placeholder,
+ item.field.description, item.layout, item.field.validations, item.component);
}
}
@@ -186,19 +186,20 @@ export class FieldConverterService {
/**
* Resolves `enumeration` and `eunumeration_map` fields into their appropriate class instances
- * @param enumField enumeration field resource
+ * @param dataRef enumeration dataRef resource
*/
- protected resolveEnumField(enumField: DataFieldResource): EnumerationField {
+ protected resolveEnumField(dataRef: DataRefResource): EnumerationField {
+ const enumField = dataRef.field;
const options = enumField.type === FieldTypeResource.ENUMERATION
? this.resolveEnumChoices(enumField)
: this.resolveEnumOptions(enumField);
if (enumField.component && enumField.component.name === 'autocomplete_dynamic') {
- return new DynamicEnumerationField(enumField.stringId, enumField.name, enumField.value, options,
- enumField.behavior, enumField.placeholder, enumField.description, enumField.layout,
+ return new DynamicEnumerationField(enumField.stringId, enumField.name, enumField.value.value, options,
+ dataRef.behavior, enumField.placeholder, enumField.description, dataRef.layout,
enumField.type, enumField.validations, enumField.component, enumField.parentTaskId);
} else {
- return new EnumerationField(enumField.stringId, enumField.name, enumField.value, options,
- enumField.behavior, enumField.placeholder, enumField.description, enumField.layout,
+ return new EnumerationField(enumField.stringId, enumField.name, enumField.value.value, options,
+ dataRef.behavior, enumField.placeholder, enumField.description, dataRef.layout,
enumField.type, enumField.validations, enumField.component, enumField.parentTaskId);
}
}
@@ -295,8 +296,9 @@ export class FieldConverterService {
return value;
}
- protected resolveTextValue(field: DataFieldResource, value: string): string {
- if (field.component !== undefined && field.component.name === 'password' && value !== '' && value !== undefined) {
+ protected resolveTextValue(dataRef: DataRefResource, value: string): string {
+ if (((dataRef.component !== undefined && dataRef.component.name === 'password')
+ || (dataRef.field.component !== undefined && dataRef.field.component.name === 'password')) && (value !== '' && value !== undefined)) {
return decodeBase64(value);
}
return value;
diff --git a/projects/netgrif-components-core/src/lib/task-content/services/task-content.service.ts b/projects/netgrif-components-core/src/lib/task-content/services/task-content.service.ts
index c399d9308c..5d893ade18 100644
--- a/projects/netgrif-components-core/src/lib/task-content/services/task-content.service.ts
+++ b/projects/netgrif-components-core/src/lib/task-content/services/task-content.service.ts
@@ -248,7 +248,7 @@ export abstract class TaskContentService implements OnDestroy {
// type is just an information, not an update. A field cannot change its type
return; // continue - the field does not need updating, since nothing changed
case 'value':
- field.valueWithoutChange(this._fieldConverterService.formatValueFromBackend(field, updatedField[key]));
+ field.valueWithoutChange(this._fieldConverterService.formatValueFromBackend(field, updatedField[key][key]));
break;
case 'behavior':
if (updatedField.behavior[this._task.transitionId]) {
diff --git a/projects/netgrif-components-core/src/lib/task/models/task-set-data-request-context.ts b/projects/netgrif-components-core/src/lib/task/models/task-set-data-request-context.ts
index 842c9c8725..9cacfd0289 100644
--- a/projects/netgrif-components-core/src/lib/task/models/task-set-data-request-context.ts
+++ b/projects/netgrif-components-core/src/lib/task/models/task-set-data-request-context.ts
@@ -1,11 +1,11 @@
-import {TaskSetDataRequestBody} from '../../resources/interface/task-set-data-request-body';
+import {TaskDataSets} from '../../resources/interface/task-data-sets';
/**
* Holds the information about a `setData` request, alongside with the previous values,
* so that a queued request can be reverted, if it fails.
*/
export interface TaskSetDataRequestContext {
- body: TaskSetDataRequestBody;
+ body: TaskDataSets;
previousValues: {
[fieldId: string]: any;
};
diff --git a/projects/netgrif-components-core/src/lib/task/services/cancel-task.service.spec.ts b/projects/netgrif-components-core/src/lib/task/services/cancel-task.service.spec.ts
index f400c6b646..04a3c3fe69 100644
--- a/projects/netgrif-components-core/src/lib/task/services/cancel-task.service.spec.ts
+++ b/projects/netgrif-components-core/src/lib/task/services/cancel-task.service.spec.ts
@@ -155,7 +155,7 @@ describe('CancelTaskService', () => {
users: {},
userRefs: {}
},
- aCase: createMockCase(),
+ case: createMockCase(),
net: createMockNet()
} as TaskEventOutcome
};
diff --git a/projects/netgrif-components-core/src/lib/task/services/finish-task.service.spec.ts b/projects/netgrif-components-core/src/lib/task/services/finish-task.service.spec.ts
index bb7949711e..aba12fb7c2 100644
--- a/projects/netgrif-components-core/src/lib/task/services/finish-task.service.spec.ts
+++ b/projects/netgrif-components-core/src/lib/task/services/finish-task.service.spec.ts
@@ -142,7 +142,7 @@ describe('FinishTaskService', () => {
users: {},
userRefs: {}
},
- aCase: createMockCase(),
+ case: createMockCase(),
net: createMockNet()
} as AssignTaskEventOutcome
};
diff --git a/projects/netgrif-components-core/src/lib/task/services/task-data.service.spec.ts b/projects/netgrif-components-core/src/lib/task/services/task-data.service.spec.ts
index e3fbb64743..4877de8719 100644
--- a/projects/netgrif-components-core/src/lib/task/services/task-data.service.spec.ts
+++ b/projects/netgrif-components-core/src/lib/task/services/task-data.service.spec.ts
@@ -23,7 +23,7 @@ import {DataGroup} from '../../resources/interface/data-groups';
import {BehaviorSubject, Observable, of} from 'rxjs';
import {delay, take} from 'rxjs/operators';
import {TaskResourceService} from '../../resources/engine-endpoint/task-resource.service';
-import {TaskSetDataRequestBody} from '../../resources/interface/task-set-data-request-body';
+import {TaskDataSets} from '../../resources/interface/task-data-sets';
import {FormControl} from '@angular/forms';
import {SnackBarModule} from '../../snack-bar/snack-bar.module';
import {ChangedFieldsService} from '../../changed-fields/services/changed-fields.service';
@@ -32,6 +32,7 @@ import {SetDataEventOutcome} from '../../event/model/event-outcomes/data-outcome
import {createMockCase} from '../../utility/tests/utility/create-mock-case';
import {createMockNet} from '../../utility/tests/utility/create-mock-net';
import {Injectable} from "@angular/core";
+import {DataFieldResource} from "../../task-content/model/resource-interfaces";
describe('TaskDataService', () => {
let service: TaskDataService;
@@ -225,36 +226,36 @@ class MockTaskResourceService {
return of(this._response).pipe(delay(this._delay));
}
- public setData(taskId: string, body: TaskSetDataRequestBody): Observable {
+ public setData(taskId: string, body: TaskDataSets): Observable {
const response: EventOutcomeMessageResource = {
success: 'success',
outcome: {
task: createMockTask(),
- aCase: createMockCase('string'),
+ case: createMockCase('string'),
outcomes: [
{
task: createMockTask(),
- aCase: createMockCase('string'),
+ case: createMockCase('string'),
outcomes: [
{}
],
message: '',
net: createMockNet(),
changedFields: {
- changedFields: {}
+ fields: {}
}
} as SetDataEventOutcome
],
message: '',
net: createMockNet(),
changedFields: {
- changedFields: {}
+ fields: {}
}
} as SetDataEventOutcome
};
- Object.keys(body[taskId]).forEach(key => {
+ Object.keys(body.body[taskId].fields).forEach(key => {
if (this._changedFieldsMap.has(key)) {
- (response.outcome.outcomes[0] as SetDataEventOutcome).changedFields.changedFields[this._changedFieldsMap.get(key)] = {};
+ (response.outcome.outcomes[0] as SetDataEventOutcome).changedFields.fields[this._changedFieldsMap.get(key)] = {} as DataFieldResource;
}
});
return of(response).pipe(delay(this._delay));
diff --git a/projects/netgrif-components-core/src/lib/task/services/task-data.service.ts b/projects/netgrif-components-core/src/lib/task/services/task-data.service.ts
index 4a70b7e458..3a637b1f47 100644
--- a/projects/netgrif-components-core/src/lib/task/services/task-data.service.ts
+++ b/projects/netgrif-components-core/src/lib/task/services/task-data.service.ts
@@ -8,7 +8,7 @@ import {LoggerService} from '../../logger/services/logger.service';
import {SnackBarService} from '../../snack-bar/services/snack-bar.service';
import {TaskResourceService} from '../../resources/engine-endpoint/task-resource.service';
import {FieldConverterService} from '../../task-content/services/field-converter.service';
-import {TaskSetDataRequestBody} from '../../resources/interface/task-set-data-request-body';
+import {DataSet, TaskDataSets} from '../../resources/interface/task-data-sets';
import {TaskHandlingService} from './task-handling-service';
import {NAE_TASK_OPERATIONS} from '../models/task-operations-injection-token';
import {TaskOperations} from '../interfaces/task-operations';
@@ -35,6 +35,7 @@ import {ChangedFieldsService} from '../../changed-fields/services/changed-fields
import {ChangedFieldsMap} from '../../event/services/interfaces/changed-fields-map';
import {TaskFields} from '../../task-content/model/task-fields';
import {EnumerationField} from "../../data-fields/enumeration-field/models/enumeration-field";
+import {DataFieldResource, DataFieldValue} from "../../task-content/model/resource-interfaces";
/**
* Handles the loading and updating of data fields and behaviour of
@@ -317,19 +318,19 @@ export class TaskDataService extends TaskHandlingService implements OnDestroy {
*/
protected createUpdateRequestContext(): TaskSetDataRequestContext {
const context: TaskSetDataRequestContext = {
- body: {},
+ body: { body: {} } as TaskDataSets,
previousValues: {}
};
this._safeTask.dataGroups.filter(dataGroup => dataGroup.parentTaskId === undefined).forEach(dataGroup => {
dataGroup.fields.filter(field => this.wasFieldUpdated(field)).forEach(field => {
- context.body[this._task.stringId] = {};
+ context.body.body[this._task.stringId] = { fields: {} } as DataSet;
this.addFieldToSetDataRequestBody(context, this._task.stringId, field);
});
});
this._safeTask.dataGroups.filter(dataGroup => dataGroup.parentTaskId !== undefined).forEach(dataGroup => {
if (dataGroup.fields.some(field => this.wasFieldUpdated(field))) {
- context.body[dataGroup.parentTaskId] = {};
+ context.body.body[dataGroup.parentTaskId] = { fields: {} } as DataSet;
} else {
return;
}
@@ -341,10 +342,12 @@ export class TaskDataService extends TaskHandlingService implements OnDestroy {
}
protected addFieldToSetDataRequestBody(context: TaskSetDataRequestContext, taskId: string, field: DataField): void {
- context.body[taskId][field.stringId] = {
+ context.body.body[taskId].fields[field.stringId] = {
type: this._fieldConverterService.resolveType(field),
- value: this._fieldConverterService.formatValueForBackend(field, field.value)
- };
+ value: {
+ value: this._fieldConverterService.formatValueForBackend(field, field.value)
+ } as DataFieldValue
+ } as DataFieldResource;
context.previousValues[field.stringId] = field.previousValue;
field.changed = false;
}
@@ -365,7 +368,7 @@ export class TaskDataService extends TaskHandlingService implements OnDestroy {
* Checks whether the request could still be performed by the logged user
* @param request
*/
- protected isSetDataRequestStillValid(request: TaskSetDataRequestBody): boolean {
+ protected isSetDataRequestStillValid(request: TaskDataSets): boolean {
if (!this.isTaskPresent()) {
return false;
}
@@ -375,13 +378,13 @@ export class TaskDataService extends TaskHandlingService implements OnDestroy {
if (!this._userComparator.compareUsers(this._safeTask.user)) {
return false;
}
- const taskIdsInRequest: Array = Object.keys(request);
+ const taskIdsInRequest: Array = Object.keys(request.body);
for (const taskId of taskIdsInRequest) {
if (!Object.keys(this._taskContentService.taskFieldsIndex).includes(taskId)) {
this._log.error(`Task id ${taskId} is not present in task fields index`);
return false;
}
- const fieldIdsOfRequest = Object.keys(request[taskId]);
+ const fieldIdsOfRequest = Object.keys(request.body[taskId].fields);
for (const fieldId of fieldIdsOfRequest) {
const field = this._taskContentService.taskFieldsIndex[taskId].fields[fieldId];
if (field === undefined) {
@@ -391,7 +394,7 @@ export class TaskDataService extends TaskHandlingService implements OnDestroy {
}
if (!field.behavior.editable) {
this._log.debug(`Field ${fieldId}, was meant to be set to
- ${JSON.stringify(request[taskId][fieldId])
+ ${JSON.stringify(request.body[taskId][fieldId])
}, but is no loner editable.`);
return false;
}
@@ -407,8 +410,8 @@ export class TaskDataService extends TaskHandlingService implements OnDestroy {
* @param afterAction the action that should be performed after the request is processed
* @param nextEvent indicates to the event queue that the next event can be processed
*/
- protected performSetDataRequest(setTaskId: string, body: TaskSetDataRequestBody, afterAction: AfterAction, nextEvent: AfterAction) {
- if (Object.keys(body).length === 0) {
+ protected performSetDataRequest(setTaskId: string, body: TaskDataSets, afterAction: AfterAction, nextEvent: AfterAction) {
+ if (Object.keys(body.body).length === 0) {
this.sendNotification(TaskEvent.SET_DATA, true);
afterAction.resolve(true);
nextEvent.resolve(true);
@@ -450,7 +453,7 @@ export class TaskDataService extends TaskHandlingService implements OnDestroy {
response: EventOutcomeMessageResource,
afterAction: AfterAction,
nextEvent: AfterAction,
- body: TaskSetDataRequestBody) {
+ body: TaskDataSets) {
if (response.error !== '') {
this._snackBar.openErrorSnackBar(this._translate.instant(response.error));
} else {
@@ -483,7 +486,7 @@ export class TaskDataService extends TaskHandlingService implements OnDestroy {
response: EventOutcomeMessageResource,
afterAction: AfterAction,
nextEvent: AfterAction,
- body: TaskSetDataRequestBody) {
+ body: TaskDataSets) {
const outcome = response.outcome;
const changedFieldsMap: ChangedFieldsMap = this._eventService.parseChangedFieldsFromOutcomeTree(outcome);
@@ -508,7 +511,7 @@ export class TaskDataService extends TaskHandlingService implements OnDestroy {
error: HttpErrorResponse,
afterAction: AfterAction,
nextEvent: AfterAction,
- body: TaskSetDataRequestBody) {
+ body: TaskDataSets) {
this._log.debug('setting task data failed', error);
if (!this.isTaskRelevant(setTaskId)) {
@@ -534,18 +537,18 @@ export class TaskDataService extends TaskHandlingService implements OnDestroy {
*/
protected revertSetDataRequest(context: TaskSetDataRequestContext) {
// this iteration could be improved if we had a map of all the data fields in a task
- const totalCount = Object.keys(context.body).length;
+ const totalCount = Object.keys(context.body.body[this._safeTask.stringId]).length;
let foundCount = 0;
for (const datagroup of this._safeTask.dataGroups) {
for (const field of datagroup.fields) {
- if (!context.body[field.stringId]) {
+ if (!context.body.body[this._safeTask.stringId][field.stringId]) {
continue;
}
if (this.compareBackendFormattedFieldValues(
this._fieldConverterService.formatValueForBackend(field, field.value),
- context.body[field.stringId].value)
+ context.body.body[this._safeTask.stringId][field.stringId].value)
) {
field.valueWithoutChange(context.previousValues[field.stringId]);
}
@@ -622,9 +625,9 @@ export class TaskDataService extends TaskHandlingService implements OnDestroy {
});
}
- private clearWaitingForResponseFlag(body: TaskSetDataRequestBody) {
- Object.keys(body).forEach(taskId => {
- Object.keys(body[taskId]).forEach(fieldId => {
+ private clearWaitingForResponseFlag(body: TaskDataSets) {
+ Object.keys(body.body).forEach(taskId => {
+ Object.keys(body.body[taskId].fields).forEach(fieldId => {
this._taskContentService.taskFieldsIndex[taskId].fields[fieldId].waitingForResponse = false;
});
});
diff --git a/projects/netgrif-components-core/src/lib/utility/tests/utility/create-mock-case-outcome.ts b/projects/netgrif-components-core/src/lib/utility/tests/utility/create-mock-case-outcome.ts
index 942ae4ae55..80416be7b9 100644
--- a/projects/netgrif-components-core/src/lib/utility/tests/utility/create-mock-case-outcome.ts
+++ b/projects/netgrif-components-core/src/lib/utility/tests/utility/create-mock-case-outcome.ts
@@ -14,7 +14,7 @@ export function createMockCaseOutcome(aCase: Case = createMockCase(), net: Net =
return {
net,
outcomes,
- aCase,
+ case: aCase,
message: 'Mock case event outcome'
} as CaseEventOutcome;
}
diff --git a/projects/netgrif-components-core/src/lib/utility/tests/utility/create-mock-get-data-outcome.ts b/projects/netgrif-components-core/src/lib/utility/tests/utility/create-mock-get-data-outcome.ts
index 6d64310667..0cdf28257e 100644
--- a/projects/netgrif-components-core/src/lib/utility/tests/utility/create-mock-get-data-outcome.ts
+++ b/projects/netgrif-components-core/src/lib/utility/tests/utility/create-mock-get-data-outcome.ts
@@ -13,7 +13,7 @@ export function createMockGetDataOutcome(data: Array> = [createMo
net: Net = createMockNet(), aCase: Case = createMockCase(), outcomes: Array = []) {
return {
net,
- aCase,
+ case: aCase,
task,
outcomes,
message: 'Mock get data event outcome',
diff --git a/projects/netgrif-components-core/src/lib/utility/tests/utility/create-mock-set-data-outcome.ts b/projects/netgrif-components-core/src/lib/utility/tests/utility/create-mock-set-data-outcome.ts
index cd5626a0e5..99d1d2b10a 100644
--- a/projects/netgrif-components-core/src/lib/utility/tests/utility/create-mock-set-data-outcome.ts
+++ b/projects/netgrif-components-core/src/lib/utility/tests/utility/create-mock-set-data-outcome.ts
@@ -7,6 +7,7 @@ import {Case} from '../../../resources/interface/case';
import {createMockCase} from './create-mock-case';
import {EventOutcome} from '../../../resources/interface/event-outcome';
import {ChangedFieldContainer} from '../../../resources/interface/changed-field-container';
+import {DataSet} from "../../../resources/interface/task-data-sets";
/**
@@ -14,11 +15,11 @@ import {ChangedFieldContainer} from '../../../resources/interface/changed-field-
*
* If attributes are not specified, default values are used.
*/
-export function createMockSetDataOutcome(changedFields: ChangedFieldContainer = { changedFields: {}}, task: Task = createMockTask(),
+export function createMockSetDataOutcome(changedFields: DataSet = { fields: {}} as DataSet, task: Task = createMockTask(),
net: Net = createMockNet(), aCase: Case = createMockCase(), outcomes: Array = []) {
return {
net,
- aCase,
+ case: aCase,
task,
outcomes,
message: 'Mock set data event outcome',
diff --git a/projects/netgrif-components-core/src/lib/utility/tests/utility/create-mock-task-outcome.ts b/projects/netgrif-components-core/src/lib/utility/tests/utility/create-mock-task-outcome.ts
index 5bae155dd7..eeac5789ce 100644
--- a/projects/netgrif-components-core/src/lib/utility/tests/utility/create-mock-task-outcome.ts
+++ b/projects/netgrif-components-core/src/lib/utility/tests/utility/create-mock-task-outcome.ts
@@ -17,7 +17,7 @@ export function createMockTaskOutcome(task: Task = createMockTask(), net: Net =
return {
outcomes,
task,
- aCase,
+ case: aCase,
net,
message: 'Mock case event outcome'
} as TaskEventOutcome;
diff --git a/projects/netgrif-components-core/src/lib/view/case-view/service/case-view-service.ts b/projects/netgrif-components-core/src/lib/view/case-view/service/case-view-service.ts
index 5ad6f92175..a6cf8ff366 100644
--- a/projects/netgrif-components-core/src/lib/view/case-view/service/case-view-service.ts
+++ b/projects/netgrif-components-core/src/lib/view/case-view/service/case-view-service.ts
@@ -239,7 +239,7 @@ export class CaseViewService extends AbstractSortableViewComponent implements On
this._snackBarService.openSuccessSnackBar(this._translate.instant('side-menu.new-case.createCase')
+ ' ' + this._translate.instant('side-menu.new-case.defaultCaseName'));
this.reload();
- myCase.next((response.outcome as CreateCaseEventOutcome).aCase);
+ myCase.next((response.outcome as CreateCaseEventOutcome).case);
myCase.complete();
}, error => this._snackBarService.openErrorSnackBar(error.message ? error.message : error));
});
diff --git a/projects/netgrif-components-core/src/lib/view/tree-case-view/tree-component/case-tree.service.spec.ts b/projects/netgrif-components-core/src/lib/view/tree-case-view/tree-component/case-tree.service.spec.ts
index 6b78b49642..c0a64686bd 100644
--- a/projects/netgrif-components-core/src/lib/view/tree-case-view/tree-component/case-tree.service.spec.ts
+++ b/projects/netgrif-components-core/src/lib/view/tree-case-view/tree-component/case-tree.service.spec.ts
@@ -28,7 +28,7 @@ import {Net} from '../../../process/net';
import {ProcessService} from '../../../process/process.service';
import {createMockPage} from '../../../utility/tests/utility/create-mock-page';
import {TaskSearchCaseQuery, TaskSearchRequestBody} from '../../../filter/models/task-search-request-body';
-import {TaskSetDataRequestBody} from '../../../resources/interface/task-set-data-request-body';
+import {DataSet, TaskDataSets} from '../../../resources/interface/task-data-sets';
import {getImmediateData} from '../../../utility/get-immediate-data';
import {ChangedFields} from '../../../data-fields/models/changed-fields';
import {EventOutcomeMessageResource} from '../../../resources/interface/message-resource';
@@ -36,6 +36,7 @@ import {SetDataEventOutcome} from '../../../event/model/event-outcomes/data-outc
import {AssignTaskEventOutcome} from '../../../event/model/event-outcomes/task-outcomes/assign-task-event-outcome';
import {CreateCaseEventOutcome} from '../../../event/model/event-outcomes/case-outcomes/create-case-event-outcome';
import {createMockNet} from '../../../utility/tests/utility/create-mock-net';
+import {DataFieldResource, DataFieldValue} from "../../../task-content/model/resource-interfaces";
class MockTreeNode {
@@ -363,10 +364,12 @@ describe('CaseTreeService', () => {
caseResourceMock.createMockTree(new MockTreeNode(true, [subtreeToAdd, secondSubtree], 'root'));
caseResourceMock.createNext = subtreeToAdd;
getImmediateData(caseResourceMock.mockCases.get('root'), TreePetriflowIdentifiers.CHILDREN_CASE_REF).value = [];
- taskResourceMock.changeNext = {};
- taskResourceMock.changeNext[TreePetriflowIdentifiers.CHILDREN_CASE_REF] = {
- value: [subtreeToAdd.stringId, secondSubtree.stringId]
- };
+ taskResourceMock.changeNext = {fields: {}} as DataSet;
+ taskResourceMock.changeNext.fields[TreePetriflowIdentifiers.CHILDREN_CASE_REF] = {
+ value: {
+ value: [subtreeToAdd.stringId, secondSubtree.stringId]
+ } as DataFieldValue
+ } as DataFieldResource;
treeService.treeRootLoaded$.subscribe(loaded => {
if (loaded) {
@@ -489,7 +492,7 @@ class TreeTestCaseResourceService {
success: '',
outcome: {
net: createMockNet(),
- aCase: newCase,
+ case: newCase,
message: '',
outcomes: []
} as CreateCaseEventOutcome
@@ -506,7 +509,7 @@ class TreeTestCaseResourceService {
success: '',
outcome: {
net: createMockNet(),
- aCase: preparedCase,
+ case: preparedCase,
message: '',
outcomes: []
} as CreateCaseEventOutcome
@@ -529,7 +532,7 @@ class TreeTestTaskResourceService {
public mockTasks: Map;
// merging of changes is not implemented so be careful when using this feature for testing
- public changeNext: ChangedFields = undefined;
+ public changeNext: DataSet = undefined;
constructor() {
this.mockTasks = new Map();
@@ -571,13 +574,13 @@ class TreeTestTaskResourceService {
outcomes: [],
message: '',
task: createMockTask(),
- aCase: createMockCase(),
+ case: createMockCase(),
net: createMockNet()
} as AssignTaskEventOutcome
});
}
- public setData(taskId: string, body: TaskSetDataRequestBody): Observable {
+ public setData(taskId: string, body: TaskDataSets): Observable {
const task = this.mockTasks.get(taskId);
const caseOfTask = this._mockCaseService.mockCases.get(task.caseId);
Object.entries(body).forEach(([fieldId, changeRequest]) => {
@@ -594,11 +597,11 @@ class TreeTestTaskResourceService {
outcomes: [],
message: '',
task: createMockTask(),
- aCase: createMockCase(),
+ case: createMockCase(),
net: createMockNet(),
changedFields: {
- changedFields: []
- }
+ fields: {}
+ } as DataSet
} as SetDataEventOutcome
});
} else {
@@ -616,11 +619,9 @@ class TreeTestTaskResourceService {
outcomes: [],
message: '',
task: createMockTask(),
- aCase: createMockCase(),
+ case: createMockCase(),
net: createMockNet(),
- changedFields: {
- changedFields: change
- }
+ changedFields: change
} as SetDataEventOutcome
});
}
diff --git a/projects/netgrif-components-core/src/lib/view/tree-case-view/tree-component/case-tree.service.ts b/projects/netgrif-components-core/src/lib/view/tree-case-view/tree-component/case-tree.service.ts
index c2d38de064..6c5d566c20 100644
--- a/projects/netgrif-components-core/src/lib/view/tree-case-view/tree-component/case-tree.service.ts
+++ b/projects/netgrif-components-core/src/lib/view/tree-case-view/tree-component/case-tree.service.ts
@@ -35,6 +35,10 @@ import {NAE_TREE_CASE_VIEW_CONFIGURATION} from './model/tree-configuration-injec
import {TreeCaseViewConfiguration} from './model/tree-case-view-configuration';
import {PaginationParams} from '../../../utility/pagination/pagination-params';
import {createSortParam, PaginationSort} from '../../../utility/pagination/pagination-sort';
+import {DataSet, TaskDataSets} from "../../../resources/interface/task-data-sets";
+import {DataFieldResource, DataFieldValue} from "../../../task-content/model/resource-interfaces";
+import {FieldTypeResource} from "../../../task-content/model/field-type-resource";
+import {Data} from "@angular/router";
/**
* An internal helper object, that is used to return two values from a function.
@@ -523,7 +527,7 @@ export class CaseTreeService implements OnDestroy {
netId: net.stringId
}).subscribe((outcomeResource: EventOutcomeMessageResource) => {
const caseRefField = getImmediateData(clickedNode.case, TreePetriflowIdentifiers.CHILDREN_CASE_REF);
- const setCaseRefValue = [...caseRefField.value, (outcomeResource.outcome as CreateCaseEventOutcome).aCase.stringId];
+ const setCaseRefValue = [...caseRefField.value, (outcomeResource.outcome as CreateCaseEventOutcome).case.stringId];
this.performCaseRefCall(clickedNode.case.stringId, setCaseRefValue).subscribe(
valueChange => this.updateTreeAfterChildAdd(clickedNode, valueChange ? valueChange : setCaseRefValue, operationResult)
);
@@ -702,17 +706,19 @@ export class CaseTreeService implements OnDestroy {
this._logger.error('Case ref accessor task could not be assigned', assignResponse.error);
}
- const body = {};
- body[task.stringId] = {
- [TreePetriflowIdentifiers.CHILDREN_CASE_REF]: {
- type: 'caseRef',
+ const body = { body: {}} as TaskDataSets;
+ body.body[task.stringId] = {fields: {}} as DataSet;
+ body.body[task.stringId].fields[TreePetriflowIdentifiers.CHILDREN_CASE_REF] = {} as DataFieldResource
+ body.body[task.stringId].fields[TreePetriflowIdentifiers.CHILDREN_CASE_REF] = {
+ type: FieldTypeResource.CASE_REF,
+ value: {
value: newCaseRefValue
- }
- };
+ } as DataFieldValue
+ } as DataFieldResource
this._taskResourceService.setData(task.stringId, body).subscribe((outcomeResource: EventOutcomeMessageResource) => {
- const changedFields = (outcomeResource.outcome as SetDataEventOutcome).changedFields.changedFields;
- const caseRefChanges = changedFields[TreePetriflowIdentifiers.CHILDREN_CASE_REF];
- result$.next(caseRefChanges ? caseRefChanges.value : undefined);
+ const changedFields = (outcomeResource.outcome as SetDataEventOutcome).changedFields;
+ const caseRefChanges = changedFields.fields[TreePetriflowIdentifiers.CHILDREN_CASE_REF];
+ result$.next(caseRefChanges ? caseRefChanges.value.value : undefined);
result$.complete();
this._taskResourceService.finishTask(task.stringId).subscribe(finishResponse => {
if (finishResponse.success) {