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)
//Bimap for visualization values
derive bimap VisualizationValue
//Default available instances
derive gVisualize UNIT, PAIR, EITHER, CONS, OBJECT, FIELD
derive gVisualize Int, Real, Char, Bool, String
derive gVisualize Dynamic, [], Maybe, Either, (,), (,,), (,,,), (->), Void, Display, Editable, Hidden, VisualizationHint
derive gVisualize Note, Password, Date, Time, DateTime, Document, FormButton, Currency, User, UserDetails, Task
//Wrapper functions for visualization
visualizeAsEditor :: String (Maybe SubEditorIndex) UpdateMask VerifyMask a -> [TUIDef] | gVisualize{|*|} a
visualizeAsHtmlDisplay :: a -> [HtmlTag] | gVisualize{|*|} a
visualizeAsTextDisplay :: a -> String | gVisualize{|*|} a
visualizeAsHtmlLabel :: a -> [HtmlTag] | gVisualize{|*|} a
visualizeAsTextLabel :: a -> String | gVisualize{|*|} a
// Field behaviour extensions
:: VisualizationHint a = VHEditable a
| VHDisplay a
| VHHidden a
:: Editable a = Editable a // Variable is always rendered within a form as editor field
:: Display a = Display a // Variable is always rendered within a form as a static element
:: Hidden a = Hidden a // Variable is never rendered
fromVisualizationHint :: !(VisualizationHint .a) -> .a
toVisualizationHint :: !.a -> (VisualizationHint .a)
fromEditable :: !(Editable .a) -> .a
toEditable :: !.a -> (Editable .a)
fromDisplay :: !(Display .a) -> .a
toDisplay :: !.a -> (Display .a)
fromHidden :: !(Hidden .a) -> .a
toHidden :: !.a -> (Hidden .a)
//Wrapper function for calculating form delta's
determineEditorUpdates :: String (Maybe SubEditorIndex) [DataPath] UpdateMask VerifyMask a a -> [TUIUpdate] | gVisualize{|*|} a
//Type definitions for visualization
:: VisualizationValue a
= VValue a
| VBlank
:: *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
, 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 :: !UpdateMask !VerifyMask -> (!String, !String)
verifyElementUpd :: !String !UpdateMask !VerifyMask -> [Visualization]
value2s :: !UpdateMask !(VisualizationValue a) -> String | toString a
labelAttr :: !Bool !(Maybe String) -> Maybe String