2016-07-07 80 views
0

你好,我尝试用javascript来查询sharepoint 2013中的任务。如何过滤任务以仅显示活动的任务?

这是我走到这一步:

var context = new SP.ClientContext.get_current(); 
    var userSessionManager = new SP.WorkManagement.OM.UserOrderedSessionManager(context); 
    var userSession = userSessionManager.createSession(); 
    var userSettingsManager = new SP.WorkManagement.OM.UserSettingsManager(context); 
    var locations = userSettingsManager.getAllLocations(); 
    var locationFilter = userSettingsManager.locationFilter 
    var query = new SP.WorkManagement.OM.TaskQuery(context); 
    var myTasks = userSession.readTasks(query); 
    var task; 
    var tasks = []; 
    var overDue = []; 
    var dueSoon = []; 
    var anTimeDue = []; 
    var dateForEvaluation = new Date(); 

    getMyTasks(); 

    function getMyTasks() { 
     context.load(locations); 
     context.load(myTasks); 
     context.executeQueryAsync(onGetMyTasksSuccess, onGetMyTasksFail); 
    } 

    function onGetMyTasksSuccess() { 
     console.log("Successfully retrieved tasks..."); 
     var taskEnumerator = myTasks.getEnumerator(); 
     while (taskEnumerator.moveNext()) { 
      task = taskEnumerator.current; 
      //console.log("Task: " + task.get_id() + " - Taskname: " + task.get_name() + " - Beschreibung: " + task.get_description() + " - dueDatum: " + task.get_dueDate() + " - Startdatum: " + task.get_startDate() + " - Persönlich: " + task.get_isPersonal() + " - Fertiggestellt: " + task.get_isCompleted()); 
      tasks.push({ 
       taskName: task.get_name(), 
       description: task.get_description(), 
       dueDate: task.get_dueDate(), 
       startDate: task.get_startDate(), 
       personally: task.get_isPersonal(), 
       complete: task.get_isCompleted(), 
       location: task.get_locationId() 

      }); 
     } 

     console.log(tasks); 
     console.log(locations) 
    } 

    // This function is executed if the above call fails 
    function onGetMyTasksFail(sender, args) { 
     console.log('Failed to get tasks. Error:' + args.get_message()); 
    } 

此代码的工作,但给了我永远的所有任务回来。我只需要未完成的任务。那么我试着看看引用页面,但没有代码示例或任何东西。

所以我的问题是如何过滤任务,只得到未完成的任务?

任何建议或举行将是伟大的,并感谢您的时间。

回答

0

正如我发现唯一的工作选项对我来说是我们一个if语句,其中我查询is_completet方法的结果。

这里是现在工作代码:

function onGetMyTasksSuccess() { 
    console.log("Successfully retrieved tasks..."); 
    var taskEnumerator = myTasks.getEnumerator(); 
    while (taskEnumerator.moveNext()) { 
     task = taskEnumerator.current; 
     if (task.get_isCompleted() === false) { 
      tasks.push({ 
       taskName: task.get_name(), 
       description: task.get_description(), 
       dueDate: task.get_dueDate(), 
       startDate: task.get_startDate(), 
       personally: task.get_isPersonal(), 
       complete: task.get_isCompleted(), 
       location: task.get_locationId() 
      }); 
     } 

    } 

    console.log(tasks); 
    countForForm(tasks); 
} 

这里的importend就是if (task.get_isCompleted() === false)它并不完美,但我的作品不够好。令人遗憾的是,对于sharepoint sp.workmanagment.js,JavaScript API没有很好的记录。