首页 文章

PyBossa加载和呈现任务

提问于
浏览
7

(这是我在Stackoverflow上的第一个问题,所以我希望我这样做 . )

我正在尝试使用 PyBOSSA frameworkCrowdCrafting.org上设置项目 . 我跟着他们tutorial进行项目开发 . 第一部分对我来说非常清楚,创建项目并添加任务工作正常 . 然后我构建了自己的html网页,向用户展示任务 . 现在,下一步是从项目中加载任务,将它们呈现给用户,并保存他们的答案 . 不幸的是,我不明白该怎么做 . 我会尝试制定一些问题,让你了解我的问题:

  • 我怎么试试呢?唯一的方法似乎是更新代码然后运行pbs update_project

  • 我在哪里可以找到 PyBossa.js 的文档?我刚刚看到(在教程和其他页面中)有一些函数,如 pybossa.taskLoaded(function(task, deferred){});pybossa.presentTask(function(task, deferred){}); . 但我不知道它们是如何工作的以及还有什么 . 这个page看起来会包含一个文档,但它没有(断开链接或空索引) .

  • 如何使用该库?我想a)加载任务,b)将其呈现给用户,c)向用户显示他的进度,以及d)发送答案 . 所以我想我知道怎么做 .

我期待着您的任何信息 .

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

编辑:据我所知,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>');

1 回答

  • 6

    我会尽力逐一回答你的观点:

    • 您可以运行 pbs update project 或转到项目页面>任务>任务演示者并在那里编辑代码 .

    • 我相信this链接有效,你应该找到你想要的信息 .

    • 因此,一旦你 Build 了've created the project and added the tasks and the presenter (the HTML you'),你应该在演示者本身中包含Javascript代码 . 实际上你只需要编写这两个函数: pybossa.taskLoaded(function(task, deferred){}); and pybossa.presentTask(function(task, deferred){});

    在第一个内容中,您已准备好将其呈现给用户(例如,加载与任务相关联的其他数据,而不是任务本身,如来自外部站点的图像) . 完成后,你必须调用 deferred.resolve() ,这是告诉pybossa.js我们完成任务加载的方法(如果它已成功或发生了一些错误) .

    之后,你必须编写第二个回调(pybossa.presentTask),在那里为你的任务设置一切,比如按钮回答提交的事件处理程序,这里你应该把用户的逻辑放在完成任务的地方本身,然后你应该在哪里调用 pybossa.saveTask() . 同样,你最后应该调用deferred.resolve()来告诉pybossa.js用户完成了这个任务并呈现下一个任务 . 我建议你在 pybossa.saveTask(task).done(callbackFunc()) 的回调中进行,所以你确保在正确保存当前任务后再继续下一个任务 .

    • 你可以忘记讨论代码 . 这些只是提供的模板,其中包含一些代码,允许人们评论任务 . 为此,使用了Disquss,但是您是否要使用它取决于您,因此您可以安全地删除此代码 .

相关问题