Aipoの各ポートレットの絞込み機能

y-ozaki 240views 更新:2014年3月26日

各ポートレットで検索を行う際、各項目で絞込みを行うことができますが、この処理は項目を選択した際に onclickで以下のjavascriptが実行されます。

aipo.wiki.filterClick = function (portlet_id, thisnode, event) {
  var li = thisnode.parentNode;
  var ul = li.parentNode;
  var param = li.getAttribute("data-param");//liのdata-param
  aipo.wiki.filterSelect(ul, li);
  aipo.wiki.filteredSearch(portlet_id);
}

aipo.wiki.filteredSearch = function (portlet_id) {
  //filtertype
  var baseuri = dojo.byId("baseuri_" + portlet_id).value;

  var types = [];
  var params = [];
  dojo.query("ul.filtertype_" + portlet_id).forEach(function (ul) {
    //console.info(ul);
    var type = ul.getAttribute("data-type");
    types.push(type);

    var activeli = dojo.query("li.selected", ul)[0];
    if (activeli) {
      var param = activeli.getAttribute("data-param");
      params.push(param);
    } else {
      params.push(ul.getAttribute("data-defaultparam"));
    }
  });
  var q = dojo.byId("q" + portlet_id);
  var qs = [
    ["filter", params.join(",")],
    ["filtertype", types.join(",")],
    ["keyword", q ? q.value : ""]
  ];
  aipo.viewPage(baseuri, portlet_id, qs);
}

最後の行にあるaipo.viewPageにおいて、テンプレートに記載してあるbaseuriにパラメータとしてbaseuriにqsをつけることで、SelectData内で値を読み込めるようにしています。

ログイン / 新規登録してコメントする

このソースコードをストックして後で利用したり、作業に利用したソースコードをまとめることができます。

こちらもお役に立つかもしれません