2012-07-02 2 views
0

Добавление связи с XML работает, но я хочу использовать переменную JS для него:Ext JS Gannt добавив связи между задачами

var dependencyStore = Ext.create("Gnt.data.DependencyStore", { 
     autoLoad: true, 
     proxy: { 
      type : 'ajax', 
      url: 'dependencies.xml', 
      method: 'GET', 
      reader: { 
       type : 'xml', 
       root : 'Links', 
       record: 'Link' // records will have a 'Link' tag 
      } 
     } 
    }); 

dependancies.xml

<Links> 
    <Link> 
     <From>3</From> 
     <To>4</To> 
     <Type>2</Type> 
    </Link> 
</Links> 

Теперь это новый код, с новым зависимостях магазина и JS переменной:

Мой экземпляр зависимостях магазин выглядит, как это в данный момент:

var dependencyStore = Ext.create("Gnt.data.DependencyStore", { 
      autoLoad : true, 
      proxy  : { 
      type : 'memory', 
      reader : { 
       type: 'json' 
      }, 

      data: [ assign ] 
     }   
}); 

мой присваиваем переменной выглядит следующим образом

var assign = [{ 
    "From" : 3, 
    "To" : 4, 
    "Type" : 2 
} 
] 

Проблема оно, что не создает ссылку.

EDIT: весь файл

Ext.ns('App'); 

//Ext.Loader.setConfig({enabled: true, disableCaching : true }); 
//Ext.Loader.setPath('Sch', '../../../ExtScheduler2.x/js/Sch'); 
//Ext.Loader.setPath('Gnt', '../../js/Gnt'); 

Ext.require([ 
    'Gnt.panel.Gantt', 
    'Gnt.column.PercentDone', 
    'Gnt.column.StartDate', 
    'Gnt.column.EndDate', 
    'Sch.plugin.TreeCellEditing' 
]); 

Ext.onReady(function() { App.Gantt.init(); }); 



App.Gantt = { 

    // Initialize application 
    init: function (serverCfg) { 
     Ext.QuickTips.init(); 

     var taskStore = Ext.create('Gnt.data.TaskStore', { 
     autoLoad : true, 
     proxy  : { 
      type : 'memory', 
      reader : { 
       type: 'json' 
      }, 

      data: [ data 
      ] 
      // eof data 
     } 
     // eof proxy 
    }); 

     var dependencyStore = Ext.create("Gnt.data.DependencyStore", { 
      autoLoad : true, 
     proxy  : { 
      type : 'memory', 
      reader : { 
       type: 'json' 
      }, 
      data: [ assign ] 
     } 
    }); 



     var colSlider = Ext.create("Ext.slider.Single", { 
      width: 120, 
      value: 20, // TODO Sch.PresetManager.getPreset('weekAndDayLetter').timeColumnWidth, 
      minValue: 20, 
      maxValue: 140, 
      increment: 10 
     }); 

     var cellEditing = Ext.create('Sch.plugin.TreeCellEditing', { 
      clicksToEdit: 1, 
      listeners : { 
       beforeedit : function() { return !Ext.getCmp('demo-readonlybutton').pressed; } 
      } 
     }); 

     var g = Ext.create('Gnt.panel.Gantt', { 
      height: 350, 
      width: 1300, 
      renderTo: Ext.getBody(), 

      highlightWeekends: true, 
      loadMask: true, 
      enableProgressBarResize: true, 
      enableDependencyDragDrop: true, 
      //snapToIncrement : true, 
      cascadeChanges : false, 
      startDate: new Date(2012, 5, 21), 
      endDate: new Date(2012, 7, 17), 
      viewPreset: 'weekAndDayLetter', 

      eventRenderer: function (taskRecord) { 
       return { 
        ctcls : taskRecord.get('Id') // Add a CSS class to the task element 
       }; 
      }, 

      tooltipTpl: new Ext.XTemplate(
       '<ul class="taskTip">', 
        '<li><strong>Task:</strong>{Name}</li>', 
        '<li><strong>Start:</strong>{[Ext.Date.format(values.StartDate, "y-m-d H:i")]}</li>', 
        '<li><strong>Duration:</strong> {Duration}d</li>', 
        '<li><strong>Progress:</strong>{PercentDone}%</li>', 
       '</ul>' 
      ).compile(), 


      // Setup your static columns 
      columns: [ 
       { 
        xtype : 'treecolumn', 
        header: 'Tasks', 
        sortable: true, 
        dataIndex: 'Name', 
        width: 200, 
        field: { 
         allowBlank: false 
        } 
       }, 
       Ext.create('Gnt.column.StartDate'), 
       Ext.create('Gnt.column.EndDate'), 
       Ext.create('Gnt.column.PercentDone') 
      ], 

      taskStore: taskStore, 
      dependencyStore: dependencyStore, 
      plugins: [cellEditing], 

      tbar: [ 

       { 
        enableToggle: true, 
        id : 'demo-readonlybutton', 
        text: 'Read only mode', 
        pressed: true, 
        handler: function() { 
         g.setReadOnly(this.pressed); 
        } 
       }, 
       '->', 
       { 
        xtype: 'label', 
        text: 'Column Width' 
       }, 
       ' ', 
       colSlider 
      ] 
     }); 

     colSlider.on({ 
      change: function (s, v) { 
       g.setTimeColumnWidth(v, true); 
      }, 
      changecomplete: function (s, v) { 
       g.setTimeColumnWidth(v); 
      } 
     }); 
    } 
}; 
+0

Вы можете разместить весь пример? –

+0

Вы не используете JS Gaant? Вы используете: http://bryntum.com/products/gantt/ –

+0

@NicholasDiPiazza они называют это Ext JS Gaant на своей странице и добавили весь код. – Jaanus

ответ

0

Когда я

data: [ assign ] 

в моем файле JS, то я не могу иметь [ ] тегов в моем назначить переменных.

Таким образом, вместо

var assign = [{ 
"From" : 3, 
"To" : 4, 
"Type" : 2 

} ]

использование

var assign = { 
"From" : 3, 
"To" : 4, 
"Type" : 2 }