您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
在技术支持空间内提问时有了更高效的提问方式,丰富的选项和提示文字可以提升大家的提问效率
// ==UserScript== // @name 提问小助手fdl定制版v1.0.1 // @namespace [email protected] // @version 1.0.0.2 // @description 在技术支持空间内提问时有了更高效的提问方式,丰富的选项和提示文字可以提升大家的提问效率 // @author Armstrong // @match https://kms.fineres.com/qa/questions* // @match https://kms.fineres.com/display/support/qa/questions* // @match https://kms.fineres.com/display/supporttest/qa/questions* // @match https://kms.fineres.com/tnqa/ask.action // @grant none // @icon https://kms.finedevelop.com/download/resources/com.elitesoftsp.confluence.tiny.question.answer.plugins:tiny-qa-main-res/images/favicon.ico // ==/UserScript== /* changelog: - 支持汇才技术支持空间的问答页面 */ (function () { 'use strict'; // Your code here... var $ = window.$ || {} // ### 全局的监听方法, 包装了一下MutationObserver, 当监听到指定选择器的元素被加载时, 执行回调 window.waitForAddedNode = function (params) { if (params.immediate) { const matched = []; matched.push(...document.querySelectorAll(params.selector)); const smatched = [...new Set(matched)] if (!params.urlmatcher || location.href.includes(params.urlmatcher)) { for (const el of smatched) { params.done(el); } } } const observer = new MutationObserver(mutations => { const matched = []; for (const { addedNodes } of mutations) { for (const n of addedNodes) { if (!n.tagName) continue; if (n.matches(params.selector)) { matched.push(n); } else if (n.firstElementChild) { matched.push(...n.querySelectorAll(params.selector)); } } } const smatched = [...new Set(matched)] if (smatched && params.once) this.disconnect(); if (!params.urlmatcher || location.href.includes(params.urlmatcher)) { for (const el of smatched) { params.done(el); } } }); observer.observe(document.querySelector(params.parent) || document.body, { subtree: !!params.recursive || !params.parent, childList: true, }); } // ### 功能埋点方法, 记录使用情况 window.eventTracker = { log: (event, text, storage) => { const data = window.eventTracker.__prepareData(event, text); var xhr = new XMLHttpRequest(); xhr.addEventListener("readystatechange", function () { if (this.readyState === 4) { if (typeof (storage) == 'object' && storage.k && storage.v) localStorage.setItem(storage.k, storage.v) } }); xhr.open("POST", "https://fr-support.fineres.com:60083/c447bb0737483295a34e14ec74c61589"); xhr.setRequestHeader("Content-Type", "application/json"); xhr.send(data); }, __prepareData: (event, data) => JSON.stringify({ t: 'QA', c: AJS.params.loggedInUser || AJS.params.remoteUser || 'unknown', e: event || 'none', i: JSON.stringify(data || {}), }), __installedNotify: () => { if (localStorage.getItem('__scriptInstalled') && localStorage.getItem('__scriptInstalled') == GM_info.script.version) return; const data = { version: GM_info.script.version, browser: navigator.userAgent, languare: navigator.language, time: +new Date(), }; return window.eventTracker.log('scriptInstalled', data, { k: '__scriptInstalled', v: GM_info.script.version }); }, } window.et = window.eventTracker; window.addCss = function (cssString) { const head = document.getElementsByTagName('head')[0]; const newCss = document.createElement('style'); newCss.type = "text/css"; newCss.innerHTML = cssString; head.appendChild(newCss); } //添加css的全局方法 //以下是添加标签的一些方法的封装 window.addTag = function (fineTag) { fineTag = fineTag.replace("</br>", ""); var newChosen, chosen = $('li.select2-search-choice').toArray().map(el => el.innerText.trim());//已经选择的标签 if (chosen.includes(fineTag)) { newChosen = chosen.filter(e => e != fineTag); } else { newChosen = chosen newChosen.push(fineTag); } $('input#tags').val(newChosen.join(',')); $('input#tags').trigger('change'); } window.getTitle = function (name) { var title = name; switch (name) { case "图表-需求&方案咨询": title = "图表的需求和逻辑确认"; break; case "图表-难还原": title = "本地不能复现/无法稳定复现的问题"; break; case "图表-接口": title = "图表使用中的API接口咨询"; break; case "图表-报错": title = "图表的报错/Bug咨询"; break; case "平台-其他基础模块(不包含于其他标签)": title = "不包含于其他标签的平台基础内容"; break; } return title; } window.MakeTags = function () { //$('#beforeAll').remove() //var beforeAll='<div id="beforeAll" style="width:1500px;margin:0 auto"><table id="t1" class="x-table" style="table-layout:fixed;width:100%;" cellspacing="0" id="0" cellpadding="0"><label style="color:red" id="qiyong">标签名称含【旧】的请勿使用,点击下方单元格可直接添加标签</label><p>选择技巧:选择范围最大的标签,例如在新填报预览的时候入库数据不对,则选“新填报”而不是“填报-提交入库”。</br>如果是定时调度发送短信的功能异常,其他功能正常,则选择“独立模块-短信”而不是“平台-定时调度”</p></table><table id="t2" class="x-table" style="table-layout:fixed;width:100%;" cellspacing="0" id="0" cellpadding="0"><label style="color:red" id="chajian">点我展开官方插件列表</label></table><div>' //$('#main').append(beforeAll);//先添加两个table,要加在main后面,加在content后面的话会格式错乱 //$('td[index][name="tags"]').remove() //$('[name="cols"]').remove() var tags = [] tags = ['FDL-基础模块','FDL-管道任务','FDL-定时任务','FDL-数据服务','FDL-实时任务','FDL-产品融合','FDL-数据管理治理','FDL-安全漏洞','FDL-数据源', '未知-找Bob']; var len = tags.length;//标签的总个数 //var everyCol = type = "common" ? 12 : 5;//每列标签的个数 var headNotes = `<label style="color:red" id="qiyong">标签名称含【旧】的请勿使用,点击下方单元格可直接添加标签</label><p>选择技巧:选择范围最大的标签,例如在新填报预览的时候入库数据不对,则选“新填报”而不是“填报-提交入库”。<br>如果是定时调度发送短信的功能异常,其他功能正常,则选择“独立模块-短信”而不是“平台-定时调度”</p>`; const HTMLcontents = { tagsPickArea: (headNotes, main) => `<div class="tags-pick-area"><div class="tags-pick-notes">${headNotes}</div><div class="tags-pick-main">${main}</div>`, tagsPickMain: (catName, tagsList) => `<div class="tags-pick-category"><div class="tags-pick-cat-title">${catName}</div><div class="tags-pick-list">${tagsList}</div></div>`, tagsPickTag: (cat, name, tag) => `<div class="tags-pick-tag" data="${tag}" category="${cat}" name="${name}" title="${window.getTitle(tag)}">${name}</div>`, } window.ts = tags; function categoryTags(ts) { var cats = [...new Set(ts.map(e => e.match(/(?:(.+)-)?(.+)/).slice(0, 3)).map(f => f[1]))]; var result = cats.map(g => { return { cat: g ? g == 'finereport' ? '版本(必选)' : g : '其他', tags: ts.filter(h => g ? h.startsWith(g + '-') : !h.includes('-')).map(t => t.match(/(?:([^a-zA-Z0-9]+|FDL)-)?(.+)/).slice(0, 3)) } }); return result; } var tagsData = categoryTags(tags); var tagsHTML = HTMLcontents.tagsPickArea(headNotes, tagsData.map(cat => HTMLcontents.tagsPickMain(cat.cat, cat.tags.map(tag => HTMLcontents.tagsPickTag(tag[1], tag[2], tag[0])).join(''))).join('')); document.querySelectorAll('#mainbar .tags-pick-area').forEach(el => el.remove()); document.querySelector('#mainbar').insertAdjacentHTML('beforeend', tagsHTML); //绑定点击事件; $('.tags-pick-tag').click(function () { this.classList.toggle('selected'); window.addTag(this.attributes['data'].value) }) } //以上为生成标签列表的功能 // // if (window.location.href.indexOf("ask") != -1) { //标签输入的合理性校验 $('input#post').mouseenter(function () { window.chosen = '';//已经选择的标签 var zhuanjia_tags = ['fr技术支持', 'finereport-11.0', 'finereport-10.0', 'finereport-7.0', 'finereport-8.0', 'finereport-9.0', 'fr专家协助', "js协助", "独立模块-安全", "数据源-原生方法(非插件)", "平台-代理相关", "平台-外接数据库", "平台-单点登录", "平台-登录", "独立模块-web集群", "独立模块-宕机", "独立模块-性能问题", "独立模块-模板展现性能", "独立模块-独立/嵌入式/集成部署", '填报-导入excel', '填报-控件', '填报-提交入库&插入删除行', '填报-新填报预览', '填报-暂存', ""] var common_tags = ['fr技术支持', 'finereport-11.0', 'finereport-10.0', 'finereport-7.0', 'finereport-8.0', 'finereport-9.0', 'fr专家协助'] window.incorrect_tags = [] window.module_tags = []//已经选择的模块标签数组 $('li.select2-search-choice').each(function () { window.chosen = window.chosen + $(this).text().trim() + ","; if (zhuanjia_tags.indexOf($(this).text().trim()) < 0) { window.incorrect_tags.push($(this).text()) }//incorrect_tags存储的是非专家模块的标签个数 if (common_tags.indexOf($(this).text().trim()) < 0) { window.module_tags.push($(this).text()) }//module_tags存储的是除了固定的几个标签以外,指定模块的标签 }) if (window.chosen.indexOf("fr技术支持") >= 0) { if (window.chosen.indexOf("finereport-") < 0) { alert("别忘了选择版本标签~") } if (window.chosen.indexOf("fr专家协助") >= 0 && window.incorrect_tags.length > 0) { alert("您选择了一个不在专家协助范围内的标签,请去除~") } if (window.module_tags.length == 0) { alert("您没有选择功能模块标签,这会导致问题无法推送") } } }) //标题 //document.getElementById("title").value = "问题描述"; //空间 $('input#postSpaceKeyAutoComplete').attr("placeholder", "请手动输入kms空间,然后下拉列表选择"); $('#postSpaceKey').val('finetube').trigger('change'); document.getElementById('postSpaceKey').value = "finetube"; document.getElementById('postSpaceName').value = "2.3 FineDataLink"; //描述预填充 const preFillContent = ['【客户名称】:', '【现象&问题描述】:xx操作后 在xx时间 xx任务异常(具体异常现象)', '【jar包信息】:FDL4.1.12.x 独立部署/容器化部署/..','【数据库类型&版本】' , '【截图&日志】:现象截图&INFO级别日志&.. '].map(e => `<p>${e}</p>`).join(''); document.getElementById('question-body_ifr').contentDocument.getElementById('tinymce').innerHTML = preFillContent; window.MakeTags(); //标签及标签说明 //const notice = '<label style="color:green;">标签不少于3项(团队+版本+模块),团队已经自动选择为fr技术支持。</br>模块项请选择最接近标签,后台根据标签推送给问题的责任研发/模块专家,<a target="_blank_" href="https://kms.fineres.com/pages/viewpage.action?pageId=281122133">标签选择常见问题</a>!</br>点击最下方的表格,可自动添加标签,不用再搜索啦!</br>问答只负责解答常规产品逻辑等问题,如解决问题缺少思路请走专家协助流程</label>' //$('input#tags').parent('div.form-item').children('label').click(function () { window.open("https://kms.fineres.com/pages/viewpage.action?pageId=110273236") }) //$('input#tags').parent('div.form-item').children('label').css("text-decoration", "underline").css("color", "blue") //$('input#tags').parent('div.form-item').children('label').eq(0).after(notice); //右边栏添加内容填写提示 /* document.querySelector('#question-sidebar').insertAdjacentHTML('afterBegin', `<div class="module tsadded sidebar-content-tip"><h4 class="content-tip-title">内容填写提示</h4><div><ul class="content-tip-list">${['【说明】为了保证问答回复的效率与质量,信息补充希望尽可能详细。', '【SLA链接】:若关联,请务必直接复制SLA链接,后台可以识别到SLA信息来反馈给研发', '【现象】:提供相关问题截图方便查看', '【参考过的文档】:若查阅了相关文档但仍未解决,可以说明一下,减少重复工作', '【排查过程】:写上执行过的排查步骤,如查询知识库/需求看板、二分法到最简;需求类问题需补充上客户的完整需求场景', '【主要疑问】:结合当前问题的核心阻塞点来提问,多个问题可以用序号分开', '【模板设置与报错截图】:提供相关的模板设置、报错截图,方便查看', '【JAR包版本/相关插件】:最新的jar包是否有类似问题。如果不是最新版本,补充不能升级的原因;看看是否有二开插件', '【附件】:报错类问题获取日志、模板效果问题上传内置数据集模版,使用insert link来上传文件'] .map(e => `<li>${e}</li>`).join('')}</ul></div></div>`); */ //右边栏添加问答预期 /*document.querySelector('#question-sidebar').insertAdjacentHTML('afterBegin', `<div class="module tsadded sidebar-qa-proposal"><h4 class="qa-proposal-title">问答预期</h4><div><ul class="qa-proposal-list">${['主要解决一线客户针对产品逻辑、业务需求、报错咨询等需提供判断或者方案协助。', '问题尽可能聚焦避免多问题造成干扰。', '回复时效:普通问题1d、紧急问题1h。', '紧急、重大、可复现产品问题建议通过专家协助或者转三线进行处理,保证sla问题处理效率。', '可复现产品无法满足的场景可直接提否定答复,让对应产品进行判断'] .map(e => `<li>${e}</li>`).join('')}</ul></div></div>`) */ function addRadioOptions(name, title, options, callback, beforeTargetElSelector) { const htmlTemplate = { main: (name, title, inner) => `<div class="form-item tsadded radio-options-area" name="${name}"><div class="radio-options title">${title}</div><div class="radio-options-list">${inner}</div></div>`, option: (name, title, id, value) => `<div class="radio-option" name="${name}" data="${value}"><input class="radio-option-input" type="radio" id="${id}" name="${name}" value="${value}" ><label class="radio-option-label" for="${id}">${value}</label></div>` }; const htmlContent = htmlTemplate.main(name, title, options.map(o => htmlTemplate.option(name, title, o[0], o[1])).join('')); function checkRadio(event) { const input = event.currentTarget.querySelector('input.radio-option-input'); if (!input.checked) input.click(); } document.querySelector(beforeTargetElSelector).insertAdjacentHTML('beforeBegin', htmlContent); document.querySelectorAll(`div.form-item.tsadded.radio-options-area[name="${name}"] div.radio-option`).forEach(el => el.addEventListener('click', checkRadio)); document.querySelectorAll(`div.form-item.tsadded.radio-options-area[name="${name}"] input.radio-option-input`).forEach(el => el.addEventListener('change', callback)); } function radioOptionCallback4target(event) { const value = event.srcElement.value; $('a[name="my-link"]').remove() $('#ps').remove() if (value == "普通版") { document.querySelector('.radio-options-area[name="module"]').classList.remove('hide'); $('#tags').val('fr技术支持') $('#tags').trigger('change') $("[name='xswl']").remove() $("[name='yqtx']").remove() //$('.post-editor').after("<div id='ps'><p style='color:red;font-size:25px'>P.S</p><p>详情有图片现象则直接贴图,省去下载的步骤。</p><p>如果对这个问题做出了自己的尝试,务必列出排查过程</p><p>说明主要疑问可以帮助理解,解决问题更高效</p><p>相关插件若无则不写</p><p>使用insert link来上传文件,尽量截取与问题相关的那一段日志,尽量避免整个上传</p></div>") $('#question-form > div.page-title > h1').before('<label style="color:red;font-size: 16pt;font-weight: bold;line-height: normal;">问答由专家负责, 提问答后建议直接去找对应模块专家同学, 无需等待, <a name="my-link" target="_blank" href="https://kms.fineres.com/pages/viewpage.action?pageId=349765979">专家模块</a></label>') $('#question-form > div.page-title > h1').append('<a name="my-link" target="_blank" href="https://kms.fineres.com/pages/viewpage.action?pageId=101228930"> 请熟读问答规范</a>') $('#question-form > div.page-title > h1').append('<a name="my-link" target="_blank" href="https://kms.fineres.com/pages/viewpage.action?pageId=89685745"> 高效提问,请看我</a>') $('#question-form > div.page-title > h1').append("<label name='xswl' style='color:red'> ←这是两个超链</label>") //加两个超链 if(!document.querySelector('input[name="module"]:checked')) document.querySelector('input#report.radio-option-input').click(); setNewTitleLeader(); window.MakeTags("common"); } else { document.querySelector('.radio-options-area[name="module"]').classList.add('hide'); $('#tags').val('fr技术支持,fr专家协助,finereport-10.0') $('#tags').trigger('change') $('#chajian').remove() $("[name='xswl']").remove() $('#question-form > div.page-title > h1').append('<a name="my-link" target="_blank" href="https://kms.fineres.com/pages/viewpage.action?pageId=250009228"> 来看看专家负责的问题</a>') $('#question-form > div.page-title > h1').append("<label name='xswl' style='color:red'> ←这是一个超链</label><label name='yqtx' style='color:green'><br/>专家版仅支持选择表格中列出的标签!!其他勿选!!</label>") setNewTitleLeader('专家'); window.MakeTags("special"); document.querySelector('[data="finereport-10.0"]').classList.add('selected'); } }; function radioOptionCallback4module(event) { const value = event.srcElement.value; setNewTitleLeader(value); window.MakeTags("common") } function radioOptionCallback4reproduce(event) { const value = event.srcElement.value; handleReproduce(); } function setNewTitleLeader(text){ const titleLeaders = ['报表', 'BI', 'FDL', '图表', '移动端', '平台', '专家']; if(!titleLeaders.includes(text)) { const checked = document.querySelector('input[name="module"]:checked'); text = checked ? checked.value : '报表'; } const titleElement = document.getElementById("title"); var titleValue = titleElement.value; titleLeaders.forEach(l => titleValue = titleValue.replace(`【${l}】`, '')); titleElement.value = `【${text}】${titleValue}`; } // function radioOptionCallback4leixing(event) { // const value = event.srcElement.value; // document.getElementById("title").value = "【" + $('input[name="module"]:checked').val() + "】【" + $('input[name="leixing"]:checked').val() + "】问题描述"; // } // addRadioOptions('leixing', '请选择问题类型', [['wenti', '问题'], ['xuqiu', '需求']], radioOptionCallback4leixing, 'div.form-item.ask-title'); //addRadioOptions('target', '请选择向谁提问', [['putong', '普通版'], ['zhuanjia', '专家版']], radioOptionCallback4target, 'div.form-item.ask-title'); //addRadioOptions('module', '请选择提问模块', [['report', '报表'], ['bi', 'BI'], ['finetube', 'FDL'], ['chart', '图表'], ['mobile', '移动端'], ['dec', '平台']], radioOptionCallback4module, 'div.form-item.ask-title'); //addRadioOptions('reproduce', '请选择复现情况', [['rplocal', '本地可复现'], ['rpcustonly', '仅客户环境复现'], ['rprare', '问题偶发']], radioOptionCallback4reproduce, 'div.form-item.ask-title'); setTimeout(function () { document.querySelectorAll('#question-sidebar div.module').forEach(el => el.addEventListener('click', window.collapsibleSiderbarModule)); }, 50) setTimeout(function () { document.querySelectorAll('[type="radio"][name="target"][value="普通版"]').forEach(el => el.click()); }, 100) window.handleReproduce = function () { var chosenReproduce = $('input[name="reproduce"]:checked').val(); var editor = document.getElementById('question-body_ifr').contentDocument.getElementById('tinymce'); if (editor.innerHTML.includes('【复现】:')) { editor.innerHTML = editor.innerHTML.replace(/( |<\/?p>|<br[^>]*>)*【复现】:?( |<\/?p>|<br[^>]*>)*(本地可复现|仅客户环境复现|问题偶发)?( |<\/?p>|<br[^>]*>)*/, `</p><p>【复现】:${chosenReproduce}</p><p>`); } else { editor.innerHTML = `【复现】:${chosenReproduce}</p><p>` + editor.innerHTML; } } window.collapsibleSiderbarModule = function (e) { if (e.target === e.currentTarget.querySelector('h4')) { $(e.currentTarget).find('h4~div').slideToggle('slow'); $(e.currentTarget).find('h4').toggleClass("collapsed"); window.et.log('sidebar-clicked', { module: e.currentTarget.tagName + ' ' + e.currentTarget.className }); } } // $('label[for="xuqiu"]').click(function () { // var xuqiukanban = "<a id='xuqiukanban' href='https://bi.finereporthelp.com/webroot/decision/link/R3lT' style='font-weight:bold;font-color:red' target='_blank_'>请先打开需求查询看板进行搜索</a>" // if ($('#xuqiukanban').length == 0) { $(this).after(xuqiukanban) } // }) window.waitForAddedNode({ selector: '.module.sidebar-related > div, .module.sidebar-related-content > div', immediate: true, recursive: true, done: el => el.parentElement.querySelector('h4').click() }); } else if (window.location.href.indexOf("edit") != -1) { setTimeout(function () { window.MakeTags("common") }, 1000) } else if (/display\/support\/qa\/questions\/\d+/.test(location.href)) { function thisIsMyQuestion() { return !!document.querySelector('#mainbar #question .post-detail .post-menu a.suggest-edit-post'); } function thereIsAcceptedAnswer() { return !!document.querySelector('#mainbar #answers > div.answer.accepted-answer td.votecell span.vote-accepted.vote-accepted-on'); } function addCloseLoopTip() { if (thisIsMyQuestion()) { if(!document.querySelector('a.jiaji-tip-title')) document.querySelector('div#question-header > h1').insertAdjacentHTML('beforeEnd', '<a class="jiaji-tip-title" name="my-link" target="_blank" href="https://www.jiandaoyun.com/dashboard#/app/59f96c4ae1ddba302aaa624a/form/607803373bb0e00007a5c5b5"> 问答加急请点我</a>') //加问答加急超链 if (thereIsAcceptedAnswer()) { if(!document.querySelector('h2.bihuan-tip-title')) document.querySelector('div#question-header').insertAdjacentHTML('beforeEnd', '<h2 class="bihuan-tip-title" style="text-align: right;">问答闭环后,记得将内容补充到知识文档中哦~</h2>'); } } } setTimeout(function(){ addCloseLoopTip(); document.querySelectorAll('#mainbar #answers > div.answer.accepted-answer td.votecell span.vote-accepted').forEach(el => el.addEventListener('mouseup', function(){setTimeout(addCloseLoopTip, 100)})); }, 100); window.waitForAddedNode({ selector: 'div[id^=comments-link-]', immediate: true, recursive: true, done: el => el.style.display = 'none', }); } else { function MySearch() { var inputString = $('#question-search').children('input').attr("value"); if (inputString.length == 0) { alert("请输入搜索内容") } else { window.open('https://kms.fineres.com/dosearchsite.action?cql=siteSearch+~+"' + inputString + '"+and+type+%3D+%22com.elitesoftsp.confluence.tiny.question.answer.plugins%3Aquestion%22') } window.open('http://knowledge.fanruan.com/index.php?search-fulltext-title-' + inputString) } if (window.location.href.indexOf("qa/questions/?page=") != -1 || window.location.href == "https://kms.fineres.com/display/support/qa/questions" || window.location.href == "https://kms.fineres.com/qa/questions") { setTimeout(function () { $('#content').css("max-width", "none") $('#question-search').after('<button id="myButton">点我可以全文检索</button>') $('a.question-hyperlink[href^="/display/support/qa/questions/"]').css("font-size", "18px").css("font-weight", 700).css("color", "rgba(64,116,52,0.8)") $('.excerpt').eq(0).css("color", "rgba(3,38,58,1").css("font-weight", 500) //修改字体样式 var w = $('.status').eq(0).css("width") var ht = $('.status').eq(0).css("height") var imgg = '<div align="center" style="width:' + w + ';height:' + ht + '"><img id="solved" alt="Solved" title="Solved" src="/download/resources/com.elitesoftsp.confluence.tiny.question.answer.plugins:tiny-qa-main-res/images/accepted.png"></div>' $('.question-summary').has('#solved-question').each(function () { $(this).find('.statscontainer').find('.stats').find('.status').after(imgg) }) //闭环更明显 $('#myButton').click(function () { MySearch() }) }, 500) //全文检索功能 } } const radioOptionsCss = ` .form-item.tsadded.radio-options-area[name="target"] { display: none; } .form-item.tsadded.radio-options-area { margin: 5px 0 0 0; padding: 0; } .form-item.tsadded.radio-options-area.hide { display: none; } .radio-options.title { display: inline-block; width: 25%;} .radio-options-list { display: inline-flex; flex-direction: row; flex-wrap: wrap; justify-content: flex-start; align-items: flex-start; align-content: center; } .radio-option { display: inline-block; margin: 2px 10px 2px 2px; } input.radio-option-input { display: inline-block; margin-right: 2px; } input.radio-option-input:checked+label { color: darkblue; font-weight:bold; } label.radio-option-label { display: inline-block; } `; window.addCss(radioOptionsCss); const tagPickCss = ` .tags-pick-main { margin: 0; padding: 0; align-items: center; -webkit-columns: 120px; -moz-columns: 120px; columns: 120px; column-gap: 6px; } .tags-pick-category { border: 1px solid lightgrey; border-radius: 5px; margin: 0 0 6px 0; padding: 0; -webkit-column-break-inside: avoid; page-break-inside: avoid; break-inside: avoid; } .tags-pick-cat-title { margin: 0; padding: 3px 3px 3px 3px; text-align: center; font-weight: bolder; color: white; background: darkcyan; border-radius: 5px 5px 0 0; } .tags-pick-list { margin: 0; padding: 0; } .tags-pick-tag { margin: 0; padding: 3px; text-align: center; cursor: pointer; } .tags-pick-tag:nth-child(even) { background: lightcyan; } .tags-pick-tag.selected {color: #eec;background: #55a;font-weight: bold;} .tags-pick-tag:not(.selected):hover { font-weight: bolder; background: lightblue; }`; window.addCss(tagPickCss); const sideBarCss = ` #question-sidebar > .tsadded.module > h4{ color: darkred; font-weight: bolder;} #question-sidebar > .tsadded.module.sidebar-qa-proposal ul{ list-style: disc; padding-left: 0; line-height: 20px; margin-right: 0;} #question-sidebar > .tsadded.module.sidebar-content-tip ul{ list-style: none; padding-left: 0; line-height: 20px; margin-left: 0; margin-right: 0;} #question-sidebar > .module > h4:before { font-family: Adgs Icons; font-weight: 800; font-size: 20px; height: 24px; width: 24px; vertical-align: sub;} #question-sidebar > .module > h4:not(.collapsed):before { content: "\\F15B"; } #question-sidebar > .module > h4.collapsed:before { content: "\\F11C"; } `; window.addCss(sideBarCss); window.addCss(`h2.bihuan-tip-title { color: darkred; font-weight: bolder;}`); })();