Skip to content
Snippets Groups Projects

Refactor Cart into checkerboard table

Merged Mateusz Kudela requested to merge mkudela/issue-173 into develop
Compare and Show latest version
2 files
+ 7
11
Compare changes
  • Side-by-side
  • Inline
Files
2
@@ -10,7 +10,6 @@ from textual.reactive import reactive
from textual.widgets import Static
from clive.__private.core.formatters.humanize import humanize_operation_details, humanize_operation_name
from clive.__private.logger import logger
from clive.__private.ui.get_css import get_relative_css_path
from clive.__private.ui.shared.base_screen import BaseScreen
from clive.__private.ui.transaction_summary import TransactionSummaryFromCart
@@ -112,7 +111,6 @@ class CartItem(CliveCheckerboardTableRow, CliveWidget, can_focus=True):
self.query_one(".index").update_content(self.get_operation_index()) # type: ignore[attr-defined]
def is_valid(self, idx: int) -> bool:
logger.debug(f"GOT IDX: {idx}, OP COUNT: {self.__operations_count}")
return idx < self.__operations_count
def get_operation_index(self) -> str:
@@ -170,13 +168,11 @@ class CartItem(CliveCheckerboardTableRow, CliveWidget, can_focus=True):
@on(CliveButton.Pressed, "#delete-button")
def delete(self) -> None:
logger.debug(f"READY FOR DELETE? :{self.app.query_one(Cart).ready_to_delete_item}")
cart = self.app.query_one(Cart)
if self.app.query_one(Cart).ready_to_delete_item:
if cart.ready_to_delete_item:
cart.toggle_removal_in_progress()
self.post_message(self.Delete(self))
logger.debug("DELETE MESSAGE POSTED")
else:
logger.debug("DELETE MESSAGE NOT POSTED")
@on(Move)
def move_item(self, event: CartItem.Move) -> None:
@@ -229,6 +225,9 @@ class Cart(BaseScreen):
def ready_to_delete_item(self) -> bool:
return not self._removal_in_progress
def toggle_removal_in_progress(self) -> None:
self._removal_in_progress = not self._removal_in_progress
def create_main_panel(self) -> ComposeResult:
with self.__scrollable_part:
yield self._cart_table
@@ -264,13 +263,10 @@ class Cart(BaseScreen):
@on(CartItem.Delete)
async def remove_item(self, event: CartItem.Delete) -> None:
self._removal_in_progress = True
logger.debug(f"(DELETE STARTED), LEN OF ROWS: {len(self.query(CliveCheckerboardTableRow))}, IDX TO REMOVE: {event.widget.reactive_idx}")
await self.query(CliveCheckerboardTableRow)[event.widget.reactive_idx].remove()
self.profile_data.cart.remove(event.widget.operation)
self._handle_remove_event(triggering_widget=event.widget)
self.app.trigger_profile_data_watchers()
logger.debug("DELETE FINISHED")
self._removal_in_progress = False
if len(self.app.world.profile_data.cart) > 0 and event.widget.reactive_idx == 0:
Loading