mirror of
https://github.com/apache/skywalking-booster-ui.git
synced 2025-05-13 08:17:33 +00:00
feat: view process dashboard
This commit is contained in:
parent
e377b95858
commit
e162b32f98
@ -128,6 +128,27 @@ export const routesDashboard: Array<RouteRecordRaw> = [
|
|||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
path: "",
|
||||||
|
redirect: "/dashboard/:layerId/:entity/:serviceId/:podId/:processId/:name",
|
||||||
|
component: () => import("@/views/dashboard/Edit.vue"),
|
||||||
|
name: "ViewProcess",
|
||||||
|
meta: {
|
||||||
|
notShow: true,
|
||||||
|
},
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
path: "/dashboard/:layerId/:entity/:serviceId/:podId/:processId/:name",
|
||||||
|
component: () => import("@/views/dashboard/Edit.vue"),
|
||||||
|
name: "ViewProcess",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "/dashboard/:layerId/:entity/:serviceId/:podId/:processId/:name/tab/:activeTabIndex",
|
||||||
|
component: () => import("@/views/dashboard/Edit.vue"),
|
||||||
|
name: "ViewProcessActiveTabIndex",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
{
|
{
|
||||||
path: "",
|
path: "",
|
||||||
redirect: "/dashboard/:layerId/:entity/:serviceId/:podId/:destServiceId/:destPodId/:name",
|
redirect: "/dashboard/:layerId/:entity/:serviceId/:podId/:destServiceId/:destPodId/:name",
|
||||||
|
@ -105,7 +105,7 @@ export const ebpfStore = defineStore({
|
|||||||
if (!params.taskId) {
|
if (!params.taskId) {
|
||||||
return new Promise((resolve) => resolve({}));
|
return new Promise((resolve) => resolve({}));
|
||||||
}
|
}
|
||||||
params.taskId = "808b68c847a4de58c3d068b1d62e0c93428cd3b7a9ae64952b52f3503b663fe9";
|
|
||||||
const res: AxiosResponse = await graphql.query("getEBPFSchedules").params({ ...params });
|
const res: AxiosResponse = await graphql.query("getEBPFSchedules").params({ ...params });
|
||||||
|
|
||||||
if (res.data.errors) {
|
if (res.data.errors) {
|
||||||
|
@ -28,7 +28,10 @@ limitations under the License. -->
|
|||||||
<el-table :data="props.row.processes" size="small" max-height="300">
|
<el-table :data="props.row.processes" size="small" max-height="300">
|
||||||
<el-table-column prop="name" label="Name">
|
<el-table-column prop="name" label="Name">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span :class="config.processDashboardName ? 'link' : ''">
|
<span
|
||||||
|
:class="config.processDashboardName ? 'link' : ''"
|
||||||
|
@click="viewProcessDashboard(scope, props.row)"
|
||||||
|
>
|
||||||
{{ scope.row.name }}
|
{{ scope.row.name }}
|
||||||
</span>
|
</span>
|
||||||
</template>
|
</template>
|
||||||
@ -46,7 +49,7 @@ limitations under the License. -->
|
|||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="name" label="Name">
|
<el-table-column prop="name" label="Name">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span :class="config.instanceDashboardName ? 'link' : ''">
|
<span :class="config.instanceDashboardName ? 'link' : ''" @click="viewInstanceDashboard(scope)">
|
||||||
{{ scope.row.name }}
|
{{ scope.row.name }}
|
||||||
</span>
|
</span>
|
||||||
</template>
|
</template>
|
||||||
@ -76,18 +79,24 @@ limitations under the License. -->
|
|||||||
import type { PropType } from "vue";
|
import type { PropType } from "vue";
|
||||||
import { useI18n } from "vue-i18n";
|
import { useI18n } from "vue-i18n";
|
||||||
import { useContinousProfilingStore } from "@/store/modules/continous-profiling";
|
import { useContinousProfilingStore } from "@/store/modules/continous-profiling";
|
||||||
|
import { useDashboardStore } from "@/store/modules/dashboard";
|
||||||
|
import { useSelectorStore } from "@/store/modules/selectors";
|
||||||
import type { MonitorInstance, MonitorProcess } from "@/types/continous-profiling";
|
import type { MonitorInstance, MonitorProcess } from "@/types/continous-profiling";
|
||||||
|
import router from "@/router";
|
||||||
import { HeaderLabels, HeaderChildLabels } from "../data";
|
import { HeaderLabels, HeaderChildLabels } from "../data";
|
||||||
|
import { EntityType } from "../../../data";
|
||||||
import { dateFormat } from "@/utils/dateFormat";
|
import { dateFormat } from "@/utils/dateFormat";
|
||||||
|
|
||||||
/*global defineProps */
|
/*global defineProps */
|
||||||
defineProps({
|
const props = defineProps({
|
||||||
config: {
|
config: {
|
||||||
type: Object as PropType<any>,
|
type: Object as PropType<any>,
|
||||||
default: () => ({}),
|
default: () => ({}),
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
const { t } = useI18n();
|
const { t } = useI18n();
|
||||||
|
const dashboardStore = useDashboardStore();
|
||||||
|
const selectorStore = useSelectorStore();
|
||||||
const continousProfilingStore = useContinousProfilingStore();
|
const continousProfilingStore = useContinousProfilingStore();
|
||||||
const pageSize = 10;
|
const pageSize = 10;
|
||||||
const instances = computed(() => {
|
const instances = computed(() => {
|
||||||
@ -109,6 +118,24 @@ limitations under the License. -->
|
|||||||
});
|
});
|
||||||
const currentInstances = ref<MonitorInstance[]>([]);
|
const currentInstances = ref<MonitorInstance[]>([]);
|
||||||
|
|
||||||
|
function viewProcessDashboard(scope: any, instance: MonitorInstance) {
|
||||||
|
if (!props.config.processDashboardName) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
router.push(
|
||||||
|
`/dashboard/${dashboardStore.layer}/${EntityType[8].value}/${selectorStore.currentService.id}/${instance.id}/${scope.row.id}/${props.config.processDashboardName}`,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
function viewInstanceDashboard(scope: any) {
|
||||||
|
if (!props.config.instanceDashboardName) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
router.push(
|
||||||
|
`/dashboard/${dashboardStore.layer}/${EntityType[3].value}/${selectorStore.currentService.id}/${scope.row.id}/${props.config.instanceDashboardName}`,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
async function changePage(pageIndex: number) {
|
async function changePage(pageIndex: number) {
|
||||||
currentInstances.value = instances.value.filter((d: unknown, index: number) => {
|
currentInstances.value = instances.value.filter((d: unknown, index: number) => {
|
||||||
if (index >= (pageIndex - 1) * pageSize && index < pageIndex * pageSize) {
|
if (index >= (pageIndex - 1) * pageSize && index < pageIndex * pageSize) {
|
||||||
@ -137,7 +164,7 @@ limitations under the License. -->
|
|||||||
.header {
|
.header {
|
||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
border-bottom: 1px solid rgba(0, 0, 0, 0.07);
|
border-bottom: 1px solid rgb(0 0 0 / 7%);
|
||||||
padding: 10px 20px;
|
padding: 10px 20px;
|
||||||
background-color: #f3f4f9;
|
background-color: #f3f4f9;
|
||||||
}
|
}
|
||||||
|
@ -13,12 +13,18 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|||||||
See the License for the specific language governing permissions and
|
See the License for the specific language governing permissions and
|
||||||
limitations under the License. -->
|
limitations under the License. -->
|
||||||
<template>
|
<template>
|
||||||
<div class="content" v-if="taskTimelineStore.selectedTask.targetType === TargetTypes[2].value">
|
<div
|
||||||
|
class="content"
|
||||||
|
v-if="taskTimelineStore.selectedTask.targetType === TargetTypes[2].value && networkProfilingStore.nodes.length"
|
||||||
|
>
|
||||||
<process-topology v-if="networkProfilingStore.nodes.length" :config="config" />
|
<process-topology v-if="networkProfilingStore.nodes.length" :config="config" />
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
class="content"
|
class="content"
|
||||||
v-if="[TargetTypes[1].value, TargetTypes[0].value].includes(taskTimelineStore.selectedTask.targetType)"
|
v-if="
|
||||||
|
[TargetTypes[1].value, TargetTypes[0].value].includes(taskTimelineStore.selectedTask.targetType) &&
|
||||||
|
ebpfStore.analyzeTrees.length
|
||||||
|
"
|
||||||
>
|
>
|
||||||
<div class="schedules">
|
<div class="schedules">
|
||||||
<EBPFSchedules />
|
<EBPFSchedules />
|
||||||
|
Loading…
Reference in New Issue
Block a user