definition module GenVisualize
import Html, JSON, TUIDefinition
import StdGeneric, StdMaybe, Void, Either
import GenUpdate, GenVerify
//Generic visualization function
generic gVisualize a :: (VisualizationValue a) (VisualizationValue a) *VSt -> ([Visualization], *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, Display, Editable, Hidden, VisualizationHint
//Wrapper functions for visualization
visualizeAsEditor :: String (Maybe SubEditorIndex) UpdateMask VerifyMask 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 (Maybe SubEditorIndex) [DataPath] UpdateMask VerifyMask a a -> ([TUIUpdate],Bool) | gVisualize{|*|} a
//Type definitions for visualization
:: VisualizationValue a
= VValue a
| VBlank
//Bimap for visualization values
derive bimap VisualizationValue
:: *VSt =
{ vizType :: !VisualizationType // Type of preferred visualization
, origVizType :: !VisualizationType // Type of the preferred visualization at initialization, this should not be edited.
, 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
, selectedConsIndex :: !Int // Index of the selected constructor in an Object
, useLabels :: !Bool // Indent for labels, whether there is a label or not
, optional :: !Bool // Create optional form fields
, valid :: !Bool // Is the form valid
, updateMask :: !UpdateMask
, verifyMask :: !VerifyMask
, updates :: ![DataPath]
, renderAsStatic :: !Bool // If true, flag the form items as being static
}
:: VisualizationType
= VEditorDefinition
| VEditorUpdate
| VConsSelectorUpdate
| 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
restoreField :: DataPath [DataPath] String String -> [Visualization]
//updateVizValue:: !String !String !*VSt -> (![Visualization],!*VSt)
//getMessageUpdates:: *VSt -> (!Bool,![Visualization], !*VSt)
visualizeBasicControl :: !(VisualizationValue a) !*VSt -> (!TUIBasicControl, !*VSt) | toString a
updateBasicControl :: !(VisualizationValue a) !(VisualizationValue a) !*VSt -> (![Visualization],!*VSt) | toString a
verifyElementStr :: !Bool !UpdateMask !VerifyMask -> (!Bool, !String, !String)
verifyElementUpd :: !Bool !String !UpdateMask !VerifyMask -> (!Bool, ![Visualization])
value2s :: !UpdateMask !(VisualizationValue a) -> String | toString a
labelAttr :: !Bool !(Maybe String) -> Maybe String