Resources/views/Internal/script.html.twig
/*** datatable[{{id}}]: ***/
$(document).ready(function(){
function getId() { return "{{id}}"; };
function getWrapper() { return "#{{id}}_wrapper"; };
var s = getWrapper();
var multiple = {% if multiple %} true {% else %} false {% endif %};
var multiple_rawhtml = '';
{% if multiple %}
var multiple_rawhtml = '\
<label class="dataTables_multiple">\
<span style="margin:0 40px 0 0px;">\
Execute\
<select name="dataTables[select]" class="form-control input-sm">\
{% for key,item in multiple %}\
<option value="{{ path(item.route) }}">{{item.title}}</option>\
{% endfor %}\
</select>\
<button class="btn-datatable-multiple btn btn-default btn-sm">OK</button>\
<span>\
</label>';
{% endif %}
var $js_conf = {{ js_conf | raw }};
var $js = {};
for(key in $js_conf) {
if ($js_conf.hasOwnProperty(key)) {
eval ( ' $js["'+key+'"] = ' + $js_conf[key]+ ' ; ' );
}
}
var $options = {{ js | raw }};
var $opts = {};
for(key in $options) {
if ($options.hasOwnProperty(key)) {
$opts[key] = $options[key];
try{
var type = typeof (eval (' tmp = ' + $options[key] + ' ; '));
if (type == 'object' || type == 'function'){
eval (' $opts["' + key + '"] = ' + $options[key] + ' ; ');
}
}catch (e){ }
}
}
$options = $opts;
var $aoColumnDefs = new Array();
{% if multiple %}
$aoColumnDefs.push({ 'bSortable': false, 'aTargets': [ 0 ] });
{% endif %}
{% if action and not action_twig %}
$aoColumnDefs.push({
"mRender": function ( data, type, full ) {
var $edit_url = "{{ path(edit_route , { 'id': "xx" }) }}".replace("xx", data);
var $link_edit = "<a style='float:right; margin-right:10px' class='dialog' title='edit' ";
$link_edit += "href='"+$edit_url+"'>";
$link_edit += '<span class="glyphicon glyphicon-edit" aria-hidden="true"></span></a>';
var $delete_url = "{{ path(delete_route, { 'id': "xx" }) }}".replace("xx", data);
var $link_delete = "<form style='float:right' class='form' action='"+$delete_url+"' method='post'>";
$link_delete += '{{ form_widget(delete_form) }}'.replace("_id_", data);
$link_delete += "<a class='button-delete' title='delete' href type='submit'><span class='glyphicon glyphicon-remove' aria-hidden='true'></span></a>";
$link_delete += " </form>";
var $out = $link_delete+ " " + $link_edit ;
if (data == null )
{
$out = "<div style='float:right'>{{ 'ali.common.no_action'|dta_trans() }}</div>";
}
return $out
},
"aTargets": [ multiple ? {{fields|length}} : ({{fields|length}} -1) ]
});
{% endif %}
var $defaults = {
"bJQueryUI": false,
"sPaginationType": "full_numbers",
"aLengthMenu": [[5,10, 25, 50, -1], [5,10, 25, 50, "{{ 'ali.common.all_items'|dta_trans() }}"]],
"iDisplayLength": 10,
"bServerSide": true,
"bProcessing": true,
"sAjaxSource": null,
"bPaginate": true,
{% if sort %}
"aaSorting": [[ {{sort[0]}}, "{{sort[1]}}" ]],
{% endif %}
"bLengthChange": true,
"aoColumnDefs": $aoColumnDefs,
"fnDrawCallback": function(oSettings) {
var s = getWrapper();
if( multiple && $('.dataTables_multiple',$(s)).length==0){
$(s+' .dataTables_length').prepend(multiple_rawhtml);
}
},
"bSort": true,
"bFilter": {% if search %} true {% else %} false {% endif %},
"oLanguage": {
"sProcessing": '{{ 'ali.common.sProcessing' | dta_trans() }}',
"sLengthMenu": '{{ 'ali.common.sLengthMenu' | dta_trans() }}',
"sZeroRecords": '{{ 'ali.common.sZeroRecords' | dta_trans() }}',
"sInfo": '{{ 'ali.common.sInfo' | dta_trans() }}',
"sInfoEmpty": '{{ 'ali.common.sInfoEmpty' | dta_trans() }}',
"sInfoFiltered": '{{ 'ali.common.sInfoFiltered' | dta_trans() }}',
"sInfoPostFix": '{{ 'ali.common.sInfoPostFix' | dta_trans() }}',
"sSearch": '{{ 'ali.common.sSearch' | dta_trans() }}',
"sLoadingRecords": '{{ 'ali.common.sLoadingRecords' | dta_trans() }}',
"sUrl": "",
"oPaginate": {
"sFirst": '{{ 'ali.common.sFirst' | dta_trans() }}',
"sPrevious": '{{ 'ali.common.sPrevious' | dta_trans() }}',
"sNext": '{{ 'ali.common.sNext' | dta_trans() }}',
"sLast": '{{ 'ali.common.sLast' | dta_trans() }}'
}
},
"bAutoWidth" : false
};
$.extend($defaults,$js);
$.extend($defaults,$options);
$('#{{id}}').trigger('datatables_init', $defaults );
eval("var "+ "oTable_"+'{{id}}'.split('-').join('_') + " = $('#{{id}}').dataTable($defaults)");
$(s).on('click','.button-delete:parent',function(e){
if (!confirm('{{ 'ali.common.confirm_delete'|dta_trans() }}')) {
return false;
}
$(this).parents('form:eq(0)').submit();
});
if (multiple===true) {
var chbox = 'input:checkbox[name="dataTables[actions][]"]';
var chbox_all = 'input:checkbox[name="datatable_action_all"]';
$(s).on('click','.btn-datatable-multiple:not(.search_init)',function(e){
if($('input:focus',$(s)).length > 0){
return false;
}
e.preventDefault();
if($(chbox+':checked').length > 0){
if (!confirm('Are you sure ?')) {
return false;
}
var form = $(this).parents('form:eq(0)');
var action = $('select[name="dataTables[select]"]',$(s)).val();
$.ajax({
type: "POST",
url: action,
data: form.serialize(),
success: function(msg) {
$('#'+getId()).dataTable().fnDraw();
if ($.isFunction($.fn.unblockpage)){
$.unblockpage();
}
},
beforeSend: function() {
if ($.isFunction($.fn.blockpage)){
$.blockpage({
msg: 'saving data'
});
}
}
});
} else {
alert('You need to select at least one element.');
}
});
$(s).on('click',chbox_all,function(e){
if($(this).is(':checked')) {
$(chbox,$(s)).attr("checked",false).click();
} else {
$(chbox,$(s)).attr("checked",true).click();
}
});
}
{% if search %}
$(".dataTables_filter").remove();
var search_selector = "#{{id}} input[searchable=true]";
var timeout;
$(search_selector).keyup( function (e) {
if ($.inArray(e.which, [9, 16]) == -1) {
var index = $(this).attr('index');
var self = this;
clearTimeout(timeout);
timeout = setTimeout(function () {
var oTable = eval('oTable_{{id}}'.split('-').join('_'));
oTable.fnFilter(
self.value,
oTable.oApi._fnVisibleToColumnIndex(
oTable.fnSettings(),
index
)
);
}, 700);
}
}).each( function (i) {
this.initVal = this.value;
}).focus( function () {
if ( this.className.match(/\bsearch_init\b/) ){
this.className.replace(/\bsearch_init\b/g, '').trim();
}
}).blur( function (i) {
if ( this.value == "" ){
this.className = (this.className.match(/\bsearch_init\b/)) ? this.className : this.className.trim() + " search_init";
this.value = this.initVal;
}
});
{% endif %}
});