data_from_view impl. um ein anderes Assembly zu laden. Weiteren Konpf 'lade lokal' gebaut, um Daten auch ohne weitere Serverabfrage zu laden welche lokal existieren.

This commit is contained in:
2024-02-21 14:46:53 +01:00
parent 5e65dc2b36
commit fc1b1bc946
4 changed files with 60 additions and 22 deletions
+5 -2
View File
@@ -367,7 +367,8 @@ class CadItem(DataModel):
def save_to_file(self):
"""speichert die bisherigen Eingaben beider Spalten in eine json Datei"""
path = os.path.join(self._controller.get_env("out"), str(self.get_current_item_id()) + '.json')
if self.get_current_item_id == self.get_asm_id:
if str(self.get_current_item_id()) == str(self.get_asm_id()):
savePath = True
else:
savePath = False
@@ -513,7 +514,7 @@ class GuiLogic():
"""
ret = list()
if key == 'cb_pdm_kategorie_neu':
ret = ['cb_neuaufbau', 'cb_aus_halbzeug_neu', 'cb_3Dmodel_neu', 'cb_halbzeugOhneSaege_neu']
ret = ['cb_neuaufbau', 'cb_aus_halbzeug_neu', 'cb_3Dmodel_neu', 'cb_halbzeugOhneSaege_neu', 'cb_ruestcode_neu']
elif key == 'cb_neuaufbau':
ret = []
elif key == 'cb_aus_halbzeug_neu':
@@ -569,6 +570,8 @@ class GuiLogic():
ret = []
elif key == 'cb_suche_asm':
ret = []
elif key == 'cb_ladelokal_asm':
ret = []
elif key == 'cb_3dsuchen':
ret = []
else:
+22 -9
View File
@@ -83,7 +83,8 @@ class Controller(Observer):
def get_csv_files_of_asm(self, asmid, uselocal):
""" sich die Einzelteile als .csv und den Aufbau des Assemblies als .json holen """
sivas_teilestamm = FetchSivasTeilestamm(asmid, self.get_env("data"))
data_dir = self.get_env("data")
sivas_teilestamm = FetchSivasTeilestamm(asmid, data_dir)
# falls uselocal True, dann keine Serverabfrage, sondern mit den lokalen Daten arbeiten
sivas_teilestamm.fetch_from_db(uselocal)
@@ -91,7 +92,7 @@ class Controller(Observer):
sivas_teilestamm.get_unmigrated_teilstamm_csvs()
redids = sivas_teilestamm.get_red_ids()
sad = SivasAssemblyData(self.get_env("data"), asmid + '.json')
sad = SivasAssemblyData(data_dir, asmid + '.json')
parent_children = sad.get_parent_children()
self._model.set_red_ids(redids)
@@ -109,12 +110,19 @@ class Controller(Observer):
self._view.data_from_model()
def data_from_model(self):
self._view.data_from_model()
def data_from_view(self, key):
return self._view.data_from_view(key)
def get_current_asm_id(self):
self._model.get_asm_id()
def set_current_asm_id(self, asm_id):
def set_current_asm_id(self, asm_id, loadlocal=False):
if not asm_id.isnumeric():
return
# TODO save current given data. In case, ask whether you should save or drop
self._model.set_asm_id(asm_id)
# hole alle Daten vom Server
self.get_csv_files_of_asm(asm_id, loadlocal)
#self._load_cid_data2model(asm_id)
def set_current_item_id(self, cid):
"""setze eine neue Item ID """
@@ -122,9 +130,9 @@ class Controller(Observer):
if not cid.isnumeric():
return
# nur die red-id Daten können geladen werden.
red_ids = self._model.get_red_ids()
if not cid in red_ids:
return
# red_ids = self._model.get_red_ids()
# if not cid in red_ids:
# return
# TODO save current given data. In case, ask whether you should save or drop
self._model.set_current_item_id(cid)
@@ -206,8 +214,13 @@ class Controller(Observer):
elif key == 'cb_zurücksetzen':
pass
elif key == 'cb_suche_asm':
#self._model.save_to_file()
pass
# hole dir den in die gui eingetragene Nummer
current_asmid = self.data_from_view('asm_id')
self.set_current_asm_id(current_asmid)
elif key == 'cb_ladelokal_asm':
current_asmid = self.data_from_view('asm_id')
# hole dir nur die lokalen Daten. Keine Datenbankabfrage
self.set_current_asm_id(current_asmid, True)
elif key == 'cb_3dsuchen':
self.suche_3d()
+31 -10
View File
@@ -40,15 +40,6 @@ class AllFrames():
if controller:
controller.callback(key, value)
def data_to_model(self, controller):
"""schreibt die Daten in das Modell"""
data = self.get_data()
controller.set_gui_dict(data)
def data_to_model(self, controller, key, value):
"""schreibt den Value unter dem key in das Modell"""
controller.set_gui_data(key, value)
class TreeView():
def __init__(self, frame, nrow=0):
# a treeview
@@ -146,7 +137,16 @@ class LeftFrameAsm(AllFrames):
compound = tk.LEFT,
command=lambda: self.callback("cb_suche_asm", self.asm_number.get())
)
asm_search_button.grid(column=col_left, row=self.rownum, sticky=tk.W, padx=3, pady=3)
asm_search_button.grid(column=col_left, row=self.rownum, sticky=tk.EW, padx=3, pady=3)
self.rownum += 1
asm_loadlocal_button = ttk.Button(
frame,
text="Lade lokal",
#image=photoimage,
compound = tk.LEFT,
command=lambda: self.callback("cb_ladelokal_asm", self.asm_number.get())
)
asm_loadlocal_button.grid(column=col_left, row=self.rownum, sticky=tk.EW, padx=3, pady=3)
self.rownum += 1
def get_data(self):
@@ -1270,6 +1270,27 @@ class App():
self.rf8.data_from_model()
self.rf9.data_from_model()
def data_from_view(self, key=None):
ret = dict()
ret.update(self.lf1.get_data())
#self.lf2.get_data() tree hat kein get_data
ret.update(self.rf1.get_data())
ret.update(self.rf2.get_data())
ret.update(self.rf3.get_data())
ret.update(self.rf4.get_data())
ret.update(self.rf5.get_data())
ret.update(self.rf6.get_data())
ret.update(self.rf7.get_data())
ret.update(self.rf8.get_data())
ret.update(self.rf9.get_data())
if key:
return ret[key]
else:
return ret
def set_controller(self, controller):
""" merken des Handels auf den Controller in jedem Widget"""
self._controller = controller