jxxcarlson/elm-cell-grid/2.0.0

NOTE: the latest version is 8.0.1

CellGrid

The CellGrid package provides a type for representing a rectangular grid of cells. CellGrids can be created, transformed, and rendered as either SVG or HTML.

Types

type CellGrid a
= CellGrid ( Int, Int ) (Array a)

A value of type CellGrid a is a rectangular array of values of type a.

= Corner
| Edge
| Interior

A cell can be in the interior of the grid, on an edge, on in a cornder

type alias CellRenderer a =
{ cellSize : Float
, cellColorizer : a -> ColorValue
, defaultColor : ColorValue
}

CellRenderer is a record that provides the information -- cellSize, defaultColor, and the function cellColorizer -- that are needed to render a cell to SVG.

Constructing and rendering CellGrids

cellGridFromList : Int -> Int -> List a -> Maybe (CellGrid a)

Construct a Maybe CellGrid from a list of values of type a. If the length of the list is incompatible with the given number of rows and columns Nothing is returned.

> cg = cellGridFromList 2 2 [1.0,2.0,3.0,4.0]
  Just (CellGrid (2,2) (Array.fromList [1,2,3,4]))
  : Maybe (CellGrid Float)


> cellGridFromList 2 2 [1.0,2.0,3.0,4.0, 5.0]
  Nothing : Maybe (CellGrid Float)

The empty cell grid. Useful in conjunction with Maybe.withDefault

renderAsHtml : CellRenderer a -> CellGrid a -> Html msg

Render a cell grid as Html

renderAsSvg : CellRenderer a -> CellGrid a -> Svg msg

Render a cell grid as SVG

Work with cells

mapWithIndex : (( Int, Int ) -> a -> a) -> CellGrid a -> CellGrid a

Transform a CellGrid a with a function ((Int, Int) -> a -> a). Used when the transformed value depends on its matrixIndex as well as its value

transform : (( Int, Int ) -> CellGrid a -> a) -> CellGrid a -> CellGrid a

Transform a CellGrid using a function

(Int, Int) -> CellGrid a -> a)
classifyCell : CellGrid a -> ( Int, Int ) -> CellType

return the type of the cell at location (i,j). Thus classifyCell grid (0,0) = Corner

cellAtMatrixIndex : ( Int, Int ) -> CellGrid a -> Maybe a

Return the Maybe value of the cell at (i,j) from grid

> cellAtMatrixIndex (1,1) cg
Just 4 : Maybe Float
setValue : CellGrid a -> ( Int, Int ) -> a -> CellGrid a

Set the value of the cell at location (i,j)