Merge branch 'front_end_review' into 'develop'

bug fixes, added modal to application.submit

See merge request !87
parents 83569662 dfd635fe
......@@ -70,12 +70,6 @@ epal.application_submit:
_controller: '\Drupal\epal\Controller\ApplicationSubmit::appSubmit'
requirements:
_user_is_logged_in: 'TRUE'
epal.demo_data:
path: '/epal/demodata'
defaults:
_controller: '\Drupal\epal\Controller\CreateDemoData::createData'
requirements:
_access: 'TRUE'
epal.allocation:
path: '/epal/distribution'
options:
......
......@@ -87,5 +87,5 @@ class MyLocalization extends NgLocalization {
})
class AppModule {}
// enableProdMode();
enableProdMode();
platformBrowserDynamic().bootstrapModule(AppModule);
import { Component, OnInit, OnDestroy,ElementRef, ViewChild} from "@angular/core";
import { Component, OnInit, OnDestroy, ElementRef, ViewChild} from "@angular/core";
import { Injectable } from "@angular/core";
import { AppSettings } from '../../app.settings';
import { HelperDataService } from '../../services/helper-data-service';
......@@ -20,6 +20,7 @@ import {
@Component({
selector: 'director-classcapacity',
template: `
<div style="min-height: 500px;">
<form [formGroup]="formGroup">
<label for="taxi">Τάξη</label><br/>
<div class="form-group">
......@@ -60,10 +61,12 @@ import {
Αποθήκευση
</button>
</div>
</form>
</div>
`
})
@Injectable() export default class DirectorClassCapacity implements OnInit , OnDestroy{
@Injectable() export default class DirectorClassCapacity implements OnInit, OnDestroy {
public formGroup: FormGroup;
private StudentSelected$: BehaviorSubject<any>;
......@@ -72,7 +75,7 @@ import {
private StudentSelectedSpecialSub: Subscription;
private selectionBClass: BehaviorSubject<boolean>;
private selectionCClass: BehaviorSubject<boolean>;
private SchoolId = 147 ;
private SchoolId = 147;
private currentclass: Number;
private classCapacity$: BehaviorSubject<any>;
private classCapacitySub: Subscription;
......@@ -81,11 +84,10 @@ import {
constructor( private fb: FormBuilder,
constructor(private fb: FormBuilder,
private _hds: HelperDataService,
private activatedRoute: ActivatedRoute,
private router: Router )
{
private router: Router) {
this.StudentSelected$ = new BehaviorSubject([{}]);
this.StudentSelectedSpecial$ = new BehaviorSubject([{}]);
this.classCapacity$ = new BehaviorSubject([{}]);
......@@ -101,8 +103,7 @@ import {
}
ngOnDestroy()
{
ngOnDestroy() {
if (this.StudentSelectedSub)
this.StudentSelectedSub.unsubscribe();
if (this.StudentSelectedSpecialSub)
......@@ -122,12 +123,10 @@ import {
}
verifyclass(txop)
{
verifyclass(txop) {
this.modify = false;
console.log(this.formGroup.value.specialit, "speciality");
if (txop.value === "1")
{
if (txop.value === "1") {
this.selectionBClass.next(false);
this.selectionCClass.next(false);
this.formGroup.patchValue({
......@@ -135,9 +134,10 @@ import {
specialit: '',
});
console.log("a class");
this.classCapacitySub = this._hds.getCapacityPerSchool(this.formGroup.value.taxi,0,0,this.SchoolId ).subscribe(data => {
this.classCapacitySub = this._hds.getCapacityPerSchool(this.formGroup.value.taxi, 0, 0, this.SchoolId).subscribe(data => {
this.classCapacity$.next(data);
this.retrievedStudent.next(true); },
this.retrievedStudent.next(true);
},
error => {
this.classCapacity$.next([{}]);
console.log("Error Getting Capacity");
......@@ -145,8 +145,7 @@ import {
() => console.log("Getting Capacity"));
}
else if (txop.value === "2")
{
else if (txop.value === "2") {
this.formGroup.patchValue({
specialit: '',
});
......@@ -155,12 +154,10 @@ import {
this.StudentSelected$ = new BehaviorSubject([{}]);
this.StudentSelectedSub = this._hds.getSectorPerSchool(this.SchoolId).subscribe(this.StudentSelected$);
}
else if (txop.value === "3")
{
else if (txop.value === "3") {
var sectorint = +this.formGroup.value.tomeas;
console.log(sectorint,"test");
if (this.formGroup.value.tomeas != '')
{
console.log(sectorint, "test");
if (this.formGroup.value.tomeas != '') {
var sectorint = +this.formGroup.value.tomeas;
this.StudentSelectedSpecial$ = new BehaviorSubject([{}]);
this.StudentSelectedSpecialSub = this._hds.getSpecialityPerSchool(this.SchoolId, sectorint).subscribe(this.StudentSelectedSpecial$);
......@@ -177,25 +174,23 @@ import {
}
checkbclass(tmop,txop)
{
checkbclass(tmop, txop) {
this.modify = false;
var sectorint = +this.formGroup.value.tomeas;
console.log(sectorint,"tomeas");
if (txop.value === "2")
{
console.log(sectorint, "tomeas");
if (txop.value === "2") {
console.log("b class");
this.classCapacitySub = this._hds.getCapacityPerSchool(this.formGroup.value.taxi,sectorint,0,this.SchoolId ).subscribe(data => {
this.classCapacitySub = this._hds.getCapacityPerSchool(this.formGroup.value.taxi, sectorint, 0, this.SchoolId).subscribe(data => {
this.classCapacity$.next(data);
this.retrievedStudent.next(true); },
this.retrievedStudent.next(true);
},
error => {
this.classCapacity$.next([{}]);
console.log("Error Getting Capacity");
},
() => console.log("Getting Capacity"));
}
if (txop.value === "3")
{
if (txop.value === "3") {
this.StudentSelectedSpecial$ = new BehaviorSubject([{}]);
this.StudentSelectedSpecialSub = this._hds.getSpecialityPerSchool(this.SchoolId, sectorint).subscribe(this.StudentSelectedSpecial$);
......@@ -204,18 +199,17 @@ import {
}
checkcclass(tmop,txop,spop)
{
checkcclass(tmop, txop, spop) {
this.modify = false;
var sectorint = +this.formGroup.value.tomeas;
var specialint = +this.formGroup.value.specialit;
if (txop.value === "3")
{
if (txop.value === "3") {
console.log("c class");
this.classCapacitySub = this._hds.getCapacityPerSchool(this.formGroup.value.taxi,sectorint,specialint,this.SchoolId ).subscribe(data => {
this.classCapacitySub = this._hds.getCapacityPerSchool(this.formGroup.value.taxi, sectorint, specialint, this.SchoolId).subscribe(data => {
this.classCapacity$.next(data);
this.retrievedStudent.next(true); },
this.retrievedStudent.next(true);
},
error => {
this.classCapacity$.next([{}]);
console.log("Error Getting Capacity");
......@@ -229,19 +223,18 @@ import {
saveCapacity()
{
saveCapacity() {
var tomeas = +this.formGroup.value.tomeas;
var specialit = +this.formGroup.value.specialit;
console.log(tomeas, specialit);
this._hds.saveCapacity(this.formGroup.value.taxi,tomeas,specialit, this.formGroup.value.capacity, this.SchoolId );
this._hds.saveCapacity(this.formGroup.value.taxi, tomeas, specialit, this.formGroup.value.capacity, this.SchoolId);
}
}
modifyCapacity(){
modifyCapacity() {
this.modify = true;
}
}
}
......@@ -20,6 +20,7 @@ import {
@Component({
selector: 'director-view',
template: `
<div style="min-height: 500px;">
<form [formGroup]="formGroup">
......@@ -114,6 +115,8 @@ import {
</div>
<!-- </div> -->
</div>
</div>
</ul>
<br>
<br>
......@@ -140,7 +143,8 @@ import {
</ul>
</nav>
</form>
</div>
`
......@@ -167,19 +171,19 @@ import {
private currentclass: Number;
private saved: Array<number> = new Array();
private limitdown = 0;
private limitup= 25;
private limitup = 25;
private pageno = 1;
private userActive = <number>-1;
private type: Number;
@ViewChild('fileInput') fileInput:ElementRef;
@ViewChild('fileInput') fileInput: ElementRef;
constructor(private fb: FormBuilder,
private _hds: HelperDataService,
private activatedRoute: ActivatedRoute,
private router: Router,
private renderer:Renderer) {
private renderer: Renderer) {
this.StudentSelected$ = new BehaviorSubject([{}]);
this.StudentSelectedSpecial$ = new BehaviorSubject([{}]);
this.StudentInfo$ = new BehaviorSubject([{}]);
......@@ -192,8 +196,8 @@ import {
tomeas: ['', []],
taxi: ['', []],
specialit: ['', []],
maxpage:[{value: '', disabled: true}, []],
pageno:[{value: '', disabled: true}, []],
maxpage: [{ value: '', disabled: true }, []],
pageno: [{ value: '', disabled: true }, []],
});
}
......@@ -304,14 +308,13 @@ import {
}
this.formGroup.get('pageno').setValue(this.pageno);
if (this.pageno == 1){
console.log(this.SchoolId, sectorint, this.currentclass,"test");
if (this.pageno == 1) {
console.log(this.SchoolId, sectorint, this.currentclass, "test");
this.StudentsSizeSub = this._hds.getStudentPerSchool(this.SchoolId, sectorint, this.currentclass, 0, 0).subscribe(x => {
this.StudentsSize$.next(x);
tot_pages = x.id /5;
if (x.id%5 >0)
{
tot_pages = (x.id - (x.id%5))/5 +1;
tot_pages = x.id / 5;
if (x.id % 5 > 0) {
tot_pages = (x.id - (x.id % 5)) / 5 + 1;
}
this.formGroup.get('maxpage').setValue(tot_pages);
});
......@@ -360,7 +363,7 @@ import {
confirmStudent() {
this._hds.saveConfirmStudents(this.saved, this.type);
let event = new MouseEvent('click', {bubbles: true});
let event = new MouseEvent('click', { bubbles: true });
this.fileInput.nativeElement.dispatchEvent(event);
}
......@@ -370,23 +373,21 @@ import {
this.retrievedStudent.next(false);
}
nextpage(txop, maxpage){
nextpage(txop, maxpage) {
console.log(maxpage.value);
if (this.pageno < maxpage.value)
{
this.pageno = this.pageno+1;
this.limitdown = (this.pageno-1) * 5 ;
if (this.pageno < maxpage.value) {
this.pageno = this.pageno + 1;
this.limitdown = (this.pageno - 1) * 5;
this.limitup = this.pageno * 5;
this.findstudent(txop, this.pageno)
}
}
prevpage(txop){
console.log(this.pageno,"pageno");
if (this.pageno > 1)
{
this.pageno = this.pageno-1;
this.limitdown = (this.pageno-1) * 5 ;
prevpage(txop) {
console.log(this.pageno, "pageno");
if (this.pageno > 1) {
this.pageno = this.pageno - 1;
this.limitdown = (this.pageno - 1) * 5;
this.limitup = this.pageno * 5;
this.findstudent(txop, this.pageno)
}
......@@ -395,15 +396,14 @@ import {
setActiveUser(ind)
{
setActiveUser(ind) {
ind = +ind;
console.log(this.userActive,"RA",ind);
if (ind === this.userActive){
console.log(this.userActive, "RA", ind);
if (ind === this.userActive) {
ind = -1;
}
ind--;
this.userActive = ind+1 ;
this.userActive = ind + 1;
}
......
import {Router, ActivatedRoute, Params} from '@angular/router';
import {OnInit, Component} from '@angular/core';
import { LoginInfoActions } from '../../actions/logininfo.actions';
import { ILoginInfo } from '../../store/logininfo/logininfo.types';
import { NgRedux, select } from 'ng2-redux';
import { Observable } from 'rxjs/Rx';
import { IAppState } from '../../store/store';
import { HelperDataService } from '../../services/helper-data-service';
import { CookieService } from 'ngx-cookie';
import {
FormBuilder,
FormGroup,
FormControl,
FormArray
} from '@angular/forms';
import {Router} from '@angular/router';
import {OnInit, Component, Injectable} from '@angular/core';
import { API_ENDPOINT, API_ENDPOINT_PARAMS } from '../../app.settings';
@Component({
selector: 'director-buttons',
template: `
<div>
<form>
<div class="col-md-8 offset-md-4">
<button type="submit" class="btn-primary btn-lg" (click)="navigatedirector()">
Επιλεχθέντες Μαθητές<span class="glyphicon glyphicon-menu-right"></span>
<div class="row" style="margin-top: 130px; margin-bottom: 200px;">
<div class="col-md-3 offset-md-3">
<button type="submit" class="btn-primary btn-lg btn-block isclickable" style="margin: 0px; font-size: 1em; padding: 5px;" (click)="navigatedirector()">
Αιτηθέντες<br />Μαθητές
</button>
<br>
<br>
<button type="submit" class="btn-primary btn-lg" (click)="navigatecapacity()">
Δυναμική Τμημάτων<span class="glyphicon glyphicon-menu-right"></span>
</div>
<div class="col-md-6">
<button type="submit" class="btn-primary btn-lg btn-block isclickable" style="margin: 0px; font-size: 1em; padding: 5px;" (click)="navigatecapacity()">
Δυναμική<br />Τμημάτων
</button>
</div>
<br>
<br>
<br>
<br>
<br>
</form>
</div>
`
})
export default class DirectorButtom implements OnInit {
@Injectable() export default class DirectorButtons implements OnInit {
constructor(
private router: Router,
......@@ -54,7 +31,6 @@ export default class DirectorButtom implements OnInit {
}
navigatedirector(){
this.router.navigate(['/school/director-view']);
......@@ -64,6 +40,4 @@ export default class DirectorButtom implements OnInit {
this.router.navigate(['/school/director-classcapacity']);
}
}
import { Component, OnInit, OnDestroy, ElementRef, ViewChild} from "@angular/core";
import { Injectable } from "@angular/core";
import { Component, OnInit, OnDestroy, ElementRef, ViewChild, Injectable} from "@angular/core";
import { AppSettings } from '../../app.settings';
import { HelperDataService } from '../../services/helper-data-service';
import {Observable} from "rxjs/Observable";
......
import {Router, ActivatedRoute, Params} from '@angular/router';
import {OnInit, Component} from '@angular/core';
import {OnInit, OnDestroy, Component} from '@angular/core';
import { LoginInfoActions } from '../actions/logininfo.actions';
import { ILoginInfo } from '../store/logininfo/logininfo.types';
import { LOGININFO_INITIAL_STATE } from '../store/logininfo/logininfo.initial-state';
import { NgRedux, select } from 'ng2-redux';
import { Observable } from 'rxjs/Rx';
import { BehaviorSubject, Subscription } from 'rxjs/Rx';
import { IAppState } from '../store/store';
import { HelperDataService } from '../services/helper-data-service';
import { CookieService } from 'ngx-cookie';
......@@ -36,13 +37,14 @@ import { API_ENDPOINT, API_ENDPOINT_PARAMS } from '../app.settings';
`
})
export default class SchoolHome implements OnInit {
export default class SchoolHome implements OnInit, OnDestroy {
public formGroup: FormGroup;
private authToken: string;
private authRole: string;
private name: any;
private xcsrftoken: any;
private loginInfo$: Observable<ILoginInfo>;
private loginInfo$: BehaviorSubject<ILoginInfo>;
private loginInfoSub: Subscription;
private apiEndPoint = API_ENDPOINT;
private apiEndPointParams = API_ENDPOINT_PARAMS;
......@@ -57,10 +59,17 @@ export default class SchoolHome implements OnInit {
this.authToken = '';
this.authRole = '';
this.name = '';
this.loginInfo$ = new BehaviorSubject(LOGININFO_INITIAL_STATE);
this.formGroup = this.fb.group({
});
};
ngOnDestroy() {
if (this.loginInfoSub)
this.loginInfoSub.unsubscribe();
this.loginInfo$.unsubscribe();
};
ngOnInit() {
/* this.authToken = this.getCookie('auth_token');
this.authRole = this.getCookie('auth_role');
......@@ -70,23 +79,24 @@ export default class SchoolHome implements OnInit {
this.removeCookie('auth_role');
} */
this.loginInfo$ = this._ngRedux.select(state => {
this.loginInfoSub = this._ngRedux.select(state => {
if (state.loginInfo.size > 0) {
state.loginInfo.reduce(({}, loginInfoToken) => {
this.authToken = loginInfoToken.auth_token;
this.authRole = loginInfoToken.auth_role;
if (this.authToken && this.authToken.length > 0)
if (this.authRole = 'director')
console.log("ok");
if (this.authToken && this.authToken.length > 0) {
if (this.authRole === 'director') {
this.router.navigate(['/school/director-buttons']);
if (this.authRole = 'pde')
}
else if (this.authRole === 'pde')
this.router.navigate(['/school/perfecture-view']);
}
return loginInfoToken;
}, {});
}
return state.loginInfo;
});
}).subscribe(this.loginInfo$);
// subscribe to router event
......
......@@ -25,10 +25,29 @@ import {AppSettings} from '../../app.settings';
@Component({
selector: 'application-submit',
template: `
<div class = "loading" *ngIf="(studentDataFields$ | async).size === 0 || (criteria$ | async).size === 0 || (regions$ | async).size === 0 || (epalclasses$ | async).size === 0 || (loginInfo$ | async).size === 0 || (showLoader | async) === true"></div>
<div id="studentFormSentNotice" (onHidden)="onHidden()" class="modal fade" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header modal-header-success">
<h3 class="modal-title pull-left"><i class="fa fa-check-square-o"></i>&nbsp;&nbsp;{{ modalTitle | async }}</h3>
<button type="button" class="close pull-right" aria-label="Close" (click)="hideModal()">
<span aria-hidden="true"><i class="fa fa-times"></i></span>
</button>
</div>
<div class="modal-body">
<p>{{ modalText | async }}</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default pull-left" data-dismiss="modal">Κλείσιμο</button>
</div>
</div>
</div>
</div>
<div class="row">
<breadcrumbs></breadcrumbs>
</div>
<div class = "loading" *ngIf="(studentDataFields$ | async).size === 0 || (criteria$ | async).size === 0 || (regions$ | async).size === 0 || (epalclasses$ | async).size === 0 || (loginInfo$ | async).size === 0"></div>
<application-preview-select></application-preview-select>
<button type="button button-lg pull-right" *ngIf="(studentDataFields$ | async).size > 0 && (criteria$ | async).size > 0 && (regions$ | async).size > 0 && (epalclasses$ | async).size > 0 && (loginInfo$ | async).size > 0" class="btn-primary btn-lg pull-center" (click)="submitNow()">Υποβολή</button>
`
......@@ -59,6 +78,10 @@ import {AppSettings} from '../../app.settings';
private sectorFieldsSub: Subscription;
private epalclassesSub: Subscription;
private loginInfoSub: Subscription;
private modalTitle: BehaviorSubject<string>;
private modalText: BehaviorSubject<string>;
public isModalShown: BehaviorSubject<boolean>;
private showLoader: BehaviorSubject<boolean>;
constructor(private _ngRedux: NgRedux<IAppState>,
private router: Router,
......@@ -72,9 +95,15 @@ import {AppSettings} from '../../app.settings';
this.studentDataFields$ = new BehaviorSubject(STUDENT_DATA_FIELDS_INITIAL_STATE);
this.criteria$ = new BehaviorSubject(CRITERIA_INITIAL_STATE);
this.loginInfo$ = new BehaviorSubject(LOGININFO_INITIAL_STATE);
this.modalTitle = new BehaviorSubject("");
this.modalText = new BehaviorSubject("");
this.isModalShown = new BehaviorSubject(false);
this.showLoader = new BehaviorSubject(false);
};
ngOnInit() {
(<any>$('#studentFormSentNotice')).appendTo("body");
this.loginInfoSub = this._ngRedux.select(state => {
if (state.loginInfo.size > 0) {
state.loginInfo.reduce(({}, loginInfoToken) => {
......@@ -161,6 +190,7 @@ import {AppSettings} from '../../app.settings';
};
ngOnDestroy() {
(<any>$('#studentFormSentNotice')).remove();
if (this.studentDataFieldsSub) this.studentDataFieldsSub.unsubscribe();
if (this.criteriaSub) this.criteriaSub.unsubscribe();
if (this.regionsSub) this.regionsSub.unsubscribe();
......@@ -197,8 +227,6 @@ import {AppSettings} from '../../app.settings';
criteriaObj[i] =new StudentCriteriaChosen(null, null, this.studentCriteria[i]);
aitisiObj['2'] = criteriaObj;
console.log("Debugging..");
console.log(aitisiObj[0]['currentclass']);
//if (aitisiObj[0]['currentclass'] === "Β' Λυκείου" )
if (aitisiObj[0]['currentclass'] === "2" )
aitisiObj['3'] = new StudentSectorChosen(null, this.sectorSelected);
......@@ -207,36 +235,12 @@ import {AppSettings} from '../../app.settings';
aitisiObj['3'] = new StudentCourseChosen(null, this.courseSelected);
}
//console.log(aitisiObj);
this.submitRecord(aitisiObj);
}
submitRecord_ver1(entityName, record) {
let headers = new Headers({
"Authorization": "Basic bmthdHNhb3Vub3M6emVtcmFpbWU=",
"Accept": "*/*",
"Access-Control-Allow-Credentials": "true",
"Content-Type": "application/json",
// "Content-Type": "text/plain", // try to skip preflight
"X-CSRF-Token": "Me9oRh6jrAOAJ2rsnu_3lOLxqA_WMoJLeJ7dhe4HTBA"
});
let options = new RequestOptions({ headers: headers, withCredentials: true });
let connectionString = `${AppSettings.API_ENDPOINT}/entity/` + entityName;
//this.http.post(`${AppSettings.API_ENDPOINT}/entity/epal_student`, this.student, options)
this.http.post(connectionString, record, options)
// Call map on the response observable to get the parsed people object
.map((res: Response) => res.json())
.subscribe(success => {alert("Επιτυχής αποστολή στοιχείων στο entity: " + entityName); console.log("success post")}, // put the data returned from the server in our variable
error => {alert("Αποτυχία αποστολής στοιχείων στο entity: " + entityName); console.log("Error HTTP POST Service")}, // in case of failure show this message
() => console.log("write this message anyway"));//run this code in all cases);
}
submitRecord(record) {
let auth_str = this.authToken + ":" + this.authToken;
//let authTokenPost = "nkatsaounos" + ":" + "...";
let authTokenPost = this.authToken + ":" + this.authToken;
let headers = new Headers({
......@@ -244,43 +248,43 @@ import {AppSettings} from '../../app.settings';
"Accept": "*/*",
"Access-Control-Allow-Credentials": "true",
"Content-Type": "application/json",
// "X-CSRF-Token": "Pz3psGTGpc-EGNLm3tgzCpqEMg3HW0fCKf8xOnQLAsc"
});
//let headers = new Headers({
// "Authorization": "Basic bmthdHNhb3Vub3M6emVtcmFpbWU=",
// "Accept": "*/*",
// "Access-Control-Allow-Credentials": "true",
// "Content-Type": "application/json",
// "X-CSRF-Token": "Pz3psGTGpc-EGNLm3tgzCpqEMg3HW0fCKf8xOnQLAsc"
//});
let options = new RequestOptions({ headers: headers, method: "post", withCredentials: true });
let connectionString = `${AppSettings.API_ENDPOINT}/epal/appsubmit`;
this.showLoader.next(true);
this.http.post(connectionString, record, options)
// Call map on the response observable to get the parsed people object
.map((res: Response) => res.json())
.subscribe(
success => {alert("Επιτυχές post στο route υποβολής " ); console.log("success post"); }, // put the data returned from the server in our variable
error => {alert("Αποτυχές post στο route υποβολής " ); console.log("Error HTTP POST Service")}, // in case of failure show this message
() => console.log("write this message anyway"),
);//run this code in all cases);
success => {
this.modalTitle.next("Υποβολή Αίτησης Εγγραφής");
this.modalText.next("Η υποβολή της αίτησής σας πραγματοποιήθηκε. Μπορείτε να την εκτυπώσετε από την επιλογή 'Εξαγωγή σε PDF'. Θα ειδοποιηθείτε στο e-mail που δηλώσατε για την εξέλιξη της αίτησής σας");
this.showModal();
console.log("success post"); },
error => {
this.modalTitle.next("Υποβολή Αίτησης Εγγραφής");
this.modalText.next("Η υποβολή της αίτησής σας απέτυχε. Παρακαλούμε προσπαθήστε πάλι και αν το πρόβλημα συνεχίσει να υφίσταται, επικοινωνήστε με την ομάδα υποστήριξης");
this.showModal();
console.log("Error HTTP POST Service")},
() => {
console.log("write this message anyway");
this.showLoader.next(false);
},
);
//});
}
public showModal():void {
(<any>$('#studentFormSentNotice')).modal('show');
}
}
public hideModal():void {
(<any>$('#studentFormSentNotice')).modal('hide');
}