2

FullCalendar (FC) に問題があり、プラグイン Scheduler (S) です。

数か月前から、バージョン 1.2.0 (S) と 2.6.0 (FC) を併用しています。

それは問題ありませんが、ユーザーからの新しい要求 (リソースのグループ化を有効/無効にする) は、「オプションを動的に取得/設定する」機能を使用して大いに満足するでしょう。そこで、ライブラリの新しいバージョン 1.4.0 (S) と 3.0.1 (FC) をダウンロードしました。

ここで問題が発生します。通常のスケジューラの日ビューでは、うまく機能します。しかし、週単位のビューを使用している新しいページを開くと、データが表示されません。

私はすべてを試しました:

  • 1.3.2 (S) で 2.7.3 (FC) を使用してバージョンを変更しました。
  • (FC) のバージョンを (S) と一緒に zip で使用しました。
  • いくつかの変更を行ったので、それらを削除しましたが、問題はライブラリが連携して動作する方法にあるようです。

コードをいくつか投稿しますが、少し複雑です... スケジューラは「クラス」内にカプセル化され、イベントを使用してアクティブ化されます。インフラストラクチャ全体は一種のフレームワークの一部であり、単純にコードの一部を取り上げることはできません。私が確信しているのは、全体が古いバージョンでは機能するが、新しいバージョンではうまくいかないということです.

現在のところ、唯一有効な解決策は、各ページに 1 つずつ、2 つのバージョンを使用することです。しかし、もちろん、これは一種のハックであり、良くもなく、メンテナンスにも適していません。

スケジューラを生成するために使用されるコードを次に示します。_schedulerType毎日または毎週のビューをクレートするために使用されます。2 つの「コンテナ」は外部で作成され、スケジューラの作成方法を定義するために使用されます_schedulerOptions_schedulerServices

_schedulerContainer.fullCalendar({
    local (or lang): _schedulerOptions.language,
    allDaySlot: false,
    now: _currentDay,
    selectable: true,
    editable: false,
    aspectRatio: _schedulerOptions.aspectRatio,
    scrollTime: '07:30',
    slotDuration: '00:15:00',
    slotLabelInterval: '01:00:00',
    slotLabelFormat: _schedulerOptions.slotLabelFormat,
    slotWidth: _schedulerOptions.slotWidth,
    nowIndicator: true,
    customButtons: (_schedulerServices.schedulerHeader !== null) ?
        _schedulerServices.schedulerHeader.createCustomButtons() :
        null,
    header: (_schedulerServices.schedulerHeader !== null) ?
        _schedulerServices.schedulerHeader.createHeader() :
        false,
    defaultView: _schedulerType,
    -------------------REMOVE-----------------------------------------
    resourceLabelText: 'Rooms',
    resourceGroupField: _defaultOptions.groupBy,
    resourceOrder: _defaultOptions.orderBy,
    resources: 
      function (callback) {
        if (_schedulerServices.rscCallback !== null) {
          if (log) {
              console.log("reload resources inside scheduler");
          }

          callback(_schedulerServices.rscCallback.getResources());
        }
      },
    ------------------------------------------------------------------
    events: 
      function (start, end, timezone, callback) {
        if (_schedulerServices.evtCallback !== null) {
          if (log) {
            console.log("reload events inside scheduler");
          }
         callback(_schedulerServices.evtCallback.getEvents());
        }
      },
    -------------------REMOVE-----------------------------------------
    resourceRender: 
      function (resourceObj, element) {
        if (_schedulerServices.rscViewManager !== null) {
          return _schedulerServices.rscViewManager.requestRender(resourceObj, element);
        }
      },
    ------------------------------------------------------------------
    eventRender: 
      function (eventObj, element) {
        if (_schedulerServices.evtViewManager !== null) {
          return _schedulerServices.evtViewManager.requestRender(eventObj, element);
        }
      }
    });

どんな助けでも大歓迎です!ありがとう


解決しました!!!

バージョン 2.6.0 以降、オプションの未使用のオプション フィールドは使用しないでください。私の場合、リソースに関連するすべてのフィールドを削除すると問題が解決しました。

4

0 に答える 0