diff --git a/public/favicon.png b/public/favicon.png new file mode 100644 index 00000000..51ac6404 Binary files /dev/null and b/public/favicon.png differ diff --git a/public/index.html b/public/index.html index ace7544a..bad1e2ed 100644 --- a/public/index.html +++ b/public/index.html @@ -18,7 +18,7 @@ limitations under the License. --> - + <%= htmlWebpackPlugin.options.title %> diff --git a/src/assets/icons/logo-sw.svg b/src/assets/icons/logo-sw.svg index 72aee3ff..4a0cb5c5 100644 --- a/src/assets/icons/logo-sw.svg +++ b/src/assets/icons/logo-sw.svg @@ -1,32 +1,22 @@ - - - - - Group - Created with Sketch. - - - - - - - - - - + + + + + + + + + + + + + + - \ No newline at end of file + diff --git a/src/assets/icons/logo.svg b/src/assets/icons/logo.svg index 65f0531d..8870e00d 100644 --- a/src/assets/icons/logo.svg +++ b/src/assets/icons/logo.svg @@ -1,29 +1,15 @@ - - - - - Group - Created with Sketch. - - - - - - - + + + + + + + + + - \ No newline at end of file + diff --git a/src/graphql/fetch.ts b/src/graphql/fetch.ts index 4521b43d..917599f5 100644 --- a/src/graphql/fetch.ts +++ b/src/graphql/fetch.ts @@ -24,7 +24,14 @@ async function query(param: { const res: AxiosResponse = await axios.post( "/graphql", { query: param.queryStr, variables: { ...param.conditions } }, - { cancelToken: cancelToken() } + { + cancelToken: cancelToken(), + headers: { + "spp-skywalking-reroute": "true", + Authorization: + "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJkZXZlbG9wZXJfaWQiOiJzeXN0ZW0iLCJjcmVhdGVkX2F0IjoxNjIyNDIxMzY0ODY4LCJleHBpcmVzX2F0IjoxNjUzOTU3MzY0ODY4LCJpYXQiOjE2MjI0MjEzNjR9.ZVHtxQkfCF7KM_dyDOgawbwpEAsmnCWB4c8I52svPvVc-SlzkEe0SYrNufNPniYZeM3IF0Gbojl_DSk2KleAz9CLRO3zfegciXKeEEvGjsNOqfQjgU5yZtBWmTimVXq5QoZMEGuAojACaf-m4J0H7o4LQNGwrDVA-noXVE0Eu84A5HxkjrRuFlQWv3fzqSRC_-lI0zRKuFGD-JkIfJ9b_wP_OjBWT6nmqkZn_JmK7UwniTUJjocszSA2Ma3XLx2xVPzBcz00QWyjhIyiftxNQzgqLl1XDVkRtzXUIrHnFCR8BcgR_PsqTBn5nH7aCp16zgmkkbOpmJXlNpDSVz9zUY4NOrB1jTzDB190COrfCXddb7JO6fmpet9_Zd3kInJx4XsT3x7JfBSWr9FBqFoUmNkgIWjkbN1TpwMyizXASp1nOmwJ64FDIbSpfpgUAqfSWXKZYhSisfnBLEyHCjMSPzVmDh949w-W1wU9q5nGFtrx6PTOxK_WKOiWU8_oeTjL0pD8pKXqJMaLW-OIzfrl3kzQNuF80YT-nxmNtp5PrcxehprlPmqSB_dyTHccsO3l63d8y9hiIzfRUgUjTJbktFn5t41ADARMs_0WMpIGZJyxcVssstt4J1Gj8WUFOdqPsIKigJZMn3yshC5S-KY-7S0dVd0VXgvpPqmpb9Q9Uho", + }, + } ); if (res.data.errors) { res.data.errors = res.data.errors diff --git a/src/graphql/index.ts b/src/graphql/index.ts index ab6fd319..c28f3d5c 100644 --- a/src/graphql/index.ts +++ b/src/graphql/index.ts @@ -51,7 +51,14 @@ class Graphql { query: query[this.queryData], variables: variablesData, }, - { cancelToken: cancelToken() } + { + cancelToken: cancelToken(), + headers: { + "spp-skywalking-reroute": "true", + Authorization: + "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJkZXZlbG9wZXJfaWQiOiJzeXN0ZW0iLCJjcmVhdGVkX2F0IjoxNjIyNDIxMzY0ODY4LCJleHBpcmVzX2F0IjoxNjUzOTU3MzY0ODY4LCJpYXQiOjE2MjI0MjEzNjR9.ZVHtxQkfCF7KM_dyDOgawbwpEAsmnCWB4c8I52svPvVc-SlzkEe0SYrNufNPniYZeM3IF0Gbojl_DSk2KleAz9CLRO3zfegciXKeEEvGjsNOqfQjgU5yZtBWmTimVXq5QoZMEGuAojACaf-m4J0H7o4LQNGwrDVA-noXVE0Eu84A5HxkjrRuFlQWv3fzqSRC_-lI0zRKuFGD-JkIfJ9b_wP_OjBWT6nmqkZn_JmK7UwniTUJjocszSA2Ma3XLx2xVPzBcz00QWyjhIyiftxNQzgqLl1XDVkRtzXUIrHnFCR8BcgR_PsqTBn5nH7aCp16zgmkkbOpmJXlNpDSVz9zUY4NOrB1jTzDB190COrfCXddb7JO6fmpet9_Zd3kInJx4XsT3x7JfBSWr9FBqFoUmNkgIWjkbN1TpwMyizXASp1nOmwJ64FDIbSpfpgUAqfSWXKZYhSisfnBLEyHCjMSPzVmDh949w-W1wU9q5nGFtrx6PTOxK_WKOiWU8_oeTjL0pD8pKXqJMaLW-OIzfrl3kzQNuF80YT-nxmNtp5PrcxehprlPmqSB_dyTHccsO3l63d8y9hiIzfRUgUjTJbktFn5t41ADARMs_0WMpIGZJyxcVssstt4J1Gj8WUFOdqPsIKigJZMn3yshC5S-KY-7S0dVd0VXgvpPqmpb9Q9Uho", + }, + } ) .then((res: AxiosResponse) => { if (res.data.errors) { diff --git a/src/styles/index.scss b/src/styles/index.scss index ce0421bb..7ef3ab9d 100644 --- a/src/styles/index.scss +++ b/src/styles/index.scss @@ -17,3 +17,5 @@ @import "./grid.scss"; @import "./lib.scss"; @import "./reset.scss"; +@import "./spp-light.scss"; +//@import "./spp-dark.scss"; diff --git a/src/styles/spp-dark.scss b/src/styles/spp-dark.scss new file mode 100644 index 00000000..f5db25d5 --- /dev/null +++ b/src/styles/spp-dark.scss @@ -0,0 +1,387 @@ +:root { + --spp-white: #e9ebfc; + --spp-light-grey: #cacaca; + --spp-grey: #a7aebb; + --spp-light-blue: #747990; + --spp-blue: #3d444f; + --spp-red: #e1483b; + --spp-green: #182d34; + --spp-dark-green: #172127; + --spp-darkest-green: #0d1216; + --spp-other-green: #24343d; + --nice-black: #1a1a1a; +} + +.el-table { + --el-table-tr-bg-color: var(--nice-black); + --el-table-header-bg-color: var(--spp-dark-green); + --el-table-row-hover-bg-color: var(--spp-other-green); + --el-table-border-color: var(--spp-darkest-green); + --el-table-bg-color: var(--nice-black); +} + +:root { + --el-disabled-bg-color: var(--nice-black); +} + +.el-pagination.is-background .el-pager li:not(.disabled).active { + background: var(--spp-other-green); +} + +.el-input__inner { + --el-input-bg-color: var(--spp-other-green); + //--el-input-border: red !important; +} + +.el-select { + --el-select-border-color-hover: var(--spp-light-blue); + --el-select-input-focus-border-color: var(--spp-red); + --el-input-placeholder-color: red; + --el-text-color-placeholder: var(--spp-light-grey); + --el-input-border: red; + --el-border-color-base: red; + --el-input-bg-color: red; +} + +.el-scrollbar { + --el-scrollbar-bg-color: var(--spp-light-grey); +} + +.el-select__popper.el-popper[role="tooltip"] { + background: var(--spp-other-green); +} + +.el-select-dropdown__item.hover, .el-select-dropdown__item:hover { + background: var(--spp-other-green); +} + +.el-select__popper.el-popper[role="tooltip"] { + border: 1px solid var(--spp-blue); +} + +.el-popper.is-light { + background: var(--nice-black); +} + +.micro-topo-chart .operations-list { + background: var(--spp-other-green) !important; + color: white !important; +} + +.el-input { + --el-input-border: 1px solid var(--spp-blue); + --el-input-text-color: var(--spp-white); +} + +.el-select-dropdown__item.selected { + color: var(--spp-white); +} + +.el-select__popper.el-popper[role="tooltip"] .el-popper__arrow::before { + border: 1px solid var(--spp-blue); +} + +.el-popper.is-light .el-popper__arrow::before { + background: var(--spp-other-green); +} + +.el-select-dropdown__item.hover, .el-select-dropdown__item:hover { + background: var(--spp-dark-green); +} + +.settings .label { + color: var(--spp-white); +} + +.settings i, span { + color: var(--spp-light-grey); +} + +.utc-input { + color: var(--spp-white) !important; +} + +.settings input { + background: var(--spp-dark-green) !important; + border: 1px solid var(--spp-blue) !important; + color: var(--spp-white); +} + +.auto-time { + color: var(--spp-white); +} + +.el-switch__core { + --el-switch-off-color: var(--spp-dark-green); + --el-switch-on-color: var(--spp-red); +} + +.alarm-tool { + background-color: var(--nice-black) !important; + border-bottom: 1px solid var(--spp-blue) !important; +} + +.el-dialog { + background-color: var(--nice-black); +} + +.el-dialog__title { + color: var(--spp-white); +} + +.el-pagination button:disabled { + background-color: var(--spp-dark-green); +} + +.timeline-table-i { + border-left: 4px solid var(--spp-other-green) !important; +} + +.timeline-table-i::before { + background-color: var(--spp-other-green) !important; +} +.timeline-table-i::after { + background-color: var(--spp-grey) !important; +} + +.settings .label { + color: var(--spp-white) !important; +} + +.event-tool { + background-color: var(--nice-black) !important; +} + +.el-button { + background-color: var(--spp-green); + border-color: var(--spp-other-green); +} + +.el-button--danger { + background-color: var(--spp-red); +} + +.el-button:focus, .el-button:hover { + background-color: var(--spp-darkest-green); + border-color: black +} + +.table { + background-color: var(--nice-black) !important; +} + +.trace-td.selected { + background-color: var(--spp-other-green) !important; +} + +.trace-td.trace-error.selected { + background-color: var(--nice-black) !important; +} + +.el-pager li.active { + background-color: var(--spp-other-green); +} + +.el-pager li { + background-color: var(--spp-green); +} + +.el-pager li.active { + color: var(--spp-white); +} + +.el-pager + button.btn-next[type="button"] { + background-color: var(--spp-grey); +} + +.toggle-selection { + background-color: var(--nice-black) !important; +} + +.side-bar { + background-color: var(--spp-other-green) !important; +} + +.bar-select { + background: black !important; + + .selected { + color: var(--spp-red) !important; + } +} + +.nav-bar { + background-color: var(--spp-darkest-green) !important; + border-bottom: 1px solid var(--spp-darkest-green) !important; + color: var(--spp-white) !important; +} + +.nav-bar.dark { + background-color: var(--spp-darkest-green) !important; + border-bottom: 1px solid var(--spp-green) !important; +} + +.tools { + &:hover { + color: var(--spp-red) !important; + } +} + +.chart-card { + color: var(--spp-white) !important; +} + +.profile-item.level0 { + &:hover { + color: var(--spp-red) !important; + } +} + +.name { + color: var(--spp-red) !important; +} + +//span.active { +// background-color: var(--spp-red) !important; +//} + +.topology { + background-color: var(--spp-darkest-green) !important; +} + +.widget { + background: #010409 !important; +} + +.header { + border-bottom: 1px solid #1c3139 !important; +} + +.body { + color: var(--spp-blue) !important; + background: var(--spp-darkest-green) !important; +} + +.tabs { + input { + background: inherit !important; + } + + input.tab-name { + color: var(--spp-white) !important;; + } + + span.active { + border-bottom: 1px solid var(--spp-red) !important; + color: var(--spp-red) !important; + } +} + +.tab-header { + border-bottom: 1px solid #1c3139 !important; +} + +.vue-grid-layout { + background: var(--spp-darkest-green) !important; +} + +.vue-grid-item:not(.vue-grid-placeholder) { + background: var(--spp-darkest-green) !important; +} + +.vue-grid-item.active { + border: 1px solid var(--spp-red) !important; +} + +.vue-grid-layout { + background: var(--spp-darkest-green) !important; +} + +.vue-grid-item:not(.vue-grid-placeholder) { + background: var(--spp-dark-green) !important; +} + +.vue-grid-item.active { + border: 1px solid var(--spp-red) !important; +} + +.dashboard-tool { + background: #1a262d !important; + border-bottom: 1px solid #1c3139 !important; +} + +.micro-topo-chart { + .operations-list { + span:hover { + color: var(--spp-red) !important; + } + } + .switch-icon { + background-color: #182d3499 !important; + } +} + +.d3-tip { + background: var(--spp-green) !important; +} + +.d3-tip:after { + color: var(--spp-green) !important; +} + +.sankey { + background-color: var(--spp-darkest-green) !important; +} + +.switch-icon { + background-color: #182d3499 !important; +} + +.operations-list { + span:hover { + color: var(--spp-red) !important; + } +} + +.link { + color: var(--spp-red) !important; +} + +.dark-dialog { + background-color: var(--spp-darkest-green) !important; + color: #ddd !important; + + .el-loading-mask { + background-color: red !important; + color: red !important; + } +} + +.el-loading-mask { + background-color: unset !important; + color: unset !important; +} + +.app-main { + background: var(--spp-darkest-green) !important; +} + +.opt { + &.select-disabled { + color: var(--spp-red) !important; + } +} + +blockquote { + border-left: 4px solid var(--spp-light-grey) !important; +} + +a { + color: var(--spp-white) !important; +} + +.timeline-table-i { + &::before { + background-color: #448dfe !important; + } +} diff --git a/src/styles/spp-light.scss b/src/styles/spp-light.scss new file mode 100644 index 00000000..4e31cbe3 --- /dev/null +++ b/src/styles/spp-light.scss @@ -0,0 +1,29 @@ +:root { + --spp-white: #e9ebfc; + --spp-light-grey: #cacaca; + --spp-grey: #a7aebb; + --spp-light-blue: #747990; + --spp-blue: #3d444f; + --spp-red: #e1483b; + --spp-green: #182d34; + --spp-dark-green: #172127; + --spp-darkest-green: #0d1216; + --spp-other-green: #24343d; + --nice-black: #1a1a1a; +} + +.side-bar { + background: var(--spp-other-green) !important; +} + +.el-menu { + background-color: var(--spp-other-green) !important; +} + +.el-sub-menu__title { + background-color: var(--spp-other-green) !important; +} + +.el-menu-item.is-active { + color: var(--spp-red) !important; +} diff --git a/vue.config.js b/vue.config.js index dd9d016c..769a933d 100644 --- a/vue.config.js +++ b/vue.config.js @@ -25,7 +25,7 @@ module.exports = { devServer: { proxy: { "/graphql": { - target: `${process.env.SW_PROXY_TARGET || "http://127.0.0.1:12800"}`, + target: `${process.env.SW_PROXY_TARGET || "https://127.0.0.1:12800"}`, changeOrigin: true, }, }, @@ -35,7 +35,7 @@ module.exports = { }, chainWebpack: (config) => { config.plugin("html").tap((args) => { - args[0].title = "Apache SkyWalking"; + args[0].title = "Live Dashboard - Source++"; return args; }); const svgRule = config.module.rule("svg");