Skip to content

Commit d1b560b

Browse files
committed
print conditions for rule and agent deadness in the GUI
1 parent 5d89a89 commit d1b560b

File tree

4 files changed

+90
-44
lines changed

4 files changed

+90
-44
lines changed

gui/lib/html_utility.ml

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ let print_formula_option formula list =
122122
| Some formula ->
123123
let list = print_string "]" list in
124124
let list = print_formula formula list in
125-
print_string "[ only if " list
125+
print_string "[only if " list
126126

127127
let print_exceptions_caught_and_uncaught mh =
128128
let uncaught = Exception_without_parameter.get_uncaught_exception_list mh in
@@ -145,4 +145,20 @@ let print_exceptions_caught_and_uncaught mh =
145145
])
146146
uncaught)
147147

148-
let print_rule _rule list = print_string "" list (*TODO*)
148+
let string_of_rule rule =
149+
if rule.Public_data.rule_label <> "" then
150+
" '" ^ rule.Public_data.rule_label ^ "'"
151+
else if rule.Public_data.rule_ast <> "" then
152+
rule.Public_data.rule_ast
153+
else
154+
string_of_int rule.Public_data.rule_id
155+
156+
let print_rule rule list = print_string (string_of_rule rule) list
157+
158+
let string_of_agent agent =
159+
if agent.Public_data.agent_ast <> "" then
160+
agent.Public_data.agent_ast
161+
else
162+
string_of_int agent.Public_data.agent_id
163+
164+
let print_agent_kind agent list = print_string (string_of_agent agent) list

