home showrooms OK

This commit is contained in:
2020-12-27 17:46:04 +01:00
parent 9941eed64a
commit b7f9d99790
8 changed files with 259 additions and 47 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -644,6 +644,7 @@ article.node--type-frontpage{
}
}
.field--name-computed-showrooms-reference{
overflow: hidden;
position:relative;
// height:550px;
display: grid;
@@ -673,17 +674,23 @@ article.node--type-frontpage{
// top:0; left:0;
// width:100%; height:100%;
// overflow: hidden;
opacity: 0;
transition: opacity 0.3s ease-in-out;
// transform: translateX(100%);
transition: all 0.7s ease-out;
&.active{
opacity: 1;
// transform: translateX(0);
// transition: all 0.3s ease-in-out;
}
.taxonomy-term{
position: relative;
width:100%; height:100%;
div.visuel{
width:100%;
padding-bottom: 10em;
padding-bottom: 5em;
img{
max-width: 100%;
height: auto;
@@ -694,17 +701,42 @@ article.node--type-frontpage{
bottom:0; left:0;
width:100%;
box-sizing:border-box;
padding:1em 0;
padding:1em 0 0;
background-color:$color-showrooms;
color: #fff;
>*{
// display: inline-block;
font-size: 0.9em;
}
// >*{
// // display: inline-block;
// font-size: 0.9em;
// }
h2,p{
margin:0;
}
h2{
font-size: 2em;
}
.field--name-field-public-address{
br{
display:none;
}
span:not(:nth-last-of-type(1)) {
margin-right: 0.4em;
&:after{
padding-left: 0.5em;
content:""
}
}
}
.field--name-field-public-phone {
display: inline-block;
margin-right: 0.4em;
&:after{
padding-left: 0.5em;
content:""
}
}
.field--name-field-public-email {
display: inline-block;
}
}
}
}

View File

@@ -6,7 +6,14 @@ export default {
props: ['html'], // get the html from parent with props
data() {
return {
template: null // compiled template from html used in render
template: null, // compiled template from html used in render
showrooms: [],
showroomsOdd: [],
showroomsEven: [],
showroomMode: 1,
showroomInterval: 0,
showroomI:0,
showroomJ:0
}
},
beforeMount() {
@@ -33,43 +40,77 @@ export default {
methods: {
initShowroomCarroussel(){
console.log("startShowroomCarroussel");
let $showrooms = document.querySelectorAll('.field--name-computed-showrooms-reference > .field__item')
console.log('$showrooms', $showrooms);
this.showrooms = document.querySelectorAll('.field--name-computed-showrooms-reference > .field__item')
console.log('showrooms', this.showrooms);
for (var i = 0; i < this.showrooms.length; i++) {
if (i%2 === 0) {
this.showroomsOdd.push(this.showrooms[i])
}else{
this.showroomsEven.push(this.showrooms[i])
}
}
console.log('Odd', this.showroomsOdd);
console.log('Even', this.showroomsEven);
// TODO: share media query and variables between scss and js
let column_width= 205
let column_goutiere= 13
let bp = (column_width + column_goutiere )*7 +1
const mediaQuery = window.matchMedia(`(min-width: ${bp}px)`)
if (mediaQuery.matches) {
let $showroomsOdd = []
let $showroomsEven = []
for (var i = 0; i < $showrooms.length; i++) {
if (i%2 === 0) {
$showroomsOdd.push($showrooms[i])
}else{
$showroomsEven.push($showrooms[i])
}
}
console.log('Odd', $showroomsOdd);
console.log('Even', $showroomsEven);
this.switchShowroomCarroussel($showroomsEven, 0)
this.switchShowroomCarroussel($showroomsOdd, 0)
}else{
this.switchShowroomCarroussel($showrooms, 0)
}
// Register event listener
mediaQuery.addListener(this.checkShowroomMode)
this.checkShowroomMode(mediaQuery)
// this.showroomInterval = setInterval(this.switchShowroomCarroussel.bind(this), 5000);
// console.log('this.showroomInterval', this.showroomInterval);
// this.switchShowroomCarroussel()
},
switchShowroomCarroussel($elmts, i){
// console.log('switchShowroomCarroussel i', $elmts, i);
$elmts[i].classList.add('active')
$elmts[i-1 < 0 ? $elmts.length -1 : i-1].classList.remove('active')
i++
if(i >= $elmts.length){
i = 0
checkShowroomMode(mq){
// default mode 1
let newmode = 1
if (mq.matches) {
// if mediaquery match switch to mode 2
newmode = 2
}
if(newmode !== this.showroomMode) {
// if new mode different from old mode
// reset sowrooms classes
for (var i = 0; i < this.showrooms.length; i++) {
this.showrooms[i].classList.remove('active')
}
// record new mode
this.showroomMode = newmode
// clear interval
// if (this.showroomInterval) {
clearInterval(this.showroomInterval)
this.showroomInterval = 0
// }
// reset indexes
this.showroomI = 0
this.showroomJ = 0
}
// in any case (re)launch the animation
this.showroomInterval = setInterval(this.switchShowroomCarroussel.bind(this), 5000);
console.log('this.showroomInterval', this.showroomInterval);
this.switchShowroomCarroussel()
},
switchShowroomCarroussel(){
// console.log('switchShowroomCarroussel i', $elmts, i);
if (this.showroomMode === 1) {
this.showrooms[this.showroomI].classList.add('active')
this.showrooms[this.showroomI-1 < 0 ? this.showrooms.length -1 : this.showroomI-1].classList.remove('active')
this.showroomI = this.showroomI+1 >= this.showrooms.length ? 0 : this.showroomI+1
}else{
this.showroomsOdd[this.showroomI].classList.add('active')
this.showroomsOdd[this.showroomI-1 < 0 ? this.showroomsOdd.length -1 : this.showroomI-1].classList.remove('active')
this.showroomI = this.showroomI+1 >= this.showroomsOdd.length ? 0 : this.showroomI+1
this.showroomsEven[this.showroomJ].classList.add('active')
this.showroomsEven[this.showroomJ-1 < 0 ? this.showroomsEven.length -1 : this.showroomJ-1].classList.remove('active')
this.showroomJ = this.showroomJ+1 >= this.showroomsEven.length ? 0 : this.showroomJ+1
}
setTimeout(this.switchShowroomCarroussel.bind(this,$elmts,i), 5000);
},
onClickLink(e){
console.log("onClickLink", e, this.$router, this.$route);