mirror of
				https://github.com/KevinMidboe/leifsopplevelser.git
				synced 2025-10-29 17:50:21 +00:00 
			
		
		
		
	Lots of changes. Added footer, calendar is more interactive and now we can route to specific adventures and fields become populated. Started upload progress of images and 404 page.
This commit is contained in:
		| @@ -13,6 +13,9 @@ | |||||||
|     "axios": "^0.18.0", |     "axios": "^0.18.0", | ||||||
|     "bootstrap": "^4.2.1", |     "bootstrap": "^4.2.1", | ||||||
|     "bootstrap-vue": "^2.0.0-rc.11", |     "bootstrap-vue": "^2.0.0-rc.11", | ||||||
|  |     "mapbox-gl": "^0.53.0", | ||||||
|  |     "mapbox-gl-vue": "^1.9.0", | ||||||
|  |     "moment": "^2.24.0", | ||||||
|     "node-sass": "^4.9.2", |     "node-sass": "^4.9.2", | ||||||
|     "sass-loader": "^7.0.3", |     "sass-loader": "^7.0.3", | ||||||
|     "vue": "^2.5.2", |     "vue": "^2.5.2", | ||||||
|   | |||||||
							
								
								
									
										16
									
								
								src/App.vue
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								src/App.vue
									
									
									
									
									
								
							| @@ -1,17 +1,16 @@ | |||||||
| <template> | <template> | ||||||
|   <div id="app" class="container"> |   <div id="app"> | ||||||
|  |  | ||||||
|     <router-view /> |     <router-view /> | ||||||
|  |  | ||||||
|     <Popover class="popup" v-if="popoverState"></Popover> |     <Popover class="popup" v-if="popoverState" v-bind:class="[popoverState ? 'blur' : '', 'bk']"></Popover> | ||||||
|      |  | ||||||
|   </div> |   </div> | ||||||
| </template> | </template> | ||||||
|  |  | ||||||
| <script> | <script> | ||||||
| import Vue from 'vue' | import Vue from 'vue' | ||||||
| import Popover from '@/components/Popover' |  | ||||||
| import routes from '@/routes' | import routes from '@/routes' | ||||||
|  | import Popover from '@/components/Popover' | ||||||
| import { mapGetters, mapActions } from 'vuex' | import { mapGetters, mapActions } from 'vuex' | ||||||
|  |  | ||||||
| export default { | export default { | ||||||
| @@ -25,4 +24,13 @@ export default { | |||||||
|  |  | ||||||
| <style lang="scss"> | <style lang="scss"> | ||||||
|   @import './scss/main.scss'; |   @import './scss/main.scss'; | ||||||
|  |  | ||||||
|  | .bk { | ||||||
|  |   transition: all 2s ease-out; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | .blur { | ||||||
|  |   // filter: blur(2px); | ||||||
|  |   opacity: 1; | ||||||
|  | } | ||||||
| </style> | </style> | ||||||
|   | |||||||
							
								
								
									
										15
									
								
								src/components/404.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								src/components/404.vue
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | |||||||
|  | <template> | ||||||
|  |   <div> | ||||||
|  |     <h1>Opps! Denne siden fantes ikke</h1> | ||||||
|  |   </div> | ||||||
|  | </template> | ||||||
|  |  | ||||||
|  | <script> | ||||||
|  |  | ||||||
|  | </script> | ||||||
|  |  | ||||||
|  | <style lang="scss" scoped> | ||||||
|  | h1 { | ||||||
|  |   text-transform: unset; | ||||||
|  | } | ||||||
|  | </style> | ||||||
| @@ -1,38 +1,221 @@ | |||||||
| <template> | <template> | ||||||
|   <div> |   <div class="container"> | ||||||
|     <h1>kalender</h1> |     <div class="header--inline"> | ||||||
|  |  | ||||||
|  |       <h1>{{ month }} {{ year }}</h1> | ||||||
|  |  | ||||||
|  |       <!-- {{ short }}  if longlist we want to keep printing vertically  --> | ||||||
|  |  | ||||||
|  |       <div class="navigation"> | ||||||
|  |         <button @click="decrement">{{ previousMonth }}</button> | ||||||
|  |         <button @click="reset">Today</button> | ||||||
|  |         <button @click="increment">{{ nextMonth }}</button> | ||||||
|  |       </div> | ||||||
|  |     </div> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     <div class="calendar"> | ||||||
|  |       <div v-for="dayName in days" class="calendar--dayName">{{ dayName }}</div> | ||||||
|  |       <div v-for="(day, index) in cal"> | ||||||
|  |         <day-element :key="index" :day="day" @click="clickedDay(day)"></day-element> | ||||||
|  |       </div> | ||||||
|  |  | ||||||
|  |     </div> | ||||||
|  |  | ||||||
|  |     <div v-if="long"> | ||||||
|  |       <month-summary :events="eventsFound"></month-summary> | ||||||
|  |     </div> | ||||||
|  |  | ||||||
|     {{ longList }} |  | ||||||
|   </div> |   </div> | ||||||
| </template> | </template> | ||||||
|  |  | ||||||
| <script> | <script> | ||||||
|  | import DayElement from '@/components/calendar/DayElement' | ||||||
|  | import MonthSummary from '@/components/calendar/MonthSummary' | ||||||
|  | import moment from 'moment' | ||||||
|  |  | ||||||
| export default { | export default { | ||||||
|  |   components: { DayElement, MonthSummary }, | ||||||
|   props: { |   props: { | ||||||
|     short: { |     long: { | ||||||
|       default: true, |       default: true, | ||||||
|       type: Boolean |       type: Boolean, | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   computed: { | ||||||
|  |     previousMonth: function() { | ||||||
|  |       return moment().add(this.offset - 1, 'month').format('MMMM') | ||||||
|  |     }, | ||||||
|  |     nextMonth: function() { | ||||||
|  |       return moment().add(this.offset + 1, 'month').format('MMMM') | ||||||
|     } |     } | ||||||
|   }, |   }, | ||||||
|   data() { |   data() { | ||||||
|     return { |     return { | ||||||
|  |       days: ['man', 'tir', 'ons', 'tor', 'fre', 'lør', 'søn'], | ||||||
|  |       offset: 0, | ||||||
|  |       cal: [], | ||||||
|  |       eventsFound: [], | ||||||
|     } |     } | ||||||
|   }, |   }, | ||||||
|   created() {}, |   beforeMount() { | ||||||
|   beforeMount() {}, |     this.initCalendar() | ||||||
|  |   }, | ||||||
|   methods: { |   methods: { | ||||||
|  |     clickedDay(day) { | ||||||
|  |       console.log('clicked', day) | ||||||
|  |       if (day.events.length) { | ||||||
|  |         this.$router.push({ name: 'EditEvent', query: { id: day.events[0].id } }) | ||||||
|  |       } else { | ||||||
|  |         this.$router.push({name: 'EditEvent', params: { formData: { | ||||||
|  |           title: undefined, | ||||||
|  |           dateStart: day.m, | ||||||
|  |           dateEnd: undefined, | ||||||
|  |           locationName: undefined, | ||||||
|  |           subtext: undefined | ||||||
|  |         } } }) | ||||||
|  |         // this.$router.push({ name: 'EditEvent' }) | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     initCalendar() { | ||||||
|  |       const currentMonth = moment().add(this.offset, 'month') | ||||||
|  |       const start = moment().add(this.offset, 'month').startOf('month') | ||||||
|  |       const end = moment().add(this.offset, 'month').endOf('month') | ||||||
|  |  | ||||||
|  |       this.startDate = start.subtract(start.day() - 1, 'days'); | ||||||
|  |       this.endDate = end.day() === 0 ? end : end.add(7 - end.day(), 'days') | ||||||
|  |  | ||||||
|  |       this.month = currentMonth.format('MMMM') | ||||||
|  |       this.year = currentMonth.format('YYYY') | ||||||
|  |       this.currentMonth = currentMonth; | ||||||
|  |  | ||||||
|  |       this.generateCalendar() | ||||||
|  |  | ||||||
|  |       this.getEvents() | ||||||
|  |         .then(events => this.populateCalendar(events)) | ||||||
|  |     }, | ||||||
|  |     getEvents() { | ||||||
|  |       return fetch('http://localhost:5000/api/adventure') | ||||||
|  |         .then(resp => resp.json()) | ||||||
|  |         .then(events => { | ||||||
|  |           console.log('events', events) | ||||||
|  |           this.eventsFound = events; | ||||||
|  |           return events | ||||||
|  |         }) | ||||||
|  |     }, | ||||||
|  |     generateCalendar(dates) { | ||||||
|  |       console.log('got these dates', dates) | ||||||
|  |       this.cal = [] | ||||||
|  |       let day = this.startDate; | ||||||
|  |  | ||||||
|  |       while (day < this.endDate) { | ||||||
|  |         if (day.isSame(this.currentMonth, 'month')) { | ||||||
|  |           this.cal.push(this.addDay(day, 'current')) | ||||||
|  |         } else if (day.isBefore(this.currentMonth, 'month')) { | ||||||
|  |           this.cal.push(this.addDay(day, 'before')) | ||||||
|  |         } else if (day.isAfter(this.currentMonth, 'month')) { | ||||||
|  |           this.cal.push(this.addDay(day, 'after')) | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         day.add(1, 'days') | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       console.log(this.cal) | ||||||
|  |     }, | ||||||
|  |     populateCalendar(events) { | ||||||
|  |       const currentMonth = this.currentMonth; | ||||||
|  |  | ||||||
|  |       console.log('populateCalendar starting, cal content', this.cal) | ||||||
|  |        | ||||||
|  |  | ||||||
|  |       this.cal.forEach(day => { | ||||||
|  |         let m_day = moment(day.m); | ||||||
|  |  | ||||||
|  |         events.forEach(event => { | ||||||
|  |           if (m_day.isSame(moment(event.dateStart), 'day')) { | ||||||
|  |             day.events = [...day.events, event]; | ||||||
|  |  | ||||||
|  |             console.log('day', day) | ||||||
|  |           } | ||||||
|  |         }) | ||||||
|  |       }) | ||||||
|  |  | ||||||
|  |       this.cal = JSON.parse(JSON.stringify(this.cal)) | ||||||
|  |     }, | ||||||
|  |  | ||||||
|  |     addDay(day, state) { | ||||||
|  |       return { | ||||||
|  |         name: day.format('dddd'), | ||||||
|  |         date: day.format('DD'), | ||||||
|  |         relativeDay: state, | ||||||
|  |         currentDay: moment().isSame(day, 'day'), | ||||||
|  |         events: [], | ||||||
|  |         m: day.format() | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |  | ||||||
|  |     increment() { | ||||||
|  |       this.offset++; | ||||||
|  |       this.initCalendar(); | ||||||
|  |     }, | ||||||
|  |     decrement() { | ||||||
|  |       this.offset--; | ||||||
|  |       this.initCalendar(); | ||||||
|  |     }, | ||||||
|  |     reset() { | ||||||
|  |       this.offset = 0 | ||||||
|  |       this.initCalendar(); | ||||||
|  |     } | ||||||
|   } |   } | ||||||
| } | } | ||||||
| </script> | </script> | ||||||
|  |  | ||||||
| <style lang="scss" scoped> | <style lang="scss" scoped> | ||||||
|    | .header--inline { | ||||||
|   div { |   display: flex; | ||||||
|     width: 70%; |  | ||||||
|     display: block; |   & .navigation { | ||||||
|     margin: 6rem auto 0; |     margin-left: auto; | ||||||
|  |     align-self: flex-end; | ||||||
|  |     margin-bottom: 1rem; | ||||||
|  |   } | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | h1 { | ||||||
|  |   margin-top: 40px; | ||||||
|  |   margin-bottom: 20px; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | .navigation button{ | ||||||
|  |   &:first-child, &:last-child { | ||||||
|  |     // padding: 0.1rem; | ||||||
|  |     // background-color: red; | ||||||
|  |     width: 4.5rem; | ||||||
|  |   } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | .calendar { | ||||||
|  |   display: grid; | ||||||
|  |   grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr 1fr; | ||||||
|  |   width: 100%; | ||||||
|  |   // height: 8rem; | ||||||
|  |   background-color: white; | ||||||
|  |  | ||||||
|  |   @media screen and (max-width: 400px) { | ||||||
|  |     grid-template-columns: 1fr; | ||||||
|  |     // width: calc(100% - 4rem); | ||||||
|  |  | ||||||
|  |     &--dayName { | ||||||
|  |       display: none; | ||||||
|  |     } | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  |   &--dayName { | ||||||
|  |     text-align: right; | ||||||
|  |     text-transform: capitalize; | ||||||
|  |     margin-bottom: 0.45rem; | ||||||
|  |     margin-right: 0.6rem; | ||||||
|  |   } | ||||||
|  | } | ||||||
| </style> | </style> | ||||||
| @@ -4,7 +4,8 @@ | |||||||
|     <div class="container"> |     <div class="container"> | ||||||
|       <h1 class="slipping-left">registrer en ny opplevelse</h1> |       <h1 class="slipping-left">registrer en ny opplevelse</h1> | ||||||
|        |        | ||||||
|       <event-form></event-form> |       <!-- {{ formData }} --> | ||||||
|  |       <event-form v-if="notWaitingForFormdata || formData" :formData="formData"></event-form> | ||||||
|     </div> |     </div> | ||||||
|  |  | ||||||
|     <!-- <div class="image-grid"> |     <!-- <div class="image-grid"> | ||||||
| @@ -64,10 +65,17 @@ export default { | |||||||
|       if (this.imageGrid) |       if (this.imageGrid) | ||||||
|         return this.grid.rows[this.imageGrid.lastBreakpoint] |         return this.grid.rows[this.imageGrid.lastBreakpoint] | ||||||
|       return 150 |       return 150 | ||||||
|  |     }, | ||||||
|  |     notWaitingForFormdata: function() { | ||||||
|  |       if (this.$route.query.id) { | ||||||
|  |         return false; | ||||||
|  |       } | ||||||
|  |       return true; | ||||||
|     } |     } | ||||||
|   }, |   }, | ||||||
|   data() { |   data() { | ||||||
|     return { |     return { | ||||||
|  |       formData: undefined, | ||||||
|       timeout: undefined, |       timeout: undefined, | ||||||
|       features: [], |       features: [], | ||||||
|       showAutocompleted: false, |       showAutocompleted: false, | ||||||
| @@ -128,11 +136,25 @@ export default { | |||||||
|       } |       } | ||||||
|     } |     } | ||||||
|   }, |   }, | ||||||
|   created() {}, |   created() { | ||||||
|  |     const id = this.$route.query.id | ||||||
|  |     if (id) { | ||||||
|  |       this.fetchById(id) | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|   mounted() { |   mounted() { | ||||||
|     this.imageGrid = this.$refs.imageGrid; |     this.imageGrid = this.$refs.imageGrid; | ||||||
|   }, |   }, | ||||||
|   methods: { |   methods: { | ||||||
|  |     fetchById(id) { | ||||||
|  |       fetch('http://localhost:5000/api/adventure/' + id) | ||||||
|  |       .then(resp => resp.json()) | ||||||
|  |       .then(data => { | ||||||
|  |         this.formData = data; | ||||||
|  |         console.log('data', data) | ||||||
|  |       }) | ||||||
|  |     }, | ||||||
|  |  | ||||||
|     processForm: function() { |     processForm: function() { | ||||||
|       let data = { |       let data = { | ||||||
|         title: this.title, |         title: this.title, | ||||||
| @@ -272,18 +294,4 @@ export default { | |||||||
|     } |     } | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  |  | ||||||
|   .container { |  | ||||||
|     color: rgba(0, 0, 0, 0.701961); |  | ||||||
|     line-height: 22.399999618530273px; |  | ||||||
|     padding-right: 0px; |  | ||||||
|     width: 100%; |  | ||||||
|     max-width: 612px; |  | ||||||
|  |  | ||||||
|     margin: 0 auto; |  | ||||||
|  |  | ||||||
|  |  | ||||||
|     margin-bottom: 3rem; |  | ||||||
|   } |  | ||||||
|  |  | ||||||
| </style> | </style> | ||||||
| @@ -1,53 +1,56 @@ | |||||||
| <template> | <template> | ||||||
|   <form class="form" @submit.prevent=""> |   <div> | ||||||
|   <!-- <form class="form" @submit.prevent="processForm"> --> |     <form class="form" @submit.prevent=""> | ||||||
|     <div class="form-item required"> |     <!-- <form class="form" @submit.prevent="processForm"> --> | ||||||
|       <label class="title">tittel <span class="required">*</span></label> |       <div class="form-item required"> | ||||||
|       <input class="field-element" v-model="title" type="text" :tabindex="1"> |         <label class="title">tittel <span class="required">*</span></label> | ||||||
|     </div> |         <input class="field-element" v-model="title" type="text" :tabindex="1"> | ||||||
|  |  | ||||||
|     <fieldset class="form-item"> |  | ||||||
|       <div class="title">dato <span class="required">*</span></div> |  | ||||||
|       <div class="field first-name"> |  | ||||||
|         <label class="caption"> |  | ||||||
|           <input v-model="dateStart" type="date" spellcheck="false" maxlength="30" :tabindex="2"> |  | ||||||
|           fra dato |  | ||||||
|         </label> |  | ||||||
|       </div> |       </div> | ||||||
|  |  | ||||||
|       <div class="field last-name"> |       <fieldset class="form-item"> | ||||||
|         <label class="caption"> |         <div class="title">dato <span class="required">*</span></div> | ||||||
|           <input v-model="dateEnd" type="date" spellcheck="false" maxlength="30" :tabindex="3"> |         <div class="field first-name"> | ||||||
|           til dato |           <label class="caption"> | ||||||
|         </label> |             <input v-model="dateStart" type="date" spellcheck="false" maxlength="30" :tabindex="2"> | ||||||
|  |             fra dato | ||||||
|  |           </label> | ||||||
|  |         </div> | ||||||
|  |  | ||||||
|  |         <div class="field last-name"> | ||||||
|  |           <label class="caption"> | ||||||
|  |             <input v-model="dateEnd" type="date" spellcheck="false" maxlength="30" :tabindex="3"> | ||||||
|  |             til dato | ||||||
|  |           </label> | ||||||
|  |         </div> | ||||||
|  |       </fieldset> | ||||||
|  |  | ||||||
|  |       <form-element-location @newLocation="setLocation" :inputLocation="formData"></form-element-location> | ||||||
|  |  | ||||||
|  |       <div class="form-item"> | ||||||
|  |         <label class="title">love letter <span class="required">*</span></label> | ||||||
|  |          | ||||||
|  |         <textarea v-model="subtext"></textarea> | ||||||
|       </div> |       </div> | ||||||
|     </fieldset> |  | ||||||
|  |  | ||||||
|     <form-element-location @newLocation="setLocation"></form-element-location> |  | ||||||
|  |  | ||||||
|     <div class="form-item"> |  | ||||||
|       <label class="title">love letter <span class="required">*</span></label> |  | ||||||
|        |  | ||||||
|       <textarea v-model="subtext"></textarea> |  | ||||||
|     </div> |  | ||||||
|  |  | ||||||
|  |  | ||||||
|     <form-element-upload @newFiles="setFiles"></form-element-upload> |       <form-element-upload @newFiles="setFiles"></form-element-upload> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |   <!--         <div class="form-button-wrapper form-button-wrapper--align-left"> | ||||||
|  |         <button class="button sqs-system-button sqs-editable-button" @click="gridSettings">Settings</button> | ||||||
|  |       </div> --> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |       <div class="hidden form-submission-text">Thank you!</div> | ||||||
|  |  | ||||||
|  |       <div class="hidden form-submission-html" data-submission-html=""></div> | ||||||
|  |  | ||||||
|  |     </form> | ||||||
|  |  | ||||||
|     <div> |     <div> | ||||||
|       <button class="button" type="submit">Legg til</button> |       <button class="button" @click="processForm">Legg til</button> | ||||||
|     </div> |     </div> | ||||||
|  |   </div> | ||||||
| <!--         <div class="form-button-wrapper form-button-wrapper--align-left"> |  | ||||||
|       <button class="button sqs-system-button sqs-editable-button" @click="gridSettings">Settings</button> |  | ||||||
|     </div> --> |  | ||||||
|  |  | ||||||
|  |  | ||||||
|     <div class="hidden form-submission-text">Thank you!</div> |  | ||||||
|  |  | ||||||
|     <div class="hidden form-submission-html" data-submission-html=""></div> |  | ||||||
|  |  | ||||||
|   </form> |  | ||||||
| </template> | </template> | ||||||
|  |  | ||||||
| <script> | <script> | ||||||
| @@ -55,20 +58,28 @@ import axios from 'axios' | |||||||
| import ClickOutside from 'vue-click-outside' | import ClickOutside from 'vue-click-outside' | ||||||
| import FormElementLocation from './form/FormElementLocation' | import FormElementLocation from './form/FormElementLocation' | ||||||
| import FormElementUpload from './form/FormElementUpload' | import FormElementUpload from './form/FormElementUpload' | ||||||
|  | import { dateToDayMonthYearDashed } from '@/utils/dates' | ||||||
|  |  | ||||||
| export default { | export default { | ||||||
|   components: { |   components: { | ||||||
|     FormElementLocation, |     FormElementLocation, | ||||||
|     FormElementUpload |     FormElementUpload | ||||||
|   }, |   }, | ||||||
|  |   props: { | ||||||
|  |     formData: { | ||||||
|  |       type: Object, | ||||||
|  |       required: false, | ||||||
|  |       default: undefined | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|   data() { |   data() { | ||||||
|     return { |     return { | ||||||
|       title: '', |       title: undefined, | ||||||
|       dateStart: '', |       dateStart: undefined, | ||||||
|       dateEnd: '', |       dateEnd: undefined, | ||||||
|       chosenLocation: undefined, |       chosenLocation: undefined, | ||||||
|       chosenFiles: undefined, |       chosenFiles: undefined, | ||||||
|       subtext: '', |       subtext: undefined, | ||||||
|     } |     } | ||||||
|   }, |   }, | ||||||
|   computed: { |   computed: { | ||||||
| @@ -79,15 +90,21 @@ export default { | |||||||
|       return this.chosenLocation ? this.chosenLocation.geometry.coordinates : undefined; |       return this.chosenLocation ? this.chosenLocation.geometry.coordinates : undefined; | ||||||
|     } |     } | ||||||
|   }, |   }, | ||||||
|  |   beforeMount() { | ||||||
|  |     const formData = this.formData || this.$route.params.formData; | ||||||
|  |      | ||||||
|  |     console.log('formData', formData) | ||||||
|  |     if (formData) { | ||||||
|  |       this.title = formData.title; | ||||||
|  |       this.dateStart = dateToDayMonthYearDashed(formData.dateStart); | ||||||
|  |       this.dateEnd = dateToDayMonthYearDashed(formData.dateEnd); | ||||||
|  |       this.chosenLocation = formData.locationName; | ||||||
|  |       this.subtext = formData.subtext; | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|   methods: { |   methods: { | ||||||
|     setLocation(location) { |     setLocation(location) { this.chosenLocation = location }, | ||||||
|       console.log('detected location changed') |     setFiles(files) { this.chosenFiles = files }, | ||||||
|       console.log('inputLocation', location) |  | ||||||
|       this.chosenLocation = location; |  | ||||||
|     }, |  | ||||||
|     setFiles(files) { |  | ||||||
|       this.chosenFiles = files; |  | ||||||
|     }, |  | ||||||
|     processForm: function() { |     processForm: function() { | ||||||
|       let data = { |       let data = { | ||||||
|         title: this.title, |         title: this.title, | ||||||
| @@ -98,6 +115,8 @@ export default { | |||||||
|         geoposition: this.LocationGeoposition, |         geoposition: this.LocationGeoposition, | ||||||
|         mapboxData: this.chosenLocation |         mapboxData: this.chosenLocation | ||||||
|       } |       } | ||||||
|  |       console.log('Processing form to post to backend with data', data) | ||||||
|  |  | ||||||
|  |  | ||||||
|       fetch('http://localhost:5000/api/adventure', { |       fetch('http://localhost:5000/api/adventure', { | ||||||
|         method: 'POST', |         method: 'POST', | ||||||
| @@ -107,6 +126,7 @@ export default { | |||||||
|         }, |         }, | ||||||
|         body: JSON.stringify(data) |         body: JSON.stringify(data) | ||||||
|       }) |       }) | ||||||
|  |  | ||||||
|       // axios.post('localhost:5000/api/adventure', { |       // axios.post('localhost:5000/api/adventure', { | ||||||
|       //   body: JSON.stringify(data) |       //   body: JSON.stringify(data) | ||||||
|       // }) |       // }) | ||||||
| @@ -136,7 +156,6 @@ export default { | |||||||
|   height: 42px; |   height: 42px; | ||||||
|   letter-spacing: 1px; |   letter-spacing: 1px; | ||||||
|   line-height: 14px; |   line-height: 14px; | ||||||
|   margin-left: -10px; |  | ||||||
|   padding: 0 1rem; |   padding: 0 1rem; | ||||||
|   text-align: center; |   text-align: center; | ||||||
|   text-decoration: none; |   text-decoration: none; | ||||||
|   | |||||||
| @@ -1,19 +1,28 @@ | |||||||
| <template> | <template> | ||||||
|   <div> |   <div v-if="eventData"> | ||||||
|     <div class="form"> |     <div class="form"> | ||||||
|       <router-link to="edit"> |       <router-link :to="{ name: 'EditEvent', query: { id: eventData.id }}"> | ||||||
|         <button class="button" type="submit">Rediger</button> |          | ||||||
|  |         <button class="button" @click="">Rediger</button> | ||||||
|  |          | ||||||
|       </router-link> |       </router-link> | ||||||
|     </div> |     </div> | ||||||
|  |  | ||||||
|     <div class="gallery"> |     <div class="gallery"> | ||||||
|       <div class="gallery--header"> |       <div class="gallery--header"> | ||||||
|         <h1>Topptur til gaustadtoppen æøå {{ id }}</h1> |         <h1>{{ eventData.title || title }}</h1> | ||||||
|         <div class="gallery--info"> |         <div class="gallery--info"> | ||||||
|           <p>{{ eventDate.from }} - {{ eventDate.until }}</p> |           <p> | ||||||
|           <p>{{ eventLocation }}. <a href="#">Se kart</a></p> |              {{ dateToDayMonthYear(eventData.dateStart) }} | ||||||
|  |              -  | ||||||
|  |              {{ dateToDayMonthYear(eventData.dateEnd) }}</p> | ||||||
|  |           <p>{{ eventData.locationName }} <a v-if="eventData.locationName" @click="toggleMap"> {{ showMap ? 'Lukk kart' : 'Vis kart'}}</a></p> | ||||||
|  |  | ||||||
|           <p>{{ subtext }}</p> |           <transition name="slide" class="transition"> | ||||||
|  |             <map-view v-if="showMap" :mapboxData="mapboxData"></map-view> | ||||||
|  |           </transition> | ||||||
|  |  | ||||||
|  |           <p>{{ eventData.subtext }}</p> | ||||||
|         </div> |         </div> | ||||||
|       </div> |       </div> | ||||||
|  |  | ||||||
| @@ -27,19 +36,17 @@ | |||||||
|  |  | ||||||
| <script> | <script> | ||||||
| import Gallery from '@/components/Gallery' | import Gallery from '@/components/Gallery' | ||||||
| import Calendar from '@/components/Calendar' | import MapView from '@/components/MapView' | ||||||
|  | import moment from 'moment' | ||||||
|  |  | ||||||
| export default { | export default { | ||||||
|   components: { |   components: { | ||||||
|     Gallery, Calendar |     Gallery, MapView | ||||||
|   }, |   }, | ||||||
|   props: ['id'], |   props: { | ||||||
|   data() { |     eventData: { | ||||||
|     return { |       type: Object, | ||||||
|       eventLocation: 'Oslo, Gardermoen, Norge', |       required: false | ||||||
|       startDate: undefined, |  | ||||||
|       endDate: undefined, |  | ||||||
|       subtext: 'On November 1, 2018, we embarked on our tour with Triathalon. Thank you so much to everyone who came to see us, for buying our merch, for saying hello after the shows, to the amazing hard-working people at the venues, and of course to our team + Live Nation, Ones to Watch, for booking us on our favorite tour this year. And thank you to Claud, Girl Ultra and Kevin Krauter for playing these shows with us. \n\n Here are some of our favorite moments captured by one of our favorite people, Meghan Cummings (@meghancummings). ' |  | ||||||
|     } |     } | ||||||
|   }, |   }, | ||||||
|   computed: { |   computed: { | ||||||
| @@ -49,12 +56,79 @@ export default { | |||||||
|         until: this.endDate || '12.10.19' |         until: this.endDate || '12.10.19' | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
|  |   }, | ||||||
|  |   data() { | ||||||
|  |     return { | ||||||
|  |       showMap: false, | ||||||
|  |       mapboxData: undefined, | ||||||
|  |  | ||||||
|  |       title: 'Topptur til gaustadtoppen', | ||||||
|  |       eventLocation: 'Oslo, Gardermoen, Norge', | ||||||
|  |       startDate: undefined, | ||||||
|  |       endDate: undefined, | ||||||
|  |       subtext: 'On November 1, 2018, we embarked on our tour with Triathalon. Thank you so much to everyone who came to see us, for buying our merch, for saying hello after the shows, to the amazing hard-working people at the venues, and of course to our team + Live Nation, Ones to Watch, for booking us on our favorite tour this year. And thank you to Claud, Girl Ultra and Kevin Krauter for playing these shows with us. \n\n Here are some of our favorite moments captured by one of our favorite people, Meghan Cummings (@meghancummings). ', | ||||||
|  |       // mapboxData: {"id":"address.3598204582760676","type":"Feature","place_type":["address"],"relevance":1,"properties":{"accuracy":"point"},"text":"Rosendalsveien","place_name":"Rosendalsveien50b,1166Oslo,Norway","center":[10.799471,59.853973],"geometry":{"type":"Point","coordinates":[10.799471,59.853973]},"address":"50b","context":[{"id":"postcode.9489910510813950","text":"1166"},{"id":"place.17289044417596980","short_code":"NO-03","wikidata":"Q585","text":"Oslo"},{"id":"country.16020050790143780","short_code":"no","wikidata":"Q20","text":"Norway"}]} | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   created() { | ||||||
|  |     const id = this.$route.params.id; | ||||||
|  |     console.log('id found', id) | ||||||
|  |     if (id) { | ||||||
|  |       fetch('http://localhost:5000/api/adventure/' + id) | ||||||
|  |       .then(resp => { | ||||||
|  |         console.log('resp', resp) | ||||||
|  |         resp.json() | ||||||
|  |       }) | ||||||
|  |       .then(data => this.eventData = data) | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   methods: { | ||||||
|  |     dateToDayMonthYear(date) { | ||||||
|  |       return moment(date).format('DD.MM.YYYY') | ||||||
|  |  | ||||||
|  |     }, | ||||||
|  |     toggleMap() { | ||||||
|  |       if (this.showMap) { | ||||||
|  |         this.showMap = false | ||||||
|  |         return | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       var url = new URL('http://localhost:5000/api/location') | ||||||
|  |       url.search = new URLSearchParams({ name: this.eventData.locationName }) | ||||||
|  |  | ||||||
|  |       fetch(url) | ||||||
|  |       .then(resp => resp.json()) | ||||||
|  |       .then(data => { | ||||||
|  |         this.mapboxData = data.mapboxData; | ||||||
|  |         this.showMap = true; | ||||||
|  |       }) | ||||||
|  |       .catch((err) => console.log('error fetching locations by name from server. Error:', err)) | ||||||
|  |     } | ||||||
|   } |   } | ||||||
| } | } | ||||||
| </script> | </script> | ||||||
|  |  | ||||||
| <style lang="scss" scoped> | <style lang="scss" scoped> | ||||||
|  |  | ||||||
|  | .slide-enter-active, .slide-leave-active { | ||||||
|  | transition: margin-bottom .1s ease-out; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | /* | ||||||
|  | you set the css property before transition starts | ||||||
|  | */ | ||||||
|  | .slide-enter, .slide-leave-to { | ||||||
|  | margin-bottom: -50vh; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | /* | ||||||
|  | you set the css property it will be when transition ends | ||||||
|  | */ | ||||||
|  | .slide-enter-to, .slide-leave { | ||||||
|  | margin-bottom: 0px; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
| .gallery { | .gallery { | ||||||
|   // padding: 2.1rem; |   // padding: 2.1rem; | ||||||
|  |  | ||||||
| @@ -76,6 +150,7 @@ export default { | |||||||
|     a { |     a { | ||||||
|       font-family: 'Ambroise std demi'; |       font-family: 'Ambroise std demi'; | ||||||
|       font-style: normal; |       font-style: normal; | ||||||
|  |       color: #3b70a2; | ||||||
|  |  | ||||||
|       &:visited { |       &:visited { | ||||||
|         color: #3b70a2; |         color: #3b70a2; | ||||||
|   | |||||||
							
								
								
									
										37
									
								
								src/components/Footer.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								src/components/Footer.vue
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,37 @@ | |||||||
|  | <template> | ||||||
|  |   <footer class="footer"> | ||||||
|  |     <div class="start"><a href="mailto:kevin.midboe@gmail.com?Subject=Ref Leifsopplevelser:%20">Kontakt</a></div> | ||||||
|  |     <div class="middle">2</div> | ||||||
|  |     <div class="end">© Kevin Midboe, 2019</div> | ||||||
|  |   </footer> | ||||||
|  | </template> | ||||||
|  |  | ||||||
|  | <style lang="scss"> | ||||||
|  |   .footer { | ||||||
|  |     height: 3.5rem; | ||||||
|  |     width: calc(100% - 8rem); | ||||||
|  |     background-color: #fafbfc; | ||||||
|  |  | ||||||
|  |     color: rgb(88, 96, 105); | ||||||
|  |     font-size: 1rem; | ||||||
|  |     display: flex; | ||||||
|  |     flex-direction: row; | ||||||
|  |     justify-content: center; | ||||||
|  |     align-items: center; | ||||||
|  |  | ||||||
|  |     padding: 0 4rem; | ||||||
|  |  | ||||||
|  |     > div:not(:last-child) { | ||||||
|  |       // background-color: navajowhite; | ||||||
|  |       margin-right: 2rem; | ||||||
|  |  | ||||||
|  |       a, a:visited { | ||||||
|  |         color: rgb(88, 96, 105); | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     .end { | ||||||
|  |       margin-left: auto; | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | </style> | ||||||
| @@ -1,9 +1,15 @@ | |||||||
| <template> | <template> | ||||||
|   <div class="gallery-container"> |   <div> | ||||||
|  |     <button @click="toggleView">Toggle view</button> | ||||||
|  |  | ||||||
|  |     <div class="gallery-container"> | ||||||
|  |  | ||||||
|  |        | ||||||
|  |       <div v-for="(item, key) in gallery"> | ||||||
|  |         <gallery-image v-if="item.type === 'image'" :image="item" :index="key" :wide="wide" @click="imageSelected"></gallery-image>  | ||||||
|  |         <gallery-text v-if="item.type === 'text'" :text="item"></gallery-text>  | ||||||
|  |       </div> | ||||||
|  |  | ||||||
|     <div v-for="(item, key) in gallery"> |  | ||||||
|       <gallery-image v-if="item.type === 'image'" :image="item" :index="key" @click="imageSelected"></gallery-image>  |  | ||||||
|       <gallery-text v-if="item.type === 'text'" :text="item"></gallery-text>  |  | ||||||
|     </div> |     </div> | ||||||
|   </div> |   </div> | ||||||
| </template> | </template> | ||||||
| @@ -27,6 +33,7 @@ export default { | |||||||
|   data() { |   data() { | ||||||
|     return { |     return { | ||||||
|       selected: undefined, |       selected: undefined, | ||||||
|  |       wide: false, | ||||||
|       gallery: [ |       gallery: [ | ||||||
|         { |         { | ||||||
|           type: 'image', |           type: 'image', | ||||||
| @@ -74,7 +81,10 @@ export default { | |||||||
|       this.setPopoverAlbum(val) |       this.setPopoverAlbum(val) | ||||||
|     } |     } | ||||||
|   }, |   }, | ||||||
|   methods: {     |   methods: { | ||||||
|  |     toggleView() { | ||||||
|  |       this.wide = !this.wide; | ||||||
|  |     }, | ||||||
|     setPopoverAlbum: (album) => store.dispatch('setPopoverAlbum', album), |     setPopoverAlbum: (album) => store.dispatch('setPopoverAlbum', album), | ||||||
|  |  | ||||||
|     imageSelected(image) { |     imageSelected(image) { | ||||||
|   | |||||||
| @@ -1,8 +1,9 @@ | |||||||
| <template> | <template> | ||||||
|   <div> |   <div v-bind:class="{ isWide: wide }"> | ||||||
|     {{ index }} |     <transition name="fade"> | ||||||
|       <img :src="image.url" @click="popover(image)"/> |       <img :src="image.url" @click="popover(image)" v-on:load="onLoaded" v-show="loaded"/> | ||||||
|       <p>{{ image.name }}</p> |     </transition> | ||||||
|  |     <p>{{ image.name }}</p> | ||||||
|   </div> |   </div> | ||||||
| </template> | </template> | ||||||
|  |  | ||||||
| @@ -17,12 +18,22 @@ export default { | |||||||
|     }, |     }, | ||||||
|     index: { |     index: { | ||||||
|       type: Number, |       type: Number, | ||||||
|  |     }, | ||||||
|  |     wide: { | ||||||
|  |       type: Boolean | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   data() { | ||||||
|  |     return { | ||||||
|  |       loaded: false | ||||||
|     } |     } | ||||||
|   }, |   }, | ||||||
|   methods: { |   methods: { | ||||||
|     showPopover: () => store.dispatch('showPopover'), |     showPopover: () => store.dispatch('showPopover'), | ||||||
|     setPopoverAlbumIndex: (index) => store.dispatch('setPopoverAlbumIndex', index), |     setPopoverAlbumIndex: (index) => store.dispatch('setPopoverAlbumIndex', index), | ||||||
|  |  | ||||||
|  |     onLoaded() { this.loaded = true }, | ||||||
|  |  | ||||||
|     popover(image) { |     popover(image) { | ||||||
|       this.setPopoverAlbumIndex(this.index) |       this.setPopoverAlbumIndex(this.index) | ||||||
|       this.showPopover() |       this.showPopover() | ||||||
| @@ -33,15 +44,31 @@ export default { | |||||||
| </script> | </script> | ||||||
|  |  | ||||||
| <style lang="scss" scoped> | <style lang="scss" scoped> | ||||||
|   img { |  | ||||||
|     height: 300px; |  | ||||||
|     cursor: pointer; |  | ||||||
|     margin: 0 0.5rem; |  | ||||||
|  |  | ||||||
|     @media screen and (max-width: 600px) { | .fade-enter-active, .fade-leave-active { | ||||||
|       background-color: red; |   transition: opacity 0.8s ease-in-out; | ||||||
|       height: unset; | } | ||||||
|       width: 100%; | .fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ { | ||||||
|     } |   opacity: 0; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | img { | ||||||
|  |   max-height: 250px; | ||||||
|  |   max-width: 250px; | ||||||
|  |   cursor: pointer; | ||||||
|  |   margin: 0 0.5rem; | ||||||
|  |  | ||||||
|  |   @media screen and (max-width: 600px) { | ||||||
|  |     background-color: red; | ||||||
|  |     height: unset; | ||||||
|  |     width: 100%; | ||||||
|   } |   } | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  .isWide img { | ||||||
|  |     width: 100%; | ||||||
|  |     height: unset; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |  | ||||||
| </style> | </style> | ||||||
| @@ -6,39 +6,49 @@ | |||||||
|     {{ date }} --> |     {{ date }} --> | ||||||
|     <!-- <Header></Header> --> |     <!-- <Header></Header> --> | ||||||
|      |      | ||||||
|     <div class="container"> |     <div class="header"> | ||||||
|       <h1 class="header">leifs opplevelser</h1> |       <h1>{{ title }}</h1> | ||||||
|       <event-page style="height: 100%; overflow: auto;"></event-page> |  | ||||||
|     </div> |     </div> | ||||||
|  |  | ||||||
|  |     <calendar :long="false"></calendar> | ||||||
|  |      | ||||||
|  |     <div class="container" v-for="event in events"> | ||||||
|  |       <event-page :eventData="event"></event-page> | ||||||
|  |     </div> | ||||||
|  |  | ||||||
|  |     <Footer></Footer> | ||||||
|   </div> |   </div> | ||||||
| </template> | </template> | ||||||
|  |  | ||||||
| <script> | <script> | ||||||
| import Header from '@/components/Header' | import Header from '@/components/Header' | ||||||
| import EventPage from '@/components/EventPage' | import EventPage from '@/components/EventPage' | ||||||
|  | import Calendar from '@/components/Calendar' | ||||||
|  | import Footer from '@/components/Footer' | ||||||
|  |  | ||||||
| export default { | export default { | ||||||
|   components: { Header, EventPage }, |   components: { Header, EventPage, Calendar, Footer }, | ||||||
|   data() { |   data() { | ||||||
|     return { |     return { | ||||||
|       title: 'Leifs opplevelser', |       title: 'leifs opplevelser', | ||||||
|       date: undefined, |       events: undefined | ||||||
|       bool: false, |  | ||||||
|  |  | ||||||
|     } |     } | ||||||
|   }, |   }, | ||||||
|  |   beforeMount() { | ||||||
|  |     this.fetchEvents() | ||||||
|  |   }, | ||||||
|   |   | ||||||
|   methods: { |   methods: { | ||||||
|     // openPopover(url) { |     fetchEvents() { | ||||||
|     //   console.log('popover received with', url) |       fetch('http://localhost:5000/api/adventure') | ||||||
|     //   this.popoverImage = url; |       .then(resp => resp.json()) | ||||||
|     //   this.popoverShow = true; |       .then((data) => { | ||||||
|     //   document.body.classList.add('disableScroll'); |         console.log('response from fetch events', data) | ||||||
|     // }, |         this.events = data; | ||||||
|     // closePopover(url) { |       }) | ||||||
|     //   this.popoverShow = false; |       .catch((error) => console.log('unable to fetch events from api; error message:', error)) | ||||||
|     //   document.body.classList.remove('disableScroll'); |     }, | ||||||
|     // }, |  | ||||||
|     navigate: function() { |     navigate: function() { | ||||||
|       console.log(this.$router) |       console.log(this.$router) | ||||||
|       this.$router.push('/edit'); |       this.$router.push('/edit'); | ||||||
| @@ -50,7 +60,10 @@ export default { | |||||||
| <style language="scss" scoped> | <style language="scss" scoped> | ||||||
|  |  | ||||||
|   .header { |   .header { | ||||||
|     margin-bottom: 5rem; |     margin: 0 auto; | ||||||
|  |     max-width: 1200px; | ||||||
|  |     padding: 2.5rem 0rem 2rem 3.5rem; | ||||||
|  |     /*margin-bottom: 5rem;*/ | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   h2 { |   h2 { | ||||||
| @@ -58,13 +71,4 @@ export default { | |||||||
|     font-weight: normal; |     font-weight: normal; | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   .container { |  | ||||||
|     min-height: 1029px; |  | ||||||
|  |  | ||||||
|     margin: 25px auto 85px; |  | ||||||
|     padding: 4em; |  | ||||||
|     max-width: 888px; |  | ||||||
|     /*max-width: 100%;*/ |  | ||||||
|     background-color: #fff; |  | ||||||
|   } |  | ||||||
| </style> | </style> | ||||||
							
								
								
									
										61
									
								
								src/components/MapView.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										61
									
								
								src/components/MapView.vue
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,61 @@ | |||||||
|  | <template> | ||||||
|  |   <div class="map"> | ||||||
|  |     {{ mapboxData.center }} | ||||||
|  |     <mapbox | ||||||
|  |       :access-token="accessToken" | ||||||
|  |       :map-options="options" | ||||||
|  |       @map-init="mapInitialized" | ||||||
|  |       @map-load="mapLoaded"></mapbox> | ||||||
|  |   </div> | ||||||
|  | </template> | ||||||
|  |  | ||||||
|  | <script> | ||||||
|  | import mapboxgl from 'mapbox-gl'; | ||||||
|  | import Mapbox from 'mapbox-gl-vue'; | ||||||
|  |  | ||||||
|  | export default { | ||||||
|  |   components: { Mapbox }, | ||||||
|  |   props: { | ||||||
|  |     mapboxData: { | ||||||
|  |       type: Object, | ||||||
|  |       required: true | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   data() { | ||||||
|  |     return { | ||||||
|  |       marker: undefined, | ||||||
|  |       map: undefined, | ||||||
|  |  | ||||||
|  |       accessToken: "pk.eyJ1Ijoia2V2aW5taWRib2UiLCJhIjoiY2pydWhlamQyMHJ2NTRhdGN1em5ndXVyMyJ9.Ejdo_3iuuGOD662Bh6es4w", | ||||||
|  |       options: { | ||||||
|  |           style: 'mapbox://styles/kevinmidboe/cjrvwyoft1tij1ftb94f75lqs', | ||||||
|  |           sprite: 'mapbox://styles/kevinmidboe/cjrvwyoft1tij1ftb94f75lqs', | ||||||
|  |           center: this.mapboxData.center, | ||||||
|  |           zoom: 10, | ||||||
|  |           minZoom: 0, | ||||||
|  |           maxZoom: 18 | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   methods: { | ||||||
|  |     mapInitialized(map) { this.map = map }, | ||||||
|  |     mapLoaded() { | ||||||
|  |       this.setLocationMarker() | ||||||
|  |     }, | ||||||
|  |     setLocationMarker() { | ||||||
|  |        if(this.marker != undefined) this.marker.remove(); | ||||||
|  |  | ||||||
|  |       this.marker = new mapboxgl.Marker() | ||||||
|  |         .setLngLat(this.mapboxData.center) | ||||||
|  |         .addTo(this.map); | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | </script> | ||||||
|  |  | ||||||
|  | <style lang="scss" scoped> | ||||||
|  | #map { | ||||||
|  |   width: 100%; | ||||||
|  |   height: 50vh; | ||||||
|  | } | ||||||
|  | </style> | ||||||
| @@ -1,6 +1,6 @@ | |||||||
| <template> | <template> | ||||||
|   <div class="popover" @click="hidePopover" v-touch:swipe.left="backwards" v-touch:swipe.right="forwards"> |   <div class="popover"> | ||||||
|     <div class="popover-content"> |     <div class="popover-content" @click="hidePopover" v-touch:swipe.left="backwards" v-touch:swipe.right="forwards"> | ||||||
|       <div class="image-container"> |       <div class="image-container"> | ||||||
|         <img :src="album[index].url" /> |         <img :src="album[index].url" /> | ||||||
|        |        | ||||||
|   | |||||||
							
								
								
									
										111
									
								
								src/components/calendar/DayElement.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										111
									
								
								src/components/calendar/DayElement.vue
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,111 @@ | |||||||
|  | <template> | ||||||
|  |   <div class="calendar--day" @click="$emit('click')"> | ||||||
|  |     <div  | ||||||
|  |       class="calendar--date"  | ||||||
|  |       v-bind:style="{ color: color }" | ||||||
|  |       v-bind:class="{'currentDay': day.currentDay}"> | ||||||
|  |  | ||||||
|  |     {{ day.date }} | ||||||
|  |   </div> | ||||||
|  |  | ||||||
|  |     <div v-if="day.events.length" v-for="event in day.events" class="calendar--event"> | ||||||
|  |       {{ event.title }} | ||||||
|  |     </div> | ||||||
|  |   </div> | ||||||
|  | </template> | ||||||
|  |  | ||||||
|  | <script> | ||||||
|  |  | ||||||
|  | export default { | ||||||
|  |   props: {  | ||||||
|  |     day: { | ||||||
|  |       type: Object, | ||||||
|  |       required: true, | ||||||
|  |       deep: true | ||||||
|  |     }, | ||||||
|  |   }, | ||||||
|  |   watch: { | ||||||
|  |     day: function() { | ||||||
|  |       this.setColor() | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   data() { | ||||||
|  |     return { | ||||||
|  |       color: undefined, | ||||||
|  |       states: { | ||||||
|  |         'before': 'silver', | ||||||
|  |         'current': 'black', | ||||||
|  |         'after': 'dimgray', | ||||||
|  |         'event': '#cb0b0b' | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   created() { | ||||||
|  |     this.setColor() | ||||||
|  |   }, | ||||||
|  |   methods: { | ||||||
|  |     setColor() { | ||||||
|  |       if (this.day.events.length) { | ||||||
|  |         this.color = this.states['event'] | ||||||
|  |       } | ||||||
|  |       else { | ||||||
|  |         this.color = this.states[this.day.relativeDay] | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | </script> | ||||||
|  |  | ||||||
|  | <style lang="scss" scoped> | ||||||
|  | .calendar { | ||||||
|  |   &--day { | ||||||
|  |     border: 0.5px solid rgba(0,0,0,.2); | ||||||
|  |     min-height: 2rem; | ||||||
|  |      | ||||||
|  |     @media screen and (min-width: 400px) { | ||||||
|  |       min-height: 4rem; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @media screen and (min-width: 1100px) { | ||||||
|  |       min-height: 5.6rem; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     &:hover { | ||||||
|  |       cursor: pointer; | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   &--date { | ||||||
|  |     display: inline-block; | ||||||
|  |  | ||||||
|  |     text-align: right; | ||||||
|  |     float: right; | ||||||
|  |     margin-top: .6rem; | ||||||
|  |     margin-right: .6rem; | ||||||
|  |     font-weight: 600; | ||||||
|  |     font-size: 0.95rem; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   & .currentDay { | ||||||
|  |     background-color: #cb0b0b; | ||||||
|  |     border-radius: 50%; | ||||||
|  |     height: 21px; | ||||||
|  |     width: 24px; | ||||||
|  |     margin-top: 0.35rem; | ||||||
|  |     padding-top: 0.35rem; | ||||||
|  |     margin-right: 0.3rem; | ||||||
|  |     padding-right: 0.2rem; | ||||||
|  |     color: ghostwhite !important; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   &--event { | ||||||
|  |     margin: 0.5rem; | ||||||
|  |     font-size: 0.8rem; | ||||||
|  |     width: 100%; | ||||||
|  |  | ||||||
|  |     @media screen and (max-width: 400px) { | ||||||
|  |       font-size: unset; | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | </style> | ||||||
							
								
								
									
										49
									
								
								src/components/calendar/MonthSummary.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								src/components/calendar/MonthSummary.vue
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,49 @@ | |||||||
|  | <template> | ||||||
|  |   <div> | ||||||
|  |     <h1>Summary</h1> | ||||||
|  |  | ||||||
|  |     <div v-for="event in events" class="list-item"> | ||||||
|  |       <router-link :to="{ name: 'EventPage', query: { id: event.id }}"> | ||||||
|  |  | ||||||
|  |         <h2>{{event.title}}</h2> | ||||||
|  |         <p>{{ dateToDayMonthYear(event.dateStart) }} - {{ dateToDayMonthYear(event.dateEnd) }}</p> | ||||||
|  |         <p>{{ event.locationName}}</p> | ||||||
|  |         <p>{{ event.subtext }}</p> | ||||||
|  |         <!-- {{ event }} --> | ||||||
|  |       </router-link> | ||||||
|  |     </div> | ||||||
|  |   </div> | ||||||
|  | </template> | ||||||
|  |  | ||||||
|  | <script> | ||||||
|  | import { dateToDayMonthYear } from '@/utils/dates' | ||||||
|  |  | ||||||
|  | export default { | ||||||
|  |   props: { | ||||||
|  |     events: { | ||||||
|  |       type: Array, | ||||||
|  |       required: false | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   methods: { | ||||||
|  |     dateToDayMonthYear(date) { return dateToDayMonthYear(date) } | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | </script> | ||||||
|  |  | ||||||
|  | <style lang="scss" scoped> | ||||||
|  |   p { | ||||||
|  |     margin-bottom: 0.7rem; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   .list-item { | ||||||
|  |     margin-bottom: 3rem; | ||||||
|  |     padding: 0.2rem; | ||||||
|  |     width: 100%; | ||||||
|  |     border: 1px solid transparent; | ||||||
|  |  | ||||||
|  |     &:hover { | ||||||
|  |       border: 1px solid black; | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | </style> | ||||||
| @@ -34,6 +34,12 @@ import axios from 'axios' | |||||||
| import ClickOutside from 'vue-click-outside' | import ClickOutside from 'vue-click-outside' | ||||||
|  |  | ||||||
| export default { | export default { | ||||||
|  |   props: { | ||||||
|  |     inputLocation: { | ||||||
|  |       type: Object, | ||||||
|  |       required: false | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|   data() { |   data() { | ||||||
|     return { |     return { | ||||||
|       timeout: undefined, |       timeout: undefined, | ||||||
| @@ -44,12 +50,17 @@ export default { | |||||||
|       highlightedLocation: -1 |       highlightedLocation: -1 | ||||||
|     } |     } | ||||||
|   }, |   }, | ||||||
|  |   mounted() { | ||||||
|  |     if (this.inputLocation) { | ||||||
|  |       this.$refs.listInput.value = this.inputLocation.locationName; | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|   watch: { |   watch: { | ||||||
|     locationInput: function(newVal, preVal) { |     locationInput: function(newVal, preVal) { | ||||||
|       if (newVal === '') { |       if (newVal === '') { | ||||||
|         this.resultMapboxLocations = [] |         this.resultMapboxLocations = [] | ||||||
|         return |         return | ||||||
|       }       |       } | ||||||
|       console.log('input changed') |       console.log('input changed') | ||||||
|       let place = this.chosenLocation ? this.LocationName : false |       let place = this.chosenLocation ? this.LocationName : false | ||||||
|  |  | ||||||
|   | |||||||
| @@ -14,6 +14,7 @@ | |||||||
| </template> | </template> | ||||||
|  |  | ||||||
| <script> | <script> | ||||||
|  | import axios from 'axios' | ||||||
| import store from '@/store' | import store from '@/store' | ||||||
|  |  | ||||||
| export default { | export default { | ||||||
| @@ -33,8 +34,24 @@ export default { | |||||||
|     setPopoverAlbumIndex: (index) => store.dispatch('setPopoverAlbumIndex', index), |     setPopoverAlbumIndex: (index) => store.dispatch('setPopoverAlbumIndex', index), | ||||||
|     showPopover: () => store.dispatch('showPopover'), |     showPopover: () => store.dispatch('showPopover'), | ||||||
|  |  | ||||||
|  |     uploadFiles(fileList) { | ||||||
|  |       console.log('sending fileList', fileList) | ||||||
|  |       let formData = new FormData(); | ||||||
|  |       for( var i = 0; i < fileList.length; i++ ){ | ||||||
|  |         let file = fileList[i]; | ||||||
|  |         formData.append('images', file, file.name); | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       console.log('formdata', formData) | ||||||
|  |       axios.post('http://localhost:5001/upload', formData, { onUploadProgress: progressEvent => console.log(100 * (progressEvent.loaded / progressEvent.totalSize))} ) | ||||||
|  |       .then((resp) => console.log('response from posting to server:', resp)) | ||||||
|  |       .catch((error) => console.error('error from post request:', error)) | ||||||
|  |     }, | ||||||
|  |  | ||||||
|     processFiles(event) { |     processFiles(event) { | ||||||
|       const files = event.target.files; |       const files = event.target.files; | ||||||
|  |       this.uploadFiles(event.target.files) | ||||||
|  |  | ||||||
|       let mappedFiles = [] |       let mappedFiles = [] | ||||||
|       let album = this.files || []; |       let album = this.files || []; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -4,6 +4,12 @@ | |||||||
|     <meta charset="utf-8"> |     <meta charset="utf-8"> | ||||||
|     <meta name="viewport" content='width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0'> |     <meta name="viewport" content='width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0'> | ||||||
|     <title>Leifsopplevelser</title> |     <title>Leifsopplevelser</title> | ||||||
|  |  | ||||||
|  |     <script src="https://api.tiles.mapbox.com/mapbox-gl-js/v0.51.0/mapbox-gl.js"></script> | ||||||
|  |     <link | ||||||
|  |       href="https://api.tiles.mapbox.com/mapbox-gl-js/v0.51.0/mapbox-gl.css" | ||||||
|  |       rel="stylesheet" | ||||||
|  |     /> | ||||||
|   </head> |   </head> | ||||||
|   <body> |   <body> | ||||||
|     <div id="app"></div> |     <div id="app"></div> | ||||||
|   | |||||||
| @@ -10,13 +10,13 @@ let routes = [ | |||||||
|     components: require('@/components/Home') |     components: require('@/components/Home') | ||||||
|   }, |   }, | ||||||
|   { |   { | ||||||
|     name: 'Event page', |     name: 'EventPage', | ||||||
|     path: '/event/:id', |     path: '/event/:id', | ||||||
|     props: { default: true }, |     // props: { default: true }, | ||||||
|     components: require('@/components/EventPage') |     components: require('@/components/EventPage') | ||||||
|   }, |   }, | ||||||
|   { |   { | ||||||
|     name: 'Edit event', |     name: 'EditEvent', | ||||||
|     path: '/edit', |     path: '/edit', | ||||||
|     components: require('@/components/EditEvent') |     components: require('@/components/EditEvent') | ||||||
|   }, |   }, | ||||||
| @@ -31,7 +31,7 @@ let routes = [ | |||||||
|   { |   { | ||||||
|     name: '404', |     name: '404', | ||||||
|     path: '*', |     path: '*', | ||||||
|     // components: require('') |     components: require('@/components/404') | ||||||
|   } |   } | ||||||
| ]; | ]; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -14,6 +14,9 @@ | |||||||
|   transition-property: box-shadow; |   transition-property: box-shadow; | ||||||
|   transition-timing-function: ease-in-out; |   transition-timing-function: ease-in-out; | ||||||
|  |  | ||||||
|  |   @media screen and (min-width: 1100px) { | ||||||
|  |     max-width: 581px; | ||||||
|  |   } | ||||||
|  |  | ||||||
|   &-item { |   &-item { | ||||||
|     border-width: 0px; |     border-width: 0px; | ||||||
|   | |||||||
| @@ -32,3 +32,19 @@ a { | |||||||
|   display: none; |   display: none; | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | .container { | ||||||
|  |   max-width: 612px; | ||||||
|  |  | ||||||
|  |   margin: 0 auto; | ||||||
|  |   margin-bottom: 3rem; | ||||||
|  |  | ||||||
|  |   @media screen and (max-width: 500px) { | ||||||
|  |     padding: 0 1rem; | ||||||
|  |     // max-width: unset; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   @media screen and (min-width: 1100px) { | ||||||
|  |     max-width: 1000px; | ||||||
|  |   } | ||||||
|  | } | ||||||
							
								
								
									
										15
									
								
								src/utils/dates.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								src/utils/dates.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | |||||||
|  | import moment from 'moment' | ||||||
|  |  | ||||||
|  | function dateToDayMonthYear(date) { | ||||||
|  |   return date ? moment(date).format('DD.MM.YYYY') : undefined | ||||||
|  | } | ||||||
|  |  | ||||||
|  | function dateToDayMonthYearDashed(date) { | ||||||
|  |   return date ? moment(date).format('DD-MM-YYYY') : undefined | ||||||
|  | } | ||||||
|  |  | ||||||
|  | function dateToYearMonthDay(date) { | ||||||
|  |   return moment(date).format('YYYY.MM.DD') | ||||||
|  | } | ||||||
|  |  | ||||||
|  | export { dateToYearMonthDay, dateToDayMonthYear, dateToDayMonthYearDashed } | ||||||
							
								
								
									
										277
									
								
								yarn.lock
									
									
									
									
									
								
							
							
						
						
									
										277
									
								
								yarn.lock
									
									
									
									
									
								
							| @@ -2,6 +2,65 @@ | |||||||
| # yarn lockfile v1 | # yarn lockfile v1 | ||||||
|  |  | ||||||
|  |  | ||||||
|  | "@mapbox/geojson-area@0.2.2": | ||||||
|  |   version "0.2.2" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@mapbox/geojson-area/-/geojson-area-0.2.2.tgz#18d7814aa36bf23fbbcc379f8e26a22927debf10" | ||||||
|  |   integrity sha1-GNeBSqNr8j+7zDefjiaiKSfevxA= | ||||||
|  |   dependencies: | ||||||
|  |     wgs84 "0.0.0" | ||||||
|  |  | ||||||
|  | "@mapbox/geojson-rewind@^0.4.0": | ||||||
|  |   version "0.4.0" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@mapbox/geojson-rewind/-/geojson-rewind-0.4.0.tgz#0d3632d4c1b4a928cf10a06ade387e1c8a8c181b" | ||||||
|  |   integrity sha512-b+1uPWBERW4Pet/969BNu61ZPDyH2ilIxBjJDFzxyS9TyszF9UrTQyYIl/G38clux3rtpAGGFSGTCSF/qR6UjA== | ||||||
|  |   dependencies: | ||||||
|  |     "@mapbox/geojson-area" "0.2.2" | ||||||
|  |     concat-stream "~1.6.0" | ||||||
|  |     minimist "1.2.0" | ||||||
|  |     sharkdown "^0.1.0" | ||||||
|  |  | ||||||
|  | "@mapbox/geojson-types@^1.0.2": | ||||||
|  |   version "1.0.2" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@mapbox/geojson-types/-/geojson-types-1.0.2.tgz#9aecf642cb00eab1080a57c4f949a65b4a5846d6" | ||||||
|  |   integrity sha512-e9EBqHHv3EORHrSfbR9DqecPNn+AmuAoQxV6aL8Xu30bJMJR1o8PZLZzpk1Wq7/NfCbuhmakHTPYRhoqLsXRnw== | ||||||
|  |  | ||||||
|  | "@mapbox/jsonlint-lines-primitives@^2.0.2": | ||||||
|  |   version "2.0.2" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@mapbox/jsonlint-lines-primitives/-/jsonlint-lines-primitives-2.0.2.tgz#ce56e539f83552b58d10d672ea4d6fc9adc7b234" | ||||||
|  |   integrity sha1-zlblOfg1UrWNENZy6k1vya3HsjQ= | ||||||
|  |  | ||||||
|  | "@mapbox/mapbox-gl-supported@^1.4.0": | ||||||
|  |   version "1.4.0" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@mapbox/mapbox-gl-supported/-/mapbox-gl-supported-1.4.0.tgz#36946b22944fe2cfa43cfafd5ef36fdb54a069e4" | ||||||
|  |   integrity sha512-ZD0Io4XK+/vU/4zpANjOtdWfVszAgnaMPsGR6LKsWh4kLIEv9qoobTVmJPPuwuM+ZI2b3BlZ6DYw1XHVmv6YTA== | ||||||
|  |  | ||||||
|  | "@mapbox/point-geometry@0.1.0", "@mapbox/point-geometry@^0.1.0", "@mapbox/point-geometry@~0.1.0": | ||||||
|  |   version "0.1.0" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@mapbox/point-geometry/-/point-geometry-0.1.0.tgz#8a83f9335c7860effa2eeeca254332aa0aeed8f2" | ||||||
|  |   integrity sha1-ioP5M1x4YO/6Lu7KJUMyqgru2PI= | ||||||
|  |  | ||||||
|  | "@mapbox/tiny-sdf@^1.1.0": | ||||||
|  |   version "1.1.0" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@mapbox/tiny-sdf/-/tiny-sdf-1.1.0.tgz#b0b8f5c22005e6ddb838f421ffd257c1f74f9a20" | ||||||
|  |   integrity sha512-dnhyk8X2BkDRWImgHILYAGgo+kuciNYX30CUKj/Qd5eNjh54OWM/mdOS/PWsPeN+3abtN+QDGYM4G220ynVJKA== | ||||||
|  |  | ||||||
|  | "@mapbox/unitbezier@^0.0.0": | ||||||
|  |   version "0.0.0" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@mapbox/unitbezier/-/unitbezier-0.0.0.tgz#15651bd553a67b8581fb398810c98ad86a34524e" | ||||||
|  |   integrity sha1-FWUb1VOme4WB+zmIEMmK2Go0Uk4= | ||||||
|  |  | ||||||
|  | "@mapbox/vector-tile@^1.3.1": | ||||||
|  |   version "1.3.1" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@mapbox/vector-tile/-/vector-tile-1.3.1.tgz#d3a74c90402d06e89ec66de49ec817ff53409666" | ||||||
|  |   integrity sha512-MCEddb8u44/xfQ3oD+Srl/tNcQoqTw3goGk2oLsrFxOTc3dUp+kAnby3PvAeeBYSMSjSPD1nd1AJA6W49WnoUw== | ||||||
|  |   dependencies: | ||||||
|  |     "@mapbox/point-geometry" "~0.1.0" | ||||||
|  |  | ||||||
|  | "@mapbox/whoots-js@^3.1.0": | ||||||
|  |   version "3.1.0" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@mapbox/whoots-js/-/whoots-js-3.1.0.tgz#497c67a1cef50d1a2459ba60f315e448d2ad87fe" | ||||||
|  |   integrity sha512-Es6WcD0nO5l+2BOQS4uLfNPYQaNDfbot3X1XUoloz+x0mPDS3eeORZJl06HXjwBG1fOGwCRnzK88LMdxKRrd6Q== | ||||||
|  |  | ||||||
| "@sindresorhus/is@^0.7.0": | "@sindresorhus/is@^0.7.0": | ||||||
|   version "0.7.0" |   version "0.7.0" | ||||||
|   resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.7.0.tgz#9a06f4f137ee84d7df0460c1fdb1135ffa6c50fd" |   resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.7.0.tgz#9a06f4f137ee84d7df0460c1fdb1135ffa6c50fd" | ||||||
| @@ -95,6 +154,11 @@ ansi-styles@^3.2.1: | |||||||
|   dependencies: |   dependencies: | ||||||
|     color-convert "^1.9.0" |     color-convert "^1.9.0" | ||||||
|  |  | ||||||
|  | ansicolors@~0.2.1: | ||||||
|  |   version "0.2.1" | ||||||
|  |   resolved "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.2.1.tgz#be089599097b74a5c9c4a84a0cdbcdb62bd87aef" | ||||||
|  |   integrity sha1-vgiVmQl7dKXJxKhKDNvNtivYeu8= | ||||||
|  |  | ||||||
| anymatch@^2.0.0: | anymatch@^2.0.0: | ||||||
|   version "2.0.0" |   version "2.0.0" | ||||||
|   resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" |   resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" | ||||||
| @@ -1206,6 +1270,14 @@ caniuse-lite@^1.0.30000792, caniuse-lite@^1.0.30000805, caniuse-lite@^1.0.300008 | |||||||
|   version "1.0.30000916" |   version "1.0.30000916" | ||||||
|   resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000916.tgz#3428d3f529f0a7b2bfaaec65e796037bdd433aab" |   resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000916.tgz#3428d3f529f0a7b2bfaaec65e796037bdd433aab" | ||||||
|  |  | ||||||
|  | cardinal@~0.4.2: | ||||||
|  |   version "0.4.4" | ||||||
|  |   resolved "https://registry.yarnpkg.com/cardinal/-/cardinal-0.4.4.tgz#ca5bb68a5b511b90fe93b9acea49bdee5c32bfe2" | ||||||
|  |   integrity sha1-ylu2iltRG5D+k7ms6km97lwyv+I= | ||||||
|  |   dependencies: | ||||||
|  |     ansicolors "~0.2.1" | ||||||
|  |     redeyed "~0.4.0" | ||||||
|  |  | ||||||
| caseless@~0.12.0: | caseless@~0.12.0: | ||||||
|   version "0.12.0" |   version "0.12.0" | ||||||
|   resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" |   resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" | ||||||
| @@ -1460,7 +1532,7 @@ concat-map@0.0.1: | |||||||
|   version "0.0.1" |   version "0.0.1" | ||||||
|   resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" |   resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" | ||||||
|  |  | ||||||
| concat-stream@^1.5.0: | concat-stream@^1.5.0, concat-stream@~1.6.0: | ||||||
|   version "1.6.2" |   version "1.6.2" | ||||||
|   resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" |   resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" | ||||||
|   dependencies: |   dependencies: | ||||||
| @@ -1685,6 +1757,11 @@ css-what@2.1: | |||||||
|   version "2.1.2" |   version "2.1.2" | ||||||
|   resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.2.tgz#c0876d9d0480927d7d4920dcd72af3595649554d" |   resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.2.tgz#c0876d9d0480927d7d4920dcd72af3595649554d" | ||||||
|  |  | ||||||
|  | csscolorparser@~1.0.2: | ||||||
|  |   version "1.0.3" | ||||||
|  |   resolved "https://registry.yarnpkg.com/csscolorparser/-/csscolorparser-1.0.3.tgz#b34f391eea4da8f3e98231e2ccd8df9c041f171b" | ||||||
|  |   integrity sha1-s085HupNqPPpgjHizNjfnAQfFxs= | ||||||
|  |  | ||||||
| cssesc@^0.1.0: | cssesc@^0.1.0: | ||||||
|   version "0.1.0" |   version "0.1.0" | ||||||
|   resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4" |   resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4" | ||||||
| @@ -1977,6 +2054,11 @@ duplexify@^3.4.2, duplexify@^3.6.0: | |||||||
|     readable-stream "^2.0.0" |     readable-stream "^2.0.0" | ||||||
|     stream-shift "^1.0.0" |     stream-shift "^1.0.0" | ||||||
|  |  | ||||||
|  | earcut@^2.1.5: | ||||||
|  |   version "2.1.5" | ||||||
|  |   resolved "https://registry.yarnpkg.com/earcut/-/earcut-2.1.5.tgz#829280a9a3a0f5fee0529f0a47c3e4eff09b21e4" | ||||||
|  |   integrity sha512-QFWC7ywTVLtvRAJTVp8ugsuuGQ5mVqNmJ1cRYeLrSHgP3nycr2RHTJob9OtM0v8ujuoKN0NY1a93J/omeTL1PA== | ||||||
|  |  | ||||||
| ecc-jsbn@~0.1.1: | ecc-jsbn@~0.1.1: | ||||||
|   version "0.1.2" |   version "0.1.2" | ||||||
|   resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" |   resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" | ||||||
| @@ -2162,6 +2244,11 @@ escope@^3.6.0: | |||||||
|     esrecurse "^4.1.0" |     esrecurse "^4.1.0" | ||||||
|     estraverse "^4.1.1" |     estraverse "^4.1.1" | ||||||
|  |  | ||||||
|  | esm@^3.0.84: | ||||||
|  |   version "3.2.5" | ||||||
|  |   resolved "https://registry.yarnpkg.com/esm/-/esm-3.2.5.tgz#036e410a2373ea81bfe62166c419ca0b0cf85c09" | ||||||
|  |   integrity sha512-rukU6Nd3agbHQCJWV4rrlZxqpbO3ix8qhUxK1BhKALGS2E465O0BFwgCOqJjNnYfO/I2MwpUBmPsW8DXoe8tcA== | ||||||
|  |  | ||||||
| esprima@^2.6.0: | esprima@^2.6.0: | ||||||
|   version "2.7.3" |   version "2.7.3" | ||||||
|   resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" |   resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" | ||||||
| @@ -2170,6 +2257,11 @@ esprima@^4.0.0: | |||||||
|   version "4.0.1" |   version "4.0.1" | ||||||
|   resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" |   resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" | ||||||
|  |  | ||||||
|  | esprima@~1.0.4: | ||||||
|  |   version "1.0.4" | ||||||
|  |   resolved "https://registry.yarnpkg.com/esprima/-/esprima-1.0.4.tgz#9f557e08fc3b4d26ece9dd34f8fbf476b62585ad" | ||||||
|  |   integrity sha1-n1V+CPw7TSbs6d00+Pv0drYlha0= | ||||||
|  |  | ||||||
| esrecurse@^4.1.0: | esrecurse@^4.1.0: | ||||||
|   version "4.2.1" |   version "4.2.1" | ||||||
|   resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" |   resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" | ||||||
| @@ -2264,6 +2356,11 @@ expand-range@^1.8.1: | |||||||
|   dependencies: |   dependencies: | ||||||
|     fill-range "^2.1.0" |     fill-range "^2.1.0" | ||||||
|  |  | ||||||
|  | expect.js@~0.2.0: | ||||||
|  |   version "0.2.0" | ||||||
|  |   resolved "https://registry.yarnpkg.com/expect.js/-/expect.js-0.2.0.tgz#1028533d2c1c363f74a6796ff57ec0520ded2be1" | ||||||
|  |   integrity sha1-EChTPSwcNj90pnlv9X7AUg3tK+E= | ||||||
|  |  | ||||||
| express@^4.16.2: | express@^4.16.2: | ||||||
|   version "4.16.4" |   version "4.16.4" | ||||||
|   resolved "https://registry.yarnpkg.com/express/-/express-4.16.4.tgz#fddef61926109e24c515ea97fd2f1bdbf62df12e" |   resolved "https://registry.yarnpkg.com/express/-/express-4.16.4.tgz#fddef61926109e24c515ea97fd2f1bdbf62df12e" | ||||||
| @@ -2603,6 +2700,11 @@ gaze@^1.0.0: | |||||||
|   dependencies: |   dependencies: | ||||||
|     globule "^1.0.0" |     globule "^1.0.0" | ||||||
|  |  | ||||||
|  | geojson-vt@^3.2.1: | ||||||
|  |   version "3.2.1" | ||||||
|  |   resolved "https://registry.yarnpkg.com/geojson-vt/-/geojson-vt-3.2.1.tgz#f8adb614d2c1d3f6ee7c4265cad4bbf3ad60c8b7" | ||||||
|  |   integrity sha512-EvGQQi/zPrDA6zr6BnJD/YhwAkBP8nnJ9emh3EnHQKVMfg/MRVtPbMYdgVy/IaEmn4UfagD2a6fafPDL5hbtwg== | ||||||
|  |  | ||||||
| get-caller-file@^1.0.1: | get-caller-file@^1.0.1: | ||||||
|   version "1.0.3" |   version "1.0.3" | ||||||
|   resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" |   resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" | ||||||
| @@ -2625,6 +2727,11 @@ getpass@^0.1.1: | |||||||
|   dependencies: |   dependencies: | ||||||
|     assert-plus "^1.0.0" |     assert-plus "^1.0.0" | ||||||
|  |  | ||||||
|  | gl-matrix@^3.0.0: | ||||||
|  |   version "3.0.0" | ||||||
|  |   resolved "https://registry.yarnpkg.com/gl-matrix/-/gl-matrix-3.0.0.tgz#888301ac7650e148c3865370e13ec66d08a8381f" | ||||||
|  |   integrity sha512-PD4mVH/C/Zs64kOozeFnKY8ybhgwxXXQYGWdB4h68krAHknWJgk9uKOn6z8YElh5//vs++90pb6csrTIDWnexA== | ||||||
|  |  | ||||||
| glob-base@^0.3.0: | glob-base@^0.3.0: | ||||||
|   version "0.3.0" |   version "0.3.0" | ||||||
|   resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" |   resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" | ||||||
| @@ -2719,6 +2826,11 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.2: | |||||||
|   version "4.1.15" |   version "4.1.15" | ||||||
|   resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" |   resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" | ||||||
|  |  | ||||||
|  | grid-index@^1.1.0: | ||||||
|  |   version "1.1.0" | ||||||
|  |   resolved "https://registry.yarnpkg.com/grid-index/-/grid-index-1.1.0.tgz#97f8221edec1026c8377b86446a7c71e79522ea7" | ||||||
|  |   integrity sha512-HZRwumpOGUrHyxO5bqKZL0B0GlUpwtCAzZ42sgxUPniu33R1LSFH5yrIcBCHjkctCAh3mtWKcKd9J4vDDdeVHA== | ||||||
|  |  | ||||||
| growly@^1.3.0: | growly@^1.3.0: | ||||||
|   version "1.3.0" |   version "1.3.0" | ||||||
|   resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" |   resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" | ||||||
| @@ -2976,7 +3088,7 @@ icss-utils@^2.1.0: | |||||||
|   dependencies: |   dependencies: | ||||||
|     postcss "^6.0.1" |     postcss "^6.0.1" | ||||||
|  |  | ||||||
| ieee754@^1.1.4: | ieee754@^1.1.4, ieee754@^1.1.6: | ||||||
|   version "1.1.12" |   version "1.1.12" | ||||||
|   resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.12.tgz#50bf24e5b9c8bb98af4964c941cdb0918da7b60b" |   resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.12.tgz#50bf24e5b9c8bb98af4964c941cdb0918da7b60b" | ||||||
|  |  | ||||||
| @@ -3477,6 +3589,11 @@ jsprim@^1.2.2: | |||||||
|     json-schema "0.2.3" |     json-schema "0.2.3" | ||||||
|     verror "1.10.0" |     verror "1.10.0" | ||||||
|  |  | ||||||
|  | kdbush@^3.0.0: | ||||||
|  |   version "3.0.0" | ||||||
|  |   resolved "https://registry.yarnpkg.com/kdbush/-/kdbush-3.0.0.tgz#f8484794d47004cc2d85ed3a79353dbe0abc2bf0" | ||||||
|  |   integrity sha512-hRkd6/XW4HTsA9vjVpY9tuXJYLSlelnkTmVFu4M9/7MIYQtFcHpbugAU7UbOfjOiVSVYl2fqgBuJ32JUmRo5Ew== | ||||||
|  |  | ||||||
| keyv@3.0.0: | keyv@3.0.0: | ||||||
|   version "3.0.0" |   version "3.0.0" | ||||||
|   resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.0.0.tgz#44923ba39e68b12a7cec7df6c3268c031f2ef373" |   resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.0.0.tgz#44923ba39e68b12a7cec7df6c3268c031f2ef373" | ||||||
| @@ -3700,6 +3817,41 @@ map-visit@^1.0.0: | |||||||
|   dependencies: |   dependencies: | ||||||
|     object-visit "^1.0.0" |     object-visit "^1.0.0" | ||||||
|  |  | ||||||
|  | mapbox-gl-vue@^1.9.0: | ||||||
|  |   version "1.9.0" | ||||||
|  |   resolved "https://registry.yarnpkg.com/mapbox-gl-vue/-/mapbox-gl-vue-1.9.0.tgz#49865e5ff20c2cbfee322e6339fbb13cb162bb20" | ||||||
|  |   integrity sha512-f2IJGkp9aPwzCi1mDZFJJt1txKdLIvhjJ6nanDF22C8MplU0davxTtqk6q1zmMhhJPSCgNrS6nZt7VzHPwFdCw== | ||||||
|  |  | ||||||
|  | mapbox-gl@^0.53.0: | ||||||
|  |   version "0.53.0" | ||||||
|  |   resolved "https://registry.yarnpkg.com/mapbox-gl/-/mapbox-gl-0.53.0.tgz#b5b7e1da7d839fa019be1ae2a36fa098d8c634ce" | ||||||
|  |   integrity sha512-bqD0VTpjD9jS/oXoSiLcUYViFXDvjIDWxo08Pfq5cgCdnRHoLEboItuB2AKsx8OPK5fYme0qhPe/ogF5HICjiA== | ||||||
|  |   dependencies: | ||||||
|  |     "@mapbox/geojson-rewind" "^0.4.0" | ||||||
|  |     "@mapbox/geojson-types" "^1.0.2" | ||||||
|  |     "@mapbox/jsonlint-lines-primitives" "^2.0.2" | ||||||
|  |     "@mapbox/mapbox-gl-supported" "^1.4.0" | ||||||
|  |     "@mapbox/point-geometry" "^0.1.0" | ||||||
|  |     "@mapbox/tiny-sdf" "^1.1.0" | ||||||
|  |     "@mapbox/unitbezier" "^0.0.0" | ||||||
|  |     "@mapbox/vector-tile" "^1.3.1" | ||||||
|  |     "@mapbox/whoots-js" "^3.1.0" | ||||||
|  |     csscolorparser "~1.0.2" | ||||||
|  |     earcut "^2.1.5" | ||||||
|  |     esm "^3.0.84" | ||||||
|  |     geojson-vt "^3.2.1" | ||||||
|  |     gl-matrix "^3.0.0" | ||||||
|  |     grid-index "^1.1.0" | ||||||
|  |     minimist "0.0.8" | ||||||
|  |     murmurhash-js "^1.0.0" | ||||||
|  |     pbf "^3.0.5" | ||||||
|  |     potpack "^1.0.1" | ||||||
|  |     quickselect "^2.0.0" | ||||||
|  |     rw "^1.3.3" | ||||||
|  |     supercluster "^6.0.1" | ||||||
|  |     tinyqueue "^2.0.0" | ||||||
|  |     vt-pbf "^3.1.1" | ||||||
|  |  | ||||||
| math-expression-evaluator@^1.2.14: | math-expression-evaluator@^1.2.14: | ||||||
|   version "1.2.17" |   version "1.2.17" | ||||||
|   resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz#de819fdbcd84dccd8fae59c6aeb79615b9d266ac" |   resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz#de819fdbcd84dccd8fae59c6aeb79615b9d266ac" | ||||||
| @@ -3851,6 +4003,11 @@ minimatch@^3.0.4, minimatch@~3.0.2: | |||||||
|   dependencies: |   dependencies: | ||||||
|     brace-expansion "^1.1.7" |     brace-expansion "^1.1.7" | ||||||
|  |  | ||||||
|  | minimist@0.0.5: | ||||||
|  |   version "0.0.5" | ||||||
|  |   resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.5.tgz#d7aa327bcecf518f9106ac6b8f003fa3bcea8566" | ||||||
|  |   integrity sha1-16oye87PUY+RBqxrjwA/o7zqhWY= | ||||||
|  |  | ||||||
| minimist@0.0.8: | minimist@0.0.8: | ||||||
|   version "0.0.8" |   version "0.0.8" | ||||||
|   resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" |   resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" | ||||||
| @@ -3907,6 +4064,11 @@ mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkd | |||||||
|   dependencies: |   dependencies: | ||||||
|     minimist "0.0.8" |     minimist "0.0.8" | ||||||
|  |  | ||||||
|  | moment@^2.24.0: | ||||||
|  |   version "2.24.0" | ||||||
|  |   resolved "https://registry.yarnpkg.com/moment/-/moment-2.24.0.tgz#0d055d53f5052aa653c9f6eb68bb5d12bf5c2b5b" | ||||||
|  |   integrity sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg== | ||||||
|  |  | ||||||
| move-concurrently@^1.0.1: | move-concurrently@^1.0.1: | ||||||
|   version "1.0.1" |   version "1.0.1" | ||||||
|   resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" |   resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" | ||||||
| @@ -3937,6 +4099,11 @@ multicast-dns@^6.0.1: | |||||||
|     dns-packet "^1.3.1" |     dns-packet "^1.3.1" | ||||||
|     thunky "^1.0.2" |     thunky "^1.0.2" | ||||||
|  |  | ||||||
|  | murmurhash-js@^1.0.0: | ||||||
|  |   version "1.0.0" | ||||||
|  |   resolved "https://registry.yarnpkg.com/murmurhash-js/-/murmurhash-js-1.0.0.tgz#b06278e21fc6c37fa5313732b0412bcb6ae15f51" | ||||||
|  |   integrity sha1-sGJ44h/Gw3+lMTcysEEry2rhX1E= | ||||||
|  |  | ||||||
| mute-stream@0.0.7: | mute-stream@0.0.7: | ||||||
|   version "0.0.7" |   version "0.0.7" | ||||||
|   resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" |   resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" | ||||||
| @@ -4514,6 +4681,14 @@ path-type@^3.0.0: | |||||||
|   dependencies: |   dependencies: | ||||||
|     pify "^3.0.0" |     pify "^3.0.0" | ||||||
|  |  | ||||||
|  | pbf@^3.0.5: | ||||||
|  |   version "3.1.0" | ||||||
|  |   resolved "https://registry.yarnpkg.com/pbf/-/pbf-3.1.0.tgz#f70004badcb281761eabb1e76c92f179f08189e9" | ||||||
|  |   integrity sha512-/hYJmIsTmh7fMkHAWWXJ5b8IKLWdjdlAFb3IHkRBn1XUhIYBChVGfVwmHEAV3UfXTxsP/AKfYTXTS/dCPxJd5w== | ||||||
|  |   dependencies: | ||||||
|  |     ieee754 "^1.1.6" | ||||||
|  |     resolve-protobuf-schema "^2.0.0" | ||||||
|  |  | ||||||
| pbkdf2@^3.0.3: | pbkdf2@^3.0.3: | ||||||
|   version "3.0.17" |   version "3.0.17" | ||||||
|   resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" |   resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" | ||||||
| @@ -4877,6 +5052,11 @@ postcss@^6.0.0, postcss@^6.0.1, postcss@^6.0.17, postcss@^6.0.8: | |||||||
|     source-map "^0.6.1" |     source-map "^0.6.1" | ||||||
|     supports-color "^5.4.0" |     supports-color "^5.4.0" | ||||||
|  |  | ||||||
|  | potpack@^1.0.1: | ||||||
|  |   version "1.0.1" | ||||||
|  |   resolved "https://registry.yarnpkg.com/potpack/-/potpack-1.0.1.tgz#d1b1afd89e4c8f7762865ec30bd112ab767e2ebf" | ||||||
|  |   integrity sha512-15vItUAbViaYrmaB/Pbw7z6qX2xENbFSTA7Ii4tgbPtasxm5v6ryKhKtL91tpWovDJzTiZqdwzhcFBCwiMVdVw== | ||||||
|  |  | ||||||
| prepend-http@^1.0.0: | prepend-http@^1.0.0: | ||||||
|   version "1.0.4" |   version "1.0.4" | ||||||
|   resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" |   resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" | ||||||
| @@ -4916,6 +5096,11 @@ promise-inflight@^1.0.1: | |||||||
|   version "1.0.1" |   version "1.0.1" | ||||||
|   resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" |   resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" | ||||||
|  |  | ||||||
|  | protocol-buffers-schema@^3.3.1: | ||||||
|  |   version "3.3.2" | ||||||
|  |   resolved "https://registry.yarnpkg.com/protocol-buffers-schema/-/protocol-buffers-schema-3.3.2.tgz#00434f608b4e8df54c59e070efeefc37fb4bb859" | ||||||
|  |   integrity sha512-Xdayp8sB/mU+sUV4G7ws8xtYMGdQnxbeIfLjyO9TZZRJdztBGhlmbI5x1qcY4TG5hBkIKGnc28i7nXxaugu88w== | ||||||
|  |  | ||||||
| proxy-addr@~2.0.4: | proxy-addr@~2.0.4: | ||||||
|   version "2.0.4" |   version "2.0.4" | ||||||
|   resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.4.tgz#ecfc733bf22ff8c6f407fa275327b9ab67e48b93" |   resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.4.tgz#ecfc733bf22ff8c6f407fa275327b9ab67e48b93" | ||||||
| @@ -5008,6 +5193,11 @@ querystringify@^2.0.0: | |||||||
|   version "2.1.0" |   version "2.1.0" | ||||||
|   resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.0.tgz#7ded8dfbf7879dcc60d0a644ac6754b283ad17ef" |   resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.0.tgz#7ded8dfbf7879dcc60d0a644ac6754b283ad17ef" | ||||||
|  |  | ||||||
|  | quickselect@^2.0.0: | ||||||
|  |   version "2.0.0" | ||||||
|  |   resolved "https://registry.yarnpkg.com/quickselect/-/quickselect-2.0.0.tgz#f19680a486a5eefb581303e023e98faaf25dd018" | ||||||
|  |   integrity sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw== | ||||||
|  |  | ||||||
| randomatic@^3.0.0: | randomatic@^3.0.0: | ||||||
|   version "3.1.1" |   version "3.1.1" | ||||||
|   resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.1.1.tgz#b776efc59375984e36c537b2f51a1f0aff0da1ed" |   resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.1.1.tgz#b776efc59375984e36c537b2f51a1f0aff0da1ed" | ||||||
| @@ -5108,6 +5298,16 @@ readable-stream@1.0: | |||||||
|     isarray "0.0.1" |     isarray "0.0.1" | ||||||
|     string_decoder "~0.10.x" |     string_decoder "~0.10.x" | ||||||
|  |  | ||||||
|  | readable-stream@~1.1.0: | ||||||
|  |   version "1.1.14" | ||||||
|  |   resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" | ||||||
|  |   integrity sha1-fPTFTvZI44EwhMY23SB54WbAgdk= | ||||||
|  |   dependencies: | ||||||
|  |     core-util-is "~1.0.0" | ||||||
|  |     inherits "~2.0.1" | ||||||
|  |     isarray "0.0.1" | ||||||
|  |     string_decoder "~0.10.x" | ||||||
|  |  | ||||||
| readdirp@^2.0.0: | readdirp@^2.0.0: | ||||||
|   version "2.2.1" |   version "2.2.1" | ||||||
|   resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" |   resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" | ||||||
| @@ -5129,6 +5329,13 @@ redent@^1.0.0: | |||||||
|     indent-string "^2.1.0" |     indent-string "^2.1.0" | ||||||
|     strip-indent "^1.0.1" |     strip-indent "^1.0.1" | ||||||
|  |  | ||||||
|  | redeyed@~0.4.0: | ||||||
|  |   version "0.4.4" | ||||||
|  |   resolved "https://registry.yarnpkg.com/redeyed/-/redeyed-0.4.4.tgz#37e990a6f2b21b2a11c2e6a48fd4135698cba97f" | ||||||
|  |   integrity sha1-N+mQpvKyGyoRwuakj9QTVpjLqX8= | ||||||
|  |   dependencies: | ||||||
|  |     esprima "~1.0.4" | ||||||
|  |  | ||||||
| reduce-css-calc@^1.2.6: | reduce-css-calc@^1.2.6: | ||||||
|   version "1.3.0" |   version "1.3.0" | ||||||
|   resolved "https://registry.yarnpkg.com/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz#747c914e049614a4c9cfbba629871ad1d2927716" |   resolved "https://registry.yarnpkg.com/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz#747c914e049614a4c9cfbba629871ad1d2927716" | ||||||
| @@ -5289,6 +5496,13 @@ resolve-from@^3.0.0: | |||||||
|   version "3.0.0" |   version "3.0.0" | ||||||
|   resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" |   resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" | ||||||
|  |  | ||||||
|  | resolve-protobuf-schema@^2.0.0: | ||||||
|  |   version "2.1.0" | ||||||
|  |   resolved "https://registry.yarnpkg.com/resolve-protobuf-schema/-/resolve-protobuf-schema-2.1.0.tgz#9ca9a9e69cf192bbdaf1006ec1973948aa4a3758" | ||||||
|  |   integrity sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ== | ||||||
|  |   dependencies: | ||||||
|  |     protocol-buffers-schema "^3.3.1" | ||||||
|  |  | ||||||
| resolve-url@^0.2.1: | resolve-url@^0.2.1: | ||||||
|   version "0.2.1" |   version "0.2.1" | ||||||
|   resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" |   resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" | ||||||
| @@ -5347,6 +5561,11 @@ run-queue@^1.0.0, run-queue@^1.0.3: | |||||||
|   dependencies: |   dependencies: | ||||||
|     aproba "^1.1.1" |     aproba "^1.1.1" | ||||||
|  |  | ||||||
|  | rw@^1.3.3: | ||||||
|  |   version "1.3.3" | ||||||
|  |   resolved "https://registry.yarnpkg.com/rw/-/rw-1.3.3.tgz#3f862dfa91ab766b14885ef4d01124bfda074fb4" | ||||||
|  |   integrity sha1-P4Yt+pGrdmsUiF700BEkv9oHT7Q= | ||||||
|  |  | ||||||
| rx@^4.1.0: | rx@^4.1.0: | ||||||
|   version "4.1.0" |   version "4.1.0" | ||||||
|   resolved "https://registry.yarnpkg.com/rx/-/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782" |   resolved "https://registry.yarnpkg.com/rx/-/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782" | ||||||
| @@ -5515,6 +5734,18 @@ shallow-clone@^1.0.0: | |||||||
|     kind-of "^5.0.0" |     kind-of "^5.0.0" | ||||||
|     mixin-object "^2.0.1" |     mixin-object "^2.0.1" | ||||||
|  |  | ||||||
|  | sharkdown@^0.1.0: | ||||||
|  |   version "0.1.0" | ||||||
|  |   resolved "https://registry.yarnpkg.com/sharkdown/-/sharkdown-0.1.0.tgz#61d4fe529e75d02442127cc9234362265099214f" | ||||||
|  |   integrity sha1-YdT+Up510CRCEnzJI0NiJlCZIU8= | ||||||
|  |   dependencies: | ||||||
|  |     cardinal "~0.4.2" | ||||||
|  |     expect.js "~0.2.0" | ||||||
|  |     minimist "0.0.5" | ||||||
|  |     split "~0.2.10" | ||||||
|  |     stream-spigot "~2.1.2" | ||||||
|  |     through "~2.3.4" | ||||||
|  |  | ||||||
| shebang-command@^1.2.0: | shebang-command@^1.2.0: | ||||||
|   version "1.2.0" |   version "1.2.0" | ||||||
|   resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" |   resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" | ||||||
| @@ -5691,6 +5922,13 @@ split-string@^3.0.1, split-string@^3.0.2: | |||||||
|   dependencies: |   dependencies: | ||||||
|     extend-shallow "^3.0.0" |     extend-shallow "^3.0.0" | ||||||
|  |  | ||||||
|  | split@~0.2.10: | ||||||
|  |   version "0.2.10" | ||||||
|  |   resolved "https://registry.yarnpkg.com/split/-/split-0.2.10.tgz#67097c601d697ce1368f418f06cd201cf0521a57" | ||||||
|  |   integrity sha1-Zwl8YB1pfOE2j0GPBs0gHPBSGlc= | ||||||
|  |   dependencies: | ||||||
|  |     through "2" | ||||||
|  |  | ||||||
| sprintf-js@~1.0.2: | sprintf-js@~1.0.2: | ||||||
|   version "1.0.3" |   version "1.0.3" | ||||||
|   resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" |   resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" | ||||||
| @@ -5768,6 +6006,13 @@ stream-shift@^1.0.0: | |||||||
|   version "1.0.0" |   version "1.0.0" | ||||||
|   resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" |   resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" | ||||||
|  |  | ||||||
|  | stream-spigot@~2.1.2: | ||||||
|  |   version "2.1.2" | ||||||
|  |   resolved "https://registry.yarnpkg.com/stream-spigot/-/stream-spigot-2.1.2.tgz#7de145e819f8dd0db45090d13dcf73a8ed3cc035" | ||||||
|  |   integrity sha1-feFF6Bn43Q20UJDRPc9zqO08wDU= | ||||||
|  |   dependencies: | ||||||
|  |     readable-stream "~1.1.0" | ||||||
|  |  | ||||||
| strict-uri-encode@^1.0.0: | strict-uri-encode@^1.0.0: | ||||||
|   version "1.1.0" |   version "1.1.0" | ||||||
|   resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" |   resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" | ||||||
| @@ -5839,6 +6084,13 @@ strip-json-comments@~2.0.1: | |||||||
|   version "2.0.1" |   version "2.0.1" | ||||||
|   resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" |   resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" | ||||||
|  |  | ||||||
|  | supercluster@^6.0.1: | ||||||
|  |   version "6.0.1" | ||||||
|  |   resolved "https://registry.yarnpkg.com/supercluster/-/supercluster-6.0.1.tgz#4c0177d96daa195d58a5bad9f55dbf12fb727a4c" | ||||||
|  |   integrity sha512-NTth/FBFUt9mwW03+Z6Byscex+UHu0utroIe6uXjGu9PrTuWtW70LYv9I1vPSYYIHQL74S5zAkrXrHEk0L7dGA== | ||||||
|  |   dependencies: | ||||||
|  |     kdbush "^3.0.0" | ||||||
|  |  | ||||||
| supports-color@^2.0.0: | supports-color@^2.0.0: | ||||||
|   version "2.0.0" |   version "2.0.0" | ||||||
|   resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" |   resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" | ||||||
| @@ -5908,7 +6160,7 @@ through2@^2.0.0: | |||||||
|     readable-stream "~2.3.6" |     readable-stream "~2.3.6" | ||||||
|     xtend "~4.0.1" |     xtend "~4.0.1" | ||||||
|  |  | ||||||
| through@^2.3.6: | through@2, through@^2.3.6, through@~2.3.4: | ||||||
|   version "2.3.8" |   version "2.3.8" | ||||||
|   resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" |   resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" | ||||||
|  |  | ||||||
| @@ -5930,6 +6182,11 @@ timers-browserify@^2.0.4: | |||||||
|   dependencies: |   dependencies: | ||||||
|     setimmediate "^1.0.4" |     setimmediate "^1.0.4" | ||||||
|  |  | ||||||
|  | tinyqueue@^2.0.0: | ||||||
|  |   version "2.0.0" | ||||||
|  |   resolved "https://registry.yarnpkg.com/tinyqueue/-/tinyqueue-2.0.0.tgz#8c40ceddd977bf133ffb35e903e0abe99d9d4e97" | ||||||
|  |   integrity sha512-CuwAcoAyhS73YgUpTVWI6t/t2mo9zfqbxTbnu4B1U6QPPhq3mxMxywSbo3cWykan4cBkXBfE8F7qulYrNcsHyQ== | ||||||
|  |  | ||||||
| tmp@^0.0.33: | tmp@^0.0.33: | ||||||
|   version "0.0.33" |   version "0.0.33" | ||||||
|   resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" |   resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" | ||||||
| @@ -6222,6 +6479,15 @@ vm-browserify@0.0.4: | |||||||
|   dependencies: |   dependencies: | ||||||
|     indexof "0.0.1" |     indexof "0.0.1" | ||||||
|  |  | ||||||
|  | vt-pbf@^3.1.1: | ||||||
|  |   version "3.1.1" | ||||||
|  |   resolved "https://registry.yarnpkg.com/vt-pbf/-/vt-pbf-3.1.1.tgz#b0f627e39a10ce91d943b898ed2363d21899fb82" | ||||||
|  |   integrity sha512-pHjWdrIoxurpmTcbfBWXaPwSmtPAHS105253P1qyEfSTV2HJddqjM+kIHquaT/L6lVJIk9ltTGc0IxR/G47hYA== | ||||||
|  |   dependencies: | ||||||
|  |     "@mapbox/point-geometry" "0.1.0" | ||||||
|  |     "@mapbox/vector-tile" "^1.3.1" | ||||||
|  |     pbf "^3.0.5" | ||||||
|  |  | ||||||
| vue-analytics@^5.16.0: | vue-analytics@^5.16.0: | ||||||
|   version "5.16.1" |   version "5.16.1" | ||||||
|   resolved "https://registry.yarnpkg.com/vue-analytics/-/vue-analytics-5.16.1.tgz#2fa909a245e1cee9993a69f0b72caf1dd6126c10" |   resolved "https://registry.yarnpkg.com/vue-analytics/-/vue-analytics-5.16.1.tgz#2fa909a245e1cee9993a69f0b72caf1dd6126c10" | ||||||
| @@ -6465,6 +6731,11 @@ websocket-extensions@>=0.1.1: | |||||||
|   version "0.1.3" |   version "0.1.3" | ||||||
|   resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz#5d2ff22977003ec687a4b87073dfbbac146ccf29" |   resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz#5d2ff22977003ec687a4b87073dfbbac146ccf29" | ||||||
|  |  | ||||||
|  | wgs84@0.0.0: | ||||||
|  |   version "0.0.0" | ||||||
|  |   resolved "https://registry.yarnpkg.com/wgs84/-/wgs84-0.0.0.tgz#34fdc555917b6e57cf2a282ed043710c049cdc76" | ||||||
|  |   integrity sha1-NP3FVZF7blfPKigu0ENxDASc3HY= | ||||||
|  |  | ||||||
| whet.extend@~0.9.9: | whet.extend@~0.9.9: | ||||||
|   version "0.9.9" |   version "0.9.9" | ||||||
|   resolved "https://registry.yarnpkg.com/whet.extend/-/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1" |   resolved "https://registry.yarnpkg.com/whet.extend/-/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1" | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user