From 977ffbaf74cd0c57ed7e1529b1c3c9eed8407878 Mon Sep 17 00:00:00 2001 From: Fine0830 Date: Sat, 26 Feb 2022 22:47:53 +0800 Subject: [PATCH] feat: add Trace in dashboards (#18) * feat: add trace tool * feat: add trace * feat: add trace filters * feat: add trace list * feat: add trace detail * fix: update trace detail * feat: add trace list * fix: update trace list * feat: add trace tree * fix: update trace tree * feat: add trace table * feat: add trace statistics * fix: update trace statistics * fix: update resize * feat: add trace log * feat: add related logs * feat: add loading * fix: update name * feat: watch selectors * fix: view span on table * fix ci * fix: update file name * fix: update file name * fix: update file name * fix: update filters * build: add package --- package-lock.json | 16 +- package.json | 5 +- src/assets/icons/help.svg | 17 + src/assets/icons/issue-child.svg | 16 + src/assets/icons/issue-open-m.svg | 16 + src/assets/icons/list-bulleted.svg | 16 + src/assets/icons/merge.svg | 18 + src/assets/icons/settings_ethernet.svg | 17 + src/assets/icons/sort.svg | 15 + src/assets/icons/spinner.svg | 16 + src/assets/icons/statistics-bulleted.svg | 15 + src/assets/icons/table.svg | 23 + src/components/Selector.vue | 1 - src/graphql/fragments/log.ts | 65 +++ src/graphql/fragments/trace.ts | 76 +++ src/graphql/index.ts | 4 + src/graphql/query/log.ts | 27 + src/graphql/query/trace.ts | 22 + src/locales/lang/en.ts | 5 +- src/locales/lang/zh.ts | 5 +- src/main.ts | 3 +- src/store/modules/dashboard.ts | 21 +- src/store/modules/trace.ts | 172 ++++++ src/styles/grid.scss | 510 ++++++++++++++++++ src/styles/index.scss | 19 + src/styles/lib.scss | 4 + src/types/selector.d.ts | 18 +- src/types/trace.d.ts | 79 +++ src/utils/formatJson.ts | 25 + src/views/components/ConditionTags.vue | 138 +++++ src/views/components/LogTable/Index.vue | 136 +++++ src/views/components/LogTable/LogBrowser.vue | 107 ++++ src/views/components/LogTable/LogDetail.vue | 75 +++ src/views/components/LogTable/LogService.vue | 115 ++++ src/views/components/LogTable/data.ts | 120 +++++ .../dashboard/configuration/Topology.vue | 6 +- src/views/dashboard/configuration/Widget.vue | 8 +- .../{ => components}/WidgetOptions.vue | 0 .../StyleOptions.vue} | 0 .../{ => widget}/MetricOptions.vue | 2 +- .../{ => widget}/StandardOptions.vue | 2 +- .../{ => widget}/graph-styles/Area.vue | 0 .../{ => widget}/graph-styles/Bar.vue | 0 .../{ => widget}/graph-styles/Card.vue | 0 .../graph-styles/EndpointList.vue | 0 .../{ => widget}/graph-styles/HeatMap.vue | 0 .../graph-styles/InstanceList.vue | 0 .../{ => widget}/graph-styles/Line.vue | 0 .../{ => widget}/graph-styles/ServiceList.vue | 0 .../{ => widget}/graph-styles/Table.vue | 0 .../{ => widget}/graph-styles/TopList.vue | 0 .../{ => widget}/graph-styles/index.ts | 0 src/views/dashboard/controls/Trace.vue | 95 ++++ src/views/dashboard/controls/index.ts | 22 + src/views/dashboard/data.ts | 14 +- src/views/dashboard/panel/Layout.vue | 7 +- src/views/dashboard/panel/Tool.vue | 13 +- src/views/dashboard/related/trace/Detail.vue | 279 ++++++++++ src/views/dashboard/related/trace/Filter.vue | 239 ++++++++ .../dashboard/related/trace/TraceList.vue | 213 ++++++++ .../trace/components/D3Graph/Index.vue | 354 ++++++++++++ .../trace/components/D3Graph/SpanDetail.vue | 164 ++++++ .../related/trace/components/List.vue | 106 ++++ .../related/trace/components/Statistics.vue | 125 +++++ .../related/trace/components/Table/Index.vue | 116 ++++ .../trace/components/Table/TableContainer.vue | 172 ++++++ .../trace/components/Table/TableItem.vue | 304 +++++++++++ .../related/trace/components/Table/data.ts | 120 +++++ .../related/trace/components/Table/table.scss | 76 +++ .../related/trace/components/Tree.vue | 100 ++++ .../related/trace/components/index.ts | 28 + .../related/trace/utils/d3-trace-list.ts | 314 +++++++++++ .../related/trace/utils/d3-trace-tree.ts | 412 ++++++++++++++ .../related/trace/utils/trace-table.ts | 332 ++++++++++++ 74 files changed, 5507 insertions(+), 53 deletions(-) create mode 100644 src/assets/icons/help.svg create mode 100755 src/assets/icons/issue-child.svg create mode 100755 src/assets/icons/issue-open-m.svg create mode 100755 src/assets/icons/list-bulleted.svg create mode 100755 src/assets/icons/merge.svg create mode 100644 src/assets/icons/settings_ethernet.svg create mode 100644 src/assets/icons/sort.svg create mode 100755 src/assets/icons/spinner.svg create mode 100644 src/assets/icons/statistics-bulleted.svg create mode 100755 src/assets/icons/table.svg create mode 100644 src/graphql/fragments/log.ts create mode 100644 src/graphql/fragments/trace.ts create mode 100644 src/graphql/query/log.ts create mode 100644 src/graphql/query/trace.ts create mode 100644 src/store/modules/trace.ts create mode 100644 src/styles/grid.scss create mode 100644 src/styles/index.scss create mode 100644 src/types/trace.d.ts create mode 100644 src/utils/formatJson.ts create mode 100644 src/views/components/ConditionTags.vue create mode 100644 src/views/components/LogTable/Index.vue create mode 100644 src/views/components/LogTable/LogBrowser.vue create mode 100644 src/views/components/LogTable/LogDetail.vue create mode 100644 src/views/components/LogTable/LogService.vue create mode 100644 src/views/components/LogTable/data.ts rename src/views/dashboard/configuration/{ => components}/WidgetOptions.vue (100%) rename src/views/dashboard/configuration/{graph-styles/TopologyItem.vue => topology/StyleOptions.vue} (100%) rename src/views/dashboard/configuration/{ => widget}/MetricOptions.vue (99%) rename src/views/dashboard/configuration/{ => widget}/StandardOptions.vue (99%) rename src/views/dashboard/configuration/{ => widget}/graph-styles/Area.vue (100%) rename src/views/dashboard/configuration/{ => widget}/graph-styles/Bar.vue (100%) rename src/views/dashboard/configuration/{ => widget}/graph-styles/Card.vue (100%) rename src/views/dashboard/configuration/{ => widget}/graph-styles/EndpointList.vue (100%) rename src/views/dashboard/configuration/{ => widget}/graph-styles/HeatMap.vue (100%) rename src/views/dashboard/configuration/{ => widget}/graph-styles/InstanceList.vue (100%) rename src/views/dashboard/configuration/{ => widget}/graph-styles/Line.vue (100%) rename src/views/dashboard/configuration/{ => widget}/graph-styles/ServiceList.vue (100%) rename src/views/dashboard/configuration/{ => widget}/graph-styles/Table.vue (100%) rename src/views/dashboard/configuration/{ => widget}/graph-styles/TopList.vue (100%) rename src/views/dashboard/configuration/{ => widget}/graph-styles/index.ts (100%) create mode 100644 src/views/dashboard/controls/Trace.vue create mode 100644 src/views/dashboard/controls/index.ts create mode 100644 src/views/dashboard/related/trace/Detail.vue create mode 100644 src/views/dashboard/related/trace/Filter.vue create mode 100644 src/views/dashboard/related/trace/TraceList.vue create mode 100644 src/views/dashboard/related/trace/components/D3Graph/Index.vue create mode 100644 src/views/dashboard/related/trace/components/D3Graph/SpanDetail.vue create mode 100644 src/views/dashboard/related/trace/components/List.vue create mode 100644 src/views/dashboard/related/trace/components/Statistics.vue create mode 100644 src/views/dashboard/related/trace/components/Table/Index.vue create mode 100644 src/views/dashboard/related/trace/components/Table/TableContainer.vue create mode 100644 src/views/dashboard/related/trace/components/Table/TableItem.vue create mode 100644 src/views/dashboard/related/trace/components/Table/data.ts create mode 100644 src/views/dashboard/related/trace/components/Table/table.scss create mode 100644 src/views/dashboard/related/trace/components/Tree.vue create mode 100644 src/views/dashboard/related/trace/components/index.ts create mode 100644 src/views/dashboard/related/trace/utils/d3-trace-list.ts create mode 100644 src/views/dashboard/related/trace/utils/d3-trace-tree.ts create mode 100644 src/views/dashboard/related/trace/utils/trace-table.ts diff --git a/package-lock.json b/package-lock.json index eebfd21f..6af0536c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,6 +13,7 @@ "d3-tip": "^0.9.1", "echarts": "^5.2.2", "element-plus": "^2.0.2", + "lodash": "^4.17.21", "pinia": "^2.0.5", "three": "^0.131.3", "three-orbit-controls": "^82.1.0", @@ -28,6 +29,7 @@ "@types/d3-tip": "^3.5.5", "@types/echarts": "^4.9.12", "@types/jest": "^24.0.19", + "@types/lodash": "^4.14.179", "@types/three": "^0.131.0", "@typescript-eslint/eslint-plugin": "^4.18.0", "@typescript-eslint/parser": "^4.18.0", @@ -3325,10 +3327,9 @@ "dev": true }, "node_modules/@types/lodash": { - "version": "4.14.178", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.178.tgz", - "integrity": "sha512-0d5Wd09ItQWH1qFbEyQ7oTQ3GZrMfth5JkbN3EvTKLXcHLRDSXeLnlvlOn0wvxVIwK5o2M8JzP/OWz7T3NRsbw==", - "peer": true + "version": "4.14.179", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.179.tgz", + "integrity": "sha512-uwc1x90yCKqGcIOAT6DwOSuxnrAbpkdPsUOZtwrXb4D/6wZs+6qG7QnIawDuZWg0sWpxl+ltIKCaLoMlna678w==" }, "node_modules/@types/lodash-es": { "version": "4.17.6", @@ -31306,10 +31307,9 @@ "dev": true }, "@types/lodash": { - "version": "4.14.178", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.178.tgz", - "integrity": "sha512-0d5Wd09ItQWH1qFbEyQ7oTQ3GZrMfth5JkbN3EvTKLXcHLRDSXeLnlvlOn0wvxVIwK5o2M8JzP/OWz7T3NRsbw==", - "peer": true + "version": "4.14.179", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.179.tgz", + "integrity": "sha512-uwc1x90yCKqGcIOAT6DwOSuxnrAbpkdPsUOZtwrXb4D/6wZs+6qG7QnIawDuZWg0sWpxl+ltIKCaLoMlna678w==" }, "@types/lodash-es": { "version": "4.17.6", diff --git a/package.json b/package.json index eb7a151a..918708f1 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,7 @@ "d3-tip": "^0.9.1", "echarts": "^5.2.2", "element-plus": "^2.0.2", + "lodash": "^4.17.21", "pinia": "^2.0.5", "three": "^0.131.3", "three-orbit-controls": "^82.1.0", @@ -30,6 +31,7 @@ "@types/d3-tip": "^3.5.5", "@types/echarts": "^4.9.12", "@types/jest": "^24.0.19", + "@types/lodash": "^4.14.179", "@types/three": "^0.131.0", "@typescript-eslint/eslint-plugin": "^4.18.0", "@typescript-eslint/parser": "^4.18.0", @@ -88,7 +90,8 @@ "@typescript-eslint/explicit-function-return-type": "off", "no-use-before-define": "off", "@typescript-eslint/no-use-before-define": "off", - "@typescript-eslint/no-non-null-assertion": "off" + "@typescript-eslint/no-non-null-assertion": "off", + "@typescript-eslint/no-this-alias": "off" }, "overrides": [ { diff --git a/src/assets/icons/help.svg b/src/assets/icons/help.svg new file mode 100644 index 00000000..f3dd80ce --- /dev/null +++ b/src/assets/icons/help.svg @@ -0,0 +1,17 @@ + + + + diff --git a/src/assets/icons/issue-child.svg b/src/assets/icons/issue-child.svg new file mode 100755 index 00000000..c451f853 --- /dev/null +++ b/src/assets/icons/issue-child.svg @@ -0,0 +1,16 @@ + + +icn/issue-child \ No newline at end of file diff --git a/src/assets/icons/issue-open-m.svg b/src/assets/icons/issue-open-m.svg new file mode 100755 index 00000000..dcbf2051 --- /dev/null +++ b/src/assets/icons/issue-open-m.svg @@ -0,0 +1,16 @@ + + +icn/issue-open-m \ No newline at end of file diff --git a/src/assets/icons/list-bulleted.svg b/src/assets/icons/list-bulleted.svg new file mode 100755 index 00000000..77cc0c26 --- /dev/null +++ b/src/assets/icons/list-bulleted.svg @@ -0,0 +1,16 @@ + + +icn/list-bulleted \ No newline at end of file diff --git a/src/assets/icons/merge.svg b/src/assets/icons/merge.svg new file mode 100755 index 00000000..c9f911dd --- /dev/null +++ b/src/assets/icons/merge.svg @@ -0,0 +1,18 @@ + + + + + diff --git a/src/assets/icons/settings_ethernet.svg b/src/assets/icons/settings_ethernet.svg new file mode 100644 index 00000000..8a8c91f8 --- /dev/null +++ b/src/assets/icons/settings_ethernet.svg @@ -0,0 +1,17 @@ + + + + diff --git a/src/assets/icons/sort.svg b/src/assets/icons/sort.svg new file mode 100644 index 00000000..8770c018 --- /dev/null +++ b/src/assets/icons/sort.svg @@ -0,0 +1,15 @@ + + \ No newline at end of file diff --git a/src/assets/icons/spinner.svg b/src/assets/icons/spinner.svg new file mode 100755 index 00000000..8bbc6499 --- /dev/null +++ b/src/assets/icons/spinner.svg @@ -0,0 +1,16 @@ + + + diff --git a/src/assets/icons/statistics-bulleted.svg b/src/assets/icons/statistics-bulleted.svg new file mode 100644 index 00000000..236a28cc --- /dev/null +++ b/src/assets/icons/statistics-bulleted.svg @@ -0,0 +1,15 @@ + + \ No newline at end of file diff --git a/src/assets/icons/table.svg b/src/assets/icons/table.svg new file mode 100755 index 00000000..baa32ebd --- /dev/null +++ b/src/assets/icons/table.svg @@ -0,0 +1,23 @@ + + + + + + + + + + \ No newline at end of file diff --git a/src/components/Selector.vue b/src/components/Selector.vue index 37920ca6..46aa408b 100644 --- a/src/components/Selector.vue +++ b/src/components/Selector.vue @@ -35,7 +35,6 @@ limitations under the License. --> + diff --git a/src/views/components/LogTable/Index.vue b/src/views/components/LogTable/Index.vue new file mode 100644 index 00000000..e70707b8 --- /dev/null +++ b/src/views/components/LogTable/Index.vue @@ -0,0 +1,136 @@ + + + + + diff --git a/src/views/components/LogTable/LogBrowser.vue b/src/views/components/LogTable/LogBrowser.vue new file mode 100644 index 00000000..20fbb7d8 --- /dev/null +++ b/src/views/components/LogTable/LogBrowser.vue @@ -0,0 +1,107 @@ + + + + + diff --git a/src/views/components/LogTable/LogDetail.vue b/src/views/components/LogTable/LogDetail.vue new file mode 100644 index 00000000..45881327 --- /dev/null +++ b/src/views/components/LogTable/LogDetail.vue @@ -0,0 +1,75 @@ + +