[ TAG 446 ][10.06.2022] -Erfolgreich -IAP-20220403-20220403-1150 -Positionierungsproblem

Meine Aufgabe ist es heute die Methode [ GET_PRV_ELMT ] zu entwickeln.
Wenn ich Beispielsweise ein Dictionary habe mit folgenden Werten.

"GRP02-FRM06": {},
"GRP02-FRM06-LBL00": {"text": "7"},
"GRP02-FRM06-LBL01": {"text": "Abfahrtskontrolle KW--"},
"GRP02-FRM06-ENT00": {"text": "1"},
"GRP02-FRM06-ENT00:NORMAL": {},
"GRP02-FRM06-ENT00:ACTIVE": {},
"GRP02-FRM06-ENT00:HOVER": {},
Ich iteriere die Elemente durch und bin zum Beispiel gerade beim Element [GRP02-FRM06-ENT00]. Das ist ein sehr interessanter Ansatz, weil die Elemente auch eine [ SID ] und [ IID ] haben. Weil die [ IID ] ein Integer ist, lässt sich die [ IID ] zurück rechnet. In dieser Situation funktioniert es nicht.

Als erstes muss ich das Eltern-Element ermitteln. Über das Eltern-Element werden die dazugehörigen Kind-Elemente ermittelt. Danach wird die Index-Position des vorherigen Elementes ermittelt und deren Koordinaten und Flächeninformationen ausgelesen. Bevor man in der Lage ist die x und y-Koordinaten zu berechnen, ist es notwendig die Breite, Höhe und die Margins zu definieren.

def ADPSYS_CHK00(userstl_i_, defstl_i_, min_width, min_height):
if userstl_i_[si_chldtw] is None:
if defstl_i_[si_chldtw] is not None:
if defstl_i_[si_chldtw] > min_width:
userstl_i_[si_chldtw] = defstl_i_[si_chldtw]
else:
userstl_i_[si_chldtw] = min_width
else:
userstl_i_[si_chldtw] = min_width
else:
userstl_i_[si_chldtw] = min_width

if userstl_i_[si_chldth] is None:
if defstl_i_[si_chldth] is not None:
if defstl_i_[si_chldth] > min_height:
userstl_i_[si_chldth] = defstl_i_[si_chldth]
else:
userstl_i_[si_chldth] = min_height
else:
userstl_i_[si_chldth] = min_height
else:
userstl_i_[si_chldth] = min_height


def ADPSYS_CHK01(userstl_i_, defstl_i_):
if userstl_i_[si_alg] is None:
if defstl_i_[si_alg] is not None:
if defstl_i_[si_alg] == si_algH:
userstl_i_[si_alg] = si_algH
elif defstl_i_[si_alg] == si_algV:
userstl_i_[si_alg] = si_algV
else:
userstl_i_[si_alg] = si_algH
else:
bol = True
if userstl_i_[si_alg] == si_algH:
bol = False
if userstl_i_[si_alg] == si_algV:
bol = False
if bol:
userstl_i_[si_alg] = si_algH


def ADPSYS_CHK10(userstl_i_, defstl_i_):
if userstl_i_[si_mr] is None:
if defstl_i_[si_mr] is not None:
userstl_i_[si_mr] = defstl_i_[si_mr]
else:
userstl_i_[si_mr] = 0

if userstl_i_[si_ml] is None:
if defstl_i_[si_ml] is not None:
userstl_i_[si_ml] = defstl_i_[si_ml]
else:
userstl_i_[si_ml] = 0

if userstl_i_[si_mt] is None:
if defstl_i_[si_mt] is not None:
userstl_i_[si_mt] = defstl_i_[si_mt]
else:
userstl_i_[si_mt] = 0

if userstl_i_[si_mb] is None:
if defstl_i_[si_mb] is not None:
userstl_i_[si_mb] = defstl_i_[si_mb]
else:
userstl_i_[si_mb] = 0


def ADPSYS_CHK11(userstl_i_, defstl_i_, min_width, min_height):
if userstl_i_[si_width] is None:
if defstl_i_[si_width] is not None:
if defstl_i_[si_width] > min_width:
userstl_i_[si_width] = defstl_i_[si_width]
else:
userstl_i_[si_width] = min_width
else:
userstl_i_[si_width] = min_width
else:
if userstl_i_[si_width] < min_width:
userstl_i_[si_width] = min_width

if userstl_i_[si_height] is None:
if defstl_i_[si_height] is not None:
if defstl_i_[si_height] > min_height:
userstl_i_[si_height] = defstl_i_[si_height]
else:
userstl_i_[si_height] = min_height
else:
userstl_i_[si_height] = min_height
else:
if userstl_i_[si_height] < min_height:
userstl_i_[si_height] = min_height

userstl_i_[si_chldw] = userstl_i_[si_width]
userstl_i_[si_chldh] = userstl_i_[si_height]


def ADPSYS_CHK12(userstl_i_):
userstl_i_[si_chldmw] = userstl_i_[si_mr] + userstl_i_[si_ml] + userstl_i_[si_chldw]
userstl_i_[si_chldmh] = userstl_i_[si_mt] + userstl_i_[si_mb] + userstl_i_[si_chldh]


