diff --git a/main.py b/main.py index fe01d58..3071466 100644 --- a/main.py +++ b/main.py @@ -379,7 +379,7 @@ def dashboard_frame(self): -# Dashboard untuk semua kecuali adminnn +# Bagian Search dan Filter def build_menu_view_tab(self, parent): @@ -407,3 +407,59 @@ def build_menu_view_tab(self, parent): self.view_tree.pack(fill='both', expand=True) self.view_tree.bind("<>", self.on_view_select) + + + + + +# Preview Image + + + ttk.Label(right, text="Preview Item", font=("Arial", 12, "bold")).pack(pady=6) + self.preview_label = ttk.Label(right, text="Pilih menu di kiri") + self.preview_label.pack() + self.preview_img_label = ttk.Label(right) + self.preview_img_label.pack(pady=6) + self.preview_detail = tk.Text(right, width=45, height=12) + self.preview_detail.pack() + + self.reload_view_table() + +def reload_view_table(self, available_only=False): + s = self.view_search_var.get().strip() if hasattr(self, 'view_search_var') else "" + results = menu_list(search_text=s or None, available_only=available_only) + for r in self.view_tree.get_children(): + self.view_tree.delete(r) + for row in results: + mid,nama,kategori,harga,stok,foto,tersedia,item_disc = row + self.view_tree.insert("", tk.END, values=(mid,nama,kategori,harga,stok, "Yes" if tersedia else "No", item_disc)) + +def reset_view_filters(self): + self.view_search_var.set("") + self.reload_view_table() + +def on_view_select(self, event): + sel = self.view_tree.selection() + if not sel: + return + item = self.view_tree.item(sel)['values'] + menu_id = item[0] + data = menu_get(menu_id) + if not data: + return + mid,nama,kategori,harga,stok,foto,tersedia,item_disc = data + self.preview_detail.delete('1.0', tk.END) + txt = f"ID: {mid}\nNama: {nama}\nKategori: {kategori}\nHarga: {harga}\nStok: {stok}\nTersedia: {'Yes' if tersedia else 'No'}\nItem Discount: {item_disc}%\nFoto path: {foto}\n" + self.preview_detail.insert(tk.END, txt) + if foto and os.path.exists(foto): + try: + img = Image.open(foto) + img.thumbnail(IMG_PREVIEW_SIZE) + tkimg = ImageTk.PhotoImage(img) + self.img_cache['preview'] = tkimg + self.preview_img_label.config(image=tkimg) + except Exception as e: + self.preview_img_label.config(image='') + else: + self.preview_img_label.config(image='') +