interactive-mining/interactive-mining-angular-.../src/app/manageprofiles/manageprofiles.component.ts

266 lines
10 KiB
TypeScript
Raw Normal View History

import {Component, OnInit} from '@angular/core';
2018-02-28 12:41:06 +01:00
import {ManageprofilesService} from './manageprofiles.service';
2018-03-17 14:05:55 +01:00
import {ActivatedRoute, Router} from '@angular/router';
2018-02-28 12:41:06 +01:00
import UIkit from 'uikit';
import {PaginationInstance} from 'ngx-pagination';
import {ProfileMetadata} from './profile-metadata';
import {ExampleProfilesMetadata} from './example-profiles-metadata';
2018-11-02 18:31:11 +01:00
import {UsersMetadata} from './users-metadata';
import {saveFile} from '../util';
2018-02-28 12:41:06 +01:00
@Component({
selector: 'app-manageprofiles',
2019-05-31 14:30:55 +02:00
templateUrl: './manageprofiles.component.html'
2018-02-28 12:41:06 +01:00
})
export class ManageprofilesComponent implements OnInit {
// TODO profile table sorting: https://ciphertrick.com/2017/08/01/search-sort-pagination-in-angular/
2018-11-02 18:31:11 +01:00
public allUsersProfiles: Array<UsersMetadata> = [];
public statusValues = [
2019-05-29 16:02:54 +02:00
'Processing',
2018-11-02 18:31:11 +01:00
'Evaluating',
'On Beta'
];
2019-05-29 16:02:54 +02:00
public communityId = '';
2018-11-02 18:31:11 +01:00
public isCommunityManager = false;
2018-02-28 12:41:06 +01:00
public userSavedProfiles: Array<ProfileMetadata> = [];
public exampleProfiles: Array<ExampleProfilesMetadata> = [];
2019-05-31 14:30:55 +02:00
public allProfiles: PaginationInstance = {
id: 'all',
itemsPerPage: 5,
currentPage: 1
};
public userProfiles: PaginationInstance = {
id: 'user',
2018-02-28 12:41:06 +01:00
itemsPerPage: 5,
currentPage: 1
};
2019-05-29 16:02:54 +02:00
public pending = false;
2018-03-17 14:05:55 +01:00
constructor(private manageProfilesService: ManageprofilesService, private route: ActivatedRoute, private router: Router) {
}
2018-02-28 12:41:06 +01:00
ngOnInit() {
2018-11-02 18:31:11 +01:00
this.route.queryParams
.subscribe(
params => {
2019-05-29 16:02:54 +02:00
this.communityId = params['communityId'];
2019-05-31 14:30:55 +02:00
this.initialServerHandshake(this.communityId);
2018-11-02 18:31:11 +01:00
});
this.isCommunityManager = this.manageProfilesService.isCommunityManager === 'true';
2018-02-28 12:41:06 +01:00
}
2019-05-31 14:30:55 +02:00
private initialServerHandshake(communityId: string): void {
2018-11-02 18:31:11 +01:00
this.manageProfilesService.initialServerHandshake(communityId)
.subscribe(() => {
2018-11-02 18:31:11 +01:00
if (this.isCommunityManager) {
this.getAllUsersProfiles();
}
2018-02-28 12:41:06 +01:00
this.getSavedProfiles();
this.getExampleProfiles();
});
}
2019-05-31 14:30:55 +02:00
private getAllUsersProfiles(): void {
2018-11-02 18:31:11 +01:00
this.manageProfilesService.getUsersProfiles()
.subscribe(res => {
if (res) {
this.allUsersProfiles = res;
}
});
}
2019-05-31 14:30:55 +02:00
private getSavedProfiles(): void {
this.manageProfilesService.getSavedProfiles()
.subscribe(res => {
if (res) {
this.userSavedProfiles = res;
}
});
}
private getExampleProfiles(): void {
this.manageProfilesService.getExampleProfiles()
.subscribe(res => {
this.exampleProfiles = res;
});
2019-05-31 14:30:55 +02:00
}
private clearLocalStorage(): void {
// clear localstorage values
localStorage.removeItem('grants');
localStorage.removeItem('profilename');
localStorage.removeItem('profileid');
localStorage.removeItem('docname');
localStorage.removeItem('docsnumber');
localStorage.removeItem('concepts');
localStorage.removeItem('poswords');
localStorage.removeItem('negwords');
localStorage.removeItem('contextprev');
localStorage.removeItem('contextmiddle');
localStorage.removeItem('contextnext');
localStorage.removeItem('wordssplitnum');
localStorage.removeItem('punctuation');
localStorage.removeItem('stopwords');
localStorage.removeItem('lowercase');
localStorage.removeItem('stemming');
localStorage.removeItem('documentarea');
}
2018-11-02 18:31:11 +01:00
loadUserProfileAdmin(userId: string, profileId: string, name: string): void {
this.manageProfilesService.loadUserProfileAdmin(userId, profileId)
.subscribe(res => {
// clear localstorage values
this.clearLocalStorage();
// store to client all profile data
localStorage.setItem('docname', res.docname);
localStorage.setItem('docsnumber', res.docsnumber);
localStorage.setItem('concepts', res.concepts);
localStorage.setItem('poswords', JSON.stringify(res.poswords));
localStorage.setItem('negwords', JSON.stringify(res.negwords));
localStorage.setItem('contextprev', res.contextprev);
localStorage.setItem('contextmiddle', res.contextmiddle);
localStorage.setItem('contextnext', res.contextnext);
localStorage.setItem('wordssplitnum', res.wordssplitnum);
localStorage.setItem('punctuation', res.punctuation);
localStorage.setItem('stopwords', res.stopwords);
localStorage.setItem('lowercase', res.lowercase);
localStorage.setItem('stemming', res.stemming);
2018-11-28 17:55:22 +01:00
localStorage.setItem('documentarea', res.documentarea);
2018-11-02 18:31:11 +01:00
this.router.navigate(['../upload-content'], {relativeTo: this.route, queryParamsHandling: 'preserve'});
});
}
downloadUserProfileAdmin(userId: string, profileId: string, profileName: string): void {
this.manageProfilesService.downloadUserProfileAdmin(userId, profileId)
.subscribe(res => {
saveFile(res, profileName.replace(/ /g, '_') + '.oamp');
});
}
onStatusChange(userId: string, profileId: string, status: string): void {
this.manageProfilesService.updateProfileStatus(userId, profileId, status)
.subscribe();
}
2018-02-28 12:41:06 +01:00
loadSavedProfile(id: string, name: string): void {
this.manageProfilesService.loadSavedProfile(id)
.subscribe(res => {
// clear localstorage values
this.clearLocalStorage();
// store to client all profile data
localStorage.setItem('profilename', name);
localStorage.setItem('profileid', id);
localStorage.setItem('docname', res.docname);
localStorage.setItem('docsnumber', res.docsnumber);
localStorage.setItem('concepts', res.concepts);
localStorage.setItem('poswords', JSON.stringify(res.poswords));
localStorage.setItem('negwords', JSON.stringify(res.negwords));
localStorage.setItem('contextprev', res.contextprev);
localStorage.setItem('contextmiddle', res.contextmiddle);
localStorage.setItem('contextnext', res.contextnext);
localStorage.setItem('wordssplitnum', res.wordssplitnum);
localStorage.setItem('punctuation', res.punctuation);
localStorage.setItem('stopwords', res.stopwords);
2018-03-22 22:32:33 +01:00
localStorage.setItem('lowercase', res.lowercase);
2018-03-23 15:02:35 +01:00
localStorage.setItem('stemming', res.stemming);
2018-11-28 17:55:22 +01:00
localStorage.setItem('documentarea', res.documentarea);
2018-03-19 13:44:18 +01:00
this.router.navigate(['../upload-content'], {relativeTo: this.route, queryParamsHandling: 'preserve'});
2018-02-28 12:41:06 +01:00
});
}
downloadProfile(profileId: string, profileName: string): void {
this.manageProfilesService.downloadProfile(profileId)
.subscribe(res => {
saveFile(res, profileName.replace(/ /g, '_') + '.oamp');
});
}
deleteProfilePrompt(index) {
UIkit.modal.confirm('<span class="uk-text-bold uk-text-danger">' +
'Are you sure you want to delete this profile? This action cannot be undone!</span>', {escClose: true}).then(() => {
this.manageProfilesService.deleteProfile(this.userSavedProfiles[index].id)
.subscribe(() => this.userSavedProfiles.splice(index, 1));
2018-02-28 12:41:06 +01:00
});
}
createNewProfile(): void {
// clear localstorage values
this.clearLocalStorage();
2018-02-28 12:41:06 +01:00
this.manageProfilesService.createNewProfile()
2018-03-19 13:44:18 +01:00
.subscribe(() => this.router.navigate(['../upload-content'], {relativeTo: this.route, queryParamsHandling: 'preserve'}));
2018-02-28 12:41:06 +01:00
}
fileChangeUpload(event): void {
// clear localstorage values
this.clearLocalStorage();
2018-02-28 12:41:06 +01:00
const fileList: FileList = event.target.files;
if (fileList && fileList.length === 1) {
const file: File = fileList[0];
// get new profile data
this.manageProfilesService.uploadFile(file)
.subscribe(res => {
localStorage.setItem('concepts', res.concepts);
localStorage.setItem('poswords', JSON.stringify(res.poswords));
localStorage.setItem('negwords', JSON.stringify(res.negwords));
localStorage.setItem('contextprev', res.contextprev);
localStorage.setItem('contextmiddle', res.contextmiddle);
localStorage.setItem('contextnext', res.contextnext);
localStorage.setItem('wordssplitnum', res.wordssplitnum);
localStorage.setItem('punctuation', res.punctuation);
localStorage.setItem('stopwords', res.stopwords);
2018-03-22 22:32:33 +01:00
localStorage.setItem('lowercase', res.lowercase);
2018-03-23 15:02:35 +01:00
localStorage.setItem('stemming', res.stemming);
2018-11-28 17:55:22 +01:00
localStorage.setItem('documentarea', res.documentarea);
2018-03-19 13:44:18 +01:00
this.router.navigate(['../upload-content'], {relativeTo: this.route, queryParamsHandling: 'preserve'});
2018-02-28 12:41:06 +01:00
});
}
}
2019-05-29 16:02:54 +02:00
notifyProfile(profile: ProfileMetadata ): void {
UIkit.modal.confirm('<span class="uk-text-bold">' +
2019-05-31 14:30:55 +02:00
'A notification will be sent to the OpenAIRE Mining experts, ' +
'that your profile is in its final version!</br></br>' +
'Are you sure you want to proceed?</span>', {escClose: true}).then(() => {
2019-05-29 16:02:54 +02:00
this.pending = true;
this.manageProfilesService.notifyProfile(this.communityId, profile.id)
.subscribe(res => {
profile.notified = 1;
this.pending = false;
});
});
}
2018-02-28 12:41:06 +01:00
loadExampleProfile(name: string): void {
// clear localstorage values
this.clearLocalStorage();
2018-02-28 12:41:06 +01:00
// get new profile data
this.manageProfilesService.loadExampleProfile(name)
.subscribe(res => {
localStorage.setItem('concepts', res.concepts);
2018-03-02 11:07:03 +01:00
localStorage.setItem('docname', res.docname);
localStorage.setItem('docsnumber', res.docsnumber);
2018-02-28 12:41:06 +01:00
localStorage.setItem('poswords', JSON.stringify(res.poswords));
localStorage.setItem('negwords', JSON.stringify(res.negwords));
localStorage.setItem('contextprev', res.contextprev);
localStorage.setItem('contextmiddle', res.contextmiddle);
localStorage.setItem('contextnext', res.contextnext);
localStorage.setItem('wordssplitnum', res.wordssplitnum);
localStorage.setItem('punctuation', res.punctuation);
localStorage.setItem('stopwords', res.stopwords);
2018-03-22 22:32:33 +01:00
localStorage.setItem('lowercase', res.lowercase);
2018-03-23 15:02:35 +01:00
localStorage.setItem('stemming', res.stemming);
2018-11-28 17:55:22 +01:00
localStorage.setItem('documentarea', res.documentarea);
2018-03-19 13:44:18 +01:00
this.router.navigate(['../upload-content'], {relativeTo: this.route, queryParamsHandling: 'preserve'});
2018-02-28 12:41:06 +01:00
});
}
}