浏览代码

:sparkles: first pass nav

tags/0.0.1^2
J 3 年前
父节点
当前提交
77a0df8555

+ 3
- 3
backend/package-lock.json 查看文件

@@ -1623,9 +1623,9 @@
1623 1623
             "dev": true
1624 1624
         },
1625 1625
         "caniuse-lite": {
1626
-            "version": "1.0.30001312",
1627
-            "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001312.tgz",
1628
-            "integrity": "sha512-Wiz1Psk2MEK0pX3rUzWaunLTZzqS2JYZFzNKqAiJGiuxIjRPLgV6+VDPOg6lQOUxmDwhTlh198JsTTi8Hzw6aQ==",
1626
+            "version": "1.0.30001418",
1627
+            "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001418.tgz",
1628
+            "integrity": "sha512-oIs7+JL3K9JRQ3jPZjlH6qyYDp+nBTCais7hjh0s+fuBwufc7uZ7hPYMXrDOJhV360KGMTcczMRObk0/iMqZRg==",
1629 1629
             "dev": true
1630 1630
         },
1631 1631
         "chalk": {

+ 6588
- 149
frontend/package-lock.json
文件差异内容过多而无法显示
查看文件


+ 1
- 0
frontend/package.json 查看文件

@@ -19,6 +19,7 @@
19 19
         "wave-ui": "^2.40.2"
20 20
     },
21 21
     "devDependencies": {
22
+        "@mdi/font": "^7.0.96",
22 23
         "@prettier/plugin-pug": "^1.19.2",
23 24
         "@vitejs/plugin-vue": "^2.2.4",
24 25
         "@vue/compiler-sfc": "^3.2.31",

+ 29
- 4
frontend/src/components/MainNav.vue 查看文件

@@ -1,12 +1,37 @@
1 1
 <template lang="pug">
2
-nav#main-header
3
-    router-link(:to="`/matches`") matches
4
-    router-link(to='/') home
5
-    router-link(:to="`/survey`") survey
2
+nav#main-header.w-flex.row.xs12
3
+    router-link.w-flex.column(:to='`/chats`')
4
+        w-button.pa8.bdrsr.bd1.sh1(bg-color='primary' disabled)
5
+            w-icon.mr1(xl) mdi mdi-forum
6
+            h3.text-upper chats
7
+    router-link.w-flex.column(:to='`/matches`')
8
+        w-button.pa8.bdrsr.bd1.sh1(bg-color='primary')
9
+            w-icon.mr1(xl) mdi mdi-tooltip-account
10
+            h3.text-upper matches
11
+    router-link.w-flex.column(:to='`/`')
12
+        w-button.pa8.bdrsr.bd1.sh1(bg-color='primary')
13
+            w-icon.mr1(xl) mdi mdi-home
14
+            h3.text-upper home
15
+    router-link.w-flex.column(:to='`/survey`')
16
+        w-button.pa8.bdrsr.bd1.sh1(bg-color='primary')
17
+            w-icon.mr1(xl) mdi mdi-account-check
18
+            h3.text-upper survey
19
+    router-link.w-flex.column(:to='`/settings`')
20
+        w-button.pa8.bdrsr.bd1.sh1(bg-color='primary' disabled)
21
+            w-icon.mr1(xl) mdi mdi-cog
22
+            h3.text-upper settings
6 23
 </template>
7 24
 
8 25
 <script>
26
+import '@mdi/font/css/materialdesignicons.min.css'
27
+
9 28
 export default {
10 29
     name: 'MainNav',
11 30
 }
12 31
 </script>
32
+
33
+<style lang="sass">
34
+nav#main-header
35
+    position: absolute
36
+    bottom: 15vh
37
+</style>

+ 1
- 1
frontend/src/views/ChatView.vue 查看文件

@@ -25,7 +25,7 @@ main.view--chat
25 25
     p(v-else-if="profile.isLoggedIn && !target") No match found between profile {{ $route.params.tid }} and {{profile.id}}... 
26 26
     p(v-else) Loading...
27 27
 
28
-    MainNav(@show-sidebar="$emit('show-sidebar')")
28
+    MainNav
29 29
 </template>
30 30
 
31 31
 <script>

+ 26
- 20
frontend/src/views/HomeView.vue 查看文件

@@ -12,14 +12,20 @@ main.view--home(style="display:flex; flex-direction:column; gap: 40px; margin-to
12 12
     
13 13
     p(v-else-if="matches.length===0") No matches.
14 14
     p(v-else) Loading...
15
+
16
+    MainNav
15 17
 </template>
16 18
 
17 19
 <script>
18
-    import 'wave-ui/dist/wave-ui.css'
20
+import 'wave-ui/dist/wave-ui.css'
19 21
 import ProfileCardList from '../components/ProfileCardList.vue'
20 22
 
21 23
 import { Card } from '../entities'
22
-import { fetchQueueByProfileId, fetchMembershipsByProfileId, currentProfile } from '../services'
24
+import {
25
+    fetchQueueByProfileId,
26
+    fetchMembershipsByProfileId,
27
+    currentProfile,
28
+} from '../services'
23 29
 import { mixins } from '../utils'
24 30
 
25 31
 /** Callback used to format incoming into card */
@@ -72,26 +78,26 @@ export default {
72 78
         // this can be placed in utils/notification.js
73 79
         notify(payload) {
74 80
             this.$waveui.notify({
75
-            message: payload.timetoken,
76
-            timeout: 6000,
77
-            bgColor: 'white',
78
-            color: 'success',
79
-            dismiss: false,
80
-            shadow: true,
81
-            round: true,
82
-            sm: true,
83
-            icon: 'wi-star'
84
-        })
81
+                message: payload.timetoken,
82
+                timeout: 6000,
83
+                bgColor: 'white',
84
+                color: 'success',
85
+                dismiss: false,
86
+                shadow: true,
87
+                round: true,
88
+                sm: true,
89
+                icon: 'wi-star',
90
+            })
85 91
         },
86 92
         //  a way to send a message to a user for development purposes and testing
87
-        async chat()  {
88
-           const chatter = currentProfile.chatter
89
-           const res = await chatter.publish(chatter.subscriptions[0],{
90
-            title: 'New Message',
91
-            description: 'This is a new message',
92
-           })
93
-           this.notify(res)
94
-        }
93
+        async chat() {
94
+            const chatter = currentProfile.chatter
95
+            const res = await chatter.publish(chatter.subscriptions[0], {
96
+                title: 'New Message',
97
+                description: 'This is a new message',
98
+            })
99
+            this.notify(res)
100
+        },
95 101
     },
