application.preview.ts 9.54 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
import { Component, OnInit } from '@angular/core';
import { Router } from '@angular/router';
import { Observable } from 'rxjs/Rx';
import { Injectable } from "@angular/core";
import { NgRedux, select } from 'ng2-redux';
import { IAppState } from '../../store/store';
import { SectorFieldsActions } from '../../actions/sectorfields.actions';
import { SectorCoursesActions } from '../../actions/sectorcourses.actions';
import { RegionSchoolsActions } from '../../actions/regionschools.actions';
import { StudentDataFieldsActions } from '../../actions/studentdatafields.actions';
Open Source Developer's avatar
Open Source Developer committed
11
import { EpalClassesActions } from '../../actions/epalclass.actions';
12
13
14
15
import { ISectorFields } from '../../store/sectorfields/sectorfields.types';
import { ISectors } from '../../store/sectorcourses/sectorcourses.types';
import { IRegions } from '../../store/regionschools/regionschools.types';
import { IStudentDataFields } from '../../store/studentdatafields/studentdatafields.types';
Open Source Developer's avatar
Open Source Developer committed
16
import { IEpalClasses } from '../../store/epalclasses/epalclasses.types';
17
18
19
20
21
22
23
import {AppSettings} from '../../app.settings';

@Component({
    selector: 'application-preview-select',
    template: `
        <h4 style="margin-top: 20px; line-height: 2em; ">Οι επιλογές μου</h4>

Open Source Developer's avatar
Open Source Developer committed
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41


       <div class="row">
        <div class="btn-group inline pull-center">
            <button type="button" class="btn-primary btn-md pull-center" (click)="defineClass()">
            Η τάξη μου<span class="glyphicon glyphicon-menu-right"></span>
            </button>
        </div>
        </div>
        <ul class="list-group" style="margin-bottom: 20px;">
            <div *ngFor="let epalclass$ of epalclasses$ | async;">
                <li class="list-group-item">
                    Τάξη εισαγωγής: {{epalclass$.name}}
                </li>
            </div>
        </ul>


42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
        <div class="row">
        <div class="btn-group inline pull-center">
            <button type="button" class="btn-primary btn-md pull-center" (click)="defineSector()">
            O τομέας μου<span class="glyphicon glyphicon-menu-right"></span>
            </button>
        </div>
        </div>
        <ul class="list-group" style="margin-bottom: 20px;">
            <div *ngFor="let sectorField$ of sectorFields$ | async;">
                <li class="list-group-item" *ngIf="sectorField$.selected === true" >
                    {{sectorField$.name}}
                </li>
            </div>
        </ul>

        <div class="row">
        <div class="btn-group inline pull-center">
59
            <button type="button" class="btn-primary btn-md pull-center" (click)="defineCourse()" >
60
61
62
63
            Η ειδικότητά μου<span class="glyphicon glyphicon-menu-right"></span>
            </button>
        </div>
        </div>
64
65
66
67
68
69
70
71
72
73

        <!--
        <div class="row">
        <div class="btn-group inline pull-right">
            <button class="btn-primary btn-md pull-right my-btn"  type="button" (click)="defineCourse()" [hidden] = "numSelectedCourses === 0" >
            Επαναφορά<span class="glyphicon glyphicon-menu-right"></span>
            </button>
        </div>
        </div>

74
75
76
77
78
79
80
81
82
83
84
85
        <ul class="list-group" style="margin-bottom: 20px;">
              <div *ngFor="let sector$ of sectors$ | async;">
                <div *ngFor="let course$ of sector$.courses;" >
                <li class="list-group-item" *ngIf="course$.selected === true">
                    {{course$.course_name}}
                </li>
            </div>
            </div>
        </ul>

        <div class="row">
        <div class="btn-group inline pull-center">
86
            <button type="button" id = "butsch" class="btn-primary btn-md pull-center" (click)="defineSchools()" [disabled] = "numSelectedSchools === 0 ">
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
            Τα σχολεία μου<span class="glyphicon glyphicon-menu-right"></span>
            </button>
        </div>
        </div>
        <ul class="list-group" style="margin-bottom: 20px;">
              <div *ngFor="let region$ of regions$ | async;">
                <div *ngFor="let epal$ of region$.epals; " >
                <li class="list-group-item" *ngIf="epal$.selected === true">
                    {{epal$.epal_name}}
                </li>
            </div>
            </div>
        </ul>

        <div class="row">
        <div class="btn-group inline pull-center">
            <button type="button" class="btn-primary btn-md pull-center" (click)="definePersonalData()">
            Τα στοιχεία μου<span class="glyphicon glyphicon-menu-right"></span>
            </button>
        </div>
        </div>
        <ul class="list-group" style="margin-bottom: 20px;">
              <div *ngFor="let studentDataField$ of studentDataFields$ | async;">
                <li class="list-group-item">
                    Όνομα μαθητή: {{studentDataField$.studentFirstname}}
                </li>
                <li class="list-group-item">
                    Επώνυμο μαθητή: {{studentDataField$.studentSurname}}
                </li>
                <li class="list-group-item">
                    AMKA μαθητή: {{studentDataField$.studentAmka}}
                </li>
            </div>
        </ul>
  `
})

