Commit ddf4d958 authored by Konstantin Schulz's avatar Konstantin Schulz
Browse files

improved initialization of matching exercises, display of exercise parameters...

improved initialization of matching exercises, display of exercise parameters and fixed a bug in the exercise list
parent e9037ab6
{
"name": "mc_frontend",
"version": "1.1.5",
"version": "1.2.1",
"author": "Ionic Framework",
"homepage": "https://ionicframework.com/",
"scripts": {
......
......@@ -5,6 +5,7 @@ import {TranslateService} from '@ngx-translate/core';
import {HelperService} from '../helper.service';
import {CorpusService} from 'src/app/corpus.service';
import {HttpClient} from '@angular/common/http';
import {TextRange} from 'src/app/models/textRange';
@Component({
selector: 'app-author-detail',
......@@ -22,6 +23,7 @@ export class AuthorDetailPage {
showPossibleReferences(corpus: CorpusMC) {
this.corpusService.currentCorpus = corpus;
this.navCtrl.navigateForward('/text-range').then();
this.corpusService.currentTextRange = new TextRange({start: ['', '', ''], end: ['', '', '']});
HelperService.goToTextRangePage(this.navCtrl);
}
}
......@@ -36,6 +36,7 @@ export class CorpusService {
public availableCorpora: CorpusMC[];
public availableAuthors: Author[];
public baseUrn: string;
public citationsUnavailableString: string;
public corporaUnavailableString: string;
public currentAuthor: Author;
public currentCorpus: CorpusMC;
......@@ -52,6 +53,7 @@ export class CorpusService {
feedback: new Feedback({general: '', incorrect: '', partiallyCorrect: '', correct: ''}),
instructionsTranslation: ''
});
public invalidTextRangeString: string;
public isTextRangeCorrect = false;
public phenomenonMap: PhenomenonMap = new PhenomenonMap({
case: new PhenomenonMapContent({translationObject: CaseTranslations}),
......@@ -264,6 +266,8 @@ export class CorpusService {
this.translate.get(InstructionsTranslation[ExerciseType.cloze]).subscribe((value) => {
this.exercise.instructionsTranslation = value;
});
this.translate.get('INVALID_TEXT_RANGE').subscribe(value => this.invalidTextRangeString = value);
this.translate.get('ERROR_CITATIONS_UNAVAILABLE').subscribe(value => this.citationsUnavailableString = value);
}
initPhenomenonMap() {
......
......@@ -4,7 +4,7 @@ import {HelperService} from 'src/app/helper.service';
import {NavController, ToastController} from '@ionic/angular';
import {ExerciseMC} from 'src/app/models/exerciseMC';
import {HttpClient, HttpErrorResponse} from '@angular/common/http';
import {ExerciseTypeTranslation, MoodleExerciseType, SortingCategory} from '../models/enum';
import {ExerciseType, ExerciseTypeTranslation, MoodleExerciseType, SortingCategory} from '../models/enum';
import {TranslateService} from '@ngx-translate/core';
import {AnnisResponse} from 'src/app/models/annisResponse';
import {CorpusService} from 'src/app/corpus.service';
......@@ -67,7 +67,6 @@ export class ExerciseListPage implements OnInit {
}
showExercise(exercise: ExerciseMC) {
// this.corpusService.annisResponse = new AnnisResponse({exercise_id: exercise.eid});
const url = HelperService.config['backendBaseUrl'] + HelperService.config['backendApiExercisePath'];
HelperService.isLoading = true;
this.http.get(url, {params: {eid: exercise.eid}}).subscribe((ar: AnnisResponse) => {
......@@ -75,6 +74,8 @@ export class ExerciseListPage implements OnInit {
HelperService.mostRecentSetup.annisResponse = ar;
this.helperService.saveMostRecentSetup().then();
this.corpusService.annisResponse = ar;
const met: MoodleExerciseType = MoodleExerciseType[exercise.exercise_type];
this.corpusService.exercise.type = ExerciseType[met.toString()];
HelperService.goToPreviewPage(this.navCtrl);
}, async (error: HttpErrorResponse) => {
HelperService.isLoading = false;
......
......@@ -59,10 +59,11 @@
<ion-row>
<ion-col>
<ng-container
*ngIf="[ExerciseType.cloze, ExerciseType.markWords].indexOf(corpusService.exercise.type) > -1; else matching">
*ngIf="[ExerciseType.matching].indexOf(corpusService.exercise.type) === -1; else matching">
<label>
<span class="label">{{ 'QUERY_VALUE' | translate }}</span>
<select [(ngModel)]="query.values" name="queryValue" multiple>
<select [(ngModel)]="query.values" name="queryValue" multiple
size="{{Math.min(corpusService.getSortedQueryValues(query, i).length, 20)}}">
<option *ngFor="let key of corpusService.getSortedQueryValues(query, i)"
[value]=key>{{ getDisplayValue(query, key, i) }}
</option>
......
......@@ -9,7 +9,7 @@ import {
import {AnnisResponse} from 'src/app/models/annisResponse';
import {NavController, ToastController} from '@ionic/angular';
import {HttpClient, HttpErrorResponse} from '@angular/common/http';
import {Component} from '@angular/core';
import {Component, OnInit} from '@angular/core';
import {TranslateService} from '@ngx-translate/core';
import {ExerciseService} from 'src/app/exercise.service';
import {HelperService} from 'src/app/helper.service';
......@@ -23,16 +23,17 @@ import {FrequencyItem} from 'src/app/models/frequencyItem';
templateUrl: './exercise-parameters.page.html',
styleUrls: ['./exercise-parameters.page.scss'],
})
export class ExerciseParametersPage {
ObjectKeys = Object.keys;
public ExerciseType = ExerciseType;
Phenomenon = Phenomenon;
textTooLongString: string;
export class ExerciseParametersPage implements OnInit {
emptyQueryValueString: string;
public ExerciseType = ExerciseType;
ExerciseTypeTranslation = ExerciseTypeTranslation;
HelperService = HelperService;
public Math = Math;
ObjectKeys = Object.keys;
Phenomenon = Phenomenon;
PhenomenonTranslation = PhenomenonTranslation;
showFeedback = false;
HelperService = HelperService;
textTooLongString: string;
constructor(public navCtrl: NavController,
public toastCtrl: ToastController,
......@@ -173,4 +174,9 @@ export class ExerciseParametersPage {
value => this.textTooLongString = value + HelperService.config['maxTextLength']);
this.translateService.get('QUERY_VALUE_EMPTY').subscribe(value => this.emptyQueryValueString = value);
}
ngOnInit(): void {
this.corpusService.adjustTranslations();
}
}
......@@ -143,6 +143,10 @@ export class HelperService {
navCtrl.navigateForward('/exercise-list').then();
}
static goToExerciseParametersPage(navCtrl: NavController) {
navCtrl.navigateForward('exercise-parameters').then();
}
static goToHomePage(navCtrl: NavController) {
navCtrl.navigateRoot('/home').then();
}
......@@ -173,6 +177,10 @@ export class HelperService {
navCtrl.navigateRoot('/test').then();
}
static goToTextRangePage(navCtrl: NavController) {
navCtrl.navigateForward('/text-range').then();
}
static goToVocabularyCheckPage(navCtrl: NavController) {
navCtrl.navigateForward('/vocabulary-check').then(() => {
HelperService.isVocabularyCheck = true;
......
......@@ -14,7 +14,7 @@
<ion-content padding>
<img src="../assets/imgs/logo.png" width="64px" height="64px" style="padding: 5px;">
<img src="assets/imgs/logo.png" width="64px" height="64px" style="padding: 5px;">
<h2>CALLIDUS</h2>
<b>C</b>omputer-<b>A</b>ided <b>L</b>anguage <b>L</b>earning: Lexikonerwerb im Late<b>i</b>nunterricht
......@@ -96,4 +96,4 @@
</ion-tab-bar>
</ion-tabs>
</ion-toolbar>
</ion-footer>
\ No newline at end of file
</ion-footer>
......@@ -17,6 +17,12 @@
<ion-content padding>
<div *ngIf="corpusService.annisResponse?.solutions; else loading">
<ion-grid>
<ion-row>
<ion-col>
<ion-button
(click)="HelperService.goToTextRangePage(navCtrl)">{{ "CHANGE_TEXT_RANGE" | translate}}</ion-button>
</ion-col>
</ion-row>
<ion-row *ngIf="HelperService.isVocabularyCheck">
<ion-col>
<label>
......
......@@ -20,8 +20,8 @@
<ion-grid *ngIf="corpusService.currentText.length > 0; else loading">
<ion-row>
<ion-col>
<ion-button (click)="goToExerciseParametersPage()">{{ "EXERCISE_SET_PARAMETERS" | translate}}
</ion-button>
<ion-button
(click)="HelperService.goToExerciseParametersPage(navCtrl)">{{ "EXERCISE_SET_PARAMETERS" | translate}}</ion-button>
</ion-col>
<ion-col>
<ion-button
......
......@@ -82,10 +82,6 @@ export class ShowTextPage {
});
}
goToExerciseParametersPage() {
this.navCtrl.navigateForward('exercise-parameters').then();
}
getWhiteSpace(index: number) {
if (this.corpusService.annisResponse.nodes[index + 1]) {
if ('.,\\/#!$%\\^&\\*;:{}=\\-_`~()'.indexOf(this.corpusService.annisResponse.nodes[index + 1].annis_tok) > -1) {
......
......@@ -13,70 +13,116 @@
</ion-header>
<ion-content padding>
<h4>Software-Entwicklung</h4>
<h6>Machina Callida - Backend</h6>
<p>Die im Rahmen des Callidus-Projektes entwickelte Software - Machina Callida - ist ein
Open Source-Projekt. Der Code ist bei GitLab zu finden.<br>
<a href="https://scm.cms.hu-berlin.de/callidus/mc_backend" target="_blank">Backend</a>
</p>
<h6>Machina Callida - Frontend</h6>
<p>
Das Frontend ist ebenfalls bei GitLab zu finden.<br>
<a href="https://scm.cms.hu-berlin.de/callidus/mc_frontend" target="_blank">Frontend</a>
</p>
<br>
<h4>Software-Abhängigkeiten</h4>
<h6>Ancient Greek and Latin Dependency Treebank</h6>
<p>
The Ancient Greek and Latin Dependency Treebank (AGLDT) is the earliest treebank
for Ancient Greek and Latin.<br>
<a href="https://perseusdl.github.io/treebank_data/" target="_blank">Perseus</a>
</p>
<h6>Bamberger Wortschatz</h6>
<p>
Das zugrunde liegende Lektürecorpus wurde durch eine genaue Analyse der geltenden Lehrpläne
sowie durch einen Abgleich der wichtigsten Textausgaben ermittelt. Es enthält die gesamte Palette
der in der Mittelstufe gelesenen Texte und Autoren. Sie sind im Nachwort mitsamt den erfassten
Textstellen angegeben. Der Gesamtumfang des untersuchten Corpus ist mit über 140.000 Wortformen
beträchtlich: nach Abzug der Belegstellen von Namen immerhin 7.154 Lemmata, d.h. potenzielle
Lernwörter. Umso überraschender und erfreulicher ist das Ergebnis: Mit 1248 Vokabeln sind
gut 83% dieses Textcorpus erfassbar.<br>
Die eingehenden Untersuchungen und Vorarbeiten für die neue Wortkunde-Generation fanden im
Rahmen eines vom Verlag geförderten didaktischen Projekts unter dem Titel Bamberger Wortschatz
statt.<br>
<a href="https://www.ccbuchner.de/reihe-0-0/adeo-53/" target="_blank">ADEO-Basiswortschatz</a>
</p>
<h6>PROIEL Treebank</h6>
<p>
The PROIEL Treebank is a treebank of ancient Indo-European languages, including Latin and
Ancient Greek. It uses a refined version of dependency grammar and is available under
a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International.<br>
<a href="https://proiel.github.io/" target="_blank">PROIEL Treebank</a>
</p>
<h6>ANNIS</h6>
<p><a href="https://korpling.org/annis3/" target="_blank">ANNIS</a> ist ein brow­ser­ba­sier­tes, Open-Source Such-
und Vi­su­a­li­sie­rungs­werk­zeug für
kom­ple­xe lin­gu­is­ti­sche Mehr­ebe­nen­kor­po­ra. ANNIS steht für An­no­ta­ti­on der
In­for­ma­ti­ons­struk­tur und wur­de im Rah­men des SFB 632 "In­for­ma­ti­ons­struk­tur:
Die sprach­li­chen Mit­tel der Glie­de­rung von Äu­ße­rung, Satz und Text" ent­wi­ckelt.<br>
ANNIS ba­siert nicht auf ei­ner be­stimm­ten lin­gu­is­ti­schen The­o­rie und kann so­mit
un­ter­schied­lichs­te Kor­po­ra durch­su­chen und dar­stel­len. So kön­nen sprach­li­che
Phä­no­me­ne un­ter­schied­li­cher Ebe­nen ge­mein­sam dar­ge­stellt und durch­sucht wer­den
wie bei­spiels­wei­se Syn­tax, Se­man­tik, Mor­pho­lo­gie, Pro­so­die, Re­fe­ren­ti­a­li­tät und Le­xik.
Mit ANNIS ist es eben­falls mög­lich, mul­ti­me­di­a­le Da­ten wie Au­dio- und Vi­deo­da­tei­en
ein­zu­bin­den.
</p>
<br>
<h4>Copyright Bilder</h4>
<img src="assets/imgs/logo.png" width="64px" height="64px">
<div style="font-size:0.8em">Icon made by <a href="https://www.freepik.com/" title="Freepik">Freepik</a> <br>
from <a href="https://www.flaticon.com/" title="Flaticon">www.flaticon.com</a>
is licensed by <a href="http://creativecommons.org/licenses/by/3.0/" title="Creative Commons BY 3.0"
target="_blank">CC 3.0 BY</a><br>
</div>
<br>
<ion-grid style="text-align: left">
<ion-row>
<ion-col><h4>Software-Entwicklung</h4></ion-col>
</ion-row>
<ion-row>
<ion-col><h6>Machina Callida - Backend</h6></ion-col>
</ion-row>
<ion-row>
<ion-col>
<p>Die im Rahmen des Callidus-Projektes entwickelte Software - Machina Callida - ist ein
Open Source-Projekt. Der Code ist bei GitLab zu finden.<br>
<a href="https://scm.cms.hu-berlin.de/callidus/mc_backend" target="_blank">Backend</a>
</p>
</ion-col>
</ion-row>
<ion-row>
<ion-col><h6>Machina Callida - Frontend</h6></ion-col>
</ion-row>
<ion-row>
<ion-col>
<p>
Das Frontend ist ebenfalls bei GitLab zu finden.<br>
<a href="https://scm.cms.hu-berlin.de/callidus/mc_frontend" target="_blank">Frontend</a>
</p>
</ion-col>
</ion-row>
<ion-row>
<ion-col><h4>Software-Abhängigkeiten</h4></ion-col>
</ion-row>
<ion-row>
<ion-col><h6>Ancient Greek and Latin Dependency Treebank</h6></ion-col>
</ion-row>
<ion-row>
<ion-col>
<p>
The Ancient Greek and Latin Dependency Treebank (AGLDT) is the earliest treebank for Ancient Greek
and Latin.<br>
<a href="https://perseusdl.github.io/treebank_data/" target="_blank">Perseus</a>
</p>
</ion-col>
</ion-row>
<ion-row>
<ion-col><h6>Bamberger Wortschatz</h6></ion-col>
</ion-row>
<ion-row>
<ion-col>
<p>
Das zugrunde liegende Lektürecorpus wurde durch eine genaue Analyse der geltenden Lehrpläne
sowie durch einen Abgleich der wichtigsten Textausgaben ermittelt. Es enthält die gesamte Palette
der in der Mittelstufe gelesenen Texte und Autoren. Sie sind im Nachwort mitsamt den erfassten
Textstellen angegeben. Der Gesamtumfang des untersuchten Corpus ist mit über 140.000 Wortformen
beträchtlich: nach Abzug der Belegstellen von Namen immerhin 7.154 Lemmata, d.h. potenzielle
Lernwörter. Umso überraschender und erfreulicher ist das Ergebnis: Mit 1248 Vokabeln sind
gut 83% dieses Textcorpus erfassbar.<br>
Die eingehenden Untersuchungen und Vorarbeiten für die neue Wortkunde-Generation fanden im
Rahmen eines vom Verlag geförderten didaktischen Projekts unter dem Titel Bamberger Wortschatz
statt.<br>
<a href="https://www.ccbuchner.de/reihe-0-0/adeo-53/" target="_blank">ADEO-Basiswortschatz</a>
</p>
</ion-col>
</ion-row>
<ion-row>
<ion-col><h6>PROIEL Treebank</h6></ion-col>
</ion-row>
<ion-row>
<ion-col>
<p>
The PROIEL Treebank is a treebank of ancient Indo-European languages, including Latin and
Ancient Greek. It uses a refined version of dependency grammar and is available under
a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International.<br>
<a href="https://proiel.github.io/" target="_blank">PROIEL Treebank</a>
</p>
</ion-col>
</ion-row>
<ion-row>
<ion-col><h6>ANNIS</h6></ion-col>
</ion-row>
<ion-row>
<ion-col>
<p><a href="https://korpling.org/annis3/" target="_blank">ANNIS</a> ist ein browserbasiertes,
Open-Source Such- und Visualisierungswerkzeug für komplexe linguistische Mehrebenenkorpora. ANNIS
steht für Annotation der Informationsstruktur und wurde im Rahmen des SFB 632 "Informationsstruktur:
Die sprachlichen Mittel der Gliederung von Äußerung, Satz und Text" entwickelt.<br>
ANNIS basiert nicht auf einer bestimmten linguistischen Theorie und kann somit unterschiedlichste
Korpora durchsuchen und darstellen. So können sprachliche Phänomene unterschiedlicher Ebenen
gemeinsam dargestellt und durchsucht werden wie beispielsweise Syntax, Semantik, Morphologie,
Prosodie, Referentialität und Lexik. Mit ANNIS ist es ebenfalls möglich, multimediale Daten wie
Audio- und Videodateien einzubinden.
</p>
</ion-col>
</ion-row>
<ion-row>
<ion-col><h6><a href="https://github.com/rug-compling/conllu-viewer" target="_blank">CoNLL-U Viewer</a></h6></ion-col>
</ion-row>
<ion-row>
<ion-col><h4>Copyright Bilder</h4></ion-col>
</ion-row>
<ion-row>
<ion-col><img src="assets/imgs/logo.png" width="64px" height="64px"></ion-col>
</ion-row>
<ion-row>
<ion-col>
<div style="font-size:0.8em">Icon made by <a href="https://www.freepik.com/" title="Freepik">Freepik</a> <br>
from <a href="https://www.flaticon.com/" title="Flaticon">www.flaticon.com</a>
is licensed by <a href="http://creativecommons.org/licenses/by/3.0/" title="Creative Commons BY 3.0"
target="_blank">CC 3.0 BY</a><br>
</div>
</ion-col>
</ion-row>
</ion-grid>
</ion-content>
<ion-footer>
<ion-toolbar>
......
......@@ -18,7 +18,12 @@
<ion-grid>
<ion-row>
<ion-col>
<ion-button (click)="showText()">{{ "SELECTION_CONFIRM" | translate }}</ion-button>
<ion-button (click)="confirmSelection()">{{ "SHOW_TEXT" | translate }}</ion-button>
</ion-col>
</ion-row>
<ion-row>
<ion-col>
<ion-button (click)="confirmSelection(true)">{{ "EXERCISE_SET_PARAMETERS" | translate }}</ion-button>
</ion-col>
</ion-row>
<ion-row>
......
/* tslint:disable:no-string-literal */
import {ApplicationState} from 'src/app/models/applicationState';
import {NavController, ToastController} from '@ionic/angular';
import {TextRange} from 'src/app/models/textRange';
import {Citation} from 'src/app/models/citation';
import {HttpErrorResponse} from '@angular/common/http';
import {Component} from '@angular/core';
......@@ -16,10 +15,8 @@ import {CorpusService} from 'src/app/corpus.service';
styleUrls: ['./text-range.page.scss'],
})
export class TextRangePage {
public citationsUnavailableString: string;
// TODO: rebuild the system so it works for any corpus of arbitrary citation depth
public CitationLevel = CitationLevel;
public invalidTextRangeString: string;
ObjectKeys = Object.keys;
public currentlyAvailableCitations: string[] = [];
public currentInputId = 0;
......@@ -35,7 +32,6 @@ export class TextRangePage {
public helperService: HelperService) {
this.currentlyAvailableCitations = [];
this.corpusService.isTextRangeCorrect = false;
this.corpusService.currentTextRange = new TextRange({start: ['', '', ''], end: ['', '', '']});
if (!this.corpusService.currentCorpus) {
this.corpusService.checkAnnisResponse().then(() => {
this.corpusService.restoreLastCorpus().then(() => {
......@@ -53,8 +49,6 @@ export class TextRangePage {
} else {
this.initPage();
}
this.translateService.get('INVALID_TEXT_RANGE').subscribe(value => this.invalidTextRangeString = value);
this.translateService.get('ERROR_CITATIONS_UNAVAILABLE').subscribe(value => this.citationsUnavailableString = value);
}
private addMissingCitations(citationLabelsStart: string[], citationLabelsEnd: string[]) {
......@@ -133,7 +127,7 @@ export class TextRangePage {
HelperService.isLoading = false;
HelperService.currentError = error;
const toast = await this.toastCtrl.create({
message: this.citationsUnavailableString,
message: this.corpusService.citationsUnavailableString,
duration: 3000,
position: 'top'
});
......@@ -162,22 +156,18 @@ export class TextRangePage {
citationLabelsEnd = citationLabelsEnd.filter(x => x);
if (this.corpusService.currentCorpus.citation_level_2 === CitationLevel[CitationLevel.default]) {
if (citationLabelsStart.length !== 1 || citationLabelsEnd.length !== 1) {
resolve(false);
return;
return resolve(false);
}
} else {
if (citationLabelsStart.length < 2 || citationLabelsEnd.length < 2) {
resolve(false);
return;
return resolve(false);
} else {
if (this.corpusService.currentCorpus.citation_level_3 === CitationLevel[CitationLevel.default]) {
if (citationLabelsStart.length !== 2 || citationLabelsEnd.length !== 2) {
resolve(false);
return;
return resolve(false);
}
} else if (citationLabelsStart.length !== 3 || citationLabelsEnd.length !== 3) {
resolve(false);
return;
return resolve(false);
}
}
}
......@@ -187,7 +177,7 @@ export class TextRangePage {
this.compareCitationValues().then((result: boolean) => resolve(result));
}, () => {
// if the citation system does not work, we allow the user to choose the correct citations on his own
resolve(true);
return resolve(true);
});
});
}
......@@ -224,6 +214,53 @@ export class TextRangePage {
});
}
confirmSelection(skipText: boolean = false) {
if (this.isTextRangeCheckRunning) {
return;
}
this.isTextRangeCheckRunning = true;
const citationLabelsStart: string[] = this.corpusService.currentTextRange.start;
const citationLabelsEnd: string[] = this.corpusService.currentTextRange.end;
this.checkTextRange(citationLabelsStart, citationLabelsEnd).then(async (isTextRangeCorrect: boolean) => {
this.isTextRangeCheckRunning = false;
if (!isTextRangeCorrect) {
const toast = await this.toastCtrl.create({
message: this.corpusService.invalidTextRangeString,
duration: 3000,
position: 'top'
});
toast.present().then();
return;
}
const newUrnBase: string = this.corpusService.currentCorpus.source_urn + ':';
if (this.citationValuesStart.concat(this.citationValuesEnd).some(x => isNaN(x))) {
this.corpusService.currentUrn = newUrnBase +
this.corpusService.currentTextRange.start.filter(x => x).join('.') + '-' +
this.corpusService.currentTextRange.end.filter(x => x).join('.');
} else {
this.corpusService.currentUrn = newUrnBase + this.citationValuesStart.join('.') + '-' + this.citationValuesEnd.join('.');
}
HelperService.mostRecentSetup = new ApplicationState({
currentUrn: this.corpusService.currentUrn,
currentCorpus: this.corpusService.currentCorpus,
currentTextRange: this.corpusService.currentTextRange
});
this.helperService.saveMostRecentSetup().then(() => {
this.corpusService.isTextRangeCorrect = true;
this.corpusService.getText().then(() => {
if (skipText) {
HelperService.goToExerciseParametersPage(this.navCtrl);
} else if (HelperService.isVocabularyCheck) {
HelperService.goToVocabularyCheckPage(this.navCtrl);
} else {
HelperService.goToShowTextPage(this.navCtrl);
}
}, () => {
});
});
});
}
private initPage() {
if (this.corpusService.currentCorpus.citation_level_2 === CitationLevel[CitationLevel.default]) {
const firstKey: string = Object.keys(this.corpusService.currentCorpus.citations)[0];
......@@ -362,49 +399,4 @@ export class TextRangePage {
}
});
}
showText() {
if (this.isTextRangeCheckRunning) {
return;
}
const citationLabelsStart: string[] = this.corpusService.currentTextRange.start;
const citationLabelsEnd: string[] = this.corpusService.currentTextRange.end;
this.isTextRangeCheckRunning = true;
this.checkTextRange(citationLabelsStart, citationLabelsEnd).then(async (isTextRangeCorrect: boolean) => {
this.isTextRangeCheckRunning = false;
if (!isTextRangeCorrect) {
const toast = await this.toastCtrl.create({
message: this.invalidTextRangeString,
duration: 3000,
position: 'top'
});
toast.present().then();
return;
}
const newUrnBase: string = this.corpusService.currentCorpus.source_urn + ':';
if (this.citationValuesStart.concat(this.citationValuesEnd).some(x => isNaN(x))) {
this.corpusService.currentUrn = newUrnBase +
this.corpusService.currentTextRange.start.filter(x => x).join('.') + '-' +
this.corpusService.currentTextRange.end.filter(x => x).join('.');
} else {
this.corpusService.currentUrn = newUrnBase + this.citationValuesStart.join('.') + '-' + this.citationValuesEnd.join('.');
}
HelperService.mostRecentSetup = new ApplicationState({
currentUrn: this.corpusService.currentUrn,
currentCorpus: this.corpusService.currentCorpus,
currentTextRange: this.corpusService.currentTextRange
});
this.helperService.saveMostRecentSetup().then(() => {
this.corpusService.isTextRangeCorrect = true;
this.corpusService.getText().then(() => {
if (HelperService.isVocabularyCheck) {
HelperService.goToVocabularyCheckPage(this.navCtrl);
} else {
HelperService.goToShowTextPage(this.navCtrl);
}
}, () => {
});
});
});
}
}
......@@ -13,6 +13,7 @@
"CASE_LOCATIVE": "Lokativ",
"CASE_NOMINATIVE": "Nominativ",
"CASE_VOCATIVE": "Vokativ",
"CHANGE_TEXT_RANGE": "Textpassage ändern",
"CONFIRM_CANCEL": "Wirklich beenden?",
"CORPORA_REFRESH": "Korpora aktualisieren",