photoprism/frontend/src/app.js

69 lines
1.7 KiB
JavaScript
Raw Normal View History

import Vue from "vue";
import Vuetify from "vuetify";
import Router from "vue-router";
import PhotoPrism from "app/photoprism.vue";
import Routes from "routes";
import Api from "common/api";
import Config from "common/config";
import Components from "component/register";
import Maps from "maps/register";
import Alert from "common/alert";
2019-05-19 18:13:19 +00:00
import Viewer from "common/viewer";
import Session from "common/session";
import Event from "pubsub-js";
import Moment from "vue-moment";
import InfiniteScroll from "vue-infinite-scroll";
import VueTruncate from "vue-truncate-filter";
import VueFullscreen from "vue-fullscreen";
// Initialize client-side session
const session = new Session(window.localStorage);
const config = new Config(window.localStorage, window.appConfig);
// Set global helpers
Vue.prototype.$event = Event;
Vue.prototype.$alert = Alert;
2019-05-19 18:13:19 +00:00
Vue.prototype.$viewer = new Viewer;
Vue.prototype.$session = session;
Vue.prototype.$api = Api;
Vue.prototype.$config = config;
// Register Vuetify
2018-09-06 21:58:16 +00:00
Vue.use(Vuetify, {
theme: {
primary: "#FFD600",
secondary: "#b0bec5",
accent: "#00B8D4",
error: "#E57373",
info: "#00B8D4",
success: "#00BFA5",
warning: "#FFD600",
delete: "#E57373",
love: "#EF5350",
2018-09-06 21:58:16 +00:00
},
});
// Register other VueJS plugins
2018-08-07 18:17:14 +00:00
Vue.use(Moment);
Vue.use(InfiniteScroll);
Vue.use(VueTruncate);
2018-09-25 07:45:06 +00:00
Vue.use(VueFullscreen);
Vue.use(Components);
Vue.use(Maps);
Vue.use(Router);
// Configure client-side routing
const router = new Router({
routes: Routes,
mode: "history",
saveScrollPosition: true,
});
// Run app
/* eslint-disable no-unused-vars */
const app = new Vue({
el: "#photoprism",
router,
render: h => h(PhotoPrism),
});