Commit e9aaf305 authored by yangxiaodong's avatar yangxiaodong

update dashboard.

parent 675e3c19
...@@ -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("jobs[]"); var messageIds = await context.Request.GetFormValuesAsync("messages[]");
if (jobIds.Count == 0) if (messageIds.Count == 0)
{ {
context.Response.StatusCode = 422; context.Response.StatusCode = 422;
return; return;
} }
foreach (var jobId in jobIds) foreach (var messageId in messageIds)
{ {
_command(context, jobId); var id = int.Parse(messageId);
_command(context, id);
} }
context.Response.StatusCode = (int)HttpStatusCode.NoContent; context.Response.StatusCode = (int)HttpStatusCode.NoContent;
......
...@@ -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='jobs[]']:checked", container).map(function () { var jobs = $("input[name='messages[]']: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'), { 'jobs[]': jobs }, function () { $.post($this.data('url'), { 'messages[]': 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
...@@ -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 PublishedPage_NoMessages { public static string PublishedMessagesPage_Title {
get { get {
return ResourceManager.GetString("PublishedPage_NoMessages", resourceCulture); return ResourceManager.GetString("PublishedMessagesPage_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 SucceededMessagesPage_Title { public static string SidebarMenu_Succeeded {
get { get {
return ResourceManager.GetString("SucceededMessagesPage_Title", resourceCulture); return ResourceManager.GetString("SidebarMenu_Succeeded", resourceCulture);
} }
} }
} }
......
...@@ -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="SucceededMessagesPage_Title" xml:space="preserve"> <data name="PublishedMessagesPage_Title" xml:space="preserve">
<value>Succeeded Messages</value> <value>Published 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="JobsSidebarMenu_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="PublishedPage_NoMessages" xml:space="preserve"> <data name="MessagesPage_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
...@@ -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="JobsSidebarMenu_Failed" xml:space="preserve"> <data name="SidebarMenu_Failed" xml:space="preserve">
<value>失败</value> <value>失败</value>
</data> </data>
<data name="JobsSidebarMenu_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="PublishedPage_NoMessages" xml:space="preserve"> <data name="MesssagesPage_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
...@@ -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("/published/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));
......
...@@ -10,25 +10,40 @@ namespace DotNetCore.CAP.Dashboard ...@@ -10,25 +10,40 @@ 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;
object result = _command(context); string serialized = null;
if (_command != null)
var settings = new JsonSerializerSettings {
object result = _command(context);
var settings = new JsonSerializerSettings
{
ContractResolver = new CamelCasePropertyNamesContractResolver(),
Converters = new JsonConverter[] { new StringEnumConverter { CamelCaseText = true } }
};
serialized = JsonConvert.SerializeObject(result, settings);
}
if (_jsonCommand != null)
{ {
ContractResolver = new CamelCasePropertyNamesContractResolver(), serialized = _jsonCommand(context);
Converters = new JsonConverter[] { new StringEnumConverter { CamelCaseText = true } } }
};
var serialized = JsonConvert.SerializeObject(result, settings);
context.Response.ContentType = "application/json"; context.Response.ContentType = "application/json";
await context.Response.WriteAsync(serialized); await context.Response.WriteAsync(serialized);
......
...@@ -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.MessagesSidebarMenu_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.MessagesSidebarMenu_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.MessagesSidebarMenu_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.MessagesSidebarMenu_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.MessagesSidebarMenu_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.MessagesSidebarMenu_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
......
...@@ -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; }
......
...@@ -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.SucceededMessagesPage_Title); Layout = new LayoutPage(Strings.PublishedMessagesPage_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.PublishedPage_NoMessages @Strings.MessagesPage_NoMessages
</div> </div>
} }
else else
......
...@@ -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.SucceededMessagesPage_Title); Layout = new LayoutPage(Strings.PublishedMessagesPage_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");
......
...@@ -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.SucceededMessagesPage_Title); Layout = new LayoutPage(Strings.ReceivedMessagesPage_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,10 +22,11 @@ ...@@ -21,10 +22,11 @@
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,
CurrentPage = pager.CurrentPage - 1, CurrentPage = pager.CurrentPage - 1,
PageSize = pager.RecordsPerPage PageSize = pager.RecordsPerPage
}; };
var succeededMessages = monitor.Messages(queryDto); var succeededMessages = monitor.Messages(queryDto);
...@@ -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.SucceededMessagesPage_Title</h1> <h1 class="page-header">@Strings.ReceivedPage_Title</h1>
@if (succeededMessages.Count == 0) @if (succeededMessages.Count == 0)
{ {
<div class="alert alert-info"> <div class="alert alert-info">
@Strings.SucceededJobsPage_NoJobs @Strings.MessagesPage_NoMessages
</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="jobs[]" value="@message.Id" /> <input type="checkbox" class="js-jobs-list-checkbox" name="messages[]" 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">&times;</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
...@@ -73,12 +73,13 @@ WriteLiteral("\r\n"); ...@@ -73,12 +73,13 @@ WriteLiteral("\r\n");
#line 9 "..\..\Dashboard\Pages\ReceivedPage.cshtml" #line 9 "..\..\Dashboard\Pages\ReceivedPage.cshtml"
Layout = new LayoutPage(Strings.SucceededMessagesPage_Title); Layout = new LayoutPage(Strings.ReceivedMessagesPage_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");
...@@ -87,10 +88,11 @@ WriteLiteral("\r\n"); ...@@ -87,10 +88,11 @@ WriteLiteral("\r\n");
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,
CurrentPage = pager.CurrentPage - 1, CurrentPage = pager.CurrentPage - 1,
PageSize = pager.RecordsPerPage PageSize = pager.RecordsPerPage
}; };
var succeededMessages = monitor.Messages(queryDto); var succeededMessages = monitor.Messages(queryDto);
...@@ -103,7 +105,7 @@ WriteLiteral("\r\n<div class=\"row\">\r\n <div class=\"col-md-3\">\r\n ...@@ -103,7 +105,7 @@ WriteLiteral("\r\n<div class=\"row\">\r\n <div class=\"col-md-3\">\r\n
#line 35 "..\..\Dashboard\Pages\ReceivedPage.cshtml" #line 37 "..\..\Dashboard\Pages\ReceivedPage.cshtml"
Write(Html.JobsSidebar(MessageType.Subscribe)); Write(Html.JobsSidebar(MessageType.Subscribe));
...@@ -113,8 +115,8 @@ WriteLiteral("\r\n </div>\r\n <div class=\"col-md-9\">\r\n <h1 clas ...@@ -113,8 +115,8 @@ WriteLiteral("\r\n </div>\r\n <div class=\"col-md-9\">\r\n <h1 clas
#line 38 "..\..\Dashboard\Pages\ReceivedPage.cshtml" #line 40 "..\..\Dashboard\Pages\ReceivedPage.cshtml"
Write(Strings.SucceededMessagesPage_Title); Write(Strings.ReceivedPage_Title);
#line default #line default
...@@ -123,7 +125,7 @@ WriteLiteral("</h1>\r\n\r\n"); ...@@ -123,7 +125,7 @@ WriteLiteral("</h1>\r\n\r\n");
#line 40 "..\..\Dashboard\Pages\ReceivedPage.cshtml" #line 42 "..\..\Dashboard\Pages\ReceivedPage.cshtml"
if (succeededMessages.Count == 0) if (succeededMessages.Count == 0)
{ {
...@@ -134,8 +136,8 @@ WriteLiteral(" <div class=\"alert alert-info\">\r\n ") ...@@ -134,8 +136,8 @@ WriteLiteral(" <div class=\"alert alert-info\">\r\n ")
#line 43 "..\..\Dashboard\Pages\ReceivedPage.cshtml" #line 45 "..\..\Dashboard\Pages\ReceivedPage.cshtml"
Write(Strings.SucceededJobsPage_NoJobs); Write(Strings.MessagesPage_NoMessages);
#line default #line default
...@@ -144,7 +146,7 @@ WriteLiteral("\r\n </div>\r\n"); ...@@ -144,7 +146,7 @@ WriteLiteral("\r\n </div>\r\n");
#line 45 "..\..\Dashboard\Pages\ReceivedPage.cshtml" #line 47 "..\..\Dashboard\Pages\ReceivedPage.cshtml"
} }
else else
{ {
...@@ -155,33 +157,83 @@ WriteLiteral("\r\n </div>\r\n"); ...@@ -155,33 +157,83 @@ WriteLiteral("\r\n </div>\r\n");
WriteLiteral(@" <div class=""js-jobs-list""> WriteLiteral(@" <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-3""> <span class=""col-md-2"">
<input type=""text"" class=""form-control"" name=""name"" value="""); <input type=""text"" class=""form-control"" name=""name"" value=""");
#line 52 "..\..\Dashboard\Pages\ReceivedPage.cshtml" #line 54 "..\..\Dashboard\Pages\ReceivedPage.cshtml"
Write(Query("group"));
#line default
#line hidden
WriteLiteral("\" placeholder=\"");
#line 54 "..\..\Dashboard\Pages\ReceivedPage.cshtml"
Write(Strings.MessagesPage_Query_MessageGroup);
#line default
#line hidden
WriteLiteral("\" />\r\n </span>\r\n <span class=\"col-m" +
"d-3\">\r\n <input type=\"text\" class=\"form-control\" name=" +
"\"name\" value=\"");
#line 57 "..\..\Dashboard\Pages\ReceivedPage.cshtml"
Write(Query("name")); Write(Query("name"));
#line default #line default
#line hidden #line hidden
WriteLiteral("\" placeholder=\"消息名称\" />\r\n </span>\r\n " + WriteLiteral("\" placeholder=\"");
" <div class=\"col-md-5\">\r\n <div class=\"input-group\">\r\n" +
" <input type=\"text\" class=\"form-control\" name=\"co" +
"ntent\" value=\"");
#line 56 "..\..\Dashboard\Pages\ReceivedPage.cshtml" #line 57 "..\..\Dashboard\Pages\ReceivedPage.cshtml"
Write(Strings.MessagesPage_Query_MessageName);
#line default
#line hidden
WriteLiteral("\" />\r\n </span>\r\n <div class=\"col-md" +
"-5\">\r\n <div class=\"input-group\">\r\n " +
" <input type=\"text\" class=\"form-control\" name=\"content\" value=\"");
#line 61 "..\..\Dashboard\Pages\ReceivedPage.cshtml"
Write(Query("content")); Write(Query("content"));
#line default #line default
#line hidden #line hidden
WriteLiteral(@""" placeholder=""消息内容"" /> WriteLiteral("\" placeholder=\"");
<span class=""input-group-btn"">
<button class=""btn btn-info"">查找</button>
#line 61 "..\..\Dashboard\Pages\ReceivedPage.cshtml"
Write(Strings.MessagesPage_Query_MessageBody);
#line default
#line hidden
WriteLiteral("\" />\r\n <span class=\"input-group-btn\">\r\n " +
" <button class=\"btn btn-info\">");
#line 63 "..\..\Dashboard\Pages\ReceivedPage.cshtml"
Write(Strings.MessagesPage_Query_Button);
#line default
#line hidden
WriteLiteral(@"</button>
</span> </span>
</div> </div>
</div> </div>
...@@ -193,7 +245,7 @@ WriteLiteral(@""" placeholder=""消息内容"" /> ...@@ -193,7 +245,7 @@ WriteLiteral(@""" placeholder=""消息内容"" />
#line 66 "..\..\Dashboard\Pages\ReceivedPage.cshtml" #line 71 "..\..\Dashboard\Pages\ReceivedPage.cshtml"
Write(Url.To("/received/requeue")); Write(Url.To("/received/requeue"));
...@@ -203,7 +255,7 @@ WriteLiteral("\"\r\n data-loading-text=\""); ...@@ -203,7 +255,7 @@ WriteLiteral("\"\r\n data-loading-text=\"");
#line 67 "..\..\Dashboard\Pages\ReceivedPage.cshtml" #line 72 "..\..\Dashboard\Pages\ReceivedPage.cshtml"
Write(Strings.Common_Enqueueing); Write(Strings.Common_Enqueueing);
...@@ -214,7 +266,7 @@ WriteLiteral("\"\r\n disabled=\"disabled\">\r\n ...@@ -214,7 +266,7 @@ WriteLiteral("\"\r\n disabled=\"disabled\">\r\n
#line 70 "..\..\Dashboard\Pages\ReceivedPage.cshtml" #line 75 "..\..\Dashboard\Pages\ReceivedPage.cshtml"
Write(Strings.Common_RequeueJobs); Write(Strings.Common_RequeueJobs);
...@@ -224,7 +276,7 @@ WriteLiteral("\r\n </button>\r\n\r\n "); ...@@ -224,7 +276,7 @@ WriteLiteral("\r\n </button>\r\n\r\n ");
#line 73 "..\..\Dashboard\Pages\ReceivedPage.cshtml" #line 78 "..\..\Dashboard\Pages\ReceivedPage.cshtml"
Write(Html.PerPageSelector(pager)); Write(Html.PerPageSelector(pager));
...@@ -240,18 +292,62 @@ WriteLiteral(@" ...@@ -240,18 +292,62 @@ WriteLiteral(@"
<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>");
<th>内容</th>
<th class=""min-width"">重试次数</th>
<th class=""min-width align-right"">过期时间</th>
</tr> #line 88 "..\..\Dashboard\Pages\ReceivedPage.cshtml"
</thead> Write(Strings.MessagesPage_Table_Code);
<tbody>
");
#line default
#line hidden
WriteLiteral("</th>\r\n <th>");
#line 89 "..\..\Dashboard\Pages\ReceivedPage.cshtml"
Write(Strings.MessagesPage_Table_Group);
#line default
#line hidden
WriteLiteral("</th>\r\n <th>");
#line 90 "..\..\Dashboard\Pages\ReceivedPage.cshtml" #line 90 "..\..\Dashboard\Pages\ReceivedPage.cshtml"
Write(Strings.MessagesPage_Table_Name);
#line default
#line hidden
WriteLiteral("</th>\r\n <th class=\"min-width\">");
#line 91 "..\..\Dashboard\Pages\ReceivedPage.cshtml"
Write(Strings.MessagesPage_Table_Retries);
#line default
#line hidden
WriteLiteral("</th>\r\n <th class=\"align-right\">");
#line 92 "..\..\Dashboard\Pages\ReceivedPage.cshtml"
Write(Strings.MessagesPage_Table_ExpiresAt);
#line default
#line hidden
WriteLiteral("</th>\r\n </tr>\r\n </thead>\r\n " +
" <tbody>\r\n");
#line 96 "..\..\Dashboard\Pages\ReceivedPage.cshtml"
foreach (var message in succeededMessages) foreach (var message in succeededMessages)
{ {
...@@ -260,23 +356,45 @@ WriteLiteral(@" ...@@ -260,23 +356,45 @@ WriteLiteral(@"
#line hidden #line hidden
WriteLiteral(" <tr class=\"js-jobs-list-row hover\">\r\n " + WriteLiteral(" <tr class=\"js-jobs-list-row hover\">\r\n " +
" <td>\r\n <input typ" + " <td>\r\n <input typ" +
"e=\"checkbox\" class=\"js-jobs-list-checkbox\" name=\"jobs[]\" value=\""); "e=\"checkbox\" class=\"js-jobs-list-checkbox\" name=\"messages[]\" value=\"");
#line 94 "..\..\Dashboard\Pages\ReceivedPage.cshtml" #line 100 "..\..\Dashboard\Pages\ReceivedPage.cshtml"
Write(message.Id); Write(message.Id);
#line default #line default
#line hidden #line hidden
WriteLiteral("\" />\r\n </td>\r\n " + WriteLiteral("\" />\r\n </td>\r\n " +
" <td class=\"word-break\">\r\n "); " <td class=\"word-break\">\r\n <a href=\"ja" +
"vascript:;\" data-url=\'");
#line 97 "..\..\Dashboard\Pages\ReceivedPage.cshtml" #line 103 "..\..\Dashboard\Pages\ReceivedPage.cshtml"
Write(message.Name); Write(Url.To("/received/message/")+message.Id);
#line default
#line hidden
WriteLiteral("\' class=\"openModal\">#");
#line 103 "..\..\Dashboard\Pages\ReceivedPage.cshtml"
Write(message.Id);
#line default
#line hidden
WriteLiteral("</a>\r\n </td>\r\n " +
" <td>\r\n ");
#line 106 "..\..\Dashboard\Pages\ReceivedPage.cshtml"
Write(message.Group);
#line default #line default
...@@ -286,8 +404,8 @@ WriteLiteral("\r\n </td>\r\n ...@@ -286,8 +404,8 @@ WriteLiteral("\r\n </td>\r\n
#line 100 "..\..\Dashboard\Pages\ReceivedPage.cshtml" #line 109 "..\..\Dashboard\Pages\ReceivedPage.cshtml"
Write(message.Content); Write(message.Name);
#line default #line default
...@@ -297,7 +415,7 @@ WriteLiteral("\r\n </td>\r\n ...@@ -297,7 +415,7 @@ WriteLiteral("\r\n </td>\r\n
#line 103 "..\..\Dashboard\Pages\ReceivedPage.cshtml" #line 112 "..\..\Dashboard\Pages\ReceivedPage.cshtml"
Write(message.Retries); Write(message.Retries);
...@@ -308,7 +426,7 @@ WriteLiteral("\r\n </td>\r\n ...@@ -308,7 +426,7 @@ WriteLiteral("\r\n </td>\r\n
#line 106 "..\..\Dashboard\Pages\ReceivedPage.cshtml" #line 115 "..\..\Dashboard\Pages\ReceivedPage.cshtml"
if (message.ExpiresAt.HasValue) if (message.ExpiresAt.HasValue)
{ {
...@@ -316,26 +434,26 @@ WriteLiteral("\r\n </td>\r\n ...@@ -316,26 +434,26 @@ WriteLiteral("\r\n </td>\r\n
#line default #line default
#line hidden #line hidden
#line 108 "..\..\Dashboard\Pages\ReceivedPage.cshtml" #line 117 "..\..\Dashboard\Pages\ReceivedPage.cshtml"
Write(Html.RelativeTime(message.ExpiresAt.Value)); Write(Html.RelativeTime(message.ExpiresAt.Value));
#line default #line default
#line hidden #line hidden
#line 108 "..\..\Dashboard\Pages\ReceivedPage.cshtml" #line 117 "..\..\Dashboard\Pages\ReceivedPage.cshtml"
} }
#line default #line default
#line hidden #line hidden
WriteLiteral(" </td>\r\n </tr>\r" + WriteLiteral(" </td>\r\n\r\n </tr" +
"\n"); ">\r\n");
#line 112 "..\..\Dashboard\Pages\ReceivedPage.cshtml" #line 122 "..\..\Dashboard\Pages\ReceivedPage.cshtml"
} }
...@@ -346,7 +464,7 @@ WriteLiteral(" </tbody>\r\n </table>\r ...@@ -346,7 +464,7 @@ WriteLiteral(" </tbody>\r\n </table>\r
#line 116 "..\..\Dashboard\Pages\ReceivedPage.cshtml" #line 126 "..\..\Dashboard\Pages\ReceivedPage.cshtml"
Write(Html.Paginator(pager)); Write(Html.Paginator(pager));
...@@ -356,7 +474,73 @@ WriteLiteral("\r\n </div>\r\n"); ...@@ -356,7 +474,73 @@ WriteLiteral("\r\n </div>\r\n");
#line 118 "..\..\Dashboard\Pages\ReceivedPage.cshtml" #line 128 "..\..\Dashboard\Pages\ReceivedPage.cshtml"
#line default
#line hidden
WriteLiteral(@" <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"">&times;</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="""">");
#line 140 "..\..\Dashboard\Pages\ReceivedPage.cshtml"
Write(Strings.MessagesPage_Modal_Format);
#line default
#line hidden
WriteLiteral("</button>\r\n <button type=\"button\" class=\"btn btn-s" +
"m btn-primary\" id=\"rawBtn\" onclick=\"\">");
#line 141 "..\..\Dashboard\Pages\ReceivedPage.cshtml"
Write(Strings.MessagesPage_Modal_Raw);
#line default
#line hidden
WriteLiteral("</button>\r\n <button type=\"button\" class=\"btn btn-s" +
"m btn-primary\" id=\"expandBtn\" onclick=\"\">");
#line 142 "..\..\Dashboard\Pages\ReceivedPage.cshtml"
Write(Strings.MessagesPage_Modal_Expand);
#line default
#line hidden
WriteLiteral("</button>\r\n <button type=\"button\" class=\"btn btn-s" +
"m btn-primary\" id=\"collapseBtn\" onclick=\"\">");
#line 143 "..\..\Dashboard\Pages\ReceivedPage.cshtml"
Write(Strings.MessagesPage_Model_Collaspse);
#line default
#line hidden
WriteLiteral("</button>\r\n </div>\r\n </div><!--" +
" /.modal-content -->\r\n </div><!-- /.modal-dialog -->\r\n " +
" </div><!-- /.modal -->\r\n </div>\r\n");
#line 149 "..\..\Dashboard\Pages\ReceivedPage.cshtml"
} }
......
...@@ -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));
......
...@@ -59,5 +59,21 @@ ...@@ -59,5 +59,21 @@
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="2.0.0" /> <PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="2.0.0" />
<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>
...@@ -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);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment