2012-03-15 2 views
0

フォーラムのメンバーからの変数の値を設定します。私の店は完全にロードされ、私のtaskstoreは、どのように私はExtJSの4のMVCのarchitechtureを使用しています</p> <p>を受け付けており、サーバーの応答私は、サーバーの応答から、私の見解の値を設定する際に一つの問題が生じていますExtJSの4

Ext.define('gantt.store.taskStore', { 
    extend: 'Gnt.data.TaskStore', 
    model: 'gantt.model.ResourceTask', 
    storeId: 'taskStore', 
    autoLoad : true, 
    autoSync : true, 
    proxy  : { 
     type : 'ajax', 
     api: { 
      read:  'task/GetTask.action', 
      create:  'task/CreateTask.action', 
      destroy: 'task/DeleteTask.action', 
      update:  'task/UpdateTask.action' 
     }, 
     writer : new Ext.data.JsonWriter({ 
      //type : 'json', 
      root : 'taskdata', 
      encode : true, 
      writeAllFields : true 
     }), 
     reader : new Ext.data.JsonReader({ 
      totalPropery: 'total', 
      successProperty : 'success', 
      idProperty : 'id', 
      type : 'json', 
      root: function (o) { 
       if (o.taskdata) { 
        return o.taskdata; 
       } else { 
        return o.children; 
       } 
      } 
     }) 
    } 
}); 

以下のように定義されていますが、私は何をしたいとすぐに店は私が私の中の変数のいずれかにサーバーの応答データを割り当てるロードされたということですjavascript。

viewのbeforeload関数から値を追加しようとしましたが、できませんでした。

私の見解コードが

var result = Ext.JSON.decode('{"calendardata": [{"startdate": 1330281000000,"enddate": 1330284600000,"id": 3,"title": "mon"}],"total": 1,"success": true}'); 

//var start = new Date(2012, 2, 26), 
//end  = Sch.util.Date.add(start, Sch.util.Date.MONTH, 30); 

var start_d = new Date(result.calendardata[0].startdate); 
var end_d = new Date(result.calendardata[0].enddate); 

var start = new Date(start_d.getFullYear(), start_d.getMonth(), start_d.getDate()); 
end = Sch.util.Date.add(start, Sch.util.Date.MONTH, 30); 

console.log("YEAR ::"+start.getFullYear()+"MONTH ::"+start.getMonth()+"DAY ::"+start.getDate()); 
console.log("YEAR ::"+end.getFullYear()+"MONTH ::"+end.getMonth()+"DAY ::"+end.getDate()); 

//create the downloadframe at the init of your app 
this.downloadFrame = Ext.getBody().createChild({ 
       tag: 'iframe' 
        , cls: 'x-hidden' 
        , id: 'iframe' 
        , name: 'iframe' 
      }); 
//create the downloadform at the init of your app 

      this.downloadForm = Ext.getBody().createChild({ 
       tag: 'form' 
        , cls: 'x-hidden' 
        , id: 'form' 
        , target: 'iframe' 
      }); 

      var printableMilestoneTpl = new Gnt.template.Milestone({ 
       prefix : 'foo', 
       printable : true, 
       imgSrc : 'resources/images/milestone.png' 
      }); 

      var params = new Object(); 
