252 lines
8.3 KiB
TypeScript
252 lines
8.3 KiB
TypeScript
import { Component, OnInit } from '@angular/core';
|
|
import {Settings} from './settings';
|
|
import {Phrase} from './phrase';
|
|
import {FormBuilder, FormGroup, Validators} from '@angular/forms';
|
|
import {ConfigurationService} from '../configuration.service';
|
|
import {ActivatedRoute, Router} from '@angular/router';
|
|
|
|
@Component({
|
|
selector: 'app-settings',
|
|
templateUrl: './settings.component.html',
|
|
styleUrls: ['./settings.component.css']
|
|
})
|
|
export class SettingsComponent implements OnInit {
|
|
|
|
private oldPrecision = 1;
|
|
public precision = 1;
|
|
|
|
public positivePhrasesArray: Array<Phrase> = [];
|
|
public negativePhrasesArray: Array<Phrase> = [];
|
|
public positiveSelectedRow = -1;
|
|
public negativeSelectedRow = -1;
|
|
|
|
positivePhraseForm: FormGroup;
|
|
negativePhraseForm: FormGroup;
|
|
|
|
public settings: Settings;
|
|
|
|
public lettercases = [
|
|
{ value: 'none', display: ' As it is' },
|
|
{ value: 'uppercase', display: ' UPPERCASE' },
|
|
{ value: 'lowercase', display: ' lowercase' }
|
|
];
|
|
|
|
constructor(private formBuilder: FormBuilder, private route: ActivatedRoute, private router: Router, private configurationService: ConfigurationService) { }
|
|
|
|
ngOnInit() {
|
|
this.positivePhraseForm = this.formBuilder.group({
|
|
phrase: [null, Validators.required],
|
|
weight: [null, [Validators.required, Validators.min(0), Validators.max(100)]],
|
|
});
|
|
this.negativePhraseForm = this.formBuilder.group({
|
|
phrase: [null, Validators.required],
|
|
weight: [null, [Validators.required, Validators.min(0), Validators.max(100)]],
|
|
});
|
|
this.precision = Number.parseInt(localStorage.getItem('precision'));
|
|
this.settings = {
|
|
docname: localStorage.getItem('docname'),
|
|
docsnumber: Number.parseInt(localStorage.getItem('docsnumber')),
|
|
profileid: localStorage.getItem('profileid'),
|
|
precision: Number.parseInt(localStorage.getItem('precision')),
|
|
poswords: localStorage.getItem('poswords'),
|
|
negwords: localStorage.getItem('negwords'),
|
|
contextprev: Number.parseInt(localStorage.getItem('contextprev')),
|
|
contextnext: Number.parseInt(localStorage.getItem('contextnext')),
|
|
wordssplitnum: Number.parseInt(localStorage.getItem('wordssplitnum')),
|
|
punctuation: Number.parseInt(localStorage.getItem('punctuation')),
|
|
stopwords: Number.parseInt(localStorage.getItem('stopwords')),
|
|
lettercase: localStorage.getItem('lettercase')
|
|
};
|
|
// show positive phrases
|
|
this.positivePhrasesArray.length = 0;
|
|
const posphrases = JSON.parse(localStorage.getItem('poswords'));
|
|
for (let key in posphrases) {
|
|
if (key) {
|
|
const content = new Phrase();
|
|
content.phrase = key;
|
|
content.weight = posphrases[key];
|
|
this.positivePhrasesArray.push(content);
|
|
}
|
|
}
|
|
// show negative phrases
|
|
this.negativePhrasesArray.length = 0;
|
|
const negphrases = JSON.parse(localStorage.getItem('negwords'));
|
|
for (let key in negphrases) {
|
|
if (key) {
|
|
const content = new Phrase();
|
|
content.phrase = key;
|
|
content.weight = negphrases[key];
|
|
this.positivePhrasesArray.push(content);
|
|
}
|
|
}
|
|
}
|
|
|
|
getSettingsFromLocalStorage(): Settings {
|
|
return this.settings = {
|
|
docname: localStorage.getItem('docname'),
|
|
docsnumber: Number.parseInt(localStorage.getItem('docsnumber')),
|
|
profileid: localStorage.getItem('profileid'),
|
|
precision: Number.parseInt(localStorage.getItem('precision')),
|
|
poswords: localStorage.getItem('poswords'),
|
|
negwords: localStorage.getItem('negwords'),
|
|
contextprev: Number.parseInt(localStorage.getItem('contextprev')),
|
|
contextnext: Number.parseInt(localStorage.getItem('contextnext')),
|
|
wordssplitnum: Number.parseInt(localStorage.getItem('wordssplitnum')),
|
|
punctuation: Number.parseInt(localStorage.getItem('punctuation')),
|
|
stopwords: Number.parseInt(localStorage.getItem('stopwords')),
|
|
lettercase: localStorage.getItem('lettercase')
|
|
};
|
|
}
|
|
|
|
phraseSubmit(positive: boolean): void {
|
|
const phrase = new Phrase();
|
|
if (positive) {
|
|
phrase.phrase = this.positivePhraseForm.get('phrase').value;
|
|
phrase.weight = this.positivePhraseForm.get('weight').value;
|
|
this.positivePhrasesArray.push(phrase);
|
|
this.positivePhraseForm.reset();
|
|
} else {
|
|
phrase.phrase = this.negativePhraseForm.get('phrase').value;
|
|
phrase.weight = this.negativePhraseForm.get('weight').value;
|
|
this.negativePhrasesArray.push(phrase);
|
|
this.negativePhraseForm.reset();
|
|
}
|
|
this.phrasesChanged(positive);
|
|
}
|
|
|
|
bulkPutPrhases(phrases: string, positive: boolean): void {
|
|
if (positive) {
|
|
localStorage.setItem('poswords', phrases);
|
|
this.positivePhrasesArray.length = 0;
|
|
const posphrases = JSON.parse(localStorage.getItem('poswords'));
|
|
for (let key in posphrases) {
|
|
if (key) {
|
|
const content = new Phrase();
|
|
content.phrase = key;
|
|
content.weight = posphrases[key];
|
|
this.positivePhrasesArray.push(content);
|
|
}
|
|
}
|
|
} else {
|
|
localStorage.setItem('negwords', phrases);
|
|
this.negativePhrasesArray.length = 0;
|
|
const negphrases = JSON.parse(localStorage.getItem('negwords'));
|
|
for (let key in negphrases) {
|
|
if (key) {
|
|
const content = new Phrase();
|
|
content.phrase = key;
|
|
content.weight = negphrases[key];
|
|
this.positivePhrasesArray.push(content);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
deletePhrase(index, positive: boolean): void {
|
|
if (positive) {
|
|
this.positivePhrasesArray.splice(index, 1);
|
|
} else {
|
|
this.negativePhrasesArray.splice(index, 1);
|
|
}
|
|
this.phrasesChanged(positive);
|
|
}
|
|
|
|
selectPhraseRow(row: number, positive: boolean) {
|
|
if (positive) {
|
|
this.positiveSelectedRow = row;
|
|
} else {
|
|
this.negativeSelectedRow = row;
|
|
}
|
|
}
|
|
|
|
unselectPhraseRow(positive: boolean) {
|
|
if (positive) {
|
|
this.positiveSelectedRow = -1;
|
|
} else {
|
|
this.negativeSelectedRow = -1;
|
|
}
|
|
}
|
|
|
|
phrasesChanged(positive: boolean): void {
|
|
const hashmap = {};
|
|
if (positive) {
|
|
this.positivePhrasesArray.forEach(function(element) {
|
|
hashmap[element.phrase] = element.weight;
|
|
});
|
|
localStorage.setItem('poswords', JSON.stringify(hashmap));
|
|
} else {
|
|
this.negativePhrasesArray.forEach(function(element) {
|
|
hashmap[element.phrase] = element.weight;
|
|
});
|
|
localStorage.setItem('negwords', JSON.stringify(hashmap));
|
|
}
|
|
}
|
|
|
|
precisionChange(precision: number) {
|
|
this.precision = precision;
|
|
localStorage.setItem('precision', this.precision.toString());
|
|
this.oldPrecision = precision;
|
|
if (this.precision === 1) {
|
|
this.bulkPutPrhases('{"European Grid Initiative":"1","European Grid Infrastructure":"1","EGI":"1"}', true);
|
|
} else if (this.precision === 2) {
|
|
this.bulkPutPrhases('{}', true);
|
|
} else if (this.precision === 3) {
|
|
this.bulkPutPrhases('{}', true);
|
|
}
|
|
}
|
|
|
|
advancedCheckboxChange(): void {
|
|
if (this.precision === 4) {
|
|
this.precision = this.oldPrecision;
|
|
} else {
|
|
this.precision = 4;
|
|
}
|
|
localStorage.setItem('precision', this.precision.toString());
|
|
}
|
|
|
|
contextprevChange(value): void {
|
|
if (value < 0 || value > 20) {
|
|
return;
|
|
}
|
|
localStorage.setItem('contextprev', value);
|
|
this.getSettingsFromLocalStorage();
|
|
}
|
|
|
|
contextnextChange(value): void {
|
|
if (value < 0 || value > 20) {
|
|
return;
|
|
}
|
|
localStorage.setItem('contextnext', value);
|
|
this.getSettingsFromLocalStorage();
|
|
}
|
|
|
|
wordssplitnumChange(value): void {
|
|
if (value < 0 || value > 10) {
|
|
return;
|
|
}
|
|
localStorage.setItem('wordssplitnum', value);
|
|
this.settings.wordssplitnum = value;
|
|
}
|
|
|
|
stopwordsCheckBoxChange(value: boolean): void {
|
|
localStorage.setItem('stopwords', value ? '1' : '0');
|
|
this.settings.stopwords = value ? 1 : 0;
|
|
}
|
|
|
|
punctuationCheckBoxChange(value: boolean): void {
|
|
localStorage.setItem('punctuation', value ? '1' : '0');
|
|
this.settings.punctuation = value ? 1 : 0;
|
|
}
|
|
|
|
letterCaseChange(lettercase): void {
|
|
localStorage.setItem('lettercase', lettercase);
|
|
this.settings.lettercase = lettercase;
|
|
}
|
|
|
|
saveProfile(): void {
|
|
this.configurationService.saveProfileParameters(this.getSettingsFromLocalStorage())
|
|
.subscribe(() => this.router.navigate(['../save-profile'], {relativeTo: this.route, queryParamsHandling: 'preserve'}));
|
|
}
|
|
|
|
}
|