packages feed

zwirn-0.2.3.1: app/zwirnmill/SampleBrowser/Draw.hs

module SampleBrowser.Draw where

import Brick (ViewportType (..), Widget)
import Brick.Widgets.Core
import qualified Data.Text as T
import Data.Vector (Vector)
import qualified Data.Vector as V
import UI.Core (Name (..), SampleBrowser (..))

drawSampleBrowser :: (Int, Int) -> SampleBrowser -> Widget Name
drawSampleBrowser (sx, _) (SampleB search cont) = vBox [txt ("search: " <> search), txt $ T.replicate sx "━", viewport SampleBrowserViewport Vertical $ drawSamples search cont]

drawSamples :: T.Text -> Vector (T.Text, Int) -> Widget Name
drawSamples search ss = vBox $ map drawSample (V.toList fs)
  where
    fs = V.filter (\(t, _) -> T.isPrefixOf (T.toLower search) (T.toLower t)) ss

drawSample :: (T.Text, Int) -> Widget Name
drawSample (name, num) = txt $ name <> " (" <> T.show num <> ")"