第5章 $fh.forms

サポートされるプラットフォーム

  • JavaScript SDK

    • Cordova
    • Web Apps

詳細なバージョン情報については、Supported Configurations (英語) を参照してください。

5.1. SDK の構造

5.1.1. コア

コアの構造

5.2. $fh.forms.init

$fh.forms.init(params, callback);

5.2.1. 詳細

appForm SDK を初期化します。現時点では params は使用されないので、空の JSON オブジェクトとして渡します。初期化が完了すると、callback が呼び出されます。

5.2.2. 例

var params = {};
$fh.forms.init(params, function(err) {
  if (err) console.error(err);

  // Forms initialised ok if no error
});

5.3. $fh.forms.getForms

$fh.forms.getForms(params, callback);

5.3.1. 詳細

フォームモデルのアレイを取得します。'fromRemote' パラメーターが true に設定されている場合はサーバーから、false に設定されている場合はローカルストレージから読み込むことができます。

5.3.2. 例

var params = {
 "fromRemote": true
};

$fh.forms.getForms(params, function(err, forms){
  if(err) console.error(err);

  // forms is an instance of $fh.forms.models.forms
  // See Models section for details of its API
  // for example, getFormsList() returns an array of Forms models

  var formsList = forms.getFormsList();
  console.log(formsList);
});

5.4. $fh.forms.getForm

$fh.forms.getForm(params, callback);

5.4.1. 詳細

指定された ID に基づいてフォームを取得します。

5.4.2. 例

var params = {
 "fromRemote" : true,
 "formId" : "1234"
};

$fh.forms.getForm(params, function(err, form){
if(err) console.error(err);

var formName = form.getName();
var formDesc = form.getDescription();
console.log('Form Name: ', formName, 'Form Desc: ', formDesc);
});

5.5. $fh.forms.getTheme

$fh.forms.getTheme(params, callback);

5.5.1. 詳細

テーマを取得します。'css' パラメーターが true に設定されている場合は、css が返されます。false に設定されている場合は、Theme オブジェクトが返されます。

5.5.2. 例

var params = {
 "css" : true //if set to true, returns css.
};

$fh.forms.getTheme(params, function(err, theme){
if(err) console.error(err);

console.log(theme);
});

5.6. $fh.forms.getSubmissions

$fh.forms.getSubmissions(options, callback);

5.6.1. 詳細

正常に完了した提出の一覧を返します。

5.6.2. 例

var params = {};

$fh.forms.getSubmissions(params, function (err, submissions) {
  if (err) console.error(err);

  console.log('Array of completed submissions', submissions);
});

5.7. $fh.forms.downloadSubmission

5.7.1. 詳細

提出のダウンロードを開始します。

この API には 2 つの形式があります。

5.7.2. Example: Callback Passed

この例では、$fh.forms.downloadSubmission 関数へのコールバックを渡すと、全ファイルを含む提出のダウンロードが完了した時点でのみ、コールバックが呼び出されるようになります。

var params = {
  'submissionId': "<< ID of the submission stored in the cloud >>"
};

//Downloading the submission.
//If the submission has already been downloaded to local memory, it will be loaded from there instead of downloading from the cloud.
$fh.forms.downloadSubmission(params, function(err, downloadedSubmission){
  if(err){
    return console.error(err);
  }

  //The form that the submission was submitted against is sent back with the submission from the cloud.
  var formSubmittedAgainst = downloadedSubmission.getFormSubmittedAgainst();
  var formId = downloadedSubmission.getFormId();
});

5.7.3. 例: コールバックが渡されない場合

この例では、コールバックを渡さないため、提出のダウンロードがキューに登録されます。その後、グローバルイベントリスナーによってダウンロードの進捗が監視されます。

var params = {
  'submissionId': "<< ID of the submission stored in the cloud >>"
};

//A global event listener for all submission 'downloaded' events
$fh.forms.on('submission:downloaded', function(remoteSubmissionId){
  //The form that the submission was submitted against is sent back with the submission from the cloud.
  var formSubmittedAgainst = this.getFormSubmittedAgainst();
  var formId = this.getFormId();
});

//A global event listener for all submission 'error' events
$fh.forms.on('submission:error', function(errorMessage){
  var localId = this.getLocalId();

  console.error(errorMessage + " for submission with local ID " + localId);
});

