Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
0a5f795
NAE-2100 - Case view export button as NAE feature
MartinSiran May 15, 2025
6e8e2bb
NAE-2100 - Case view export button as NAE feature
MartinSiran May 16, 2025
b176578
NAE-2100 - Case view export button as NAE feature
MartinSiran May 16, 2025
6596fb0
NAE-2100 - Case view export button as NAE feature
MartinSiran May 16, 2025
2366a6b
NAE-2100 - Case view export button as NAE feature
MartinSiran May 16, 2025
d1c14ac
[NAE-2101] - Release 6.4.2 CE
mazarijuraj May 16, 2025
c4aafc2
Merge branch 'release/6.4.2' into NAE-2100
mazarijuraj May 16, 2025
f307847
Merge pull request #279 from netgrif/NAE-2100
mazarijuraj May 16, 2025
a7eb4fd
[NAE-2231] Unable to change behavior of taskRef on finish event witho…
Retoocs Oct 14, 2025
055780f
[NAE-2268] Fix resolving of referenced taskId on frontend
Kovy95 Nov 20, 2025
c56661c
Merge pull request #312 from netgrif/NAE-2268
tuplle Dec 1, 2025
a7853f0
Merge branch 'release/6.4.2' into NAE-2231
tuplle Dec 1, 2025
3e9c486
Merge pull request #307 from netgrif/NAE-2231
tuplle Dec 1, 2025
42949df
Bump version to 6.4.2-rc.5 and update changelog with fixes for NAE-22…
tuplle Dec 1, 2025
3b1f375
[NAE-2290] Couldn't find referenced task in a taskref incoming from e…
Kovy95 Dec 2, 2025
3c31c12
Merge remote-tracking branch 'origin/release/6.4.2' into NAE-2290
tuplle Dec 2, 2025
fb3587d
Merge pull request #313 from netgrif/NAE-2290
tuplle Dec 2, 2025
28679ae
Bump version to 6.4.2-rc.6 and update changelog with fix for NAE-2290.
tuplle Dec 2, 2025
851d55c
[NAE-2394] - Fields looks editable when switching tabs
Kovy95 Mar 26, 2026
55fbd3f
[NAE-2393] Validation property on set data event
Kovy95 Mar 31, 2026
6a9dee8
[NAE-2393] Validation property on set data event
Kovy95 Mar 31, 2026
2c2d2f7
[NAE-2401] Timestamp of case dataSet change
Kovy95 Apr 2, 2026
e980c6a
[NAE-2401] Timestamp of case dataSet change
Kovy95 Apr 2, 2026
ae4c982
[NAE-2393] Validation property on set data event
Kovy95 Apr 2, 2026
2c780a9
Merge pull request #318 from netgrif/NAE-2394
Kovy95 Apr 2, 2026
276bad3
Merge remote-tracking branch 'origin/release/6.4.2' into NAE-2393
Kovy95 Apr 2, 2026
0da9108
Merge pull request #319 from netgrif/NAE-2393
Kovy95 Apr 2, 2026
d87347f
[NAE-2101] release 6.4.2
Kovy95 Apr 2, 2026
3b66993
[NAE-2101] release 6.4.2
Kovy95 Apr 2, 2026
f1c7d3c
Merge pull request #321 from netgrif/NAE-2101
Kovy95 Apr 2, 2026
97a1148
[NAE-2101] release 6.4.2
Kovy95 Apr 4, 2026
85c598e
Merge remote-tracking branch 'origin/release/6.4.2' into NAE-2101
Kovy95 Apr 4, 2026
c8fd881
[NAE-2101] release 6.4.2
Kovy95 Apr 7, 2026
6a02e71
[NAE-2401] Timestamp of case dataSet change
Kovy95 Apr 7, 2026
a033948
Merge remote-tracking branch 'origin/release/6.4.2' into NAE-2401
Kovy95 Apr 7, 2026
09f6e98
[NAE-2401] Timestamp of case dataSet change
Kovy95 Apr 7, 2026
cb30dcc
Merge pull request #324 from netgrif/NAE-2101
Kovy95 Apr 7, 2026
acf3fcf
Merge remote-tracking branch 'origin/release/6.4.2' into NAE-2401
Kovy95 Apr 7, 2026
bb2a406
Merge pull request #320 from netgrif/NAE-2401
Kovy95 Apr 7, 2026
87ef587
[NAE-2101] release 6.4.2
Kovy95 Apr 7, 2026
c9d6ce0
Merge pull request #325 from netgrif/NAE-2101
Kovy95 Apr 7, 2026
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
17 changes: 16 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,22 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres
to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

