From 8746d3c98530ca85a8bb152936c16a33f0961e96 Mon Sep 17 00:00:00 2001 From: Starry Date: Sat, 6 Apr 2024 19:17:17 +0800 Subject: [PATCH] feat: add Support for dragging in the trace panel (#377) --- src/utils/mutation.ts | 44 +++++++ src/views/dashboard/controls/Trace.vue | 116 +++++++++++++++++- src/views/dashboard/related/trace/Detail.vue | 2 +- src/views/dashboard/related/trace/Filter.vue | 3 +- .../dashboard/related/trace/TraceList.vue | 8 +- .../trace/components/D3Graph/Index.vue | 19 +-- .../trace/components/Table/TableContainer.vue | 1 + .../related/trace/components/Table/table.scss | 14 +-- 8 files changed, 184 insertions(+), 23 deletions(-) create mode 100644 src/utils/mutation.ts diff --git a/src/utils/mutation.ts b/src/utils/mutation.ts new file mode 100644 index 00000000..219d9337 --- /dev/null +++ b/src/utils/mutation.ts @@ -0,0 +1,44 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export class mutationObserver { + private static mutationObserverMap: Map = new Map(); + + static create(key: string, callback: MutationCallback) { + const observer = new MutationObserver(callback); + mutationObserver.mutationObserverMap.set(key, observer); + } + + static observe(key: string, target: Node, options?: MutationObserverInit) { + const observer = mutationObserver.mutationObserverMap.get(key); + if (observer) { + observer.observe(target, options); + } + } + + static deleteObserve(key: string): void { + this.disconnect(key); + this.mutationObserverMap.delete(key); + } + + static disconnect(key: string): void { + const observer = this.mutationObserverMap.get(key); + if (observer) { + observer.disconnect(); + } + } +} diff --git a/src/views/dashboard/controls/Trace.vue b/src/views/dashboard/controls/Trace.vue index 4daa614b..4db7e77a 100644 --- a/src/views/dashboard/controls/Trace.vue +++ b/src/views/dashboard/controls/Trace.vue @@ -25,22 +25,34 @@ limitations under the License. -->
- +
- + +
+
+ + + +
diff --git a/src/views/dashboard/related/trace/Detail.vue b/src/views/dashboard/related/trace/Detail.vue index c5c1ea2a..f115f602 100644 --- a/src/views/dashboard/related/trace/Detail.vue +++ b/src/views/dashboard/related/trace/Detail.vue @@ -166,8 +166,8 @@ limitations under the License. -->