お世話になっております。
タイトルの件について、現在下記のように検索窓を設定しております。
function keyword_search(){
const coed = '文字列1行';
var keyword = search_word.value;
var viewid = event.viewId
var str_query = '?view=' + viewid + '&' + 'query=' + coed + ' like ' + keyword;
document.location = location.origin + location.pathname + str_query
}
各ビューごとに異なった絞込とソートの設定を行っておりますが、上記の検索窓から
検索を行うと、設定した絞込条件(※文字列1行にキーワードを含む)のみで絞込の表示がされます。
これを各ビューごとに設定している絞込条件&ソート条件を残しつつ、更に検索窓から
検索した条件をandで追加する場合はどのように行ったら良いでしょうか。
以前に、kintone.app.getQueryCondition();関数を使用すると出来るということを聞いた
のですが、どのように設定した良いかわからず躓いております。
お手数でございますが、ご教授いただければ幸いです。
よろしくお願いいたします。
Nao さん
kintone.app.getQueryCondition();を使う場合、取得した条件式から、前回の「coed + ’ like ’ + keyword」の部分を
新しい「coed + ’ like ’ + keyword」に置き換える必要があります。
対応方法としては、「条件式を解析して、新しい条件式を組み立てる」ことになります。
処理方法は、「正規表現で置き換える」などがあります。
条件式の解析は、かなり面倒ですので、簡易的に kintone.app.getQueryCondition();を使わず、
固定の条件式に新しい「coed + ’ like ’ + keyword」を追加するほうが簡単です。
使い勝手に少し制約が生じますが、実用範囲内かと思います。
ご参考に、有償ですが 一覧絞り込みプラグインで、一覧の絞り込み処理を行っていますので、よろしければご検討ください。
rex0220 様
ご返信ありがとうございます。また、プラグインのご紹介もありがとうございます
固定の条件式に新しい「coed + ’ like ’ + keyword」を追加するほうが簡単です。
上記は、各ビューごとに設定している条件式を
viewid等でifで分岐して各ビューごとの条件式を「coed + ’ like ’ + keyword」に追加設定するということでしょうか。
度々お手数でございますが、ご確認お願い致します。
はい。
実装方法は、Nao さんが分かりやすい方法でいいと思います。
if の他には、viewid 別の条件式をオブジェクトで定義しておき、 viewid で取り出すなどがあります。
var conditions = {
1234: ‘XXX = 1 and YYY = 2’,
5678: ‘XXX = 3 and YYY = 4’,
};
rex0220様
ご返信ありがとうございます。
viewid等でifで分岐する方法なんですが、現在4つのビューがあり、下記のように設定しております。
//どのviewIdにも合わなければ処理をしない
if (event.viewId !== 0000001 || event.viewId !== 0000002 || event.viewId !== 0000003 || event.viewId !== 0000004){
query2 = "";
//viewIdが1or3であれば
}else if(event.viewId == 0000001 || event.viewId == 0000003){
query2 = coed2 + ' in ' + '("項目1")' + ' and ' + coed3 + ' not in ' + '("区分1")';
//viewIdが2or4であれば
}else if(event.viewId == 0000002 || event.viewId == 0000004){
query2 = coed2 + ' in ' + '("項目2")';
}
ですが、どのビューにしても処理が実行されないのですが、
ifの式に記載の間違いはありますでしょうか。
度々お手数でございますが、ご確認お願い致します。
論理和だと、どれでも true になります。
if (event.viewId !== 0000001 && event.viewId !== 0000002 && event.viewId !== 0000003 && event.viewId !== 0000004){
または、
if ([0000001,0000002,0000003,0000004].indexOf(event.viewId) < 0) {
rex0220様
ご返信ありがとうございます。
ご教授いただいたように設定し、絞込設定ができました。
ありがとうございます。
今回はビューが4つだけだったので何とかif分岐で出来ましたが
多くなると大変そうなので、ご紹介いただいたプラグインを社内へ提案してみます。
今後ともよろしくお願いいたします。