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
+106 -17
View File
@@ -398,8 +398,6 @@ class CadItem(DataModel):
else: else:
translated_data["tosgruppe_neu"] = default translated_data["tosgruppe_neu"] = default
# Spezial Freigabevermerk # Spezial Freigabevermerk
if "freigabevermerk_sivas" in translated_data: if "freigabevermerk_sivas" in translated_data:
text = translated_data["freigabevermerk_sivas"] text = translated_data["freigabevermerk_sivas"]
@@ -409,8 +407,8 @@ class CadItem(DataModel):
# Spezial Hersteller: aus "80312 - Rehau AG & Co." wird "Rehau AG & Co." # Spezial Hersteller: aus "80312 - Rehau AG & Co." wird "Rehau AG & Co."
if "hersteller_sivas" in translated_data: if "hersteller_sivas" in translated_data:
text = translated_data["hersteller_sivas"] text = translated_data["hersteller_sivas"]
if re.search(r"^.*-\s+", text): if re.search(r"^\d+\s+-\s+", text):
translated_data["hersteller_neu"] = re.sub(r"^.*-\s+", "", text, flags=re.I) translated_data["hersteller_sivas"] = re.sub(r"^\d+\s+-\s+", "", text, flags=re.I)
# Spezial Änderungsindex # Spezial Änderungsindex
if "aenderungsindex_sivas" not in translated_data: if "aenderungsindex_sivas" not in translated_data:
@@ -573,7 +571,8 @@ class CadItem(DataModel):
def check_pflichtfelder(self): def check_pflichtfelder(self):
"""Allgemeine Prüfungen: """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() missing = list()
@@ -607,9 +606,10 @@ class CadItem(DataModel):
if pdm_kategorie_neu == "Einzelteil" or pdm_kategorie_neu == "Schweissbaugruppe": if pdm_kategorie_neu == "Einzelteil" or pdm_kategorie_neu == "Schweissbaugruppe":
self.check_key_both_columns("fertigungsart_sivas", "fertigungsart_neu", missing) self.check_key_both_columns("fertigungsart_sivas", "fertigungsart_neu", missing)
# Allgemeintoleranz # Allgemeintoleranz
if pdm_kategorie_neu == "Einzelteil" or pdm_kategorie_neu == "Schweissbaugruppe":
self.check_key_both_columns("allgemeintoleranz_sivas", "allgemeintoleranz_neu", missing) self.check_key_both_columns("allgemeintoleranz_sivas", "allgemeintoleranz_neu", missing)
# FOS-Gruppe # FOS-Gruppe
self.check_key_both_columns("fosGruppe_sivas", "fosGruppe_neu", missing) self.check_key_both_columns("fosGruppe_sivas", "fosGruppe_neu", missing)
# Kalkulationsart # Kalkulationsart
@@ -629,7 +629,7 @@ class CadItem(DataModel):
# Werkstofftyp # Werkstofftyp
aus_halbzeug = self.get_gui_data("aus_halbzeug_neu") 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) self.check_key_existence("werkstofftyp_neu", missing)
# Änderungstext # Änderungstext
@@ -647,6 +647,8 @@ class CadItem(DataModel):
""" überprüft ob inder Oberfläche nicht erlaubte Zeichen eingetragen wurden""" """ überprüft ob inder Oberfläche nicht erlaubte Zeichen eingetragen wurden"""
wrongchars = dict() wrongchars = dict()
for key in self.key2label: for key in self.key2label:
if key == "model3d_neu": # 3D Teil Pfad ausnehmen
continue
content = self.get_gui_data(key) content = self.get_gui_data(key)
for c in invalid_chars: for c in invalid_chars:
if c in content: if c in content:
@@ -763,7 +765,7 @@ class CadItem(DataModel):
return False return False
# TOS-Gruppe # 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() (num2refId, num2child) = self._controller.get_config().TOSGruppen.get_Id2TosGroup()
# TODO wirklich als refernce-id oder als Gruppe? # TODO wirklich als refernce-id oder als Gruppe?
if tosgruppe not in num2child.keys(): if tosgruppe not in num2child.keys():
@@ -912,6 +914,12 @@ class CadItem(DataModel):
"Subject": "-", "Subject": "-",
"Category": "-", "Category": "-",
"Keywords": "-", "Keywords": "-",
"Aus Halbzeug": "",
"HalbzeugIntern":"",
"Kopiertes_Teil_1_y_Skalierung": "",
"Oberflaechenbehandlung":"",
"Farbe": "",
} }
all_data = self.get_all_gui_data() all_data = self.get_all_gui_data()
# data_keys = [ "Author", "Teilenummer", "StartRevision", # data_keys = [ "Author", "Teilenummer", "StartRevision",
@@ -926,17 +934,81 @@ class CadItem(DataModel):
# "Tolerierungsnorm","Änderungsbeschreibung", # "Tolerierungsnorm","Änderungsbeschreibung",
# "Freigabevermerk", "ZusaetzlicheInformationen"] # "Freigabevermerk", "ZusaetzlicheInformationen"]
# Path # 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") teilenummer = self.get_gui_data("teilenummer")
data["Teilenummer"] = teilenummer data["Teilenummer"] = teilenummer
# Bezeichnung um "- BG" ergänzen
pdm_kategorie_neu = self.get_gui_data("pdm_kategorie_neu") pdm_kategorie_neu = self.get_gui_data("pdm_kategorie_neu")
bezeichnung1 = self.get_content('bezeichnung1_sivas', 'bezeichnung1_neu') bezeichnung1 = self.get_content('bezeichnung1_sivas', 'bezeichnung1_neu')
title = bezeichnung1 title = bezeichnung1
data["KategorieNE"] = title
# Bezeichnung um "- BG" ergänzen
if pdm_kategorie_neu == "Baugruppe" or pdm_kategorie_neu == "Schweissbaugruppe": if pdm_kategorie_neu == "Baugruppe" or pdm_kategorie_neu == "Schweissbaugruppe":
title = bezeichnung1 + " - BG" title = bezeichnung1 + " - BG"
data["Title"] = title 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 # Bezeichnung 4
bezeichnung4 = "" bezeichnung4 = ""
if pdm_kategorie_neu == "Baugruppe" or pdm_kategorie_neu == "Schweissbaugruppe": if pdm_kategorie_neu == "Baugruppe" or pdm_kategorie_neu == "Schweissbaugruppe":
@@ -951,12 +1023,6 @@ class CadItem(DataModel):
startrevision = self.get_content('aenderungsindex_sivas', 'aenderungsindex_neu') startrevision = self.get_content('aenderungsindex_sivas', 'aenderungsindex_neu')
data["StartRevision"] = startrevision 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
fertigungsart = self.get_content('fertigungsart_sivas', 'fertigungsart_neu') fertigungsart = self.get_content('fertigungsart_sivas', 'fertigungsart_neu')
@@ -976,7 +1042,10 @@ class CadItem(DataModel):
"ST - stanzen":"stanzen", "ST - stanzen":"stanzen",
"SW - schweißen":"schweißen", "SW - schweißen":"schweißen",
} }
if fertigungsart is not None:
data["Fertigungsart"] = trans[fertigungsart] data["Fertigungsart"] = trans[fertigungsart]
else:
data["Fertigungsart"] = ""
# FOS Gruppe # FOS Gruppe
fos_gruppe = self.get_content('fosGruppe_sivas', 'fosGruppe_neu') fos_gruppe = self.get_content('fosGruppe_sivas', 'fosGruppe_neu')
@@ -1038,6 +1107,16 @@ class CadItem(DataModel):
data["Dispogruppe"] = trans[dispogruppe] 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
dispolaufgruppe = self.get_content('dispolaufgruppe_sivas', 'dispolaufgruppe_neu') dispolaufgruppe = self.get_content('dispolaufgruppe_sivas', 'dispolaufgruppe_neu')
trans = { trans = {
@@ -1552,11 +1631,14 @@ class GuiLogic():
ret = dict() ret = dict()
pdm_kategorie_neu = self._model.get_gui_data("pdm_kategorie_neu") pdm_kategorie_neu = self._model.get_gui_data("pdm_kategorie_neu")
# status setzen
if pdm_kategorie_neu == "Kaufteil" or pdm_kategorie_neu == "Schweissbaugruppe": if pdm_kategorie_neu == "Kaufteil" or pdm_kategorie_neu == "Schweissbaugruppe":
self.set_state('cb_fertigungsart_neu', 'disabled') self.set_state('cb_fertigungsart_neu', 'disabled')
else: else:
self.set_state('cb_fertigungsart_neu', 'readonly') self.set_state('cb_fertigungsart_neu', 'readonly')
# Werte der Combobox setzen
if pdm_kategorie_neu == "Baugruppe": if pdm_kategorie_neu == "Baugruppe":
cblist = self._config.Fertigung.get_list_in_section("FertigungsartenBaugruppe") cblist = self._config.Fertigung.get_list_in_section("FertigungsartenBaugruppe")
ret['cb_fertigungsart_neu'] = cblist ret['cb_fertigungsart_neu'] = cblist
@@ -1567,8 +1649,15 @@ class GuiLogic():
else: else:
ret['cb_fertigungsart_neu'] = '' ret['cb_fertigungsart_neu'] = ''
# default setzen
if selected is None: if selected is None:
ret['fertigungsart_neu'] = '' 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: else:
ret['fertigungsart_neu'] = selected ret['fertigungsart_neu'] = selected
return ret return ret
@@ -1682,10 +1771,10 @@ class GuiLogic():
fos_gruppe = self._model.get_gui_data("fosGruppe_sivas") fos_gruppe = self._model.get_gui_data("fosGruppe_sivas")
ret['fosGruppe_neu'] = '' ret['fosGruppe_neu'] = ''
self.set_state('cb_fosGruppe_neu', 'readonly') self.set_state('cb_fosGruppe_neu', 'disabled')
if pdm_kategorie_neu == "Kaufteil": if pdm_kategorie_neu == "Kaufteil":
cblist = self._config.Allgemein.get_options("FOS_Gruppe") 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": elif pdm_kategorie_neu == "Baugruppe" or pdm_kategorie_neu == "Schweissbaugruppe":
cblist = ['1 - Baugruppe'] cblist = ['1 - Baugruppe']
elif pdm_kategorie_neu == "Einzelteil": elif pdm_kategorie_neu == "Einzelteil":
+23 -1
View File
@@ -57,7 +57,7 @@ class TreeView():
# hier Anzahl der sichtbaren Zeilen des Baums angeben: # hier Anzahl der sichtbaren Zeilen des Baums angeben:
self.tree = ttk.Treeview(frame, height=65) self.tree = ttk.Treeview(frame, height=65)
# TODO hier anstatt root die Statistik rein schreiben. # 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) self.tree.grid(row=nrow, column=0, sticky=tk.NSEW)
# add a scrollbar # add a scrollbar
@@ -70,11 +70,32 @@ class TreeView():
self.trid2sivasId = dict() 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): def set_controller(self, controller):
self._controller = controller self._controller = controller
def refresh(self, parent_children_mapping, red_ids, orange_ids): def refresh(self, parent_children_mapping, red_ids, orange_ids):
self.clear() self.clear()
self.set_heading_text(parent_children_mapping, red_ids)
self.create(parent_children_mapping, red_ids, orange_ids) self.create(parent_children_mapping, red_ids, orange_ids)
def clear(self): def clear(self):
@@ -90,6 +111,7 @@ class TreeView():
def create(self, parent_children_mapping, red_ids, orange_ids): def create(self, parent_children_mapping, red_ids, orange_ids):
pool = dict() pool = dict()
self.set_heading_text(parent_children_mapping, red_ids)
for parent, children in parent_children_mapping.items(): for parent, children in parent_children_mapping.items():
# parent erzeugen, falls es diese nicht schon gibt (check der pool ids) # parent erzeugen, falls es diese nicht schon gibt (check der pool ids)
if parent not in pool: if parent not in pool: