Added Certification mockup
This commit is contained in:
@@ -98,7 +98,13 @@ module.exports = configure(function (/* ctx */) {
|
|||||||
// directives: [],
|
// directives: [],
|
||||||
|
|
||||||
// Quasar plugins
|
// Quasar plugins
|
||||||
plugins: ['Notify', 'LocalStorage', 'SessionStorage'],
|
plugins: [
|
||||||
|
'Notify',
|
||||||
|
'LocalStorage',
|
||||||
|
'SessionStorage',
|
||||||
|
'AppFullscreen',
|
||||||
|
'AddressbarColor',
|
||||||
|
],
|
||||||
},
|
},
|
||||||
|
|
||||||
// animations: 'all', // --- includes all animations
|
// animations: 'all', // --- includes all animations
|
||||||
|
|||||||
66
src/components/CertificationComponent.vue
Normal file
66
src/components/CertificationComponent.vue
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
<template>
|
||||||
|
<div>Certification</div>
|
||||||
|
<q-item
|
||||||
|
v-for="cert in certifications"
|
||||||
|
:key="cert.title"
|
||||||
|
clickable
|
||||||
|
v-ripple
|
||||||
|
class="rounded-borders"
|
||||||
|
:class="$q.dark.isActive ? 'bg-grey-9 text-white' : 'bg-grey-2'"
|
||||||
|
>
|
||||||
|
<q-item-section avatar>
|
||||||
|
<q-avatar rounded>
|
||||||
|
<q-icon :name="`check`" />
|
||||||
|
</q-avatar>
|
||||||
|
</q-item-section>
|
||||||
|
|
||||||
|
<q-item-section>
|
||||||
|
<q-item-label> {{ cert.title }} </q-item-label>
|
||||||
|
<q-item-label caption>
|
||||||
|
<q-badge color="green-4" text-color="black">
|
||||||
|
{{ cert.badgeText }}
|
||||||
|
</q-badge>
|
||||||
|
</q-item-label>
|
||||||
|
</q-item-section>
|
||||||
|
|
||||||
|
<q-item-section>
|
||||||
|
<span>{{ cert.description }}</span>
|
||||||
|
</q-item-section>
|
||||||
|
</q-item>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
import { defineComponent } from 'vue';
|
||||||
|
|
||||||
|
const certifications = [
|
||||||
|
{
|
||||||
|
title: 'J/27 Skipper',
|
||||||
|
badgeText: 'J/27',
|
||||||
|
description: 'Certified to be a skipper on a J/27 class boat.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Capri 25 Skipper',
|
||||||
|
badgeText: 'Capri25',
|
||||||
|
description: 'Certified to be a skipper on a Capri 25 class boat.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Night',
|
||||||
|
badgeText: 'Night',
|
||||||
|
description: 'Certified to operate boats at night',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Navigation',
|
||||||
|
badgeText: 'Nav',
|
||||||
|
description: 'Advanced Navigation',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Crew',
|
||||||
|
badgeText: 'crew',
|
||||||
|
description: 'Crew certification.',
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
defineComponent({
|
||||||
|
name: 'CertificationComponent',
|
||||||
|
});
|
||||||
|
</script>
|
||||||
@@ -24,7 +24,7 @@
|
|||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { defineComponent } from 'vue';
|
import { defineComponent } from 'vue';
|
||||||
import { links } from 'components/navlinks';
|
import { links } from 'src/router/navlinks.js';
|
||||||
|
|
||||||
defineProps(['drawer']);
|
defineProps(['drawer']);
|
||||||
defineEmits(['drawer-toggle']);
|
defineEmits(['drawer-toggle']);
|
||||||
|
|||||||
@@ -40,6 +40,9 @@ const loggedInUser = authStore.currentUser;
|
|||||||
|
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
|
|
||||||
|
// q.fullscreen.request();
|
||||||
|
q.addressbarColor.set('#14539a');
|
||||||
|
|
||||||
async function logout() {
|
async function logout() {
|
||||||
await authStore.logout();
|
await authStore.logout();
|
||||||
q.notify({
|
q.notify({
|
||||||
|
|||||||
8
src/pages/BookingPage.vue
Normal file
8
src/pages/BookingPage.vue
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
<template>
|
||||||
|
<q-page padding>
|
||||||
|
<!-- content -->
|
||||||
|
</q-page>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
</script>
|
||||||
9
src/pages/CertificationPage.vue
Normal file
9
src/pages/CertificationPage.vue
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
<template>
|
||||||
|
<q-page padding>
|
||||||
|
<CertificationComponent />
|
||||||
|
</q-page>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
import CertificationComponent from 'components/CertificationComponent.vue';
|
||||||
|
</script>
|
||||||
8
src/pages/ChecklistPage.vue
Normal file
8
src/pages/ChecklistPage.vue
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
<template>
|
||||||
|
<q-page padding>
|
||||||
|
<!-- content -->
|
||||||
|
</q-page>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
</script>
|
||||||
@@ -11,6 +11,7 @@
|
|||||||
:label="link.name"
|
:label="link.name"
|
||||||
rounded
|
rounded
|
||||||
class="full-width"
|
class="full-width"
|
||||||
|
:align="'left'"
|
||||||
/>
|
/>
|
||||||
</q-item>
|
</q-item>
|
||||||
</q-list>
|
</q-list>
|
||||||
@@ -19,7 +20,7 @@
|
|||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { defineComponent } from 'vue';
|
import { defineComponent } from 'vue';
|
||||||
import { links } from 'components/navlinks';
|
import { links } from 'src/router/navlinks.js';
|
||||||
|
|
||||||
defineComponent({
|
defineComponent({
|
||||||
name: 'IndexPage',
|
name: 'IndexPage',
|
||||||
|
|||||||
@@ -106,7 +106,7 @@ function login(email: string, password: string) {
|
|||||||
position: 'top',
|
position: 'top',
|
||||||
spinner: true,
|
spinner: true,
|
||||||
message: 'Logging you in...',
|
message: 'Logging you in...',
|
||||||
timeout: 2000,
|
timeout: 8000,
|
||||||
group: false,
|
group: false,
|
||||||
});
|
});
|
||||||
authStore
|
authStore
|
||||||
@@ -119,6 +119,7 @@ function login(email: string, password: string) {
|
|||||||
spinner: false,
|
spinner: false,
|
||||||
icon: 'check_circle',
|
icon: 'check_circle',
|
||||||
});
|
});
|
||||||
|
console.log('Redirecting to index page');
|
||||||
router.replace({ name: 'index' });
|
router.replace({ name: 'index' });
|
||||||
})
|
})
|
||||||
.catch(function (reason: Error) {
|
.catch(function (reason: Error) {
|
||||||
|
|||||||
8
src/pages/ProfilePage.vue
Normal file
8
src/pages/ProfilePage.vue
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
<template>
|
||||||
|
<q-page padding>
|
||||||
|
<!-- content -->
|
||||||
|
</q-page>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
</script>
|
||||||
8
src/pages/ReferencePage.vue
Normal file
8
src/pages/ReferencePage.vue
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
<template>
|
||||||
|
<q-page padding>
|
||||||
|
<!-- content -->
|
||||||
|
</q-page>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
</script>
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
export const links = [
|
export const links = [
|
||||||
{
|
{
|
||||||
name: 'Profile',
|
name: 'Profile',
|
||||||
to: '/profile',
|
to: 'profile',
|
||||||
icon: 'account_circle',
|
icon: 'account_circle',
|
||||||
front_links: false,
|
front_links: false,
|
||||||
},
|
},
|
||||||
@@ -13,25 +13,25 @@ export const links = [
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'Booking',
|
name: 'Booking',
|
||||||
to: '/booking',
|
to: 'booking',
|
||||||
icon: 'calendar_month',
|
icon: 'calendar_month',
|
||||||
front_links: true,
|
front_links: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'Certifications',
|
name: 'Certifications',
|
||||||
to: '/certifications',
|
to: 'certification',
|
||||||
icon: 'verified',
|
icon: 'verified',
|
||||||
front_links: true,
|
front_links: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'Checklists',
|
name: 'Checklists',
|
||||||
to: '/checklists',
|
to: 'checklist',
|
||||||
icon: 'checklist',
|
icon: 'checklist',
|
||||||
front_links: true,
|
front_links: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'Reference',
|
name: 'Reference',
|
||||||
to: '/reference',
|
to: 'reference',
|
||||||
icon: 'info_outline',
|
icon: 'info_outline',
|
||||||
front_links: true,
|
front_links: true,
|
||||||
},
|
},
|
||||||
@@ -15,6 +15,31 @@ const routes: RouteRecordRaw[] = [
|
|||||||
component: () => import('pages/BoatPage.vue'),
|
component: () => import('pages/BoatPage.vue'),
|
||||||
name: 'boat',
|
name: 'boat',
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
path: '/booking',
|
||||||
|
component: () => import('pages/BookingPage.vue'),
|
||||||
|
name: 'booking',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/certification',
|
||||||
|
component: () => import('pages/CertificationPage.vue'),
|
||||||
|
name: 'certification',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/checklist',
|
||||||
|
component: () => import('pages/ChecklistPage.vue'),
|
||||||
|
name: 'checklist',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/profile',
|
||||||
|
component: () => import('pages/ProfilePage.vue'),
|
||||||
|
name: 'profile',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/reference',
|
||||||
|
component: () => import('pages/ReferencePage.vue'),
|
||||||
|
name: 'reference',
|
||||||
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user