gui/lib/html_utility.mli

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,6 @@ val print_newline : ([> `PCDATA ] as 'a) Html.elt list -> 'a Html.elt list
1313
val print_string :
1414
string Html.wrap -> ([> `PCDATA ] as 'a) Html.elt list -> 'a Html.elt list
1515

16-
val print_agent :
17-
string Html.wrap
18-
* (string Html.wrap
19-
* string Html.wrap option
20-
* Public_data.binding_state option
21-
* (int option * int option) option)
22-
list ->
23-
([> `PCDATA ] as 'a) Html.elt list ->
24-
'a Html.elt list
25-
2616
val print_site_graph :
2717
(string Html.wrap
2818
* (string Html.wrap
@@ -48,5 +38,14 @@ val print_exceptions_caught_and_uncaught :
4838
Exception_without_parameter.exceptions_caught_and_uncaught ->
4939
[> Html_types.p ] Html.elt list
5040

41+
val string_of_rule : Public_data.rule -> string
42+
5143
val print_rule :
5244
Public_data.rule -> ([> `PCDATA ] as 'a) Html.elt list -> 'a Html.elt list
45+
46+
val string_of_agent : Public_data.agent_kind -> string
47+
48+
val print_agent_kind :
49+
Public_data.agent_kind ->
50+
([> `PCDATA ] as 'a) Html.elt list ->
51+
'a Html.elt list

gui/ui/panel_tabs/tab_editor/subtab_constraints.ml

Lines changed: 61 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
module Html = Tyxml_js.Html5
1010
open Lwt.Infix
11+
open Lwt.Syntax
1112

1213
let navli () = ReactiveData.RList.empty
1314
let tab_is_active, set_tab_is_active = React.S.create false
@@ -28,10 +29,10 @@ let content () =
2829
match conclusion with
2930
| [ (site_graph, formula) ] ->
3031
let list =
31-
Html_utility.print_site_graph site_graph
32+
Html_utility.print_formula_option formula
3233
(Html_utility.print_newline list)
3334
in
34-
Html_utility.print_formula_option formula list
35+
Html_utility.print_site_graph site_graph list
3536
| _ :: _ | [] ->
3637
let list = Html_utility.print_newline list in
3738
let list = Html_utility.print_string " ]" list in
@@ -57,26 +58,56 @@ let content () =
5758
let list = Html_utility.print_site_graph hyp list in
5859
list
5960
in
61+
let print_conditionally_dead_agents
62+
((agent : Public_data.agent_kind), formula) list =
63+
let list = Html_utility.print_newline list in
64+
let list = Html_utility.print_formula formula list in
65+
let list = Html_utility.print_string " can occur in the model if " list in
66+
Html_utility.print_agent_kind agent list
67+
in
68+
let print_conditionally_dead_rules ((rule : Public_data.rule), formula) list =
69+
let list = Html_utility.print_newline list in
70+
let list = Html_utility.print_formula formula list in
71+
let list = Html_utility.print_string " could be applied if " list in
72+
Html_utility.print_rule rule list
73+
in
74+
75+
let print_panel header print_function content =
76+
let texts =
77+
List.fold_left (fun list c -> print_function c list) [] content
78+
in
79+
let title =
80+
Html.div ~a:[ Html.a_class [ "panel-heading" ] ] [ Html.txt header ]
81+
in
82+
let content =
83+
Html.div ~a:[ Html.a_class [ "panel-body"; "panel-pre" ] ] texts
84+
in
85+
Html.div ~a:[ Html.a_class [ "panel"; "panel-default" ] ] [ title; content ]
86+
in
6087
let add_constraints constraints =
6188
List.fold_left
6289
(fun panels (a, b) ->
63-
let texts =
64-
List.fold_left
65-
(fun list lemma -> print_refinement_constraint lemma list)
66-
[] (List.rev b)
67-
in
68-
let title =
69-
Html.div ~a:[ Html.a_class [ "panel-heading" ] ] [ Html.txt a ]
70-
in
71-
let content =
72-
Html.div ~a:[ Html.a_class [ "panel-body"; "panel-pre" ] ] texts
73-
in
74-
Html.div
75-
~a:[ Html.a_class [ "panel"; "panel-default" ] ]
76-
[ title; content ]
77-
:: panels)
90+
print_panel a print_refinement_constraint b :: panels)
7891
[] constraints
7992
in
93+
let add_rules
94+
(conditionally_dead_rules : Public_data.rule_deadness_conditions) =
95+
if List.length conditionally_dead_rules > 0 then
96+
print_panel "Conditions for rule deadness" print_conditionally_dead_rules
97+
conditionally_dead_rules
98+
:: []
99+
else
100+
[ Html.div [] ]
101+
in
102+
let add_agents
103+
(conditionally_dead_agents : Public_data.agent_deadness_conditions) =
104+
if List.length conditionally_dead_agents > 0 then
105+
print_panel "Conditions for agent deadness"
106+
print_conditionally_dead_agents conditionally_dead_agents
107+
:: []
108+
else
109+
[ Html.div [] ]
110+
in
80111
let print_error_message r =
81112
let title =
82113
Html.div
@@ -104,8 +135,19 @@ let content () =
104135
let constraints_div =
105136
State_project.on_project_change_async ~on:tab_is_active ()
106137
(React.S.const ()) [] (fun (manager : Api.concrete_manager) () ->
107-
manager#get_constraints_list
108-
>|= Result_util.fold ~ok:add_constraints ~error:print_error_message)
138+
let* out_constraints =
139+
manager#get_constraints_list
140+
>|= Result_util.fold ~ok:add_constraints ~error:print_error_message
141+
in
142+
let* out_rules =
143+
manager#get_conditionally_dead_rules
144+
>|= Result_util.fold ~ok:add_rules ~error:print_error_message
145+
in
146+
let* out_agents =
147+
manager#get_conditionally_dead_agents
148+
>|= Result_util.fold ~ok:add_agents ~error:print_error_message
149+
in
150+
Lwt.return (out_constraints @ out_rules @ out_agents))
109151
in
110152
[
111153
Tyxml_js.R.Html5.div

gui/ui/panel_tabs/tab_editor/tab_editor.ml

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -94,14 +94,7 @@ let init_dead_rules () =
9494
acc
9595
else (
9696
let text =
97-
"Dead rule "
98-
^
99-
if rule.Public_data.rule_label <> "" then
100-
" '" ^ rule.Public_data.rule_label ^ "'"
101-
else if rule.Public_data.rule_ast <> "" then
102-
rule.Public_data.rule_ast
103-
else
104-
string_of_int rule.Public_data.rule_id
97+
"Dead rule " ^ Html_utility.string_of_rule rule
10598
in
10699
{
107100
Result_util.severity = Logs.Warning;
@@ -138,11 +131,7 @@ let init_dead_agents () =
138131
(fun acc agent ->
139132
let text =
140133
"Dead agent "
141-
^
142-
if agent.Public_data.agent_ast <> "" then
143-
agent.Public_data.agent_ast
144-
else
145-
string_of_int agent.Public_data.agent_id
134+
^ Html_utility.string_of_agent agent
146135
in
147136
List.fold_left
148137
(fun acc range ->

0 commit comments

Comments
 (0)