96 102
 }
97 103
 </script>

+ 1
- 1
frontend/src/views/MatchesView.vue 查看文件

@@ -8,7 +8,7 @@ main.view--matches.f-col.start.w-full
8 8
     
9 9
     p(v-else) Loading...
10 10
     
11
-    MainNav(@show-sidebar="$emit('show-sidebar')")
11
+    MainNav
12 12
 </template>
13 13
 
14 14
 <script>

+ 17
- 12
frontend/src/views/ProfileView.vue 查看文件

@@ -2,12 +2,12 @@
2 2
 main.view--profile.f-col.start.w-full
3 3
     header 
4 4
         h2 Profile Page
5
- 
6
-    article(v-if="!loading")
5
+
6
+    article(v-if='!loading')
7 7
         h3 name: {{ profile.user_name }}
8
-            span(v-if="profile.profile_prefs?.pronouns") &nbsp;({{ profile.profile_prefs?.pronouns.val }})
9
-        p(v-if="profile.user_email") {{ profile.user_email }}
10
-        
8
+            span(v-if='profile.profile_prefs?.pronouns') &nbsp;({{ profile.profile_prefs?.pronouns.val }})
9
+        p(v-if='profile.user_email') {{ profile.user_email }}
10
+
11 11
         p I am looking for a&nbsp;
12 12
             span {{ profile.profile_prefs?.presence?.val }}&nbsp;
13 13
             span {{ profile.profile_prefs?.role?.val }}&nbsp;
@@ -15,22 +15,27 @@ main.view--profile.f-col.start.w-full
15 15
             span no further than {{ profile.profile_prefs?.distance?.val }} miles away&nbsp;
16 16
             span from {{ profile.profile_prefs?.zipcode?.val }}
17 17
 
18
-        p I am {{ profile.profile_prefs?.urgency?.val.split("_").join(" ") }}.
19
-        
20
-        img(v-if="profile.reveal.map(t => t.description).includes('image')" :src="profile.profile_media[0]" alt="profile-avatar" style="max-height: 200px; width: auto;")
18
+        p I am {{ profile.profile_prefs?.urgency?.val.split('_').join(' ') }}.
19
+
20
+        img(
21
+            :src='profile.profile_media[0]'
22
+            alt='profile-avatar'
23
+            style='max-height: 200px; width: auto'
24
+            v-if='profile.reveal.map(t => t.description).includes("image")'
25
+        )
21 26
         h3(v-else) image not revealed
22
-        
23
-        p About: {{ profile.profile_description}}
27
+
28
+        p About: {{ profile.profile_description }}
24 29
 
25 30
         p reveal: {{ profile.reveal.map(t => t.description) }}
26 31
         p tags: {{ profile.tags.map(t => t.description) }}
27 32
         p images: {{ profile.profile_media }}
28 33
         p responses: {{ profile.responses.length }}
29
-        button(@click="$router.go(-1)") back
34
+        button(@click='$router.go(-1)') back
30 35
 
31 36
     p(v-else) Loading...
32 37
 
33
-    MainNav(@show-sidebar="$emit('show-sidebar')")
38
+    MainNav
34 39
 </template>
35 40
 
36 41
 <script>

+ 50
- 34
frontend/src/views/SurveyView.vue 查看文件

@@ -4,57 +4,73 @@ main.view--survey.f-col.start.w-full
4 4
         p survey for profile: {{ current }}
5 5
     article.match.w-full
6 6
         ul.w-full