@Injectable() export default class ApplicationPreview implements OnInit {
    private sectors$: Observable<ISectors>;
    private regions$: Observable<IRegions>;
    private sectorFields$: Observable<ISectorFields>;
    private studentDataFields$: Observable<IStudentDataFields>;
Open Source Developer's avatar
Open Source Developer committed
129
130
    private epalclasses$: Observable<IEpalClasses>;

131

132
133
    private courseActive = "-1";
    private numSelectedSchools = <number>0;
134
    //private numSelectedCourses = <number>0;
135
136
137
138
139

    constructor(private _rsa: SectorCoursesActions,
                private _rsb: RegionSchoolsActions,
                private _rsc: SectorFieldsActions,
                private _rsd: StudentDataFieldsActions,
Open Source Developer's avatar
Open Source Developer committed
140
                private _rcd: EpalClassesActions,
141
142
143
144
145
146
                private _ngRedux: NgRedux<IAppState>,
                private router: Router
            ) {
    };

    ngOnInit() {
147
        this.courseActive = this.getCourseActive();
148
        this.sectors$ = this._ngRedux.select(state => {
149
            //let numsel = 0;
150
151
            state.sectors.reduce((prevSector, sector) =>{
                sector.courses.reduce((prevCourse, course) =>{
152
153
154
                  //if (course.selected === true)  {
                  //  numsel++;
                  //}
155
156
157
158
                    return course;
                }, {});
                return sector;
            }, {});
159
            //this.numSelectedCourses = numsel;
160
161
162
163
            return state.sectors;
        });

        this.regions$ = this._ngRedux.select(state => {
164
165
              let numsel = 0;
              state.regions.reduce((prevRegion, region) =>{
166
167
                  region.epals.reduce((prevEpal, epal) =>{
                    if (epal.selected === true)
168
                        numsel++;
169
                    return epal;
170
171
172
173
174
175
                  }, {});
                  return region;
              }, {});
              this.numSelectedSchools = numsel;
              return state.regions;
          });
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190

        this.sectorFields$ = this._ngRedux.select(state => {
            state.sectorFields.reduce(({}, sectorField) =>{
                return sectorField;
            }, {});
            return state.sectorFields;
        });

        this.studentDataFields$ = this._ngRedux.select(state => {
            state.studentDataFields.reduce(({}, studentDataField) =>{
                return studentDataField;
            }, {});
            return state.studentDataFields;
        });

Open Source Developer's avatar
Open Source Developer committed
191
192
193
194
195
196
197
198
199

        this.epalclasses$ = this._ngRedux.select(state => {
            state.epalclasses.reduce(({}, epalclass) =>{
                return epalclass;
            }, {});
            return state.epalclasses;
        });


200
201
202
203
204
    }

    defineSector() {
        this.router.navigate(['/sector-fields-select']);
    }
205

206
207
208
209
210
211
    defineSchools() {
        this.router.navigate(['/region-schools-select']);
    }
    definePersonalData() {
        this.router.navigate(['/student-application-form-main']);
    }
Open Source Developer's avatar
Open Source Developer committed
212
213
214
215
    defineClass() {
        this.router.navigate(['/epal-class-select']);
    }

216

217
218
219
220
221
222
223
224
225
226
227
    getCourseActive() {
        const { sectors } = this._ngRedux.getState();
        let l,m;
        for ( l=0; l<sectors.size; l++)
          if (sectors["_tail"]["array"][l]["sector_selected"] === true)
            for ( m=0; m < sectors["_tail"]["array"][l]["courses"].length; m++)
              if (sectors["_tail"]["array"][l]["courses"][m]["selected"] === true)
                 return sectors["_tail"]["array"][l]["courses"][m]["course_id"];
    }

/*
228
    defineCourse() {
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
      this._rsb.getRegionSchools("-1", true);
      this.regions$ = this._ngRedux.select(state => {
          let numsel = 0;
          state.regions.reduce((prevRegion, region) =>{
              region.epals.reduce((prevSchool, school) =>{
                if (school.selected === true)
                    numsel++;
                return school;
              }, {});
              return region;
          }, {});
          this.numSelectedSchools = numsel;
          return state.regions;
      });

      this._rsa.getSectorCourses(true);
      this.sectors$ = this._ngRedux.select(state => {
          state.sectors.reduce((prevSector, sector) =>{
              sector.courses.reduce((prevCourse, course) =>{
                  return course;
              }, {});
              return sector;
          }, {});
          return state.sectors;
      });

      this.router.navigate(['/sectorcourses-fields-select']);

257
    }
258
  */
259

260
261
262
  defineCourse() {
      this.router.navigate(['/sectorcourses-fields-select']);
  }
263

264
}