On 22/04/2016 12:34, "[email protected] on behalf of Elliot Smith" <[email protected] on behalf of [email protected]> wrote:
>If a column is hidden while being used as the sort column for >a ToasterTable, and the default sort column for the table uses >a reverse sort (e.g. -completed_on), we don't catch the correspondence >between the default orderby for the table and this column. The >result is that the sort stays on the hidden column. > >Fix this by making sure that we consider default_orderby params >which have a leading "-". > >Also fix how we determine the default sort order for a table, so that >when the sort is reverted, and the table has a default reverse sort >like "-completed_on", reapply that reverse sort. (Previously, we >sorted by the column, but only in ascending order.) > >[YOCTO #9011] This works for me in the 2 offending tables left: all builds and project builds. Thanks! Belén > >Signed-off-by: Elliot Smith <[email protected]> >--- > bitbake/lib/toaster/toastergui/static/js/table.js | 48 >++++++++++++++++++----- > 1 file changed, 39 insertions(+), 9 deletions(-) > >diff --git a/bitbake/lib/toaster/toastergui/static/js/table.js >b/bitbake/lib/toaster/toastergui/static/js/table.js >index f738144..eecd2b6 100644 >--- a/bitbake/lib/toaster/toastergui/static/js/table.js >+++ b/bitbake/lib/toaster/toastergui/static/js/table.js >@@ -219,6 +219,17 @@ function tableInit(ctx){ > var title = $('<a href=\"#\" ></a>'); > > title.data('field-name', col.field_name); >+ >+ // track the direction of the ordering to apply when this column >+ // is clicked (desc/asc); this enables us to apply the correct >+ // orderby direction if the sort reverts to the default, e.g. >+ // when the current column being used for sorting is hidden >+ var direction = 'asc'; >+ if ('-' + col.field_name === tableData.default_orderby) { >+ direction = 'desc'; >+ } >+ title.attr('data-orderby-direction', direction); >+ > title.text(col.title); > title.click(sortColumnClicked); > >@@ -239,10 +250,12 @@ function tableInit(ctx){ > } > } > >- if (col.field_name === tableData.default_orderby){ >- title.addClass("default-orderby"); >- } >- >+ // remove leading "-" (used for reverse default orderby) >+ var default_orderby = tableData.default_orderby; >+ default_orderby = default_orderby.replace(/^\-/, ""); >+ if (col.field_name === default_orderby){ >+ title.addClass("default-orderby"); >+ } > } else { > /* Not orderable */ > header.css("font-weight", "normal"); >@@ -346,19 +359,36 @@ function tableInit(ctx){ > function sortColumnClicked(e){ > e.preventDefault(); > >+ var fieldName = $(this).data('field-name'); >+ var alreadySorted = $(this).hasClass('sorted'); >+ > /* We only have one sort at a time so remove any existing sort >indicators */ > $("#"+ctx.tableName+" th .icon-caret-down").hide(); > $("#"+ctx.tableName+" th .icon-caret-up").hide(); > $("#"+ctx.tableName+" th a").removeClass("sorted"); > >- var fieldName = $(this).data('field-name'); >+ var sortDescending = false; > >- /* if we're already sorted sort the other way */ >- if (tableParams.orderby === fieldName && >- tableParams.orderby.indexOf('-') === -1) { >+ if (alreadySorted) { >+ // if we're already sorted by this column, sort the other way >+ if (tableParams.orderby.indexOf('-') === -1) { >+ // currently sorted in ascending order, so reverse it >+ sortDescending = true; >+ } >+ } >+ else { >+ // set the sort order according to the default sort order for this >field >+ if ($(this).attr('data-orderby-direction') === 'desc') { >+ sortDescending = true; >+ } >+ } >+ >+ // apply the sort >+ if (sortDescending) { > tableParams.orderby = '-' + $(this).data('field-name'); > $(this).parent().children('.icon-caret-up').show(); >- } else { >+ } >+ else { > tableParams.orderby = $(this).data('field-name'); > $(this).parent().children('.icon-caret-down').show(); > } >-- >1.9.3 > >--------------------------------------------------------------------- >Intel Corporation (UK) Limited >Registered No. 1134945 (England) >Registered Office: Pipers Way, Swindon SN3 1RJ >VAT No: 860 2173 47 > >This e-mail and any attachments may contain confidential material for >the sole use of the intended recipient(s). Any review or distribution >by others is strictly prohibited. If you are not the intended >recipient, please contact the sender and delete all copies. > >-- >_______________________________________________ >toaster mailing list >[email protected] >https://lists.yoctoproject.org/listinfo/toaster -- _______________________________________________ toaster mailing list [email protected] https://lists.yoctoproject.org/listinfo/toaster