//Downloading the submission.
//If the submission has already been downloaded to local memory, it will be loaded from there instead of downloading from the cloud.
$fh.forms.downloadSubmission(params);

5.8. $fh.forms.log

$fh.forms.log.e(message); //logs an error
$fh.forms.log.w(message); //logs a warning
$fh.forms.log.d(message); //logs a debug message
$fh.forms.log.l(message); //logs success

5.8.1. 詳細

以下の 4 タイプのログがあります。

  • エラー: $fh.forms.log.e('error');
  • 警告: $fh.forms.log.w('warning');
  • デバッグ: $fh.forms.log.d('debug');
  • ログ: $fh.forms.log.l('successful log');

5.8.2. 例

var params = {
 'fromRemote' : true
};

$fh.forms.getForms(params, function(err, formsList){
if(error) $fh.forms.log.e(err); //log error

console.log('Lit of forms: ', formsList.getFormsList());
  $fh.forms.log.l('Forms loaded successfully'); //log successfuly loading of forms
});

5.9. $fh.forms.getLogs

$fh.forms.log.getLogs();

5.9.1. 詳細

ログ情報を返します。

$fh.forms.getSubmissions({}, function (err, submissions) {
  if (err) {
    console.log('Error loading submissions', err);
  } else {
    $fh.forms.log.l('Array loaded successfully') //Recorded log
    console.log('Array of completed submissions', submissions);


    var logRecords = $fh.forms.log.getLogs();
    console.log('Log Record', logRecords); //Prints out an array of all logs
  }
});

5.10. グローバルイベント

5.10.1. 詳細

$fh.forms API は、$fh.forms API で発生する全イベントにグローバルイベントエミッターを提供します。

イベント名は、model:eventname という形式になります。例えば、Submission モデルは submitted イベントを生成し、グローバルイベント名は submission:submitted となります。このイベントは、提出が提出されてアップロードされると起動します。

5.10.2. $fh.forms.on

$fh.forms.on("submission:progress", function(progressJSON) {
    //See Submission Model Progress For progressJSON Definition
});

5.10.3. $fh.forms.once

$fh.forms.once("submission:submitted", function(submissionId) {
    //Note: this refers to the individual submission that emitted the submitted event.
    assert.equal(this.getRemoteSubmissionId(), submissionId);
});

5.11. $fh.forms.models.forms

5.11.1. 詳細

これは、$fh.forms.getForms() が返すフォームモデルの一覧です。以下の関数は、返されるフォームモデルのアレイで呼び出すことができます。

5.11.2. $fh.forms.models.forms.clearAllForms

$fh.forms.models.forms.clearAllForms(cb);

5.11.2.1. 詳細

すべてのローカルのフォームをクリアします。

注記

この関数は、現在実装中です。

5.11.2.2. 例

formsList.clearAllForms(function(err) {
    if (err) {
        console.log('Error deleting forms', err);
    } else {
        console.log('Reloading forms list', formsList.getFormsList()); //will return empty list
    }
});

5.11.3. $fh.forms.models.forms.isFormUpdated

$fh.forms.models.forms.isFormUpdated(formModel);

5.11.3.1. 詳細

特定のフォームモデルが最新のものか確認します。

5.11.3.2. 例

var model = new $fh.forms.models.Form();
var updated = $fh.forms.models.forms.isFormUpdated(model);
console.log(updated);

5.11.4. $fh.forms.models.forms.getFormMetaById

$fh.forms.models.forms.getFormMetaById(formId)

5.11.4.1. 詳細

formId によるメタオブジェクトを取得します。

5.11.4.2. 例

var exampleFormId = '1234';

var params = {
 'fromRemote' : true
};

$fh.forms.getForms(params, function(err, formsList){
if(err) console.error(err);

var formDetails = formsList.getFormMetaById(exampleFormId); //gets meta object from forms list based on id
console.log(formDetails);
});

5.11.5. $fh.forms.models.forms.refresh

$fh.forms.models.forms.refresh(fromRemote, cb);

5.11.5.1. 詳細

ローカルまたはリモートからフォーム一覧モデルを読み取ります。モデルがそれまでに存在していない場合は、自動的にローカルストレージに保存します。

