Statistik in den tree eingebaut. Ein paar Fixes in der Logik. Erweiterungen des

This commit is contained in:
2024-03-19 13:17:31 +01:00
parent 6d52f160e8
commit 83a250e66b
2 changed files with 132 additions and 21 deletions
+109 -20
View File
@@ -398,8 +398,6 @@ class CadItem(DataModel):
else:
translated_data["tosgruppe_neu"] = default
# Spezial Freigabevermerk
if "freigabevermerk_sivas" in translated_data:
text = translated_data["freigabevermerk_sivas"]
@@ -409,8 +407,8 @@ class CadItem(DataModel):
# Spezial Hersteller: aus "80312 - Rehau AG & Co." wird "Rehau AG & Co."
if "hersteller_sivas" in translated_data:
text = translated_data["hersteller_sivas"]
if re.search(r"^.*-\s+", text):
translated_data["hersteller_neu"] = re.sub(r"^.*-\s+", "", text, flags=re.I)
if re.search(r"^\d+\s+-\s+", text):
translated_data["hersteller_sivas"] = re.sub(r"^\d+\s+-\s+", "", text, flags=re.I)
# Spezial Änderungsindex
if "aenderungsindex_sivas" not in translated_data:
@@ -573,7 +571,8 @@ class CadItem(DataModel):
def check_pflichtfelder(self):
"""Allgemeine Prüfungen:
Solange nicht alle Pflichtfelder einen Wert aufweisen, muss beim Klick auf den Button "Migrieren" eine ERROR-Messagebox erscheinen, in der alle Pflichtfelder aufgelistet sind, die keinen Wert aufweisen
Solange nicht alle Pflichtfelder einen Wert aufweisen, muss beim Klick auf den Button "Migrieren" eine ERROR-Messagebox
erscheinen, in der alle Pflichtfelder aufgelistet sind, die keinen Wert aufweisen
"""
missing = list()
@@ -607,9 +606,10 @@ class CadItem(DataModel):
if pdm_kategorie_neu == "Einzelteil" or pdm_kategorie_neu == "Schweissbaugruppe":
self.check_key_both_columns("fertigungsart_sivas", "fertigungsart_neu", missing)
# Allgemeintoleranz
self.check_key_both_columns("allgemeintoleranz_sivas", "allgemeintoleranz_neu", missing)
if pdm_kategorie_neu == "Einzelteil" or pdm_kategorie_neu == "Schweissbaugruppe":
self.check_key_both_columns("allgemeintoleranz_sivas", "allgemeintoleranz_neu", missing)
# FOS-Gruppe
self.check_key_both_columns("fosGruppe_sivas", "fosGruppe_neu", missing)
# Kalkulationsart
@@ -629,7 +629,7 @@ class CadItem(DataModel):
# Werkstofftyp
aus_halbzeug = self.get_gui_data("aus_halbzeug_neu")
if aus_halbzeug is False:
if pdm_kategorie_neu == "Einzelteil" and aus_halbzeug is False:
self.check_key_existence("werkstofftyp_neu", missing)
# Änderungstext
@@ -647,6 +647,8 @@ class CadItem(DataModel):
""" überprüft ob inder Oberfläche nicht erlaubte Zeichen eingetragen wurden"""
wrongchars = dict()
for key in self.key2label:
if key == "model3d_neu": # 3D Teil Pfad ausnehmen
continue
content = self.get_gui_data(key)
for c in invalid_chars:
if c in content:
@@ -763,7 +765,7 @@ class CadItem(DataModel):
return False
# TOS-Gruppe
tosgruppe = self.get_content('tosgruppe_sivas', 'tosgruppe_sivas')
tosgruppe = self.get_content('tosgruppe_sivas', 'tosgruppe_neu')
(num2refId, num2child) = self._controller.get_config().TOSGruppen.get_Id2TosGroup()
# TODO wirklich als refernce-id oder als Gruppe?
if tosgruppe not in num2child.keys():
@@ -912,6 +914,12 @@ class CadItem(DataModel):
"Subject": "-",
"Category": "-",
"Keywords": "-",
"Aus Halbzeug": "",
"HalbzeugIntern":"",
"Kopiertes_Teil_1_y_Skalierung": "",
"Oberflaechenbehandlung":"",
"Farbe": "",
}
all_data = self.get_all_gui_data()
# data_keys = [ "Author", "Teilenummer", "StartRevision",
@@ -926,16 +934,80 @@ class CadItem(DataModel):
# "Tolerierungsnorm","Änderungsbeschreibung",
# "Freigabevermerk", "ZusaetzlicheInformationen"]
# Path
# "halbzeugoberflaeche_neu",
# "halbzeugfarbe_neu",
# "lebenszyklus_status_neu",
# "model3d_neu",
# "bezeichnung1_sivas", "bezeichnung1_neu",
# "bezeichnung2_sivas",
# "halbzeugOhneSaege_sivas", "halbzeugOhneSaege_neu",
# "ruestcode_sivas", "ruestcode_neu",
# "fertigungsart_sivas", "fertigungsart_neu",
# "allgemeintoleranz_sivas", "allgemeintoleranz_neu",
# "fosGruppe_sivas", "fosGruppe_neu",
# "kalkulationsart_sivas", "kalkulationsart_neu",
# "beschaffungsart_sivas", "beschaffungsart_neu",
# "mengeneinheit_sivas", "mengeneinheit_neu",
# "halbzeug_sivas", "halbzeug_neu",
# "tosgruppe_sivas", "tosgruppe_neu",
# "dispogruppe_sivas", "dispogruppe_neu",
# "dispolaufgruppe_sivas","dispolaufgruppe_neu",
# "hersteller_sivas", "hersteller_neu",
# "ersatzfuer_sivas", "ersatzfuer_neu",
# "ersetztdurch_sivas", "ersetztdurch_neu",
# "herstteilenr_sivas", "herstteilenr_neu",
# "werkstoffdiskr_neu",
# "werkstofftyp_neu",
# "material_sivas", "material_neu",
# "oberflaeche_neu",
# "farbe_neu",
# "version_sivas",
# "aenderungsindex_sivas", "aenderungsindex_neu",
# "aenderungstext_sivas", "aenderungstext_neu",
# "freigabevermerk_sivas", "freigabevermerk_neu",
# "zusatzinfos_auto_text",
# "zusatzinfos_bendef_text",
teilenummer = self.get_gui_data("teilenummer")
data["Teilenummer"] = teilenummer
# Bezeichnung um "- BG" ergänzen
pdm_kategorie_neu = self.get_gui_data("pdm_kategorie_neu")
bezeichnung1 = self.get_content('bezeichnung1_sivas', 'bezeichnung1_neu')
title = bezeichnung1
data["KategorieNE"] = title
# Bezeichnung um "- BG" ergänzen
if pdm_kategorie_neu == "Baugruppe" or pdm_kategorie_neu == "Schweissbaugruppe":
title = bezeichnung1 + " - BG"
data["Title"] = title
# aus Halbzeug
aus_halbzeug = self.get_gui_data("aus_halbzeug_neu")
if aus_halbzeug:
data["Aus Halbzeug"] = "Ja"
# Halbzeugnummer
halbzeugnummer = self.get_gui_data("halbzeugnummer_neu")
if halbzeugnummer:
data["HalbzeugIntern"] = halbzeugnummer
# Halbzeuglänge
halbzeuglaenge = self.get_gui_data("halbzeuglaenge_neu")
if halbzeuglaenge:
data["Kopiertes_Teil_1_y_Skalierung"] = halbzeuglaenge
# Halbzeugoberfläche
halbzeugoberflaeche = self.get_gui_data("halbzeugoberflaeche_neu")
if halbzeuglaenge:
data["Oberflaechenbehandlung"] = halbzeugoberflaeche
# Halbzeugfarbe
farbe = self.get_gui_data("halbzeugoberflaeche_neu")
if halbzeuglaenge:
data["Farbe"] = farbe
# Bezeichnung 4
bezeichnung4 = ""
@@ -950,13 +1022,7 @@ class CadItem(DataModel):
# Startrevision
startrevision = self.get_content('aenderungsindex_sivas', 'aenderungsindex_neu')
data["StartRevision"] = startrevision
# aus Halbzeug
aus_halbzeug = self.get_gui_data("aus_halbzeug_neu")
if aus_halbzeug:
data["Aus Halbzeug"] = "Ja"
else:
data["Aus Halbzeug"] = ""
# Fertigungsart
fertigungsart = self.get_content('fertigungsart_sivas', 'fertigungsart_neu')
@@ -976,7 +1042,10 @@ class CadItem(DataModel):
"ST - stanzen":"stanzen",
"SW - schweißen":"schweißen",
}
data["Fertigungsart"] = trans[fertigungsart]
if fertigungsart is not None:
data["Fertigungsart"] = trans[fertigungsart]
else:
data["Fertigungsart"] = ""
# FOS Gruppe
fos_gruppe = self.get_content('fosGruppe_sivas', 'fosGruppe_neu')
@@ -1038,6 +1107,16 @@ class CadItem(DataModel):
data["Dispogruppe"] = trans[dispogruppe]
# # Hersteller
# hersteller = self.get_content('hersteller_sivas', 'hersteller_neu')
# data['Hersteller'] = hersteller
# # HerstellerTeilenummer
# herstellertnr = self.get_content('herstteilenr_sivas', 'herstteilenr_neu')
# data['HerstellerTeilenummer'] = herstellertnr
# Dispolaufgruppe
dispolaufgruppe = self.get_content('dispolaufgruppe_sivas', 'dispolaufgruppe_neu')
trans = {
@@ -1552,11 +1631,14 @@ class GuiLogic():
ret = dict()
pdm_kategorie_neu = self._model.get_gui_data("pdm_kategorie_neu")
# status setzen
if pdm_kategorie_neu == "Kaufteil" or pdm_kategorie_neu == "Schweissbaugruppe":
self.set_state('cb_fertigungsart_neu', 'disabled')
else:
self.set_state('cb_fertigungsart_neu', 'readonly')
# Werte der Combobox setzen
if pdm_kategorie_neu == "Baugruppe":
cblist = self._config.Fertigung.get_list_in_section("FertigungsartenBaugruppe")
ret['cb_fertigungsart_neu'] = cblist
@@ -1567,8 +1649,15 @@ class GuiLogic():
else:
ret['cb_fertigungsart_neu'] = ''
# default setzen
if selected is None:
ret['fertigungsart_neu'] = ''
fertigung_sivas = self._model.get_gui_data("fertigungsart_sivas")
if pdm_kategorie_neu == "Schweissbaugruppe":
if fertigung_sivas == "":
ret['fertigungsart_neu'] = 'SW - schweißen'
elif fertigung_sivas != "schweißen":
ret['fertigungsart_neu'] = 'SW - schweißen'
else:
ret['fertigungsart_neu'] = selected
return ret
@@ -1682,10 +1771,10 @@ class GuiLogic():
fos_gruppe = self._model.get_gui_data("fosGruppe_sivas")
ret['fosGruppe_neu'] = ''
self.set_state('cb_fosGruppe_neu', 'readonly')
self.set_state('cb_fosGruppe_neu', 'disabled')
if pdm_kategorie_neu == "Kaufteil":
cblist = self._config.Allgemein.get_options("FOS_Gruppe")
self.set_state('cb_fosGruppe_neu', 'disabled')
self.set_state('cb_fosGruppe_neu', 'readonly')
elif pdm_kategorie_neu == "Baugruppe" or pdm_kategorie_neu == "Schweissbaugruppe":
cblist = ['1 - Baugruppe']
elif pdm_kategorie_neu == "Einzelteil":
+23 -1
View File
@@ -57,7 +57,7 @@ class TreeView():
# hier Anzahl der sichtbaren Zeilen des Baums angeben:
self.tree = ttk.Treeview(frame, height=65)
# TODO hier anstatt root die Statistik rein schreiben.
self.tree.heading('#0', text='root', anchor=tk.W)
#self.tree.heading('#0', text='root', anchor=tk.W)
self.tree.grid(row=nrow, column=0, sticky=tk.NSEW)
# add a scrollbar
@@ -69,12 +69,33 @@ class TreeView():
self.tree.bind('<Double-Button-1>', self.item_selected) # Doppelklick:
self.trid2sivasId = dict()
def set_heading_text(self, parent_children_mapping, red_ids):
done_items = set()
undone_items = set()
for parent,children in parent_children_mapping.items():
if parent in red_ids:
undone_items.add(parent)
else:
done_items.add(parent)
for c in children:
if c in red_ids:
undone_items.add(c)
else:
done_items.add(c)
num_done = len(done_items)
num_undone = len(undone_items)
percentage = round(num_done / (num_done + num_undone) * 100, 1)
heading = "{percent}% ({done} ✔, {undone} ☐)".format(percent=percentage, done=num_done, undone=num_undone)
self.tree.heading('#0', text=heading, anchor=tk.W)
def set_controller(self, controller):
self._controller = controller
def refresh(self, parent_children_mapping, red_ids, orange_ids):
self.clear()
self.set_heading_text(parent_children_mapping, red_ids)
self.create(parent_children_mapping, red_ids, orange_ids)
def clear(self):
@@ -90,6 +111,7 @@ class TreeView():
def create(self, parent_children_mapping, red_ids, orange_ids):
pool = dict()
self.set_heading_text(parent_children_mapping, red_ids)
for parent, children in parent_children_mapping.items():
# parent erzeugen, falls es diese nicht schon gibt (check der pool ids)
if parent not in pool: