2018-03-10 18:32:45 +01:00
|
|
|
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-03-10 18:32:45 +01:00
|
|
|
import {saveFile} from '../util';
|
2018-02-28 12:41:06 +01:00
|
|
|
|
|
|
|
@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 userSavedProfiles: Array<ProfileMetadata> = [];
|
|
|
|
public exampleProfiles: Array<ExampleProfilesMetadata> = [];
|
|
|
|
|
|
|
|
public config: PaginationInstance = {
|
|
|
|
id: 'custom',
|
|
|
|
itemsPerPage: 5,
|
|
|
|
currentPage: 1
|
|
|
|
};
|
|
|
|
|
2018-03-17 14:05:55 +01:00
|
|
|
constructor(private manageProfilesService: ManageprofilesService, private route: ActivatedRoute, private router: Router) {
|
2018-03-10 18:32:45 +01:00
|
|
|
}
|
2018-02-28 12:41:06 +01:00
|
|
|
|
|
|
|
ngOnInit() {
|
2018-03-10 18:32:45 +01:00
|
|
|
this.initialServerhandshake();
|
2018-02-28 12:41:06 +01:00
|
|
|
}
|
|
|
|
|
2018-03-10 18:32:45 +01:00
|
|
|
initialServerhandshake(): void {
|
|
|
|
this.manageProfilesService.initialServerHandshake()
|
|
|
|
.subscribe(() => {
|
2018-02-28 12:41:06 +01:00
|
|
|
this.getSavedProfiles();
|
|
|
|
this.getExampleProfiles();
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
getSavedProfiles(): void {
|
|
|
|
this.manageProfilesService.getSavedProfiles()
|
2018-03-08 11:19:06 +01:00
|
|
|
.subscribe(res => {
|
|
|
|
if (res) {
|
|
|
|
this.userSavedProfiles = res;
|
|
|
|
}
|
|
|
|
});
|
2018-02-28 12:41:06 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
loadSavedProfile(id: string, name: string): void {
|
|
|
|
this.manageProfilesService.loadSavedProfile(id)
|
|
|
|
.subscribe(res => {
|
2018-03-10 18:32:45 +01:00
|
|
|
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('precision', res.precision);
|
|
|
|
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('lettercase', res.lettercase);
|
2018-03-17 14:05:55 +01:00
|
|
|
this.router.navigate(['../upload-content'], {relativeTo: this.route});
|
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(() => {
|
2018-03-10 18:32:45 +01:00
|
|
|
this.manageProfilesService.deleteProfile(this.userSavedProfiles[index].id)
|
|
|
|
.subscribe(() => this.userSavedProfiles.splice(index, 1));
|
2018-02-28 12:41:06 +01:00
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
createNewProfile(): void {
|
2018-03-10 18:32:45 +01:00
|
|
|
// clear localstorage values
|
|
|
|
this.clearLocalStorage();
|
2018-02-28 12:41:06 +01:00
|
|
|
this.manageProfilesService.createNewProfile()
|
2018-03-17 14:05:55 +01:00
|
|
|
.subscribe(() => this.router.navigate(['../upload-content'], {relativeTo: this.route}));
|
2018-02-28 12:41:06 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
fileChangeUpload(event): void {
|
2018-03-10 18:32:45 +01:00
|
|
|
// 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 => {
|
|
|
|
console.log(res);
|
|
|
|
localStorage.setItem('precision', res.precision);
|
|
|
|
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('lettercase', res.lettercase);
|
2018-03-17 14:05:55 +01:00
|
|
|
this.router.navigate(['../upload-content'], {relativeTo: this.route});
|
2018-02-28 12:41:06 +01:00
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
getExampleProfiles(): void {
|
|
|
|
this.manageProfilesService.getExampleProfiles()
|
|
|
|
.subscribe(res => this.exampleProfiles = res);
|
|
|
|
}
|
|
|
|
|
|
|
|
loadExampleProfile(name: string): void {
|
2018-03-10 18:32:45 +01:00
|
|
|
// clear localstorage values
|
|
|
|
this.clearLocalStorage();
|
2018-02-28 12:41:06 +01:00
|
|
|
// get new profile data
|
|
|
|
this.manageProfilesService.loadExampleProfile(name)
|
|
|
|
.subscribe(res => {
|
|
|
|
console.log(res);
|
|
|
|
localStorage.setItem('precision', res.precision);
|
|
|
|
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);
|
|
|
|
localStorage.setItem('lettercase', res.lettercase);
|
2018-03-17 14:05:55 +01:00
|
|
|
this.router.navigate(['../upload-content'], {relativeTo: this.route});
|
2018-02-28 12:41:06 +01:00
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2018-03-10 18:32:45 +01:00
|
|
|
clearLocalStorage(): void {
|
|
|
|
// clear localstorage values
|
|
|
|
localStorage.removeItem('grants');
|
|
|
|
localStorage.removeItem('profilename');
|
|
|
|
localStorage.removeItem('profileid');
|
|
|
|
localStorage.removeItem('docname');
|
|
|
|
localStorage.removeItem('docsnumber');
|
|
|
|
localStorage.removeItem('precision');
|
|
|
|
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('lettercase');
|
|
|
|
}
|
|
|
|
|
2018-02-28 12:41:06 +01:00
|
|
|
}
|