5.11.5.2. 例

formsList.refresh(true, function (err) { //if fromRemote == true, forms are read from server.
// If false, reads from local storage
  if (err) {
    console.log('Error refreshing form', err);
  } else {
    console.log('Refreshed form list', formsList); //prints newly refrehsed list
  }
});

5.11.6. $fh.forms.models.forms.clearLocal

$fh.forms.models.forms.clearLocal(cb);

5.11.6.1. 詳細

モデルをローカルストレージから削除しますが、RAM からは削除しません。

5.11.6.2. 例

formsList.clearLocal(function (err) {
  if (err) {
    console.log('Error occurred clearing forms from local storage', err);
  } else {
    console.log('Reloading forms', formsList.getFormsList());
  }
});

5.11.7. $fh.forms.models.forms.getFormsList

$fh.forms.models.forms.getFormsList();

5.11.7.1. 詳細

フォームのメタデータを含むアレイを取得します。

5.11.7.2. 例

var params = {
  'fromRemote': true
};

$fh.forms.getForms(params, function (err, formsList) {
  if (err) console.error(err);

  var forms = formsList.getFormsList();
  console.log(forms);
});

5.11.8. $fh.forms.models.forms.size

$fh.forms.models.forms.size();

5.11.8.1. 詳細

保存されているフォームの数を取得します。

5.11.8.2. 例

var params = {
  "fromRemote": true
};

$fh.forms.getForms(params, function (err, formsList) {
  if (err) console.error.(err);

  var numOfForms = formsList.size();
  console.log(numOfForms);
});

5.12. $fh.forms.models.Form

5.12.1. 詳細

これはフォームモデルです。forms.getFormsList() を呼び出すとフォームモデル一覧が返されます。

5.12.2. $fh.forms.models.Form.constructor()

$fh.forms.models.Form(params,cb);

5.12.2.1. 詳細

フォームオブジェクトを構築します。フォームの定義が読み込まれると、コールバックします。

5.12.2.2. 例

var params = {
  "formId": ”1234”,
  "fromRemote": true
};

$fh.forms.getForm(params, function (err, form) {
  if (err) console.error(err);

  // new form model
  console.log(form);
});

5.12.3. $fh.forms.models.Form.getLastUpdate()

form.getLastUpdate();

5.12.3.1. 詳細

サーバーの最新のタイムスタンプ更新を取得します。

5.12.3.2. 例

var params = {
  "formId": ”1234”,
  "fromRemote": true
};

$fh.forms.getForm(params, function (err, form) {
  if (err) console.error(err);

  var lastUpdate = form.getLastUpdate();
  console.log(lastUpdate);
});

5.12.4. $fh.forms.models.Form.getPageModelList()

form.getPageModelList();

5.12.4.1. 詳細

このフォームに関連付けられているページモデルのアレイを取得します。

5.12.4.2. 例

var params = {
  "formId": "1234",
  "fromRemote": true
};

$fh.forms.getForm(params, function (err, form) {
  if (err) console.error(err);

  var pageList = form.getPageModelList();
  console.log('Array of pages associated with this form', pageList);
});

5.12.4.3. fh.forms.models.Form.getRuleEngine()

form.getRuleEngine();

5.12.4.4. 詳細

form() にアタッチされているルールエンジンを取得します。

5.12.4.5. 例

var params = {
  "formId": 1234,
  "fromRemote": true
};

$fh.forms.getForm(params, function (err, form) {
  if (err) console.error(err);

  var ruleEngine = form.getRuleEngine();
  console.log(ruleEngine);
});

5.12.5. $fh.forms.models.Form.getName()

form.getName();

5.12.5.1. 詳細

フォーム名を取得します。

5.12.5.2. 例

var params = {
  "formId": "1234",
  "fromRemote": true
};

$fh.forms.getForm(params, function (err, form) {
  if (err) console.error(err);

  var formName = form.getName();
  console.log(formName);
});

5.12.6. $fh.forms.models.Form.getDescription()

form.getDescription();

5.12.6.1. 詳細

フォームの説明を取得します。

5.12.6.2. 例

var params = {
  "formId": "1234",
  "fromRemote": true
};

