16,874
个编辑
LLWiki正在建设中,欢迎加入我们!
小 (调整UI) |
小 (转移GitHub repository) |
||
(未显示同一用户的8个中间版本) | |||
//<nowiki>
// 用于[[Widget:歌曲数据库]],可以使用ES6语法
/**
* @Function: 用于筛选[[LoveLive!学园偶像祭歌曲列表]]中出现的歌曲,并自动生成相应的Wiki代码
* @Dependencies: oojs-ui-core
* @Author: [[User:Bhsd]]
*/
"use strict";
/* global mw, $, OO */
(() => {
const main = (data) => {▼
mw.sifdata = data[0];▼
▲ let $output;
// 以m:ss的格式输出歌曲时长
▲ const attr = ['s', 'p', 'c'],
▲ diff = ['easy', 'normal', 'hard', 'expert', 'exran', 'master'],
// 从数组生成下拉菜单的选项
▲ convertTime = (t) => `${ Math.floor(t / 60) }:${ (t % 60).toString().padStart(2, 0) }`,
// 根据选中的歌曲修改输出的Wiki代码。这个函数需要sifdata。
if (!term) { return; } // 不用清空上一次的输出
const swing
if (array.includes( level )) { level += 'melo'; } // 无法直接判定歌melo
);▼
return `|d-${ level }=${ ele.s }${ swing }|c-${ level }=${ ele.c }${ swing }`;
buildSelect = (group) => {▼
optionsJa = buildOptions(list, 'j'),▼
// 分团体建立ComboBox。这个函数需要sifdata。
select = new OO.ui.ComboBoxInputWidget({ menu: {items: [▼
new OO.ui.MenuSectionOptionWidget({label: '原名'}), ...optionsJa,▼
const list = sifdata.filter(ele => ele.g == group),
new OO.ui.MenuSectionOptionWidget({label: '中文名'}), ...optionsZh,▼
], width: '100%', filterFromInput: true, filterMode: 'substring'} }).on('change', change);▼
return select.$element.append( $('<i>', {class: 'fas fa-backspace'}).click(() => { select.setValue(''); }) );▼
▲ },
selectSet = [1, 2, 3, 4].map( buildSelect );▼
optionsJa.forEach(ele => { ele.$element.attr('lang', 'ja'); });
$output = $('#mw-content-text pre');▼
// 添加清空按钮
$('h2:has( .mw-headline )').after(i => selectSet[i]);▼
▲
},
mw.hook( 'wikipage.content' ).add($content => {
console.log('Hook: wikipage.content, 开始建立歌曲数据库UI');
// 前4个三级标题固定为输入项,输出项未来可能会添加更多
});
},
init = () => {
mw.widget = mw.widget || {};
if (mw.widget.list) { return; }
Promise.all([ $.ajax({ dataType: 'json', cache: true,
url: '/
}), mw.loader.using( 'oojs-ui-core' ) ]).then( main );
mw.widget.list = true;
};
if (window.jQuery) { init(); }
else { window.addEventListener('jquery', init); }
}) ();
//</nowiki>
// [[category:jQuery小部件]] {{DEFAULTSORT:list}}
|