| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196 | 
							- <script>
 
- import Vue from 'vue'
 
- import productsMixins from 'vuejs/components/productsMixins'
 
- export default {
 
-   props: ['html', 'full'], // get the html from parent with props
 
-   mixins: [productsMixins],
 
-   data() {
 
-     return {
 
-       template: null, // compiled template from html used in render
 
-       showrooms: [],
 
-       showroomsOdd: [],
 
-       showroomsEven: [],
 
-       showroomMode: 1,
 
-       showroomInterval: 0,
 
-       showroomI:0,
 
-       showroomJ:0
 
-     }
 
-   },
 
-   beforeMount() {
 
-     console.log('Home beforeMount, full', this.full)
 
-     // compile the html src (coming from parent with props or from ajax call)
 
-     if (this.html) {
 
-       // console.log('html', this.html)
 
-       this.compileTemplate()
 
-     }
 
-   },
 
-   render(h) {
 
-     if (!this.template) {
 
-       return h('span', this.$t('default.Loading…'))
 
-     } else {
 
-       return this.template.render.call(this)
 
-     }
 
-   },
 
-   mounted(){
 
-     // this.initShowroomCarroussel()
 
-   },
 
-   methods: {
 
-     compileTemplate(){
 
-       this.template = Vue.compile(this.html)
 
-       this.$options.staticRenderFns = []
 
-       this._staticTrees = []
 
-       this.template.staticRenderFns.map(fn => (this.$options.staticRenderFns.push(fn)))
 
-       console.log('compileTemplate, full', this.full)
 
-       if (this.full) {
 
-         setTimeout(this.initShowroomCarroussel.bind(this), 250)
 
-       }
 
-     },
 
-     initShowroomCarroussel(){
 
-       console.log('startShowroomCarroussel')
 
-       this.showrooms = document.querySelectorAll('.field--name-computed-showrooms-reference > .field__item')
 
-       console.log('showrooms', this.showrooms.length, this.showrooms)
 
-       if (!this.showrooms.length) {
 
-         return
 
-       }
 
-       // console.log('TEST')
 
-       for (let 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)`)
 
-       // 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()
 
-     },
 
-     checkShowroomMode(mq){
 
-       console.log('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 (let 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), 15000);
 
-       console.log('this.showroomInterval', this.showroomInterval)
 
-       this.switchShowroomCarroussel()
 
-     },
 
-     switchShowroomCarroussel(){
 
-       console.log('switchShowroomCarroussel')
 
-       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
 
-       }
 
-     },
 
-     onClickLink(e){
 
-       console.log("onClickLink", e, this.$router, this.$route)
 
-       // record the target before event finish the propagation as currentTarget will be deleted after
 
-       let target = e.currentTarget
 
-       console.log('target', target)
 
-       if (target.protocol == "mailto:") {
 
-         // https://stackoverflow.com/questions/10172499/mailto-using-javascript
 
-         window.location.href = target.href
 
-       }else {
 
-         let path = null;
 
-         let article = null;
 
-         // if we have an article link with appropriate data attributes
 
-         // 'data-id'
 
-         // 'data-entity-type'
 
-         // 'data-bundle'
 
-         if (target.dataset.entityType == 'node' && target.dataset.bundle == 'article') {
 
-           let matches = target.pathname.match(/^\/\w{2}\/[^\/]+\/(.*)/i)
 
-           console.log('matches', matches)
 
-           article = {
 
-             nid: target.dataset.id,
 
-             alias: matches[1]
 
-           }
 
-         } else {
 
-           // find existing router route compared with link href
 
-           let pathbase = target.pathname.match(/^(\/\w{2}\/[^\/]+)\/?.*/i)
 
-           console.log('pathbase', pathbase)
 
-           for (let i = 0; i < this.$router.options.routes.length; i++) {
 
-             if (this.$router.options.routes[i].path == pathbase[1]) {
 
-               if (target.pathname !== this.$route.path) {
 
-                 path = target.pathname
 
-               }
 
-               break
 
-             }
 
-           }
 
-         }
 
-         if (article) {
 
-           this.$router.push({
 
-             name:`article`,
 
-             params: { alias: article.alias, id: article.nid }
 
-           })
 
-         } else if (path) {
 
-           this.$router.push({
 
-             path: path
 
-           })
 
-         }
 
-       }
 
-     },
 
-     onClickFieldLabel(e, part){
 
-       console.log("onClickFieldLabel", part, e, this.$router, this.$route)
 
-     }
 
-   },
 
-   watch: {
 
-     html: function(val) {
 
-       // console.log('html prop changed', val)
 
-       this.compileTemplate()
 
-     }
 
-   }
 
- }
 
- </script>
 
- <style lang="scss" scoped>
 
- </style>
 
 
  |