Ext.define('gantt.view.projectmgt.projectGanttpanel', { 
    extend: "Gnt.panel.Gantt", 
    id: 'projectganttpanel', 
    alias: 'widget.projectganttpanel', 
    requires: [ 
       'Gnt.plugin.TaskContextMenu', 
       'Gnt.column.StartDate', 
       'Gnt.column.EndDate', 
       'Gnt.column.Duration', 
       'Gnt.column.PercentDone', 
       'Gnt.column.ResourceAssignment', 
       'Sch.plugin.TreeCellEditing', 
       'Sch.plugin.Pan', 
       'gantt.store.taskStore', 
       'gantt.store.dependencyStore' 
       ],   
       leftLabelField: 'Name', 
       loadMask: true, 
       //width: '100%', 
      // height: '98%',  
       startDate: start, 
       endDate: end, 
       multiSelect: true, 
       cascadeChanges: true, 
       viewPreset: 'weekAndDayLetter', 
       recalculateParents: false, 
       showTodayLine    : true, 
       showBaseline    : true, 


       initComponent: function() { 
       var me = this; 
       me.on({ 
        scope: me, 
        beforeload: function(store,records,options) { 
         console.log('BEFORE LOAD YAAR panel'+records.params); 

          if(records.params['id'] != null) 
          { 
           return true; 

          } 
          else 
          { 
           return false; 
          } 
        }   
       }); 


       TaskPriority = { 
         Low : 0, 
         Normal : 1, 
         High : 2 
        }; 
        var taskStore = Ext.create('gantt.store.taskStore'); 
        var dependencyStore = Ext.create('gantt.store.dependencyStore'); 

        Ext.apply(me, { 
         taskStore: taskStore, 
         dependencyStore: dependencyStore, 

         // Add some extra functionality 
         plugins : [ 
          Ext.create("Gnt.plugin.TaskContextMenu"), 
          Ext.create('Sch.plugin.TreeCellEditing', { 
           clicksToEdit: 1 
          }), 
          Ext.create('Gnt.plugin.Printable', { 
           printRenderer : function(task, tplData) { 
           if (task.isMilestone()) { 
            return; 
           } else if (task.isLeaf()) { 
            var availableWidth = tplData.width - 4, 
             progressWidth = Math.floor(availableWidth*task.get('PercentDone')/100); 

            return { 
             // Style borders to act as background/progressbar 
             progressBarStyle : Ext.String.format('width:{2}px;border-left:{0}px solid #7971E2;border-right:{1}px solid #E5ECF5;', progressWidth, availableWidth - progressWidth, availableWidth) 
            }; 
           } else { 
            var availableWidth = tplData.width - 2, 
             progressWidth = Math.floor(availableWidth*task.get('PercentDone')/100); 

            return { 
             // Style borders to act as background/progressbar 
             progressBarStyle : Ext.String.format('width:{2}px;border-left:{0}px solid #FFF3A5;border-right:{1}px solid #FFBC00;', progressWidth, availableWidth - progressWidth, availableWidth) 
            }; 
           } 
          }, 
          beforePrint : function(sched) { 
           var v = sched.getSchedulingView(); 
           this.oldRenderer = v.eventRenderer; 
           this.oldMilestoneTemplate = v.milestoneTemplate; 
           v.milestoneTemplate = printableMilestoneTpl; 
           v.eventRenderer = this.printRenderer; 
          }, 

          afterPrint : function(sched) { 
           var v = sched.getSchedulingView(); 
           v.eventRenderer = this.oldRenderer; 
           v.milestoneTemplate = this.oldMilestoneTemplate; 
          } 
         }) 
         ], 
          eventRenderer: function (task) { 
           var prioCls; 
           switch (task.get('Priority')) { 
            case TaskPriority.Low: 
             prioCls = 'sch-gantt-prio-low'; 
             break; 

            case TaskPriority.Normal: 
             prioCls = 'sch-gantt-prio-normal'; 
             break; 

            case TaskPriority.High: 
             prioCls = 'sch-gantt-prio-high'; 
             break; 
           } 

           return { 
            cls: prioCls 
           }; 
          }, 

          // Setup your static columns 
          columns: [ 
           { 
            xtype : 'treecolumn', 
            header: 'Tasks', 
            dataIndex: 'Name', 
            width: 150, 
            field: new Ext.form.TextField() 
           }, 
           new Gnt.column.StartDate(), 
           new Gnt.column.Duration(), 
           new Gnt.column.PercentDone(), 
           { 
            header: 'Priority', 
            width: 50, 
            dataIndex: 'Priority', 
            renderer: function (v, m, r) { 
             switch (v) { 
              case TaskPriority.Low: 
               return 'Low'; 

              case TaskPriority.Normal: 
               return 'Normal'; 

              case TaskPriority.High: 
               return 'High'; 
             } 
            } 
           }, 
           { 
            xtype  : 'booleancolumn', 
            width  : 50, 

            header  : 'Manual', 

            dataIndex : 'ManuallyScheduled', 

            field  : { 
             xtype : 'combo', 
             store : [ 'true', 'false' ] 
            } 
           } 
          ], 
          tooltipTpl: new Ext.XTemplate(
           '<h4 class="tipHeader">{Name}</h4>', 
           '<table class="taskTip">', 
           '<tr><td>Start:</td> <td align="right">{[Ext.Date.format(values.StartDate, "y-m-d")]}</td></tr>', 
           '<tr><td>End:</td> <td align="right">{[Ext.Date.format(Ext.Date.add(values.EndDate, Ext.Date.MILLI, -1), "y-m-d")]}</td></tr>', 
           '<tr><td>Progress:</td><td align="right">{PercentDone}%</td></tr>', 
           '</table>' 
         ).compile()        

        }); 

         me.callParent(arguments); 

     }  
}); 

