/src/visualiser/spinner.ml

http://github.com/hhughes/ocaml-frui · OCaml · 40 lines · 38 code · 2 blank · 0 comment · 0 complexity · 619ad6f4a7ba7846bfe862fe71b836fc MD5 · raw file

  1. type button_type = Up | Down
  2. let create_button (e : Dom.element) (input : Dom.input) ty set_input =
  3. let button = (Dom.document#createElement "button" : Dom.button) in
  4. let set_value i _ =
  5. let v = int_of_string input#_get_value in
  6. input#_set_value (string_of_int (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 1)
  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))
  22. let create e v =
  23. let input = (Dom.document#createElement "input" : Dom.input) in
  24. let set_input () =
  25. let i = int_of_string input#_get_value in
  26. v#set (float_of_int i)
  27. in
  28. let set_value i =
  29. let x = int_of_float i in
  30. input#_set_value (string_of_int x)
  31. in
  32. input#_set_value (string_of_int (int_of_float v#get));
  33. input#_set_onchange set_input;
  34. input#_set_className "spinner";
  35. create_button e input Up set_input;
  36. create_button e input Down set_input;
  37. ignore (Froc.lift set_value v#b);
  38. ignore (e#appendChild input)