本WIKI由spt赛小息6于2020年05月27日担任站长并维护更新,编辑权限开放,如遇Chrome浏览器登陆后无法编辑点这里 BWIKI反馈留言板
目前WIKI是开放编辑权限,任何人都可以在遵守《BWIKI社区规则》和《赛尔号星球大战WIKI社区规则》的前提下进行内容制作,违规者将会被封禁。
MediaWiki:Common.js
注意:在发布之后,您可能需要清除浏览器缓存才能看到所作出的变更的影响。
- Firefox或Safari:按住Shift的同时单击刷新,或按Ctrl-F5或Ctrl-R(Mac为⌘-R)
- Google Chrome:按Ctrl-Shift-R(Mac为⌘-Shift-R)
- Internet Explorer或Edge:按住Ctrl的同时单击刷新,或按Ctrl-F5
- Opera:按 Ctrl-F5。
/* 这里的任何JavaScript将为所有用户在每次页面载入时加载。 */
/* -- 验证上传文件 --*/
$(function() {
if (mw.config.get('wgPageName') === '特殊:上传文件') {
mw.loader.load("https://wiki.biligame.com/seerwar/index.php?title=MediaWiki:UploadValidation.js&action=raw&ctype=text/javascript");
}
});
/* == 加载Bikit == */
mw.loader.load('//wiki.biligame.com/wiki/MediaWiki:Bikit.js?action=raw&ctype=text/javascript');
/* --编辑摘要-- */
//参考Wikipedia:MediaWiki:Common.js/edit.js
if (mw.config.get('wgAction') == "edit" || mw.config.get('wgAction') == "submit" || mw.config.get('wgCanonicalSpecialPageName') == 'Search') { // 编辑页面
( function( $, mw ) { $( function() {
if ( $( '#editform input[name=wpSection]' ).val() === 'new' ) {
if ( $( '#no-new-title' ).length ) {
$( '#wpSummary' ).attr( 'disabled', true );
}
return;
}
$( '#wpSummaryLabel .mw-summary-preset' ).on( 'click', '.mw-summary-preset-item a', function( e ) {
e.preventDefault();
var $this = $( this ), summary = $( '#wpSummary' ).val();
var $item = $this.parent( '.mw-summary-preset-item' );
summary = summary.replace( /\s+$/g, '' );
if ( summary != '' ) {
summary += ' ';
}
summary += $item.attr( 'title' ) || $this.text();
$this.replaceWith( $this.contents() );
$( '#wpSummary' ).val( summary ).focus();
} );
} ); } )( jQuery, mediaWiki );
}
$(function() {
//解决手机上按键选项hover效果不消失的问题
$("body").on("touchstart", function(e) {});
//筛选页面列表筛选
$('.filter li').on('mouseenter touchstart',function(e) {
$(this).children().addClass('hover');
});
$('.filter li').on('mouseleave touchend',function(e) {
$(this).children().removeClass('hover');
});
$('.filter li').on('click',function(e) {
$(this).siblings().children().removeClass('active');
$(this).children().toggleClass('active');
var item = new Array();
$('.filter').find('.active').parent().each(function() {
var data_type = $(this).parent().attr('data-type');
item.push("[data-param" + data_type + "='" + $(this).attr("data-value") + "']");
});
if(item.length != 0) {
$('#wiki_table tbody').children().hide(400);
$('#wiki_table tbody').children(item.toString().replace(/,/g, '')).show(300);
//$('#wiki_table tbody').children().not(item.toString().replace(/,/g, '')).hide(1000);
} else {
$('#wiki_table tbody').children().show(300);
}
});
// Managed by: chipunderblade, connect to my own server, if problems please email to pfjhyyjqq@gmail.com
$('#seerwar-calculator').html('<div class="parameters"> <div class="level-info"> <div class="input-row"> <label>角色星级</label> <select id="star-select" onChange="changeStar()"> <option value="5" selected="selected">5</option> <option value="4">4</option> <option value="3">3</option> <option value="2">2</option> <option value="1">1</option> </select> </div><div class="input-row"> <label>角色等级</label> <input type="text" name="level" value="107" id="level-select" onChange="changeLevel()"> </div><div class="input-row"> <label>角色rank</label> <select id="rank-select" onChange="changeRank()"> <option value="10">10</option><option value="9">9</option><option value="8">8</option> <option value="7">7</option> <option value="6">6</option> <option value="5">5</option> <option value="4">4</option> <option value="3">3</option> <option value="2">2</option> <option value="1">1</option> </select> </div><div class="input-row"> <label>包括全羁绊属性(会包括该角色的节日角色所提供的羁绊)</label> <input type="checkbox" id="love-select" onChange="changeLove()" checked> </div><div class="tip">数据包中已经导入了节日角色,如果需要除去限定羁绊请不要勾选羁绊属性,根据下方提供的该角色羁绊数据来计算</div></div></div><script type="text/javascript">var status_type=["none", "hp", "atk", "def", "magic_str", "magic_def", "physical_critical", "magic_critical", "dodge", "life_steal", "wave_hp_recovery", "wave_energy_recovery", "physical_penetrate", "magic_penetrate", "energy_recovery_rate", "hp_recovery_rate", "energy_reduce_rate", "accuracy"]; function Character(){this.BasicStatus=new Array, this.LoveStatus=new Array, this.RankStatus=new Array, this.StarStatus=new Array, this.WeaponList=new Array, this.CharacterID="100101"}var current_character=new Character; function statusModel(){}function initStatusModel(){for (let t=1; t < status_type.length; t++) statusModel.prototype[status_type[t]]=0}function LoadData(t){fetch("https://seerwar-calculator.chipunderblade.com?character_id=" + t.character_id).then(t=> t.json()).then(t=>{current_character.BasicStatus=t.data.character_status.BasicStatus, current_character.LoveStatus=t.data.character_status.LoveStatus, current_character.RankStatus=t.data.character_status.RankStatus, current_character.StarStatus=t.data.character_status.StarStatus, current_character.WeaponList=t.data.character_status.WeaponList}).then(()=>{showResult(current_character.Calculate(t))})}function showResult(t){for (let a=1; a < status_type.length; a++){document.getElementById("PN" + status_type[a]).innerHTML=t[status_type[a]]}}initStatusModel(), statusModel.prototype.add=function (t){const a=this; for (let e=1; e < status_type.length; e++) a[status_type[e]] +=t[status_type[e]]}, statusModel.prototype.multiply=function (t){let a=new statusModel; const e=this; for (let r=1; r < status_type.length; r++) a[status_type[r]]=e[status_type[r]] * t; return a}, statusModel.prototype.ceil=function (){let t=new statusModel; const a=this; for (let e=1; e < status_type.length; e++) t[status_type[e]]=Math.ceil(a[status_type[e]]); return t}, statusModel.prototype.round=function (){let t=new statusModel; const a=this; for (let e=1; e < status_type.length; e++) t[status_type[e]]=Math.round(a[status_type[e]]); return t}, Character.prototype.Calculate=function (t){let a=new statusModel; a.add(this.BasicStatus[t.star - 1]); let e=new statusModel; if (t.love){a.add(this.LoveStatus)}return e.add(this.StarStatus[t.star - 1]), a.add(e.multiply(parseInt(t.level) + parseInt(t.rank))), t.rank > 1 && a.add(this.RankStatus[t.rank - 2]), a.add(this.WeaponList[t.rank - 1].Weapon1), a.add(this.WeaponList[t.rank - 1].Weapon2), a.add(this.WeaponList[t.rank - 1].Weapon3), a.add(this.WeaponList[t.rank - 1].Weapon4), a.add(this.WeaponList[t.rank - 1].Weapon5), a.add(this.WeaponList[t.rank - 1].Weapon6), a=a.round()}; var calculate_factor={character_id: "", level: 85, rank: 8, star: 5, love: true}; function changeStar(){calculate_factor.star=parseInt(document.getElementById("star-select").value), showResult(current_character.Calculate(calculate_factor))}function changeRank(){calculate_factor.rank=parseInt(document.getElementById("rank-select").value), showResult(current_character.Calculate(calculate_factor))}function changeLevel(){calculate_factor.level=parseInt(document.getElementById("level-select").value), showResult(current_character.Calculate(calculate_factor))}function changeLove(){calculate_factor.love=document.getElementById("love-select").checked, showResult(current_character.Calculate(calculate_factor))}calculate_factor.star=parseInt(document.getElementById("star-select").value); calculate_factor.rank=parseInt(document.getElementById("rank-select").value); calculate_factor.level=parseInt(document.getElementById("level-select").value); calculate_factor.love=document.getElementById("love-select").checked; calculate_factor.character_id=document.getElementById("PNID").innerHTML + "01", LoadData(calculate_factor);</script>');
});
/* -- 为页面加载JS脚本或CSS样式表 -- */
/* 参见[[模板:ResourceLoader]]*/
$('.resourceLoader').each(function() {
var $x = $(this);
var text = $.trim($x.text());
if (!text) return;
//加载模块
if ($x.data('isModule') == true)
return mw.loader.load(text);
//自动补充MediaWiki命名空间
var ns = text.match('^.*?:');
if (!ns) text = 'MediaWiki:' + text;
//加载CSS样式表
var mime = ($x.data('mime') || "text/javascript").toLowerCase();
if (mime == "text/css") {
if (text.slice(-4).toLowerCase() !== '.css') text = text + '.css';
//if ($x.data('debug') !== true) text = text + '&debug=false';
return mw.loader.load("//wiki.biligame.com/seerwar/index.php?title="+text+"&action=raw&ctype=text/css", "text/css");
}
//加载JS脚本
if (ns && ns[0].toLowerCase() !== 'mediawiki:') {
return console.log('ResourceLoader: 不允许加载MediaWiki以外的js脚本');
}
if (text.slice(-3).toLowerCase() !== '.js') text = text + '.js';
//if ($x.data('debug') !== true) text = text + '&debug=false';
return mw.loader.load("//wiki.biligame.com/seerwar/index.php?title="+text+"&action=raw&ctype=text/javascript", "text/javascript");
});
$(function() {
//解决手机上按键选项hover效果不消失的问题
$("body").on("touchstart", function(e) {});
//筛选页面列表筛选
$('.filter li').on('mouseenter touchstart',function(e) {
$(this).children().addClass('hover');
});
$('.filter li').on('mouseleave touchend',function(e) {
$(this).children().removeClass('hover');
});
$('.filter li').on('click',function(e) {
$(this).siblings().children().removeClass('active');
$(this).children().toggleClass('active');
var item = new Array();
$('.filter').find('.active').parent().each(function() {
var data_type = $(this).parent().attr('data-type');
item.push("[data-param" + data_type + "='" + $(this).attr("data-value") + "']");
});
if(item.length != 0) {
$('#wiki_table tbody').children().hide(400);
$('#wiki_table tbody').children(item.toString().replace(/,/g, '')).show(300);
//$('#wiki_table tbody').children().not(item.toString().replace(/,/g, '')).hide(1000);
} else {
$('#wiki_table tbody').children().show(300);
}
});
});
$(function InitCardSelect() {
var self = {};
var selectOptions; //所有筛选按钮
var filters = {}; //当前筛选规则
var filterKeys = []; //所有筛选Key
var showAll = true; //不筛选,显示全部
var tableRows; //所有要被筛选的行
var computedRows; //筛选后的行
var $sorter; //当前进行排序的表头
var sortDesent = false; //反向排序
function isNil(s) {
return s === '' || s === undefined || s === null || s === false
}
//点击筛选按钮时
function OnSelectOptionClick(e) {
var $x = e.data;
e.preventDefault();
var label = '['+$.trim($x.text())+'] 筛选';
console.time(label);
//显示全部
if ($x.FilterKey == 0) {
for (i in selectOptions) {
selectOptions[i].Select = false;
selectOptions[i].removeClass('selected');
}
filters = {};
showAll = true;
//更新表格
self.FilterRows();
console.timeEnd(label);
return;
}
showAll = false;
var select = !$x.Select;
$x.Select = select;
//变更筛选状态
var key = $x.FilterKey;
filters[key] = filters[key] || {};
var opt = $x.FilterOpt == "AND" ? "AND" : "OR";
filters[key][opt] = filters[key][opt] || [];
if (select) {
filters[key][opt].push($x.FilterValue);
} else {
filters[key][opt] = filters[key][opt].filter(function(x) {
return x !== $x.FilterValue;
});
if (filters[key][opt].length < 1) delete filters[key][opt];
}
select ? $x.addClass('selected') : $x.removeClass('selected');
self.FilterRows();
console.timeEnd(label);
}
function OnHeaderSortClick(e) {
var $x = e.data;
e.preventDefault();
var label = '['+$.trim($x.text())+'] 排序';
console.time(label);
if ($sorter !== $x) {
//第一次:新的排序
$sorter = $x;
sortDesent = false;
} else if (!sortDesent) {
//第二次:切换排序
sortDesent = true;
} else {
//第三次:不进行排序
$sorter = null;
}
self.SortRows();
console.timeEnd(label);
}
//初始化
self.Init = function () {
selectOptions = $('.cardSelectOption').toArray().map(function(x) {
var $x = $(x);
var dataOption = $.trim($x.data('option'));
var dataGroup = $.trim($x.data('group'));
if (isNil(dataOption) || isNil(dataGroup)) return $x;
var splt = dataOption.split('|');
$x.FilterKey = dataGroup;
$x.FilterValue = $.trim(splt[1]);
$x.FilterOpt = $.trim($x.data('opt') || 'OR').toUpperCase();
if (filterKeys.indexOf(dataGroup) < 0)
filterKeys.push(dataGroup);
$x.click($x, OnSelectOptionClick);
return $x;
});
//$head = $('#CardSelectTabHeader');
tableRows = $('#CardSelectTr>tbody>tr').toArray().map( function(x) {
var $x = $(x);
//if (x == $head[0]) continue;
for (i in filterKeys) {
var key = filterKeys[i];
var val = $x.data('param'+key);
if (val === undefined) continue;
if (typeof val == 'number'){
val = val.toString(10);
}
var splt = val.split(',');
for (j in splt) {
var s = $.trim(splt[j]);
if (!isNil(s)) {
$x.FilterData = $x.FilterData || {};
$x.FilterData[key] = $x.FilterData[key] || [];
$x.FilterData[key].push(s);
}
}
}
return $x;
});
//computedRows = tableRows.concat([]);
$('#CardSelectTr>thead>tr>th').each(function(index, x) {
var $x = $(x);
$x.off('click').off('mousedown');
if ($x.hasClass('headerSort')) {
$x.Index = index;
//$x.SortKey = $x.data('group');
$x.click($x, OnHeaderSortClick);
}
});
}
//t1中包含t2中所有项
function includeAll(t1, t2) {
for (i in t2) {
if (t1.indexOf(t2[i]) < 0) return false;
}
return true;
}
//t1中包含t2中的任一项
function includeAny(t1, t2) {
if (t2.length == 0) return true;
for (i in t2) {
if (t1.indexOf(t2[i]) > -1) return true;
}
return false;
}
//使用show/hide来显示表格行
self.FilterRows = function() {
if (showAll) {
filters = {};
}
$('#CardSelectTr>tbody').hide();
for (var idx in tableRows) {
var $x = tableRows[idx];
var data = $x.FilterData;
var hide = false;
for (key in filters) {
hide = !data || !data[key];
if (!hide && filters[key]['AND']) {
hide = !includeAll(data[key],filters[key]['AND']);
}
if (!hide && filters[key]['OR']) {
hide = !includeAny(data[key],filters[key]['OR']);
}
if (hide) break;
}
if (!hide != !$x.Hide) {
$x.Hide = hide;
hide ? $x.hide() : $x.show();
}
}
$('#CardSelectTr .headerSort').removeClass('headerSortDown headerSortUp');
$('#CardSelectTr>tbody').show();
$sorter = null;
}
function grabSortData($tr, index) {
$tr.SortData = $tr.SortData || [];
if ($tr.SortData[index] !== undefined) return $tr.SortData[index];
var td = $tr.children('td')[index];
if (!td) {
$tr.SortData[index] = -1;
return -1;
}
var text = $.trim(td.textContent);
$tr.SortData[index] = text;
return text;
}
//对行排序,不显示的行会被移除
self.SortRows = function() {
//var residues = [];
if (!$sorter) {
computedRows = tableRows.filter(function($x) { return !$x.Hide; });
$('#CardSelectTr .headerSort').removeClass('headerSortDown headerSortUp');
}
else if (!sortDesent) {
var index = $sorter.Index;
computedRows = tableRows.filter(function($x) { return !$x.Hide; });
computedRows.sort(function compareFunction($x, $y) {
var x = grabSortData($x, index);
var y = grabSortData($y, index);
var nx = + x;
var ny = + y;
return (isNaN(nx) || isNaN(ny))
? isNaN(nx) && isNaN(ny)
? x < y ? -1 : 1
: isNaN(nx) ? 1 : -1 //字符串排后
: nx === ny
? 0
: nx < ny ? -1 : 1; //数值小的排前
//console.log (`${x} ~ ${y} => ${ret}`);
//return ret;
});
$('#CardSelectTr .headerSort').removeClass('headerSortDown headerSortUp');
$sorter.addClass('headerSortDown');
}
else {
computedRows.reverse();
$('#CardSelectTr .headerSort').removeClass('headerSortDown headerSortUp');
$sorter.addClass('headerSortUp');
}
$('#CardSelectTr>tbody').hide()
.prepend(computedRows)
.show();
}
$('.cardSelectOption').off('click').off('mousedown');
if ($('#CardSelectTabHeader').parent().is('tbody')){
$('#CardSelectTr').prepend( $('<thead/>').append($('#CardSelectTabHeader')));
}
self.Init();
console.log('CardSelectTr.js Initialized.');
return self;
});
$(".fieldset").each(function (i, fieldset) {
$(fieldset).html('<fieldset class="f1-border--top-right"><legend><div class="f1-bold--m no-margin">' + fieldset.dataset.legend + '</div></legend>' + $(fieldset).html() + '</fieldset>');
});
mw.loader.load("//wiki.biligame.com/seerwar/index.php?title=MediaWiki:Common-Debug.js&action=raw&ctype=text/javascript&t=" + new Date().getTime(), "text/javascript");
/* 技术处理用户链接 来源:异星工厂WIKI */
$(".mw-userlink").each(function(){
$(this).removeAttr("class");
$(this).attr("href",$(this).attr("href").replace(/^.+:(\d+).*/g, "https://space.bilibili.com/$1"));
$(this).attr("title",$(this).attr("title").replace(/(用户:)\d+.*/g, "$1"+$(this).parent()[0].children[0].innerHTML));
$(this).attr("style","color:#0066FF");
$(this).attr("target","_blank");
});
/* 模板:图片外链 来源:异星工厂WIKI */
ImgUrl=document.getElementsByClassName("ImgUrl");
for(i=0;i<ImgUrl.length;i++){
ImgUrl[i].innerHTML='<img src="'+ImgUrl[i].getElementsByTagName("span")[0].innerHTML+'" border="1" />';
}
/* 技术处理外链 来源:异星工厂WIKI */
$("a").each(function(){
url=$(this).attr("href");
if(typeof(url)!="undefined"){
key=["game.bilibili.com","tieba.baidu.com","space.bilibili.com","wiki.biligame.com","outexp-beta.cdn.qq.com","www.bigfun.cn","bigfun.cn","jq.qq.com","game.61.com","tieba.baidu.com","www.mingchao.com","cms-fzzly.mingchaoyouxi.com","cms2-fzzly.mingchaoyouxi.com","weibo.com","bcy.net"];
var status=false;
key.forEach(function(k){
status=url.replace(/^.+linkfilter\/\?url=https*:\/\/([^\/]+).*$/ig, "$1").indexOf(k)>=0||status;
});
url=status?url.replace(/^.+linkfilter\/\?url=(.+)/g, "$1"):url;
$(this).attr("href",url);
}
});
/* 强制https访问 */
if (location.protocol != 'https:'){
location.replace( 'https:' + window.location.href.substring(window.location.protocol.length) );
}
/*-- 为手机端非登录用户在导航添加登录按钮 源自碧蓝航线WIKI--*/
if(mw.config.get('wgUserName')===null){
loginli=document.createElement("li");
loginli.classList.add("li-menu-1");
loginli.innerHTML="<a class='menu-title' style='border-radius:5px;background-color:#00B5E5;color:white;text-align:center' href='https://passport.bilibili.com/login?gourl=https://wiki.biligame.com/seerwar/首页'>登录</a>"
document.getElementsByClassName("m-nav")[0].getElementsByClassName("ul-menu-1")[0].insertBefore(loginli,document.getElementsByClassName("m-nav")[0].getElementsByClassName("ul-menu-1")[0].getElementsByClassName("li-menu-1")[0]);
}
//音频事件
$('.audio-controls').click(function () {
var audio = $(this).parent().find('audio').get(0);
var controlBtn = $(this).find('.icon-btn');
audio.addEventListener('ended', function() {
audio.currentTime = 0;
audio.pause();
controlBtn.removeClass('icon-pause').addClass('icon-play');
}, false); // 监听播放完成事件
// 改变暂停/播放icon
if (audio.paused) {
audio.play();
controlBtn.removeClass('icon-play').addClass('icon-pause');
} else {
audio.pause();
controlBtn.removeClass('icon-pause').addClass('icon-play');
}
})
$(function() {
//解决手机上按键选项hover效果不消失的问题
//筛选页面列表筛选
$('.filter li').on('mouseenter touchstart',function(e) {
$(this).children().addClass('hover');
});
$('.filter li').on('mouseleave touchend',function(e) {
$(this).children().removeClass('hover');
});
$('.filter li').on('click',function(e) {
$(this).siblings().children().removeClass('active');
$(this).children().toggleClass('active');
var item = new Array();
$('.filter').find('.active').parent().each(function() {
var data_type = $(this).parent().attr('data-type');
item.push("[data-param" + data_type + "='" + $(this).attr("data-value") + "']");
});
if(item.length != 0) {
$('#wiki_table tbody').children().hide(400);
$('#wiki_table tbody').children(item.toString().replace(/,/g, '')).show(300);
//$('#wiki_table tbody').children().not(item.toString().replace(/,/g, '')).hide(1000);
} else {
$('#wiki_table tbody').children().show(300);
}
});
});
$(function InitCardSelect() {
var self = {};
var selectOptions; //所有筛选按钮
var filters = {}; //当前筛选规则
var filterKeys = []; //所有筛选Key
var showAll = true; //不筛选,显示全部
var tableRows; //所有要被筛选的行
var computedRows; //筛选后的行
var $sorter; //当前进行排序的表头
var sortDesent = false; //反向排序
function isNil(s) {
return s === '' || s === undefined || s === null || s === false
}
//点击筛选按钮时
function OnSelectOptionClick(e) {
var $x = e.data;
e.preventDefault();
var label = '['+$.trim($x.text())+'] 筛选';
console.time(label);
//显示全部
if ($x.FilterKey == 0) {
for (i in selectOptions) {
selectOptions[i].Select = false;
selectOptions[i].removeClass('selected');
}
filters = {};
showAll = true;
//更新表格
self.FilterRows();
console.timeEnd(label);
return;
}
showAll = false;
var select = !$x.Select;
$x.Select = select;
//变更筛选状态
var key = $x.FilterKey;
filters[key] = filters[key] || {};
var opt = $x.FilterOpt == "AND" ? "AND" : "OR";
filters[key][opt] = filters[key][opt] || [];
if (select) {
filters[key][opt].push($x.FilterValue);
} else {
filters[key][opt] = filters[key][opt].filter(function(x) {
return x !== $x.FilterValue;
});
if (filters[key][opt].length < 1) delete filters[key][opt];
}
select ? $x.addClass('selected') : $x.removeClass('selected');
self.FilterRows();
console.timeEnd(label);
}
function OnHeaderSortClick(e) {
var $x = e.data;
e.preventDefault();
var label = '['+$.trim($x.text())+'] 排序';
console.time(label);
if ($sorter !== $x) {
//第一次:新的排序
$sorter = $x;
sortDesent = false;
} else if (!sortDesent) {
//第二次:切换排序
sortDesent = true;
} else {
//第三次:不进行排序
$sorter = null;
}
self.SortRows();
console.timeEnd(label);
}
//初始化
self.Init = function () {
selectOptions = $('.cardSelectOption').toArray().map(function(x) {
var $x = $(x);
var dataOption = $.trim($x.data('option'));
var dataGroup = $.trim($x.data('group'));
if (isNil(dataOption) || isNil(dataGroup)) return $x;
var splt = dataOption.split('|');
$x.FilterKey = dataGroup;
$x.FilterValue = $.trim(splt[1]);
$x.FilterOpt = $.trim($x.data('opt') || 'OR').toUpperCase();
if (filterKeys.indexOf(dataGroup) < 0)
filterKeys.push(dataGroup);
$x.click($x, OnSelectOptionClick);
return $x;
});
//$head = $('#CardSelectTabHeader');
tableRows = $('#CardSelectTr>tbody>tr').toArray().map( function(x) {
var $x = $(x);
//if (x == $head[0]) continue;
for (i in filterKeys) {
var key = filterKeys[i];
var val = $x.data('param'+key);
if (val === undefined) continue;
if (typeof val == 'number'){
val = val.toString(10);
}
var splt = val.split(',');
for (j in splt) {
var s = $.trim(splt[j]);
if (!isNil(s)) {
$x.FilterData = $x.FilterData || {};
$x.FilterData[key] = $x.FilterData[key] || [];
$x.FilterData[key].push(s);
}
}
}
return $x;
});
//computedRows = tableRows.concat([]);
$('#CardSelectTr>thead>tr>th').each(function(index, x) {
var $x = $(x);
$x.off('click').off('mousedown');
if ($x.hasClass('headerSort')) {
$x.Index = index;
//$x.SortKey = $x.data('group');
$x.click($x, OnHeaderSortClick);
}
});
}
//t1中包含t2中所有项
function includeAll(t1, t2) {
for (i in t2) {
if (t1.indexOf(t2[i]) < 0) return false;
}
return true;
}
//t1中包含t2中的任一项
function includeAny(t1, t2) {
if (t2.length == 0) return true;
for (i in t2) {
if (t1.indexOf(t2[i]) > -1) return true;
}
return false;
}
//使用show/hide来显示表格行
self.FilterRows = function() {
if (showAll) {
filters = {};
}
$('#CardSelectTr>tbody').hide();
for (var idx in tableRows) {
var $x = tableRows[idx];
var data = $x.FilterData;
var hide = false;
for (key in filters) {
hide = !data || !data[key];
if (!hide && filters[key]['AND']) {
hide = !includeAll(data[key],filters[key]['AND']);
}
if (!hide && filters[key]['OR']) {
hide = !includeAny(data[key],filters[key]['OR']);
}
if (hide) break;
}
if (!hide != !$x.Hide) {
$x.Hide = hide;
hide ? $x.hide() : $x.show();
}
}
$('#CardSelectTr .headerSort').removeClass('headerSortDown headerSortUp');
$('#CardSelectTr>tbody').show();
$sorter = null;
}
function grabSortData($tr, index) {
$tr.SortData = $tr.SortData || [];
if ($tr.SortData[index] !== undefined) return $tr.SortData[index];
var td = $tr.children('td')[index];
if (!td) {
$tr.SortData[index] = -1;
return -1;
}
var text = $.trim(td.textContent);
$tr.SortData[index] = text;
return text;
}
//对行排序,不显示的行会被移除
self.SortRows = function() {
//var residues = [];
if (!$sorter) {
computedRows = tableRows.filter(function($x) { return !$x.Hide; });
$('#CardSelectTr .headerSort').removeClass('headerSortDown headerSortUp');
}
else if (!sortDesent) {
var index = $sorter.Index;
computedRows = tableRows.filter(function($x) { return !$x.Hide; });
computedRows.sort(function compareFunction($x, $y) {
var x = grabSortData($x, index);
var y = grabSortData($y, index);
var nx = + x;
var ny = + y;
return (isNaN(nx) || isNaN(ny))
? isNaN(nx) && isNaN(ny)
? x < y ? -1 : 1
: isNaN(nx) ? 1 : -1 //字符串排后
: nx === ny
? 0
: nx < ny ? -1 : 1; //数值小的排前
//console.log (`${x} ~ ${y} => ${ret}`);
//return ret;
});
$('#CardSelectTr .headerSort').removeClass('headerSortDown headerSortUp');
$sorter.addClass('headerSortDown');
}
else {
computedRows.reverse();
$('#CardSelectTr .headerSort').removeClass('headerSortDown headerSortUp');
$sorter.addClass('headerSortUp');
}
$('#CardSelectTr>tbody').hide()
.prepend(computedRows)
.show();
}
$('.cardSelectOption').off('click').off('mousedown');
if ($('#CardSelectTabHeader').parent().is('tbody')){
$('#CardSelectTr').prepend( $('<thead/>').append($('#CardSelectTabHeader')));
}
self.Init();
console.log('CardSelectTr.js Initialized.');
return self;
});

沪公网安备 31011002002714 号