module Panda.View.Widget.Sidebar where

import Panda.Helper.Env hiding (rss_link)
import Prelude hiding ((.), (/), (^), id, span)
import qualified Panda.Type.State as State

import qualified Data.Set as Set
import qualified Panda.Config.Global as G
import qualified Panda.Type.StaticWidget as Sidebar
import Panda.View.Widget.Helper

-- model
import qualified Panda.Model.Tag as Tag

-- view

sidebar c state = 
  div_class_id c "sidebar" << unordList formatted_list
  where
    stock_list = 
      [ feed state
      , tag_list $ state.State.tags
      ] 
    custom_list = G.sidebar.map (\x -> h2 << x.Sidebar.name +++ x.markup)
    formatted_list = (stock_list ++ custom_list) .intersperse hr

feed state = toHtml
  [ h2 << "Subscribe"
  , p ! [theclass "feed"] << rss_link state
  ]

rss_link = rss_url_link_pair >>> snd
tag_list tags = toHtml
  [ h2 << "Tags"
  , unordList $ tags.Tag.sorted.map tag_link]
  
tag_link x = ( hotlink (G.root / x.Tag.uid) << x.Tag.name ) +++ ( " (" ++ x.Tag.resources.Set.size.show ++ ")" )