Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
CAP
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
tsai
CAP
Commits
e9aaf305
Commit
e9aaf305
authored
Sep 08, 2017
by
yangxiaodong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update dashboard.
parent
675e3c19
Changes
16
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
517 additions
and
206 deletions
+517
-206
BatchCommandDispatcher.cs
src/DotNetCore.CAP/Dashboard/BatchCommandDispatcher.cs
+7
-6
cap.js
src/DotNetCore.CAP/Dashboard/Content/js/cap.js
+36
-2
Strings.Designer.cs
...DotNetCore.CAP/Dashboard/Content/resx/Strings.Designer.cs
+69
-69
Strings.resx
src/DotNetCore.CAP/Dashboard/Content/resx/Strings.resx
+18
-18
Strings.zh.resx
src/DotNetCore.CAP/Dashboard/Content/resx/Strings.zh.resx
+18
-21
DashboardRoutes.cs
src/DotNetCore.CAP/Dashboard/DashboardRoutes.cs
+15
-8
JsonDispatcher.cs
src/DotNetCore.CAP/Dashboard/JsonDispatcher.cs
+22
-7
MessagesSidebarMenu.cs
src/DotNetCore.CAP/Dashboard/MessagesSidebarMenu.cs
+6
-6
MessageQueryDto.cs
src/DotNetCore.CAP/Dashboard/Monitoring/MessageQueryDto.cs
+1
-0
PublishedPage.cshtml
src/DotNetCore.CAP/Dashboard/Pages/PublishedPage.cshtml
+2
-2
PublishedPage1.generated.cs
...otNetCore.CAP/Dashboard/Pages/PublishedPage1.generated.cs
+12
-3
ReceivedPage.cshtml
src/DotNetCore.CAP/Dashboard/Pages/ReceivedPage.cshtml
+45
-14
ReceivedPage.generated.cs
src/DotNetCore.CAP/Dashboard/Pages/ReceivedPage.generated.cs
+232
-48
RouteCollectionExtensions.cs
src/DotNetCore.CAP/Dashboard/RouteCollectionExtensions.cs
+13
-1
DotNetCore.CAP.csproj
src/DotNetCore.CAP/DotNetCore.CAP.csproj
+16
-0
IStorageConnection.cs
src/DotNetCore.CAP/IStorageConnection.cs
+5
-1
No files found.
src/DotNetCore.CAP/Dashboard/BatchCommandDispatcher.cs
View file @
e9aaf305
...
@@ -6,25 +6,26 @@ namespace DotNetCore.CAP.Dashboard
...
@@ -6,25 +6,26 @@ namespace DotNetCore.CAP.Dashboard
{
{
internal
class
BatchCommandDispatcher
:
IDashboardDispatcher
internal
class
BatchCommandDispatcher
:
IDashboardDispatcher
{
{
private
readonly
Action
<
DashboardContext
,
string
>
_command
;
private
readonly
Action
<
DashboardContext
,
int
>
_command
;
public
BatchCommandDispatcher
(
Action
<
DashboardContext
,
string
>
command
)
public
BatchCommandDispatcher
(
Action
<
DashboardContext
,
int
>
command
)
{
{
_command
=
command
;
_command
=
command
;
}
}
public
async
Task
Dispatch
(
DashboardContext
context
)
public
async
Task
Dispatch
(
DashboardContext
context
)
{
{
var
jobIds
=
await
context
.
Request
.
GetFormValuesAsync
(
"job
s[]"
);
var
messageIds
=
await
context
.
Request
.
GetFormValuesAsync
(
"message
s[]"
);
if
(
job
Ids
.
Count
==
0
)
if
(
message
Ids
.
Count
==
0
)
{
{
context
.
Response
.
StatusCode
=
422
;
context
.
Response
.
StatusCode
=
422
;
return
;
return
;
}
}
foreach
(
var
jobId
in
job
Ids
)
foreach
(
var
messageId
in
message
Ids
)
{
{
_command
(
context
,
jobId
);
var
id
=
int
.
Parse
(
messageId
);
_command
(
context
,
id
);
}
}
context
.
Response
.
StatusCode
=
(
int
)
HttpStatusCode
.
NoContent
;
context
.
Response
.
StatusCode
=
(
int
)
HttpStatusCode
.
NoContent
;
...
...
src/DotNetCore.CAP/Dashboard/Content/js/cap.js
View file @
e9aaf305
...
@@ -468,7 +468,7 @@
...
@@ -468,7 +468,7 @@
var
$this
=
$
(
this
);
var
$this
=
$
(
this
);
var
confirmText
=
$this
.
data
(
'
confirm
'
);
var
confirmText
=
$this
.
data
(
'
confirm
'
);
var
jobs
=
$
(
"
input[name='
job
s[]']:checked
"
,
container
).
map
(
function
()
{
var
jobs
=
$
(
"
input[name='
message
s[]']:checked
"
,
container
).
map
(
function
()
{
return
$
(
this
).
val
();
return
$
(
this
).
val
();
}).
get
();
}).
get
();
...
@@ -478,7 +478,7 @@
...
@@ -478,7 +478,7 @@
$this
.
button
(
'
loading
'
);
$this
.
button
(
'
loading
'
);
},
100
);
},
100
);
$
.
post
(
$this
.
data
(
'
url
'
),
{
'
job
s[]
'
:
jobs
},
function
()
{
$
.
post
(
$this
.
data
(
'
url
'
),
{
'
message
s[]
'
:
jobs
},
function
()
{
clearTimeout
(
loadingDelay
);
clearTimeout
(
loadingDelay
);
window
.
location
.
reload
();
window
.
location
.
reload
();
});
});
...
@@ -498,3 +498,37 @@
...
@@ -498,3 +498,37 @@
$
(
function
()
{
$
(
function
()
{
Cap
.
page
=
new
Cap
.
Page
(
Cap
.
config
);
Cap
.
page
=
new
Cap
.
Page
(
Cap
.
config
);
});
});
(
function
()
{
var
json
=
null
;
$
(
"
.openModal
"
).
click
(
function
()
{
var
url
=
$
(
this
).
data
(
"
url
"
);
$
.
ajax
({
url
:
url
,
dataType
:
"
json
"
,
success
:
function
(
data
)
{
json
=
data
;
$
(
"
#formatBtn
"
).
click
();
$
(
"
.modal
"
).
modal
(
"
show
"
);
}
});
});
$
(
"
#formatBtn
"
).
click
(
function
()
{
$
(
'
#jsonContent
'
).
JSONView
(
json
);
});
$
(
"
#rawBtn
"
).
click
(
function
()
{
$
(
'
#jsonContent
'
).
text
(
JSON
.
stringify
(
json
));
});
$
(
"
#expandBtn
"
).
click
(
function
()
{
$
(
'
#jsonContent
'
).
JSONView
(
'
expand
'
);
});
$
(
"
#collapseBtn
"
).
click
(
function
()
{
$
(
'
#jsonContent
'
).
JSONView
(
'
collapse
'
);
});
})();
\ No newline at end of file
src/DotNetCore.CAP/Dashboard/Content/resx/Strings.Designer.cs
View file @
e9aaf305
...
@@ -431,69 +431,6 @@ namespace DotNetCore.CAP.Dashboard.Resources {
...
@@ -431,69 +431,6 @@ namespace DotNetCore.CAP.Dashboard.Resources {
}
}
}
}
/// <summary>
/// Looks up a localized string similar to Awaiting.
/// </summary>
public
static
string
JobsSidebarMenu_Awaiting
{
get
{
return
ResourceManager
.
GetString
(
"JobsSidebarMenu_Awaiting"
,
resourceCulture
);
}
}
/// <summary>
/// Looks up a localized string similar to Deleted.
/// </summary>
public
static
string
JobsSidebarMenu_Deleted
{
get
{
return
ResourceManager
.
GetString
(
"JobsSidebarMenu_Deleted"
,
resourceCulture
);
}
}
/// <summary>
/// Looks up a localized string similar to Enqueued.
/// </summary>
public
static
string
JobsSidebarMenu_Enqueued
{
get
{
return
ResourceManager
.
GetString
(
"JobsSidebarMenu_Enqueued"
,
resourceCulture
);
}
}
/// <summary>
/// Looks up a localized string similar to Failed.
/// </summary>
public
static
string
JobsSidebarMenu_Failed
{
get
{
return
ResourceManager
.
GetString
(
"JobsSidebarMenu_Failed"
,
resourceCulture
);
}
}
/// <summary>
/// Looks up a localized string similar to Processing.
/// </summary>
public
static
string
JobsSidebarMenu_Processing
{
get
{
return
ResourceManager
.
GetString
(
"JobsSidebarMenu_Processing"
,
resourceCulture
);
}
}
/// <summary>
/// Looks up a localized string similar to Scheduled.
/// </summary>
public
static
string
JobsSidebarMenu_Scheduled
{
get
{
return
ResourceManager
.
GetString
(
"JobsSidebarMenu_Scheduled"
,
resourceCulture
);
}
}
/// <summary>
/// Looks up a localized string similar to Succeeded.
/// </summary>
public
static
string
JobsSidebarMenu_Succeeded
{
get
{
return
ResourceManager
.
GetString
(
"JobsSidebarMenu_Succeeded"
,
resourceCulture
);
}
}
/// <summary>
/// <summary>
/// Looks up a localized string similar to Back to site.
/// Looks up a localized string similar to Back to site.
/// </summary>
/// </summary>
...
@@ -557,6 +494,15 @@ namespace DotNetCore.CAP.Dashboard.Resources {
...
@@ -557,6 +494,15 @@ namespace DotNetCore.CAP.Dashboard.Resources {
}
}
}
}
/// <summary>
/// Looks up a localized string similar to No published messages found..
/// </summary>
public
static
string
MessagesPage_NoMessages
{
get
{
return
ResourceManager
.
GetString
(
"MessagesPage_NoMessages"
,
resourceCulture
);
}
}
/// <summary>
/// <summary>
/// Looks up a localized string similar to Query.
/// Looks up a localized string similar to Query.
/// </summary>
/// </summary>
...
@@ -575,6 +521,15 @@ namespace DotNetCore.CAP.Dashboard.Resources {
...
@@ -575,6 +521,15 @@ namespace DotNetCore.CAP.Dashboard.Resources {
}
}
}
}
/// <summary>
/// Looks up a localized string similar to Message group.
/// </summary>
public
static
string
MessagesPage_Query_MessageGroup
{
get
{
return
ResourceManager
.
GetString
(
"MessagesPage_Query_MessageGroup"
,
resourceCulture
);
}
}
/// <summary>
/// <summary>
/// Looks up a localized string similar to Message name.
/// Looks up a localized string similar to Message name.
/// </summary>
/// </summary>
...
@@ -602,6 +557,15 @@ namespace DotNetCore.CAP.Dashboard.Resources {
...
@@ -602,6 +557,15 @@ namespace DotNetCore.CAP.Dashboard.Resources {
}
}
}
}
/// <summary>
/// Looks up a localized string similar to Group.
/// </summary>
public
static
string
MessagesPage_Table_Group
{
get
{
return
ResourceManager
.
GetString
(
"MessagesPage_Table_Group"
,
resourceCulture
);
}
}
/// <summary>
/// <summary>
/// Looks up a localized string similar to Name.
/// Looks up a localized string similar to Name.
/// </summary>
/// </summary>
...
@@ -864,11 +828,11 @@ namespace DotNetCore.CAP.Dashboard.Resources {
...
@@ -864,11 +828,11 @@ namespace DotNetCore.CAP.Dashboard.Resources {
}
}
/// <summary>
/// <summary>
/// Looks up a localized string similar to
No published messages found.
.
/// Looks up a localized string similar to
Published Messages
.
/// </summary>
/// </summary>
public
static
string
Published
Page_NoMessages
{
public
static
string
Published
MessagesPage_Title
{
get
{
get
{
return
ResourceManager
.
GetString
(
"Published
Page_NoMessages
"
,
resourceCulture
);
return
ResourceManager
.
GetString
(
"Published
MessagesPage_Title
"
,
resourceCulture
);
}
}
}
}
...
@@ -881,6 +845,24 @@ namespace DotNetCore.CAP.Dashboard.Resources {
...
@@ -881,6 +845,24 @@ namespace DotNetCore.CAP.Dashboard.Resources {
}
}
}
}
/// <summary>
/// Looks up a localized string similar to Received Messages.
/// </summary>
public
static
string
ReceivedMessagesPage_Title
{
get
{
return
ResourceManager
.
GetString
(
"ReceivedMessagesPage_Title"
,
resourceCulture
);
}
}
/// <summary>
/// Looks up a localized string similar to Received Messages.
/// </summary>
public
static
string
ReceivedPage_Title
{
get
{
return
ResourceManager
.
GetString
(
"ReceivedPage_Title"
,
resourceCulture
);
}
}
/// <summary>
/// <summary>
/// Looks up a localized string similar to All is OK – you have no retries..
/// Looks up a localized string similar to All is OK – you have no retries..
/// </summary>
/// </summary>
...
@@ -981,11 +963,29 @@ namespace DotNetCore.CAP.Dashboard.Resources {
...
@@ -981,11 +963,29 @@ namespace DotNetCore.CAP.Dashboard.Resources {
}
}
/// <summary>
/// <summary>
/// Looks up a localized string similar to Succeeded Messages.
/// Looks up a localized string similar to Failed.
/// </summary>
public
static
string
SidebarMenu_Failed
{
get
{
return
ResourceManager
.
GetString
(
"SidebarMenu_Failed"
,
resourceCulture
);
}
}
/// <summary>
/// Looks up a localized string similar to Processing.
/// </summary>
public
static
string
SidebarMenu_Processing
{
get
{
return
ResourceManager
.
GetString
(
"SidebarMenu_Processing"
,
resourceCulture
);
}
}
/// <summary>
/// Looks up a localized string similar to Succeeded.
/// </summary>
/// </summary>
public
static
string
S
ucceededMessagesPage_Title
{
public
static
string
S
idebarMenu_Succeeded
{
get
{
get
{
return
ResourceManager
.
GetString
(
"S
ucceededMessagesPage_Title
"
,
resourceCulture
);
return
ResourceManager
.
GetString
(
"S
idebarMenu_Succeeded
"
,
resourceCulture
);
}
}
}
}
}
}
...
...
src/DotNetCore.CAP/Dashboard/Content/resx/Strings.resx
View file @
e9aaf305
...
@@ -293,25 +293,16 @@
...
@@ -293,25 +293,16 @@
<data
name=
"ServersPage_Title"
xml:space=
"preserve"
>
<data
name=
"ServersPage_Title"
xml:space=
"preserve"
>
<value>
Servers
</value>
<value>
Servers
</value>
</data>
</data>
<data
name=
"
Succeed
edMessagesPage_Title"
xml:space=
"preserve"
>
<data
name=
"
Publish
edMessagesPage_Title"
xml:space=
"preserve"
>
<value>
Succeed
ed Messages
</value>
<value>
Publish
ed Messages
</value>
</data>
</data>
<data
name=
"JobsSidebarMenu_Awaiting"
xml:space=
"preserve"
>
<data
name=
"SidebarMenu_Failed"
xml:space=
"preserve"
>
<value>
Awaiting
</value>
</data>
<data
name=
"JobsSidebarMenu_Deleted"
xml:space=
"preserve"
>
<value>
Deleted
</value>
</data>
<data
name=
"JobsSidebarMenu_Failed"
xml:space=
"preserve"
>
<value>
Failed
</value>
<value>
Failed
</value>
</data>
</data>
<data
name=
"
Jobs
SidebarMenu_Processing"
xml:space=
"preserve"
>
<data
name=
"SidebarMenu_Processing"
xml:space=
"preserve"
>
<value>
Processing
</value>
<value>
Processing
</value>
</data>
</data>
<data
name=
"JobsSidebarMenu_Scheduled"
xml:space=
"preserve"
>
<data
name=
"SidebarMenu_Succeeded"
xml:space=
"preserve"
>
<value>
Scheduled
</value>
</data>
<data
name=
"JobsSidebarMenu_Succeeded"
xml:space=
"preserve"
>
<value>
Succeeded
</value>
<value>
Succeeded
</value>
</data>
</data>
<data
name=
"NavigationMenu_Published"
xml:space=
"preserve"
>
<data
name=
"NavigationMenu_Published"
xml:space=
"preserve"
>
...
@@ -338,9 +329,6 @@
...
@@ -338,9 +329,6 @@
<data
name=
"Common_NoState"
xml:space=
"preserve"
>
<data
name=
"Common_NoState"
xml:space=
"preserve"
>
<value>
No state
</value>
<value>
No state
</value>
</data>
</data>
<data
name=
"JobsSidebarMenu_Enqueued"
xml:space=
"preserve"
>
<value>
Enqueued
</value>
</data>
<data
name=
"Metrics_ActiveConnections"
xml:space=
"preserve"
>
<data
name=
"Metrics_ActiveConnections"
xml:space=
"preserve"
>
<value>
Active Connections
</value>
<value>
Active Connections
</value>
</data>
</data>
...
@@ -428,10 +416,22 @@
...
@@ -428,10 +416,22 @@
<data
name=
"MessagesPage_Table_Retries"
xml:space=
"preserve"
>
<data
name=
"MessagesPage_Table_Retries"
xml:space=
"preserve"
>
<value>
Retries
</value>
<value>
Retries
</value>
</data>
</data>
<data
name=
"
Published
Page_NoMessages"
xml:space=
"preserve"
>
<data
name=
"
Messages
Page_NoMessages"
xml:space=
"preserve"
>
<value>
No published messages found.
</value>
<value>
No published messages found.
</value>
</data>
</data>
<data
name=
"PublishedPage_Title"
xml:space=
"preserve"
>
<data
name=
"PublishedPage_Title"
xml:space=
"preserve"
>
<value>
Published Jobs
</value>
<value>
Published Jobs
</value>
</data>
</data>
<data
name=
"MessagesPage_Query_MessageGroup"
xml:space=
"preserve"
>
<value>
Message group
</value>
</data>
<data
name=
"MessagesPage_Table_Group"
xml:space=
"preserve"
>
<value>
Group
</value>
</data>
<data
name=
"ReceivedMessagesPage_Title"
xml:space=
"preserve"
>
<value>
Received Messages
</value>
</data>
<data
name=
"ReceivedPage_Title"
xml:space=
"preserve"
>
<value>
Received Messages
</value>
</data>
</root>
</root>
\ No newline at end of file
src/DotNetCore.CAP/Dashboard/Content/resx/Strings.zh.resx
View file @
e9aaf305
...
@@ -221,9 +221,6 @@
...
@@ -221,9 +221,6 @@
<data
name=
"HomePage_Title"
xml:space=
"preserve"
>
<data
name=
"HomePage_Title"
xml:space=
"preserve"
>
<value>
仪表盘
</value>
<value>
仪表盘
</value>
</data>
</data>
<data
name=
"JobDetailsPage_State"
xml:space=
"preserve"
>
<value>
状态
</value>
</data>
<data
name=
"LayoutPage_Back"
xml:space=
"preserve"
>
<data
name=
"LayoutPage_Back"
xml:space=
"preserve"
>
<value>
返回应用
</value>
<value>
返回应用
</value>
</data>
</data>
...
@@ -314,25 +311,16 @@
...
@@ -314,25 +311,16 @@
<data
name=
"ServersPage_Title"
xml:space=
"preserve"
>
<data
name=
"ServersPage_Title"
xml:space=
"preserve"
>
<value>
服务器
</value>
<value>
服务器
</value>
</data>
</data>
<data
name=
"SucceededMessagesPage_Title"
xml:space=
"preserve"
>
<data
name=
"PublishedMessagesPage_Title"
xml:space=
"preserve"
>
<value>
已发送消息
</value>
<value>
发送出的消息
</value>
</data>
<data
name=
"JobsSidebarMenu_Awaiting"
xml:space=
"preserve"
>
<value>
等待中
</value>
</data>
<data
name=
"JobsSidebarMenu_Deleted"
xml:space=
"preserve"
>
<value>
删除
</value>
</data>
</data>
<data
name=
"
Jobs
SidebarMenu_Failed"
xml:space=
"preserve"
>
<data
name=
"SidebarMenu_Failed"
xml:space=
"preserve"
>
<value>
失败
</value>
<value>
失败
</value>
</data>
</data>
<data
name=
"
Jobs
SidebarMenu_Processing"
xml:space=
"preserve"
>
<data
name=
"SidebarMenu_Processing"
xml:space=
"preserve"
>
<value>
执行中
</value>
<value>
执行中
</value>
</data>
</data>
<data
name=
"JobsSidebarMenu_Scheduled"
xml:space=
"preserve"
>
<data
name=
"SidebarMenu_Succeeded"
xml:space=
"preserve"
>
<value>
计划
</value>
</data>
<data
name=
"JobsSidebarMenu_Succeeded"
xml:space=
"preserve"
>
<value>
完成
</value>
<value>
完成
</value>
</data>
</data>
<data
name=
"NavigationMenu_Published"
xml:space=
"preserve"
>
<data
name=
"NavigationMenu_Published"
xml:space=
"preserve"
>
...
@@ -359,9 +347,6 @@
...
@@ -359,9 +347,6 @@
<data
name=
"Common_NoState"
xml:space=
"preserve"
>
<data
name=
"Common_NoState"
xml:space=
"preserve"
>
<value>
No state
</value>
<value>
No state
</value>
</data>
</data>
<data
name=
"JobsSidebarMenu_Enqueued"
xml:space=
"preserve"
>
<value>
Enqueued
</value>
</data>
<data
name=
"Metrics_ActiveConnections"
xml:space=
"preserve"
>
<data
name=
"Metrics_ActiveConnections"
xml:space=
"preserve"
>
<value>
Active Connections
</value>
<value>
Active Connections
</value>
</data>
</data>
...
@@ -449,10 +434,22 @@
...
@@ -449,10 +434,22 @@
<data
name=
"MessagesPage_Table_Retries"
xml:space=
"preserve"
>
<data
name=
"MessagesPage_Table_Retries"
xml:space=
"preserve"
>
<value>
重试次数
</value>
<value>
重试次数
</value>
</data>
</data>
<data
name=
"
Published
Page_NoMessages"
xml:space=
"preserve"
>
<data
name=
"
Messsages
Page_NoMessages"
xml:space=
"preserve"
>
<value>
没有消息
</value>
<value>
没有消息
</value>
</data>
</data>
<data
name=
"PublishedPage_Title"
xml:space=
"preserve"
>
<data
name=
"PublishedPage_Title"
xml:space=
"preserve"
>
<value>
已发送消息
</value>
<value>
已发送消息
</value>
</data>
</data>
<data
name=
"MessagesPage_Query_MessageGroup"
xml:space=
"preserve"
>
<value>
消息分组
</value>
</data>
<data
name=
"MessagesPage_Table_Group"
xml:space=
"preserve"
>
<value>
分组
</value>
</data>
<data
name=
"ReceivedMessagesPage_Title"
xml:space=
"preserve"
>
<value>
接收的消息
</value>
</data>
<data
name=
"ReceivedPage_Title"
xml:space=
"preserve"
>
<value>
已接收消息
</value>
</data>
</root>
</root>
\ No newline at end of file
src/DotNetCore.CAP/Dashboard/DashboardRoutes.cs
View file @
e9aaf305
...
@@ -77,13 +77,18 @@ namespace DotNetCore.CAP.Dashboard
...
@@ -77,13 +77,18 @@ namespace DotNetCore.CAP.Dashboard
#
region
Razor
pages
and
commands
#
region
Razor
pages
and
commands
Routes
.
AddJsonResult
(
"/publishd/message/(?<Id>.+)"
,
x
=>
Routes
.
AddJsonResult
(
"/publish
e
d/message/(?<Id>.+)"
,
x
=>
{
{
var
id
=
int
.
Parse
(
x
.
UriMatch
.
Groups
[
"Id"
].
Value
);
var
id
=
int
.
Parse
(
x
.
UriMatch
.
Groups
[
"Id"
].
Value
);
var
message
=
x
.
Storage
.
GetConnection
().
GetPublishedMessageAsync
(
id
).
GetAwaiter
().
GetResult
();
var
message
=
x
.
Storage
.
GetConnection
().
GetPublishedMessageAsync
(
id
).
GetAwaiter
().
GetResult
();
return
message
;
return
message
.
Content
;
});
Routes
.
AddJsonResult
(
"/received/message/(?<Id>.+)"
,
x
=>
{
var
id
=
int
.
Parse
(
x
.
UriMatch
.
Groups
[
"Id"
].
Value
);
var
message
=
x
.
Storage
.
GetConnection
().
GetReceivedMessageAsync
(
id
).
GetAwaiter
().
GetResult
();
return
message
.
Content
;
});
});
//Routes.AddRazorPage("/jobs/enqueued", x => new QueuesPage());
//Routes.AddRazorPage("/jobs/enqueued", x => new QueuesPage());
//Routes.AddRazorPage(
//Routes.AddRazorPage(
// "/jobs/enqueued/fetched/(?<Queue>.+)",
// "/jobs/enqueued/fetched/(?<Queue>.+)",
...
@@ -115,14 +120,16 @@ namespace DotNetCore.CAP.Dashboard
...
@@ -115,14 +120,16 @@ namespace DotNetCore.CAP.Dashboard
// "/jobs/scheduled/delete",
// "/jobs/scheduled/delete",
// (client, jobId) => client.ChangeState(jobId, CreateDeletedState(), ScheduledState.StateName));
// (client, jobId) => client.ChangeState(jobId, CreateDeletedState(), ScheduledState.StateName));
Routes
.
AddPublishBatchCommand
(
"/published/requeue"
,
(
client
,
messageId
)
=>
client
.
Storage
.
GetConnection
().
ChangePublishedState
(
messageId
,
new
ScheduledState
()));
Routes
.
AddPublishBatchCommand
(
"/received/requeue"
,
(
client
,
messageId
)
=>
client
.
Storage
.
GetConnection
().
ChangeReceivedState
(
messageId
,
new
ScheduledState
()));
Routes
.
AddRazorPage
(
Routes
.
AddRazorPage
(
"/published/(?<StatusName>.+)"
,
"/published/(?<StatusName>.+)"
,
x
=>
new
PublishedPage
(
x
.
Groups
[
"StatusName"
].
Value
));
x
=>
new
PublishedPage
(
x
.
Groups
[
"StatusName"
].
Value
));
//Routes.AddPublishBatchCommand(
// "/published/succeeded/requeue",
// (client, jobId) => client.ChangeState(jobId, CreateEnqueuedState(), SucceededState.StateName));
Routes
.
AddRazorPage
(
Routes
.
AddRazorPage
(
"/received/(?<StatusName>.+)"
,
"/received/(?<StatusName>.+)"
,
x
=>
new
ReceivedPage
(
x
.
Groups
[
"StatusName"
].
Value
));
x
=>
new
ReceivedPage
(
x
.
Groups
[
"StatusName"
].
Value
));
...
...
src/DotNetCore.CAP/Dashboard/JsonDispatcher.cs
View file @
e9aaf305
...
@@ -10,17 +10,26 @@ namespace DotNetCore.CAP.Dashboard
...
@@ -10,17 +10,26 @@ namespace DotNetCore.CAP.Dashboard
internal
class
JsonDispatcher
:
IDashboardDispatcher
internal
class
JsonDispatcher
:
IDashboardDispatcher
{
{
private
readonly
Func
<
DashboardContext
,
object
>
_command
;
private
readonly
Func
<
DashboardContext
,
object
>
_command
;
private
readonly
Func
<
DashboardContext
,
string
>
_jsonCommand
;
public
JsonDispatcher
(
Func
<
DashboardContext
,
object
>
command
)
public
JsonDispatcher
(
Func
<
DashboardContext
,
object
>
command
)
{
{
_command
=
command
;
_command
=
command
;
}
}
public
JsonDispatcher
(
Func
<
DashboardContext
,
string
>
command
)
{
_jsonCommand
=
command
;
}
public
async
Task
Dispatch
(
DashboardContext
context
)
public
async
Task
Dispatch
(
DashboardContext
context
)
{
{
var
request
=
context
.
Request
;
var
request
=
context
.
Request
;
var
response
=
context
.
Response
;
var
response
=
context
.
Response
;
string
serialized
=
null
;
if
(
_command
!=
null
)
{
object
result
=
_command
(
context
);
object
result
=
_command
(
context
);
var
settings
=
new
JsonSerializerSettings
var
settings
=
new
JsonSerializerSettings
...
@@ -28,7 +37,13 @@ namespace DotNetCore.CAP.Dashboard
...
@@ -28,7 +37,13 @@ namespace DotNetCore.CAP.Dashboard
ContractResolver
=
new
CamelCasePropertyNamesContractResolver
(),
ContractResolver
=
new
CamelCasePropertyNamesContractResolver
(),
Converters
=
new
JsonConverter
[]
{
new
StringEnumConverter
{
CamelCaseText
=
true
}
}
Converters
=
new
JsonConverter
[]
{
new
StringEnumConverter
{
CamelCaseText
=
true
}
}
};
};
var
serialized
=
JsonConvert
.
SerializeObject
(
result
,
settings
);
serialized
=
JsonConvert
.
SerializeObject
(
result
,
settings
);
}
if
(
_jsonCommand
!=
null
)
{
serialized
=
_jsonCommand
(
context
);
}
context
.
Response
.
ContentType
=
"application/json"
;
context
.
Response
.
ContentType
=
"application/json"
;
await
context
.
Response
.
WriteAsync
(
serialized
);
await
context
.
Response
.
WriteAsync
(
serialized
);
...
...
src/DotNetCore.CAP/Dashboard/MessagesSidebarMenu.cs
View file @
e9aaf305
...
@@ -14,19 +14,19 @@ namespace DotNetCore.CAP.Dashboard
...
@@ -14,19 +14,19 @@ namespace DotNetCore.CAP.Dashboard
static
MessagesSidebarMenu
()
static
MessagesSidebarMenu
()
{
{
PublishedItems
.
Add
(
page
=>
new
MenuItem
(
Strings
.
Messages
SidebarMenu_Succeeded
,
page
.
Url
.
To
(
"/published/succeeded"
))
PublishedItems
.
Add
(
page
=>
new
MenuItem
(
Strings
.
SidebarMenu_Succeeded
,
page
.
Url
.
To
(
"/published/succeeded"
))
{
{
Active
=
page
.
RequestPath
.
StartsWith
(
"/published/succeeded"
),
Active
=
page
.
RequestPath
.
StartsWith
(
"/published/succeeded"
),
Metric
=
DashboardMetrics
.
PublishedSucceededCount
Metric
=
DashboardMetrics
.
PublishedSucceededCount
});
});
PublishedItems
.
Add
(
page
=>
new
MenuItem
(
Strings
.
Messages
SidebarMenu_Processing
,
page
.
Url
.
To
(
"/published/processing"
))
PublishedItems
.
Add
(
page
=>
new
MenuItem
(
Strings
.
SidebarMenu_Processing
,
page
.
Url
.
To
(
"/published/processing"
))
{
{
Active
=
page
.
RequestPath
.
StartsWith
(
"/published/processing"
),
Active
=
page
.
RequestPath
.
StartsWith
(
"/published/processing"
),
Metric
=
DashboardMetrics
.
PublishedProcessingCount
Metric
=
DashboardMetrics
.
PublishedProcessingCount
});
});
PublishedItems
.
Add
(
page
=>
new
MenuItem
(
Strings
.
Messages
SidebarMenu_Failed
,
page
.
Url
.
To
(
"/published/failed"
))
PublishedItems
.
Add
(
page
=>
new
MenuItem
(
Strings
.
SidebarMenu_Failed
,
page
.
Url
.
To
(
"/published/failed"
))
{
{
Active
=
page
.
RequestPath
.
StartsWith
(
"/published/failed"
),
Active
=
page
.
RequestPath
.
StartsWith
(
"/published/failed"
),
Metric
=
DashboardMetrics
.
PublishedFailedCount
Metric
=
DashboardMetrics
.
PublishedFailedCount
...
@@ -34,19 +34,19 @@ namespace DotNetCore.CAP.Dashboard
...
@@ -34,19 +34,19 @@ namespace DotNetCore.CAP.Dashboard
//=======================================ReceivedItems=============================
//=======================================ReceivedItems=============================
ReceivedItems
.
Add
(
page
=>
new
MenuItem
(
Strings
.
Messages
SidebarMenu_Succeeded
,
page
.
Url
.
To
(
"/received/succeeded"
))
ReceivedItems
.
Add
(
page
=>
new
MenuItem
(
Strings
.
SidebarMenu_Succeeded
,
page
.
Url
.
To
(
"/received/succeeded"
))
{
{
Active
=
page
.
RequestPath
.
StartsWith
(
"/received/succeeded"
),
Active
=
page
.
RequestPath
.
StartsWith
(
"/received/succeeded"
),
Metric
=
DashboardMetrics
.
ReceivedSucceededCount
Metric
=
DashboardMetrics
.
ReceivedSucceededCount
});
});
ReceivedItems
.
Add
(
page
=>
new
MenuItem
(
Strings
.
Messages
SidebarMenu_Processing
,
page
.
Url
.
To
(
"/received/processing"
))
ReceivedItems
.
Add
(
page
=>
new
MenuItem
(
Strings
.
SidebarMenu_Processing
,
page
.
Url
.
To
(
"/received/processing"
))
{
{
Active
=
page
.
RequestPath
.
StartsWith
(
"/received/processing"
),
Active
=
page
.
RequestPath
.
StartsWith
(
"/received/processing"
),
Metric
=
DashboardMetrics
.
ReceivedProcessingCount
Metric
=
DashboardMetrics
.
ReceivedProcessingCount
});
});
ReceivedItems
.
Add
(
page
=>
new
MenuItem
(
Strings
.
Messages
SidebarMenu_Failed
,
page
.
Url
.
To
(
"/received/failed"
))
ReceivedItems
.
Add
(
page
=>
new
MenuItem
(
Strings
.
SidebarMenu_Failed
,
page
.
Url
.
To
(
"/received/failed"
))
{
{
Active
=
page
.
RequestPath
.
StartsWith
(
"/received/failed"
),
Active
=
page
.
RequestPath
.
StartsWith
(
"/received/failed"
),
Metric
=
DashboardMetrics
.
ReceivedFailedCount
Metric
=
DashboardMetrics
.
ReceivedFailedCount
...
...
src/DotNetCore.CAP/Dashboard/Monitoring/MessageQueryDto.cs
View file @
e9aaf305
...
@@ -9,6 +9,7 @@ namespace DotNetCore.CAP.Dashboard.Monitoring
...
@@ -9,6 +9,7 @@ namespace DotNetCore.CAP.Dashboard.Monitoring
{
{
public
MessageType
MessageType
{
get
;
set
;
}
public
MessageType
MessageType
{
get
;
set
;
}
public
string
Group
{
get
;
set
;
}
public
string
Name
{
get
;
set
;
}
public
string
Name
{
get
;
set
;
}
public
string
Content
{
get
;
set
;
}
public
string
Content
{
get
;
set
;
}
...
...
src/DotNetCore.CAP/Dashboard/Pages/PublishedPage.cshtml
View file @
e9aaf305
...
@@ -7,7 +7,7 @@
...
@@ -7,7 +7,7 @@
@using DotNetCore.CAP.Dashboard.Resources
@using DotNetCore.CAP.Dashboard.Resources
@inherits RazorPage
@inherits RazorPage
@{
@{
Layout = new LayoutPage(Strings.
Succeed
edMessagesPage_Title);
Layout = new LayoutPage(Strings.
Publish
edMessagesPage_Title);
int from, perPage;
int from, perPage;
...
@@ -40,7 +40,7 @@
...
@@ -40,7 +40,7 @@
@if (succeededMessages.Count == 0)
@if (succeededMessages.Count == 0)
{
{
<div class="alert alert-info">
<div class="alert alert-info">
@Strings.
Published
Page_NoMessages
@Strings.
Messages
Page_NoMessages
</div>
</div>
}
}
else
else
...
...
src/DotNetCore.CAP/Dashboard/Pages/PublishedPage1.generated.cs
View file @
e9aaf305
...
@@ -73,7 +73,7 @@ WriteLiteral("\r\n");
...
@@ -73,7 +73,7 @@ WriteLiteral("\r\n");
#
line
9
"..\..\Dashboard\Pages\PublishedPage.cshtml"
#
line
9
"..\..\Dashboard\Pages\PublishedPage.cshtml"
Layout
=
new
LayoutPage
(
Strings
.
Succeed
edMessagesPage_Title
);
Layout
=
new
LayoutPage
(
Strings
.
Publish
edMessagesPage_Title
);
int
from
,
perPage
;
int
from
,
perPage
;
...
@@ -130,8 +130,17 @@ WriteLiteral("</h1>\r\n\r\n");
...
@@ -130,8 +130,17 @@ WriteLiteral("</h1>\r\n\r\n");
#
line
default
#
line
default
#
line
hidden
#
line
hidden
WriteLiteral
(
" <div class=\"alert alert-info\">\r\n 没有消息\r\n </d"
+
WriteLiteral
(
" <div class=\"alert alert-info\">\r\n "
);
"iv>\r\n"
);
#
line
43
"..\..\Dashboard\Pages\PublishedPage.cshtml"
Write
(
Strings
.
MessagesPage_NoMessages
);
#
line
default
#
line
hidden
WriteLiteral
(
"\r\n </div>\r\n"
);
...
...
src/DotNetCore.CAP/Dashboard/Pages/ReceivedPage.cshtml
View file @
e9aaf305
...
@@ -7,12 +7,13 @@
...
@@ -7,12 +7,13 @@
@using DotNetCore.CAP.Dashboard.Resources
@using DotNetCore.CAP.Dashboard.Resources
@inherits RazorPage
@inherits RazorPage
@{
@{
Layout = new LayoutPage(Strings.
Succeed
edMessagesPage_Title);
Layout = new LayoutPage(Strings.
Receiv
edMessagesPage_Title);
int from, perPage;
int from, perPage;
int.TryParse(Query("from"), out from);
int.TryParse(Query("from"), out from);
int.TryParse(Query("count"), out perPage);
int.TryParse(Query("count"), out perPage);
string group = Query("group");
string name = Query("name");
string name = Query("name");
string content = Query("content");
string content = Query("content");
...
@@ -21,6 +22,7 @@
...
@@ -21,6 +22,7 @@
var queryDto = new MessageQueryDto
var queryDto = new MessageQueryDto
{
{
MessageType = MessageType.Subscribe,
MessageType = MessageType.Subscribe,
Group =group,
Name = name,
Name = name,
Content = content,
Content = content,
StatusName = StatusName,
StatusName = StatusName,
...
@@ -35,12 +37,12 @@
...
@@ -35,12 +37,12 @@
@Html.JobsSidebar(MessageType.Subscribe)
@Html.JobsSidebar(MessageType.Subscribe)
</div>
</div>
<div class="col-md-9">
<div class="col-md-9">
<h1 class="page-header">@Strings.
SucceededMessages
Page_Title</h1>
<h1 class="page-header">@Strings.
Received
Page_Title</h1>
@if (succeededMessages.Count == 0)
@if (succeededMessages.Count == 0)
{
{
<div class="alert alert-info">
<div class="alert alert-info">
@Strings.
SucceededJobsPage_NoJob
s
@Strings.
MessagesPage_NoMessage
s
</div>
</div>
}
}
else
else
...
@@ -48,14 +50,17 @@
...
@@ -48,14 +50,17 @@
<div class="js-jobs-list">
<div class="js-jobs-list">
<div class="btn-toolbar btn-toolbar-top">
<div class="btn-toolbar btn-toolbar-top">
<form class="row">
<form class="row">
<span class="col-md-2">
<input type="text" class="form-control" name="name" value="@Query("group")" placeholder="@Strings.MessagesPage_Query_MessageGroup" />
</span>
<span class="col-md-3">
<span class="col-md-3">
<input type="text" class="form-control" name="name" value="@Query("name")" placeholder="
消息名称
" />
<input type="text" class="form-control" name="name" value="@Query("name")" placeholder="
@Strings.MessagesPage_Query_MessageName
" />
</span>
</span>
<div class="col-md-5">
<div class="col-md-5">
<div class="input-group">
<div class="input-group">
<input type="text" class="form-control" name="content" value="@Query("content")" placeholder="
消息内容
" />
<input type="text" class="form-control" name="content" value="@Query("content")" placeholder="
@Strings.MessagesPage_Query_MessageBody
" />
<span class="input-group-btn">
<span class="input-group-btn">
<button class="btn btn-info">
查找
</button>
<button class="btn btn-info">
@Strings.MessagesPage_Query_Button
</button>
</span>
</span>
</div>
</div>
</div>
</div>
...
@@ -80,10 +85,11 @@
...
@@ -80,10 +85,11 @@
<th style="width:60px;">
<th style="width:60px;">
<input type="checkbox" class="js-jobs-list-select-all" />
<input type="checkbox" class="js-jobs-list-select-all" />
</th>
</th>
<th>名称</th>
<th>@Strings.MessagesPage_Table_Code</th>
<th>内容</th>
<th>@Strings.MessagesPage_Table_Group</th>
<th class="min-width">重试次数</th>
<th>@Strings.MessagesPage_Table_Name</th>
<th class="min-width align-right">过期时间</th>
<th class="min-width">@Strings.MessagesPage_Table_Retries</th>
<th class="align-right">@Strings.MessagesPage_Table_ExpiresAt</th>
</tr>
</tr>
</thead>
</thead>
<tbody>
<tbody>
...
@@ -91,13 +97,16 @@
...
@@ -91,13 +97,16 @@
{
{
<tr class="js-jobs-list-row hover">
<tr class="js-jobs-list-row hover">
<td>
<td>
<input type="checkbox" class="js-jobs-list-checkbox" name="
job
s[]" value="@message.Id" />
<input type="checkbox" class="js-jobs-list-checkbox" name="
message
s[]" value="@message.Id" />
</td>
</td>
<td class="word-break">
<td class="word-break">
@message.Name
<a href="javascript:;" data-url='@(Url.To("/received/message/")+message.Id)' class="openModal">#@message.Id</a>
</td>
<td>
@message.Group
</td>
</td>
<td>
<td>
@message.
Content
@message.
Name
</td>
</td>
<td>
<td>
@message.Retries
@message.Retries
...
@@ -108,6 +117,7 @@
...
@@ -108,6 +117,7 @@
@Html.RelativeTime(message.ExpiresAt.Value)
@Html.RelativeTime(message.ExpiresAt.Value)
}
}
</td>
</td>
</tr>
</tr>
}
}
</tbody>
</tbody>
...
@@ -115,6 +125,27 @@
...
@@ -115,6 +125,27 @@
</div>
</div>
@Html.Paginator(pager)
@Html.Paginator(pager)
</div>
</div>
<div>
<div class="modal fade" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
<h4 class="modal-title">Message Content</h4>
</div>
<div id="jsonContent" style="max-height:500px;overflow-y:auto;" class="modal-body">
</div>
<div class="modal-footer">
<button type="button" class="btn btn-sm btn-primary" id="formatBtn" onclick="">@Strings.MessagesPage_Modal_Format</button>
<button type="button" class="btn btn-sm btn-primary" id="rawBtn" onclick="">@Strings.MessagesPage_Modal_Raw</button>
<button type="button" class="btn btn-sm btn-primary" id="expandBtn" onclick="">@Strings.MessagesPage_Modal_Expand</button>
<button type="button" class="btn btn-sm btn-primary" id="collapseBtn" onclick="">@Strings.MessagesPage_Model_Collaspse</button>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div><!-- /.modal -->
</div>
}
}
</div>
</div>
</div>
</div>
\ No newline at end of file
src/DotNetCore.CAP/Dashboard/Pages/ReceivedPage.generated.cs
View file @
e9aaf305
This diff is collapsed.
Click to expand it.
src/DotNetCore.CAP/Dashboard/RouteCollectionExtensions.cs
View file @
e9aaf305
...
@@ -41,10 +41,22 @@ namespace DotNetCore.CAP.Dashboard
...
@@ -41,10 +41,22 @@ namespace DotNetCore.CAP.Dashboard
routes
.
Add
(
pathTemplate
,
new
JsonDispatcher
(
func
));
routes
.
Add
(
pathTemplate
,
new
JsonDispatcher
(
func
));
}
}
public
static
void
AddJsonResult
(
this
RouteCollection
routes
,
string
pathTemplate
,
Func
<
DashboardContext
,
string
>
Jsonfunc
)
{
if
(
routes
==
null
)
throw
new
ArgumentNullException
(
nameof
(
routes
));
if
(
pathTemplate
==
null
)
throw
new
ArgumentNullException
(
nameof
(
pathTemplate
));
if
(
Jsonfunc
==
null
)
throw
new
ArgumentNullException
(
nameof
(
Jsonfunc
));
routes
.
Add
(
pathTemplate
,
new
JsonDispatcher
(
Jsonfunc
));
}
public
static
void
AddPublishBatchCommand
(
public
static
void
AddPublishBatchCommand
(
this
RouteCollection
routes
,
this
RouteCollection
routes
,
string
pathTemplate
,
string
pathTemplate
,
Action
<
DashboardContext
,
string
>
command
)
Action
<
DashboardContext
,
int
>
command
)
{
{
if
(
routes
==
null
)
throw
new
ArgumentNullException
(
nameof
(
routes
));
if
(
routes
==
null
)
throw
new
ArgumentNullException
(
nameof
(
routes
));
if
(
pathTemplate
==
null
)
throw
new
ArgumentNullException
(
nameof
(
pathTemplate
));
if
(
pathTemplate
==
null
)
throw
new
ArgumentNullException
(
nameof
(
pathTemplate
));
...
...
src/DotNetCore.CAP/DotNetCore.CAP.csproj
View file @
e9aaf305
...
@@ -60,4 +60,20 @@
...
@@ -60,4 +60,20 @@
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="2.0.0" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="2.0.0" />
</ItemGroup>
</ItemGroup>
<ItemGroup>
<Compile Update="Dashboard\Content\resx\Strings.Designer.cs">
<DesignTime>True</DesignTime>
<AutoGen>True</AutoGen>
<DependentUpon>Strings.resx</DependentUpon>
</Compile>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Update="Dashboard\Content\resx\Strings.resx">
<Generator>PublicResXFileCodeGenerator</Generator>
<CustomToolNamespace>DotNetCore.CAP.Dashboard.Resources</CustomToolNamespace>
<LastGenOutput>Strings.Designer.cs</LastGenOutput>
</EmbeddedResource>
</ItemGroup>
</Project>
</Project>
src/DotNetCore.CAP/IStorageConnection.cs
View file @
e9aaf305
...
@@ -2,6 +2,7 @@ using System;
...
@@ -2,6 +2,7 @@ using System;
using
System.Collections.Generic
;
using
System.Collections.Generic
;
using
System.Threading.Tasks
;
using
System.Threading.Tasks
;
using
DotNetCore.CAP.Models
;
using
DotNetCore.CAP.Models
;
using
DotNetCore.CAP.Processor.States
;
namespace
DotNetCore.CAP
namespace
DotNetCore.CAP
{
{
...
@@ -64,8 +65,11 @@ namespace DotNetCore.CAP
...
@@ -64,8 +65,11 @@ namespace DotNetCore.CAP
/// </summary>
/// </summary>
IStorageTransaction
CreateTransaction
();
IStorageTransaction
CreateTransaction
();
//-------------------------------------------
//-------------------------------------------
bool
ChangePublishedState
(
int
messageId
,
IState
state
);
bool
ChangeReceivedState
(
int
messageId
,
IState
state
);
long
GetSetCount
(
string
key
);
long
GetSetCount
(
string
key
);
List
<
string
>
GetRangeFromSet
(
string
key
,
int
startingFrom
,
int
endingAt
);
List
<
string
>
GetRangeFromSet
(
string
key
,
int
startingFrom
,
int
endingAt
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment