Browse Source

Querabhängigkeit Maskenfelder impl. #323767

master
Daniel Quathamer 1 day ago
parent
commit
66eb09635f
  1. 2
      superx/WEB-INF/conf/edustore/db/install/conf/builddatum.txt
  2. 8
      superx/WEB-INF/conf/edustore/db/install/conf/his1/dbconv/view.eduetl/dim_semester.view
  3. 33
      superx/WEB-INF/conf/edustore/db/install/conf/his1/dbconv/view.eduetl/dim_stg_astat_sb_fgr.view
  4. 6
      superx/WEB-INF/conf/edustore/db/install/conf/his1/edustore_install/edustore_kern_integrate_pg.sql
  5. 36
      superx/WEB-INF/conf/edustore/db/install/conf/his1/edustore_install/edustore_kern_masken_einspielen.xml
  6. 36
      superx/WEB-INF/conf/edustore/db/install/conf/his1/edustore_install/edustore_kern_masken_entladen.xml
  7. 6
      superx/WEB-INF/conf/edustore/db/install/conf/his1/edustore_install/edustore_kern_masken_loeschen.sql
  8. 11
      superx/WEB-INF/conf/edustore/db/install/conf/his1/edustore_install/edustore_kern_masken_loeschen.xml
  9. 171
      superx/WEB-INF/conf/edustore/db/install/conf/kern.html
  10. 2
      superx/WEB-INF/conf/edustore/db/install/conf/kern.rtf
  11. 37
      superx/WEB-INF/conf/edustore/db/install/conf/kern.xml
  12. 8
      superx/WEB-INF/conf/edustore/db/install/conf/kern_mask_test_ant.xml
  13. 8
      superx/WEB-INF/conf/edustore/db/install/conf/module_drop_views.sql
  14. 1
      superx/WEB-INF/conf/edustore/db/install/conf/module_grant.x
  15. 1
      superx/WEB-INF/conf/edustore/db/install/conf/module_revoke.x
  16. 224
      superx/WEB-INF/conf/edustore/db/install/conf/sx_fields_fuellen.sql
  17. 8
      superx/WEB-INF/conf/edustore/db/install/conf/sx_tables_fuellen.sql
  18. 50
      superx/WEB-INF/conf/edustore/db/install/kern_install_pg.sql
  19. 4
      superx/WEB-INF/conf/edustore/db/install/kern_masken_einspielen_pg.x
  20. 3
      superx/WEB-INF/conf/edustore/db/install/kern_masken_entladen_pg.x
  21. 2
      superx/WEB-INF/conf/edustore/db/install/kern_masken_loeschen_pg.x
  22. 12
      superx/WEB-INF/conf/edustore/db/install/schluesseltabellen/release_unloads/fm_templates.unl
  23. 30
      superx/WEB-INF/conf/edustore/db/install/upgrade/kern_upgrade_themenbaum.sql
  24. 104
      superx/WEB-INF/conf/edustore/db/install/upgrade/kern_upgrade_views_pg.sql
  25. 0
      superx/WEB-INF/conf/extra_connections.properties.sam
  26. 2
      superx/WEB-INF/conf/quartz.properties
  27. 2
      superx/WEB-INF/conf/version.properties
  28. 20
      superx/WEB-INF/kern_dbforms-config_pg.xml
  29. 16
      superx/xml/js/memtext/nd_functions.js
  30. 193
      superx/xml/js/memtext/sx_functions.js
  31. 20
      superx/xml/nd_templates.xsl

2
superx/WEB-INF/conf/edustore/db/install/conf/builddatum.txt

@ -1 +1 @@ @@ -1 +1 @@
19.08.2026
03.10.2026

8
superx/WEB-INF/conf/edustore/db/install/conf/his1/dbconv/view.eduetl/dim_semester.view

@ -10,8 +10,8 @@ folgesem, @@ -10,8 +10,8 @@ folgesem,
folgesem_sem_beginn,
ist_zukunft,
akad_jahr,
akad_jahr_absolv,
akad_jahr_stud) as
pruefungsjahr,
studienjahr) as
with tmp_semester as (select C.apnr as tid,
C.druck as eintrag,
@ -37,8 +37,8 @@ akad_jahr_stud) as @@ -37,8 +37,8 @@ akad_jahr_stud) as
folgesem_sem_beginn,
(case when sem_beginn > current_date then 1 else 0 end) as ist_zukunft,
case when semestertyp='1' then (tid/10)-1 when semestertyp='2' then (tid/10) end as akad_jahr,
case when semestertyp='1' then (tid/10) when semestertyp='2' then (tid/10)+1 end as akad_jahr_absolv,
case when semestertyp='1' then (tid/10) when semestertyp='2' then (tid/10) end as akad_jahr_stud
case when semestertyp='1' then (tid/10) when semestertyp='2' then (tid/10)+1 end as pruefungsjahr,
case when semestertyp='1' then (tid/10) when semestertyp='2' then (tid/10) end as studienjahr
from tmp_semester
where length('' || tid)=5 and substring('' || tid from 5 for 1) in ('1','2','3','4')

33
superx/WEB-INF/conf/edustore/db/install/conf/his1/dbconv/view.eduetl/dim_stg_astat_sb_fgr.view

@ -0,0 +1,33 @@ @@ -0,0 +1,33 @@
create view dim_stg_astat_sb_fgr(
stg_astat,
stg_astat_str,
stg_bund,
stg_bund_str,
sb,
sb_str,
fgr,
fgr_str,
gueltig_ab,
gueltig_bis) as
select L.schluessel as stg_astat,
L.name as stg_astat_str,
L.keybund as stg_bund,
F.name as stg_bund_str,
F.sb,SB.name as sb_str,
SB.fgr,
FGR.name as fgr_str,
L.gueltig_ab,
coalesce(L.gueltig_bis,30000) as gueltig_bis
from k_astat_studienfach_land L,
k_astat_studienbereich SB,
k_astat_studienfach F,
k_astat_faechergruppe FGR,
cif C_land
where C_land.key=659
and C_land.apnr=L.land
and SB.schluessel=F.sb
and FGR.schluessel=SB.fgr
and L.keybund=F.schluessel
;

6
superx/WEB-INF/conf/edustore/db/install/conf/his1/edustore_install/edustore_kern_integrate_pg.sql

@ -723,6 +723,12 @@ insert into tmp_themenbaum @@ -723,6 +723,12 @@ insert into tmp_themenbaum
gueltig_bis)
values('Übersicht Datenblatt-Archiv','71860','Datenmanagement',date_val('01.01.1900'),date_val('01.01.3000'));
insert into tmp_themenbaum
( name ,maskeninfo_id, parentname,
gueltig_seit ,
gueltig_bis)
values('Tabelleninhalt anzeigen','71900','Administration',date_val('01.01.1900'),date_val('01.01.3000'));
--gibt es die Maske schon?
delete from tmp_themenbaum where maskeninfo_id in (select T.maskeninfo_id from themenbaum T);

36
superx/WEB-INF/conf/edustore/db/install/conf/his1/edustore_install/edustore_kern_masken_einspielen.xml

@ -2087,4 +2087,40 @@ @@ -2087,4 +2087,40 @@
<dbi:file encoding="UTF-8" separator="^" trailingSeparator="y" withNativeClient="n" firstLinedescription="n" structure="CSV" filename="$SUPERX_DIR/db/install/masken/71880_maske_system_bez.unl"/>
</dbi:data>
</dbi:dbaction>
<dbi:dbaction dbi:action="sqlexec">eduetl:delete from maskeninfo where tid = 71900;
</dbi:dbaction>
<dbi:dbaction dbi:action="sqlexec">eduetl:delete from felderinfo where tid in
(select felderinfo_id from masken_felder_bez where maskeninfo_id = 71900);
</dbi:dbaction>
<dbi:dbaction dbi:action="sqlexec">eduetl:delete from masken_felder_bez where maskeninfo_id = 71900;
</dbi:dbaction>
<dbi:dbaction dbi:action="sqlexec">eduetl:delete from sachgeb_maske_bez where maskeninfo_id = 71900;
</dbi:dbaction>
<dbi:dbaction dbi:action="sqlexec">eduetl:delete from maske_system_bez where maskeninfo_id = 71900;
</dbi:dbaction>
<dbi:dbaction dbi:action="importFile">
<dbi:data database="eduetl" table="maskeninfo">
<dbi:file encoding="UTF-8" separator="^" trailingSeparator="y" withNativeClient="n" firstLinedescription="n" structure="CSV" filename="$SUPERX_DIR/db/install/masken/71900_maskeninfo.unl"/>
</dbi:data>
</dbi:dbaction>
<dbi:dbaction dbi:action="importFile">
<dbi:data database="eduetl" table="felderinfo">
<dbi:file encoding="UTF-8" separator="^" trailingSeparator="y" withNativeClient="n" firstLinedescription="n" structure="CSV" filename="$SUPERX_DIR/db/install/masken/71900_felderinfo.unl"/>
</dbi:data>
</dbi:dbaction>
<dbi:dbaction dbi:action="importFile">
<dbi:data database="eduetl" table="masken_felder_bez">
<dbi:file encoding="UTF-8" separator="^" trailingSeparator="y" withNativeClient="n" firstLinedescription="n" structure="CSV" filename="$SUPERX_DIR/db/install/masken/71900_masken_felder_bez.unl"/>
</dbi:data>
</dbi:dbaction>
<dbi:dbaction dbi:action="importFile">
<dbi:data database="eduetl" table="sachgeb_maske_bez">
<dbi:file encoding="UTF-8" separator="^" trailingSeparator="y" withNativeClient="n" firstLinedescription="n" structure="CSV" filename="$SUPERX_DIR/db/install/masken/71900_sachgeb_maske_bez.unl"/>
</dbi:data>
</dbi:dbaction>
<dbi:dbaction dbi:action="importFile">
<dbi:data database="eduetl" table="maske_system_bez">
<dbi:file encoding="UTF-8" separator="^" trailingSeparator="y" withNativeClient="n" firstLinedescription="n" structure="CSV" filename="$SUPERX_DIR/db/install/masken/71900_maske_system_bez.unl"/>
</dbi:data>
</dbi:dbaction>
</dbi:dbactions>

36
superx/WEB-INF/conf/edustore/db/install/conf/his1/edustore_install/edustore_kern_masken_entladen.xml

@ -2087,4 +2087,40 @@ @@ -2087,4 +2087,40 @@
<dbi:file encoding="UTF-8" separator="^" trailingSeparator="y" withNativeClient="y" firstLinedescription="n" structure="CSV" filename="$SUPERX_DIR/db/install/masken/71880_maske_system_bez.unl"/>
</dbi:data>
</dbi:dbaction>
<dbi:dbaction dbi:action="exportFile">
<dbi:data sqlVarDatabase="" database="eduetl">
<extraction-sql>select * from maskeninfo where tid = 71900;
</extraction-sql>
<dbi:file encoding="UTF-8" separator="^" trailingSeparator="y" withNativeClient="y" firstLinedescription="n" structure="CSV" filename="$SUPERX_DIR/db/install/masken/71900_maskeninfo.unl"/>
</dbi:data>
</dbi:dbaction>
<dbi:dbaction dbi:action="exportFile">
<dbi:data sqlVarDatabase="" database="eduetl">
<extraction-sql>select * from felderinfo where tid in
(select felderinfo_id from masken_felder_bez where maskeninfo_id = 71900) order by tid;
</extraction-sql>
<dbi:file encoding="UTF-8" separator="^" trailingSeparator="y" withNativeClient="y" firstLinedescription="n" structure="CSV" filename="$SUPERX_DIR/db/install/masken/71900_felderinfo.unl"/>
</dbi:data>
</dbi:dbaction>
<dbi:dbaction dbi:action="exportFile">
<dbi:data sqlVarDatabase="" database="eduetl">
<extraction-sql>select maskeninfo_id, felderinfo_id from masken_felder_bez where maskeninfo_id = 71900 order by 1,2;
</extraction-sql>
<dbi:file encoding="UTF-8" separator="^" trailingSeparator="y" withNativeClient="y" firstLinedescription="n" structure="CSV" filename="$SUPERX_DIR/db/install/masken/71900_masken_felder_bez.unl"/>
</dbi:data>
</dbi:dbaction>
<dbi:dbaction dbi:action="exportFile">
<dbi:data sqlVarDatabase="" database="eduetl">
<extraction-sql>select sachgebiete_id, maskeninfo_id from sachgeb_maske_bez where maskeninfo_id = 71900 order by 1,2;
</extraction-sql>
<dbi:file encoding="UTF-8" separator="^" trailingSeparator="y" withNativeClient="y" firstLinedescription="n" structure="CSV" filename="$SUPERX_DIR/db/install/masken/71900_sachgeb_maske_bez.unl"/>
</dbi:data>
</dbi:dbaction>
<dbi:dbaction dbi:action="exportFile">
<dbi:data sqlVarDatabase="" database="eduetl">
<extraction-sql>select maskeninfo_id, systeminfo_id from maske_system_bez where maskeninfo_id = 71900 order by 1,2;
</extraction-sql>
<dbi:file encoding="UTF-8" separator="^" trailingSeparator="y" withNativeClient="y" firstLinedescription="n" structure="CSV" filename="$SUPERX_DIR/db/install/masken/71900_maske_system_bez.unl"/>
</dbi:data>
</dbi:dbaction>
</dbi:dbactions>

6
superx/WEB-INF/conf/edustore/db/install/conf/his1/edustore_install/edustore_kern_masken_loeschen.sql

@ -346,3 +346,9 @@ delete from felderinfo where tid in @@ -346,3 +346,9 @@ delete from felderinfo where tid in
delete from masken_felder_bez where maskeninfo_id = 71880;
delete from sachgeb_maske_bez where maskeninfo_id = 71880;
delete from maske_system_bez where maskeninfo_id = 71880;
delete from maskeninfo where tid = 71900;
delete from felderinfo where tid in
(select felderinfo_id from masken_felder_bez where maskeninfo_id = 71900);
delete from masken_felder_bez where maskeninfo_id = 71900;
delete from sachgeb_maske_bez where maskeninfo_id = 71900;
delete from maske_system_bez where maskeninfo_id = 71900;

11
superx/WEB-INF/conf/edustore/db/install/conf/his1/edustore_install/edustore_kern_masken_loeschen.xml

@ -636,5 +636,16 @@ @@ -636,5 +636,16 @@
<dbi:dbaction dbi:action="sqlexec">eduetl:delete from sachgeb_maske_bez where maskeninfo_id = 71880;
</dbi:dbaction>
<dbi:dbaction dbi:action="sqlexec">eduetl:delete from maske_system_bez where maskeninfo_id = 71880;
</dbi:dbaction>
<dbi:dbaction dbi:action="sqlexec">eduetl:delete from maskeninfo where tid = 71900;
</dbi:dbaction>
<dbi:dbaction dbi:action="sqlexec">eduetl:delete from felderinfo where tid in
(select felderinfo_id from masken_felder_bez where maskeninfo_id = 71900);
</dbi:dbaction>
<dbi:dbaction dbi:action="sqlexec">eduetl:delete from masken_felder_bez where maskeninfo_id = 71900;
</dbi:dbaction>
<dbi:dbaction dbi:action="sqlexec">eduetl:delete from sachgeb_maske_bez where maskeninfo_id = 71900;
</dbi:dbaction>
<dbi:dbaction dbi:action="sqlexec">eduetl:delete from maske_system_bez where maskeninfo_id = 71900;
</dbi:dbaction>
</dbi:dbactions>

171
superx/WEB-INF/conf/edustore/db/install/conf/kern.html

File diff suppressed because one or more lines are too long

2
superx/WEB-INF/conf/edustore/db/install/conf/kern.rtf

File diff suppressed because one or more lines are too long

37
superx/WEB-INF/conf/edustore/db/install/conf/kern.xml

@ -8819,6 +8819,43 @@ where dimension_bp_id=(select D.tid from dimension_bp D where D.apnr='bluep_absc @@ -8819,6 +8819,43 @@ where dimension_bp_id=(select D.tid from dimension_bp D where D.apnr='bluep_absc
]]></sql>
</view>
<view name="dim_stg_astat_sb_fgr" version="6.0" caption="Fach (amtlich), Studienbereich, Fächergruppe" thema="Stammdaten verwalten" typ="Schlüsseltabelle" releaseUnload="demo">
<columns>
<column name="stg_astat" type ="VARCHAR" size ="255" default ="" notnull ="false" description="Fach (Land) Schlüssel"/>
<column name="stg_astat_str" type ="VARCHAR" size ="255" default ="" notnull ="false" description="Fach (Land) Name" />
<column name="stg_bund" type ="VARCHAR" size ="255" default ="" notnull ="false" description="Fach (Bund) Schlüssel"/>
<column name="stg_bund_str" type ="VARCHAR" size ="255" default ="" notnull ="false" description="Fach (Bund) Name" />
<column name="sb" type ="VARCHAR" size ="255" default ="" notnull ="false" description="Studienbereich Schlüssel"/>
<column name="sb_str" type ="VARCHAR" size ="255" default ="" notnull ="false" description="Studienbereich Name"/>
<column name="fgr" type ="VARCHAR" size ="255" default ="" notnull ="false" description="Fächergruppe Schlüssel" />
<column name="fgr_str" type ="VARCHAR" size ="255" default ="" notnull ="false" description="Fächergruppe Name"/>
<column name="gueltig_ab" type ="INTEGER" size ="10" default ="" notnull ="false" description="Gültig von"><comment>Semester fünfstellig, z.B. 20262 für WiSe 2026/2027</comment></column>
<column name="gueltig_bis" type ="INTEGER" size ="10" default ="" notnull ="false" description="Gültig bis"><comment>Semester fünfstellig, z.B. 20271 für SoSe 2027</comment></column>
</columns>
<sql dbsystem=""><![CDATA[
select L.schluessel as stg_astat,
L.name as stg_astat_str,
L.keybund as stg_bund,
F.name as stg_bund_str,
F.sb,SB.name as sb_str,
SB.fgr,
FGR.name as fgr_str,
L.gueltig_ab,
coalesce(L.gueltig_bis,30000) as gueltig_bis
from k_astat_studienfach_land L,
k_astat_studienbereich SB,
k_astat_studienfach F,
k_astat_faechergruppe FGR,
cif C_land
where C_land.key=659
and C_land.apnr=L.land
and SB.schluessel=F.sb
and FGR.schluessel=SB.fgr
and L.keybund=F.schluessel
]]></sql>
</view>
</views>

8
superx/WEB-INF/conf/edustore/db/install/conf/kern_mask_test_ant.xml

@ -398,5 +398,13 @@ @@ -398,5 +398,13 @@
<arg value="-logger:conf/edustore/db/conf/logging.properties"/>
<classpath refid="classpath"/>
</java>
<!--Test Maske - tid: 71900 - Maskenname: Tabelleninhalt anzeigen-->
<java classname="de.superx.bin.ExecuteMask" fork="true" failonerror="true" classpathref="classpath" dir="${WEBAPP_DIR}/WEB-INF">
<arg value="-tid:71900"/>
<arg value="-out:71900.htm"/>
<arg value="-user:admin"/>
<arg value="-logger:conf/edustore/db/conf/logging.properties"/>
<classpath refid="classpath"/>
</java>
</target>
</project>

8
superx/WEB-INF/conf/edustore/db/install/conf/module_drop_views.sql

@ -58,6 +58,9 @@ select sp_table_exists('dim_kreis') from xdummy; @@ -58,6 +58,9 @@ select sp_table_exists('dim_kreis') from xdummy;
<sqlvar name="dim_semester_view_exists">
select sp_table_exists('dim_semester') from xdummy;
</sqlvar>
<sqlvar name="dim_stg_astat_sb_fgr_view_exists">
select sp_table_exists('dim_stg_astat_sb_fgr') from xdummy;
</sqlvar>
</sqlvars>
@ -151,3 +154,8 @@ drop view dim_kreis; @@ -151,3 +154,8 @@ drop view dim_kreis;
drop view dim_semester;
</#if>
<#if dim_stg_astat_sb_fgr_view_exists ==1>
drop view dim_stg_astat_sb_fgr;
</#if>

1
superx/WEB-INF/conf/edustore/db/install/conf/module_grant.x

@ -526,6 +526,7 @@ DOQUERY "grant $RIGHT on dim_kost to $GRANTEE;" @@ -526,6 +526,7 @@ DOQUERY "grant $RIGHT on dim_kost to $GRANTEE;"
DOQUERY "grant $RIGHT on dim_kotr to $GRANTEE;"
DOQUERY "grant $RIGHT on dim_kreis to $GRANTEE;"
DOQUERY "grant $RIGHT on dim_semester to $GRANTEE;"
DOQUERY "grant $RIGHT on dim_stg_astat_sb_fgr to $GRANTEE;"
if [ "$DATABASE" == "POSTGRES" ]
then

1
superx/WEB-INF/conf/edustore/db/install/conf/module_revoke.x

@ -508,6 +508,7 @@ DOQUERY "revoke $RIGHT on dim_kost from $GRANTEE;" @@ -508,6 +508,7 @@ DOQUERY "revoke $RIGHT on dim_kost from $GRANTEE;"
DOQUERY "revoke $RIGHT on dim_kotr from $GRANTEE;"
DOQUERY "revoke $RIGHT on dim_kreis from $GRANTEE;"
DOQUERY "revoke $RIGHT on dim_semester from $GRANTEE;"
DOQUERY "revoke $RIGHT on dim_stg_astat_sb_fgr from $GRANTEE;"
if [ "$DATABASE" == "POSTGRES" ]
then

224
superx/WEB-INF/conf/edustore/db/install/conf/sx_fields_fuellen.sql

@ -23799,7 +23799,7 @@ currentlyUsed, @@ -23799,7 +23799,7 @@ currentlyUsed,
check_integrity,
is_sum)
values('dim_semester',
'akad_jahr_absolv',
'pruefungsjahr',
'Prüfungsjahr',
'Def. Absolv.: vorheriges WiSe + SoSe (z.B. 2006 = 20052 + 20061) https://www.destatis.de/DE/Mediathek/Digitales-Magazin/Bildung/Glossar/pruefungsjahr.html',
'INTEGER',
@ -23821,7 +23821,7 @@ currentlyUsed, @@ -23821,7 +23821,7 @@ currentlyUsed,
check_integrity,
is_sum)
values('dim_semester',
'akad_jahr_stud',
'studienjahr',
'Studienjahr',
'Def. Studienjahr: SoSe + WiSe (z.B. 2006 = 20061 + 20062)',
'INTEGER',
@ -24117,6 +24117,226 @@ values('dim_stg', @@ -24117,6 +24117,226 @@ values('dim_stg',
0,
1);
insert into tmp_fields (
table_name,
name,
caption,
description,
field_type,
field_size,
field_not_null,
currentlyUsed,
check_integrity,
is_sum)
values('dim_stg_astat_sb_fgr',
'stg_astat',
'Fach (Land) Schlüssel',
'',
'VARCHAR',
'255',
0,
1,
0,
1);
insert into tmp_fields (
table_name,
name,
caption,
description,
field_type,
field_size,
field_not_null,
currentlyUsed,
check_integrity,
is_sum)
values('dim_stg_astat_sb_fgr',
'stg_astat_str',
'Fach (Land) Name',
'',
'VARCHAR',
'255',
0,
1,
0,
1);
insert into tmp_fields (
table_name,
name,
caption,
description,
field_type,
field_size,
field_not_null,
currentlyUsed,
check_integrity,
is_sum)
values('dim_stg_astat_sb_fgr',
'stg_bund',
'Fach (Bund) Schlüssel',
'',
'VARCHAR',
'255',
0,
1,
0,
1);
insert into tmp_fields (
table_name,
name,
caption,
description,
field_type,
field_size,
field_not_null,
currentlyUsed,
check_integrity,
is_sum)
values('dim_stg_astat_sb_fgr',
'stg_bund_str',
'Fach (Bund) Name',
'',
'VARCHAR',
'255',
0,
1,
0,
1);
insert into tmp_fields (
table_name,
name,
caption,
description,
field_type,
field_size,
field_not_null,
currentlyUsed,
check_integrity,
is_sum)
values('dim_stg_astat_sb_fgr',
'sb',
'Studienbereich Schlüssel',
'',
'VARCHAR',
'255',
0,
1,
0,
1);
insert into tmp_fields (
table_name,
name,
caption,
description,
field_type,
field_size,
field_not_null,
currentlyUsed,
check_integrity,
is_sum)
values('dim_stg_astat_sb_fgr',
'sb_str',
'Studienbereich Name',
'',
'VARCHAR',
'255',
0,
1,
0,
1);
insert into tmp_fields (
table_name,
name,
caption,
description,
field_type,
field_size,
field_not_null,
currentlyUsed,
check_integrity,
is_sum)
values('dim_stg_astat_sb_fgr',
'fgr',
'Fächergruppe Schlüssel',
'',
'VARCHAR',
'255',
0,
1,
0,
1);
insert into tmp_fields (
table_name,
name,
caption,
description,
field_type,
field_size,
field_not_null,
currentlyUsed,
check_integrity,
is_sum)
values('dim_stg_astat_sb_fgr',
'fgr_str',
'Fächergruppe Name',
'',
'VARCHAR',
'255',
0,
1,
0,
1);
insert into tmp_fields (
table_name,
name,
caption,
description,
field_type,
field_size,
field_not_null,
currentlyUsed,
check_integrity,
is_sum)
values('dim_stg_astat_sb_fgr',
'gueltig_ab',
'Gültig von',
'Semester fünfstellig, z.B. 20262 für WiSe 2026/2027',
'INTEGER',
'10',
0,
1,
0,
1);
insert into tmp_fields (
table_name,
name,
caption,
description,
field_type,
field_size,
field_not_null,
currentlyUsed,
check_integrity,
is_sum)
values('dim_stg_astat_sb_fgr',
'gueltig_bis',
'Gültig bis',
'Semester fünfstellig, z.B. 20271 für SoSe 2027',
'INTEGER',
'10',
0,
1,
0,
1);
insert into tmp_fields (
table_name,
name,

8
superx/WEB-INF/conf/edustore/db/install/conf/sx_tables_fuellen.sql

@ -1183,6 +1183,14 @@ values('dim_stg','Studienfach','Studienfach Dimension für OLAP', @@ -1183,6 +1183,14 @@ values('dim_stg','Studienfach','Studienfach Dimension für OLAP',
'Studierende',
0);
insert into tmp_tables (name,caption,description,table_type,systeminfo_id,systeminfo_orig,thema,sachgebiete_id)
values('dim_stg_astat_sb_fgr','Fach (amtlich), Studienbereich, Fächergruppe','',
'Schlüsseltabelle',
9,
9,
'Stammdaten verwalten',
0);
insert into tmp_tables (name,caption,description,table_type,systeminfo_id,systeminfo_orig,thema,sachgebiete_id)
values('dimension_view','','View auf dimension-Tabelle nach HIS1-DB-Struktur ',
'',

50
superx/WEB-INF/conf/edustore/db/install/kern_install_pg.sql

@ -5054,8 +5054,8 @@ folgesem, @@ -5054,8 +5054,8 @@ folgesem,
folgesem_sem_beginn,
ist_zukunft,
akad_jahr,
akad_jahr_absolv,
akad_jahr_stud) as
pruefungsjahr,
studienjahr) as
with tmp_semester as (select C.apnr as tid,
C.druck as eintrag,
@ -5081,14 +5081,50 @@ akad_jahr_stud) as @@ -5081,14 +5081,50 @@ akad_jahr_stud) as
folgesem_sem_beginn,
(case when sem_beginn > current_date then 1 else 0 end) as ist_zukunft,
case when semestertyp='1' then (tid/10)-1 when semestertyp='2' then (tid/10) end as akad_jahr,
case when semestertyp='1' then (tid/10) when semestertyp='2' then (tid/10)+1 end as akad_jahr_absolv,
case when semestertyp='1' then (tid/10) when semestertyp='2' then (tid/10) end as akad_jahr_stud
case when semestertyp='1' then (tid/10) when semestertyp='2' then (tid/10)+1 end as pruefungsjahr,
case when semestertyp='1' then (tid/10) when semestertyp='2' then (tid/10) end as studienjahr
from tmp_semester
where length('' || tid)=5 and substring('' || tid from 5 for 1) in ('1','2','3','4')
;
select now(), 'Erzeuge View dim_stg_astat_sb_fgr';
create view dim_stg_astat_sb_fgr(
stg_astat,
stg_astat_str,
stg_bund,
stg_bund_str,
sb,
sb_str,
fgr,
fgr_str,
gueltig_ab,
gueltig_bis) as
select L.schluessel as stg_astat,
L.name as stg_astat_str,
L.keybund as stg_bund,
F.name as stg_bund_str,
F.sb,SB.name as sb_str,
SB.fgr,
FGR.name as fgr_str,
L.gueltig_ab,
coalesce(L.gueltig_bis,30000) as gueltig_bis
from k_astat_studienfach_land L,
k_astat_studienbereich SB,
k_astat_studienfach F,
k_astat_faechergruppe FGR,
cif C_land
where C_land.key=659
and C_land.apnr=L.land
and SB.schluessel=F.sb
and FGR.schluessel=SB.fgr
and L.keybund=F.schluessel
;
--Funktion / Prozedur sp_user_themen
\! DOSQL $SUPERX_DIR/db/install/prozeduren/proc_sp_user_themen_pg.sql
--Funktion / Prozedur sp_user_orga
@ -6279,6 +6315,12 @@ insert into tmp_themenbaum @@ -6279,6 +6315,12 @@ insert into tmp_themenbaum
gueltig_bis)
values('Übersicht Datenblatt-Archiv','71860','Datenmanagement',date_val('01.01.1900'),date_val('01.01.3000'));
insert into tmp_themenbaum
( name ,maskeninfo_id, parentname,
gueltig_seit ,
gueltig_bis)
values('Tabelleninhalt anzeigen','71900','Administration',date_val('01.01.1900'),date_val('01.01.3000'));
--gibt es die Maske schon?
delete from tmp_themenbaum where maskeninfo_id in (select T.maskeninfo_id from themenbaum T);

4
superx/WEB-INF/conf/edustore/db/install/kern_masken_einspielen_pg.x

@ -235,3 +235,7 @@ sx_auto_insert_mask 71860 @@ -235,3 +235,7 @@ sx_auto_insert_mask 71860
echo "Maske Nr. 71880 einfügen:"
cd $SUPERX_DIR/db/install/masken
sx_auto_insert_mask 71880
#Maske Nr.71900 Tabelleninhalt anzeigen
echo "Maske Nr. 71900 einfügen:"
cd $SUPERX_DIR/db/install/masken
sx_auto_insert_mask 71900

3
superx/WEB-INF/conf/edustore/db/install/kern_masken_entladen_pg.x

@ -177,3 +177,6 @@ sx_select_mask 71860 @@ -177,3 +177,6 @@ sx_select_mask 71860
#Maske Nr.71880 Downloads löschen
cd "$SUPERX_DIR/db/install/masken"
sx_select_mask 71880
#Maske Nr.71900 Tabelleninhalt anzeigen
cd "$SUPERX_DIR/db/install/masken"
sx_select_mask 71900

2
superx/WEB-INF/conf/edustore/db/install/kern_masken_loeschen_pg.x

@ -173,3 +173,5 @@ sx_auto_delete_mask 71860 @@ -173,3 +173,5 @@ sx_auto_delete_mask 71860
#Maske Nr.71880 Downloads löschen
sx_auto_delete_mask 71880
sx_auto_delete_mask 71880
#Maske Nr.71900 Tabelleninhalt anzeigen
sx_auto_delete_mask 71900

12
superx/WEB-INF/conf/edustore/db/install/schluesseltabellen/release_unloads/fm_templates.unl

@ -450,9 +450,9 @@ create temp table tmp_cifx2\ @@ -450,9 +450,9 @@ create temp table tmp_cifx2\
key smallint not null ,\
hs integer not null,\
apnr char(255) ,\
kurz char(10),\
druck varchar(100),\
lang_1 char(150),\
kurz varchar(255),\
druck varchar(255),\
lang_1 varchar(255),\
astat char(10) ,\
parent char(255) , \
uniquename CHAR(255) , \
@ -983,9 +983,9 @@ create temp table tmp_cifx2\ @@ -983,9 +983,9 @@ create temp table tmp_cifx2\
key smallint not null ,\
hs integer not null,\
apnr char(255) ,\
kurz char(10),\
druck varchar(100),\
lang_1 char(150),\
kurz varchar(255),\
druck varchar(255),\
lang_1 varchar(255),\
astat char(10) ,\
parent char(255) , \
uniquename CHAR(255) , \

30
superx/WEB-INF/conf/edustore/db/install/upgrade/kern_upgrade_themenbaum.sql

@ -1799,6 +1799,36 @@ select @@ -1799,6 +1799,36 @@ select
delete from tmp_themenbaum;
insert into tmp_themenbaum(
name,
maskeninfo_id,
gueltig_seit,
gueltig_bis)
select 'Tabelleninhalt anzeigen'::char(255),71900,
date_val('01.01.1900'),date_val('30.09.2999')
from xdummy;
delete from tmp_themenbaum where 0 <
(select count(*) from themenbaum where maskeninfo_id=71900);
update tmp_themenbaum set parent=(select max(tid) from themenbaum where name='Administration');
insert into themenbaum(
name,
maskeninfo_id,
parent,
gueltig_seit,
gueltig_bis,
erlaeuterung)
select
name,
maskeninfo_id,
parent,
gueltig_seit,
gueltig_bis,
erlaeuterung
from tmp_themenbaum;
delete from tmp_themenbaum;
drop table tmp_themenbaum;
<#if SQLdialect='Postgres'>

104
superx/WEB-INF/conf/edustore/db/install/upgrade/kern_upgrade_views_pg.sql

@ -21,7 +21,8 @@ select relname,relname as tabelle from pg_class where relname::varchar(200) in ( @@ -21,7 +21,8 @@ select relname,relname as tabelle from pg_class where relname::varchar(200) in (
'dim_kost',
'dim_kotr',
'dim_kreis',
'dim_semester') UNION
'dim_semester',
'dim_stg_astat_sb_fgr') UNION
SELECT N.nspname||'.'||C.relname as relname, N.nspname||'.'||C.relname as tabelle
FROM pg_class C, pg_namespace N
WHERE N.oid = C.relnamespace and N.nspname||'.'||C.relname in ('user_groups',
@ -41,7 +42,8 @@ WHERE N.oid = C.relnamespace and N.nspname||'.'||C.relname in ('user_groups', @@ -41,7 +42,8 @@ WHERE N.oid = C.relnamespace and N.nspname||'.'||C.relname in ('user_groups',
'dim_kost',
'dim_kotr',
'dim_kreis',
'dim_semester'
'dim_semester',
'dim_stg_astat_sb_fgr'
);</sqlvar>
</sqlvars>
@ -690,8 +692,8 @@ folgesem, @@ -690,8 +692,8 @@ folgesem,
folgesem_sem_beginn,
ist_zukunft,
akad_jahr,
akad_jahr_absolv,
akad_jahr_stud) as
pruefungsjahr,
studienjahr) as
with tmp_semester as (select C.apnr as tid,
C.druck as eintrag,
@ -717,8 +719,8 @@ akad_jahr_stud) as @@ -717,8 +719,8 @@ akad_jahr_stud) as
folgesem_sem_beginn,
(case when sem_beginn > current_date then 1 else 0 end) as ist_zukunft,
case when semestertyp='1' then (tid/10)-1 when semestertyp='2' then (tid/10) end as akad_jahr,
case when semestertyp='1' then (tid/10) when semestertyp='2' then (tid/10)+1 end as akad_jahr_absolv,
case when semestertyp='1' then (tid/10) when semestertyp='2' then (tid/10) end as akad_jahr_stud
case when semestertyp='1' then (tid/10) when semestertyp='2' then (tid/10)+1 end as pruefungsjahr,
case when semestertyp='1' then (tid/10) when semestertyp='2' then (tid/10) end as studienjahr
from tmp_semester
where length('' || tid)=5 and substring('' || tid from 5 for 1) in ('1','2','3','4')
@ -728,6 +730,52 @@ akad_jahr_stud) as @@ -728,6 +730,52 @@ akad_jahr_stud) as
</#if>
<#if views?seq_contains("dim_stg_astat_sb_fgr") >
select now(), 'view dim_stg_astat_sb_fgr exists - fine';
<#else>
select now(), 'Erzeuge View dim_stg_astat_sb_fgr';
create view dim_stg_astat_sb_fgr(
stg_astat,
stg_astat_str,
stg_bund,
stg_bund_str,
sb,
sb_str,
fgr,
fgr_str,
gueltig_ab,
gueltig_bis) as
select L.schluessel as stg_astat,
L.name as stg_astat_str,
L.keybund as stg_bund,
F.name as stg_bund_str,
F.sb,SB.name as sb_str,
SB.fgr,
FGR.name as fgr_str,
L.gueltig_ab,
coalesce(L.gueltig_bis,30000) as gueltig_bis
from k_astat_studienfach_land L,
k_astat_studienbereich SB,
k_astat_studienfach F,
k_astat_faechergruppe FGR,
cif C_land
where C_land.key=659
and C_land.apnr=L.land
and SB.schluessel=F.sb
and FGR.schluessel=SB.fgr
and L.keybund=F.schluessel
;
</#if>
<#else>
@ -1191,8 +1239,8 @@ folgesem, @@ -1191,8 +1239,8 @@ folgesem,
folgesem_sem_beginn,
ist_zukunft,
akad_jahr,
akad_jahr_absolv,
akad_jahr_stud) as
pruefungsjahr,
studienjahr) as
with tmp_semester as (select C.apnr as tid,
C.druck as eintrag,
@ -1218,8 +1266,8 @@ akad_jahr_stud) as @@ -1218,8 +1266,8 @@ akad_jahr_stud) as
folgesem_sem_beginn,
(case when sem_beginn > current_date then 1 else 0 end) as ist_zukunft,
case when semestertyp='1' then (tid/10)-1 when semestertyp='2' then (tid/10) end as akad_jahr,
case when semestertyp='1' then (tid/10) when semestertyp='2' then (tid/10)+1 end as akad_jahr_absolv,
case when semestertyp='1' then (tid/10) when semestertyp='2' then (tid/10) end as akad_jahr_stud
case when semestertyp='1' then (tid/10) when semestertyp='2' then (tid/10)+1 end as pruefungsjahr,
case when semestertyp='1' then (tid/10) when semestertyp='2' then (tid/10) end as studienjahr
from tmp_semester
where length('' || tid)=5 and substring('' || tid from 5 for 1) in ('1','2','3','4')
@ -1227,4 +1275,40 @@ akad_jahr_stud) as @@ -1227,4 +1275,40 @@ akad_jahr_stud) as
;
select now(), 'Erzeuge View dim_stg_astat_sb_fgr';
create view dim_stg_astat_sb_fgr(
stg_astat,
stg_astat_str,
stg_bund,
stg_bund_str,
sb,
sb_str,
fgr,
fgr_str,
gueltig_ab,
gueltig_bis) as
select L.schluessel as stg_astat,
L.name as stg_astat_str,
L.keybund as stg_bund,
F.name as stg_bund_str,
F.sb,SB.name as sb_str,
SB.fgr,
FGR.name as fgr_str,
L.gueltig_ab,
coalesce(L.gueltig_bis,30000) as gueltig_bis
from k_astat_studienfach_land L,
k_astat_studienbereich SB,
k_astat_studienfach F,
k_astat_faechergruppe FGR,
cif C_land
where C_land.key=659
and C_land.apnr=L.land
and SB.schluessel=F.sb
and FGR.schluessel=SB.fgr
and L.keybund=F.schluessel
;
</#if>