7
-            template(v-for="(q, i) in profileQuestions" :key="q.response_key_prompt")
8
-                li(v-if="step == i + 1")
9
-                    p {{q.response_key_category}}: 
7
+            template(
8
+                :key='q.response_key_prompt'
9
+                v-for='(q, i) in profileQuestions'
10
+            )
11
+                li(v-if='step == i + 1')
12
+                    p {{ q.response_key_category }}:
10 13
                         span in db:
11
-                        span(v-if="q.response_key_id") true - id:{{q.response_key_id}} | 
12
-                        span(v-else) false | 
13
-                        span {{q.response_key_prompt}}? 
14
-                        span {{q.response_key_description}} 
14
+                        span(v-if='q.response_key_id') true - id:{{ q.response_key_id }} |
15
+                        span(v-else) false |
16
+                        span {{ q.response_key_prompt }}?
17
+                        span {{ q.response_key_description }}
15 18
 
16 19
                         //- Select
17
-                        div(v-if="q.responses.length")
18
-                            button(
19
-                                v-for="(res, index) in q.responses"
20
-                                :key="index"
21
-                                @click="storeResponseLike(step, q.response_key_id, q.response_key_prompt, res); step++"
22
-                            ).p-0 {{res}}
23
-                        
20
+                        div(v-if='q.responses.length')
21
+                            button.p-0(
22
+                                :key='index'
23
+                                @click='storeResponseLike(step, q.response_key_id, q.response_key_prompt, res); step++'
24
+                                v-for='(res, index) in q.responses'
25
+                            ) {{ res }}
26
+
24 27
                         //- Fill in the blank
25
-                        div(v-else-if="q.response_key_category === 'profile'")
26
-                            input(@input="storeResponseLike(step, q.response_key_id, q.response_key_prompt, profile[q.response_key_prompt])" v-model="profile[q.response_key_prompt]" @keyup.enter="step++") 
27
-                            label >{{ profile[q.response_key_prompt]}}
28
-                        
28
+                        div(v-else-if='q.response_key_category === "profile"')
29
+                            input(
30
+                                @input='storeResponseLike(step, q.response_key_id, q.response_key_prompt, profile[q.response_key_prompt])'
31
+                                @keyup.enter='step++'
32
+                                v-model='profile[q.response_key_prompt]'
33
+                            ) 
34
+                            label >{{ profile[q.response_key_prompt] }}
35
+
29 36
                         //- Aspects
30
-                        div(v-else).f-col
31
-                            input(type="range" min="-3" max="3" list="ticks" @input="storeResponseLike(step, q.response_key_id, q.response_key_prompt, aspects[q.response_key_category])" v-model="aspects[q.response_key_category]").w-full
32
-                            label {{ aspectResponses[parseInt(aspects[q.response_key_category]) + 3] }} 
33
-                    
37
+                        .f-col(v-else)
38
+                            input.w-full(
39
+                                @input='storeResponseLike(step, q.response_key_id, q.response_key_prompt, aspects[q.response_key_category])'
40
+                                list='ticks'
41
+                                max='3'
42
+                                min='-3'
43
+                                type='range'
44
+                                v-model='aspects[q.response_key_category]'
45
+                            )
46
+                            label {{ aspectResponses[parseInt(aspects[q.response_key_category]) + 3] }}
47
+
34 48
                         nav.f-row
35
-                            button(:disabled="step == 0" @click="step--") back
36
-                            p {{step}} of {{profile.length}}
49
+                            button(:disabled='step == 0' @click='step--') back
50
+                            p {{ step }} of {{ profile.length }}
37 51
                             button(
38
-                                v-if="(q.response_key_category === 'profile')"
39
-                                @click="storeResponseLike(step, q.response_key_id, q.response_key_prompt, profile[q.response_key_prompt]); step++"
52
+                                @click='storeResponseLike(step, q.response_key_id, q.response_key_prompt, profile[q.response_key_prompt]); step++'
53
+                                v-if='q.response_key_category === "profile"'
40 54
                             ) next
41 55
                             button(
56
+                                @click='storeResponseLike(step, q.response_key_id, q.response_key_prompt, aspects[q.response_key_category]); step++'
42 57
                                 v-else
43
-                                @click="storeResponseLike(step, q.response_key_id, q.response_key_prompt, aspects[q.response_key_category]); step++"
44 58
                             ) next
45
-                    
59
+
46 60
             //- Confirmation
47
-            li(v-if="step == profileQuestions.length + 1")
61
+            li(v-if='step == profileQuestions.length + 1')
48 62
                 p Does this look correct?
49 63
                 h4 {{ profile }}
50
-                h4 {{aspects}}
64
+                h4 {{ aspects }}
51 65
                 nav.f-row
52
-                    button(@click="step--") back
53
-                    p(@click="step = 1").p-1 start over
54
-                    button(@click="onSave") save
66
+                    button(@click='step--') back
67
+                    p.p-1(@click='step = 1') start over
68
+                    button(@click='onSave') save
55 69
                     //- button(@click="$router.push({ name: 'HomeView' })") save
56 70
     footer
57
-        button(@click="bypass") +30 user profiles
71
+        button(@click='bypass') +30 user profiles
72
+
73
+    MainNav
58 74
 </template>
59 75
 
60 76
 <script>

正在加载...
取消
保存