strated to displaying falgcollection on the left of results
This commit is contained in:
parent
ed9e62718c
commit
6d9d18b7ba
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -26,6 +26,7 @@ import router from 'vuejs/route'
|
|||
import VUserBlock from 'vuejs/components/Block/UserBlock'
|
||||
import VMainContent from 'vuejs/components/Content/MainContent'
|
||||
import VSearchBlock from 'vuejs/components/Block/SearchBlock'
|
||||
import VLeftContent from 'vuejs/components/Content/LeftContent'
|
||||
|
||||
import { mapState } from 'vuex'
|
||||
|
||||
|
@ -36,7 +37,7 @@ import 'theme/assets/styles/main.scss'
|
|||
const MaterioTheme = function () {
|
||||
let _v_sitebranding_block, _v_user_block, _v_header_menu,
|
||||
_v_pagetitle_block, _v_search_block,
|
||||
_v_main_content
|
||||
_v_main_content, _v_left_content
|
||||
const _is_front = drupalSettings.path.isFront
|
||||
|
||||
console.log('drupalSettings', drupalSettings)
|
||||
|
@ -71,6 +72,7 @@ import 'theme/assets/styles/main.scss'
|
|||
initVHeaderMenu()
|
||||
initVMainContent()
|
||||
initVSearchBlock()
|
||||
initVLeftContent()
|
||||
}
|
||||
initVUserBlock()
|
||||
}
|
||||
|
@ -268,7 +270,15 @@ import 'theme/assets/styles/main.scss'
|
|||
render: h => h(VSearchBlock, { props: { blockid: id, formhtml: formhtml } })
|
||||
}).$mount('#' + id)
|
||||
}
|
||||
|
||||
function initVLeftContent () {
|
||||
const id = 'content-left'
|
||||
const $leftContent = document.getElementById(id)
|
||||
// in any case create the vue
|
||||
_v_left_content = new Vue({
|
||||
store,
|
||||
render: h => h(VLeftContent, { props: { id: id } })
|
||||
}).$mount('#' + id)
|
||||
}
|
||||
init()
|
||||
} // end MaterioTheme()
|
||||
|
||||
|
|
|
@ -93,10 +93,22 @@ main[role="main"]{
|
|||
flex:1 1 auto;
|
||||
overflow-y: auto;
|
||||
overflow-x: hidden;
|
||||
&>.wrapper{
|
||||
>.scroller{
|
||||
width:100vw;
|
||||
&>*{
|
||||
>.wrapper{
|
||||
@extend %grided-width;
|
||||
display: flex;
|
||||
flex-direction: row-reverse;
|
||||
#content-left{
|
||||
flex-basis: $column_width*2+$column_goutiere;
|
||||
// width:$column_width*2+$column_goutiere;
|
||||
>*{
|
||||
width:$column_width*2+$column_goutiere;
|
||||
}
|
||||
}
|
||||
#content-center{
|
||||
flex-basis: $column_width*10+$column_goutiere*9;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -390,6 +390,20 @@ aside.messages{
|
|||
// }
|
||||
|
||||
|
||||
// ___ _ _ _ __ _
|
||||
// / __|___ _ _| |_ ___ _ _| |_ ___| | ___ / _| |_
|
||||
// | (__/ _ \ ' \ _/ -_) ' \ _|___| |__/ -_) _| _|
|
||||
// \___\___/_||_\__\___|_||_\__| |____\___|_| \__|
|
||||
#content-left{
|
||||
max-width:1px;
|
||||
overflow-x: hidden;
|
||||
transition: all 0.3s ease-in-out;
|
||||
&.opened{
|
||||
max-width: 500px;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// __ _
|
||||
// / _|_ _ ___ _ _| |_
|
||||
// | _| '_/ _ \ ' \ _|
|
||||
|
|
|
@ -13,6 +13,7 @@ regions:
|
|||
header_left: 'Header left'
|
||||
header_right: 'Header right'
|
||||
header_bottom: 'Header bottom'
|
||||
content_left: 'Content Left'
|
||||
content_top: 'Content Top'
|
||||
content: Content
|
||||
footer_left: 'Footer Left'
|
||||
|
|
|
@ -58,7 +58,14 @@
|
|||
</header>
|
||||
|
||||
<main role="main">
|
||||
<div class="scroller">
|
||||
<div class="wrapper">
|
||||
<div id="content-left">
|
||||
{% if page.content_left %}
|
||||
{{ page.content_left }}
|
||||
{% endif %}
|
||||
</div>
|
||||
<div id="content-center">
|
||||
{% if page.content.messages %}
|
||||
<aside class="messages">
|
||||
{{ page.content.messages }}
|
||||
|
@ -72,6 +79,8 @@
|
|||
{{ page.content|without('messages') }}
|
||||
</div>{# /.layout-content #}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
{% if page.footer_left or page.footer_center or page.footer_right %}
|
||||
|
|
|
@ -138,7 +138,6 @@ export default {
|
|||
this.loadingFlag = false;
|
||||
})
|
||||
}else{
|
||||
|
||||
this.flag({uuid: this.item.uuid, collid: collid})
|
||||
.then(data => {
|
||||
console.log("onFlagActionCard then", data);
|
||||
|
|
|
@ -0,0 +1,49 @@
|
|||
<template lang="html">
|
||||
<div
|
||||
:id="id"
|
||||
:class="{opened: isopened}"
|
||||
>
|
||||
<FlagCollection v-if='openedCollid' :collection='flagcolls[openedCollid]'/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { mapState, mapActions } from 'vuex'
|
||||
|
||||
import { MA } from 'vuejs/api/ma-axios'
|
||||
import router from 'vuejs/route'
|
||||
|
||||
import FlagCollection from 'vuejs/components/User/FlagCollection'
|
||||
|
||||
export default {
|
||||
router,
|
||||
props:['id'],
|
||||
data() {
|
||||
return {
|
||||
// isOpened: false
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
...mapState({
|
||||
flagcolls: state => state.User.flagcolls,
|
||||
openedCollid: state => state.User.openedCollid
|
||||
}),
|
||||
isopened () {
|
||||
return this.openedCollid
|
||||
}
|
||||
},
|
||||
beforeMount() {
|
||||
|
||||
},
|
||||
methods: {
|
||||
|
||||
},
|
||||
components: {
|
||||
FlagCollection
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
|
||||
</style>
|
|
@ -0,0 +1,60 @@
|
|||
<template>
|
||||
<section class="flag-collection">
|
||||
<h3>{{collection.name}}</h3>
|
||||
<ul v-if="loadedItems">
|
||||
<li
|
||||
v-for="item in loadedItems"
|
||||
:key="item.id"
|
||||
>{{item.attributes.title}}</li>
|
||||
</ul>
|
||||
<span v-else class="loading">Loading</span>
|
||||
</section>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { mapState, mapActions } from 'vuex'
|
||||
|
||||
export default {
|
||||
name: "FlagCollection",
|
||||
props: ['collection'],
|
||||
data: () => ({
|
||||
loadedItems: false
|
||||
}),
|
||||
computed: {
|
||||
...mapState({
|
||||
flagcolls: state => state.User.flagcolls
|
||||
// openedCollid: state => state.User.openedCollid
|
||||
})
|
||||
},
|
||||
// watch: {
|
||||
// flagcolls (newv, oldv) {
|
||||
// console.log('watching flagcolls');
|
||||
// if( typeof this.flagcolls[this.collection.id].loadedItems !== 'undefined' ) {
|
||||
// this.loadedItems = this.flagcolls[this.collection.id].loadedItems
|
||||
// }
|
||||
// }
|
||||
// },
|
||||
created() {
|
||||
this.unsubscribe = this.$store.subscribe((mutation, state) => {
|
||||
if (mutation.type === 'User/setLoadedCollItems') {
|
||||
this.loadedItems = state.User.flagcolls[this.collection.id].loadedItems
|
||||
}
|
||||
});
|
||||
},
|
||||
beforeDestroy() {
|
||||
this.unsubscribe()
|
||||
},
|
||||
// beforeMount () {
|
||||
// if (typeof this.flagcolls[collection.id].loadedItems === 'undefined') {
|
||||
// this.
|
||||
// }
|
||||
// },
|
||||
// methods: {
|
||||
// ...mapActions({
|
||||
// loadFlagCollItems: 'User/loadFlagCollItems'
|
||||
// })
|
||||
// }
|
||||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
</style>
|
|
@ -5,7 +5,10 @@
|
|||
>My folders</h2>
|
||||
<ul>
|
||||
<li v-if="flagcolls" v-for="coll in flagcolls" :key="coll.id">
|
||||
<h5>{{ coll.name }} ({{ coll.items.length }})</h5>
|
||||
<h5
|
||||
:flagcollid="coll.id"
|
||||
@click.prevent="onOpenFlagColl"
|
||||
>{{ coll.name }} ({{ coll.items.length }})</h5>
|
||||
<div class="actions">
|
||||
<span
|
||||
class="delete-btn mdi"
|
||||
|
@ -64,7 +67,8 @@ export default {
|
|||
methods: {
|
||||
...mapActions({
|
||||
createFlagColl: 'User/createFlagColl',
|
||||
deleteFlagColl: 'User/deleteFlagColl'
|
||||
deleteFlagColl: 'User/deleteFlagColl',
|
||||
openFlagColl: 'User/openFlagColl'
|
||||
}),
|
||||
onCreateFlagColl () {
|
||||
console.log("UserFlags onCreateFlagColl", this.new_folder_name)
|
||||
|
@ -77,7 +81,7 @@ export default {
|
|||
})
|
||||
},
|
||||
onDeleteFlagColl (e) {
|
||||
let flagcollid = e.target.getAttribute('flagcollid');
|
||||
const flagcollid = e.target.getAttribute('flagcollid');
|
||||
console.log("UserFlags onDeleteFlagColl", flagcollid);
|
||||
this.is_deleting_folder = flagcollid;
|
||||
this.deleteFlagColl(flagcollid)
|
||||
|
@ -85,6 +89,14 @@ export default {
|
|||
// console.log("onDeleteFlagColl then", data);
|
||||
this.is_deleting_folder = false;
|
||||
})
|
||||
},
|
||||
onOpenFlagColl (e) {
|
||||
const flagcollid = e.target.getAttribute('flagcollid');
|
||||
console.log("UserFlags onDeleteFlagColl", flagcollid);
|
||||
this.openFlagColl(flagcollid)
|
||||
.then(() => {
|
||||
// console.log("onDeleteFlagColl then", data);
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -18,7 +18,7 @@ Vue.use(VueRouter)
|
|||
// const languages = ['en', 'fr'];
|
||||
// console.log('path aliases', (() => languages.map(l => `/${l}/base`))() );
|
||||
|
||||
let basePath = drupalSettings.path.baseUrl + drupalSettings.path.pathPrefix;
|
||||
const basePath = drupalSettings.path.baseUrl + drupalSettings.path.pathPrefix
|
||||
|
||||
const routes = [
|
||||
{
|
||||
|
@ -36,7 +36,7 @@ const routes = [
|
|||
path: `${basePath}base`,
|
||||
// path: `/base`,
|
||||
// alias: (() => languages.map(l => `/${l}/base`))(),
|
||||
component: Base,
|
||||
component: Base
|
||||
// components: {
|
||||
// 'base': Base
|
||||
// }
|
||||
|
@ -60,13 +60,13 @@ const routes = [
|
|||
{
|
||||
name: 'article',
|
||||
path: `${basePath}blabla/:alias`,
|
||||
component: Article,
|
||||
component: Article
|
||||
// meta: { uuid:null }
|
||||
},
|
||||
{
|
||||
name: 'showrooms',
|
||||
path: `${basePath}showrooms`,
|
||||
component: Showrooms,
|
||||
component: Showrooms
|
||||
// meta: { uuid:null }
|
||||
},
|
||||
// {
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import { REST } from 'vuejs/api/rest-axios'
|
||||
// import { JSONAPI } from 'vuejs/api/json-axios';
|
||||
import { JSONAPI } from 'vuejs/api/json-axios'
|
||||
import { MA } from 'vuejs/api/ma-axios'
|
||||
import qs from 'querystring-es3'
|
||||
|
||||
|
@ -18,7 +18,8 @@ export default {
|
|||
isAdherent: false,
|
||||
canSearch: false,
|
||||
roles: [],
|
||||
flagcolls: false
|
||||
flagcolls: false,
|
||||
openedCollid: null
|
||||
},
|
||||
|
||||
// getters
|
||||
|
@ -84,6 +85,13 @@ export default {
|
|||
setFlagColls (state, flagcolls) {
|
||||
console.log('User setFlagColls', flagcolls)
|
||||
state.flagcolls = flagcolls
|
||||
},
|
||||
openFlagColl (state, collid) {
|
||||
state.openedCollid = collid
|
||||
},
|
||||
setLoadedCollItems (state, data) {
|
||||
console.log('setLoadedCollItems', data)
|
||||
state.flagcolls[data.collid].loadedItems = data.items
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -262,6 +270,39 @@ export default {
|
|||
})
|
||||
})
|
||||
},
|
||||
openFlagColl ({ commit, dispatch }, collid) {
|
||||
console.log('user openFlagColl', collid)
|
||||
commit('openFlagColl', collid)
|
||||
dispatch('loadFlagCollItems', collid)
|
||||
},
|
||||
loadFlagCollItems ({ commit, state }, collid) {
|
||||
console.log('loadFlagCollItems', state.flagcolls[collid].items_uuids)
|
||||
const params = {
|
||||
'filter[uuids-groupe][group][conjunction]': 'OR'
|
||||
}
|
||||
const uuids = state.flagcolls[collid].items_uuids
|
||||
// console.log('uuids', uuids)
|
||||
for (let i = 0; i < uuids.length; i++) {
|
||||
let uuid = uuids[i]
|
||||
// console.log('uuid', uuid)
|
||||
params[`filter[${uuid}][condition][path]`] = 'id'
|
||||
params[`filter[${uuid}][condition][value]`] = uuid
|
||||
params[`filter[${uuid}][condition][operator]`] = '='
|
||||
params[`filter[${uuid}][condition][memberOf]`] = 'uuids-groupe'
|
||||
}
|
||||
console.log('search JSONAPI params', params);
|
||||
const q = qs.stringify(params)
|
||||
return JSONAPI.get('node/materiau?' + q)
|
||||
.then(({ data }) => {
|
||||
console.log('user loadFlagCollItems data', data)
|
||||
// dispatch('parseItems', { data: data.data, uuids: uuids })
|
||||
commit('setLoadedCollItems', {collid: collid, items: data.data})
|
||||
})
|
||||
.catch((error) => {
|
||||
console.warn('Issue with loadFlagCollItems', error)
|
||||
Promise.reject(error)
|
||||
})
|
||||
},
|
||||
userLogout ({ commit, state }) {
|
||||
const credentials = qs.stringify({
|
||||
token: state.csrf_token
|
||||
|
|
Loading…
Reference in New Issue