0
superx/WEB-INF/conf/extra_connections.properties → superx/WEB-INF/conf/extra_connections.properties.sam

2
superx/WEB-INF/conf/quartz.properties

@ -17,6 +17,6 @@ org.quartz.jobStore.driverDelegateClass: org.quartz.impl.jdbcjobstore.PostgreSQL @@ -17,6 +17,6 @@ org.quartz.jobStore.driverDelegateClass: org.quartz.impl.jdbcjobstore.PostgreSQL
org.quartz.jobStore.isClustered: true
org.quartz.plugin.jobInitializer.class = org.quartz.plugins.xml.XMLSchedulingDataProcessorPlugin
org.quartz.plugin.jobInitializer.fileNames = quartz_jobs.xml
org.quartz.plugin.jobInitializer.failOnFileNotFound = false
org.quartz.plugin.jobInitializer.failOnFileNotFound = true
org.quartz.plugin.jobInitializer.scanInterval = 30
org.quartz.plugin.jobInitializer.wrapInUserTransaction = false

2
superx/WEB-INF/conf/version.properties

@ -1,2 +1,2 @@ @@ -1,2 +1,2 @@
git.branch=HEAD
git.commit.hash=1dc091e79e42f6833099f87816927f2b27de525e
git.commit.hash=eb163ec837e1a674401a5e5354484d5b644c5f8f