私は静的データを使用してそれを設定するために使用される変数の値を設定することはできませんよ理由以下のように与えられます。私は

var result = Ext.JSON.decode('{"calendardata": [{"startdate": 1330281000000,"enddate": 1330284600000,"id": 3,"title": "mon"}],"total": 1,"success": true}'); 

var start_d = new Date(result.calendardata[0].startdate); 
var end_d = new Date(result.calendardata[0].enddate); 

var start = new Date(start_d.getFullYear(), start_d.getMonth(), start_d.getDate()); 
end = Sch.util.Date.add(start, Sch.util.Date.MONTH, 30); 

ではなく、私は、すぐに店舗をロードし、サーバの応答が受信されると、開始と終了値を設定する。この静的データの以下のコードを使用しています静的データを設定します。

私がここで応募できる解決策を教えてください。

私は私のサーバー側の技術として、MVCアーキテクチャとJAVAとExtJSに4を使用しています

{ 
    "taskdata": [{ 
     "startdate": 1330281000000, 
     "enddate": 1330284600000,  
     "id": 3, 
     "title": "mon" 
    }], 
    "total": 1, 
    "success": true 
} 

としてjsondataを受け付けております。

答えて

0

まず、あなたの質問は、ひどく公式化されています。あまりにも多くのコードを持っていて、何を尋ねようとしているのかは本当に明確ではありませ将来、あなたが迅速かつ適切な答えを得たいと思っている場合、あなたが扱っている特定の問題を分離しようとします。

第2に、ロード操作は非同期です。あなたは 'autoLoad'としてストアを指定しましたが、ロードイベントを購読している場所は表示されません。あなたの問題は、まだ読み込まれていない間に何かを取得しようとしている可能性が高いです。 autoLoad: falseを設定し、手動でストアをロードし、 'load'イベントにサブスクライブしてビューを設定してください。

+0

私はあなたにコードを提供しました。しかし、なぜそれがひどく公式化されていると言っているのか分かりません。 **また、私の質問を注意深く読んでいないので、店から受け取った値を私のビューの変数に代入したいと思います**。しかし、なぜあなたは別のものに集中しているのか分かりません。私は現在、大まかなコードだけでなく、あなたに助けを求めているすべてのコードを提供していました。ですから、他のどこにも転向しないでください。あなたが私の問題について考えていたら、私にお勧めしてください。 –

+0

私は最初に私の答えにいくつかの提案を入れました。あなたはそれらを試しましたか? – sha

+0

私はあなたの提案を試みました。しかし、私はストアレスポンスを受信するとすぐに、受信したデータをビューに変数に代入することができます。** var result = Ext.JSON.decode( ''); **デコードにレスポンス文字列が含まれている場合。 –

関連する問題