dmp blueprint frontend cleanup
This commit is contained in:
parent
d1bac40f0f
commit
51cc5f4fd9
|
@ -1,4 +0,0 @@
|
||||||
export interface DmpAssociatedProfileModel {
|
|
||||||
id: String;
|
|
||||||
label: String;
|
|
||||||
}
|
|
|
@ -1,7 +0,0 @@
|
||||||
export interface DmpBlueprintExternalAutoCompleteField {
|
|
||||||
url: string;
|
|
||||||
optionsRoot: string;
|
|
||||||
multiAutoComplete: boolean;
|
|
||||||
label: string;
|
|
||||||
value: string;
|
|
||||||
}
|
|
|
@ -1,13 +0,0 @@
|
||||||
import { DmpBlueprintExtraFieldDataType } from '../../common/enum/dmp-blueprint-field-type';
|
|
||||||
import { DmpBlueprintType } from '../../common/enum/dmp-blueprint-type';
|
|
||||||
import { DmpBlueprintExternalAutoCompleteFieldDataEditorModel } from '../../../ui/admin/dmp-blueprint/editor/external-autocomplete/dmp-blueprint-external-autocomplete-field-editor.model';
|
|
||||||
|
|
||||||
export interface DmpBlueprintField {
|
|
||||||
id: string;
|
|
||||||
type: DmpBlueprintType;
|
|
||||||
dataType: DmpBlueprintExtraFieldDataType;
|
|
||||||
required: boolean;
|
|
||||||
label: string;
|
|
||||||
value: any;
|
|
||||||
externalAutocomplete?: DmpBlueprintExternalAutoCompleteFieldDataEditorModel;
|
|
||||||
}
|
|
|
@ -1,5 +1,4 @@
|
||||||
import { DmpStatus } from "../../common/enum/dmp-status";
|
import { DmpStatus } from "../../common/enum/dmp-status";
|
||||||
import { DmpAssociatedProfileModel } from '../dmp-blueprint/dmp-associated-profile';
|
|
||||||
|
|
||||||
export interface DmpListingModel {
|
export interface DmpListingModel {
|
||||||
id: string;
|
id: string;
|
||||||
|
@ -18,7 +17,6 @@ export interface DmpListingModel {
|
||||||
groupId: string;
|
groupId: string;
|
||||||
version: number;
|
version: number;
|
||||||
datasets: any[];
|
datasets: any[];
|
||||||
associatedProfiles: DmpAssociatedProfileModel[];
|
|
||||||
users: any[];
|
users: any[];
|
||||||
public: boolean;
|
public: boolean;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
import { OrganizationModel } from "../organisation/organization";
|
import { OrganizationModel } from "../organisation/organization";
|
||||||
import { UserInfoListingModel } from "../user/user-info-listing";
|
import { UserInfoListingModel } from "../user/user-info-listing";
|
||||||
import { DmpAssociatedProfileModel } from "../dmp-blueprint/dmp-associated-profile";
|
|
||||||
import { ResearcherModel } from "../researcher/researcher";
|
import { ResearcherModel } from "../researcher/researcher";
|
||||||
import { GrantOverviewModel } from "../grant/grant-overview";
|
import { GrantOverviewModel } from "../grant/grant-overview";
|
||||||
import { DatasetOverviewModel } from "../dataset/dataset-overview";
|
import { DatasetOverviewModel } from "../dataset/dataset-overview";
|
||||||
|
@ -18,7 +17,6 @@ export interface DmpOverviewModel {
|
||||||
groupId: string;
|
groupId: string;
|
||||||
description: string;
|
description: string;
|
||||||
grant: GrantOverviewModel;
|
grant: GrantOverviewModel;
|
||||||
associatedProfiles: DmpAssociatedProfileModel[];
|
|
||||||
users: UserInfoListingModel[];
|
users: UserInfoListingModel[];
|
||||||
organisations: OrganizationModel[];
|
organisations: OrganizationModel[];
|
||||||
datasets: DatasetOverviewModel[];
|
datasets: DatasetOverviewModel[];
|
||||||
|
|
|
@ -1,14 +1,10 @@
|
||||||
import { RecentActivityModel } from './recent-activity.model';
|
|
||||||
import { RecentDatasetModel } from './recent-dataset-activity.model';
|
|
||||||
import { DmpAssociatedProfileModel } from '../dmp-blueprint/dmp-associated-profile';
|
|
||||||
import { UserInfoListingModel } from '../user/user-info-listing';
|
|
||||||
import { DatasetUrlListing } from '../dataset/dataset-url-listing';
|
import { DatasetUrlListing } from '../dataset/dataset-url-listing';
|
||||||
|
import { RecentActivityModel } from './recent-activity.model';
|
||||||
|
|
||||||
export class RecentDmpModel extends RecentActivityModel {
|
export class RecentDmpModel extends RecentActivityModel {
|
||||||
doi: String;
|
doi: String;
|
||||||
extraProperties: Map<String, any>;
|
extraProperties: Map<String, any>;
|
||||||
datasets: DatasetUrlListing[];
|
datasets: DatasetUrlListing[];
|
||||||
associatedProfiles: DmpAssociatedProfileModel[];
|
|
||||||
organisations: String;
|
organisations: String;
|
||||||
groupId: string;
|
groupId: string;
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,11 +12,9 @@ import { CommonUiModule } from '@common/ui/common-ui.module';
|
||||||
import { NgxDropzoneModule } from "ngx-dropzone";
|
import { NgxDropzoneModule } from "ngx-dropzone";
|
||||||
import { DmpBlueprintRoutingModule } from './dmp-blueprint.routing';
|
import { DmpBlueprintRoutingModule } from './dmp-blueprint.routing';
|
||||||
import { DmpBlueprintEditorComponent } from './editor/dmp-blueprint-editor.component';
|
import { DmpBlueprintEditorComponent } from './editor/dmp-blueprint-editor.component';
|
||||||
import { DmpBlueprintExternalAutocompleteFieldEditorComponent } from './editor/external-autocomplete/dmp-blueprint-external-autocomplete-field-editor.component';
|
|
||||||
import { DialodConfirmationUploadDmpBlueprints } from './listing/criteria/dialog-confirmation-upload-blueprint/dialog-confirmation-upload-blueprints.component';
|
|
||||||
import { DmpBlueprintCriteriaComponent } from './listing/criteria/dmp-blueprint-criteria.component';
|
|
||||||
import { DmpBlueprintListingComponent } from './listing/dmp-blueprint-listing.component';
|
import { DmpBlueprintListingComponent } from './listing/dmp-blueprint-listing.component';
|
||||||
import { DmpBlueprintListingFiltersComponent } from "./listing/filters/dmp-blueprint-listing-filters.component";
|
import { DmpBlueprintListingFiltersComponent } from "./listing/filters/dmp-blueprint-listing-filters.component";
|
||||||
|
import { ImportDmpBlueprintDialogComponent } from './listing/import-dmp-blueprint/import-dmp-blueprint.dialog.component';
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [
|
imports: [
|
||||||
|
@ -37,9 +35,7 @@ import { DmpBlueprintListingFiltersComponent } from "./listing/filters/dmp-bluep
|
||||||
DmpBlueprintEditorComponent,
|
DmpBlueprintEditorComponent,
|
||||||
DmpBlueprintListingComponent,
|
DmpBlueprintListingComponent,
|
||||||
DmpBlueprintListingFiltersComponent,
|
DmpBlueprintListingFiltersComponent,
|
||||||
DmpBlueprintCriteriaComponent,
|
ImportDmpBlueprintDialogComponent
|
||||||
DialodConfirmationUploadDmpBlueprints,
|
|
||||||
DmpBlueprintExternalAutocompleteFieldEditorComponent
|
|
||||||
]
|
]
|
||||||
})
|
})
|
||||||
export class DmpBlueprintModule { }
|
export class DmpBlueprintModule { }
|
||||||
|
|
|
@ -770,24 +770,4 @@ export class DmpBlueprintEditorComponent extends BaseEditor<DmpBlueprintEditorMo
|
||||||
FileSaver.saveAs(blob, filename);
|
FileSaver.saveAs(blob, filename);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// isExternalAutocomplete(formGroup: UntypedFormGroup) {
|
|
||||||
// if (formGroup.get('dataType').value == DmpBlueprintFieldDataType.ExternalAutocomplete) {
|
|
||||||
// this.addControl(formGroup);
|
|
||||||
// return true;
|
|
||||||
// } else {
|
|
||||||
// this.removeControl(formGroup);
|
|
||||||
// return false;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
// addControl(formGroup: UntypedFormGroup) {
|
|
||||||
// if (formGroup.get('dataType').value == 3)
|
|
||||||
// formGroup.addControl('externalAutocomplete', new DmpBlueprintExternalAutoCompleteFieldDataEditorModel().buildForm());
|
|
||||||
// }
|
|
||||||
|
|
||||||
// removeControl(formGroup: UntypedFormGroup) {
|
|
||||||
// if (formGroup.get('dataType').value != 3)
|
|
||||||
// formGroup.removeControl('externalAutocomplete');
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,22 +0,0 @@
|
||||||
<div class="container external-autocomplete">
|
|
||||||
<div class="row external-autocomplete-field" *ngIf="form.get('externalAutocomplete')">
|
|
||||||
<h5 style="font-weight: bold" class="col-auto">{{'DMP-BLUEPRINT-EDITOR.FIELDS.EXTERNAL-AUTOCOMPLETE.TITLE' | translate}}</h5>
|
|
||||||
<mat-checkbox class="col-auto" [formControl]="this.form.get('externalAutocomplete').get('multiAutoComplete')">
|
|
||||||
{{'DMP-BLUEPRINT-EDITOR.FIELDS.EXTERNAL-AUTOCOMPLETE.MULTIPLE-AUTOCOMPLETE' | translate}}
|
|
||||||
</mat-checkbox>
|
|
||||||
|
|
||||||
<mat-form-field class="col-md-12">
|
|
||||||
<input matInput placeholder="{{'DMP-BLUEPRINT-EDITOR.FIELDS.EXTERNAL-AUTOCOMPLETE.URL' | translate}}" [formControl]="this.form.get('externalAutocomplete').get('url')">
|
|
||||||
</mat-form-field>
|
|
||||||
<mat-form-field class="col-md-4">
|
|
||||||
<input matInput placeholder="{{'DMP-BLUEPRINT-EDITOR.FIELDS.EXTERNAL-AUTOCOMPLETE.OPTIONS-ROOT' | translate}}"
|
|
||||||
[formControl]="this.form.get('externalAutocomplete').get('optionsRoot')">
|
|
||||||
</mat-form-field>
|
|
||||||
<mat-form-field class="col-md-4">
|
|
||||||
<input matInput placeholder="{{'DMP-BLUEPRINT-EDITOR.FIELDS.EXTERNAL-AUTOCOMPLETE.LABEL' | translate}}" [formControl]="this.form.get('externalAutocomplete').get('label')">
|
|
||||||
</mat-form-field>
|
|
||||||
<mat-form-field class="col-md-4">
|
|
||||||
<input matInput placeholder="{{'DMP-BLUEPRINT-EDITOR.FIELDS.EXTERNAL-AUTOCOMPLETE.VALUE' | translate}}" [formControl]="this.form.get('externalAutocomplete').get('value')">
|
|
||||||
</mat-form-field>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
|
@ -1,13 +0,0 @@
|
||||||
.external-autocomplete {
|
|
||||||
margin-bottom: 10px;
|
|
||||||
|
|
||||||
.centered-row-item {
|
|
||||||
align-items: center;
|
|
||||||
display: flex;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.external-autocomplete-field {
|
|
||||||
margin-left: auto;
|
|
||||||
background: aliceblue;
|
|
||||||
}
|
|
|
@ -1,17 +0,0 @@
|
||||||
import { Component, Input, OnInit } from '@angular/core';
|
|
||||||
import { UntypedFormGroup } from '@angular/forms';
|
|
||||||
import { DmpBlueprintExternalAutoCompleteFieldDataEditorModel } from './dmp-blueprint-external-autocomplete-field-editor.model';
|
|
||||||
|
|
||||||
@Component({
|
|
||||||
selector: 'app-dmp-blueprint-external-autocomplete-field-editor-component',
|
|
||||||
styleUrls: ['./dmp-blueprint-external-autocomplete-field-editor.component.scss'],
|
|
||||||
templateUrl: './dmp-blueprint-external-autocomplete-field-editor.component.html'
|
|
||||||
})
|
|
||||||
export class DmpBlueprintExternalAutocompleteFieldEditorComponent implements OnInit {
|
|
||||||
|
|
||||||
@Input() form: UntypedFormGroup
|
|
||||||
private externalAutocomplete: DmpBlueprintExternalAutoCompleteFieldDataEditorModel;
|
|
||||||
|
|
||||||
ngOnInit() {
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,32 +0,0 @@
|
||||||
import { UntypedFormGroup, UntypedFormBuilder } from "@angular/forms";
|
|
||||||
import { DmpBlueprintExternalAutoCompleteField } from "../../../../../core/model/dmp-blueprint/dmp-blueprint-external-autocomplete";
|
|
||||||
|
|
||||||
export class DmpBlueprintExternalAutoCompleteFieldDataEditorModel {
|
|
||||||
|
|
||||||
public url: string;
|
|
||||||
public optionsRoot: string;
|
|
||||||
public multiAutoComplete: boolean = false;
|
|
||||||
public label: string;
|
|
||||||
public value: string;
|
|
||||||
|
|
||||||
buildForm(disabled: boolean = false, skipDisable: Array<String> = []): UntypedFormGroup {
|
|
||||||
const formGroup = new UntypedFormBuilder().group({
|
|
||||||
url: [{ value: this.url, disabled: (disabled && !skipDisable.includes('DmpBlueprintExternalAutoCompleteFieldDataEditorModel.url')) }],
|
|
||||||
optionsRoot: [{ value: this.optionsRoot, disabled: (disabled && !skipDisable.includes('DmpBlueprintExternalAutoCompleteFieldDataEditorModel.optionsRoot')) }],
|
|
||||||
multiAutoComplete: [{ value: this.multiAutoComplete, disabled: (disabled && !skipDisable.includes('DmpBlueprintExternalAutoCompleteFieldDataEditorModel.multiAutoComplete')) }],
|
|
||||||
label: [{ value: this.label, disabled: (disabled && !skipDisable.includes('DmpBlueprintExternalAutoCompleteFieldDataEditorModel.label')) }],
|
|
||||||
value: [{ value: this.value, disabled: (disabled && !skipDisable.includes('DmpBlueprintExternalAutoCompleteFieldDataEditorModel.value')) }],
|
|
||||||
|
|
||||||
});
|
|
||||||
return formGroup;
|
|
||||||
}
|
|
||||||
|
|
||||||
fromModel(item: DmpBlueprintExternalAutoCompleteField): DmpBlueprintExternalAutoCompleteFieldDataEditorModel {
|
|
||||||
this.url = item.url;
|
|
||||||
this.optionsRoot = item.optionsRoot;
|
|
||||||
this.multiAutoComplete = item.multiAutoComplete;
|
|
||||||
this.label = item.label;
|
|
||||||
this.value = item.value;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,23 +0,0 @@
|
||||||
<div class="row align-items-end">
|
|
||||||
<div class="col-auto">
|
|
||||||
<div class="d-lg-inline-block pr-2 text-muted">
|
|
||||||
<span>{{'CRITERIA.USERS.SHOW' | translate}}:</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<mat-form-field class="status-form-field">
|
|
||||||
<mat-select [(ngModel)]="criteria.status" (ngModelChange)="controlModified()" placeholder=" {{'CRITERIA.BLUEPRINT.STATUS' | translate}}">
|
|
||||||
<mat-option [value]="null">{{'BLUEPRINT-STATUS.NONE' | translate}}</mat-option>
|
|
||||||
<mat-option [value]="0">{{'BLUEPRINT-STATUS.DRAFT' | translate}}</mat-option>
|
|
||||||
<mat-option [value]="1">{{'BLUEPRINT-STATUS.FINALIZED' | translate}}</mat-option>
|
|
||||||
</mat-select>
|
|
||||||
</mat-form-field>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div class="col-auto ml-lg-auto">
|
|
||||||
<mat-form-field class="search-form-field">
|
|
||||||
<input matInput placeholder=" {{'CRITERIA.BLUEPRINT.LIKE'| translate}}" name="dmpBlueprintLike"
|
|
||||||
[(ngModel)]="criteria.like" (ngModelChange)="controlModified()">
|
|
||||||
<mat-icon matPrefix>search</mat-icon>
|
|
||||||
</mat-form-field>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
|
@ -1,17 +0,0 @@
|
||||||
.mat-form-field{
|
|
||||||
display: inline-block !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
:host ::ng-deep .status-form-field .mat-form-field-wrapper {
|
|
||||||
background-color: white !important;
|
|
||||||
padding-bottom: 0 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
:host ::ng-deep .search-form-field .mat-form-field-wrapper {
|
|
||||||
background-color: white !important;
|
|
||||||
padding-bottom: 0 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
:host ::ng-deep .mat-form-field-appearance-outline .mat-form-field-infix {
|
|
||||||
padding: 0.3rem 0rem 0.6rem 0rem !important;
|
|
||||||
}
|
|
|
@ -1,69 +0,0 @@
|
||||||
import { Component, Input, OnInit } from '@angular/core';
|
|
||||||
import { MatDialog } from '@angular/material/dialog';
|
|
||||||
import { DmpBlueprintCriteria } from '@app/core/query/dmp/dmp-blueprint-criteria';
|
|
||||||
import { DmpBlueprintService } from '@app/core/services/dmp/dmp-blueprint.service';
|
|
||||||
import { BaseCriteriaComponent } from '@app/ui/misc/criteria/base-criteria.component';
|
|
||||||
import { ValidationErrorModel } from '@common/forms/validation/error-model/validation-error-model';
|
|
||||||
import { TranslateService } from '@ngx-translate/core';
|
|
||||||
|
|
||||||
@Component({
|
|
||||||
selector: 'app-dmp-blueprint-criteria-component',
|
|
||||||
templateUrl: './dmp-blueprint-criteria.component.html',
|
|
||||||
styleUrls: ['./dmp-blueprint-criteria.component.scss'],
|
|
||||||
})
|
|
||||||
export class DmpBlueprintCriteriaComponent extends BaseCriteriaComponent implements OnInit {
|
|
||||||
|
|
||||||
public criteria: DmpBlueprintCriteria = new DmpBlueprintCriteria();
|
|
||||||
|
|
||||||
constructor(
|
|
||||||
private dmpBlueprintService: DmpBlueprintService,
|
|
||||||
private dialog: MatDialog,
|
|
||||||
private language: TranslateService
|
|
||||||
) {
|
|
||||||
super(new ValidationErrorModel());
|
|
||||||
}
|
|
||||||
|
|
||||||
ngOnInit() {
|
|
||||||
super.ngOnInit();
|
|
||||||
if (this.criteria == null) { this.criteria = new DmpBlueprintCriteria(); }
|
|
||||||
}
|
|
||||||
|
|
||||||
setCriteria(criteria: DmpBlueprintCriteria): void {
|
|
||||||
this.criteria = criteria;
|
|
||||||
}
|
|
||||||
|
|
||||||
onCallbackError(error: any) {
|
|
||||||
this.setErrorModel(error.error);
|
|
||||||
}
|
|
||||||
|
|
||||||
controlModified(): void {
|
|
||||||
this.clearErrorModel();
|
|
||||||
if (this.refreshCallback != null &&
|
|
||||||
(this.criteria.like == null || this.criteria.like.length === 0 || this.criteria.like.length > 2)
|
|
||||||
) {
|
|
||||||
this.refreshCallback();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// openDialog(): void {
|
|
||||||
// const dialogRef = this.dialog.open(DialodConfirmationUploadDmpBlueprints, {
|
|
||||||
// restoreFocus: false,
|
|
||||||
// data: {
|
|
||||||
// message: this.language.instant('DMP-BLUEPRINT-LISTING.UPLOAD.UPLOAD-XML-FILE-TITLE'),
|
|
||||||
// confirmButton: this.language.instant('DMP-BLUEPRINT-LISTING.UPLOAD.UPLOAD-XML'),
|
|
||||||
// cancelButton: this.language.instant('DMP-BLUEPRINT-LISTING.UPLOAD.UPLOAD-XML-FILE-CANCEL'),
|
|
||||||
// name: '',
|
|
||||||
// file: FileList,
|
|
||||||
// sucsess: false
|
|
||||||
// }
|
|
||||||
// });
|
|
||||||
// dialogRef.afterClosed().pipe(takeUntil(this._destroyed)).subscribe(data => {
|
|
||||||
// if (data && data.sucsess && data.name != null && data.file != null) {
|
|
||||||
// this.dmpBlueprintService.uploadFile(data.file, data.name)
|
|
||||||
// .pipe(takeUntil(this._destroyed))
|
|
||||||
// .subscribe();
|
|
||||||
// }
|
|
||||||
// });
|
|
||||||
// }
|
|
||||||
}
|
|
|
@ -8,27 +8,26 @@
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="col-auto">
|
<div class="col-auto">
|
||||||
<button mat-raised-button class="create-btn"
|
<button mat-raised-button class="import-btn" (click)="import()">
|
||||||
*ngIf="authService.hasPermission(authService.permissionEnum.EditDescriptionTemplateType)"
|
<span class="button-text">
|
||||||
[routerLink]="['/dmp-blueprint/new']">
|
{{'DMP-BLUEPRINT-LISTING.IMPORT.UPLOAD-XML' | translate}}
|
||||||
|
</span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-auto">
|
||||||
|
<button mat-raised-button class="create-btn" *ngIf="authService.hasPermission(authService.permissionEnum.EditDescriptionTemplateType)" [routerLink]="['/dmp-blueprint/new']">
|
||||||
<mat-icon>add</mat-icon>
|
<mat-icon>add</mat-icon>
|
||||||
{{'DMP-BLUEPRINT-LISTING.CREATE-DMP-BLUEPRINT' | translate}}
|
{{'DMP-BLUEPRINT-LISTING.CREATE-DMP-BLUEPRINT' | translate}}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<app-hybrid-listing [rows]="gridRows" [columns]="gridColumns" [visibleColumns]="visibleColumns"
|
<app-hybrid-listing [rows]="gridRows" [columns]="gridColumns" [visibleColumns]="visibleColumns" [count]="totalElements" [offset]="currentPageNumber" [limit]="lookup.page.size" [defaultSort]="lookup.order?.items" [externalSorting]="true" (rowActivated)="onRowActivated($event)" (pageLoad)="alterPage($event)" (columnSort)="onColumnSort($event)" (columnsChanged)="onColumnsChanged($event)" [listItemTemplate]="listItemTemplate">
|
||||||
[count]="totalElements" [offset]="currentPageNumber" [limit]="lookup.page.size"
|
|
||||||
[defaultSort]="lookup.order?.items" [externalSorting]="true" (rowActivated)="onRowActivated($event)"
|
|
||||||
(pageLoad)="alterPage($event)" (columnSort)="onColumnSort($event)"
|
|
||||||
(columnsChanged)="onColumnsChanged($event)" [listItemTemplate]="listItemTemplate">
|
|
||||||
|
|
||||||
<app-dmp-blueprint-listing-filters hybrid-listing-filters [(filter)]="lookup"
|
<app-dmp-blueprint-listing-filters hybrid-listing-filters [(filter)]="lookup" (filterChange)="filterChanged($event)" />
|
||||||
(filterChange)="filterChanged($event)" />
|
|
||||||
|
|
||||||
<app-user-settings-picker [key]="userSettingsKey" [userPreference]="lookup"
|
<app-user-settings-picker [key]="userSettingsKey" [userPreference]="lookup" (onSettingSelected)="changeSetting($event)" [autoSelectUserSettings]="autoSelectUserSettings" user-preference-settings />
|
||||||
(onSettingSelected)="changeSetting($event)" [autoSelectUserSettings]="autoSelectUserSettings"
|
|
||||||
user-preference-settings />
|
|
||||||
<!-- <button mat-icon-button download-listing-report>
|
<!-- <button mat-icon-button download-listing-report>
|
||||||
<mat-icon>download</mat-icon>
|
<mat-icon>download</mat-icon>
|
||||||
</button> -->
|
</button> -->
|
||||||
|
@ -43,15 +42,13 @@
|
||||||
<div class="d-flex align-items-center p-3 gap-1-rem">
|
<div class="d-flex align-items-center p-3 gap-1-rem">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<ng-container *ngIf="isColumnSelected('label')">
|
<ng-container *ngIf="isColumnSelected('label')">
|
||||||
<a class="buttonLinkClass" [routerLink]="'./' + item?.id" class="col-12"
|
<a class="buttonLinkClass" [routerLink]="'./' + item?.id" class="col-12" (click)="$event.stopPropagation()">{{item?.label | nullifyValue}}</a>
|
||||||
(click)="$event.stopPropagation()">{{item?.label | nullifyValue}}</a>
|
|
||||||
<br />
|
<br />
|
||||||
</ng-container>
|
</ng-container>
|
||||||
|
|
||||||
<ng-container *ngIf="isColumnSelected('status')">
|
<ng-container *ngIf="isColumnSelected('status')">
|
||||||
<div class="col-auto">
|
<div class="col-auto">
|
||||||
<div class="status-chip"
|
<div class="status-chip" [ngClass]="{'status-chip-finalized': item.status === dmpBlueprintStatuses.Finalized, 'status-chip-draft' : item.status === dmpBlueprintStatuses.Draft}">
|
||||||
[ngClass]="{'status-chip-finalized': item.status === dmpBlueprintStatuses.Finalized, 'status-chip-draft' : item.status === dmpBlueprintStatuses.Draft}">
|
|
||||||
{{enumUtils.toDescriptionTemplateTypeStatusString(item.status) | nullifyValue}}
|
{{enumUtils.toDescriptionTemplateTypeStatusString(item.status) | nullifyValue}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -80,8 +77,7 @@
|
||||||
|
|
||||||
<ng-template #dmpBlueprintStatus let-row="row" let-item>
|
<ng-template #dmpBlueprintStatus let-row="row" let-item>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-auto status-chip"
|
<div class="col-auto status-chip" [ngClass]="{'status-chip-finalized': row.status === dmpBlueprintStatuses.Finalized, 'status-chip-draft' : row.status === dmpBlueprintStatuses.Draft}">
|
||||||
[ngClass]="{'status-chip-finalized': row.status === dmpBlueprintStatuses.Finalized, 'status-chip-draft' : row.status === dmpBlueprintStatuses.Draft}">
|
|
||||||
{{enumUtils.toDescriptionTemplateTypeStatusString(row.status) | nullifyValue}}
|
{{enumUtils.toDescriptionTemplateTypeStatusString(row.status) | nullifyValue}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -11,6 +11,7 @@ import { DmpBlueprintService } from '@app/core/services/dmp/dmp-blueprint.servic
|
||||||
import { MatomoService } from '@app/core/services/matomo/matomo-service';
|
import { MatomoService } from '@app/core/services/matomo/matomo-service';
|
||||||
import { SnackBarNotificationLevel, UiNotificationService } from '@app/core/services/notification/ui-notification-service';
|
import { SnackBarNotificationLevel, UiNotificationService } from '@app/core/services/notification/ui-notification-service';
|
||||||
import { EnumUtils } from '@app/core/services/utilities/enum-utils.service';
|
import { EnumUtils } from '@app/core/services/utilities/enum-utils.service';
|
||||||
|
import { FileUtils } from '@app/core/services/utilities/file-utils.service';
|
||||||
import { QueryParamsService } from '@app/core/services/utilities/query-params.service';
|
import { QueryParamsService } from '@app/core/services/utilities/query-params.service';
|
||||||
import { BaseListingComponent } from '@common/base/base-listing-component';
|
import { BaseListingComponent } from '@common/base/base-listing-component';
|
||||||
import { PipeService } from '@common/formatting/pipe.service';
|
import { PipeService } from '@common/formatting/pipe.service';
|
||||||
|
@ -21,9 +22,11 @@ import { HttpErrorHandlingService } from '@common/modules/errors/error-handling/
|
||||||
import { ColumnDefinition, ColumnsChangedEvent, HybridListingComponent, PageLoadEvent } from '@common/modules/hybrid-listing/hybrid-listing.component';
|
import { ColumnDefinition, ColumnsChangedEvent, HybridListingComponent, PageLoadEvent } from '@common/modules/hybrid-listing/hybrid-listing.component';
|
||||||
import { Guid } from '@common/types/guid';
|
import { Guid } from '@common/types/guid';
|
||||||
import { TranslateService } from '@ngx-translate/core';
|
import { TranslateService } from '@ngx-translate/core';
|
||||||
|
import * as FileSaver from 'file-saver';
|
||||||
import { Observable } from 'rxjs';
|
import { Observable } from 'rxjs';
|
||||||
import { takeUntil } from 'rxjs/operators';
|
import { takeUntil } from 'rxjs/operators';
|
||||||
import { nameof } from 'ts-simple-nameof';
|
import { nameof } from 'ts-simple-nameof';
|
||||||
|
import { ImportDmpBlueprintDialogComponent } from './import-dmp-blueprint/import-dmp-blueprint.dialog.component';
|
||||||
|
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
|
@ -66,7 +69,8 @@ export class DmpBlueprintListingComponent extends BaseListingComponent<DmpBluepr
|
||||||
private pipeService: PipeService,
|
private pipeService: PipeService,
|
||||||
public enumUtils: EnumUtils,
|
public enumUtils: EnumUtils,
|
||||||
private language: TranslateService,
|
private language: TranslateService,
|
||||||
private dialog: MatDialog
|
private dialog: MatDialog,
|
||||||
|
private fileUtils: FileUtils
|
||||||
) {
|
) {
|
||||||
super(router, route, uiNotificationService, httpErrorHandlingService, queryParamsService);
|
super(router, route, uiNotificationService, httpErrorHandlingService, queryParamsService);
|
||||||
// Lookup setup
|
// Lookup setup
|
||||||
|
@ -178,13 +182,40 @@ export class DmpBlueprintListingComponent extends BaseListingComponent<DmpBluepr
|
||||||
}
|
}
|
||||||
|
|
||||||
export(id: Guid): void {
|
export(id: Guid): void {
|
||||||
// this.dmpBlueprintService.downloadXML(dmpBlueprintId)
|
this.dmpBlueprintService.downloadXML(id)
|
||||||
// .pipe(takeUntil(this._destroyed))
|
.pipe(takeUntil(this._destroyed))
|
||||||
// .subscribe(response => {
|
.subscribe(response => {
|
||||||
// const blob = new Blob([response.body], { type: 'application/xml' });
|
const blob = new Blob([response.body], { type: 'application/xml' });
|
||||||
// const filename = this.fileUtils.getFilenameFromContentDispositionHeader(response.headers.get('Content-Disposition'));
|
const filename = this.fileUtils.getFilenameFromContentDispositionHeader(response.headers.get('Content-Disposition'));
|
||||||
// FileSaver.saveAs(blob, filename);
|
FileSaver.saveAs(blob, filename);
|
||||||
// });
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
import(): void {
|
||||||
|
const dialogRef = this.dialog.open(ImportDmpBlueprintDialogComponent, {
|
||||||
|
restoreFocus: false,
|
||||||
|
data: {
|
||||||
|
message: this.language.instant('DMP-BLUEPRINT-LISTING.IMPORT.UPLOAD-XML-FILE-TITLE'),
|
||||||
|
confirmButton: this.language.instant('DMP-BLUEPRINT-LISTING.IMPORT.UPLOAD-XML'),
|
||||||
|
cancelButton: this.language.instant('DMP-BLUEPRINT-LISTING.IMPORT.UPLOAD-XML-FILE-CANCEL'),
|
||||||
|
name: '',
|
||||||
|
file: FileList,
|
||||||
|
sucsess: false
|
||||||
|
}
|
||||||
|
});
|
||||||
|
dialogRef.afterClosed().pipe(takeUntil(this._destroyed)).subscribe(data => {
|
||||||
|
if (data && data.sucsess && data.name != null && data.file != null) {
|
||||||
|
this.dmpBlueprintService.uploadFile(data.file, data.name)
|
||||||
|
.pipe(takeUntil(this._destroyed))
|
||||||
|
.subscribe(_ => {
|
||||||
|
this.uiNotificationService.snackBarNotification(this.language.instant('DMP-BLUEPRINT-LISTING.MESSAGES.TEMPLATE-UPLOAD-SUCCESS'), SnackBarNotificationLevel.Success);
|
||||||
|
this.ngOnInit();
|
||||||
|
},
|
||||||
|
error => {
|
||||||
|
this.uiNotificationService.snackBarNotification(error.message, SnackBarNotificationLevel.Error);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -277,9 +308,9 @@ export class DmpBlueprintListingComponent extends BaseListingComponent<DmpBluepr
|
||||||
// const dialogRef = this.dialog.open(DialodConfirmationUploadDmpBlueprints, {
|
// const dialogRef = this.dialog.open(DialodConfirmationUploadDmpBlueprints, {
|
||||||
// restoreFocus: false,
|
// restoreFocus: false,
|
||||||
// data: {
|
// data: {
|
||||||
// message: this.languageService.instant('DMP-BLUEPRINT-LISTING.UPLOAD.UPLOAD-XML-FILE-TITLE'),
|
// message: this.languageService.instant('DMP-BLUEPRINT-LISTING.IMPORT.UPLOAD-XML-FILE-TITLE'),
|
||||||
// confirmButton: this.languageService.instant('DMP-BLUEPRINT-LISTING.UPLOAD.UPLOAD-XML'),
|
// confirmButton: this.languageService.instant('DMP-BLUEPRINT-LISTING.IMPORT.UPLOAD-XML'),
|
||||||
// cancelButton: this.languageService.instant('DMP-BLUEPRINT-LISTING.UPLOAD.UPLOAD-XML-FILE-CANCEL'),
|
// cancelButton: this.languageService.instant('DMP-BLUEPRINT-LISTING.IMPORT.UPLOAD-XML-FILE-CANCEL'),
|
||||||
// name: '',
|
// name: '',
|
||||||
// file: FileList,
|
// file: FileList,
|
||||||
// sucsess: false
|
// sucsess: false
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<mat-form-field class="col-12">
|
<mat-form-field class="col-12">
|
||||||
<input matInput placeholder="{{'DMP-BLUEPRINT-LISTING.UPLOAD.UPLOAD-XML-NAME'| translate}}" name="datasetBlueprintName" [(ngModel)]="data.name">
|
<input matInput placeholder="{{'DMP-BLUEPRINT-LISTING.IMPORT.UPLOAD-XML-NAME'| translate}}" name="datasetBlueprintName" [(ngModel)]="data.name">
|
||||||
</mat-form-field>
|
</mat-form-field>
|
||||||
<div class="col-auto">
|
<div class="col-auto">
|
||||||
<button mat-button type="button" class="cancel-btn" (click)="cancel()">{{ data.cancelButton }}</button>
|
<button mat-button type="button" class="cancel-btn" (click)="cancel()">{{ data.cancelButton }}</button>
|
|
@ -1,39 +1,38 @@
|
||||||
|
import { Component, Inject } from '@angular/core';
|
||||||
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
|
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
|
||||||
import { Inject, Component } from '@angular/core';
|
|
||||||
|
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-dialog-confirmation-upload',
|
templateUrl: './import-dmp-blueprint.dialog.component.html',
|
||||||
templateUrl: './dialog-confirmation-upload-blueprints.component.html',
|
styleUrls: ['./import-dmp-blueprint.dialog.component.scss']
|
||||||
styleUrls: ['./dialog-confirmation-upload-blueprints.component.scss']
|
|
||||||
})
|
})
|
||||||
export class DialodConfirmationUploadDmpBlueprints {
|
export class ImportDmpBlueprintDialogComponent {
|
||||||
|
|
||||||
sizeError = false;
|
sizeError = false;
|
||||||
selectFile =false;
|
selectFile = false;
|
||||||
maxFileSize: number = 1048576;
|
maxFileSize: number = 1048576;
|
||||||
selectedFileName: string;
|
selectedFileName: string;
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
public dialogRef: MatDialogRef<DialodConfirmationUploadDmpBlueprints>,
|
public dialogRef: MatDialogRef<ImportDmpBlueprintDialogComponent>,
|
||||||
@Inject(MAT_DIALOG_DATA) public data: any
|
@Inject(MAT_DIALOG_DATA) public data: any
|
||||||
) { }
|
) { }
|
||||||
|
|
||||||
|
|
||||||
selectXML(event) {
|
selectXML(event) {
|
||||||
let file: FileList = null;
|
let file: FileList = null;
|
||||||
if(event.target && event.target.files){
|
if (event.target && event.target.files) {
|
||||||
file = event.target.files;
|
file = event.target.files;
|
||||||
}else if(event.addedFiles && event.addedFiles.length){
|
} else if (event.addedFiles && event.addedFiles.length) {
|
||||||
file = event.addedFiles;
|
file = event.addedFiles;
|
||||||
}
|
}
|
||||||
if(!file) return;//no select closed with cancel . no file selected
|
if (!file) return;//no select closed with cancel . no file selected
|
||||||
const size: number = file[0].size; // Get file size.
|
const size: number = file[0].size; // Get file size.
|
||||||
this.sizeError = size > this.maxFileSize; // Checks if file size is valid.
|
this.sizeError = size > this.maxFileSize; // Checks if file size is valid.
|
||||||
const formdata: FormData = new FormData();
|
const formdata: FormData = new FormData();
|
||||||
if (!this.sizeError) {
|
if (!this.sizeError) {
|
||||||
this.data.file = file;
|
this.data.file = file;
|
||||||
this.selectFile=true;
|
this.selectFile = true;
|
||||||
this.selectedFileName = file[0].name;
|
this.selectedFileName = file[0].name;
|
||||||
}
|
}
|
||||||
this.data.name = file[0].name;
|
this.data.name = file[0].name;
|
||||||
|
@ -50,12 +49,12 @@ export class DialodConfirmationUploadDmpBlueprints {
|
||||||
this.dialogRef.close(this.data);
|
this.dialogRef.close(this.data);
|
||||||
}
|
}
|
||||||
|
|
||||||
hasBlueprint():boolean{
|
hasBlueprint(): boolean {
|
||||||
return (this.selectFile && !this.sizeError);
|
return (this.selectFile && !this.sizeError);
|
||||||
}
|
}
|
||||||
//remove selected file
|
//remove selected file
|
||||||
onRemove(){
|
onRemove() {
|
||||||
this.data.name="";
|
this.data.name = "";
|
||||||
this.selectFile = false;
|
this.selectFile = false;
|
||||||
this.selectedFileName = "";
|
this.selectedFileName = "";
|
||||||
}
|
}
|
|
@ -4,7 +4,6 @@ import { CardComponent } from '@app/ui/dashboard/card/card.component';
|
||||||
import { DashboardComponent } from '@app/ui/dashboard/dashboard.component';
|
import { DashboardComponent } from '@app/ui/dashboard/dashboard.component';
|
||||||
import { DashboardRoutingModule } from '@app/ui/dashboard/dashboard.routing';
|
import { DashboardRoutingModule } from '@app/ui/dashboard/dashboard.routing';
|
||||||
import { DatasetInfoCounterComponent } from '@app/ui/dashboard/dataset-info-counter/dataset-info-counter.component';
|
import { DatasetInfoCounterComponent } from '@app/ui/dashboard/dataset-info-counter/dataset-info-counter.component';
|
||||||
import { DmpInfoCounterComponent } from '@app/ui/dashboard/dmp-info-counter/dmp-info-counter.component';
|
|
||||||
import { DraftsComponent } from '@app/ui/dashboard/drafts/drafts.component';
|
import { DraftsComponent } from '@app/ui/dashboard/drafts/drafts.component';
|
||||||
import { InfoCounterComponent } from '@app/ui/dashboard/info-counter/info-counter.component';
|
import { InfoCounterComponent } from '@app/ui/dashboard/info-counter/info-counter.component';
|
||||||
import { QuickWizardCreateAdd } from '@app/ui/dashboard/quick-wizard-create-add/quick-wizard-create-add.component';
|
import { QuickWizardCreateAdd } from '@app/ui/dashboard/quick-wizard-create-add/quick-wizard-create-add.component';
|
||||||
|
@ -41,7 +40,6 @@ import { FormattingModule } from '@app/core/formatting.module';
|
||||||
RecentVisitedActivityComponent,
|
RecentVisitedActivityComponent,
|
||||||
RecentEditedActivityComponent,
|
RecentEditedActivityComponent,
|
||||||
DraftsComponent,
|
DraftsComponent,
|
||||||
DmpInfoCounterComponent,
|
|
||||||
DatasetInfoCounterComponent,
|
DatasetInfoCounterComponent,
|
||||||
RecentEditedDatasetActivityComponent,
|
RecentEditedDatasetActivityComponent,
|
||||||
RecentEditedDmpActivityComponent
|
RecentEditedDmpActivityComponent
|
||||||
|
|
|
@ -1,71 +0,0 @@
|
||||||
.listing-item {
|
|
||||||
background-color: #ffffff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon {
|
|
||||||
/* color: rgb(112, 173, 71); */
|
|
||||||
color: #08bd63;
|
|
||||||
/* color: #92d050; */
|
|
||||||
}
|
|
||||||
|
|
||||||
.gray-container {
|
|
||||||
letter-spacing: 5px;
|
|
||||||
color: #aaaaaa;
|
|
||||||
}
|
|
||||||
|
|
||||||
.container-header {
|
|
||||||
display: flex;
|
|
||||||
align-items: baseline;
|
|
||||||
margin-top: 0px;
|
|
||||||
padding-top: 10px;
|
|
||||||
text-transform: uppercase;
|
|
||||||
}
|
|
||||||
|
|
||||||
.container-header p {
|
|
||||||
letter-spacing: 5px;
|
|
||||||
color: #aaaaaa;
|
|
||||||
margin-bottom: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* .container-header :hover {
|
|
||||||
color: #4687e6;
|
|
||||||
} */
|
|
||||||
|
|
||||||
.about-item {
|
|
||||||
display: flex;
|
|
||||||
flex-wrap: wrap;
|
|
||||||
}
|
|
||||||
|
|
||||||
.about-item .title {
|
|
||||||
margin: 2px 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.about-item p {
|
|
||||||
margin-left: auto;
|
|
||||||
margin-bottom: 0px;
|
|
||||||
padding-top: 7px;
|
|
||||||
color: #aaaaaa;
|
|
||||||
}
|
|
||||||
|
|
||||||
.draft-icon {
|
|
||||||
color: #aaaaaa;
|
|
||||||
}
|
|
||||||
|
|
||||||
.more-horiz {
|
|
||||||
font-size: 28px;
|
|
||||||
color: #aaaaaa;
|
|
||||||
}
|
|
||||||
|
|
||||||
hr {
|
|
||||||
margin: 0.6em 0em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.date {
|
|
||||||
display: flex;
|
|
||||||
}
|
|
||||||
|
|
||||||
.date p {
|
|
||||||
margin-left: auto;
|
|
||||||
margin-bottom: 0em;
|
|
||||||
color: #aaaaaa;
|
|
||||||
}
|
|
|
@ -1,32 +0,0 @@
|
||||||
<div class="listing-item">
|
|
||||||
<div class="col" (click)="itemClicked()">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-12 gray-container container-header">
|
|
||||||
<p (click)="$event.stopImmediatePropagation(); grantClicked(dmp.grantId)">
|
|
||||||
{{dmp.grantAbbreviation}}</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-12 about-item">
|
|
||||||
<mat-icon class="icon">radio_button_checked</mat-icon>
|
|
||||||
<h4 class="title">{{dmp.label}}</h4>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-12">
|
|
||||||
<p class="mt-1 mb-2">{{dmp.description}}</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-12 about-item">
|
|
||||||
<div *ngFor="let profile of dmp.associatedProfiles" class="pt-1">
|
|
||||||
<div matTooltip="{{profile.label}}" class="chip ml-2 mr-2">{{profile.label}}</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<hr>
|
|
||||||
<div class="date">
|
|
||||||
<p>{{'DMP-BLUEPRINT-LISTING.COLUMNS.PUBLISHED' | translate}} {{dmp.creationTime | date: "shortDate"}}</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
|
@ -1,28 +0,0 @@
|
||||||
import { Component, OnInit, Input, EventEmitter, Output } from '@angular/core';
|
|
||||||
import { Router } from '@angular/router';
|
|
||||||
import { DmpListingModel } from '../../../core/model/dmp/dmp-listing';
|
|
||||||
|
|
||||||
@Component({
|
|
||||||
selector: 'app-dmp-info-counter',
|
|
||||||
templateUrl: './dmp-info-counter.component.html',
|
|
||||||
styleUrls: ['./dmp-info-counter.component.css']
|
|
||||||
})
|
|
||||||
export class DmpInfoCounterComponent implements OnInit {
|
|
||||||
|
|
||||||
@Input() dmp: DmpListingModel;
|
|
||||||
@Output() onClick: EventEmitter<DmpListingModel> = new EventEmitter();
|
|
||||||
|
|
||||||
constructor(public router: Router) { }
|
|
||||||
|
|
||||||
ngOnInit() {
|
|
||||||
}
|
|
||||||
|
|
||||||
itemClicked() {
|
|
||||||
this.onClick.emit(this.dmp);
|
|
||||||
}
|
|
||||||
|
|
||||||
grantClicked(grantId: String) {
|
|
||||||
// this.router.navigate(['/datasets/publicEdit/' + grantId]);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -11,7 +11,6 @@ import { DmpService } from "../../../../core/services/dmp/dmp.service";
|
||||||
import { Inject } from "@angular/core";
|
import { Inject } from "@angular/core";
|
||||||
import { DmpModel } from "../../../../core/model/dmp/dmp";
|
import { DmpModel } from "../../../../core/model/dmp/dmp";
|
||||||
import { TranslateService } from "@ngx-translate/core";
|
import { TranslateService } from "@ngx-translate/core";
|
||||||
import { DmpAssociatedProfileModel } from '../../../../core/model/dmp-blueprint/dmp-associated-profile';
|
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'dataset-copy-dialogue-component',
|
selector: 'dataset-copy-dialogue-component',
|
||||||
|
@ -65,10 +64,6 @@ export class DatasetCopyDialogueComponent {
|
||||||
return this.dmpService.getPaged(dmpDataTableRequest, "profiles").pipe(map(x => x.data));
|
return this.dmpService.getPaged(dmpDataTableRequest, "profiles").pipe(map(x => x.data));
|
||||||
}
|
}
|
||||||
|
|
||||||
existsDatasetDescriptionTemplate(associatedProfiles: DmpAssociatedProfileModel[]): boolean {
|
|
||||||
return associatedProfiles.some((profile) => profile.id === this.data.datasetProfileId);
|
|
||||||
}
|
|
||||||
|
|
||||||
datasetProfileValidate() {
|
datasetProfileValidate() {
|
||||||
return this.dmpService.getSingle(this.data.formControl.value.id).pipe(map(result => result as DmpModel),
|
return this.dmpService.getSingle(this.data.formControl.value.id).pipe(map(result => result as DmpModel),
|
||||||
map(result => {
|
map(result => {
|
||||||
|
|
|
@ -2,7 +2,6 @@ import { UntypedFormBuilder, UntypedFormGroup, Validators } from "@angular/forms
|
||||||
import { DmpBlueprintExtraFieldDataType } from '@app/core/common/enum/dmp-blueprint-field-type';
|
import { DmpBlueprintExtraFieldDataType } from '@app/core/common/enum/dmp-blueprint-field-type';
|
||||||
import { DmpBlueprintType } from '@app/core/common/enum/dmp-blueprint-type';
|
import { DmpBlueprintType } from '@app/core/common/enum/dmp-blueprint-type';
|
||||||
import { DmpStatus } from '@app/core/common/enum/dmp-status';
|
import { DmpStatus } from '@app/core/common/enum/dmp-status';
|
||||||
import { DmpBlueprintField } from '@app/core/model/dmp-blueprint/dmp-blueprint-field';
|
|
||||||
import { DmpModel } from '@app/core/model/dmp/dmp';
|
import { DmpModel } from '@app/core/model/dmp/dmp';
|
||||||
import { DmpDynamicField } from '@app/core/model/dmp/dmp-dynamic-field';
|
import { DmpDynamicField } from '@app/core/model/dmp/dmp-dynamic-field';
|
||||||
import { DmpDynamicFieldDependency } from '@app/core/model/dmp/dmp-dynamic-field-dependency';
|
import { DmpDynamicFieldDependency } from '@app/core/model/dmp/dmp-dynamic-field-dependency';
|
||||||
|
@ -11,7 +10,6 @@ import { ResearcherModel } from '@app/core/model/researcher/researcher';
|
||||||
import { UserModel } from '@app/core/model/user/user';
|
import { UserModel } from '@app/core/model/user/user';
|
||||||
import { UserInfoListingModel } from '@app/core/model/user/user-info-listing';
|
import { UserInfoListingModel } from '@app/core/model/user/user-info-listing';
|
||||||
import { ValidJsonValidator } from '@app/library/auto-complete/auto-complete-custom-validator';
|
import { ValidJsonValidator } from '@app/library/auto-complete/auto-complete-custom-validator';
|
||||||
import { DmpBlueprintExternalAutoCompleteFieldDataEditorModel } from '@app/ui/admin/dmp-blueprint/editor/external-autocomplete/dmp-blueprint-external-autocomplete-field-editor.model';
|
|
||||||
import { FunderFormModel } from '@app/ui/dmp/editor/grant-tab/funder-form-model';
|
import { FunderFormModel } from '@app/ui/dmp/editor/grant-tab/funder-form-model';
|
||||||
import { GrantTabModel } from '@app/ui/dmp/editor/grant-tab/grant-tab-model';
|
import { GrantTabModel } from '@app/ui/dmp/editor/grant-tab/grant-tab-model';
|
||||||
import { ProjectFormModel } from '@app/ui/dmp/editor/grant-tab/project-form-model';
|
import { ProjectFormModel } from '@app/ui/dmp/editor/grant-tab/project-form-model';
|
||||||
|
@ -214,40 +212,3 @@ export class DmpDynamicFieldDependencyEditorModel {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export class DmpDefinitionFieldEditorModel implements DmpBlueprintField {
|
|
||||||
public id: string;
|
|
||||||
public type: DmpBlueprintType;
|
|
||||||
public dataType: DmpBlueprintExtraFieldDataType;
|
|
||||||
public required = false;
|
|
||||||
public label: string;
|
|
||||||
public value: any;
|
|
||||||
public externalAutocomplete?: DmpBlueprintExternalAutoCompleteFieldDataEditorModel;
|
|
||||||
|
|
||||||
fromModel(item: DmpBlueprintField): DmpDefinitionFieldEditorModel {
|
|
||||||
this.type = item.type;
|
|
||||||
this.dataType = item.dataType;
|
|
||||||
this.required = item.required;
|
|
||||||
this.label = item.label;
|
|
||||||
this.id = item.id;
|
|
||||||
this.value = item.value;
|
|
||||||
if (item.externalAutocomplete)
|
|
||||||
this.externalAutocomplete = new DmpBlueprintExternalAutoCompleteFieldDataEditorModel().fromModel(item.externalAutocomplete);
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
buildForm(): UntypedFormGroup {
|
|
||||||
const formGroup = new UntypedFormBuilder().group({
|
|
||||||
type: [this.type],
|
|
||||||
id: [this.id],
|
|
||||||
dataType: [this.dataType],
|
|
||||||
required: [this.required],
|
|
||||||
label: [this.label],
|
|
||||||
value: [this.value]
|
|
||||||
});
|
|
||||||
if (this.externalAutocomplete) {
|
|
||||||
formGroup.addControl('externalAutocomplete', this.externalAutocomplete.buildForm());
|
|
||||||
}
|
|
||||||
return formGroup;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
Loading…
Reference in New Issue