20
superx/WEB-INF/kern_dbforms-config_pg.xml

@ -2036,10 +2036,10 @@ @@ -2036,10 +2036,10 @@
<field name="akad_jahr" description="Akad. Jahr" fieldType="int" size="6" isKey="" sortable="">
<comment>Def. Akad. Jahr STBA: WiSe + nachfolgendes SoSe (z.B. 2006 = 20062 + 20071)</comment>
</field>
<field name="akad_jahr_absolv" description="Prüfungsjahr" fieldType="int" size="6" isKey="" sortable="">
<field name="pruefungsjahr" description="Prüfungsjahr" fieldType="int" size="6" isKey="" sortable="">
<comment>Def. Absolv.: vorheriges WiSe + SoSe (z.B. 2006 = 20052 + 20061) https://www.destatis.de/DE/Mediathek/Digitales-Magazin/Bildung/Glossar/pruefungsjahr.html</comment>
</field>
<field name="akad_jahr_stud" description="Studienjahr" fieldType="int" size="6" isKey="" sortable="">
<field name="studienjahr" description="Studienjahr" fieldType="int" size="6" isKey="" sortable="">
<comment>Def. Studienjahr: SoSe + WiSe (z.B. 2006 = 20061 + 20062)</comment>
</field>
</table>
@ -2060,6 +2060,22 @@ @@ -2060,6 +2060,22 @@
<field name="stg_astgrp" description="Fächergruppe (Schlüssel)" fieldType="char" size="10" isKey="" sortable=""/>
<field name="stg_astgrp_str" description="Fächergruppe" fieldType="varchar" size="255" isKey="" sortable=""/>
</table>
<table name="dim_stg_astat_sb_fgr">
<field name="stg_astat" description="Fach (Land) Schlüssel" fieldType="varchar" size="255" isKey="" sortable=""/>
<field name="stg_astat_str" description="Fach (Land) Name" fieldType="varchar" size="255" isKey="" sortable=""/>
<field name="stg_bund" description="Fach (Bund) Schlüssel" fieldType="varchar" size="255" isKey="" sortable=""/>
<field name="stg_bund_str" description="Fach (Bund) Name" fieldType="varchar" size="255" isKey="" sortable=""/>
<field name="sb" description="Studienbereich Schlüssel" fieldType="varchar" size="255" isKey="" sortable=""/>
<field name="sb_str" description="Studienbereich Name" fieldType="varchar" size="255" isKey="" sortable=""/>
<field name="fgr" description="Fächergruppe Schlüssel" fieldType="varchar" size="255" isKey="" sortable=""/>
<field name="fgr_str" description="Fächergruppe Name" fieldType="varchar" size="255" isKey="" sortable=""/>
<field name="gueltig_ab" description="Gültig von" fieldType="int" size="6" isKey="" sortable="">
<comment>Semester fünfstellig, z.B. 20262 für WiSe 2026/2027</comment>
</field>
<field name="gueltig_bis" description="Gültig bis" fieldType="int" size="6" isKey="" sortable="">
<comment>Semester fünfstellig, z.B. 20271 für SoSe 2027</comment>
</field>
</table>
<table name="dimension_view">
<field name="id" description="" fieldType="int" size="6" isKey="" sortable=""/>
<field name="dimension_bp_id" description="" fieldType="int" size="6" isKey="" sortable=""/>

