The HFitUI package

[ Tags: bsd3, library, program, web ] [ Propose Tags ]

The library for generating a graphical interface on the web for the Haskell programming language.


[Skip to Readme]

Properties

Versions 0.1.0.0, 0.1.1.0
Dependencies base (>=4.7 && <5), blaze-html (>=0.8.1), blaze-markup (>=0.7.1), HFitUI, MissingH (>=1.4.0), mtl (>=2.2.1), process (>=1.4.2), random (>=1.1), shakespeare (>=2.0.11), template-haskell (>=2.11.0), text (>=1.2.2), uuid (>=1.3.12) [details]
License BSD3
Copyright 2017 QSpider
Author Pavel
Maintainer iqsf@ya.ru
Category Web
Home page https://github.com/iqsf/HFitUI.git
Source repository head: git clone https://github.com/iqsf/HFitUI
Uploaded Mon Jun 5 10:45:16 UTC 2017 by QSpider2017
Distributions NixOS:0.1.1.0
Executables HFitUI-exe
Downloads 223 total (10 in the last 30 days)
Rating (no votes yet) [estimated by rule of succession]
Your Rating
  • λ
  • λ
  • λ
Status Docs not available [build log]
Last success reported on 2017-06-05 [all 2 reports]
Hackage Matrix CI

Modules

  • WebUI
    • Demo
      • WebUI.Demo.LibDemo
    • WebUI.HFitUI
    • Layouts
      • WebUI.Layouts.LayoutBase
    • Scripts
      • WebUI.Scripts.HScript
      • JavaScript
        • WebUI.Scripts.JavaScript.HJSBuilder
        • WebUI.Scripts.JavaScript.HJSElementDOM
        • WebUI.Scripts.JavaScript.HJSExps
        • WebUI.Scripts.JavaScript.HJSFunction
        • WebUI.Scripts.JavaScript.HJSKeywords
        • WebUI.Scripts.JavaScript.HJSMath
        • WebUI.Scripts.JavaScript.HJSTypes
        • WebUI.Scripts.JavaScript.HJSUtils
        • WebUI.Scripts.JavaScript.HJSVars
        • WebUI.Scripts.JavaScript.HJavaScript
      • WebUI.Scripts.UIAction
    • Themes
      • WebUI.Themes.SolarizedUITheme
      • WebUI.Themes.UITheme
      • WebUI.Themes.UIThemeTypes
      • WebUI.Themes.UIThemeUtils
    • Widgets
      • Components
        • WebUI.Widgets.Components.UIBase
      • Extensions
        • WebUI.Widgets.Extensions.BootStrapExtension
        • WebUI.Widgets.Extensions.JQueryExtension
        • WebUI.Widgets.Extensions.MapOSMExtension
        • WebUI.Widgets.Extensions.ToolTipExtension
      • Kits
        • WebUI.Widgets.Kits.UIKits
      • WebUI.Widgets.UIWidget

Downloads

Maintainer's Corner

For package maintainers and hackage trustees


Readme for HFitUI-0.1.1.0

[back to package description]

HFitUI

Introduction

Library for generating a graphical interface on the web for the Haskell programming language.

Short description

The HFitUI uses the blaze library as the result of generating a graphical interface on the web. Using the HFitUI, you construct an interface from the panels, buttons, more complex widget components.The HFitUI has its own Javascript generator from Haskell code based on a set of JavaScript simulation functions. Below is an example demo code:

testOne :: UI H.Html
testOne = 
    widgetLayoutUI $ do 
        -- Базовые виджеты
        shell                   <- shellExtUI "TestGL (Dyn)" []
        (root, idRoot, _)       <- expandWUI $ wuiPanel <#> boundsBRDNum (44, 0, 0, 0)
                                                        <#> overflowHiddenX
                                                        <#> overflowAutoY

        scriptsOutside          <- wuiScriptSrc [] 

        jsScript                <- wuiScriptTextJS $ runScript defaultHBConfig {hbc_entryLine = "\n"
                                                                               } $ do 
                                        var_b <- newVarInt "b" 10 
                                        var_c <- newVarInt "c" 5
                                        var_cm <- newVar "cm" $ mathACos var_c
                                        (//) "Test variable"
                                        var_testPer <- newVar "testPer" HJsEmpty
                                        var_st <- newVarStr "st" "TestSt"
                                        flag_1 <- newVarBool "flag_1" True
                                        var_res <- newVar "res" HJsNull

                                        var_res <- eql var_res $ (var_b + var_c) * var_st / var_b
                                        var_res <- eql var_res var_b 

                                        hjs $(juliusFile "templates/test/TestScript.julius") 

                                        hjs $[julius|    
                                            function veryTest (){
                                                console.log("VeryTest");
                                            }
                                        |]

                                        (***) $ "The first multi-line comment" +-+ 
                                                "before the myFunc function"
                                        vatFn_myFunc <- functJS "myFunc" [] $ do 
                                            return endH
                                        call vatFn_myFunc []
                                        var_res_myFunc <- eqlMT (varJS "res_myFunc") $ call vatFn_myFunc []

                                        var_testFunc <- eqlMT (varJS "testFunc") $ functJS "" [] $ do 
                                            var_bbb <- newVarInt "bbb" 23 
                                            returnJS thisJS
                                        call var_testFunc []
                                        var_res_testFunc <- eqlMT (varJS "res_testFunc") $ call var_testFunc [5, var_b, valStr "qwe", valInt 19, valBool True]
                                        var_res_new_testFunc <- eqlMT (varJS "res_new_testFunc") $ newJS $ call var_testFunc [5, var_b, valStr "qwe", valInt 19, valBool True]

                                        jsFinish 

        shell `addWUIs` [ root
                        , scriptsOutside
                        , jsScript
                        ]

This code generates the following HTML:

<!DOCTYPE HTML>
<html><head><title>TestGL (Dyn)</title></head><body id="f98b3765-f949-44ed-b653-7234e250f08e" ui_widget="shell" style=""><div id="42826f90-aa08-4008-b3a7-3c27e62b5d2d" ui_widget="panel" style="top:44px;right:0px;bottom:0px;left:0px;overflow-x: hidden;overflow-y: auto;" class=""></div><script type="text/javascript" id="87a1f750-123a-4148-bcb5-a53f40e23a52" ui_widget="script_text" style="" class="">
/*Generate by HScript from the HFitUI library*/
var b = 10;
var c = 5;
var cm = Math.acos(c);
//Test variable
var testPer;
var st = "TestSt";
var flag_1 = true;
var res = null;
res = (((b + c) * st) / b);
res = b;
function test(){
    console.log("Test");
}
function veryTest (){
    console.log("VeryTest");
}
/*The first multi-line comment
before the myFunc function*/
function myFunc (){
}
myFunc();
res_myFunc = myFunc();
;
testFunc = function (){
  var bbb = 23;
  return this;
}
;
testFunc();
res_testFunc = testFunc(5, b, "qwe", 19, true);
;
res_new_testFunc = new testFunc(5, b, "qwe", 19, true);

;
</script></body></html>

The library HFitUI represents a simple yet powerful tool for creating graphical interface on the Web.