Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
gitcode_dev
开源百科
提交
e449045a
开
开源百科
项目概览
gitcode_dev
/
开源百科
通知
256
Star
3
Fork
3
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
17
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
代码片段
项目成员
Pages
开
开源百科
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
17
Issue
17
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
代码片段
代码片段
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
e449045a
编写于
4月 26, 2021
作者:
X
xjh22222228
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix(search): add default & current
上级
8a92d36a
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
70 addition
and
32 deletion
+70
-32
src/components/search-engine/index.ts
src/components/search-engine/index.ts
+1
-0
src/components/search-engine/search-engine.component.html
src/components/search-engine/search-engine.component.html
+2
-0
src/components/search-engine/search-engine.component.ts
src/components/search-engine/search-engine.component.ts
+1
-1
src/utils/index.ts
src/utils/index.ts
+66
-31
未找到文件。
src/components/search-engine/index.ts
浏览文件 @
e449045a
...
...
@@ -4,4 +4,5 @@ export enum SearchType {
Title
,
Desc
,
Url
,
Current
}
src/components/search-engine/search-engine.component.html
浏览文件 @
e449045a
...
...
@@ -30,9 +30,11 @@
</ng-template>
<ng-template
#addOnBeforeTemplate
>
<nz-select
[(ngModel)]=
"searchTypeValue"
*ngIf=
"!currentEngine.url"
>
<nz-option
nzLabel=
"默认"
[nzValue]=
"SearchType.All"
></nz-option>
<nz-option
nzLabel=
"标题"
[nzValue]=
"SearchType.Title"
></nz-option>
<nz-option
nzLabel=
"描述"
[nzValue]=
"SearchType.Desc"
></nz-option>
<nz-option
nzLabel=
"链接"
[nzValue]=
"SearchType.Url"
></nz-option>
<nz-option
nzLabel=
"当前"
[nzValue]=
"SearchType.Current"
></nz-option>
</nz-select>
</ng-template>
</div>
...
...
src/components/search-engine/search-engine.component.ts
浏览文件 @
e449045a
...
...
@@ -17,7 +17,7 @@ export class SearchEngineComponent {
searchEngineList
:
ISearchEngineProps
[]
=
(
searchEngineList
as
any
).
default
currentEngine
:
ISearchEngineProps
=
getDefaultSearchEngine
()
SearchType
=
SearchType
searchTypeValue
=
SearchType
.
Title
searchTypeValue
=
SearchType
.
All
showEngine
=
false
keyword
=
queryString
().
q
...
...
src/utils/index.ts
浏览文件 @
e449045a
...
...
@@ -22,10 +22,12 @@ export function randomInt(max: number) {
return
Math
.
floor
(
Math
.
random
()
*
max
)
}
export
function
fuzzySearch
(
navList
:
INavProps
[],
keyword
:
string
)
{
const
sType
=
Number
(
queryString
().
type
)
||
SearchType
.
Title
export
function
fuzzySearch
(
navList
:
INavProps
[],
keyword
:
string
):
INavThreeProp
[]
{
const
{
type
,
page
,
id
}
=
queryString
()
const
sType
=
Number
(
type
)
||
SearchType
.
Title
const
navData
=
[]
const
resultList
=
[{
nav
:
navData
}]
const
urlRecordMap
=
{}
function
f
(
arr
?:
any
[])
{
arr
=
arr
||
navList
...
...
@@ -45,44 +47,73 @@ export function fuzzySearch(navList: INavProps[], keyword: string) {
const
search
=
keyword
.
toLowerCase
()
const
urls
=
Object
.
values
(
item
.
urls
||
{})
function
searchTitle
():
boolean
{
if
(
name
.
includes
(
search
))
{
let
result
=
{
...
item
}
const
regex
=
new
RegExp
(
`(
${
keyword
}
)`
,
'
i
'
)
result
.
name
=
result
.
name
.
replace
(
regex
,
`$1`
.
bold
())
if
(
!
urlRecordMap
[
result
.
url
])
{
urlRecordMap
[
result
.
url
]
=
true
navData
.
push
(
result
)
return
true
}
}
return
false
}
function
searchUrl
()
{
if
(
url
?.
includes
?.(
keyword
.
toLowerCase
()))
{
if
(
!
urlRecordMap
[
item
.
url
])
{
urlRecordMap
[
item
.
url
]
=
true
navData
.
push
(
item
)
return
true
}
}
const
find
=
urls
.
some
((
item
:
string
)
=>
item
.
includes
(
keyword
))
if
(
find
)
{
if
(
!
urlRecordMap
[
item
.
url
])
{
urlRecordMap
[
item
.
url
]
=
true
navData
.
push
(
item
)
return
true
}
}
}
function
searchDesc
():
boolean
{
if
(
desc
.
includes
(
search
))
{
let
result
=
{
...
item
}
const
regex
=
new
RegExp
(
`(
${
keyword
}
)`
,
'
i
'
)
result
.
desc
=
result
.
desc
.
replace
(
regex
,
`$1`
.
bold
())
if
(
!
urlRecordMap
[
result
.
url
])
{
urlRecordMap
[
result
.
url
]
=
true
navData
.
push
(
result
)
return
true
}
}
return
false
}
try
{
switch
(
sType
)
{
case
SearchType
.
Url
:
if
(
url
?.
includes
?.(
keyword
.
toLowerCase
()))
{
navData
.
push
(
item
)
}
const
find
=
urls
.
some
((
item
:
string
)
=>
item
.
includes
(
keyword
))
if
(
find
)
{
navData
.
push
(
item
)
}
searchUrl
()
break
case
SearchType
.
Title
:
if
(
name
.
includes
(
search
))
{
let
result
=
{
...
item
}
const
regex
=
new
RegExp
(
`(
${
keyword
}
)`
,
'
i
'
)
result
.
name
=
result
.
name
.
replace
(
regex
,
`$1`
.
bold
())
const
exists
=
navData
.
some
(
item
=>
item
.
name
===
result
.
name
)
if
(
!
exists
)
{
navData
.
push
(
result
)
}
}
searchTitle
()
break
case
SearchType
.
Desc
:
if
(
desc
.
includes
(
search
))
{
let
result
=
{
...
item
}
const
regex
=
new
RegExp
(
`(
${
keyword
}
)`
,
'
i
'
)
result
.
desc
=
result
.
desc
.
replace
(
regex
,
`$1`
.
bold
())
const
exists
=
navData
.
some
(
item
=>
item
.
desc
===
result
.
desc
)
if
(
!
exists
)
{
navData
.
push
(
result
)
}
}
searchDesc
()
break
default
:
searchTitle
()
searchDesc
()
searchUrl
()
}
}
catch
(
error
)
{
console
.
error
(
error
)
...
...
@@ -91,7 +122,11 @@ export function fuzzySearch(navList: INavProps[], keyword: string) {
}
}
f
()
if
(
sType
===
SearchType
.
Current
)
{
f
(
navList
[
page
].
nav
[
id
].
nav
)
}
else
{
f
()
}
if
(
navData
.
length
<=
0
)
{
return
[]
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录