关于这个问题,可以使用插件管理功能进行隐藏:
- <div>(() => {
- <span style="color: #0000ff;">const</span> <span style="color: #008080;">PLUGIN_NAME</span> = <span style="color: #a31515;">'隐藏-数据集数据更新调度'</span>;
- <span style="color: #0000ff;">const</span> hiddenKeys = [<span style="color: #a31515;">'data_set_refresh_api'</span>];
- <span style="color: #0000ff;">const</span> <span style="color: #008080;">UPDATE_ROUTE_PATTERN</span> = <span style="color: #800000;">/\/data-center\/data-sets\/[^/]+\/[^/]+\/details\/update(?:[/</span>?<span style="color: #cd3131;">#</span>]|$)/;
- <span style="color: #0000ff;">const</span> <span style="color: #008080;">DATASET_DETAIL_ROUTE_PATTERN</span> = <span style="color: #800000;">/\/data-center\/data-sets\/[^/]+\/[^/]+\/details(?:[/</span>?<span style="color: #cd3131;">#</span>]|$)/;
- <span style="color: #0000ff;">const</span> <span style="color: #008080;">OVERVIEW_ROUTE_REPLACER</span> = <span style="color: #a31515;">'/details/overview'</span>;
- <span style="color: #0000ff;">const</span> <span style="color: #008080;">TAB_TEXTS</span> = [<span style="color: #a31515;">'数据更新'</span>];
- <span style="color: #0000ff;">const</span> <span style="color: #008080;">BUTTON_TEXTS</span> = [<span style="color: #a31515;">'更新'</span>];
- <span style="color: #0000ff;">const</span> dispatchHiddenKeys = () => {
- <span style="color: #0000ff;">if</span> (!window.<span style="color: #008080;">GD</span> || <span style="color: #0000ff;">typeof</span> window.<span style="color: #008080;">GD</span>.dispatch !== <span style="color: #a31515;">'function'</span>) {
- console.warn(<span style="color: #a31515;">`[</span>${<span style="color: #008080;">PLUGIN_NAME</span>}<span style="color: #a31515;">] GD.dispatch is unavailable`</span>);
- <span style="color: #0000ff;">return</span>;
- }
- window.<span style="color: #008080;">GD</span>.dispatch(<span style="color: #a31515;">'config-display-control'</span>, { hiddenKeys });
- };
- <span style="color: #0000ff;">const</span> hideByText = (texts, scope = document) => {
- <span style="color: #0000ff;">const</span> elements = <span style="color: #008080;">Array</span>.<span style="color: #0000ff;">from</span>(scope.querySelectorAll(<span style="color: #a31515;">'*'</span>));
- elements.forEach((el) => {
- <span style="color: #0000ff;">const</span> text = (el.textContent || <span style="color: #a31515;">''</span>).trim();
- <span style="color: #0000ff;">if</span> (!text || !texts.includes(text)) <span style="color: #0000ff;">return</span>;
- <span style="color: #0000ff;">if</span> (!(el <span style="color: #0000ff;">instanceof</span> <span style="color: #008080;">HTMLElement</span>)) <span style="color: #0000ff;">return</span>;
- el.style.display = <span style="color: #a31515;">'none'</span>;
- });
- };
- <span style="color: #0000ff;">const</span> hideUpdateEntry = () => {
- <span style="color: #0000ff;">if</span> (!<span style="color: #008080;">DATASET_DETAIL_ROUTE_PATTERN</span>.test(window.location.href)) <span style="color: #0000ff;">return</span>;
- hideByText(<span style="color: #008080;">TAB_TEXTS</span>);
- hideByText(<span style="color: #008080;">BUTTON_TEXTS</span>);
- };
- <span style="color: #0000ff;">const</span> hideUpdatePageBlocks = () => {
- <span style="color: #0000ff;">if</span> (!<span style="color: #008080;">UPDATE_ROUTE_PATTERN</span>.test(window.location.href)) <span style="color: #0000ff;">return</span>;
- <span style="color: #0000ff;">const</span> keywords = [<span style="color: #a31515;">'调度状态'</span>, <span style="color: #a31515;">'数据更新周期'</span>, <span style="color: #a31515;">'更新周期'</span>, <span style="color: #a31515;">'设置更新周期'</span>, <span style="color: #a31515;">'24h定时更新任务密度图'</span>];
- <span style="color: #0000ff;">const</span> nodes = <span style="color: #008080;">Array</span>.<span style="color: #0000ff;">from</span>(document.querySelectorAll(<span style="color: #a31515;">'div, span, label, p'</span>));
- nodes.forEach((node) => {
- <span style="color: #0000ff;">const</span> text = (node.textContent || <span style="color: #a31515;">''</span>).trim();
- <span style="color: #0000ff;">if</span> (!text || !keywords.some((keyword) => text.includes(keyword))) <span style="color: #0000ff;">return</span>;
- <span style="color: #0000ff;">const</span> container = node.closest(<span style="color: #a31515;">'.row-flex, .column-flex, .ant-row, .gd-card, div'</span>);
- <span style="color: #0000ff;">if</span> (container <span style="color: #0000ff;">instanceof</span> <span style="color: #008080;">HTMLElement</span>) {
- container.style.display = <span style="color: #a31515;">'none'</span>;
- } <span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> (node <span style="color: #0000ff;">instanceof</span> <span style="color: #008080;">HTMLElement</span>) {
- node.style.display = <span style="color: #a31515;">'none'</span>;
- }
- });
- };
- <span style="color: #0000ff;">const</span> redirectUpdatePage = () => {
- <span style="color: #0000ff;">const</span> { href } = window.location;
- <span style="color: #0000ff;">if</span> (!<span style="color: #008080;">UPDATE_ROUTE_PATTERN</span>.test(href)) <span style="color: #0000ff;">return</span>;
- <span style="color: #0000ff;">const</span> nextUrl = href.replace(<span style="color: #a31515;">'/details/update'</span>, <span style="color: #008080;">OVERVIEW_ROUTE_REPLACER</span>);
- <span style="color: #0000ff;">if</span> (nextUrl !== href) {
- window.location.replace(nextUrl);
- }
- };
- <span style="color: #0000ff;">const</span> apply = () => {
- dispatchHiddenKeys();
- hideUpdateEntry();
- hideUpdatePageBlocks();
- redirectUpdatePage();
- console.log(<span style="color: #a31515;">`[</span>${<span style="color: #008080;">PLUGIN_NAME</span>}<span style="color: #a31515;">] applied`</span>);
- };
- <span style="color: #0000ff;">const</span> scheduleApply = () => {
- apply();
- setTimeout(apply, <span style="color: #098658;">300</span>);
- setTimeout(apply, <span style="color: #098658;">1000</span>);
- setTimeout(apply, <span style="color: #098658;">3000</span>);
- };
- <span style="color: #0000ff;">const</span> observer = <span style="color: #0000ff;">new</span> <span style="color: #008080;">MutationObserver</span>(() => {
- hideUpdateEntry();
- hideUpdatePageBlocks();
- });
- <span style="color: #0000ff;">if</span> (document.readyState === <span style="color: #a31515;">'loading'</span>) {
- document.addEventListener(<span style="color: #a31515;">'DOMContentLoaded'</span>, scheduleApply, { once: <span style="color: #0000ff;">true</span> });
- } <span style="color: #0000ff;">else</span> {
- scheduleApply();
- }
- observer.observe(document.documentElement, { childList: <span style="color: #0000ff;">true</span>, subtree: <span style="color: #0000ff;">true</span> });
- window.addEventListener(<span style="color: #a31515;">'load'</span>, scheduleApply);
- window.addEventListener(<span style="color: #a31515;">'hashchange'</span>, scheduleApply);
- window.addEventListener(<span style="color: #a31515;">'popstate'</span>, scheduleApply);
- document.addEventListener(<span style="color: #a31515;">'visibilitychange'</span>, () => {
- <span style="color: #0000ff;">if</span> (!document.hidden) scheduleApply();
- });
- })();</div>
复制代码
插件管理介绍:https://docs.guandata.com/product/bi/575594549863251968
|