### File

`src/modules/lesson/home/home.component.ts`

### Metadata

selector | `app-home`
styleUrls | `home.component.scss`
templateUrl | `home.component.html`

### Constructor

`constructor(formBuilder: FormBuilder, alertController: AlertController)`

### Methods

isNewDay
`isNewDay()`
Returns: `any`

getProfilePointer
`getProfilePointer()`
Returns: `void`

upload
`upload()`
Returns: `void`

Eatupload
`Eatupload()`
Returns: `void`

getLastUploadTime
`getLastUploadTime()`
Returns: `any`

presentAlert
`presentAlert()`
Returns: `void`

initializeHighlightedDates
`initializeHighlightedDates()`
Returns: `void`

getDate
`getDate()`
Returns: `any`

### Properties

alertButtons
`alertButtons: `string[]` </bcode>`

date
`date: `any` </bcode>`

food
`food: `string` </bcode>`

height
`height: `number` </bcode>`

highlightedDates
`highlightedDates: `{ date: string; textColor: string; backgroundColor: string; }[]` </bcode>`

lastUploadDate
`lastUploadDate: `any` </bcode>`

myForm
`myForm: `any` </bcode>`

title
`title: `string` </bcode>`
Default value: `app-angular`

today
`today: `Date` </bcode>`

weight
`weight: `number` </bcode>`

    import { Component, OnInit } from '@angular/core';
    import { FormBuilder, FormGroup, Validators } from '@angular/forms';
    import { AlertController } from '@ionic/angular';

    import * as Parse from "parse"
    (Parse as any).serverURL = "http://metapunk.cn:9999/parse"
    Parse.initialize("dev")

    @Component({
      selector: 'app-home',
      templateUrl: './home.component.html',
      styleUrls: ['./home.component.scss']
    })
    export class HomeComponent implements OnInit {
      alertButtons = ['好的'];
      myForm: any;
      ngOnInit() {
        this.myForm = this.formBuilder.group({
          height: ['', Validators.required],
          weight: ['', Validators.required]
        });
      }

      title = 'app-angular';
      height: number | null = null;
      weight: number | null = null;
      food: string | null = null;

      today: Date = new Date();

      lastUploadDate: Promise<Date | null> = this.getLastUploadTime();

      async isNewDay(): Promise<boolean> {
        const currentDate = new Date();
        const lastUploadDate = await this.lastUploadDate;
        return (
          lastUploadDate === null ||
          currentDate.getDate() !== lastUploadDate.getDate() ||
          currentDate.getMonth() !== lastUploadDate.getMonth() ||
          currentDate.getFullYear() !== lastUploadDate.getFullYear()
        );
      }
      async getProfilePointer() {
        // 定义要查询的profileId
        const profileId = "肖宇杰";
        // 创建查询对象
        const Profile = Parse.Object.extend("Profile");
        const query = new Parse.Query(Profile);
        // 设置查询条件
        query.equalTo("name", profileId);
        try {
          // 执行查询
          const result = await query.first();
          if (result) {
            // 查询成功，result为查询到的行对象
            const profilePointer = {
              __type: "Pointer",
              className: "Profile",
              objectId: result.id
            };
            console.log("指向Profile表中name为profileId的行的指针：", profilePointer);
            return profilePointer;
          } else {
            // 没有找到匹配的行
            console.log("找不到匹配的行");
            return null;
          }
        } catch (error) {
          // 查询出错
          console.log("查询出错：", error);
          return null;
        }
      }

      async upload() {
        // await this.isNewDay()
        if (true) {
          if (this.height && this.weight) { // 添加验证条件
            // 在这里编写上传逻辑
            let YourClass = Parse.Object.extend("HealthData");
            let yourObject = new YourClass();
            yourObject.set("profile", await this.getProfilePointer());
            yourObject.set({ "height": this.height, "weight": this.weight });
            yourObject.save().then((result: any) => {
              console.log("数据上传成功", result);
              this.height = null;
              this.weight = null;
            }).catch((error: any) => {
              console.error("数据上传失败", error);
            });
            this.lastUploadDate = Promise.resolve(this.today);
          } else {
            console.log("身高或体重为空");
          }
        } else {
          console.log("今天已经上传过了");
          this.height = null;
          this.weight = null;
        }
      }

      async Eatupload() {
        if (!this.food) {
          // 显示错误消息或执行其他操作
          console.log("请输入食物");

          return;
        }
        let YourClass = Parse.Object.extend("HealthEat");
        let yourObject = new YourClass();
        yourObject.set({ "food": this.food, });
        yourObject.save().then((result: any) => {
          console.log("数据上传成功", result);
          this.food = ""
        }).catch((error: any) => {
          console.error("数据上传失败", error);
        });
      }
      async getLastUploadTime(): Promise<Date | null> {
        const Upload = Parse.Object.extend("HealthData");
        const query = new Parse.Query(Upload);
        query.descending("createdAt");

        try {
          const result = await query.first();
          if (result) {
            const lastUploadTime = result.get("createdAt");
            console.log("最后一次上传时间:", lastUploadTime);
            return lastUploadTime;
          } else {
            return null;
          }
        } catch (error) {
          console.error("Error:", error);
          return null;
        }
      }

      date: Promise<string[] | null> = this.getDate();
      highlightedDates: { date: string | null, textColor: string, backgroundColor: string }[] = [];

      constructor(private formBuilder: FormBuilder, private alertController: AlertController) {
        this.initializeHighlightedDates();
        myForm: FormGroup;
      }
      async presentAlert() {
        const alert = await this.alertController.create({
          message: '上传成功',
          buttons: ['OK'],
        });
        await alert.present();
      }

      async initializeHighlightedDates() {
        const dates = await this.date;
        if (dates && dates.length > 0) {
          this.highlightedDates = dates.map(date => ({
            date,
            textColor: '#09721b',
            backgroundColor: '#c8e5d0',
          }));
        }
      }

      async getDate(): Promise<string[] | null> {
        const Upload = Parse.Object.extend("HealthData");
        const query = new Parse.Query(Upload);
        query.descending("createdAt");
        try {
          const result = await query.find();
          if (result.length > 0) {
            const Dates = result.map((result) => {
              const date = result.get("createdAt");
              return date.toISOString().split('T')[0];
            }).reverse();
            console.log("日期数组", Dates);
            return Dates;
          } else {
            return null;
          }
        } catch (error) {
          console.error("Error:", error);
          return null;
        }
      }

    }

# results matching ""

# No results matching ""