Просмотр исходного кода

:art: commented profile.service.js to help my own understanding of functions, add aspirations and skills json to the data() property on SummaryBar.vue to match mockup data. Switched from WListItem to WTimeline to allow for title and content in display. #TODO style html and add icons to complete issue tasks

tabs-content
K Rob 3 лет назад
Родитель
Сommit
3554f74365

+ 1
- 1
frontend/src/components/AspectBar.vue Просмотреть файл

@@ -1,7 +1,7 @@
1 1
 <template lang="pug">
2 2
 figure.w-flex.column
3 3
     figcaption.w-flex.xs12.justify-space-between.align-center
4
-        p(v-for="(label, index) in labels" :key="label" :class="{ 'main': index === 1 }")  {{ label }}
4
+        p(v-for="(label, index) in labels" :key="label" :class="{ 'main': index === 1 }")  {{ label }} 
5 5
     w-progress(v-model="percentage" size="0.5em" round).mb7
6 6
 </template>
7 7
 

+ 2
- 2
frontend/src/components/ProfileCard.vue Просмотреть файл

@@ -66,8 +66,8 @@ import TagList from './TagList.vue'
66 66
 import PairingButton from './PairingButton.vue'
67 67
 
68 68
 const router = useRouter()
69
-// const isPaired = ref(true)
70
-const isPaired = ref(false)
69
+const isPaired = ref(true)
70
+//const isPaired = ref(false)
71 71
 
