File: //opt/code/src/main.js
import AJAX from './ajax'
import Vue from 'vue'
import VueRouter from 'vue-router'
import Routes from './routes'
import App from './App'
require('./css/style.css');
Vue.config.productionTip = false;
Vue.use(VueRouter);
Vue.prototype.AJAX = AJAX;
Routes.afterEach( function (to, from)
{
let title = to.meta.title;
if(typeof title === "function") title = title(to);
document.title = title || 'Distillate Balance';
});
window.isDate = function(d)
{
return Object.prototype.toString.call(d) === '[object Date]';
};
window.isArray = function(a)
{
return Object.prototype.toString.call(a) === '[object Array]';
};
window.isObject = function(a)
{
return (!!a) && (a.constructor === Object);
};
// auto-focus certain form field
Vue.directive('focus',
{
inserted: function (el,binding,vnode)
{
Vue.nextTick(function ()
{
el.focus();
});
}
});
Vue.filter('dateLocale', function(d)
{
return (d!= null ? d.toLocaleString(undefined,{year:'numeric',day:'numeric',month:'short'}) : '\u00A0');
});
Vue.filter('timeLocale', function(d)
{
return (d!= null ? d.toLocaleString(undefined,{hour:'numeric',minute:'numeric'}) : '\u00A0');
});
/* eslint-disable no-new */
window.vueApp = new Vue(
{
el: '#app',
router: Routes,
data: function()
{
var a =
{
admin: false,
spin_visible: 0,
};
return a;
},
methods:
{
showSpin: function()
{
this.spin_visible++;
},
hideSpin: function()
{
if(this.spin_visible>0) this.spin_visible--;
},
logout: function()
{
this.AJAX.ajax_get(this,'api/logout.php',
function(resp)
{
this.$router.push('/login');
},
function(stat,resp)
{
}
);
}
},
render: h => h(App)
});