PageSourceSearch

https://1lo.suwalki.pl/agenda/dlg/student.js

js 1lo.suwalki.pl collected 2026-09-28 13:47:35 UTC 225,598 bytes, 3,465 lines download raw bytes

1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports._hotswap = exports.SkPostihnutiaInput = exports.StudentStipendiaField = exports.StudentDotacieField = exports.validate_emailUnique = exports.duplicates_columns = exports.showStudentDlg = void 0;
4var tslib_1 = require("tslib");
5var React = require("react");
6var edurequest_1 = require("../../asc/edurequest");
7var asc_react_1 = require("../../asc/asc_react");
8var itemdlg_1 = require("../../rpr/itemdlg");
9var dbi_react_1 = require("../../rpr/dbi_react");
10var tabview_1 = require("../../react/tabview");
11var dbi_1 = require("../../rpr/dbi");
12var maindbi_ui_1 = require("../../rpr/maindbi_ui");
13var fieldcallback_1 = require("../fieldcallback");
14var userface_1 = require("../../rpr/userface");
15var asc_react2_1 = require("../../asc/asc_react2");
16var moveupcolumns_1 = require("../moveupcolumns");
17var address_1 = require("./address");
18var itemdlg_validate_1 = require("../../rpr/itemdlg_validate");
19var student_1 = require("./server/student");
20var ecards_1 = require("../../rpr/ecards");
21var anchor_1 = require("../../react/anchor");
22var lib_date_1 = require("../../asc/lib_date");
23var datefield_1 = require("../../react/datefield");
24var comboboxmulti_1 = require("../../react/comboboxmulti");
25var datatable_1 = require("../../react/datatable");
26var actions_1 = require("../../asc/actions");
27var combobox_1 = require("../../react/combobox");
28var subtableinput_1 = require("../../react/subtableinput");
29var autocomplete_1 = require("../../react/autocomplete");
30var parent_1 = require("./server/parent");
31var parent_2 = require("./parent");
32var validatefield_1 = require("../../react/validatefield");
33var help_1 = require("../../react/help");
34var account_1 = require("../../rpr/account");
35var class_1 = require("./class");
36var sk_ris_1 = require("./sk_ris");
37var cz_controls_1 = require("./cz_controls");
38var student_hodiny_1 = require("./student_hodiny");
39var KontrahovanieDiv = React.lazy(function () { return Promise.resolve().then(function () { return require('../kontrahovanie'); }).then(function (m) { return ({ default: m.KontrahovanieDiv }); }); });
40var CzSchoolCombo = React.lazy(function () { return Promise.resolve().then(function () { return require('./cz_schoolcombo'); }); });
41var SkSchoolCombo = React.lazy(function () { return Promise.resolve().then(function () { return require('./sk_schoolcombo'); }); });
42var SkRisTab = React.lazy(function () { return Promise.resolve().then(function () { return require('./sk_ris'); }); });
43var EGovRsFileCard = React.lazy(function () { return Promise.resolve().then(function () { return require('../../egov/pics/jsw/views/egov_rsfile_card'); }); });
44function showStudentDlg(year, table, id, options) {
45    var _a;
46    return tslib_1.__awaiter(this, void 0, Promise, function () {
47        var req, dbi, student_rows_1, fix, cop, studentid;
48        return tslib_1.__generator(this, function (_b) {
49            switch (_b.label) {
50                case 0:
51                    req = edurequest_1.client_req;
52                    if (!(id && !id.includes(':'))) return [3, 2];
53                    return [4, ASC.blockUI(req.maindbi(year, {
54                            needed_part: {
55                                studentkopias: ['studentid'],
56                            }
57                        }))];
58                case 1:
59                    dbi = _b.sent();
60                    student_rows_1 = dbi.tableBucketColumn('studentkopias', 'studentid');
61                    fix = function (id) {
62                        var _a, _b;
63                        if (!id || id.includes(':'))
64                            return id;
65                        return ((_b = (_a = student_rows_1.get(id)) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.id) || (id + ':0');
66                    };
67                    id = fix(id);
68                    options = tslib_1.__assign(tslib_1.__assign({}, options), { navigateids: (_a = options.navigateids) === null || _a === void 0 ? void 0 : _a.map(fix) });
69                    _b.label = 2;
70                case 2: return [4, asc_react_1.RDialog.show(React.createElement(StudentDlg, { year: year, id: id, options: options }))];
71                case 3:
72                    cop = _b.sent();
73                    if (cop.startsWith('add=')) {
74                        studentid = cop.substr(4).split(':')[0];
75                        if (table == 'students')
76                            cop = 'add=' + studentid;
77                    }
78                    return [2, cop];
79            }
80        });
81    });
82}
83exports.showStudentDlg = showStudentDlg;
84function student_cz_school_druhy(dbi, srow) {
85    var _a;
86    var req = dbi.req;
87    if (req.school_country != 'cz')
88        return [];
89    var crow = dbi.rowData('classes', srow.classid);
90    for (var _i = 0, _b = [
91        crow
92            ? [crow.schoolid]
93            : dbi.rowDatas('admissions', srow.admissionids || []).map(function (ar) { return ar === null || ar === void 0 ? void 0 : ar.schoolid; }),
94        [(_a = dbi.rowData('globals', '1')) === null || _a === void 0 ? void 0 : _a.schoolid],
95        dbi.tableIds('ourschools'),
96    ]; _i < _b.length; _i++) {
97        var schoolids = _b[_i];
98        schoolids = schoolids.filter(function (id) { return id; });
99        var schools = dbi.rowDatas('ourschools', schoolids).filter(function (school) { return school === null || school === void 0 ? void 0 : school.cz_matrika_druh; });
100        if (schools.length > 0)
101            return (0, dbi_1.idsArrayUnique)(schools.map(function (school) { return school.cz_matrika_druh; }));
102    }
103    return ['Z', 'S'];
104}
105student_cz_school_druhy.needed_part = (0, dbi_1.typed)({
106    studentkopias: ['classid', 'admissionids'],
107    globals: ['schoolid'],
108    classes: ['schoolid'],
109    admissions: ['schoolid'],
110    ourschools: [
111        'cz_matrika_druh',
112    ]
113});
114exports.duplicates_columns = [
115    'numberinclass',
116    'locker',
117    'platby_vs',
118    'number',
119    'nin',
120];
121function StudentSkSzCheckbox(props) {
122    var name = props.dbiColumn.name();
123    var is2026 = props.dbiColumn.id == 'sk_SZ_2026';
124    var word = is2026 ? 'znevýhodňujúceho' : 'znevýhodneného';
125    var suffix = is2026 ? 'ňujúce' : 'nené';
126    var i = name.indexOf(word);
127    var label = i < 0 ? name : React.createElement(React.Fragment, null,
128        name.slice(0, i),
129        React.createElement("b", null,
130            word.slice(0, word.length - suffix.length - 2),
131            React.createElement("span", { style: { textDecoration: 'underline', textUnderlineOffset: '3px' } }, suffix),
132            "ho"),
133        name.slice(i + word.length));
134    return React.createElement(asc_react_1.RCheckBox, { valueRef: props.valueRef, label: label });
135}
136function StudentDlg(props) {
137    var _this = this;
138    var _a, _b, _c, _d;
139    var req = edurequest_1.client_req;
140    var log_module = 'StudentDlg';
141    var year = props.year, options = props.options;
142    var school_country = req.school_country;
143    var blank_add = (_a = props.options) === null || _a === void 0 ? void 0 : _a.row;
144    (0, asc_react_1.useTTLang)();
145    var itemState = (0, itemdlg_1.useMainDBIItemDlgState)(year, 'studentkopias', props.id, {
146        date: options.date,
147        needed_part: dbi_1.DBITools.mergeNeededParts(moveupcolumns_1.useMoveUpColumns, CzHealthinput, ParentInput, student_cz_school_druhy, {
148            studentkopias: tslib_1.__spreadArray([
149                'studentid',
150                'firstname',
151                'lastname',
152                'callname',
153                'prefname',
154                'birthlastname',
155                'gender',
156                'email',
157                'email_private',
158                'mobile',
159                'username',
160                'username_hint',
161                'subname',
162                'nameprefix',
163                'namesuffix',
164                'alternate_firstname',
165                'alternate_lastname',
166                'classid',
167                'numberinclass',
168                'number',
169                'grade',
170                'repeated_grades',
171                'odborid',
172                'odbor2id',
173                'educationplanid',
174                'schoolid',
175                'otherschoolid',
176                'otherschool_class',
177                'igroupids',
178                'datefrom',
179                'dateto',
180                'exclude_subjectids',
181                'parentids',
182                'nin',
183                'ssn',
184                'passport',
185                'foreign_code',
186                'nationality',
187                'citizenship',
188                'citizenship2',
189                'citizenship_type_code',
190                'mothertongue',
191                'familytongue',
192                'lang2',
193                'locker',
194                'platby_vs',
195                'contract_number',
196                'carplate',
197                'idcardnum',
198                'edesk_number',
199                'prax_firmaid',
200                'root_edupage',
201                'prax_firmas',
202                'note',
203                'cb_note',
204                'note_katlist',
205                'note_skdlist',
206                'sk_dolozka_katlist',
207                'sk_posledna_cinnost',
208                'sk_poistenie',
209                'educloudids',
210                'isic_order',
211                'sisid',
212                'ekarty',
213                'prevschoolid',
214                'nextschoolid',
215                'prevschool_code',
216                'nextschool_code',
217                'groupsubjectids',
218                'teacherid',
219                'out',
220                'registrationid',
221                'birthdate',
222                'birthcity',
223                'birthcountry',
224                'age_years',
225                'admission_resultid',
226                'admissionids',
227                'nextschoolid',
228                'nextodbor_code',
229                'nextschools',
230                'health_note',
231                'health_bloodtype',
232                'health_allergies',
233                'health_vaccine_measles',
234                'transport_pickup',
235                'transport_dropoff',
236                'transport_school',
237                'transport_typ',
238                'foreignlang1',
239                'foreignlang2',
240                'foreignlang3',
241                'foreignlang4',
242                'foreignlang1_type',
243                'foreignlang2_type',
244                'foreignlang3_type',
245                'foreignlang4_type',
246                'foreignlang1_auto',
247                'foreignlang2_auto',
248                'foreignlang3_auto',
249                'foreignlang4_auto',
250                'at_religion',
251                'at_bpk',
252                'co_iddoc_type',
253                'co_iddoc_number',
254                'co_iddoc_place',
255                'cz_matrika_DELST',
256                'cz_zdr_poist',
257                'cz_zdr_cpoj',
258                'cz_matrika_exclude',
259                'cz_nedojizdi_denne',
260                'cz_nebydli_v_miste_skoly',
261                'cz_matrika_JAZ1',
262                'cz_matrika_JAZ2',
263                'cz_matrika_JAZ3',
264                'cz_matrika_JAZ4',
265                'cz_matrika_P_JAZ1',
266                'cz_matrika_P_JAZ2',
267                'cz_matrika_P_JAZ3',
268                'cz_matrika_P_JAZ4',
269                'cz_matrika_KOD_ZAH',
270                'cz_matrika_KOD_UKON',
271                'cz_matrika_LET_PSD',
272                'cz_matrika_ZPUSOB',
273                'cz_matrika_PRIZN_ST',
274                'cz_matrika_FIN',
275                'cz_matrika_ODHL',
276                'cz_matrika_pt_ODHL',
277                'cz_matrika_STUPEN',
278                'cz_admission_spadovy',
279                'cz_matrika_OBORS',
280                'cz_zapisovylistok_number',
281                'cz_matrika_RMAT',
282                'cz_matrika_nZVJ',
283                'cz_matrika_JAZ_PODP',
284                'cz_matrika_JAZ_PRIP',
285                'cz_matrika_pt_KOD_ZAH',
286                'cz_visa_number',
287                'cz_zak67',
288                'cz_predskolak',
289                'de_religion',
290                'de_religion_wl',
291                'de_schulbesuchsjahr',
292                'de_schulabschluss',
293                'de_abschlussprognose',
294                'de_univentionid',
295                'sso1_id',
296                'de_fsn',
297                'de_sorgerecht',
298                'custody',
299                'de_bundesland',
300                'de_pflegegrad',
301                'de_asylbewerber',
302                'de_visum',
303                'de_daz',
304                'de_einwanderungsjahr',
305                'de_forderschwerpunkt',
306                'de_wahlpflichtfach1',
307                'de_wahlpflichtfach2',
308                'de_wahlpflichtfach3',
309                'de_einschulung_date',
310                'de_einschulung_art',
311                'de_anerkennung_zeugnis',
312                'de_hortbetreuung',
313                'de_behinderung',
314                'de_gender',
315                'de_bildungsgang',
316                'de_differenzierung_bildungsgang',
317                'sk_SZ',
318                'sk_SZ_2026',
319                'sk_dovod_zaradenia_zo_szp',
320                'sk_dovod_adaptacnej_triedy',
321                'sk_ZZ',
322                'sk_DV',
323                'sk_SS',
324                'sk_hmotna_nudza',
325                'sk_utecenec',
326                'sk_spis_info',
327                'sk_zdr_poist',
328                'sk_spadova_ms',
329                'sk_spadova_zs',
330                'sk_rok_dochadzky',
331                'sk_dlzka_studia',
332                'sk_forma_studia',
333                'sk_druh_studia',
334                'sk_typ_prospechu',
335                'sk_typ_prospechu2',
336                'sk_eqf',
337                'sk_vyucovaci_jazyk',
338                'sk_rok_ukoncenia_dochadzky',
339                'sk_datum_ukoncenia_dochadzky',
340                'sk_typ_zaciatku_studia',
341                'sk_typ_ukoncenia_studia',
342                'sk_typ_dochadzky',
343                'sk_majster_teacherid',
344                'sk_prax_miesto',
345                'sk_predchadzajuce_vzdelanie',
346                'physicianid',
347                'dormitoryid',
348                'dormitory_room',
349                'sk_ris_exclude',
350                'sk_postihnutia',
351                'sk_zus_stupen',
352                'sk_cislokarty',
353                'sk_zsrkarta',
354                'sk_postihnutia_poradna',
355                'sk_postihnutia_datum',
356                'sk_nabozenstvo_typ',
357                'sk_diagnoza',
358                'sk_vysetrenia',
359                'skd_attending',
360                'skd_number',
361                'skd_prihlaska_datum',
362                'skd_prihlaska_datum_auto',
363                'sk_dotacie',
364                'sk_stipendia',
365                'sk_ucast_svp',
366                'sk_ucast_lk',
367                'sk_druh_sportu',
368                'sk_ms_datefrom',
369                'sk_ms_dateto',
370                'sk_ms_v',
371                'sk_psd_datefrom',
372                'sk_psd_v',
373                'sk_predskolak',
374                'sk_vzdelavaci_poukaz',
375                'sk_vzdelavaci_poukaz_uplatnuje',
376                'sk_vzdelavaci_poukaz_groupsubjects_id',
377                'sg_citizenship_status',
378                'sg_ethnicity',
379                'external',
380                'tt_ethnicity',
381                'tt_religion',
382                'kcpe_mean',
383                'kcpe_total',
384                'refugee',
385                'orphan',
386                'special_needs',
387                'reason_application',
388                'height',
389                'weight',
390                'cestovne',
391                'cestovne_sposobdopravy',
392                'cestovne_maxDaysPerMonth',
393                'zus_rocnik',
394                'zus_cast',
395                'zus_stupen',
396                'zus_druh',
397                'zus_hlavny_predmet',
398                'zus_obligatny_nastroj',
399                'zus_volitelny_nastroj',
400                'zus_cestne_vyhlasenie',
401                'zus_prijimacia_skuska_datum',
402                'photo_url',
403                'presences',
404                'cf_s1',
405                'cf_s2',
406                'cf_s3',
407                'cf_s4',
408                'cf_s5',
409                'cf_s6',
410                'cf_s7',
411                'cf_s8',
412                'cf_s9',
413                'cf_s10',
414                'cf_s11',
415                'cf_s12',
416                'cf_s13',
417                'cf_s14',
418                'cf_s15',
419                'cf_d1',
420                'cf_id1',
421                'cf_cb1',
422                'cf_cb2',
423                'cf_cb3',
424                'cf_cb4',
425                'cf_cb5',
426                'cf_cb6',
427                'cf_cb7',
428                '_uial',
429                'changes',
430                'changes_g',
431                'changes_sy',
432                'eduid',
433                'at_half_dateto',
434                'at_half_dateto_auto',
435                'at_end_dateto',
436                'at_end_dateto_auto',
437                'representative_classids'
438            ], address_1.AddressInput.part_columns, true),
439            classes: [
440                '__name',
441                'schoolid',
442                'grade',
443                'odborid',
444                'educationplanid',
445                'cz_matrika_DELST',
446                'cz_matrika_DRST',
447                'sk_rok_dochadzky',
448                'sk_dlzka_studia',
449                'sk_forma_studia',
450                'sk_druh_studia',
451                'sk_typ_triedy',
452                'sk_typ_prospechu',
453                'sk_vyucovaci_jazyk',
454                'teacherid',
455                'teacherids',
456            ],
457            parents: ['nin', 'birthdate', 'birthlastname', 'is_dead'],
458            subjects: ['__name'],
459            teachers: ['__name'],
460            igroups: ['__name'],
461            odbors: ['__name', 'code', 'subname', 'sk_extra_identification'],
462            educationplans: ['__name'],
463            prax_firmas: ['__name', 'company_name'],
464            groupsubjects: ['__name', 'jeSkd', 'subjectid'],
465            admissions: ['__name'],
466            admission_results: ['__name'],
467            schools: ['__name', 'cz_matrika_druh', 'cz_izo', 'eduid'],
468            ourschools: ['__name', 'cz_matrika_druh', 'cz_izo'],
469            dormitories: ['__name'],
470            physicians: ['__name'],
471            globals: ['date', 'schoolid'],
472            global_settings: ['noveKurzy', 'agenda'],
473            halves: ['__name'],
474        }, class_1.OurschoolCombo),
475        needed_combos: dbi_1.DBITools.mergeNeededCombos(CzHealthinput.needed_combos, ParentInput.needed_combos, {
476            studentkopias: tslib_1.__spreadArray([
477                'gender',
478                'nationality',
479                'citizenship',
480                'citizenship2',
481                'citizenship_type_code',
482                'birthcountry',
483                'mothertongue',
484                'familytongue',
485                'lang2',
486                'grade',
487                'repeated_grades',
488                'isic_order',
489                'transport_school',
490                'presences',
491                'sk_utecenec',
492                'sk_zdr_poist',
493                'sk_rok_dochadzky',
494                'sk_dlzka_studia',
495                'sk_forma_studia',
496                'sk_rok_ukoncenia_dochadzky',
497                'sk_druh_studia',
498                'sk_typ_prospechu',
499                'sk_typ_prospechu2',
500                'sk_vyucovaci_jazyk',
501                'sk_prax_miesto',
502                'sk_SS',
503                'cz_zdr_poist',
504                'cz_matrika_DELST',
505                'cz_matrika_JAZ1',
506                'cz_matrika_JAZ2',
507                'cz_matrika_JAZ3',
508                'cz_matrika_JAZ4',
509                'cz_matrika_P_JAZ1',
510                'cz_matrika_P_JAZ2',
511                'cz_matrika_P_JAZ3',
512                'cz_matrika_P_JAZ4',
513                'cz_matrika_KOD_ZAH',
514                'cz_matrika_KOD_UKON',
515                'cz_matrika_LET_PSD',
516                'cz_matrika_ZPUSOB',
517                'cz_matrika_PRIZN_ST',
518                'cz_matrika_FIN',
519                'cz_matrika_STUPEN',
520                'cz_matrika_ODHL',
521                'cz_matrika_pt_ODHL',
522                'cz_admission_spadovy',
523                'cz_matrika_pt_KOD_ZAH',
524                'at_religion',
525                'de_religion',
526                'de_religion_wl',
527                'de_schulbesuchsjahr',
528                'de_abschlussprognose',
529                'de_schulabschluss',
530                'de_fsn',
531                'de_sorgerecht',
532                'custody',
533                'de_pflegegrad',
534                'de_asylbewerber',
535                'de_visum',
536                'de_forderschwerpunkt',
537                'de_einschulung_art',
538                'de_anerkennung_zeugnis',
539                'de_hortbetreuung',
540                'de_behinderung',
541                'de_gender',
542                'de_bildungsgang',
543                'de_differenzierung_bildungsgang',
544                'co_iddoc_type',
545                'sg_citizenship_status',
546                'sg_ethnicity',
547                'tt_ethnicity',
548                'tt_religion',
549                'foreignlang1',
550                'foreignlang2',
551                'foreignlang3',
552                'foreignlang4',
553                'foreignlang1_type',
554                'foreignlang2_type',
555                'foreignlang3_type',
556                'foreignlang4_type',
557                'sk_eqf',
558                'sk_typ_zaciatku_studia',
559                'sk_typ_ukoncenia_studia',
560                'sk_typ_dochadzky',
561                'out',
562                'sk_dovod_zaradenia_zo_szp',
563                'sk_dovod_adaptacnej_triedy',
564                'sk_druh_sportu',
565                'sk_postihnutia',
566                'sk_zus_stupen',
567                'sk_nabozenstvo_typ',
568                'sk_druh_vysetrenia',
569                'sk_vysetrenia',
570                'skd_attending',
571                'sk_dotacie',
572                'sk_stipendia',
573                'reason_application',
574                'cestovne_maxDaysPerMonth',
575                'cestovne_sposobdopravy'
576            ], address_1.AddressInput.part_combos, true),
577            classes: [
578                'grade',
579                'sk_rok_dochadzky',
580                'sk_dlzka_studia',
581                'sk_forma_studia',
582                'sk_druh_studia',
583                'sk_typ_prospechu',
584                'sk_vyucovaci_jazyk',
585            ],
586        }),
587        allowNavigation: true,
588        navigateids: options.navigateids,
589        log_module: log_module,
590        suspense: true,
591        blank_add: blank_add,
592        onValidate: (0, itemdlg_validate_1.validate_chain)(function (params) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
593            var adding, row;
594            return tslib_1.__generator(this, function (_a) {
595                switch (_a.label) {
596                    case 0:
597                        adding = params.adding, row = params.row;
598                        if (!adding)
599                            return [2, true];
600                        if (!(row.firstname || row.lastname || row.number || row.email)) {
601                            (0, itemdlg_validate_1.validate_showInvalidColumn)(params, req.sort_name_col.startsWith('F') ? 'firstname' : 'lastname');
602                            return [2, false];
603                        }
604                        if (!(!row.classid && !row.admission_resultid)) return [3, 2];
605                        return [4, asc_react_1.RDialog.showConfirm(React.createElement("div", null,
606                                req.ls(1263) + ': ',
607                                React.createElement("b", null, req.ls(4283))), {
608                                msgType: 'areyousure',
609                                header: req.ls(9279),
610                            })];
611                    case 1:
612                        if (!(_a.sent()))
613                            return [2, false];
614                        _a.label = 2;
615                    case 2: return [2, true];
616                }
617            });
618        }); }, function (_a) {
619            var row = _a.row, changed = _a.changed;
620            return tslib_1.__awaiter(_this, void 0, void 0, function () {
621                var crow;
622                return tslib_1.__generator(this, function (_b) {
623                    if (!changed)
624                        return [2, true];
625                    if (req.hasRight('agenda') || req.hasRight('students_admin'))
626                        return [2, true];
627                    crow = dbi.rowData('classes', row['classid'], {});
628                    if (req.isUcitel() == crow.teacherid || crow.teacherids.includes(req.isUcitel()))
629                        return [2, true];
630                    asc_react_1.RDialog.showMessage(req.ls(4788) + ' - ' + req.ls(1263), { msgType: 'fail' });
631                    return [2, false];
632                });
633            });
634        }, function (params) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
635            var numberinclass;
636            return tslib_1.__generator(this, function (_a) {
637                numberinclass = params.row.numberinclass;
638                if (numberinclass && !/^\d*$/.test(numberinclass)) {
639                    (0, itemdlg_validate_1.validate_showInvalidColumn)(params, 'numberinclass');
640                    return [2, false];
641                }
642                return [2, true];
643            });
644        }); }, validate_duplicates, function (_a) {
645            var row = _a.row;
646            return tslib_1.__awaiter(_this, void 0, void 0, function () { return tslib_1.__generator(this, function (_b) {
647                switch (_b.label) {
648                    case 0: return [4, parentEditingState.onValidate({ srow: row })];
649                    case 1: return [2, (_b.sent()) || false];
650                }
651            }); });
652        }, itemdlg_validate_1.validate_email, validate_emailUnique),
653        onAfterOk: function (_a) {
654            var row = _a.row;
655            return tslib_1.__awaiter(_this, void 0, void 0, function () {
656                return tslib_1.__generator(this, function (_b) {
657                    switch (_b.label) {
658                        case 0: return [4, parentEditingState.onAfterOk({ srow: row })];
659                        case 1:
660                            _b.sent();
661                            return [4, skRisEditingState.onAfterOk({ row: row })];
662                        case 2:
663                            _b.sent();
664                            return [2];
665                    }
666                });
667            });
668        },
669        customItemName: function (_a) {
670            var row = _a.row;
671            if (row.sk_predskolak)
672                return 'Žiak s povinným predprimárnym vzdelávaním';
673            if (row.cz_predskolak)
674                return 'Žák s povinným předškolním vzděláváním';
675            return undefined;
676        },
677    });
678    var rdlgProps = itemState.rdlgProps, dlgRow = itemState.dlgRow, rowRef = itemState.rowRef, dbi = itemState.dbi, row = itemState.row, id = itemState.id, adding = itemState.adding, readonly = itemState.readonly, doApply = itemState.doApply, setHasOtherChange = itemState.setHasOtherChange, navigate = itemState.navigate;
679    var callback = (0, asc_react_1.useAsyncMemo)(function () { return (0, fieldcallback_1.getDlgFieldCallback)({
680        table: 'studentkopias',
681        doApply: doApply,
682        highlight_columns: options.highlight_columns
683    }); }, [doApply], null);
684    var date = dbi.rowData('globals', '1').date;
685    var archive = (0, asc_react_1.useAsyncMemo)(function () { return (0, student_1.studentDlg_getArchive)(null, year, id); }, [], null, {
686        inputs_reset: [id],
687        needed: !adding && !dbi.old && !dbi.mock,
688        workIndicator: false,
689    });
690    var _e = (0, asc_react_1.useLocalState)('StudentDlg.hasExams', false), hasExams = _e[0], setHasExams = _e[1];
691    React.useEffect(function () {
692        if (archive)
693            setHasExams(archive.hasExams);
694    }, [archive]);
695    var classrow = dbi.rowData('classes', dbi_1.DBITools.rowApplyChanges(row, date).classid);
696    if (classrow)
697        classrow = dbi_1.DBITools.rowApplyChanges(classrow, date);
698    function placeholderByClass(col) {
699        var cv = classrow === null || classrow === void 0 ? void 0 : classrow[col];
700        if (!cv)
701            return req.ls(6294);
702        return dbi.column('classes', col).textValue(cv) + ' (' + req.ls(6294) + ')';
703    }
704    var column_nin = React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'nin', control: React.createElement(validatefield_1.RNinField, { valueRef: rowRef.sub('nin').onSet(function (nin) {
705                setTimeout(function () {
706                    var _a, _b, _c, _d;
707                    var res = getNinDetails(req, nin);
708                    if (res) {
709                        (_b = (_a = rowRef.sub('birthdate')).set) === null || _b === void 0 ? void 0 : _b.call(_a, res.birthdate);
710                        res.gender && ((_d = (_c = rowRef.sub('gender')).set) === null || _d === void 0 ? void 0 : _d.call(_c, res.gender));
711                    }
712                }, 0);
713            }) }) });
714    var column_ssn = React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'ssn' });
715    var column_passport = React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'passport' });
716    var column_odborid = React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'odborid', placeholder: placeholderByClass('odborid') });
717    var column_email = React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'email', control: validatefield_1.REmailField });
718    var column_platby_vs = React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'platby_vs', control: validatefield_1.RVSField });
719    var column_contract_number = React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'contract_number' });
720    var column_locker = React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'locker' });
721    var column_number = React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'number' });
722    var column_cestovne = React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'cestovne', after: req.school_country == 'sk' && "(€/deň)" });
723    var column_cestovneMDPM = React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'cestovne_maxDaysPerMonth' });
724    var sideWidth = 400;
725    var _f = (0, moveupcolumns_1.useMoveUpColumns)({
726        dlgRow: dlgRow,
727        allowedColumns: [
728            column_nin,
729            column_ssn,
730            'idcardnum',
731            column_passport,
732            column_odborid,
733            'age_years',
734            column_email,
735            'birthdate',
736            column_platby_vs,
737            column_contract_number,
738            column_locker,
739            'igroupids',
740            'number',
741            'prefname'
742        ],
743        sideWidth: sideWidth,
744        callback: callback,
745    }), top = _f[0], callback_bottom = _f[1];
746    var cz_school_druhy = (0, asc_react_1.useMemoArray)(React.useMemo(function () { return student_cz_school_druhy(dbi, row); }, [dbi, row]));
747    var cz_urcite_ms = (0, dbi_1.deepStrictEqual)(cz_school_druhy, ['M']);
748    var tabs_ref = React.useRef();
749    var parentEditingState = useParentEditingState({
750        srow: row,
751        blank_add: blank_add,
752        readonly: readonly,
753        dbi: dbi,
754        onChange: function () { return setHasOtherChange(); },
755        selectTab: function (id) { return tabs_ref.current.selectTab(id); },
756        log_module: log_module,
757    });
758    var skRisEditingState = (0, sk_ris_1.useSkRisEditingState)({
759        year: year,
760        row: row,
761        readonly: readonly,
762        dbi: dbi,
763        onChange: function () { return setHasOtherChange(); },
764        table: 'studentkopias'
765    });
766    var td = dbi.table('studentkopias');
767    var studentid = id.split(':')[0] || '';
768    var kopie = React.useMemo(function () { return dbi.tableFilterData('studentkopias', { studentid: studentid }).filter(function (srow) { return srow._uial > 0; }); }, [dbi, studentid]);
769    var startWithFirst = req.sort_name_col == 'FSL';
770    var number_hore = !td.column('numberinclass');
771    var number_inBasic = !number_hore && (req.school_country == 'ke' || req.school_country == 'ug');
772    var showPlatbyTab = dbi.column('studentkopias', 'sk_dotacie') != null;
773    var col_style = {
774        display: 'inline-block',
775        verticalAlign: 'top',
776        marginRight: 10,
777        width: 300,
778    };
779    var has_cf = !!['cf_cb1', 'cf_s1', 'cf_d1', 'cf_id1'].find(function (c) {
780        var cd = td.column(c);
781        if (!cd)
782            return false;
783        return !cd.def.invisible;
784    });
785    var cb_cols = React.useMemo(function () {
786        var cb_cols = [];
787        for (var _i = 0, _a = ['cf_s', 'cf_d', 'cf_id', 'cf_cb']; _i < _a.length; _i++) {
788            var prefix = _a[_i];
789            for (var i = 1; i < 16; i++) {
790                cb_cols.push(prefix + i);
791            }
792        }
793        var order = [];
794        if (req.edupage == 'ds-moskau')
795            order = ['cf_cb1', 'cf_s1', 'cf_cb2'];
796        cb_cols = (0, dbi_1.idsArrayMergeUnique)(order, cb_cols);
797        cb_cols = cb_cols.filter(function (c) { return td.column(c); });
798        return cb_cols;
799    }, [td]);
800    var height = 700;
801    var width = 960;
802    if (school_country == 'cz')
803        height = 700;
804    if (school_country == 'sk')
805        height = 750;
806    if (td.column('address_street_number'))
807        width = 1100;
808    var moreclasses_el = null;
809    {
810        var canAddClass = req.jeZUS() && req.hasRight('agenda') && !readonly && !req.isAgenda();
811        if (kopie.length >= 2 || canAddClass) {
812            var menu = kopie.map(function (k) { return ({
813                text: dbi.rowName('classes', k.classid),
814                checked: k.id == id,
815                onClick: function () { return navigate(k.id); },
816            }); });
817            if (canAddClass) {
818                menu.push([]);
819                menu.push({
820                    text: req.ls(1257),
821                    onClick: function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
822                        var classid, newid;
823                        return tslib_1.__generator(this, function (_a) {
824                            switch (_a.label) {
825                                case 0: return [4, doApply({ confirm: true })];
826                                case 1:
827                                    if (!(_a.sent()))
828                                        return [2];
829                                    return [4, asc_react_1.RDialog.showInput('', function (_a) {
830                                            var stateRef = _a.stateRef;
831                                            return React.createElement("div", null,
832                                                React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'classid', valueRef: stateRef }));
833                                        })];
834                                case 2:
835                                    classid = _a.sent();
836                                    if (!classid)
837                                        return [2];
838                                    return [4, ASC.blockUI(dbi.backend.addRow('studentkopias', {
839                                            studentid: row.studentid,
840                                            classid: classid,
841                                        }))];
842                                case 3:
843                                    newid = _a.sent();
844                                    return [4, ASC.blockUI((0, dbi_react_1.refreshSubscribedDBI)(dbi))];
845                                case 4:
846                                    _a.sent();
847                                    navigate(newid);
848                                    return [2];
849                            }
850                        });
851                    }); }
852                });
853            }
854            moreclasses_el = React.createElement(anchor_1.RAnchor, { label: React.createElement(React.Fragment, null,
855                    req.ls(1194) + ' (' + kopie.length + ')',
856                    React.createElement("i", { className: 'fa fa-fw fa-caret-down' })), style: { background: 'rgba(255,255,255,0.0)', padding: '4px 8px', borderRadius: '0 0 0 4px' }, menu: menu });
857        }
858    }
859    var skSzDefinitionHelp = React.createElement("i", { className: "fa fa-question-circle-o agenda-info-icon", style: { cursor: 'help' }, title: "1.1.2026 sa v zákone zmenila definícia, políčko znamená niečo iné ako v minulosti.\nPreto sú v údajoch žiaka evidované oba zdanlivo rovnaké, avšak rozdielne príznaky." });
860    return React.createElement(asc_react_1.RDialog, tslib_1.__assign({}, rdlgProps, { width: width, height: height, dialogClass: 'agenda-item-dialog student' }),
861        React.createElement(dbi_react_1.DlgFieldLayoutTypeContext.Provider, { value: "flex" },
862            React.createElement(dbi_react_1.DlgFieldCallbackContext.Provider, { value: callback },
863                React.createElement("div", { className: "agenda-dlg-top " + (id ? '' : ' agenda-new-item') },
864                    moreclasses_el && React.createElement("div", { style: (0, asc_react_1.rtlCss)({ textAlign: 'right', position: 'absolute', right: '70px', top: '-26px', zIndex: 2 }) }, moreclasses_el),
865                    React.createElement("div", { className: 'agenda-flex-split', style: (0, asc_react_1.rtlCss)({ paddingLeft: '130px' }) },
866                        React.createElement("div", { className: 'agenda-flex-40p agenda-flex-vcenter ', style: { marginBottom: '0px' } },
867                            React.createElement("div", { className: 'agenda-cols-2 agenda-dbifields-narrowlabel' },
868                                React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: startWithFirst ? 'firstname' : 'lastname', className: id ? 'huge' : 'huge boxed' }),
869                                React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: !startWithFirst ? 'firstname' : 'lastname', className: id ? 'huge' : 'huge boxed' }),
870                                React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'callname', className: id ? 'huge' : 'huge boxed', placeholder: row.firstname }),
871                                React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'classid', className: id ? 'huge' : 'huge boxed', control: (id && row.classid
872                                        ? React.createElement(combobox_1.default, { valueRef: rowRef.sub('classid'), items: td.column('classid').combo(), onClick: function () {
873                                                (Promise.resolve().then(function () { return require('../dlg/changes'); })).then(function (c) { return c.showObjectChangesDlg(year, 'studentkopias', row.id, 'classid'); });
874                                                return false;
875                                            } })
876                                        : undefined) }),
877                                React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'numberinclass', className: id ? 'huge' : 'huge boxed', placeholder: '-', after: !row.numberinclass && row.classid && rowRef.sub('numberinclass').set && React.createElement(anchor_1.RAnchor, { label: req.ls(1215), onClick: function () {
878                                            var max = 0;
879                                            for (var _i = 0, _a = dbi.tableFilterData('studentkopias', { classid: row.classid }); _i < _a.length; _i++) {
880                                                var srow = _a[_i];
881                                                if (srow.id == id)
882                                                    continue;
883                                                max = Math.max(max, srow.numberinclass || 0);
884                                            }
885                                            rowRef.sub('numberinclass').set(max + 1);
886                                        } }) })),
887                            React.createElement("div", { className: ' agenda-cols-2 agenda-dbifields-narrowlabel agenda-dbifields-hidden-boxes', style: { columns: 3 } },
888                                number_hore && column_number,
889                                top)),
890                        id && React.createElement("div", { className: 'agenda-flex-20p', style: { flex: 'auto 0 0', paddingTop: '2px' } },
891                            React.createElement(userface_1.UserFace, { dbi: dbi, table: 'students', row: tslib_1.__assign(tslib_1.__assign({}, row), { id: studentid }), hideName: true, className: 'agenda-user-face' })))),
892                React.createElement(dbi_react_1.DlgFieldCallbackContext.Provider, { value: callback_bottom },
893                    React.createElement.apply(React, tslib_1.__spreadArray(tslib_1.__spreadArray([tabview_1.RTabView, { className: "agenda-side-tabs", orientation: 'left', sessionStorageKey: "agendaStudentTab", style: {
894                                flex: '1 1 0px',
895                                minHeight: 0,
896                            }, select: options.selectTab, labels_style: {
897                                maxWidth: 130,
898                            }, content_style: {
899                                overflow: 'auto',
900                            }, controlRef: tabs_ref }, React.createElement(tabview_1.RTabViewTab, { id: 'basic', label: req.ls(3688) },
901                            td.column('co_iddoc_number') && React.createElement(React.Fragment, null,
902                                React.createElement(asc_react2_1.RClassGroupBox, { title: req.ls(4369) },
903                                    React.createElement(dbi_react_1.DBIField, { dlgRow: dlgRow, column: 'co_iddoc_type' }),
904                                    React.createElement(dbi_react_1.DBIField, { dlgRow: dlgRow, column: 'co_iddoc_number' }),
905                                    React.createElement("span", { style: { margin: '0px 5px' } }, "Lugar:"),
906                                    React.createElement(dbi_react_1.DBIField, { dlgRow: dlgRow, column: 'co_iddoc_place' }))),
907                            React.createElement(asc_react2_1.RClassGroupBox, { title: req.ls(13144) },
908                                React.createElement("div", { className: 'agenda-cols-2' },
909                                    column_nin,
910                                    number_inBasic && column_number,
911                                    column_ssn,
912                                    column_passport,
913                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'idcardnum' }),
914                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'foreign_code' }),
915                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'birthdate' }),
916                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'age_years' }),
917                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'eduid' }),
918                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'birthlastname' }),
919                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'birthcity' }),
920                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'birthcountry' }),
921                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'gender' }),
922                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'de_gender' }),
923                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'nationality' }),
924                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'sg_citizenship_status' }),
925                                    React.createElement(autocomplete_1.DlgFieldAutocomplete, { dlgRow: dlgRow, column: 'sg_ethnicity' }),
926                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'tt_ethnicity' }),
927                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'citizenship' }),
928                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'citizenship_type_code', name_col: 'IDN' }),
929                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'citizenship2' }),
930                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'mothertongue' }),
931                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'lang2' }),
932                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'sk_utecenec', after: React.createElement("i", { className: "fa fa-info-circle", title: "\u2022 Tento \u00FAdaj sa nepren\u00E1\u0161a do RIS.\n\u2022 Sl\u00FA\u017Ei iba na vlastn\u00FA potrebu \u0161koly.\n\u2022 V RISe sa u\u017E eviduj\u00FA iba cudzinci bez pobytu." }) }),
933                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'refugee' }),
934                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'orphan' }),
935                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'at_religion' }),
936                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'de_religion' }),
937                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'tt_religion' }),
938                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'de_forderschwerpunkt' }),
939                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'de_sorgerecht' }),
940                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'custody' }))),
941                            req.school_country != 'gr' && (React.createElement(asc_react2_1.RClassGroupBox, { title: req.ls(3706) },
942                                React.createElement("div", { className: 'agenda-cols-2' },
943                                    column_locker,
944                                    column_platby_vs,
945                                    column_contract_number,
946                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'edesk_number', control: validatefield_1.REDeskNumberField }),
947                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'carplate' }),
948                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'sk_zsrkarta' }),
949                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'sk_cislokarty', className: 'agenda-label-valign-top', field_note: React.createElement("span", null, "Identifika\u010Dn\u00E9 \u010D\u00EDslo je unik\u00E1tne \u010D\u00EDslo \u017Eiaka,  tla\u010D\u00ED sa na \u017Eiacky preukaz (aj ako \u010Diarov\u00FD k\u00F3d)") }),
950                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'cz_visa_number', control: validatefield_1.RCzVisaNumberField }))))), React.createElement(tabview_1.RTabViewTab, { id: 'address', label: req.ls(1082) },
951                            React.createElement(address_1.AddressInput, { dlgRow: dlgRow, separator: "", msg: React.createElement(MoreFieldsContactUs, { dlgRow: dlgRow, column: 'address_street' }) }),
952                            React.createElement("div", { className: 'agenda-cols-2' },
953                                React.createElement(asc_react2_1.RClassGroupBox, { title: req.ls(1596) },
954                                    column_email,
955                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'email_private', control: validatefield_1.REmailField, label: dbi.column('studentk
955opias', 'email_private').name() + (req.school_country == 'sk' ? "\n(iný ako rodič)" : '') }),
956                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'mobile' }),
957                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'subname' }),
958                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'prefname' })),
959                                React.createElement(asc_react2_1.RClassGroupBox, { title: req.ls(1012) },
960                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'username', control: React.createElement(account_1.UsernameField, { dlgRow: dlgRow, doApply: doApply }) }),
961                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'username_hint', after: React.createElement("i", { className: "fa fa-info-circle", title: req.ls(13052) }) }))),
962                            React.createElement("div", { className: 'agenda-cols-2' },
963                                dbi.column('studentkopias', 'dormitoryid') && (React.createElement(asc_react2_1.RClassGroupBox, { title: req.ls(11771) },
964                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'dormitoryid' }),
965                                    dbi.column('studentkopias', 'dormitory_room') && (React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'dormitory_room' })))),
966                                dbi.column('studentkopias', 'sk_spadova_zs') && (React.createElement(asc_react2_1.RClassGroupBox, { title: req.ls(4323) },
967                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'sk_spadova_zs', control: SkSchoolCombo, className: 'agenda-label-valign-top' }),
968                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'sk_spadova_ms', control: SkSchoolCombo, className: 'agenda-label-valign-top' }))))), React.createElement(tabview_1.RTabViewTab, { id: 'study', label: req.ls(4478) },
969                            school_country == 'sk'
970                                ? (React.createElement(React.Fragment, null,
971                                    (req.jeCVC() || req.jeSportovyKlub()) && td.column('otherschoolid') && React.createElement(React.Fragment, null,
972                                        React.createElement(asc_react2_1.RClassGroupBox, { title: 'Kme\u0148ov\u00E1 \u0161kola' },
973                                            React.createElement("div", { className: 'agenda-cols-2' },
974                                                React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'otherschoolid' }),
975                                                React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'otherschool_class' })))),
976                                    React.createElement(asc_react2_1.RClassGroupBox, { title: ls(6297) },
977                                        React.createElement("div", { className: 'agenda-cols-2' },
978                                            column_odborid,
979                                            React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'sk_dlzka_studia', placeholder: placeholderByClass('sk_dlzka_studia') }),
980                                            React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'sk_forma_studia', placeholder: placeholderByClass('sk_forma_studia') }),
981                                            React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'sk_druh_studia', placeholder: placeholderByClass('sk_druh_studia') }),
982                                            React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'sk_vyucovaci_jazyk', placeholder: placeholderByClass('sk_vyucovaci_jazyk') }),
983                                            React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'grade', placeholder: placeholderByClass('grade') }),
984                                            React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'sk_rok_dochadzky', placeholder: placeholderByClass('sk_rok_dochadzky') }),
985                                            React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'schoolid', control: class_1.OurschoolCombo }),
986                                            React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'sk_predchadzajuce_vzdelanie' }),
987                                            React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'educationplanid', placeholder: placeholderByClass('educationplanid') }),
988                                            dbi.column('studentk
988opias', 'sk_dovod_adaptacnej_triedy') && String(classrow === null || classrow === void 0 ? void 0 : classrow.sk_typ_triedy) == '5' && (React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'sk_dovod_adaptacnej_triedy' })),
989                                            React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'sk_DV' }),
990                                            React.createElement(KontrahovanieDiv, { dlgRow: dlgRow, doApply: doApply }),
991                                            dbi.column('studentkopias', 'sk_druh_sportu') && (React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'sk_druh_sportu' })))),
992                                    (req.jeZUS() || req.jeSUS()) && React.createElement(React.Fragment, null,
993                                        React.createElement(asc_react2_1.RClassGroupBox, { title: "Umelecká škola" },
994                                            React.createElement("div", { className: 'agenda-cols-2' },
995                                                React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'sk_zus_stupen' }),
996                                                React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'zus_hlavny_predmet' }),
997                                                React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'zus_obligatny_nastroj' }),
998                                                React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'zus_volitelny_nastroj' }),
999                                                React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'otherschoolid' }),
1000                                                React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'otherschool_class' }),
1001                                                React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'zus_rocnik' }),
1002                                                React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'zus_cast' }),
1003                                                React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'zus_stupen' }),
1004                                                React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'zus_druh' }),
1005                                                React.createElement(KontrahovanieDiv, { dlgRow: dlgRow, doApply: doApply })),
1006                                            React.createElement("div", { className: "agenda-dbifield-outer " },
1007                                                React.createElement("div", { className: "agenda-dbifield-label" }),
1008                                                React.createElement("div", { className: "agenda-dbifield-field" },
1009                                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'zus_cestne_vyhlasenie', label_style: 'embeded' })))))))
1010                                : React.createElement(React.Fragment, null,
1011                                    React.createElement(asc_react2_1.RClassGroupBox, { title: !cz_urcite_ms && ls(6297) },
1012                                        React.createElement("div", { className: 'agenda-cols-2' },
1013                                            !cz_urcite_ms && column_odborid,
1014                                            (row.odbor2id || (classrow === null || classrow === void 0 ? void 0 : classrow.cz_matrika_DRST) == '61') && React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'odbor2id' }),
1015                                            React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'grade', placeholder: placeholderByClass('grade') }),
1016                                            React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'repeated_grades' }),
1017                                            !cz_urcite_ms && React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'cz_matrika_DELST', placeholder: placeholderByClass('cz_matrika_DELST') }),
1018                                            React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'educationplanid', placeholder: placeholderByClass('educationplanid') }),
1019                                            React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'cz_zak67', label_style: 'embeded', outer_style: { justifyContent: 'flex-end' } }),
1020                                            React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'de_bildungsgang' }),
1021                                            React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'de_differenzierung_bildungsgang' })))),
1022                            React.createElement(asc_react2_1.RClassGroupBox, { title: ls(1602) },
1023                                school_country == 'sk'
1024                                    ? (React.createElement(React.Fragment, null,
1025                                        React.createElement("div", { className: 'agenda-cols-2' },
1026                                            React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'datefrom' }),
1027                                            React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'sk_typ_zaciatku_studia' }),
1028                                            React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'dateto' }),
1029                                            React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'sk_typ_ukoncenia_studia' }),
1030                                            React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'sk_typ_docha
1030dzky' }),
1031                                            false && React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'sk_rok_ukoncenia_dochadzky' }),
1032                                            React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'sk_datum_ukoncenia_dochadzky' }),
1033                                            React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'at_half_dateto', placeholder: ls(1215) + (row.at_half_dateto_auto ? ' (' + (0, lib_date_1.date_format_date)(req, row.at_half_dateto_auto) + ')' : '') }),
1034                                            React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'at_end_dateto', placeholder: ls(1215) + (row.at_end_dateto_auto ? ' (' + (0, lib_date_1.date_format_date)(req, row.at_end_dateto_auto) + ')' : '') }),
1035                                            React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'out', control: React.createElement(StudentOutField, { valueRef: rowRef.sub('out'), dbi: dbi, row: row }), className: 'agenda-label-valign-top' }))))
1036                                    : school_country == 'cz'
1037                                        ? (React.createElement(React.Fragment, null,
1038                                            React.createElement(CzDateFromTo, { dlgRow: dlgRow, archive: archive, cz_school_druhy: cz_school_druhy }),
1039                                            React.createElement("div", { className: 'agenda-cols-2' },
1040                                                React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'out', control: React.createElement(StudentOutField, { valueRef: rowRef.sub('out'), dbi: dbi, row: row }), className: 'agenda-label-valign-top' }),
1041                                                !cz_urcite_ms && React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'cz_matrika_LET_PSD', placeholder: cz_school_druhy.includes('Z') && ((row.grade || (classrow === null || classrow === void 0 ? void 0 : classrow.grade) || '-') + ' (automaticky - podle ročníku)')
1042                                                        || cz_school_druhy.includes('S') && '(automaticky - PŠD splněna)'
1043                                                        || undefined })),
1044                                            React.createElement("div", { className: 'agenda-cols-2' },
1045                                                React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'at_half_dateto', placeholder: ls(1215) + (row.at_half_dateto_auto ? ' (' + (0, lib_date_1.date_format_date)(req, row.at_half_dateto_auto) + ')' : '') }),
1046                                                React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'at_end_dateto', placeholder: ls(1215) + (row.at_end_dateto_auto ? ' (' + (0, lib_date_1.date_format_date)(req, row.at_end_dateto_auto) + ')' : '') }))))
1047                                        : (React.createElement(React.Fragment, null,
1048                                            React.createElement("div", { className: 'agenda-cols-2' },
1049                                                React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'datefrom' }),
1050                                                React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'dateto' }),
1051                                                React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'out', control: React.createElement(StudentOutField, { valueRef: rowRef.sub('out'), dbi: dbi, row: row }), className: 'agenda-label-valign-top' }),
1052                                                React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'at_half_dateto', placeholder: ls(1215) + (row.at_half_dateto_auto ? ' (' + (0, lib_date_1.date_format_date)(req, row.at_half_dateto_auto) + ')' : '') }),
1053                                                React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'at_end_dateto', placeholder: ls(1215) + (row.at_end_dateto_auto ? ' (' + (0, lib_date_1.date_format_date)(req, row.at_end_dateto_auto) + ')' : '') }),
1054                                                React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'de_einschulung_date' }),
1055                                                React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'de_einschulung_art' })))),
1056                                row.dateto && ((row.at_end_dateto || row.at_end_dateto_auto) > row.dateto)
1057                                    ? (React.createElement("div", { className: 'agenda-dbifield-field-note', style: { color: "#C62828", textAlign: 'center' } },
1058                                        React.createElement("i", { className: 'fa fa-fw fa-info' }),
1059                                        " ",
1060                                        ls(13447)))
1061                                    : null),
1062                            school_country == 'cz' && React.createElement(asc_react2_1.RClassGroupBox, { title: 'Matrika' },
1063                                React.createElement("div", { className: 'agenda-cols-2' },
1064                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'cz_matrika_ZPUSOB' }),
1065                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'cz_matrika_PRIZN_ST' }),
1066                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'cz_matrika_FIN' }),
1067                                    (0, dbi_1.idsIsOverlap)(cz_school_druhy, ['Z', 'M']) &&
1068                                        React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'cz_matrika_nZVJ', label_style: 'embeded' }),
1069                                    cz_school_druhy.includes('Z') &&
1070                                        React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'cz_matrika_JAZ_PODP', label_style: 'embeded' }),
1071                                    (0, dbi_1.idsIsOverlap)(cz_school_druhy, ['Z', 'M']) &&
1072                                        React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'cz_matrika_JAZ_PRIP', label_style: 'embeded' }))),
1073                            (dbi.column('studentkopias', 'de_fsn') || dbi.column('studentkopias', 'de_schulbesuchsjahr') || dbi.column('studentkopias', 'de_schulabschluss') || dbi.column('studentkopias', 'de_abschlussprognose')) && (React.createElement(asc_react2_1.RClassGroupBox, { title: "" },
1074                                React.createElement("div", { className: 'agenda-cols-2' },
1075                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'de_fsn', control: De_fsnInput }),
1076                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'de_schulbesuchsjahr' }),
1077                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'de_schulabschluss' }),
1078                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'de_abschlussprognose' })))),
1079                            school_country == 'cz' && !cz_urcite_ms && (React.createElement(asc_react2_1.RClassGroupBox, { title: req.ls(9835) }, (0, asc_react_1.rangeFromTo)(1, 4).map(function (i) { return React.createElement(dbi_react_1.DlgField, { key: i, dlgRow: dlgRow, column: 'cz_matrika_JAZ' + i, className: 'agenda-dbifield-with-after', after: cz_school_druhy.includes('Z') && React.createElement(dbi_react_1.DBIField, { dlgRow: dlgRow, column: 'cz_matrika_P_JAZ' + i }) }); }))),
1080                            td.column('foreignlang1') && (React.createElement(asc_react2_1.RClassGroupBox, { title: req.ls(9835) }, (0, asc_react_1.rangeFromTo)(1, 4).map(function (i) {
1081                                var _a;
1082                                var lang_column = 'foreignlang' + i;
1083                                var auto_column = lang_column + '_auto';
1084                                var type_column = lang_column + '_type';
1085                                return React.createElement(dbi_react_1.DlgField, { key: i, dlgRow: dlgRow, column: lang_column, placeholder: row[auto_column] ? req.ls(1215) + ' (' + ((_a = td.column('foreignlang1').combo().find(function (r) { return r["value"] == row[auto_column]; })) === null || _a === void 0 ? void 0 : _a["name"]) + ')' : '-', className: 'agenda-dbifield-with-after', after: td.column(type_column) && React.createElement(dbi_react_1.DBIField, { dlgRow: dlgRow, column: type_column }) });
1086                            }))),
1087                            td.column('de_wahlpflichtfach1') && (React.createElement(asc_react2_1.RClassGroupBox, { title: 'Wahlpflichtfach' }, (0, asc_react_1.rangeFromTo)(1, 3).map(function (i) { return React.createElement(dbi_react_1.DlgField, { key: i, dlgRow: dlgRow, column: 'de_wahlpflichtfach' + i }); }))),
1088                            td.column('kcpe_mean')
1089                                ? (React.createElement(asc_react2_1.RClassGroupBox, { title: req.ls(3706) },
1090                                    React.createElement("div", { className: 'agenda-cols-2' },
1091                                        React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'kcpe_total' }),
1092                                        React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'kcpe_mean' }))))
1093                                : '',
1094                            req.jeFirma()
1095                                ? (React.createElement(React.Fragment, null, ((dbi.column('studentk
1095opias', 'sk_majster_teacherid') && !req.jeZUS() && !req.jeMS())
1096                                    || dbi.column('studentkopias', 'root_edupage')
1097                                    || dbi.column('studentkopias', 'prax_firmas')) && (React.createElement(asc_react2_1.RClassGroupBox, { title: req.ls(4648).ucfirst() },
1098                                    React.createElement("div", { className: 'agenda-cols-2' },
1099                                        (dbi.column('studentkopias', 'sk_majster_teacherid') && !req.jeZUS() && !req.jeMS()) && React.createElement(React.Fragment, null,
1100                                            React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'sk_majster_teacherid' }),
1101                                            React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'sk_prax_miesto' }),
1102                                            React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'prax_firmaid', control: React.createElement(combobox_1.default, { valueRef: rowRef.sub('prax_firmaid'), items: tslib_1.__spreadArray([
1103                                                        { value: '', name: '-' }
1104                                                    ], dbi.tableData('prax_firmas')
1105                                                        .sort(function (a, b) { return a.company_name.localeCompare(b.company_name); })
1106                                                        .map(function (f) { return ({
1107                                                        value: f.id,
1108                                                        name: f.company_name + ' ' + (f.lastname ? ' (' + f.lastname + ')' : ''),
1109                                                    }); }), true) }) })),
1110                                        React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'root_edupage' })),
1111                                    dbi.column('studentkopias', 'prax_firmas') && React.createElement(subtableinput_1.default, { dataRef: dlgRow.rowRef.sub("prax_firmas"), dbiColumn: td.column('prax_firmas'), cols: [
1112                                            { key: 'prax_firmaid', width: 150, },
1113                                            { key: 'datefrom', width: 80, },
1114                                            { key: 'dateto', width: 80, }
1115                                        ], cssClass: 'compact nowrap nowrap-th light-theme', fitWidth: true, style: {
1116                                            height: 150,
1117                                            margin: '1em 2em 2em 5em'
1118                                        }, compactView: true })))))
1119                                : (React.createElement(React.Fragment, null, (dbi.column('studentkopias', 'sk_majster_teacherid') && !req.jeZUS() && !req.jeMS()) && React.createElement(React.Fragment, null,
1120                                    React.createElement(asc_react2_1.RClassGroupBox, { title: req.ls(4648).ucfirst() },
1121                                        React.createElement("div", { className: 'agenda-cols-2' },
1122                                            React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'sk_majster_teacherid' }),
1123                                            React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'sk_prax_miesto' }),
1124                                            React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'prax_firmaid', control: React.createElement(combobox_1.default, { valueRef: rowRef.sub('prax_firmaid'), items: tslib_1.__spreadArray([
1125                                                        { value: '', name: '-' }
1126                                                    ], dbi.tableData('prax_firmas')
1127                                                        .sort(function (a, b) { return a.company_name.localeCompare(b.company_name); })
1128                                                        .map(function (f) { return ({
1129                                                        value: f.id,
1130                                                        name: f.company_name + ' ' + (f.lastname ? ' (' + f.lastname + ')' : ''),
1131                                                    }); }), true) }) })))))),
1132                            React.createElement(asc_react2_1.RClassGroupBox, { title: req.ls(1758) },
1133                                React.createElement("div", { className: 'agenda-cols-2' },
1134                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'teacherid' }),
1135                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'exclude_subjectids' }),
1136                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'sk_nabozenstvo_typ' }),
1137                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'de_religion_wl' }),
1138                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'skd_attending', placeholder: (((_b = row.groupsubjectids) === null || _b === void 0 ? void 0 : _b.filter(function (id) { var _a; return ((_a = dbi.rowData('groupsubjects', id)) === null || _a === void 0 ? void 0 : _a.jeSkd); }).length) > 0 ? ls(12361) : ls(12362)) + ' (' + ls(1215) + ')' }),
1139                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'skd_number' }),
1140                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'skd_prihlaska_datum', placeholder: ls(1215) + (row.skd_prihlaska_datum_auto ? ' (' + (0, lib_date_1.date_format_date)(req, row.skd_prihlaska_datum_auto) + ')' : '') }))),
1141                            req.jeZUS() ?
1142                                React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'groupsubjectids', className: 'agenda-label-valign-top', control: GroupSubjectsList })
1143                                :
1144                                    React.createElement(asc_react2_1.RClassGroupBox, { title: "".concat(req.ls(8423), " / ").concat(req.ls(1009)) },
1145                                        React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'groupsubjectids', label: '', className: 'agenda-label-valign-top', control: student_hodiny_1.StudentGroupSubjectsList })),
1146                            school_country == 'sk'
1147                                && (React.createElement(asc_react2_1.RClassGroupBox, { title: 'Vzdelávacie poukazy' },
1148                                    React.createElement("div", { className: 'agenda-cols-2' },
1149                                        React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, className: 'agenda-label-valign-top', column: 'sk_vzdelavaci_poukaz', readonly: true, control: VzdelavaciPoukaz }),
1150                                        row.sk_vzdelavaci_poukaz_uplatnuje ?
1151                                            React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'sk_vzdelavaci_poukaz_groupsubjects_id', control: VzdelavaciPoukazNaKruzok })
1152                                            : React.createElement("div", { className: 'asc-label' }, "Poukaz si neuplat\u0148uje na na\u0161ej \u0161kole."))))), school_country == 'de' && React.createElement(tabview_1.RTabViewTab, { id: 'migration', label: 'Migration' },
1153                            React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'de_anerkennung_zeugnis' }),
1154                            React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'de_asylbewerber' }),
1155                            React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'de_daz' }),
1156                            React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'de_einwanderungsjahr' }),
1157                            React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'fam
1157ilytongue' }),
1158                            React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'de_visum' })), ['sk', 'cz'].includes(school_country) && (React.createElement(tabview_1.RTabViewTab, { id: 'certificates', label: req.ls(4650), style: { display: 'flex', flexDirection: 'column' } },
1159                            school_country == 'sk' && React.createElement("div", null,
1160                                React.createElement("div", { className: 'agenda-flex-split' },
1161                                    React.createElement("div", { style: { flex: '65% 7 7', overflow: 'hidden' } },
1162                                        React.createElement(StudentTypProspechField, { dlgRow: dlgRow, placeholder: placeholderByClass('sk_typ_prospechu'), key: id })),
1163                                    React.createElement("div", { style: { flex: '35% 3 3', overflow: 'hidden' } },
1164                                        React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'sk_eqf' })))),
1165                            React.createElement(CertificatesArchive, { dlgRow: dlgRow, archive: archive, style: {
1166                                    flex: '1 1 0px',
1167                                } }),
1168                            false && (React.createElement(React.Fragment, null,
1169                                React.createElement(asc_react_1.VGap, null),
1170                                React.createElement("button", { type: "button", className: 'button-blue', onClick: function () {
1171                                        barNewReactSourceDlg('/znamky/pics/jsw/certificates.js', 'CertifcatesList', {
1172                                            triedaid: row.classid,
1173                                            embedded: true,
1174                                            year: year,
1175                                        });
1176                                    } }, ls(12110)),
1177                                React.createElement("button", { type: "button", className: 'button-blue', onClick: function () {
1178                                        barNewReactSourceDlg('/znamky/pics/jsw/verbalevaluation.js', 'VerbalEvaluationMain', {
1179                                            triedaid: row.classid,
1180                                            predmetid: '',
1181                                            planid: '',
1182                                            obdobie: '',
1183                                            asDialog: true,
1184                                            forceShowStudentid: props.id,
1185                                            year: year,
1186                                        });
1187                                    } }, ls(9867)))))), req.school_country != 'gr' && (React.createElement(tabview_1.RTabViewTab, { id: 'health', label: req.ls(2645) },
1188                            req.school_country != 'sk' && React.createElement(MoreFieldsContactUs, { dlgRow: dlgRow, column: 'health_note' }),
1189                            React.createElement(asc_react2_1.RClassGroupBox, { title: ls(3706) },
1190                                React.createElement("div", { className: 'agenda-cols-2' },
1191                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'sk_zdr_poist' }),
1192                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'physicianid' }),
1193                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'health_bloodtype' }),
1194                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'health_allergies' }),
1195                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'health_vaccine_measles' }),
1196                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'de_pflegegrad' }),
1197                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'de_behinderung' }),
1198                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'height' }),
1199                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'weight' }))),
1200                            React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'special_needs' }),
1201                            dbi.column('studentkopias', 'sk_postihnutia') && (React.createElement(asc_react2_1.RClassGroupBox, { title: 'Zdravotné znevýhodnenie' },
1202                                React.createElement("div", { className: 'agenda-cols-2' },
1203                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'sk_ZZ', label_style: 'embeded' }),
1204                                    React.createElement("div", { style: { textAlign: 'right' } },
1205                                        React.createElement("a", { href: "/podporneopatrenia/" }, "Podporn\u00E9 opatrenia"))),
1206                                (row["sk_ZZ"] || (row['sk_postihnutia'] && row['sk_postihnutia'].length > 0))
1207                                    ? React.createElement("div", { style: { marginLeft: '25px' } },
1208                                        React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'sk_postihnutia', className: 'agenda-label-fw', readonly: row["sk_ZZ"] ? false : true, control: SkPostihnutiaInput }),
1209                                        React.createElement("div", { className: 'agenda-cols-2' },
1210                                            React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'sk_postihnutia_poradna', className: '', readonly: row["sk_ZZ"] ? false : true }),
1211                                            React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'sk_postihnutia_datum', className: '', readonly: row["sk_ZZ"] ? false : true })))
1212                                    : null,
1213                                React.createElement("div", { style: { display: 'flex', alignItems: 'center', gap: 12 } },
1214                                    React.createElement("div", { style: { flex: 1 } },
1215                                        React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'sk_SZ', label_style: 'embeded', after: skSzDefinitionHelp, control: StudentSkSzCheckbox }),
1216                                        React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'sk_SZ_2026', label_style: 'embeded', after: skSzDefinitionHelp, control: StudentSkSzCheckbox })),
1217                                    React.createElement(help_1.RHelpLink, { topic: 'u8468' })),
1218                                dbi.column('studentkopias', 'sk_dovod_zaradenia_zo_szp') && row['sk_SZ_2026']
1219                                    ? React.createElement("div", { style: { marginLeft: '25px' } },
1220                                        React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'sk_dovod_zaradenia_zo_szp', className: 'agenda-label-fw' }))
1221                                    : null,
1222                                React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'sk_hmotna_nudza', label_style: 'embeded' }),
1223                                React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'sk_SS' }))),
1224                            React.createElement(CzHealthinput, { dlgRow: dlgRow, archive: archive, cz_urcite_ms: cz_urcite_ms }),
1225                            dbi.column('studentkopias', 'sk_diagnoza')
1226                                ? (React.createElement("div", { className: 'agenda-cols-2' },
1227                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'sk_diagnoza', className: 'agenda-label-titlegray', label_style: 'top', style: { height: 70 } }),
1228                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'health_note', className: 'agenda-label-titlegray', label_style: 'top', style: { height: 70 } })))
1229                                : React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'health_note', className: 'agenda-label-titlegray', label_style: 'top', style: { height: 70 } }),
1230                            React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'sk_vysetrenia', className: 'agenda-label-titlegray', label_style: 'top', control: React.createElement(StudentVysetreniaField, { valueRef: rowRef.sub('sk_vysetrenia'), dbi: dbi, row: row }) }
1230))), dbi.column('studentkopias', 'sk_dotacie') && (React.createElement(tabview_1.RTabViewTab, { id: 'payments', label: 'Platby, \u0160vP, LK' },
1231                            React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'sk_dotacie', className: 'agenda-label-titlegray', label_style: 'top', control: React.createElement(StudentDotacieField, { valueRef: rowRef.sub('sk_dotacie'), dbi: dbi, row: row, year: year }) }),
1232                            React.createElement(asc_react_1.HGap, null),
1233                            React.createElement(asc_react2_1.RClassGroupBox, { title: "Cestovné" }, column_cestovne && React.createElement("div", { className: "agenda-cols-2" },
1234                                column_cestovne,
1235                                React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'cestovne_sposobdopravy' }),
1236                                column_cestovneMDPM)),
1237                            React.createElement(asc_react_1.HGap, null),
1238                            React.createElement(asc_react2_1.RClassGroupBox, { title: "Školy v prírode a lyžiarsky kurz v šk. roku " + (req.getSchoolYearName(year)) },
1239                                React.createElement("div", { style: { display: 'flex', flexFlow: 'row nowrap', gap: '8px', alignItems: 'center', padding: '0 8px' } },
1240                                    React.createElement("div", { style: { flex: 'auto 1 1' } },
1241                                        React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'sk_ucast_svp', label_style: 'embeded' }),
1242                                        React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'sk_ucast_lk', label_style: 'embeded' })),
1243                                    React.createElement("div", { style: { flex: '40% 1 1' } },
1244                                        React.createElement("div", { style: { opacity: 0.6, fontSize: '0.9em' } }, "Vopred m\u00F4\u017Eete evidova\u0165 predpoklad \u00FA\u010Dasti, nesk\u00F4r po \u0160vP alebo LK ozna\u010Dte skuto\u010Dn\u00FA \u00FA\u010Das\u0165.")))),
1245                            React.createElement(asc_react_1.HGap, null),
1246                            React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'sk_stipendia', className: 'agenda-label-titlegray', label_style: 'top', control: React.createElement(StudentStipendiaField, { valueRef: rowRef.sub('sk_stipendia'), dbi: dbi, row: row, year: year }) })))], parentEditingState.tabs, false), [req.school_country != 'sk' && req.school_country != 'gr' && React.createElement(tabview_1.RTabViewTab, { id: 'admissions', label: req.ls(4474) },
1247                            false && req.isAgenda() && React.createElement(MoreFieldsContactUs, { dlgRow: dlgRow, column: 'admissionids' }),
1248                            (0, asc_react_1.wrapSuspense)(React.createElement(React.Fragment, null,
1249                                React.createElement("div", { className: 'agenda-cols-2' },
1250                                    React.createElement("div", { style: { breakInside: 'avoid' } },
1251                                        req.school_country != 'sk' && React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'prevschoolid', control: req.school_country == 'cz' ? CzSchoolCombo : undefined }),
1252                                        React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'prevschool_code', className: 'agenda-label-valign-top', control: req.school_country == 'sk' ? SkSchoolCombo : undefined }),
1253                                        React.createElement(CzODHL, { dlgRow: dlgRow, archive: archive, cz_school_druhy: cz_school_druhy }),
1254                                        !cz_urcite_ms && React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'cz_matrika_STUPEN' }),
1255                                        (cz_school_druhy.includes('Z') || cz_school_druhy.includes('M')) && React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'cz_admission_spadovy' }),
1256                                        React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'admission_resultid' }),
1257                                        dbi.tableData('admissions').length > 0 && React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'admissionids' }),
1258                                        cz_school_druhy.includes('V') && React.createElement(React.Fragment, null,
1259                                            React.createElement(asc_react_1.VGap, null),
1260                                            React.createElement(asc_react2_1.RGroupBox, { title: 'VO\u0160' },
1261                                                React.createElement(autocomplete_1.DlgFieldAutocomplete, { dlgRow: dlgRow, column: 'cz_matrika_OBORS' }),
1262                                                React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'cz_matrika_RMAT' })))),
1263                                    React.createElement("div", { style: { breakInside: 'avoid' } },
1264                                        req.school_country != 'sk' && React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'nextschoolid', control: req.school_country == 'cz' ? CzSchoolCombo : undefined }),
1265                                        React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'nextschool_code', className: 'agenda-label-valign-top', control: req.school_country == 'sk' ? SkSchoolCombo : undefined }),
1266                                        !cz_urcite_ms && React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'nextodbor_code' }),
1267                                        !cz_urcite_ms && React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'cz_zapisovylistok_number' }))),
1268                                cz_school_druhy.includes('Z') && td.column('nextschools') && React.createElement(React.Fragment, null,
1269                                    React.createElement(asc_react_1.VGap, null),
1270                                    React.createElement(asc_react2_1.RClassGroupBox, { title: td.column('nextschools').name() },
1271                                        React.createElement("div", { style: { padding: '0 10px' } },
1272                                            React.createElement(subtableinput_1.default, { dataRef: rowRef.sub('nextschools'), dbiColumn: td.column('nextschools'), cols: [
1273                                                    { key: 'schoolid', width: 150, },
1274                                                    { key: 'odbor_code', width: 80, },
1275                                                    { key: 'odbor_note', width: 100, },
1276                                                ], cssClass: 'compact nowrap nowrap-th light-theme', fitWidth: true, style: {
1277                                                    height: 150,
1278                                                }, compactView: true, onEditRow: function (row) { return onEditNextSchool({ row: row, year: year }); } }))))))), !adding && React.createElement(tabview_1.RTabViewTab, { id: 'archive', label: req.ls(1162) },
1279                            React.createElement(ArchiveTab, { archive: archive, dlgRow: dlgRow })), !adding && hasExams && !cz_urcite_ms && React.createElement(tabview_1.RTabViewTab, { id: 'scertificates', label: req.ls(10708) },
1280                            React.createElement(ExamsTab, { archive: archive, dlgRow: dlgRow })), !adding && req.school_country != 'gr' && React.createElement(tabview_1.RTabViewTab, { id: 'rozhodnutia', label: req.ls(4880) },
1281                            React.createElement(RozhodnutiaTab, { archive: archive, dlgRow: dlgRow })), React.createElement(tabview_1.RTabViewTab, { id: 'other', label: req.ls(4349) },
1282                            React.createElement("div", { className: 'agenda-cols-2' },
1283                                React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'cz_matrika_exclude', label_style: 'embeded' }),
1284                                React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'external', label_style: 'embeded' }),
1285                                ((_c = rowRef.value) === null || _c === void 0 ? void 0 : _c.external)
1286                                    ? (React.createElement("div", { className: "agenda-dbifield-outer  labelstyle-embeded" },
1287                                        React.createElement("div", { className: "agenda-dbifield-field" },
1288                                            React.createElement("input", { type: "checkbox", checked: fal
1288se, disabled: true }),
1289                                            React.createElement("label", null, "Posiela\u0165 do centr\u00E1lneho registra RIS")),
1290                                        React.createElement("div", { className: "agenda-dbifield-after agenda-dbifield-icons" })))
1291                                    : React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'sk_ris_exclude', label_style: 'embeded' })),
1292                            req.school_country == 'sk' && (React.createElement(asc_react2_1.RClassGroupBox, { title: "Å koly" },
1293                                React.createElement("div", { className: 'agenda-cols-2' },
1294                                    React.createElement("div", { style: { breakInside: 'avoid' } },
1295                                        React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'prevschool_code', className: 'agenda-label-valign-top', control: req.school_country == 'sk' ? SkSchoolCombo : undefined })),
1296                                    React.createElement("div", { style: { breakInside: 'avoid' } },
1297                                        React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'nextschool_code', className: 'agenda-label-valign-top', control: req.school_country == 'sk' ? SkSchoolCombo : undefined }))))),
1298                            React.createElement(asc_react2_1.RClassGroupBox, { title: "" },
1299                                !cz_urcite_ms && React.createElement("div", { className: 'agenda-cols-2' },
1300                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'nameprefix' }),
1301                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'namesuffix' })),
1302                                React.createElement("div", { className: 'agenda-cols-2' },
1303                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'alternate_firstname' }),
1304                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'alternate_lastname' })),
1305                                React.createElement("div", { className: 'agenda-cols-2' },
1306                                    req.school_country != 'sk' && req.school_country != 'gr' && !cz_urcite_ms && (React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'prax_firmaid' })),
1307                                    !cz_urcite_ms && React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'isic_order' }),
1308                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'de_hortbetreuung' }),
1309                                    !number_inBasic && column_number,
1310                                    req.school_country != 'gr' && (React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'sisid' })),
1311                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'de_univentionid' }),
1312                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'sso1_id' }),
1313                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'at_bpk' }),
1314                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'reason_application' }),
1315                                    !showPlatbyTab && column_cestovne,
1316                                    !showPlatbyTab && column_cestovneMDPM,
1317                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'sk_poistenie' }))),
1318                            td.column('cz_nedojizdi_denne') && React.createElement(React.Fragment, null,
1319                                React.createElement(asc_react2_1.RClassGroupBox, { title: 'T\u0159\u00EDdn\u00ED v\u00FDkaz' },
1320                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'cz_nebydli_v_miste_skoly', label_style: 'embeded' }),
1321                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'cz_nedojizdi_denne', label_style: 'embeded' }
1321))),
1322                            React.createElement(asc_react_1.VGap, null),
1323                            React.createElement(asc_react_1.VGap, null),
1324                            req.school_country != 'sk' && React.createElement(React.Fragment, null,
1325                                React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'note_katlist', label_style: 'top', className: 'agenda-label-titlegray' }),
1326                                React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'sk_dolozka_katlist', label_style: 'top', className: 'agenda-label-titlegray' }),
1327                                React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'cb_note', label_style: 'top', className: 'agenda-label-titlegray' }),
1328                                React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'note', label_style: 'top', className: 'agenda-label-titlegray' }),
1329                                React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'sk_posledna_cinnost', label_style: 'top', className: 'agenda-label-titlegray' })),
1330                            req.school_country != 'gr' && (React.createElement(React.Fragment, null,
1331                                React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'educloudids', label_style: 'top', className: 'agenda-label-titlegray' }),
1332                                React.createElement(asc_react_1.VGap, null),
1333                                React.createElement(asc_react_1.VGap, null),
1334                                req.school_country == 'de' && React.createElement(asc_react2_1.RClassGroupBox, { title: '\u00D6PNV' },
1335                                    React.createElement("div", { className: 'agenda-cols-2' },
1336                                        React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'transport_pickup' }),
1337                                        React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'transport_dropoff' }),
1338                                        React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'transport_school' }),
1339                                        React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'transport_typ' }))),
1340                                React.createElement(asc_react2_1.RClassGroupBox, { title: req.ls(2077) },
1341                                    React.createElement("div", { style: { padding: '0  8px' } },
1342                                        React.createElement(ecards_1.ECardsDiv, { dbi: dbi, table: 'studentkopias', valueRef: rowRef.sub('ekarty') }))),
1343                                React.createElement(asc_react_1.VGap, null),
1344                                React.createElement(asc_react_1.VGap, null),
1345                                React.createElement(asc_react2_1.RClassGroupBox, { title: req.ls(1190) },
1346                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'representative_classids', className: 'agenda-label-valign-top', field_note: ls(13513) }))))), has_cf &&
1347                            React.createElement(tabview_1.RTabViewTab, { id: 'cf', label: req.ttls(3119) }, cb_cols.map(function (c) { return React.createElement(dbi_react_1.DlgField, { key: c, dlgRow: dlgRow, column: c }); })), req.school_country == 'sk' &&
1348                            React.createElement(tabview_1.RTabViewTab, { id: "sk_spis", label: "Pozn\u00E1mky (KL / OS)", title: 'Pozn\u00E1mky a r\u00F4zne dopl\u0148uj\u00FAce inform\u00E1cie do katal\u00F3gov\u00E9ho listu, triedneho v\u00FDkazu alebo osobn\u00E9ho spisu die\u0165a\u0165a' },
1349                                (req.jeZUS() || req.jeSUS()) && React.createElement(React.Fragment, null,
1350                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'zus_prijimacia_skuska_datum' }),
1351                                    React.createElement(asc_react_1.VGap, null),
1352                                    React.createElement(asc_react_1.VGap, null)),
1353                                React.createElement(asc_react2_1.RClassGroupBox, { title: "Poznámky v katalógovom liste / osobnom spise dieťaťa (" + req.getSchoolYearName(year) + ')' },
1354                                    React.createElement(KatListNotes, { dlgRow: dlgRow, archive: archive, type: 'katlist' }),
1355                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'note_katlist', label: 'V\u0161eobecn\u00E1 pozn\u00E1mka', className: 'agenda-label-valign-top', field_note: "Všeobecná poznámka do katalógového listu alebo osobného spisu dieťata pre školský rok " + req.getSchoolYearName(year) })),
1356                                React.createElement(asc_react_1.VGap, null),
1357                                React.createElement(asc_react_1.VGap, null),
1358                                React.createElement(asc_react2_1.RClassGroupBox, { title: "Poznámky v osobnom spise dieťaťa v ŠKD (" + req.getSchoolYearName(year) + ')' },
1359                                    React.createElement(KatListNotes, { dlgRow: dlgRow, archive: archive, type: 'skdlist' }),
1360                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'note_skdlist', className: 'agenda-label-valign-top', label: 'V\u0161eobecn\u00E1 pozn\u00E1mka', field_note: "Všeobecná poznámka do osobného spisu dieťaťa v školskom klube detí pre školský rok " + req.getSchoolYearName(year) })),
1361                                React.createElement(asc_react_1.VGap, null),
1362                                React.createElement(asc_react_1.VGap, null),
1363                                React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'cb_note', label_style: 'top', className: 'agenda-label-titlegray', field_note: "Poznámka v triednej knihe pre školský rok " + req.getSchoolYearName(year) }),
1364                                React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'note', label_style: 'top', className: 'agenda-label-titlegray', field_note: "Všeobecné poznámky za celé štúdium" }),
1365                                React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'sk_posledna_cinnost', label_style: 'top', className: 'agenda-label-titlegray', field_note: "Všeobecné poznámky za celé štúdium" }),
1366                                React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'sk_dolozka_katlist', label_style: 'top', className: 'agenda-label-titlegray', field_note: "Doložka v triednom v
1366ýkaze pre špeciálne školy pre školský rok " + req.getSchoolYearName(year) }),
1367                                React.createElement(asc_react_1.VGap, null),
1368                                React.createElement(asc_react2_1.RClassGroupBox, { title: "Triedny výkaz pre špeciálne školy" },
1369                                    React.createElement("div", { className: "agenda-cols-2" },
1370                                        React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'sk_ms_datefrom' }),
1371                                        React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'sk_ms_dateto' })),
1372                                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'sk_ms_v' }),
1373                                    React.createElement(asc_react_1.VGap, null),
1374                                    React.createElement("div", { className: "agenda-cols-2" },
1375                                        React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'sk_psd_datefrom' }),
1376                                        React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'sk_psd_v' }))),
1377                                (row === null || row === void 0 ? void 0 : row.id) && ((_d = dbi.rowData('studentkopias', row === null || row === void 0 ? void 0 : row.id)) === null || _d === void 0 ? void 0 : _d.sk_spis_info) && (React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: "sk_spis_info", label_style: "top", className: 'agenda-label-titlegray' }))), req.school_country == 'sk' && skRisEditingState.visible && (React.createElement(tabview_1.RTabViewTab, { id: "sk_ris", label: "RIS" },
1378                            React.createElement("div", { style: { margin: '-5px 0 -8px -8px' } },
1379                                React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'sk_ris_exclude', label_style: 'embeded' })),
1380                            React.createElement(SkRisTab, { editingState: skRisEditingState, dbi: dbi, row: row, key: row.id }))), req.school_country == 'sk' && row.id && (React.createElement(tabview_1.RTabViewTab, { id: "egov", label: "Registrat\u00FAra" },
1381                            React.createElement(EGovRsFileCard, { userid: 'Student' + row.id, yearid: year })))], false))))));
1382}
1383function StudentTypProspechField(props) {
1384    var req = edurequest_1.client_req;
1385    var dlgRow = props.dlgRow;
1386    var dbi = dlgRow.dbi, row = dlgRow.rowRef.value;
1387    var _a = React.useState(row.sk_typ_prospechu2 && row.sk_typ_prospechu != row.sk_typ_prospechu2 ? true : false), isDiff = _a[0], setIsDiff = _a[1];
1388    function diffChange(e) {
1389        var val = e.currentTarget.checked;
1390        setIsDiff(val);
1391        if (!val) {
1392            dlgRow.rowRef.sub('sk_typ_prospechu2').set('');
1393        }
1394    }
1395    React.useMemo(function () {
1396        setIsDiff(row.sk_typ_prospechu2 && row.sk_typ_prospechu != row.sk_typ_prospechu2 ? true : false);
1397    }, [dlgRow]);
1398    var readonly = dlgRow.rowRef.sub('sk_typ_prospechu2').set ? false : true;
1399    return (React.createElement(React.Fragment, null,
1400        React.createElement("div", { className: "agenda-dbifield-outer agenda-label-valign-top" },
1401            React.createElement("div", { className: 'agenda-dbifield-label', style: { paddingTop: isDiff ? '25px' : '7px' } }, "Typ prospechu:"),
1402            React.createElement("div", { className: 'agenda-dbifield-field', style: { paddingTop: '0' } },
1403                React.createElement("div", { className: isDiff ? 'agenda-cols-2' : '' },
1404                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'sk_typ_prospechu', placeholder: props.placeholder, className: isDiff ? 'agenda-label-fw' : 'agenda-label-hidden', label: isDiff ? '1. polrok' : '' }),
1405                    isDiff && (React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'sk_typ_prospechu2', className: isDiff ? 'agenda-label-fw' : 'agenda-label-hidden', label: isDiff ? '2. polrok' : '' }))),
1406                !readonly && (React.createElement("label", null,
1407                    React.createElement("input", { type: "checkbox", name: "isdiff", value: "1", checked: isDiff, onChange: diffChange }),
1408                    "R\u00F4zny typ prospechu v 1. a 2. polroku"))))));
1409}
1410function CertificatesArchive(props) {
1411    var req = edurequest_1.client_req;
1412    var dlgRow = props.dlgRow, archive = props.archive;
1413    var dbi = dlgRow.dbi;
1414    var top_rows = [];
1415    var main_rows = [];
1416    var footer_rows = [];
1417    var columns = [
1418        {
1419            key: 'name',
1420            label: req.ls(1299),
1421            width: 150,
1422            frozen: true,
1423        },
1424    ];
1425    var subject2row = new Map();
1426    var years = (archive === null || archive === void 0 ? void 0 : archive.years) || [];
1427    var halves = dbi.tableIds('halves');
1428    function getCert(year, half) {
1429        return archive.certificates.find(function (cert) { return cert.year == year && cert.half == half; });
1430    }
1431    var show_grade = false;
1432    for (var _i = 0, years_1 = years; _i < years_1.length; _i++) {
1433        var y = years_1[_i];
1434        for (var _a = 0, _b = y.halves; _a < _b.length; _a++) {
1435            var h = _b[_a];
1436            if (h.grade && y.grade && h.grade != y.grade) {
1437                show_grade = true;
1438            }
1439        }
1440    }
1441    for (var _c = 0, years_2 = years; _c < years_2.length; _c++) {
1442        var y = years_2[_c];
1443        for (var _d = 0, _e = y.halves; _d < _e.length; _d++) {
1444            var h = _e[_d];
1445            var half = h.half;
1446            var key = "yh_".concat(y.year + half);
1447            var parentLabel = h.class_name + "\n" + req.getSchoolYearName(y.year);
1448            if (show_grade) {
1449                parentLabel += "\n" + h.grade;
1450            }
1451            columns.push({
1452                key: key,
1453                label: half + '.',
1454                parentLabel: parentLabel,
1455                width: 30,
1456                align: 'center',
1457                resizable: true,
1458                formatter: function (_a) {
1459                    var row = _a.row, key = _a.cd.key;
1460                    var v = ASC.strVal(row[key]);
1461                    if (row.id == 'value' && v.length > 10) {
1462                        return React.createElement("span", { style: { fontSize: '80%' } }, v);
1463                    }
1464                    return v;
1465                }
1466            });
1467            var cert = getCert(y.year, half);
1468            if (cert) {
1469                for (var _f = 0, _g = cert.subjects; _f < _g.length; _f++) {
1470                    var subject = _g[_f];
1471                    var subjectid = subject.subjectid;
1472                    var row = subject2row.get(subjectid);
1473                    if (!row) {
1474                        subject2row.set(subjectid, row = {
1475                            id: subjectid,
1476                            subjectid: subjectid,
1477                            name: archive.certificates_subject2name[subjectid],
1478                        });
1479                        (subject.top ? top_rows : main_rows).push(row);
1480                    }
1481                    row[key] = subject.text;
1482                }
1483            }
1484        }
1485    }
1486    while (columns.length < 7) {
1487        columns.push({
1488            key: 'dummy_' + columns.length,
1489            label: '',
1490        });
1491    }
1492    for (var _h = 0, _j = (archive === null || archive === void 0 ? void 0 : archive.certificates_footer_columns) || []; _h < _j.length; _h++) {
1493        var _k = _j[_h], column = _k.id, name = _k.name;
1494        var row = {
1495            id: column,
1496            column: column,
1497            name: name,
1498        };
1499        for (var _l = 0, years_3 = years; _l < years_3.length; _l++) {
1500            var y = years_3[_l];
1501            for (var _m = 0, halves_1 = halves; _m < halves_1.length; _m++) {
1502                var half = halves_1[_m];
1503                var key = "yh_".concat(y.year + half);
1504                var cert = getCert(y.year, half);
1505                if (cert) {
1506                    var v = cert[column];
1507                    if (typeof v == 'number')
1508                        v = '' + v;
1509                    row[key] = v;
1510                }
1511            }
1512        }
1513        footer_rows.push(row);
1514    }
1515    if (!archive)
1516        return React.createElement(asc_react_1.Loading, null);
1517    if (true) {
1518        return React.createElement(asc_react_1.RScopedStyle, { style: tslib_1.__assign({ display: 'flex', flexDirection: 'column' }, props.style || {}), rules: {
1519                ".asc-dt TH, .asc-dt TD": {
1520                    padding: '1px 2px',
1521                    height: 'auto',
1522                },
1523                ".asc-dt TH": {
1524                    whiteSpace: 'pre',
1525                },
1526                ".asc-dt TD": {},
1527                ".asc-dt TH, TR.footer TD": {
1528                    background: '#eee',
1529                    border: '1px solid #fff',
1530                }
1531            } },
1532            React.createElement(datatable_1.RDatatable, { columns: columns, data: tslib_1.__spreadArray(tslib_1.__spreadArray(tslib_1.__spreadArray([], top_rows, true), main_rows, true), footer_rows, true), cssClass: 'light-theme', fitWidth: columns.length <= 1 + 2 * 9, rowClassNames: function (row) { return row.column && 'footer'; }, style: {
1533                    flex: '1 1 0px',
1534                } }));
1535    }
1536    else {
1537        return React.createElement(asc_react_1.RScopedStyle, { style: tslib_1.__assign({}, props.style), rules: {
1538                ".yh": {
1539                    width: 50,
1540                    textAlign: 'center'
1541                }
1542            } },
1543            React.createElement("table", null,
1544                React.createElement("colgroup", null,
1545                    React.createElement("col", { className: 'name' }),
1546                    React.createElement("col", { span: columns.length - 1, className: 'yh' })),
1547                React.createElement("thead", null,
1548                    React.createElement("tr", null, columns.map(function (cd, cdi) {
1549                        var _a, _b;
1550                        if (cd.parentLabel) {
1551                            if (((_a = columns[cdi - 1]) === null || _a === void 0 ? void 0 : _a.parentLabel) == cd.parentLabel)
1552                                return null;
1553                            var colSpan = 1;
1554                            while (((_b = columns[cdi + colSpan]) === null || _b === void 0 ? void 0 : _b.parentLabel) == cd.parentLabel)
1555                                colSpan++;
1556                            return React.createElement("th", { key: cd.key, colSpan: colSpan }, cd.parentLabel);
1557                        }
1558                        else {
1559                            return React.createElement("th", { key: cd.key, rowSpan: 2 }, cd.label);
1560                        }
1561                    })),
1562                    React.createElement("tr", null, columns.map(function (cd) {
1563                        if (!cd.parentLabel)
1564                            return null;
1565                        return React.createElement("th", { key: cd.key }, cd.label);
1566                    }))),
1567                React.createElement("tbody", null, tslib_1.__spreadArray(tslib_1.__spreadArray([], top_rows, true), main_rows, true).map(function (row) { return React.createElement("tr", { key: row.id }, columns.map(function (cd) { return React.createElement("td", { key: cd.key }, row[cd.key]); })); })),
1568                React.createElement("tfoot", null, footer_rows.map(function (row) { return React.createElement("tr", { key: row.id }, columns.map(function (cd) { return React.createElement("td", { key: cd.key }, row[cd.key]); })); }))));
1569    }
1570}
1571function GroupSubjectsList(props) {
1572    var req = edurequest_1.client_req;
1573    var dlgRow = props.dlgRow;
1574    var dbi = dlgRow.dbi, row = dlgRow.rowRef.value;
1575    return (React.createElement(React.Fragment, null,
1576        React.createElement("div", { className: 'agenda-dbifield-multiitems', style: { margin: '-4px 0 4px 0' } }, row.groupsubjectids.map(function (gsid, i) { return React.createElement("div", { key: gsid, className: 'agenda-dbifield-multi-item', "data-id": gsid, onClick: function () { return dbi.frontend.showItemDlg('groupsubjects', gsid); } }, dbi.rowName('groupsubjects', gsid)); })),
1577        dbi.rowData('global_settings', '1', {}).noveKurzy && req.isAdmin() && React.createElement(anchor_1.RAnchor, { label: req.ls(8827), onClick: function () {
1578                var dlg = barNewDialog({
1579                    'source': '/customize/helpus.php?cmd=HelpusHelpDialog&helpid=2058&retf=1',
1580                    'dialogClass': 'whiteDialog',
1581                    'returnFunc': function () {
1582                        barCloseDialog(dlg);
1583                        document.location.href = '/elearning/?eqa=Y21kPUNvdXJzZXNFZGl0b3ImdHBvaGxhZD1jb3Vyc2Vz';
1584                    }
1585                });
1586            } })));
1587}
1588function VzdelavaciPoukaz(props) {
1589    var req = edurequest_1.client_req;
1590    var dlgRow = props.dlgRow;
1591    var row = dlgRow.rowRef.value;
1592    return (React.createElement(React.Fragment, null,
1593        React.createElement(dbi_react_1.DBIField, { column: 'sk_vzdelavaci_poukaz', dlgRow: dlgRow, readonly: true }),
1594        (req.isAdmin() || req.hasRight('vzdelavaciepoukazy')) &&
1595            React.createElement(anchor_1.RAnchor, { label: "otvori\u0165 Vzdel\u00E1vacie poukazy", onClick: function () {
1596                    window.open(barEncLink('/vzdelavaciepoukazy/?tab=prehlad&studentid=' + row.studentid), '_blank');
1597                } })));
1598}
1599function VzdelavaciPoukazNaKruzok(props) {
1600    var dbi = props.dbi, valueRef = props.valueRef;
1601    var kruzky = dbi.tableFilterData('groupsubjects', { subjectid: '6' });
1602    var items = kruzky.map(function (k) { return { name: k.name, value: k.id }; });
1603    return (React.createElement(combobox_1.default, { items: items, valueRef: valueRef }));
1604}
1605function validate_duplicates(params) {
1606    return tslib_1.__awaiter(this, void 0, void 0, function () {
1607        var req, row, origrow, dbi, year, checkRow, bol, _i, duplicates_columns_1, col, dup, cd, res;
1608        return tslib_1.__generator(this, function (_a) {
1609            switch (_a.label) {
1610                case 0:
1611                    req = edurequest_1.client_req;
1612                    row = params.row, origrow = params.origrow, dbi = params.dbi;
1613                    year = parseInt(dbi.dbid);
1614                    checkRow = {
1615                        id: row.id,
1616                        classid: row.classid,
1617                    };
1618                    bol = false;
1619                    for (_i = 0, duplicates_columns_1 = exports.duplicates_columns; _i < duplicates_columns_1.length; _i++) {
1620                        col = duplicates_columns_1[_i];
1621                        if (row[col] !== undefined && row[col] !== origrow[col]) {
1622                            checkRow[col] = row[col];
1623                            bol = true;
1624                        }
1625                    }
1626                    if (!bol)
1627                        return [2, true];
1628                    return [4, ASC.blockUI((0, student_1.studentDlg_checkDuplicate)(null, year, checkRow))];
1629                case 1:
1630                    dup = _a.sent();
1631                    if (!dup)
1632                        return [2, true];
1633                    cd = dbi.column('studentkopias', dup.column);
1634                    return [4, asc_react_1.RDialog.showConfirm(React.createElement("div", null,
1635                            req.ls(6358) + ':',
1636                            React.createElement(asc_react_1.VGap, null),
1637                            cd.name() + ': ' + cd.textValue(checkRow[dup.column]),
1638                            React.createElement(asc_react_1.VGap, null),
1639                            React.createElement("div", { style: {
1640                                    overflow: "auto",
1641                                    maxHeight: '50vh'
1642                                } }, dup.duplicates.join(', '))), {
1643                            msgType: 'warn',
1644                            buttons: [
1645                                {
1646                                    action: 'ok',
1647                                    type: 'green',
1648                                    label: req.ls(1529),
1649                                },
1650                                'cancel',
1651                            ]
1652                        })];
1653                case 2:
1654                    res = _a.sent();
1655                    return [2, res == 'ok'];
1656            }
1657        });
1658    });
1659}
1660function validate_emailUnique(params) {
1661    return tslib_1.__awaiter(this, void 0, void 0, function () {
1662        var req, row, origrow, dbi, year, changes, names;
1663        return tslib_1.__generator(this, function (_a) {
1664            switch (_a.label) {
1665                case 0:
1666                    req = edurequest_1.client_req;
1667                    row = params.row, origrow = params.origrow, dbi = params.dbi;
1668                    year = parseInt(dbi.dbid);
1669                    changes = dbi_1.DBITools.rowChanges2write(origrow || {}, row);
1670                    if (req.school_country != 'sk'
1671                        || !changes
1672                        || !(changes.email
1673                            || 'email_private' in changes)) {
1674                        return [2, true];
1675                    }
1676                    return [4, ASC.blockUI((0, student_1.studentDlg_checkEmail)(null, year, params.table, row))];
1677                case 1:
1678                    names = _a.sent();
1679                    if (!names || names.length == 0) {
1680                        return [2, true];
1681                    }
1682                    return [4, asc_react_1.RDialog.showMessage(React.createElement("div", null,
1683                            req.ls(6358) + ':',
1684                            React.createElement(asc_react_1.VGap, null),
1685                            'Email: ' + row.email,
1686                            React.createElement(asc_react_1.VGap, null),
1687                            React.createElement("div", { style: {
1688                                    overflow: "auto",
1689                                    maxHeight: '50vh'
1690                                } },
1691                                "Pros\u00EDm zadajte in\u00FD email, tento u\u017E m\u00E1:",
1692                                React.createElement("br", null),
1693                                React.createElement("ul", { className: "circles" }, names.map(function (name) { return React.createElement("li", { key: name }, name); })))), {
1694                            msgType: 'warn',
1695                            width: '400px',
1696                            buttons: [
1697                                'cancel',
1698                            ]
1699                        })];
1700                case 2:
1701                    _a.sent();
1702                    return [2, false];
1703            }
1704        });
1705    });
1706}
1707exports.validate_emailUnique = validate_emailUnique;
1708function czSchoolDruh_filterComboDB(cz_school_druhy, db) {
1709    if (!db)
1710        return db;
1711    return db.map(function (row) {
1712        if (!Array.isArray(row) && row.tag) {
1713            var ok = cz_school_druhy.includes(row.tag);
1714            if (!ok && row.tag == 'S' && cz_school_druhy.includes('V'))
1715                ok = true;
1716            if (!ok)
1717                return tslib_1.__assign(tslib_1.__assign({}, row), { hidden: true });
1718        }
1719        return row;
1720    });
1721}
1722function czDetectPT(props) {
1723    var _a;
1724    var dlgRow = props.dlgRow, archive = props.archive, cz_school_druhy = props.cz_school_druhy;
1725    var dbi = dlgRow.dbi, srow = dlgRow.rowRef.value;
1726    var req = dbi.req;
1727    var pt = false;
1728    var zs_year = null;
1729    var pt_only = false;
1730    if (cz_school_druhy.join() == 'Z') {
1731        {
1732            var crow = dbi.rowData('classes', srow.classid);
1733            var grade = srow.grade || (crow === null || crow === void 0 ? void 0 : crow.grade);
1734            pt = grade === '0';
1735        }
1736        if (archive) {
1737            var y0 = archive.years[0];
1738            if (y0 && y0.year != parseInt(dbi.dbid)) {
1739                pt = y0.grade === '0';
1740                if (pt) {
1741                    zs_year = (_a = archive.years.find(function (y) { return y.grade != '0'; })) === null || _a === void 0 ? void 0 : _a.year;
1742                }
1743            }
1744            if (srow.dateto) {
1745                var y_last = archive.years[archive.years.length - 1];
1746                if (req.getSchoolYear(srow.dateto) == (y_last === null || y_last === void 0 ? void 0 : y_last.year) && y_last.grade == '0') {
1747                    pt_only = true;
1748                }
1749            }
1750        }
1751    }
1752    return { pt: pt, zs_year: zs_year, pt_only: pt_only };
1753}
1754function CzDateFromTo(props) {
1755    var dlgRow = props.dlgRow, archive = props.archive, cz_school_druhy = props.cz_school_druhy;
1756    var dbi = dlgRow.dbi;
1757    var req = dbi.req;
1758    var srow = dlgRow.rowRef.value;
1759    var _a = czDetectPT({ dlgRow: dlgRow, archive: archive, cz_school_druhy: cz_school_druhy }), pt = _a.pt, zs_year = _a.zs_year, pt_only = _a.pt_only;
1760    var CzSchoolDruh_FilterCombo = React.useCallback(function (props) {
1761        var dbiColumn = props.dbiColumn;
1762        var s_druhy = cz_school_druhy;
1763        if (dbiColumn.id == 'cz_matrika_KOD_UKON' && pt_only)
1764            s_druhy = ['M'];
1765        return React.createElement(combobox_1.default, { valueRef: props.valueRef, db: czSchoolDruh_filterComboDB(s_druhy, dbiColumn.comboDB) });
1766    }, [cz_school_druhy, pt_only]);
1767    var datefrom_el = React.createElement(React.Fragment, null,
1768        React.createElement("div", { className: 'agenda-cols-2' },
1769            React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'datefrom' }),
1770            React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'cz_matrika_KOD_ZAH', control: CzSchoolDruh_FilterCombo })));
1771    if (pt)
1772        datefrom_el = React.createElement(React.Fragment, null,
1773            React.createElement("div", { className: 'agenda-cols-2' },
1774                React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'datefrom', label: 'Za\u010D\u00E1tek studia (PT)' }),
1775                React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'cz_matrika_pt_KOD_ZAH', label: 'K\u00F3d zah\u00E1jen\u00ED vzd\u011Bl\u00E1v\u00E1n\u00ED' })),
1776            (zs_year || srow.cz_matrika_KOD_ZAH) && React.createElement(React.Fragment, null,
1777                React.createElement("div", { className: 'agenda-cols-2' },
1778                    React.createElement("div", { className: "agenda-dbifield-outer" },
1779                        React.createElement("div", { className: 'agenda-dbifield-label' },
1780                            React.createElement(asc_react_1.RLabel, { text: 'Za\u010D\u00E1tek studia (Z\u0160)' })),
1781                        React.createElement("div", { className: 'agenda-dbifield-field' },
1782                            React.createElement("span", { className: 'agenda-dbifield-readonly' }, zs_year && (0, lib_date_1.date_format_date)(req, zs_year + '-09-01'))),
1783                        React.createElement("div", { className: 'agenda-dbifield-after agenda-dbifield-icons' })),
1784                    React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'cz_matrika_KOD_ZAH', control: CzSchoolDruh_FilterCombo }))));
1785    return React.createElement(React.Fragment, null,
1786        datefrom_el,
1787        React.createElement("div", { className: 'agenda-cols-2' },
1788            React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'dateto' }),
1789            React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'cz_matrika_KOD_UKON', control: CzSchoolDruh_FilterCombo })));
1790}
1791function CzODHL(props) {
1792    var dlgRow = props.dlgRow, archive = props.archive, cz_school_druhy = props.cz_school_druhy;
1793    var dbi = dlgRow.dbi, rowRef = dlgRow.rowRef;
1794    var td = dbi.table('studentkopias');
1795    var cd = td.column('cz_matrika_ODHL');
1796    if (!cd)
1797        return null;
1798    var pt = czDetectPT({ dlgRow: dlgRow, archive: archive, cz_school_druhy: cz_school_druhy }).pt;
1799    return React.createElement(React.Fragment, null,
1800        pt && React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'cz_matrika_pt_ODHL' }),
1801        React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'cz_matrika_ODHL', label: pt ? 'Předchozí působiště (před ZŠ)' : undefined, control: React.createElement(combobox_1.default, { valueRef: rowRef.sub('cz_matrika_ODHL'), db: czSchoolDruh_filterComboDB(cz_school_druhy, cd.comboDB) }) }));
1802}
1803function CzHealthinput(props) {
1804    var dlgRow = props.dlgRow, archive = props.archive, cz_urcite_ms = props.cz_urcite_ms;
1805    var dbi = dlgRow.dbi, table = dlgRow.table;
1806    var adding = !dlgRow.rowRef.value.id;
1807    var dop_tcols = React.useMemo(function () {
1808        var dop_tcols = [
1809            {
1810                key: '_edit', label: '', width: 16,
1811                formatter: function (_a) {
1812                    var row = _a.row;
1813                    return React.createElement("img", { src: (0, actions_1.action_icon)('edit'), style: { height: 16, cursor: 'pointer' }, onClick: function () { return (0, maindbi_ui_1.showMainDbiItemDlg)(row.year, 'cz_doporuceni_vzsvp', row.id); } });
1814                }
1815            },
1816            { key: 'datefrom', width: 50, resizable: true },
1817            { key: 'cz_matrika_ID_ZNEV_name', width: 150, resizable: true },
1818        ];
1819        return dop_tcols;
1820    }, []);
1821    if (!dbi.column(table, 'cz_matrika_POSTIZ1'))
1822        return null;
1823    var gb_minHeight = 160;
1824    return React.createElement(React.Fragment, null,
1825        React.createElement("div", { className: 'agenda-cols-2' },
1826            React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'cz_zdr_poist' }),
1827            React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'cz_zdr_cpoj' }),
1828            !cz_urcite_ms && React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'cz_matrika_INDI' }),
1829            !cz_urcite_ms && React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'cz_matrika_UVP' }),
1830            React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'cz_matrika_PSPO1', label_style: 'embeded' })),
1831        !adding && React.createElement(asc_react2_1.RGroupBox, { title: React.createElement(React.Fragment, null,
1832                React.createElement("div", { style: { float: 'right' } },
1833                    React.createElement(anchor_1.RAnchor, { label: (0, actions_1.action_name)('help'), onClick: function () { return (0, asc_react_1.openUrl)('https://help.edupage.org/cz/e1361'); } })),
1834                'Doporučení pro vzdělávání žáka se SVP'), style: { minHeight: gb_minHeight } },
1835            React.createElement("div", { style: { paddingLeft: '16px' } }, archive
1836                ? (archive.cz_doporuceni_vzsvp.length > 0 && React.createElement(datatable_1.RDatatable, { data: archive.cz_doporuceni_vzsvp, columns: dop_tcols, dbi: dbi, dbi_table: 'cz_doporuceni_vzsvp', cssClass: 'compact light-theme', fitWidth: true }))
1837                : React.createElement(asc_react_1.Loading, null))),
1838        React.createElement(asc_react_1.VGap, null),
1839        React.createElement(asc_react2_1.RGroupBox, { title: 'Star\u00FD zp\u016Fsob evidence', style: { minHeight: gb_minHeight } },
1840            React.createElement("div", { className: 'agenda-cols-2' },
1841                React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'cz_matrika_POSTIZ1' }),
1842                React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'cz_matrika_POSTIZ2' }),
1843                React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'cz_matrika_SZ', control: cz_controls_1.CzStudentSZField }),
1844                React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'cz_matrika_VICE_VAD', label_style: 'embeded' }),
1845                React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'cz_matrika_ZZ', label_style: 'embeded' }),
1846                React.createElement(dbi_react_1.DlgField, { dlgRow: dlgRow, column: 'cz_matrika_NADANI', label_style: 'embeded' }
1846))));
1847}
1848CzHealthinput.needed_part = (0, dbi_1.typed)({
1849    studentkopias: [
1850        'cz_matrika_POSTIZ1',
1851        'cz_matrika_POSTIZ2',
1852        'cz_matrika_INDI',
1853        'cz_matrika_UVP',
1854        'cz_matrika_VICE_VAD',
1855        'cz_matrika_SZ',
1856        'cz_matrika_ZZ',
1857        'cz_matrika_NADANI',
1858        'cz_matrika_PSPO1',
1859        'cz_zdr_cpoj',
1860        'cz_matrika_SZ_vysl',
1861    ],
1862    cz_doporuceni_vzsvp: [
1863        'studentid',
1864        'cz_matrika_ID_ZNEV',
1865        'cz_matrika_ID_ZNEV_name',
1866        'datefrom',
1867        'dateto',
1868    ],
1869});
1870CzHealthinput.needed_combos = (0, dbi_1.typed)({
1871    studentkopias: [
1872        'cz_matrika_POSTIZ1',
1873        'cz_matrika_POSTIZ2',
1874        'cz_matrika_INDI',
1875        'cz_matrika_UVP',
1876        'cz_matrika_SZ',
1877        'cz_matrika_SZ_vysl',
1878    ],
1879});
1880function useParentEditingState(params) {
1881    var _this = this;
1882    var req = edurequest_1.client_req;
1883    var dbi = params.dbi, srow = params.srow, blank_add = params.blank_add, readonly = params.readonly, onChange = params.onChange, selectTab = params.selectTab, log_module = params.log_module;
1884    var studentid = srow.id.split(':')[0] || '';
1885    var blankState = React.useMemo(function () { return ({
1886        studentid: studentid,
1887        changes_parent: {},
1888        changes_relation: {},
1889        addids: [],
1890        deleteids: [],
1891        linkExisting: [],
1892        setpreferred: '',
1893    }); }, [studentid]);
1894    var _a = (0, asc_react_1.useStateRef)(blankState), state = _a[0], stateRef0 = _a[1];
1895    React.useDebugValue(state);
1896    React.useEffect(function () { return stateRef0.set(blankState); }, [studentid]);
1897    var stateRef = React.useMemo(function () { return readonly ? new asc_react_1.ValueRef(state, null) : stateRef0; }, [readonly, state, stateRef0]);
1898    var isChanged = state.studentid == studentid
1899        && (ASC.count(state.changes_parent) > 0 || ASC.count(state.changes_relation) > 0 || !!state.setpreferred);
1900    React.useEffect(function () {
1901        if (isChanged)
1902            onChange();
1903    }, [isChanged, onChange]);
1904    var parentids = (0, asc_react_1.useMemoArray)(tslib_1.__spreadArray(tslib_1.__spreadArray(tslib_1.__spreadArray([], (0, dbi_1.idsArrayDiff)(srow.parentids || [], state.deleteids), true), state.addids, true), state.linkExisting.map(function (d) { return d.id; }), true));
1905    var preferredRef = React.useMemo(function () {
1906        var orig_preferred = parentids[0] || '';
1907        return stateRef
1908            .sub('setpreferred')
1909            .cast(function (o) { return o || orig_preferred; }, function (n) { return n == orig_preferred ? '' : n; });
1910    }, [parentids, stateRef]);
1911    var addParent = function (parentData, relationData, silent) {
1912        if (silent === void 0) { silent = false; }
1913        var addid = '*' + Math.random();
1914        if (!silent)
1915            selectTab('parent_' + addid);
1916        stateRef.set(function (state) {
1917            var _a, _b;
1918            return tslib_1.__assign(tslib_1.__assign({}, state), { changes_parent: tslib_1.__assign(tslib_1.__assign({}, state.changes_parent), (_a = {}, _a[addid] = parentData, _a)), changes_relation: tslib_1.__assign(tslib_1.__assign({}, state.changes_relation), (_b = {}, _b[addid] = relationData || {}, _b)), addids: tslib_1.__spreadArray(tslib_1.__spreadArray([], state.addids, true), [addid], false) });
1919        });
1920    };
1921    (0, asc_react_1.useCallOnce)(!studentid && blank_add && !dbi.mock, function () {
1922        var pcols = ParentInput.npp().parents;
1923        for (var _i = 0, _a = ['parent1_', 'parent2_', 'parent3_']; _i < _a.length; _i++) {
1924            var prefix = _a[_i];
1925            var prow = {};
1926            var bol = false;
1927            for (var _b = 0, pcols_1 = pcols; _b < pcols_1.length; _b++) {
1928                var c = pcols_1[_b];
1929                var v = blank_add[prefix + c];
1930                if (v === undefined || v === '')
1931                    continue;
1932                prow[c] = v;
1933                bol = true;
1934            }
1935            if (bol) {
1936                addParent(prow, null, true);
1937            }
1938        }
1939    });
1940    var afterOk_ref = React.useRef([]);
1941    return React.useMemo(function () {
1942        var _a;
1943        var year = parseInt(dbi.dbid);
1944        var res = {
1945            isChanged: isChanged,
1946            tabs: [],
1947            onValidate: function (_a) {
1948                var srow = _a.srow;
1949                return tslib_1.__awaiter(_this, void 0, void 0, function () {
1950                    var preferredid, write_parentids, afterOk, _loop_2, _i, parentids_2, parentid, state_1, i, _loop_3, _b, _c, parentid;
1951                    var _this = this;
1952                    return tslib_1.__generator(this, function (_d) {
1953                        switch (_d.label) {
1954                            case 0:
1955                                preferredid = preferredRef.value;
1956                                write_parentids = [];
1957                                afterOk = [];
1958                                _loop_2 = function (parentid) {
1959                                    var link, doLink, doAdd, change_parent, change_relation_1, tempid, duplicates, link_1, res_1;
1960                                    return tslib_1.__generator(this, function (_e) {
1961                                        switch (_e.label) {
1962                                            case 0:
1963                                                link = state.linkExisting.find(function (l) { return l.id == parentid; });
1964                                                doLink = function (link) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
1965                                                    var dbi2;
1966                                                    return tslib_1.__generator(this, function (_a) {
1967                                                        switch (_a.label) {
1968                                                            case 0:
1969                                                                if (!(link.yearto && link.yearto < year)) return [3, 3];
1970                                                                return [4, req.maindbi(link.yearto, {})];
1971                                                            case 1:
1972                                                                dbi2 = _a.sent();
1973                                                                return [4, ASC.blockUI(dbi2.backend.updateRow('parents', { id: link.id, yearto: null }, { log_module: log_module }))];
1974                                                            case 2:
1975                                                                _a.sent();
1976                                                                _a.label = 3;
1977                                                            case 3: return [2];
1978                                                        }
1979                                                    });
1980                                                }); };
1981                                                doAdd = function (prow) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
1982                                                    return tslib_1.__generator(this, function (_a) {
1983                                                        switch (_a.label) {
1984                                                            case 0: return [4, ASC.blockUI(dbi.backend.addRow('parents', prow, { log_module: log_module }))];
1985                                                            case 1: return [2, _a.sent()];
1986                                                        }
1987                                                    });
1988                                                }); };
1989                                                if (!link) return [3, 2];
1990                                                return [4, doLink(link)];
1991                                            case 1:
1992                                                _e.sent();
1993                                                return [3, 18];
1994                                            case 2:
1995                                                change_parent = state.changes_parent[parentid] || {};
1996                                                change_relation_1 = state.changes_relation[parentid] || {};
1997                                                if (!change_parent.email) return [3, 4];
1998                                                return [4, validate_emailUnique({
1999                                                        dbi: dbi,
2000                                                        origrow: dbi.rowData('parents', parentid),
2001                                                        table: 'parents',
2002                                                        row: tslib_1.__assign(tslib_1.__assign({}, dbi.rowData('parents', parentid)), change_parent)
2003                                                    })];
2004                                            case 3:
2005                                                if (!(_e.sent())) {
2006                                                    return [2, { value: null }];
2007                                                }
2008                                                _e.label = 4;
2009                                            case 4:
2010                                                if (!parentid.startsWith('*')) return [3, 15];
2011                                                if (!parentHasSomeData(ch
2011ange_parent))
2012                                                    return [2, "continue"];
2013                                                tempid = parentid;
2014                                                return [4, ASC.blockUI((0, parent_1.parentPossibleDuplicates)(null, year, change_parent))];
2015                                            case 5:
2016                                                duplicates = (_e.sent()).duplicates;
2017                                                if (!(duplicates.length > 0)) return [3, 12];
2018                                                link_1 = null;
2019                                                return [4, asc_react_1.RDialog.show(React.createElement(parent_2.DuplicateParentsDlg, { dbi: dbi, prow: change_parent, duplicates: duplicates, onUse: function (d) { return link_1 = d; } }))];
2020                                            case 6:
2021                                                res_1 = _e.sent();
2022                                                if (!link_1) return [3, 8];
2023                                                return [4, doLink(link_1)];
2024                                            case 7:
2025                                                _e.sent();
2026                                                parentid = link_1.id;
2027                                                return [3, 11];
2028                                            case 8:
2029                                                if (!(res_1 == 'no')) return [3, 10];
2030                                                return [4, doAdd(change_parent)];
2031                                            case 9:
2032                                                parentid = _e.sent();
2033                                                return [3, 11];
2034                                            case 10: return [2, { value: null }];
2035                                            case 11: return [3, 14];
2036                                            case 12: return [4, doAdd(change_parent)];
2037                                            case 13:
2038                                                parentid = _e.sent();
2039                                                _e.label = 14;
2040                                            case 14:
2041                                                if (parentid.startsWith('*'))
2042                                                    ASC.dieError('9333464420', [parentid, tempid]);
2043                                                if (preferredid == tempid)
2044                                                    preferredid = parentid;
2045                                                return [3, 17];
2046                                            case 15:
2047                                                if (!(ASC.count(change_parent) > 0)) return [3, 17];
2048                                                if (!parentHasSomeData(tslib_1.__assign(tslib_1.__assign({}, dbi.rowData('parents', parentid)), change_parent))) {
2049                                                    asc_react_1.RDialog.showMessage(req.ls(2921));
2050                                                    selectTab('parent_' + parentid);
2051                                                    return [2, { value: null }];
2052                                                }
2053                                                return [4, ASC.blockUI(dbi.backend.updateRow('parents', tslib_1.__assign(tslib_1.__assign({}, change_parent), { id: parentid }), { log_module: log_module }))];
2054                                            case 16:
2055                                                _e.sent();
2056                                                _e.label = 17;
2057                                            case 17:
2058                                                if (ASC.count(change_relation_1) > 0) {
2059                                                    afterOk.push(function (srow) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
2060                                                        var studentid;
2061                                                        return tslib_1.__generator(this, function (_a) {
2062                                                            switch (_a.label) {
2063                                                                case 0:
2064                                                                    studentid = srow.id.split(':')[0];
2065                                                                    return [4, (0, parent_1.parentSetStudentRelation)(null, year, parentid, studentid, change_relation_1, { log_module: log_module })];
2066                                                                case 1:
2067                                                                    _a.sent();
2068                                                                    return [2];
2069                                                            }
2070                                                        });
2071                                                    }); });
2072                                                }
2073                                                _e.label = 18;
2074                                            case 18:
2075                                                write_parentids.push(parentid);
2076                                                return [2];
2077                                        }
2078                                    });
2079                                };
2080                                _i = 0, parentids_2 = parentids;
2081                                _d.label = 1;
2082                            case 1:
2083                                if (!(_i < parentids_2.length)) return [3, 4];
2084                                parentid = parentids_2[_i];
2085                                return [5, _loop_2(parentid)];
2086                            case 2:
2087                                state_1 = _d.sent();
2088                                if (typeof state_1 === "object")
2089                                    return [2, state_1.value];
2090                                _d.label = 3;
2091                            case 3:
2092                                _i++;
2093                                return [3, 1];
2094                            case 4:
2095                                write_parentids = (0, dbi_1.idsArrayUnique)(write_parentids);
2096                                {
2097                                    i = write_parentids.indexOf(preferredid);
2098                                    if (i > 0) {
2099                                        write_parentids = tslib_1.__spreadArray([preferredid], write_parentids.filter(function (id) { return id != preferredid; }), true);
2100                                    }
2101                                }
2102                                _loop_3 = function (parentid) {
2103                                    afterOk.push(function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
2104                                        var _a;
2105                                        return tslib_1.__generator(this, function (_b) {
2106                                            switch (_b.label) {
2107                                                case 0: return [4, (0, parent_1.parentMaybeDelete)(null, year, parentid, { log_module: log_module, orig_uial: (_a = dbi.rowData('parents', parentid)) === null || _a === void 0 ? void 0 : _a._uial })];
2108                                                case 1:
2109                                                    _b.sent();
2110                                                    return [2];
2111                                            }
2112                                        });
2113                                    }); });
2114                                };
2115                                for (_b = 0, _c = state.deleteids; _b < _c.length; _b++) {
2116                                    parentid = _c[_b];
2117                                    _loop_3(parentid);
2118                                }
2119                                afterOk_ref.current = afterOk;
2120                                return [2, tslib_1.__assign(tslib_1.__assign({}, srow), { parentids: write_parentids })];
2121                        }
2122                    });
2123                });
2124            },
2125            onAfterOk: function (_a) {
2126                var srow = _a.srow;
2127                return tslib_1.__awaiter(this, void 0, void 0, function () {
2128                    var _i, _b, f;
2129                    return tslib_1.__generator(this, function (_c) {
2130                        switch (_c.label) {
2131                            case 0:
2132                                _i = 0, _b = afterOk_ref.current;
2133                                _c.label = 1;
2134                            case 1:
2135                                if (!(_i < _b.length)) return [3, 4];
2136                                f = _b[_i];
2137                                return [4, f(srow)];
2138                            case 2:
2139                                _c.sent();
2140                                _c.label = 3;
2141                            case 3:
2142                                _i++;
2143                                return [3, 1];
2144                            case 4:
2145                                afterOk_ref.current = [];
2146                                return [2];
2147                        }
2148                    });
2149                });
2150            },
2151        };
2152        var tabs = [];
2153        var hasGender = new Set();
2154        var _loop_1 = function (parentid) {
2155            var tab_name = req.ls(2079);
2156            var tab_content = null;
2157            var mode = 'edit';
2158            var linked = state.linkExisting.find(function (l) { return l.id == parentid; });
2159            if (linked) {
2160                mode = 'link';
2161            }
2162            else {
2163                if (parentid.startsWith('*'))
2164                    mode = 'add';
2165            }
2166            if (mode == 'edit' && !dbi.rowData('parents', parentid) && !dbi.mock) {
2167                tab_content = React.createElement(React.Fragment, null,
2168                    "Parent not found: ",
2169                    parentid,
2170                    req.props.isAsc && React.createElement(React.Fragment, null,
2171                        React.createElement(asc_react_1.HGap, null),
2172                        React.createElement(anchor_1.RAnchor, { label: 'Fix (aSc)', onClick: function () { return ASC.blockUI((0, student_1.studentDlg_fixParentNotFound)(null, year, parentid)); } })));
2173            }
2174            else {
2175                var origprow = (mode == 'link' && linked.yearto < year)
2176                    ? tslib_1.__assign(tslib_1.__assign({}, linked.data), { id: linked.id }) : dbi.rowData('parents', parentid) || tslib_1.__assign(tslib_1.__assign({}, dbi.table('parents').blankRow()), { id: parentid });
2177                var ptd_1 = dbi.table('parents');
2178                var prowRef = withChanges(origprow, stateRef.sub('changes_parent').sub(parentid, {})).readonly(mode == 'link'
2179                    || ptd_1.columns().filter(function (c) { return ptd_1.column(c).def.readonly; }));
2180                var prow = prowRef.value;
2181                var origrelation = (mode == 'edit' ? origprow === null || origprow === void 0 ? void 0 : origprow.studentdata[studentid] : null)
2182                    || { relation: '', relation_note: '' };
2183                var relationRef = withChanges(origrelation, stateRef.sub('changes_relation').sub(parentid, {}));
2184                var relation = relationRef.value.relation;
2185                if (!relation || relation == 'p') {
2186                    if (prow.gender == 'M')
2187                        tab_name = req.ls(4112);
2188                    if (prow.gender == 'F')
2189                        tab_name = req.ls(4113);
2190                    hasGender.add(prow.gender);
2191                }
2192                else if (relation) {
2193                    tab_name = dbi.column('parents', 'studentdata', 'relation').textValue(relation);
2194                }
2195                tab_content = React.createElement(ParentInput, { dbi: dbi, studentid: studentid, srow: srow, parentRef: prowRef, relationRef: relationRef, preferredRef: preferredRef, mode: mode, onLink: mode == 'add'
2196                        ? function (d) {
2197                            stateRef.set(function (s0) {
2198                                var s = tslib_1.__assign(tslib_1.__assign({}, s0), { changes_parent: tslib_1.__assign({}, s0.changes_parent), changes_relation: tslib_1.__assign({}, s0.changes_relation) });
2199                                s.addids = s.addids.filter(function (id) { return id != parentid; });
2200                                delete s.changes_parent[parentid];
2201                                delete s.changes_relation[parentid];
2202                                s.changes_relation[d.id] = s0.changes_relation[parentid] || {};
2203                                if (s.deleteids.includes(d.id)) {
2204                                    s.deleteids = s.deleteids.filter(function (id) { return id != d.id; });
2205                                }
2206                                else {
2207                                    s.linkExisting = tslib_1.__spreadArray(tslib_1.__spreadArray([], s.linkExisting, true), [d], false);
2208                                }
2209                                return s;
2210                            });
2211                            selectTab('parent_' + d.id);
2212                        }
2213                        : undefined });
2214            }
2215            if (tabs.find(function (t) { return t.parentid == parentid; })) {
2216                tabs.push({
2217                    parentid: '*duplicate_' + tabs.length,
2218                    name: tab_name,
2219                    content: React.createElement("div", null,
2220                        'Error' + '2518596497 - Duplicate parent',
2221                        React.createElement("br", null),
2222                        req.props.isAsc && req.isAdmin() && React.createElement(asc_react_1.RButton, { label: 'Fix (aSc)', onClick: function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
2223                                return tslib_1.__generator(this, function (_a) {
2224                                    ASC.blockUI((0, student_1.studentDlg_fixDuplicateParents)(null, year, studentid));
2225                                    return [2];
2226                                });
2227                            }); } }))
2228                });
2229                return "continue";
2230            }
2231            var delLabel = req.ls(12389);
2232            if ((_a = dbi.rowData('parents', parentid)) === null || _a === void 0 ? void 0 : _a.students.find(function (s) { return s.studentid != studentid; }))
2233                delLabel += ' (' + req.ls(1600) + ')';
2234            var doDelete = function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
2235                var select_parentid;
2236                return tslib_1.__generator(this, function (_a) {
2237                    switch (_a.label) {
2238                        case 0: return [4, asc_react_1.RDialog.showConfirm(delLabel, { msgType: 'areyousure' })];
2239                        case 1:
2240                            if (!(_a.sent()))
2241                                return [2];
2242                            if (state.linkExisting.find(function (li) { return li.id == parentid; })) {
2243                                stateRef.sub('linkExisting').set(state.linkExisting.filter(function (li) { return li.id != parentid; }));
2244                            }
2245                            else if (state.addids.includes(parentid)) {
2246                                stateRef.sub('addids').includes(parentid).set(false);
2247                            }
2248                            else {
2249                                stateRef.sub('deleteids').includes(parentid).set(true);
2250                            }
2251                            select_parentid = parentids.filter(function (id) { return id != parentid; })[0] || '*';
2252                            setTimeout(function () { return selectTab('parent_' + select_parentid); }, 100);
2253                            return [2];
2254                    }
2255                });
2256            }); };
2257            var detailsClick = function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
2258                return tslib_1.__generator(this, function (_a) {
2259                    (0, parent_2.showParentDlg)(year, 'parents', parentid);
2260                    return [2];
2261                });
2262            }); };
2263            var detailsDiv = (React.createElement("div", { style: (0, asc_react_1.rtlCss)({ textAlign: 'right' }) },
2264                !readonly && (React.createElement(asc_react_1.RButton, { label: delLabel, onClick: doDelete })),
2265                React.createElement(asc_react_1.RButton, { label: req.ls(1920), onClick: detailsClick, type: 'blue' })));
2266            tab_content = React.createElement(React.Fragment, null,
2267                tab_content,
2268                detailsDiv);
2269            tabs.push({
2270                parentid: parentid,
2271                name: tab_name,
2272                content: tab_content,
2273            });
2274        };
2275        for (var _i = 0, parentids_1 = parentids; _i < parentids_1.length; _i++) {
2276            var parentid = parentids_1[_i];
2277            _loop_1(parentid);
2278        }
2279        if (parentids.length < 3 && !readonly) {
2280            var asTab = tabs.length == 0;
2281            var addEl = React.createElement("div", { style: (0, asc_react_1.rtlCss)({ textAlign: asTab ? 'left' : 'right' }) },
2282                req.ls(1257) + ':',
2283                React.createElement(asc_react_1.HGap, null),
2284                !hasGender.has('M') && React.createElement(asc_react_1.RButton, { label: req.ls(4112), onClick: function () { return addParent({ gender: 'M' }, { relation: 'p' }); } }),
2285                !hasGender.has('F') && React.createElement(asc_react_1.RButton, { label: req.ls(4113), onClick: function () { return addParent({ gender: 'F' }, { relation: 'p' }); } }),
2286                React.createElement(asc_react_1.RButton, { label: req.ls(4349), onClick: function () { return addParent({}, { relation: 'lg' }); } }));
2287            if (asTab) {
2288                tabs.push({
2289                    parentid: '*',
2290                    name: req.ls(2080),
2291                    content: addEl,
2292                });
2293            }
2294            else {
2295                var tab = tabs[tabs.length - 1];
2296                tab.content = React.createElement(React.Fragment, null,
2297                    tab.content,
2298                    React.createElement("div", { style: {
2299                            flex: '1 0 auto',
2300                            height: 20,
2301                        } }),
2302                    addEl);
2303            }
2304        }
2305        if (state.deleteids.length > 0) {
2306            var tab = tabs[tabs.length - 1];
2307            if (tab) {
2308                tab.content = React.createElement(React.Fragment, null,
2309                    tab.content,
2310                    React.createElement("div", { style: { marginTop: 5, color: '#c0c0c0' } }, (0, actions_1.action_name)('delete') + ': ' + state.deleteids.length));
2311            }
2312        }
2313        var tab_name_count = {};
2314        for (var _b = 0, tabs_1 = tabs; _b < tabs_1.length; _b++) {
2315            var t = tabs_1[_b];
2316            var name = t.name;
2317            tab_name_count[name] = (tab_name_count[name] || 0) + 1;
2318        }
2319        for (var name in tab_name_count) {
2320            if (tab_name_count[name] > 1) {
2321                tab_name_count[name] = 1;
2322            }
2323            else {
2324                tab_name_count[name] = undefined;
2325            }
2326        }
2327        for (var _c = 0, tabs_2 = tabs; _c < tabs_2.length; _c++) {
2328            var t = tabs_2[_c];
2329            var tabid = 'parent_' + t.parentid;
2330            var name = t.name;
2331            var num = tab_name_count[name];
2332            if (num) {
2333                tab_name_count[name]++;
2334                name += ' ' + num;
2335            }
2336            res.tabs.push(React.createElement(tabview_1.RTabViewTab, { label: name, id: tabid, key: tabid, style: { display: 'flex', flexDirection: 'column', overflow: 'auto' } }, t.content));
2337        }
2338        return res;
2339    }, [state, stateRef, preferredRef, srow, dbi, readonly]);
2340}
2341function withChanges(orig, changesRef) {
2342    return changesRef.cast(function (o) { return (tslib_1.__assign(tslib_1.__assign({}, orig), o)); }, function (n) { return dbi_1.DBITools.rowChanges2write(orig, n) || {}; });
2343}
2344function parentHasSomeData(prow) {
2345    for (var _i = 0, _a = [
2346        'firstname',
2347        'lastname',
2348        'email',
2349        'mobile'
2350    ]; _i < _a.length; _i++) {
2351        var c = _a[_i];
2352        if (prow[c])
2353            return true;
2354    }
2355    return false;
2356}
2357function ParentInput(props) {
2358    var _this = this;
2359    var req = edurequest_1.client_req;
2360    var dbi = props.dbi, studentid = props.studentid, srow = props.srow, parentRef = props.parentRef, relationRef = props.relationRef, preferredRef = props.preferredRef, mode = props.mode, onLink = props.onLink;
2361    var year = parseInt(dbi.dbid);
2362    var prow = parentRef.value;
2363    var readonly = !parentRef.set;
2364    var duplicates = (0, asc_react_1.useAsyncMemo)(function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
2365        return tslib_1.__generator(this, function (_a) {
2366            switch (_a.label) {
2367                case 0:
2368                    if (mode != 'add')
2369                        return [2, []];
2370                    if (!parentHasSomeData(prow))
2371                        return [2, []];
2372                    return [4, (0, parent_1.parentPossibleDuplicates)(null, year, prow)];
2373                case 1: return [2, (_a.sent()).duplicates];
2374            }
2375        });
2376    }); }, [mode, prow], [], { delay: 500 });
2377    var startWithFirst = req.sort_name_col == 'FSL';
2378    var dlgPRow = {
2379        dbi: dbi,
2380        table: 'parents',
2381        rowRef: parentRef,
2382    };
2383    var moreStudents = (prow.students || []).filter(function (s) { return s.studentid != studentid; });
2384    var copy_address_cols = [
2385        'address_street',
2386        'address_street_number',
2387        'address_city',
2388        'address_zip',
2389        'address_country',
2390        'address_district',
2391    ];
2392    return React.createElement("div", { style: { position: 'relative' } },
2393        mode != 'edit' && React.createElement(React.Fragment, null,
2394            React.createElement("div", { style: { fontWeight: 'bold' } },
2395                req.ls(2079) + ' - ' + (mode == 'add' ? req.ls(1257) : req.ls(1724)) + ':',
2396                React.createElement(asc_react_1.HGap, null),
2397                mode == 'add' && duplicates.length > 0 && React.createElement(anchor_1.RAnchor, { label: req.ls(11613) + '!', style: { color: 'red' }, onClick: function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
2398                        return tslib_1.__generator(this, function (_a) {
2399                            return [2, asc_react_1.RDialog.show(React.createElement(parent_2.DuplicateParentsDlg, { dbi: dbi, prow: prow, duplicates: duplicates, onUse: function (d) { return onLink(d); } }))];
2400                        });
2401                    }); } })),
2402            React.createElement(asc_react_1.VGap, null)),
2403        React.createElement(asc_react2_1.RClassGroupBox, { title: req.ls(3688) },
2404            React.createElement("div", { className: 'agenda-cols-2' },
2405                React.createElement(dbi_react_1.DlgField, { dlgRow: dlgPRow, column: startWithFirst ? 'firstname' : 'lastname' }),
2406                React.createElement(dbi_react_1.DlgField, { dlgRow: dlgPRow, column: !startWithFirst ? 'firstname' : 'lastname' }),
2407                React.createElement(dbi_react_1.DlgField, { dlgRow: dlgPRow, column: 'gender' }),
2408                React.createElement(dbi_react_1.DlgField, { dlgRow: dlgPRow, column: 'email', control: validatefield_1.REmailField }),
2409                React.createElement(dbi_react_1.DlgField, { dlgRow: dlgPRow, column: 'mobile' }),
2410                React.createElement(dbi_react_1.DlgField, { dlgRow: dlgPRow, column: 'edesk_number', style: { width: 80 }, control: validatefield_1.REDeskNumberField }),
2411                React.createElement(dbi_react_1.DlgField, { dlgRow: dlgPRow, column: 'nameprefix' }),
2412                React.createElement(dbi_react_1.DlgField, { dlgRow: dlgPRow, column: 'namesuffix' }),
2413                React.createElement(dbi_react_1.DlgField, { dlgRow: dlgPRow, column: 'studentdata', subcolumn: 'relation', valueRef: relationRef.sub('relation') }),
2414                prow.username && React.createElement(dbi_react_1.DlgField, { dlgRow: dlgPRow, column: 'username', readonly: true }),
2415                moreStudents.length > 0 && (React.createElement("div", { className: "agenda-dbifield-outer " },
2416                    React.createElement("div", { className: 'agenda-dbifield-label' },
2417                        React.createElement(asc_react_1.RLabel, { text: req.ls(6438) + ': ' })),
2418                    React.createElement("div", { className: 'agenda-dbifield-field' },
2419                        React.createElement("span", { className: 'agenda-dbifield-readonly', style: {
2420                                display: 'inline-block',
2421                                verticalAlign: 'text-top',
2422                                whiteSpace: 'pre-wrap',
2423                            } }, moreStudents.map(function (s) { return s.firstname + ' ' + s.lastname + ' ' + s.class_name; }).join('\n'))),
2424                    React.createElement("div", { className: 'agenda-dbifield-after' }))))),
2425        React.createElement(address_1.AddressInput, { dlgRow: dlgPRow, separator: React.createElement(asc_react_1.HGap, null), right: !readonly && copy_address_cols.find(function (c) { return srow[c]; }) && React.createElement(anchor_1.RAnchor, { label: req.ls(1575) + ' → ' + req.ls(2079), onClick: function () {
2426                    for (var _i = 0, copy_address_cols_1 = copy_address_cols; _i < copy_address_cols_1.length; _i++) {
2427                        var c = copy_address_cols_1[_i];
2428                        if (srow[c])
2429                            parentRef.sub(c).set(srow[c]);
2430                    }
2431                } }) }),
2432        React.createElement(asc_react2_1.RClassGroupBox, { title: req.ls(1601) },
2433            React.createElement("div", { className: 'agenda-cols-2' },
2434                React.createElement(dbi_react_1.DlgField, { dlgRow: dlgPRow, column: 'birthlastname' }),
2435                React.createElement(dbi_react_1.DlgField, { dlgRow: dlgPRow, column: 'nin', control: React.createElement(validatefield_1.RNinField, { valueRef: parentRef.sub('nin').onSet(function (nin) {
2436                            setTimeout(function () {
2437                                var _a, _b, _c, _d;
2438                                var res = getNinDetails(req, nin);
2439                                if (res) {
2440                                    (_b = (_a = parentRef.sub('birthdate')).set) === null || _b === void 0 ? void 0 : _b.call(_a, res.birthdate);
2441                                    res.gender && ((_d = (_c = parentRef.sub('gender')).set) === null || _d === void 0 ? void 0 : _d.call(_c, res.gender));
2442                                }
2443                            }, 0);
2444                        }) }) }),
2445                React.createElement(dbi_react_1.DlgField, { dlgRow: dlgPRow, column: 'birthdate' }),
2446                React.createElement(dbi_react_1.DlgField, { dlgRow: dlgPRow, column: 'is_dead' }),
2447                React.createElement(dbi_react_1.DlgField, { dlgRow: dlgPRow, column: 'occupation' }),
2448                React.createElement(dbi_react_1.DlgField, { dlgRow: dlgPRow, column: 'company_name', label: req.lang == 'sk' && relationRef.sub('relation').value == 'lg' ? 'Názov zariadenia' : undefined }),
2449                React.createElement(dbi_react_1.DlgField, { dlgRow: dlgPRow, column: 'ico' }))),
2450        React.createElement(dbi_react_1.DlgField, { dlgRow: dlgPRow, column: 'studentdata', subcolumn: 'relation_note', valueRef: relationRef.sub('relation_note'), label_style: 'top', className: 'agenda-label-titlegray', label: req.ls(1579) + ' (' + req.ls(3927) + ')', style: { height: 35 } }),
2451        React.createElement(asc_react_1.VGap, null),
2452        React.createElement(asc_react_1.RCheckBox, { valueRef: preferredRef.equals(prow.id), label: req.ls(6241) }));
2453}
2454ParentInput.npp = (0, dbi_1.neededPartProvider)(function () { return [
2455    parent_2.RDuplicateParent,
2456    {
2457        parents: tslib_1.__spreadArray([
2458            '__name',
2459            'gender',
2460            'email',
2461            'mobile',
2462            'nameprefix',
2463            'namesuffix',
2464            'username',
2465            'edesk_number',
2466            'company_name',
2467            'ico',
2468            'occupation',
2469            'students',
2470            'studentdata',
2471            '_uial'
2472        ], address_1.AddressInput.part_columns, true)
2473    }
2474]; });
2475ParentInput.needed_combos = (0, dbi_1.typed)({
2476    parents: tslib_1.__spreadArray([
2477        'studentdata',
2478        'gender'
2479    ], address_1.AddressInput.part_combos, true),
2480});
2481function MoreFieldsContactUs(props) {
2482    var req = edurequest_1.client_req;
2483    var dlgRow = props.dlgRow, column = props.column;
2484    if (dlgRow.dbi.column(dlgRow.table, column))
2485        return null;
2486    var msg = '';
2487    var hide_contact = false;
2488    switch (req.lang) {
2489        case 'de':
2490            msg = 'Um diese Felder zu bearbeiten, kontaktieren Sie uns bitte.';
2491            break;
2492        case 'sk':
2493            msg = 'Tieto údaje zatiaľ nie sú dostupné na webe, nájdete ich v programe aSc Agenda.';
2494            hide_contact = true;
2495            break;
2496        default:
2497            msg = 'Please contact us if you want to input these fields.';
2498            break;
2499    }
2500    return React.createElement("div", { style: { color: '#808080' } },
2501        msg,
2502        !hide_contact && React.createElement(React.Fragment, null));
2503}
2504function StudentOutField(props) {
2505    var req = edurequest_1.client_req;
2506    var valueRef = props.valueRef, dbi = props.dbi, row = props.row;
2507    var readonly = !valueRef.set;
2508    var value = valueRef.value || [];
2509    var cz_school_druhy = student_cz_school_druhy(dbi, props.row || {});
2510    var cd = dbi.column('studentkopias', 'out');
2511    var scds = cd.subcolumns || [];
2512    var allow_PSD = cz_school_druhy.includes('Z');
2513    if (cz_school_druhy.includes('S')) {
2514        var crow = dbi.rowData('classes', row.classid, {});
2515        if (['60', '80'].includes(crow.cz_matrika_DELST))
2516            allow_PSD = true;
2517    }
2518    var outTypeCombo = null;
2519    for (var _i = 0, scds_1 = scds; _i < scds_1.length; _i++) {
2520        var r = scds_1[_i];
2521        if (r.id == 'sk_ristype') {
2522            outTypeCombo = r.combo();
2523        }
2524    }
2525    var cb_scds = scds
2526        .filter(function (scd) { return scd.type() == 'checkbox'; })
2527        .filter(function (scd) {
2528        var id = scd.id;
2529        if (value.find(function (o) { return o[id]; }))
2530            return true;
2531        switch (id) {
2532            case 'cz_par38_1a':
2533            case 'cz_par38_1b':
2534            case 'cz_par38_1c':
2535            case 'cz_par38_1d':
2536            case 'cz_par38_2':
2537            case 'cz_par41':
2538                return allow_PSD;
2539            case 'cz_par34b':
2540            case 'cz_par34_10':
2541                return cz_school_druhy.includes('M');
2542            case 'cz_par18':
2543            case 'cz_vzp':
2544                return cz_school_druhy.includes('S');
2545        }
2546        return true;
2547    });
2548    var cb_scs = cb_scds
2549        .map(function (scd) { return scd.id; });
2550    var style = {};
2551    var fillListName = function () {
2552        var list = [];
2553        var val2count = {};
2554        for (var _i = 0, _a = dbi.tableData('studentkopias'); _i < _a.length; _i++) {
2555            var srow = _a[_i];
2556            for (var _b = 0, _c = srow.out; _b < _c.length; _b++) {
2557                var o = _c[_b];
2558                if (o.name) {
2559                    var index = '' + o.name;
2560                    if (outTypeCombo) {
2561                        index += '#' + o.sk_ristype;
2562                    }
2563                    for (var _d = 0, cb_scs_1 = cb_scs; _d < cb_scs_1.length; _d++) {
2564                        var cbid = cb_scs_1[_d];
2565                        index += '#' + (o[cbid] ? '1' : '0');
2566                    }
2567                    if (!val2count.hasOwnProperty(index)) {
2568                        var item = { 'name': o.name, 'count': 1 };
2569                        if (outTypeCombo) {
2570                            item['sk_ristype'] = o.sk_ristype;
2571                        }
2572                        for (var _e = 0, cb_scs_2 = cb_scs; _e < cb_scs_2.length; _e++) {
2573                            var cbid = cb_scs_2[_e];
2574                            item[cbid] = o[cbid];
2575                        }
2576                        val2count[index] = item;
2577                    }
2578                    else {
2579                        val2count[index].count += 1;
2580                    }
2581                }
2582            }
2583        }
2584        var vals = [];
2585        for (var valStr in val2count) {
2586            vals.push(val2count[valStr]);
2587        }
2588        vals.sort(function (a, b) { return b.count - a.count; });
2589        for (var _f = 0, vals_1 = vals; _f < vals_1.length; _f++) {
2590            var val = vals_1[_f];
2591            if (val.sk_ristype && outTypeCombo) {
2592                for (var _g = 0, outTypeCombo_1 = outTypeCombo; _g < outTypeCombo_1.length; _g++) {
2593                    var r = outTypeCombo_1[_g];
2594                    if (r.value == val.sk_ristype) {
2595                        val.code = r.name;
2596                        break;
2597                    }
2598                }
2599            }
2600            list.push(val);
2601        }
2602        return list;
2603    };
2604    function edit() {
2605        return tslib_1.__awaiter(this, void 0, void 0, function () {
2606            var blankOut, _i, scds_2, sc, res, out;
2607            return tslib_1.__generator(this, function (_a) {
2608                switch (_a.label) {
2609                    case 0:
2610                        blankOut = {};
2611                        for (_i = 0, scds_2 = scds; _i < scds_2.length; _i++) {
2612                            sc = scds_2[_i];
2613                            blankOut[sc.id] = sc.blank();
2614                        }
2615                        return [4, asc_react_1.RDialog.showInput(tslib_1.__spreadArray(tslib_1.__spreadArray([], value, true), [blankOut], false), function (_a) {
2616                                var stateRef = _a.stateRef;
2617                                var el_style = {
2618                                    width: 100,
2619                                    marginRight: 5,
2620                                };
2621                                return React.createElement(React.Fragment, null,
2622                                    React.createElement("div", null,
2623                                        React.createElement(asc_react_1.RLabel, { text: cd.subcolumn('datefrom').name(), style: el_style }),
2624                                        React.createElement(asc_react_1.RLabel, { text: cd.subcolumn('dateto').name(), style: el_style }),
2625                                        React.createElement(asc_react_1.RLabel, { text: cd.subcolumn('name').name(), style: { width: '205px' } }),
2626                                        outTypeCombo && React.createElement(asc_react_1.RLabel, { text: cd.subcolumn('sk_ristype').name(), style: { width: '150px' } }),
2627                                        React.createElement(asc_react_1.RLabel, { text: (0, actions_1.action_name)('settings'), style: el_style })),
2628                                    (0, asc_react_1.rangeFromTo)(0, stateRef.value.length - 1).map(function (i) {
2629                                        var oRef = stateRef.index(i);
2630                                        var cbRef = oRef.cast(function (o) { return cb_scs.filter(function (c) { return o[c]; }); }, function (n, o) {
2631                                            var v = tslib_1.__assign({}, o);
2632                                            for (var _i = 0, cb_scs_3 = cb_scs; _i < cb_scs_3.length; _i++) {
2633                                                var c = cb_scs_3[_i];
2634                                                v[c] = n.includes(c);
2635                                            }
2636                                            return v;
2637                                        });
2638                                        return React.createElement("div", { key: i, style: { display: 'flex', flexFlow: 'row nowrap', alignItems: 'center', marginBottom: '4px' } },
2639                                            React.createElement(datefield_1.default, { valueRef: oRef.sub('datefrom'), style: el_style }),
2640                                            React.createElement(datefield_1.default, { valueRef: oRef.sub('dateto'), style: el_style }),
2641                                            React.createElement(autocomplete_1.RAutocompleteInput, { valueRef: oRef.sub('name'), items: fillListName(), onSelect: function (item) {
2642                                                    oRef.sub('name').set(item.name);
2643                                                    if (outTypeCombo) {
2644                                                        oRef.sub('sk_ristype').set(item.sk_ristype);
2645                                                    }
2646                                                    for (var _i = 0, cb_scs_4 = cb_scs; _i < cb_scs_4.length; _i++) {
2647                                                        var cbid = cb_scs_4[_i];
2648                                                        oRef.sub(cbid).set(item[cbid]);
2649                                                    }
2650                                                } }),
2651                                            outTypeCombo && React.createElement(combobox_1.default, { valueRef: oRef.sub('sk_ristype'), items: outTypeCombo, style: { width: '150px' } }),
2652                                            React.createElement(comboboxmulti_1.default, { valueRef: cbRef, items: cb_scds.map(function (scd) { return ({ value: scd.id, name: scd.name() }); }), style: el_style }),
2653                                            React.createElement(asc_react_1.HGap, null),
2654                                            !(0, dbi_1.deepStrictEqual)(oRef.value, blankOut) && React.createElement(anchor_1.RAnchor, { label: req.ls(1586), onClick: function () { return oRef.set(blankOut); } }),
2655                                            React.createElement(asc_react_1.VGap, null));
2656                                    }));
2657                            }, { width: 780, header: cd.name() })];
2658                    case 1:
2659                        res = _a.sent();
2660                        if (!res)
2661                            return [2];
2662                        out = res.filter(function (o) { return o.datefrom && (!o.dateto || o.dateto >= o.datefrom); });
2663                        out.sort(function (a, b) { return a.datefrom < b.datefrom ? -1 : 1; });
2664                        valueRef.set(out);
2665                        return [2];
2666                }
2667            });
2668        });
2669    }
2670    return (React.createElement("div", { className: 'agenda-dbifield-multiitems', style: { margin: '-4px 0 4px 0' }, onClick: readonly ? null : edit },
2671        value.length == 0 && (React.createElement("div", { className: 'agenda-dbifield-multi-item' }, readonly ? '- ' : req.ls(1257))),
2672        value.map(function (o, i) {
2673            var s = o.dateto
2674                ? (0, lib_date_1.date_format_2dates)(req, o.datefrom, o.dateto)
2675                : (0, lib_date_1.date_format_date)(req, o.datefrom) + ' - ∞';
2676            var ss = [];
2677            if (o.name)
2678                ss.push(o.name);
2679            for (var _i = 0, cb_scds_1 = cb_scds; _i < cb_scds_1.length; _i++) {
2680                var scd = cb_scds_1[_i];
2681                if (o[scd.id])
2682                    ss.push(scd.name());
2683            }
2684            if (ss.length)
2685                s += ': ' + ss.join(', ');
2686            return React.createElement("div", { className: 'agenda-dbifield-multi-item', key: i }, s);
2687        })));
2688}
2689function ArchiveTab(props) {
2690    var req = edurequest_1.client_req;
2691    var archive = props.archive, dlgRow = props.dlgRow;
2692    var dbi = dlgRow.dbi, rowRef = dlgRow.rowRef;
2693    var srow = rowRef.value;
2694    var readonly = !rowRef.set;
2695    var years = (archive === null || archive === void 0 ? void 0 : archive.years) || [];
2696    var formatChanges = function (props) {
2697        var _a;
2698        var key = props.cd.key;
2699        if (((_a = props.row.changes) === null || _a === void 0 ? void 0 : _a.length) > 0) {
2700            return React.createElement(React.Fragment, null,
2701                props.row.changes.filter(function (change) { return key in change; }).map(function (change) { return React.createElement("span", { key: change.dateto },
2702                    React.createElement("span", { className: "item-old" }, change[key]),
2703                    React.createElement("span", null, " \u2192 ")); }),
2704                props.row[key]);
2705        }
2706        return props.row[key];
2707    };
2708    var tcols = [
2709        {
2710            key: 'year',
2711            label: req.ls(1578),
2712            type: 'year',
2713            width: 80,
2714        },
2715        {
2716            key: 'class_name',
2717            label: dbi.tools.itemName('classes'),
2718            width: 100,
2719            formatter: formatChanges
2720        },
2721        {
2722            key: 'odbor_name',
2723            width: 400,
2724            label: req.ls(6297),
2725            formatter: formatChanges
2726        },
2727    ];
2728    if (!archive)
2729        return React.createElement(asc_react_1.Loading, null);
2730    var add_menu = [];
2731    if (!readonly && req.hasRight('agenda') && srow._uial == 2 && years.length > 0 && !req.isAgenda()) {
2732        var min_year = years[0].year;
2733        var max_year = min_year;
2734        for (var _i = 0, years_4 = years; _i < years_4.length; _i++) {
2735            var r = years_4[_i];
2736            min_year = Math.min(min_year, r.year);
2737            max_year = Math.max(max_year, r.year);
2738        }
2739        var _loop_4 = function (add_year) {
2740            if (years.find(function (r) { return r.year == add_year; }))
2741                return "continue";
2742            add_menu.push({
2743                text: req.getSchoolYearName(add_year),
2744                onClick: function () { return addYear(dlgRow, add_year); },
2745            });
2746        };
2747        for (var add_year = min_year - 1; add_year <= max_year + 1; add_year++) {
2748            _loop_4(add_year);
2749        }
2750    }
2751    return React.createElement(React.Fragment, null,
2752        React.createElement(datatable_1.RDatatable, { data: years, columns: tcols, cssClass: (years.length > 4 ? 'compact ' : '') + 'nowrap light-theme', resizable: true, rowClassNames: function (row) { return row.class_name ? null : 'item-old'; } }),
2753        add_menu.length > 0 && React.createElement(React.Fragment, null,
2754            React.createElement(asc_react_1.VGap, null),
2755            React.createElement(asc_react_1.RButton, { label: req.ls(1257), menu: add_menu })));
2756}
2757function addYear(dlgRow, add_year) {
2758    return tslib_1.__awaiter(this, void 0, void 0, function () {
2759        var req, orig_year, srow, studentkopiaid, add_dbi, classid;
2760        return tslib_1.__generator(this, function (_a) {
2761            switch (_a.label) {
2762                case 0:
2763                    req = edurequest_1.client_req;
2764                    orig_year = parseInt(dlgRow.dbi.dbid);
2765                    srow = dlgRow.rowRef.value;
2766                    studentkopiaid = srow.id;
2767                    return [4, ASC.blockUI(req.maindbi(add_year, {
2768                            needed_part: {
2769                                classes: ['__name'],
2770                                studentkopias: [],
2771                            }
2772                        }))];
2773                case 1:
2774                    add_dbi = _a.sent();
2775                    if (add_dbi.rowData('studentkopias', studentkopiaid))
2776                        ASC.dieError('5262799711');
2777                    classid = srow.classid;
2778                    if (!add_dbi.rowData('classes', classid))
2779                        classid = '';
2780                    return [4, asc_react_1.RDialog.showInput(classid, function (_a) {
2781                            var stateRef = _a.stateRef;
2782                            return React.createElement("div", null,
2783                                React.createElement(asc_react_1.RLabel, { text: req.ls(1263) }),
2784                                React.createElement(combobox_1.default, { valueRef: stateRef, items: add_dbi.tools.tableCombo('classes') }));
2785                        }, {
2786                            header: req.lsf(1911, { year: req.getSchoolYearName(add_year) }),
2787                            msgType: 'warn',
2788                            buttons: [
2789                                { action: 'add', label: req.ls(1257), type: 'green' },
2790                                'cancel'
2791                            ],
2792                            width: 400,
2793                        })];
2794                case 2:
2795                    classid = _a.sent();
2796                    if (classid === null)
2797                        return [2];
2798                    return [4, ASC.blockUI((0, student_1.studentDlg_addYear)(null, orig_year, studentk
2798opiaid, add_year, { classid: classid }))];
2799                case 3:
2800                    _a.sent();
2801                    return [2];
2802            }
2803        });
2804    });
2805}
2806function RozhodnutiaTab(props) {
2807    var req = edurequest_1.client_req;
2808    var archive = props.archive, dlgRow = props.dlgRow;
2809    var dbi = dlgRow.dbi, rowRef = dlgRow.rowRef;
2810    var row = rowRef.value;
2811    var year = parseInt(dbi.dbid);
2812    var rozhodnuties = (archive === null || archive === void 0 ? void 0 : archive.rozhodnuties) || [];
2813    var tcols = [
2814        {
2815            key: 'year',
2816            label: req.ls(1578),
2817            type: 'year',
2818            width: 80,
2819        },
2820        {
2821            key: 'typ_icon',
2822            label: '',
2823            width: 20,
2824            formatter: function (_a) {
2825                var row = _a.row;
2826                return React.createElement(React.Fragment, null,
2827                    React.createElement("div", { style: { textAlign: 'center' } },
2828                        React.createElement("img", { src: row.typ_icon, style: { height: 16 } })));
2829            }
2830        },
2831        {
2832            key: 'typ_text',
2833            label: req.ls(1302),
2834            width: 250,
2835        },
2836        {
2837            key: 'text',
2838            label: req.ls(1045),
2839            width: 250,
2840        },
2841        {
2842            key: 'subject_name',
2843            width: 100,
2844            label: req.ls(1299),
2845            formatter: function (props) { var row = props.row; return row.subjectid == '1' ? '-' : row.subject_name; }
2846        },
2847        {
2848            key: 'date',
2849            width: 90,
2850            label: req.ls(1251),
2851            type: 'date',
2852        },
2853    ];
2854    function itemClick(vcid, y, r) {
2855        var _a;
2856        if ((_a = r === null || r === void 0 ? void 0 : r.id) === null || _a === void 0 ? void 0 : _a.toString().endsWith(':printlog')) {
2857            showPrintlog(r);
2858            return;
2859        }
2860        barNewDialog({
2861            source: '/znamky/?what=PoznamkaEditor&vcelickaid=' + vcid + '&znamky_yearid=' + (y || year) + '&znamky_yearid_ns=1',
2862            'postData': { ibaOficialne: '1', 'studentids': row.studentid },
2863            'returnFunc': function (vcelicka, oficialne) {
2864                var _a;
2865                ASC.changeEvents.post('dbi:rozhodnuties', (((_a = ASC.changeEvents.current) === null || _a === void 0 ? void 0 : _a['dbi:rozhodnuties']) || 0) + 1);
2866            }
2867        });
2868    }
2869    function showPrintlog(r) {
2870        asc_react_1.RDialog.show((React.createElement(asc_react_1.RDialog, { header: req.ls(1162), width: 600, buttons: ['ok', 'cancel'] },
2871            React.createElement("div", { style: { marginBottom: '12px' } },
2872                React.createElement("b", null, "Z\u00E1znam poch\u00E1dza z arch\u00EDvu v PC programe aScAgenda")),
2873            React.createElement("div", { className: 'agenda-dbifield-outer' },
2874                React.createElement("div", { className: 'agenda-dbifield-label light' },
2875                    req.ls(1578),
2876                    ":"),
2877                React.createElement("div", { className: 'agenda-dbifield-field' }, req.getSchoolYearName(r === null || r === void 0 ? void 0 : r.year))),
2878            React.createElement("div", { className: 'agenda-dbifield-outer' },
2879                React.createElement("div", { className: 'agenda-dbifield-label light' },
2880                    req.ls(1279),
2881                    ":"),
2882                React.createElement("div", { className: 'agenda-dbifield-field' }, r === null || r === void 0 ? void 0 : r.typ_text)),
2883            React.createElement("div", { className: 'agenda-dbifield-outer' },
2884                React.createElement("div", { className: 'agenda-dbifield-label light' },
2885                    req.ls(7237),
2886                    ":"),
2887                React.createElement("div", { className: 'agenda-dbifield-field' }, r === null || r === void 0 ? void 0 : r.text)),
2888            React.createElement("div", { className: 'agenda-dbifield-outer' },
2889                React.createElement("div", { className: 'agenda-dbifield-label light' },
2890                    req.ls(1251),
2891                    ":"),
2892                React.createElement("div", { className: 'agenda-dbifield-field' }, (0, lib_date_1.date_format_date)(req, r === null || r === void 0 ? void 0 : r.date))))));
2893    }
2894    if (!archive)
2895        return React.createElement(asc_react_1.Loading, null);
2896    return React.createElement(React.Fragment, null,
2897        React.createElement(datatable_1.RDatatable, { data: rozhodnuties, columns: tcols, cssClass: 'light-theme', resizable: true, fitWidth: true, onRowClick: function (row) {
2898                var _a;
2899                var _b = (_a = row.id) === null || _a === void 0 ? void 0 : _a.split(':'), y = _b[0], vcid = _b[1];
2900                itemClick(vcid, y, row);
2901            } }),
2902        rozhodnuties.length == 0 && (React.createElement("div", { style: { padding: '15px', textAlign: 'center', opacity: 0.5, marginBottom: '8px' } }, ls(4447))),
2903        React.createElement(asc_react_1.VGap, null),
2904        React.createElement("div", { style: { position: 'sticky', bottom: 0 } },
2905            React.createElement(asc_react_1.RButton, { label: ' + ' + req.ls(3229), onClick: function () {
2906                    itemClick('');
2907                } }),
2908            React.createElement(asc_react_1.RButton, { label: req.ls(4880) + ' (' + req.getSchoolYearName(year) + ')', onClick: function () { return (0, asc_react_1.openUrl)('/skd/?cmd=OfficialLetters&triedaid=' + row.classid + '&znamky_yearid=' + year + '&force=1'); } })));
2909}
2910function KatListNotes(props) {
2911    var req = edurequest_1.client_req;
2912    var archive = props.archive, dlgRow = props.dlgRow;
2913    var dbi = dlgRow.dbi, rowRef = dlgRow.rowRef;
2914    var row = rowRef.value;
2915    var year = parseInt(dbi.dbid);
2916    var type = props.type;
2917    var rozhodnuties = (archive === null || archive === void 0 ? void 0 : archive.rozhodnuties) || [];
2918    var items = rozhodnuties.filter(function (r) {
2919        if (r.year != year)
2920            return false;
2921        if (props.type == 'skdlist') {
2922            return r.typ_id == 'skdpoznamka' || r.typ_id == 'prispevokskd';
2923        }
2924        return r.typ_id != 'skdpoznamka';
2925    });
2926    function showItem(vcid, y, r) {
2927        barNewDialog({
2928            source: '/znamky/?what=PoznamkaEditor&vcelickaid=' + vcid + '&znamky_yearid=' + (y || year) + '&znamky_yearid_ns=1&typ=' + (type == 'skdlist' ? 'skdpoznamka' : 'katpoznamka'),
2929            'postData': { ibaOficialne: '1', 'studentids': row.studentid },
2930            'returnFunc': function (vcelicka, oficialne) {
2931                var _a;
2932                ASC.changeEvents.post('dbi:rozhodnuties', (((_a = ASC.changeEvents.current) === null || _a === void 0 ? void 0 : _a['dbi:rozhodnuties']) || 0) + 1);
2933            }
2934        });
2935    }
2936    function itemClick(e) {
2937        var id = e.currentTarget.getAttribute('data-id');
2938        showItem(id, year);
2939    }
2940    return (React.createElement("div", null,
2941        React.createElement("div", { className: 'agenda-dbifield-field-note', style: { padding: '4px 8px 4px 12px', margin: '-8px 0 8px 0' } }, type == 'skdlist'
2942            ? 'V osobnom spise dieťaťa v ŠKD sa v časti poznámky zobrazujú rozhodnutia o výške príspevku na ŠKD a špeciálny typ poznámky "' + req.ls(15464) + '"'
2943            : 'V katalógovom liste a osobnom spise dieťaťa v MŠ sa v časti poznámky predvolene zobrazujú všetky výchovné opatrenia a rozhodnutia. Môžete pridať aj špeciálny typ poznámky "' + req.ls(12685) + '"'),
2944        React.createElement("div", { className: 'agenda-dbifield-outer ' },
2945            React.createElement("div", { className: 'agenda-dbifield-label', style: { alignSelf: 'flex-start', paddingRight: '5px' } }, type == 'skdlist' ? 'ŠKD poznámky:' : 'Poznámky, opatrenia, rozhodnutia:'),
2946            React.createElement("div", { className: 'agenda-dbifield-field', style: { paddingTop: 0, overflow: 'visible' } },
2947                React.createElement("div", null, items.map(function (r) {
2948                    return React.createElement("div", { key: r.id, className: 'agenda-katlist-item ' + (r.katlistshow == 'no' ? 'agenda-katlist-item-hidden' : ''), "data-id": r.rozhodnutieid, onClick: itemClick },
2949                        React.createElement("div", null,
2950                            " ",
2951                            React.createElement("img", { src: r.typ_icon, style: { height: 16 } })),
2952                        React.createElement("div", null,
2953                            r.katlistshow == 'no' ? '(neuvádzať) ' : '',
2954                            r.typ_text,
2955                            r.text ? ': ' + r.text : '',
2956                            React.createElement("div", { className: 'agenda-dbifield-field-note' },
2957                                (0, lib_date_1.date_format_date)(req, r.date),
2958                                r.subjectid == '1' ? '' : ' · ' + r.subject_name)));
2959                })),
2960                React.createElement("div", { style: { marginTop: items.length > 0 ? '8px' : '-5px' } },
2961                    React.createElement(asc_react_1.RButton, { label: ' + ' + req.ls(3229), onClick: function () {
2962                            showItem('');
2963                        } }))))));
2964}
2965function ExamsTab(props) {
2966    var req = edurequest_1.client_req;
2967    var archive = props.archive, dlgRow = props.dlgRow;
2968    var dbi = dlgRow.dbi, rowRef = dlgRow.rowRef;
2969    var row = rowRef.value;
2970    var exams = (archive === null || archive === void 0 ? void 0 : archive.exams) || [];
2971    var year = parseInt(dbi.dbid);
2972    var tcols = [
2973        {
2974            key: '_edit', label: '', width: 16,
2975            formatter: function (_a) {
2976                var row = _a.row;
2977                return row._uial > 0 && React.createElement("img", { src: (0, actions_1.action_icon)('edit'), style: { height: 16, cursor: 'pointer' }, onClick: function () { return (0, maindbi_ui_1.showMainDbiItemDlg)(row.year, row.typ, row.rowid); } });
2978            }
2979        },
2980        {
2981            key: 'year',
2982            label: req.ls(1578),
2983            type: 'year',
2984            width: 80,
2985        },
2986        {
2987            key: 'typ_name',
2988            label: req.ls(1302),
2989            width: 200,
2990        },
2991        {
2992            key: 'date',
2993            width: 120,
2994            label: req.ls(1251),
2995            type: 'date',
2996        },
2997        {
2998            key: 'value_text',
2999            width: 150,
3000            label: req.ls(2774),
3001        },
3002        {
3003            key: 'info',
3004            width: 240,
3005            label: '',
3006        },
3007    ];
3008    function itemClick(r) {
3009        var _a;
3010        var _b = (_a = r.id) === null || _a === void 0 ? void 0 : _a.split(':'), tbl = _b[0], y = _b[1], vcid = _b[2];
3011        (0, maindbi_ui_1.showMainDbiItemDlg)(parseInt(y), tbl, vcid);
3012    }
3013    if (!archive)
3014        return React.createElement(asc_react_1.Loading, null);
3015    return React.createElement(React.Fragment, null,
3016        React.createElement(datatable_1.RDatatable, { data: exams, columns: tcols, cssClass: 'nowrap light-theme', resizable: true, fitWidth: true, onRowClick: function (r) {
3017                itemClick(r);
3018            } }),
3019        exams.length == 0 && (React.createElement("div", { style: { padding: '15px', textAlign: 'center', opacity: 0.5, marginBottom: '8px' } }, ls(4447))),
3020        React.createElement(asc_react_1.VGap, null),
3021        React.createElement("div", { style: { position: 'sticky', bottom: 0 } },
3022            React.createElement(asc_react_1.RButton, { label: ' + ' + req.ls(3229), onClick: function () {
3023                    dbi.frontend.showItemDlg('komisionalnaskuskas', '', { row: { studentid: row.id.split(':')[0] } });
3024                } }),
3025            React.createElement(asc_react_1.RButton, { label: req.ls(12082) + ' (' + req.getSchoolYearName(year) + ')', onClick: function () { return (0, asc_react_1.openUrl)('/skd/?cmd=KomisionalneSkusky&znamky_yearid=' + year + '&force=1'); } })));
3026}
3027function NextSchoolInput(props) {
3028    var _a;
3029    var req = edurequest_1.client_req;
3030    var valueRef = props.valueRef;
3031    var row = tslib_1.__assign({ schoolid: '', odbor_code: '', odbor_note: '' }, (valueRef.value || {}));
3032    var rowRef = new asc_react_1.ValueRef(row, function (a) {
3033        if (typeof a == 'function')
3034            a = a(row);
3035        valueRef.set({
3036            schoolid: a.schoolid,
3037            odbor_code: a.odbor_code,
3038            odbor_note: a.odbor_note,
3039        });
3040    });
3041    var dbi = (0, dbi_react_1.useMainDBI)(props.year, {
3042        needed_part: {
3043            studentkopias: ['nextschools'],
3044            schools: ['__name', 'cz_izo'],
3045        }
3046    });
3047    var cd = dbi.column('studentkopias', 'nextschools');
3048    var cd_schoolid = cd.subcolumn('schoolid');
3049    var cd_odbor_code = cd.subcolumn('odbor_code');
3050    var cd_odbor_note = cd.subcolumn('odbor_note');
3051    var odbor_ac = (((_a = (0, autocomplete_1.useMainDBIAutocompleteData)('odbors', 'name')) === null || _a === void 0 ? void 0 : _a.data) || [])
3052        .map(function (row) { return (tslib_1.__assign(tslib_1.__assign({}, row), { code: row.code.replace(/[\-/]/g, '') })); });
3053    return React.createElement("div", null,
3054        React.createElement(asc_react_1.RLabel, { text: cd_schoolid.name() }),
3055        req.school_country == 'cz'
3056            ? (0, asc_react_1.wrapSuspense)(React.createElement(CzSchoolCombo, { dbi: dbi, valueRef: rowRef.sub('schoolid') }))
3057            : React.createElement(combobox_1.default, { valueRef: rowRef.sub('schoolid'), items: dbi.tools.tableCombo('schools') }),
3058        React.createElement("br", null),
3059        cd_odbor_code && React.createElement(React.Fragment, null,
3060            React.createElement(asc_react_1.RLabel, { text: cd_odbor_code.name() }),
3061            React.createElement(autocomplete_1.RAutocompleteInput, { valueRef: rowRef.sub('odbor_code'), items: odbor_ac, onSelect: function (i) { return rowRef.sub('odbor_code').set(i.code); } }),
3062            React.createElement("br", null)),
3063        cd_odbor_note && React.createElement(React.Fragment, null,
3064            React.createElement(asc_react_1.RLabel, { text: cd_odbor_note.name() }),
3065            React.createElement(asc_react_1.RInput, { valueRef: rowRef.sub('odbor_note') }),
3066            React.createElement("br", null)));
3067}
3068function De_fsnInput(props) {
3069    var _this = this;
3070    var req = edurequest_1.client_req;
3071    var valueRef = props.valueRef, dbiColumn = props.dbiColumn, dlgRow = props.dlgRow;
3072    var value = valueRef.value;
3073    var cnt = value.length;
3074    var srow = dlgRow.rowRef.value;
3075    var dbi = dlgRow.dbi;
3076    var crow = dbi.rowData('classes', srow.classid);
3077    return React.createElement(anchor_1.RAnchor, { label: cnt > 0
3078            ? "(".concat(cnt, ") ") + req.ls(1053)
3079            : req.ls(1257), onClick: function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
3080            var res, De_fsnInput;
3081            return tslib_1.__generator(this, function (_a) {
3082                switch (_a.label) {
3083                    case 0:
3084                        res = value;
3085                        De_fsnInput = function () {
3086                            var _a = (0, asc_react_1.useStateRef)(value), state = _a[0], stateRef = _a[1];
3087                            res = state;
3088                            return React.createElement(asc_react_1.RDialog, { header: dbiColumn.name(), width: 500, buttons: ['ok', 'cancel'], footer: React.createElement(asc_react_1.RButton, { label: 'Automatisch vorbef\u00FCllen', onClick: function () {
3089                                        var gradeto = srow.grade || (crow === null || crow === void 0 ? void 0 : crow.grade) || '';
3090                                        var ns = tslib_1.__spreadArray([], state, true);
3091                                        var _loop_5 = function (foreignlang, foreignlang_type, gradefrom, de_ger) {
3092                                            if (foreignlang && !ns.find(function (s) { return s.foreignlang == foreignlang; })) {
3093                                                ns.push({
3094                                                    foreignlang: foreignlang,
3095                                                    foreignlang_type: foreignlang_type,
3096                                                    gradefrom: gradefrom,
3097                                                    gradeto: gradeto,
3098                                                    de_ger: de_ger
3099                                                });
3100                                            }
3101                                        };
3102                                        for (var _i = 0, _a = [
3103                                            [srow.foreignlang1, srow.foreignlang1_type, '5', 'B1'],
3104                                            [srow.foreignlang2, srow.foreignlang2_type, '7', 'B1'],
3105                                            [srow.foreignlang3, srow.foreignlang3_type, '', ''],
3106                                            [srow.foreignlang4, srow.foreignlang4_type, '', ''],
3107                                        ]; _i < _a.length; _i++) {
3108                                            var _b = _a[_i], foreignlang = _b[0], foreignlang_type = _b[1], gradefrom = _b[2], de_ger = _b[3];
3109                                            _loop_5(foreignlang, foreignlang_type, gradefrom, de_ger);
3110                                        }
3111                                        stateRef.set(ns);
3112                                    } }) },
3113                                React.createElement(subtableinput_1.default, { dataRef: stateRef, dbiColumn: dbiColumn, compactView: true, idcol: 'foreignlang', fitWidth: true, style: {
3114                                        height: 200
3115                                    }, cols: [
3116                                        { key: 'foreignlang', width: 100 },
3117                                        { key: 'foreignlang_type', width: 100 },
3118                                        { key: 'gradefrom', width: 50 },
3119                                        { key: 'gradeto', width: 50 },
3120                                        { key: 'de_ger', width: 50, formatter: function (_a) {
3121                                                var row = _a.row;
3122                                                return row.de_ger;
3123                                            } },
3124                                    ], editCols: [
3125                                        'foreignlang',
3126                                        'foreignlang_type',
3127                                        'gradefrom',
3128                                        'gradeto',
3129                                        { key: 'de_ger', name_col: 'IDN' },
3130                                    ] }));
3131                        };
3132                        return [4, asc_react_1.RDialog.show(React.createElement(De_fsnInput, null))];
3133                    case 1:
3134                        if (!(_a.sent()))
3135                            return [2];
3136                        valueRef.set(res);
3137                        return [2];
3138                }
3139            });
3140        }); } });
3141}
3142function StudentVysetreniaField(props) {
3143    var req = edurequest_1.client_req;
3144    var valueRef = props.valueRef, dbi = props.dbi, row = props.row;
3145    var readonly = !valueRef.set;
3146    var value = valueRef.value || [];
3147    var cz_school_druhy = student_cz_school_druhy(dbi, props.row || {});
3148    var cd = dbi.column('studentkopias', 'sk_vysetrenia');
3149    var scds = cd.subcolumns || [];
3150    var allow_PSD = cz_school_druhy.includes('Z');
3151    if (cz_school_druhy.includes('S')) {
3152        var crow = dbi.rowData('classes', row.classid, {});
3153        if (['60', '80'].includes(crow.cz_matrika_DELST))
3154            allow_PSD = true;
3155    }
3156    var druhCombo = null;
3157    for (var _i = 0, scds_3 = scds; _i < scds_3.length; _i++) {
3158        var r = scds_3[_i];
3159        if (r.id == 'sk_druh_vysetrenia') {
3160            druhCombo = r.combo();
3161        }
3162    }
3163    function showItem(e) {
3164        return tslib_1.__awaiter(this, void 0, void 0, function () {
3165            var ind, obj, sorted;
3166            return tslib_1.__generator(this, function (_a) {
3167                switch (_a.label) {
3168                    case 0:
3169                        ind = e.currentTarget.getAttribute('data-ind');
3170                        if ($(e.target).closest('button').length > 0)
3171                            return [2];
3172                        obj = ind ? valueRef.value[ind] : { sk_druh_vysetrenia: '1', date: (new Date()).format('Y-m-d') };
3173                        _a.label = 1;
3174                    case 1: return [4, asc_react_1.RDialog.showInput(obj, function (_a) {
3175                            var stateRef = _a.stateRef;
3176                            return (React.createElement("div", null,
3177                                React.createElement("div", { style: { background: '#eee', padding: '0.5em 1em', margin: '-0.5em -1em 1em -1em' } },
3178                                    React.createElement("b", { style: { fontSize: '1.5em' } },
3179                                        row.firstname,
3180                                        " ",
3181                                        row.lastname)),
3182                                React.createElement("div", { className: "agenda-dbifield-outer" },
3183                                    React.createElement("div", { className: 'agenda-dbifield-label' },
3184                                        React.createElement(asc_react_1.RLabel, { text: cd.subcolumn('date').name(), style: { width: 'auto', display: 'block', padding: 0, whiteSpace: 'inherit' } })),
3185                                    React.createElement("div", { className: 'agenda-dbifield-field' }, readonly
3186                                        ? React.createElement("span", { className: 'agenda-dbifield-readonly' }, cd.subcolumn('date').textValue(stateRef.sub('date').value))
3187                                        : React.createElement(datefield_1.default, { valueRef: stateRef.sub('date') }))),
3188                                React.createElement("div", { className: "agenda-dbifield-outer" },
3189                                    React.createElement("div", { className: 'agenda-dbifield-label' },
3190                                        React.createElement(asc_react_1.RLabel, { text: cd.subcolumn('sk_druh_vysetrenia').name(), style: { width: 'auto', display: 'block', padding: 0, whiteSpace: 'inherit' } })),
3191                                    React.createElement("div", { className: 'agenda-dbifield-field' }, readonly
3192                                        ? React.createElement("span", { className: 'agenda-dbifield-readonly' }, cd.subcolumn('sk_druh_vysetrenia').textValue(stateRef.sub('sk_druh_vysetrenia').value))
3193                                        : React.createElement(combobox_1.default, { valueRef: stateRef.sub('sk_druh_vysetrenia'), items: druhCombo }))),
3194                                React.createElement("div", { className: "agenda-dbifield-outer" },
3195                                    React.createElement("div", { className: 'agenda-dbifield-label' },
3196                                        React.createElement(asc_react_1.RLabel, { text: cd.subcolumn('physicianid').name(), style: { width: 'auto', display: 'block', padding: 0, whiteSpace: 'inherit' } })),
3197                                    React.createElement("div", { className: 'agenda-dbifield-field' }, readonly
3198                                        ? React.createElement("span", { className: 'agenda-dbifield-readonly' }, cd.subcolumn('physicianid').textValue(stateRef.sub('physicianid').value))
3199                                        : React.createElement(combobox_1.default, { valueRef: stateRef.sub('physicianid'), items: cd.subcolumn('physicianid').combo() }))),
3200                                React.createElement("div", { className: "agenda-dbifield-outer agenda-label-valign-top" },
3201                                    React.createElement("div", { className: 'agenda-dbifield-label' },
3202                                        React.createElement(asc_react_1.RLabel, { text: cd.subcolumn('text').name(), style: { width: 'auto', display: 'block', padding: 0, whiteSpace: 'inherit' } })),
3203                                    React.createElement("div", { className: 'agenda-dbifield-field ' }, readonly
3204                                        ? React.createElement("span", { className: 'agenda-dbifield-readonly' }, cd.subcolumn('text').textValue(stateRef.sub('text').value))
3205                                        : React.createElement(asc_react_1.RTextArea, { valueRef: stateRef.sub('text'), autoSize: true }))),
3206                                React.createElement("div", { className: "agenda-dbifield-outer" },
3207                                    React.createElement("div", { className: 'agenda-dbifield-label' },
3208                                        React.createElement(asc_react_1.RLabel, { text: cd.subcolumn('rediagnosis').name(), style: { width: 'auto', display: 'block', padding: 0, whiteSpace: 'inherit' } })),
3209                                    React.createElement("div", { className: 'agenda-dbifield-field' }, readonly
3210                                        ? React.createElement("span", { className: 'agenda-dbifield-readonly' }, cd.subcolumn('rediagnosis').textValue(stateRef.sub('rediagnosis').value))
3211                                        : React.createElement(datefield_1.default, { valueRef: stateRef.sub('rediagnosis') })))));
3212                        }, {
3213                            width: 500,
3214                            header: cd.name()
3215                        })];
3216                    case 2:
3217                        obj = _a.sent();
3218                        if (readonly)
3219                            return [2];
3220                        if (!obj)
3221                            return [2];
3222                        if (!obj.date || !obj.sk_druh_vysetrenia) {
3223                            return [3, 3];
3224                        }
3225                        return [3, 4];
3226                    case 3: return [3, 1];
3227                    case 4:
3228                        if (obj) {
3229                            sorted = valueRef.value.map(function (r) { return r; });
3230                            if (ind === '') {
3231                                sorted.push(obj);
3232                            }
3233                            else {
3234                                sorted[ind] = obj;
3235                            }
3236                            sorted.sort(function (a, b) {
3237                                if (a.date > b.date)
3238                                    return 1;
3239                                if (a.date < b.date)
3240                                    return -1;
3241                                return (a.text || "").localeCompare(b.text || "");
3242                            });
3243                            valueRef.set(sorted);
3244                        }
3245                        return [2];
3246                }
3247            });
3248        });
3249    }
3250    function removeItemClick(e) {
3251        var ind = e.currentTarget.getAttribute('data-ind');
3252        barShowMessageBox(req.ls(4013), 'fa-question', {
3253            confirm: function () {
3254                var sorted = valueRef.value.map(function (r) { return r; });
3255                sorted.splice(ind, 1);
3256                valueRef.set(sorted);
3257            }
3258        });
3259    }
3260    return (React.createElement("div", { className: 'agenda-dbifield-multiitems', style: { margin: '-4px 0 4px 0' } },
3261        value.map(function (o, i) {
3262            var _a;
3263            var s = (0, lib_date_1.date_format_date)(req, o.date);
3264            var ss = [];
3265            var druh = (_a = druhCombo.find(function (e) { return e.value == o.sk_druh_vysetrenia; })) === null || _a === void 0 ? void 0 : _a.name;
3266            if (druh) {
3267                ss.push(druh);
3268            }
3269            if (o.text)
3270                ss.push(o.text);
3271            if (ss.length)
3272                s += ': ' + ss.join(' · ');
3273            return React.createElement("div", { className: 'agenda-dbifield-multi-item large fw', key: i, onClick: showItem, "data-ind": i, style: { display: 'flex', flexFlow: 'row nowrap' } },
3274                React.createElement("div", { style: { flex: '90px 0 0' } }, (0, lib_date_1.date_format_date)(req, o.date)),
3275                React.createElement("div", { style: { flex: '40% 1 1' } },
3276                    React.createElement("b", null, druh),
3277                    o.text && druh ? ': ' + o.text : o.text,
3278                    o.rediagnosis ? ' (rediagnostika: ' + (0, lib_date_1.date_format_date)(req, o.rediagnosis) + ')' : ''),
3279                !readonly && (React.createElement("div", { style: { flex: 'auto 0 0', margin: '-8px -8px -8px 0' } },
3280                    React.createElement("button", { className: 'agenda-link-button', title: "Odobra\u0165", onClick: removeItemClick, "data-ind": i },
3281                        React.createElement("i", { className: 'fa fa-fw fa-tras
3281h' })))));
3282        }),
3283        value.length == 0 && (React.createElement("div", { style: { flex: '100% 1 1', opacity: 0.5, marginBottom: '8px' } }, "Zatia\u013E nie je evidovan\u00E9 \u017Eiadne vy\u0161etrenie")),
3284        !readonly && (React.createElement("div", { className: 'agenda-dbifield-multi-item large', onClick: showItem, "data-ind": "", style: { marginTop: '8px' } },
3285            React.createElement("i", { className: 'fa fa-fw fa-plus' }),
3286            " ",
3287            req.ls(1257)))));
3288}
3289function StudentDotacieField(props) {
3290    var valueRef = props.valueRef, dbi = props.dbi, row = props.row, year = props.year;
3291    return (React.createElement(subtableinput_1.SubTableInputEx, { dataRef: valueRef, hideHeader: true, dbiColumn: dbi.column('studentkopias', 'sk_dotacie'), idcol: 'id', style: { height: 'auto' }, fitWidth: true, onValidate: function (r) {
3292            var _a, _b;
3293            if (!r.subsidy_type) {
3294                ASC.flashMessage('Vyplňte prosím typ dotácie');
3295                return false;
3296            }
3297            if (!r.amount) {
3298                ASC.flashMessage('Zadajte prosím sumu');
3299                return false;
3300            }
3301            if (!r.year) {
3302                ASC.flashMessage('Vyplňte prosím školský rok');
3303                return false;
3304            }
3305            if (((_b = (_a = valueRef.value) === null || _a === void 0 ? void 0 : _a.filter(function (r0) { return r0.subsidy_type == r.subsidy_type && r0.id != r.id; })) === null || _b === void 0 ? void 0 : _b.length) > 0) {
3306                ASC.flashMessage('Zvolený typ dotácie už žiak má pridelený');
3307                return false;
3308            }
3309            return true;
3310        }, blank: { year: year }, cols: [
3311            { key: 'subsidy_type', width: 220 },
3312            { key: 'year', width: 120 },
3313            { key: 'amount', width: 170, formatter: function (_a) {
3314                    var row = _a.row;
3315                    return row.amount ? row.amount.toFixed(2) + ' €' : '-';
3316                } },
3317        ], onSort: function (val) { return val.sort(function (a, b) { return a.year - b.year; }); }, onItemChange: function (val, prev) {
3318            if (val.subsidy_type == 'svp' && prev.subsidy_type != val.subsidy_type)
3319                val.amount = 100;
3320            if (val.subsidy_type == 'lvvk2' && prev.subsidy_type != val.subsidy_type)
3321                val.amount = 150;
3322            if (val.subsidy_type == 'lvvk3' && prev.subsidy_type != val.subsidy_type)
3323                val.amount = 150;
3324            return val;
3325        } }));
3326}
3327exports.StudentDotacieField = StudentDotacieField;
3328function StudentStipendiaField(props) {
3329    var req = edurequest_1.client_req;
3330    var valueRef = props.valueRef, dbi = props.dbi, row = props.row, year = props.year;
3331    var dbiColumn = dbi.column('studentkopias', 'sk_stipendia');
3332    function onEditRow(row) {
3333        return tslib_1.__awaiter(this, void 0, void 0, function () {
3334            var _i, _a, sc, c;
3335            return tslib_1.__generator(this, function (_b) {
3336                if (!row) {
3337                    row = { year: year };
3338                    for (_i = 0, _a = dbiColumn.subcolumns; _i < _a.length; _i++) {
3339                        sc = _a[_i];
3340                        c = sc.id;
3341                        if (row[c] === undefined)
3342                            row[c] = sc.blank();
3343                    }
3344                }
3345                return [2, asc_react_1.RDialog.showInput(row, function (_a) {
3346                        var stateRef = _a.stateRef;
3347                        var editCols = stateRef.value["scholarship_type"] == '4'
3348                            ? [{ key: 'scholarship_type' }, { key: 'date_pregnancy_end', label: 'Dátum skončenia tehotenstva' }, { key: 'account_number' }, { key: 'date' }, { key: 'amount_1', label: 'Suma v €' }]
3349                            : [{ key: 'scholarship_type' }, { key: 'year' }, { key: 'amount_1', label: 'Suma v € za 1.polrok' }, { key: 'amount_2', label: 'Suma v € za 2.polrok' }];
3350                        return (React.createElement("div", null, editCols.map(function (ec) {
3351                            ec = tslib_1.__assign({}, ec);
3352                            var ecd = dbiColumn.subcolumn(ec.key);
3353                            return React.createElement(React.Fragment, { key: ec.key },
3354                                React.createElement("div", { className: "agenda-dbifield-outer" },
3355                                    React.createElement("div", { className: 'agenda-dbifield-label' },
3356                                        React.createElement(asc_react_1.RLabel, { text: ec.label || ecd.name() })),
3357                                    React.createElement("div", { className: 'agenda-dbifield-field' },
3358                                        React.createElement(dbi_react_1.DBIColumnField, { dbiColumn: ecd, valueRef: stateRef.sub(ec.key), name_col: ec.name_col }))));
3359                        })));
3360                    }, { width: 400, header: dbiColumn.name() })];
3361            });
3362        });
3363    }
3364    return (React.createElement(subtableinput_1.SubTableInputEx, { dataRef: valueRef, hideHeader: true, dbiColumn: dbi.column('studentk
3364opias', 'sk_stipendia'), idcol: 'id', style: { height: 'auto' }, fitWidth: true, onEditRow: onEditRow, onValidate: function (r) {
3365            if (!r.scholarship_type) {
3366                ASC.flashMessage('Vyplňte prosím typ štipendia');
3367                return false;
3368            }
3369            if (!r.year) {
3370                ASC.flashMessage('Vyplňte prosím školský rok');
3371                return false;
3372            }
3373            return true;
3374        }, blank: { year: year }, onSort: function (val) { return val.sort(function (a, b) { return a.year - b.year; }); }, cols: [
3375            { key: 'scholarship_type', width: 220 },
3376            { key: 'year', width: 120, formatter: function (_a) {
3377                    var row = _a.row;
3378                    return row.scholarship_type == '4' ? (0, lib_date_1.date_format_date)(req, row.date) : req.getSchoolYearName(row.year);
3379                } },
3380            { key: 'amount_1', width: 80, formatter: function (_a) {
3381                    var row = _a.row;
3382                    return row.amount_1 ? row.amount_1.toFixed(2) + ' €' : '-';
3383                } },
3384            { key: 'amount_2', width: 80, formatter: function (_a) {
3385                    var row = _a.row;
3386                    return row.amount_2 ? row.amount_2.toFixed(2) + ' €' : '-';
3387                } },
3388            { key: 'account_number', width: 170 },
3389        ] }));
3390}
3391exports.StudentStipendiaField = StudentStipendiaField;
3392function SkPostihnutiaInput(props) {
3393    var valueRef = props.valueRef, dbiColumn = props.dbiColumn;
3394    var combo = React.useMemo(function () {
3395        var _a;
3396        var combo = [];
3397        for (var _i = 0, _b = dbiColumn.combo(); _i < _b.length; _i++) {
3398            var c = _b[_i];
3399            if (Array.isArray(c)) {
3400                combo.push(c);
3401                continue;
3402            }
3403            if (c.hidden && !((_a = valueRef.value) === null || _a === void 0 ? void 0 : _a.includes(c.value)))
3404                continue;
3405            var text_r = '';
3406            if (c['ris'])
3407                text_r = 'RIS';
3408            combo.push(tslib_1.__assign(tslib_1.__assign({}, c), { _react: React.createElement(React.Fragment, null,
3409                    text_r && React.createElement("span", { style: { float: 'right', marginLeft: 20, color: 'green' } }, text_r),
3410                    c.name) }));
3411        }
3412        return combo;
3413    }, [dbiColumn]);
3414    return React.createElement(comboboxmulti_1.default, { valueRef: valueRef, items: combo });
3415}
3416exports.SkPostihnutiaInput = SkPostihnutiaInput;
3417function onEditNextSchool(params) {
3418    return tslib_1.__awaiter(this, void 0, void 0, function () {
3419        var year;
3420        return tslib_1.__generator(this, function (_a) {
3421            year = params.year;
3422            return [2, asc_react_1.RDialog.showInput(params.row, function (_a) {
3423                    var stateRef = _a.stateRef;
3424                    return React.createElement(NextSchoolInput, { valueRef: stateRef, year: year });
3425                }, { width: 500 })];
3426        });
3427    });
3428}
3429function getNinDetails(req, nin) {
3430    if (nin && ASC.validatorRC(nin)) {
3431        if (['cz', 'sk'].includes(req.school_country)) {
3432            var bd = nin.substr(0, 2) >= '30' ? '19' : '20';
3433            bd += nin.substr(0, 2);
3434            bd += '-';
3435            bd += nin[2].replace('5', '0').replace('6', '1') + nin[3];
3436            bd += '-';
3437            bd += nin.substr(4, 2);
3438            var gender = { 0: 'M', 1: 'M', 5: 'F', 6: 'F' }[nin[2]];
3439            return {
3440                birthdate: bd,
3441                gender: gender
3442            };
3443        }
3444        if (req.school_country == 'se') {
3445            var bd = (nin.substring(0, 2) >= '30' ? '19' : '20')
3446                + nin.substring(0, 2)
3447                + '-'
3448                + nin.substring(2, 4)
3449                + '-'
3450                + nin.substring(4, 6);
3451            var bn = nin.replace("-", "").substring(6, 9);
3452            var genderDigit = bn && parseInt(bn) > 0 ? parseInt(bn.substring(2)) : null;
3453            return {
3454                birthdate: bd,
3455                gender: genderDigit ? (genderDigit % 2 == 1 ? 'M' : 'F') : null
3456            };
3457        }
3458    }
3459}
3460exports._hotswap = [
3461    ParentInput,
3462    CzHealthinput,
3463    StudentDlg,
3464    RozhodnutiaTab,
3465];

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.