Last modified date : 2019/01/31

JSON を読み込んでリストアップし、その一覧から選択する事ができます。
Data API や外部の API から取得した JSON の情報を記事に関連付けたりすることができます。

サンプル動画

使い方

$('foo').MTAppListing({
  url: 'https://your-host/your-mt-api.cgi/v1/sites/1/entries',
  data: {
    fields: 'id,title',
    limit: 9999999
  },
  jsontable: {
    header: {
      id: 'ID',
      title: 'タイトル'
    },
    headerOrder: ['id', 'title'],
    itemsRootKey: 'items',
    listingCheckboxType: 'checkbox',
    listingTargetKey: 'id',
    listingTargetEscape: false
  }
});

foo には MTAppListing を適用させたい input:text または textarea のセレクタを設定します。

保存される値

MTAppListing では、一覧で選択した項目の jsontable.listingTargetKey オプションに設定した値が、MTAppListing を適用したフィールドにカンマ区切りで保存されます。

例えば jsontable.listingTargetKey オプションの設定値が id で、ID が 1 から 3 までの記事が選択された場合、元のフィールドには ,1,2,3, と保存されます。最初と最後にもカンマが付きます。

change.MTAppListing イベント

MTAppListing ダイアログで OK をクリックしたとき、MTAppListing を適用しているフィールドで change.MTAppListing を実行されます。

したがって、下記のようにすれば後述するコールバック系のオプションを使わなくても選択時の処理を設定することができます。

$(foo)
    .MTAppListing({
        // MTAppListingのオプション
    })
    .on('change.MTAppListing', function(){
        // MTAppListingダイアログのOKボタンが押され、
        // 選択された項目の値が入力欄に反映されたあとに
        // 実行される処理
    });

オプション

$(foo).MTAppListing({
    "url": null,
    "data": null,
    "dataType": "json",
    "cache": false,
    "dialogTitle": "",
    "l10n": null,
    "cbAfterOpenDialogFirst": null,
    "cbProcessResponse": null,
    "cbAjaxDoneFilterJSONTable": null,
    "cbAjaxDone": null,
    "cbAjaxFail": null,
    "cbAfterCancel": null,
    "cbAfterOK": null,
    "cbAfterSearch": null,
    "cbAfterSearchReset": null,
    "cbAfterOpenDialogLast": null,
    "cbAfterSelectRowUpperTable": null,
    "cbAfterSelectRowLowerTable": null,
    "jsontable": {
        header: null,
        headerOrder: [],
        itemsRootKey: 'items',
        listingCheckboxType: 'checkbox',
        listingTargetKey: 'id',
        listingTargetEscape: false
    }
});

url 必須

Type : String, Default : null

MTAppListing でリストアップする情報の JSON の URL を指定します。

例:Data API を利用してIDが1のブログ記事をリストアップする

url: 'https://your-host/your-mt-api.cgi/v1/sites/1/entries'

data

Type : String, Default : null

url オプションで指定した URL に渡すパラメータをプレーンオブジェクトで指定します。

data: {
  search: 'mtappjquery',
  fields: 'id,title',
  limit: 9999999
}

dataType

Type : String, Default : "json"

url オプションで指定した URL から取得するデータの型を指定します。初期値は 'json' です。
指定できる値の詳細は jQuery のドキュメント を参照してください。

cache

Type : Boolean, Default : false

url オプションで指定した URL から取得するデータの通信結果をキャッシュしたい場合は true を設定します。

指定できる値の詳細は jQuery のドキュメント を参照してください。

dialogTitle

Type : String, Default :

ダイアログウィンドウのタイトルを指定します。何も設定しない場合は「項目を選択」となります。

l10n

Type : Plane Object, Default : null

ダイアログに表示されているボタン名やテキストを変更したい場合に設定します。設定できる項目と初期値は下記の通りです。

l10n: {
  title: '項目を選択',
  search: '検索',
  reset: 'リセット',
  ok: 'OK',
  cancel: 'キャンセル',
  select: '選択',
  selectedItems: '選択された項目',
  returnDialogTop: 'ダイアログのトップへ戻る',
  noItems: '該当するデータがありません',
  ajaxFail: 'データを取得できませんでした'
}

cbAfterOpenDialogFirst v1.8.0

Type : Function, Default : null

MTAppListing ダイアログを開いた直後に呼ばれる関数を設定します。
このオプションに設定した関数には下記の4つの引数が渡されます。

function(cb, $dialog, $field, $button){
  // do something
}
  • cb : {name: 'cbAfterOpenDialog'}
  • $dialog : MTAppListing ダイアログの jQuery オブジェクト
  • $field : MTAppListing を適用させたフィールドの jQuery オブジェクト
  • $button : MTAppListing を開いたボタン( a 要素)の jQuery オブジェクト

cbProcessResponse

Type : Function, Default : null

Ajax でデータの取得に成功した直後に呼ばれる関数を設定します。
このオプションに設定した関数には下記の2つの引数が渡されます。

function(cb, response){
  // do something
}
  • cb : {name: 'cbProcessResponse'}
  • response : Ajax で取得したデータ

cbAjaxDoneFilterJSONTable

Type : Function, Default : null

Ajax でデータの取得に成功し cbProcessResponse コールバックの処理が終わった後に呼ばれる関数を設定します。
このオプションに設定した関数には下記の3つの引数が渡されます。

function(cb, $dialog, response){
  // do something
}
  • cb : {name: 'cbAjaxDoneFilterJSONTable'}
  • $dialog : MTAppListing ダイアログの jQuery オブジェクト
  • response : Ajax で取得したデータ

