jxxcarlson/elm-cell-grid/5.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

Constructing and rendering CellGrids

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

Construct a Maybe CellGrid from a list of values of type a. Here is a 2x2 cell grid of type Float:

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

If the length of the list is incompatible with the given number of rows and columns Nothing is returned.

> fromList 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

Work with cells

map : (a -> a) -> CellGrid a -> CellGrid a

Map a function over a CellGrid:

> map (\x -> 2*x) cg
CellGrid (2,2) (Array.fromList [2,4,6,8])
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

foldl : (a -> b -> b) -> b -> CellGrid a -> b

Fold a reducer (a -> b -> b) over a CellGrid a)

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)

matrixIndex : ( Int, Int ) -> Int -> ( Int, Int )

Conversely, (nRows, nCols) k is the 2D array index (i,j) of the element al index k

matrixIndices : CellGrid a -> List ( Int, Int )

Return a list of all matrix indices (i,j) of a grid. Useful for mapping.

makeCellGrid : ( Int, Int ) -> (( Int, Int ) -> Float) -> CellGrid Float

Make a CellGrid Float using a temperatureMap. The latter assigns a Float to an integer tuple (row, col)