現在、アプリ一覧画面に検索用の入力スペースとボタンを配置し、スペースに入力した検索用コードに該当するレコードのみを表示するカスタマイズを作っています。
PC版のアプリについては上記の通りに動作するカスタマイズを実装できましたが、モバイル版のアプリについて、検索用コードに該当するレコードでの絞り込みがうまくできません。
kintoneヘルプにはモバイル版でできないこととして、レコードの絞り込み条件を指定できないとあり、もしできないのであればスマホやタブレットからPC版を利用する方向で考えていますが、カスタマイズを行うことでモバイル版で絞り込みが可能ならご教授いただきたいです。
以下、実装中のコードを記載させていただきます。
//検索したいフィールドの設定値
const FIELD_CODE = ‘検索コード’;
//レコード一覧表示のイベントハンドラー
(function () {
‘use strict’;
kintone.events.on(“mobile.app.record.index.show”, function (event) {
//GET引数に格納された直前の検索キーワードを取得して再表示
var result = {};
//クエリから、URL固定部分(?query=)を無視して取り出す
var query = window.location.search.substring(7);
//フィールドコード名と検索キーワードに分割する
for(var i = 0;i < query.length;i++){
var element = query[i].split(‘like’);
var param_field_code = encodeURIComponent(element[0]);
var param_search_word = encodeURIComponent(element[1]);
//空白スペースを取り除いて、配列に格納
result[param_field_code.replace(/^\s+|\s+$/g, “”)] = param_search_word.replace(/^[\s|"]+|[\s|"]+$/g, “”);
}
//検索キーワード
var search_word = document.createElement(‘input’);
search_word.type = ‘text’;
//検索ボタン
var search_button = document.createElement(‘input’);
search_button.type = ‘submit’;
search_button.value = ‘検索’;
search_button.onclick = function () {
keyword_search();
};
//キーワード検索の関数
function keyword_search(){
var keyword = search_word.value;
var str_query = ‘?query=’+ FIELD_CODE +’ = "’ + keyword;
if(keyword === “”){
str_query = “”;
}else if(keyword !== “”){
str_query = ‘?query=’+ FIELD_CODE +’ = “’ + keyword + '”';
}
//検索結果のURLへ
document.location = location.origin + location.pathname + str_query;
}
//重複を避けるため要素をあらかじめクリアしておく
var node_space = kintone.mobile.app.getHeaderSpaceElement();
for (var t =node_space.childNodes.length-1; t>=0; t–) {
node_space.removeChild(node_space.childNodes[i]);
}
var label = document.createElement(‘label’);
label.appendChild(document.createTextNode(‘検索用コード検索’));
label.appendChild(document.createTextNode(’ ‘));
label.appendChild(search_word);
label.appendChild(document.createTextNode(’ '));
label.appendChild(search_button);
kintone.mobile.app.getHeaderSpaceElement().appendChild(label);
return event;
});
})();