78 lines
3.3 KiB
Python
78 lines
3.3 KiB
Python
import flet as ft
|
|
import logging
|
|
|
|
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.logger.debug("MarketPage initialized")
|
|
self.build_content()
|
|
|
|
def build_content(self):
|
|
self.logger.debug("Building MarketPage content")
|
|
self.header = ft.Text("마켓 페이지", style=ft.TextStyle(size=24, weight="bold"), color="black")
|
|
|
|
# 버튼들: 마켓목록 가져오기, 팔린상품 가져오기, 마켓추가하기
|
|
self.load_market_btn = ft.ElevatedButton("마켓목록 가져오기", on_click=self.load_market_list)
|
|
self.sold_products_btn = ft.ElevatedButton("팔린상품 가져오기", on_click=self.load_sold_products)
|
|
self.add_market_btn = ft.ElevatedButton("마켓추가하기", on_click=self.add_market)
|
|
|
|
# 마켓 목록 테이블: 각 행에 마켓이름, 마켓 URL, 메모 정보를 표시
|
|
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.sold_products_btn, self.add_market_btn], spacing=10),
|
|
self.market_table
|
|
],
|
|
spacing=10,
|
|
)
|
|
# self.load_market_list(None) # 초기 로드
|
|
|
|
def load_market_list(self, e):
|
|
self.logger.debug("MarketPage.load_market_list() 호출됨")
|
|
# DBManager의 get_markets() 메서드를 호출하여 마켓 목록을 가져옵니다.
|
|
markets = self.db_manager.get_markets()
|
|
self.logger.debug(f"Retrieved markets: {markets}")
|
|
rows = []
|
|
for m in markets:
|
|
row = ft.DataRow(cells=[
|
|
ft.DataCell(ft.Text(m.get("market_name", ""))),
|
|
ft.DataCell(ft.Text(m.get("market_url", ""))),
|
|
ft.DataCell(ft.Text(m.get("market_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.db_manager.get_markets())
|
|
self.logger.debug(f"Sold products fetched: {sold_products}")
|
|
# 예를 들어, 상품 페이지에 전달하는 콜백을 호출할 수 있습니다.
|
|
if hasattr(self, "on_products_fetched_callback") and self.on_products_fetched_callback:
|
|
self.on_products_fetched_callback(sold_products)
|
|
self.page.update()
|
|
|
|
def add_market(self, e):
|
|
self.logger.debug("MarketPage.add_market() 호출됨")
|
|
# 마켓 추가 기능은 아직 미구현이므로 SnackBar 메시지 표시
|
|
snack = ft.SnackBar(ft.Text("마켓 추가 기능은 미구현입니다."))
|
|
snack.open = True
|
|
self.page.open(snack)
|
|
self.page.update()
|
|
|
|
def get_content(self):
|
|
return self.content
|