diff --git a/README.md b/README.md index 39ae54c3..bd5d26d6 100644 --- a/README.md +++ b/README.md @@ -1,20 +1,20 @@ -Apache SkyWalking Booster UI -=============== +# Apache SkyWalking Booster UI Sky Walking logo -[Apache SkyWalking](https://github.com/apache/skywalking) Booster UI. +[Apache SkyWalking](https://github.com/apache/skywalking) Booster UI. ![NPM BUILD](https://github.com/apache/skywalking-booster-ui/workflows/Node%20CI/badge.svg) This UI starts from SkyWalking OAP v9 core. ## Release + This repo wouldn't release separately. All source codes have been included in the main repo release. The tags match the [main repo](https://github.com/apache/skywalking) tags. ## Development - The app was built with [Vue3.x + Typescript](https://github.com/vuejs/vue). +The app was built with [Vue3.x + Typescript](https://github.com/vuejs/vue). ### Prepare @@ -28,19 +28,21 @@ npm install ### Build **All following builds are for dev.** + ``` npm install -npm run serve +npm run dev ``` The default UI address is `http://localhost:8080`. - # Contact Us -* Submit an [issue](https://github.com/apache/skywalking/issues) if you face some issues. Submit a [discussion](https://github.com/apache/skywalking/discussions) if you want to propose new feature or have any question. -* Mailing list: **dev@skywalking.apache.org**. Mail to `dev-subscribe@skywalking.apache.org`, follow the reply to subscribe the mailing list. -* Join Slack. Send `Request to join SkyWalking slack` mail to the mail list(`dev@skywalking.apache.org`), we will invite you in. -* QQ Group: 392443393, 901167865 + +- Submit an [issue](https://github.com/apache/skywalking/issues) if you face some issues. Submit a [discussion](https://github.com/apache/skywalking/discussions) if you want to propose new feature or have any question. +- Mailing list: **dev@skywalking.apache.org**. Mail to `dev-subscribe@skywalking.apache.org`, follow the reply to subscribe the mailing list. +- Join Slack. Send `Request to join SkyWalking slack` mail to the mail list(`dev@skywalking.apache.org`), we will invite you in. +- QQ Group: 392443393, 901167865 # License + [Apache 2.0 License.](/LICENSE) diff --git a/package-lock.json b/package-lock.json index f807d4c7..ebf1e905 100644 --- a/package-lock.json +++ b/package-lock.json @@ -49,6 +49,7 @@ "husky": "^8.0.2", "jsdom": "^20.0.3", "lint-staged": "^12.1.3", + "mockjs": "^1.1.0", "node-sass": "^8.0.0", "npm-run-all": "^4.1.5", "postcss-html": "^1.3.0", @@ -2147,9 +2148,9 @@ } }, "node_modules/@sideway/formula": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.0.tgz", - "integrity": "sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", + "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==", "dev": true }, "node_modules/@sideway/pinpoint": { @@ -8113,9 +8114,9 @@ } }, "node_modules/http-cache-semantics": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", "dev": true }, "node_modules/http-proxy-agent": { @@ -8970,9 +8971,9 @@ "dev": true }, "node_modules/json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, "bin": { "json5": "lib/cli.js" @@ -9424,9 +9425,9 @@ } }, "node_modules/loader-utils/node_modules/json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, "dependencies": { "minimist": "^1.2.0" @@ -10168,6 +10169,18 @@ "node": ">=10" } }, + "node_modules/mockjs": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mockjs/-/mockjs-1.1.0.tgz", + "integrity": "sha512-eQsKcWzIaZzEZ07NuEyO4Nw65g0hdWAyurVol1IPl1gahRwY+svqzfgfey8U8dahLwG44d6/RwEzuK52rSa/JQ==", + "dev": true, + "dependencies": { + "commander": "*" + }, + "bin": { + "random": "bin/random" + } + }, "node_modules/moment": { "version": "2.29.4", "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", @@ -13626,7 +13639,7 @@ "loader-utils": "^1.1.0", "merge-options": "1.0.1", "micromatch": "3.1.0", - "postcss": "^5.2.17", + "postcss": "^7.0.36", "postcss-prefix-selector": "^1.6.0", "posthtml-rename-id": "^1.0", "posthtml-svg-mode": "^1.0.3", @@ -13789,9 +13802,9 @@ } }, "node_modules/svg-baker/node_modules/postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "dependencies": { "chalk": "^1.1.3", @@ -17604,9 +17617,9 @@ } }, "@sideway/formula": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.0.tgz", - "integrity": "sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", + "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==", "dev": true }, "@sideway/pinpoint": { @@ -22042,9 +22055,9 @@ } }, "http-cache-semantics": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", "dev": true }, "http-proxy-agent": { @@ -22665,9 +22678,9 @@ "dev": true }, "json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true }, "jsonfile": { @@ -22989,9 +23002,9 @@ }, "dependencies": { "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, "requires": { "minimist": "^1.2.0" @@ -23559,6 +23572,15 @@ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true }, + "mockjs": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mockjs/-/mockjs-1.1.0.tgz", + "integrity": "sha512-eQsKcWzIaZzEZ07NuEyO4Nw65g0hdWAyurVol1IPl1gahRwY+svqzfgfey8U8dahLwG44d6/RwEzuK52rSa/JQ==", + "dev": true, + "requires": { + "commander": "*" + } + }, "moment": { "version": "2.29.4", "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", @@ -26176,7 +26198,7 @@ "loader-utils": "^1.1.0", "merge-options": "1.0.1", "micromatch": "3.1.0", - "postcss": "^5.2.17", + "postcss": "^7.0.36", "postcss-prefix-selector": "^1.6.0", "posthtml-rename-id": "^1.0", "posthtml-svg-mode": "^1.0.3", @@ -26307,9 +26329,9 @@ } }, "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "requires": { "chalk": "^1.1.3", diff --git a/package.json b/package.json index a84b375e..87fb1477 100644 --- a/package.json +++ b/package.json @@ -58,6 +58,7 @@ "husky": "^8.0.2", "jsdom": "^20.0.3", "lint-staged": "^12.1.3", + "mockjs": "^1.1.0", "node-sass": "^8.0.0", "npm-run-all": "^4.1.5", "postcss-html": "^1.3.0", @@ -85,10 +86,14 @@ "not dead" ], "lint-staged": { - "*.{js,jsx,ts,tsx,vue,scss,less}": [ - "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --ignore-path .gitignore", + "*.{js,jsx,ts,tsx,vue}": [ + "eslint . --ext .vue,.js,.jsx,.ts,.tsx --fix --ignore-path .gitignore", "prettier --write \"src/**/*.{js,tsx,css,less,scss,vue,html,md}\"", - "stylelint --cache --fix \"**/*.{vue,less,postcss,css,scss}\" --cache --cache-location node_modules/.cache/stylelint/" + "stylelint --cache --fix \"**/*.{vue}\" --cache --cache-location node_modules/.cache/stylelint/" + ], + "*.{scss,less}": [ + "prettier --write \"src/**/*.{js,tsx,css,less,scss,vue,html,md}\"", + "stylelint --cache --fix \"**/*.{less,postcss,css,scss}\" --cache --cache-location node_modules/.cache/stylelint/" ], "{!(package)*.json,*.code-snippets,.!(browserslist)*rc}": [ "prettier --write" diff --git a/src/App.vue b/src/App.vue index 194f4c04..93c3bce8 100644 --- a/src/App.vue +++ b/src/App.vue @@ -15,11 +15,22 @@ limitations under the License. --> + diff --git a/src/assets/icons/add_iframe.svg b/src/assets/icons/add_iframe.svg new file mode 100644 index 00000000..5fa776c0 --- /dev/null +++ b/src/assets/icons/add_iframe.svg @@ -0,0 +1,15 @@ + + \ No newline at end of file diff --git a/src/assets/icons/cross.svg b/src/assets/icons/cross.svg new file mode 100644 index 00000000..3f531cd6 --- /dev/null +++ b/src/assets/icons/cross.svg @@ -0,0 +1,15 @@ + + \ No newline at end of file diff --git a/src/assets/icons/entry.svg b/src/assets/icons/entry.svg new file mode 100644 index 00000000..4a85fcfc --- /dev/null +++ b/src/assets/icons/entry.svg @@ -0,0 +1,15 @@ + + \ No newline at end of file diff --git a/src/assets/icons/exit.svg b/src/assets/icons/exit.svg new file mode 100644 index 00000000..5eb99adf --- /dev/null +++ b/src/assets/icons/exit.svg @@ -0,0 +1,15 @@ + + \ No newline at end of file diff --git a/src/assets/img/technologies/FASTAPI.png b/src/assets/img/technologies/FASTAPI.png new file mode 100644 index 00000000..57d9eec1 Binary files /dev/null and b/src/assets/img/technologies/FASTAPI.png differ diff --git a/src/assets/img/technologies/HTTPX.png b/src/assets/img/technologies/HTTPX.png new file mode 100644 index 00000000..ec47f0c2 Binary files /dev/null and b/src/assets/img/technologies/HTTPX.png differ diff --git a/src/assets/img/technologies/WEBSOCKETS.png b/src/assets/img/technologies/WEBSOCKETS.png new file mode 100644 index 00000000..45cbe30f Binary files /dev/null and b/src/assets/img/technologies/WEBSOCKETS.png differ diff --git a/src/assets/img/tools/ENTRY.png b/src/assets/img/tools/ENTRY.png new file mode 100644 index 00000000..52a33a0c Binary files /dev/null and b/src/assets/img/tools/ENTRY.png differ diff --git a/src/assets/img/tools/EXIT.png b/src/assets/img/tools/EXIT.png new file mode 100644 index 00000000..88aca495 Binary files /dev/null and b/src/assets/img/tools/EXIT.png differ diff --git a/src/assets/img/tools/STREAM.png b/src/assets/img/tools/STREAM.png new file mode 100644 index 00000000..8e1c57f9 Binary files /dev/null and b/src/assets/img/tools/STREAM.png differ diff --git a/src/components/Graph.vue b/src/components/Graph.vue index 6852e5ee..c4f0556d 100644 --- a/src/components/Graph.vue +++ b/src/components/Graph.vue @@ -15,7 +15,15 @@ limitations under the License. --> diff --git a/src/views/dashboard/components/WidgetLink.vue b/src/views/dashboard/components/WidgetLink.vue new file mode 100644 index 00000000..584c24a4 --- /dev/null +++ b/src/views/dashboard/components/WidgetLink.vue @@ -0,0 +1,165 @@ + + + + diff --git a/src/views/dashboard/configuration/ThirdPartyApp.vue b/src/views/dashboard/configuration/ThirdPartyApp.vue new file mode 100644 index 00000000..da700dc2 --- /dev/null +++ b/src/views/dashboard/configuration/ThirdPartyApp.vue @@ -0,0 +1,89 @@ + + + + diff --git a/src/views/dashboard/configuration/index.ts b/src/views/dashboard/configuration/index.ts index 0055f828..1fb47e4f 100644 --- a/src/views/dashboard/configuration/index.ts +++ b/src/views/dashboard/configuration/index.ts @@ -20,6 +20,7 @@ import Widget from "./Widget.vue"; import Topology from "./Topology.vue"; import Event from "./Event.vue"; import TimeRange from "./TimeRange.vue"; +import ThirdPartyApp from "./ThirdPartyApp.vue"; export default { Text, @@ -27,4 +28,5 @@ export default { Topology, Event, TimeRange, + ThirdPartyApp, }; diff --git a/src/views/dashboard/controls/Text.vue b/src/views/dashboard/controls/Text.vue index 209694da..3c637c76 100644 --- a/src/views/dashboard/controls/Text.vue +++ b/src/views/dashboard/controls/Text.vue @@ -13,7 +13,7 @@ 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. -->