Необходимо отсортировать таблицу и получить URL-адрес и поделиться с другими, который показывает отсортированный результат
У меня есть таблица, которую я сортирую по нескольким столбцам (используя shift+click), используя jquery.tablesorter.combined.js и используя виджет saveSort для сохранения сортировки.
Есть ли способ, как я могу отсортировать это на стороне сервера и получить URL, чтобы я мог скопировать и вставить URL и поделиться этим результатом с другими через URL? Загрузка этого URL должна дать мне отсортированную таблицу как есть.
пожалуйста, дайте мне знать
заранее спасибо
1 ответ
В итоге я создал виджет для добавления текущей сортировки в хеш. Он не был тщательно протестирован и, по-видимому, не работает в этой демонстрации из-за невозможности установить хэш на внутреннем фрейме. Это работает в полной странице демо.
/*! Widget: sort2Hash */
;( function( $ ) {
'use strict';
var ts = $.tablesorter || {},
s2h = {
init : function( c, wo ) {
var arry, indx, len, column, direction,
sort = s2h.getSort( c, wo );
if (sort) {
arry = sort.split( wo.sort2Hash_separator );
len = arry.length;
sort = [];
for ( indx = 0; indx < len; indx++ ) {
column = arry[ indx++ ];
direction = arry[ indx ];
if ( typeof direction !== 'undefined' ) {
sort.push( [ column, direction ] );
}
}
if ( sort.length ) {
c.sortList = sort;
}
}
c.$table.on( 'sortEnd.sort2hash', function() {
s2h.setHash( c, wo );
});
},
getTableId : function( c, wo ) {
return wo.sort2Hash_tableId ||
c.table.id ||
'table' + $( 'table' ).index( c.$table );
},
getSort : function( c, wo, clean ) {
// modified original code from http://www.netlobo.com/url_query_string_javascript.html
var name = s2h.getTableId( c, wo ).replace( /[\[]/, '\\[' ).replace( /[\]]/, '\\]' ),
sort = ( new RegExp( '[\\#&]' + name + '=([^&]*)' ) ).exec( window.location.hash );
if ( sort === null ) {
return '';
} else {
if ( clean ) {
window.location.hash = window.location.hash.replace( '&' + name + '=' + sort[ 1 ], '' );
}
return sort[ 1 ];
}
},
setHash : function( c, wo ) {
var hash, indx,
arry = [],
tableId = s2h.getTableId( c, wo ) + '=',
sort = c.sortList || [],
len = sort.length;
if ( len ) {
s2h.getSort( c, wo, true ); // remove hash
window.location.hash += ( window.location.hash.length ? '' : wo.sort2Hash_hash ) +
'&' + tableId +
// flatten array, then join with separator
[].concat.apply( [], sort ).join( wo.sort2Hash_separator );
}
}
};
ts.addWidget({
id: 'sort2Hash',
options: {
sort2Hash_hash : '#', // hash prefix
sort2Hash_separator : '-', // don't '#' or '=' here
sort2Hash_tableId : null // this option > table ID > table index on page
},
init: function(table, thisWidget, c, wo) {
s2h.init( c, wo );
},
remove: function(table, c) {
c.$table.off( 'sortEnd.sort2hash' );
}
});
})(jQuery);
$(function() {
$( 'table' ).tablesorter({
theme: 'blue',
widgets: [ 'zebra', 'sort2Hash' ],
widgetOptions : {
// hash prefix
sort2Hash_hash : '#',
// don't '#' or '=' here
sort2Hash_separator : ',',
// this option > table ID > table index on page
sort2Hash_tableId : null
}
});
});
Я включу этот виджет в следующее обновление моего форка таблиц сортировки.