Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
28323b5c
V
vscode
项目概览
掘金者说
/
vscode
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
vscode
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
28323b5c
编写于
4月 01, 2016
作者:
J
Joao Moreno
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
better query interfaces
上级
48bef528
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
108 addition
and
11 deletion
+108
-11
src/vs/workbench/parts/extensions/common/vsoGalleryService.ts
...vs/workbench/parts/extensions/common/vsoGalleryService.ts
+108
-11
未找到文件。
src/vs/workbench/parts/extensions/common/vsoGalleryService.ts
浏览文件 @
28323b5c
...
...
@@ -6,6 +6,7 @@
import
{
TPromise
}
from
'
vs/base/common/winjs.base
'
;
import
{
IGalleryService
,
IGalleryVersion
,
IQueryOptions
,
IQueryResult
}
from
'
vs/workbench/parts/extensions/common/extensions
'
;
import
{
IXHRResponse
}
from
'
vs/base/common/http
'
;
import
{
isUndefined
}
from
'
vs/base/common/types
'
;
import
{
assign
,
getOrDefault
}
from
'
vs/base/common/objects
'
;
import
{
IRequestService
}
from
'
vs/platform/request/common/request
'
;
import
{
IWorkspaceContextService
}
from
'
vs/workbench/services/workspace/common/contextService
'
;
...
...
@@ -38,6 +39,102 @@ export interface IGalleryExtensionStatistics {
value
:
number
;
}
enum
Flags
{
None
=
0x0
,
IncludeVersions
=
0x1
,
IncludeFiles
=
0x2
,
IncludeCategoryAndTags
=
0x4
,
IncludeSharedAccounts
=
0x8
,
IncludeVersionProperties
=
0x10
,
ExcludeNonValidated
=
0x20
,
IncludeInstallationTargets
=
0x40
,
IncludeAssetUri
=
0x80
,
IncludeStatistics
=
0x100
,
IncludeLatestVersionOnly
=
0x200
}
enum
FilterType
{
Tag
=
1
,
ExtensionId
=
4
,
Category
=
5
,
ExtensionName
=
7
,
Target
=
8
,
Featured
=
9
,
SearchText
=
10
}
enum
SortBy
{
NoneOrRelevance
=
0
,
LastUpdatedDate
=
1
,
Title
=
2
,
PublisherName
=
3
,
InstallCount
=
4
,
PublishedDate
=
5
,
AverageRating
=
6
}
enum
SortOrder
{
Default
=
0
,
Ascending
=
1
,
Descending
=
2
}
interface
ICriterium
{
filterType
:
FilterType
;
value
?:
string
;
}
class
Query
{
private
pageNumber
=
1
;
private
pageSize
=
10
;
private
sortBy
=
SortBy
.
NoneOrRelevance
;
private
sortOrder
=
SortOrder
.
Default
;
private
flags
=
Flags
.
None
;
private
criteria
:
ICriterium
[]
=
[];
withPage
(
pageSize
:
number
,
pageNumber
:
number
):
Query
{
this
.
pageSize
=
pageSize
;
this
.
pageNumber
=
pageNumber
;
return
this
;
}
withFilter
(
filterType
:
FilterType
,
value
?:
string
):
Query
{
const
criterium
:
ICriterium
=
{
filterType
};
if
(
!
isUndefined
(
value
))
{
criterium
.
value
=
value
;
}
this
.
criteria
.
push
(
criterium
);
return
this
;
}
withSort
(
sortBy
:
SortBy
,
sortOrder
=
SortOrder
.
Default
):
Query
{
this
.
sortBy
=
sortBy
;
this
.
sortOrder
=
sortOrder
;
return
this
;
}
withFlags
(...
flags
:
Flags
[]):
Query
{
this
.
flags
=
flags
.
reduce
((
r
,
f
)
=>
r
|
f
,
0
);
return
this
;
}
get
raw
():
any
{
return
{
filters
:
[{
criteria
:
this
.
criteria
,
pageNumber
:
this
.
pageNumber
,
pageSize
:
this
.
pageSize
,
sortBy
:
this
.
sortBy
,
sortOrder
:
this
.
sortOrder
}],
flags
:
this
.
flags
};
}
}
function
getInstallCount
(
statistics
:
IGalleryExtensionStatistics
[]):
number
{
if
(
!
statistics
)
{
return
0
;
...
...
@@ -125,17 +222,17 @@ export class GalleryService implements IGalleryService {
const
pageNumber
=
getOrDefault
(
options
,
o
=>
o
.
pageNumber
,
1
);
const
pageSize
=
getOrDefault
(
options
,
o
=>
o
.
pageNumber
,
10
);
const
data
=
JSON
.
stringify
({
filters
:
[{
criteria
:[
{
filterType
:
8
,
value
:
'
Microsoft.VisualStudio.Code
'
},
{
filterType
:
10
,
value
:
text
}
],
pageNumber
,
pageSize
}],
flags
:
0x1
|
0x4
|
0x80
|
0x100
}
);
let
query
=
new
Query
()
.
withFlags
(
Flags
.
IncludeVersions
,
Flags
.
IncludeCategoryAndTags
,
Flags
.
IncludeAssetUri
,
Flags
.
IncludeStatistics
)
.
withPage
(
pageSize
,
pageNumber
)
.
withFilter
(
FilterType
.
Target
,
'
Microsoft.VisualStudio.Code
'
)
.
withSort
(
SortBy
.
InstallCount
);
if
(
text
)
{
query
=
query
.
withFilter
(
FilterType
.
SearchText
,
text
);
}
const
data
=
JSON
.
stringify
(
query
.
raw
);
return
this
.
getRequestHeaders
().
then
(
headers
=>
{
headers
=
assign
(
headers
,
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录