This commit is contained in:
22
src/App.vue
22
src/App.vue
@@ -11,7 +11,7 @@ const aoRoutes = {
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
hash: {page: '', items: []},
|
||||
hash: {page: '', items: [], prev: {}},
|
||||
consts: this.appConfig.consts,
|
||||
mobile: false
|
||||
};
|
||||
@@ -20,7 +20,9 @@ export default {
|
||||
return {
|
||||
hash: this.hash,
|
||||
consts: this.consts,
|
||||
isMobile: () => this.isMobile()
|
||||
isMobile: () => this.isMobile(),
|
||||
getAnchor: this.getAnchor,
|
||||
getPrevAnchor: () => this.getPrevAnchor(),
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
@@ -28,7 +30,8 @@ export default {
|
||||
return aoRoutes[this.hash.page];
|
||||
},
|
||||
hashSnapshot() {
|
||||
return JSON.stringify(this.hash);
|
||||
const { prev, ...asHash } = this.hash;
|
||||
return JSON.stringify(asHash);
|
||||
}
|
||||
},
|
||||
inject: ['appConfig'],
|
||||
@@ -49,11 +52,15 @@ export default {
|
||||
watch: {
|
||||
hashSnapshot(jNewHash, jOldHash) {
|
||||
const asNewHash = JSON.parse(jNewHash);
|
||||
|
||||
//Sync variable -> #hash
|
||||
if(asNewHash != this.getBrowserHash()) {
|
||||
this.setBrowserHash(asNewHash.page, asNewHash.items);
|
||||
}
|
||||
|
||||
//Store previous value
|
||||
this.hash.prev = JSON.parse(jOldHash);
|
||||
|
||||
this.setPageTitle(asNewHash.page);
|
||||
}
|
||||
},
|
||||
@@ -83,8 +90,13 @@ export default {
|
||||
},
|
||||
setBrowserHash(sPage = '', asItems = []) {
|
||||
if(typeof asItems == 'string' && asItems != '') asItems = [asItems];
|
||||
const sItems = (asItems.length > 0)?(this.consts.hash_sep + asItems.join(this.consts.hash_sep)):'';
|
||||
window.location.hash = '#' + sPage + sItems;
|
||||
window.location.hash = this.getAnchor([sPage, ...asItems]);
|
||||
},
|
||||
getAnchor(asBreadCrumbs) {
|
||||
return '#' + asBreadCrumbs.filter(Boolean).join(this.consts.hash_sep);
|
||||
},
|
||||
getPrevAnchor() {
|
||||
return this.getAnchor([this.hash.prev.page, ...this.hash.prev.items]);
|
||||
}
|
||||
},
|
||||
beforeUnmount() {
|
||||
|
||||
@@ -9,7 +9,7 @@ export default {
|
||||
SpotButton,
|
||||
AdminInput
|
||||
},
|
||||
inject: ['api', 'lang'],
|
||||
inject: ['api', 'lang', 'getPrevAnchor'],
|
||||
data() {
|
||||
return {
|
||||
elems: {},
|
||||
@@ -115,7 +115,7 @@ export default {
|
||||
</script>
|
||||
<template>
|
||||
<div id="admin">
|
||||
<a name="back" class="button" href="#project"><SpotIcon :icon="'back'" :text="l('action.back')" /></a>
|
||||
<a name="back" class="button" :href="getPrevAnchor()"><SpotIcon :icon="'back'" :text="l('action.back')" /></a>
|
||||
<h1>{{ l('project.plural') }}</h1>
|
||||
<div>
|
||||
<table>
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
focusZoomLevel: 15
|
||||
};
|
||||
},
|
||||
inject: ['api', 'lang', 'project', 'feed', 'user', 'map', 'hash', 'consts', 'isMobile'],
|
||||
inject: ['api', 'lang', 'project', 'feed', 'user', 'map', 'hash', 'consts', 'isMobile', 'getAnchor'],
|
||||
computed: {
|
||||
postClass() {
|
||||
let sHeaderLess = this.options.headerless?' headerless':'';
|
||||
@@ -60,7 +60,7 @@
|
||||
return this.mouseOverDrill?null:'footprint';
|
||||
},
|
||||
anchorLink() {
|
||||
return '#'+[this.hash.page, this.project.project.codename, this.options.type, this.options.id].join(this.consts.hash_sep);
|
||||
return this.getAnchor([this.hash.page, this.project.project.codename, this.options.type, this.options.id]);
|
||||
},
|
||||
modeHisto() {
|
||||
return (this.project?.project?.mode == this.consts.modes.histo);
|
||||
|
||||
@@ -10,7 +10,7 @@ import SpotButton from '@components/spotButton';
|
||||
export default {
|
||||
name: 'upload',
|
||||
components: { SpotButton, SpotIcon },
|
||||
inject: ['api', 'lang', 'projects', 'consts', 'user'],
|
||||
inject: ['api', 'lang', 'projects', 'consts', 'user', 'getPrevAnchor'],
|
||||
data() {
|
||||
return {
|
||||
project: this.projects.getDefaultProject(),
|
||||
@@ -120,7 +120,7 @@ export default {
|
||||
<template>
|
||||
<div id="upload">
|
||||
<div class="section header">
|
||||
<a name="back" class="button" href="#project"><SpotIcon :icon="'back'" :text="lang.get('action.back')" /></a>
|
||||
<a name="back" class="button" :href="getPrevAnchor()"><SpotIcon :icon="'back'" :text="lang.get('action.back')" /></a>
|
||||
<h1>{{ this.project.name }}</h1>
|
||||
</div>
|
||||
<div class="section" v-if="project.editable">
|
||||
|
||||
@@ -11,6 +11,10 @@
|
||||
background: color.$default-bg;
|
||||
border-radius: var.$block-radius;
|
||||
box-shadow: var.$map-shadow;
|
||||
|
||||
a.button:hover, button:hover {
|
||||
background: color.$default-bg-light;
|
||||
}
|
||||
}
|
||||
|
||||
.settings-header {
|
||||
|
||||
Reference in New Issue
Block a user