diff options
Diffstat (limited to 'import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/js/filtersnippet.js')
-rwxr-xr-x | import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/js/filtersnippet.js | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/js/filtersnippet.js b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/js/filtersnippet.js new file mode 100755 index 0000000000..2b84c546cd --- /dev/null +++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/js/filtersnippet.js @@ -0,0 +1,94 @@ +"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 + if (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; + }); + +}; |