16
superx/xml/js/memtext/nd_functions.js

@ -337,3 +337,19 @@ async function loadHtml(url,targetElement) { @@ -337,3 +337,19 @@ async function loadHtml(url,targetElement) {
console.error(error.message);
}
}
function setSelectFldFromKeyField(fld,varname)
{
var selectFld=document.getElementById('select_' +varname);
if(selectFld)
{
selectFld.value=fld.value;
for (i = 0; i < selectFld.options.length; i++) {
if (selectFld.options[i].value==fld.value)
{
selectFld.options[i].selected="selected";
}
}
}
}

193
superx/xml/js/memtext/sx_functions.js

@ -1957,84 +1957,6 @@ function resetValidation() @@ -1957,84 +1957,6 @@ function resetValidation()
var el=document.getElementById('validation');
if(el)
el.innerHTML = "";
if(1==2)
{ //still experimental
for(var i=1; i < felder.length; i++)
{
if(felder[i]["isDynamic"]=="true")
{
var tmpFname=felder[i]["name"];
var fieldID=createVarname(tmpFname);
console.log("Feld " +felder[i]["name"]+ " ist dynamisch");
if(felder[i].dependsOn && felder[i].dependsOn.length >0)
{
for(var k=0;k < felder[i].dependsOn.length;k++)
{
var dependsOnFieldname=felder[i].dependsOn[k];
var dependsOnFieldID=createVarname(dependsOnFieldname);
var dependsOnFieldvalue="";
if(document.getElementById(dependsOnFieldID))
dependsOnFieldvalue=document.getElementById(dependsOnFieldID).value;
else
console.log("Feld " +dependsOnFieldname+ "existiert nicht im Formular");
console.log("Feld " +tmpFname+ " hängt ab von " +dependsOnFieldname);
if(dependsOnFieldvalue != "")
{
console.log("requery mit "+dependsOnFieldvalue);
if(felder[i]["art"]=="1")
{
//reset field:
var previousValue=document.getElementById(fieldID).value;
var previousValueLabel=document.getElementById("label_"+fieldID).value;
console.log("prüfe Feld "+tmpFname );
//Ajax Load
var callurl="../servlet/SuperXmlMaske?tid="+maskentid+"&getJSON_"+getEncoded(tmpFname)+"=xxxxxx-xxxxxx@";
var params=maskeComboOderSichtBuildParams(document.forms[0],tmpFname,1, tmpFname); //dependsOnFieldname+"="+dependsOnFieldvalue;
callurl+=params;
//console.log("callurl "+callurl );
var previousValueIsStillPossible=false;
var isFirstPossibleValue=true;
var valueLoadedOk=getComboValue(callurl).then((jsonData) => {
if(jsonData && jsonData.nodes ) //&& jsonData.nodes.length ==2 ein leeres Element + ein gefülltes, nicht mehr
{
for(var j=0;j < jsonData.nodes.length;j++)
{
var node=jsonData.nodes[j];
if(previousValue==node.objectId)
previousValueIsStillPossible=true;
//console.log("setze Feld "+tmpFname + " auf Wert "+node.objectId +" ("+node.title+")");
}
if(previousValueIsStillPossible)
{
document.getElementById(fieldID).value=node.objectId;
document.getElementById("label_"+fieldID).value=node.title;
}
else
{ //Reset field:
document.getElementById(fieldID).value="";
document.getElementById("label_"+fieldID).value="";
}
}
});
}
}
}
}
}
else
{
console.log("Feld " +felder[i]["name"]+ " ist nicht dynamisch");
}
}
}
}
async function getComboValue(url)
{
@ -2047,6 +1969,7 @@ async function getComboValue(url) @@ -2047,6 +1969,7 @@ async function getComboValue(url)
const comboContent = await response.text();
if(comboContent)
{
console.log("comboContent: " +comboContent);
return purgeval(comboContent);
}
else
@ -2119,7 +2042,6 @@ function validiereNeueMaskennr(frm,platform) @@ -2119,7 +2042,6 @@ function validiereNeueMaskennr(frm,platform)
}
}
/* Funktionen für Javascript Baum, z.B. GANG Studiengang-Menü: */
function srcUrl(url,targetElem)
{
@ -2222,7 +2144,7 @@ function renderTreeNode(treeNodes,myNode) @@ -2222,7 +2144,7 @@ function renderTreeNode(treeNodes,myNode)
//hat Element kinder?
if(myNode.isFolder)
{
ret+="<span class=\"treeCaret\" id=\"treeCaret_\""+myNode.apnr+"\" onClick=\"renderTreeChildNodes(treeNodes,'"+myNode.apnr+"',this)\"></span>&nbsp;";
ret+="<span class=\"treeCaret\" id=\"treeCaret_\""+myNode.apnr+"\" onClick=\"renderTreeChildNodes(treeNodes,'"+myNode.apnr+"',this)\"></span>";
}
if(myNode.onClickHandler !="" && !myNode.isFolder)
{
@ -2252,3 +2174,114 @@ function treeNodeHasChildren(treeNodes,nodeId) @@ -2252,3 +2174,114 @@ function treeNodeHasChildren(treeNodes,nodeId)
}
return hasChildren;
}
function setDependentFields(fld)
{
//still experimental
for(var i=1; i < felder.length; i++)
{
if(felder[i]["isDynamic"]=="true" )
{
var tmpFname=felder[i]["htmlname"];
var fieldID=createVarname(tmpFname);
console.log("Feld " +felder[i]["name"]+ " ist dynamisch");
if(felder[i].dependsOn && felder[i].dependsOn.length >0 && document.forms["maske"].elements[felder[i]["name"]].value !="")
{
for(var k=0;k < felder[i].dependsOn.length;k++)
{
var dependsOnFieldname=felder[i].dependsOn[k];
var dependsOnFieldID=createVarname(dependsOnFieldname);
var dependsOnFieldvalue="";
if(document.getElementById(dependsOnFieldID))
dependsOnFieldvalue=document.getElementById(dependsOnFieldID).value;
else
console.log("Feld " +dependsOnFieldname+ "existiert nicht im Formular");
console.log("Feld " +tmpFname+ " hängt ab von " +dependsOnFieldname);
if(dependsOnFieldvalue != "")
{
console.log("Feld "+tmpFname +" ist abhängig von " + dependsOnFieldvalue );
if(document.getElementById(fieldID) && document.getElementById("label_"+fieldID))
{
document.getElementById(fieldID).value="";
document.getElementById("label_"+fieldID).value="";
}
console.log("requery mit "+dependsOnFieldvalue);
if(felder[i]["art"]=="1")
{
//reset field:
var previousValue=document.getElementById(fieldID).value;
var previousValueLabel=document.getElementById("label_"+fieldID).value;
console.log("prüfe Feld "+tmpFname );
//Ajax Load
var callurl="../servlet/SuperXmlMaske?tid="+maskentid+"&getJSON_"+getEncoded(tmpFname)+"=xxxxxx-xxxxxx@";
var params=maskeComboOderSichtBuildParams(document.forms["maske"],tmpFname,1, tmpFname); //dependsOnFieldname+"="+dependsOnFieldvalue;
callurl+=params;
//console.log("callurl "+callurl );
//var isFirstPossibleValue=true;
try {
var valueLoadedOk=getComboValue(callurl).then((jsonData) => {
if(jsonData) //&& jsonData.nodes.length ==2 ein leeres Element + ein gefülltes, nicht mehr
{
console.log("jsonData: " +jsonData);
if(jsonData.error)
{
//reset field
console.log("Feld "+tmpFname +" Wert " + previousValue +" passt nicht mehr" );
document.getElementById(tmpFname).value="";
document.getElementById("label_"+tmpFname).value="";
}
if(jsonData.nodes ) //&& jsonData.nodes.length ==2 ein leeres Element + ein gefülltes, nicht mehr
{
for(var j=0;j < jsonData.nodes.length;j++)
{
var node=jsonData.nodes[j];
if(previousValue==node.objectId)
previousValueIsStillPossible=true;
//console.log("setze Feld "+tmpFname + " auf Wert "+node.objectId +" ("+node.title+")");
}
if(previousValueIsStillPossible)
{
document.getElementById(fieldID).value=node.objectId;
document.getElementById("label_"+fieldID).value=node.title;
}
else
{ //Reset field:
document.getElementById(fieldID).value="";
document.getElementById("label_"+fieldID).value="";
}
}
}
//else
// previousValueIsStillPossible=true;
});
console.log("Prüfung Feld "+tmpFname + " abgeschlossen");
}
catch (error)
{
//reset field
console.log("Ajax Fehler, Feld "+fieldID +" Wert " + previousValue +" passt nicht mehr" );
document.getElementById(fieldID).value="";
document.getElementById("label_"+fieldID).value="";
}
}
}
}
}
}
else
{
console.log("Feld " +felder[i]["name"]+ " ist nicht dynamisch");
}
}
}