72 72
 const props = defineProps({
73 73
     card: {

+ 46
- 1
frontend/src/components/SummaryBar.vue Просмотреть файл

@@ -40,11 +40,23 @@ section.w-flex.column.pb5
40 40
             template(#item-content.3='{ item }')
41 41
                 .tab--aspirations
42 42
                     p {{ tabContent[item].tab }}
43
+                    w-timeline(:items='aspirations')
44
+                    
43 45
 
44 46
             // Skills Tab
45 47
             template(#item-content.4='{ item }')
46 48
                 .tab--skills
47
-                    p {{ tabContent[item].tab }}
49
+                    p Education
50
+                    w-timeline(:items='skills.education')
51
+                    
52
+                    p Licenses & Certificates
53
+                    w-timeline(:items='skills.licenses')
54
+
55
+                    p Skills
56
+                    w-timeline(:items='skills.skills')
57
+
58
+                    p Experience
59
+                    w-timeline(:items='skills.experience')
48 60
 
49 61
         // Untabbed Layout
50 62
         ul.w-flex.row.justify-space-between(v-else)
@@ -62,6 +74,7 @@ section.w-flex.column.pb5
62 74
 
63 75
 <script>
64 76
 import SpiderChart from './SpiderChart.vue'
77
+
65 78
 import { currentProfile } from '../services'
66 79
 
67 80
 export default {
@@ -91,6 +104,37 @@ export default {
91 104
         },
92 105
     },
93 106
     emits: ['tab-change'],
107
+    data: () => ({
108
+        aspirations: [
109
+            {  title: 'Full-Time', content: 'Full-time for me is working 40 hrs a week in a non-contractual position.', icon: 'wi-check-circle' },
110
+            {  title: 'On-site', content: 'I prefer to be onsite 5 days a week at my primary hospital location.', icon: 'wi-cross-circle' },
111
+            { title: 'Relocate', content: 'I am willing to relocate to states on the east coast. My family is back east.', icon: 'wi-warning-circle' },
112
+            { title: 'Management Skills', content: 'Proactive with leading teams and managing benchmark goals for the department.', icon: 'wi-info-circle' },
113
+            { title: 'Mentorship', content: 'I am seeking mentorship in leadership and building a strong team dynamic.', icon: 'wi-cross-circle' },
114
+            { title: 'Work in Los Angeles, California', content: 'I am eager to work in Los Angeles, California to explore new opportunities in healthcare.', icon: 'wi-warning-circle' },
115
+            { title: 'Work in ICU', content: 'Passionate about working in ICU, providing critical care and making a difference in patients\' lives.', icon: 'wi-info-circle' },
116
+        ],
117
+        skills: {
118
+            education: [
119
+                { title: 'Masters Degree, Science in Nursing', content: 'UCLA', icon: 'wi-check-circle' },
120
+            ],
121
+            licenses: [
122
+                { title: 'California RN License', content: 'FRXD45643YHT678', icon: 'wi-cross-circle' },
123
+                { title: 'ACLS & PALS', content: 'IIDVg909473662678', icon: 'wi-warning-circle' },
124
+                { title: 'BCLS Certification', content: 'LUB9839582', icon: 'wi-cross-circle' },
125
+                { title: 'Diversity Training', content: '', icon: 'wi-warning-circle' },
126
+            ],
127
+            skills: [
128
+                { title: 'Excel Spreadsheet', content: 'Advanced Excel user, adept at creating complex formulas, charts, and pivot tables for data analysis.', icon: 'wi-info-circle' },
129
+                { title: 'fetal heart monitoring', content: 'Proficient in fetal heart monitoring, interpreting data, and promptly acting to ensure fetal well-being.', icon: 'wi-info-circle' },
130
+                { title: 'problem-solving', content: 'Strong problem-solving skills, able to identify issues and implement effective solutions under pressure.', icon: 'wi-info-circle' },
131
+            ],
132
+            experience: [
133
+                { title: 'surgical settings', content: 'Experienced in surgical settings, assisting surgeons and managing patient care during procedures.', icon: 'wi-info-circle' },
134
+
135
+            ],
136
+        },
137
+    }),
94 138
     computed: {
95 139
         targetScore(){
96 140
             try{
@@ -108,6 +152,7 @@ export default {
108 152
             this.$emit('tab-change', tabs)
109 153
         },
110 154
     },
155
+    
111 156
 }
112 157
 </script>
113 158
 <style lang="sass">

+ 12
- 2
frontend/src/services/profile.service.js Просмотреть файл

@@ -19,12 +19,19 @@ const fetchProfilesByUserId = async userId => {
19 19
     }
20 20
     return validProfileInstances
21 21
 }
22
-
22
+/**
23
+ * Creates a new profile for a user ID with the given responses and returns
24
+ * the created profile.
25
+ */
23 26
 const createProfileForUserId = async (userId, responses) => {
24 27
     const profile = await db.post(`/user/${userId}/profile`, responses)
25 28
     return profile
26 29
 }
27 30
 
31
+/**
32
+ * Fetches a profile by its profile ID, creates an instance of the Profile
33
+ * class, validates the profile data, and returns the profile instance.
34
+ **/
28 35
 const fetchProfileByProfileId = async profileId => {
29 36
     let profile
30 37
     try {
@@ -38,7 +45,10 @@ const fetchProfileByProfileId = async profileId => {
38 45
     }
39 46
     return profile
40 47
 }
41
-
48
+/**
49
+ * Reveals profile information based on the given grouping ID, profile ID,
50
+ * and tag ID.
51
+ */
42 52
 const revealProfileInfo = async (groupingId, profileId, tagId) => {
43 53
     const revealed = await db.post(
44 54
         `/membership/${groupingId}/reveal?profile_id=${profileId}&tag_id=${tagId}`,

+ 2
- 0
frontend/src/wave.js Просмотреть файл

@@ -27,6 +27,7 @@ import {
27 27
     WSteps,
28 28
     WTag,
29 29
     WToolbar,
30
+    WTimeline,
30 31
 } from '../node_modules/wave-ui/src/wave-ui/components'
31 32
 
32 33
 export default {
@@ -55,4 +56,5 @@ export default {
55 56
     WSteps,
56 57
     WTag,
57 58
     WToolbar,
59
+    WTimeline,
58 60
 }

Загрузка…
Отмена
Сохранить