X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=templates%2FCRM%2Fcommon%2Fjsortable.tpl;h=58139f21ed15e359b7543ce3eebbc71ea50cff1f;hb=07218de046ef00cb6f5be43179f5db18afa0352d;hp=44da77eec7a1e01ba57b183518985ff96681d19a;hpb=a27c1daac036cbb776ce95be934f9104a724b0f8;p=civicrm-core.git diff --git a/templates/CRM/common/jsortable.tpl b/templates/CRM/common/jsortable.tpl index 44da77eec7..58139f21ed 100644 --- a/templates/CRM/common/jsortable.tpl +++ b/templates/CRM/common/jsortable.tpl @@ -1,8 +1,8 @@ {* +--------------------------------------------------------------------+ - | CiviCRM version 4.5 | + | CiviCRM version 4.6 | +--------------------------------------------------------------------+ - | Copyright CiviCRM LLC (c) 2004-2014 | + | Copyright CiviCRM LLC (c) 2004-2015 | +--------------------------------------------------------------------+ | This file is a part of CiviCRM. | | | @@ -32,54 +32,48 @@ } // fetch the occurrence of element - function getRowId(row,str) { + function getRowId(row, str) { var optionId; - $.each( row, function(i, n) { - if( str === $(n).attr('class') ) { + $.each(row, function(i, n) { + if (str === $(n).attr('class')) { optionId = i; } }); return optionId; } - + // for date sorting see http://wiki.civicrm.org/confluence/display/CRMDOC/Sorting+Date+Fields+in+dataTables+Widget - var useAjax = {/literal}{if $useAjax}1{else}0{/if}{literal}; - var sortEnabled = true; - var sourceUrl = ''; - var useClass = 'display'; + var useAjax = {/literal}{if $useAjax}1{else}0{/if}{literal}, + sourceUrl = '', + useClass = 'display', + tcount = 1, + tableId = []; - var tcount =1; if ( useAjax ) { {/literal}{if isset($sourceUrl)}sourceUrl = "{$sourceUrl}";{/if}{literal} useClass = 'pagerDisplay'; - tcount =5; + tcount = 5; } - var tableId = ''; - var count = 1; - - //rename id of table with sequence - //and create the object for navigation - $('table.' + useClass).each(function(){ - $(this).attr('id','option' + tcount + count); - tableId += count + ','; - count++; - }); + CRM.dataTableCount = CRM.dataTableCount || 1; - //remove last comma - tableId = tableId.substring(0, tableId.length - 1 ); - eval('tableId =[' + tableId + ']'); + // FIXME: Rewriting DOM ids is probably a bad idea, and could be avoided + $('table.' + useClass).not('.dataTable').each(function() { + $(this).attr('id','option' + tcount + CRM.dataTableCount); + tableId.push(CRM.dataTableCount); + CRM.dataTableCount++; + }); $.each(tableId, function(i,n){ - tabId = '#option' + tcount + n; + var tabId = '#option' + tcount + n; //get the object of first tr data row. - tdObject = $(tabId + ' tr:nth(1) td'); + var tdObject = $(tabId + ' tr:nth(1) td'); var id = -1; var count = 0; var columns=''; var sortColumn = ''; //build columns array for sorting or not sorting $(tabId + ' th').each( function( ) { var option = $(this).prop('id').split("_"); option = ( option.length > 1 ) ? option[1] : option[0]; - stype = 'numeric'; + var stype = 'numeric'; switch( option ) { case 'sortable': sortColumn += '[' + count + ', "asc" ],'; @@ -91,8 +85,7 @@ if ( $(this).attr('class') == 'sortable' ){ sortColumn += '[' + count + ', "asc" ],'; } - sortId = getRowId(tdObject, $(this).attr('id') +' hiddenElement' ); - sortEnabled = true; + var sortId = getRowId(tdObject, $(this).attr('id') +' hiddenElement' ); columns += '{ "render": function ( data, type, row ) { return "
" + row[sortId] ; }, "targets": sortColumn,"bUseRendered": false},'; break; case 'nosort': @@ -114,49 +107,32 @@ } count++; }); + // Fixme: this could be done without eval columns = columns.substring(0, columns.length - 1 ); sortColumn = sortColumn.substring(0, sortColumn.length - 1 ); eval('sortColumn =[' + sortColumn + ']'); eval('columns =[' + columns + ']'); - var currTable = $(tabId); - if (currTable) { - // contains the dataTables master records - var s = $(document).dataTableSettings; - if (s != 'undefined') { - var len = s.length; - for (var i=0; i < len; i++) { - // if already exists, remove from the array - if (s[i].sInstance = tabId) { - s.splice(i,1); - } - } - } - } - - var noRecordFoundMsg = {/literal}'{ts escape="js"}There are no records.{/ts}'{literal}; + var noRecordFoundMsg = {/literal}'{ts escape="js"}None found.{/ts}'{literal}; - oTable = null; + var oTable; if ( useAjax ) { oTable = $(tabId).dataTable({ - "bFilter" : false, - "bAutoWidth" : false, - "aaSorting" : sortColumn, - "aoColumns" : columns, + "bFilter": false, + "bAutoWidth": false, + "aaSorting": sortColumn, + "aoColumns": columns, "bProcessing": true, - "bJQueryUI" : true, - "asStripClasses" : [ "odd-row", "even-row" ], + "bJQueryUI": true, + "asStripClasses": [ "odd-row", "even-row" ], "sPaginationType": "full_numbers", - "sDom" : '<"crm-datatable-pager-top"lfp>rt<"crm-datatable-pager-bottom"ip>', + "sDom": '<"crm-datatable-pager-top"lfp>rt<"crm-datatable-pager-bottom"ip>', "bServerSide": true, "sAjaxSource": sourceUrl, - "oLanguage":{"sEmptyTable" : noRecordFoundMsg, - "sZeroRecords" : noRecordFoundMsg }, - - {/literal}{if !empty($callBack)}{literal} - "fnDrawCallback": function() { checkSelected(); }, - {/literal}{/if}{literal} - + "oLanguage":{ + "sEmptyTable": noRecordFoundMsg, + "sZeroRecords": noRecordFoundMsg + }, "fnServerData": function ( sSource, aoData, fnCallback ) { $.ajax( { "dataType": 'json', @@ -169,27 +145,27 @@ }); } else { oTable = $(tabId).dataTable({ - "aaSorting" : sortColumn, - "bPaginate" : false, + "aaSorting": sortColumn, + "bPaginate": false, "bLengthChange": true, - "bFilter" : false, - "bInfo" : false, - "asStripClasses" : [ "odd-row", "even-row" ], - "bAutoWidth" : false, - "aoColumns" : columns, - "bSort" : sortEnabled, - "oLanguage":{"sEmptyTable" : noRecordFoundMsg, - "sZeroRecords" : noRecordFoundMsg } + "bFilter": false, + "bInfo": false, + "asStripClasses": [ "odd-row", "even-row" ], + "bAutoWidth": false, + "aoColumns": columns, + "bSort": true, + "oLanguage":{ + "sEmptyTable": noRecordFoundMsg, + "sZeroRecords": noRecordFoundMsg + } }); } - var object; - }); }); //plugin to sort on currency - var symbol = "{/literal}{$config->defaultCurrencySymbol($config->defaultSymbol)}{literal}"; cj.fn.dataTableExt.oSort['currency-asc'] = function(a,b) { + var symbol = "{/literal}{$config->defaultCurrencySymbol($config->defaultSymbol)}{literal}"; var x = (a == "-") ? 0 : a.replace( symbol, "" ); var y = (b == "-") ? 0 : b.replace( symbol, "" ); x = parseFloat( x ); @@ -198,6 +174,7 @@ }; cj.fn.dataTableExt.oSort['currency-desc'] = function(a,b) { + var symbol = "{/literal}{$config->defaultCurrencySymbol($config->defaultSymbol)}{literal}"; var x = (a == "-") ? 0 : a.replace( symbol, "" ); var y = (b == "-") ? 0 : b.replace( symbol, "" ); x = parseFloat( x );