diff options
author | David Reyna <David.Reyna@windriver.com> | 2015-03-21 18:01:38 -0700 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2015-03-25 12:39:53 +0000 |
commit | 6a934f488fd636829efbcb24058f92621e5a9fc6 (patch) | |
tree | cce4aaacc49ba4c179573de7f4ff2f2017044707 /bitbake/lib/toaster/toastergui/static/js | |
parent | e840b7a8fba16b857db4e74dd8331680a21e5eb1 (diff) | |
download | ast2050-yocto-poky-6a934f488fd636829efbcb24058f92621e5a9fc6.zip ast2050-yocto-poky-6a934f488fd636829efbcb24058f92621e5a9fc6.tar.gz |
bitbake: toaster: build date range selections
Enable date range selections for build start and build complete in all
builds page for both managed and interactive mode. Disable the filter
counts.
[YOCTO #6040]
[YOCTO #7249]
[YOCTO #7461]
(Bitbake rev: 7c86ed5fb51c6237fa40fb454e58564ef027dd51)
Signed-off-by: David Reyna <David.Reyna@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib/toaster/toastergui/static/js')
-rwxr-xr-x | bitbake/lib/toaster/toastergui/static/js/filtersnippet.js | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/bitbake/lib/toaster/toastergui/static/js/filtersnippet.js b/bitbake/lib/toaster/toastergui/static/js/filtersnippet.js new file mode 100755 index 0000000..27b057e --- /dev/null +++ b/bitbake/lib/toaster/toastergui/static/js/filtersnippet.js @@ -0,0 +1,95 @@ +"use strict" + +// The disable removes the 'datepicker' attribute and +// settings, so you have to re-initialize it each time +// the date range is selected and enabled +// DOM is used instead of jQuery to find the elements +// in all contexts +function date_enable (key, action) { + + var elemFrom=document.getElementById("date_from_"+key); + var elemTo=document.getElementById("date_to_"+key); + + if ('enable' == action) { + elemFrom.removeAttribute("disabled"); + elemTo.removeAttribute("disabled"); + + $(elemFrom).datepicker(); + $(elemTo).datepicker(); + + $(elemFrom).datepicker( "option", "dateFormat", "dd/mm/yy" ); + $(elemTo).datepicker( "option", "dateFormat", "dd/mm/yy" ); + + $(elemFrom).datepicker( "setDate", elemFrom.getAttribute( "data-setDate") ); + $(elemTo).datepicker( "setDate", elemTo.getAttribute( "data-setDate") ); + $(elemFrom).datepicker( "option", "minDate", elemFrom.getAttribute( "data-minDate")); + $(elemTo).datepicker( "option", "minDate", elemTo.getAttribute( "data-minDate")); + $(elemFrom).datepicker( "option", "maxDate", elemFrom.getAttribute( "data-maxDate")); + $(elemTo).datepicker( "option", "maxDate", elemTo.getAttribute( "data-maxDate")); + } else { + elemFrom.setAttribute("disabled","disabled"); + elemTo.setAttribute("disabled","disabled"); + } +} + +// Initialize the date picker elements with their default state variables, and +// register the radio button and form actions +function date_init (key, from_date, to_date, min_date, max_date, initial_enable) { + + var elemFrom=document.getElementById("date_from_"+key); + var elemTo=document.getElementById("date_to_"+key); + + // Were there any daterange filters instantiated? (e.g. no builds found) + if (null == elemFrom) { + return; + } + + // init the datepicker context data + elemFrom.setAttribute( "data-setDate", from_date ); + elemTo.setAttribute( "data-setDate", to_date ); + elemFrom.setAttribute( "data-minDate", min_date); + elemTo.setAttribute( "data-minDate", min_date); + elemFrom.setAttribute( "data-maxDate", max_date); + elemTo.setAttribute( "data-maxDate", max_date); + + // does the date set start enabled? + if (key == initial_enable) { + date_enable (key, "enable"); + } else { + date_enable (key, "disable"); + } + + // catch the radio button selects for enable/disable + $('input:radio[name="filter"]').change(function(){ + if ($(this).val() == 'daterange') { + key=$(this).attr("data-key"); + date_enable (key, 'enable'); + } else { + key=$(this).attr("data-key"); + date_enable (key, 'disable'); + } + }); + + // catch any new 'from' date as minDate for 'to' date + $("#date_from_"+key).change(function(){ + from_date = $("#date_from_"+key).val(); + $("#date_to_"+key).datepicker( "option", "minDate", from_date ); + }); + + // catch the submit (just once) + $("form").unbind('submit'); + $("form").submit(function(e) { + // format a composite daterange filter value so that it can be parsed and post-processed in the view + var key=e.originalEvent.explicitOriginalTarget.getAttribute("data-key") + if (typeof key != "undefined") { + if ($("#date_from_"+key).length) { + var filter=key+"__gte!"+key+"__lt:"+$("#date_from_"+key).val()+"!"+$("#date_to_"+key).val()+"_daterange"; + $("#last_date_from_"+key).val($("#date_from_"+key).val()); + $("#last_date_to_"+key).val($("#date_to_"+key).val()); + $("#filter_value_"+key).val(filter); + } + } + return true; + }); + +}; |