definition module GenVisualize
import Html, JSON, TUIDefinition
import StdGeneric, StdMaybe, Void, Either
import GenUpdate
//Generic visualization function
generic gVisualize a :: (VisualizationValue a) (VisualizationValue a) *VSt -> ([Visualization], RenderingHint, *VSt)
//Default available instances
derive gVisualize UNIT, PAIR, EITHER, CONS, OBJECT, FIELD
derive gVisualize Int, Real, Char, Bool, String, Document
derive gVisualize Dynamic, [], Maybe, Either, (,), (,,), (,,,), Void, Static, Hidden
//Wrapper functions for visualization
visualizeAsEditor :: String DataMask a -> ([TUIDef],Bool) | gVisualize{|*|} a
visualizeAsHtmlDisplay :: a -> [HtmlTag] | gVisualize{|*|} a
visualizeAsTextDisplay :: a -> String | gVisualize{|*|} a
visualizeAsHtmlLabel :: a -> [HtmlTag] | gVisualize{|*|} a
visualizeAsTextLabel :: a -> String | gVisualize{|*|} a
//Wrapper function for calculating form delta's
determineEditorUpdates :: String DataMask DataMask ListMask a a -> ([TUIUpdate],Bool) | gVisualize{|*|} a
//Hint for the layout engine how to render the different panels in case of a
//horizontal layout (tuples) (0 = full width, 1 = inline, 2 = medium, 4 = large)
:: RenderingHint :== Int
//Type definitions for visualization
:: VisualizationValue a
= VValue a DataMask
| VBlank
//Bimap for visualization values
derive bimap VisualizationValue
:: *VSt =
{ vizType :: !VisualizationType // Type of preferred visualization
, idPrefix :: !String // Prefix for all identity strings of editor fields
, label :: !Maybe String // Optional label to attach to editor fields
// Additional information for form generation
, currentPath :: !DataPath // Accumulated path through the data structure, used to identify sub-structures
, useLabels :: !Bool // Indent for labels, whether there is a label or not
, onlyBody :: !Bool // Only generate a constructor body for editors
, optional :: !Bool // Create optional form fields
, valid :: !Bool // Is the form valid
, listMask :: ListMask // Indicating which parts of a list have changed
}
:: VisualizationType
= VEditorDefinition
| VEditorUpdate
| VHtmlDisplay
| VTextDisplay
| VHtmlLabel
| VTextLabel
:: Visualization
= TextFragment String
| HtmlFragment [HtmlTag]
| TUIFragment TUIDef
| TUIUpdate TUIUpdate
//Utility functions making specializations of gVisualize
instance toString (VisualizationValue a) | toString a
value2s :: DataPath (VisualizationValue a) -> String | toString a
label2s :: Bool (Maybe String) -> Maybe String
stillValid :: DataPath (VisualizationValue a) Bool Bool -> Bool