diff --git a/app/components/colorSpan.vue b/app/components/colorSpan.vue
new file mode 100644
index 0000000..be451f7
--- /dev/null
+++ b/app/components/colorSpan.vue
@@ -0,0 +1,20 @@
+
+ span(v-bind:style="{ 'background-color': color }" class='colorSpan')
+
+
+
+
+
diff --git a/app/components/eventTypesNav.vue b/app/components/eventTypesNav.vue
new file mode 100644
index 0000000..95ab4c9
--- /dev/null
+++ b/app/components/eventTypesNav.vue
@@ -0,0 +1,30 @@
+
+ nav(class='horizontalMenu')
+ ul
+ li(v-for="(eventType, hash) in eventTypes")
+ router-link(v-bind:to="{ name: 'publicView', params: { hash: hash } }")
+ colorSpan(v-bind:color="eventType.color")
+ | New {{ eventType.length }} mins meeting
+
+
+
+
+
diff --git a/app/components/publicDayPicker.vue b/app/components/publicDayPicker.vue
new file mode 100644
index 0000000..aef4a50
--- /dev/null
+++ b/app/components/publicDayPicker.vue
@@ -0,0 +1,33 @@
+
+ div
+ h2 Pick a day
+ ul
+ li(v-for="(_, day) in availableSlotsPerDay")
+ router-link(v-bind:to="{ name: 'publicSlotSelectionView', params: { hash: hash, day: day } }")
+ | {{ day }}
+
+ p
+ em Times are in your computer local timezone.
+
+
+
+
+
diff --git a/app/components/publicSlotPicker.vue b/app/components/publicSlotPicker.vue
new file mode 100644
index 0000000..300b181
--- /dev/null
+++ b/app/components/publicSlotPicker.vue
@@ -0,0 +1,33 @@
+
+ div
+ h2 Pick a slot
+ ul
+ li(v-for="slot in availableSlots")
+ router-link(v-bind:to="{ name: 'publicSlotSelectedView', params: { hash: hash, day: day, slot: slot } }")
+ | {{ slot }}
+
+ p
+ em Times are in your computer local timezone.
+
+
+
+
+
diff --git a/app/routes.js b/app/routes.js
index 4a7ed71..0a65ebb 100644
--- a/app/routes.js
+++ b/app/routes.js
@@ -1,13 +1,32 @@
-import { publicView, dashboardView } from './views'
+import { publicView, publicDaySelectionView, publicSlotSelectionView, publicSlotSelectedView, dashboardView } from './views'
export default [
{
path: '/public/:hash',
- component: publicView
+ name: 'publicView',
+ component: publicView,
+ children: [
+ {
+ path: '',
+ name: 'publicDaySelectionView',
+ component: publicDaySelectionView
+ },
+ {
+ path: ':day',
+ name: 'publicSlotSelectionView',
+ component: publicSlotSelectionView
+ },
+ {
+ path: ':day/:slot',
+ name: 'publicSlotSelectedView',
+ component: publicSlotSelectedView
+ }
+ ]
},
{
path: '/dashboard',
alias: '/',
+ name: 'dashboard',
component: dashboardView
}
]
diff --git a/app/views/dashboardView.vue b/app/views/dashboardView.vue
index 43b8941..37989d7 100644
--- a/app/views/dashboardView.vue
+++ b/app/views/dashboardView.vue
@@ -2,13 +2,7 @@
div
h1 {{ 'My RSVPs' }}
- nav(class='horizontalMenu')
- ul
- li(v-for="(eventType, hash) in eventTypes")
- a(v-bind:href="'/public/' + eventType.hash")
- span(v-bind:style="{ 'background-color': eventType.color }" class='colorSpan')
- | New {{ eventType.length }} mins meeting
- button New event type
+ event-types-nav(v-bind:eventTypes="eventTypes")
ul
li(v-for="(RSVPItemsForDay, day) in RSVPItems")
@@ -17,7 +11,7 @@
table
tr(v-for="(RSVPItem, index) in RSVPItemsForDay")
td
- span(v-bind:style="{ 'background-color': eventTypes[RSVPItem.eventTypeHash].color }" class='colorSpan')
+ colorSpan(v-bind:color="eventTypes[RSVPItem.eventTypeHash].color")
span {{ RSVPItem.startTime }} - {{ RSVPItem.endTime }}
td
template(v-for="(member, index) in RSVPItem.members")
@@ -37,6 +31,8 @@
option(selected) {{ '-' }}
option {{ 'Accept' }}
option {{ 'Discard' }}
+ p
+ em Times are in your computer local timezone.
diff --git a/app/views/index.js b/app/views/index.js
index a98bf3f..a025ae2 100644
--- a/app/views/index.js
+++ b/app/views/index.js
@@ -1,4 +1,7 @@
import publicView from './publicView.vue'
+import publicDaySelectionView from './publicDaySelectionView.vue'
+import publicSlotSelectionView from './publicSlotSelectionView.vue'
+import publicSlotSelectedView from './publicSlotSelectedView.vue'
import dashboardView from './dashboardView.vue'
-export { publicView, dashboardView }
+export { publicView, publicDaySelectionView, publicSlotSelectionView, publicSlotSelectedView, dashboardView }
diff --git a/app/views/publicDaySelectionView.vue b/app/views/publicDaySelectionView.vue
new file mode 100644
index 0000000..299852b
--- /dev/null
+++ b/app/views/publicDaySelectionView.vue
@@ -0,0 +1,35 @@
+
+ public-day-picker(v-bind:hash="$route.params.hash", v-bind:availableSlotsPerDay="availableSlotsPerDay")
+
+
+
diff --git a/app/views/publicSlotSelectedView.vue b/app/views/publicSlotSelectedView.vue
new file mode 100644
index 0000000..f9facf3
--- /dev/null
+++ b/app/views/publicSlotSelectedView.vue
@@ -0,0 +1,3 @@
+
+ p TODO
+
diff --git a/app/views/publicSlotSelectionView.vue b/app/views/publicSlotSelectionView.vue
new file mode 100644
index 0000000..81c2286
--- /dev/null
+++ b/app/views/publicSlotSelectionView.vue
@@ -0,0 +1,36 @@
+
+ public-slot-picker(v-bind:hash="$route.params.hash", v-bind:availableSlots="availableSlotsPerDay[$route.params.day]", v-bind:day="$route.params.day")
+
+
+
diff --git a/app/views/publicView.vue b/app/views/publicView.vue
index 2567aa6..b0d6630 100644
--- a/app/views/publicView.vue
+++ b/app/views/publicView.vue
@@ -1,4 +1,51 @@
div
- p {{ 'Hello world' }}
+ router-link() // TODO: History back
+
+ h1
+ color-span(v-bind:color="eventType.color")
+ | {{ eventType.length }} minutes meeting
+ | with
+ a(v-bind:href="'mailto:' + owner.email") {{ owner.name }}
+
+ router-view
+
+
+
+
diff --git a/package.json b/package.json
index 56539ee..ce8fd0f 100644
--- a/package.json
+++ b/package.json
@@ -22,7 +22,8 @@
"lint": "standard 'app/**/*.js' 'webpack.config.js'",
"clean": "rimraf dist/*",
"watch:prod": "cross-env NODE_ENV=production webpack -p --progress --colors --watch",
- "watch:dev": "cross-env NODE_ENV=development webpack --progress --colors --watch"
+ "watch:dev": "cross-env NODE_ENV=development webpack --progress --colors --watch",
+ "serve": "http-server dist"
},
"contributors": [
"Phyks (Lucas Verney)"
@@ -41,6 +42,7 @@
"cross-env": "^3.1.3",
"css-loader": "^0.25.0",
"debug-loader": "0.0.1",
+ "http-server": "^0.9.0",
"pug": "^2.0.0-beta6",
"pug-cli": "^1.0.0-alpha6",
"pug-loader": "^2.3.0",