Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • dlcm/ui/dlcm-portal
1 result
Show changes
Commits on Source (13)
Showing
with 258 additions and 161 deletions
......@@ -5619,37 +5619,32 @@
"dev": true
},
"fsevents": {
"version": "1.2.7",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.7.tgz",
"integrity": "sha512-Pxm6sI2MeBD7RdD12RYsqaP0nMiwx8eZBXCa6z2L+mRHm2DYrOYwihmhjpkdjUHwQhslWQjRpEgNq4XvBmaAuw==",
"dev": true,
"version": "1.2.9",
"resolved": "https://packages.dlcm.ch/repository/npm-group/fsevents/-/fsevents-1.2.9.tgz",
"integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==",
"optional": true,
"requires": {
"nan": "^2.9.2",
"node-pre-gyp": "^0.10.0"
"nan": "^2.12.1",
"node-pre-gyp": "^0.12.0"
},
"dependencies": {
"abbrev": {
"version": "1.1.1",
"bundled": true,
"dev": true,
"optional": true
},
"ansi-regex": {
"version": "2.1.1",
"bundled": true,
"dev": true
"bundled": true
},
"aproba": {
"version": "1.2.0",
"bundled": true,
"dev": true,
"optional": true
},
"are-we-there-yet": {
"version": "1.1.5",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"delegates": "^1.0.0",
......@@ -5658,13 +5653,11 @@
},
"balanced-match": {
"version": "1.0.0",
"bundled": true,
"dev": true
"bundled": true
},
"brace-expansion": {
"version": "1.1.11",
"bundled": true,
"dev": true,
"requires": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
......@@ -5673,61 +5666,51 @@
"chownr": {
"version": "1.1.1",
"bundled": true,
"dev": true,
"optional": true
},
"code-point-at": {
"version": "1.1.0",
"bundled": true,
"dev": true
"bundled": true
},
"concat-map": {
"version": "0.0.1",
"bundled": true,
"dev": true
"bundled": true
},
"console-control-strings": {
"version": "1.1.0",
"bundled": true,
"dev": true
"bundled": true
},
"core-util-is": {
"version": "1.0.2",
"bundled": true,
"dev": true,
"optional": true
},
"debug": {
"version": "2.6.9",
"version": "4.1.1",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"ms": "2.0.0"
"ms": "^2.1.1"
}
},
"deep-extend": {
"version": "0.6.0",
"bundled": true,
"dev": true,
"optional": true
},
"delegates": {
"version": "1.0.0",
"bundled": true,
"dev": true,
"optional": true
},
"detect-libc": {
"version": "1.0.3",
"bundled": true,
"dev": true,
"optional": true
},
"fs-minipass": {
"version": "1.2.5",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"minipass": "^2.2.1"
......@@ -5736,13 +5719,11 @@
"fs.realpath": {
"version": "1.0.0",
"bundled": true,
"dev": true,
"optional": true
},
"gauge": {
"version": "2.7.4",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"aproba": "^1.0.3",
......@@ -5758,7 +5739,6 @@
"glob": {
"version": "7.1.3",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"fs.realpath": "^1.0.0",
......@@ -5772,13 +5752,11 @@
"has-unicode": {
"version": "2.0.1",
"bundled": true,
"dev": true,
"optional": true
},
"iconv-lite": {
"version": "0.4.24",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"safer-buffer": ">= 2.1.2 < 3"
......@@ -5787,7 +5765,6 @@
"ignore-walk": {
"version": "3.0.1",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"minimatch": "^3.0.4"
......@@ -5796,7 +5773,6 @@
"inflight": {
"version": "1.0.6",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"once": "^1.3.0",
......@@ -5805,19 +5781,16 @@
},
"inherits": {
"version": "2.0.3",
"bundled": true,
"dev": true
"bundled": true
},
"ini": {
"version": "1.3.5",
"bundled": true,
"dev": true,
"optional": true
},
"is-fullwidth-code-point": {
"version": "1.0.0",
"bundled": true,
"dev": true,
"requires": {
"number-is-nan": "^1.0.0"
}
......@@ -5825,26 +5798,22 @@
"isarray": {
"version": "1.0.0",
"bundled": true,
"dev": true,
"optional": true
},
"minimatch": {
"version": "3.0.4",
"bundled": true,
"dev": true,
"requires": {
"brace-expansion": "^1.1.7"
}
},
"minimist": {
"version": "0.0.8",
"bundled": true,
"dev": true
"bundled": true
},
"minipass": {
"version": "2.3.5",
"bundled": true,
"dev": true,
"requires": {
"safe-buffer": "^5.1.2",
"yallist": "^3.0.0"
......@@ -5853,7 +5822,6 @@
"minizlib": {
"version": "1.2.1",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"minipass": "^2.2.1"
......@@ -5862,32 +5830,28 @@
"mkdirp": {
"version": "0.5.1",
"bundled": true,
"dev": true,
"requires": {
"minimist": "0.0.8"
}
},
"ms": {
"version": "2.0.0",
"version": "2.1.1",
"bundled": true,
"dev": true,
"optional": true
},
"needle": {
"version": "2.2.4",
"version": "2.3.0",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"debug": "^2.1.2",
"debug": "^4.1.0",
"iconv-lite": "^0.4.4",
"sax": "^1.2.4"
}
},
"node-pre-gyp": {
"version": "0.10.3",
"version": "0.12.0",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"detect-libc": "^1.0.2",
......@@ -5905,7 +5869,6 @@
"nopt": {
"version": "4.0.1",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"abbrev": "1",
......@@ -5913,15 +5876,13 @@
}
},
"npm-bundled": {
"version": "1.0.5",
"version": "1.0.6",
"bundled": true,
"dev": true,
"optional": true
},
"npm-packlist": {
"version": "1.2.0",
"version": "1.4.1",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"ignore-walk": "^3.0.1",
......@@ -5931,7 +5892,6 @@
"npmlog": {
"version": "4.1.2",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"are-we-there-yet": "~1.1.2",
......@@ -5942,19 +5902,16 @@
},
"number-is-nan": {
"version": "1.0.1",
"bundled": true,
"dev": true
"bundled": true
},
"object-assign": {
"version": "4.1.1",
"bundled": true,
"dev": true,
"optional": true
},
"once": {
"version": "1.4.0",
"bundled": true,
"dev": true,
"requires": {
"wrappy": "1"
}
......@@ -5962,19 +5919,16 @@
"os-homedir": {
"version": "1.0.2",
"bundled": true,
"dev": true,
"optional": true
},
"os-tmpdir": {
"version": "1.0.2",
"bundled": true,
"dev": true,
"optional": true
},
"osenv": {
"version": "0.1.5",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"os-homedir": "^1.0.0",
......@@ -5984,19 +5938,16 @@
"path-is-absolute": {
"version": "1.0.1",
"bundled": true,
"dev": true,
"optional": true
},
"process-nextick-args": {
"version": "2.0.0",
"bundled": true,
"dev": true,
"optional": true
},
"rc": {
"version": "1.2.8",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"deep-extend": "^0.6.0",
......@@ -6008,7 +5959,6 @@
"minimist": {
"version": "1.2.0",
"bundled": true,
"dev": true,
"optional": true
}
}
......@@ -6016,7 +5966,6 @@
"readable-stream": {
"version": "2.3.6",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"core-util-is": "~1.0.0",
......@@ -6031,7 +5980,6 @@
"rimraf": {
"version": "2.6.3",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"glob": "^7.1.3"
......@@ -6039,43 +5987,36 @@
},
"safe-buffer": {
"version": "5.1.2",
"bundled": true,
"dev": true
"bundled": true
},
"safer-buffer": {
"version": "2.1.2",
"bundled": true,
"dev": true,
"optional": true
},
"sax": {
"version": "1.2.4",
"bundled": true,
"dev": true,
"optional": true
},
"semver": {
"version": "5.6.0",
"version": "5.7.0",
"bundled": true,
"dev": true,
"optional": true
},
"set-blocking": {
"version": "2.0.0",
"bundled": true,
"dev": true,
"optional": true
},
"signal-exit": {
"version": "3.0.2",
"bundled": true,
"dev": true,
"optional": true
},
"string-width": {
"version": "1.0.2",
"bundled": true,
"dev": true,
"requires": {
"code-point-at": "^1.0.0",
"is-fullwidth-code-point": "^1.0.0",
......@@ -6085,7 +6026,6 @@
"string_decoder": {
"version": "1.1.1",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"safe-buffer": "~5.1.0"
......@@ -6094,7 +6034,6 @@
"strip-ansi": {
"version": "3.0.1",
"bundled": true,
"dev": true,
"requires": {
"ansi-regex": "^2.0.0"
}
......@@ -6102,13 +6041,11 @@
"strip-json-comments": {
"version": "2.0.1",
"bundled": true,
"dev": true,
"optional": true
},
"tar": {
"version": "4.4.8",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"chownr": "^1.1.1",
......@@ -6123,13 +6060,11 @@
"util-deprecate": {
"version": "1.0.2",
"bundled": true,
"dev": true,
"optional": true
},
"wide-align": {
"version": "1.1.3",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"string-width": "^1.0.2 || 2"
......@@ -6137,13 +6072,11 @@
},
"wrappy": {
"version": "1.0.2",
"bundled": true,
"dev": true
"bundled": true
},
"yallist": {
"version": "3.0.3",
"bundled": true,
"dev": true
"bundled": true
}
}
},
......@@ -8852,10 +8785,9 @@
}
},
"nan": {
"version": "2.13.2",
"resolved": "https://registry.npmjs.org/nan/-/nan-2.13.2.tgz",
"integrity": "sha512-TghvYc72wlMGMVMluVo9WRJc0mB8KxxF/gZ4YYFy7V2ZQX9l7rgbPg7vjS9mt6U5HXODVFVI2bOduCzwOMv/lw==",
"dev": true,
"version": "2.14.0",
"resolved": "https://packages.dlcm.ch/repository/npm-group/nan/-/nan-2.14.0.tgz",
"integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==",
"optional": true
},
"nanomatch": {
......@@ -11326,9 +11258,9 @@
}
},
"solidify-frontend": {
"version": "0.2.2",
"resolved": "https://packages.dlcm.ch/repository/npm-group/solidify-frontend/-/solidify-frontend-0.2.2.tgz",
"integrity": "sha512-EjdvqqV5GJo5fCWMfbcDBVWtZiwTmEPke9XzEAtj8df4Vj/epHajUjyTFJTTikfFqWjAs7I4TgtJDccjF94etg==",
"version": "0.2.9",
"resolved": "https://packages.dlcm.ch/repository/npm-group/solidify-frontend/-/solidify-frontend-0.2.9.tgz",
"integrity": "sha512-8O3HZE4RZKBmsuTRHRwEWGUPkdiPZSme94Xwnn3ppwu6JGBVMOO5yAM4bgH+psM6YyOosdAfY5+dSsGmrQKbWA==",
"requires": {
"tslib": "^1.9.0"
}
......
......@@ -69,7 +69,7 @@
"primeicons": "2.0.0",
"primeng": "8.0.4",
"rxjs": "6.5.3",
"solidify-frontend": "0.2.2",
"solidify-frontend": "0.2.9",
"sync-pom-version-to-package": "1.3.1",
"ts-key-enum": "2.0.0",
"tslib": "1.10.0",
......@@ -100,5 +100,8 @@
"ts-node": "8.4.1",
"tslint": "5.11.0",
"typescript": "~3.5.2"
},
"optionalDependencies": {
"fsevents": "1.2.9"
}
}
......@@ -37,6 +37,18 @@ export namespace AdminFundingAgenciesAction {
export class GetAllFail extends ResourceAction.GetAllFail<FundingAgencyExtended> {
}
@TypeDefaultAction(state)
export class GetByListId extends ResourceAction.GetByListId {
}
@TypeDefaultAction(state)
export class GetByListIdSuccess extends ResourceAction.GetByListIdSuccess {
}
@TypeDefaultAction(state)
export class GetByListIdFail extends ResourceAction.GetByListIdFail {
}
@TypeDefaultAction(state)
export class GetById extends ResourceAction.GetById {
}
......
......@@ -37,6 +37,18 @@ export namespace AdminInstitutionAction {
export class GetAllFail extends ResourceAction.GetAllFail<Institution> {
}
@TypeDefaultAction(state)
export class GetByListId extends ResourceAction.GetByListId {
}
@TypeDefaultAction(state)
export class GetByListIdSuccess extends ResourceAction.GetByListIdSuccess {
}
@TypeDefaultAction(state)
export class GetByListIdFail extends ResourceAction.GetByListIdFail {
}
@TypeDefaultAction(state)
export class GetById extends ResourceAction.GetById {
}
......
......@@ -37,6 +37,18 @@ export namespace AdminLicenseAction {
export class GetAllFail extends ResourceAction.GetAllFail<License> {
}
@TypeDefaultAction(state)
export class GetByListId extends ResourceAction.GetByListId {
}
@TypeDefaultAction(state)
export class GetByListIdSuccess extends ResourceAction.GetByListIdSuccess {
}
@TypeDefaultAction(state)
export class GetByListIdFail extends ResourceAction.GetByListIdFail {
}
@TypeDefaultAction(state)
export class GetById extends ResourceAction.GetById {
}
......
......@@ -37,6 +37,18 @@ export namespace AdminOAuth2ClientAction {
export class GetAllFail extends ResourceAction.GetAllFail<SubmissionPolicy> {
}
@TypeDefaultAction(state)
export class GetByListId extends ResourceAction.GetByListId {
}
@TypeDefaultAction(state)
export class GetByListIdSuccess extends ResourceAction.GetByListIdSuccess {
}
@TypeDefaultAction(state)
export class GetByListIdFail extends ResourceAction.GetByListIdFail {
}
@TypeDefaultAction(state)
export class GetById extends ResourceAction.GetById {
}
......
......@@ -37,6 +37,18 @@ export namespace AdminOrgUnitAction {
export class GetAllFail extends ResourceAction.GetAllFail<OrganizationalUnitExtended> {
}
@TypeDefaultAction(state)
export class GetByListId extends ResourceAction.GetByListId {
}
@TypeDefaultAction(state)
export class GetByListIdSuccess extends ResourceAction.GetByListIdSuccess {
}
@TypeDefaultAction(state)
export class GetByListIdFail extends ResourceAction.GetByListIdFail {
}
@TypeDefaultAction(state)
export class GetById extends ResourceAction.GetById {
}
......
......@@ -37,6 +37,18 @@ export namespace AdminPersonAction {
export class GetAllFail extends ResourceAction.GetAllFail<PersonExtended> {
}
@TypeDefaultAction(state)
export class GetByListId extends ResourceAction.GetByListId {
}
@TypeDefaultAction(state)
export class GetByListIdSuccess extends ResourceAction.GetByListIdSuccess {
}
@TypeDefaultAction(state)
export class GetByListIdFail extends ResourceAction.GetByListIdFail {
}
@TypeDefaultAction(state)
export class GetById extends ResourceAction.GetById {
}
......
......@@ -37,6 +37,18 @@ export namespace AdminPreservationPolicyAction {
export class GetAllFail extends ResourceAction.GetAllFail<PreservationPolicy> {
}
@TypeDefaultAction(state)
export class GetByListId extends ResourceAction.GetByListId {
}
@TypeDefaultAction(state)
export class GetByListIdSuccess extends ResourceAction.GetByListIdSuccess {
}
@TypeDefaultAction(state)
export class GetByListIdFail extends ResourceAction.GetByListIdFail {
}
@TypeDefaultAction(state)
export class GetById extends ResourceAction.GetById {
}
......
......@@ -37,6 +37,18 @@ export namespace AdminRoleAction {
export class GetAllFail extends ResourceAction.GetAllFail<Role> {
}
@TypeDefaultAction(state)
export class GetByListId extends ResourceAction.GetByListId {
}
@TypeDefaultAction(state)
export class GetByListIdSuccess extends ResourceAction.GetByListIdSuccess {
}
@TypeDefaultAction(state)
export class GetByListIdFail extends ResourceAction.GetByListIdFail {
}
@TypeDefaultAction(state)
export class GetById extends ResourceAction.GetById {
}
......
......@@ -37,6 +37,18 @@ export namespace AdminSubmissionPolicyAction {
export class GetAllFail extends ResourceAction.GetAllFail<SubmissionPolicy> {
}
@TypeDefaultAction(state)
export class GetByListId extends ResourceAction.GetByListId {
}
@TypeDefaultAction(state)
export class GetByListIdSuccess extends ResourceAction.GetByListIdSuccess {
}
@TypeDefaultAction(state)
export class GetByListIdFail extends ResourceAction.GetByListIdFail {
}
@TypeDefaultAction(state)
export class GetById extends ResourceAction.GetById {
}
......
......@@ -37,6 +37,18 @@ export namespace AdminUserAction {
export class GetAllFail extends ResourceAction.GetAllFail<UserExtended> {
}
@TypeDefaultAction(state)
export class GetByListId extends ResourceAction.GetByListId {
}
@TypeDefaultAction(state)
export class GetByListIdSuccess extends ResourceAction.GetByListIdSuccess {
}
@TypeDefaultAction(state)
export class GetByListIdFail extends ResourceAction.GetByListIdFail {
}
@TypeDefaultAction(state)
export class GetById extends ResourceAction.GetById {
}
......
<div class="alert-wrapper">
<div *ngIf="filesRetrieve(numberFilesInErrorObs | async, numberFilesObs | async)
&& !canSubmit((currentObs | async)?.status, numberFilesInErrorObs | async, numberFilesObs | async)"
<div *ngIf="!canSubmitAction && message"
class="alert warn"
>
{{message| translate}}
......@@ -57,7 +56,7 @@
<mat-icon>delete</mat-icon>
{{KEY_DELETE_BUTTON | translate}}
</button>
<button *ngIf="canDoAlterationActions && canSubmit((currentObs | async)?.status, numberFilesInErrorObs | async, numberFilesObs | async)"
<button *ngIf="canDoAlterationActions && canSubmitAction"
mat-flat-button
color="primary"
[disabled]="!(currentObs| async)"
......
......@@ -85,6 +85,7 @@ export class DepositDetailRoutable extends SharedAbstractDetailRoutable<DepositE
tabSelected: DepositTabEnum;
canDoValidatorActions: boolean = false;
canDoAlterationActions: boolean = false;
canSubmitAction: boolean = false;
readonly KEY_PARAM_NAME: string = "title";
readonly KEY_DELETE_BUTTON: string = TRANSLATE("deposit.delete");
......@@ -133,9 +134,31 @@ export class DepositDetailRoutable extends SharedAbstractDetailRoutable<DepositE
filter(deposit => !isNullOrUndefined(deposit) && deposit.resId === this._resId),
take(1),
tap(deposit => {
let canSubmitAction = deposit.status === Deposit.StatusEnum.INPROGRESS;
const canDoValidatorActions = this._securityService.depositInValidationStep(deposit);
const canDoAlterationActions = this._securityService.depositInEditionStep(deposit);
this.subscribe(combineLatest(this.numberFilesObs, this.numberFilesInErrorObs).pipe(
distinctUntilChanged(),
filter(([numberFiles, numberFilesInError]) => !isNullOrUndefined(numberFiles) && !isNullOrUndefined(numberFilesInError)),
tap(([numberFiles, numberFilesInError]) => {
if (numberFiles === 0) {
this.message = TRANSLATE("deposit.error.noFile");
canSubmitAction = false;
}
if (numberFilesInError > 0) {
this.message = TRANSLATE("deposit.error.fileInError");
canSubmitAction = false;
}
if (isTrue(canSubmitAction)) {
this.canSubmitAction = true;
}
this._changeDetector.detectChanges();
}),
));
if (this._securityService.isRootOrAdmin()) {
this.canDoValidatorActions = canDoValidatorActions;
this.canDoAlterationActions = canDoAlterationActions;
......@@ -192,24 +215,6 @@ export class DepositDetailRoutable extends SharedAbstractDetailRoutable<DepositE
return !isNullOrUndefined(personRole) && !isNullOrUndefined(deposit) && personRole.orgUnitId === deposit.organizationalUnitId;
}
canSubmit(currentStatus: Deposit.StatusEnum | undefined, numberFilesInError: number, numberFiles: number): boolean {
if (currentStatus !== Deposit.StatusEnum.INPROGRESS) {
return false;
}
if (numberFiles === 0) {
this.message = TRANSLATE("deposit.error.noFile");
return false;
}
if (numberFilesInError > 0) {
this.message = TRANSLATE("deposit.error.fileInError");
return false;
}
return true;
}
edit(): void {
const tabRouteSelected = DepositHelper.getTabRouteSelected(this.route);
this.store.dispatch(new Navigate([RoutesEnum.depositEdit, this._resId, tabRouteSelected]));
......@@ -266,11 +271,4 @@ export class DepositDetailRoutable extends SharedAbstractDetailRoutable<DepositE
tap(deposit => this.store.dispatch(new DepositAction.BackToEdit(deposit))),
).subscribe();
}
filesRetrieve(numberFilesInError: number | undefined, numberFiles: number | undefined): boolean {
if (isNullOrUndefined(numberFilesInError) || isNullOrUndefined(numberFiles)) {
return false;
}
return true;
}
}
......@@ -114,7 +114,7 @@ export namespace DepositDataFileAction {
}
export class GetNumberFiles extends BaseAction {
static readonly type: string = `[${state}] Get Number File Error`;
static readonly type: string = `[${state}] Get Number File`;
constructor(public parentId: string) {
super();
......@@ -122,7 +122,7 @@ export namespace DepositDataFileAction {
}
export class GetNumberFilesSuccess extends BaseSubAction<GetNumberFiles> {
static readonly type: string = `[${state}] Get Number File Error Success`;
static readonly type: string = `[${state}] Get Number File Success`;
constructor(public parentAction: GetNumberFiles, public numberFiles: number) {
super(parentAction);
......@@ -130,7 +130,7 @@ export namespace DepositDataFileAction {
}
export class GetNumberFilesFail extends BaseSubAction<GetNumberFiles> {
static readonly type: string = `[${state}] Get Number File Error Fail`;
static readonly type: string = `[${state}] Get Number File Fail`;
}
export class GetNumberFilesInError extends BaseAction {
......
......@@ -216,14 +216,13 @@ export class DepositDataFileState extends CompositionState<DepositDataFile> {
});
const queryParameters = new QueryParameters(0);
queryParameters.search.searchItems.set("status", DepositDataFileStateEnum.IN_ERROR);
return this.apiService.get<DepositDataFile>(`${this._urlResource}/${action.parentId}/${this._resourceName}`, queryParameters)
.pipe(
tap(collection => {
ctx.dispatch(new DepositDataFileAction.GetNumberFilesInErrorSuccess(action, collection._page.totalItems));
ctx.dispatch(new DepositDataFileAction.GetNumberFilesSuccess(action, collection._page.totalItems));
}),
catchError(error => {
ctx.dispatch(new DepositDataFileAction.GetNumberFilesInErrorFail(action));
ctx.dispatch(new DepositDataFileAction.GetNumberFilesFail(action));
throw error;
}),
);
......
......@@ -41,6 +41,18 @@ export namespace DepositAction {
export class GetAllFail extends ResourceAction.GetAllFail<DepositExtended> {
}
@TypeDefaultAction(state)
export class GetByListId extends ResourceAction.GetByListId {
}
@TypeDefaultAction(state)
export class GetByListIdSuccess extends ResourceAction.GetByListIdSuccess {
}
@TypeDefaultAction(state)
export class GetByListIdFail extends ResourceAction.GetByListIdFail {
}
@TypeDefaultAction(state)
export class GetById extends ResourceAction.GetById {
}
......
......@@ -63,6 +63,7 @@ import {
ErrorDto,
HttpStatus,
isNullOrUndefined,
isTrue,
NotificationService,
ObjectUtil,
OverrideDefaultAction,
......@@ -247,7 +248,20 @@ export class DepositState extends ResourceState<DepositExtended> {
@Action(DepositAction.Submit)
submit(ctx: StateContext<DepositStateModel>, action: DepositAction.Submit): Observable<DepositExtended> {
return this.apiService.patchByIdWithCustomUrl(this._urlResource + urlSeparator + action.deposit.resId + urlSeparator + ApiActionEnum.SUBMIT_FOR_APPROVAL)
let submissionWithApproval = false;
let submissionPolicy = action.deposit.submissionPolicy;
if (isNullOrUndefined(submissionPolicy)) {
submissionPolicy = action.deposit.organizationalUnit.defaultSubmissionPolicy;
}
if (!isNullOrUndefined(submissionPolicy)) {
submissionWithApproval = submissionPolicy.submissionApproval;
}
let suffix = ApiActionEnum.APPROVE;
if (isTrue(submissionWithApproval)) {
suffix = ApiActionEnum.SUBMIT_FOR_APPROVAL;
}
return this.apiService.patchByIdWithCustomUrl(this._urlResource + urlSeparator + action.deposit.resId + urlSeparator + suffix)
.pipe(
tap(deposit => ctx.dispatch(new DepositAction.SubmitSuccess(deposit))),
catchError(error => {
......
......@@ -7,7 +7,6 @@ import {SearchScopeEnum} from "@app/features/home/enums/search-scope.enum";
import {Archive} from "@app/features/home/models/archive.model";
import {HomeAction} from "@app/features/home/stores/home.action";
import {HomeState} from "@app/features/home/stores/home.state";
import {HomeOrgUnitAction} from "@app/features/home/stores/organizational-unit/home-organizational-unit.action";
import {AccessOrganizationalUnit} from "@app/generated-api";
import {Deposit} from "@app/generated-api/model/deposit.model";
import {SharedAbstractPresentational} from "@app/shared/components/presentationals/shared-abstract/shared-abstract.presentational";
......@@ -17,9 +16,13 @@ import {ArchiveMetadata} from "@app/shared/models/business/archive-metadata.mode
import {DataTableColumns} from "@app/shared/models/data-table-columns.model";
import {LocalStateModel} from "@app/shared/models/local-state.model";
import {MetadataUtil} from "@app/shared/utils/metadata.util";
import {HomeOrgUnitAction} from "@home/stores/organizational-unit/home-organizational-unit.action";
import {HomeOrganizationalUnitState} from "@home/stores/organizational-unit/home-organizational-unit.state";
import {TranslateService} from "@ngx-translate/core";
import {Navigate} from "@ngxs/router-plugin";
import {
Actions,
ofActionCompleted,
Select,
Store,
} from "@ngxs/store";
......@@ -30,8 +33,12 @@ import {
} from "rxjs";
import {filter} from "rxjs/internal/operators/filter";
import {tap} from "rxjs/internal/operators/tap";
import {distinctUntilChanged} from "rxjs/operators";
import {
isNotNullNorUndefined,
ArrayUtil,
isEmptyArray,
isNullOrUndefined,
isTrue,
OrderEnum,
QueryParameters,
StoreUtil,
......@@ -49,7 +56,7 @@ export class HomeSearchRoutable extends SharedAbstractPresentational implements
@Select((state: LocalStateModel) => state.home.search) searchObs: Observable<string>;
@Select((state: LocalStateModel) => state.home.rss) rssObs: Observable<boolean>;
@Select(HomeState.isLoading) isLoadingObs: Observable<boolean>;
@Select(HomeState.list) listObs: Observable<ArchiveMetadata[]>;
@Select(HomeState.list) listArchiveMetadataObs: Observable<ArchiveMetadata[]>;
@Select(HomeState.searchScope) searchScopeObs: Observable<SearchScopeEnum>;
@Select((state: LocalStateModel) => state.home.queryParameters) queryParametersObs: Observable<ArchiveMetadata[]>;
@Select((state: LocalStateModel) => state.home.home_organizationalUnit.list) listOrganizationalUnitObs: Observable<AccessOrganizationalUnit[]>;
......@@ -61,13 +68,13 @@ export class HomeSearchRoutable extends SharedAbstractPresentational implements
listAdaptedObs: Observable<Archive[]> = this.listAdaptedBS.asObservable();
constructor(private store: Store,
private translate: TranslateService) {
private translate: TranslateService,
private readonly _actions$: Actions) {
super();
}
ngOnInit(): void {
super.ngOnInit();
this.store.dispatch(new HomeOrgUnitAction.GetDefaultMaximumOrgUnit());
this.store.dispatch(new HomeAction.GetRss());
this.columns = [
......@@ -106,24 +113,39 @@ export class HomeSearchRoutable extends SharedAbstractPresentational implements
];
this.subscribe(
combineLatest(this.listObs, this.listOrganizationalUnitObs, this.searchScopeObs)
combineLatest(this.listArchiveMetadataObs, this.searchScopeObs)
.pipe(
filter(([list, listOrgUnits]) => isNotNullNorUndefined(list) && isNotNullNorUndefined(listOrgUnits)),
tap(([listArchives, listOrgUnits, searchScope]) => {
const newList: Archive[] = [];
listArchives.forEach((archive: ArchiveMetadata) => {
newList.push({
resId: archive.resId,
organizationalUnit: this.getOrganizationalUnitNameFromId(
MetadataUtil.getOrganizationalUnitResId(archive.metadata),
listOrgUnits,
),
title: MetadataUtil.getTitle(searchScope, archive.metadata),
yearPublicationDate: MetadataUtil.getPublicationYear(searchScope, archive.metadata),
accessLevel: MetadataUtil.getAccessLevel(searchScope, archive.metadata) as Deposit.AccessEnum,
});
});
this.listAdaptedBS.next(newList);
distinctUntilChanged(),
tap(([listArchives, searchScope]) => {
if (isNullOrUndefined(listArchives) || isEmptyArray(listArchives)) {
this.listAdaptedBS.next([]);
return;
}
let listOrgUnitResId = listArchives.map(a => MetadataUtil.getOrganizationalUnitResId(a.metadata));
listOrgUnitResId = ArrayUtil.distinct(listOrgUnitResId);
this.store.dispatch(new HomeOrgUnitAction.GetByListId(listOrgUnitResId, true)).subscribe();
this.subscribe(this._actions$.pipe(
ofActionCompleted(HomeOrgUnitAction.GetByListIdSuccess),
distinctUntilChanged(),
filter(r => isTrue(r.result.successful)),
tap((result) => {
const listOrgUnit = this.store.selectSnapshot(HomeOrganizationalUnitState.list);
const newList: Archive[] = [];
listArchives.forEach((archive: ArchiveMetadata) => {
newList.push({
resId: archive.resId,
organizationalUnit: this.getOrganizationalUnitNameFromId(MetadataUtil.getOrganizationalUnitResId(archive.metadata), listOrgUnit),
title: MetadataUtil.getTitle(searchScope, archive.metadata),
yearPublicationDate: MetadataUtil.getPublicationYear(searchScope, archive.metadata),
accessLevel: MetadataUtil.getAccessLevel(searchScope, archive.metadata) as Deposit.AccessEnum,
});
});
this.listAdaptedBS.next(newList);
}),
));
}),
),
);
......
......@@ -45,6 +45,7 @@ import {
import {
ApiService,
CollectionTyped,
defaultResourceStateInitValue,
HttpStatus,
isNullOrUndefined,
isWhiteString,
......@@ -71,12 +72,9 @@ export interface HomeStateModel extends ResourceStateModel<ArchiveMetadata> {
@State<HomeStateModel>({
name: LocalStateEnum.home,
defaults: {
...defaultResourceStateInitValue(),
searchScope: UserPreferencesUtil.getPreferredHomePageSearchScope(),
search: null,
total: 0,
isLoadingCounter: 0,
list: [],
current: null,
queryParameters: new QueryParameters(environment.defaultPageSizeHomePage),
rss: undefined,
home_organizationalUnit: {isLoadingCounter: 0} as HomeOrganizationalUnitStateModel,
......