$fh.forms.getForm(params, function (err, form) {
  if (err) console.error(err);

  var formDescription = form.getDescription();
  console.log(formDescription);
});

5.12.7. $fh.forms.models.Form.getFormId()

form.getFormId();

5.12.7.1. 詳細

フォームの ID を取得します。

5.12.7.2. 例

var params = {
  "formId": "1234",
  "fromRemote": true
};

$fh.forms.getForm(params, function (err, form) {
  if (err) console.error(err);

  var formId = form.getId();
  console.log(formId);
});

5.12.8. $fh.forms.models.Form.getFieldModelById()

form.getFieldModelById(fieldId);

5.12.8.1. 詳細

フォーム ID ごとのフィールドモデルを取得します。

5.12.8.2. 例

var params = {
  "formId": "1234",
  "fromRemote": true,
  "fieldId": "123"
};

$fh.forms.getForm(params, function (err, form) {
  if (err) console.error(err);

  var fieldModel = form.getFieldModelById(fieldId);
  console.log(fieldModel);
});

5.12.9. $fh.forms.models.Form.newSubmission()

form.newSubmission();

5.12.9.1. 詳細

このフォームの新規提出モデルを初期化します。

5.12.9.2. 例

form.newSubmission(); //creates a new submission

5.12.10. $fh.forms.models.Form.removeFromCache()

form.removeFromCache();

5.12.10.1. 詳細

メモリーキャッシュ (singleton) から現行のフォームモデルを削除します。

5.12.10.2. 例

form.removeFromCache();

5.12.11. $fh.forms.models.Form.refresh()

form.refresh([fromRemote], cb);

5.12.11.1. 詳細

ローカルまたはリモートからフォームモデルを読み取ります。モデルがそれまでに存在していない場合は、自動的にローカルストレージに保存します。

5.12.11.2. 例

form.refresh(true, function (err) {
  if (err) {
    console.log('Error refreshing', err);
  } else {
    console.log('Refreshed page');
    //refresh successful
  }
});

5.12.12. $fh.forms.models.Form.clearLocal()

form.clearLocal(cb)

5.12.12.1. 詳細

ローカルに保存されたフォームを削除します。

5.12.12.2. 例

foundForm.clearLocal(function (err) {
  if (err) {
   console.log('Error removing form');
  } else {
   //form cleared successfully
  }
});

5.13. $fh.forms.models.Page

5.13.1. 詳細

以下はページモデルで呼び出し可能な関数です。

5.13.2. $fh.forms.models.Page.setVisible()

page.setVisible(isVisible);

5.13.2.1. 詳細

このページモデルを表示するかどうかを設定します。'isVisible' のブール値が true または false に設定されているかによって ‘visible’ または ‘hidden’ を生成します。

5.13.2.2. 例

page.setVisible(true) //Boolean value to determine whether page is set to visible or not.

5.13.3. $fh.forms.models.Page.getName()

page.getName();

5.13.3.1. 詳細

ページ名を取得します。

5.13.3.2. 例

 var pageList = foundForm.getPageModelList(); //Iterates through all pages of a returned form and prints out page names
 for (var page = 0; page < pageList.length; page++) {
   var currentPage = pageList[page];
   console.log('Name of current page is: ', currentPage.getName());
 }

5.13.4. $fh.forms.models.Page.getDescription()

page.getDescription();

5.13.4.1. 詳細

ページの説明を取得します。

5.13.4.2. 例

page.getDescription();

5.13.5. $fh.forms.models.Page.getFieldModelList()

page.getFieldModelList();

5.13.5.1. 詳細

この ページに関連付けられているフィールドモデルを取得します。

5.13.5.2. 例

var pageList = form.getPageModelList(); //Retrieves all pages of a form

for (var page = 0; page < pageList.length; page++) { //Iterates through all pages
  var currentPage = pageList[page];
  var pageFields = currentPage.getFieldModelList(); //Retrieves all fields on a page
  console.log(pageFields); //Lists all fields
}

5.13.6. $fh.forms.models.Page.getFieldModelById()

page.getFieldModelById(fieldId);

5.13.6.1. 詳細

特定のフィールドモデルを取得します。このページにフィールドモデルがある必要はありません。Form.getFieldModelById(fieldId) のエイリアス。

