This is an automated email from the ASF dual-hosted git repository.
liyang pushed a commit to branch kylin5
in repository https://gitbox.apache.org/repos/asf/kylin.git
The following commit(s) were added to refs/heads/kylin5 by this push:
new 458bddf09f KYLIN-5826,fix table index select all issue and fix load
user or usergroup list filter issue
458bddf09f is described below
commit 458bddf09f85989bcac1874d3beea6d3791d3129
Author: huangchunyan <[email protected]>
AuthorDate: Sat Apr 6 15:07:20 2024 +0800
KYLIN-5826,fix table index select all issue and fix load user or usergroup
list filter issue
---
kystudio/src/components/admin/Group/index.vue | 6 +-
kystudio/src/components/admin/User/index.vue | 10 +-
.../common/CustomTransferData/TransferData.vue | 335 +++++++++++----------
3 files changed, 177 insertions(+), 174 deletions(-)
diff --git a/kystudio/src/components/admin/Group/index.vue
b/kystudio/src/components/admin/Group/index.vue
index 36cc253bf3..72b49f8d9e 100644
--- a/kystudio/src/components/admin/Group/index.vue
+++ b/kystudio/src/components/admin/Group/index.vue
@@ -135,7 +135,7 @@ export default class SecurityGroup extends Vue {
inputFilter (value) {
this.pagination.page_offset = 0
this.filterName = value
- this.loadGroupUsers(value)
+ this.loadGroupUsers()
}
get emptyText () {
@@ -163,11 +163,11 @@ export default class SecurityGroup extends Vue {
}
}
- loadGroupUsers (filterGroupName) {
+ loadGroupUsers () {
this.isLoadingUserGroups = true
this.loadGroupUsersList({
...this.pagination,
- user_group_name: filterGroupName
+ user_group_name: this.filterName
}).then(() => {
this.isLoadingUserGroups = false
}, (res) => {
diff --git a/kystudio/src/components/admin/User/index.vue
b/kystudio/src/components/admin/User/index.vue
index eb323de881..83a89cf888 100644
--- a/kystudio/src/components/admin/User/index.vue
+++ b/kystudio/src/components/admin/User/index.vue
@@ -211,7 +211,7 @@ export default class SecurityUser extends Vue {
inputFilter (value) {
this.pagination.page_offset = 0
this.filterName = value
- this.loadUsers(value)
+ this.loadUsers()
}
get emptyText () {
@@ -221,16 +221,16 @@ export default class SecurityUser extends Vue {
handleCurrentChange (pager, pageSize) {
this.pagination.page_offset = pager
this.pagination.page_size = pageSize
- this.loadUsers(this.filterName)
+ this.loadUsers()
}
- async loadUsers (name) {
+ async loadUsers () {
this.isLoadingUsers = true
try {
const parameter = {
...this.pagination,
// project: this.currentSelectedProject, // 处理资源组时,发现这个接口不用传 project 参数
- name: name || '',
+ name: this.filterName,
group_uuid: this.currentGroup && this.currentGroup.uuid
}
const res = !this.currentGroup
@@ -254,7 +254,7 @@ export default class SecurityUser extends Vue {
async editUser (editType, userDetail) {
if (!this.isTestingSecurityProfile) return
const isSubmit = await this.callUserEditModal({ editType, userDetail })
- isSubmit && this.loadUsers(this.filterName)
+ isSubmit && this.loadUsers()
}
async editUserDataPermission (row) {
diff --git a/kystudio/src/components/common/CustomTransferData/TransferData.vue
b/kystudio/src/components/common/CustomTransferData/TransferData.vue
index 848658f500..2305331ba8 100644
--- a/kystudio/src/components/common/CustomTransferData/TransferData.vue
+++ b/kystudio/src/components/common/CustomTransferData/TransferData.vue
@@ -1,186 +1,186 @@
<template>
- <div class="sec-index-container">
- <el-alert v-for="(it, index) in alertItems" :key="index"
:title="it.text" :type="it.type" show-icon class="ksd-mb-8"
:closable="false"></el-alert>
- <div class="transfer-container">
- <div class="left_layout" :style="leftStyle">
- <div class="search_layout">
- <el-input size="small"
:placeholder="$t('kylinLang.common.search')" v-model.trim="searchVar"
prefix-icon="el-ksd-n-icon-search-outlined"></el-input>
- </div>
- <div class="sec-index-content">
- <div class="dropdowns">
- <template v-if="filterModelColumns.length">
- <el-checkbox class="select-all" v-if="isAllSelect"
:value="isSelectAll" :indeterminate="filterTypeOptionSelectedColumns.length !==
0 && filterModelColumns.length > filterTypeOptionSelectedColumns.length"
@change="selectAll">
- <span>{{$t('kylinLang.common.selectAll')}}</span>
- </el-checkbox>
- <span v-if="searchVar" class="disable-block">
- <el-tooltip placement="top" class="sort-colum-dropdown"
:content="$t('disableSortFilterTips')">
- <el-tag is-light :type="!columnSort ? 'info' : ''"><i
class="el-ksd-n-icon-table-rank-filled
ksd-mr-2"></i><span>{{$t('column')}}{{columnSort ? `: ${$t(columnSort)}` :
''}}</span></el-tag>
- </el-tooltip>
- <el-tooltip placement="top" class="column-type-dropdown"
:content="$t('disableSortFilterTips')">
- <el-tag is-light :type="!typeOptions.length ? 'info' :
''"><i class="el-ksd-n-icon-filter-outlined
ksd-mr-2"></i><span>{{$t('type')}}{{typeOptions.length ? `:
${typeOptions.length}` : ''}}</span></el-tag>
- </el-tooltip>
- </span>
- <span v-else>
- <el-dropdown class="sort-colum-dropdown"
placement="bottom-start" @command="handleSortCommand" trigger="click">
- <el-tag is-light :type="!columnSort ? 'info' : ''"><i
class="el-ksd-n-icon-table-rank-filled
ksd-mr-2"></i><span>{{$t('column')}}{{columnSort ? `: ${$t(columnSort)}` :
''}}</span></el-tag>
- <el-dropdown-menu slot="dropdown" :append-to-body="false">
- <el-dropdown-item :class="{'is-active': columnSort ===
'ascending'}" command="ascending">{{$t('ascending')}}</el-dropdown-item>
- <el-dropdown-item :class="{'is-active': columnSort ===
'descending'}" command="descending">{{$t('descending')}}</el-dropdown-item>
- </el-dropdown-menu>
- </el-dropdown>
- <el-dropdown class="column-type-dropdown"
placement="bottom-start" :hide-on-click="false" trigger="click">
- <el-tag is-light :type="!typeOptions.length ? 'info' :
''"><i class="el-ksd-n-icon-filter-outlined
ksd-mr-2"></i><span>{{$t('type')}}{{typeOptions.length ? `:
${typeOptions.length}` : ''}}</span></el-tag>
- <el-dropdown-menu slot="dropdown" :append-to-body="false">
- <el-checkbox-group v-model="typeOptions">
- <el-dropdown-item v-for="(item, index) in columnTypes"
:key="index"><el-checkbox :label="item"
size="small">{{item}}</el-checkbox></el-dropdown-item>
- </el-checkbox-group>
- </el-dropdown-menu>
- </el-dropdown>
- </span>
- <template v-if="isTextRecognition">
- <span class="dive ksd-ml-4 ksd-mr-6">|</span>
- <el-tooltip placement="top"
:content="$t('textRecognitionTips')">
- <el-button size="small" nobg-text
icon="el-ksd-n-icon-view-outlined" @click="handleTableIndexRecognize">{{
$t('textRecognition') }}</el-button>
- </el-tooltip>
- </template>
- </template>
-
- </div>
- <div class="result-content" :class="{'is-no-footer':
!hasLeftFooter}">
- <div v-for="item in pagedModelColumns" :key="item.id"
class="result-content_item">
- <div class="checkbox-list">
- <el-checkbox v-model="item.selected"
:disabled="item.disabled" @change="handleIndexColumnChange(item)">
- <el-tooltip :content="$t('excludedTableIconTip')"
effect="dark" placement="top"><i class="excluded_table-icon
el-icon-ksd-exclude" v-if="item.excluded"></i></el-tooltip>
- <span :style="{'max-width': dragData.width - 140 + 'px',
width: 'auto'}" :title="item.label" class="ksd-nobr-text">{{item.label}}</span>
- </el-checkbox>
- </div>
- <div class="item-type">{{item.type}}</div>
- <div class="hover-icons">
- <el-tooltip placement="top">
- <div slot="content" style="word-break: break-all">
- <div v-if="item.name">{{
$t('kylinLang.dataSource.dimensionName') }}: {{ item.name }}</div>
- <div>{{ $t('kylinLang.model.columnName') }}: {{
item.label }}</div>
- <div v-if="item.cardinality">{{ $t('cardinality') }}: {{
item.cardinality }}</div>
- <div v-if="item.comment">{{
$t('kylinLang.dataSource.comment') }}: {{ item.comment }}</div>
- </div>
- <i class="el-ksd-n-icon-info-circle-outlined"></i>
- </el-tooltip>
- </div>
- </div>
- <!-- <div class="load-more-layout" v-if="showLoadMore('left')"
@click="addPagination('left')">{{$t('kylinLang.common.loadMore')}}</div> -->
- </div>
- <empty-data size="small"
:image="require('../../../assets/img/empty/empty_state_not_found.svg')"
:content="$t('kylinLang.common.noData')" v-if="!pagedModelColumns.length" />
- <div class="transfer-footer" v-if="hasLeftFooter">
- <slot name="left-footer"></slot>
- </div>
- </div>
- </div>
- <div class="drag-line" unselectable="on"
v-drag:change.width="dragData">
- <div class="ky-drag-layout-line"></div>
+ <div class="sec-index-container">
+ <el-alert v-for="(it, index) in alertItems" :key="index" :title="it.text"
:type="it.type" show-icon class="ksd-mb-8" :closable="false"></el-alert>
+ <div class="transfer-container">
+ <div class="left_layout" :style="leftStyle">
+ <div class="search_layout">
+ <el-input size="small" :placeholder="$t('kylinLang.common.search')"
v-model.trim="searchVar" prefix-icon="el-ksd-n-icon-search-outlined"></el-input>
</div>
- <div class="right_layout">
- <div class="title-layout">
- <p class="title">{{rightTitle}}</p>
- <slot name="help"></slot>
- </div>
- <div class="search_layout" v-if="showRightSearch">
- <el-input size="small"
:placeholder="$t('kylinLang.common.search')" v-model.trim="searchUsedContent"
prefix-icon="el-ksd-n-icon-search-outlined"></el-input>
- </div>
- <div v-show="searchVar&&pagedSelectedColumns.length"
class="search-num">{{ filterSelectedColumns.length }}{{ $t('searchResultes')
}}</div>
- <div :class="['selected-results', {'over-limit': showOverLimit &&
selectedColumns.length > limitLen}]">
- <div class="dropdowns" v-show="pagedSelectedColumns.length &&
isSortAble">
- <span v-if="searchVar || !selectedData.length ||
!isAnyCardinalityCol" class="disable-block">
- <el-tooltip placement="top" :disabled="!selectedData.length"
class="sort-colum-dropdown">
- <div slot="content" v-if="searchVar">{{
$t('disableSortFilterTips') }}</div>
- <div slot="content" v-else>{{ $t('disabledSortTips') }} <a
class="ky-a-like" @click="goToDataSource">{{ $t('goToDataSource') }}</a></div>
- <el-tag is-light :type="!selectedColumnSortByCardinality ?
'info' : ''">
- <i class="el-ksd-n-icon-table-rank-filled
ksd-mr-2"></i><span>{{$t('cardinality')}}{{selectedColumnSortByCardinality ? `:
${$t(selectedColumnSortByCardinality)}` : ''}}</span>
- <el-tooltip placement="top" v-if="isPartCardinalityCol"
:content="$t('isPartCardinalityCol')">
- <i class="el-ksd-n-icon-warning-filled ksd-fs-12"></i>
- </el-tooltip>
- </el-tag>
+ <div class="sec-index-content">
+ <div class="dropdowns">
+ <template v-if="filterModelColumns.length">
+ <el-checkbox class="select-all" v-if="isAllSelect"
:value="isSelectAll" :indeterminate="filterTypeOptionSelectedColumns.length !==
0 && filterModelColumns.length > filterTypeOptionSelectedColumns.length"
@change="selectAll">
+ <span>{{$t('kylinLang.common.selectAll')}}</span>
+ </el-checkbox>
+ <span v-if="searchVar" class="disable-block">
+ <el-tooltip placement="top" class="sort-colum-dropdown"
:content="$t('disableSortFilterTips')">
+ <el-tag is-light :type="!columnSort ? 'info' : ''"><i
class="el-ksd-n-icon-table-rank-filled
ksd-mr-2"></i><span>{{$t('column')}}{{columnSort ? `: ${$t(columnSort)}` :
''}}</span></el-tag>
+ </el-tooltip>
+ <el-tooltip placement="top" class="column-type-dropdown"
:content="$t('disableSortFilterTips')">
+ <el-tag is-light :type="!typeOptions.length ? 'info' :
''"><i class="el-ksd-n-icon-filter-outlined
ksd-mr-2"></i><span>{{$t('type')}}{{typeOptions.length ? `:
${typeOptions.length}` : ''}}</span></el-tag>
</el-tooltip>
</span>
<span v-else>
- <el-dropdown class="sort-colum-dropdown"
placement="bottom-start" @command="handleSortCardinality" trigger="click">
- <el-tag is-light :type="!selectedColumnSortByCardinality ?
'info' : ''">
- <i class="el-ksd-n-icon-table-rank-filled
ksd-mr-2"></i><span>{{$t('cardinality')}}{{selectedColumnSortByCardinality ? `:
${$t(selectedColumnSortByCardinality)}` : ''}}</span>
- <el-tooltip placement="top" v-if="isPartCardinalityCol"
:content="$t('isPartCardinalityCol')">
- <i class="el-ksd-n-icon-warning-filled ksd-fs-12"></i>
- </el-tooltip>
- </el-tag>
+ <el-dropdown class="sort-colum-dropdown"
placement="bottom-start" @command="handleSortCommand" trigger="click">
+ <el-tag is-light :type="!columnSort ? 'info' : ''"><i
class="el-ksd-n-icon-table-rank-filled
ksd-mr-2"></i><span>{{$t('column')}}{{columnSort ? `: ${$t(columnSort)}` :
''}}</span></el-tag>
<el-dropdown-menu slot="dropdown" :append-to-body="false">
- <el-dropdown-item :class="{'is-active':
selectedColumnSortByCardinality === 'ascending'}"
command="ascending">{{$t('ascending')}}</el-dropdown-item>
- <el-dropdown-item :class="{'is-active':
selectedColumnSortByCardinality === 'descending'}"
command="descending">{{$t('descending')}}</el-dropdown-item>
+ <el-dropdown-item :class="{'is-active': columnSort ===
'ascending'}" command="ascending">{{$t('ascending')}}</el-dropdown-item>
+ <el-dropdown-item :class="{'is-active': columnSort ===
'descending'}" command="descending">{{$t('descending')}}</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
- </span>
- <span v-if="searchVar || !selectedData.length"
class="disable-block">
- <el-tooltip placement="top" class="sort-colum-dropdown"
:disabled="!selectedData.length" :content="$t('disableSortFilterTips')">
- <el-tag is-light :type="!selectedColumnSort ? 'info' :
''"><i class="el-ksd-n-icon-table-rank-filled
ksd-mr-2"></i><span>{{$t('column')}}{{selectedColumnSort ? `:
${$t(selectedColumnSort)}` : ''}}</span></el-tag>
- </el-tooltip>
- </span>
- <span v-else>
- <el-dropdown class="sort-colum-dropdown"
placement="bottom-start" @command="handleSortSelectedCommand" trigger="click">
- <el-tag is-light :type="!selectedColumnSort ? 'info' :
''"><i class="el-ksd-n-icon-table-rank-filled
ksd-mr-2"></i><span>{{$t('column')}}{{selectedColumnSort ? `:
${$t(selectedColumnSort)}` : ''}}</span></el-tag>
+ <el-dropdown class="column-type-dropdown"
placement="bottom-start" :hide-on-click="false" trigger="click">
+ <el-tag is-light :type="!typeOptions.length ? 'info' :
''"><i class="el-ksd-n-icon-filter-outlined
ksd-mr-2"></i><span>{{$t('type')}}{{typeOptions.length ? `:
${typeOptions.length}` : ''}}</span></el-tag>
<el-dropdown-menu slot="dropdown" :append-to-body="false">
- <el-dropdown-item :class="{'is-active': selectedColumnSort
=== 'ascending'}" command="ascending">{{$t('ascending')}}</el-dropdown-item>
- <el-dropdown-item :class="{'is-active': selectedColumnSort
=== 'descending'}" command="descending">{{$t('descending')}}</el-dropdown-item>
+ <el-checkbox-group v-model="typeOptions">
+ <el-dropdown-item v-for="(item, index) in columnTypes"
:key="index"><el-checkbox :label="item"
size="small">{{item}}</el-checkbox></el-dropdown-item>
+ </el-checkbox-group>
</el-dropdown-menu>
</el-dropdown>
</span>
+ <template v-if="isTextRecognition">
+ <span class="dive ksd-ml-4 ksd-mr-6">|</span>
+ <el-tooltip placement="top"
:content="$t('textRecognitionTips')">
+ <el-button size="small" nobg-text
icon="el-ksd-n-icon-view-outlined" @click="handleTableIndexRecognize">{{
$t('textRecognition') }}</el-button>
+ </el-tooltip>
+ </template>
+ </template>
+
+ </div>
+ <div class="result-content" :class="{'is-no-footer':
!hasLeftFooter}">
+ <div v-for="item in pagedModelColumns" :key="item.id"
class="result-content_item">
+ <div class="checkbox-list">
+ <el-checkbox v-model="item.selected" :disabled="item.disabled"
@change="handleIndexColumnChange(item)">
+ <el-tooltip :content="$t('excludedTableIconTip')"
effect="dark" placement="top"><i class="excluded_table-icon
el-icon-ksd-exclude" v-if="item.excluded"></i></el-tooltip>
+ <span :style="{'max-width': dragData.width - 140 + 'px',
width: 'auto'}" :title="item.label" class="ksd-nobr-text">{{item.label}}</span>
+ </el-checkbox>
+ </div>
+ <div class="item-type">{{item.type}}</div>
+ <div class="hover-icons">
+ <el-tooltip placement="top">
+ <div slot="content" style="word-break: break-all">
+ <div v-if="item.name">{{
$t('kylinLang.dataSource.dimensionName') }}: {{ item.name }}</div>
+ <div>{{ $t('kylinLang.model.columnName') }}: {{ item.label
}}</div>
+ <div v-if="item.cardinality">{{ $t('cardinality') }}: {{
item.cardinality }}</div>
+ <div v-if="item.comment">{{
$t('kylinLang.dataSource.comment') }}: {{ item.comment }}</div>
+ </div>
+ <i class="el-ksd-n-icon-info-circle-outlined"></i>
+ </el-tooltip>
+ </div>
</div>
- <div class="selected-results_layout" :class="{'is-no-footer':
!(showOverLimit && selectedColumns.length > limitLen) && !(draggable &&
searchVar), 'is-search-mode': searchVar}">
- <div :class="['selected-results_item', {'drag-item':
draggable&&!searchVar, 'is-shared-col': it.isShared}]" v-for="it in
pagedSelectedColumns" :key="it.key" :id="it.key">
- <p class="label">
- <span class="num" :class="{'is-alive': isShowNum,
'is-disable-drag': isShowNum&&draggable&&searchVar}" :style="{'scale':
((getIndex(it.key) + 1) + '').length > 2 ? 1 - 0.2 * (((getIndex(it.key) + 1) +
'').length - 2) : 1}" v-if="isShowNum">{{ getIndex(it.key) + 1 }}</span>
- <el-tooltip placement="top" :content="$t('dragToMove')"
v-show="draggable&&!searchVar">
- <i class="el-ksd-n-icon-grab-dots-outlined"
:class="{'is-alive': draggable&&!searchVar}"></i>
- </el-tooltip><el-tooltip
:content="$t('excludedTableIconTip')" effect="dark" placement="top"><i
class="excluded_table-icon el-icon-ksd-exclude"
v-if="it.excluded"></i></el-tooltip>
- <el-button type="primary" size="mini" class="shardby
is-shardby" v-if="it.isShared" text
icon="el-ksd-n-icon-symbol-s-circle-filled"></el-button>
- <span class="top-icon ignore-drag"
v-if="topColAble"><el-button type="primary" size="mini" v-if="getIndex(it.key)
!== 0" text @click.native="topColumn($event, it.key)"
icon="el-ksd-n-icon-top-filled"></el-button></span>
- <span class="ksd-nobr-text">{{it.label}}</span>
- </p>
- <div class="right-actions">
- <el-tooltip placement="top" :content="$t('cardinality')">
- <span class="cardinality ksd-nobr-text"
@mouseenter.stop>{{it.cardinality}}</span>
- </el-tooltip>
- </div>
- <div class="hover-icons ignore-drag">
- <el-tooltip placement="top">
- <div slot="content" style="word-break: break-all">
- <div v-if="it.name">{{
$t('kylinLang.dataSource.dimensionName') }}: {{ it.name }}</div>
- <div>{{ $t('kylinLang.model.columnName') }}: {{ it.label
}}</div>
- <div v-if="it.cardinality">{{ $t('cardinality') }}: {{
it.cardinality }}</div>
- <div v-if="it.comment">{{
$t('kylinLang.dataSource.comment') }}: {{ it.comment }}</div>
- </div>
- <i class="el-ksd-n-icon-info-circle-outlined ksd-ml-5"></i>
+ <!-- <div class="load-more-layout" v-if="showLoadMore('left')"
@click="addPagination('left')">{{$t('kylinLang.common.loadMore')}}</div> -->
+ </div>
+ <empty-data size="small"
:image="require('../../../assets/img/empty/empty_state_not_found.svg')"
:content="$t('kylinLang.common.noData')" v-if="!pagedModelColumns.length" />
+ <div class="transfer-footer" v-if="hasLeftFooter">
+ <slot name="left-footer"></slot>
+ </div>
+ </div>
+ </div>
+ <div class="drag-line" unselectable="on" v-drag:change.width="dragData">
+ <div class="ky-drag-layout-line"></div>
+ </div>
+ <div class="right_layout">
+ <div class="title-layout">
+ <p class="title">{{rightTitle}}</p>
+ <slot name="help"></slot>
+ </div>
+ <div class="search_layout" v-if="showRightSearch">
+ <el-input size="small" :placeholder="$t('kylinLang.common.search')"
v-model.trim="searchUsedContent"
prefix-icon="el-ksd-n-icon-search-outlined"></el-input>
+ </div>
+ <div v-show="searchVar&&pagedSelectedColumns.length"
class="search-num">{{ filterSelectedColumns.length }}{{ $t('searchResultes')
}}</div>
+ <div :class="['selected-results', {'over-limit': showOverLimit &&
selectedColumns.length > limitLen}]">
+ <div class="dropdowns" v-show="pagedSelectedColumns.length &&
isSortAble">
+ <span v-if="searchVar || !selectedData.length ||
!isAnyCardinalityCol" class="disable-block">
+ <el-tooltip placement="top" :disabled="!selectedData.length"
class="sort-colum-dropdown">
+ <div slot="content" v-if="searchVar">{{
$t('disableSortFilterTips') }}</div>
+ <div slot="content" v-else>{{ $t('disabledSortTips') }} <a
class="ky-a-like" @click="goToDataSource">{{ $t('goToDataSource') }}</a></div>
+ <el-tag is-light :type="!selectedColumnSortByCardinality ?
'info' : ''">
+ <i class="el-ksd-n-icon-table-rank-filled
ksd-mr-2"></i><span>{{$t('cardinality')}}{{selectedColumnSortByCardinality ? `:
${$t(selectedColumnSortByCardinality)}` : ''}}</span>
+ <el-tooltip placement="top" v-if="isPartCardinalityCol"
:content="$t('isPartCardinalityCol')">
+ <i class="el-ksd-n-icon-warning-filled ksd-fs-12"></i>
</el-tooltip>
- <el-tooltip placement="top" v-if="!it.isShared&sharedByAble"
:content="shardByIndex !== -1 ? $t('replaceShardBy') : $t('setShardBy')">
- <el-button type="primary" size="mini" class="shardby"
@click.stop="setShardBy(it.key)" text
icon="el-ksd-n-icon-symbol-s-circle-filled"></el-button>
- </el-tooltip><el-tooltip placement="top"
v-if="it.isShared&sharedByAble" :content="$t('removeShardBy')">
- <el-button type="primary" size="mini" class="shardby
is-shardby" text @click.stop="unSetSharyBy(it.key)"
icon="el-ksd-n-icon-symbol-s-circle-filled"></el-button>
- </el-tooltip><el-tooltip placement="top"
:content="$t('remove')">
- <i class="el-ksd-n-icon-close-outlined close-btn"
@click.stop="removeColumn(it)"></i>
+ </el-tag>
+ </el-tooltip>
+ </span>
+ <span v-else>
+ <el-dropdown class="sort-colum-dropdown"
placement="bottom-start" @command="handleSortCardinality" trigger="click">
+ <el-tag is-light :type="!selectedColumnSortByCardinality ?
'info' : ''">
+ <i class="el-ksd-n-icon-table-rank-filled
ksd-mr-2"></i><span>{{$t('cardinality')}}{{selectedColumnSortByCardinality ? `:
${$t(selectedColumnSortByCardinality)}` : ''}}</span>
+ <el-tooltip placement="top" v-if="isPartCardinalityCol"
:content="$t('isPartCardinalityCol')">
+ <i class="el-ksd-n-icon-warning-filled ksd-fs-12"></i>
</el-tooltip>
- </div>
+ </el-tag>
+ <el-dropdown-menu slot="dropdown" :append-to-body="false">
+ <el-dropdown-item :class="{'is-active':
selectedColumnSortByCardinality === 'ascending'}"
command="ascending">{{$t('ascending')}}</el-dropdown-item>
+ <el-dropdown-item :class="{'is-active':
selectedColumnSortByCardinality === 'descending'}"
command="descending">{{$t('descending')}}</el-dropdown-item>
+ </el-dropdown-menu>
+ </el-dropdown>
+ </span>
+ <span v-if="searchVar || !selectedData.length"
class="disable-block">
+ <el-tooltip placement="top" class="sort-colum-dropdown"
:disabled="!selectedData.length" :content="$t('disableSortFilterTips')">
+ <el-tag is-light :type="!selectedColumnSort ? 'info' : ''"><i
class="el-ksd-n-icon-table-rank-filled
ksd-mr-2"></i><span>{{$t('column')}}{{selectedColumnSort ? `:
${$t(selectedColumnSort)}` : ''}}</span></el-tag>
+ </el-tooltip>
+ </span>
+ <span v-else>
+ <el-dropdown class="sort-colum-dropdown"
placement="bottom-start" @command="handleSortSelectedCommand" trigger="click">
+ <el-tag is-light :type="!selectedColumnSort ? 'info' : ''"><i
class="el-ksd-n-icon-table-rank-filled
ksd-mr-2"></i><span>{{$t('column')}}{{selectedColumnSort ? `:
${$t(selectedColumnSort)}` : ''}}</span></el-tag>
+ <el-dropdown-menu slot="dropdown" :append-to-body="false">
+ <el-dropdown-item :class="{'is-active': selectedColumnSort
=== 'ascending'}" command="ascending">{{$t('ascending')}}</el-dropdown-item>
+ <el-dropdown-item :class="{'is-active': selectedColumnSort
=== 'descending'}" command="descending">{{$t('descending')}}</el-dropdown-item>
+ </el-dropdown-menu>
+ </el-dropdown>
+ </span>
+ </div>
+ <div class="selected-results_layout" :class="{'is-no-footer':
!(showOverLimit && selectedColumns.length > limitLen) && !(draggable &&
searchVar), 'is-search-mode': searchVar}">
+ <div :class="['selected-results_item', {'drag-item':
draggable&&!searchVar, 'is-shared-col': it.isShared}]" v-for="it in
pagedSelectedColumns" :key="it.key" :id="it.key">
+ <p class="label">
+ <span class="num" :class="{'is-alive': isShowNum,
'is-disable-drag': isShowNum&&draggable&&searchVar}" :style="{'scale':
((getIndex(it.key) + 1) + '').length > 2 ? 1 - 0.2 * (((getIndex(it.key) + 1) +
'').length - 2) : 1}" v-if="isShowNum">{{ getIndex(it.key) + 1 }}</span>
+ <el-tooltip placement="top" :content="$t('dragToMove')"
v-show="draggable&&!searchVar">
+ <i class="el-ksd-n-icon-grab-dots-outlined"
:class="{'is-alive': draggable&&!searchVar}"></i>
+ </el-tooltip><el-tooltip :content="$t('excludedTableIconTip')"
effect="dark" placement="top"><i class="excluded_table-icon
el-icon-ksd-exclude" v-if="it.excluded"></i></el-tooltip>
+ <el-button type="primary" size="mini" class="shardby
is-shardby" v-if="it.isShared" text
icon="el-ksd-n-icon-symbol-s-circle-filled"></el-button>
+ <span class="top-icon ignore-drag"
v-if="topColAble"><el-button type="primary" size="mini" v-if="getIndex(it.key)
!== 0" text @click.native="topColumn($event, it.key)"
icon="el-ksd-n-icon-top-filled"></el-button></span>
+ <span class="ksd-nobr-text">{{it.label}}</span>
+ </p>
+ <div class="right-actions">
+ <el-tooltip placement="top" :content="$t('cardinality')">
+ <span class="cardinality ksd-nobr-text"
@mouseenter.stop>{{it.cardinality}}</span>
+ </el-tooltip>
+ </div>
+ <div class="hover-icons ignore-drag">
+ <el-tooltip placement="top">
+ <div slot="content" style="word-break: break-all">
+ <div v-if="it.name">{{
$t('kylinLang.dataSource.dimensionName') }}: {{ it.name }}</div>
+ <div>{{ $t('kylinLang.model.columnName') }}: {{ it.label
}}</div>
+ <div v-if="it.cardinality">{{ $t('cardinality') }}: {{
it.cardinality }}</div>
+ <div v-if="it.comment">{{
$t('kylinLang.dataSource.comment') }}: {{ it.comment }}</div>
+ </div>
+ <i class="el-ksd-n-icon-info-circle-outlined ksd-ml-5"></i>
+ </el-tooltip>
+ <el-tooltip placement="top" v-if="!it.isShared&sharedByAble"
:content="shardByIndex !== -1 ? $t('replaceShardBy') : $t('setShardBy')">
+ <el-button type="primary" size="mini" class="shardby"
@click.stop="setShardBy(it.key)" text
icon="el-ksd-n-icon-symbol-s-circle-filled"></el-button>
+ </el-tooltip><el-tooltip placement="top"
v-if="it.isShared&sharedByAble" :content="$t('removeShardBy')">
+ <el-button type="primary" size="mini" class="shardby
is-shardby" text @click.stop="unSetSharyBy(it.key)"
icon="el-ksd-n-icon-symbol-s-circle-filled"></el-button>
+ </el-tooltip><el-tooltip placement="top"
:content="$t('remove')">
+ <i class="el-ksd-n-icon-close-outlined close-btn"
@click.stop="removeColumn(it)"></i>
+ </el-tooltip>
</div>
- <!-- <div class="load-more-layout" v-if="showLoadMore('right')"
@click="addPagination('right')">{{$t('kylinLang.common.loadMore')}}</div> -->
</div>
- <empty-data size="small"
:image="require('../../../assets/img/empty/empty_state_not_found.svg')"
:content="searchVar ? $t('kylinLang.common.noData') : rightTitleTip"
v-if="!pagedSelectedColumns.length" />
+ <!-- <div class="load-more-layout" v-if="showLoadMore('right')"
@click="addPagination('right')">{{$t('kylinLang.common.loadMore')}}</div> -->
</div>
- <div class="over-limit-tips" v-if="showOverLimit &&
selectedColumns.length > limitLen"><el-tooltip placement="top"
:content="$t('limitTooltip')"><span class="text"><el-icon class="ksd-mr-4"
name="el-ksd-n-icon-warning-color-filled"
type="mult"></el-icon>{{$t('overLimitTips')}}</span></el-tooltip><div
class="line"></div></div>
- <div class="over-limit-tips" v-if="draggable && searchVar"><span
class="text"><el-icon class="ksd-mr-4"
name="el-ksd-n-icon-warning-color-filled"
type="mult"></el-icon>{{$t('disableDragtips')}}</span><div
class="line"></div></div>
+ <empty-data size="small"
:image="require('../../../assets/img/empty/empty_state_not_found.svg')"
:content="searchVar ? $t('kylinLang.common.noData') : rightTitleTip"
v-if="!pagedSelectedColumns.length" />
</div>
- </div>
- <div class="search-results_layout">
- <p class="search-results_item">{{$t('selectedNum', {num:
selectedData.length})}}</p>
- <span class="dive ksd-ml-12 ksd-mr-12">|</span>
- <p class="search-results_item">{{$t('allResultNum', {num:
unSelectedData.length})}}</p>
+ <div class="over-limit-tips" v-if="showOverLimit &&
selectedColumns.length > limitLen"><el-tooltip placement="top"
:content="$t('limitTooltip')"><span class="text"><el-icon class="ksd-mr-4"
name="el-ksd-n-icon-warning-color-filled"
type="mult"></el-icon>{{$t('overLimitTips')}}</span></el-tooltip><div
class="line"></div></div>
+ <div class="over-limit-tips" v-if="draggable && searchVar"><span
class="text"><el-icon class="ksd-mr-4"
name="el-ksd-n-icon-warning-color-filled"
type="mult"></el-icon>{{$t('disableDragtips')}}</span><div
class="line"></div></div>
</div>
</div>
- </template>
- <script>
+ <div class="search-results_layout">
+ <p class="search-results_item">{{$t('selectedNum', {num:
selectedData.length})}}</p>
+ <span class="dive ksd-ml-12 ksd-mr-12">|</span>
+ <p class="search-results_item">{{$t('allResultNum', {num:
unSelectedData.length})}}</p>
+ </div>
+ </div>
+</template>
+<script>
import { Component, Vue } from 'vue-property-decorator'
import { objectClone, indexOfObjWithSomeKey, kylinConfirm } from 'util'
import Sortable, { AutoScroll } from
'sortablejs/modular/sortable.core.esm.js'
@@ -565,7 +565,7 @@
selectAll () {
let selectedList = objectClone(this.selectedColumns)
// 除去disabled的列,
- this.isSelectAll = this.filterModelColumns.filter(c =>
!c.disabled).length > this.filterSelectedColumns.length
+ this.isSelectAll = this.filterModelColumns.filter(c =>
!c.disabled).length > this.filterTypeOptionSelectedColumns.length
this.filterModelColumns.forEach((c) => {
!c.disabled && (c.selected = this.isSelectAll)
if (this.isSelectAll) {
@@ -700,8 +700,8 @@
this.$message({ type: 'success', message: this.$t('unSetShardBySuccess')
})
}
}
- </script>
- <style lang="less">
+</script>
+<style lang="less">
@import '../../../assets/styles/variables.less';
.sec-index-container {
width: 100%;
@@ -822,6 +822,9 @@
height: 28px;
padding: 8px 0;
border-top: 1px solid @ke-border-divider-color;
+ .exclude-checkbox {
+ margin: 6px 8px;
+ }
}
}
.right_layout {
@@ -1193,4 +1196,4 @@
}
}
}
- </style>
+</style>