mirror of
https://github.com/apache/impala.git
synced 2025-12-19 18:12:08 -05:00
In the "Fragment Instances" page of a query, even though it is possible to sort the rows based on the fragment's name, it is difficult to distinguish between fragments and their instances. With row grouping based on fragment's name, it becomes easier to distinguish one fragment's instance from the other. The lexographical sorting of instances can still be done based on different columns, which splits the fragment's group and orders the rows lexicographically only based on the column's values. Row grouping has been implemented using the "RowGroup" extension for datatables - https://datatables.net/extensions/rowgroup/. Datatable libraries and its extensions have been added under the directory - "www/datatables". The datatable library's license has been updated according to version 1.13.2, which was previously not updated. The related row grouping extension's license has also been included. Change-Id: If2b7ed6e2a6d605553242a7db4dbeaa7fcae4606 Reviewed-on: http://gerrit.cloudera.org:8080/22226 Reviewed-by: Impala Public Jenkins <impala-public-jenkins@cloudera.com> Tested-by: Impala Public Jenkins <impala-public-jenkins@cloudera.com>
193 lines
4.8 KiB
JavaScript
193 lines
4.8 KiB
JavaScript
/*! DataTables Foundation integration
|
|
* ©2011-2015 SpryMedia Ltd - datatables.net/license
|
|
*/
|
|
|
|
(function( factory ){
|
|
if ( typeof define === 'function' && define.amd ) {
|
|
// AMD
|
|
define( ['jquery', 'datatables.net'], function ( $ ) {
|
|
return factory( $, window, document );
|
|
} );
|
|
}
|
|
else if ( typeof exports === 'object' ) {
|
|
// CommonJS
|
|
module.exports = function (root, $) {
|
|
if ( ! root ) {
|
|
// CommonJS environments without a window global must pass a
|
|
// root. This will give an error otherwise
|
|
root = window;
|
|
}
|
|
|
|
if ( ! $ ) {
|
|
$ = typeof window !== 'undefined' ? // jQuery's factory checks for a global window
|
|
require('jquery') :
|
|
require('jquery')( root );
|
|
}
|
|
|
|
if ( ! $.fn.dataTable ) {
|
|
require('datatables.net')(root, $);
|
|
}
|
|
|
|
return factory( $, root, root.document );
|
|
};
|
|
}
|
|
else {
|
|
// Browser
|
|
factory( jQuery, window, document );
|
|
}
|
|
}(function( $, window, document, undefined ) {
|
|
'use strict';
|
|
var DataTable = $.fn.dataTable;
|
|
|
|
|
|
|
|
/**
|
|
* DataTables integration for Foundation. This requires Foundation 5 and
|
|
* DataTables 1.10 or newer.
|
|
*
|
|
* This file sets the defaults and adds options to DataTables to style its
|
|
* controls using Foundation. See http://datatables.net/manual/styling/foundation
|
|
* for further information.
|
|
*/
|
|
|
|
// Detect Foundation 5 / 6 as they have different element and class requirements
|
|
var meta = $('<meta class="foundation-mq"/>').appendTo('head');
|
|
DataTable.ext.foundationVersion = meta.css('font-family').match(/small|medium|large/) ? 6 : 5;
|
|
meta.remove();
|
|
|
|
|
|
$.extend( DataTable.ext.classes, {
|
|
sWrapper: "dataTables_wrapper dt-foundation",
|
|
sProcessing: "dataTables_processing panel callout"
|
|
} );
|
|
|
|
|
|
/* Set the defaults for DataTables initialisation */
|
|
$.extend( true, DataTable.defaults, {
|
|
dom:
|
|
"<'row grid-x'<'small-6 columns cell'l><'small-6 columns cell'f>r>"+
|
|
"t"+
|
|
"<'row grid-x'<'small-6 columns cell'i><'small-6 columns cell'p>>",
|
|
renderer: 'foundation'
|
|
} );
|
|
|
|
|
|
/* Page button renderer */
|
|
DataTable.ext.renderer.pageButton.foundation = function ( settings, host, idx, buttons, page, pages ) {
|
|
var api = new DataTable.Api( settings );
|
|
var classes = settings.oClasses;
|
|
var lang = settings.oLanguage.oPaginate;
|
|
var aria = settings.oLanguage.oAria.paginate || {};
|
|
var btnDisplay, btnClass;
|
|
var tag;
|
|
var v5 = DataTable.ext.foundationVersion === 5;
|
|
|
|
var attach = function( container, buttons ) {
|
|
var i, ien, node, button;
|
|
var clickHandler = function ( e ) {
|
|
e.preventDefault();
|
|
if ( !$(e.currentTarget).hasClass('unavailable') && api.page() != e.data.action ) {
|
|
api.page( e.data.action ).draw( 'page' );
|
|
}
|
|
};
|
|
|
|
for ( i=0, ien=buttons.length ; i<ien ; i++ ) {
|
|
button = buttons[i];
|
|
|
|
if ( Array.isArray( button ) ) {
|
|
attach( container, button );
|
|
}
|
|
else {
|
|
btnDisplay = '';
|
|
btnClass = '';
|
|
tag = null;
|
|
|
|
switch ( button ) {
|
|
case 'ellipsis':
|
|
btnDisplay = '…';
|
|
btnClass = 'unavailable disabled';
|
|
tag = null;
|
|
break;
|
|
|
|
case 'first':
|
|
btnDisplay = lang.sFirst;
|
|
btnClass = button + (page > 0 ?
|
|
'' : ' unavailable disabled');
|
|
tag = page > 0 ? 'a' : null;
|
|
break;
|
|
|
|
case 'previous':
|
|
btnDisplay = lang.sPrevious;
|
|
btnClass = button + (page > 0 ?
|
|
'' : ' unavailable disabled');
|
|
tag = page > 0 ? 'a' : null;
|
|
break;
|
|
|
|
case 'next':
|
|
btnDisplay = lang.sNext;
|
|
btnClass = button + (page < pages-1 ?
|
|
'' : ' unavailable disabled');
|
|
tag = page < pages-1 ? 'a' : null;
|
|
break;
|
|
|
|
case 'last':
|
|
btnDisplay = lang.sLast;
|
|
btnClass = button + (page < pages-1 ?
|
|
'' : ' unavailable disabled');
|
|
tag = page < pages-1 ? 'a' : null;
|
|
break;
|
|
|
|
default:
|
|
btnDisplay = button + 1;
|
|
btnClass = page === button ?
|
|
'current' : '';
|
|
tag = page === button ?
|
|
null : 'a';
|
|
break;
|
|
}
|
|
|
|
if ( v5 ) {
|
|
tag = 'a';
|
|
}
|
|
|
|
if ( btnDisplay ) {
|
|
var disabled = btnClass.indexOf('disabled') !== -1;
|
|
|
|
node = $('<li>', {
|
|
'class': classes.sPageButton+' '+btnClass,
|
|
'id': idx === 0 && typeof button === 'string' ?
|
|
settings.sTableId +'_'+ button :
|
|
null
|
|
} )
|
|
.append( tag ?
|
|
$('<'+tag+'/>', {
|
|
'href': disabled ? null : '#',
|
|
'aria-controls': settings.sTableId,
|
|
'aria-disabled': disabled ? 'true' : null,
|
|
'aria-label': aria[ button ],
|
|
'aria-role': 'link',
|
|
'aria-current': btnClass === 'current' ? 'page' : null,
|
|
'tabindex': settings.iTabIndex,
|
|
} ).html( btnDisplay ) :
|
|
btnDisplay
|
|
)
|
|
.appendTo( container );
|
|
|
|
settings.oApi._fnBindAction(
|
|
node, {action: button}, clickHandler
|
|
);
|
|
}
|
|
}
|
|
}
|
|
};
|
|
|
|
attach(
|
|
$(host).empty().html('<ul class="pagination"/>').children('ul'),
|
|
buttons
|
|
);
|
|
};
|
|
|
|
|
|
return DataTable;
|
|
}));
|