243 lines
9.5 KiB
TypeScript
Executable File
243 lines
9.5 KiB
TypeScript
Executable File
import {Component, OnInit} from '@angular/core';
|
|
import {ManageprofilesService} from './manageprofiles.service';
|
|
import {ActivatedRoute, Router} from '@angular/router';
|
|
import UIkit from 'uikit';
|
|
import {PaginationInstance} from 'ngx-pagination';
|
|
import {ProfileMetadata} from './profile-metadata';
|
|
import {ExampleProfilesMetadata} from './example-profiles-metadata';
|
|
import {UsersMetadata} from './users-metadata';
|
|
import {saveFile} from '../util';
|
|
|
|
@Component({
|
|
selector: 'app-manageprofiles',
|
|
templateUrl: './manageprofiles.component.html',
|
|
styleUrls: ['./manageprofiles.component.css']
|
|
})
|
|
export class ManageprofilesComponent implements OnInit {
|
|
|
|
// TODO profile table sorting: https://ciphertrick.com/2017/08/01/search-sort-pagination-in-angular/
|
|
|
|
public allUsersProfiles: Array<UsersMetadata> = [];
|
|
public statusValues = [
|
|
'Saved',
|
|
'Evaluating',
|
|
'On Beta'
|
|
];
|
|
public isCommunityManager = false;
|
|
|
|
public userSavedProfiles: Array<ProfileMetadata> = [];
|
|
public exampleProfiles: Array<ExampleProfilesMetadata> = [];
|
|
|
|
public config: PaginationInstance = {
|
|
id: 'custom',
|
|
itemsPerPage: 5,
|
|
currentPage: 1
|
|
};
|
|
|
|
constructor(private manageProfilesService: ManageprofilesService, private route: ActivatedRoute, private router: Router) {
|
|
}
|
|
|
|
ngOnInit() {
|
|
this.route.queryParams
|
|
.subscribe(
|
|
params => {
|
|
console.log('queryParams', params['communityId']);
|
|
this.initialServerhandshake(params['communityId']);
|
|
});
|
|
this.isCommunityManager = this.manageProfilesService.isCommunityManager === 'true';
|
|
}
|
|
|
|
initialServerhandshake(communityId: string): void {
|
|
this.manageProfilesService.initialServerHandshake(communityId)
|
|
.subscribe(() => {
|
|
if (this.isCommunityManager) {
|
|
this.getAllUsersProfiles();
|
|
}
|
|
this.getSavedProfiles();
|
|
this.getExampleProfiles();
|
|
});
|
|
}
|
|
|
|
getAllUsersProfiles(): void {
|
|
this.manageProfilesService.getUsersProfiles()
|
|
.subscribe(res => {
|
|
if (res) {
|
|
this.allUsersProfiles = res;
|
|
}
|
|
});
|
|
}
|
|
|
|
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);
|
|
localStorage.setItem('documentarea', res.documentarea);
|
|
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();
|
|
}
|
|
|
|
getSavedProfiles(): void {
|
|
this.manageProfilesService.getSavedProfiles()
|
|
.subscribe(res => {
|
|
if (res) {
|
|
this.userSavedProfiles = res;
|
|
}
|
|
});
|
|
}
|
|
|
|
loadSavedProfile(id: string, name: string): void {
|
|
this.manageProfilesService.loadSavedProfile(id)
|
|
.subscribe(res => {
|
|
console.log(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);
|
|
localStorage.setItem('lowercase', res.lowercase);
|
|
localStorage.setItem('stemming', res.stemming);
|
|
localStorage.setItem('documentarea', res.documentarea);
|
|
this.router.navigate(['../upload-content'], {relativeTo: this.route, queryParamsHandling: 'preserve'});
|
|
});
|
|
}
|
|
|
|
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));
|
|
});
|
|
}
|
|
|
|
createNewProfile(): void {
|
|
// clear localstorage values
|
|
this.clearLocalStorage();
|
|
this.manageProfilesService.createNewProfile()
|
|
.subscribe(() => this.router.navigate(['../upload-content'], {relativeTo: this.route, queryParamsHandling: 'preserve'}));
|
|
}
|
|
|
|
fileChangeUpload(event): void {
|
|
// clear localstorage values
|
|
this.clearLocalStorage();
|
|
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 => {
|
|
console.log(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);
|
|
localStorage.setItem('lowercase', res.lowercase);
|
|
localStorage.setItem('stemming', res.stemming);
|
|
localStorage.setItem('documentarea', res.documentarea);
|
|
this.router.navigate(['../upload-content'], {relativeTo: this.route, queryParamsHandling: 'preserve'});
|
|
});
|
|
}
|
|
}
|
|
|
|
getExampleProfiles(): void {
|
|
this.manageProfilesService.getExampleProfiles()
|
|
.subscribe(res => this.exampleProfiles = res);
|
|
}
|
|
|
|
loadExampleProfile(name: string): void {
|
|
// clear localstorage values
|
|
this.clearLocalStorage();
|
|
// get new profile data
|
|
this.manageProfilesService.loadExampleProfile(name)
|
|
.subscribe(res => {
|
|
console.log(res);
|
|
localStorage.setItem('concepts', res.concepts);
|
|
localStorage.setItem('docname', res.docname);
|
|
localStorage.setItem('docsnumber', res.docsnumber);
|
|
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);
|
|
localStorage.setItem('documentarea', res.documentarea);
|
|
this.router.navigate(['../upload-content'], {relativeTo: this.route, queryParamsHandling: 'preserve'});
|
|
});
|
|
}
|
|
|
|
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');
|
|
}
|
|
|
|
}
|