cbAjaxDone v1.8.0

Type : Function, Default : null

MTAppListing ダイアログを開いて Ajax で JSON の取得に成功した処理の最後に呼ばれる関数を設定します。
このオプションに設定した関数には下記の2つの引数が渡されます。

function(cb, $dialog){
  // do something
}
  • cb : {name: 'cbAjaxDone'}
  • $dialog : MTAppListing ダイアログの jQuery オブジェクト

cbAjaxFail

Type : Function, Default : null

Ajax でデータの取得に失敗した場合に呼ばれる関数を設定します。
このオプションに設定した関数には下記の4つの引数が渡されます。

function(cb, $dialog, jqXHR, status){
  // do something
}
  • cb : {name: 'cbAjaxFail'}
  • $dialog : MTAppListing ダイアログの jQuery オブジェクト
  • jqXHR : jqXHR オブジェクト
  • status : ステータスのテキスト

cbAfterCancel

Type : Function, Default : null

ダイアログのキャンセルボタンを押したときに呼ばれる関数を設定します。
このオプションに設定した関数には下記の2つの引数が渡されます。

function(cb, $dialog){
  // do something
}
  • cb : {name: 'cbAfterCancel'}
  • $dialog : MTAppListing ダイアログの jQuery オブジェクト

cbAfterOK

Type : Function, Default : null

ダイアログの OK ボタンを押したときに呼ばれる関数を設定します。
このオプションに設定した関数には下記の2つの引数が渡されます。

function(cb, $dialog){
  // do something
}
  • cb : {name: 'cbAfterOK'}
  • $dialog : MTAppListing ダイアログの jQuery オブジェクト

cbAfterSearch

Type : Function, Default : null

ダイアログのテキスト検索を実行したときに呼ばれる関数を設定します。
このオプションに設定した関数には下記の2つの引数が渡されます。

function(cb, $dialog){
  // do something
}
  • cb : {name: 'cbAfterSearch'}
  • $dialog : MTAppListing ダイアログの jQuery オブジェクト

cbAfterSearchReset

Type : Function, Default : null

ダイアログのテキスト検索をリセットしたときに呼ばれる関数を設定します。
このオプションに設定した関数には下記の2つの引数が渡されます。

function(cb, $dialog){
  // do something
}
  • cb : {name: 'cbAfterSearchReset'}
  • $dialog : MTAppListing ダイアログの jQuery オブジェクト

cbAfterOpenDialogLast v1.8.0

Type : Function, Default : null

MTAppListing ダイアログを開いたクリックイベントの最後に呼ばれる関数を設定します。
このオプションに設定した関数には下記の3つの引数が渡されます。

function(cb, $dialog, $field){
  // do something
}
  • cb : {name: 'cbAfterOpenDialog'}
  • $dialog : MTAppListing ダイアログの jQuery オブジェクト
  • $field : MTAppListing を適用させたフィールドの jQuery オブジェクト

cbAfterSelectRowUpperTable v1.8.0

Type : Function, Default : null

上段の選択済みの一覧で、チェックボックス等で行を選択した後に呼ばれる関数を設定します。
このオプションに設定した関数には下記の3つの引数が渡されます。

function(cb, $tr, checked){
  // do something
}
  • cb : {name: 'cbAfterSelectRow'}
  • $tr : 選択した行の tr の jQuery オブジェクト
  • checked : 選択したチェックボックス等のチェック状態の真偽値

このオプションで false を返せば、デフォルトの挙動がキャンセルされます。

cbAfterSelectRowLowerTable v1.8.0

Type : Function, Default : null

下段の一覧で、チェックボックス等で行を選択した後に呼ばれる関数を設定します。
このオプションに設定した関数には下記の3つの引数が渡されます。

function(cb, $tr, checked){
  // do something
}
  • cb : {name: 'cbAfterSelectRow'}
  • $tr : 選択した行の tr の jQuery オブジェクト
  • checked : 選択したチェックボックス等のチェック状態の真偽値

このオプションで false を返せば、デフォルトの挙動がキャンセルされます。

jsontable 必須

Type : Plane Object, Default : { header: null, headerOrder: [], itemsRootKey: 'items', listingCheckboxType: 'checkbox', listingTargetKey: 'id', listingTargetEscape: false }

MTAppListing は Ajax 通信で取得した JSON データを MTAppJSONTable を利用して利用して一覧表示しています。 この内部的に使われている MTAppJSONTable の動作について jsontable オプションにまとめて設定します。

MTAppJSONTable では多くのオプション設定が可能ですが、それらの中で MTAppListing で設定できるオプションは以下の通りです。

jsontable: {
  header: null,// (必須)
  headerOrder: [], // (必須) Array: Order of table header
  itemsRootKey: 'items', // (必須) JSON のルートキーを変更することができます。デフォルトでは items です。
  listingCheckboxType: 'checkbox', // 'checkbox'(初期値)または 'radio' を指定します。'radio' を設定すると、MTAppLisiting で選択できる項目が1つのみになります。
  listingTargetKey: 'id', // (必須) このオプションにセットしたキーの値が、MTAppListing で保存される値となります。デフォルトは 'id' です。
  listingTargetEscape: false // (必須) このオプションに true を設定すると listingTargetKey で設定したキーのセルの data-value 属性の値がURLエンコードされます。
}

MTAppJSONTable のオプションについては $(foo).MTAppJSONTable を参照してください。