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 ayaNovaVersion from "./api/ayanova-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 ayatype from "./api/ayatype"; 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"; //************************************************************** //************************************************************** //************************************************************** //DEVELOPMENT MODE FLAG, SET FALSE FOR RELEASE //************************************************************ const DEV_MODE = true; //************************************************************ //************************************************************** //************************************************************** //************************************************************** ///////////////////////////////////////////////////////////////// // LIBS AND GLOBAL ITEMS // // window.$gz = { translation: translation, locale: locale, formCustomTemplate: gzformcustomtemplate, type: ayatype, role: authorizationroles, enums: gzenums, eventBus: gzeventbus, menu: gzmenu, dialog: gzdialog, util: gzutil, DateTime: DateTime, api: gzapi, form: gzform, errorHandler: errorhandler, store: store, clientInfo: ayaNovaVersion, dev: DEV_MODE }; ///////////////////////////////////////////////////////////////// // 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.$ay = { //development mode, development level error messages etc dev: DEV_MODE, 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 ayatype; } }; //disable the devtools nag Vue.config.devtools = false; new Vue({ vuetify: Vuetify, router, store, // eslint-disable-next-line render: (h) => h(App) }).$mount("#app");