@@ -7,6 +7,16 @@ module ReactDOM = React.Dom
77
88type paramState = Executed | Executing | Canceled | Error ;
99
10+ // For debugging purposes and potential further use
11+ let paramState_to_string = (p: paramState ) => {
12+ switch (p) {
13+ | Executed => "Executed" ;
14+ | Executing => "Executing" ;
15+ | Canceled => "Canceled" ;
16+ | Error => "Error" ;
17+ };
18+ };
19+
1020[@ react . component ]
1121let make = (~parameters, ~history, ~setHistory) => {
1222
@@ -22,8 +32,15 @@ let make = (~parameters, ~history, ~setHistory) => {
2232 };
2333
2434 let on_submit = () => {
25- let newHistory = Array . append(history, [| (value, Time . getLocalTime() , Executing )|] )
26- setHistory(_ => newHistory);
35+ history |> Array . length |> string_of_int |> Util . log;
36+
37+ let time = Time . getLocalTime() ;
38+ let state = ref (Executing );
39+ let element = (value, time, state. contents);
40+
41+ let new_history = Array . append(history, [| element|] );
42+ setHistory(_ => new_history);
43+ setDisableCancel(_ => false );
2744
2845 let /* parameterList*/ _ = ParameterUtils . constructParameters(value);
2946 let headers = Header . init_with("Content-Type" , "application/json" );
@@ -34,26 +51,54 @@ let make = (~parameters, ~history, ~setHistory) => {
3451 \" params\" : {\" reset\" : false}
3552 }"
3653 |> Body . of_string;
37- let url = "127.0.0.1:8001" |> Uri . of_string;
3854
39- let _ = Client . put(url, ~body= body, ~headers= headers) >>= ((res, _ /* body*/ )) => {
40- res |> Response . status |> Code . code_of_status |> string_of_int |> Util . log;
55+ let scheme = "http" ;
56+ let host = "localhost" ;
57+ let port = 8080 ;
58+ let path = "/api/analyze" ;
59+
60+ let uri = Printf . sprintf("% s ://% s :% d % s " , scheme, host, port, path) |> Uri . of_string;
61+
62+ let new_state = Client . post(uri, ~body= body, ~headers= headers) >>= ((res, _ /* body*/ )) => {
63+ let code = res |> Response . status |> Code . code_of_status
4164 /* body |> Body.to_string >|= (b) => {
4265 Util.log(b);
4366 };*/
44- Lwt . return () ;
67+
68+ if (code < 200 || code >= 400 ) {
69+ Lwt . return(Error )
70+ } else {
71+ Lwt . return(Executed )
72+ };
4573 };
4674
47- setDisableCancel(_ => false );
75+ let res_state = switch (new_state |> Lwt . poll) {
76+ | Some (p ) => p
77+ | None => Error
78+ };
79+
80+ let lastElemIndexInHistory = Array . length(new_history) - 1 ;
81+ let lastElement = lastElemIndexInHistory |> Array . get(new_history);
82+
83+ if (element == lastElement) {
84+ let intermediateHistory = lastElemIndexInHistory |> Array . sub(new_history, 0 );
85+
86+ let new_element = (value, time, res_state);
87+
88+ let new_history = Array . append(intermediateHistory, [| new_element|] );
89+ setHistory(_ => new_history);
90+ setDisableCancel(_ => true );
91+ }
92+
4893 };
4994
5095 let on_cancel = () => {
5196 let lastElemIndex = Array . length(history) - 1 ;
5297 let (param , time , _ ) = Array . get(history, lastElemIndex);
5398
5499 let intermediateHistory = Array . sub(history, 0 , lastElemIndex);
55- let newHistory = Array . append(intermediateHistory, [| (param, time, Canceled )|] );
56- setHistory(_ => newHistory );
100+ let new_history = Array . append(intermediateHistory, [| (param, time, Canceled )|] );
101+ setHistory(_ => new_history );
57102
58103 setDisableCancel(_ => true );
59104 }
0 commit comments