Browse Source

重寫健康護照顯示部分

VicCG.Lin 11 months ago
parent
commit
b054742d9f

+ 38
- 588
src/fe/healthpassport/css/all.css
File diff suppressed because it is too large
View File


+ 1
- 1
src/fe/healthpassport/css/all.css.map
File diff suppressed because it is too large
View File


+ 1
- 0
src/fe/healthpassport/css/all.scss View File

@@ -7,6 +7,7 @@
7 7
 @import "module/img-scale";
8 8
 @import "module/px2em";
9 9
 @import "module/frosted";
10
+@import "module/transition";
10 11
 
11 12
 @import "variable/base";
12 13
 

+ 5
- 0
src/fe/healthpassport/css/component/_section.scss View File

@@ -1,6 +1,7 @@
1 1
 .section {
2 2
     opacity: 0;
3 3
     visibility: hidden;
4
+    pointer-events: none;
4 5
     position: absolute;
5 6
     overflow-y: auto;
6 7
     overflow-x: hidden;
@@ -15,4 +16,8 @@
15 16
         padding-top: 0;
16 17
         transform-origin: center top;
17 18
     }
19
+    &.--is-active {
20
+        visibility: visible;
21
+        pointer-events: auto;
22
+    }
18 23
 }

+ 5
- 3
src/fe/healthpassport/css/layout/_body.scss View File

