打开/关闭搜索
搜索
打开/关闭菜单
通知
打开/关闭个人菜单
查看“MediaWiki:Mainpage.js”的源代码
MediaWiki界面页面
查看
阅读
查看源代码
查看历史
associated-pages
消息
讨论
更多操作
←
MediaWiki:Mainpage.js
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于这些用户组的用户执行:
用户
、admin
此页面为本wiki上的软件提供界面文本,并受到保护以防止滥用。 如欲修改所有wiki的翻译,请访问
translatewiki.net
上的MediaWiki本地化项目。
您无权编辑此JavaScript页面,因为编辑此页面可能会影响所有访问者。
此页面已被保护以防止编辑或其他操作。
您必须确认您的电子邮件地址才能编辑页面。请通过
参数设置
设置并确认您的电子邮件地址。
您可以查看和复制此页面的源代码。
var mainpageModule = (function() { /** * 配置信息 */ var config = { apiUrl: "https://api.hydcraft.cn/query/MainpageInfoQuery.php", onlineStatusColor: { 0: "var(--header-serverStatus-status--0)", 1: "var(--header-serverStatus-status--1)", 2: "var(--header-serverStatus-status--2)", 3: "var(--header-serverStatus-status--3)" }, tendersBlockIcons: { 10: 'https://h2-wiki-1254268741.cos.ap-shanghai.myqcloud.com/e/ee/Mainpage-Exchange.svg', 11: 'https://h2-wiki-1254268741.cos.ap-shanghai.myqcloud.com/3/35/Mainpage-Handshake.svg', 12: 'https://h2-wiki-1254268741.cos.ap-shanghai.myqcloud.com/5/5f/Mainpage-Construct.svg', 13: 'https://h2-wiki-1254268741.cos.ap-shanghai.myqcloud.com/d/d5/Mainpage-Done.svg' } }; /** * 创建并返回一个招标信息的 HTML 字符串。 * * @param {Object} tender - 招标信息对象。 * @param {number} tender.prefix_id - 招标状态ID。 * @param {string} tender.view_url - 招标详情页面的 URL。 * @param {string} tender.title - 招标标题。 * @param {string} tender.post_date - 招标发布日期。 * @param {string} tender.user_view_url - 发布用户的页面 URL。 * @param {string} [tender.user_avatar] - 发布用户的头像 URL。 * @param {string} tender.username - 发布用户的用户名。 * @returns {string} 招标信息的 HTML 字符串。 */ function createTenderBlock(tender) { var tendersBlockPrefixMap = { 10: '招标中', 11: '已中标', 12: '开工中', 13: '已交付' }; var tendersBlockTemplate = ` <div class="nav-tenders-block"> <div class="nav-tenders-block__top"> <div class="nav-tenders-block__prefix">${tendersBlockPrefixMap[tender.prefix_id]}</div> <div class="nav-tenders-block__icon"><img src="${config.tendersBlockIcons[tender.prefix_id]}"></div> </div> <div class="nav-tenders-block__bottom"> <div class="nav-tenders-block__title"><a class="nav-tenders-block__link" href="${tender.view_url}">${tender.title}</a></div> <div class="nav-tenders-block__user"> <div class="nav-tenders-block__time">${tender.post_date}</div> <a class="nav-tenders-block__username" href="${tender.user_view_url}"><img src="${tender.user_avatar ? tender.user_avatar : ''}">${tender.username}</a> </div> </div> </div> `; return tendersBlockTemplate; } /** * 根据API返回的数据更新在线状态显示。 * * @param {Object} data - 从API获取的数据对象。 * @param {Object} data.server_status - 服务器状态对象。 * @param {Object} data.server_status.nitrogen - 特定服务器的状态信息。 */ function updateOnlineStatus(data) { var onlineStatus = $(".h2-header > .h2-header__toolbar .h2-header__serverStatus .header-serverStatus-onlineStatus"); var onlinePlayer = $(".h2-header > .h2-header__toolbar .h2-header__serverStatus .header-serverStatus-onlinePlayer"); var onlinePlayerIndex; var onlineStatusText; if (data.server_status.nitrogen.code == 200) { if (data.server_status.nitrogen.status == 3) { if (data.server_status.nitrogen.players.now == -1 || data.server_status.nitrogen.max == -1) { onlinePlayerIndex = 2; onlineStatusText = `服崩了`; } else { onlinePlayerIndex = 3; onlineStatusText = `${data.server_status.nitrogen.players.now}/${data.server_status.nitrogen.players.max}`; } } else if (data.server_status.nitrogen.status == 2) { onlinePlayerIndex = 2; onlineStatusText = `正在开`; } else if (data.server_status.nitrogen.status == 1) { onlinePlayerIndex = 2; onlineStatusText = `正在关`; } else if (data.server_status.nitrogen.status == 0) { onlinePlayerIndex = 1; onlineStatusText = `服没开`; } } else if (data.server_status.nitrogen.code !== 200) { onlinePlayerIndex = 1; onlineStatusText = `机子炸了`; } else { onlinePlayerIndex = 0; onlineStatusText = `API 炸了`; } onlineStatus.css("background", config.onlineStatusColor[onlinePlayerIndex]); onlinePlayer.text(onlineStatusText); } /** * 根据API返回的数据更新招标信息显示。 * * @param {Object} data - 包含招标信息的数据对象。 */ function updateTendersInfo(data) { var tendersWrapper = $(".h2-nav .h2-nav__horizonTool .nav-horizonTool-block--1 > .h2-nav__tenders .nav-tenders-content"); var tendersCount = $(".h2-nav .h2-nav__horizonTool .nav-horizonTool-block--1 > .h2-nav__tenders .nav-tenders-header .nav-tenders-header__count .nav-tenders-header__countvalue"); var formattedToday = new Date().toISOString().split('T')[0]; let tendersMonthlyCount = 0; tendersWrapper.empty(); $.each(data.server_community.server_tenders, function (index, tender) { if (tender.post_date.split(' ')[0] == formattedToday) { tendersMonthlyCount++; } var tenderBlock = createTenderBlock(tender); tendersWrapper.append(tenderBlock); }); tendersCount.text(tendersMonthlyCount); } /** * 根据API返回的数据更新统计信息显示。 * * @param {Object} data - 包含统计信息的数据对象。 */ function updateStatistics(data) { var statisticsPlayerTotal = $(".h2-nav .h2-nav__horizonTool .nav-horizonTool-block--1 > .h2-nav__statistics .nav-horizon-block--statistics__cardWrapper .nav-horizon-block--statistics__playerTotal .nav-horizon-block--statistics__content .nav-horizon-block--statistics__count"); var statisticsEntTotal = $(".h2-nav .h2-nav__horizonTool .nav-horizonTool-block--1 > .h2-nav__statistics .nav-horizon-block--statistics__cardWrapper .nav-horizon-block--statistics__entTotal .nav-horizon-block--statistics__content .nav-horizon-block--statistics__count"); var statisticsLauncherCurrent = $(".h2-nav .h2-nav__horizonTool .nav-horizonTool-block--1 > .h2-nav__statistics .nav-horizon-block--statistics__cardWrapper .nav-horizon-block--statistics__launcherCurrent .nav-horizon-block--statistics__content .nav-horizon-block--statistics__count"); var statisticsTimeago = $(".h2-nav .h2-nav__horizonTool .nav-horizonTool-block--1 > .h2-nav__statistics .nav-horizon-block--statistics__cardWrapper .nav-horizon-block--statistics__timeago .nav-horizon-block--statistics__content .nav-horizon-block--statistics__count"); statisticsPlayerTotal.text(data.server_count.player_total); statisticsEntTotal.text(data.server_count.enterprise_total); statisticsLauncherCurrent.text(data.server_count.launcher_current.nitrogen); var startDate = new Date(2018, 8, 1); var currentDate = new Date(); var timeDiff = Math.abs(currentDate.getTime() - startDate.getTime()); var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24)); statisticsTimeago.text(diffDays); } /** * 请求主页信息,并更新页面上的在线状态、招标信息和统计信息。 * * @param {void} */ function mainpageInfoRequest() { $.getJSON(config.apiUrl, function (data) { updateOnlineStatus(data); updateTendersInfo(data); updateStatistics(data); }) .fail(function () { updateOnlineStatus({ server_status: { nitrogen: { code: 0 } } }); }); } /** * 控制水平工具栏的移动方向。 * * @param {string} direction - 移动方向,可以是 "left" 或 "right"。 */ function navHorizonTool(direction) { var horizonTool = $(".h2-nav .h2-nav__horizonTool"); var switchLeft = $(".h2-nav .h2-nav__horizonTool .h2-nav__horizonToolSwitchLeft .h2-comp-buttonClick"); var switchRight = $(".h2-nav .h2-nav__horizonTool .h2-nav__horizonToolSwitchRight .h2-comp-buttonClick"); var horizonIndexNow = $(".h2-nav .h2-nav__horizonTool .h2-nav__horizonTool-title .h2-nav__horizonTool-blockcount .h2-nav__horizonTool-blockcountNow"); var horizonIndexMax = $(".h2-nav .h2-nav__horizonTool .h2-nav__horizonTool-title .h2-nav__horizonTool-blockcount .h2-nav__horizonTool-blockcountMax"); var horizonToolIndex = parseInt(horizonTool.css("--nav-horizonTool-show-block"), 10); var totalSwitches = $(".h2-nav .h2-nav__horizonTool [class^='nav-horizonTool-block']").length - 1; if (direction === "left") { horizonToolIndex = Math.max(0, horizonToolIndex - 1); } else if (direction === "right") { horizonToolIndex = Math.min(totalSwitches, horizonToolIndex + 1); } horizonTool.css("--nav-horizonTool-show-block", horizonToolIndex); switchLeft.toggleClass("comp-disabled", horizonToolIndex <= 0); switchRight.toggleClass("comp-disabled", horizonToolIndex >= totalSwitches); horizonIndexNow.text(horizonToolIndex + 1); horizonIndexMax.text(totalSwitches + 1); } /** * 初始化。 */ $(function() { mainpageInfoRequest(); setInterval(mainpageInfoRequest, 60 * 1000); }); return { navHorizonTool: navHorizonTool }; })(); (function() { /** * 插入头图。 */ $('<div>').addClass('banner-image').insertBefore('#content'); $(function() { /** * 水平工具栏初始化按钮。 */ const horizonToolIndex = parseInt($(".h2-nav .h2-nav__horizonTool").css("--nav-horizonTool-show-block")); const totalSwitches = $(".h2-nav .h2-nav__horizonTool [class^='nav-horizonTool-block']").length - 1; const horizonIndexNow = $(".h2-nav .h2-nav__horizonTool .h2-nav__horizonTool-title .h2-nav__horizonTool-blockcount .h2-nav__horizonTool-blockcountNow"); const horizonIndexMax = $(".h2-nav .h2-nav__horizonTool .h2-nav__horizonTool-title .h2-nav__horizonTool-blockcount .h2-nav__horizonTool-blockcountMax"); $(".h2-nav .h2-nav__horizonTool .h2-nav__horizonToolSwitchLeft .h2-comp-buttonClick").toggleClass("comp-disabled", horizonToolIndex <= 0); $(".h2-nav .h2-nav__horizonTool .h2-nav__horizonToolSwitchRight .h2-comp-buttonClick").toggleClass("comp-disabled", horizonToolIndex >= totalSwitches); $(".h2-nav .h2-nav__horizonTool .h2-nav__horizonToolSwitchLeft .h2-comp-buttonClick").on("click", function() { mainpageModule.navHorizonTool("left"); }); $(".h2-nav .h2-nav__horizonTool .h2-nav__horizonToolSwitchRight .h2-comp-buttonClick").on("click", function() { mainpageModule.navHorizonTool("right"); }); horizonIndexNow.text(horizonToolIndex + 1); horizonIndexMax.text(totalSwitches + 1); }); })();
返回
MediaWiki:Mainpage.js
。
为了让您的浏览体验更加高效、方便和个性化,遵照《中华人民共和国网络安全法》和《信息安全技术个人信息安全规范》,我们需要您允许本站使用Cookies。在某些情况下,Cookies是使网站正常运行的必要条件。
了解并同意