20
superx/xml/nd_templates.xsl

@ -2450,11 +2450,22 @@ Seite 1 von 1 @@ -2450,11 +2450,22 @@ Seite 1 von 1
<!--20260216 deaktiviert<xsl:attribute name="tabindex">
<xsl:value-of select="100+(nummer*10)+2"/>
</xsl:attribute>-->
<xsl:choose>
<xsl:when test="attribut='{InputAction:setDependentFields}'">
<xsl:attribute name="onchange">
<xsl:text>c=document.getElementById('</xsl:text>
<xsl:text>select_</xsl:text><xsl:call-template name="create_varname"><xsl:with-param name="string"><xsl:value-of select="name"/></xsl:with-param></xsl:call-template>
<xsl:text>');document.getElementById('</xsl:text><xsl:call-template name="create_varname"><xsl:with-param name="string"><xsl:value-of select="name"/></xsl:with-param></xsl:call-template><xsl:text>').value=c.options[c.selectedIndex].value;setDependentFields(c);</xsl:text>
</xsl:attribute>
</xsl:when>
<xsl:otherwise>
<xsl:attribute name="onchange">
<xsl:text>c=document.getElementById('</xsl:text>
<xsl:text>select_</xsl:text><xsl:call-template name="create_varname"><xsl:with-param name="string"><xsl:value-of select="name"/></xsl:with-param></xsl:call-template>
<xsl:text>');document.getElementById('</xsl:text><xsl:call-template name="create_varname"><xsl:with-param name="string"><xsl:value-of select="name"/></xsl:with-param></xsl:call-template><xsl:text>').value=c.options[c.selectedIndex].value;resetValidation();</xsl:text>
</xsl:attribute>
</xsl:otherwise>
</xsl:choose>
<xsl:if test="obligatorisch='1'">
<xsl:attribute name="required"><xsl:text>true</xsl:text></xsl:attribute>
</xsl:if>
@ -2721,7 +2732,8 @@ Seite 1 von 1 @@ -2721,7 +2732,8 @@ Seite 1 von 1
text-Workaround -->
<xsl:if test="art='1' or art='12'">
<div class="control" style="display:none">
<xsl:text disable-output-escaping="yes"><![CDATA[<input type="text" size="10" onchange="resetValidation();"]]></xsl:text>
<xsl:text disable-output-escaping="yes"><![CDATA[<input type="text" size="10" onchange="resetValidation();setSelectFldFromKeyField(this,']]></xsl:text>
<xsl:call-template name="create_varname"><xsl:with-param name="string"><xsl:value-of select="name"/></xsl:with-param></xsl:call-template><xsl:text>');"</xsl:text>
<xsl:text><![CDATA[ id="]]></xsl:text><xsl:call-template name="create_varname"><xsl:with-param name="string"><xsl:value-of select="name"/></xsl:with-param></xsl:call-template><xsl:text>" </xsl:text>
<xsl:text><![CDATA[ name="]]></xsl:text><xsl:value-of select="name"/><xsl:text>" </xsl:text>
<!--20260216 deaktiviert<xsl:text><![CDATA[ tabindex="]]></xsl:text><xsl:value-of select="100+(nummer*10)+1"/><xsl:text>" </xsl:text>-->
@ -2738,11 +2750,11 @@ Seite 1 von 1 @@ -2738,11 +2750,11 @@ Seite 1 von 1
<xsl:choose>
<xsl:when test="(art=1 or art=2) and (zeilenanzahl=1 and @isDynamic='false')">
<!-- select-box deaktivieren-->
<xsl:text><![CDATA[ onfocus="]]></xsl:text> <xsl:text>document.forms[0].elements['select_</xsl:text><xsl:call-template name="create_varname"><xsl:with-param name="string"><xsl:value-of select="name"/></xsl:with-param></xsl:call-template><xsl:text>'].selectedIndex =-1;" </xsl:text>
<xsl:text><![CDATA[ onfocus="]]></xsl:text> <xsl:text>document.forms['maske'].elements['select_</xsl:text><xsl:call-template name="create_varname"><xsl:with-param name="string"><xsl:value-of select="name"/></xsl:with-param></xsl:call-template><xsl:text>'].selectedIndex =-1;" </xsl:text>
</xsl:when>
<xsl:otherwise> <!-- Labelfeld leeren-->
<xsl:text><![CDATA[ onfocus="]]></xsl:text><xsl:text>document.forms[0].elements['label_</xsl:text><xsl:call-template name="create_varname"><xsl:with-param name="string"><xsl:value-of select="name"/></xsl:with-param></xsl:call-template><xsl:text>'].value ='';"</xsl:text>
<xsl:text><![CDATA[ onblur="]]></xsl:text><xsl:text>document.forms[0].elements['label_</xsl:text><xsl:call-template name="create_varname"><xsl:with-param name="string"><xsl:value-of select="name"/></xsl:with-param></xsl:call-template><xsl:text>'].value =this.value;" </xsl:text>
<xsl:text><![CDATA[ onfocus="]]></xsl:text><xsl:text>document.forms['maske'].elements['label_</xsl:text><xsl:call-template name="create_varname"><xsl:with-param name="string"><xsl:value-of select="name"/></xsl:with-param></xsl:call-template><xsl:text>'].value ='';"</xsl:text>
<xsl:text><![CDATA[ onblur="]]></xsl:text><xsl:text>document.forms['maske'].elements['label_</xsl:text><xsl:call-template name="create_varname"><xsl:with-param name="string"><xsl:value-of select="name"/></xsl:with-param></xsl:call-template><xsl:text>'].value =this.value;" </xsl:text>
</xsl:otherwise>
</xsl:choose>

Loading…
Cancel
Save