76 lines
2.9 KiB
Python
76 lines
2.9 KiB
Python
# modules/market_page.py
|
|
import flet as ft
|
|
import logging
|
|
from modules import db_manager
|
|
|
|
class MarketPage:
|
|
def __init__(self, page: ft.Page, logger: logging.Logger, db_manager):
|
|
self.page = page
|
|
self.logger = logger
|
|
self.db_manager = db_manager
|
|
self.market_list = []
|
|
self.on_products_fetched_callback = None # 외부에서 설정 (ProductPage 업데이트용)
|
|
self.build_content()
|
|
|
|
def build_content(self):
|
|
self.logger.debug("Building MarketPage content")
|
|
# 버튼들
|
|
self.load_market_btn = ft.ElevatedButton("마켓목록 가져오기", on_click=self.load_market_list)
|
|
self.load_sold_products_btn = ft.ElevatedButton("팔린상품 가져오기", on_click=self.load_sold_products)
|
|
self.add_market_btn = ft.ElevatedButton("마켓추가하기", on_click=self.add_market)
|
|
# 마켓 목록 테이블
|
|
self.market_table = ft.DataTable(
|
|
columns=[
|
|
ft.DataColumn(ft.Text("마켓이름")),
|
|
ft.DataColumn(ft.Text("마켓 URL")),
|
|
ft.DataColumn(ft.Text("메모"))
|
|
],
|
|
rows=[],
|
|
expand=True,
|
|
key="market_table"
|
|
)
|
|
self.content = ft.Column(
|
|
[
|
|
ft.Row([self.load_market_btn, self.load_sold_products_btn, self.add_market_btn]),
|
|
self.market_table
|
|
],
|
|
spacing=10,
|
|
)
|
|
self.load_market_list(None)
|
|
|
|
def load_market_list(self, e):
|
|
self.logger.debug("MarketPage.load_market_list() 호출됨")
|
|
self.market_list = self.db_manager.get_markets()
|
|
rows = []
|
|
for m in self.market_list:
|
|
row = ft.DataRow(cells=[
|
|
ft.DataCell(ft.Text(m.get("name", ""))),
|
|
ft.DataCell(ft.Text(m.get("url", ""))),
|
|
ft.DataCell(ft.Text(m.get("memo", "")))
|
|
])
|
|
rows.append(row)
|
|
self.market_table.rows = rows
|
|
self.page.update()
|
|
|
|
def load_sold_products(self, e):
|
|
self.logger.debug("MarketPage.load_sold_products() 호출됨")
|
|
# DBManager를 이용해 각 마켓의 팔린상품 목록을 가져옴
|
|
sold_products = self.db_manager.get_sold_products(self.market_list)
|
|
self.logger.debug(f"Sold products fetched: {sold_products}")
|
|
if self.on_products_fetched_callback:
|
|
self.on_products_fetched_callback(sold_products)
|
|
else:
|
|
self.logger.debug("on_products_fetched_callback 미설정")
|
|
self.page.update()
|
|
|
|
def add_market(self, e):
|
|
self.logger.debug("MarketPage.add_market() 호출됨")
|
|
# 마켓 추가 기능은 미구현
|
|
snack = ft.SnackBar(ft.Text("마켓 추가 기능은 미구현입니다."))
|
|
snack.open = True
|
|
self.page.open(snack)
|
|
self.page.update()
|
|
|
|
def get_content(self):
|
|
return self.content
|