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
+2 -1
View File
@@ -77,9 +77,10 @@ Eigenbau
Kaufteil Kaufteil
[Ruestcode] [Ruestcode]
Trümmerbaugruppe
HZS Halbzeuge Sägeteile HZS Halbzeuge Sägeteile
SRC Standard Rüstcode SRC Standard Rüstcode
Trümmerbaugruppe
[RuestcodeStandard] [RuestcodeStandard]
HZS Halbzeuge Sägeteile HZS Halbzeuge Sägeteile
+5 -2
View File
@@ -367,7 +367,8 @@ class CadItem(DataModel):
def save_to_file(self): def save_to_file(self):
"""speichert die bisherigen Eingaben beider Spalten in eine json Datei""" """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') 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 savePath = True
else: else:
savePath = False savePath = False
@@ -513,7 +514,7 @@ class GuiLogic():
""" """
ret = list() ret = list()
if key == 'cb_pdm_kategorie_neu': 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': elif key == 'cb_neuaufbau':
ret = [] ret = []
elif key == 'cb_aus_halbzeug_neu': elif key == 'cb_aus_halbzeug_neu':
@@ -569,6 +570,8 @@ class GuiLogic():
ret = [] ret = []
elif key == 'cb_suche_asm': elif key == 'cb_suche_asm':
ret = [] ret = []
elif key == 'cb_ladelokal_asm':
ret = []
elif key == 'cb_3dsuchen': elif key == 'cb_3dsuchen':
ret = [] ret = []
else: else:
+22 -9
View File
@@ -83,7 +83,8 @@ class Controller(Observer):
def get_csv_files_of_asm(self, asmid, uselocal): def get_csv_files_of_asm(self, asmid, uselocal):
""" sich die Einzelteile als .csv und den Aufbau des Assemblies als .json holen """ """ 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 # falls uselocal True, dann keine Serverabfrage, sondern mit den lokalen Daten arbeiten
sivas_teilestamm.fetch_from_db(uselocal) sivas_teilestamm.fetch_from_db(uselocal)
@@ -91,7 +92,7 @@ class Controller(Observer):
sivas_teilestamm.get_unmigrated_teilstamm_csvs() sivas_teilestamm.get_unmigrated_teilstamm_csvs()
redids = sivas_teilestamm.get_red_ids() 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() parent_children = sad.get_parent_children()
self._model.set_red_ids(redids) self._model.set_red_ids(redids)
@@ -109,12 +110,19 @@ class Controller(Observer):
self._view.data_from_model() self._view.data_from_model()
def data_from_model(self): def data_from_model(self):
self._view.data_from_model() self._view.data_from_model()
def data_from_view(self, key):
return self._view.data_from_view(key)
def get_current_asm_id(self): def get_current_asm_id(self):
self._model.get_asm_id() 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) 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): def set_current_item_id(self, cid):
"""setze eine neue Item ID """ """setze eine neue Item ID """
@@ -122,9 +130,9 @@ class Controller(Observer):
if not cid.isnumeric(): if not cid.isnumeric():
return return
# nur die red-id Daten können geladen werden. # nur die red-id Daten können geladen werden.
red_ids = self._model.get_red_ids() # red_ids = self._model.get_red_ids()
if not cid in red_ids: # if not cid in red_ids:
return # return
# TODO save current given data. In case, ask whether you should save or drop # TODO save current given data. In case, ask whether you should save or drop
self._model.set_current_item_id(cid) self._model.set_current_item_id(cid)
@@ -206,8 +214,13 @@ class Controller(Observer):
elif key == 'cb_zurücksetzen': elif key == 'cb_zurücksetzen':
pass pass
elif key == 'cb_suche_asm': elif key == 'cb_suche_asm':
#self._model.save_to_file() # hole dir den in die gui eingetragene Nummer
pass 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': elif key == 'cb_3dsuchen':
self.suche_3d() self.suche_3d()
+31 -10
View File
@@ -40,15 +40,6 @@ class AllFrames():
if controller: if controller:
controller.callback(key, value) 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(): class TreeView():
def __init__(self, frame, nrow=0): def __init__(self, frame, nrow=0):
# a treeview # a treeview
@@ -146,7 +137,16 @@ class LeftFrameAsm(AllFrames):
compound = tk.LEFT, compound = tk.LEFT,
command=lambda: self.callback("cb_suche_asm", self.asm_number.get()) 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 self.rownum += 1
def get_data(self): def get_data(self):
@@ -1270,6 +1270,27 @@ class App():
self.rf8.data_from_model() self.rf8.data_from_model()
self.rf9.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): def set_controller(self, controller):
""" merken des Handels auf den Controller in jedem Widget""" """ merken des Handels auf den Controller in jedem Widget"""
self._controller = controller self._controller = controller