Kintoneでのコメント機能
kintoneでは詳細画面にコメント機能があるが、詳細画面を開いた時にデフォルトでコメントタブが開いてるのがたまにうざい時があるので、これをデフォルトで非表示にしたい。
kintoneが標準でコメントを無効にする機能を提供しているけど、これを使うとコメント機能自体使えなくなってしまうからね。コメント使いたいけどデフォルトでは表示したくない時にムカついてしまう。
やり方がどこにもまとまっていなかったので、残します。
方法
まずは実際のコード。
(function($) {
'use strict';
kintone.events.on('app.record.detail.show', function(event) {
var hashParam = location.hash.substr(1).split('&');
var paramList = {};
hashParam.forEach( (value, index) => {
var paramSplit = value.split('=');
paramList[paramSplit[0]] = paramSplit[1];
});
if (paramList.tab == 'comments') {
paramList.tab = 'none';
location.hash = $.param(paramList);
}
});
})(jQuery);
解説すると、ここで、urlのハッシュのパラメータを取得して、パラメータごとに配列に格納している。
var hashParam = location.hash.substr(1).split('&');
オブジェクトを生成して、そこにsplit
で分けたパラメータ名と値で追加している
var paramList = {};
hashParam.forEach( (value, index) => {
var paramSplit = value.split('=');
paramList[paramSplit[0]] = paramSplit[1];
});
tab
がcomments
になっているときにコメントタブが開くので、この条件でtab
をnone
にしてurlパラメータを更新している
if (paramList.tab == 'comments') {
paramList.tab = 'none';
location.hash = $.param(paramList);
}
注意点
この状態でコメント機能を使いたい時はコメントのタブをクリックすれば開くけど、リロードした時にはapp.record.detail.show
のイベントが発火してまたコメントが閉じちゃうので注意が必要。
感想
kintoneではjQueryやvue.jsを使うことができるのでそれらをちょいちょい使っているのですが、jQueryにはオブジェクトをパラメータの文字列に変換できる$.param(object)
がいるんですね。初めて知って感動した。
みんなも使おう。