8

PyBOSSA フレームワークを使用して、CrowdCrafting.orgでプロジェクトをセットアップしようとしています。プロジェクト開発のチュートリアルに従いました。最初の部分は非常に明確に思えました。プロジェクトの作成とタスクの追加はうまくいきました。

次に、独自の HTML Web ページを作成して、ユーザーにタスクを提示しました。次のステップは、プロジェクトからタスクを読み込み、ユーザーに提示し、回答を保存することです。

残念ながら、これを行う方法がわかりません。

私の問題を理解してもらうために、いくつかの質問を作成してみます。

  1. どうすればこれを試すことができますか? 唯一の方法は、コードを更新してからpbs update_projectを実行することです
  2. PyBossa.jsのドキュメントはどこにありますか? (チュートリアルや他のページで)pybossa.taskLoaded(function(task, deferred){});やのような関数があることを見ましたpybossa.presentTask(function(task, deferred){});。しかし、それらがどのように機能し、他に何があるかはわかりません。このページにはいくつかのドキュメントが含まれているように見えますが、含まれていません (リンク切れまたは空のインデックス)。
  3. ライブラリの使用方法を教えてください。a)タスクをロードし、b)それをユーザーに提示し、c)ユーザーに進行状況を表示し、d)回答を送信したい。したがって、4 つの異なる関数を呼び出す必要があると思います。しかし、方法がわかりません。

  1. サンプル プロジェクトのコードを見ると、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>');
4

1 に答える 1

7

私はあなたのポイントに一つずつ答えようとします:

  1. 実行するpbs update projectか、プロジェクト ページ > タスク > タスク プレゼンターに移動して、そこでコードを編集できます。

  2. このリンクが機能すると思います。必要な情報が見つかるはずです。

  3. したがって、プロジェクトを作成し、タスクとプレゼンター (作成した HTML) を追加したら、プレゼンター自体の内部に Javascript コードを含める必要があります。実際には、次の 2 つの関数を記述するだけで済みます。pybossa.taskLoaded(function(task, deferred){}); and pybossa.presentTask(function(task, deferred){});

    最初のものの中で、タスクがロードされたら、それをユーザーに提示する準備が整う前に、何をしたいのかを書く必要があります (例えば、タスク自体以外のタスクに関連する追加データをロードします。画像は外部サイトから)。これが完了したら、 を呼び出す必要がありますdeferred.resolve()。これは、タスクのロードが完了したことを pybossa.js に伝える方法です (タスクが成功したか、何らかのエラーが発生した場合)。

    その後、2 つ目のコールバック (pybossa.presentTask) を作成する必要があります。ここで、ボタン回答送信のイベント ハンドラーなど、タスクのすべてをセットアップします。ここに、ユーザーがタスクを完了するロジックを配置する必要があります。を呼び出しますpybossa.saveTask()。繰り返しますが、最後に deferred.resolve() を呼び出して、ユーザーがこのタスクを完了したことを pybossa.js に伝え、次のタスクを提示する必要があります。のコールバック内で実行することをお勧めします pybossa.saveTask(task).done(callbackFunc())。そのため、現在のタスクが正しく保存されたら次のタスクに進むようにしてください。

  4. コードについて話し合うことは忘れて構いません。これらは提供されているテンプレートのみであり、ユーザーがタスクについてコメントできるようにするためのコードが含まれています。そのためにDisqussを使っていますが、使うか使わないかはあなた次第ですので、このコードは安全に削除できます。

于 2014-07-31T09:51:40.683 に答える