Full Changelog: [https://github.com/netgrif/components/commits/v6.4.1](https://github.com/netgrif/components/commits/v6.4.1)
Full Changelog: [https://github.com/netgrif/components/commits/v6.4.2](https://github.com/netgrif/components/commits/v6.4.2)

## [6.4.2](https://github.com/netgrif/components/releases/tag/v6.4.2) (2026-04-02)

### Fixed

- [NAE-2231] Unable to change behavior of taskRef on finish event without error message
- [NAE-2268] Fix resolving of referenced taskId on frontend
- [NAE-2290] Couldn't find referenced task in a taskref incoming from event outcome
- [NAE-2394] Fields looks editable when switching tabs

### Added

- [NAE-2100] Case view export button as NAE feature
- [NAE-2393] Validation property on set data event
- [NAE-2401] Timestamp of case dataSet change

## [6.4.1](https://github.com/netgrif/components/releases/tag/v6.4.1) (2025-03-19)

Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@netgrif/components-project",
"version": "6.4.1",
"version": "6.4.2",
"description": "Netgrif Application Engine Frontend project. Project includes angular libraries as base for NAE applications.",
"homepage": "https://components.netgrif.com",
"license": "SEE LICENSE IN LICENSE",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ export class PanelsComponent implements OnInit {
constructor() {
this.case_ = {
lastModified: null,
lastModifiedDataSet: undefined,
visualId: 'ABC-123456789',
petriNetObjectId: null,
processIdentifier: 'net',
Expand Down
2 changes: 1 addition & 1 deletion projects/netgrif-components-core/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@netgrif/components-core",
"version": "6.4.1",
"version": "6.4.2",
"description": "Netgrif Application engine frontend core Angular library",
"homepage": "https://components.netgrif.com",
"license": "SEE LICENSE IN LICENSE",
Expand Down
3 changes: 3 additions & 0 deletions projects/netgrif-components-core/src/assets/i18n/de.json
Original file line number Diff line number Diff line change
Expand Up @@ -513,5 +513,8 @@
"previousPage": "Vorherige Seite",
"pageOne": "Seite 1 von 1",
"pageAmount": "Seite {{page}} von {{amountPages}}"
},
"export": {
"errorExportDownload": "Datei konnte nicht heruntergeladen werden!"
}
}
3 changes: 3 additions & 0 deletions projects/netgrif-components-core/src/assets/i18n/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -514,5 +514,8 @@
"previousPage": "Previous page",
"pageOne": "Page 1 of 1",
"pageAmount": "Page {{page}} of {{amountPages}}"
},
"export": {
"errorExportDownload": "File failed to download!"
}
}
3 changes: 3 additions & 0 deletions projects/netgrif-components-core/src/assets/i18n/sk.json
Original file line number Diff line number Diff line change
Expand Up @@ -513,5 +513,8 @@
"previousPage": "Predchádzajúca strana",
"pageOne": "Strana 1 z 1",
"pageAmount": "Strana {{page}} z {{amountPages}}"
},
"export": {
"errorExportDownload": "Stiahnutie súboru zlyhalo!"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -196,6 +196,7 @@ describe('PermissionService', () => {
color: 'color',
creationDate: [],
lastModified: [],
lastModifiedDataSet: [],
visualId: '',
resetArcTokens: {},
processIdentifier: '',
Expand Down Expand Up @@ -235,6 +236,7 @@ describe('PermissionService', () => {
color: 'color',
creationDate: [],
lastModified: [],
lastModifiedDataSet: [],
visualId: '',
resetArcTokens: {},
processIdentifier: '',
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,10 @@
import {
AfterViewInit,
Component,
ElementRef,
Inject,
Input,
OnDestroy,
OnInit,
Optional,
ViewChild
} from "@angular/core";
import {DATA_FIELD_PORTAL_DATA, DataFieldPortalData} from "../../models/data-field-portal-data-injection-token";
import {FileListField, FileListFieldValidation} from "../models/file-list-field";
Expand All @@ -17,14 +14,12 @@
import {SnackBarService} from "../../../snack-bar/services/snack-bar.service";
import {TranslateService} from "@ngx-translate/core";
import {EventService} from "../../../event/services/event.service";
import {FileFieldIdBody} from "../../models/file-field-id-body";
import {EventOutcomeMessageResource} from "../../../resources/interface/message-resource";
import {ProgressType, ProviderProgress} from "../../../resources/resource-provider.service";
import {ChangedFieldsMap} from "../../../event/services/interfaces/changed-fields-map";
import {HttpParams} from "@angular/common/http";
import {take} from "rxjs/operators";
import {FileFieldValue} from "../../file-field/models/file-field-value";
import {AbstractBaseDataFieldComponent} from "../../base-component/abstract-base-data-field.component";
import {FileFieldRequest} from "../../../resources/interface/file-field-request-body";
import {AbstractFileFieldDefaultComponent} from '../../models/abstract-file-field-default-component';

Expand Down Expand Up @@ -76,8 +71,8 @@
const val = this.dataField.validations.find(validation =>
validation.validationRule.includes(FileListFieldValidation.MAX_FILES)
);
if (val && val.validationRule.split(' ').length === 2 && !isNaN(parseInt(val.validationRule.split(' ')[1], 10))) {

Check warning on line 74 in projects/netgrif-components-core/src/lib/data-fields/file-list-field/file-list-default-field/abstract-file-list-default-field.component.ts

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Prefer using an optional chain expression instead, as it's more concise and easier to read.

See more on https://sonarcloud.io/project/issues?id=netgrif_components&issues=AZ1OgBbJ0SKtD2DTZTxC&open=AZ1OgBbJ0SKtD2DTZTxC&pullRequest=323

Check warning on line 74 in projects/netgrif-components-core/src/lib/data-fields/file-list-field/file-list-default-field/abstract-file-list-default-field.component.ts

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Prefer `Number.parseInt` over `parseInt`.

See more on https://sonarcloud.io/project/issues?id=netgrif_components&issues=AZ1OgBbJ0SKtD2DTZTxE&open=AZ1OgBbJ0SKtD2DTZTxE&pullRequest=323

Check warning on line 74 in projects/netgrif-components-core/src/lib/data-fields/file-list-field/file-list-default-field/abstract-file-list-default-field.component.ts

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Prefer `Number.isNaN` over `isNaN`.

See more on https://sonarcloud.io/project/issues?id=netgrif_components&issues=AZ1OgBbJ0SKtD2DTZTxD&open=AZ1OgBbJ0SKtD2DTZTxD&pullRequest=323
this.maxFilesNumber = parseInt(val.validationRule.split(' ')[1], 10);

Check warning on line 75 in projects/netgrif-components-core/src/lib/data-fields/file-list-field/file-list-default-field/abstract-file-list-default-field.component.ts

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Prefer `Number.parseInt` over `parseInt`.

See more on https://sonarcloud.io/project/issues?id=netgrif_components&issues=AZ1OgBbJ0SKtD2DTZTxF&open=AZ1OgBbJ0SKtD2DTZTxF&pullRequest=323
this.maxFilesMessage = val.validationMessage && val.validationMessage !== '' ? val.validationMessage : null;
}
}
Expand Down Expand Up @@ -184,7 +179,7 @@
if (response.error) {
this.state.error = true;
this._log.error(
`File [${this.dataField.stringId}] ${this.fileUploadEl.nativeElement.files.item(0)} uploading has failed!`, response.error

Check warning on line 182 in projects/netgrif-components-core/src/lib/data-fields/file-list-field/file-list-default-field/abstract-file-list-default-field.component.ts

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

'this.fileUploadEl.nativeElement.files.item(0)' will use Object's default stringification format ('[object Object]') when stringified.

See more on https://sonarcloud.io/project/issues?id=netgrif_components&issues=AZ1OgBbJ0SKtD2DTZTxG&open=AZ1OgBbJ0SKtD2DTZTxG&pullRequest=323
);
if (response.error) {
this._snackbar.openErrorSnackBar(this._translate.instant(response.error));
Expand Down Expand Up @@ -218,7 +213,7 @@
this._snackbar.openErrorSnackBar(this._translate.instant('dataField.snackBar.fileUploadFailed'));
}
this._log.error(
`File [${this.dataField.stringId}] ${this.fileUploadEl.nativeElement.files.item(0)} uploading has failed!`, error

Check warning on line 216 in projects/netgrif-components-core/src/lib/data-fields/file-list-field/file-list-default-field/abstract-file-list-default-field.component.ts

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

'this.fileUploadEl.nativeElement.files.item(0)' will use Object's default stringification format ('[object Object]') when stringified.

See more on https://sonarcloud.io/project/issues?id=netgrif_components&issues=AZ1OgBbJ0SKtD2DTZTxH&open=AZ1OgBbJ0SKtD2DTZTxH&pullRequest=323
);
this.dataField.touch = true;
this.dataField.update();
Expand Down Expand Up @@ -268,7 +263,7 @@
a.download = fileName;
a.click();
window.URL.revokeObjectURL(url);
document.body.removeChild(a);

Check warning on line 266 in projects/netgrif-components-core/src/lib/data-fields/file-list-field/file-list-default-field/abstract-file-list-default-field.component.ts

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Prefer `childNode.remove()` over `parentNode.removeChild(childNode)`.

See more on https://sonarcloud.io/project/issues?id=netgrif_components&issues=AZ1OgBbJ0SKtD2DTZTxI&open=AZ1OgBbJ0SKtD2DTZTxI&pullRequest=323
}

public deleteFile(fileName: string) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@ import {TaskEventOutcome} from './task-event-outcome';

// eslint-disable-next-line @typescript-eslint/no-empty-interface
export interface FinishTaskEventOutcome extends TaskEventOutcome {

isTaskStillExecutable?: boolean;
}
2 changes: 2 additions & 0 deletions projects/netgrif-components-core/src/lib/export/public-api.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
/* SERVICES */
export * from './services/export.service';
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
import { TestBed } from '@angular/core/testing';
import { ExportService } from './export.service';
import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing';
import { ConfigurationService } from '../../configuration/configuration.service';
import { TranslateService } from '@ngx-translate/core';
import { Filter } from '../../filter/models/filter';
import { HeaderColumn, HeaderColumnType } from '../../header/models/header-column';

describe('ExportService', () => {
let service: ExportService;
let httpMock: HttpTestingController;

const mockConfigService = {
get: () => ({
providers: {
resources: [{ name: 'case', address: 'http://mock-api' }]
}
})
};

const mockTranslateService = {
instant: (key: string) => `translated-${key}`
};

beforeEach(() => {
TestBed.configureTestingModule({
imports: [HttpClientTestingModule],
providers: [
ExportService,
{ provide: ConfigurationService, useValue: mockConfigService },
{ provide: TranslateService, useValue: mockTranslateService }
]
});

service = TestBed.inject(ExportService);
httpMock = TestBed.inject(HttpTestingController);
});

afterEach(() => {
httpMock.verify();
});

it('should be created', () => {
expect(service).toBeTruthy();
});

describe('getResourceAddress()', () => {
it('should return the address from an array', () => {
const result = service.getResourceAddress('case', [{ name: 'case', address: 'http://test' }]);
expect(result).toBe('http://test');
});

it('should return the address from a single object', () => {
const result = service.getResourceAddress('case', { name: 'case', address: 'http://test' });
expect(result).toBe('http://test');
});

it('should return an empty string if not found', () => {
const result = service.getResourceAddress('other', [{ name: 'case', address: 'http://test' }]);
expect(result).toBe('');
});
});

describe('downloadExcelFromCurrentSelection()', () => {
it('should return true and trigger file download on valid response', (done) => {
spyOn(document.body, 'appendChild');
spyOn(document.body, 'removeChild');

const mockFilter: Filter = {
getRequestBody: () => ({ some: 'query' })
} as any;

const headers: HeaderColumn[] = [
new HeaderColumn(HeaderColumnType.IMMEDIATE, 'name', 'Name', 'string', true, 'net-id'),
new HeaderColumn(HeaderColumnType.META, 'date', 'Date', 'date')
];

service.downloadExcelFromCurrentSelection(mockFilter, headers).subscribe((result) => {
expect(result).toBeTrue();
done();
});

const req = httpMock.expectOne('http://mock-api/export/filteredCases');
expect(req.request.method).toBe('POST');
req.flush(new ArrayBuffer(10), {
headers: { 'Content-Type': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' }
});
});

it('should return false when response body is missing', (done) => {
const mockFilter: Filter = {
getRequestBody: () => ({ some: 'query' })
} as any;

service.downloadExcelFromCurrentSelection(mockFilter, []).subscribe((result) => {
expect(result).toBeFalse();
done();
});

const req = httpMock.expectOne('http://mock-api/export/filteredCases');
req.flush(null, { headers: { 'Content-Type': 'application/octet-stream' } });
});
});
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
import {Injectable} from '@angular/core';
import {AbstractResourceProvider} from '../../resources/resource-provider.service';
import {ConfigurationService} from '../../configuration/configuration.service';
import {Filter} from '../../filter/models/filter';
import {HeaderColumn, HeaderColumnType} from '../../header/models/header-column';
import {MergedFilter} from '../../filter/models/merged-filter';
import {MergeOperator} from '../../filter/models/merge-operator';
import {HttpClient} from '@angular/common/http';
import {TranslateService} from '@ngx-translate/core';
import {switchMap} from 'rxjs/operators';
import {Observable, of} from 'rxjs';

@Injectable({
providedIn: 'root'
})
export class ExportService {

protected readonly SERVER_URL: string;

constructor(protected _httpClient: HttpClient,
protected _translate: TranslateService,
protected _configService: ConfigurationService) {
this.SERVER_URL = this.getResourceAddress('case', this._configService.get().providers.resources);
}

public downloadExcelFromCurrentSelection(activeFilter: Filter, currentHeaders: Array<HeaderColumn>): Observable<boolean> {
const mergeOperation = activeFilter instanceof MergedFilter ? (activeFilter as any)._operator : MergeOperator.AND;

return this._httpClient.post(AbstractResourceProvider.sanitizeUrl(`/export/filteredCases`, this.SERVER_URL), {
query: activeFilter.getRequestBody(),
selectedDataFieldNames: currentHeaders.filter(header => header).map(header =>

Check warning on line 31 in projects/netgrif-components-core/src/lib/export/services/export.service.ts

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

arrow function is equivalent to `Boolean`. Use `Boolean` directly.

See more on https://sonarcloud.io/project/issues?id=netgrif_components&issues=AZ1OgBjf0SKtD2DTZTxT&open=AZ1OgBjf0SKtD2DTZTxT&pullRequest=323
header.type === HeaderColumnType.IMMEDIATE ? header.title : this._translate.instant(header.title)),
selectedDataFieldIds: currentHeaders.filter(header => header).map(

Check warning on line 33 in projects/netgrif-components-core/src/lib/export/services/export.service.ts

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

arrow function is equivalent to `Boolean`. Use `Boolean` directly.

See more on https://sonarcloud.io/project/issues?id=netgrif_components&issues=AZ1OgBjf0SKtD2DTZTxU&open=AZ1OgBjf0SKtD2DTZTxU&pullRequest=323
header => header.type === HeaderColumnType.IMMEDIATE ? header.fieldIdentifier : (header.fieldIdentifier === 'mongoId' ? `meta-stringId` : `meta-${header.fieldIdentifier}`)),

Check warning on line 34 in projects/netgrif-components-core/src/lib/export/services/export.service.ts

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Extract this nested ternary operation into an independent statement.

See more on https://sonarcloud.io/project/issues?id=netgrif_components&issues=AZ1OgBjf0SKtD2DTZTxV&open=AZ1OgBjf0SKtD2DTZTxV&pullRequest=323
isIntersection: mergeOperation === MergeOperator.AND
}, {
responseType: 'arraybuffer', observe: 'response'
}).pipe(switchMap((response: any) => {
if (response && response.body) {

Check warning on line 39 in projects/netgrif-components-core/src/lib/export/services/export.service.ts

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Prefer using an optional chain expression instead, as it's more concise and easier to read.

See more on https://sonarcloud.io/project/issues?id=netgrif_components&issues=AZ1OgBjf0SKtD2DTZTxW&open=AZ1OgBjf0SKtD2DTZTxW&pullRequest=323
const contentType = response.headers.get('Content-Type');
const linkElement = document.createElement('a');
const blob = new Blob([response.body], {type: contentType});
const urlBlob = window.URL.createObjectURL(blob);
linkElement.setAttribute('href', urlBlob);
linkElement.setAttribute('download', 'export.xlsx');
document.body.appendChild(linkElement);
linkElement.click();
document.body.removeChild(linkElement);

Check warning on line 48 in projects/netgrif-components-core/src/lib/export/services/export.service.ts

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Prefer `childNode.remove()` over `parentNode.removeChild(childNode)`.

See more on https://sonarcloud.io/project/issues?id=netgrif_components&issues=AZ1OgBjf0SKtD2DTZTxX&open=AZ1OgBjf0SKtD2DTZTxX&pullRequest=323
return of(true);
} else {
return of(false);
}
}));
}

public getResourceAddress(name: string, resourcesArray: any): string {
let URL = '';
if (resourcesArray instanceof Array) {

Check warning on line 58 in projects/netgrif-components-core/src/lib/export/services/export.service.ts

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Avoid using `instanceof` for type checking as it can lead to unreliable results.

See more on https://sonarcloud.io/project/issues?id=netgrif_components&issues=AZ1OgBjf0SKtD2DTZTxY&open=AZ1OgBjf0SKtD2DTZTxY&pullRequest=323
resourcesArray.forEach(resource => {
if (resource.name === name) {
URL = resource.address;
}
});
} else {
if (resourcesArray.name === name) {

Check warning on line 65 in projects/netgrif-components-core/src/lib/export/services/export.service.ts

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

'If' statement should not be the only statement in 'else' block

See more on https://sonarcloud.io/project/issues?id=netgrif_components&issues=AZ1OgBjf0SKtD2DTZTxZ&open=AZ1OgBjf0SKtD2DTZTxZ&pullRequest=323
URL = resourcesArray.address;
}
}
return URL;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,11 @@ export enum GroupNavigationConstants {
* */
ITEM_FIELD_ID_CASE_DEFAULT_HEADERS_MODE = 'case_headers_default_mode',

/**
* Boolean field, that is true if table mode can be applied in case view
* */
ITEM_FIELD_ID_CASE_ALLOW_EXPORT = 'case_allow_export',

/**
* Boolean field, that is true to make mode menu in case view visible
* */
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,7 @@ class TestWrapperComponent {
color: 'color',
creationDate: [],
lastModified: [],
lastModifiedDataSet: [],
visualId: '',
resetArcTokens: {},
processIdentifier: '',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ import {NAE_TASK_FORCE_OPEN} from '../../view/task-view/models/injection-token-t
import {FrontActionService} from "../../actions/services/front-action.service";
import {NAE_TAB_DATA} from '../../tabs/tab-data-injection-token/tab-data-injection-token';
import {InjectedTabData} from '../../tabs/interfaces';
import { UserComparatorService } from "../../user/services/user-comparator.service";

describe('AbtsractTaskPanelComponent', () => {
let component: TestTaskPanelComponent;
Expand Down Expand Up @@ -215,13 +216,14 @@ class TestTaskPanelComponent extends AbstractTaskPanelComponent implements After
protected _currencyPipe: CurrencyPipe,
protected _changedFieldsService: ChangedFieldsService,
protected _permissionService: PermissionService,
protected _userComparator: UserComparatorService,
@Optional() overflowService: OverflowService,
@Optional() @Inject(NAE_TASK_FORCE_OPEN) protected _taskForceOpen: boolean,
@Optional() @Inject(NAE_TAB_DATA) injectedTabData: InjectedTabData) {
super(_taskContentService, _log, _taskViewService, _paperView, _taskEventService, _assignTaskService,
_delegateTaskService, _cancelTaskService, _finishTaskService, _taskState, _taskDataService,
_assignPolicyService, _finishPolicyService, _callChain, _taskOperations, undefined, _translate,
_currencyPipe, _changedFieldsService, _permissionService, overflowService, _taskForceOpen, injectedTabData);
_currencyPipe, _changedFieldsService, _permissionService, _userComparator, overflowService, _taskForceOpen, injectedTabData);
}

ngAfterViewInit() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,8 @@
import { FinishPolicyService } from '../../task/services/finish-policy.service';
import {NAE_TAB_DATA} from '../../tabs/tab-data-injection-token/tab-data-injection-token';
import {InjectedTabData} from '../../tabs/interfaces';
import {AfterAction} from '../../utility/call-chain/after-action';

Check warning on line 55 in projects/netgrif-components-core/src/lib/panel/task-panel/abstract-task-panel.component.ts

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Remove this unused import of 'AfterAction'.

See more on https://sonarcloud.io/project/issues?id=netgrif_components&issues=AZ1OgBhO0SKtD2DTZTxQ&open=AZ1OgBhO0SKtD2DTZTxQ&pullRequest=323
import {UserComparatorService} from "../../user/services/user-comparator.service";

@Component({
selector: 'ncc-abstract-legal-notice',
Expand Down Expand Up @@ -144,6 +145,7 @@
protected _currencyPipe: CurrencyPipe,
protected _changedFieldsService: ChangedFieldsService,
protected _permissionService: PermissionService,
protected _userComparator: UserComparatorService,
@Optional() overflowService: OverflowService,
@Optional() @Inject(NAE_TASK_FORCE_OPEN) protected _taskForceOpen: boolean,
@Optional() @Inject(NAE_TAB_DATA) injectedTabData: InjectedTabData) {
Expand Down Expand Up @@ -195,7 +197,12 @@
filter(bool => bool && this.isExpanded())
).subscribe( () => {
if (this._canReload) {
this._taskDataService.initializeTaskDataFields(new AfterAction(), true)
this._taskDataService.initializeTaskDataFields(this._callChain.create(() => {
const taskShouldBeBlocked = !this._taskContentService.task
|| this._taskContentService.task.user === undefined

Check warning on line 202 in projects/netgrif-components-core/src/lib/panel/task-panel/abstract-task-panel.component.ts

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Prefer using an optional chain expression instead, as it's more concise and easier to read.

See more on https://sonarcloud.io/project/issues?id=netgrif_components&issues=AZ1OgBhO0SKtD2DTZTxR&open=AZ1OgBhO0SKtD2DTZTxR&pullRequest=323
|| !this._userComparator.compareUsers(this._taskContentService.task.user);
this._taskContentService.blockFields(taskShouldBeBlocked);
}), true)
} else {
this._canReload = true;
}
Expand Down Expand Up @@ -303,7 +310,7 @@
}

finish() {
if (!this._taskContentService.validateTaskData()) {

Check warning on line 313 in projects/netgrif-components-core/src/lib/panel/task-panel/abstract-task-panel.component.ts

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Unexpected negated condition.

See more on https://sonarcloud.io/project/issues?id=netgrif_components&issues=AZ1OgBhO0SKtD2DTZTxS&open=AZ1OgBhO0SKtD2DTZTxS&pullRequest=323
if (this._taskContentService.task.dataSize <= 0) {
this._taskDataService.initializeTaskDataFields();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
* ]
*/
lastModified: NaeDate;
lastModifiedDataSet?: NaeDate | undefined;

Check warning on line 24 in projects/netgrif-components-core/src/lib/resources/interface/case.ts

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Consider removing 'undefined' type or '?' specifier, one of them is redundant.

See more on https://sonarcloud.io/project/issues?id=netgrif_components&issues=AZ1nhsGAQeuiXkG58OdP&open=AZ1nhsGAQeuiXkG58OdP&pullRequest=323
/**
* **Example:** PER-1669965980
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,4 +70,6 @@ export interface Task {
delegateTitle?: string;
immediateData?: Array<ImmediateData>;
assignedUserPolicy?: AssignedUserPolicy;

isStillExecutable?: boolean;
}
Loading
Loading