2023-03-08 23:26:06 +01:00
|
|
|
import {ChangeDetectorRef, Component, OnInit, ViewChild} from '@angular/core';
|
2021-05-19 13:40:29 +02:00
|
|
|
import {RemoveContentProvidersComponent} from './remove-content-providers.component';
|
|
|
|
import {Title} from '@angular/platform-browser';
|
2022-07-02 13:45:34 +02:00
|
|
|
import {
|
|
|
|
FullScreenModalComponent
|
|
|
|
} from "../../openaireLibrary/utils/modal/full-screen-modal/full-screen-modal.component";
|
2021-05-19 13:40:29 +02:00
|
|
|
import {StringUtils} from "../../openaireLibrary/utils/string-utils.class";
|
|
|
|
import {EnvProperties} from "../../openaireLibrary/utils/properties/env-properties";
|
|
|
|
import {properties} from "../../../environments/environment";
|
|
|
|
import {Subscriber} from "rxjs";
|
2022-07-02 13:45:34 +02:00
|
|
|
import {CommunityInfo} from "../../openaireLibrary/connect/community/communityInfo";
|
|
|
|
import {CommunityService} from "../../openaireLibrary/connect/community/community.service";
|
2022-07-04 20:45:20 +02:00
|
|
|
import {ContentProvider} from "../../openaireLibrary/utils/entities/contentProvider";
|
|
|
|
import {OpenaireEntities} from "../../openaireLibrary/utils/properties/searchFields";
|
|
|
|
import {CriteriaComponent} from "./criteria/criteria.component";
|
2023-03-08 23:26:06 +01:00
|
|
|
import {NotificationHandler} from "../../openaireLibrary/utils/notification-handler";
|
|
|
|
import {ManageCommunityContentProvidersService} from "../../services/manageContentProviders.service";
|
2021-05-19 13:40:29 +02:00
|
|
|
|
|
|
|
@Component({
|
|
|
|
selector: 'manage-content-providers',
|
|
|
|
template: `
|
2022-07-04 20:45:20 +02:00
|
|
|
<remove-content-providers #removeContentProviders (addContentProviders)="openAddContentProviders()"
|
|
|
|
[communityContentProviders]="communityContentProviders"
|
2022-07-13 19:26:10 +02:00
|
|
|
[loading]="showLoadingInRemove" [community]="community"
|
2022-07-04 20:45:20 +02:00
|
|
|
(editCriteria)="openCriteria($event)"
|
2024-03-15 14:58:15 +01:00
|
|
|
|
2022-07-04 10:53:55 +02:00
|
|
|
(communityContentProvidersChanged)="communityContentProvidersChanged($event)">
|
2021-05-19 13:40:29 +02:00
|
|
|
</remove-content-providers>
|
2022-07-04 20:45:20 +02:00
|
|
|
<fs-modal #addContentProvidersModal>
|
2023-03-08 23:26:06 +01:00
|
|
|
<add-content-providers #addContentProviders [communityContentProviders]="communityContentProviders"
|
|
|
|
[community]="community"
|
2022-07-04 10:53:55 +02:00
|
|
|
(communityContentProvidersChanged)="communityContentProvidersChanged($event)"></add-content-providers>
|
2021-05-19 13:40:29 +02:00
|
|
|
</fs-modal>
|
2024-03-15 14:58:15 +01:00
|
|
|
<fs-modal #filtersModal (okEmitter)="saveCriteria()" (cancelEmitter)="criteria.reset(); depositReset();"
|
2024-03-28 11:37:00 +01:00
|
|
|
[okButtonDisabled]="(criteria && criteria.disabled && !depositInfoChanged)">
|
2023-03-08 23:26:06 +01:00
|
|
|
<div class="uk-container uk-container-large">
|
2024-03-28 11:37:00 +01:00
|
|
|
<mat-slide-toggle [checked]="enabled" (change)="enabled = !enabled; depositInfoChanged = true;"></mat-slide-toggle>
|
2024-03-15 14:58:15 +01:00
|
|
|
<label class="uk-margin-medium-top uk-margin-small-left ">Content source</label>
|
|
|
|
<br>
|
2024-03-28 11:37:00 +01:00
|
|
|
<mat-slide-toggle [checked]="deposit" (change)="deposit = !deposit; depositInfoChanged = true;"></mat-slide-toggle>
|
2024-03-15 14:58:15 +01:00
|
|
|
<label class="uk-margin-medium-top uk-margin-small-left ">Suggest for deposit</label>
|
|
|
|
<div class="uk-width-1-1 uk-margin-medium-top" input placeholder="Type a message or instruction for researchers about deposition in this datasource"
|
2024-03-28 11:37:00 +01:00
|
|
|
[value]="message" (valueChange)="message=$event; depositInfoChanged = true;">
|
2024-03-15 14:58:15 +01:00
|
|
|
</div>
|
2024-03-28 11:37:00 +01:00
|
|
|
<div class="uk-text-center uk-text-bold uk-text-large uk-margin-medium-top">Content filters</div>
|
2024-03-15 14:58:15 +01:00
|
|
|
<criteria #criteria *ngIf="dataProvider" [height]="filtersModal.bodyHeight - 200"
|
2023-03-10 16:15:26 +01:00
|
|
|
[selectionCriteria]="dataProvider.selectioncriteria">
|
|
|
|
<div no-criteria>
|
|
|
|
<h5 class="uk-margin-small-bottom">No Filters for {{dataProvider.officialname}} yet</h5>
|
|
|
|
<i class="uk-display-block">If no Filters are specified, all {{openaireEntities.RESULTS | lowercase}} of this {{openaireEntities.DATASOURCE | lowercase}} will be included in your
|
|
|
|
{{openaireEntities.COMMUNITY | lowercase}}.
|
|
|
|
</i>
|
|
|
|
</div>
|
|
|
|
</criteria>
|
2022-07-04 20:45:20 +02:00
|
|
|
</div>
|
|
|
|
</fs-modal>
|
2021-05-19 13:40:29 +02:00
|
|
|
`
|
|
|
|
})
|
|
|
|
|
|
|
|
export class ManageContentProvidersComponent implements OnInit {
|
2022-07-04 20:45:20 +02:00
|
|
|
communityContentProviders: ContentProvider[] = [];
|
2021-05-19 13:40:29 +02:00
|
|
|
@ViewChild(RemoveContentProvidersComponent) removeContentProvidersComponent: RemoveContentProvidersComponent;
|
2022-07-04 20:45:20 +02:00
|
|
|
@ViewChild('criteria') criteria: CriteriaComponent;
|
|
|
|
@ViewChild('addContentProvidersModal', { static: true }) addContentProvidersModal: FullScreenModalComponent;
|
|
|
|
@ViewChild('filtersModal', { static: true }) filtersModal: FullScreenModalComponent;
|
2024-02-28 13:46:29 +01:00
|
|
|
@ViewChild('depositModal', { static: true }) depositModal: FullScreenModalComponent;
|
2021-05-19 13:40:29 +02:00
|
|
|
private subscriptions: any[] = [];
|
|
|
|
public showLoadingInRemove: boolean = true;
|
|
|
|
public body: string = "Send from page";
|
|
|
|
public properties: EnvProperties = properties;
|
2023-03-10 16:15:26 +01:00
|
|
|
public openaireEntities = OpenaireEntities;
|
2022-07-02 13:45:34 +02:00
|
|
|
public community: CommunityInfo;
|
2023-03-08 23:26:06 +01:00
|
|
|
public dataProvider: ContentProvider;
|
2024-02-28 13:46:29 +01:00
|
|
|
message = "";
|
|
|
|
deposit= false;
|
2024-03-15 14:58:15 +01:00
|
|
|
enabled = false;
|
2024-03-28 11:37:00 +01:00
|
|
|
depositInfoChanged =false;
|
2022-07-04 20:45:20 +02:00
|
|
|
constructor(private title: Title,
|
2023-03-08 23:26:06 +01:00
|
|
|
private cdr: ChangeDetectorRef,
|
|
|
|
private communityService: CommunityService,
|
|
|
|
private manageCommunityContentProvidersService: ManageCommunityContentProvidersService) {
|
2021-05-19 13:40:29 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
ngOnInit() {
|
2022-07-02 13:45:34 +02:00
|
|
|
this.subscriptions.push(this.communityService.getCommunityAsObservable().subscribe(community => {
|
|
|
|
this.community = community;
|
|
|
|
if (this.community) {
|
2022-07-04 20:45:20 +02:00
|
|
|
this.title.setTitle(this.community.shortTitle.toUpperCase() + ' | ' + OpenaireEntities.DATASOURCES);
|
2021-05-19 13:40:29 +02:00
|
|
|
this.body = "[Please write your message here]";
|
|
|
|
this.body = StringUtils.URIEncode(this.body);
|
|
|
|
}
|
|
|
|
}));
|
|
|
|
}
|
|
|
|
|
|
|
|
public ngOnDestroy() {
|
|
|
|
this.subscriptions.forEach(sub => {
|
|
|
|
if (sub instanceof Subscriber) {
|
|
|
|
sub.unsubscribe();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
2022-07-04 10:53:55 +02:00
|
|
|
|
|
|
|
public openAddContentProviders() {
|
2022-07-04 20:45:20 +02:00
|
|
|
this.addContentProvidersModal.title = "Search and Add " + OpenaireEntities.DATASOURCES;
|
|
|
|
this.addContentProvidersModal.okButtonText = "Done";
|
|
|
|
this.addContentProvidersModal.back = true;
|
|
|
|
this.addContentProvidersModal.okButton = true;
|
|
|
|
this.addContentProvidersModal.open();
|
|
|
|
}
|
|
|
|
|
|
|
|
public openCriteria(contentProvider: ContentProvider) {
|
2023-03-08 23:26:06 +01:00
|
|
|
this.dataProvider = contentProvider;
|
2024-03-15 14:58:15 +01:00
|
|
|
this.deposit = this.dataProvider.deposit;
|
|
|
|
this.message = this.dataProvider.message;
|
|
|
|
this.enabled = this.dataProvider.enabled;
|
2024-03-28 11:37:00 +01:00
|
|
|
this.depositInfoChanged = false;
|
|
|
|
this.filtersModal.title = 'Edit datasource options';
|
2022-07-04 20:45:20 +02:00
|
|
|
this.filtersModal.okButtonText = "Save";
|
|
|
|
this.filtersModal.back = true;
|
|
|
|
this.filtersModal.okButton = true;
|
2024-03-28 11:37:00 +01:00
|
|
|
|
2022-07-04 20:45:20 +02:00
|
|
|
this.filtersModal.open();
|
2023-03-08 23:26:06 +01:00
|
|
|
this.cdr.detectChanges();
|
2022-07-04 20:45:20 +02:00
|
|
|
}
|
|
|
|
public saveCriteria() {
|
2023-03-08 23:26:06 +01:00
|
|
|
let callback = (selectionCriteria): void => {
|
|
|
|
this.dataProvider.selectioncriteria = selectionCriteria;
|
2024-03-15 14:58:15 +01:00
|
|
|
this.dataProvider.deposit = this.deposit;
|
|
|
|
this.dataProvider.message = this.message;
|
|
|
|
this.dataProvider.enabled = this.enabled;
|
2023-03-08 23:26:06 +01:00
|
|
|
this.manageCommunityContentProvidersService.saveContentProvider(this.properties, this.dataProvider).subscribe(() => {
|
|
|
|
this.criteria.reset();
|
|
|
|
this.removeContentProvidersComponent.getCommunityContentProviders();
|
|
|
|
this.criteria.loading = false;
|
|
|
|
NotificationHandler.rise('Filters have been <b>successfully updated</b>');
|
|
|
|
}, error => {
|
|
|
|
this.criteria.loading = false;
|
|
|
|
this.criteria.handeError('An error has been occurred. Try again later!', error);
|
|
|
|
});
|
2022-07-04 20:45:20 +02:00
|
|
|
}
|
|
|
|
this.removeContentProvidersComponent.loading = true;
|
|
|
|
this.criteria.save(callback);
|
2021-05-19 13:40:29 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
public communityContentProvidersChanged($event) {
|
|
|
|
this.communityContentProviders = $event.value;
|
|
|
|
this.showLoadingInRemove = false;
|
2022-07-04 20:45:20 +02:00
|
|
|
if (this.addContentProvidersModal.isOpen) {
|
2021-05-19 13:40:29 +02:00
|
|
|
this.removeContentProvidersComponent.applyFilters();
|
|
|
|
}
|
|
|
|
}
|
2024-02-28 13:46:29 +01:00
|
|
|
|
|
|
|
|
|
|
|
depositReset(){
|
|
|
|
this.message = this.dataProvider.message;
|
|
|
|
this.deposit = this.dataProvider.deposit;
|
2024-03-15 14:58:15 +01:00
|
|
|
this.enabled = this.dataProvider.enabled;
|
2024-02-28 13:46:29 +01:00
|
|
|
}
|
2021-05-19 13:40:29 +02:00
|
|
|
}
|