Skip to content
Snippets Groups Projects
main.js 3 KiB
Newer Older
Ole Voldsæter's avatar
Ole Voldsæter committed
import Vue from 'vue'
Ole Voldsæter's avatar
Ole Voldsæter committed
import Root from './Root.vue'
Ole Voldsæter's avatar
Ole Voldsæter committed
import App from './App.vue'
Ole Voldsæter's avatar
Ole Voldsæter committed
import About from './components/About.vue'
import DictionaryView from './components/DictionaryView.vue'
Ole Voldsæter's avatar
Ole Voldsæter committed
import VueRouter from 'vue-router'
Ole Voldsæter's avatar
Ole Voldsæter committed
import { VuePlausible } from 'vue-plausible'
import vuetify from './plugins/vuetify'
Henrik Askjer's avatar
Henrik Askjer committed
import Vuex from 'vuex'
Henrik Askjer's avatar
Henrik Askjer committed
import i18n from './i18n'
Ole Voldsæter's avatar
Ole Voldsæter committed

Ole Voldsæter's avatar
Ole Voldsæter committed
Vue.config.productionTip = false
Henrik Askjer's avatar
Henrik Askjer committed
Vue.use(Vuex)
Ole Voldsæter's avatar
Ole Voldsæter committed
Vue.use(VueRouter)
Ole Voldsæter's avatar
Ole Voldsæter committed
Vue.use(VuePlausible, {
  domain: 'beta.ordbok.uib.no'
})

Vue.$plausible.enableAutoPageviews()
Ole Voldsæter's avatar
Ole Voldsæter committed

Henrik Askjer's avatar
Henrik Askjer committed
const store = new Vuex.Store({
  strict: true,
  state: {
    showSearchToolbar: null,
Henrik Askjer's avatar
Henrik Askjer committed
    showHGNO: null,
    showInflectionNo: null,
    currentLocale: null
Henrik Askjer's avatar
Henrik Askjer committed
  },
  mutations: {
    initStore(state) {
      state.showSearchToolbar = localStorage.getItem('showSearchToolbar') || false
Henrik Askjer's avatar
Henrik Askjer committed
      state.showHGNO = localStorage.getItem('showHGNO') || false
      state.showInflectionNo = localStorage.getItem('showInflectionNo') || false
Henrik Askjer's avatar
Henrik Askjer committed
      state.currentLocale = localStorage.getItem('currentLocale') || {text:"nob", value: "nob"}
Henrik Askjer's avatar
Henrik Askjer committed
    },
Henrik Askjer's avatar
Henrik Askjer committed
    resetStore(state) {
      localStorage.removeItem("showSearchToolbar")
      localStorage.removeItem("showHGNO")
      localStorage.removeItem("showInflectionNo")
      localStorage.removeItem("currentLocale")
      this.commit("initStore", state)
    },
Henrik Askjer's avatar
Henrik Askjer committed
    changeLocale(state, locale) {
      state.currentLocale = locale
Henrik Askjer's avatar
Henrik Askjer committed
      localStorage.setItem("currentLocale", locale);
Henrik Askjer's avatar
Henrik Askjer committed
    },
Henrik Askjer's avatar
Henrik Askjer committed
    toggle(state, setting) {
      let value = !state[setting]
      state[setting] = value
      localStorage.setItem(setting, value);
Henrik Askjer's avatar
Henrik Askjer committed
    }
  }
})

Ole Voldsæter's avatar
Ole Voldsæter committed
const router = new VueRouter({
  mode: 'history',
  base: __dirname,
  routes: [
    {
Ole Voldsæter's avatar
Ole Voldsæter committed
      path: '/',
Ole Voldsæter's avatar
Ole Voldsæter committed
      component: App,
Ole Voldsæter's avatar
Ole Voldsæter committed
      children: [
        {
          path: 'om',
          name: 'about',
          component: About
        },
        {
          path: '',
          component: DictionaryView,
          children: [
            {
              path: ':lang(bm|nn|bm,nn)',
Ole Voldsæter's avatar
Ole Voldsæter committed
              children: [
                {
                  name: 'word',
Henrik Askjer's avatar
Henrik Askjer committed
                  path: 'w/:word/:pos?'
Ole Voldsæter's avatar
Ole Voldsæter committed
                },
                {
                  name: 'lookup',
                  path: ':id(\\d+)/:lemma?'
                },
                {
                  name: 'search',
                  path: 'search/:query/:pos?'
Henrik Askjer's avatar
Henrik Askjer committed
            {
              path: 'bob/*',
              redirect: to => {
                return "bm/" + to.params.pathMatch
              }
            },
            {
              path: 'nob/*',
              redirect: to => {
                console.log(to)
                return "nn/" + to.params.pathMatch
              }
            },
            {
              path: 'bob,nob/*',
              redirect: to => {
                return "bm,nn/" + to.params.pathMatch
              }
Ole Voldsæter's avatar
Ole Voldsæter committed
  ]
})
Ole Voldsæter's avatar
Ole Voldsæter committed

new Vue({
Ole Voldsæter's avatar
Ole Voldsæter committed
  router,
Henrik Askjer's avatar
Henrik Askjer committed
  store,
Henrik Askjer's avatar
Henrik Askjer committed

Henrik Askjer's avatar
Henrik Askjer committed
  beforeCreate() {
		this.$store.commit('initStore');
	},
Henrik Askjer's avatar
Henrik Askjer committed

  i18n,
Ole Voldsæter's avatar
Ole Voldsæter committed
  render: h => h(Root )
Ole Voldsæter's avatar
Ole Voldsæter committed
}).$mount('#app')