// ==UserScript==
// @name 云办编辑器
// @namespace http://tampermonkey.net/
// @version 0.2.8
// @description 优化云办的编辑器功能
// @require https://cdn.jsdelivr.net/npm/[email protected]/dist/jquery.min.js
// @require https://cdn.jsdelivr.net/npm/[email protected]/lodash.min.js
// @author [email protected]
// @include *://172.17.**/*
// @include *://172.16.**/*
// @include *://192.168.3.**/*
// @include *://106.39.185.18:81/*
// @include *://pkc.cestc.cn/*
// @grant GM_xmlhttpRequest
// ==/UserScript==
(function () {
(function () {
// 修改编辑器的默认字体
const style = document.createElement("style");
style.type = "text/css";
style.id = "_wjp_";
const text = document.createTextNode(".ace_editor.ace_editor{font-family: 'Courier New', 'Cascadia Code', Hack, Monaco; font-size: 18px;} #full_screen_watermark_dom{display:none!important;}");
style.appendChild(text);
const head = document.getElementsByTagName("head")[0];
head.appendChild(style);
})();
(function () {
// 点击左右编辑框,自动设置宽度
const PERCENT = 0.6;
const WIDE = 100 * PERCENT + '%';
const NARROW = 100 * (1 - PERCENT) + '%';
$(document).on('dblclick', '.splitter-paneL .el-tabs__content', function (e) {
e && e.stopPropagation();
const width = parseFloat($(e.currentTarget).closest('.splitter-paneL').attr('style').replace(/[A-Za-z:\s%]/g, ''));
if (width > 100 * PERCENT) {
return;
}
$('.splitter-paneL').css('width', WIDE);
$('.splitter-pane-resizer').css('left', WIDE);
$('.splitter-paneR').css('width', NARROW);
}).on('dblclick', '.splitter-paneR .el-tabs__content', function (e) {
e && e.stopPropagation();
const width = parseFloat($(e.currentTarget).closest('.splitter-paneR').attr('style').replace(/[A-Za-z:\s%]/g, ''));
if (width > 100 * PERCENT) {
return;
}
$('.splitter-paneL').css('width', NARROW);
$('.splitter-pane-resizer').css('left', NARROW);
$('.splitter-paneR').css('width', WIDE);
});
})();
function getQuery(name, url) {
const u = url || window.location.search,
reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)'),
r = u.substr(u.indexOf('\?') + 1).match(reg);
return r != null ? r[2] : '';
}
(function () {
// 给页面增加搜索功能
const dataMap = {};
function fetchData(cb) {
let modelCode = getQuery('funcgroupCode');
if (window.location.pathname === '/dev/system/page') {
modelCode = 'SYSTEM';
}
if (modelCode) {
const Token = localStorage.getItem('token');
if (!Token) {
return
}
GM_xmlhttpRequest({
method: 'get',
url: '/pkc/page/all/' + modelCode,
headers: {
'Content-Type': 'application/json',
'Token': Token,
},
params: {
// 确保每次请求都是从后端请求,不使用缓存
t: Math.random(),
},
onload: function (resp) {
if (resp.status === 200 && resp.readyState === 4) {
const response = JSON.parse(resp.response);
const {
code,
data,
} = response;
if (code === '200010000') {
if (data && data.length) {
data.map(item => {
dataMap[item.id] = item;
});
}
typeof cb === 'function' && cb(data);
}
}
}
});
}
}
setInterval(() => {
const len = $('#_wjpSearch_').length;
if (!len) {
fetchData((data) => {
const len = $('#_wjpSearch_').length;
if (data && data.length && !len) {
$('<div id="_wjpSearch_" class="el-input el-input--medium el-input--suffix" style="width:400px;"><input type="text" autocomplete="off" placeholder="请输入关键字(可搜索组件里面的内容)" class="el-input__inner"></div>').insertBefore('.topOperate>button')
}
})
}
}, 2000);
$(document).on('input', '#_wjpSearch_ input', _.debounce(function (e) {
let value = $(e.currentTarget).val().trim().toLowerCase();
const $rows = $('#editableTable .el-table__body-wrapper>.el-table__body>tbody>.el-table__row');
for (let i = 0; i < $rows.length; i++) {
const $row = $rows.eq(i);
const $children = $row.children('td');
// 倒数第二列肯定为ID,取倒数第二列
let id = $children.eq($children.length - 2).text().trim();
const currentData = dataMap[id];
if (!currentData) {
continue;
}
if (value) {
let shouldHidden = true;
// 先搜索页面里面的内容
let html, css, js;
if (currentData.endType == 2) {
html = currentData.moveHtml;
css = currentData.moveCss;
js = currentData.moveJs;
} else {
html = currentData.pcHtml;
css = currentData.pcCss;
js = currentData.pcJs;
}
html = (html || '').toLowerCase();
css = (css || '').toLowerCase();
js = (js || '').toLowerCase();
if (html.indexOf(value) > -1 || css.indexOf(value) > -1 || js.indexOf(value) > -1) {
shouldHidden = false;
}
// 如果页面里面的内容没有,则搜索当前页面
if (shouldHidden) {
const $tds = $row.children('td');
for (let j = 0; j < $tds.length; j++) {
const text = $tds.eq(j).text().trim().toLowerCase();
if (text.indexOf(value) > -1) {
shouldHidden = false;
break;
}
}
}
if (shouldHidden) {
$row.css('display', 'none');
} else {
$row.css('display', '');
}
} else {
$row.css('display', '');
}
}
}, 600))
.on('click', '.unsave button', function () {
// 等待保存成功后,再重新请求
setTimeout(function () {
fetchData();
}, 600);
}).on('keydown', '#pane-js,#pane-html,#pane-css', _.debounce(function (e) {
let keyCode = e.keyCode || e.which || e.charCode;
let ctrlKey = e.ctrlKey || e.metaKey;
// 监听ctrl+s按键
if (ctrlKey /* && keyCode === 83 */) {
// 等待保存成功后,再重新请求
setTimeout(function () {
fetchData();
}, 600);
}
}, 100));
})();
})();