5.13.6.2. 例

var fieldId = '1234';

page.getFieldModelById(fieldId); //Returns Field model

5.14. $fh.forms.models.Field

5.14.1. 詳細

ページモデル上で getFieldModelList() 関数を呼び出すと、フィールドオブジェクト一覧が返されます。

pageOne.getFieldModelList();

以下はフィールドモデルの各属性にアクセスするために呼び出しが可能な関数です。

5.14.2. $fh.forms.models.Field.isRequired()

currentField.isRequired();

5.14.2.1. 詳細

フィールドが必須の場合、true が返されます。

5.14.2.2. 例

currentField.isRequired(); //will return true if the field is required

5.14.3. $fh.forms.models.Field.isRepeating()

field.isRepeating();

5.14.3.1. 詳細

フィールドが繰り返しフィールドの場合は true が、繰り返しではない場合は false が返されます。

5.14.3.2. 例

field.isRepeating();

5.14.4. $fh.forms.models.Field.getType()

field.getType();

5.14.4.1. 詳細

フィールドのタイプを返します。

5.14.4.2. 例

field.getType();

5.14.5. $fh.forms.models.Field.getName()

field.getName();

5.14.5.1. 詳細

フィールド名を返します

console.log(field.getName()); //pritns name of field

5.14.6. $fh.forms.models.Field.getCode()

field.getCode();

5.14.6.1. 詳細

存在する場合は、フィールドの Field Code を返します。Studio でフィールドに Field Code が割り当てられていない場合は、null が返されます。

5.14.7. $fh.forms.models.Field.getHelpText()

field.getHelpText();

5.14.7.1. 詳細

フィールド指示のテキストが返されます。

5.14.7.2. 例

field.getHelpText();

5.14.8. $fh.forms.models.Field.validate(inputValue)

field.validate(inputValue, callback(err,res))

5.14.8.1. 詳細

検証が成功すると inputValue オブジェクトが、失敗するとエラーメッセージが返されます。

5.14.8.2. 例

var field = form.getFieldModelById(fieldId);
var inputValue = elem.value; //Value of an element such as text field, numberfield etc

field.validate(inputValue, function (err, res) {
  if (err) {
    console.log('Validation Error', err);
  } else {
    console.log('Validation Successful', res);
  }
});

5.14.9. $fh.forms.models.Field.getRules()

field.getRules();

5.14.9.1. 詳細

フィールドの関連付けられている rule オブジェクトのアレイが返されます。

5.14.9.2. 例

field.getRules();

5.14.10. $fh.forms.models.Field.getCheckboxOptions()

field.getCheckboxOptions();

5.14.10.1. 詳細

チェックボックス選択肢のアレイが返されます。

注記

チェックボックスフィールドでのみ有効です。

5.14.10.2. 例

if (field.getType() == 'checkboxes') {
  console.log('Checkbox options: ', field.getCheckBoxOptions());
}

5.14.11. $fh.forms.models.Field.getRadioOption()

field.getRadioOption();

5.14.11.1. 詳細

ラジオボックスのオプションを返します。

注記

ラジオボタンフィールドでのみ有効です。

5.14.11.2. 例

if (field.getType() == 'radio') {
  console.log('Radio options: ', field.getRadioOption());
}

5.15. $fh.forms.models.submissions

5.15.1. $fh.forms.models.submissions.getSubmissions()

$fh.forms.models.submissions.getSubmissions();

5.15.1.1. 詳細

提出メタデータ一覧を返します。

5.15.1.2. 例

submissions.getSubmissions();

5.15.2. $fh.forms.models.submissions.getSubmissionMetaList()

submissions.getSubmissionMetaList();

5.15.2.1. 詳細

提出メタデータ一覧を返します。

5.15.2.2. 例

submissions.getSubmissionMetaList();

5.15.3. $fh.forms.models.submissions.findByFormId(formId)

submissions.findByFormId(formId);

5.15.3.1. 詳細

指定されたフォームのメタデータを取得します。

5.15.3.2. 例

var formId = '53146bf95a133733451cd35b';

$fh.forms.getSubmissions({}, function (err, submissions) {
  if (err) {
    console.log('Error loading submissions', err);
  } else {
    console.log('Array of completed submissions', submissions);
    var foundSubmissions = submissions.findByFormId(formId);
    console.log('Array of submissions for specified form: ', foundSubmissions);

  }
});

5.15.4. $fh.forms.models.submissions.clear(cb)

sumissions.clear(function(err))

5.15.4.1. 詳細

このモデルおよびローカルストレージから提出メタデータ一覧をクリアします。

5.15.4.2. 例

$fh.forms.getSubmissions({}, function(err, submissions) {
    if (err) {
        console.log('Error loading submissions', err);
    } else {
        console.log('Array of completed submissions', submissions);
        submissions.clear(function(err) {
            if (err) console.err(err);
        });
    }
});

5.15.5. $fh.forms.models.submissions.getDrafts()

submissions.getDrafts()

5.15.5.1. 詳細

提出の drafts() を返します。

5.15.5.2. 例

submissions.getDrafts();

5.15.6. $fh.forms.models.submissions.getPending()

submissions.getPending()

5.15.6.1. 詳細

保留中の提出を返します。

5.15.6.2. 例

submissions.getPending();

5.15.7. $fh.forms.models.submissions.getSubmitted()

submissions.getSubmitted()

5.15.7.1. 詳細

提出済みの提出を返します。

5.15.7.2. 例

submissions.getSubmitted();

5.15.8. $fh.forms.models.submissions.getError()

submissions.getError()

5.15.8.1. 詳細

エラーのあった提出を返します。

5.15.8.2. 例

submissions.getError();

5.15.9. $fh.forms.models.submissions.getInProgress()

submissions.getInProgress()

5.15.9.1. 詳細

現在進行中の提出を返します。

5.15.9.2. 例

submissions.getInProgress();

5.15.10. $fh.forms.models.submissions.getSubmissionByMeta(meta,cb)

submissions.getSubmissionByMeta(meta, function(err, res))

5.15.10.1. 詳細

提出一覧モデルから提出メタデータごとの提出モデルを取得します。

5.15.10.2. 例

var params = submissions.getSubmitted()[0];

submissions.getSubmissionByMeta(params, function (err, submission){
  if(err) console.error(err);

  console.log('Returned Submission',submission);
});

5.15.11. $fh.forms.models.submissions.getSubmissionByLocalId(localId,cb)

submissions.getSubmissionByLocalId(localId, function(err, submissionModel){})

5.15.11.1. 詳細

提出の Local ID ごとの提出モデルを取得します。

5.15.11.2. 例

var localId = "sublocalid1";

submissions.getSubmissionByLocalId(localId, function (err, submission){
  if(err) console.error(err);

  console.log('Returned Submission',submission);
});

5.15.12. $fh.forms.models.submissions.getSubmissionByRemoteId(remoteId,cb)

submissions.getSubmissionByRemoteId(remoteId, function(err, submissionModel){})

5.15.12.1. 詳細

提出の Remote ID ごとの提出モデルを取得します。

5.15.12.2. 例

var remoteId = "subremoteid1";

