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 = []; public statusValues = [ 'Saved', 'Evaluating', 'On Beta' ]; public isCommunityManager = false; public userSavedProfiles: Array = []; public exampleProfiles: Array = []; 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('' + 'Are you sure you want to delete this profile? This action cannot be undone!', {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'); } }