本WIKI由画江山清羽申请于2020年02月21日创建,编辑权限开放,如遇Chrome浏览器登陆后无法编辑点这里 BWIKI反馈留言板
全站通知:
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。
/* -- 来自碧蓝航线wiki,为页面加载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/clsy/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/clsy/index.php?title="+text+"&action=raw&ctype=text/javascript", "text/javascript");
});
/*以下所有JS皆来自克鲁赛德战记wiki*/
/*==========首页投稿JS=========*/
//创建输入框、列表框
$("#newpage_title").html('<input class="createboxInput" id="newpage_title_name" maxlength="256" size="55">');
$("#newpage_type").html('<select id="newpage_type_name" class="createboxInput"></select>');
//获取分类名
var newpagetype = $("#newpage_type").attr("title");
console.log(newpagetype);
if(newpagetype!=null){
var npt_arr = newpagetype.split('|');
for(var i=0;i<npt_arr.length;i++){
var sel = i==0 ? " selected" : "";
$("#newpage_type_name").append('<option value="'+npt_arr[i]+'"'+sel+'>'+npt_arr[i]+'</option>');
}
$("#newpage_type_name").append('<option value="template">*模板</option>');
$("#newpage_type_name").append('<option value="">无</option>');
var newpagetype = $("#newpage_type").attr("title","");
}
//投稿按钮
$("#innerbodycontent").on("click","#newpage_start",function(){
var title_val = $("#newpage_title_name").val();
var title_type = $("#newpage_type_name").val();
if(title_val==""){
$("#newpage_alert").show();
}else{
$("#newpage_alert").hide();
var tp = "";
if(title_type == "template"){
tp = "模板:";
}
var newurl = '/clsy/index.php?title='+tp+title_val+'&action=edit&nptitle='+ec(title_val)+'&npmode=np&nptype='+ec(title_type);
window.open(newurl, '_blank');
}
});
//若页面已存在执行操作
var nptitle = getUrlParam("nptitle");
var nptype = getUrlParam("nptype");
var npmode = getUrlParam("npmode");
if(npmode == "np"){
if($("#wpTextbox1").val()!=""){
$("#mw-content-text").hide();
var tp = "";
if(nptype == "template"){
tp = "模板:";
}
$(".nry-main-content").append('该页面已存在,请更换名字后再尝试。(仍要<a target="" href="/clsy/index.php?title='+tp+dc(nptitle)+'&action=edit">编辑</a>)<br />'+'<input value="'+dc(nptitle)+'" class="createboxInput" id="newpage_title_name" maxlength="256" size="55" style="padding:0 6px;margin:4px;"><input id="newpage_start" type="submit" value="重试" style="padding:0 12px;margin:4px;"><span id="newpage_alert" style="color:red;display:none;">(名字不能为空)</span><input value="'+dc(nptype)+'" type="hidden" id="newpage_type_name">');
}else{
var nptypename = "";
if(nptype!="" && nptype!="template"){
var nptypename = '<!--- 分类代码标记,不清楚的请勿修改 --->'+'\n'+'[[分类:'+dc(nptype)+']]'+'[[分类:待审核]]'+'\n'+'<!--- 以下为正文区域 --->';
}
$("#wpTextbox1").val(nptypename);
}
}
//*****************获取地址栏参数********************//
function getUrlParam(name)
{
var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象
var r = window.location.search.substr(1).match(reg); //匹配目标参数
if (r!=null) return unescape(r[2]); return null; //返回参数值
}
//编码
function ec(content){
return encodeURI(content).replace(/%/g,"@");
}
//解码
function dc(content){
return decodeURI(content.replace(/@/g,"%"));
}
//==========将地址的的nclink属性的值写入到新页面的编辑框===========//
//编码class为nclink的文本
$(".nclink").each(function(){
var nctitle=$(this).attr("title");
var nctext=$(this).html();
var ecnc = ec(nctext);
var repnc = ecnc.replace(/@3Cp@3E/g, "")
var repnc2 = repnc.replace(/@3C\/p@3E@0A/g, "")
$(this).replaceWith('<a href="/clsy/index.php?title='+nctitle+'&action=edit&nclink='+repnc2+'" target="_blank">'+nctitle+'</a>');
})
//读取地址栏nc值并解码
var ncval = getUrlParam("nclink");
if(ncval != null){
var historytext = $("#wpTextbox1").val();
if(historytext != ""){
alert("此页面已被创建,若需继续创建,请先删除本页面内容再重试。")
}else{
var dcncval = dc(getUrlParam("nclink"));
$("#wpTextbox1").val(dcncval);
}
}
/* ==雷达图== */
if ($('div[data-type="canvas"]')[0]) {
mw.loader.load("https://wiki.biligame.com/blhx/index.php?title=MediaWiki:Info.js&action=raw&ctype=text/javascript");
}
/* --雷达图-- */
// 用于对CardSelectTr表格进行筛选排序 引用自碧蓝海事局 碧蓝航线WIKI
/*
// 筛选按钮表格
{|
! 显示全部
| li.cardSelectOption[data-group="0"][data-option="0|0"]{显示全部}
|-
! 筛选组1 (取并集)
| li.cardSelectOption[data-group="1"][data-option="1|驱逐"]{驱逐}
li.cardSelectOption[data-group="1"][data-option="1|轻巡"][data-opt="OR"]{轻巡}
|-
! 筛选组2 (取交集)
| li.cardSelectOption[data-group="2"][data-option="2|炮击"][data-opt="AND"]{炮击}
li.cardSelectOption[data-group="2"][data-option="2|雷击"][data-opt="AND"]{雷击}
|}
// 数据表格
table#CardSelectTr
thead
tr#CardSelectTabHeader
td{名称}
td.headerSort{类型}
td{分类}
tbody
tr[data-param1="驱逐"][data-param2="炮击"]{ td{标枪}, td{驱逐}, td{炮击} }
tr[data-param1="轻巡"][data-param2="炮击,雷击"]{ td{五十铃}, td{轻巡}, td{炮击,雷击} }
*/
$(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 号