photoprism/frontend/src/app.js

78 lines
2 KiB
JavaScript
Raw Normal View History

import Vue from "vue";
import Vuetify from "vuetify";
import Router from "vue-router";
import PhotoPrism from "photoprism.vue";
import Routes from "routes";
import Api from "common/api";
import Config from "common/config";
import Clipboard from "common/clipboard";
import Components from "component/components";
import Dialogs from "dialog/dialogs";
import Maps from "maps/components";
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 VueLuxon from "vue-luxon";
import VueInfiniteScroll from "vue-infinite-scroll";
import VueFullscreen from "vue-fullscreen";
import VueFilters from "vue2-filters";
import { Settings } from "luxon";
// Initialize helpers
const session = new Session(window.localStorage);
const config = new Config(window.localStorage, window.appConfig);
const viewer = new Viewer();
const clipboard = new Clipboard(window.localStorage, "photo_clipboard");
// Assign helpers to VueJS prototype
Vue.prototype.$event = Event;
Vue.prototype.$alert = Alert;
Vue.prototype.$viewer = viewer;
Vue.prototype.$session = session;
Vue.prototype.$api = Api;
Vue.prototype.$config = config;
Vue.prototype.$clipboard = clipboard;
// 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
},
});
Settings.defaultLocale = "en";
// Register other VueJS plugins
Vue.use(VueLuxon);
Vue.use(VueInfiniteScroll);
2018-09-25 07:45:06 +00:00
Vue.use(VueFullscreen);
Vue.use(VueFilters);
Vue.use(Components);
Vue.use(Dialogs);
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),
});