fix remove round used in sector
This commit is contained in:
parent
6cd3a060c7
commit
701f6b3292
7 changed files with 15 additions and 9 deletions
|
|
@ -62,7 +62,7 @@ class CampaignParticipantDTO:
|
||||||
class SectorDTO:
|
class SectorDTO:
|
||||||
id: str
|
id: str
|
||||||
name: str
|
name: str
|
||||||
round_index: int
|
round_index: int | None
|
||||||
major: str
|
major: str
|
||||||
minor: str
|
minor: str
|
||||||
influence: str
|
influence: str
|
||||||
|
|
@ -71,7 +71,7 @@ class SectorDTO:
|
||||||
@dataclass
|
@dataclass
|
||||||
class RoundDTO:
|
class RoundDTO:
|
||||||
id: str
|
id: str
|
||||||
index: int
|
index: int | None
|
||||||
|
|
||||||
|
|
||||||
@dataclass(frozen=True, slots=True)
|
@dataclass(frozen=True, slots=True)
|
||||||
|
|
|
||||||
|
|
@ -269,10 +269,13 @@ class Campaign:
|
||||||
|
|
||||||
def remove_round(self, round_id: str) -> None:
|
def remove_round(self, round_id: str) -> None:
|
||||||
rnd = next((r for r in self.rounds if r.id == round_id), None)
|
rnd = next((r for r in self.rounds if r.id == round_id), None)
|
||||||
|
for sect in self.sectors.values():
|
||||||
|
if sect.round_id == round_id:
|
||||||
|
sect.round_id = None
|
||||||
if rnd:
|
if rnd:
|
||||||
self.rounds.remove(rnd)
|
self.rounds.remove(rnd)
|
||||||
|
|
||||||
def get_round_index(self, round_id: str) -> int:
|
def get_round_index(self, round_id: str | None) -> int | None:
|
||||||
if round_id is None:
|
if round_id is None:
|
||||||
return None
|
return None
|
||||||
for index, rnd in enumerate(self.rounds, start=1):
|
for index, rnd in enumerate(self.rounds, start=1):
|
||||||
|
|
|
||||||
|
|
@ -380,7 +380,9 @@ class Model:
|
||||||
return rnd
|
return rnd
|
||||||
raise KeyError("Round not found")
|
raise KeyError("Round not found")
|
||||||
|
|
||||||
def get_round_index(self, round_id: str) -> int:
|
def get_round_index(self, round_id: str | None) -> int | None:
|
||||||
|
if round_id is None:
|
||||||
|
return None
|
||||||
camp = self.get_campaign_by_round(round_id)
|
camp = self.get_campaign_by_round(round_id)
|
||||||
return camp.get_round_index(round_id)
|
return camp.get_round_index(round_id)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,14 +7,14 @@ class Sector:
|
||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
name: str,
|
name: str,
|
||||||
round_id: str,
|
round_id: str | None,
|
||||||
major_id: str | None,
|
major_id: str | None,
|
||||||
minor_id: str | None,
|
minor_id: str | None,
|
||||||
influence_id: str | None,
|
influence_id: str | None,
|
||||||
):
|
):
|
||||||
self.id: str = str(uuid4())
|
self.id: str = str(uuid4())
|
||||||
self.name: str = name
|
self.name: str = name
|
||||||
self.round_id: str = round_id
|
self.round_id: str | None = round_id
|
||||||
self.major_objective_id: str | None = major_id # ref to War.objectives
|
self.major_objective_id: str | None = major_id # ref to War.objectives
|
||||||
self.minor_objective_id: str | None = minor_id # ref to War.objectives
|
self.minor_objective_id: str | None = minor_id # ref to War.objectives
|
||||||
self.influence_objective_id: str | None = influence_id # ref to War.objectives
|
self.influence_objective_id: str | None = influence_id # ref to War.objectives
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@ def format_campaign_label(camp: CampaignDTO) -> str:
|
||||||
return f"{camp.name} ({calendar.month_name[camp.month]})"
|
return f"{camp.name} ({calendar.month_name[camp.month]})"
|
||||||
|
|
||||||
|
|
||||||
def format_round_label(index: int) -> str:
|
def format_round_label(index: int | None) -> str:
|
||||||
if index is None:
|
if index is None:
|
||||||
return ""
|
return ""
|
||||||
return f"Round {index}"
|
return f"Round {index}"
|
||||||
|
|
|
||||||
|
|
@ -23,10 +23,11 @@ class SectorDialog(QDialog):
|
||||||
super().__init__(parent)
|
super().__init__(parent)
|
||||||
self.ui: Ui_sectorDialog = Ui_sectorDialog()
|
self.ui: Ui_sectorDialog = Ui_sectorDialog()
|
||||||
self.ui.setupUi(self) # type: ignore
|
self.ui.setupUi(self) # type: ignore
|
||||||
|
self.ui.sectorName.setText(default_name)
|
||||||
self.ui.majorComboBox.addItem("(none)", None)
|
self.ui.majorComboBox.addItem("(none)", None)
|
||||||
self.ui.minorComboBox.addItem("(none)", None)
|
self.ui.minorComboBox.addItem("(none)", None)
|
||||||
self.ui.influenceComboBox.addItem("(none)", None)
|
self.ui.influenceComboBox.addItem("(none)", None)
|
||||||
self.ui.sectorName.setText(default_name)
|
self.ui.roundComboBox.addItem("(none)", None)
|
||||||
for index, rnd in enumerate(rounds, start=1):
|
for index, rnd in enumerate(rounds, start=1):
|
||||||
self.ui.roundComboBox.addItem(format_round_label(index), rnd.id)
|
self.ui.roundComboBox.addItem(format_round_label(index), rnd.id)
|
||||||
select_if_exists(self.ui.roundComboBox, default_round_id)
|
select_if_exists(self.ui.roundComboBox, default_round_id)
|
||||||
|
|
|
||||||
|
|
@ -448,7 +448,7 @@ class View(QtWidgets.QMainWindow, Ui_MainWindow):
|
||||||
if action == edit_action and self.on_edit_item:
|
if action == edit_action and self.on_edit_item:
|
||||||
self.on_edit_item(ItemType.BATTLE, battle_id)
|
self.on_edit_item(ItemType.BATTLE, battle_id)
|
||||||
|
|
||||||
def show_round_details(self, *, index: int) -> None:
|
def show_round_details(self, *, index: int | None) -> None:
|
||||||
self.roundNb.setText(f"Round {index}")
|
self.roundNb.setText(f"Round {index}")
|
||||||
|
|
||||||
def display_round_choices(self, participants: List[ChoiceDTO]) -> None:
|
def display_round_choices(self, participants: List[ChoiceDTO]) -> None:
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue