Last active
January 1, 2016 09:39
-
-
Save berlysia/8126212 to your computer and use it in GitHub Desktop.
ミリオンライブのバザーにチャンネル選択リンクを追加するuser.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ==UserScript== | |
// @name imas_ml_bazaarutil | |
// @namespace http://twitter.com/berlysia | |
// @include http://imas.gree-apps.net/app/index.php/bazaar* | |
// @run-at document-end | |
// @version 1.0.0.0 | |
// ==/UserScript== | |
/* | |
index | |
メインページ | |
top_exhibit | |
出品メニュー | |
top_confirm | |
確認メニュー | |
search_list | |
一覧表示 | |
search_wantlist | |
ほしいもの一覧からの検索ページ | |
search_usercard | |
所有カードからの検索ページ | |
search_idol | |
アイドル一覧からの検索ページ | |
search_detail | |
出品情報 | |
trade_history | |
成立履歴 noによるサーバー指定が無効 | |
from 必須 | |
top | |
search | |
detail | |
wantlist | |
type 必須 | |
1,2 | |
アイドル検索なら1、アイテム検索なら2 | |
id | |
取引ID 取引履歴を見るときは必須 | |
mci | |
カード固有ID、通し番号 | |
no | |
0-3 | |
バザーチャンネル番号 | |
box_type | |
1,2 | |
1は出品検索、2は希望品検索 | |
item | |
0,1,3 | |
アイテム出品検索(全て、スパークドリンク、バトルキャンディ) | |
item_num_from | |
アイテム個数指定下限値 | |
item_num_to | |
アイテム個数指定上限値 | |
idol | |
アイドル固有番号 | |
attribute | |
0 | |
他はエラーにならないが結果が得られない | |
rarity | |
0-5 | |
指定なし、N、HN、R、HR、SR | |
page | |
1- | |
hope_type | |
card | |
item | |
money | |
空なら指定なし | |
*/ | |
(function(){ | |
// ['index','top_exhibit','top_confirm','search_list','search_wantlist','search_usercard','search_idol','search_detail','trade_history'] | |
var filterForChannel = ['index','top_exhibit','top_confirm','search_wantlist','search_usercard','search_detail'] | |
var filterForChannelMethod = 'deny'; | |
var filterManager = function(list,method,viewtype){ | |
switch(method){ | |
case 'deny': | |
return list.indexOf(viewtype)<0; | |
case 'allow': | |
return list.indexOf(viewtype)>=0; | |
default: | |
return false; | |
} | |
} | |
var lh = location.href; | |
var _d = document; | |
var qS = function(q,d){d = d || _d; return d.querySelector(q)}; | |
var qSA = function(q,d){d = d || _d; return d.querySelectorAll(q)}; | |
var clone = function(obj){ | |
var foo = function(){}; | |
foo.prototype = obj; | |
return new foo; | |
}; | |
var base = "http://imas.gree-apps.net/app/index.php/bazaar"; | |
var keyorder = ['from','type','id','mci','no','box_type','item','item_num_from','item_num_to','idol','attribute','rarity','page','hope_type']; | |
var arr = (function(arr){return arr.slice(arr.indexOf('bazaar')+1);})(lh.split('/')); | |
var viewtype = arr.shift() || 'index'; | |
var params = (function(arr){ | |
var obj = {}; | |
for (var i = 0; i < arr.length; i++) { | |
obj[arr[i]] = arr[++i]; | |
}; | |
return obj; | |
})(arr); | |
// 現在のパラメータからいい感じにurl生成 | |
var urlFactory = function(obj,edit){ | |
obj = clone(obj); | |
for(key in edit) obj[key] = edit[key].toString(); | |
var urlparams = '/'+viewtype+'/'; | |
for(var i=0;i<keyorder.length;i++) if(!(typeof obj[keyorder[i]] === 'undefined')) urlparams += keyorder[i]+'/'+obj[keyorder[i]]+'/'; | |
return urlparams; | |
} | |
// バザーサーバーのチャンネル指定リンク | |
var channelNavigator = function(){ | |
var div = _d.createElement('div'); | |
div.className = 'pager-bottom row'; | |
var ul = _d.createElement('ul'); | |
ul.className = 'clearfix'; | |
var lifactory = function(str){ | |
var li = _d.createElement('li'); | |
var a = _d.createElement('a'); | |
a.href = base + urlFactory(params,{no:str}); | |
a.appendChild(_d.createTextNode(str)); | |
li.appendChild(a); | |
return li; | |
} | |
for(var i=0;i<=3;i++){ | |
if(i.toString()!==params.no){ | |
ul.appendChild(lifactory(i.toString())); | |
}else{ | |
var li = _d.createElement('li'); | |
li.className = 'selected'; | |
li.appendChild(_d.createTextNode(i.toString())); | |
ul.appendChild(li); | |
} | |
} | |
div.appendChild(ul); | |
return div; | |
}; | |
/** | |
表示部 | |
*/ | |
if(filterManager(filterForChannel,filterForChannelMethod,viewtype)){ | |
var line = _d.createElement('div'); | |
line.className = 'line-s1'; | |
var target = qS('div.heading.cap-01'); | |
var parent = qS('.main-bg'); | |
parent.insertBefore(line,target.nextSibling); | |
parent.insertBefore(channelNavigator(),target.nextSibling); | |
} | |
return; | |
})() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment