/src/graph/spinner.ml

http://github.com/hhughes/ocaml-frui · OCaml · 39 lines · 37 code · 2 blank · 0 comment · 0 complexity · 8571a19abe098d1382f067cbbe7d2ff3 MD5 · raw file

  1. type button_type = Up | Down
  2. let create_button (e : Dom.element) (input : Dom.input) ty set_input inc =
  3. let button = (Dom.document#createElement "button" : Dom.button) in
  4. let set_value i _ =
  5. let v = float_of_string input#_get_value in
  6. input#_set_value (string_of_float (v +. i));
  7. set_input ();
  8. true
  9. in
  10. ignore (e#appendChild button);
  11. match ty with
  12. | Up ->
  13. button#_set_className "up";
  14. let button_text = (Dom.document#createTextNode "^" : Dom.text) in
  15. ignore (button#appendChild button_text);
  16. button#_set_onclick (set_value inc)
  17. | Down ->
  18. button#_set_className "down";
  19. let button_text = (Dom.document#createTextNode "v" : Dom.text) in
  20. ignore (button#appendChild button_text);
  21. button#_set_onclick (set_value (-1. *. inc))
  22. let create e v inc =
  23. let input = (Dom.document#createElement "input" : Dom.input) in
  24. let set_input () =
  25. let i = float_of_string input#_get_value in
  26. v#set i
  27. in
  28. let set_value i =
  29. input#_set_value (string_of_float i)
  30. in
  31. input#_set_value (string_of_float v#get);
  32. input#_set_onchange set_input;
  33. input#_set_className "spinner";
  34. create_button e input Up set_input inc;
  35. create_button e input Down set_input inc;
  36. ignore (Froc.lift set_value v#b);
  37. ignore (e#appendChild input)