Skip to content

Commit

Permalink
wip: table rendering
Browse files Browse the repository at this point in the history
  • Loading branch information
kostmo committed Sep 7, 2024
1 parent ad352a5 commit 5435ef4
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 34 deletions.
53 changes: 29 additions & 24 deletions src/swarm-tui/Swarm/TUI/Model/Dialog/Robot.hs
Original file line number Diff line number Diff line change
Expand Up @@ -56,8 +56,8 @@ data RobotRenderingContext = RobotRenderingContext

makeLenses ''RobotRenderingContext

emptyRobotDisplay :: RobotDisplay
emptyRobotDisplay =
emptyRobotDisplay :: Set DebugOption -> RobotDisplay
emptyRobotDisplay uiDbg =
RobotDisplay
{ _robotsDisplayMode = RobotList
, _lastFocusedRobotId = Nothing
Expand All @@ -66,29 +66,32 @@ emptyRobotDisplay =
MixedRenderers
{ cell = dc
, rowHdr = Just rowHdr
, colHdr = Just colHdr
, colHdr = Just $ colHdr uiDbg
, colHdrRowHdr = Just $ ColHdrRowHdr $ \_ _ -> vLimit 1 (fill ' ') <=> hBorder
}
}

renderTheRobots :: RobotDisplay -> Widget Name
renderTheRobots rd = renderMixedTabularList (rd ^. libRenderers) (LstFcs True) (rd ^. libList)
renderTheRobots rd =
renderMixedTabularList (rd ^. libRenderers) (LstFcs True) (rd ^. libList)

columnHdrAttr :: AttrName
columnHdrAttr = attrName "columnHeader"

rowHdrAttr :: AttrName
rowHdrAttr = attrName "rowHeader"

colHdr :: MixedColHdr Name Widths
colHdr =
colHdr :: Set DebugOption -> MixedColHdr Name Widths
colHdr uiDbg =
MixedColHdr
{ draw = \_ (MColC (Ix ci)) -> case colHdrs V.!? ci of
{ draw = \_ (MColC (Ix ci)) -> case hdrs V.!? ci of
Just ch -> withAttr columnHdrAttr (padRight Max (str ch) <+> str " ") <=> hBorder
Nothing -> emptyWidget
, widths = \(Widths song) -> song
, height = ColHdrH 2
}
where
hdrs = colHdrs uiDbg

rowHdr :: RowHdr Name LibRobotRow
rowHdr =
Expand All @@ -103,8 +106,24 @@ rowHdr =
, toRH = \_ (Ix i) -> i + 1
}

colHdrs :: Vector String
colHdrs = V.fromList ["Artist", "Title", "Album"]
colHdrs :: Set DebugOption -> Vector String
colHdrs uiDbg = V.fromList augmentedHeadings
where
headings =
[ "Name"
, "Age"
, "Pos"
, "Items"
, "Status"
, "Actns"
, "Cmds"
, "Cycles"
, "Activity"
, "Log"
]
-- headers = withAttr robotAttr . txt <$> augmentedHeadings
augmentedHeadings = applyWhen debugRID ("ID" :) headings
debugRID = uiDbg ^. Lens.contains ListRobotIDs

wpr :: WidthsPerRow LibRobotRow Widths
wpr = WsPerR $ \(Widths song) e -> case e of
Expand Down Expand Up @@ -143,22 +162,8 @@ wprk = WsPerRK $ \(AvlW aW) _ ->

robotsTable :: RobotRenderingContext -> BT.Table Name
robotsTable c =
BT.table $
map (padLeftRight 1) <$> (headers : robotRows)
BT.table []
where
headings =
[ "Name"
, "Age"
, "Pos"
, "Items"
, "Status"
, "Actns"
, "Cmds"
, "Cycles"
, "Activity"
, "Log"
]
headers = withAttr robotAttr . txt <$> applyWhen debugRID ("ID" :) headings
robotRows = mkRobotRow <$> robots
mkRobotRow robot =
applyWhen debugRID (idWidget :) cells
Expand Down
12 changes: 2 additions & 10 deletions src/swarm-tui/Swarm/TUI/Model/UI.hs
Original file line number Diff line number Diff line change
Expand Up @@ -62,29 +62,21 @@ module Swarm.TUI.Model.UI (

import Brick (AttrMap)
import Brick.Focus
import Brick.Widgets.List qualified as BL
import Control.Arrow ((&&&))
import Control.Effect.Accum
import Control.Effect.Lift
import Control.Lens hiding (from, (<.>))
import Data.Bits (FiniteBits (finiteBitSize))
import Data.List.Extra (enumerate)
import Data.Map (Map)
import Data.Map qualified as M
import Data.Sequence (Seq)
import Data.Set (Set)
import Data.Text (Text)
import Data.Text qualified as T
import Swarm.Game.Achievement.Attainment
import Swarm.Game.Achievement.Definitions
import Swarm.Game.Achievement.Persistence
import Swarm.Game.Failure (SystemFailure)
import Swarm.Game.ResourceLoading (getSwarmHistoryPath)
import Swarm.Game.ScenarioInfo (
ScenarioInfoPair,
)
import Swarm.Game.Universe
import Swarm.Game.World.Coords
import Swarm.TUI.Editor.Model
import Swarm.TUI.Inventory.Sorting
import Swarm.TUI.Launch.Model
Expand All @@ -97,7 +89,7 @@ import Swarm.TUI.Model.Repl
import Swarm.TUI.Model.UI.Gameplay
import Swarm.TUI.View.Attribute.Attr (swarmAttrMap)
import Swarm.Util
import Swarm.Util.Lens (makeLensesExcluding, makeLensesNoSigs)
import Swarm.Util.Lens (makeLensesNoSigs)
import System.Clock

-- * Toplevel UIState definition
Expand Down Expand Up @@ -207,7 +199,7 @@ initUIState speedFactor showMainMenu debug = do
{ _uiModal = Nothing
, _uiGoal = emptyGoalDisplay
, _uiStructure = emptyStructureDisplay
, _uiRobot = emptyRobotDisplay
, _uiRobot = emptyRobotDisplay debug

Check failure on line 202 in src/swarm-tui/Swarm/TUI/Model/UI.hs

View workflow job for this annotation

GitHub Actions / Haskell-CI - windows-latest - ghc-9.8.2

Variable not in scope:
}
, _uiIsAutoPlay = False
, _uiTiming =
Expand Down

0 comments on commit 5435ef4

Please sign in to comment.