Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

optimize: file remote control and file search indies. #377

Merged
merged 1 commit into from
Jul 17, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions CHANGELOG.MD
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,15 @@

更新日志文档,版本顺序从新到旧,最新版本在最前(上)面。

# 0.4.5

## 优化

- 服务端初始化系统配置添加远端开启开关
- 服务端内置搜索引擎不构建文件索引
- 控制台根据是否开启远端配置控制是否展示文件推送和拉取操作按钮
- 控制台全局搜索组件去掉文件搜索

# 0.4.4

## 问题修复
Expand Down
124 changes: 29 additions & 95 deletions console/src/components/global-search/GlobalSearchDialog.vue
Original file line number Diff line number Diff line change
@@ -1,17 +1,9 @@
<script setup lang="ts">
import { ref, nextTick, computed } from 'vue';
import { apiClient } from '@/utils/api-client';
import { FileHint, SubjectHint } from '@runikaros/api-client';
import { SubjectHint } from '@runikaros/api-client';
import { useRouter } from 'vue-router';
import {
ElMessage,
ElDialog,
ElInput,
ElSelect,
ElOption,
ElTabs,
ElTabPane,
} from 'element-plus';
import { ElMessage, ElDialog, ElInput } from 'element-plus';

const props = withDefaults(
defineProps<{
Expand Down Expand Up @@ -41,40 +33,24 @@ const dialogVisible = computed({
});

const search = ref({
type: 'SUBJECT',
keyword: '',
});

const subjectHits = ref<SubjectHint[]>();
const fileHits = ref<FileHint[]>();

const searchByKeyword = async () => {
if (!search.value.keyword) {
ElMessage.warning('请输入值进行查询');
return;
}
const type = search.value.type;
if ('SUBJECT' === type) {
const { data } = await apiClient.indices.searchSubject({
keyword: search.value.keyword,
limit: 10,
});
if (!data.hits || data.hits.length === 0) {
ElMessage.warning('未查询到条目数据');
}
subjectHits.value = data.hits;
}

if ('FILE' === type) {
const { data } = await apiClient.indices.searchFile({
keyword: search.value.keyword,
limit: 10,
});
if (!data.hits || data.hits.length === 0) {
ElMessage.warning('未查询到文件数据');
}
fileHits.value = data.hits;
const { data } = await apiClient.indices.searchSubject({
keyword: search.value.keyword,
limit: 10,
});
if (!data.hits || data.hits.length === 0) {
ElMessage.warning('未查询到条目数据');
}
subjectHits.value = data.hits;
};

const toDetailPage = (url: string) => {
Expand All @@ -91,12 +67,6 @@ const onOpened = () => {
searchInputRef.value.focus();
});
};

const activeTab = ref('SUBJECT');

const onselectionchange = (val: string) => {
activeTab.value = val;
};
</script>

<template>
Expand All @@ -115,70 +85,34 @@ const onselectionchange = (val: string) => {
v-model="search.keyword"
style="width: 100%"
size="large"
placeholder="请输入关键词,回车搜索。"
placeholder="请输入条目关键词,回车搜索。"
@keydown.enter="searchByKeyword"
>
<template #prepend>
<el-select
v-model="search.type"
style="width: 80px"
size="large"
@change="onselectionchange"
>
<el-option label="条目" value="SUBJECT" />
<el-option label="文件" value="FILE" />
</el-select>
</template>
<!-- <template #append>
<el-button :icon="Search" @click="searchByKeyword" />
</template> -->
</el-input>
</template>

<el-tabs v-model="activeTab">
<el-tab-pane label="条目" name="SUBJECT">
<ul v-if="subjectHits && subjectHits.length > 0" class="ik-content-ul">
<li
v-for="subjectHit in subjectHits"
:key="subjectHit.id"
class="ik-content-ul-li"
tabindex="0"
@keydown.enter="
toDetailPage('/subjects/subject/details/' + subjectHit.id)
"
@click="toDetailPage('/subjects/subject/details/' + subjectHit.id)"
>
<span class="ik-subject-name">
<span>{{ subjectHit.name }} </span>
<span class="grey">{{ subjectHit.nameCn }}</span>
</span>
</li>
</ul>

<span v-else> 暂无数据 </span>
</el-tab-pane>
<el-tab-pane label="文件" name="FILE">
<ul v-if="fileHits && fileHits.length > 0" class="ik-content-ul">
<li
v-for="fileHit in fileHits"
:key="fileHit.id"
class="ik-content-ul-li"
tabindex="0"
@keydown.enter="
toDetailPage('/files?searchFileName=' + fileHit.name)
"
@click="toDetailPage('/files?searchFileName=' + fileHit.name)"
>
<span class="ik-subject-name">
<span>{{ fileHit.name }} </span>
<span class="grey">{{ fileHit.originalName }}</span>
</span>
</li>
</ul>

<span v-else> 暂无数据 </span>
</el-tab-pane>
</el-tabs>
<ul v-if="subjectHits && subjectHits.length > 0" class="ik-content-ul">
<li
v-for="subjectHit in subjectHits"
:key="subjectHit.id"
class="ik-content-ul-li"
tabindex="0"
@keydown.enter="
toDetailPage('/subjects/subject/details/' + subjectHit.id)
"
@click="toDetailPage('/subjects/subject/details/' + subjectHit.id)"
>
<span class="ik-subject-name">
<span>{{ subjectHit.name }} </span>
<span class="grey">{{ subjectHit.nameCn }}</span>
</span>
</li>
</ul>

<span v-else> 暂无数据 </span>

<template #footer>
<span> [Tab]-下一个 &nbsp; [Shift+Tab]-上一个 &nbsp; [Enter]-确认</span>
Expand Down
Loading
Loading