The unified diff between revisions [94638968..] and [dd4e718c..] is displayed below. It can also be downloaded as a raw diff.
#
#
# patch "database.ml"
# from [06fe1d1d5d2da0880adc0da73ff75a86b114b946]
# to [50a5a35ff7dc8d9910fe824e9ff81b6d8afae95b]
#
# patch "query.ml"
# from [4f5275a8caa6115155468338bef6aa22b1888825]
# to [f691b2a902e28ebb9503a018f52a1634297b39ed]
#
# patch "view.ml"
# from [e996eff1992c98cfc0f787d2fa6e804662890253]
# to [e2d0e8ea6928c04c7002e37d08aee0c5de5a1c3e]
#
# patch "viz_types.ml"
# from [155a8730aa4d15f76597efa96a689bc01e39b76f]
# to [000e61799446f6d11caad5379ca79c9ea6ff087e]
#
# patch "viz_types.mli"
# from [1f4386c49f92acb7c868e93ccf62986219a3da49]
# to [dcc5514fcad957dbccfe3b83c2878fe91dc605b0]
#
============================================================
--- database.ml 06fe1d1d5d2da0880adc0da73ff75a86b114b946
+++ database.ml 50a5a35ff7dc8d9910fe824e9ff81b6d8afae95b
@@ -182,13 +182,13 @@ let process_neighb_in g s =
assert (NodeMap.mem child g.nodes) ;
add_nodes_with_edge g id NEIGHBOUR_IN child REGULAR BRANCHING_NEIGH
-let process_neighb_out db =
+let process_neighb_out all db =
let is_interesting = is_interesting_neighbour_out db in
fun g s ->
let parent = Sqlite3.column_text s 0 in
let id = Sqlite3.column_text s 1 in
assert (NodeMap.mem parent g.nodes) ;
- if is_interesting parent id
+ if all || is_interesting parent id
then add_nodes_with_edge g parent REGULAR id NEIGHBOUR_OUT BRANCHING_NEIGH
else g
@@ -212,7 +212,10 @@ let process_branching_edge g s =
g
-let fetch_agraph_with_view db base64 (query, query_limit) =
+let fetch_agraph_with_view db base64 query =
+ let { dom = query ;
+ lim = query_limit ;
+ all_propagates = all_propagates } = query in
let view_name_limit =
if query_limit <> QUERY_NO_LIMIT
then view_name_limit
@@ -246,7 +249,7 @@ LEFT OUTER JOIN %s AS D2 ON D2.id = chil
LEFT OUTER JOIN %s AS D2 ON D2.id = child \
WHERE D2.id ISNULL"
view_name_limit view_name_domain
- (process_neighb_out db) agraph in
+ (process_neighb_out all_propagates db) agraph in
(* ancestry *)
let agraph =
@@ -303,7 +306,7 @@ let fetch_with_view query base64 db f =
String.concat "" [ "X\'" ; Viz_misc.hex_enc s ; "\'" ]
let fetch_with_view query base64 db f =
- let (query_domain, query_limit) = query in
+ let { dom = query_domain ; lim = query_limit } = query in
let register_date_p () =
match query_limit with
============================================================
--- query.ml 4f5275a8caa6115155468338bef6aa22b1888825
+++ query.ml f691b2a902e28ebb9503a018f52a1634297b39ed
@@ -27,10 +27,10 @@ module Selector = struct
end
let make_selectors g sel =
- match Agraph.get_query g with
- | QUERY_ALL, lim ->
+ match (Agraph.get_query g).dom with
+ | QUERY_ALL ->
[ escape_selector sel ]
- | QUERY_BRANCHES br, lim ->
+ | QUERY_BRANCHES br ->
List.map
(fun b -> Printf.sprintf "b:%s/%s" (escape_selector b) (escape_selector sel))
br
@@ -46,9 +46,7 @@ module Selector = struct
()
let has_date_limit g =
- match Agraph.get_query g with
- | _, QUERY_NO_LIMIT -> false
- | _ -> true
+ (Agraph.get_query g).lim <> QUERY_NO_LIMIT
let filter_present g = function
| `IDS ids when has_date_limit g ->
============================================================
--- view.ml e996eff1992c98cfc0f787d2fa6e804662890253
+++ view.ml e2d0e8ea6928c04c7002e37d08aee0c5de5a1c3e
@@ -399,6 +399,7 @@ module Branch_selector = struct
toggle_renderer : GTree.cell_renderer_toggle ;
radio_buttons : GButton.radio_button array ;
entries : GEdit.entry array ;
+ propagate_checkb : GButton.toggle_button ;
mutable selected_b : int ;
mutable limit_kind : int ;
}
@@ -470,20 +471,20 @@ module Branch_selector = struct
end ;
(* The radio buttons for the date limit *)
- let packing = Ui.category "Date limit" packing in
- let tooltips = GData.tooltips () in
- let date_entry_tooltip_text =
- "Specify a date (YYYY-MM-DD), a tag or a revision id" in
- let tbl =
- GPack.table
- ~columns:2 ~rows:3
- ~row_spacings:2 ~col_spacings:4 ~packing () in
- let b1 =
- let packing = tbl#attach ~left:0 ~top:0 in
- GButton.radio_button
- ~label:"_No limit" ~use_mnemonic:true ~active:true ~packing () in
- let group = b1#group in
- let b2, entry_from, entry_to =
+ let b1, b2, entry_from, entry_to =
+ let packing = Ui.category "Date limit" packing in
+ let tooltips = GData.tooltips () in
+ let date_entry_tooltip_text =
+ "Specify a date (YYYY-MM-DD), a tag or a revision id" in
+ let tbl =
+ GPack.table
+ ~columns:2 ~rows:3
+ ~row_spacings:2 ~col_spacings:4 ~packing () in
+ let b1 =
+ let packing = tbl#attach ~left:0 ~top:0 in
+ GButton.radio_button
+ ~label:"_No limit" ~use_mnemonic:true ~active:true ~packing () in
+ let group = b1#group in
let button =
GButton.radio_button ~group
~label:"_Interval limit" ~use_mnemonic:true
@@ -500,8 +501,16 @@ module Branch_selector = struct
let e2 = GEdit.entry ~packing ~activates_default:true () in
tooltips#set_tip ~text:date_entry_tooltip_text e2#coerce ;
ignore (e1#connect#activate (fun () -> e2#misc#grab_focus ())) ;
- (button, e1, e2) in
+ (b1, button, e1, e2) in
+ (* The check button to select all propagate nodes or not *)
+ let checkb =
+ let packing = Ui.category "Options" packing in
+ GButton.check_button
+ ~label:"Display all propagate nodes"
+ ~active:false
+ ~packing () in
+
{ store = model ;
branch_column = branch_column ;
count_column = count_column ;
@@ -513,6 +522,7 @@ module Branch_selector = struct
w = w ;
radio_buttons = [| b1 ; b2 |] ;
entries = [| entry_from ; entry_to |] ;
+ propagate_checkb = checkb ;
selected_b = 0 ;
limit_kind = 0 }
@@ -594,7 +604,11 @@ module Branch_selector = struct
| _ ->
make_query_limit_interval ctrl query_domain
s.entries.(0)#text s.entries.(1)#text in
- Some { query = (query_domain, query_limit) ;
+ let query_propagate =
+ s.propagate_checkb#active in
+ Some { query = { dom = query_domain ;
+ lim = query_limit ;
+ all_propagates = query_propagate };
preselect = id }
with
| Complete.None -> None
============================================================
--- viz_types.ml 155a8730aa4d15f76597efa96a689bc01e39b76f
+++ viz_types.ml 000e61799446f6d11caad5379ca79c9ea6ff087e
@@ -12,7 +12,11 @@ type query_limit =
type query_limit =
| QUERY_NO_LIMIT
| QUERY_BETWEEN of date * date
-type query = query_domain * query_limit
+type query = {
+ dom : query_domain ;
+ lim : query_limit ;
+ all_propagates : bool
+ }
type select_info = { query : query; preselect : string option; }
============================================================
--- viz_types.mli 1f4386c49f92acb7c868e93ccf62986219a3da49
+++ viz_types.mli dcc5514fcad957dbccfe3b83c2878fe91dc605b0
@@ -14,7 +14,11 @@ type query_limit =
type query_limit =
| QUERY_NO_LIMIT
| QUERY_BETWEEN of date * date
-type query = query_domain * query_limit
+type query = {
+ dom : query_domain ;
+ lim : query_limit ;
+ all_propagates : bool
+ }
type select_info = { query : query; preselect : string option; }