Javascript PyBossa加载和呈现任务

Javascript PyBossa加载和呈现任务,javascript,crowdsourcing,Javascript,Crowdsourcing,(这是我关于Stackoverflow的第一个问题,所以我希望我做得对。) 我正在尝试使用PyBOSSA框架在上设置一个项目。 我跟随他们进行项目开发。 第一部分对我来说似乎非常清楚,创建项目和添加任务都很有效。 然后我构建了自己的html网页,将任务呈现给用户。现在,下一步是从项目中加载任务,将它们呈现给用户,并保存他们的答案。 不幸的是,我不知道该怎么做。 我将尝试提出一些问题,让您了解我的问题: 我怎么能试试这个?唯一的方法似乎是更新代码,然后运行pbs update_项目 在哪里可以找到

(这是我关于Stackoverflow的第一个问题,所以我希望我做得对。)

我正在尝试使用PyBOSSA框架在上设置一个项目。 我跟随他们进行项目开发。 第一部分对我来说似乎非常清楚,创建项目和添加任务都很有效。 然后我构建了自己的html网页,将任务呈现给用户。现在,下一步是从项目中加载任务,将它们呈现给用户,并保存他们的答案。 不幸的是,我不知道该怎么做。 我将尝试提出一些问题,让您了解我的问题:

  • 我怎么能试试这个?唯一的方法似乎是更新代码,然后运行pbs update_项目
  • 在哪里可以找到PyBossa.js的文档?我刚刚看到(在教程和其他页面上)有一些函数,如
    pybossa.taskload(function(task,deferred){})
    pybossa.presentTask(函数(任务,延迟){})。但我不知道它们是如何工作的,还有其他什么。这看起来像是包含一个文档,但它没有(断开的链接或空索引)
  • 我怎样使用图书馆?我想a)加载任务,b)将其呈现给用户,c)向用户显示其进度,d)发送答案。所以我想我必须调用4个不同的函数。但我不知道怎么做
  • 我期待着您的任何信息

    编辑:4。看这个示例项目的代码,我不明白关于加载disqs的东西是什么。我认为Discus是一个论坛软件,但我不确定这一点,我不知道这与我(或他们)的项目有什么关系

    编辑: 据我所知,JS库的基本部分包括:

    pybossa.taskLoaded(function(task, deferred) {
      if ( !$.isEmptyObject(task) ) {
        deferred.resolve(task);
      }
      else {
          deferred.resolve(task);
      }
      });
    
      pybossa.presentTask(function(task, deferred) {
      if ( !$.isEmptyObject(task) ) {
          // choose a container within your html to load the data into (depends on your layout and on the way you created the tasks)
          $("#someID").html(task.info.someName);
          // by clickin "next_button" save answer and load next task
          $("#next_button").click( function () {
        // save answer into variable here
        var answer = $("#someOtherID").val();
        if (typeof answer != 'undefined') {
           pybossa.saveTask(task.id, answer).done(function() {
           deferred.resolve();
           });
        }
          });
       }
      else {
          $("#someID").html("There are no more tasks to complete. Thanks for participating in ... ");
      }
      });
    
      pybossa.run('<short name>');
    
    pybossa.taskLoaded(函数(任务,延迟){
    如果(!$.isEmptyObject(任务)){
    解决(任务);
    }
    否则{
    解决(任务);
    }
    });
    pybossa.presentTask(函数(任务,延迟){
    如果(!$.isEmptyObject(任务)){
    //在html中选择要加载数据的容器(取决于布局和创建任务的方式)
    $(“#someID”).html(task.info.someName);
    //单击“下一步按钮”保存答案并加载下一个任务
    $(“#下一步按钮”)。单击(函数(){
    //将答案保存到变量中
    var answer=$(“#someOtherID”).val();
    如果(答案类型!=“未定义”){
    saveTask(task.id,answer).done(function()){
    延迟。解决();
    });
    }
    });
    }
    否则{
    $(“#someID”).html(“没有更多的任务要完成。感谢参与…”);
    }
    });
    pybossa.run(“”);
    
    我将尝试逐一回答您的观点:

  • 您可以运行
    pbs更新项目
    或转到项目页面> 任务>任务演示者,并在此处编辑代码

  • 我相信链接是有效的,在那里你应该可以找到 你想要的信息

  • 因此,一旦您创建了项目并添加了任务和 presenter(您构建的HTML)应该包含Javascript 演示者自身内部的代码。实际上你只需要写 这两个函数:
    pybossa.taskLoaded(函数(任务,
    延期){};presentTask(函数(任务,延迟){})

    在第一篇文章中,你必须写下你想要发生的事情 加载任务后,但在准备演示任务之前 给用户(例如,加载与任务相关的附加数据, 而不是任务本身,比如来自外部站点的图像)。一旦 完成此操作后,您必须调用
    deferred.resolve()
    ,这就是方法 告诉pybossa.js我们已经完成了任务 (如果成功或发生了错误)

    之后,您必须为第二个回调编写回调 (pybossa.presentTask)为任务设置所有内容, 与按钮应答提交的事件处理程序类似,下面是 您应该将完成任务的用户的逻辑放在哪里 它本身,然后在哪里调用
    pybossa.saveTask()
    。再一次, 最后应该调用deferred.resolve()告诉pybossa.js 用户已完成此任务并显示下一个任务。我 会建议你在里面做回叫吗
    pybossa.saveTask(task).done(callbackFunc())
    ,因此请确保 正确完成当前任务后,继续执行下一个任务 拯救

  • 您可以忘记讨论代码。这些只是模板 提供,其中包含一些代码,允许 对任务进行评论。为此,使用了Disquss,但这取决于 您可以选择是否要使用它,以便可以安全地删除它 代码


  • 你也可以试试看。这仅用于让开发人员环境在本地测试/调试您的代码。非常感谢您的澄清。我将用更多的代码片段更新我的答案,以帮助其他有同样问题的人。我知道你提供的链接,但问题是JS函数太复杂了,很难找到什么是关键。他们用的大部分东西我都不需要。这就是你的解释对我帮助很大的地方。