├── .eslintignore
├── .eslintrc
├── .gitignore
├── .npmrc
├── BuildCloudUI
├── package-lock.json
└── package.json
├── CHANGELOG.md
├── Dockerfile
├── README.md
├── assets
├── control.png
├── mind.png
└── platform.png
├── config
├── eslint.json
├── jsconfig.json
├── npmrc.txt
├── vue.config.js
├── vusion.config.js
├── webpack-dll.js
├── webpack-ui.js
├── webpack-umd.js
└── webpack.dev-server.js
├── dll
├── vendorDll-dev.js
├── vendorDll.dev.manifest.json
├── vendorDll.efc688b5d04fff2fb9cd.js
└── vendorDll.manifest.json
├── jsconfig.json
├── lib
├── README.md
└── cloud-ui-internal
│ ├── index.js
│ └── src
│ ├── assets
│ ├── images
│ │ └── nodata.png
│ └── svg
│ │ ├── angle-left.svg
│ │ ├── chart-refresh.svg
│ │ ├── chart-zoom.svg
│ │ └── tb-del.svg
│ ├── base
│ ├── base.css
│ └── global.css
│ ├── filters.js
│ ├── index.js
│ ├── mixins.js
│ ├── u-addon.vue
│ ├── README.md
│ ├── assets
│ │ ├── detail.svg
│ │ ├── help.svg
│ │ ├── info.svg
│ │ ├── readonly.svg
│ │ └── readonly2.svg
│ ├── index.html
│ ├── index.js
│ └── module.css
│ ├── u-bread.vue
│ ├── README.md
│ ├── index.html
│ ├── index.js
│ └── module.css
│ ├── u-date-custom-picker.vue
│ ├── README.md
│ ├── i18n
│ │ ├── en-US.json
│ │ ├── index.js
│ │ └── zh-CN.json
│ ├── index.html
│ ├── index.js
│ └── module.css
│ ├── u-date-picker-monitor.vue
│ ├── README.md
│ ├── i18n
│ │ ├── en-US.json
│ │ ├── index.js
│ │ └── zh-CN.json
│ ├── index.html
│ ├── index.js
│ └── module.css
│ ├── u-desc.vue
│ ├── README.md
│ ├── index.html
│ ├── index.js
│ └── module.css
│ ├── u-form-items.vue
│ ├── README.md
│ ├── index.html
│ ├── index.js
│ └── module.css
│ ├── u-form-table-add-button.vue
│ ├── README.md
│ ├── index.html
│ ├── index.js
│ └── module.css
│ ├── u-form-table-remove-button.vue
│ ├── README.md
│ ├── index.html
│ ├── index.js
│ └── module.css
│ ├── u-form-table-tr.vue
│ ├── README.md
│ ├── index.html
│ ├── index.js
│ └── module.css
│ ├── u-form-table.vue
│ ├── README.md
│ ├── i18n
│ │ ├── en-US.json
│ │ ├── index.js
│ │ └── zh-CN.json
│ ├── index.html
│ ├── index.js
│ └── module.css
│ ├── u-icon-input.vue
│ ├── README.md
│ ├── assets
│ │ └── log-search.svg
│ ├── index.html
│ ├── index.js
│ └── module.css
│ ├── u-log-time.vue
│ ├── README.md
│ ├── assets
│ │ ├── log-change.svg
│ │ └── log-time.svg
│ ├── i18n
│ │ ├── en-US.json
│ │ ├── index.js
│ │ └── zh-CN.json
│ ├── index.html
│ ├── index.js
│ └── module.css
│ ├── u-monitor-chart-modal.vue
│ ├── README.md
│ ├── i18n
│ │ ├── en-US.json
│ │ ├── index.js
│ │ └── zh-CN.json
│ ├── index.html
│ ├── index.js
│ └── module.css
│ ├── u-monitor-chart-panel.vue
│ ├── README.md
│ ├── i18n
│ │ ├── en-US.json
│ │ ├── index.js
│ │ └── zh-CN.json
│ ├── index.html
│ ├── index.js
│ └── module.css
│ ├── u-monitor-chart.vue
│ ├── README.md
│ └── index.js
│ ├── u-monitor-optionbar.vue
│ ├── README.md
│ ├── i18n
│ │ ├── en-US.json
│ │ ├── index.js
│ │ └── zh-CN.json
│ ├── index.html
│ ├── index.js
│ └── module.css
│ ├── u-slider-scale.vue
│ ├── assets
│ │ ├── minus.svg
│ │ └── plus.svg
│ ├── index.html
│ ├── index.js
│ └── module.css
│ ├── u-topo-apm-line.vue
│ ├── README.md
│ ├── index.html
│ ├── index.js
│ └── module.css
│ ├── u-topo-apm-other.vue
│ ├── README.md
│ ├── assets
│ │ ├── home-cache.svg
│ │ ├── home-database.svg
│ │ ├── home-micro.svg
│ │ ├── home-nqs.svg
│ │ └── memcache.svg
│ ├── index.html
│ ├── index.js
│ └── module.css
│ ├── u-topo-apm-rabbitmq.vue
│ ├── README.md
│ ├── assets
│ │ └── home-nqs.svg
│ ├── index.html
│ ├── index.js
│ └── module.css
│ ├── u-topo-apm-service.vue
│ ├── README.md
│ ├── i18n
│ │ ├── en-US.json
│ │ ├── index.js
│ │ └── zh-CN.json
│ ├── index.html
│ ├── index.js
│ └── module.css
│ ├── u-topo-apm-unknow.vue
│ ├── README.md
│ ├── assets
│ │ └── cloud-fill.svg
│ ├── index.html
│ ├── index.js
│ └── module.css
│ ├── u-topo-line.vue
│ ├── README.md
│ ├── index.html
│ ├── index.js
│ └── module.css
│ ├── u-topo-node.vue
│ ├── README.md
│ ├── index.html
│ ├── index.js
│ └── module.css
│ ├── u-topo.vue
│ ├── README.md
│ ├── index.html
│ ├── index.js
│ └── module.css
│ └── utils
│ ├── cache.js
│ ├── directive
│ ├── dis-shortcut.js
│ ├── index.js
│ └── textarea-auto.js
│ ├── directives.js
│ ├── event.js
│ ├── filters
│ ├── apm.js
│ ├── date.js
│ ├── index.js
│ ├── logo.js
│ ├── monitor.js
│ ├── others.js
│ └── unit.js
│ ├── index.js
│ ├── mixins
│ ├── modal.js
│ ├── page.js
│ └── subscribe.js
│ ├── storage
│ └── localStorage.js
│ ├── subscribe.js
│ └── wrapComponent.js
├── micro-app.config.js
├── package.json
├── plugins
├── command.js
├── enhance-webpack.js
├── index.js
└── lib
│ └── vue-cli-service.js
├── src
├── client
│ ├── assets
│ │ ├── arrow-down.svg
│ │ ├── bg.jpg
│ │ ├── check.svg
│ │ ├── delete.svg
│ │ ├── download.svg
│ │ ├── edge-blue.svg
│ │ ├── eye.svg
│ │ ├── eyeclose.svg
│ │ ├── favicon_yun.ico
│ │ ├── home-cache.svg
│ │ ├── home-database.svg
│ │ ├── home-micro.svg
│ │ ├── icons
│ │ │ └── svg
│ │ │ │ ├── angle-bottom.svg
│ │ │ │ ├── angle-down.svg
│ │ │ │ ├── angle-left.svg
│ │ │ │ ├── angle-right.svg
│ │ │ │ ├── angle-top.svg
│ │ │ │ ├── angle-up.svg
│ │ │ │ ├── apm-extend.svg
│ │ │ │ ├── apm-list.svg
│ │ │ │ ├── apm-screenshot.svg
│ │ │ │ ├── apm-small.svg
│ │ │ │ ├── apm-topo.svg
│ │ │ │ ├── chart-refresh.svg
│ │ │ │ ├── dropdown.1.svg
│ │ │ │ ├── dropdown.svg
│ │ │ │ ├── expire.svg
│ │ │ │ ├── goldList.svg
│ │ │ │ ├── help-o.svg
│ │ │ │ ├── help.svg
│ │ │ │ ├── list.svg
│ │ │ │ ├── list_close.svg
│ │ │ │ ├── list_no_response.svg
│ │ │ │ ├── list_open.svg
│ │ │ │ ├── list_warn.svg
│ │ │ │ ├── log-big.svg
│ │ │ │ ├── log-black.svg
│ │ │ │ ├── log-change.svg
│ │ │ │ ├── log-end.svg
│ │ │ │ ├── log-play.svg
│ │ │ │ ├── log-search.svg
│ │ │ │ ├── log-small.svg
│ │ │ │ ├── log-time.svg
│ │ │ │ ├── log-white.svg
│ │ │ │ ├── more.svg
│ │ │ │ ├── reset.svg
│ │ │ │ ├── search.svg
│ │ │ │ ├── sub-account.svg
│ │ │ │ ├── tb-del.1.svg
│ │ │ │ ├── tb-del.svg
│ │ │ │ └── text.svg
│ │ ├── images
│ │ │ ├── btn_play.gif
│ │ │ ├── emptylog.png
│ │ │ ├── flag_high.png
│ │ │ ├── flag_normal.png
│ │ │ ├── log-black.png
│ │ │ ├── log-white.png
│ │ │ ├── ncssprite.png
│ │ │ ├── nodata.png
│ │ │ ├── nodata@2x.png
│ │ │ ├── sprite-repoLogo50.png
│ │ │ └── terminator.png
│ │ ├── none.png
│ │ ├── permission.svg
│ │ ├── sprite-browser.png
│ │ ├── swagger.svg
│ │ ├── u-back.svg
│ │ ├── u_back.svg
│ │ ├── upgrade.png
│ │ ├── user.svg
│ │ └── wait.svg
│ ├── base
│ │ ├── date.js
│ │ └── mixins
│ │ │ ├── docTitle.js
│ │ │ ├── index.js
│ │ │ ├── inputs.js
│ │ │ ├── sortList.js
│ │ │ └── u-block-list.js
│ ├── components
│ │ ├── base
│ │ │ ├── base.css
│ │ │ ├── function.css
│ │ │ ├── global.css
│ │ │ ├── index.css
│ │ │ ├── repo-logo50.css
│ │ │ ├── reset.css
│ │ │ └── xterm.css
│ │ ├── cloud-ui
│ │ │ ├── u-button.vue
│ │ │ │ ├── index.js
│ │ │ │ └── module.css
│ │ │ ├── u-crumb-item.vue
│ │ │ │ ├── index.html
│ │ │ │ ├── index.js
│ │ │ │ └── module.css
│ │ │ ├── u-crumb.vue
│ │ │ │ ├── index.html
│ │ │ │ ├── index.js
│ │ │ │ └── module.css
│ │ │ ├── u-navbar-item.vue
│ │ │ │ ├── index.js
│ │ │ │ └── module.css
│ │ │ ├── u-number-card.vue
│ │ │ │ ├── index.html
│ │ │ │ ├── index.js
│ │ │ │ └── module.css
│ │ │ ├── u-panel-group.vue
│ │ │ │ ├── index.html
│ │ │ │ ├── index.js
│ │ │ │ └── module.css
│ │ │ ├── u-panel.vue
│ │ │ │ ├── index.html
│ │ │ │ ├── index.js
│ │ │ │ └── module.css
│ │ │ ├── u-resize-table-column.vue
│ │ │ │ └── index.js
│ │ │ ├── u-resize-table.vue
│ │ │ │ ├── index.js
│ │ │ │ └── module.css
│ │ │ ├── u-sidebar-suggest-item.vue
│ │ │ │ ├── assets
│ │ │ │ │ ├── check.svg
│ │ │ │ │ └── region.svg
│ │ │ │ ├── index.js
│ │ │ │ └── module.css
│ │ │ ├── u-sidebar-suggest.vue
│ │ │ │ ├── index.js
│ │ │ │ └── module.css
│ │ │ ├── u-spinner.vue
│ │ │ │ ├── index.js
│ │ │ │ └── module.css
│ │ │ └── u-status-icon.vue
│ │ │ │ ├── icons
│ │ │ │ └── success.svg
│ │ │ │ ├── index.js
│ │ │ │ └── module.css
│ │ ├── common
│ │ │ ├── block-list
│ │ │ │ ├── normalizeOperation.js
│ │ │ │ └── u-block-list.vue
│ │ │ ├── form
│ │ │ │ ├── u-form-items.vue
│ │ │ │ │ ├── index.html
│ │ │ │ │ ├── index.js
│ │ │ │ │ └── module.css
│ │ │ │ ├── u-form-table-add-button.vue
│ │ │ │ ├── u-form-table-remove-button.vue
│ │ │ │ ├── u-form-table-tr.vue
│ │ │ │ │ ├── index.html
│ │ │ │ │ ├── index.js
│ │ │ │ │ └── module.css
│ │ │ │ ├── u-form-table.vue
│ │ │ │ ├── u-multi-add.vue
│ │ │ │ ├── u-password-input.vue
│ │ │ │ ├── u-path-table.vue
│ │ │ │ │ ├── index.html
│ │ │ │ │ ├── index.js
│ │ │ │ │ └── module.css
│ │ │ │ ├── u-submit-button.vue
│ │ │ │ └── u-validate-input.vue
│ │ │ │ │ ├── index.html
│ │ │ │ │ ├── index.js
│ │ │ │ │ └── module.css
│ │ │ ├── middle-nav.vue
│ │ │ ├── modal
│ │ │ │ ├── u-form-modal.vue
│ │ │ │ └── u-repo-panel.vue
│ │ │ ├── monitor
│ │ │ │ ├── chartOptions.js
│ │ │ │ ├── filters.js
│ │ │ │ ├── u-monitors-enhance.vue
│ │ │ │ └── u-monitors.vue
│ │ │ ├── search
│ │ │ │ ├── index.vue
│ │ │ │ ├── readme.md
│ │ │ │ ├── tag.box.vue
│ │ │ │ ├── tag.default.vue
│ │ │ │ ├── tag.edit.base.vue
│ │ │ │ ├── tag.edit.vue
│ │ │ │ ├── tag.type.vue
│ │ │ │ ├── tag.vue
│ │ │ │ └── util.js
│ │ │ ├── table
│ │ │ │ ├── u-table-cell-items.vue
│ │ │ │ └── u-table-cell-mores.vue
│ │ │ ├── u-alert.vue
│ │ │ ├── u-back.vue
│ │ │ ├── u-block-info-item.vue
│ │ │ ├── u-block-info.vue
│ │ │ ├── u-bread.vue
│ │ │ ├── u-build-status-icon.vue
│ │ │ │ ├── icons
│ │ │ │ │ ├── error.svg
│ │ │ │ │ ├── pause.svg
│ │ │ │ │ ├── stop.svg
│ │ │ │ │ ├── success.svg
│ │ │ │ │ ├── waiting.svg
│ │ │ │ │ └── warning.svg
│ │ │ │ ├── index.html
│ │ │ │ ├── index.js
│ │ │ │ └── module.css
│ │ │ ├── u-card-info-item.vue
│ │ │ ├── u-card-info.vue
│ │ │ ├── u-card.vue
│ │ │ │ ├── icons
│ │ │ │ │ ├── cloudHost.svg
│ │ │ │ │ ├── ip.svg
│ │ │ │ │ ├── physicalHost.svg
│ │ │ │ │ └── volume.svg
│ │ │ │ ├── index.html
│ │ │ │ ├── index.js
│ │ │ │ └── module.css
│ │ │ ├── u-checkbox-card.vue
│ │ │ ├── u-chips.vue
│ │ │ │ ├── index.html
│ │ │ │ ├── index.js
│ │ │ │ └── module.css
│ │ │ ├── u-code-text.vue
│ │ │ ├── u-config-affinity.vue
│ │ │ ├── u-config-probe.vue
│ │ │ ├── u-confirm.vue
│ │ │ ├── u-container-resource.vue
│ │ │ ├── u-copy.vue
│ │ │ ├── u-desc.vue
│ │ │ ├── u-detail-operate-item.vue
│ │ │ ├── u-detail-operate.vue
│ │ │ ├── u-diff.vue
│ │ │ │ ├── index.html
│ │ │ │ ├── index.js
│ │ │ │ └── module.css
│ │ │ ├── u-easy-copy.vue
│ │ │ │ ├── index.html
│ │ │ │ ├── index.js
│ │ │ │ └── module.css
│ │ │ ├── u-edit-image.vue
│ │ │ ├── u-foot.vue
│ │ │ ├── u-head-card.vue
│ │ │ ├── u-header-logo.vue
│ │ │ ├── u-icon-input.vue
│ │ │ ├── u-icons.vue
│ │ │ │ ├── icons
│ │ │ │ │ ├── DNS.svg
│ │ │ │ │ ├── agent.svg
│ │ │ │ │ ├── alarm.svg
│ │ │ │ │ ├── alarmRule.svg
│ │ │ │ │ ├── alarmUser.svg
│ │ │ │ │ ├── angle-down copy.svg
│ │ │ │ │ ├── angle-down.svg
│ │ │ │ │ ├── angle-left.svg
│ │ │ │ │ ├── angle-right.svg
│ │ │ │ │ ├── angle-up copy.svg
│ │ │ │ │ ├── angle-up.svg
│ │ │ │ │ ├── apm-extend.svg
│ │ │ │ │ ├── apm-list.svg
│ │ │ │ │ ├── apm-screenshot.svg
│ │ │ │ │ ├── apm-small.svg
│ │ │ │ │ ├── apm-topo.svg
│ │ │ │ │ ├── archive.svg
│ │ │ │ │ ├── audit.svg
│ │ │ │ │ ├── cache.svg
│ │ │ │ │ ├── certificate.svg
│ │ │ │ │ ├── chain.svg
│ │ │ │ │ ├── chart-refresh.svg
│ │ │ │ │ ├── chart-zoom.svg
│ │ │ │ │ ├── check.svg
│ │ │ │ │ ├── cicd-version.svg
│ │ │ │ │ ├── close-circle.svg
│ │ │ │ │ ├── close-small.svg
│ │ │ │ │ ├── close.svg
│ │ │ │ │ ├── cluster.svg
│ │ │ │ │ ├── collection.svg
│ │ │ │ │ ├── combcloud.svg
│ │ │ │ │ ├── config.svg
│ │ │ │ │ ├── configManage.svg
│ │ │ │ │ ├── context.svg
│ │ │ │ │ ├── dashboard.svg
│ │ │ │ │ ├── database.svg
│ │ │ │ │ ├── deploy.svg
│ │ │ │ │ ├── deployTemplate.svg
│ │ │ │ │ ├── detail.svg
│ │ │ │ │ ├── doc.svg
│ │ │ │ │ ├── docker.svg
│ │ │ │ │ ├── dockerfileManage.svg
│ │ │ │ │ ├── earphone.svg
│ │ │ │ │ ├── eip.svg
│ │ │ │ │ ├── envManage.svg
│ │ │ │ │ ├── envoy.svg
│ │ │ │ │ ├── expire.svg
│ │ │ │ │ ├── export.svg
│ │ │ │ │ ├── file.svg
│ │ │ │ │ ├── flowColor.svg
│ │ │ │ │ ├── form.svg
│ │ │ │ │ ├── globalconfig.svg
│ │ │ │ │ ├── guide.svg
│ │ │ │ │ ├── hdm.svg
│ │ │ │ │ ├── help.svg
│ │ │ │ │ ├── home-cache-thin.svg
│ │ │ │ │ ├── home-deployment-thin.svg
│ │ │ │ │ ├── home-kafka-thin.svg
│ │ │ │ │ ├── home-micro.svg
│ │ │ │ │ ├── home-mongodb-thin.svg
│ │ │ │ │ ├── home-monitoring-thin.svg
│ │ │ │ │ ├── home-nqs-thin.svg
│ │ │ │ │ ├── home-statefulWorkload-thin.svg
│ │ │ │ │ ├── home-storage-thin.svg
│ │ │ │ │ ├── home-volume-thin.svg
│ │ │ │ │ ├── home-vpc-thin.svg
│ │ │ │ │ ├── home-win-thin.svg
│ │ │ │ │ ├── ic_exportlog.svg
│ │ │ │ │ ├── ic_likes.svg
│ │ │ │ │ ├── ic_quicksearch.svg
│ │ │ │ │ ├── ic_savesearch.svg
│ │ │ │ │ ├── info copy.svg
│ │ │ │ │ ├── info.svg
│ │ │ │ │ ├── json.svg
│ │ │ │ │ ├── json2.svg
│ │ │ │ │ ├── k8s.svg
│ │ │ │ │ ├── line.svg
│ │ │ │ │ ├── lineTemplate.svg
│ │ │ │ │ ├── list-drag.svg
│ │ │ │ │ ├── list.svg
│ │ │ │ │ ├── list_close.svg
│ │ │ │ │ ├── list_move.svg
│ │ │ │ │ ├── list_no_response.svg
│ │ │ │ │ ├── list_open.svg
│ │ │ │ │ ├── list_warn.svg
│ │ │ │ │ ├── loadbalance.svg
│ │ │ │ │ ├── lock.svg
│ │ │ │ │ ├── log copy.svg
│ │ │ │ │ ├── log-big.svg
│ │ │ │ │ ├── log-black.svg
│ │ │ │ │ ├── log-change.svg
│ │ │ │ │ ├── log-end.svg
│ │ │ │ │ ├── log-more.svg
│ │ │ │ │ ├── log-play.svg
│ │ │ │ │ ├── log-search.svg
│ │ │ │ │ ├── log-small.svg
│ │ │ │ │ ├── log-time.svg
│ │ │ │ │ ├── log-white.svg
│ │ │ │ │ ├── log.svg
│ │ │ │ │ ├── log2.svg
│ │ │ │ │ ├── logmanage.svg
│ │ │ │ │ ├── logsearch5.svg
│ │ │ │ │ ├── logseer.svg
│ │ │ │ │ ├── logstash.svg
│ │ │ │ │ ├── manage.svg
│ │ │ │ │ ├── member.svg
│ │ │ │ │ ├── menu.svg
│ │ │ │ │ ├── minus.svg
│ │ │ │ │ ├── monitor.svg
│ │ │ │ │ ├── monitor2.svg
│ │ │ │ │ ├── more2.svg
│ │ │ │ │ ├── ncs-schedule.svg
│ │ │ │ │ ├── ncs
│ │ │ │ │ │ ├── ceph.svg
│ │ │ │ │ │ ├── cloud-shell.svg
│ │ │ │ │ │ ├── container.svg
│ │ │ │ │ │ ├── external-link-alt-solid.svg
│ │ │ │ │ │ ├── global.svg
│ │ │ │ │ │ ├── guide.svg
│ │ │ │ │ │ ├── helm.svg
│ │ │ │ │ │ ├── initcontainer.svg
│ │ │ │ │ │ ├── minus-solid.svg
│ │ │ │ │ │ ├── ncs.svg
│ │ │ │ │ │ ├── nodePool.svg
│ │ │ │ │ │ ├── pdb.svg
│ │ │ │ │ │ ├── repo-manage.svg
│ │ │ │ │ │ ├── server-finder.svg
│ │ │ │ │ │ ├── sshkey.svg
│ │ │ │ │ │ └── yaml.svg
│ │ │ │ │ ├── nec-unused.svg
│ │ │ │ │ ├── nec.svg
│ │ │ │ │ ├── nes.svg
│ │ │ │ │ ├── nos-angle-right.svg
│ │ │ │ │ ├── nos-bucket.svg
│ │ │ │ │ ├── nos-event.svg
│ │ │ │ │ ├── nos-filemode.svg
│ │ │ │ │ ├── nos-mode.svg
│ │ │ │ │ ├── nos-resource.svg
│ │ │ │ │ ├── nos-sskey.svg
│ │ │ │ │ ├── nos-sub.svg
│ │ │ │ │ ├── nos-yidun.svg
│ │ │ │ │ ├── nos.svg
│ │ │ │ │ ├── nqs-plugin.svg
│ │ │ │ │ ├── nsf-config.svg
│ │ │ │ │ ├── nsf-govern.svg
│ │ │ │ │ ├── nsf-instance.svg
│ │ │ │ │ ├── nsf-menu.svg
│ │ │ │ │ ├── nsf-overview.svg
│ │ │ │ │ ├── ops.svg
│ │ │ │ │ ├── outerAuth.svg
│ │ │ │ │ ├── overview.svg
│ │ │ │ │ ├── plugin.svg
│ │ │ │ │ ├── plus.svg
│ │ │ │ │ ├── probe.svg
│ │ │ │ │ ├── project.svg
│ │ │ │ │ ├── readonly.svg
│ │ │ │ │ ├── readonly2.svg
│ │ │ │ │ ├── refresh.svg
│ │ │ │ │ ├── repo.svg
│ │ │ │ │ ├── role.svg
│ │ │ │ │ ├── search.svg
│ │ │ │ │ ├── secret-public.svg
│ │ │ │ │ ├── service.svg
│ │ │ │ │ ├── serviceinstance.svg
│ │ │ │ │ ├── servicemanage.svg
│ │ │ │ │ ├── servicerepo.svg
│ │ │ │ │ ├── servicetopo.svg
│ │ │ │ │ ├── setting.svg
│ │ │ │ │ ├── sidenav
│ │ │ │ │ │ ├── apm.svg
│ │ │ │ │ │ ├── cicd.svg
│ │ │ │ │ │ ├── gaojing.svg
│ │ │ │ │ │ ├── goapi.svg
│ │ │ │ │ │ ├── gportal.svg
│ │ │ │ │ │ ├── gtxs.svg
│ │ │ │ │ │ ├── ncs.svg
│ │ │ │ │ │ ├── nsf.svg
│ │ │ │ │ │ ├── outerAuth.svg
│ │ │ │ │ │ └── overview.svg
│ │ │ │ │ ├── speaker.svg
│ │ │ │ │ ├── star.svg
│ │ │ │ │ ├── switch.svg
│ │ │ │ │ ├── targetRepo.svg
│ │ │ │ │ ├── tb-del.svg
│ │ │ │ │ ├── tenant.svg
│ │ │ │ │ ├── tenantSetting.svg
│ │ │ │ │ ├── text.svg
│ │ │ │ │ ├── tutorial.svg
│ │ │ │ │ ├── userguide.svg
│ │ │ │ │ ├── video.svg
│ │ │ │ │ ├── volume.svg
│ │ │ │ │ ├── warn.svg
│ │ │ │ │ ├── workload.svg
│ │ │ │ │ └── write.svg
│ │ │ │ ├── index.html
│ │ │ │ ├── index.js
│ │ │ │ └── module.css
│ │ │ ├── u-input-search.vue
│ │ │ ├── u-inputs-affinity-rule.vue
│ │ │ ├── u-inputs-dir.vue
│ │ │ ├── u-inputs-env.vue
│ │ │ ├── u-inputs-header.vue
│ │ │ ├── u-inputs-label.vue
│ │ │ ├── u-inputs-volume.vue
│ │ │ ├── u-labels.vue
│ │ │ ├── u-meta-info.vue
│ │ │ ├── u-monitor-chart.vue
│ │ │ │ ├── index.js
│ │ │ │ └── services
│ │ │ │ │ └── apm.js
│ │ │ ├── u-multi-filter.vue
│ │ │ │ ├── base
│ │ │ │ │ └── utils
│ │ │ │ │ │ └── index.js
│ │ │ │ ├── i18n
│ │ │ │ │ ├── en-US.json
│ │ │ │ │ ├── index.js
│ │ │ │ │ └── zh-CN.json
│ │ │ │ ├── icons
│ │ │ │ │ ├── close.svg
│ │ │ │ │ └── keyboard-arrow-down.svg
│ │ │ │ ├── index.html
│ │ │ │ ├── index.js
│ │ │ │ └── module.css
│ │ │ ├── u-note.vue
│ │ │ ├── u-notice.vue
│ │ │ ├── u-page.vue
│ │ │ ├── u-piece.vue
│ │ │ ├── u-popper-select.vue
│ │ │ ├── u-quick-create.vue
│ │ │ ├── u-refresh.vue
│ │ │ ├── u-section.vue
│ │ │ ├── u-select-ex.vue
│ │ │ ├── u-select-image.vue
│ │ │ ├── u-select-with-empty.vue
│ │ │ ├── u-sidebar-group.vue
│ │ │ │ ├── icons
│ │ │ │ │ ├── alarm.svg
│ │ │ │ │ ├── nlb.svg
│ │ │ │ │ ├── overview.svg
│ │ │ │ │ ├── pool.svg
│ │ │ │ │ ├── usage.svg
│ │ │ │ │ ├── user.svg
│ │ │ │ │ └── virtual.svg
│ │ │ │ ├── index.js
│ │ │ │ └── module.css
│ │ │ ├── u-sidebar-header.vue
│ │ │ ├── u-sidebar-item.vue
│ │ │ │ ├── icons
│ │ │ │ │ ├── alarm-selected.svg
│ │ │ │ │ ├── alarm.svg
│ │ │ │ │ ├── overview.svg
│ │ │ │ │ ├── rds-selected.svg
│ │ │ │ │ ├── rds.svg
│ │ │ │ │ ├── respoll.svg
│ │ │ │ │ ├── resused-selected.svg
│ │ │ │ │ ├── resused.svg
│ │ │ │ │ ├── usage-selected.svg
│ │ │ │ │ ├── usage.svg
│ │ │ │ │ ├── user-selected.svg
│ │ │ │ │ ├── user.svg
│ │ │ │ │ ├── win-selected.svg
│ │ │ │ │ └── win.svg
│ │ │ │ ├── index.js
│ │ │ │ └── module.css
│ │ │ ├── u-sidebar.vue
│ │ │ │ ├── index.js
│ │ │ │ └── module.css
│ │ │ ├── u-sidelist.vue
│ │ │ │ ├── index.html
│ │ │ │ ├── index.js
│ │ │ │ └── module.css
│ │ │ ├── u-sidenav.vue
│ │ │ │ ├── index.html
│ │ │ │ ├── index.js
│ │ │ │ └── module.css
│ │ │ ├── u-slide-modal.vue
│ │ │ │ ├── index.html
│ │ │ │ ├── index.js
│ │ │ │ └── module.css
│ │ │ ├── u-sort-radio.vue
│ │ │ │ ├── index.html
│ │ │ │ ├── index.js
│ │ │ │ └── module.css
│ │ │ ├── u-sort-radios.vue
│ │ │ │ ├── index.html
│ │ │ │ ├── index.js
│ │ │ │ └── module.css
│ │ │ ├── u-step-process.vue
│ │ │ │ ├── index.html
│ │ │ │ ├── index.js
│ │ │ │ └── module.css
│ │ │ ├── u-table-column.vue
│ │ │ │ └── index.js
│ │ │ ├── u-table-view-cell.vue
│ │ │ │ └── index.js
│ │ │ ├── u-table-view.vue
│ │ │ │ ├── index.js
│ │ │ │ └── module.css
│ │ │ ├── u-textarea-config.vue
│ │ │ ├── u-tip.vue
│ │ │ ├── u-toast.vue
│ │ │ │ ├── index.html
│ │ │ │ ├── index.js
│ │ │ │ └── module.css
│ │ │ ├── u-tutorial-modal.vue
│ │ │ ├── u-tutorial-popup.vue
│ │ │ │ ├── index.html
│ │ │ │ ├── index.js
│ │ │ │ └── module.css
│ │ │ ├── u-unauth.vue
│ │ │ │ ├── assets
│ │ │ │ │ ├── 404-3.png
│ │ │ │ │ └── block@2x.png
│ │ │ │ ├── index.html
│ │ │ │ ├── index.js
│ │ │ │ └── module.css
│ │ │ ├── u-user-info-modal.vue
│ │ │ ├── u-yaml-diff.vue
│ │ │ ├── x-editor.vue
│ │ │ │ ├── index.html
│ │ │ │ ├── index.js
│ │ │ │ ├── lang.js
│ │ │ │ ├── module.css
│ │ │ │ └── theme.js
│ │ │ ├── x-term-group.vue
│ │ │ │ ├── index.html
│ │ │ │ ├── index.js
│ │ │ │ └── module.css
│ │ │ └── x-term.vue
│ │ │ │ ├── index.html
│ │ │ │ ├── index.js
│ │ │ │ └── module.css
│ │ ├── extends
│ │ │ └── u-base-list-select.vue
│ │ ├── index.js
│ │ └── special
│ │ │ ├── u-view-yaml.vue
│ │ │ └── weather-icon.vue
│ │ │ ├── icons
│ │ │ ├── cloudy.svg
│ │ │ ├── rain.svg
│ │ │ ├── storm.svg
│ │ │ ├── sun.svg
│ │ │ └── sunny.svg
│ │ │ ├── index.html
│ │ │ ├── index.js
│ │ │ └── module.css
│ ├── directives
│ │ └── index.js
│ ├── filters
│ │ ├── filter.js
│ │ └── index.js
│ ├── services
│ │ ├── api.js
│ │ ├── cicd.js
│ │ ├── gtxs.js
│ │ ├── license.js
│ │ ├── ncs.js
│ │ ├── nsf.js
│ │ ├── platform.js
│ │ ├── request.js
│ │ ├── service.js
│ │ └── services
│ │ │ ├── cluster.js
│ │ │ ├── interceptor.js
│ │ │ ├── k8s-resource.js
│ │ │ ├── namespace.js
│ │ │ ├── service.js
│ │ │ └── user.js
│ ├── static
│ │ ├── favicon_yun.ico
│ │ ├── hostMonitor-example.csv
│ │ ├── jianhang.ico
│ │ └── yunjia.ico
│ ├── utils
│ │ ├── authMap
│ │ │ ├── index.js
│ │ │ ├── ncs.js
│ │ │ └── platform.js
│ │ ├── customization.js
│ │ ├── handleCookie.js
│ │ ├── index.js
│ │ ├── license
│ │ │ └── index.js
│ │ ├── message.js
│ │ ├── router.js
│ │ ├── validator.js
│ │ └── wrapComponents.js
│ └── views
│ │ ├── apm
│ │ └── services
│ │ │ ├── agent.js
│ │ │ ├── apis
│ │ │ ├── agent.js
│ │ │ ├── apm.js
│ │ │ ├── chain.js
│ │ │ ├── db.js
│ │ │ ├── event.js
│ │ │ ├── monitor.js
│ │ │ ├── rule.js
│ │ │ ├── service.js
│ │ │ ├── setting.js
│ │ │ └── trace.js
│ │ │ ├── base.js
│ │ │ ├── chain.js
│ │ │ ├── db.js
│ │ │ ├── event.js
│ │ │ ├── index.js
│ │ │ ├── monitor.js
│ │ │ ├── service.js
│ │ │ ├── setting.js
│ │ │ └── trace.js
│ │ ├── ncs
│ │ ├── services
│ │ │ ├── PDB.js
│ │ │ ├── admin
│ │ │ │ ├── calico.js
│ │ │ │ ├── index.js
│ │ │ │ ├── ingressdomainsuffix.js
│ │ │ │ ├── kubeconfig.js
│ │ │ │ └── quota.js
│ │ │ ├── ceph.js
│ │ │ ├── cluster.js
│ │ │ ├── clusterAbout
│ │ │ │ ├── cicd.js
│ │ │ │ ├── cluster.js
│ │ │ │ ├── egress.js
│ │ │ │ ├── index.js
│ │ │ │ ├── quota.js
│ │ │ │ └── securitygroup.js
│ │ │ ├── combine
│ │ │ │ └── index.js
│ │ │ ├── configmap.js
│ │ │ ├── deployment.js
│ │ │ ├── event.js
│ │ │ ├── helm
│ │ │ │ ├── chart.js
│ │ │ │ ├── index.js
│ │ │ │ ├── log.js
│ │ │ │ ├── member.js
│ │ │ │ ├── release.js
│ │ │ │ └── version.js
│ │ │ ├── index.js
│ │ │ ├── ingress.js
│ │ │ ├── ingressController.js
│ │ │ ├── monitor.js
│ │ │ ├── namespace.js
│ │ │ ├── node.js
│ │ │ ├── pod.js
│ │ │ ├── pv.js
│ │ │ ├── pvc.js
│ │ │ ├── repo
│ │ │ │ ├── config.js
│ │ │ │ ├── hbProject.js
│ │ │ │ ├── index.js
│ │ │ │ ├── job.js
│ │ │ │ ├── member.js
│ │ │ │ ├── policy.js
│ │ │ │ ├── repository.js
│ │ │ │ ├── scan.js
│ │ │ │ ├── tag.js
│ │ │ │ └── target.js
│ │ │ ├── secret.js
│ │ │ ├── service.js
│ │ │ ├── shell.js
│ │ │ ├── statefulset.js
│ │ │ ├── storageClass.js
│ │ │ ├── volume.js
│ │ │ └── workload
│ │ │ │ ├── HPA.js
│ │ │ │ ├── index.js
│ │ │ │ └── log.js
│ │ └── utils
│ │ │ ├── filters.js
│ │ │ ├── format.js
│ │ │ ├── index.js
│ │ │ ├── listMixins.js
│ │ │ ├── map.js
│ │ │ └── rules.js
│ │ └── workloads
│ │ └── deployments
│ │ └── index.vue
└── kubecube
│ ├── assets
│ ├── chart-refresh.svg
│ ├── chart-zoom.svg
│ ├── close.svg
│ ├── delete.svg
│ ├── edit.svg
│ ├── empty.png
│ ├── eye.svg
│ ├── eyeclose.svg
│ ├── log-black.svg
│ ├── log-white.svg
│ └── question.svg
│ ├── component
│ ├── common
│ │ ├── kube-block-list
│ │ │ └── index.vue
│ │ ├── kube-chart
│ │ │ ├── template
│ │ │ │ ├── chart.vue
│ │ │ │ ├── float-content.vue
│ │ │ │ ├── index.js
│ │ │ │ ├── jchart.vue
│ │ │ │ ├── legend-content.vue
│ │ │ │ ├── legend-table-chart.js
│ │ │ │ ├── legend-table-chart.vue
│ │ │ │ └── util.js
│ │ │ └── wrapper
│ │ │ │ ├── index.vue
│ │ │ │ └── modal.vue
│ │ ├── kube-checkbox-board
│ │ │ └── kube-checkbox-board.vue
│ │ ├── kube-checkbox-tree
│ │ │ ├── kube-checkbox-tree.vue
│ │ │ ├── kube-tree.vue
│ │ │ └── utils.js
│ │ ├── kube-data-board
│ │ │ └── kube-data-board.vue
│ │ ├── kube-data-table
│ │ │ └── kube-data-table.vue
│ │ ├── kube-data-visibility
│ │ │ └── style.css
│ │ ├── kube-data
│ │ │ └── data-mixin.js
│ │ ├── kube-dynamic-block-layout
│ │ │ ├── index.vue
│ │ │ └── row.vue
│ │ ├── kube-dynamic-block.vue
│ │ ├── kube-dynamic-labels.vue
│ │ ├── kube-dynamic-table-layout
│ │ │ ├── column.vue
│ │ │ ├── index.vue
│ │ │ ├── row.vue
│ │ │ ├── table.css
│ │ │ ├── tb-del.png
│ │ │ └── tb-del.svg
│ │ ├── kube-form-tab
│ │ │ ├── close.icon.svg
│ │ │ └── index.vue
│ │ ├── kube-form
│ │ │ ├── kube-form-item.vue
│ │ │ └── kube-form.vue
│ │ ├── kube-monaco-editor.vue
│ │ ├── kube-search
│ │ │ └── kube-input-search.vue
│ │ ├── kube-table
│ │ │ ├── cell-tag.vue
│ │ │ ├── index.vue
│ │ │ ├── normalComp.vue
│ │ │ ├── resize-bar.vue
│ │ │ ├── row-expand.js
│ │ │ ├── row-group.js
│ │ │ ├── row-selection.vue
│ │ │ ├── row.js
│ │ │ ├── th-icon.vue
│ │ │ ├── th-normal.vue
│ │ │ ├── th-selection.vue
│ │ │ └── th.js
│ │ ├── kube-timer
│ │ │ ├── calendar.vue
│ │ │ ├── datetime.vue
│ │ │ ├── index.vue
│ │ │ └── plain-timer.vue
│ │ ├── slot-wrapper.js
│ │ ├── x-request.vue
│ │ └── x-scope.vue
│ └── global
│ │ ├── common
│ │ ├── kube-project-select.vue
│ │ ├── kube-role-select.vue
│ │ ├── kube-tenant-select-multiple.vue
│ │ ├── kube-tenant-select.vue
│ │ └── kube-yaml-dialog.vue
│ │ ├── form-common
│ │ ├── kube-deployment-input.vue
│ │ └── kube-name-input.vue
│ │ ├── global-error-modal
│ │ └── index.vue
│ │ ├── header
│ │ ├── preconfirm.mixin.js
│ │ ├── u-app-cluster-select.vue
│ │ ├── u-app-cluster-single.vue
│ │ ├── u-app-namespace-select.vue
│ │ ├── u-app-project-select.vue
│ │ └── u-app-tenant-select.vue
│ │ ├── icon
│ │ ├── logo.png
│ │ ├── logo.svg
│ │ ├── logout.svg
│ │ ├── portrait.svg
│ │ ├── project.svg
│ │ └── tenant.svg
│ │ ├── k8s
│ │ ├── label-editor.vue
│ │ └── plain-label-editor.vue
│ │ ├── u-app-bread-cumbs.vue
│ │ ├── u-app-confirm-dialog.vue
│ │ ├── u-app-header.vue
│ │ ├── u-app-nav.vue
│ │ ├── u-app-snackbar.vue
│ │ └── xterm
│ │ ├── kube-terminal.vue
│ │ ├── terminator.png
│ │ └── utils.js
│ ├── directives
│ ├── index.js
│ └── tip
│ │ ├── README.md
│ │ ├── index.js
│ │ └── index.scss
│ ├── elComponent
│ ├── checkbox-card
│ │ └── index.vue
│ ├── confirmModal.vue
│ ├── date-custom-picker.vue
│ ├── dynamic-block
│ │ └── index.vue
│ ├── dynamic-card
│ │ └── index.vue
│ ├── dynamic-tab.vue
│ │ └── index.vue
│ ├── el-link.vue
│ ├── enhance-qz-editor
│ │ └── index.vue
│ ├── global
│ │ ├── project-select.vue
│ │ └── tenant-select.vue
│ ├── head-card.vue
│ ├── inputSearch
│ │ └── index.vue
│ ├── kubeEditor
│ │ ├── defaultOptions.js
│ │ └── index.vue
│ ├── label-editor.vue
│ ├── operate-list
│ │ ├── index.vue
│ │ ├── operate-button-option.vue
│ │ └── renderVnode.vue
│ ├── qz-editor
│ │ ├── QzEditor.vue
│ │ ├── defaultOptions.js
│ │ └── index.js
│ ├── qz-link-group
│ │ ├── README.md
│ │ ├── index.js
│ │ ├── src
│ │ │ ├── qz-link-group.vue
│ │ │ ├── qz-link-more.vue
│ │ │ └── qz-link-simple.vue
│ │ └── test
│ │ │ └── Demo.vue
│ ├── qz-terminal
│ │ ├── README.md
│ │ ├── index.js
│ │ ├── src
│ │ │ ├── assets
│ │ │ │ ├── images
│ │ │ │ │ └── terminator.png
│ │ │ │ └── svg
│ │ │ │ │ ├── align-justify.svg
│ │ │ │ │ ├── external-link-alt-solid.svg
│ │ │ │ │ ├── times-solid.svg
│ │ │ │ │ ├── window-maximize.svg
│ │ │ │ │ ├── window-minimize.svg
│ │ │ │ │ └── window-restore.svg
│ │ │ └── qz-terminal.vue
│ │ └── test
│ │ │ └── Demo.vue
│ ├── status-icon.vue
│ ├── tagList.vue
│ └── termModal
│ │ ├── index.vue
│ │ └── utils.js
│ ├── index.js
│ ├── index.vue
│ ├── k8s-resources
│ ├── alarmmanagerconfigspec
│ │ ├── global.js
│ │ └── index.js
│ ├── base.js
│ ├── base
│ │ ├── common.js
│ │ ├── config.js
│ │ ├── utils.js
│ │ └── workload.js
│ ├── configmap
│ │ └── index.js
│ ├── container
│ │ ├── index.js
│ │ └── status.js
│ ├── crd
│ │ └── index.js
│ ├── cronjob
│ │ ├── index.js
│ │ ├── spec.js
│ │ └── status.js
│ ├── cubeResourceQuota
│ │ └── index.js
│ ├── daemonsets
│ │ ├── index.js
│ │ ├── spec.js
│ │ └── status.js
│ ├── deployment
│ │ ├── index.js
│ │ ├── spec.js
│ │ └── status.js
│ ├── event
│ │ └── index.js
│ ├── ingress
│ │ ├── index.js
│ │ ├── spec.js
│ │ └── status.js
│ ├── job
│ │ ├── index.js
│ │ ├── spec.js
│ │ └── status.js
│ ├── label-selector.js
│ ├── logconfigs-new
│ │ └── index.js
│ ├── logconfigs
│ │ └── index.js
│ ├── metadata.js
│ ├── monitor
│ │ ├── index.js
│ │ ├── panel
│ │ │ └── index.js
│ │ ├── spec.js
│ │ └── utils.js
│ ├── networkPolicy
│ │ └── index.js
│ ├── node
│ │ └── index.js
│ ├── persistentvolumeclaim
│ │ ├── index.js
│ │ ├── spec.js
│ │ └── status.js
│ ├── persistentvolumes
│ │ ├── index.js
│ │ ├── spec.js
│ │ └── status.js
│ ├── pod
│ │ ├── affinity.js
│ │ ├── index.js
│ │ ├── node-affinity.js
│ │ ├── pod-affinity.js
│ │ ├── pod-spec.js
│ │ ├── pod-template.js
│ │ └── toleration.js
│ ├── prometheusRule
│ │ ├── global.js
│ │ └── index.js
│ ├── resourceQuota
│ │ └── index.js
│ ├── role
│ │ └── index.js
│ ├── rolebinding
│ │ └── rolebinding.js
│ ├── scope
│ │ ├── project.js
│ │ └── tenant.js
│ ├── secret
│ │ └── index.js
│ ├── service
│ │ ├── index.js
│ │ ├── spec.js
│ │ └── status.js
│ ├── statefulset
│ │ ├── index.js
│ │ ├── spec.js
│ │ └── status.js
│ ├── storageclass
│ │ └── index.js
│ └── subnamespace
│ │ └── index.js
│ ├── mixins
│ ├── functional.js
│ ├── index.js
│ ├── pagenation
│ │ └── index.js
│ ├── pipe
│ │ ├── kube-pipe.vue
│ │ ├── kube-valve.vue
│ │ ├── pipe.js
│ │ ├── pipe.mixin.js
│ │ └── valve.mixin.js
│ └── validators.js
│ ├── plugins
│ ├── kubecube.js
│ ├── validators.js
│ ├── vee-validate.js
│ └── vue-meta.js
│ ├── router
│ ├── control-namespace.js
│ ├── control.js
│ ├── index.js
│ ├── platform.js
│ ├── router-confirm.js
│ ├── user.js
│ └── wrapper.js
│ ├── service-combined
│ └── pod-service.js
│ ├── services
│ ├── audit.js
│ ├── cluster.js
│ ├── interceptor.js
│ ├── k8s-common-extend-resource.js
│ ├── k8s-extend-resource.js
│ ├── k8s-resource.js
│ ├── logseer.js
│ ├── monitor.js
│ ├── namespace.js
│ ├── role-binding.js
│ ├── scope.js
│ ├── service.js
│ ├── user.js
│ └── webconsole.js
│ ├── store
│ ├── confirm.js
│ ├── feature.js
│ ├── index.js
│ ├── lens.js
│ ├── like.js
│ ├── scope.js
│ ├── snackbar.js
│ └── timer.js
│ ├── style
│ ├── global.scss
│ ├── index.css
│ └── theme
│ │ ├── index.scss
│ │ └── var.scss
│ ├── utils
│ ├── constance.js
│ ├── functional.js
│ ├── persistant.js
│ └── validators.js
│ └── views
│ ├── circle
│ └── no-right.vue
│ ├── control
│ ├── bootstrap
│ │ └── index.vue
│ ├── config
│ │ ├── configmap-input.vue
│ │ ├── docker-config.vue
│ │ ├── edit-configmap.vue
│ │ ├── edit-secret.vue
│ │ ├── info.vue
│ │ ├── list.vue
│ │ └── opaque-input.vue
│ ├── crd
│ │ ├── detail.vue
│ │ ├── index.vue
│ │ └── list.vue
│ ├── edit.js
│ ├── index.vue
│ ├── list.js
│ ├── logseer
│ │ ├── edit
│ │ │ ├── components
│ │ │ │ ├── match-field-input.vue
│ │ │ │ ├── meta-pod-input.vue
│ │ │ │ ├── multiline-input.vue
│ │ │ │ ├── path-input.vue
│ │ │ │ └── workload-lable-select.vue
│ │ │ ├── demo.png
│ │ │ └── index.vue
│ │ ├── info.vue
│ │ ├── lens
│ │ │ ├── components
│ │ │ │ ├── assets
│ │ │ │ │ ├── ic_add.png
│ │ │ │ │ ├── ic_add.svg
│ │ │ │ │ ├── ic_add@2x.png
│ │ │ │ │ ├── ic_add_hover.png
│ │ │ │ │ ├── ic_add_hover.svg
│ │ │ │ │ ├── ic_add_hover@2x.png
│ │ │ │ │ ├── ic_cancel.png
│ │ │ │ │ ├── ic_cancel@2x.png
│ │ │ │ │ ├── ic_close.png
│ │ │ │ │ ├── ic_close@2x.png
│ │ │ │ │ ├── ic_close_hover.png
│ │ │ │ │ ├── ic_close_hover@2x.png
│ │ │ │ │ ├── ic_likes.svg
│ │ │ │ │ ├── ic_删除.png
│ │ │ │ │ ├── ic_删除@2x.png
│ │ │ │ │ ├── ic_删除_hover.png
│ │ │ │ │ └── ic_删除_hover@2x.png
│ │ │ │ ├── download-modal.vue
│ │ │ │ ├── filter-agg.vue
│ │ │ │ ├── filter-condition-input.vue
│ │ │ │ ├── filter-list.vue
│ │ │ │ ├── filter-operators.vue
│ │ │ │ ├── filter-popper.vue
│ │ │ │ ├── filter-query.vue
│ │ │ │ ├── filter-task.vue
│ │ │ │ ├── filter-trace-query.vue
│ │ │ │ ├── filter-utils.js
│ │ │ │ ├── histgram-echarts.vue
│ │ │ │ ├── infinite-scroll.vue
│ │ │ │ ├── likes-popper.vue
│ │ │ │ ├── likes-transport.vue
│ │ │ │ ├── log-display-table.vue
│ │ │ │ ├── log-table.vue
│ │ │ │ └── stream-scroll.vue
│ │ │ └── index.vue
│ │ └── list.vue
│ ├── monitor
│ │ ├── dimensionSelect.vue
│ │ └── monitor.vue
│ ├── namespace.vue
│ ├── observable
│ │ ├── alarm-manager-config
│ │ │ ├── edit-dialog.vue
│ │ │ ├── list.vue
│ │ │ ├── secret-key.vue
│ │ │ └── secret-select.vue
│ │ ├── promethus-rule-spec
│ │ │ ├── alarm-extend-setting
│ │ │ │ ├── constance.js
│ │ │ │ ├── index.vue
│ │ │ │ └── mapping.js
│ │ │ ├── edit.vue
│ │ │ └── list.vue
│ │ └── utils.js
│ ├── overview
│ │ └── dashboard.vue
│ ├── pvc
│ │ ├── create-pvc-dialog.vue
│ │ ├── detail
│ │ │ └── info.vue
│ │ └── list.vue
│ ├── service
│ │ ├── detail
│ │ │ ├── external-dialog.vue
│ │ │ ├── external.vue
│ │ │ ├── info.vue
│ │ │ └── ingress-info.vue
│ │ ├── edit
│ │ │ ├── component
│ │ │ │ ├── chips-input.vue
│ │ │ │ ├── deployment-statefulsets-input.vue
│ │ │ │ ├── host-block.vue
│ │ │ │ ├── host-input.vue
│ │ │ │ ├── path-table.vue
│ │ │ │ └── secret-select.vue
│ │ │ ├── index.vue
│ │ │ ├── ingress.vue
│ │ │ └── ports.vue
│ │ └── list.vue
│ ├── workload
│ │ ├── detail
│ │ │ ├── dialog
│ │ │ │ └── modify-replicas.vue
│ │ │ ├── index.vue
│ │ │ └── tabs
│ │ │ │ ├── component
│ │ │ │ └── log-context.vue
│ │ │ │ ├── condition.vue
│ │ │ │ ├── container-detail.vue
│ │ │ │ ├── event.vue
│ │ │ │ ├── info-pod.vue
│ │ │ │ ├── info.js
│ │ │ │ ├── info.vue
│ │ │ │ ├── jobs.vue
│ │ │ │ ├── log.vue
│ │ │ │ ├── pod.vue
│ │ │ │ └── test.json
│ │ ├── dp
│ │ │ ├── advance
│ │ │ │ ├── advance-info.vue
│ │ │ │ ├── affinity-config.vue
│ │ │ │ ├── deploy-config.vue
│ │ │ │ ├── job-config.vue
│ │ │ │ ├── repo-secret-config.vue
│ │ │ │ └── toleration-config.vue
│ │ │ ├── container
│ │ │ │ ├── container-info.vue
│ │ │ │ ├── env-config.vue
│ │ │ │ ├── env
│ │ │ │ │ ├── configmap-env.vue
│ │ │ │ │ ├── env.mixin.js
│ │ │ │ │ ├── field-env.vue
│ │ │ │ │ ├── resource-env.vue
│ │ │ │ │ ├── secret-env.vue
│ │ │ │ │ └── value-env.vue
│ │ │ │ ├── port-config.vue
│ │ │ │ ├── probe-config.vue
│ │ │ │ ├── resource-config.vue
│ │ │ │ ├── volumns-config.vue
│ │ │ │ └── volumns
│ │ │ │ │ ├── configmap-config.vue
│ │ │ │ │ ├── emptydir-config.vue
│ │ │ │ │ ├── emptydir-dialog.vue
│ │ │ │ │ ├── hostpath-config.vue
│ │ │ │ │ ├── pvc-config.vue
│ │ │ │ │ ├── secret-config.vue
│ │ │ │ │ ├── vct-config.vue
│ │ │ │ │ └── volumn-mixin.js
│ │ │ ├── edit.vue
│ │ │ ├── index.js
│ │ │ ├── info
│ │ │ │ ├── basic-info.vue
│ │ │ │ ├── storage-config.vue
│ │ │ │ ├── tenant-select.vue
│ │ │ │ └── update-strategy.vue
│ │ │ └── updateImage.vue
│ │ ├── list.vue
│ │ └── pod
│ │ │ └── index.vue
│ └── yaml
│ │ ├── utils.js
│ │ └── yaml.vue
│ ├── login
│ ├── assets
│ │ ├── bg.jpg
│ │ └── github.png
│ ├── index.vue
│ ├── noAuth.vue
│ ├── password-input.vue
│ └── password.vue
│ ├── platform
│ ├── audit
│ │ └── index.vue
│ ├── bootstrap
│ │ ├── member-boot.vue
│ │ ├── namespace-boot.vue
│ │ ├── project-boot.vue
│ │ ├── quick-boot.vue
│ │ ├── tenant-boot.vue
│ │ └── tenantquota-boot.vue
│ ├── cluster
│ │ ├── detail.vue
│ │ ├── details
│ │ │ ├── component
│ │ │ │ └── node-input-serch.vue
│ │ │ ├── info.vue
│ │ │ ├── network
│ │ │ │ ├── cidr-inputs.vue
│ │ │ │ ├── edit.vue
│ │ │ │ ├── index.vue
│ │ │ │ ├── ns-select.vue
│ │ │ │ ├── port-inputs.vue
│ │ │ │ ├── regular-input.vue
│ │ │ │ └── source-block.vue
│ │ │ ├── node.vue
│ │ │ ├── persistentvolumes.vue
│ │ │ └── storageclass.vue
│ │ ├── dialogs
│ │ │ ├── cluster.vue
│ │ │ ├── domainSuffix.vue
│ │ │ ├── labels.vue
│ │ │ ├── node.vue
│ │ │ └── taint.vue
│ │ ├── index.vue
│ │ └── node
│ │ │ ├── event.vue
│ │ │ ├── index.vue
│ │ │ ├── info.vue
│ │ │ ├── monitor.vue
│ │ │ └── pod.vue
│ ├── index.vue
│ ├── namespace
│ │ ├── cluster-select.vue
│ │ ├── clusterInfoDialog.vue
│ │ ├── el-ns-quota-table.vue
│ │ ├── index.vue
│ │ ├── ns-metadata-dialog.vue
│ │ ├── ns-quota-dialog.vue
│ │ └── ns-quota-table.vue
│ ├── observable
│ │ ├── alermanager-dialog.vue
│ │ ├── alertmanager-config.vue
│ │ ├── monitor.js
│ │ ├── monitor.vue
│ │ ├── prometheus-rule-edit.vue
│ │ ├── prometheus-rule-instance.vue
│ │ └── prometheus-rule.vue
│ ├── quota
│ │ ├── el-hard-quota-table.vue
│ │ ├── hard-quota-table.vue
│ │ ├── index.vue
│ │ ├── quota-dialog.vue
│ │ └── storage-quota-input.vue
│ ├── role
│ │ ├── index.vue
│ │ ├── role-dialog.vue
│ │ └── roles.vue
│ ├── tenant
│ │ ├── dialogs
│ │ │ └── domainSuffix.vue
│ │ ├── member-dialog.vue
│ │ ├── member.vue
│ │ ├── project-dialog.vue
│ │ ├── project.vue
│ │ ├── tabs.vue
│ │ ├── tenant-dialog.vue
│ │ └── tenant.vue
│ └── user
│ │ ├── index.vue
│ │ ├── user-dialog.vue
│ │ └── user-upload-dialog.vue
│ └── user
│ ├── index.vue
│ └── open-api.vue
├── template
├── index.html
├── index.prod.html
└── kubecube.html
└── ui
└── cobalt
├── .version
├── assets
├── 52976143
│ └── arrow-down.svg
├── 78465218
│ └── stripe.png
├── 0153905e
│ └── remove.svg
├── 04a434e7
│ └── logo-inverse.svg
├── 07cbf9cd
│ └── secret_public.svg
├── 0a391d61
│ └── rotate-left.svg
├── 0d506648
│ └── close-small.svg
├── 0f5bb9f5
│ └── end.svg
├── 1cdd5651
│ └── waiting.svg
├── 1d8560a1
│ └── chart-zoom.svg
├── 22bfbb1b
│ └── date.svg
├── 294b2600
│ └── move_icon.png
├── 2ce8ca9b
│ └── logo.svg
├── 2e3cb38b
│ └── help.svg
├── 309e27cb
│ └── refresh.svg
├── 3b9d1a92
│ ├── empty.png
│ └── nodata.png
├── 3c7c1a28
│ └── arrow-up.svg
├── 405242d1
│ ├── enabled.svg
│ └── list-start.svg
├── 46d9e0d2
│ └── arrow-down.svg
├── 474542fd
│ └── keyboard-arrow-up.svg
├── 4763f900
│ └── search.svg
├── 5b602238
│ └── create.svg
├── 5d234ebe
│ └── logo-c-white.svg
├── 5e637e07
│ └── unpaid.svg
├── 5f19f5d5
│ └── expire.svg
├── 5fe93a07
│ └── edit.svg
├── 653dfb35
│ └── angle-up.svg
├── 698c2c91
│ └── area.svg
├── 7e883063
│ └── logo-yiwu-2color.svg
├── 81c2ac42
│ └── close.svg
├── 870a40ae
│ └── logo-163yun-2color.svg
├── 87741a78
│ └── angle-right.svg
├── 8ac7b510
│ └── chart-refresh.svg
├── 8b7e0ac7
│ └── error.svg
├── 8e2c741c
│ └── spinner.svg
├── 90b71868
│ ├── disabled.svg
│ └── list_no_response.svg
├── 9d4c13fb
│ └── info.svg
├── 9f01ef52
│ └── success.svg
├── 9fc757e9
│ └── shadow-up.png
├── a6a3d16e
│ ├── apm-alert.svg
│ └── warning.svg
├── a884e287
│ └── icon.svg
├── aa3eaa22
│ └── angle-right.svg
├── acc43fb9
│ └── angle-down.svg
├── aec62c86
│ └── portrait.svg
├── b4208d94
│ └── shadow-down.png
├── bbd25280
│ └── password.svg
├── bfbeb69f
│ └── alert.svg
├── c4ebc54c
│ └── arrow-left.svg
├── c8862ae5
│ └── refresh.svg
├── cd90a7ab
│ └── keyboard-arrow-down.svg
├── d171fbf3
│ └── high.png
├── d5760e94
│ └── add.svg
├── d5bd08d1
│ └── mount.svg
├── d631c933
│ └── logo-163yun-white.svg
├── db4f0414
│ └── angle-left.svg
├── dea22f5d
│ └── logout.svg
├── e0e028fe
│ └── lock.svg
├── e74746f4
│ └── rotate-right.svg
├── e780fdb0
│ └── logo-c-2color.svg
├── ec271fc6
│ └── keyboard-arrow-right.svg
├── ed5433e7
│ └── list_move.svg
├── ed73893f
│ └── logo-yiwu-white.svg
├── edef239a
│ └── dropdown.svg
├── f21c0117
│ └── nec-unused.svg
├── fc02eb53
│ └── arrow-right.svg
├── fdf17fe5
│ └── pause.svg
├── fe364bc1
│ └── netease-cloud-logo.svg
└── ff31c253
│ └── arrow-up.svg
├── chunk.0.js
├── chunk.0.js.map
├── cloud-ui.css
├── cloud-ui.css.map
├── cloud-ui.js
└── cloud-ui.js.map
/.eslintignore:
--------------------------------------------------------------------------------
1 | node_modules/
2 | src/server/utils/
3 | polyfill.min.js
4 | public/
5 | _*
--------------------------------------------------------------------------------
/.eslintrc:
--------------------------------------------------------------------------------
1 | {
2 | "extends": [
3 | "eslint-config-2o3t/vue",
4 | "plugin:vue/recommended"
5 | ],
6 | "rules": {
7 | "vue/require-default-prop": "off"
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/.npmrc:
--------------------------------------------------------------------------------
1 | registry=https://registry.npm.taobao.org
2 | strict-ssl=false
3 | package-lock=false
4 |
--------------------------------------------------------------------------------
/BuildCloudUI/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "build-cloud-ui",
3 | "version": "0.0.1",
4 | "description": "A micro app fullstack project",
5 | "author": "",
6 | "private": true,
7 | "scripts": {
8 | "update:ui": "npx cloud-ui-custom -o \"../ui/cobalt\" --global-css \"../src/client/components/base/global.css\" -t cobalt -c \"library-path=../src/client/components\"",
9 | "update:ui:force": "npm run update:ui -- -f"
10 | },
11 | "devDependencies": {
12 | "cloud-ui.vusion": "0.3.103",
13 | "proto-ui.vusion": "0.3.69",
14 | "vusion-cli": "~0.7.17"
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM nginx
2 | COPY public /usr/share/nginx/html/public
--------------------------------------------------------------------------------
/assets/control.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubecube-io/kubecube-front/7adeb5840a03415802f871a6f5a5dcee9a57e3f9/assets/control.png
--------------------------------------------------------------------------------
/assets/mind.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubecube-io/kubecube-front/7adeb5840a03415802f871a6f5a5dcee9a57e3f9/assets/mind.png
--------------------------------------------------------------------------------
/assets/platform.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubecube-io/kubecube-front/7adeb5840a03415802f871a6f5a5dcee9a57e3f9/assets/platform.png
--------------------------------------------------------------------------------
/config/eslint.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": [
3 | "eslint-config-2o3t/vue"
4 | ],
5 | "rules": {
6 | "no-unused-vars": [0]
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/config/jsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "exclude": ["public", "node_modules", "dll"],
3 | "compilerOptions": {
4 | "baseUrl": ".",
5 | "target": "esnext"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/config/npmrc.txt:
--------------------------------------------------------------------------------
1 | registry=https://registry.npm.taobao.org
2 | strict-ssl=false
3 |
--------------------------------------------------------------------------------
/config/vue.config.js:
--------------------------------------------------------------------------------
1 |
2 | module.exports = {
3 | outputDir: 'public',
4 | publicPath: '/public/',
5 | filenameHashing: true,
6 | runtimeCompiler: true,
7 | lintOnSave: process.env.MICRO_APP_LINT_CONFG_SWITCH === 'close' ? false : process.env.NODE_ENV !== 'production', // 默认开启
8 | transpileDependencies: [
9 | '@micro-app', // all
10 | ],
11 | configureWebpack: {
12 | module: {
13 | rules: [
14 | {
15 | test: /\.s[ac]ss$/i,
16 | use: [ "style-loader", "css-loader", "sass-loader" ],
17 | },
18 | ],
19 | },
20 | }
21 |
22 | };
23 |
--------------------------------------------------------------------------------
/config/vusion.config.js:
--------------------------------------------------------------------------------
1 | const path = require('path');
2 |
3 | module.exports = {
4 | name: process.env.SUB_MODULES_ICON_FONT_NAME,
5 | type: 'app',
6 | libraryPath: path.resolve(__dirname, '../src/client/components/'),
7 | staticPath: 'src/client/static/',
8 | docs: false,
9 | overwrite: false,
10 | };
11 |
12 |
--------------------------------------------------------------------------------
/config/webpack-ui.js:
--------------------------------------------------------------------------------
1 | /**
2 | * common dll 部分dll文件由webpack.dll.config.js生成,包括了vue,vue-router, lodash, core-js
3 | */
4 |
5 | const path = require('path');
6 |
7 | module.exports = config => {
8 | config.resolve.alias
9 | .set('cloud-ui.vusion$', path.resolve(__dirname, '../ui/cobalt/cloud-ui.js'))
10 | .set('cloud-ui.vusion/cloud-ui.css$', path.resolve(__dirname, '../ui/cobalt/cloud-ui.css'))
11 | // .set('cloud-ui.vusion$', require.resolve('cloud-ui.vusion/dist/index.js'))
12 | // .set('cloud-ui.vusion/cloud-ui.css$', require.resolve('cloud-ui.vusion/dist/theme-cobalt.css'))
13 |
14 | .set('@necfe/cloud-ui-internal', path.resolve(__dirname, '../lib/cloud-ui-internal'));
15 | return config;
16 | };
17 |
--------------------------------------------------------------------------------
/config/webpack-umd.js:
--------------------------------------------------------------------------------
1 | /**
2 | * common umd部分,开发时引入加快打包速度
3 | */
4 | const path = require('path');
5 | const CopyPlugin = require('copy-webpack-plugin');
6 |
7 | module.exports = (config, { dirname }) => {
8 | config.resolve.alias
9 | .set('library$', path.resolve(__dirname, '../umd/common.js'));
10 | config
11 | .plugin('copy-umd')
12 | .use(CopyPlugin, [[{
13 | from: path.resolve(__dirname, '../umd'),
14 | to: path.resolve(dirname, '../public'),
15 | }]])
16 | .end();
17 | return config;
18 | };
19 |
--------------------------------------------------------------------------------
/lib/README.md:
--------------------------------------------------------------------------------
1 | # 注意
2 |
3 | 请使用别名 `@necfe/cloud-ui-internal` 引用 `cloud-ui-internal` 中的文件
4 |
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/index.js:
--------------------------------------------------------------------------------
1 | export * from './src/index.js';
2 |
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/assets/images/nodata.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubecube-io/kubecube-front/7adeb5840a03415802f871a6f5a5dcee9a57e3f9/lib/cloud-ui-internal/src/assets/images/nodata.png
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/base/base.css:
--------------------------------------------------------------------------------
1 | @import 'cloud-ui.vusion/src/base/base.css';
2 |
3 | body {
4 | color: #123344;
5 | }
6 |
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/base/global.css:
--------------------------------------------------------------------------------
1 | @import 'cloud-ui.vusion/src/base/global.css';
2 |
3 | $brand-primary: #339bf3;
4 |
5 |
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/filters.js:
--------------------------------------------------------------------------------
1 | import date from './utils/filters/date.js';
2 | import logo from './utils/filters/logo.js';
3 | import others from './utils/filters/others.js';
4 | import unit from './utils/filters/unit.js';
5 |
6 | export {
7 | date,
8 | logo,
9 | others,
10 | unit,
11 | };
12 |
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/mixins.js:
--------------------------------------------------------------------------------
1 | import Subscribe from './utils/mixins/subscribe.js';
2 | import Modal from './utils/mixins/modal.js';
3 | import Page from './utils/mixins/page.js';
4 |
5 | export {
6 | Subscribe,
7 | Modal,
8 | Page,
9 | };
10 |
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-addon.vue/assets/info.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-addon.vue/assets/readonly.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-addon.vue/assets/readonly2.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-addon.vue/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-addon.vue/index.js:
--------------------------------------------------------------------------------
1 | export default {
2 | name: 'u-addon',
3 | props: {
4 | name: {
5 | type: String,
6 | default: 'info',
7 | },
8 | size: {
9 | type: [Number, String],
10 | default: 14,
11 | },
12 | },
13 | };
14 |
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-bread.vue/README.md:
--------------------------------------------------------------------------------
1 | # 面包屑导航
2 |
3 | ## 示例
4 | ### 基本形式
5 |
6 | ``` html
7 |
8 | ```
9 |
10 | # API
11 | ### Props/Attrs
12 |
13 | | Prop/Attr | Type | Default | Description |
14 | | --------- | ---- | ------- | ----------- |
15 | | link | String | `'undefined'` | 跳转链接 |
16 | | name | String | `'undefined'` | 当前页名称 |
17 |
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-bread.vue/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | {{name}}
8 |
9 |
10 |
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-bread.vue/index.js:
--------------------------------------------------------------------------------
1 | export default {
2 | name: 'u-bread',
3 | props: {
4 | link: String,
5 | name: String,
6 | },
7 | };
8 |
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-bread.vue/module.css:
--------------------------------------------------------------------------------
1 | .root{
2 | position: relative;
3 | padding-left: 40px;
4 | line-height: 60px;
5 | font-size: 14px;
6 | color: #666;
7 | background: #fff;
8 | }
9 | .back{
10 | display: inline-block;
11 | vertical-align: middle;
12 | cursor: pointer;
13 | width: 32px;
14 | line-height: 20px;
15 | height:22px;
16 | text-align: center;
17 | color: #a7b7d1;
18 | margin-right: 1.3em;
19 | margin-bottom: 2px;
20 | border: 1px solid #a7b7d1;
21 | }
22 | .back::before {
23 | icon-font: url('../assets/svg/angle-left.svg');
24 | }
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-date-custom-picker.vue/i18n/en-US.json:
--------------------------------------------------------------------------------
1 | {
2 | "time": "Time",
3 | "to": "to",
4 | "default": "reset",
5 | "customize": "custom",
6 | "interval": "Interval",
7 | "ok": "Confirm",
8 | "cancel": "cancel",
9 | "3hours": "last 3 hour(s)",
10 | "24hours": "last 24 hour(s)",
11 | "48hours": "last 48 hour(s)",
12 | "7days": "last 7 day(s)",
13 | "1minute": "1 minute(s)",
14 | "5minute": "5 minute(s)",
15 | "15minute": "15 minute(s)",
16 | "1hour": "1 hour(s)",
17 | "6hours": "6 hour(s)",
18 | "1day": "1 day(s)",
19 | "6days": "6 day(s)",
20 | "15days": "15 day(s)"
21 | }
22 |
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-date-custom-picker.vue/i18n/index.js:
--------------------------------------------------------------------------------
1 | import enUS from './en-US';
2 | import zhCN from './zh-CN';
3 |
4 | export default {
5 | messages: {
6 | 'en-US': enUS,
7 | 'zh-CN': zhCN,
8 | },
9 | };
10 |
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-date-custom-picker.vue/i18n/zh-CN.json:
--------------------------------------------------------------------------------
1 | {
2 | "time": "时间",
3 | "to": "至",
4 | "default": "返回默认",
5 | "customize": "自定义",
6 | "interval": "间隔",
7 | "ok": "确定",
8 | "cancel": "取消",
9 | "3hours": "近3小时",
10 | "24hours": "近24小时",
11 | "48hours": "近48小时",
12 | "7days": "近7日",
13 | "1minute": "1分钟",
14 | "5minute": "5分钟",
15 | "15minute": "15分钟",
16 | "1hour": "1小时",
17 | "6hours": "6小时",
18 | "1day": "1天",
19 | "6days": "6天",
20 | "15days": "15天"
21 | }
22 |
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-date-picker-monitor.vue/i18n/en-US.json:
--------------------------------------------------------------------------------
1 | {
2 | "month": "/",
3 | "day": " "
4 | }
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-date-picker-monitor.vue/i18n/index.js:
--------------------------------------------------------------------------------
1 | import enUS from './en-US';
2 | import zhCN from './zh-CN';
3 |
4 | export default {
5 | messages: {
6 | 'en-US': enUS,
7 | 'zh-CN': zhCN,
8 | },
9 | };
10 |
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-date-picker-monitor.vue/i18n/zh-CN.json:
--------------------------------------------------------------------------------
1 | {
2 | "month": "月",
3 | "day": "日"
4 | }
5 |
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-date-picker-monitor.vue/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-date-picker-monitor.vue/index.js:
--------------------------------------------------------------------------------
1 | import { DatePicker } from 'cloud-ui.vusion';
2 | import i18n from './i18n';
3 |
4 | export default {
5 | name: 'u-date-picker-monitor',
6 | mixins: [DatePicker],
7 | i18n,
8 | methods: {
9 | showSpecific(value) {
10 | value = new Date(value);
11 | const month = value.getMonth() + 1;
12 | const date = value.getDate();
13 | return month + this.$t('month') + date + this.$t('day');
14 | },
15 | },
16 | };
17 |
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-date-picker-monitor.vue/module.css:
--------------------------------------------------------------------------------
1 | @import 'cloud-ui.vusion/src/u-date-picker.vue/module.css';
2 | .input{
3 | height: 30px;
4 | line-height: 30px;
5 | outline: none;
6 | }
7 | .body{z-index: 999;}
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-desc.vue/README.md:
--------------------------------------------------------------------------------
1 | # 面包屑导航
2 |
3 | ## 示例
4 | ### 基本形式
5 |
6 | ``` html
7 |
8 |
9 |
10 | 名称输入要求说明
11 |
12 |
13 | ```
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-desc.vue/index.html:
--------------------------------------------------------------------------------
1 |
2 | {{ tip }}
3 |
4 |
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-desc.vue/index.js:
--------------------------------------------------------------------------------
1 | export default {
2 | name: 'u-desc',
3 | props: {
4 | tip: {
5 | type: String,
6 | },
7 | },
8 | };
9 |
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-desc.vue/module.css:
--------------------------------------------------------------------------------
1 | .desc {
2 | color: #999;
3 | margin-top: 10px;
4 | margin-bottom: 10px;
5 | }
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-form-items.vue/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
{{ description }}
5 |
6 |
{{ currentMessage }}
7 |
8 |
9 |
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-form-table-add-button.vue/README.md:
--------------------------------------------------------------------------------
1 | # Well
2 |
3 | ## 示例
4 | ### 基本形式
5 |
6 | ``` html
7 |
8 |
9 | ```
10 |
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-form-table-add-button.vue/index.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-form-table-add-button.vue/index.js:
--------------------------------------------------------------------------------
1 | export default {
2 | name: 'u-form-table-add-button',
3 | props: {
4 | isContainer: Boolean,
5 | },
6 | methods: {
7 | click() {
8 | this.$emit('click');
9 | },
10 | },
11 | };
12 |
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-form-table-remove-button.vue/README.md:
--------------------------------------------------------------------------------
1 | # Well
2 |
3 | ## 示例
4 | ### 基本形式
5 |
6 | ``` html
7 |
8 |
9 | ```
10 |
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-form-table-remove-button.vue/index.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-form-table-remove-button.vue/index.js:
--------------------------------------------------------------------------------
1 | export default {
2 | name: 'u-form-table-remove-button',
3 | methods: {
4 | click() {
5 | if (this.disabled)
6 | return;
7 | this.$emit('click');
8 | },
9 | },
10 | };
11 |
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-form-table-remove-button.vue/module.css:
--------------------------------------------------------------------------------
1 | .button{
2 | position: relative;
3 | cursor: pointer;
4 | margin-bottom: 0;
5 | font-size: 40px;
6 | color: #ff867f;
7 | height: 40px;
8 | line-height: 40px;
9 | }
10 | .button[disabled]{
11 | color: #ddd;
12 | cursor: not-allowed;
13 | }
14 | .button:before{
15 | icon-font: url(../assets/svg/tb-del.svg);
16 | }
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-form-table-tr.vue/README.md:
--------------------------------------------------------------------------------
1 | # Well
2 |
3 | ## 示例
4 | ### 基本形式
5 |
6 | ``` html
7 |
8 |
9 | ```
10 |
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-form-table-tr.vue/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 | {{ currentMessage }}
10 |
11 | |
12 |
13 |
14 | {{ currentMessage }}
15 |
16 | |
17 |
18 |
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-form-table.vue/i18n/en-US.json:
--------------------------------------------------------------------------------
1 | {
2 | "add": "add"
3 | }
4 |
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-form-table.vue/i18n/index.js:
--------------------------------------------------------------------------------
1 | import enUS from './en-US';
2 | import zhCN from './zh-CN';
3 |
4 | export default {
5 | messages: {
6 | 'en-US': enUS,
7 | 'zh-CN': zhCN,
8 | },
9 | };
10 |
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-form-table.vue/i18n/zh-CN.json:
--------------------------------------------------------------------------------
1 | {
2 | "add": "添加"
3 | }
4 |
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-form-table.vue/index.html:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 | {{$t('add')}}{{ description }}
7 |
8 |
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-icon-input.vue/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-icon-input.vue/index.js:
--------------------------------------------------------------------------------
1 | export default {
2 | name: 'u-icon-input',
3 | props: {
4 | icon: {
5 | type: String,
6 | default: 'search',
7 | },
8 | value: {
9 | type: String,
10 | default: '',
11 | },
12 | },
13 | data() {
14 | return {
15 | isFocus: false,
16 | };
17 | },
18 | methods: {
19 | onFocus($event) {
20 | this.isFocus = true;
21 | },
22 | onBlur($event) {
23 | this.isFocus = false;
24 | },
25 | focus() {
26 | this.$refs.input.focus();
27 | },
28 | blur() {
29 | this.$refs.input.blur();
30 | },
31 | },
32 | };
33 |
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-icon-input.vue/module.css:
--------------------------------------------------------------------------------
1 | .input input{
2 | padding-left: 40px !important;
3 | text-align: left;
4 | }
5 | .input input:focus + i{
6 | border-color: #8ebee9;
7 | }
8 | .icon{
9 | position: absolute;
10 | display: inline-block;
11 | width: 29px;
12 | left: 1px;
13 | padding-left: 10px;
14 | background: #ffffff;
15 | height: 18px;
16 | line-height: 18px;
17 | top: 50%;
18 | transform: translateY(-9px);
19 | }
20 | .icon::before {
21 | cursor: auto;
22 | font-size: 18px;
23 | color: #d1d6de;
24 | }
25 | .icon[name='search']::before {
26 | icon-font: url('./assets/log-search.svg');
27 | }
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-log-time.vue/README.md:
--------------------------------------------------------------------------------
1 | # 面包屑导航
2 |
3 | ## 示例
4 | ### 基本形式
5 |
6 | ``` html
7 |
8 | ```
9 | ### 限制最小日期
10 | ``` html
11 |
12 | ```
13 | ### 限制最大日期
14 | ``` html
15 |
16 | ```
17 |
18 | # API
19 | ### Props/Attrs
20 |
21 | | Prop/Attr | Type | Default | Description |
22 | | --------- | ---- | ------- | ----------- |
23 | | strogageName | String | | LocalStrogage存储的名称 |
24 | | min | Number | | 限制最小值,时间戳 |
25 | | max | Number | | 限制最大值,时间戳 |
26 |
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-log-time.vue/i18n/en-US.json:
--------------------------------------------------------------------------------
1 | {
2 | "specifiedTime": "location to the specified time",
3 | "positioning": "locate",
4 | "autoReplenishment": "The system auto-replenishment time to",
5 | "positioningHistory": "positioning history",
6 | "PleaseEnterTheCorrectTime":"Please enter the correct time",
7 | "DateCannotBeLessThan": "Date cannot be less than",
8 | "DateCannotBeGreaterThan": "Date cannot be greater than",
9 | "example": "example:"
10 | }
11 |
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-log-time.vue/i18n/index.js:
--------------------------------------------------------------------------------
1 | import enUS from './en-US';
2 | import zhCN from './zh-CN';
3 |
4 | export default {
5 | messages: {
6 | 'en-US': enUS,
7 | 'zh-CN': zhCN,
8 | },
9 | };
10 |
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-log-time.vue/i18n/zh-CN.json:
--------------------------------------------------------------------------------
1 | {
2 | "specifiedTime": "定位到指定的时间",
3 | "positioning": "定位",
4 | "autoReplenishment": "系统自动补全时间为",
5 | "positioningHistory": "定位历史",
6 | "PleaseEnterTheCorrectTime":"请输入正确的时间",
7 | "DateCannotBeLessThan": "日期不得小于",
8 | "DateCannotBeGreaterThan": "日期不得大于",
9 | "example": "比如:"
10 | }
11 |
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-monitor-chart-modal.vue/README.md:
--------------------------------------------------------------------------------
1 | # Well
2 |
3 | ## 示例
4 | ### 基本形式
5 |
6 | ``` html
7 |
8 |
9 | Apple
10 | Banana
11 | Cake
12 |
13 |
14 | ```
15 |
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-monitor-chart-modal.vue/i18n/en-US.json:
--------------------------------------------------------------------------------
1 | {
2 | "total": "total"
3 | }
4 |
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-monitor-chart-modal.vue/i18n/index.js:
--------------------------------------------------------------------------------
1 | import enUS from './en-US';
2 | import zhCN from './zh-CN';
3 |
4 | export default {
5 | messages: {
6 | 'en-US': enUS,
7 | 'zh-CN': zhCN,
8 | },
9 | };
10 |
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-monitor-chart-modal.vue/i18n/zh-CN.json:
--------------------------------------------------------------------------------
1 | {
2 | "total": "总数"
3 | }
4 |
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-monitor-chart-panel.vue/i18n/en-US.json:
--------------------------------------------------------------------------------
1 | {
2 | "total": "total"
3 | }
4 |
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-monitor-chart-panel.vue/i18n/index.js:
--------------------------------------------------------------------------------
1 | import enUS from './en-US';
2 | import zhCN from './zh-CN';
3 |
4 | export default {
5 | messages: {
6 | 'en-US': enUS,
7 | 'zh-CN': zhCN,
8 | },
9 | };
10 |
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-monitor-chart-panel.vue/i18n/zh-CN.json:
--------------------------------------------------------------------------------
1 | {
2 | "total": "总数"
3 | }
4 |
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-monitor-chart.vue/README.md:
--------------------------------------------------------------------------------
1 | # Well
2 |
3 | ## 示例
4 | ### 基本形式
5 |
6 | ``` html
7 |
8 |
9 | Apple
10 | Banana
11 | Cake
12 |
13 |
14 | ```
15 |
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-monitor-optionbar.vue/i18n/en-US.json:
--------------------------------------------------------------------------------
1 | {
2 | "statisticalIndicators": "Statistical indicators",
3 | "average": "Average",
4 | "max": "Maximum",
5 | "min": "Minimum",
6 | "about3Hours": "last 3 hour(s)",
7 | "about24Hours": "last 24 hour(s)",
8 | "about48Hours": "last 48 hour(s)",
9 | "about7days": "last 7 day(s)"
10 | }
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-monitor-optionbar.vue/i18n/index.js:
--------------------------------------------------------------------------------
1 | import enUS from './en-US';
2 | import zhCN from './zh-CN';
3 |
4 | export default {
5 | messages: {
6 | 'en-US': enUS,
7 | 'zh-CN': zhCN,
8 | },
9 | };
10 |
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-monitor-optionbar.vue/i18n/zh-CN.json:
--------------------------------------------------------------------------------
1 | {
2 | "statisticalIndicators": "统计指标",
3 | "average": "平均值",
4 | "max": "最大值",
5 | "min": "最小值",
6 | "about3Hours": "近3小时",
7 | "about24Hours": "近24小时",
8 | "about48Hours": "近48小时",
9 | "about7days": "近7日"
10 | }
11 |
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-slider-scale.vue/assets/minus.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-slider-scale.vue/assets/plus.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-topo-apm-line.vue/README.md:
--------------------------------------------------------------------------------
1 | # Well
2 |
3 | ## 示例
4 | ### 基本形式
5 |
6 | ``` html
7 |
8 |
9 | Apple
10 | Banana
11 | Cake
12 |
13 |
14 | ```
15 |
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-topo-apm-line.vue/module.css:
--------------------------------------------------------------------------------
1 | .text{
2 | font-size: 12px;
3 | fill: #999;
4 | }
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-topo-apm-other.vue/README.md:
--------------------------------------------------------------------------------
1 | # Well
2 |
3 | ## 示例
4 | ### 基本形式
5 |
6 | ``` html
7 |
8 |
9 | Apple
10 | Banana
11 | Cake
12 |
13 |
14 | ```
15 |
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-topo-apm-other.vue/assets/home-cache.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-topo-apm-other.vue/module.css:
--------------------------------------------------------------------------------
1 | .node{
2 | stroke: #afd2fa;
3 | stroke-width: 8px;
4 | fill: #fff;
5 | }
6 | .servicetype {
7 | fill: #4ec9ab;
8 | }
9 | .type{
10 | font-size: 12px;
11 | fill: #fff;
12 | }
13 | .des{
14 | fill: #999;
15 | font-size: 12px;
16 | }
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-topo-apm-rabbitmq.vue/README.md:
--------------------------------------------------------------------------------
1 | # Well
2 |
3 | ## 示例
4 | ### 基本形式
5 |
6 | ``` html
7 |
8 |
9 | Apple
10 | Banana
11 | Cake
12 |
13 |
14 | ```
15 |
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-topo-apm-rabbitmq.vue/index.js:
--------------------------------------------------------------------------------
1 | import TopoNode from '../u-topo-node.vue';
2 | import rabbitmq from './assets/home-nqs.svg';
3 |
4 | export default {
5 | name: 'u-topo-apm-rabbitmq',
6 | components: {
7 | [TopoNode.name]: TopoNode,
8 | },
9 | props: {
10 | node: Object,
11 | },
12 | data() {
13 | return {
14 | imageUrl: rabbitmq,
15 | };
16 | },
17 | };
18 |
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-topo-apm-rabbitmq.vue/module.css:
--------------------------------------------------------------------------------
1 | .node{
2 | stroke: #afd2fa;
3 | stroke-width: 8px;
4 | fill: #fff;
5 | }
6 | .servicetype {
7 | fill: #4ec9ab;
8 | }
9 | .type{
10 | font-size: 12px;
11 | fill: #fff;
12 | }
13 | .des{
14 | fill: #999;
15 | font-size: 12px;
16 | }
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-topo-apm-service.vue/README.md:
--------------------------------------------------------------------------------
1 | # Well
2 |
3 | ## 示例
4 | ### 基本形式
5 |
6 | ``` html
7 |
8 |
9 | Apple
10 | Banana
11 | Cake
12 |
13 |
14 | ```
15 |
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-topo-apm-service.vue/i18n/en-US.json:
--------------------------------------------------------------------------------
1 | {
2 | "error": "error",
3 | "node": "node",
4 | "detail": "detail",
5 | "offline": "the service is offline"
6 | }
7 |
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-topo-apm-service.vue/i18n/index.js:
--------------------------------------------------------------------------------
1 | import enUS from './en-US';
2 | import zhCN from './zh-CN';
3 |
4 | export default {
5 | messages: {
6 | 'en-US': enUS,
7 | 'zh-CN': zhCN,
8 | },
9 | };
10 |
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-topo-apm-service.vue/i18n/zh-CN.json:
--------------------------------------------------------------------------------
1 | {
2 | "error": "错误",
3 | "node": "节点",
4 | "detail": "详情",
5 | "offline": "该服务处于离线状态"
6 | }
7 |
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-topo-apm-unknow.vue/README.md:
--------------------------------------------------------------------------------
1 | # Well
2 |
3 | ## 示例
4 | ### 基本形式
5 |
6 | ``` html
7 |
8 |
9 | Apple
10 | Banana
11 | Cake
12 |
13 |
14 | ```
15 |
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-topo-apm-unknow.vue/index.js:
--------------------------------------------------------------------------------
1 | import TopoNode from '../u-topo-node.vue';
2 | import unkonw from './assets/cloud-fill.svg';
3 |
4 | export default {
5 | name: 'u-topo-apm-unknow',
6 | components: {
7 | [TopoNode.name]: TopoNode,
8 | },
9 | props: {
10 | node: Object,
11 | },
12 | data() {
13 | return {
14 | imageUrl: unkonw,
15 | };
16 | },
17 | };
18 |
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-topo-apm-unknow.vue/module.css:
--------------------------------------------------------------------------------
1 | .text{
2 | fill: white;
3 | font-size: 12px;
4 | }
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-topo-line.vue/README.md:
--------------------------------------------------------------------------------
1 | # Well
2 |
3 | ## 示例
4 | ### 基本形式
5 |
6 | ``` html
7 |
8 |
9 | Apple
10 | Banana
11 | Cake
12 |
13 |
14 | ```
15 |
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-topo-line.vue/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-topo-line.vue/module.css:
--------------------------------------------------------------------------------
1 | .line{
2 | stroke: #5ca2f4;
3 | stroke-width: 1px;
4 | fill: none;
5 | }
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-topo-node.vue/README.md:
--------------------------------------------------------------------------------
1 | # Well
2 |
3 | ## 示例
4 | ### 基本形式
5 |
6 | ``` html
7 |
8 |
9 | Apple
10 | Banana
11 | Cake
12 |
13 |
14 | ```
15 |
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-topo-node.vue/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-topo-node.vue/module.css:
--------------------------------------------------------------------------------
1 | .node{
2 | cursor: pointer;
3 | }
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-topo.vue/README.md:
--------------------------------------------------------------------------------
1 | # Well
2 |
3 | ## 示例
4 | ### 基本形式
5 |
6 | ``` html
7 |
8 |
9 | Apple
10 | Banana
11 | Cake
12 |
13 |
14 | ```
15 |
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/u-topo.vue/module.css:
--------------------------------------------------------------------------------
1 | .root{
2 | position: relative;
3 | width: 100%;
4 | height: 100%;
5 | }
6 | .svg{
7 | width: 100%;
8 | height: 100%;
9 | }
10 | .slider{
11 | position: absolute;
12 | left: 12px;
13 | bottom: 21px;
14 | height: 74px;
15 | width: 30px;
16 | }
17 | .slider[place="none"]{
18 | display: none;
19 | }
20 | .slider[place="left top"]{
21 | position: absolute;
22 | bottom: inherit;
23 | top: 21px;
24 | }
25 | .slider[place="rigth top"]{
26 | position: absolute;
27 | right: 12px;
28 | left: inherit;
29 | bottom: inherit;
30 | top: 21px;
31 | }
32 | .slider[place="rigth bottom"]{
33 | position: absolute;
34 | right: 12px;
35 | left: inherit;
36 | }
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/utils/cache.js:
--------------------------------------------------------------------------------
1 | import { cloneDeep } from 'lodash';
2 | const wm = new Map();
3 | export const cache = {
4 | add(key, value, notClone) {
5 | wm.set(key, notClone ? value : cloneDeep(value));
6 | },
7 | get(key) {
8 | return wm.get(key);
9 | },
10 | has(key) {
11 | return wm.has(key);
12 | },
13 | clear(key) {
14 | return wm.delete(key);
15 | },
16 | safeGet(key, func) {
17 | return this.has(key) ? Promise.resolve(cache.get(key)) : func(key);
18 | },
19 | };
20 |
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/utils/directive/index.js:
--------------------------------------------------------------------------------
1 | import textareaAuto from './textarea-auto.js';
2 | import disShortcut from './dis-shortcut.js';
3 | export default {
4 | textareaAuto,
5 | disShortcut,
6 | };
7 |
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/utils/filters/index.js:
--------------------------------------------------------------------------------
1 | import date from './date.js';
2 | import logo from './logo.js';
3 | import others from './others.js';
4 | import unit from './unit.js';
5 |
6 | export default Object.assign(
7 | { },
8 | date,
9 | logo,
10 | others,
11 | unit
12 | );
13 |
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/utils/index.js:
--------------------------------------------------------------------------------
1 | export const mapComponents = (components) => {
2 | const result = {};
3 | components.forEach((component) => result[component.options ? component.options.name : component.name] = component);
4 | return result;
5 | };
6 |
--------------------------------------------------------------------------------
/lib/cloud-ui-internal/src/utils/wrapComponent.js:
--------------------------------------------------------------------------------
1 | export default { template: '
' };
2 |
--------------------------------------------------------------------------------
/plugins/index.js:
--------------------------------------------------------------------------------
1 |
2 | const path = require('path');
3 |
4 | // register plugins
5 |
6 | module.exports = [
7 | '@micro-app/vue-cli-plugin-microapp',
8 | [ '@micro-app/plugin-compatible', { server: true }], // 适配 v1
9 | [ // 0
10 | {
11 | id: 'common:plugins-custom-command',
12 | link: path.resolve(__dirname, './command.js'),
13 | description: '公共通用 common 提供自定义 command',
14 | },
15 | ],
16 | [ // 1
17 | {
18 | id: 'common:plugins-enhance-webpack',
19 | link: path.resolve(__dirname, './enhance-webpack.js'),
20 | description: '公共通用 common 提供增强 webpack 配置',
21 | },
22 | ],
23 | ];
24 |
--------------------------------------------------------------------------------
/src/client/assets/arrow-down.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
--------------------------------------------------------------------------------
/src/client/assets/bg.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubecube-io/kubecube-front/7adeb5840a03415802f871a6f5a5dcee9a57e3f9/src/client/assets/bg.jpg
--------------------------------------------------------------------------------
/src/client/assets/check.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
--------------------------------------------------------------------------------
/src/client/assets/download.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/client/assets/favicon_yun.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubecube-io/kubecube-front/7adeb5840a03415802f871a6f5a5dcee9a57e3f9/src/client/assets/favicon_yun.ico
--------------------------------------------------------------------------------
/src/client/assets/home-cache.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
--------------------------------------------------------------------------------
/src/client/assets/icons/svg/angle-down.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
--------------------------------------------------------------------------------
/src/client/assets/icons/svg/angle-left.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/client/assets/icons/svg/angle-right.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/client/assets/icons/svg/angle-up.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
--------------------------------------------------------------------------------
/src/client/assets/icons/svg/dropdown.1.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
--------------------------------------------------------------------------------
/src/client/assets/icons/svg/dropdown.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
--------------------------------------------------------------------------------
/src/client/assets/icons/svg/list_close.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
--------------------------------------------------------------------------------
/src/client/assets/icons/svg/list_no_response.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
--------------------------------------------------------------------------------
/src/client/assets/icons/svg/list_open.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
--------------------------------------------------------------------------------
/src/client/assets/images/btn_play.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubecube-io/kubecube-front/7adeb5840a03415802f871a6f5a5dcee9a57e3f9/src/client/assets/images/btn_play.gif
--------------------------------------------------------------------------------
/src/client/assets/images/emptylog.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubecube-io/kubecube-front/7adeb5840a03415802f871a6f5a5dcee9a57e3f9/src/client/assets/images/emptylog.png
--------------------------------------------------------------------------------
/src/client/assets/images/flag_high.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubecube-io/kubecube-front/7adeb5840a03415802f871a6f5a5dcee9a57e3f9/src/client/assets/images/flag_high.png
--------------------------------------------------------------------------------
/src/client/assets/images/flag_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubecube-io/kubecube-front/7adeb5840a03415802f871a6f5a5dcee9a57e3f9/src/client/assets/images/flag_normal.png
--------------------------------------------------------------------------------
/src/client/assets/images/log-black.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubecube-io/kubecube-front/7adeb5840a03415802f871a6f5a5dcee9a57e3f9/src/client/assets/images/log-black.png
--------------------------------------------------------------------------------
/src/client/assets/images/log-white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubecube-io/kubecube-front/7adeb5840a03415802f871a6f5a5dcee9a57e3f9/src/client/assets/images/log-white.png
--------------------------------------------------------------------------------
/src/client/assets/images/ncssprite.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubecube-io/kubecube-front/7adeb5840a03415802f871a6f5a5dcee9a57e3f9/src/client/assets/images/ncssprite.png
--------------------------------------------------------------------------------
/src/client/assets/images/nodata.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubecube-io/kubecube-front/7adeb5840a03415802f871a6f5a5dcee9a57e3f9/src/client/assets/images/nodata.png
--------------------------------------------------------------------------------
/src/client/assets/images/nodata@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubecube-io/kubecube-front/7adeb5840a03415802f871a6f5a5dcee9a57e3f9/src/client/assets/images/nodata@2x.png
--------------------------------------------------------------------------------
/src/client/assets/images/sprite-repoLogo50.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubecube-io/kubecube-front/7adeb5840a03415802f871a6f5a5dcee9a57e3f9/src/client/assets/images/sprite-repoLogo50.png
--------------------------------------------------------------------------------
/src/client/assets/images/terminator.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubecube-io/kubecube-front/7adeb5840a03415802f871a6f5a5dcee9a57e3f9/src/client/assets/images/terminator.png
--------------------------------------------------------------------------------
/src/client/assets/none.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubecube-io/kubecube-front/7adeb5840a03415802f871a6f5a5dcee9a57e3f9/src/client/assets/none.png
--------------------------------------------------------------------------------
/src/client/assets/sprite-browser.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubecube-io/kubecube-front/7adeb5840a03415802f871a6f5a5dcee9a57e3f9/src/client/assets/sprite-browser.png
--------------------------------------------------------------------------------
/src/client/assets/upgrade.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubecube-io/kubecube-front/7adeb5840a03415802f871a6f5a5dcee9a57e3f9/src/client/assets/upgrade.png
--------------------------------------------------------------------------------
/src/client/base/mixins/docTitle.js:
--------------------------------------------------------------------------------
1 | const initialTitle = document.title;
2 | export default {
3 | created() {
4 | const title = ((this.$route || {}).meta || {}).docTitle || this.$options.docTitle;
5 | if (title)
6 | document.title = title + ' - ' + initialTitle;
7 | else
8 | document.title = initialTitle;
9 | },
10 | };
11 |
--------------------------------------------------------------------------------
/src/client/base/mixins/index.js:
--------------------------------------------------------------------------------
1 | import { Modal, Subscribe, Page as InitPage } from '@necfe/cloud-ui-internal/src/mixins.js';
2 | import Inputs from './inputs';
3 |
4 | // 给 Page 增加 selectPage 方法
5 | const Page = Object.assign({}, InitPage, {
6 | methods: Object.assign({}, InitPage.methods, {
7 | // 更改页数 || limit 操作的回调函数
8 | selectPage({ pageSize, page = 1 }) {
9 | this.page = page;
10 | this.form && Object.assign(this.form, {
11 | limit: pageSize,
12 | offset: (page - 1) * pageSize,
13 | });
14 | this.loadList && this.loadList();
15 | },
16 | }),
17 | });
18 |
19 | export {
20 | Modal, Subscribe, Page, Inputs
21 | }
--------------------------------------------------------------------------------
/src/client/components/base/index.css:
--------------------------------------------------------------------------------
1 | @import "./base.css";
2 | @import "./global.css";
3 | @import "./repo-logo50.css";
4 | @import "./function.css";
5 | @import "./xterm.css";
6 | @import "./reset.css";
7 | /* @import "./layout.css";
8 | @import "./win-logo.css";
9 | @import "./repo-logo25.css";
10 | @import "./repo-logo30.css";
11 | @import "./logo.css";
12 | @import "./common.css";
13 | @import "./font.css";
14 | @import "./unit.css";
15 | @import "./samErrorMsg.css";
16 | @import "./modal.css"; */
17 |
--------------------------------------------------------------------------------
/src/client/components/base/reset.css:
--------------------------------------------------------------------------------
1 | textarea {
2 | resize: none;
3 | outline: 0;
4 | font-size: 100%;
5 | margin: 0;
6 | vertical-align: baseline;
7 | vertical-align: middle;
8 | }
9 |
10 | textarea::placeholder {
11 | color: #999;
12 | }
--------------------------------------------------------------------------------
/src/client/components/cloud-ui/u-button.vue/index.js:
--------------------------------------------------------------------------------
1 | import Button from 'cloud-ui.vusion/src/u-button.vue';
2 |
3 | export default Button;
4 |
--------------------------------------------------------------------------------
/src/client/components/cloud-ui/u-button.vue/module.css:
--------------------------------------------------------------------------------
1 | @import 'cloud-ui.vusion/src/u-button.vue/module.css';
2 |
3 | .root[color="primary"] {
4 | border: 1px solid transparent;
5 | }
6 |
--------------------------------------------------------------------------------
/src/client/components/cloud-ui/u-crumb-item.vue/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/src/client/components/cloud-ui/u-crumb-item.vue/index.js:
--------------------------------------------------------------------------------
1 | import { Emitter, Link } from 'cloud-ui.vusion';
2 | export default {
3 | name: 'u-crumb-item',
4 | parentName: 'u-crumb',
5 | mixins: [Link, Emitter],
6 | data: () => ({
7 | parentVM: undefined,
8 | }),
9 | computed: {
10 | showSeperator() {
11 | return this.parentVM.itemVMs.indexOf(this) > 0;
12 | },
13 | current() {
14 | return this.parentVM.itemVMs.slice(-1)[0] === this;
15 | },
16 | },
17 | created() {
18 | this.dispatch(this.$options.parentName, 'add-item-vm', this);
19 | },
20 | destroyed() {
21 | this.dispatch(this.$options.parentName, 'remove-item-vm', this);
22 | },
23 | };
24 |
--------------------------------------------------------------------------------
/src/client/components/cloud-ui/u-crumb-item.vue/module.css:
--------------------------------------------------------------------------------
1 | @import 'proto-ui.vusion/src/u-link.vue/module';
2 |
3 | .item {
4 | display: inline-block;
5 | }
6 |
7 | .item.seperator::before {
8 | content: '/';
9 | margin: 0 5px;
10 | }
11 |
12 | .current {
13 | color: #666;
14 | }
15 |
16 | .root {
17 | color: #508de8;
18 | }
19 |
20 | .root:hover {
21 | color: $brand-primary;
22 | transition: ease $transition-duration;
23 | text-decoration: none;
24 | }
25 |
--------------------------------------------------------------------------------
/src/client/components/cloud-ui/u-crumb.vue/index.html:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/src/client/components/cloud-ui/u-crumb.vue/index.js:
--------------------------------------------------------------------------------
1 | import cookie from '@micro-app/common/utils/handleCookie';
2 | export default {
3 | name: 'u-crumb',
4 | childName: 'u-crumb-item',
5 | props: {
6 | absolute: { type: Boolean, default: false },
7 | },
8 | data: () => ({
9 | itemVMs: [],
10 | code: undefined,
11 | }),
12 | created() {
13 | this.$on('add-item-vm', (itemVM) => {
14 | itemVM.parentVM = this;
15 | this.itemVMs.push(itemVM);
16 | });
17 | this.$on('remove-item-vm', (itemVM) => {
18 | itemVM.parentVM = undefined;
19 | this.itemVMs.splice(this.itemVMs.indexOf(itemVM), 1);
20 | });
21 | },
22 | };
23 |
--------------------------------------------------------------------------------
/src/client/components/cloud-ui/u-crumb.vue/module.css:
--------------------------------------------------------------------------------
1 | .root {
2 | height: 60px;
3 | margin-top: -40px;
4 | line-height: 60px;
5 | }
6 |
7 | .root[absolute] {
8 | position: absolute;
9 | top: 0;
10 | margin-top: 0;
11 | }
12 |
13 | .item {
14 | display: inline-block;
15 | color: #666;
16 | }
17 |
18 | .item:after {
19 | content: '/';
20 | margin: 0 5px;
21 | }
22 |
--------------------------------------------------------------------------------
/src/client/components/cloud-ui/u-navbar-item.vue/index.js:
--------------------------------------------------------------------------------
1 | import { NavbarItem } from 'cloud-ui.vusion';
2 |
3 | export default {
4 | extends: NavbarItem,
5 | };
6 |
--------------------------------------------------------------------------------
/src/client/components/cloud-ui/u-navbar-item.vue/module.css:
--------------------------------------------------------------------------------
1 | @import 'cloud-ui.vusion/src/u-navbar-item.vue/module.css';
2 |
3 | .root {
4 | height: 68px;
5 | line-height: 68px;
6 | }
7 |
--------------------------------------------------------------------------------
/src/client/components/cloud-ui/u-number-card.vue/index.html:
--------------------------------------------------------------------------------
1 |
2 | {{ title }}
3 |
4 |
5 | {{ value }}
6 |
7 |
8 |
9 | {{ unit }}
10 |
11 |
12 |
--------------------------------------------------------------------------------
/src/client/components/cloud-ui/u-number-card.vue/index.js:
--------------------------------------------------------------------------------
1 | import { Link } from 'cloud-ui.vusion';
2 |
3 | export default {
4 | name: 'u-number-card',
5 | extends: Link,
6 | props: {
7 | title: String,
8 | value: [String, Number],
9 | unit: String,
10 | },
11 | computed: {
12 | isInteger() {
13 | return Number.isInteger(parseFloat(this.value));
14 | },
15 | },
16 | };
17 |
--------------------------------------------------------------------------------
/src/client/components/cloud-ui/u-panel-group.vue/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | {{ title }}
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/src/client/components/cloud-ui/u-panel-group.vue/index.js:
--------------------------------------------------------------------------------
1 | export default {
2 | name: 'u-panel-group',
3 | props: {
4 | title: String,
5 | },
6 | };
7 |
--------------------------------------------------------------------------------
/src/client/components/cloud-ui/u-panel-group.vue/module.css:
--------------------------------------------------------------------------------
1 | .root {
2 |
3 | }
4 |
5 | .root:not(:last-child) {
6 | margin-bottom: $margin-base;
7 | }
8 |
9 | .head {
10 | line-height: 45px;
11 | font-size: 16px;
12 | font-weight: bold;
13 | /* border-top: 1px solid $border-color-light;
14 | margin-left: -15px;
15 | margin-right: -15px;
16 | padding-left: 15px; */
17 | color: #80859c;
18 | }
19 |
20 | .body {
21 | padding-bottom: 5px;
22 | }
23 |
--------------------------------------------------------------------------------
/src/client/components/cloud-ui/u-panel.vue/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {{ title }}
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 | {{ content }}
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/src/client/components/cloud-ui/u-panel.vue/index.js:
--------------------------------------------------------------------------------
1 | export default {
2 | name: 'u-panel',
3 | props: {
4 | title: { type: String, default: '提示' },
5 | content: String,
6 | },
7 | };
8 |
--------------------------------------------------------------------------------
/src/client/components/cloud-ui/u-resize-table-column.vue/index.js:
--------------------------------------------------------------------------------
1 | import { ResizeTableColumn } from 'cloud-ui.vusion';
2 |
3 | export default {
4 | name: 'u-resize-table-column',
5 | extends: ResizeTableColumn,
6 | };
7 |
--------------------------------------------------------------------------------
/src/client/components/cloud-ui/u-resize-table.vue/index.js:
--------------------------------------------------------------------------------
1 | import { ResizeTable } from 'cloud-ui.vusion';
2 |
3 | export default {
4 | name: 'u-resize-table',
5 | extends: ResizeTable,
6 | };
7 |
--------------------------------------------------------------------------------
/src/client/components/cloud-ui/u-resize-table.vue/module.css:
--------------------------------------------------------------------------------
1 | @import 'cloud-ui.vusion/src/u-resize-table.vue/module.css';
2 |
3 | .hthItem, .btd, .btd[role="center"] {
4 | height: 42px;
5 | padding: 0 0 0 10px;
6 | }
7 |
8 | .root[class] {
9 | font-size: 12px;
10 | }
11 |
12 | .hthItem::after {
13 | top: 11px;
14 | }
15 |
16 | .carve {
17 | height: 42px;
18 | line-height: 42px;
19 | }
20 |
21 | .filtertitle {
22 | height: 42px;
23 | line-height: 42px;
24 | }
25 |
26 | .btd {
27 | color: #575962;
28 | }
29 |
30 | .titleText {
31 | color: #999;
32 | }
33 |
--------------------------------------------------------------------------------
/src/client/components/cloud-ui/u-sidebar-suggest-item.vue/assets/check.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
--------------------------------------------------------------------------------
/src/client/components/cloud-ui/u-sidebar-suggest-item.vue/index.js:
--------------------------------------------------------------------------------
1 | import { SuggestItem } from 'cloud-ui.vusion';
2 |
3 | export default {
4 | name: 'u-sidebar-suggest-item',
5 | parentName: 'u-sidebar-suggest',
6 | extends: SuggestItem,
7 | };
8 |
--------------------------------------------------------------------------------
/src/client/components/cloud-ui/u-sidebar-suggest.vue/index.js:
--------------------------------------------------------------------------------
1 | import { Suggest } from 'cloud-ui.vusion';
2 |
3 | export default {
4 | name: 'u-sidebar-suggest',
5 | childName: 'u-sidebar-suggest-item',
6 | extends: Suggest,
7 | };
8 |
--------------------------------------------------------------------------------
/src/client/components/cloud-ui/u-spinner.vue/index.js:
--------------------------------------------------------------------------------
1 | import Spinner from 'proto-ui.vusion/src/u-spinner.vue';
2 |
3 | export default Spinner;
4 |
--------------------------------------------------------------------------------
/src/client/components/cloud-ui/u-spinner.vue/module.css:
--------------------------------------------------------------------------------
1 | @import 'proto-ui.vusion/src/u-spinner.vue/module.css';
2 |
--------------------------------------------------------------------------------
/src/client/components/cloud-ui/u-status-icon.vue/index.js:
--------------------------------------------------------------------------------
1 | import StatusIcon from 'cloud-ui.vusion/src/u-status-icon.vue';
2 |
3 | export default StatusIcon;
4 |
--------------------------------------------------------------------------------
/src/client/components/cloud-ui/u-status-icon.vue/module.css:
--------------------------------------------------------------------------------
1 | @import 'cloud-ui.vusion/src/u-status-icon.vue/module.css';
2 |
3 | .icon[name="graySuccess"]::before {
4 | icon-font: url("./icons/success.svg");
5 | color: #a2b0b7;
6 | }
7 |
--------------------------------------------------------------------------------
/src/client/components/common/form/u-form-items.vue/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
{{ description }}
5 |
6 |
{{ currentMessage }}
7 |
8 |
9 |
--------------------------------------------------------------------------------
/src/client/components/common/u-build-status-icon.vue/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/src/client/components/common/u-build-status-icon.vue/index.js:
--------------------------------------------------------------------------------
1 | export default {
2 | name: 'u-build-status-icon',
3 | props: {
4 | name: String,
5 | size: { type: [Number, String], default: 24 },
6 | color: String,
7 | },
8 | };
9 |
10 |
--------------------------------------------------------------------------------
/src/client/components/common/u-build-status-icon.vue/module.css:
--------------------------------------------------------------------------------
1 | .root {
2 | color: #333;
3 | }
4 |
5 | .icon:before {
6 | vertical-align: middle;
7 | margin-right: 8px;
8 | }
9 |
10 | .icon[name="success"]:before {
11 | icon-font: url(./icons/success.svg);
12 | }
13 | .icon[name="waiting"]:before {
14 | icon-font: url(./icons/waiting.svg);
15 | }
16 | .icon[name="pause"]:before {
17 | icon-font: url(./icons/pause.svg);
18 | }
19 | .icon[name="warning"]:before {
20 | icon-font: url(./icons/warning.svg);
21 | }
22 | .icon[name="error"]:before {
23 | icon-font: url(./icons/error.svg);
24 | }
25 | .icon[name="building"]{
26 | display: inline-block;
27 | width: 22px;
28 | height: 22px;
29 | border-radius: 11px;
30 | }
31 |
--------------------------------------------------------------------------------
/src/client/components/common/u-card.vue/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {{title}}
6 |
7 |
8 | {{amount}}{{unit}}
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/src/client/components/common/u-card.vue/index.js:
--------------------------------------------------------------------------------
1 | export default {
2 | name: 'u-card',
3 | props: {
4 | amount: {
5 | type: Number,
6 | },
7 | loading: {
8 | type: Boolean,
9 | default: false,
10 | },
11 | unit: {
12 | type: String,
13 | required: true,
14 | },
15 | title: {
16 | type: String,
17 | required: true,
18 | },
19 | },
20 | data() {
21 | return {};
22 | },
23 | };
24 |
--------------------------------------------------------------------------------
/src/client/components/common/u-desc.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 | {{ tip }}
4 |
5 |
6 |
13 |
23 |
--------------------------------------------------------------------------------
/src/client/components/common/u-detail-operate-item.vue:
--------------------------------------------------------------------------------
1 |
21 |
--------------------------------------------------------------------------------
/src/client/components/common/u-easy-copy.vue/index.html:
--------------------------------------------------------------------------------
1 |
2 | 复制
3 | 已复制
4 |
5 |
--------------------------------------------------------------------------------
/src/client/components/common/u-easy-copy.vue/module.css:
--------------------------------------------------------------------------------
1 | .root {
2 | display: inline-block;
3 | position: relative;
4 | height: 28px;
5 | line-height: 28px;
6 | }
7 | /* 解决切换至已复制时行高抖动 */
8 | .icon > span {
9 | vertical-align: middle;
10 | }
11 |
12 | .icon > span::before {
13 | vertical-align: middle;
14 | }
15 |
--------------------------------------------------------------------------------
/src/client/components/common/u-icons.vue/icons/angle-down copy.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
--------------------------------------------------------------------------------
/src/client/components/common/u-icons.vue/icons/angle-down.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
--------------------------------------------------------------------------------
/src/client/components/common/u-icons.vue/icons/angle-right.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/client/components/common/u-icons.vue/icons/angle-up copy.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
--------------------------------------------------------------------------------
/src/client/components/common/u-icons.vue/icons/angle-up.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
--------------------------------------------------------------------------------
/src/client/components/common/u-icons.vue/icons/check.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
--------------------------------------------------------------------------------
/src/client/components/common/u-icons.vue/icons/close-small.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
--------------------------------------------------------------------------------
/src/client/components/common/u-icons.vue/icons/close.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
--------------------------------------------------------------------------------
/src/client/components/common/u-icons.vue/icons/doc.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
--------------------------------------------------------------------------------
/src/client/components/common/u-icons.vue/icons/export.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/client/components/common/u-icons.vue/icons/hdm.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/src/client/components/common/u-icons.vue/icons/info copy.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
--------------------------------------------------------------------------------
/src/client/components/common/u-icons.vue/icons/k8s.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/src/client/components/common/u-icons.vue/icons/list_no_response.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
--------------------------------------------------------------------------------
/src/client/components/common/u-icons.vue/icons/menu.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/client/components/common/u-icons.vue/icons/minus.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/client/components/common/u-icons.vue/icons/ncs/container.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/src/client/components/common/u-icons.vue/icons/ncs/initcontainer.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/src/client/components/common/u-icons.vue/icons/ncs/minus-solid.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/client/components/common/u-icons.vue/icons/ncs/yaml.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/src/client/components/common/u-icons.vue/icons/nos-angle-right.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
--------------------------------------------------------------------------------
/src/client/components/common/u-icons.vue/icons/nsf-instance.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/src/client/components/common/u-icons.vue/icons/nsf-menu.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/client/components/common/u-icons.vue/icons/nsf-overview.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/client/components/common/u-icons.vue/icons/plus.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/client/components/common/u-icons.vue/icons/readonly2.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
--------------------------------------------------------------------------------
/src/client/components/common/u-icons.vue/icons/sidenav/apm.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/src/client/components/common/u-icons.vue/icons/sidenav/goapi.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/src/client/components/common/u-icons.vue/icons/sidenav/gportal.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/src/client/components/common/u-icons.vue/icons/sidenav/gtxs.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/src/client/components/common/u-icons.vue/icons/sidenav/overview.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/src/client/components/common/u-icons.vue/icons/write.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
--------------------------------------------------------------------------------
/src/client/components/common/u-icons.vue/index.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/client/components/common/u-icons.vue/index.js:
--------------------------------------------------------------------------------
1 | export default {
2 | name: 'u-icons',
3 | props: {
4 | name: String,
5 | },
6 | };
7 |
--------------------------------------------------------------------------------
/src/client/components/common/u-meta-info.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | {{ title }}
5 |
6 |
7 |
8 |
9 |
10 |
18 |
19 |
27 |
28 |
--------------------------------------------------------------------------------
/src/client/components/common/u-multi-filter.vue/base/utils/index.js:
--------------------------------------------------------------------------------
1 | export const isObject = value => {
2 | if (value === null || value === undefined) { return false; }
3 | return value.toString() === '[object Object]';
4 | };
5 |
6 | export const deepCopy = function(result, source) {
7 | for (const key in source) {
8 | const copy = source[key];
9 | if (Array.isArray(copy)) { result[key] = deepCopy(result[key] || [], copy); } else if (isObject(copy)) { result[key] = deepCopy(result[key] || {}, copy); } else { result[key] = copy; }
10 | }
11 | return result;
12 | };
13 |
--------------------------------------------------------------------------------
/src/client/components/common/u-multi-filter.vue/i18n/en-US.json:
--------------------------------------------------------------------------------
1 | {
2 | "selectText": "Please select",
3 | "noDataText": "No matching data"
4 | }
5 |
--------------------------------------------------------------------------------
/src/client/components/common/u-multi-filter.vue/i18n/index.js:
--------------------------------------------------------------------------------
1 | import enUS from './en-US';
2 | import zhCN from './zh-CN';
3 |
4 | export default {
5 | messages: {
6 | 'en-US': enUS,
7 | 'zh-CN': zhCN,
8 | },
9 | };
10 |
--------------------------------------------------------------------------------
/src/client/components/common/u-multi-filter.vue/i18n/zh-CN.json:
--------------------------------------------------------------------------------
1 | {
2 | "selectText": "请选择",
3 | "noDataText": "无匹配数据"
4 | }
5 |
--------------------------------------------------------------------------------
/src/client/components/common/u-multi-filter.vue/icons/close.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
--------------------------------------------------------------------------------
/src/client/components/common/u-multi-filter.vue/icons/keyboard-arrow-down.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/client/components/common/u-section.vue:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
21 |
29 |
--------------------------------------------------------------------------------
/src/client/components/common/u-sidebar-group.vue/icons/pool.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/src/client/components/common/u-sidebar-group.vue/icons/user.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/src/client/components/common/u-sidebar-group.vue/index.js:
--------------------------------------------------------------------------------
1 | import { SidebarGroup } from 'cloud-ui.vusion';
2 |
3 | export default SidebarGroup;
4 |
--------------------------------------------------------------------------------
/src/client/components/common/u-sidebar-header.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {{ label }}
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
21 |
22 |
38 |
--------------------------------------------------------------------------------
/src/client/components/common/u-sidebar-item.vue/index.js:
--------------------------------------------------------------------------------
1 | import { SidebarItem } from 'cloud-ui.vusion';
2 |
3 | export default SidebarItem;
4 |
--------------------------------------------------------------------------------
/src/client/components/common/u-sidebar.vue/index.js:
--------------------------------------------------------------------------------
1 | import { Sidebar } from 'cloud-ui.vusion';
2 |
3 | export default Sidebar;
4 |
--------------------------------------------------------------------------------
/src/client/components/common/u-sidebar.vue/module.css:
--------------------------------------------------------------------------------
1 | @import 'cloud-ui.vusion/src/u-sidebar.vue/module.css';
2 |
3 | .root {
4 | border-right: 1px solid #e1e8ed;
5 | }
6 |
7 | .root[submodule] {
8 | height: auto;
9 | overflow: hidden;
10 | border-right: none;
11 | }
--------------------------------------------------------------------------------
/src/client/components/common/u-sidelist.vue/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
{{ title }}
4 |
5 | -
6 |
7 | {{ item.Name }}
8 | {{ item.version }}
9 |
10 |
×
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/src/client/components/common/u-sidenav.vue/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | {{ nav.text }}{{ nav.remark }}
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/src/client/components/common/u-sort-radio.vue/index.html:
--------------------------------------------------------------------------------
1 |
10 |
--------------------------------------------------------------------------------
/src/client/components/common/u-sort-radios.vue/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/src/client/components/common/u-sort-radios.vue/index.js:
--------------------------------------------------------------------------------
1 | import { Radios } from 'cloud-ui.vusion';
2 |
3 | export default {
4 | name: 'u-sort-radios',
5 | childName: 'u-sort-radio',
6 | extends: Radios,
7 | };
8 |
--------------------------------------------------------------------------------
/src/client/components/common/u-sort-radios.vue/module.css:
--------------------------------------------------------------------------------
1 | @import 'proto-ui.vusion/src/u-radios.vue/module.css';
2 |
3 | .root {
4 | display: inline-block;
5 | }
6 |
7 | .root > *:not(:last-child) {
8 | margin-right: 20px;
9 | }
10 |
--------------------------------------------------------------------------------
/src/client/components/common/u-step-process.vue/index.html:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/src/client/components/common/u-step-process.vue/index.js:
--------------------------------------------------------------------------------
1 | export default {
2 | name: 'u-step-progress',
3 | props: {
4 | percent: { type: Number, default: 0 },
5 | start: { type: Number, deffault: 0 },
6 | },
7 | };
8 |
--------------------------------------------------------------------------------
/src/client/components/common/u-step-process.vue/module.css:
--------------------------------------------------------------------------------
1 | @import 'cloud-ui.vusion/src/u-linear-progress.vue/module.css';
2 |
3 | .track, .trail{
4 | border-radius: 3px;
5 | }
6 |
--------------------------------------------------------------------------------
/src/client/components/common/u-table-column.vue/index.js:
--------------------------------------------------------------------------------
1 | import { TableViewColumn } from 'cloud-ui.vusion';
2 |
3 | export default TableViewColumn;
4 |
--------------------------------------------------------------------------------
/src/client/components/common/u-table-view-cell.vue/index.js:
--------------------------------------------------------------------------------
1 | import { TableViewCell } from 'cloud-ui.vusion';
2 |
3 | export default TableViewCell;
4 |
--------------------------------------------------------------------------------
/src/client/components/common/u-table-view.vue/index.js:
--------------------------------------------------------------------------------
1 | import { TableView } from 'cloud-ui.vusion';
2 |
3 | export default TableView;
4 |
--------------------------------------------------------------------------------
/src/client/components/common/u-table-view.vue/module.css:
--------------------------------------------------------------------------------
1 | @import 'cloud-ui.vusion/src/u-table-view.vue/module.css';
2 |
3 | .hthSpan, .btdSpan, .btdSpan[role="center"] {
4 | height: 42px;
5 | padding: 0 0 0 10px;
6 | }
7 |
8 | .root[class] {
9 | font-size: 12px;
10 | }
11 |
12 | .btdSpan {
13 | color: #575962;
14 | }
15 |
16 | .hthSpan {
17 | color: #999;
18 | }
19 |
--------------------------------------------------------------------------------
/src/client/components/common/u-tip.vue:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
19 |
20 |
30 |
--------------------------------------------------------------------------------
/src/client/components/common/u-toast.vue/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {{ item.text }}
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/src/client/components/common/u-unauth.vue/assets/404-3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubecube-io/kubecube-front/7adeb5840a03415802f871a6f5a5dcee9a57e3f9/src/client/components/common/u-unauth.vue/assets/404-3.png
--------------------------------------------------------------------------------
/src/client/components/common/u-unauth.vue/assets/block@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubecube-io/kubecube-front/7adeb5840a03415802f871a6f5a5dcee9a57e3f9/src/client/components/common/u-unauth.vue/assets/block@2x.png
--------------------------------------------------------------------------------
/src/client/components/common/u-unauth.vue/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |

5 |

6 |
7 | {{ unAuthText || (notFound ? '未找到该页面' : '无权限访问,可联系管理员开通权限') }} 快速配置
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/src/client/components/common/u-unauth.vue/module.css:
--------------------------------------------------------------------------------
1 | .root {
2 | text-align: center;
3 | }
4 | .unauthImg {
5 | width: 200px;
6 | height: 160px;
7 | margin-top: 200px;
8 | }
9 | .img404 {
10 | width: 300px;
11 | margin-top: 330px;
12 | }
--------------------------------------------------------------------------------
/src/client/components/common/x-editor.vue/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/src/client/components/common/x-editor.vue/lang.js:
--------------------------------------------------------------------------------
1 | export default function (lang) {
2 | return require(`brace/mode/${lang}`);
3 | }
4 |
--------------------------------------------------------------------------------
/src/client/components/common/x-editor.vue/module.css:
--------------------------------------------------------------------------------
1 | .root {
2 | border-color: #f5f7f9;
3 | background-color: #f5f7f9;
4 | padding-top: 16px;
5 | font-size: 14px;
6 | }
7 |
8 | .root :global(.ace_gutter) {
9 | background-color: #f5f7f9;
10 | top: 16px;
11 | }
12 |
13 | .root :global(.ace_scroller) {
14 | top: 16px;
15 | }
16 |
17 | .root :global(.ace_variable) {
18 | color: #c27919;
19 | }
20 |
21 | .root :global(.ace_marker-layer) :global(.ace_active-line), .root :global(.ace_gutter-active-line) {
22 | background: #ecf1f6;
23 | }
24 |
--------------------------------------------------------------------------------
/src/client/components/common/x-editor.vue/theme.js:
--------------------------------------------------------------------------------
1 | export default function (theme) {
2 | return require(`brace/theme/${theme}`);
3 | }
4 |
--------------------------------------------------------------------------------
/src/client/components/common/x-term.vue/index.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/client/components/common/x-term.vue/module.css:
--------------------------------------------------------------------------------
1 | .root {
2 | z-index: 10;
3 | width: 100%;
4 | height: 100%;
5 | }
6 |
--------------------------------------------------------------------------------
/src/client/components/special/weather-icon.vue/index.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/client/components/special/weather-icon.vue/index.js:
--------------------------------------------------------------------------------
1 | export default {
2 | name: 'weather-icon',
3 | };
4 |
--------------------------------------------------------------------------------
/src/client/components/special/weather-icon.vue/module.css:
--------------------------------------------------------------------------------
1 | .icon{
2 | font-size: 24px;
3 | font-weight: bold;
4 | display: inline-block;
5 | }
6 | .icon[type='sun']:before{
7 | vertical-align: middle;
8 | icon-font: url(./icons/sun.svg);
9 | color: #fbcc3e;
10 | }
11 | .icon[type='cloud']:before{
12 | vertical-align: middle;
13 | icon-font: url(./icons/sunny.svg);
14 | color: #fbcc3e;
15 | }
16 | .icon[type='cloudy']:before{
17 | vertical-align: middle;
18 | icon-font: url(./icons/cloudy.svg);
19 | }
20 | .icon[type='rain']:before{
21 | vertical-align: middle;
22 | icon-font: url(./icons/rain.svg);
23 | }
24 | .icon[type='storm']:before{
25 | vertical-align: middle;
26 | icon-font: url(./icons/storm.svg);
27 | }
28 |
--------------------------------------------------------------------------------
/src/client/directives/index.js:
--------------------------------------------------------------------------------
1 | export const preventRepeatClick = {
2 | bind(el, binding) {
3 | el.addEventListener('click', () => {
4 | if (!el.isDisabled) {
5 | el.isDisabled = true
6 | setTimeout(() => {
7 | el.isDisabled = false
8 | }, binding.value || 2000)
9 | }
10 | })
11 | }
12 | };
13 |
--------------------------------------------------------------------------------
/src/client/filters/index.js:
--------------------------------------------------------------------------------
1 | import { date, others, unit } from '@necfe/cloud-ui-internal/src/filters.js';
2 | import local from './filter.js';
3 |
4 | export { date, others, unit, local };
5 | export default Object.assign({}, date, others, unit, local);
--------------------------------------------------------------------------------
/src/client/services/cicd.js:
--------------------------------------------------------------------------------
1 | import request from './request.js';
2 |
3 | const perfix = '/cicdDeploy/proxy';
4 |
5 | export default{
6 | notify(param) {
7 | return request.post(perfix + '/api/v1/cicd-deploy/ncs-cluster/addNotify', param);
8 | },
9 | getLegacyDeploymentSwitch() {
10 | return request.get('/cicd/proxy/api/v1/cicd/deploy/legacyEnabled');
11 | },
12 | };
13 |
--------------------------------------------------------------------------------
/src/client/services/gtxs.js:
--------------------------------------------------------------------------------
1 | import Service from './service.js';
2 |
3 | const Version = '2018-11-19';
4 |
5 | const TXService = {
6 | // 获取全部组件信息
7 | loadSummary: {
8 | method: 'get',
9 | path: '',
10 | query: {
11 | Action: 'DescribeTxSummary',
12 | Version,
13 | },
14 | process: (result = {}) => result,
15 | },
16 | };
17 |
18 | // /gtxs/proxy 为前端代理接口需要带的前缀
19 | const service = new Service(TXService, '/gtxs/proxy/gtxs');
20 |
21 | export default service;
22 |
--------------------------------------------------------------------------------
/src/client/services/license.js:
--------------------------------------------------------------------------------
1 | import Service from '@micro-app/common/services/service.js';
2 |
3 | const licenseApis = {
4 | status: {
5 | method: 'get',
6 | path: '/status',
7 | },
8 | };
9 |
10 | const service = new Service(licenseApis, '/inner/api/v1/license');
11 |
12 | export default service;
13 |
--------------------------------------------------------------------------------
/src/client/services/nsf.js:
--------------------------------------------------------------------------------
1 | import Service from './service.js';
2 |
3 | const metaapis = {
4 | // 获取全部组件信息
5 | getAllEnvInfo: {
6 | method: 'get',
7 | path: '/api/metadata',
8 | query: {
9 | Action: 'GetAllEnvInfo',
10 | Version: '2018-11-1',
11 | },
12 | process: ({ Result = [] }) => Result,
13 | },
14 | };
15 |
16 | const meta = new Service(metaapis, '/meta/redirect');
17 | const service = Object.assign({}, meta);
18 | export default service;
19 |
--------------------------------------------------------------------------------
/src/client/services/services/namespace.js:
--------------------------------------------------------------------------------
1 | import Service from './service';
2 | import { userInterceptor } from './interceptor';
3 |
4 | const service = Service({
5 | baseURL: '/api/v1/cube/proxy/clusters',
6 | apis: {
7 | getNamespaces: {
8 | template: '/{cluster}/api/v1/namespaces',
9 | method: 'get',
10 | }
11 | }
12 | });
13 |
14 | userInterceptor(service.axiosInstance);
15 | export default service;
--------------------------------------------------------------------------------
/src/client/static/favicon_yun.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubecube-io/kubecube-front/7adeb5840a03415802f871a6f5a5dcee9a57e3f9/src/client/static/favicon_yun.ico
--------------------------------------------------------------------------------
/src/client/static/hostMonitor-example.csv:
--------------------------------------------------------------------------------
1 | 操作系统(*),IP地址(*),采集端口(*),HostName
2 | Linux,127.0.0.1,7777,hostname-update-3
3 | Linux,127.0.0.1,7757,hostname-4
--------------------------------------------------------------------------------
/src/client/static/jianhang.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubecube-io/kubecube-front/7adeb5840a03415802f871a6f5a5dcee9a57e3f9/src/client/static/jianhang.ico
--------------------------------------------------------------------------------
/src/client/static/yunjia.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubecube-io/kubecube-front/7adeb5840a03415802f871a6f5a5dcee9a57e3f9/src/client/static/yunjia.ico
--------------------------------------------------------------------------------
/src/client/utils/authMap/index.js:
--------------------------------------------------------------------------------
1 | import platform from './platform';
2 | import ncs from './ncs';
3 |
4 | export {
5 | platform,
6 | ncs,
7 | };
8 |
--------------------------------------------------------------------------------
/src/client/utils/authMap/ncs.js:
--------------------------------------------------------------------------------
1 | export default {
2 | ClusterSetting: ['admin.cluster'],
3 | // viewClusterMonitor: ['dashboard.index.resource'],
4 | // viewTenantMonitor: ['dashboard.index.tenant'],
5 | // viewProjectMonitor: ['dashboard.index.project'],
6 | // viewIngressMonitor: ['dashboard.index.ingress'],
7 | RegistrySyncDest: ['targetRepo.list', 'targetRepo.edit'],
8 | RegistrySync: ['repo.policy.list', 'repo.policy.edit'],
9 | };
10 |
--------------------------------------------------------------------------------
/src/client/utils/authMap/platform.js:
--------------------------------------------------------------------------------
1 | export default {
2 | // systemMgr: ['/permission/platformManage/tenant', '/permission/platformManage/audit', '/permission/platformManage/outerAuth'],
3 | // tenantMgr: ['/permission/tenantManage/project', '/permission/tenantManage/member'],
4 | // projectMgr: ['/permission/projectManage/projectP'],
5 |
6 | tenantMgr: ['/permission/tenantManage/**'],
7 | projectMgr: ['/permission/projectManage/**'],
8 | opsMgr: ['/permission/platformManage/**'],
9 | // userMgr: ['/permission/userManage/**', '!/permission/userManage/right/feature'], // ! 排除法 🌰 栗子
10 | userMgr: ['/permission/userManage/**'],
11 | actionTrail: ['/permission/auditManage/**'],
12 | };
13 |
--------------------------------------------------------------------------------
/src/client/utils/message.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue';
2 |
3 | export default new Vue();
4 |
--------------------------------------------------------------------------------
/src/client/utils/wrapComponents.js:
--------------------------------------------------------------------------------
1 | export default { template: '
' };
2 |
--------------------------------------------------------------------------------
/src/client/views/apm/services/agent.js:
--------------------------------------------------------------------------------
1 | import apis from './apis/agent';
2 | import Service from '@micro-app/common/services/service.js';
3 |
4 | const service = new Service(apis);
5 |
6 | export default service;
7 |
--------------------------------------------------------------------------------
/src/client/views/apm/services/apis/agent.js:
--------------------------------------------------------------------------------
1 | import { prefixV1 } from '../base.js';
2 | export default {
3 | getJavaAgentConfig: {
4 | path: prefixV1 + '/userGuide/javaAgentConfig',
5 | method: 'get',
6 | },
7 | getJavaAgentInstallation: {
8 | path: prefixV1 + '/userGuide/javaAgentInstallation',
9 | method: 'get',
10 | },
11 | }
--------------------------------------------------------------------------------
/src/client/views/apm/services/apis/chain.js:
--------------------------------------------------------------------------------
1 | import { prefixV1, prefix } from '../base.js';
2 | export default {
3 | /**
4 | * 获取空间下监控数据概览
5 | */
6 | search: {
7 | path: prefixV1 + '/transactionOverviews/{traceId}',
8 | method: 'get',
9 | },
10 | callChain: {
11 | path: prefixV1 + '/callTree/{transId}',
12 | method: 'get',
13 | }
14 | };
--------------------------------------------------------------------------------
/src/client/views/apm/services/apis/db.js:
--------------------------------------------------------------------------------
1 | const prefix = '/apm/redirect/api/v1/products/{tenantId}/{productId}';
2 | const prefixV2 = '/apm/redirect/api/v2/products/{tenantId}/{productId}';
3 | export default {
4 | /**
5 | * 数据库列表接口
6 | */
7 | getDbs: {
8 | path: prefix + '/dbOverview',
9 | method: 'get',
10 | },
11 | /**
12 | * 慢SQL查询接口
13 | */
14 | getSlowSql: {
15 | path: prefixV2 + '/slowSqlOverview',
16 | method: 'get',
17 | },
18 | /**
19 | * 慢 SQL 详情散点图接口
20 | */
21 | getSlowSqlDetail: {
22 | path: prefixV2 + '/slowSqlScatterPlot',
23 | method: 'post',
24 | },
25 | };
26 |
--------------------------------------------------------------------------------
/src/client/views/apm/services/apis/event.js:
--------------------------------------------------------------------------------
1 | const prefix = '/apm/redirect/api/v2/products/{tenantId}/{productId}';
2 | export default {
3 | getEvent: {
4 | path: prefix + '/getEvent',
5 | method: 'get',
6 | },
7 | }
--------------------------------------------------------------------------------
/src/client/views/apm/services/base.js:
--------------------------------------------------------------------------------
1 | export const prefixV1 = '/apm/redirect/api/v1/napm';
2 | export const prefixV1Products = '/apm/redirect/api/v1/papm';
3 | export const prefix = '/apm/redirect/api/v2/napm';
4 |
--------------------------------------------------------------------------------
/src/client/views/apm/services/chain.js:
--------------------------------------------------------------------------------
1 | import apis from './apis/chain.js';
2 | import Service from '@micro-app/common/services/service.js';
3 |
4 | const service = new Service(apis);
5 |
6 | export default service;
7 |
--------------------------------------------------------------------------------
/src/client/views/apm/services/db.js:
--------------------------------------------------------------------------------
1 | import apis from './apis/db.js';
2 | import Service from '@micro-app/common/services/service.js';
3 |
4 | const service = new Service(apis);
5 |
6 | export default service;
7 |
--------------------------------------------------------------------------------
/src/client/views/apm/services/event.js:
--------------------------------------------------------------------------------
1 | import apis from './apis/event';
2 | import Service from '@micro-app/common/services/service.js';
3 |
4 | const service = new Service(apis);
5 |
6 | export default service;
7 |
--------------------------------------------------------------------------------
/src/client/views/apm/services/monitor.js:
--------------------------------------------------------------------------------
1 | import apis from './apis/monitor.js';
2 | import Service from '@micro-app/common/services/service.js';
3 |
4 | const service = new Service(apis);
5 |
6 | export default service;
7 |
--------------------------------------------------------------------------------
/src/client/views/apm/services/service.js:
--------------------------------------------------------------------------------
1 | import apis from './apis/service.js';
2 | import Service from '@micro-app/common/services/service.js';
3 |
4 | const service = new Service(apis);
5 |
6 | export default service;
7 |
--------------------------------------------------------------------------------
/src/client/views/apm/services/setting.js:
--------------------------------------------------------------------------------
1 | import apis from './apis/setting';
2 | import Service from '@micro-app/common/services/service.js';
3 |
4 | const service = new Service(apis);
5 |
6 | export default service;
7 |
--------------------------------------------------------------------------------
/src/client/views/apm/services/trace.js:
--------------------------------------------------------------------------------
1 | import apis from './apis/trace';
2 | import Service from '@micro-app/common/services/service.js';
3 |
4 | const service = new Service(apis);
5 |
6 | export default service;
7 |
--------------------------------------------------------------------------------
/src/client/views/ncs/services/admin/index.js:
--------------------------------------------------------------------------------
1 | import tenantQuotaService from './quota';
2 | import kubeconfigService from './kubeconfig';
3 | import ingressdomainsuffixService from './ingressdomainsuffix';
4 | import calicoService from './calico';
5 |
6 | export {
7 | kubeconfigService,
8 | tenantQuotaService,
9 | ingressdomainsuffixService,
10 | calicoService,
11 | };
--------------------------------------------------------------------------------
/src/client/views/ncs/services/admin/ingressdomainsuffix.js:
--------------------------------------------------------------------------------
1 | import Service from '@micro-app/common/services/service.js';
2 |
3 | const apis = {
4 | load: {
5 | method: 'get',
6 | path: '/project/{projectId}',
7 | },
8 | modify: {
9 | method: 'post',
10 | path: '/project/{projectId}',
11 | },
12 | loadGlobal: {
13 | method: 'get',
14 | path: '/global',
15 | },
16 | modifyGlobal: {
17 | method: 'post',
18 | path: '/global',
19 | },
20 | };
21 |
22 | // /ncs/proxy 为前端代理接口需要带的前缀
23 | const service = new Service(apis, '/ncs/proxy/api/v1/ncs/extends/ingressdomainsuffix');
24 |
25 | export default service;
26 |
--------------------------------------------------------------------------------
/src/client/views/ncs/services/admin/kubeconfig.js:
--------------------------------------------------------------------------------
1 | import Service from '@micro-app/common/services/service.js';
2 | import cookie from '@micro-app/common/utils/handleCookie';
3 |
4 | const apis = {
5 | download: {
6 | method: 'get',
7 | download: true,
8 | path: '/kubeconfig/certificate/action/download',
9 | query: {
10 | 'x-auth-accountId': cookie.readCookie('accountId'),
11 | 'x-auth-tenantId': cookie.readCookie('tenantId'),
12 | 'x-auth-projectId': cookie.readCookie('projectId'),
13 | },
14 | },
15 | };
16 |
17 | // /ncs/proxy 为前端代理接口需要带的前缀
18 | const service = new Service(apis, '/ncs/proxy/api/v1/ncs/extends');
19 |
20 | export default service;
21 |
--------------------------------------------------------------------------------
/src/client/views/ncs/services/admin/quota.js:
--------------------------------------------------------------------------------
1 | import Service from '@micro-app/common/services/service.js';
2 | const apis = {
3 | load: {
4 | method: 'get',
5 | path: '/clusters/{clusterId}/quota/tenant',
6 | },
7 | modify: {
8 | method: 'post',
9 | path: '/clusters/{clusterId}/quota/tenant',
10 | },
11 | };
12 |
13 | // /ncs/proxy 为前端代理接口需要带的前缀
14 | const service = new Service(apis, '/ncs/proxy/api/v1/ncs/extends');
15 |
16 | export default service;
17 |
--------------------------------------------------------------------------------
/src/client/views/ncs/services/ceph.js:
--------------------------------------------------------------------------------
1 | import Service from '@micro-app/common/services/service.js';
2 | const apis = {
3 | loads: {
4 | method: 'get',
5 | path: '/cephclusters',
6 | },
7 | createCeph: {
8 | method: 'post',
9 | path: '/cephclusters',
10 | },
11 | loadPools: {
12 | method: 'get',
13 | path: '/cephclusters/{cephClusterId}/pools',
14 | },
15 | addPool: {
16 | method: 'post',
17 | path: '/cephclusters/{cephClusterId}/pools',
18 | },
19 | };
20 |
21 | // /ncs/proxy 为前端代理接口需要带的前缀
22 | const service = new Service(apis, '/ncs/proxy/api/v1/ncs/extends');
23 |
24 | export default service;
25 |
--------------------------------------------------------------------------------
/src/client/views/ncs/services/clusterAbout/cicd.js:
--------------------------------------------------------------------------------
1 | import Service from '@micro-app/common/services/service.js';
2 | const apis = {
3 | load: {
4 | path: '/cicd/project/{project}',
5 | method: 'get',
6 | },
7 | modify: {
8 | path: '/cicd/project',
9 | method: 'post',
10 | },
11 | };
12 |
13 | // /ncs/proxy 为前端代理接口需要带的前缀
14 | const service = new Service(apis, '/ncs/proxy/api/v1/ncs/extends');
15 |
16 | export default service;
17 |
--------------------------------------------------------------------------------
/src/client/views/ncs/services/clusterAbout/index.js:
--------------------------------------------------------------------------------
1 | import egressService from './egress';
2 | import clusterService from './cluster';
3 | import cicdService from './cicd';
4 | import quotaService from './quota';
5 | import securityService from './securitygroup';
6 |
7 | export {
8 | cicdService,
9 | quotaService,
10 | egressService,
11 | clusterService,
12 | securityService,
13 | };
--------------------------------------------------------------------------------
/src/client/views/ncs/services/clusterAbout/quota.js:
--------------------------------------------------------------------------------
1 | import Service from '@micro-app/common/services/service.js';
2 | const apis = {
3 | load: {
4 | path: '/clusters/{clusterId}/quota/{resource}',
5 | method: 'get',
6 | },
7 | modify: {
8 | path: '/clusters/{clusterId}/quota',
9 | method: 'post',
10 | },
11 | };
12 |
13 | // /ncs/proxy 为前端代理接口需要带的前缀
14 | const service = new Service(apis, '/ncs/proxy/api/v1/ncs/extends');
15 |
16 | export default service;
17 |
--------------------------------------------------------------------------------
/src/client/views/ncs/services/clusterAbout/securitygroup.js:
--------------------------------------------------------------------------------
1 | import Service from '@micro-app/common/services/service.js';
2 |
3 | const apis = {
4 | loads: {
5 | method: 'get',
6 | path: '/clusters/{clusterId}/openshiftsdn/securitygroups',
7 | },
8 | editGlobal: {
9 | method: 'post',
10 | path: '/clusters/{clusterId}/openshiftsdn/securitygroups/global',
11 | },
12 | // 同时支持安全组的添加、设置和删除操作
13 | editJoined: {
14 | method: 'post',
15 | path: '/clusters/{clusterId}/openshiftsdn/securitygroups/joined',
16 | },
17 | };
18 |
19 | // /ncs/proxy 为前端代理接口需要带的前缀
20 | const service = new Service(apis, '/ncs/proxy/api/v1/ncs/extends');
21 |
22 | export default service;
23 |
24 |
--------------------------------------------------------------------------------
/src/client/views/ncs/services/combine/index.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubecube-io/kubecube-front/7adeb5840a03415802f871a6f5a5dcee9a57e3f9/src/client/views/ncs/services/combine/index.js
--------------------------------------------------------------------------------
/src/client/views/ncs/services/event.js:
--------------------------------------------------------------------------------
1 | import Service from '@micro-app/common/services/service.js';
2 | const apis = {
3 | loads: {
4 | method: 'get',
5 | path: '/clusters/{clusterId}/namespaces/{namespace}/events',
6 | },
7 | };
8 |
9 | const service = new Service(apis, '/ncs/proxy/api/v1/ncs/extends');
10 | export default service;
11 |
--------------------------------------------------------------------------------
/src/client/views/ncs/services/helm/index.js:
--------------------------------------------------------------------------------
1 | import releaseService from './release';
2 | import versionService from './version';
3 | import chartService from './chart';
4 | import helmMemberService from './member';
5 | import helmLogService from './log';
6 |
7 | export {
8 | releaseService,
9 | versionService,
10 | chartService,
11 | helmMemberService,
12 | helmLogService,
13 | };
--------------------------------------------------------------------------------
/src/client/views/ncs/services/helm/log.js:
--------------------------------------------------------------------------------
1 | import Service from '@micro-app/common/services/service.js';
2 | const apis = {
3 | loads: {
4 | method: 'get',
5 | path: '/extends/helm/operations/records',
6 | process: (result) => {
7 | return {
8 | total: result.total || 0,
9 | list: result.records || [],
10 | };
11 | },
12 | },
13 | };
14 |
15 | // /ncs/proxy 为前端代理接口需要带的前缀
16 | const service = new Service(apis, '/ncs/proxy/api/v1/ncs');
17 |
18 | export default service;
19 |
--------------------------------------------------------------------------------
/src/client/views/ncs/services/helm/member.js:
--------------------------------------------------------------------------------
1 | import Service from '@micro-app/common/services/service.js';
2 | const apis = {
3 | loads: {
4 | method: 'get',
5 | path: '/chartrepo/members',
6 | },
7 | create: {
8 | method: 'post',
9 | path: '/chartrepo/member',
10 | },
11 | delete: {
12 | method: 'delete',
13 | path: '/chartrepo/member',
14 | },
15 | };
16 |
17 | // /ncs/proxy 为前端代理接口需要带的前缀
18 | const service = new Service(apis, '/repo/proxy/api/v1/harborproxy');
19 |
20 | export default service;
21 |
--------------------------------------------------------------------------------
/src/client/views/ncs/services/helm/version.js:
--------------------------------------------------------------------------------
1 | // harborproxy(第三方应用)里的project概念,与轻舟里的project做了映射
2 | import Service from '@micro-app/common/services/service.js';
3 |
4 | const apis = {
5 | loads: {
6 | method: 'get',
7 | path: '/chartrepo/getVersionList',
8 | },
9 | load: {
10 | method: 'get',
11 | path: '/chartrepo/version',
12 | },
13 | delete: {
14 | method: 'delete',
15 | path: '/chartrepo/version',
16 | },
17 | };
18 |
19 | const service = new Service(apis, '/repo/proxy/api/v1/harborproxy');
20 | export default service;
21 |
--------------------------------------------------------------------------------
/src/client/views/ncs/services/ingressController.js:
--------------------------------------------------------------------------------
1 | import Service from '@micro-app/common/services/service.js';
2 | const apis = {
3 | loads: {
4 | method: 'get',
5 | path: '/extends/clusters/{clusterId}/ingresscontrollers/addresses',
6 | },
7 |
8 | };
9 |
10 | // /ncs/proxy 为前端代理接口需要带的前缀
11 | const service = new Service(apis, '/ncs/proxy/api/v1/ncs');
12 |
13 | export default service;
14 |
--------------------------------------------------------------------------------
/src/client/views/ncs/services/pv.js:
--------------------------------------------------------------------------------
1 | import Service from '@micro-app/common/services/service.js';
2 |
3 | const apis = {
4 | // todo
5 | load: {
6 | method: 'get',
7 | path: '/clusters/{clusterId}/persistentvolumes/{name}',
8 | },
9 | loads: {
10 | method: 'get',
11 | path: '/extends/clusters/{clusterId}/storage/persistentvolumes',
12 | },
13 | modify: {
14 | method: 'put',
15 | path: '/clusters/{clusterId}/persistentvolumes/{name}',
16 | },
17 | delete: {
18 | method: 'delete',
19 | path: '/clusters/{clusterId}/persistentvolumes/{name}',
20 | },
21 | };
22 |
23 | const service = new Service(apis, '/ncs/proxy/api/v1/ncs');
24 | export default service;
25 |
--------------------------------------------------------------------------------
/src/client/views/ncs/services/repo/index.js:
--------------------------------------------------------------------------------
1 | import repoScanService from './scan';
2 | import repoTagService from './tag';
3 | import targetService from './target';
4 | import policyService from './policy';
5 | import jobService from './job';
6 | import memberService from './member';
7 | import hbProjectService from './hbProject';
8 | import repoService from './repository';
9 | import repoConfigService from './config';
10 |
11 | export {
12 | repoService,
13 | repoTagService,
14 | repoScanService,
15 | jobService,
16 | targetService,
17 | policyService,
18 | memberService,
19 | hbProjectService,
20 | repoConfigService,
21 | };
--------------------------------------------------------------------------------
/src/client/views/ncs/services/repo/member.js:
--------------------------------------------------------------------------------
1 | // harborproxy(第三方应用)里的project概念,与轻舟里的project做了映射
2 | import Service from '@micro-app/common/services/service.js';
3 |
4 | const apis = {
5 | // 获取用户列表
6 | loads: {
7 | path: '/{clusterId}/projects/{projectId}/getMembers',
8 | method: 'post',
9 | },
10 | // 用户授权
11 | create: {
12 | path: '/{clusterId}/projects/{projectId}/addMember',
13 | method: 'post',
14 | },
15 | // 移除用户
16 | remove: {
17 | path: '/{clusterId}/projects/{projectId}/deleteMember',
18 | method: 'post',
19 | },
20 | };
21 |
22 | const service = new Service(apis, '/repo/proxy/api/v1/harborproxy');
23 | export default service;
24 |
--------------------------------------------------------------------------------
/src/client/views/ncs/services/repo/repository.js:
--------------------------------------------------------------------------------
1 | // harborproxy(第三方应用)里的project概念,与轻舟里的project做了映射
2 | import Service from '@micro-app/common/services/service.js';
3 |
4 | const apis = {
5 | // 获取仓库列表
6 | loads: {
7 | path: '/{clusterId}/repositories/getRepositories',
8 | method: 'post',
9 | },
10 | // 删除仓库
11 | delete: {
12 | path: '/{clusterId}/repositories/deleteRepository',
13 | method: 'post',
14 | },
15 | };
16 |
17 | const service = new Service(apis, '/repo/proxy/api/v1/harborproxy');
18 | export default service;
19 |
--------------------------------------------------------------------------------
/src/client/views/ncs/services/repo/scan.js:
--------------------------------------------------------------------------------
1 | import Service from '@micro-app/common/services/service.js';
2 | const apis = {
3 | scan: {
4 | method: 'post',
5 | path: '/{clusterId}/repositories/scan'
6 | },
7 | loads: {
8 | method: 'get',
9 | path: '/{clusterId}/repositories/scanDetail',
10 | },
11 | loadLog: {
12 | method: 'get',
13 | path: '/{clusterId}/repositories/scanLog'
14 | },
15 | };
16 |
17 | const service = new Service(apis, '/repo/proxy/api/v1/harborproxy');
18 | export default service;
19 |
--------------------------------------------------------------------------------
/src/client/views/ncs/services/repo/tag.js:
--------------------------------------------------------------------------------
1 | import Service from '@micro-app/common/services/service.js';
2 | import { normalizeTag } from '@micro-app/common/views/ncs/utils';
3 | const apis = {
4 | // 获取镜像列表
5 | loads: {
6 | path: '/{clusterId}/repositories/getRepoTags',
7 | method: 'get',
8 | },
9 | load: {
10 | method: 'get',
11 | path: '/{clusterId}/repositories/getTag',
12 | process: (result) => {
13 | return normalizeTag(result.tag || {});
14 | },
15 | },
16 | // 删除镜像
17 | delete: {
18 | path: '/{clusterId}/repositories/deleteTag',
19 | method: 'post',
20 | },
21 | };
22 |
23 | const service = new Service(apis, '/repo/proxy/api/v1/harborproxy');
24 | export default service;
25 |
--------------------------------------------------------------------------------
/src/client/views/ncs/services/shell.js:
--------------------------------------------------------------------------------
1 | import Service from '@micro-app/common/services/service.js';
2 | const apis = {
3 | loadStatus: {
4 | method: 'get',
5 | path: '/{clusterName}/pod/{nsName}/{podName}/shell/{containerName}',
6 | headers: {
7 | 'Content-Type': 'application/json',
8 | },
9 | },
10 | };
11 |
12 | const service = new Service(apis, 'webconsole/api/v1');
13 |
14 | export default service;
15 |
--------------------------------------------------------------------------------
/src/client/views/ncs/services/workload/index.js:
--------------------------------------------------------------------------------
1 | import HPAService from './HPA';
2 | import logService from './log';
3 |
4 | export {
5 | HPAService,
6 | logService,
7 | };
--------------------------------------------------------------------------------
/src/client/views/ncs/services/workload/log.js:
--------------------------------------------------------------------------------
1 | import Service from '@micro-app/common/services/service.js';
2 | const apis = {
3 | loads: {
4 | method: 'get',
5 | path: '/clusters/{clusterId}/namespaces/{namespace}/pods/{podName}/container/{containerName}/logs',
6 | },
7 | };
8 |
9 | // /ncs/proxy 为前端代理接口需要带的前缀
10 | const service = new Service(apis, '/ncs/proxy/api/v1/ncs/extends');
11 |
12 | export default service;
13 |
--------------------------------------------------------------------------------
/src/client/views/ncs/utils/format.js:
--------------------------------------------------------------------------------
1 | // 处理自定制的storageClass
2 | export const formatStorageClass = (model = {}) => {
3 | return {
4 | // todo
5 | k8sModel: model.item,
6 | };
7 | };
--------------------------------------------------------------------------------
/src/client/views/ncs/utils/listMixins.js:
--------------------------------------------------------------------------------
1 | export default {
2 | computed: {
3 | nsName() {
4 | return this.$route.query.nsName;
5 | },
6 | },
7 | watch: {
8 | nsName(value) {
9 | // 重置
10 | this.page = 1;
11 | this.totalPage = 1;
12 | this.list = [];
13 | this.loadList()
14 | },
15 | },
16 | }
--------------------------------------------------------------------------------
/src/client/views/ncs/utils/rules.js:
--------------------------------------------------------------------------------
1 | // cidrReg 无法通过空值的判断
2 | export const cidrReg = /^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]).){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/([1-2][0-9]|3[0-2]|[0-9]))$/;
3 |
4 | export const cidr = [
5 | { type: 'string', trigger: 'input', message: '', validator: (rule, value, callback) => (!value || cidrReg.test(value)) ? callback() : callback(new Error()) },
6 | { type: 'string', trigger: 'blur', message: 'CIDR 不合法', validator: (rule, value, callback) => (!value || cidrReg.test(value)) ? callback() : callback(new Error()) },
7 | ];
--------------------------------------------------------------------------------
/src/client/views/workloads/deployments/index.vue:
--------------------------------------------------------------------------------
1 |
2 | deployment
3 |
4 |
5 |
10 |
11 |
14 |
--------------------------------------------------------------------------------
/src/kubecube/assets/empty.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubecube-io/kubecube-front/7adeb5840a03415802f871a6f5a5dcee9a57e3f9/src/kubecube/assets/empty.png
--------------------------------------------------------------------------------
/src/kubecube/component/common/kube-chart/template/index.js:
--------------------------------------------------------------------------------
1 | import chartWrppaer from '../wrapper/index.vue';
2 | import chart from './jchart.vue';
3 | export default {
4 | extends: chartWrppaer,
5 | data() {
6 | return {
7 | chart,
8 | };
9 | },
10 | };
11 |
--------------------------------------------------------------------------------
/src/kubecube/component/common/kube-chart/template/legend-table-chart.js:
--------------------------------------------------------------------------------
1 | import chartWrppaer from '../e-chart-wrapper/index.vue';
2 | import chart from './legend-table-chart.vue';
3 | export default {
4 | extends: chartWrppaer,
5 | data() {
6 | return {
7 | chart,
8 | };
9 | },
10 | };
11 |
--------------------------------------------------------------------------------
/src/kubecube/component/common/kube-data/data-mixin.js:
--------------------------------------------------------------------------------
1 | export default {
2 |
3 | }
--------------------------------------------------------------------------------
/src/kubecube/component/common/kube-dynamic-table-layout/column.vue:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 | |
11 |
12 |
13 |
14 |
21 |
22 |
25 |
--------------------------------------------------------------------------------
/src/kubecube/component/common/kube-dynamic-table-layout/table.css:
--------------------------------------------------------------------------------
1 | .root[topAlign] {
2 | vertical-align: top;
3 | }
4 | .root > td {
5 | padding-right: 10px;
6 | }
7 |
8 | .root.static td:nth-last-child(2) {
9 | padding-right: 0;
10 | }
11 | .formTd {
12 | position: relative;
13 | width: 42px;
14 | padding: 0;
15 | }
16 |
17 |
--------------------------------------------------------------------------------
/src/kubecube/component/common/kube-dynamic-table-layout/tb-del.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubecube-io/kubecube-front/7adeb5840a03415802f871a6f5a5dcee9a57e3f9/src/kubecube/component/common/kube-dynamic-table-layout/tb-del.png
--------------------------------------------------------------------------------
/src/kubecube/component/common/kube-table/normalComp.vue:
--------------------------------------------------------------------------------
1 |
2 | {{ data[column.name] }}
6 |
7 |
8 |
16 |
17 |
25 |
--------------------------------------------------------------------------------
/src/kubecube/component/common/kube-table/row-expand.js:
--------------------------------------------------------------------------------
1 | export default {
2 | props: {
3 | columns: Array,
4 | },
5 | data() {
6 | return {};
7 | },
8 | render(h) {
9 | return h('tr', [
10 | h('td', {
11 | style: {
12 | padding: '0',
13 | },
14 | attrs: {
15 | colspan: this.columns.length,
16 | },
17 | },
18 | this.$slots.default
19 | ),
20 | ]);
21 | },
22 | };
23 |
--------------------------------------------------------------------------------
/src/kubecube/component/common/kube-table/row-group.js:
--------------------------------------------------------------------------------
1 | export default {
2 | functional: true,
3 | props: {
4 | expand: Boolean,
5 | },
6 | render(h, { slots, props }) {
7 | const computedSlots = slots();
8 | const children = [];
9 | if (computedSlots.content) {
10 | children.push(...computedSlots.content);
11 | }
12 | if (computedSlots.expand && props.expand) {
13 | children.push(...computedSlots.expand);
14 | }
15 | return children;
16 | },
17 | };
18 |
--------------------------------------------------------------------------------
/src/kubecube/component/common/kube-table/th-icon.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
9 |
10 |
11 |
18 |
19 |
39 |
--------------------------------------------------------------------------------
/src/kubecube/component/common/kube-table/th-normal.vue:
--------------------------------------------------------------------------------
1 |
2 |
6 | {{ column.title }}
7 | |
8 |
9 |
10 |
17 |
18 |
25 |
--------------------------------------------------------------------------------
/src/kubecube/component/common/slot-wrapper.js:
--------------------------------------------------------------------------------
1 | export default {
2 | functional: true,
3 | props: {
4 | slotgen: Function,
5 | item: Object,
6 | },
7 | render(c, context) {
8 | const vnode = context.props.slotgen({
9 | item: context.props.item,
10 | });
11 | return vnode;
12 | },
13 | };
14 |
--------------------------------------------------------------------------------
/src/kubecube/component/global/header/preconfirm.mixin.js:
--------------------------------------------------------------------------------
1 |
2 | export default {
3 | methods: {
4 | beforeChange(value) {
5 | console.log(val);
6 | }
7 | }
8 | }
--------------------------------------------------------------------------------
/src/kubecube/component/global/icon/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubecube-io/kubecube-front/7adeb5840a03415802f871a6f5a5dcee9a57e3f9/src/kubecube/component/global/icon/logo.png
--------------------------------------------------------------------------------
/src/kubecube/component/global/icon/logout.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
--------------------------------------------------------------------------------
/src/kubecube/component/global/xterm/terminator.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubecube-io/kubecube-front/7adeb5840a03415802f871a6f5a5dcee9a57e3f9/src/kubecube/component/global/xterm/terminator.png
--------------------------------------------------------------------------------
/src/kubecube/directives/index.js:
--------------------------------------------------------------------------------
1 | import Tips from './tip';
2 |
3 | export default [
4 | Tips,
5 | ];
6 |
--------------------------------------------------------------------------------
/src/kubecube/directives/tip/README.md:
--------------------------------------------------------------------------------
1 | - 常规使用
2 |
3 | ```html
4 | 这里是需要展示的内容和弹框展示的内容
5 | ```
6 |
7 | - 需要添加 title、class、width、height 等内容
8 |
9 | ```html
10 | 这里是需要展示的内容和弹框展示的内容
11 | ```
12 |
13 | ```html
14 | 这里是需要展示的内容和弹框展示的内容
15 | ```
16 |
17 | - v-tips 可不传数据,不传则直接显示innerText的内容
18 | - v-tips 传数据时,若直接传的是字符串,则直接显示传入的字符串内容,若所传字符串是空字符串,则触发显示
19 | - v-tips 传数据时,若传入为对象,仅为设置 popper 的视觉效果,所传参数和 element-ui 的 popover 参数一致。[https://element.eleme.cn/#/zh-CN/component/popover](https://element.eleme.cn/#/zh-CN/component/popover)
20 | - tip展示位置默认在`上方`显示,触发条件默认是`hover`
21 |
--------------------------------------------------------------------------------
/src/kubecube/elComponent/kubeEditor/defaultOptions.js:
--------------------------------------------------------------------------------
1 | export default {
2 | selectOnLineNumbers: true,
3 | roundedSelection: false,
4 | readOnly: false,
5 | cursorStyle: 'line',
6 | automaticLayout: true, // 自动布局
7 | glyphMargin: true,
8 | contextmenu: false,
9 | scrollbar: {
10 | verticalScrollbarSize: 6,
11 | horizontalScrollbarSize: 6,
12 | },
13 | minimap: { enabled: false },
14 | renderOverviewRuler: false,
15 | enableSplitViewResizing: false,
16 | };
17 |
--------------------------------------------------------------------------------
/src/kubecube/elComponent/operate-list/operate-button-option.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/src/kubecube/elComponent/operate-list/renderVnode.vue:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/kubecube/elComponent/qz-editor/defaultOptions.js:
--------------------------------------------------------------------------------
1 | export default {
2 | selectOnLineNumbers: true,
3 | roundedSelection: false,
4 | readOnly: false,
5 | cursorStyle: 'line',
6 | automaticLayout: true, // 自动布局
7 | glyphMargin: true,
8 | contextmenu: false,
9 | scrollbar: {
10 | verticalScrollbarSize: 6,
11 | horizontalScrollbarSize: 6,
12 | },
13 | minimap: { enabled: false },
14 | renderOverviewRuler: false,
15 | enableSplitViewResizing: false,
16 | };
17 |
--------------------------------------------------------------------------------
/src/kubecube/elComponent/qz-editor/index.js:
--------------------------------------------------------------------------------
1 | import { setLocaleData } from 'monaco-editor-nls';
2 | import zh_CN from 'monaco-editor-nls/locale/zh-hans';
3 | setLocaleData(zh_CN);
4 |
5 | import QzEditor from './QzEditor';
6 |
7 | export default QzEditor;
8 |
--------------------------------------------------------------------------------
/src/kubecube/elComponent/qz-link-group/index.js:
--------------------------------------------------------------------------------
1 | import Component from './src/qz-link-group.vue';
2 | export default Component;
3 |
--------------------------------------------------------------------------------
/src/kubecube/elComponent/qz-link-group/src/qz-link-simple.vue:
--------------------------------------------------------------------------------
1 |
20 |
33 |
--------------------------------------------------------------------------------
/src/kubecube/elComponent/qz-terminal/index.js:
--------------------------------------------------------------------------------
1 | import Component from './src/qz-terminal.vue';
2 |
3 |
4 | export default Component;
5 |
--------------------------------------------------------------------------------
/src/kubecube/elComponent/qz-terminal/src/assets/images/terminator.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubecube-io/kubecube-front/7adeb5840a03415802f871a6f5a5dcee9a57e3f9/src/kubecube/elComponent/qz-terminal/src/assets/images/terminator.png
--------------------------------------------------------------------------------
/src/kubecube/elComponent/qz-terminal/src/assets/svg/align-justify.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/kubecube/elComponent/qz-terminal/src/assets/svg/times-solid.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/kubecube/elComponent/qz-terminal/src/assets/svg/window-maximize.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/kubecube/elComponent/qz-terminal/src/assets/svg/window-minimize.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/kubecube/elComponent/qz-terminal/src/assets/svg/window-restore.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/kubecube/k8s-resources/container/status.js:
--------------------------------------------------------------------------------
1 | import {
2 | getFromModel,
3 | } from '../base';
4 |
5 | export const toPlainObject = (model, containerName) => {
6 | const cg = getFromModel(model);
7 | const containerStatus = (cg('status.containerStatuses', []) || []); // 业务容器状态信息
8 | const initContainerStatuses = (cg('status.initContainerStatuses', []) || []); // init容器状态信息
9 |
10 | return [ ...containerStatus, ...initContainerStatuses ].find(c => c.name === containerName) || { state: { unknown: {} } };
11 | };
12 |
--------------------------------------------------------------------------------
/src/kubecube/k8s-resources/crd/index.js:
--------------------------------------------------------------------------------
1 | import {
2 | toPlainObject as toConfigPlainObject,
3 | } from '../base/config';
4 |
5 | import { getFromModel } from '../base/utils';
6 |
7 | export function toPlainObject(model) {
8 | const obj = toConfigPlainObject(model);
9 | const g = getFromModel(model);
10 | return {
11 | ...obj,
12 | names: g('spec.names'), // 名称
13 | group: g('spec.group'), // 组
14 | versions: (g('spec.versions') || []).map(v => v.name), // 本版
15 | };
16 | }
17 |
--------------------------------------------------------------------------------
/src/kubecube/k8s-resources/cronjob/status.js:
--------------------------------------------------------------------------------
1 | import {
2 | pickBy,
3 | isObjectLike,
4 | } from 'lodash';
5 | import {
6 | getFromModel,
7 | } from '../base';
8 |
9 | export const toPlainObject = model => {
10 | const g = getFromModel(model);
11 | return {
12 | ...pickBy(g('status'), v => !isObjectLike(v)),
13 | active: g('status.active', []),
14 | };
15 | };
16 |
--------------------------------------------------------------------------------
/src/kubecube/k8s-resources/daemonsets/status.js:
--------------------------------------------------------------------------------
1 | import { pickBy, isObjectLike } from 'lodash';
2 | import {
3 | getFromModel,
4 | } from '../base';
5 |
6 | export const toPlainObject = model => {
7 | const cg = getFromModel(model);
8 | return {
9 | ...pickBy(model, v => !isObjectLike(v)),
10 | conditions: cg('status.conditions', []),
11 | };
12 | };
13 |
--------------------------------------------------------------------------------
/src/kubecube/k8s-resources/deployment/status.js:
--------------------------------------------------------------------------------
1 | import {
2 | getFromModel,
3 | } from '../base';
4 |
5 | export const toPlainObject = model => {
6 | const cg = getFromModel(model);
7 | return {
8 | desired: cg('spec.replicas', 0), // 预期的副本数
9 | updated: cg('status.updatedReplicas', 0), // 已经是最新版本的副本数
10 | available: cg('status.availableReplicas', 0), // 可用副本数
11 | unavailable: cg('status.unavailableReplicas', 0), // 不可用副本数
12 | total: cg('status.replicas', 0), // 总副本数
13 | conditions: cg('status.conditions', []), // 状况条目
14 | readyReplicas: cg('status.readyReplicas', 0), // 就绪副本
15 | };
16 | };
17 |
--------------------------------------------------------------------------------
/src/kubecube/k8s-resources/event/index.js:
--------------------------------------------------------------------------------
1 | import { pick } from 'lodash';
2 | import {
3 | toPlainObject as toMetadataPlainObject,
4 | } from '../metadata';
5 |
6 | export const toPlainObject = model => {
7 | const obj = {
8 | metadata: toMetadataPlainObject(model),
9 | ...pick(model, [
10 | 'count',
11 | 'message', // 消息
12 | 'reason', // 原因
13 | 'firstTimestamp', // 首次出现时间
14 | 'lastTimestamp', // 上次出现时间
15 | 'involvedObject.fieldPath', // 事件对象filePath
16 | ]),
17 |
18 | };
19 | // console.log(obj);
20 | return obj;
21 | };
22 |
--------------------------------------------------------------------------------
/src/kubecube/k8s-resources/ingress/status.js:
--------------------------------------------------------------------------------
1 | import {
2 | getFromModel,
3 | } from '../base';
4 |
5 | export const toPlainObject = model => {
6 | const cg = getFromModel(model);
7 | return cg('status');
8 | };
9 |
--------------------------------------------------------------------------------
/src/kubecube/k8s-resources/label-selector.js:
--------------------------------------------------------------------------------
1 | import {
2 | omitBy,
3 | isEmpty,
4 | zipObjectDeep,
5 | } from 'lodash';
6 | import {
7 | getFromModel,
8 | toObjectArray,
9 | KVtoObject,
10 | } from './base';
11 |
12 | export const toPlainObject = (model, mode = 'normal') => {
13 | const g = getFromModel(model);
14 | const obj = {
15 | matchLabels: toObjectArray(g('selector.matchLabels', {}), 'key', 'value'),
16 | };
17 | return obj;
18 | };
19 |
20 |
21 | export const toK8SObject = model => {};
22 |
--------------------------------------------------------------------------------
/src/kubecube/k8s-resources/monitor/index.js:
--------------------------------------------------------------------------------
1 | import {
2 | toPlainObject as toCommonPlainObject,
3 | } from '../base/common';
4 | import {
5 | toPlainObject as toSpecPlainObject,
6 | } from './spec';
7 |
8 | export function toPlainObject(model) {
9 | return toCommonPlainObject(model)({
10 | toSpecPlainObject,
11 | toStatusPlainObject: () => ({}),
12 | });
13 | }
14 |
15 |
--------------------------------------------------------------------------------
/src/kubecube/k8s-resources/persistentvolumeclaim/status.js:
--------------------------------------------------------------------------------
1 | import {
2 | getFromModel,
3 | } from '../base';
4 |
5 | export const toPlainObject = model => {
6 | const cg = getFromModel(model);
7 | return cg('status');
8 | };
9 |
--------------------------------------------------------------------------------
/src/kubecube/k8s-resources/persistentvolumes/index.js:
--------------------------------------------------------------------------------
1 | import {
2 | toPlainObject as toCommonPlainObject,
3 | } from '../base/common';
4 | import {
5 | toPlainObject as toSpecPlainObject,
6 | } from './spec';
7 |
8 | import {
9 | toPlainObject as toStatusPlainObject,
10 | } from './status';
11 |
12 | export function toPlainObject(model) {
13 | return toCommonPlainObject(model)({
14 | toSpecPlainObject,
15 | toStatusPlainObject,
16 | });
17 | }
18 |
--------------------------------------------------------------------------------
/src/kubecube/k8s-resources/persistentvolumes/spec.js:
--------------------------------------------------------------------------------
1 | // import { pickBy, isObjectLike } from 'lodash';
2 | import { getFromModel } from '../base/utils';
3 |
4 |
5 | export const toPlainObject = model => {
6 | const g = getFromModel(model);
7 | return g('spec');
8 | };
9 |
--------------------------------------------------------------------------------
/src/kubecube/k8s-resources/persistentvolumes/status.js:
--------------------------------------------------------------------------------
1 | import {
2 | getFromModel,
3 | } from '../base';
4 |
5 | export const toPlainObject = model => {
6 | const cg = getFromModel(model);
7 | return cg('status');
8 | };
9 |
--------------------------------------------------------------------------------
/src/kubecube/k8s-resources/pod/pod-template.js:
--------------------------------------------------------------------------------
1 |
2 | import {
3 | toPlainObject as toBasePlainObject,
4 | getFromModel,
5 | } from '../base';
6 | import {
7 | toPlainObject as toMetadataPlainObject,
8 | // toK8SObject as toMetadataK8SObject,
9 | } from '../metadata';
10 |
11 | import {
12 | toPlainObject as toPodSpecPlainObject,
13 | } from './pod-spec';
14 |
15 | export const toPlainObject = model => {
16 | const g = getFromModel(model);
17 | return {
18 | metadata: toMetadataPlainObject(model),
19 | spec: toPodSpecPlainObject(g('spec')),
20 | };
21 | };
22 |
--------------------------------------------------------------------------------
/src/kubecube/k8s-resources/service/status.js:
--------------------------------------------------------------------------------
1 | import {
2 | getFromModel,
3 | } from '../base';
4 |
5 | export const toPlainObject = model => {
6 | const cg = getFromModel(model);
7 | const ingress = cg('status.loadBalancer.ingress') || [];
8 | return {
9 | conditions: cg('status.conditions', []),
10 | loadBalancer: {
11 | ingress: ingress.map(i => `${i.hostname || i.ip}`).join(','),
12 | },
13 | // loadBalancer:
14 | };
15 | };
16 |
--------------------------------------------------------------------------------
/src/kubecube/k8s-resources/statefulset/status.js:
--------------------------------------------------------------------------------
1 | import {
2 | getFromModel,
3 | } from '../base';
4 |
5 | export const toPlainObject = model => {
6 | const cg = getFromModel(model);
7 | return {
8 | desired: cg('spec.replicas', 0),
9 | total: cg('status.replicas', 0),
10 | readyReplicas: cg('status.readyReplicas', 0),
11 | conditions: cg('status.conditions', []),
12 | };
13 | };
14 |
--------------------------------------------------------------------------------
/src/kubecube/k8s-resources/subnamespace/index.js:
--------------------------------------------------------------------------------
1 | export function toK8SObject({
2 | namespace,
3 | tenant,
4 | project,
5 | scope,
6 | }) {
7 | return {
8 | apiVersion: 'hnc.x-k8s.io/v1alpha2',
9 | kind: 'SubnamespaceAnchor',
10 | metadata: {
11 | labels: {
12 | 'kubecube.io/project': project,
13 | 'kubecube.io/tenant': tenant,
14 | },
15 | name: namespace,
16 | namespace: scope,
17 | },
18 | };
19 | }
20 |
--------------------------------------------------------------------------------
/src/kubecube/mixins/functional.js:
--------------------------------------------------------------------------------
1 | export const makeVModelMixin = {
2 | props: {
3 | value: {
4 | type: [ String, Number, Boolean, Array, Object ],
5 | require: true,
6 | },
7 | },
8 | model: {
9 | event: 'change',
10 | prop: 'value',
11 | },
12 | computed: {
13 | model: {
14 | get() {
15 | return this.value;
16 | },
17 | set(val) {
18 | this.$emit('change', val);
19 | },
20 | },
21 | },
22 | };
23 |
--------------------------------------------------------------------------------
/src/kubecube/mixins/index.js:
--------------------------------------------------------------------------------
1 | import validators from './validators';
2 | import pagenation from './pagenation';
3 | export const pagenationMixin = pagenation;
4 | export const validatorsMixin = validators;
5 |
--------------------------------------------------------------------------------
/src/kubecube/mixins/pipe/kube-pipe.vue:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
9 |
10 |
11 |
27 |
28 |
31 |
--------------------------------------------------------------------------------
/src/kubecube/mixins/validators.js:
--------------------------------------------------------------------------------
1 | import * as validators from 'kubecube/utils/validators';
2 | export default {
3 | data() {
4 | return {
5 | validators,
6 | };
7 | },
8 | };
9 |
--------------------------------------------------------------------------------
/src/kubecube/plugins/vee-validate.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue';
2 | import {
3 | ValidationObserver,
4 | ValidationProvider,
5 | extend, setInteractionMode,
6 | } from 'vee-validate';
7 |
8 | import { rules } from './validators';
9 | // Register it globally
10 | Vue.component('ValidationObserver', ValidationObserver);
11 | Vue.component('ValidationProvider', ValidationProvider);
12 |
13 | setInteractionMode('eager');
14 |
15 | Object.keys(rules).forEach(rule => {
16 | extend(rule, rules[rule]);
17 | });
18 |
--------------------------------------------------------------------------------
/src/kubecube/plugins/vue-meta.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue';
2 | import VueMeta from 'vue-meta';
3 | Vue.use(VueMeta, {
4 | refreshOnceOnNavigation: true,
5 | });
6 |
7 |
--------------------------------------------------------------------------------
/src/kubecube/router/control-namespace.js:
--------------------------------------------------------------------------------
1 |
2 | export default {
3 | path: 'namespace',
4 | name: 'namespace',
5 | component: () => import(/* webpackChunkName: "control-namespace" */'kubecube/views/control/namespace.vue'),
6 | };
7 |
--------------------------------------------------------------------------------
/src/kubecube/router/user.js:
--------------------------------------------------------------------------------
1 |
2 | export default {
3 | path: 'metauser',
4 | name: 'metauser',
5 | component: () => import(/* webpackChunkName: "user-chunk" */'kubecube/views/user/index.vue'),
6 | redirect: { name: 'metauser.openapi' },
7 | children: [
8 | {
9 | path: 'openapi',
10 | name: 'metauser.openapi',
11 | component: () => import(/* webpackChunkName: "user-chunk" */'kubecube/views/user/open-api.vue'),
12 | meta: {
13 | breadCrumb: '秘钥管理',
14 | },
15 | },
16 |
17 | ],
18 | };
19 |
--------------------------------------------------------------------------------
/src/kubecube/router/wrapper.js:
--------------------------------------------------------------------------------
1 | export default {
2 | render(h) {
3 | return h('router-view', {
4 | props: {
5 | ...this.$attrs,
6 | },
7 | }, this.$slots.default);
8 | },
9 | };
10 |
--------------------------------------------------------------------------------
/src/kubecube/services/audit.js:
--------------------------------------------------------------------------------
1 | import Service from './service';
2 | import { userInterceptor } from './interceptor';
3 | const userService = Service({
4 | baseURL: '/api/v1/',
5 | apis: {
6 | getAudit: {
7 | url: '/audit',
8 | method: 'get',
9 | },
10 | exportAudit: {
11 | url: '/audit/export',
12 | method: 'get',
13 | },
14 | enabled: {
15 | url: '/audit/enabled',
16 | method: 'get',
17 | },
18 | },
19 | });
20 |
21 | userInterceptor(userService.axiosInstance);
22 |
23 | export default userService;
24 |
25 |
--------------------------------------------------------------------------------
/src/kubecube/services/interceptor.js:
--------------------------------------------------------------------------------
1 | export function userInterceptor(instance) {
2 |
3 | instance.interceptors.response.use(function(response) {
4 | const { status, headers } = response;
5 | if (status === 200) {
6 | if (headers['content-length'] !== 0 && headers['content-type'] && headers['content-type'].startsWith('application/json')) {
7 | return response.data;
8 | }
9 | return response;
10 | }
11 | return response;
12 | }, function(error) {
13 | return Promise.reject(error);
14 | });
15 | }
16 |
--------------------------------------------------------------------------------
/src/kubecube/services/k8s-common-extend-resource.js:
--------------------------------------------------------------------------------
1 | import Service from './service';
2 | import { userInterceptor } from './interceptor';
3 |
4 | const service = Service({
5 | baseURL: 'api/v1/cube/extend',
6 | apis: {
7 | getResources: {
8 | method: 'get',
9 | template: '/{resource}',
10 | },
11 | },
12 |
13 | });
14 |
15 | userInterceptor(service.axiosInstance);
16 | export default service;
17 |
--------------------------------------------------------------------------------
/src/kubecube/services/namespace.js:
--------------------------------------------------------------------------------
1 | import Service from './service';
2 | import { userInterceptor } from './interceptor';
3 |
4 | const service = Service({
5 | baseURL: '/api/v1/cube/proxy/clusters',
6 | apis: {
7 | getNamespaces: {
8 | template: '/{cluster}/api/v1/namespaces',
9 | method: 'get',
10 | },
11 | getNamespaceInstance: {
12 | template: '/{cluster}/api/v1/namespaces/{name}',
13 | method: 'get',
14 | },
15 | updatetNamespaceInstance: {
16 | template: '/{cluster}/api/v1/namespaces/{name}',
17 | method: 'put',
18 | },
19 | },
20 | });
21 |
22 | userInterceptor(service.axiosInstance);
23 | export default service;
24 |
--------------------------------------------------------------------------------
/src/kubecube/services/webconsole.js:
--------------------------------------------------------------------------------
1 | import Service from './service';
2 | import { userInterceptor } from './interceptor';
3 |
4 | const service = Service({
5 | baseURL: '/api/v1/webconsole',
6 | apis: {
7 | connect: {
8 | method: 'get',
9 | template: '/{cluster}/namespace/{namespace}/pod/{pod}/shell/{container}',
10 | },
11 | connectCloudShell: {
12 | method: 'get',
13 | template: '/extends/cloudShell/clusters/{cluster}',
14 | },
15 | },
16 | });
17 |
18 | userInterceptor(service.axiosInstance);
19 | export default service;
20 |
--------------------------------------------------------------------------------
/src/kubecube/store/feature.js:
--------------------------------------------------------------------------------
1 | import { make } from 'vuex-pathify';
2 | import userService from 'kubecube/services/user';
3 |
4 | const state = {
5 | features: {},
6 | };
7 | const actions = {
8 | async loadFeature({ commit }) {
9 | const response = await userService.getFeatures();
10 | const obj = {};
11 | Object.keys(response).forEach(k => {
12 | obj[k] = (response[k] === 'enabled' || response[k] === 'true');
13 | });
14 | commit('SET_FEATURES', obj);
15 | },
16 | };
17 | const mutations = {
18 | ...make.mutations(state),
19 | };
20 |
21 | export default {
22 | namespaced: true,
23 | state,
24 | mutations,
25 | actions,
26 | };
27 |
--------------------------------------------------------------------------------
/src/kubecube/store/snackbar.js:
--------------------------------------------------------------------------------
1 | const state = {
2 | content: '',
3 | color: '',
4 | };
5 | const mutations = {
6 | SHOW_MESSAGE(state, message) {
7 | state.content = message.content || '';
8 | state.color = message.color || '';
9 | },
10 | };
11 |
12 | export default {
13 | namespaced: true,
14 | state,
15 | mutations,
16 | };
17 |
--------------------------------------------------------------------------------
/src/kubecube/utils/persistant.js:
--------------------------------------------------------------------------------
1 | const localStorage = window.localStorage;
2 |
3 | export function setItem(key, value) {
4 | localStorage.setItem(key, value);
5 | }
6 |
7 | export function removeItem(key) {
8 | localStorage.removeItem(key);
9 | }
10 |
11 | export function getItem(key) {
12 | return localStorage.getItem(key);
13 | }
14 |
--------------------------------------------------------------------------------
/src/kubecube/views/circle/no-right.vue:
--------------------------------------------------------------------------------
1 |
2 | 没有权限
3 |
4 |
5 |
10 |
11 |
--------------------------------------------------------------------------------
/src/kubecube/views/control/logseer/edit/demo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubecube-io/kubecube-front/7adeb5840a03415802f871a6f5a5dcee9a57e3f9/src/kubecube/views/control/logseer/edit/demo.png
--------------------------------------------------------------------------------
/src/kubecube/views/control/logseer/lens/components/assets/ic_add.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubecube-io/kubecube-front/7adeb5840a03415802f871a6f5a5dcee9a57e3f9/src/kubecube/views/control/logseer/lens/components/assets/ic_add.png
--------------------------------------------------------------------------------
/src/kubecube/views/control/logseer/lens/components/assets/ic_add@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubecube-io/kubecube-front/7adeb5840a03415802f871a6f5a5dcee9a57e3f9/src/kubecube/views/control/logseer/lens/components/assets/ic_add@2x.png
--------------------------------------------------------------------------------
/src/kubecube/views/control/logseer/lens/components/assets/ic_add_hover.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubecube-io/kubecube-front/7adeb5840a03415802f871a6f5a5dcee9a57e3f9/src/kubecube/views/control/logseer/lens/components/assets/ic_add_hover.png
--------------------------------------------------------------------------------
/src/kubecube/views/control/logseer/lens/components/assets/ic_add_hover@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubecube-io/kubecube-front/7adeb5840a03415802f871a6f5a5dcee9a57e3f9/src/kubecube/views/control/logseer/lens/components/assets/ic_add_hover@2x.png
--------------------------------------------------------------------------------
/src/kubecube/views/control/logseer/lens/components/assets/ic_cancel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubecube-io/kubecube-front/7adeb5840a03415802f871a6f5a5dcee9a57e3f9/src/kubecube/views/control/logseer/lens/components/assets/ic_cancel.png
--------------------------------------------------------------------------------
/src/kubecube/views/control/logseer/lens/components/assets/ic_cancel@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubecube-io/kubecube-front/7adeb5840a03415802f871a6f5a5dcee9a57e3f9/src/kubecube/views/control/logseer/lens/components/assets/ic_cancel@2x.png
--------------------------------------------------------------------------------
/src/kubecube/views/control/logseer/lens/components/assets/ic_close.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubecube-io/kubecube-front/7adeb5840a03415802f871a6f5a5dcee9a57e3f9/src/kubecube/views/control/logseer/lens/components/assets/ic_close.png
--------------------------------------------------------------------------------
/src/kubecube/views/control/logseer/lens/components/assets/ic_close@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubecube-io/kubecube-front/7adeb5840a03415802f871a6f5a5dcee9a57e3f9/src/kubecube/views/control/logseer/lens/components/assets/ic_close@2x.png
--------------------------------------------------------------------------------
/src/kubecube/views/control/logseer/lens/components/assets/ic_close_hover.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubecube-io/kubecube-front/7adeb5840a03415802f871a6f5a5dcee9a57e3f9/src/kubecube/views/control/logseer/lens/components/assets/ic_close_hover.png
--------------------------------------------------------------------------------
/src/kubecube/views/control/logseer/lens/components/assets/ic_close_hover@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubecube-io/kubecube-front/7adeb5840a03415802f871a6f5a5dcee9a57e3f9/src/kubecube/views/control/logseer/lens/components/assets/ic_close_hover@2x.png
--------------------------------------------------------------------------------
/src/kubecube/views/control/logseer/lens/components/assets/ic_删除.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubecube-io/kubecube-front/7adeb5840a03415802f871a6f5a5dcee9a57e3f9/src/kubecube/views/control/logseer/lens/components/assets/ic_删除.png
--------------------------------------------------------------------------------
/src/kubecube/views/control/logseer/lens/components/assets/ic_删除@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubecube-io/kubecube-front/7adeb5840a03415802f871a6f5a5dcee9a57e3f9/src/kubecube/views/control/logseer/lens/components/assets/ic_删除@2x.png
--------------------------------------------------------------------------------
/src/kubecube/views/control/logseer/lens/components/assets/ic_删除_hover.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubecube-io/kubecube-front/7adeb5840a03415802f871a6f5a5dcee9a57e3f9/src/kubecube/views/control/logseer/lens/components/assets/ic_删除_hover.png
--------------------------------------------------------------------------------
/src/kubecube/views/control/logseer/lens/components/assets/ic_删除_hover@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubecube-io/kubecube-front/7adeb5840a03415802f871a6f5a5dcee9a57e3f9/src/kubecube/views/control/logseer/lens/components/assets/ic_删除_hover@2x.png
--------------------------------------------------------------------------------
/src/kubecube/views/control/logseer/lens/components/filter-utils.js:
--------------------------------------------------------------------------------
1 |
2 | export const OPERATOR_MAP = {
3 | is: '=',
4 | };
5 | export const operators = [ 'is' ];
6 |
7 | export function buildfilter(
8 | cluster, namespace, isNode
9 | ) {
10 | const filters = [];
11 | if (cluster) {
12 | filters.push({
13 | key: 'cluster_name',
14 | operator: 'is',
15 | value: cluster,
16 | });
17 | }
18 | if (!isNode && namespace) {
19 | filters.push({
20 | key: 'namespace',
21 | operator: 'is',
22 | value: namespace,
23 | });
24 | }
25 | return filters;
26 | }
27 |
--------------------------------------------------------------------------------
/src/kubecube/views/control/observable/utils.js:
--------------------------------------------------------------------------------
1 | export const specCRD = {
2 | group: 'monitoring.coreos.com',
3 | version: 'v1alpha1',
4 | plural: 'alertmanagerconfigs',
5 | };
6 |
7 | export const rulespecCRD = {
8 | group: 'monitoring.coreos.com',
9 | version: 'v1',
10 | plural: 'prometheusrules',
11 | };
12 |
13 | export const critical = [
14 | { text: '轻微', value: 'info' },
15 | { text: '一般', value: 'warning' },
16 | { text: '紧急', value: 'critical' },
17 | ];
18 |
--------------------------------------------------------------------------------
/src/kubecube/views/control/overview/dashboard.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 | Dashboard
4 |
5 |
6 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/src/kubecube/views/login/assets/bg.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubecube-io/kubecube-front/7adeb5840a03415802f871a6f5a5dcee9a57e3f9/src/kubecube/views/login/assets/bg.jpg
--------------------------------------------------------------------------------
/src/kubecube/views/login/assets/github.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubecube-io/kubecube-front/7adeb5840a03415802f871a6f5a5dcee9a57e3f9/src/kubecube/views/login/assets/github.png
--------------------------------------------------------------------------------
/src/kubecube/views/platform/cluster/node/monitor.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 | monitor
4 |
5 |
6 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/template/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Kubecube
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/template/index.prod.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Kubecube
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/template/kubecube.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | KubeCube
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/ui/cobalt/.version:
--------------------------------------------------------------------------------
1 | 0.3.103-0.3.69
--------------------------------------------------------------------------------
/ui/cobalt/assets/0153905e/remove.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ui/cobalt/assets/0a391d61/rotate-left.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/ui/cobalt/assets/0d506648/close-small.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
--------------------------------------------------------------------------------
/ui/cobalt/assets/1cdd5651/waiting.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
--------------------------------------------------------------------------------
/ui/cobalt/assets/294b2600/move_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubecube-io/kubecube-front/7adeb5840a03415802f871a6f5a5dcee9a57e3f9/ui/cobalt/assets/294b2600/move_icon.png
--------------------------------------------------------------------------------
/ui/cobalt/assets/3b9d1a92/empty.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubecube-io/kubecube-front/7adeb5840a03415802f871a6f5a5dcee9a57e3f9/ui/cobalt/assets/3b9d1a92/empty.png
--------------------------------------------------------------------------------
/ui/cobalt/assets/3b9d1a92/nodata.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubecube-io/kubecube-front/7adeb5840a03415802f871a6f5a5dcee9a57e3f9/ui/cobalt/assets/3b9d1a92/nodata.png
--------------------------------------------------------------------------------
/ui/cobalt/assets/3c7c1a28/arrow-up.svg:
--------------------------------------------------------------------------------
1 |
2 |
14 |
--------------------------------------------------------------------------------
/ui/cobalt/assets/46d9e0d2/arrow-down.svg:
--------------------------------------------------------------------------------
1 |
2 |
14 |
--------------------------------------------------------------------------------
/ui/cobalt/assets/52976143/arrow-down.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
--------------------------------------------------------------------------------
/ui/cobalt/assets/5b602238/create.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/ui/cobalt/assets/5fe93a07/edit.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ui/cobalt/assets/78465218/stripe.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubecube-io/kubecube-front/7adeb5840a03415802f871a6f5a5dcee9a57e3f9/ui/cobalt/assets/78465218/stripe.png
--------------------------------------------------------------------------------
/ui/cobalt/assets/81c2ac42/close.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
--------------------------------------------------------------------------------
/ui/cobalt/assets/90b71868/disabled.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
--------------------------------------------------------------------------------
/ui/cobalt/assets/90b71868/list_no_response.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
--------------------------------------------------------------------------------
/ui/cobalt/assets/9d4c13fb/info.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
--------------------------------------------------------------------------------
/ui/cobalt/assets/9fc757e9/shadow-up.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubecube-io/kubecube-front/7adeb5840a03415802f871a6f5a5dcee9a57e3f9/ui/cobalt/assets/9fc757e9/shadow-up.png
--------------------------------------------------------------------------------
/ui/cobalt/assets/aa3eaa22/angle-right.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ui/cobalt/assets/b4208d94/shadow-down.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubecube-io/kubecube-front/7adeb5840a03415802f871a6f5a5dcee9a57e3f9/ui/cobalt/assets/b4208d94/shadow-down.png
--------------------------------------------------------------------------------
/ui/cobalt/assets/bfbeb69f/alert.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/ui/cobalt/assets/c4ebc54c/arrow-left.svg:
--------------------------------------------------------------------------------
1 |
2 |
16 |
--------------------------------------------------------------------------------
/ui/cobalt/assets/cd90a7ab/keyboard-arrow-down.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ui/cobalt/assets/d171fbf3/high.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubecube-io/kubecube-front/7adeb5840a03415802f871a6f5a5dcee9a57e3f9/ui/cobalt/assets/d171fbf3/high.png
--------------------------------------------------------------------------------
/ui/cobalt/assets/d5760e94/add.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ui/cobalt/assets/dea22f5d/logout.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
--------------------------------------------------------------------------------
/ui/cobalt/assets/e74746f4/rotate-right.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/ui/cobalt/assets/ec271fc6/keyboard-arrow-right.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ui/cobalt/assets/edef239a/dropdown.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
--------------------------------------------------------------------------------
/ui/cobalt/assets/fc02eb53/arrow-right.svg:
--------------------------------------------------------------------------------
1 |
2 |
16 |
--------------------------------------------------------------------------------
/ui/cobalt/assets/ff31c253/arrow-up.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
--------------------------------------------------------------------------------