2016-07-19 4 views
1

私はLaravel5プロジェクトにdhtmlxGanttを統合しており、すべてが期待どおりに機能しています。しかし、私はそれを修正して複数のプロジェクトのチャートを格納したいと思っています。そのために、私は "project_id"と呼ばれる余分なフィールドを追加し、フィルタを介してデータをロードします。複数のプロジェクトで動作するようにdhtmlxGanttを変更する - Laravel5

私は次のコードでコントローラーを変更しようとしている:

$connector->render_links(         
    GanttLink::where('user_id', '=', 1)->get(), 
    "id", 
    "source,target,type"     
); 

$connector->render_table(         
    GanttTask::where('user_id', '=', 1)->get(), 
    "id",                
    "start_date,duration,text,progress,parent"      
); 

このソリューションは私が私が望んでいた方法で、データベースからチャートをロードすることができました。しかし、それはデータベースへの変更を保存しません。私はdhtmlxGanttのドキュメントを調べましたが、これについての解決策はありませんでした。

私の研究でこれらのリンクが見つかりましたし、参考になるかもしれません。

Link 1: Changing values before saving

Link 2: Filtering results based on a parameter

私は別のチャート上で(ロードして、[編集]を)作業することができますように、私のプロジェクトを修正するために助けてください。

答えて

0

最後に解決策が見つかりました。まず、あなたは、コネクタの構成に列を追加し、データベーステーブルにproject_id列を追加する必要があります。

$connector->render_table(new GanttTask(), "id", "start_date,duration,text,progress,parent,project_id"); 

その後、あなたはクライアント側のコードにいくつかの変更を行う必要があります。

gantt.attachEvent("onBeforeTaskDisplay", function (id, task) { 
          if (task.project_id == project_id) { 
           return true; 
          } 
          return false; 
         }); 

gantt.attachEvent("onBeforeTaskAdd", function (id, task) { 
          task.project_id = project_id; 
         }); 

をまず:これらの2つのクライアント・サイド・ハンドラを追加することで、あなたのコードを変更すると<script>..</script> に変数を取るために何かのように、

var project_id = "<?php echo $project['id']; ?>"; 

を使用しますハンドラは結果をチャートを表示する前にフィルタし、2番目のハンドラは追加する前にproject_idプロパティをアタッチします タスク。これで複数のプロジェクトを表示できるdhtmlxGattができました。

+0

どのように開発できますかファイル – Fernando

関連する問題