0

在构建谷歌日历插件时遇到了一些挑战,它可以帮助我们记录我们正在从事的项目的时间。项目管理工具内置在 Salesforce 中,因此当用户首次启动与 AddOn 的会话时,我们正在获取项目记录和关联的任务 (1:many),这被缓存在用户缓存中。

我正在设置两个从远程服务器获取的项目和任务列表中填充的选项列表。这个想法是从第一个下拉列表中选择您的项目,然后第二个下拉列表填充该单个项目的任务列表。

CardService.newCardSection().addWidget(CardService.newTextInput().setSuggestions(createProjectSuggestions()).setFieldName("project").setTitle("Project"))
          .addWidget(CardService.newTextInput().setFieldName("task").setTitle("Task").setHint('Select your project first and see a list of tasks').setSuggestionsAction(buildTaskSuggestionsAction)

我似乎无法在更改“项目”输入字段时触发 buildTaskSuggestionsAction?要填充此列表,需要在文本字段“任务”中输入,然后等待构建任务列表。一旦建立,任务列表也不会过滤到用户的输入。

/**
* loop through projectsAndTasks and pull project names for suggestion list
*/
function createProjectSuggestions() {
  var suggestions = CardService.newSuggestions();
  var projectsAndTasks = fetchProjectsAndTasks(); 

  var records = projectsAndTasks.records;
  for(var i in records) {
    suggestions.addSuggestion(records[i].Name);
  }
   return suggestions;
}

/**
* loop through and create task list for selected project
*/
function createTaskSuggestions(e) {

  var project = e && e.formInput['project'];
  var records = fetchProjectsAndTasks().records;

  var suggestions = [];
  for (r in records) {
    if(records[r].Name == project) {
      //TaskRay is a Salesforce plugin we are using for time tracking
      var tasks = records[r].TASKRAY__Tasks__r.records;
      for(var t in tasks) {
        suggestions.push(tasks[t].Name);  
      }
      suggestions.sort();
    }
  }
  return CardService.newSuggestionsResponseBuilder().setSuggestions(CardService.newSuggestions().addSuggestions(suggestions)).build();  
}

据我目前所知,似乎没有办法实现这种动态选择列表行为?朝着正确的方向前进(如果存在的话!)将受到欢迎。

提前致谢。

4

0 回答 0