@@ -24,8 +24,7 @@ p {
24 24
     top: 0;
25 25
     left: 50%;
26 26
     transform: translateX(-50%);
27
-    overflow-x: hidden;
28
-    overflow-y: auto;
27
+    overflow: hidden;
29 28
     width: 100%;
30 29
     height: 100%;
31 30
     max-width: 640px;
@@ -35,7 +34,9 @@ p {
35 34
 }
36 35
 
37 36
 .wrapper__line-scroll-fixed {
38
-    position: relative;
37
+    position: absolute;
38
+    left: 0;
39
+    top: 0;
39 40
     width: 100%;
40 41
     height: calc(100% + 10px);
41 42
     z-index: 1;
@@ -47,6 +48,7 @@ p {
47 48
     left: 0;
48 49
     width: 100%;
49 50
     height: 100%;
51
+    overflow: hidden;
50 52
     z-index: 1;
51 53
 }
52 54
 

+ 12
- 0
src/fe/healthpassport/css/module/_transition.scss View File

@@ -0,0 +1,12 @@
1
+.fade-enter-active, 
2
+.fade-leave-active {
3
+  transition: opacity .25s;
4
+}
5
+  
6
+.fade-enter {
7
+  opacity: 1!important;
8
+}
9
+.fade-leave-to {
10
+  opacity: 0!important;
11
+}
12
+  

+ 2
- 1
src/fe/healthpassport/css/page/_passport.scss View File

@@ -130,7 +130,8 @@
130 130
         position: fixed;
131 131
         left: 50%;
132 132
         transform: translateX(-50%);
133
-        bottom: 5em;
133
+        // bottom: 5em;
134
+        bottom: 3em;
134 135
         width: 89%;
135 136
         margin: 0 auto;
136 137
         box-shadow: 0 0.2em 0.5em rgba(#000, 0.2);

+ 8
- 7
src/fe/healthpassport/index.html View File

@@ -20,7 +20,7 @@
20 20
   <meta property="og:description" content="" />
21 21
   <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.1.3/dist/css/bootstrap.min.css"
22 22
     integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
23
-  <link rel="stylesheet" href="./css/all.css?v=202310121821">
23
+  <link rel="stylesheet" href="./css/all.css?2bfccafdcea738f81dfd47159974209c4bb34e27">
24 24
 
25 25
 </head>
26 26
 
@@ -379,9 +379,10 @@
379 379
       </section>
380 380
       <!-- 活動辦法 methods -->
381 381
       <section class="section methods wrapper__line-scroll-fixed">
382
-        <div class="backform"><span>
383
-            << /span>
384
-              <p>回上一頁</p>
382
+        <div class="backform">
383
+          <span>
384
+            <p>回上一頁</p>
385
+          </span>
385 386
         </div>
386 387
         <div class="section__container methods__container">
387 388
           <p>
@@ -503,9 +504,9 @@
503 504
   <script defer src="./js/utlis.js?7cbe65f53be79cd4b77a5eb4a8276309636ce117"></script>
504 505
   <script defer src="./js/services/userModel.js"></script>
505 506
   <script defer src="./js/services/index.js?94e36845bbde69677cfe04ccd35e1cab693f8bfd"></script>
506
-  <script defer src="./js/register.js?9d81090955cff53a869bf5bbddb30fbca297fc41"></script>
507
-  <script defer src="./js/passport.js?5d68a597e0db4dfda46a82ae1ac395ee680dd7df"></script>
508
-  <script defer src="./js/base.js?9fb825c8551ab8f7975d17a190781d6d5e38182a"></script>
507
+  <script defer src="./js/register.js?773e635dd81c36c2ba24f139b95017c8512eb9f7"></script>
508
+  <script defer src="./js/passport.js?7077ad7a5eb513e7ddd4288761f1a77b55a5d75f"></script>
509
+  <script defer src="./js/base.js?40b7843a8fd152309d08b4fd1e3ac8bc737c2884"></script>
509 510
   <!-- <script>
510 511
     // init vConsole
511 512
     var vConsole = new VConsole();

+ 66
- 20
src/fe/healthpassport/js/base.js View File

@@ -1,15 +1,28 @@
1
-base = function () {
1
+function useBase() {
2 2
 	//private menbers
3 3
 	let isActivityOver = false;
4 4
 	let userProfile = null;
5 5
 	let userData = null;
6
-
6
+	let passport;
7
+	let register;
7 8
 
8 9
 	//private methods
9 10
 	function init() {
10 11
 
11 12
 		console.log('base init')
12 13
 
14
+		passport = new usePassport({
15
+			goToRegister,
16
+			insertFromData
17
+		});
18
+	
19
+		register = new useRegister({
20
+			myAlert,
21
+			sectionFadeOut,
22
+			sectionFadeIn,
23
+			buildPassportHandler,
24
+		});
25
+
13 26
 		// 判斷是否活動已結束
14 27
 		// entranceTimer();
15 28
 
@@ -37,17 +50,17 @@ base = function () {
37 50
 					console.log("userData: ",userData)
38 51
 					
39 52
 					if(userData === null) {
40
-						console.log('LinePicHandler');
41
-						register.LinePicHandler(profile.pictureUrl);
42 53
 						console.log('goToRegister');
43 54
 						goToRegister();
55
+						console.log('LinePicHandler');
56
+						register.LinePicHandler(profile.pictureUrl);
44 57
 					}else {
58
+						console.log('goToPassport');
59
+						goToPassport();
45 60
 						console.log('buildPassportHandler');
46 61
 						passport.buildPassportHandler(userData);
47 62
 						console.log('insertFromData');
48 63
 						register.insertFromData(userData);
49
-						console.log('goToPassport');
50
-						goToPassport();
51 64
 						console.log('sendCompleteMessage');
52 65
 						GameService.getInstanse().sendCompleteMessage();
53 66
 					}
@@ -80,8 +93,18 @@ base = function () {
80 93
 			// console.log("goToActivity click");
81 94
 			goToMethods();
82 95
 		});
96
+	}
83 97
 
84
-		
98
+	function insertFromData(theUserData) {
99
+		if (register) {
100
+			register.insertFromData(theUserData);
101
+		}
102
+	}
103
+
104
+	function buildPassportHandler(theUserData) {
105
+		if (passport) {
106
+			passport.buildPassportHandler(theUserData);
107
+		}
85 108
 	}
86 109
 
87 110
 	// 活動期間判斷
@@ -135,22 +158,45 @@ base = function () {
135 158
 
136 159
 	// page進入動態
137 160
 	function sectionFadeIn(el) {
138
-		$(el).show();
139
-		gsap.to(el, {
140
-			duration: 0.3,
141
-			autoAlpha: 1
142
-		})
161
+		const elememt = document.querySelector(el);
162
+		if (elememt) {
163
+			elememt.classList.remove('fade-leave-active');
164
+			elememt.classList.remove('fade-leave-to');
165
+			elememt.classList.add('--is-active');
166
+			elememt.classList.add('fade-enter-active');
167
+			sleep(300).then(() => {
168
+				elememt.classList.add('fade-enter');
169
+			});
170
+		}
171
+		// $(el).show();
172
+		// gsap.to(el, {
173
+		// 	duration: 0.3,
174
+		// 	autoAlpha: 1
175
+		// })
143 176
 	}
144 177
 
145 178
 	// page離開動態
146 179
 	function sectionFadeOut(el) {
147
-		gsap.to(el, {
148
-			duration: 0.3,
149
-			autoAlpha: 0,
150
-			onComplete: function() {
151
-				$(el).hide();
152
-			}
153
-		})
180
+		const elememt = document.querySelector(el);
181
+		if (elememt) {
182
+			elememt.classList.add('fade-leave-active');
183
+			elememt.classList.add('fade-leave-to');
184
+			sleep(300).then(() => {
185
+				elememt.classList.remove('fade-enter');
186
+				elememt.classList.remove('fade-enter-active');
187
+				elememt.classList.remove('fade-leave-active');
188
+				elememt.classList.remove('fade-leave-active');
189
+				elememt.classList.remove('fade-leave-to');
190
+				elememt.classList.remove('--is-active');
191
+			});
192
+		}
193
+		// gsap.to(el, {
194
+		// 	duration: 0.3,
195
+		// 	autoAlpha: 0,
196
+		// 	onComplete: function() {
197
+		// 		$(el).hide();
198
+		// 	}
199
+		// })
154 200
 	}
155 201
 
156 202
 	{
@@ -177,4 +223,4 @@ base = function () {
177 223
 	};
178 224
 };
179 225
 
180
-window.base = new base();
226
+window.base = new useBase();

+ 9
- 9
src/fe/healthpassport/js/passport.js View File

@@ -1,15 +1,15 @@
1
-passport = function () {
1
+function usePassport(delegate) {
2
+	
3
+	const options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
4
+
2 5
 	//private menbers
3 6
 	let tagData = null;
4
-	let convertData = {}
5
-
6
-
7
-
7
+	let convertData = {};
8 8
 
9 9
 	//private methods
10 10
 	function init() {
11 11
 
12
-		console.log('passport init')
12
+		console.log('passport init');
13 13
 
14 14
 		getTagData();
15 15
 
@@ -27,8 +27,8 @@ passport = function () {
27 27
 
28 28
 		$(".passport__edit").on("click", function(){
29 29
 			userData = GameService.getInstanse().getUserData();
30
-			register.insertFromData(userData);
31
-			window.base.goToRegister();
30
+			delegate.insertFromData(userData);
31
+			delegate.goToRegister();
32 32
 		});
33 33
 	}
34 34
 
@@ -190,4 +190,4 @@ passport = function () {
190 190
 	};
191 191
 };
192 192
 
193
-var passport = new passport();
193
+// var passport = new usePassport();

+ 18
- 21
src/fe/healthpassport/js/register.js View File

@@ -1,5 +1,5 @@
1 1
 
2
-register = function () {
2
+function useRegister(delegate) {
3 3
 	let _noteScrollTop = 0;
4 4
 	let linePicUrl = null;
5 5
 	let lineBase64Data = null;
@@ -69,7 +69,7 @@ register = function () {
69 69
 			if(checkRegister()) {
70 70
 				sendRegister();
71 71
 			}else {
72
-				window.base.myAlert(registerAlert);
72
+				delegate.myAlert(registerAlert);
73 73
 				$(this).removeClass("disable");
74 74
                 $(".form-submit p").text("下一步");
75 75
 			}
@@ -80,23 +80,21 @@ register = function () {
80 80
 	function LinePicHandler(url) {
81 81
 
82 82
 		linePicUrl = url;
83
-		$(".photo__img").html("");
84
-		$(".photo__img").append(`
85
-			<img src="${linePicUrl}"/>
86
-		`);
87
-		
88
-		$(".photo .load-wrapp ").hide();
89
-
90 83
 		const imageURL = linePicUrl;
91 84
 		if(imageURL.trim() !== '') {
92 85
 			const img = new Image();
93
-			img.src = imageURL;
86
+			img.crossOrigin = 'anonymous';
87
+			img.onload = function() {
94 88
 
95
-			const canvas = document.createElement("canvas");
96
-			const ctx = canvas.getContext("2d");
97
-			img.crossOrigin = 'Anonymous';
89
+				$(".photo__img").html("");
90
+				$(".photo__img").append(`
91
+					<img src="${linePicUrl}"/>
92
+				`);
93
+				
94
+				$(".photo .load-wrapp ").hide();
98 95
 
99
-			img.onload = function() {
96
+				const canvas = document.createElement("canvas");
97
+				const ctx = canvas.getContext("2d");
100 98
 				canvas.width = img.width;
101 99
 				canvas.height = img.height;
102 100
 				ctx.drawImage(img, 0, 0);
@@ -106,8 +104,8 @@ register = function () {
106 104
 				finalase64Data = lineBase64Data;
107 105
 
108 106
 				// console.log(finalase64Data)
109
-
110 107
 			}
108
+			img.src = imageURL;
111 109
 		}
112 110
 	}
113 111
 
@@ -193,7 +191,6 @@ register = function () {
193 191
 
194 192
 		GameService.getInstanse().userUpdatePhoto(finalase64Data).then(res => {
195 193
 			console.log('userUpdatePhoto:', res);
196
-			// base.myAlert('成功上傳。');
197 194
 		});
198 195
 		
199 196
 	}
@@ -368,9 +365,9 @@ register = function () {
368 365
 	
369 366
 						console.log("userData: ",userData)
370 367
 						
371
-						window.base.sectionFadeOut(".register");
372
-						window.base.sectionFadeIn(".passport");
373
-						passport.buildPassportHandler(userData)
368
+						delegate.sectionFadeOut(".register");
369
+						delegate.sectionFadeIn(".passport");
370
+						delegate.buildPassportHandler(userData)
374 371
 
375 372
 						GameService.getInstanse().sendCompleteMessage();
376 373
 					})
@@ -380,7 +377,7 @@ register = function () {
380 377
 			.catch(_err => {
381 378
 				console.log(_err);
382 379
 				// let msg = err.message.replaceAll("Error:", "");
383
-				window.base.myAlert(_err);
380
+				delegate.myAlert(_err);
384 381
 				$(".register .form-submit").removeClass("disable");
385 382
                 $(".register .form-submit p").text("下一步");
386 383
 			})
@@ -424,4 +421,4 @@ register = function () {
424 421
 	};
425 422
 };
426 423
 
427
-var register = new register();
424
+// var register = new useRegister();