yesod-table-0.1.2: HTML tables for Yesod

Safe HaskellNone
LanguageHaskell2010

Yesod.Table

Description

Table building library for yesod

This library is intended to be brought in by a qualified import along with type import as follows:

import qualified Yesod.Table as Table
import Yesod.Table (Table)

There are two types in this module: Table and Column. Roughly, a Table is just a list of Columns. Except in the case of rendering a Table, you should not need to use the data constructors of either of these types. (In fact, you should not need to refer to the type Column either). Instead, you should use the functions singleton, text, int, etc. to build singleton Tables (a Table with only one Column) and use monoidal concatenation to combine these.

If you want to define your own table rendering function (and it's likely that you will), then you will need the aforementioned data constructors. You can look at the source of buildBootstrap for an example of how to do this.

Synopsis

Documentation

newtype Table site a

Constructors

Table (Seq (Column site a)) 

Instances

Contravariant (Table site) 
Monoid (Table site a) 

data Column site a

Constructors

Column 

Fields

header :: !(WidgetT site IO ())
 
cell :: !(a -> WidgetT site IO ())
 

Instances

Contravariant (Column site) 

buildBootstrap :: Table site a -> [a] -> WidgetT site IO ()

singleton :: WidgetT site IO () -> (a -> WidgetT site IO ()) -> Table site a

This is the most primitive and essential operation for building a Table. All other table-building functions (such as widget, text, and linked) build on top of singleton. One common trend in the convenience functions is that they accept Text as the table header. This is done because I have found that it is uncommon to need the full power of HTML in the header. Just know that if you need it, this function is the only way to get it. The first argument is a widget that is content to be displayed in the table header. The second argument is the a function that consumes a value to produce the content shown in a row of the table body.

widget :: Text -> (a -> WidgetT site IO ()) -> Table site a

This is the same as singleton, with the convenience of accepting the table header as Text.

text :: Text -> (a -> Text) -> Table site a

int :: Text -> (a -> Int) -> Table site a

linked :: Text -> (a -> Text) -> (a -> Route site) -> Table site a