
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 を参照してください。