генерировать временные интервалы на неделю и назначать их в массив в firebaase - PullRequest
0 голосов
/ 16 марта 2020

На самом деле я хочу разделить некоторые нет. временных интервалов между startTime и endTime, и я сделал это с помощью временного интервала службы, а затем собрал их в массив, и теперь я хочу собрать временные интервалы на неделю, поэтому я могу использовать эти временные интервалы для бронирования назначение врача, отображая временные интервалы определенного выбранного дня для пользователя, поэтому я использовал a для l oop, и когда я собирался сделать pu sh этот массив элементов, который является временными интервалами, уже сгенерированными между startTime и endTime, он отказывается, мой файлы машинописного текста указаны ниже

обновление Doctor.ts

async updateDoctor()
  {

          if(this.doctor.startTime && this.doctor.endTime && this.doctor.interval)
          {
            this.showAlert("reached service")
            this.doctor.timeSlots = this.fbtimeservice.divideTimeSlots(this.doctor.startTime , this.doctor.endTime,this.doctor.interval)
          }

        await this.fbservice.updateDoctor(this.doctor).then(()=> {
          this.router.navigateByUrl(`/view-doctor/${this.doctor.id}`)
        });

  }

Делить-время-слот.service.ts


import { Injectable } from '@angular/core';

@Injectable({
  providedIn: 'root'
})
export class DivideTimeSlotService {

  // startTime:string = "11:00:00";
  // endTime = "12:00:00";
  times_ara: any[];
  weeks: any[];

  constructor() { }

  ngOnInit() {

    // let interval = 30;

  console.log(this.times_ara)
  }

  divideTimeSlots(startTime :string , endTime:string ,interval:number)
  {
    let start_time = this.parseTime(startTime);
    let end_time = this.parseTime(endTime);
    for(let i=0;i<7;i++)
    {
      this.times_ara = this.calculate_time_slot( start_time, end_time , interval);
      this.weeks.push(this.times_ara)
    }
    console.log("weeks is "+this.weeks)
    return this.weeks
  }

  parseTime(s: string) {
    var c = s.split(':');
    return parseInt(c[0]) * 60 + parseInt(c[1]);
  }

  convertHours(mins: number)
  {
    let hour = Math.floor(mins/60);
    let mins2 = mins%60;
    var converted = this.pad(hour, 2)+':'+this.pad(mins2, 2);
    return converted;
  }

  pad(str: string | number | any[], max: number) {
    str = str.toString();
    return str.length < max ? this.pad("0" + str, max) : str;
  }

  calculate_time_slot(start_time: number, end_time: number, interval: number){
      // var i, formatted_time;
    let time_slots = new Array();
      for(let i=start_time,j=1; i<=end_time-interval; i = i+interval,j++){
      let slotTime1 = this.convertHours(i);
      let slotTime2 = this.convertHours(i+interval);
      let slotTime = slotTime1+" - "+slotTime2
      let slotId =1000+j;
      let slotDate : Date =null;
      let slotStatus :string = "available"
      time_slots.push({slotId,slotTime,slotDate,slotStatus});
    }
    return time_slots;
  }
}


в функции DivideTimeSlots, если я удаляю для l oop и возвращаю times_ara, он возвращает массив только слотов между startTime и endTime, я хочу, чтобы они выглядели примерно так image

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...