diff --git a/src/assets/css/components/views/charts/panel.scss b/src/assets/css/components/views/charts/panel.scss index b0f1d2a3..37b4fac8 100644 --- a/src/assets/css/components/views/charts/panel.scss +++ b/src/assets/css/components/views/charts/panel.scss @@ -54,6 +54,7 @@ font-size: 20px; color: #333; padding: 0; + border-bottom: none; } .chart-header__title { max-width: calc(100% - 100px); diff --git a/src/assets/css/components/views/entityExplorer/search/explorer-search.scss b/src/assets/css/components/views/entityExplorer/search/explorer-search.scss index d4f44976..75afa58b 100644 --- a/src/assets/css/components/views/entityExplorer/search/explorer-search.scss +++ b/src/assets/css/components/views/entityExplorer/search/explorer-search.scss @@ -81,51 +81,67 @@ .search__history { position: absolute; display: flex; - padding: 10px 0; + padding: 10px 0 0 0; flex-direction: column; width: 100%; max-width: 1000px; + z-index: 2; top: 47px; border: 1px solid rgba(206,206,206,0.20); border-radius: 2px; background-color: white; - .history__item { - height: 35px; - display: flex; - align-items: center; + .history__items { + max-height: 300px; + overflow: auto; + .history__item { + height: 35px; + display: flex; + align-items: center; + padding-left: 30px; + font-weight: normal; + font-size: 14px; + flex-shrink: 0; + + &.clear-all span { + cursor: pointer; + } + div { + color: #999; + } + .item-date { + color: #bbb; + padding: 0 20px 0 0; + } + .item-value { + flex-basis: calc(100% - 200px); + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + word-break: break-all; + color: #444; + } + } + .history__item { + cursor: pointer; + } + .history__item:hover { + background-color: #ecf5ff; + color: #66b1ff; + } + } + .clear-all { padding-left: 30px; font-weight: normal; font-size: 14px; + height: 35px; + display: flex; + align-items: center; + color: #3976CB; - &.clear-all span { + span { cursor: pointer; } - div { - color: #999; - } - .item-date { - color: #bbb; - padding: 0 20px 0 0; - } - .item-value { - flex-basis: calc(100% - 200px); - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - word-break: break-all; - color: #444; - } - } - .history__item:not(.clear-all) { - cursor: pointer; - } - .history__item:hover:not(.clear-all) { - background-color: #ecf5ff; - color: #66b1ff; - } - .history__item.clear-all { - color: #3976CB; } } } diff --git a/src/components/advancedSearch/TextMode.vue b/src/components/advancedSearch/TextMode.vue index a9d8261b..fe4d2896 100644 --- a/src/components/advancedSearch/TextMode.vue +++ b/src/components/advancedSearch/TextMode.vue @@ -66,6 +66,9 @@ export default { this.$emit('search') } }, + focus () { + this.codeMirror.focus() + }, changeMode () { const originalSql = this.codeMirror.getValue() const parser = new SqlParser(originalSql, this.columnList) diff --git a/src/components/advancedSearch/meta/sql-parser.js b/src/components/advancedSearch/meta/sql-parser.js index 12efd1ea..5f5e0164 100644 --- a/src/components/advancedSearch/meta/sql-parser.js +++ b/src/components/advancedSearch/meta/sql-parser.js @@ -190,13 +190,13 @@ export default class SqlParser extends SqlParserVisitor { // 字段或值 visitExpressionAtomPredicate (ctx) { - const constant = ctx.getText().toLowerCase() + const constant = ctx.getText() this.buildMeta('expression', constant) } // 操作符 visitComparisonOperator (ctx) { - const comparisonOperator = ctx.getText().toLowerCase() + const comparisonOperator = ctx.getText() this.buildMeta('operator', comparisonOperator) } @@ -208,13 +208,13 @@ export default class SqlParser extends SqlParserVisitor { // in语句 visitInPredicate (ctx) { - const inPredicate = ctx.getText().toLowerCase() + const inPredicate = ctx.getText() this.buildMeta('in', inPredicate) } // like语句 visitLikePredicate (ctx) { - const likePredicate = ctx.getText().toLowerCase() + const likePredicate = ctx.getText() this.buildMeta('like', likePredicate) } } diff --git a/src/views/charts/PanelChart.vue b/src/views/charts/PanelChart.vue index b00cb8b4..127cb8e6 100644 --- a/src/views/charts/PanelChart.vue +++ b/src/views/charts/PanelChart.vue @@ -213,6 +213,8 @@ export default { if (chartParams && chartParams.dataKey) { if (response.data.result && (response.data.result[chartParams.dataKey] || response.data.result[chartParams.dataKey] === 0)) { this.chartData = response.data.result[chartParams.dataKey] + } else { + this.chartData = null } } } diff --git a/src/views/entityExplorer/EntityExplorer.vue b/src/views/entityExplorer/EntityExplorer.vue index 0c7eebc0..2f554157 100644 --- a/src/views/entityExplorer/EntityExplorer.vue +++ b/src/views/entityExplorer/EntityExplorer.vue @@ -452,7 +452,7 @@ export default { const entityTypeMeta = metaList.find(meta => { return meta.column && meta.column.name === 'entity_type' }) - if (entityTypeMeta) { + if (entityTypeMeta && entityTypeMeta.operator.value === '=') { let entityType = '' this.limitFilterType = false if (entityTypeMeta.value.value === "'ip'") { diff --git a/src/views/entityExplorer/search/ExplorerSearch.vue b/src/views/entityExplorer/search/ExplorerSearch.vue index 06932a28..cee88b94 100644 --- a/src/views/entityExplorer/search/ExplorerSearch.vue +++ b/src/views/entityExplorer/search/ExplorerSearch.vue @@ -28,11 +28,13 @@
-
- {{h.date}} -
{{h.sql}}
+
+
+ {{h.date}} +
{{h.sql}}
+
-
+
{{$t('overall.clear')}}
暂无记录
@@ -196,7 +198,7 @@ export default { methods: { search (metaList, formatSql) { let sql = formatSql - if (metaList) { + if (metaList && this.$_.isArray(metaList)) { // 全文搜索处理 const hasFullText = metaList.some(meta => { return meta.column && meta.column.type === columnType.fullText @@ -207,7 +209,7 @@ export default { } } this.$emit('search', metaList, sql) - // 加入搜索记录 + // 加入搜索记录,将记录数量控制在30以内 if (sql) { const oldHistory = localStorage.getItem(storageKey.entitySearchHistory) let arr = [] @@ -216,6 +218,9 @@ export default { const oldArr = JSON.parse(oldHistory) oldArr.unshift(newItem) arr = [...oldArr] + if (arr.length > 30) { + arr = arr.slice(0, 30) + } } else { arr.push(newItem) } @@ -228,6 +233,11 @@ export default { selectHistory (sql) { this.$refs.search.setSql(sql) this.showHistory = false + this.$nextTick(() => { + if (this.$refs.search.$refs.textMode) { + this.$refs.search.$refs.textMode.focus() + } + }) }, clearHistory () { localStorage.setItem(storageKey.entitySearchHistory, '')