【问题标题】:workDays and different hours for different professionals with angular schedule syncfusion具有角度日程同步融合的不同专业人员的工作日和不同时间
【发布时间】:2019-10-31 19:17:09
【问题描述】:

我有一个非常动态的日程安排,我会让专业人员在不同的日子参加,他在那一天见面的时间段,开始时间和结束时间不同。

我用来组装这个的例子在这个链接:Schedule Different Work Days

我目前正在与这些专业人士建立一个资源列表,他们参加的日子如下:

 const resourceObject = {
    text: professional.name, id: professional.id,
    color: '#848484', workDays: days, startHour: '', endHour: ''
  };

我创建了一个resourceDataSource 列表并将上述对象添加到其中,以便在日历上我可以知道每个专业人士参加的日期。

我的问题是这样我无法设置特定日期的开始时间和结束时间。

如何通过为某些日子分配不同的开始和结束时间来维护这种编程逻辑?

{dayWork: 1, startTime: '13:00', endTime: '18:00', id: professionalId}
{dayWork 2, startTime: '08:00', endTime: '19:00', id: professionalId}

component.html:

<ng-template #resourceHeaderTemplate let-data>
    <div class='template-wrap'>
        <div class="avatar resource-image {{getDoctorImage(data)}}"></div>
        <div class="resource-details">
            <div class="resource-name">{{getDoctorName(data)}}</div>
        </div>
    </div>
</ng-template>
<e-resources>
    <e-resource field='DoctorId' title='Professional' name='Doctors' [dataSource]='resourceDataSource'
        textField='text' idField='id' colorField='color' workDaysField='workDays' startHourField='startHour'
        endHourField='endHour'>
    </e-resource>
</e-resources>

【问题讨论】:

  • 你可能不会得到这个问题的帮助...一旦出现错误或卡住,你应该尝试一些改变并提出问题。
  • 我按照示例中的方式进行操作...我唯一需要的是专门设置几天的开始和结束时间。

标签: html angular typescript schedule syncfusion


【解决方案1】:

Syncfusion 问候。

我们使用 DataBinding 和 actionBegin 事件准备了以下示例,以使每个资源每天有不同的工作时间。

https://stackblitz.com/edit/angular-ysiqa8-pzqfrc?file=app.component.ts

onDataBinding(args: any): void {
    if (this.flag) {
      if (
        this.scheduleObj.currentView !== "Month" &&
        this.scheduleObj.currentView !== "Agenda"
      ) {
        var currentViewDates = this.scheduleObj.getCurrentViewDates();
        for (var i = 0; i < currentViewDates.length; i++) {
          switch ((currentViewDates[i] as any).getDay()) {
            case 0:
              this.scheduleObj.setWorkHours([currentViewDates[i]], '06:00', '14:00', 0);
              this.scheduleObj.setWorkHours([currentViewDates[i]], '08:00', '13:00', 1);
              this.scheduleObj.setWorkHours([currentViewDates[i]], '07:00', '20:00', 2);
              break;
            case 1:
              this.scheduleObj.setWorkHours([currentViewDates[i]], '08:00', '14:00', 0);
              this.scheduleObj.setWorkHours([currentViewDates[i]], '09:00', '13:00', 1);
              this.scheduleObj.setWorkHours([currentViewDates[i]], '07:00', '20:00', 2);
              break;
            case 2:
              this.scheduleObj.setWorkHours([currentViewDates[i]], '07:00', '20:00', 0);
              this.scheduleObj.setWorkHours([currentViewDates[i]], '08:00', '14:00', 1);
              this.scheduleObj.setWorkHours([currentViewDates[i]], '09:00', '18:00', 2);
              break;
            case 3:
              this.scheduleObj.setWorkHours([currentViewDates[i]], '05:00', '10:00', 0);
              this.scheduleObj.setWorkHours([currentViewDates[i]], '11:00', '15:00', 1);
              this.scheduleObj.setWorkHours([currentViewDates[i]], '10:00', '14:00', 2);
              break;
            case 4:
              this.scheduleObj.setWorkHours([currentViewDates[i]], '10:00', '15:00', 0);
              this.scheduleObj.setWorkHours([currentViewDates[i]], '08:00', '12:00', 1);
              this.scheduleObj.setWorkHours([currentViewDates[i]], '09:00', '13:00', 2);
              break;
            case 5:
              this.scheduleObj.setWorkHours([currentViewDates[i]], '09:00', '14:00', 0);
              this.scheduleObj.setWorkHours([currentViewDates[i]], '10:00', '19:00', 1);
              this.scheduleObj.setWorkHours([currentViewDates[i]], '08:00', '18:00', 2);
               break;
            case 6:
              this.scheduleObj.setWorkHours([currentViewDates[i]], '07:00', '19:00', 0);
              this.scheduleObj.setWorkHours([currentViewDates[i]], '08:00', '14:00', 1);
              this.scheduleObj.setWorkHours([currentViewDates[i]], '09:00', '20:00', 2);
          }
        }
      }
      this.flag = false;
    }

onActionBegin(args: ActionEventArgs): void {
        let isEventChange: boolean = (args.requestType === 'eventChange');
        if (args.requestType == "eventCreate" ||args.requestType == "eventChange" || args.requestType == "eventRemove" ) {
          this.flag = false;
        } else {
          this.flag = true;
        }
    }

【讨论】:

  • 你使用 setWorkHours 方法,最后一个参数是专业的职位,但究竟是哪个专业呢?在 onDataBiding 方法中,我能得到哪个是专业的吗?
  • 因为我的日历中没有固定职位专业,所以我有几个专业...我有一个过滤器可以选择我要显示的专业,我需要知道哪个专业适合我获取属于他的开始时间和结束时间。
  • 有 getResourcesByIndex 方法,但我需要知道它当前正在运行什么资源来获取 pro,这不在 args 内。
猜你喜欢
  • 2020-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多