Widget:SortSubpageList:修订间差异
跳到导航
跳到搜索
imported>Hice (创建页面,内容为“<includeonly><script> window.RLQ = window.RLQ || []; window.RLQ.push(function() { var normalizationList = { "一": '1', "二": '2', "三": '3', "四": '4',...”) |
imported>AnnAngela 无编辑摘要 |
||
| 第2行: | 第2行: | ||
window.RLQ = window.RLQ || []; | window.RLQ = window.RLQ || []; | ||
window.RLQ.push(function() { | window.RLQ.push(function() { | ||
var normalizationList = { | |||
"一": '1', | |||
"二": '2', | |||
"三": '3', | |||
"四": '4', | |||
"五": '5', | |||
"六": '6', | |||
"七": '7', | |||
"八": '8', | |||
"九": '9' | |||
}; | |||
function alphanum(a, b) { | |||
function chunkify(t) { | |||
var tz = new Array(); | |||
var x = 0, y = -1, n = 0, i, j; | |||
while (i = (j = t.charAt(x++)).charCodeAt(0)) { | |||
var m = (i == 46 || (i >=48 && i <= 57)); | |||
if (m !== n) { | |||
tz[++y] = ""; | |||
n = m; | |||
} | |||
tz[y] += j; | |||
} | |||
return tz; | |||
} | |||
var aa = chunkify(a); | |||
var bb = chunkify(b); | |||
for (x = 0; aa[x] && bb[x]; x++) { | |||
if (aa[x] !== bb[x]) { | |||
var c = Number(aa[x]), d = Number(bb[x]); | |||
if (c == aa[x] && d == bb[x]) { | |||
return c - d; | |||
} else return (aa[x] > bb[x]) ? 1 : -1; | |||
} | |||
} | |||
return aa.length - bb.length; | |||
} | |||
function chineseNorm(title) { | |||
title = title.replace(/([一二三四五六七八九])十([一二三四五六七八九])/g, '$1$2').replace(/十(?=[一二三四五六七八九])/g, '1').replace(/十/g, '10'); | |||
title = title.replace(/[一二三四五六七八九]/g, function(c) { | |||
return normalizationList[c]; | |||
}); | |||
return title; | |||
} | |||
function sort(a, b) { | |||
var na = chineseNorm(a); | |||
var nb = chineseNorm(b); | |||
return alphanum(na, nb); | |||
} | |||
$('.mw-prefixindex-list-table').each(function(_, table) { | $('.mw-prefixindex-list-table').each(function(_, table) { | ||
table = $(table); | |||
var list = Array.prototype.slice.call(table.find('td')); | |||
list.sort(function(a, b) { | |||
return sort($(a).text(), $(b).text()); | |||
}); | |||
var content = '<tbody>'; | |||
for (var i = 0; i < list.length; i++) { | |||
if (i % 3 == 0) { | |||
content += '<tr>'; | |||
} | |||
content += '<td>' + $(list[i]).html() + '</td>'; | |||
if (i % 3 == 2) { | |||
content += '</tr>'; | |||
} | |||
} | |||
// Pad to 3 | |||
for (; i % 3 != 0; i++) { | |||
if (i % 3 == 0) { | |||
content += '<tr>'; | |||
} | |||
content += '<td></td>'; | |||
if (i % 3 == 2) { | |||
content += '</tr>'; | |||
} | |||
} | |||
content += '</tbody>'; | |||
table.html(content); | |||
}); | |||
}); | }); | ||
</script></includeonly><noinclude> | </script></includeonly><noinclude> | ||
2017年4月15日 (六) 12:31的版本
用自定义方式排序Subpagelist。应蓝酱的请求而添加。这个Widget应当放在Widget:PrefixindexListTable之前。
支持的排序方式
- chinesenum (默认) 该方式将中文数字替换成阿拉伯数字以后进行排序。
作者:XYZ指示物