summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/toaster/toastergui/static
diff options
context:
space:
mode:
authorElliot Smith <elliot.smith@intel.com>2016-01-15 13:00:54 +0200
committerRichard Purdie <richard.purdie@linuxfoundation.org>2016-01-15 16:30:00 +0000
commit33b011c1589519db8176c9f5a4abb540698902e6 (patch)
tree104367160098dffb4c05c2120db1c2c8ef470449 /bitbake/lib/toaster/toastergui/static
parentf8d383d87f0b9d4a4c9ae7b1a6c8ceebf90ef9b0 (diff)
downloadpoky-33b011c1589519db8176c9f5a4abb540698902e6.tar.gz
bitbake: toastergui: implement "today" and "yesterday" filters
Add the "today" and "yesterday" filters to the started_on and completed_on columns in the builds table. During this work, some minor adjustments were made to the behaviour of the builds table: * Amend filter action variable names so they're more succinct. * Retain order in which actions are added to a filter, as this ordering is used in the UI when displaying the filter actions. * Always show the table chrome, otherwise it's not possible to edit the columns shown until there are 10 or more results. * Because date range searches may return no results, make sure that the search bar and "show all results" link are visible when the query returns no results. [YOCTO #8738] (Bitbake rev: f17cfa009e58833e0e55884fa04de8abd522b6bc) Signed-off-by: Elliot Smith <elliot.smith@intel.com> Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib/toaster/toastergui/static')
-rw-r--r--bitbake/lib/toaster/toastergui/static/js/table.js56
1 files changed, 31 insertions, 25 deletions
diff --git a/bitbake/lib/toaster/toastergui/static/js/table.js b/bitbake/lib/toaster/toastergui/static/js/table.js
index b0a8ffb8f9..afe16b5e1b 100644
--- a/bitbake/lib/toaster/toastergui/static/js/table.js
+++ b/bitbake/lib/toaster/toastergui/static/js/table.js
@@ -71,22 +71,11 @@ function tableInit(ctx){
71 71
72 if (tableData.total === 0){ 72 if (tableData.total === 0){
73 tableContainer.hide(); 73 tableContainer.hide();
74 /* If we were searching show the new search bar and return */ 74 $("#new-search-input-"+ctx.tableName).val(tableParams.search);
75 if (tableParams.search){ 75 $("#no-results-"+ctx.tableName).show();
76 $("#new-search-input-"+ctx.tableName).val(tableParams.search);
77 $("#no-results-"+ctx.tableName).show();
78 }
79 table.trigger("table-done", [tableData.total, tableParams]); 76 table.trigger("table-done", [tableData.total, tableParams]);
80 77
81 return; 78 return;
82
83 /* We don't want to clutter the place with the table chrome if there
84 * are only a few results */
85 } else if (tableData.total <= 10 &&
86 !tableParams.filter &&
87 !tableParams.search){
88 $("#table-chrome-"+ctx.tableName).hide();
89 pagination.hide();
90 } else { 79 } else {
91 tableContainer.show(); 80 tableContainer.show();
92 $("#no-results-"+ctx.tableName).hide(); 81 $("#no-results-"+ctx.tableName).hide();
@@ -399,13 +388,14 @@ function tableInit(ctx){
399 388
400 /** 389 /**
401 * Create the DOM/JS for the client side of a TableFilterActionToggle 390 * Create the DOM/JS for the client side of a TableFilterActionToggle
391 * or TableFilterActionDay
402 * 392 *
403 * filterName: (string) internal name for the filter action 393 * filterName: (string) internal name for the filter action
404 * filterActionData: (object) 394 * filterActionData: (object)
405 * filterActionData.count: (number) The number of items this filter will 395 * filterActionData.count: (number) The number of items this filter will
406 * show when selected 396 * show when selected
407 */ 397 */
408 function createActionToggle(filterName, filterActionData) { 398 function createActionRadio(filterName, filterActionData) {
409 var actionStr = '<div class="radio">' + 399 var actionStr = '<div class="radio">' +
410 '<input type="radio" name="filter"' + 400 '<input type="radio" name="filter"' +
411 ' value="' + filterName + '"'; 401 ' value="' + filterName + '"';
@@ -471,8 +461,7 @@ function tableInit(ctx){
471 minDate: new Date(filterActionData.min) 461 minDate: new Date(filterActionData.min)
472 }; 462 };
473 463
474 // create date pickers, setting currently-selected from and to 464 // create date pickers, setting currently-selected from and to dates
475 // dates
476 var selectedFrom = null; 465 var selectedFrom = null;
477 var selectedTo = null; 466 var selectedTo = null;
478 467
@@ -496,6 +485,20 @@ function tableInit(ctx){
496 action.find('[data-date-to-for]').datepicker(options); 485 action.find('[data-date-to-for]').datepicker(options);
497 inputTo.val(selectedTo); 486 inputTo.val(selectedTo);
498 487
488 // if the radio button is checked and one or both of the datepickers are
489 // empty, populate them with today's date
490 radio.change(function () {
491 var now = new Date();
492
493 if (inputFrom.val() === '') {
494 inputFrom.datepicker('setDate', now);
495 }
496
497 if (inputTo.val() === '') {
498 inputTo.datepicker('setDate', now);
499 }
500 });
501
499 // set filter_value based on date pickers when 502 // set filter_value based on date pickers when
500 // one of their values changes 503 // one of their values changes
501 var changeHandler = function () { 504 var changeHandler = function () {
@@ -553,7 +556,8 @@ function tableInit(ctx){
553 { 556 {
554 title: '<label for radio button inside the popup>', 557 title: '<label for radio button inside the popup>',
555 name: '<name of the filter action>', 558 name: '<name of the filter action>',
556 count: <number of items this filter will show> 559 count: <number of items this filter will show>,
560 ... additional data for the action ...
557 } 561 }
558 ] 562 ]
559 } 563 }
@@ -567,11 +571,12 @@ function tableInit(ctx){
567 filter 571 filter
568 572
569 the filterName is set on the column filter icon, and corresponds 573 the filterName is set on the column filter icon, and corresponds
570 to a value in the table's filters property 574 to a value in the table's filter map
571 575
572 when the filter popup's "Apply" button is clicked, the 576 when the filter popup's "Apply" button is clicked, the
573 value for the radio button which is checked is passed in the 577 value for the radio button which is checked is passed in the
574 querystring and applied to the queryset on the table 578 querystring, along with a filter_value, and applied to the
579 queryset on the table
575 */ 580 */
576 var filterActionRadios = $('#filter-actions-' + ctx.tableName); 581 var filterActionRadios = $('#filter-actions-' + ctx.tableName);
577 582
@@ -587,10 +592,12 @@ function tableInit(ctx){
587 var filterName = filterData.name + ':' + 592 var filterName = filterData.name + ':' +
588 filterActionData.action_name; 593 filterActionData.action_name;
589 594
590 if (filterActionData.type === 'toggle') { 595 if (filterActionData.type === 'toggle' ||
591 action = createActionToggle(filterName, filterActionData); 596 filterActionData.type === 'day') {
597 action = createActionRadio(filterName, filterActionData);
592 } 598 }
593 else if (filterActionData.type === 'daterange') { 599 else if (filterActionData.type === 'daterange') {
600 // current values for the from/to dates
594 var filterValue = tableParams.filter_value; 601 var filterValue = tableParams.filter_value;
595 602
596 action = createActionDateRange( 603 action = createActionDateRange(
@@ -601,7 +608,7 @@ function tableInit(ctx){
601 } 608 }
602 609
603 if (action) { 610 if (action) {
604 // Setup the current selected filter, default to 'all' if 611 // Setup the current selected filter; default to 'all' if
605 // no current filter selected 612 // no current filter selected
606 var radioInput = action.children('input[name="filter"]'); 613 var radioInput = action.children('input[name="filter"]');
607 if ((tableParams.filter && 614 if ((tableParams.filter &&
@@ -707,13 +714,12 @@ function tableInit(ctx){
707 tableParams.filter + "']"); 714 tableParams.filter + "']");
708 tableParams.filter_value = checkedFilterValue.val(); 715 tableParams.filter_value = checkedFilterValue.val();
709 716
710 var filterBtn = $("#" + tableParams.filter.split(":")[0]);
711
712 /* All === remove filter */ 717 /* All === remove filter */
713 if (tableParams.filter.match(":all$")) { 718 if (tableParams.filter.match(":all$")) {
714 tableParams.filter = null; 719 tableParams.filter = null;
715 filterBtnActive(filterBtn, false); 720 tableParams.filter_value = null;
716 } else { 721 } else {
722 var filterBtn = $("#" + tableParams.filter.split(":")[0]);
717 filterBtnActive(filterBtn, true); 723 filterBtnActive(filterBtn, true);
718 } 724 }
719 725