# # patch "query.ml" # from [3142c52cfb08b083bef4d35b56007d0a56c17b50] # to [a3f2ba644a7f258dbbb7161b411565fe8acf410e] # ======================================================================== --- query.ml 3142c52cfb08b083bef4d35b56007d0a56c17b50 +++ query.ml a3f2ba644a7f258dbbb7161b411565fe8acf410e @@ -1,19 +1,14 @@ open Viz_types module Selector = struct - let date_limit sel = function - | QUERY_NO_LIMIT -> sel - | QUERY_BETWEEN (d1, d2) -> - Printf.sprintf "l:%s/e:%s/%s" d1 d2 sel - let make_selectors g sel = match Agraph.get_query g with | QUERY_ALL, lim -> - [ date_limit sel lim ] + [ sel ] | QUERY_BRANCHES br, lim -> List.map - (fun b -> date_limit (Printf.sprintf "b:%s/%s" b sel) lim) + (fun b -> Printf.sprintf "b:%s/%s" b sel) br let running_select = ref None @@ -26,6 +21,16 @@ | _ -> () + let has_date_limit g = + match Agraph.get_query g with + | _, QUERY_NO_LIMIT -> false + | _ -> true + + let filter_present g = function + | `IDS ids when has_date_limit g -> + `IDS (List.filter (Agraph.mem g) ids) + | x -> x + let select ctrl db g sel cont = let id = Database.run_monotone_select @@ -34,7 +39,7 @@ (ctrl#status "search") (fun r -> running_select := None ; - cont r) + cont (filter_present g r)) (make_selectors g sel) in running_select := Some id