def ADPSYS_CHK13(userstl_i_, frm_userstl):
if frm_userstl[si_alg] == si_algH:
frm_userstl[si_chldtw] += userstl_i_[si_chldmw]
if frm_userstl[si_chldth] < userstl_i_[si_chldmh]:
frm_userstl[si_chldth] = userstl_i_[si_chldmh]
if frm_userstl[si_alg] == si_algV:
frm_userstl[si_chldth] += userstl_i_[si_chldmh]
if frm_userstl[si_chldtw] < userstl_i_[si_chldmw]:
frm_userstl[si_chldtw] = userstl_i_[si_chldmw]
frm_userstl[si_width] = frm_userstl[si_chldtw]
frm_userstl[si_height] = frm_userstl[si_chldth]


def ADPSYS_CHK14(userstl_i_, defstl_i_):
if userstl_i_[si_x] is None:
if defstl_i_[si_x] is not None:
userstl_i_[si_x] = defstl_i_[si_x]
else:
userstl_i_[si_x] = 0

if userstl_i_[si_y] is None:
if defstl_i_[si_y] is not None:
userstl_i_[si_y] = defstl_i_[si_y]
else:
userstl_i_[si_y] = 0


def ADPSYS_CHK15(i_, ref_user):
prnt_stl_key = GET_PRNT_STLKEY(i_)
prv_stl_key = GET_PRV_ELMT(i_, ref_user)

prnt_alg = ref_user[prnt_stl_key][si_alg]

e_x = ref_user[prv_stl_key][si_x]
e_y = ref_user[prv_stl_key][si_y]
e_mw = ref_user[prv_stl_key][si_chldmw]
e_mh = ref_user[prv_stl_key][si_chldmh]

i_ml = ref_user[i_][si_ml]
i_mt = ref_user[i_][si_mt]

if prnt_alg == si_algH:
ref_user[i_][si_x] = e_x + e_mw + i_ml
ref_user[i_][si_y] = i_mt

if prnt_alg == si_algV:
ref_user[i_][si_x] = i_ml
ref_user[i_][si_y] = e_y + e_mh + i_mt


def DeFSTL_FNC_FRM(stl_key=None, defstl=None, userstl=None, ref_user=None, ref_def=None):
chld = GET_CHLD_STLKEYS(stl_key=stl_key, userstl=ref_user, event_elm=False)

min_width = 40
min_height = 15

frm_ = GET_KEY_ELMTS(stl_key)[-1]
frm_userstl = ref_user[stl_key]
frm_defstl = ref_def[frm_[si_elmt]]

ADPSYS_CHK00(userstl_i_=frm_userstl, defstl_i_=frm_defstl, min_height=min_height, min_width=min_width)
ADPSYS_CHK01(userstl_i_=frm_userstl, defstl_i_=frm_defstl)
ADPSYS_CHK10(userstl_i_=frm_userstl, defstl_i_=frm_defstl)

for i in chld:
elmt_ = GET_KEY_ELMTS(i)[-1]
userstl_i_ = ref_user[i]
defstl_i_ = ref_def[elmt_[si_elmt]]
ADPSYS_CHK10(userstl_i_=userstl_i_, defstl_i_=defstl_i_)
ADPSYS_CHK11(userstl_i_=userstl_i_, defstl_i_=defstl_i_, min_width=min_width, min_height=min_height)
ADPSYS_CHK12(userstl_i_=userstl_i_)
ADPSYS_CHK13(userstl_i_=userstl_i_, frm_userstl=frm_userstl)
ADPSYS_CHK14(userstl_i_=userstl_i_, defstl_i_=defstl_i_)
ADPSYS_CHK15(i_=i, ref_user=ref_user)

return False

Diese Methoden wurden benötigt um die CHK-Methoden für FRM umzusetzen.

def GET_CHLD_STLKEYS(stl_key, userstl, event_elm=True):
lst = []
for k in userstl:
if stl_key in k and stl_key != k:
if event_elm:
lst.append(k)
else:
if IS_EVNT_ELMT(k) is False:
lst.append(k)
return lst


def GET_PRNT_STLKEY(stl_key):
if "-" not in stl_key:
return stl_key
elmnt = stl_key.split("-")
elmnt.pop()
prnt_stl = '-'.join(elmnt)
return prnt_stl

def GET_PRV_ELMT(stl_key, userstl):
prnt_stl = GET_PRNT_STLKEY(stl_key=stl_key)
if prnt_stl not in userstl:
return False
chld_stl_keys = GET_CHLD_STLKEYS(stl_key=prnt_stl, userstl=userstl, event_elm=False)
current_indx = chld_stl_keys.index(stl_key)
prvs_indx = 0
if current_indx > 0:
prvs_indx = current_indx-1
prvs_stl_key = chld_stl_keys[prvs_indx]
return prvs_stl_key
Hochachtungsvoll
Artem Kraft

Kommentare

Beliebte Posts aus diesem Blog

[ TAG 38 ][29.05.2021] - Erfolgreich - Freelancer-Portale

[ TAG 747 ][07.04.2023] -Erfolgreich -BNKTRS -Google Code -Objekt und Methodenliste

[ TAG 52 ][12.06.2021] - Erfolgreich - IAP-20210601-20210609-2325