検索機能について

お世話になっております。

現在、下記コードのような検索を設定しているのですが、

(function() {
    kintone.events.on('app.record.index.show', function(event) {   
        if (document.getElementById('syukei') !== null) {
            return;
        }
        
        var start = document.createElement('input');
        var startClassName = 'kintoneplugin-input-text';
        start.className = startClassName;
        start.id = 'condition_start';
        start.type = 'text';

        var end = document.createElement('input');
        var endClassName = 'kintoneplugin-input-text';
        end.className = endClassName;
        end.id = 'condition_end';
        end.type = 'text';

        var search = document.createElement('button');
        var searchClassName = 'kintoneplugin-button-normal';
        search.className = searchClassName;
        search.id = 'condition_submit';
        search.innerHTML = '検索';

        var label = document.createElement('div');
        label.id = 'syukei';
        label.appendChild(document.createTextNode('集計期間:'));
        label.appendChild(start);
        label.appendChild(document.createTextNode('~'));
        label.appendChild(end);  
        label.appendChild(search);     
        kintone.app.getHeaderMenuSpaceElement().appendChild(label);
        
        var dateFormat = "yy-mm-dd";
        $.datepicker.setDefaults($.datepicker.regional["ja"]);
        $("#condition_start").datepicker({dateFormat: dateFormat});
        $("#condition_end").datepicker({dateFormat: dateFormat});
        $("#condition_submit").click(function(){
            var param_query = "";
            param_query += '日付 >= "' + moment($("#condition_start").val()).format("YYYY-MM-DD") + '" and ';
            param_query += '日付 <= "' + moment($("#condition_end").val()).format("YYYY-MM-DD") + '"';
            var param = {
                app: kintone.app.getId(),
                query: param_query,
                totalCount: true,
                isGuest: false
            }
            var day1 = start.value;
            var day2 = end.value;
            var str_query = '?query='+ '日付' +' >= "' + day1 + '" and ' + '日付' +' <= "' + day2 +'"';
            document.location = location.origin + location.pathname + str_query
            })
        });
        return event;
    });
})();

上記コードの場合、複数ビューがある場合に、検索をかけると既定ビュー(アプリのトップビュー)で絞り込まれて表示がされます。

これを、各ビューごとに設定したいのですが、

var str_query = '?query='+ '日付' +' >= "' + day1 + '" and ' + '日付' +' <= "' + day2 +'"';
document.location = location.origin + location.pathname + str_query

恐らく、上記らへんを変更すればよいのかと思っているのですが、

ご教授いただければ幸いでございます。

よろしくお願いいたします。

 

 

> 既定ビュー

というより、開いている一覧の絞り込み条件を反映できていという感じではないでしょうか。やられたいのは、複数一覧が設定されている場合に各一覧に既に設定されている絞り込み条件を折り込みつつの今回の期間検索にされたいということであれば、こんな感じで実現可能かと思います。

 

var cond = kintone.app.getQueryCondition();

if (condition) {

    cond += ’ and ';

}

var query = cond + ‘(日付 >= "’ + day1 + ‘" and 日付’ +’ <= “’ + day2 +'”)';

 

一覧の絞り込み条件とその取得、クエリの扱い方については、https://www.joyzo.co.jp/blog/1277 あたり参考になるかもしれません。

Ryu Yamashita 様
ご返信ありがとうございます。

「複数一覧が設定されている場合に各一覧に既に設定されている絞り込み条件を折り込みつつの今回の期間検索にされたい」
おっしゃる通りでございます。

期間集計用の検索窓を作成したのですが、検索結果を反映させた時に、
一覧設定で作成した一番上に設定されている一覧のみにしか反映しないので、
検索結果の反映を現在開いている一覧へ反映させたいと思っています。

ご教授いただいたコードですが、どの部分に書き換えれば宜しいでしょうか。
度々お手数でございますが、ご確認お願い致します。

> 一覧設定で作成した一番上に設定されている一覧のみにしか反映しないので、

繰り返しになりますが、一番上のものがたまたま絞り込み条件が設定されていないためにそう見えているだけではないでしょうか。一番上とおっしゃってるものも絞り込み条件設定されているとすれば、反映されていないはずです。

 

私が書いたqueryは絞り込み条件そのものですので、先にかかれていた分と組合せるような形で書くと、次のようになるかと思います。

var str_query = ‘?query=’ + query;

自分なりにコードを書き直したり、色々動きを確認していくことで理解が深まると思いますので、試行錯誤するようにしましょう。

Ryu Yamashita 様

ご返信ありがとうございます。

ご教授いただいたいただいた内容と、こちらの記事も参考に設定することができました。

本当にありがとうございます。今後ともよろしくお願いいたします。