| 
					
				 | 
			
			
				@@ -1,32 +1,166 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import { Component } from '@angular/core'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import { AlertController } from '@ionic/angular'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { Component, OnInit,OnDestroy } from '@angular/core'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { AlertController, NavController } from '@ionic/angular'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import { Router } from '@angular/router'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import * as Parse from 'parse'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { interval, Subscription } from 'rxjs'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @Component({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   selector: 'app-tab1', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   templateUrl: 'tab1.page.html', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   styleUrls: ['tab1.page.scss'] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-export class Tab1Page { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+export class Tab1Page implements OnInit,OnDestroy { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  initial: string = '0KG'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  current: string = '0KG'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  target: string = '0KG'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  reward: string = '0元'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  username: string = ''; // 当前用户的用户名 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  blueColor: boolean = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  private loadUserDataSubscription: Subscription | undefined; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  constructor( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private alertController: AlertController, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private router: Router, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private navCtrl: NavController, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ) {} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  constructor(private alertController: AlertController,private router: Router) {} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ngOnInit() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    this.loadUserData(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //每隔一秒检测登录状况 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    this.loadUserDataSubscription = interval(1000).subscribe(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.loadUserData(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      console.log(this.username); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ngOnDestroy() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (this.loadUserDataSubscription) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.loadUserDataSubscription.unsubscribe(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  async loadUserData() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const currentUser = Parse.User.current(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (currentUser) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.username = currentUser.getUsername()!; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.loadData(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.username = '未登录'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.loadData(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  async loadData() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const query = new Parse.Query('weight_status'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      query.equalTo('username', this.username); // 查找当前用户的数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const weightStatus = await query.first(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (weightStatus) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.initial = weightStatus.get('initial') + 'KG' || '--KG'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.current = weightStatus.get('current') + 'KG' || '--KG'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.target = weightStatus.get('target') + 'KG' || '--KG'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.reward = weightStatus.get('reward') + '元' || '--元'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } catch (error) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      console.error('Error loading data', error); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  async openEditModal() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (this.username == '未登录') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // 如果用户未登录,则显示登录提示 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.presentLoginAlert(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  async openModal() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     const alert = await this.alertController.create({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      header: '提示', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      message: '弹窗了', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      buttons: ['确定'] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      header: '编辑体重信息', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      inputs: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          name: 'initial', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          type: 'text', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          placeholder: '初始', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          value: this.initial.replace('KG', '') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          name: 'current', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          type: 'text', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          placeholder: '当前', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          value: this.current.replace('KG', '') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          name: 'target', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          type: 'text', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          placeholder: '目标', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          value: this.target.replace('KG', '') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          name: 'reward', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          type: 'text', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          placeholder: '赏金', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          value: this.reward.replace('元', '') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      buttons: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          text: '取消', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          role: 'cancel' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          text: '保存', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          handler: async (data) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              const query = new Parse.Query('weight_status'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              query.equalTo('username', this.username); // 查找当前用户的数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              let weightStatus = await query.first(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              if (!weightStatus) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                weightStatus = new Parse.Object('weight_status'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              weightStatus.set('username', this.username); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              weightStatus.set('initial', data.initial); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              weightStatus.set('current', data.current); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              weightStatus.set('target', data.target); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              weightStatus.set('reward', data.reward); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              await weightStatus.save(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              this.loadData(); // 更新本地数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } catch (error) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              console.error('Error updating data', error); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     await alert.present(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  blueColor:boolean=false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  toggleButtonColor(habit:string){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    this.blueColor=!this.blueColor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  async presentLoginAlert() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const alert = await this.alertController.create({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      header: '未登录', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      message: '请先登录以继续操作', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      buttons: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          text: '取消', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          role: 'cancel' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          text: '去登录', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          handler: () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.navCtrl.navigateForward('/user/login'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    await alert.present(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  toggleButtonColor(habit: string) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    this.blueColor = !this.blueColor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  //3d圆点击事件 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   navigateToTreePage() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     this.router.navigate(['/tabs/tree']); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 |