2017-02-18 8 views
1

Я пытаюсь обновить задачи диаграммы Ганта Telerik AutomaticllyАвто перемещать задачи преемника в Кендо UI Ганте

Пусть говорит, что если я перейду на задание 1 день вперед, то она должна автоматически переходить его преемник задачу 1 день вперед.

Эта функция ниже автоматически перемещает все последующие задачи , но проблема в том, что после обновления страницы мои изменения теряются, и только одна задача, которую я переместил, сохраняется. не сохраняются мои изменения, которые сделаны с помощью tasksDataSource.update

Полный код здесь http://dojo.telerik.com/EYOnu

function onSave(e) { 

       //reinitialize array 
       updatedSuccessorsIds = new Array(); 

       var gantt = e.sender; 

       var newStartDate = e.values.end; 
       var oldStartDate = e.task.end; 

       var diffMs = newStartDate - oldStartDate; // milliseconds between now & old 
       var diffMins = Math.round(diffMs/60000); 

       var currentTaskId = e.task.id.toString(); 

       var dependencies = dependenciesDataSource.successors(currentTaskId); 

       $.each(dependencies, function (key, depend) { 
        updateSuccessor(depend.successorId, diffMins); 
       }); 

       //kendoConsole.log("Task saved :: " + e.task.title); 
      } 

      function onDataBound() { 
       //kendoConsole.log("Gantt data bound"); 
      } 

      function onDataBinding() { 
       //kendoConsole.log("Gantt data binding"); 
      } 

      function onNavigate(e) { 
       //kendoConsole.log(kendo.format("navigate:: view:{0};", e.view)); 
      } 


      function onMoveStart(e) { 
       //kendoConsole.log("moveStart"); 
      } 

      function onMove(e) { 
       //kendoConsole.log("move"); 
      } 

      function onMoveEnd(e) { 


      } 

      function updateSuccessor(successortaskId, diffMins) { 

       var successortask = tasksDataSource.get(successortaskId); 

       if (successortask.summary) 
        return true;//this is parent so ignore its node 

       var successortaskStartDate = successortask.start; 
       successortaskStartDate.setMinutes(successortaskStartDate.getMinutes() + diffMins); 

       var successortaskEndDate = successortask.end; 
       successortaskEndDate.setMinutes(successortaskEndDate.getMinutes() + diffMins); 


       tasksDataSource.update(successortask, 
             { 
              start: successortaskStartDate, 
              end: successortaskEndDate 
             }); 

       //put updated successortask in array so we can use this array to find parent node to update 
       updatedSuccessorsIds.push(successortaskId); 

       var dependencies = dependenciesDataSource.successors(successortaskId); 

       $.each(dependencies, function (key, depend) { 
        updateSuccessor(depend.successorId, diffMins); 
       }); 

      } 

ответ

0

Вы должны использовать событие moveEnd, поскольку это однозначно идентифицирует задачу, перемещаемых (вам может понадобиться использовать resizeEnd событие, когда изменяется продолжительность задачи). Если вы изменили задачу, которая была фактически перемещена, вам нужно будет вызвать e.preventDefault(), чтобы предотвратить вызов метода сохранения, который будет отменять ваши изменения, используя значения e.start и e.end

 Смежные вопросы

  • Нет связанных вопросов^_^