{*
+--------------------------------------------------------------------+
- | 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. |
| |
}
// 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" ],';
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 "<div style=\'display:none\'>"+ data +"</div>" + row[sortId] ; }, "targets": sortColumn,"bUseRendered": false},';
break;
case 'nosort':
}
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',
});
} 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 );
};
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 );