diff --git a/public/js/main.js b/public/js/main.js
index a6c4678..2a2c1ea 100644
--- a/public/js/main.js
+++ b/public/js/main.js
@@ -27,7 +27,7 @@ Date.prototype.toJSONLocal = (function () {
function toEncoded(string) {
const codeUnits = Uint16Array.from(
{ length: string.length },
- (element, index) => string.charCodeAt(index),
+ (element, index) => string.charCodeAt(index)
);
const charCodes = new Uint8Array(codeUnits.buffer);
@@ -41,7 +41,7 @@ function toEncoded(string) {
function toDecoded(string) {
let binary = window.atob(string);
const bytes = Uint8Array.from({ length: binary.length }, (element, index) =>
- binary.charCodeAt(index),
+ binary.charCodeAt(index)
);
const charCodes = new Uint16Array(bytes.buffer);
@@ -62,7 +62,7 @@ const query_flight = (q) =>
const is_restauration_type = (e) =>
["restaurant", "cafe", "pub", "bar", "fast_food", "food_court"].indexOf(
- e.type,
+ e.type
) != -1;
const is_attraction_type = (e) =>
@@ -244,7 +244,7 @@ const app = new Vue({
if (!this.journey_data.main[this.journey_step_data.section].dateRange)
return "?";
var date = new Date(
- this.journey_data.main[this.journey_step_data.section].dateRange[0],
+ this.journey_data.main[this.journey_step_data.section].dateRange[0]
);
date.setDate(date.getDate() + this.journey_step_data.day - 1);
return this.format_date(date);
@@ -289,10 +289,9 @@ const app = new Vue({
if (this.journey_data.main.length == 0) return "";
try {
return `${this.format_date(
- this.journey_data.main[0].dateRange[0],
+ this.journey_data.main[0].dateRange[0]
)} - ${this.format_date(
- this.journey_data.main[this.journey_data.main.length - 1]
- .dateRange[1],
+ this.journey_data.main[this.journey_data.main.length - 1].dateRange[1]
)}`;
} catch {
return "?";
@@ -405,7 +404,7 @@ const app = new Vue({
},
filter_selected: function (list, step) {
return list.filter((e) =>
- step ? e.step == this.journey_step_data.day : e.step >= 0,
+ step ? e.step == this.journey_step_data.day : e.step >= 0
);
},
filter_unselected: function (list) {
@@ -457,7 +456,7 @@ const app = new Vue({
this.querying.hotel = true;
this.search_nominatim(
q,
- (r) => r.type == "hotel" || r.type == "hostel",
+ (r) => r.type == "hotel" || r.type == "hostel"
).then((r) => {
this.querying.hotel = false;
});
diff --git a/server.js b/server.js
index 4ca1f6d..bffdc7c 100644
--- a/server.js
+++ b/server.js
@@ -13,7 +13,7 @@ fastify.register(
},
(err) => {
if (err) throw err;
- },
+ }
);
fastify.register(require("@fastify/view"), {
diff --git a/template/home.pug b/template/home.pug
index 5eff9e7..41087ea 100644
--- a/template/home.pug
+++ b/template/home.pug
@@ -1,26 +1,32 @@
doctype html
-
include module/head.pug
main#app
.container
section.mb-big
.text-center
- img.main-logo.mb-medium(src='/public/img/helcel.png' alt='Helcel logo')
+ img.main-logo.mb-medium(
+ src="/public/img/helcel.png",
+ alt="Helcel logo"
+ )
div
h1.text-huge.text-withSubtitle Open Tourism Map
h2.text-big.text-gray Collaborative Holiday Planner
p#js-header-waypoint.m-none
- a.button.button--primary.button--mobileFull(href='#go') Get started
+ a.button.button--primary.button--mobileFull(href="#go") Get started
.bg-dark
.container
.row.text-center
.col-12.col-sm-3
.section
- img(src='/public/img/lightweight.png' alt='Lightweight' width='118')
+ img(
+ src="/public/img/lightweight.png",
+ alt="Lightweight",
+ width="118"
+ )
br
h2.text-withSubtitle.text-big.text-white
- | Lightweight
+ | Lightweight
br
span.text-medium.text-gray
| Powered By
@@ -28,7 +34,11 @@ main#app
| Fastify & Sierra
.col-12.col-sm-4
.section
- img(src='/public/img/customizable.png' alt='Customizable' width='118')
+ img(
+ src="/public/img/customizable.png",
+ alt="Customizable",
+ width="118"
+ )
br
h2.text-withSubtitle.text-big.text-white
| Customizable
@@ -40,20 +50,28 @@ main#app
.col-12.col-sm-4
.section
h2.text-withSubtitle.text-big.text-white
- img(src='/public/img/opensource.png' alt='Open Source' width='118')
+ img(
+ src="/public/img/opensource.png",
+ alt="Open Source",
+ width="118"
+ )
br
- | FOSS
+ |
+ | FOSS
br
span.text-medium.text-gray :-)
#go.container-medium.section
h2.text-big Your journey
p
- | Browse hotels, restaurants and attractions,....
+ | Browse hotels, restaurants and attractions,....
br
- | Select and plan the varying elements of your journey
+ |
+ | Select and plan the varying elements of your journey
.aligner.aligner--contentEnd
.input
- input#journey_id(v-model='journey_id' placeholder='ID' type='text')
- button.button.button--primary.button--mobileFull(v-on:click='start_journey') Start the journey
+ input#journey_id(v-model="journey_id", placeholder="ID", type="text")
+ button.button.button--primary.button--mobileFull(
+ v-on:click="start_journey"
+ ) Start the journey
-include module/foot.pug
\ No newline at end of file
+include module/foot.pug
diff --git a/template/journey.pug b/template/journey.pug
index dd4d6fe..3d9a79c 100644
--- a/template/journey.pug
+++ b/template/journey.pug
@@ -7,4 +7,4 @@ main#app(v-cloak)
include module/journey_sec.pug
include module/journey_step.pug
include module/importexport.pug
-include module/foot.pug
\ No newline at end of file
+include module/foot.pug
diff --git a/template/module/foot.pug b/template/module/foot.pug
index 15baaba..b615ed7 100644
--- a/template/module/foot.pug
+++ b/template/module/foot.pug
@@ -1,26 +1,31 @@
-script(src='https://unpkg.com/vue@2/dist/vue.min.js')
-script(src='https://unpkg.com/vue2-datepicker/index.min.js')
-script(src='https://unpkg.com/leaflet/dist/leaflet.js')
-script(src='https://unpkg.com/vue2-leaflet')
-script(src='https://unpkg.com/leaflet.awesome-markers/dist/leaflet.awesome-markers.min.js')
-script(src='https://unpkg.com/axios/dist/axios.min.js')
-script(src='https://unpkg.com/lodash')
-script(src='https://unpkg.com/vue-multiselect')
-script(src='https://unpkg.com/vue-textarea-autosize/dist/vue-textarea-autosize.umd.min.js')
+script(src="https://unpkg.com/vue@2/dist/vue.min.js")
+script(src="https://unpkg.com/vue2-datepicker/index.min.js")
+script(src="https://unpkg.com/leaflet/dist/leaflet.js")
+script(src="https://unpkg.com/vue2-leaflet")
+script(
+ src="https://unpkg.com/leaflet.awesome-markers/dist/leaflet.awesome-markers.min.js"
+)
+script(src="https://unpkg.com/axios/dist/axios.min.js")
+script(src="https://unpkg.com/lodash")
+script(src="https://unpkg.com/vue-multiselect")
+script(
+ src="https://unpkg.com/vue-textarea-autosize/dist/vue-textarea-autosize.umd.min.js"
+)
-script(src='https://unpkg.com/sortablejs/Sortable.min.js')
-script(src='https://unpkg.com/vuedraggable/dist/vuedraggable.umd.min.js')
+script(src="https://unpkg.com/sortablejs/Sortable.min.js")
+script(src="https://unpkg.com/vuedraggable/dist/vuedraggable.umd.min.js")
-script(src='/public/js/main.js' type='text/javascript' charset='utf-8')
+script(src="/public/js/main.js", type="text/javascript", charset="utf-8")
footer.bg-dark
.container
.section.text-center.text-small
p.text-white
- img(src='/public/img/helcel.png' alt='helcel logo' width='100')
+ img(src="/public/img/helcel.png", alt="helcel logo", width="100")
br
br
- | Built with ❤ by Helcel
+ |
+ | Built with ❤ by Helcel
br
span.text-small.text-gray v0.0.1
p.text-gray
- a(href='https://git.helcel.net') Helcel Git
+ a(href="https://git.helcel.net") Helcel Git
diff --git a/template/module/head.pug b/template/module/head.pug
index 75c2f9a..7d06ad4 100644
--- a/template/module/head.pug
+++ b/template/module/head.pug
@@ -1,13 +1,26 @@
head
title Helcel-OTM
- link(rel='shortcut icon' href='/public/img/helcel.ico' type='image/x-icon')
- meta(charset='utf-8')
- meta(name='viewport' content='width=device-width, initial-scale=1')
- link(rel='stylesheet' href='https://fonts.googleapis.com/css?family=IBM+Plex+Sans:400,700,300' type='text/css')
- link(rel='stylesheet' href='/public/css/index.css')
+ link(rel="shortcut icon", href="/public/img/helcel.ico", type="image/x-icon")
+ meta(charset="utf-8")
+ meta(name="viewport", content="width=device-width, initial-scale=1")
+ link(
+ rel="stylesheet",
+ href="https://fonts.googleapis.com/css?family=IBM+Plex+Sans:400,700,300",
+ type="text/css"
+ )
+ link(rel="stylesheet", href="/public/css/index.css")
- link(rel='stylesheet' href='https://unpkg.com/vue2-datepicker/index.css')
- link(rel='stylesheet' href='https://unpkg.com/vue-multiselect/dist/vue-multiselect.min.css')
- link(rel='stylesheet' href='https://unpkg.com/leaflet/dist/leaflet.css')
- link(rel='stylesheet' href='https://unpkg.com/leaflet.awesome-markers/dist/leaflet.awesome-markers.css')
- link(rel='stylesheet' href='https://unpkg.com/@fortawesome/fontawesome-free/css/all.min.css')
\ No newline at end of file
+ link(rel="stylesheet", href="https://unpkg.com/vue2-datepicker/index.css")
+ link(
+ rel="stylesheet",
+ href="https://unpkg.com/vue-multiselect/dist/vue-multiselect.min.css"
+ )
+ link(rel="stylesheet", href="https://unpkg.com/leaflet/dist/leaflet.css")
+ link(
+ rel="stylesheet",
+ href="https://unpkg.com/leaflet.awesome-markers/dist/leaflet.awesome-markers.css"
+ )
+ link(
+ rel="stylesheet",
+ href="https://unpkg.com/@fortawesome/fontawesome-free/css/all.min.css"
+ )
diff --git a/template/module/importexport.pug b/template/module/importexport.pug
index 4ad44a4..b66f61e 100644
--- a/template/module/importexport.pug
+++ b/template/module/importexport.pug
@@ -2,8 +2,12 @@ div
.container-medium.section
.aligner
.input.col-sm-4
- input(v-model='impexp' type='text')
+ input(v-model="impexp", type="text")
.col-sm-2
- button.button.button--primary.button--mobileFull(v-on:click='import_data') Import
+ button.button.button--primary.button--mobileFull(
+ v-on:click="import_data"
+ ) Import
.col-sm-2
- button.button.button--primary.button--mobileFull(v-on:click='export_data') Export
+ button.button.button--primary.button--mobileFull(
+ v-on:click="export_data"
+ ) Export
diff --git a/template/module/journey_sec.pug b/template/module/journey_sec.pug
index ab94603..4b5640e 100644
--- a/template/module/journey_sec.pug
+++ b/template/module/journey_sec.pug
@@ -1,8 +1,20 @@
-draggable(tag='div' :list='journey_data.main' class='list-group bg-dark' handle='.handle')
- div.list-group-item.handle(v-for='(element, idx) in journey_data.main' :key='idx' @click='sel_section(idx)' :class='(journey_step_data.section==idx)?"bg-primary":"bg-white"')
- div.text {{element.title}}
- i.fa.fa-times.close.fright(style='top:2px;right:2px;position:absolute;' @click='rm_section(idx)')
+draggable.list-group.bg-dark(
+ tag="div",
+ :list="journey_data.main",
+ handle=".handle"
+)
+ .list-group-item.handle(
+ v-for="(element, idx) in journey_data.main",
+ :key="idx",
+ @click="sel_section(idx)",
+ :class="journey_step_data.section == idx ? 'bg-primary' : 'bg-white'"
+ )
+ .text {{ element.title }}
+ i.fa.fa-times.close.fright(
+ style="top: 2px; right: 2px; position: absolute",
+ @click="rm_section(idx)"
+ )
- div.list-group-item.bg-white(@click='add_section()')
- div.text Add Section
- i.fa.fa-plus.add(style='top:12px;right:5px;position:absolute;')
\ No newline at end of file
+ .list-group-item.bg-white(@click="add_section()")
+ .text Add Section
+ i.fa.fa-plus.add(style="top: 12px; right: 5px; position: absolute")
diff --git a/template/module/journey_step.pug b/template/module/journey_step.pug
index 4e8929f..10281da 100644
--- a/template/module/journey_step.pug
+++ b/template/module/journey_step.pug
@@ -1,40 +1,102 @@
-- var map_section = 'journey_data.main[idx]'
-div(v-for='(e, idx) in journey_data.main' :key='idx')
- .bg-dark.text-white(v-if="journey_step_data.section==idx")
+div(v-for="(e, idx) in journey_data.main", :key="idx")
+ .bg-dark.text-white(v-if="journey_step_data.section == idx")
.container.section
.row.text-center
.input.col-sm-2
- input(v-model=map_section+'.title')
+ input(v-model="journey_data.main[idx].title")
.input.col-sm-2
- input(placeholder='Day title' v-model=map_section+'.step_title[journey_step_data.day]')
+ input(
+ placeholder="Day title",
+ v-model="journey_data.main[idx].step_title[journey_step_data.day]"
+ )
.col-sm-3
.right.input.col-sm-2
- input(disabled='' :value='active_date() + " (" + journey_step_data.day+")"')
+ input(
+ disabled="",
+ :value="active_date() + ' (' + journey_step_data.day + ')'"
+ )
.row
.col-9.col-ssm-12
include map.pug
- +map(map_section)
-
.col-3.col-ssm-12
.row.text-center
div
- label Date Range ({{step_len(idx)}})
+ label Date Range ({{ step_len(idx) }})
.input.text-dark
- date-picker(:lang='lang' v-model=map_section+'.dateRange' range='' format='ddd D MMM' placeholder='Date Range' v-on:change='update_date(idx)')
+ date-picker(
+ :lang="lang",
+ v-model="journey_data.main[idx].dateRange",
+ range="",
+ format="ddd D MMM",
+ placeholder="Date Range",
+ v-on:change="update_date(idx)"
+ )
.row.text-center
div
label Hotel
- multiselect#ajax(v-model=map_section+'.hotel' label='sname' track-by='place_id' placeholder='Type to search' open-direction='bottom' :options='query.nominatim' :searchable='true' :loading='querying.hotel' :internal-search='false' :clear-on-select='false' :options-limit='50' :limit='1' :max-height='600' @search-change='debounceSearch.hotel')
+ multiselect#ajax(
+ v-model="journey_data.main[idx].hotel",
+ label="sname",
+ track-by="place_id",
+ placeholder="Type to search",
+ open-direction="bottom",
+ :options="query.nominatim",
+ :searchable="true",
+ :loading="querying.hotel",
+ :internal-search="false",
+ :clear-on-select="false",
+ :options-limit="50",
+ :limit="1",
+ :max-height="600",
+ @search-change="debounceSearch.hotel"
+ )
.row.text-center
div
label Restoration
- multiselect#ajax(v-model=map_section+'.places.restaurants' label='sname' track-by='place_id' placeholder='Type to search' open-direction='bottom' :multiple='true' :options='query.nominatim' :searchable='true' :loading='querying.food' :internal-search='false' :clear-on-select='false' :options-limit='50' :limit='10' :max-height='600' @search-change='debounceSearch.restaurants')
+ multiselect#ajax(
+ v-model="journey_data.main[idx].places.restaurants",
+ label="sname",
+ track-by="place_id",
+ placeholder="Type to search",
+ open-direction="bottom",
+ :multiple="true",
+ :options="query.nominatim",
+ :searchable="true",
+ :loading="querying.food",
+ :internal-search="false",
+ :clear-on-select="false",
+ :options-limit="50",
+ :limit="10",
+ :max-height="600",
+ @search-change="debounceSearch.restaurants"
+ )
.row.text-center
div
label Activities
- multiselect#ajax(v-model=map_section+'.places.activities' label='sname' track-by='place_id' placeholder='Type to search' open-direction='bottom' :multiple='true' :options='query.nominatim' :searchable='true' :loading='querying.place' :internal-search='false' :clear-on-select='false' :options-limit='50' :limit='10' :max-height='600' @search-change='debounceSearch.places')
+ multiselect#ajax(
+ v-model="journey_data.main[idx].places.activities",
+ label="sname",
+ track-by="place_id",
+ placeholder="Type to search",
+ open-direction="bottom",
+ :multiple="true",
+ :options="query.nominatim",
+ :searchable="true",
+ :loading="querying.place",
+ :internal-search="false",
+ :clear-on-select="false",
+ :options-limit="50",
+ :limit="10",
+ :max-height="600",
+ @search-change="debounceSearch.places"
+ )
.row.text-center
div
label Notes
- .input.text-dark(style='width:100%;')
- textarea-autosize.text-small(v-model=map_section+'.notes' placeholder='Notes' :min-height='30' :max-height='350')
+ .input.text-dark(style="width: 100%")
+ textarea-autosize.text-small(
+ v-model="journey_data.main[idx].notes",
+ placeholder="Notes",
+ :min-height="30",
+ :max-height="350"
+ )
diff --git a/template/module/map.pug b/template/module/map.pug
index 5a32b85..3f642cc 100644
--- a/template/module/map.pug
+++ b/template/module/map.pug
@@ -1,42 +1,84 @@
-mixin map(section_str)
- l-map(
- :zoom.sync=section_str+'.map.zoom'
- :center.sync=section_str+'.map.center' style='padding-top: 100%;')
- l-tile-layer(url='https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png' attribution='© OpenStreetMap contributors')
- l-control-scale(position='topright' :imperial='false' :metric='true')
- l-marker(v-if=section_str+'.hotel && '+section_str+'.hotel.icon' :lat-lng=section_str+'.hotel.latlon')
- l-icon
- div(v-html='generate_icon('+section_str+'.hotel,"darkblue")')
- l-popup
- h1.row.text-medium.text-center {{ #{section_str}.hotel.sname}}
- span.row.text-small.text-gray {{ #{section_str}.hotel.display_name}}
- span(v-if='journey_edit')
- .row.input
- textarea-autosize.col-12.col-sm-12.text-small(placeholder='Notes' v-model=section_str+'.hotel.notes' :min-height='30' :max-height='350')
- span.row.text-small.text-white(v-else) {{ #{section_str}.hotel.notes}}
- l-marker(v-for='place in '+section_str+'.places.activities' :lat-lng='place.latlon')
- l-icon
- div(v-if='place.step==journey_step_data.day' v-html='generate_icon(place)')
- div(v-else-if='place.step==-1 || place.step==undefined' v-html='generate_icon(place, "gray")')
- div(v-else-if='journey_edit' v-html='generate_icon(place, "lightgray")')
- div(v-else)
- l-popup
- h1.row.text-medium.text-center {{place.sname}}
- span.row.text-small.text-gray {{place.display_name}}
- span(v-if='journey_edit')
- .row.input
- textarea-autosize.col-12.col-sm-12.text-small(placeholder='Notes' v-model='place.notes' :min-height='30' :max-height='350')
- a.leaflet-popup-close-button.text-gray(style='right:0px;visibility:visible;' href='#rm' v-on:click.prevent='place.step=-1') -
- a.leaflet-popup-close-button.text-gray(style='right:16px;visibility:visible;' href='#ad' v-on:click.prevent='place.step=journey_step_data.day') +
- span.row.text-small.text-dark(v-else) {{place.notes}}
+l-map(
+ :zoom.sync="journey_data.main[idx].map.zoom",
+ :center.sync="journey_data.main[idx].map.center",
+ style="padding-top: 100%"
+)
+ l-tile-layer(
+ url="https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
+ attribution="© OpenStreetMap contributors"
+ )
+ l-control-scale(position="topright", :imperial="false", :metric="true")
+ l-marker(
+ v-if="journey_data.main[idx].hotel && journey_data.main[idx].hotel.icon",
+ :lat-lng="journey_data.main[idx].hotel.latlon"
+ )
+ l-icon
+ div(v-html="generate_icon(journey_data.main[idx].hotel, 'darkblue')")
+ l-popup
+ h1.row.text-medium.text-center {{ journey_data.main[idx].hotel.sname }}
+ span.row.text-small.text-gray {{ journey_data.main[idx].hotel.display_name }}
+ span(v-if="journey_edit")
+ .row.input
+ textarea-autosize.col-12.col-sm-12.text-small(
+ placeholder="Notes",
+ v-model="journey_data.main[idx].hotel.notes",
+ :min-height="30",
+ :max-height="350"
+ )
+ span.row.text-small.text-white(v-else) {{ journey_data.main[idx].hotel.notes }}
+ l-marker(
+ v-for="place in journey_data.main[idx].places.activities",
+ :lat-lng="place.latlon"
+ )
+ l-icon
+ div(
+ v-if="place.step == journey_step_data.day",
+ v-html="generate_icon(place)"
+ )
+ div(
+ v-else-if="place.step == -1 || place.step == undefined",
+ v-html="generate_icon(place, 'gray')"
+ )
+ div(v-else-if="journey_edit", v-html="generate_icon(place, 'lightgray')")
+ div(v-else)
+ l-popup
+ h1.row.text-medium.text-center {{ place.sname }}
+ span.row.text-small.text-gray {{ place.display_name }}
+ span(v-if="journey_edit")
+ .row.input
+ textarea-autosize.col-12.col-sm-12.text-small(
+ placeholder="Notes",
+ v-model="place.notes",
+ :min-height="30",
+ :max-height="350"
+ )
+ a.leaflet-popup-close-button.text-gray(
+ style="right: 0px; visibility: visible",
+ href="#rm",
+ v-on:click.prevent="place.step = -1"
+ ) -
+ a.leaflet-popup-close-button.text-gray(
+ style="right: 16px; visibility: visible",
+ href="#ad",
+ v-on:click.prevent="place.step = journey_step_data.day"
+ ) +
+ span.row.text-small.text-dark(v-else) {{ place.notes }}
- l-marker(v-for='place in '+section_str+'.places.restaurants' :lat-lng.sync='place.latlon')
- l-icon
- div(v-html="generate_icon(place,'cadetblue')")
- l-popup
- h1.row.text-medium.text-center {{place.sname}}
- span.row.text-small.text-gray {{place.display_name}}
- span(v-if='journey_edit')
- .row.input
- textarea-autosize.col-12.col-sm-12.text-small(placeholder='Notes' v-model='place.notes' :min-height='30' :max-height='350')
- span.row.text-small.text-dark(v-else) {{place.notes}}
\ No newline at end of file
+ l-marker(
+ v-for="place in journey_data.main[idx].places.restaurants",
+ :lat-lng.sync="place.latlon"
+ )
+ l-icon
+ div(v-html="generate_icon(place, 'cadetblue')")
+ l-popup
+ h1.row.text-medium.text-center {{ place.sname }}
+ span.row.text-small.text-gray {{ place.display_name }}
+ span(v-if="journey_edit")
+ .row.input
+ textarea-autosize.col-12.col-sm-12.text-small(
+ placeholder="Notes",
+ v-model="place.notes",
+ :min-height="30",
+ :max-height="350"
+ )
+ span.row.text-small.text-dark(v-else) {{ place.notes }}
diff --git a/template/module/nav.pug b/template/module/nav.pug
index b346eae..c7173f1 100644
--- a/template/module/nav.pug
+++ b/template/module/nav.pug
@@ -1,30 +1,38 @@
header.header
.header-inner.container
- a.header-logo.text-dark(href='/')
- img.header-logoImage(src='/public/img/helcel.png' alt='Helcel logo' width='40')
+ a.header-logo.text-dark(href="/")
+ img.header-logoImage(
+ src="/public/img/helcel.png",
+ alt="Helcel logo",
+ width="40"
+ )
span.hide-small OTM
.input.input-invis.row
- input.col-6.small(v-model='journey_data.name' type='text')
- input.col-6.small(disabled type='text' :placeholder='total_date() + " (" + total_days() + ")"')
- .row.header-nav.text-big(style='margin-bottom: 0;')
+ input.col-6.small(v-model="journey_data.name", type="text")
+ input.col-6.small(
+ disabled,
+ type="text",
+ :placeholder="total_date() + ' (' + total_days() + ')'"
+ )
+ .row.header-nav.text-big(style="margin-bottom: 0")
.col-sm-2
- a(:href="'/short/'+journey_id")
+ a(:href="'/short/' + journey_id")
i.fas.fa-file-contract
.col-sm-2
- a(:href="'/view/'+journey_id")
+ a(:href="'/view/' + journey_id")
i.fas.fa-camera
.col-sm-2
- a(href='#main' v-on:click.prevent='first_step')
+ a(href="#main", v-on:click.prevent="first_step")
i.fas.fa-tools
.col-sm-1.text-small
- a(href='#prevprev' v-on:click.prevent='prevprev_step')
+ a(href="#prevprev", v-on:click.prevent="prevprev_step")
i.fas.fa-angle-double-left
.col-sm-1
- a(href='#prev' v-on:click.prevent='prev_step')
+ a(href="#prev", v-on:click.prevent="prev_step")
i.fas.fa-angle-left
.col-sm-1
- a(href='#next' v-on:click.prevent='next_step')
+ a(href="#next", v-on:click.prevent="next_step")
i.fas.fa-angle-right
.col-sm-1.text-small
- a(href='#nextnext' v-on:click.prevent='nextnext_step')
- i.fas.fa-angle-double-right
\ No newline at end of file
+ a(href="#nextnext", v-on:click.prevent="nextnext_step")
+ i.fas.fa-angle-double-right
diff --git a/template/module/nav_pub.pug b/template/module/nav_pub.pug
index 2718ed3..49af761 100644
--- a/template/module/nav_pub.pug
+++ b/template/module/nav_pub.pug
@@ -1,14 +1,18 @@
header.header
.header-inner.container
- a.header-logo.text-dark(href='/')
- img.header-logoImage(src='/public/img/helcel.png' alt='Helcel logo' width='40')
+ a.header-logo.text-dark(href="/")
+ img.header-logoImage(
+ src="/public/img/helcel.png",
+ alt="Helcel logo",
+ width="40"
+ )
span.hide-small HOTM
.input.input-invis
- input.small(:value='journey_data.name' type='text' disabled='')
- .row.header-nav.text-big(style='margin-bottom: 0;')
+ input.small(:value="journey_data.name", type="text", disabled="")
+ .row.header-nav.text-big(style="margin-bottom: 0")
.col-sm-3
- a(:href="'/short/'+journey_id")
+ a(:href="'/short/' + journey_id")
i.fas.fa-file-contract
.col-sm-3
- a(:href="'/view/'+journey_id")
- i.fas.fa-camera
\ No newline at end of file
+ a(:href="'/view/' + journey_id")
+ i.fas.fa-camera
diff --git a/template/module/short_sec.pug b/template/module/short_sec.pug
index 94c9ed5..3bfe2bf 100644
--- a/template/module/short_sec.pug
+++ b/template/module/short_sec.pug
@@ -1,21 +1,43 @@
.container.section
.row.text-center
.input.col-sm-2
- input(disabled='' :value='item.title')
+ input(disabled="", :value="item.title")
.input.col-sm-4
- input(disabled='' placeholder='No Dates' :value="item.dateRange? (format_date(item.dateRange[0]) + ' - '+ format_date(item.dateRange[1])):''")
+ input(
+ disabled="",
+ placeholder="No Dates",
+ :value="item.dateRange ? format_date(item.dateRange[0]) + ' - ' + format_date(item.dateRange[1]) : ''"
+ )
.input.col-sm-2
- input(disabled='' placeholder='No Hotel' :value='item.hotel.sname')
+ input(disabled="", placeholder="No Hotel", :value="item.hotel.sname")
.row.text-center
- .input.col-sm-3(v-if='item.transit')
- div(v-for='(item,idx) in item.transit')
- input(disabled='' :value="item.map(v=>v.id).join(', ')")
+ .input.col-sm-3(v-if="item.transit")
+ div(v-for="(item, idx) in item.transit")
+ input(disabled="", :value="item.map((v) => v.id).join(', ')")
.row.text-center
- .input.col-sm-8(v-if='item.places && item.places.restaurants')
- textarea-autosize.text-small(placeholder='No Restaurants' :value="item.places.restaurants.map(v=>v.sname+(v.notes?('('+v.notes+')'):'')).join(', ')" :min-height='30' :max-height='350' disabled='')
+ .input.col-sm-8(v-if="item.places && item.places.restaurants")
+ textarea-autosize.text-small(
+ placeholder="No Restaurants",
+ :value="item.places.restaurants.map((v) => v.sname + (v.notes ? '(' + v.notes + ')' : '')).join(', ')",
+ :min-height="30",
+ :max-height="350",
+ disabled=""
+ )
.row.text-center
- .input.col-sm-8(v-if='item.places && item.places.activities')
- textarea-autosize.text-small(placeholder='No Activities' :value="item.places.activities.map(v=>v.sname+(v.notes?('('+v.notes+')'):'')).join(', ')" :min-height='30' :max-height='350' disabled='')
+ .input.col-sm-8(v-if="item.places && item.places.activities")
+ textarea-autosize.text-small(
+ placeholder="No Activities",
+ :value="item.places.activities.map((v) => v.sname + (v.notes ? '(' + v.notes + ')' : '')).join(', ')",
+ :min-height="30",
+ :max-height="350",
+ disabled=""
+ )
.row.text-center
- .input.col-sm-8(v-if='item.notes')
- textarea-autosize.text-small(placeholder='No Notes' :value='item.notes' :min-height='30' :max-height='350' disabled='')
\ No newline at end of file
+ .input.col-sm-8(v-if="item.notes")
+ textarea-autosize.text-small(
+ placeholder="No Notes",
+ :value="item.notes",
+ :min-height="30",
+ :max-height="350",
+ disabled=""
+ )
diff --git a/template/module/view_step.pug b/template/module/view_step.pug
index 217963d..6540d3e 100644
--- a/template/module/view_step.pug
+++ b/template/module/view_step.pug
@@ -1,23 +1,19 @@
-- var map_section = 'journey_data.main[journey_step_data.section]'
-
-div(v-for='(e, idx) in journey_data.main' :key='idx')
- .bg-dark.text-white(v-if="journey_step_data.section==idx")
+div(v-for="(e, idx) in journey_data.main", :key="idx")
+ .bg-dark.text-white(v-if="journey_step_data.section == idx")
.container.section
- .aligner.text-center.text-white.text-huge(style='margin-bottom:5px')
+ .aligner.text-center.text-white.text-huge(style="margin-bottom: 5px")
.aligner--itemTop.fleft
- a(href='#prev' v-on:click.prevent='prev_step')
+ a(href="#prev", v-on:click.prevent="prev_step")
i.fas.fa-angle-left
span.container
- div
- | {{ #{map_section}.title + ': Day ' + journey_step_data.day}}
- .text-big.text-gray {{ #{map_section}.step_title[journey_step_data.day] }}
+ span.small {{ journey_data.main[idx].title }} {{ journey_step_data.day }}
+ .text-big.text-gray {{ journey_data.main[idx].step_title[journey_step_data.day] }}
.aligner--itemEnd.fright
- a(href='#next' v-on:click.prevent='next_step')
+ a(href="#next", v-on:click.prevent="next_step")
i.fas.fa-angle-right
.row
.col-12.col-sm-12
include map.pug
- +map(map_section)
.row
.col-12.col-sm-12
- .container
\ No newline at end of file
+ .container
diff --git a/template/short.pug b/template/short.pug
index 0f47e1f..e06e6cb 100644
--- a/template/short.pug
+++ b/template/short.pug
@@ -2,6 +2,9 @@ doctype html
include module/head.pug
main#app(v-cloak)
include module/nav_pub.pug
- div(v-for='(item,idx) in journey_data.main' :class="idx%2===0 ? 'bg-dark text-white' : ''")
+ div(
+ v-for="(item, idx) in journey_data.main",
+ :class="idx % 2 === 0 ? 'bg-dark text-white' : ''"
+ )
include module/short_sec.pug
include module/foot.pug
diff --git a/template/view.pug b/template/view.pug
index becdbb0..a80f3a6 100644
--- a/template/view.pug
+++ b/template/view.pug
@@ -1,6 +1,6 @@
doctype html
include module/head.pug
main#app(v-cloak)
- div(v-if='journey_data.main[journey_step_data.section] != undefined')
+ div(v-if="journey_data.main[journey_step_data.section] != undefined")
include module/view_step.pug
-include module/foot.pug
\ No newline at end of file
+include module/foot.pug