<?php /* Common script to all page. Must include head.php at the top */ ?>
<script type="text/javascript" src="<?php asset('js/0e537d0987cea355e9484c0f496ebf75f8ba7e9f40e67cfa14c9c9b3587e29c3.js');?>"></script>
<script type="text/javascript" src="<?php asset('js/uikit.min.js');?>"></script>
<script type="text/javascript" src="<?php asset('js/uikit-icons.min.js');?>"></script>
<script type="text/javascript" src="<?php asset('js/jquery-3.3.1.min.js');?>"></script>
<?php
// Add script
if(isset($script)):
foreach ($script AS $src):
?>
<script type="text/javascript" src="<?php asset($src);?>"></script>
<?php
endforeach;
endif;
?>
<script>
const REQUEST = '<?php url('api/v1/json'); ?>';
const APP = {
letNumber : (() => {
$('.number').each(function (e) {
$(this).on('keyup', function (e) {
let val = $(this).val();if(isNaN(val)){
val = val.replace(/[^0-9\.]/g,'');
if(val.split('.').length>2){
val =val.replace(/\.+$/,"");
}
}
this.value = val;
})
})
}),
alert : ((msg='Unable to handle the process', type=false) => {
let pos = "top-center";
type = (type)?'primary':'danger'
if(window.innerWidth <= 480){
pos = "bottom-center";
}
UIkit.notification({message: msg,status: type,pos: pos,timeout: 5000});
}),
toConvert: ((datepicker, ele)=>{
if(ele.is){
datepicker.changeDateMode();
$(ele.to).val(datepicker.getDate().getDateString());
datepicker.changeDateMode();
}
return;
}),
datePicker: ((ele = '.datepicker', ap = true) => {
$(ele).each(function(){
let picker = $(this);
let datepicker = new Calendar({
isHijriMode: true,
isAutoSelectedDate: true
});
let convert = {
is: !($(this).attr('data-to') == undefined),
to: $(this).attr('data-to')
}
$(this).parent().append(datepicker.getElement());
if(ap){
picker.val(datepicker.getDate().getDateString());
APP.toConvert(datepicker, convert);
};
picker.on('focus', function(){
datepicker.show();
});
datepicker.callback = function() {
picker.val(datepicker.getDate().getDateString());
picker.selectionStart = 0;
picker.selectionEnd = picker.val().length;
};
datepicker.onHide = function() {
APP.toConvert(datepicker, convert);
};
})
}),
navActive: ((a=null)=>{
$('.uk-nav a').each(function(e){
e = $(this);
a = (e.attr('href') == (location.href));
if($(this).hasClass('lactive')){
e.removeClass("lactive")
}else{
(a)?e.addClass('lactive'):'';
}
})
}),
submit: ((ele)=>{
ele = ele.find('[type=submit]');
ele.attr('disabled', 'disabled').attr('data-pre', ele.text()).addClass('nrs_').html('<div role="status"><div uk-spinner></div><span class="uk-margin-left">validating...</span></div>');
}),
resetSubmit: (()=>{
$('.nrs_').each(function(){
$(this).removeAttr('disabled').removeClass('nrs_').html($(this).data('pre'));
})
}),
script: ((script)=>{
let s = document.createElement( 'script' );
s.setAttribute( 'src', script );
return document.head.appendChild( s );
}),
css: ((css)=>{
let s = document.createElement( 'link' );
s.setAttribute( 'href', css );
return document.head.appendChild( s );
}),
api: ((param, callback, method='POST')=>{
param = {
request: param,
method : method,
time: Date.now(),
<?php echo CSRF_KEY; ?>: document.querySelector('meta[name=csrf]').getAttribute('content')
};
$.ajax({
url:REQUEST,
method:method,
data: param,
crossDomain: false,
dataType:'JSON',
success: ((response, status, code)=>{
callback(response)
}),
error: ((response, status, code)=>{
console.warn(response, status, code);
})
})
}),
};
APP.navActive();
</script>
<?php if( \App\Controllers\Auth\Auth::isLoggedIn()): ?>
<script>
const init = (()=>{
$(document).on('click', '.drop', function(e){
// DROP ENTRIES
e.preventDefault();
const t = {
a: $(this).attr('data-api'),
k: $(this).attr('data-drop')
};
if(t.a != undefined && t.k != undefined ){
e = 'd'+Date.now();
let form = '<div><form id="'+e+'" action="<?php url('delete');?>" method="post"> <input type="hidden" name="<?php echo CSRF_KEY; ?>" value="'+document.querySelector('meta[name=csrf]').getAttribute('content')+'"><input type="hidden" name="api" value="'+t.a+'"><input type="hidden" name="key[]" value="'+t.k+'"></form></div>';
UIkit.modal.confirm('<div class="uk-alert uk uk-alert-danger uk-width-1 uk-box-shadow-small"><strong>Warning :</strong> Deleting a record will also delete all its related records.</div>').then(function() {
$('body').append(form);
$('#'+e).submit();
}, function () {
console.log('Rejected.');
});
}
})
$('._le').on('click', function(e){
// Load ledger entries
e.preventDefault();
$this = $(this);
if($this.attr('data-filter') != undefined && $this.attr('data-out') != undefined){
let out = $this.attr('data-out').split('>');
$(out).html('<div class="uk-text-center" role="status"><div uk-spinner></div></div>');
if(out.length == 2){
APP.api({
input: {
f: 'entry',
k: $this.attr('data-filter'),
},
endpoint: 'filterX'
}, function (data) {
let t = '';
$this.off();
if (data.s) {
t = "<table id='table' class='uk-table uk-table-middle uk-table-divider'><thead><tr>";
for (let i = 0; i < data.th.length; i++) {
t += '<th>'+data.th[i]+'</th>';
}
t += '</tr></thead><tbody>';
if(data.m.length > 0){
data.m.forEach(tr => {
t += '<tr>';
for(let td in tr){
t += '<td>'+tr[td]+'</td>';
}
t += '</tr>';
});
}else{
t += '<tr><td class="uk-text-center" colspan="'+data.th.length+'">No records found</td></tr>';
}
t += '</tbody></table>';
} else {
t = '<div class="uk-alert-warning uk-box-shadow-small" uk-alert><p>'+data.m+'.</p></div>';
}
let i = '_l'+Date.now();
let d = document.createElement(out[1]);
$(d).attr('id', i).addClass('uk-overflow-auto uk-active').appendTo(out[0]);
$(out[0]+' > #'+ i).html(t);
})
}else{
APP.alert('Somthing went wrong');
}
}
})
})()
</script>
<?php endif; ?>
</body>
</html>
|