source: https://stackoverflow.com/questions/25757968/bootstrap-modal-is-not-a-function
check the forth answer.
solution:
jQuery.noConflict();
$('#id-mdl').modal('show');
"Catatan hal2 yg ingin dipelajari...."
source: https://stackoverflow.com/questions/25757968/bootstrap-modal-is-not-a-function
check the forth answer.
solution:
jQuery.noConflict();
$('#id-mdl').modal('show');
For everyone who is fucked up with forEach on JSON object.
Find solution in this link
https://codedamn.com/news/javascript/how-to-fix-typeerror-foreach-is-not-a-function-in-javascript
or something like this
var myval = JSON.parse(results);
Object.entries(myval).forEach(entry => {
[key, value] = entry;
console.log(entry);
});
ini_set('date.timezone', 'Asia/Jakarta');
$ts = date('Y-m-d H:i:s');
Short post, in case I need it later.
So my problem was, I have several datatables in one page and each datatable has download buttons. Normaly, datatable will use the page's title as the name of the downloaded file. But I have more than one datatables and I want the downloaded file has different name.
And here is the solution.
$('#zero_configuration_table').DataTable( {
dom: 'Bfrtip',
buttons: [
{extend:'excelHtml5', title: 'Dashboard Tracer Study'},
{extend:'pdfHtml5', title: 'PDF Dashboard Tracer Study'}
],
scrollX: true,
scrollCollapse: true,
paging: false,
fixedColumns: false,
autoWidth: false,
});
Ok, I had a problem to solve the problem I mentioned in the title of this post.
So, I combined two solution from two sources (Actually I've browsed to several websites and discussions).
These are my sources: Source 1, Source 2.
I use ajax to retrieve the data and then add them dynamically to the table. Then, I want to align the text to center and add onclick event on each row.
So here is my Table:
<div class="table-responsive">
<table class="table table-striped table-bordered"
id="transaction_detail" cellspacing="0" width="100%">
<thead>
<tr class="text-center align-middle">
<th>Name</th>
<th>email</th>
<th>Phone</th>
<th>Transactions</th>
<th>Turnover</th>
</tr>
</thead>
<tbody >
</tbody>
</table>
</div>
And here is my Ajax:
$.ajax({
type:"POST",
url:"/gettransaction",
data:{customer_id: customerid},
success:function(data){
var jsondat = JSON.parse(data) ;
//clear the table's body
$("#transaction_detail").DataTable().clear().draw();
if(jsondat.length > 0){
for(var i=0; i<jsondat.length; i++){
var rowTab = $("#transaction_detail")
.DataTable()
.row
.add([
jsondat[i].customer_name,
jsondat[i].customer_address,
jsondat[i].customer_phone,
jsondat[i].number_transaction,
jsondat[i].turnover
]);
//use node() so that row is editable.
var rowEdit = rowTab.node();
$(rowEdit).attr("style",
"cursor:pointer; text-align:center");
$(rowEdit).attr('onclick',
"showTrans("+jsondat[i].customer_id+")");
//redraw the table after its modified
rowTab.draw(false);
}
}
},
error: function(){
}
});
I hope it can help you somehow. cheers!!
Well this posting is an extra info of my previous posting. After I struggled with an error, now I want to show the page per button and the export button at the same time.
I found two ways from stackoverflow.
so here is the first solution:
$(document).ready(function() {
document.title = 'page Title';
$('#example').DataTable( {
dom: 'Bfrtip',
lengthMenu: [[10, 25, 50, -1], [10, 25, 50, "All"]],
buttons: [
'pageLength',
'copyHtml5',
'excelHtml5',
'csvHtml5',
'pdfHtml5'
],
} );
} );
You can delete or comment the second line, it was included in my code since I coded it in a team and the used template seems doesn't have title tag in its header. So, I set it in here. The title of the page will be used as the filename when its downloaded.
The second solution is:
$(document).ready(function() {
document.title = 'page Title';
$('#example').DataTable( {
dom: 'lBfrtip',
lengthMenu: [[10, 25, 50, -1], [10, 25, 50, "All"]],
buttons: [
'copyHtml5',
'excelHtml5',
'csvHtml5',
'pdfHtml5'
],
} );
} );
Take a look at the 'dom:' attribute. The second solution uses 'lBftrip' whereas the first solution uses 'Bfstrip'. now then take a look closer to the first solution, if we use 'Bfstrip', then we have to add 'pagelength' as a button as well.
Just try them and see the different. NOTE!!! don't forget to call all the needed css and js scripts. You can find them all here.
It was really pain in the ass to look for a solution for that error. But, finally I found it.
Here is the solution: Use defer to call the datatable script and its other following scripts.
I needed to use datatable with export button, I get the examples code from here.
Here was how I called the scripts that gave me that error:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js" ></script>
<script type="text/javascript" src="https://cdn.datatables.net/1.11.3/js/jquery.dataTables.min.js" ></script>
<script type="text/javascript" src="https://cdn.datatables.net/buttons/2.1.0/js/dataTables.buttons.min.js" ></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.1.3/jszip.min.js" ></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.53/pdfmake.min.js" ></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.53/vfs_fonts.js" ></script>
<script type="text/javascript" src="https://cdn.datatables.net/buttons/2.1.0/js/buttons.html5.min.js" ></script>
And how it was fixed:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js" ></script>
<script type="text/javascript" src="https://cdn.datatables.net/1.11.3/js/jquery.dataTables.min.js" defer></script>
<script type="text/javascript" src="https://cdn.datatables.net/buttons/2.1.0/js/dataTables.buttons.min.js" defer></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.1.3/jszip.min.js" defer></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.53/pdfmake.min.js" defer></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.53/vfs_fonts.js" defer></script>
<script type="text/javascript" src="https://cdn.datatables.net/buttons/2.1.0/js/buttons.html5.min.js" defer></script>