This commit is contained in:
233
src/main.js
Normal file
233
src/main.js
Normal file
@@ -0,0 +1,233 @@
|
||||
import "fontsource-roboto/latin.css";
|
||||
import "github-markdown-css";
|
||||
import Vue from "vue";
|
||||
import Vuetify from "./plugins/vuetify";
|
||||
import App from "./App.vue";
|
||||
import router from "./router";
|
||||
import store from "./store";
|
||||
import "./registerServiceWorker";
|
||||
import errorHandler from "./api/errorhandler";
|
||||
import NProgress from "nprogress";
|
||||
import "nprogress/nprogress.css";
|
||||
import { DateTime } from "luxon";
|
||||
import VueCurrencyInput from "vue-currency-input";
|
||||
//import Pappa from "papaparse";
|
||||
|
||||
//my libs
|
||||
import errorhandler from "./api/errorhandler";
|
||||
import sockeyeVersion from "./api/sockeye-version";
|
||||
import gzeventbus from "./api/eventbus";
|
||||
import gzmenu from "./api/gzmenu";
|
||||
import gzdialog from "./api/gzdialog";
|
||||
import gzutil from "./api/gzutil";
|
||||
import translation from "./api/translation";
|
||||
import locale from "./api/locale";
|
||||
import gzapi from "./api/gzapi";
|
||||
|
||||
import gzform from "./api/gzform";
|
||||
import gzformcustomtemplate from "./api/form-custom-template";
|
||||
import authorizationroles from "./api/authorizationroles";
|
||||
import socktype from "./api/socktype";
|
||||
import gzenums from "./api/enums";
|
||||
import "@/assets/css/main.css";
|
||||
|
||||
//controls
|
||||
import dateTimeControl from "./components/date-time-control.vue";
|
||||
import dateControl from "./components/date-control.vue";
|
||||
import timeControl from "./components/time-control.vue";
|
||||
import tagPicker from "./components/tag-picker.vue";
|
||||
import pickList from "./components/pick-list.vue";
|
||||
import dataTable from "./components/data-table.vue";
|
||||
import dataTableFilterControl from "./components/data-table-filter-control.vue";
|
||||
import dataTableFilterManagerControl from "./components/data-table-filter-manager-control.vue";
|
||||
import dataTableMobileFilterColumnSelectorControl from "./components/data-table-mobile-filter-column-selector-control.vue";
|
||||
import customFieldsControl from "./components/custom-fields-control.vue";
|
||||
import currencyControl from "./components/currency-control.vue";
|
||||
import decimalControl from "./components/decimal-control.vue";
|
||||
import percentControl from "./components/percent-control.vue";
|
||||
import phoneControl from "./components/phone-control.vue";
|
||||
import emailControl from "./components/email-control.vue";
|
||||
import urlControl from "./components/url-control.vue";
|
||||
import roleControl from "./components/role-control.vue";
|
||||
import durationControl from "./components/duration-control.vue";
|
||||
import errorControl from "./components/error-control.vue";
|
||||
import alertControl from "./components/alert-control.vue";
|
||||
import extensionsControl from "./components/extensions-control.vue";
|
||||
import reportSelectorControl from "./components/report-control.vue";
|
||||
import wikiControl from "./components/wiki-control.vue";
|
||||
import attachmentControl from "./components/attachment-control.vue";
|
||||
import chartLineControl from "./components/chart-line-control.vue";
|
||||
import chartBarControl from "./components/chart-bar-control.vue";
|
||||
import chartBarHorizontalControl from "./components/chart-bar-horizontal-control.vue";
|
||||
|
||||
/////////////////////////////////////////////////////////////////
|
||||
// LIBS AND GLOBAL ITEMS
|
||||
//
|
||||
//
|
||||
|
||||
window.$gz = {
|
||||
translation: translation,
|
||||
locale: locale,
|
||||
formCustomTemplate: gzformcustomtemplate,
|
||||
type: socktype,
|
||||
role: authorizationroles,
|
||||
enums: gzenums,
|
||||
eventBus: gzeventbus,
|
||||
menu: gzmenu,
|
||||
dialog: gzdialog,
|
||||
util: gzutil,
|
||||
DateTime: DateTime,
|
||||
api: gzapi,
|
||||
form: gzform,
|
||||
errorHandler: errorhandler,
|
||||
store: store,
|
||||
clientInfo: sockeyeVersion,
|
||||
dev: process.env.NODE_ENV === "development",
|
||||
erasingDatabase: false
|
||||
};
|
||||
|
||||
/////////////////////////////////////////////////////////////////
|
||||
// ERROR HANDLING
|
||||
//
|
||||
|
||||
Vue.config.errorHandler = errorHandler.handleVueError;
|
||||
window.onerror = errorHandler.handleGeneralError;
|
||||
|
||||
//warnings, only occur by default in debug mode not production
|
||||
Vue.config.warnHandler = errorHandler.handleVueWarning;
|
||||
|
||||
Vue.config.productionTip = false;
|
||||
|
||||
/////////////////////////////////////////////////////////////////
|
||||
// AJAX LOADER INDICATOR
|
||||
//
|
||||
//
|
||||
|
||||
// Store a copy of the fetch function
|
||||
const _oldFetch = fetch;
|
||||
|
||||
// Create our new version of the fetch function
|
||||
window.fetch = function() {
|
||||
// Create hooks
|
||||
const fetchStart = new Event("fetchStart", {
|
||||
view: document,
|
||||
bubbles: true,
|
||||
cancelable: false
|
||||
});
|
||||
const fetchEnd = new Event("fetchEnd", {
|
||||
view: document,
|
||||
bubbles: true,
|
||||
cancelable: false
|
||||
});
|
||||
|
||||
// Pass the supplied arguments to the real fetch function
|
||||
const fetchCall = _oldFetch.apply(this, arguments);
|
||||
|
||||
// Trigger the fetchStart event
|
||||
document.dispatchEvent(fetchStart);
|
||||
|
||||
fetchCall
|
||||
.then(function() {
|
||||
// Trigger the fetchEnd event
|
||||
document.dispatchEvent(fetchEnd);
|
||||
})
|
||||
.catch(function() {
|
||||
// Trigger the fetchEnd event
|
||||
document.dispatchEvent(fetchEnd);
|
||||
});
|
||||
|
||||
return fetchCall;
|
||||
};
|
||||
|
||||
document.addEventListener("fetchStart", function() {
|
||||
NProgress.start();
|
||||
});
|
||||
|
||||
document.addEventListener("fetchEnd", function() {
|
||||
NProgress.done();
|
||||
});
|
||||
|
||||
/////////////////////////////////////////////////////////////
|
||||
//GZ COMPONENTS
|
||||
//
|
||||
Vue.component("gz-date-time-picker", dateTimeControl);
|
||||
Vue.component("gz-date-picker", dateControl);
|
||||
Vue.component("gz-time-picker", timeControl);
|
||||
Vue.component("gz-tag-picker", tagPicker);
|
||||
Vue.component("gz-pick-list", pickList);
|
||||
Vue.component("gz-data-table", dataTable);
|
||||
Vue.component("gz-data-table-filter", dataTableFilterControl);
|
||||
Vue.component("gz-data-table-filter-manager", dataTableFilterManagerControl);
|
||||
Vue.component(
|
||||
"gz-data-table-mobile-filter-column-selector",
|
||||
dataTableMobileFilterColumnSelectorControl
|
||||
);
|
||||
Vue.component("gz-custom-fields", customFieldsControl);
|
||||
Vue.component("gz-currency", currencyControl);
|
||||
Vue.component("gz-percent", percentControl);
|
||||
Vue.component("gz-decimal", decimalControl);
|
||||
Vue.component("gz-phone", phoneControl);
|
||||
Vue.component("gz-email", emailControl);
|
||||
Vue.component("gz-url", urlControl);
|
||||
Vue.component("gz-role-picker", roleControl);
|
||||
Vue.component("gz-duration-picker", durationControl);
|
||||
Vue.component("gz-error", errorControl);
|
||||
Vue.component("gz-alert", alertControl);
|
||||
Vue.component("gz-report-selector", reportSelectorControl);
|
||||
Vue.component("gz-extensions", extensionsControl);
|
||||
Vue.component("gz-wiki", wikiControl);
|
||||
Vue.component("gz-attachments", attachmentControl);
|
||||
Vue.component("gz-chart-line", chartLineControl);
|
||||
Vue.component("gz-chart-bar", chartBarControl);
|
||||
Vue.component("gz-chart-bar-horizontal", chartBarHorizontalControl);
|
||||
//3rd party components
|
||||
Vue.use(VueCurrencyInput);
|
||||
/////////////////////////////////////////////////////////////
|
||||
//DIRECTIVES
|
||||
//
|
||||
//Auto focus on forms
|
||||
Vue.directive("focus", {
|
||||
// When the bound element is inserted into the DOM...
|
||||
inserted: function(el) {
|
||||
// Focus the element
|
||||
el.focus();
|
||||
}
|
||||
});
|
||||
|
||||
/////////////////////////////////////////////////////////////////
|
||||
// INSTANTIATE
|
||||
//
|
||||
Vue.prototype.$sock = {
|
||||
//development mode, development level error messages etc
|
||||
dev: process.env.NODE_ENV === "development",
|
||||
t: function(tKey) {
|
||||
return translation.get(tKey);
|
||||
},
|
||||
dt: function(timestamp) {
|
||||
return locale.utcDateToShortDateAndTimeLocalized(timestamp);
|
||||
},
|
||||
sd: function(timestamp) {
|
||||
return locale.utcDateToShortDateLocalized(timestamp);
|
||||
},
|
||||
cur: function(value) {
|
||||
return locale.currencyLocalized(value);
|
||||
},
|
||||
dec: function(value) {
|
||||
return locale.decimalLocalized(value);
|
||||
},
|
||||
util: function() {
|
||||
return gzutil;
|
||||
},
|
||||
ayt: function() {
|
||||
return socktype;
|
||||
}
|
||||
};
|
||||
//disable the devtools nag
|
||||
Vue.config.devtools = false;
|
||||
new Vue({
|
||||
vuetify: Vuetify,
|
||||
router,
|
||||
store,
|
||||
// eslint-disable-next-line
|
||||
render: (h) => h(App)
|
||||
}).$mount("#app");
|
||||
Reference in New Issue
Block a user