submissions.getSubmissionByRemoteId(remoteId, function (err, submission){
  if(err) console.error(err);

  console.log('Returned Submission',submission);
}

5.16. $fh.forms.models.Submission

5.16.1. 詳細

提出モデルにはユーザー入力と関連するメタ情報が含まれています。提出一覧で .getSubmissions() 関数を呼び出すと、提出モデル一覧が返されます。

submissions.getSubmissions(); //double check

以下は提出モデルで呼び出し可能な関数です。

5.16.2. $fh.forms.models.Submission.saveDraft(cb)

submission.saveDraft(cb);

5.16.2.1. 詳細

現行の提出をドラフト / ローカルストレージに保存します。

5.16.2.2. 例

currentSubmission.saveDraft(function (err) {
  if (err) {
    console.log(err);
  } else {
    console.log('Draft saved to local storage');
  }
});

5.16.3. $fh.forms.models.Submission.submit()

submission.submit(cb)

5.16.3.1. 詳細

現行の提出を提出します。アップロードのタスクを作成します。

5.16.3.2. 例

currentSubmission.submit(function (err) {
  console.log(!err);
  if (err) {
    console.log(err);
  }
});

currentSubmission.on("submit", function () {
 /* Upload the submission. */
  currentSubmission.upload(function (err) {
    if (err) {
      console.log(err);
    }
  });
});

5.16.4. $fh.forms.models.Submission.getStatus()

submission.getStatus();

5.16.4.1. 詳細

提出の現在のステータスを返します。

5.16.4.2. 例

submission.getStatus();

5.16.5. $fh.forms.models.Submission.addComment()

submission.addComment(message, [username]);

5.16.5.1. 詳細

ユーザーが現行提出にコメントを追加できるようにします。

5.16.5.2. 例

submission.addComment('test message', 'test user');

5.16.6. $fh.forms.models.Submission.getComments()

submission.getComments()

5.16.6.1. 詳細

現行提出についてのコメントのアレイを返します。

5.16.6.2. 例

submission.addComment('test message', 'test user');

console.log(submission.getComments()); //will return an array containing the above comment

5.16.7. $fh.forms.models.Submission.removeComment(timeStamp)

submission.removeComment(timeStamp);

5.16.7.1. 詳細

タイムスタンプで現行提出からコメントを削除します。

5.16.7.2. 例

submission.removeComment(timeStamp);

5.16.8. $fh.forms.models.Submission.addInputValue(params,cb)

$fh.forms.models.Submission(params, callback(err, res))

5.16.8.1. 詳細

フィールドの提出に値を追加します。これは入力の値を検証し、これに失敗すると文字列としてエラーメッセージが返されます。transaction モードの場合は、提出にユーザー入力の値を即座に追加せず、temp 変数が追加されます。transaction モードでない場合は、提出に即座に入力値が追加されます。

5.16.8.2. 例

var params = {
    "fieldId": '53146c1f04e694ec1ad715b6',
    "value": 'New example text'
};
currentSubmission.addInputValue(params, function(err, res) {
    if (err) console.error(err);

    console.log('Newly added input: ', res);
});

5.16.9. $fh.forms.models.Submission.startInputTransaction()

submission.startInputTransaction()

5.16.9.1. 詳細

ユーザー入力の処理を開始します。既に開始している場合は、一時入力を中断します。

5.16.9.2. 例

submission.startInputTransaction();

5.16.10. $fh.forms.models.Submission.endInputTransaction(isSucceed)

$fh.forms.models.Submission.endInputTransaction(isSucceed) //'isSucceed' is a boolean value.

5.16.10.1. 詳細

処理を終了します。処理が成功すると、一時入力をアップロードする提出にコピーします。失敗すると、一時入力を破棄します。'isSucceed' はブール値です。'true' が関数に渡されると、処理が完了してユーザー入力が一時ストレージから提出に移動されます。'false' が渡される場合は、一時的な値が破棄され、処理が完了されません。

5.16.10.2. 例

submission.startInputTransaction();

var params = {
    "fieldId": '53146c1f04e694ec1ad715b6',
    "value": 'Example text'
};

submission.addInputValue(params, function(err, res) {
    if (err) {
        console.log('Error adding input', err);
        submission.endInputTransaction(false); //Transaction failed. New values are not added to submission.
    } else {
        console.log('Updated value: ', res);
        submission.endInputTransaction(true); //End input transaction. New value is added to submission.
    }
});

5.16.11. $fh.forms.models.Submission.reset()

submission.reset();

5.16.11.1. 詳細

この提出からすべてのユーザー入力を削除します。

5.16.11.2. 例

submission.reset();

5.16.12. $fh.forms.models.Submission.getForm(cb)

submission.getForm(function (err, form))

5.16.12.1. 詳細

提出に関連するフォームオブジェクトを返します。

5.16.12.2. 例

submission.getForm(function(err, form) {
    if (err) console.error(err);

    console.log('Form associated with submission: ', form);
});

5.16.13. $fh.forms.Submission.removeFieldValue(fieldId, [index])

submission.removeFieldValue(fieldId, [index]) //Index is only specified when referencing repeated fields

5.16.13.1. 詳細

ID に基づいて特定フィールドから値を削除します。

5.16.13.2. 例

var exampleFieldId = '1234';

submission.removeFieldValue(exampleFieldId);

5.16.14. $fh.forms.Submission.getInputValueByFieldId(field,cb)

submission.getInputValueByFieldId(field, function(err, res))

5.16.14.1. 詳細

フィールドに関連する入力値を取得します。

var fieldId = '1234';

currentSubmission.getInputValueByFieldId(fieldId, function(err, res) {
    if (err) console.error(err);

    console.log('Field value: ', res);
});

5.16.15. 提出のイベント

提出 モデルは、提出プロセスを移動する際にイベントを生成します。イベント起動時に関数が実行されると、この オブジェクトは常に、イベントを生成した 提出 オブジェクトを参照します。

5.16.15.1. inprogress: The Submission Is In The Process Of Uploading.

submission.on('inprogress', function(uploadTask) {
    var self = this;
    uploadTask.submissionModel(function(err, submissionModel) {
        //The 'this' parameter in the event refers the submission model that emitted the event.
        assert.strictEqual(self, submissionModel);
    });
});

5.16.15.2. error: There Was An Error Uploading The Submission.

submission.on('error', function(errorMessage) {
    console.error(errorMessage);
    assert.equal(errorMessage, this.getErrorMessage);
});

5.16.15.3. savedraft: The Submission Was Saved As A Draft

submission.on('savedraft', function() {
    //This is the local ID of the submission that emitted the 'savedraft' event.
    assert.isString(this.getLocalId());
});

5.16.15.4. validationerror: There Was A Validation Error When Making A Submission.

このエラーはローカルでのみ生成されます。これはサーバー側の検証エラーではありません。

submission.on('validationerror', function(validationObject) {
    //This is the local ID of the submission that emitted the 'savedraft' event.
    assert.isString(false, validationObject.valid);
});

検証オブジェクト

{
    valid: < true / false > ,
    < fieldid1 > : {
        valid: < true / false > ,
        errorMessages: [
            "Validation Error Message 1",
            "Validation Error Message 2"
        ]
    },
    ....,
    < fieldidN > : {
        valid: < true / false > ,
        errorMessages: [
            "Validation Error Message 1",
            "Validation Error Message 2"
        ]
    }
}

5.16.15.5. submit: The Submission Is Valid And Can Now Be Uploaded.

提出はローカル検証をパスしました。クラウドにアップロードする準備ができました。

submission.on('submit', function() {
    //Valid Submission, it can be uploaded now or at any other time
    this.upload(function(err, uploadTask) {
            ...
    });
});

5.16.15.6. submitted: The Submission Is Valid And Has Completed Uploading All Data.

submission.on('submitted', function(remoteSubmissionId) {
    assert.equal(remoteSubmissionId, this.getRemoteSubmissionId());
});

5.16.15.7. queued: The Submission JSON Definition Has Been Uploaded. Proceeding To Upload Any Files.

この時点で リモート の提出 ID がクラウド側に割り当てられています。これでクライアントとクラウドの両方の側で提出が有効と認識されます。

submission.on('queued', function(remoteSubmissionId) {
    assert.equal(remoteSubmissionId, this.getRemoteSubmissionId());
});

5.16.15.8. progress: The Progress For A Submission Has Been Incremented.

submission.on('progress', function(progressJSON) {
    //The Current Progress Of The Submission
});
5.16.15.8.1. progressJSON
{
    'formJSON': false, //Boolean specifying if the submission JSON has been uploaded.
    'currentFileIndex': 0,
    'totalFiles': 3,
    'totalSize': 54321, //Size in Bytes of the entire submission
    'uploaded': 12345, //Size, in Bytes already uploaded
    'retryAttempts': 1, //Number of times the submission has been tried.
    'submissionTransferType': < upload / download > , //Is the submission being uploaded or downloaded.
    'submissionRemoteId': "remoteSubmissionID1234", //The remote submission ID if it is available.
    'submissionLocalId': "localSubmissionID1234" //The local submission ID
}

5.16.15.9. downloaded: The Submission Has Completed Downloading (Only Used When Downloading Submissions.)

提出がモバイルクライアントデバイスにダウンロードされる際に、全ファイルが含まれます。

submission.on('downloaded', function(remoteSubmissionId) {
    assert.equal(remoteSubmissionId, this.getRemoteSubmissionId());
});