您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
个人开发常用帮助脚本
当前为
- // ==UserScript==
- // @name kk-helper
- // @namespace https://greasyfork.org
- // @homepage https://greasyfork.org
- // @version 0.9.3
- // @description 个人开发常用帮助脚本
- // @author #stephenykk
- // @match https://juejin.cn/post/*
- // @match https://blog.csdn.net/*/article/details/*
- // @match https://www.jianshu.com/p/*
- // @match https://segmentfault.com/a/*
- // @match https://mp.weixin.qq.com/s*
- // @match https://zhuanlan.zhihu.com/p/*
- // @match https://sspai.com/post/*
- // @match *://www.news.cn/*/**/*.htm*
- // @match *://*.people.com.cn/*/**/*.htm*
- // @icon https://res.wx.qq.com/a/fed_upload/9300e7ac-cec5-4454-b75c-f92260dd5b47/logo-mp.ico
- // @grant none
- // @license MIT
- // ==/UserScript==
- (function () {
- "use strict";
- function log(...args) {
- console.log("[KKCopy]", ...args);
- }
- function checkEnable() {
- if (/qq\.com/.test(location.host)) {
- return false;
- }
- return true;
- }
- if (!checkEnable()) return;
- const autoClick = (ele, callback, seconds = 2) => {
- console.log('try auto click ele:', ele);
- ele.click()
- callback && setTimeout(callback, seconds * 1000)
- }
- function autoClickPrereleaseBtn() {
- if (
- location.href.includes(
- "https://devops-cloud.bgy.com.cn/ext/@console-plugin/cd/5e787768cc788/deploy/host-deploy"
- )
- ) {
- const autoClickNextBtn2 = () => {
- const btn = document.querySelector('.grid-card .steps + .btn')
- autoClick(btn, autoCheck2)
- }
- const autoClickNextBtn3 = () => {
- const btn = document.querySelector('.grid-card .steps + .btn')
- autoClick(btn, autoClickNextBtn4)
- }
- const autoClickNextBtn4 = () => {
- const btn = document.querySelector('.grid-card .steps + .btn')
- autoClick(btn)
- }
- const autoClickNextBtn = () => {
- const btn = document.querySelector('.grid-card .steps + .btn')
- autoClick(btn, autoClickNextBtn2)
- }
- const autoCheck1 = () => {
- const labelEle = document.querySelector('.cluster-info label')
- autoClick(labelEle, autoClickNextBtn, 1)
- }
- const autoCheck2 = () => {
- const labelEle = document.querySelector('.package-grid .ui-checkbox')
- autoClick(labelEle, autoClickNextBtn3, 1)
- }
- setTimeout(() => {
- const btnEle = document.querySelector(".cluster-type-btn-group .btn:nth-of-type(2)");
- btnEle && btnEle.textContent.includes('预发布') && autoClick(btnEle, autoCheck1)
- }, 3000);
- }
- }
- autoClickPrereleaseBtn()
- function autoClickHostDeploy() {
- if (
- // location.href.includes(
- // "https://devops-cloud.bgy.com.cn/ext/@console-plugin/cd/5e787768cc788/deploy"
- // )
- location.href === 'https://devops-cloud.bgy.com.cn/ext/@console-plugin/cd/5e787768cc788/deploy'
- ) {
- setTimeout(() => {
- const cardEle = document.querySelector(".manual-card-container .card:first-child");
- cardEle && autoClick(cardEle, autoClickPrereleaseBtn, 3)
- }, 3000);
- }
- }
- function createBtn(text, listener, style='') {
- // if (this.mybtn) return;
- const btn = document.createElement("button");
- btn.textContent = text || "Submit";
- btn.className = "mybtn";
- btn.setAttribute('data-txt', text);
- btn.style =
- "position: fixed; right: 520px; font-size: 30px; z-index: 100000; top: 0; border: 0; background: aliceblue; color: coral; padding: 0 20px; border-radius: 5px; cursor: pointer;" + style;
- document.body.appendChild(btn);
- btn.addEventListener('click', listener)
- console.log('createBtn: btn=', btn);
- // this.mybtn = btn;
- return btn;
- }
- function addAutoDeployBtn(times) {
- if (times < 1) return;
- setTimeout(() => {
- if (location.href === 'https://devops-cloud.bgy.com.cn/ext/@console-plugin/cd/5e787768cc788/deploy') {
- createBtn('autoDeploy', autoClickHostDeploy)
- } else {
- addAutoDeployBtn(times - 1)
- }
- }, 1000)
- }
- addAutoDeployBtn(5)
- // autoClickHostDeploy()
- function autoClickLogin() {
- if (
- location.href.includes(
- "/auth/realms/bgy/protocol/openid-connect/auth?client_id"
- )
- ) {
- setTimeout(() => {
- const link = document.querySelector("#zocial-bgy");
- link && link.click();
- }, 2000);
- }
- // if(location.href.includes('https://loginuat.countrygarden.com.cn/idp/authcenter/ActionAuthChain')) {
- // setTimeout(() => {
- // const btn = document.querySelector(".loginBt");
- // btn && btn.click();
- // }, 4000);
- // }
- }
- autoClickLogin();
- function checkCopyEnable() {
- const disable = ["countrygarden", "localhost"].some((kw) =>
- location.href.includes(kw)
- );
- return !disable;
- }
- function mycopy(text) {
- if (!checkCopyEnable()) return;
- let input = document.querySelector("#myInputEle");
- if (!input) {
- const inpEle = document.createElement("input");
- inpEle.type = "text";
- document.body.insertBefore(inpEle, null);
- inpEle.style = "position: fixed; top: -100px; right: 0; z-index: 10000;";
- inpEle.setAttribute("id", "myInputEle");
- input = inpEle;
- const btn = document.createElement("button");
- btn.id = "myCpBtn";
- // document.body.insertBefore(btn, inpEle)
- // btn.style = 'position: fixed; top: 0; left: 0; z-index: 1000'
- // btn.textContent = 'copy url'
- const doCopy = function () {
- input.select();
- input.setSelectionRange(0, input.value.length);
- document.execCommand("copy");
- log("copy done");
- };
- document.body.addEventListener("dblclick", doCopy);
- }
- input.value = text;
- }
- // eslint-disable-next-line
- mycopy(`[${document.title}](${location.href})`);
- function closeNoticeDialog(times = 1) {
- const maxtimes = 100;
- const button = document.querySelector(".notice_content + .footer button");
- if (button) {
- button.click();
- } else {
- setTimeout(closeNoticeDialog.bind(null, times + 1), 1000);
- }
- }
- closeNoticeDialog();
- function $(selector) {
- return document.querySelector(selector);
- }
- class DevopsBuild {
- constructor(sysName, isProd) {
- const srmBuildUrl =
- "https://devops-cloud.bgy.com.cn/next/ci/project/5f6c900f4251e/build";
- const gysSrmBuildUrl =
- "https://devops-cloud.bgy.com.cn/next/ci/project/5f70e768c3590/build";
- const ispBuildUrl =
- "https://devops-cloud.bgy.com.cn/next/ci/project/5de90b7183a5b/build";
- const intBuildUrl = "https://devops-cloud.bgy.com.cn/next/ci/project/5f6a0872bfc2b/build"
- const urls = {
- srm: srmBuildUrl,
- isp: ispBuildUrl,
- int: intBuildUrl,
- 'gys-srm': gysSrmBuildUrl,
- };
- const buildUrl = urls[sysName];
- if (!buildUrl) {
- alert("sysName not valid");
- }
- this.isProd = isProd;
- this.sysName = sysName;
- this.buildUrl = buildUrl;
- }
- start() {
- if (
- location.href.startsWith("https://devops-cloud.bgy.com.cn/") === false
- )
- return;
- this.btn = this.createBtn();
- this.checkShouldShowBtn();
- this.decoratePushState();
- this.listenClickBtn();
- this.constructor.prototype.pushStateCallbackList =
- this.constructor.prototype.pushStateCallbackList || [];
- this.pushStateCallbackList.push(this.pushStateCallback.bind(this));
- }
- listenClickBtn() {
- this.btn.addEventListener("click", () => {
- this.send();
- });
- }
- createBtn() {
- if (this.btn) return;
- const btn = document.createElement("button");
- btn.textContent = this.sysName + ` build ${this.isProd ? 'prod' : 'uat'}`;
- btn.className = `build-${this.isProd ? 'prod' : 'uat'}-btn-` + this.sysName;
- const right = this.isProd ? '700px' : '250px';
- btn.style =
- `position: fixed; right: ${right}; font-size: 30px; z-index: 100; top: 0; border: 0; background: aliceblue; color: coral; padding: 0 20px; border-radius: 5px; cursor: pointer;`;
- document.body.appendChild(btn);
- return btn;
- }
- pushStateCallback() {
- this.checkShouldShowBtn();
- }
- decoratePushState() {
- if (!history.pushState.isMy) {
- const pushState = history.pushState;
- // eslint-disable-next-line
- const self = this;
- history.pushState = function myPushState(...args) {
- // console.log('=====> pushState call', args, self.pushStateCallbackList)
- self.pushStateCallbackList.forEach((cb) => cb());
- pushState.apply(history, args);
- };
- history.pushState.isMy = true;
- }
- }
- checkShouldShowBtn() {
- setTimeout(() => {
- const shouldShow = location.href.startsWith(this.buildUrl);
- this.btn.style.display = shouldShow ? "inline-block" : "none";
- if (shouldShow) {
- setTimeout(() => this.clickFirstRow(), 3000);
- }
- }, 2000);
- }
- sendForSRM() {
- fetch(
- "https://devops-cloud.bgy.com.cn/next/api/gateway/pipeline.pipeline.Execute/api/pipeline/v1/projects/5f6c900f4251e/pipelines/5f6c903b924f0/execute",
- {
- headers: {
- accept: "*/*",
- "accept-language": "zh-CN,zh;q=0.9",
- "cache-control": "no-cache",
- "content-type": "application/json",
- lang: "zh",
- pragma: "no-cache",
- "sec-ch-ua":
- '"Google Chrome";v="105", "Not)A;Brand";v="8", "Chromium";v="105"',
- "sec-ch-ua-mobile": "?0",
- "sec-ch-ua-platform": '"Windows"',
- "sec-fetch-dest": "empty",
- "sec-fetch-mode": "cors",
- "sec-fetch-site": "same-origin",
- },
- referrer:
- "https://devops-cloud.bgy.com.cn/next/ci/project/5f6c900f4251e/build",
- referrerPolicy: "strict-origin-when-cross-origin",
- body: `{"inputs":[{"name":"env_param","value":"${this.isProd ? 'prod' : 'uat'}"}],"branch":"${this.isProd ? 'prod' : 'uat'}"}`,
- method: "POST",
- mode: "cors",
- credentials: "include",
- }
- );
- const isBuildingDetail = /build\/\w+$/.test(location.href);
- setTimeout(() => {
- let buildListUrl = "";
- if (!isBuildingDetail) {
- buildListUrl = location.href;
- } else {
- buildListUrl = location.href.replace(/build\/\w+$/, "build");
- }
- location.href = buildListUrl + "?clickfirst=1";
- }, 1000);
- }
- sendForINT() {
- fetch("https://devops-cloud.bgy.com.cn/next/api/gateway/pipeline.pipeline.Execute/api/pipeline/v1/projects/5f6a0872bfc2b/pipelines/5f6a08ea27a78/execute", {
- "headers": {
- "accept": "*/*",
- "accept-language": "zh-CN,zh;q=0.9",
- "content-type": "application/json",
- "lang": "zh",
- "sec-ch-ua": "\"Not/A)Brand\";v=\"99\", \"Google Chrome\";v=\"115\", \"Chromium\";v=\"115\"",
- "sec-ch-ua-mobile": "?0",
- "sec-ch-ua-platform": "\"Windows\"",
- "sec-fetch-dest": "empty",
- "sec-fetch-mode": "cors",
- "sec-fetch-site": "same-origin"
- },
- "referrer": "https://devops-cloud.bgy.com.cn/next/ci/project/5f6a0872bfc2b/build",
- "referrerPolicy": "strict-origin-when-cross-origin",
- "body": "{\"inputs\":[{\"name\":\"env_param\",\"value\":\"uat\"}],\"branch\":\"uat\"}",
- "method": "POST",
- "mode": "cors",
- "credentials": "include"
- });
- const isBuildingDetail = /build\/\w+$/.test(location.href);
- setTimeout(() => {
- let buildListUrl = "";
- if (!isBuildingDetail) {
- buildListUrl = location.href;
- } else {
- buildListUrl = location.href.replace(/build\/\w+$/, "build");
- }
- location.href = buildListUrl + "?clickfirst=1";
- }, 1000);
- }
- clickFirstRow() {
- const uparams = new URLSearchParams(location.search.replace(/^\?/, ""));
- if (!uparams.get("clickfirst")) return;
- const link = document.querySelector(
- ".ant-table-tbody tr:nth-child(2) a:first-child"
- );
- if (!link) {
- console.log("not found first row link");
- return;
- }
- link.click();
- }
- sendForISP() {
- fetch(
- "https://devops-cloud.bgy.com.cn/next/api/gateway/pipeline.pipeline.Execute/api/pipeline/v1/projects/5de90b7183a5b/pipelines/5f1f7ed6f1977/execute",
- {
- headers: {
- accept: "*/*",
- "accept-language": "zh-CN,zh;q=0.9",
- "cache-control": "no-cache",
- "content-type": "application/json",
- lang: "zh",
- pragma: "no-cache",
- "sec-ch-ua":
- '"Google Chrome";v="105", "Not)A;Brand";v="8", "Chromium";v="105"',
- "sec-ch-ua-mobile": "?0",
- "sec-ch-ua-platform": '"Windows"',
- "sec-fetch-dest": "empty",
- "sec-fetch-mode": "cors",
- "sec-fetch-site": "same-origin",
- },
- referrer:
- "https://devops-cloud.bgy.com.cn/next/ci/project/5de90b7183a5b/build",
- referrerPolicy: "strict-origin-when-cross-origin",
- body: '{"inputs":[{"name":"env_param","value":"uat"}],"branch":"uat"}',
- method: "POST",
- mode: "cors",
- credentials: "include",
- }
- );
- const isBuildingDetail = /build\/\w+$/.test(location.href);
- setTimeout(() => {
- let buildListUrl = "";
- if (!isBuildingDetail) {
- buildListUrl = location.href;
- } else {
- buildListUrl = location.href.replace(/build\/\w+$/, "build");
- }
- location.href = buildListUrl + "?clickfirst=1";
- }, 1000);
- }
- sendForGysSrm() {
- fetch("https://devops-cloud.bgy.com.cn/next/api/gateway/pipeline.pipeline.Execute/api/pipeline/v1/projects/5f70e768c3590/pipelines/5f70e769f11f9/execute", {
- "headers": {
- "accept": "*/*",
- "accept-language": "zh-CN,zh;q=0.9",
- "cache-control": "no-cache",
- "content-type": "application/json",
- "lang": "zh",
- "pragma": "no-cache",
- "sec-ch-ua": "\"Not/A)Brand\";v=\"99\", \"Google Chrome\";v=\"115\", \"Chromium\";v=\"115\"",
- "sec-ch-ua-mobile": "?0",
- "sec-ch-ua-platform": "\"Windows\"",
- "sec-fetch-dest": "empty",
- "sec-fetch-mode": "cors",
- "sec-fetch-site": "same-origin"
- },
- "referrer": "https://devops-cloud.bgy.com.cn/next/ci/project/5f70e768c3590/build",
- "referrerPolicy": "strict-origin-when-cross-origin",
- "body": "{\"inputs\":[{\"name\":\"env_param\",\"value\":\"uat\"}],\"branch\":\"uat\"}",
- "method": "POST",
- "mode": "cors",
- "credentials": "include"
- });
- const isBuildingDetail = /build\/\w+$/.test(location.href);
- setTimeout(() => {
- let buildListUrl = "";
- if (!isBuildingDetail) {
- buildListUrl = location.href;
- } else {
- buildListUrl = location.href.replace(/build\/\w+$/, "build");
- }
- location.href = buildListUrl + "?clickfirst=1";
- }, 1000);
- }
- send() {
- const sends = {
- srm: this.sendForSRM,
- isp: this.sendForISP,
- int: this.sendForINT,
- 'gys-srm': this.sendForGysSrm,
- };
- const send = sends[this.sysName];
- if (send) {
- send.call(this);
- }
- }
- }
- const srmBuild = new DevopsBuild("srm");
- srmBuild.start();
- const srmProdBuild = new DevopsBuild("srm", true);
- srmProdBuild.start();
- const ispBuild = new DevopsBuild("isp");
- ispBuild.start();
- const intBuild = new DevopsBuild("int");
- intBuild.start();
- const gyssrmBuild = new DevopsBuild("gys-srm");
- gyssrmBuild.start();
- // isp uat 登录自动填充
- class FormFiller {
- constructor(enableUrl, values, btn) {
- this.url = enableUrl;
- this.values = values;
- this.btn = btn;
- }
- element(selector) {
- return document.querySelector(selector);
- }
- fill() {
- const inputSelectors = Object.keys(this.values);
- const inputValues = Object.values(this.values);
- inputSelectors.forEach((inpSelctor, i) => {
- const input = this.element(inpSelctor);
- if (input) {
- input.value = inputValues[i];
- } else {
- console.log("not found element for", inpSelctor);
- }
- });
- }
- submit() {
- if (this.btn.selector) {
- const submitBtn = this.element(this.btn.selector);
- submitBtn?.click();
- return;
- }
- console.log("not found submitBtn cancel", this.btn); // debug only
- }
- createBtn() {
- // if (this.mybtn) return;
- const btn = document.createElement("button");
- btn.textContent = this.btn.text || "Submit";
- btn.className = "mybtn";
- btn.style =
- "position: fixed; right: 250px; font-size: 30px; z-index: 100; top: 0; border: 0; background: aliceblue; color: coral; padding: 0 20px; border-radius: 5px; cursor: pointer;";
- document.body.appendChild(btn);
- // this.mybtn = btn;
- return btn;
- }
- start() {
- if (location.href.includes(this.url) === false) return;
- this.mybtn = this.createBtn();
- this.mybtn.addEventListener("click", () => {
- this.fill();
- this.submit();
- });
- }
- }
- const ISPUatFormFiller = new FormFiller(
- "https://ssploginuat.",
- {
- "#j_username": "gys_zengzhaohua",
- "#j_password": "0Jqg0eny",
- },
- {
- selector: ".loginBt",
- text: "zengzhaohua Login",
- }
- );
- ISPUatFormFiller.start();
- const SRMUatFormFiller = new FormFiller(
- "https://loginuat.countrygarden.com.cn/idp/authcenter",
- {
- "#j_username": "penghaitao01",
- "#j_password": "password",
- },
- {
- selector: ".loginBt",
- text: "penghaitao Login",
- }
- );
- SRMUatFormFiller.start()
- const SRMProdFormFiller = new FormFiller(
- "/idp/authcenter/ActionAuth",
- {
- "#j_username": "gys_zengzhaohua",
- },
- {
- selector: ".loginBt",
- text: "zengzhaohua Login",
- }
- );
- //SRMProdFormFiller.start()
- // 选择供应商
- class SupplierSelector {
- constructor(enableUrl, values, submitBtnSelector, selectSelector) {
- this.url = enableUrl;
- this.values = values;
- this.submitBtnSelector = submitBtnSelector
- this.selectSelector = selectSelector;
- }
- element(selector) {
- return document.querySelector(selector);
- }
- fill(val) {
- this.element(this.selectSelector).value = val;
- }
- submit() {
- this.element(this.submitBtnSelector).click();
- }
- createBtns() {
- // if (this.mybtn) return;
- const actionDiv = document.createElement("div");
- actionDiv.className = "actions";
- actionDiv.style =
- "position: fixed; left: 550px; z-index: 100000; top: 0;";
- const btnStyle =
- "font-size: 20px; border: 0; background: aliceblue; color: coral; padding: 0 20px; border-radius: 5px; cursor: pointer; margin: 0 10px;";
- this.values.forEach((option) => {
- const btn = document.createElement("button");
- btn.className = "mybtn" + option.val;
- btn.textContent = option.text;
- btn.style = btnStyle;
- actionDiv.appendChild(btn);
- btn.addEventListener("click", () => {
- this.fill(option.val);
- this.submit();
- actionDiv.style.display = 'none'
- });
- });
- document.body.appendChild(actionDiv);
- }
- start() {
- if (typeof this.url === 'string' && location.href.includes(this.url) === false) return;
- if (this.url instanceof RegExp && this.url.test(location.href) === false) return;
- this.createBtns();
- }
- }
- const supplierAutoSelector = new SupplierSelector(
- /sispuat.countrygarden.com.cn\/[^?]*?\?access_token=/,
- [
- { val: "1566579841157664769", text: "中建三局" },
- { val: "1566700513699684354", text: "广东腾越" },
- { val: "1572034947512098817", text: "测试供应商001" },
- { val: "1566761465878519810", text: "四川建设" },
- { val: "1566723359788359681", text: "佛山科达机电" },
- ],
- ".el-message-box__btns .el-button",
- "#supplierSselect"
- );
- supplierAutoSelector.start();
- function redirectToISPUATTenderList(canTryTimes) {
- if (!canTryTimes) return
- if (location.href === 'https://sispuat.countrygarden.com.cn/#/Home') {
- setTimeout(() => {
- location.href = 'https://sispuat.countrygarden.com.cn/#/isp/tender-list'
- }, 1000)
- } else {
- setTimeout(() => redirectToISPUATTenderList(canTryTimes - 1), 1000);
- }
- }
- redirectToISPUATTenderList(100)
- })();
- (function () {
- function clearStorageAndCookie(isrefresh = true) {
- [sessionStorage, localStorage].forEach((storage) => storage.clear());
- clearCookies();
- console.log(document.cookie, "done!!");
- isrefresh && setTimeout(location.reload.bind(location), 1000);
- }
- function pick(data, keys) {
- return keys.reduce((ret, key) => {
- ret[key] = data[key];
- return ret;
- }, {});
- }
- function setLocalStorage(data) {
- Object.keys(data).forEach((key) => {
- localStorage[key] = data[key];
- });
- console.log("done", localStorage);
- }
- function getCookies() {
- return document.cookie.match(/[\w-]+(?=\=[^;]+)/g) || [];
- }
- function clearCookies() {
- getCookies().forEach((cname) => {
- delCookie(cname);
- });
- }
- function setCookie(cname, cvalue, exdays) {
- const d = new Date();
- d.setTime(d.getTime() + exdays * 24 * 60 * 60 * 1000);
- const expires = "; Expires=" + d.toUTCString();
- // document.cookie = cname + "=" + cvalue + expires + "; Path=/";
- document.cookie = cname + "=" + cvalue + expires;
- }
- function delCookie(cname) {
- console.log("del cookie:", cname);
- setCookie(cname, "", -1);
- }
- function copy(str) {
- const el = document.createElement("textarea");
- el.value = str;
- el.setAttribute("readonly", "");
- el.style.position = "absolute";
- el.style.left = "-9999px";
- document.body.appendChild(el);
- el.select();
- document.execCommand("copy");
- document.body.removeChild(el);
- }
- function setDebugSwitch(key, val = 1) {
- // localStorage.debug = localStorage.debug + 'schema;domain;zxhbEdit=1'
- const debugval = localStorage.debug || ''
- const pairs = debugval.split(';').map(pair => pair.includes('=') ? pair.split('=') : (pair + '=true').split('='))
- const conf = Object.fromEntries(pairs)
- conf[key] = val
- console.log('new conf:', conf)
- const entriesVal = Object.entries(conf).map(pair => pair.join('=')).join(';')
- localStorage.debug = entriesVal
- }
- function debugDomainSchema() {
- setDebugSwitch('domain')
- setDebugSwitch('schema')
- }
- function copyISPSupplierInfo() {
- copy(
- `localStorage.gys_cur_supplier_info = ${JSON.stringify(
- localStorage.gys_cur_supplier_info
- )}; setTimeout(() => location.reload(), 1000);`
- );
- console.log("copy done");
- }
- function getSchema(data = {}) {
- const result = Object.keys(data)
- .sort()
- .reduce((ret, key) => {
- return ret + `${key} ${data[key].title}\n`;
- }, "");
- console.log(result);
- copy(result);
- }
- function toUnicode(str) {
- const ls = str.split("");
- const result = ls
- .map((c) => {
- if (/\w/.test(c)) return c;
- return "\\u" + c.charCodeAt(0).toString(16).toUpperCase();
- })
- .join("");
- copy(result);
- console.log("copy done");
- return result;
- }
- function getk2Params() {
- return Object.assign({}, window.KStarForm.vmFormData.vmFormContent);
- }
- function isPlainObject(val) {
- return Object.prototype.toString.call(val).slice(8, -1) === "Object";
- }
- function getTableTypeDefines(vm) {
- const { tableData, schema } = vm.props ?? {};
- if (!tableData) {
- console.warn("not tableData found:", vm.props);
- return;
- }
- return getTypeDefines(tableData[0], schema);
- }
- function getTypeDefines(obj = {}, schema = false, level = 10) {
- // if (Array.isArray(obj)) {
- // if (obj.length === 0) {
- // return 'Array<any>'
- // }
- // return `Array<${getTypeDefines(obj[0], schema, level - 1)}>`
- // }
- if (Array.isArray(obj)) {
- obj = obj[0];
- }
- const getPrimativeType = (key, val) => {
- let type = typeof val;
- let text = "";
- if (!schema) {
- return { type, text };
- }
- const props = schema.properties ?? {};
- if (props[key]) {
- type = props[key].type;
- text = props[key].title;
- }
- return { type, text };
- };
- let ret = "{\n";
- Object.keys(obj).forEach((key) => {
- if (key.startsWith("_")) return;
- const val = obj[key];
- const isPrimative = !isPlainObject(val) && !Array.isArray(val);
- let title = "";
- let valType;
- if (isPrimative) {
- const { type, text } = getPrimativeType(key, val);
- valType = type;
- title = text;
- } else {
- valType = getTypeDefines(val, schema);
- }
- const keyDefine = `${key}: ${valType};${title ? " // " + title : ""}\n`;
- ret += keyDefine;
- });
- ret += "\n}";
- copy(ret);
- console.log("copy done!");
- return ret;
- }
- window.my = {
- getTableTypeDefines,
- getk2Params,
- toUnicode,
- getSchema,
- copyISPSupplierInfo,
- setLocalStorage,
- pick,
- clearStorageAndCookie,
- setDebugSwitch,
- debugDomainSchema,
- }
- })();