概要
私は、超非効率なのですが、dots.で数日に一度、大阪の新着イベントを確認しています。1
大阪府のIT勉強会・セミナー・イベント情報 - dots. ドッツ
ただ、イベントの中には「精力的に活動してらっしゃるが、おそらく今後もご縁はないだろうな」という登録がちらほらあります。2
しかし、dots.のイベント検索は、自分が知る限り、非ログインではマイナス検索できません。
不要なものは選別作業や目滑りなどが発生するので、できるだけ見たくありませんでした。
なので、非表示にしました。
動作確認環境
Windows7
Firefox49
Greasemonkey
- dots.非ログイン
コード
昔作ったものなのでES6を少し。Chrome
ではそのまま使えないかもしれません。
dots._Hide_specific_tag.user.js
dots._Hide_specific_tag.user.js
// ==UserScript==
// @name Hide specific tag
// @namespace khsk
// @description 特定のタグを持つイベントを非表示にする
// @include http://eventdots.jp/event/search*
// @version 1
// @grant none
// ==/UserScript==
var ignoreTags = ['非表示にしたいタグ']
var isHideTag = nodes => {
var hide = false
Array.prototype.forEach.call(nodes.children, tag => {
if (hide) {
// breeakはできないので、一度trueになったら早期continue
// ↓のifに!hide && でもいいけど(今の形は意味がうすそう)
return;
}
if (ignoreTags.indexOf(tag.innerText) !== -1) {
hide = true
}
})
return hide
}
var getEvetnsConsiderOffset = className => {
events = document.getElementsByClassName(className)
// 既存のイベントまで取得するので、返すのは常に最後の15件=追加読み込み分(Arrayになる)
return Array.prototype.slice.call(events, -15)
}
var hideEvents = events => {
Array.prototype.forEach.call(events, event => {
// タグなしイベントに対応
if (event.style.display !== 'none' && !!event.getElementsByClassName('tags')[0] && isHideTag(event.getElementsByClassName('tags')[0])) {
event.style.display = 'none'
}
})
}
var mo = new MutationObserver((data1, data2) => {
var events = getEvetnsConsiderOffset('eventlist clearFix')
hideEvents(events)
})
var list = document.getElementsByClassName('col-full')[0]
mo.observe(list, {childList: true, subtree:true})
// 初期表示分に適用
var events = getEvetnsConsiderOffset('eventlist clearFix')
hideEvents(events)