event log UI improvements
This commit is contained in:
		
							
								
								
									
										179
									
								
								Oqtane.Client/Modules/Admin/Logs/Detail.razor
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										179
									
								
								Oqtane.Client/Modules/Admin/Logs/Detail.razor
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,179 @@ | ||||
| @namespace Oqtane.Modules.Admin.Logs | ||||
| @inherits ModuleBase | ||||
| @inject NavigationManager NavigationManager | ||||
| @inject ILogService LogService | ||||
| @inject IPageService PageService | ||||
| @inject IPageModuleService PageModuleService | ||||
| @inject IUserService UserService | ||||
|  | ||||
| <table class="table table-borderless"> | ||||
|     <tr> | ||||
|         <td> | ||||
|             <label class="control-label">Date: </label> | ||||
|         </td> | ||||
|         <td> | ||||
|             <input class="form-control" @bind="@logdate" disabled /> | ||||
|         </td> | ||||
|     </tr> | ||||
|     <tr> | ||||
|         <td> | ||||
|             <label class="control-label">Category: </label> | ||||
|         </td> | ||||
|         <td> | ||||
|             <input class="form-control" @bind="@category" disabled /> | ||||
|         </td> | ||||
|     </tr> | ||||
|     <tr> | ||||
|         <td> | ||||
|             <label class="control-label">Level: </label> | ||||
|         </td> | ||||
|         <td> | ||||
|             <input class="form-control" @bind="@level" disabled /> | ||||
|         </td> | ||||
|     </tr> | ||||
|     @if (pagename != "") | ||||
|     { | ||||
|         <tr> | ||||
|             <td> | ||||
|                 <label class="control-label">Page: </label> | ||||
|             </td> | ||||
|             <td> | ||||
|                 <input class="form-control" @bind="@pagename" disabled /> | ||||
|             </td> | ||||
|         </tr> | ||||
|     } | ||||
|     @if (moduletitle != "") | ||||
|     { | ||||
|         <tr> | ||||
|             <td> | ||||
|                 <label class="control-label">Module: </label> | ||||
|             </td> | ||||
|             <td> | ||||
|                 <input class="form-control" @bind="@moduletitle" disabled /> | ||||
|             </td> | ||||
|         </tr> | ||||
|     } | ||||
|     @if (username != "") | ||||
|     { | ||||
|         <tr> | ||||
|             <td> | ||||
|                 <label class="control-label">User: </label> | ||||
|             </td> | ||||
|             <td> | ||||
|                 <input class="form-control" @bind="@username" disabled /> | ||||
|             </td> | ||||
|         </tr> | ||||
|     } | ||||
|     <tr> | ||||
|         <td> | ||||
|             <label class="control-label">Template: </label> | ||||
|         </td> | ||||
|         <td> | ||||
|             <input class="form-control" @bind="@template" disabled /> | ||||
|         </td> | ||||
|     </tr> | ||||
|     <tr> | ||||
|         <td> | ||||
|             <label class="control-label">Message: </label> | ||||
|         </td> | ||||
|         <td> | ||||
|             <textarea class="form-control" @bind="@message" rows="5" disabled /> | ||||
|         </td> | ||||
|     </tr> | ||||
|     @if (!string.IsNullOrEmpty(exception)) | ||||
|     { | ||||
|         <tr> | ||||
|             <td> | ||||
|                 <label class="control-label">Exception: </label> | ||||
|             </td> | ||||
|             <td> | ||||
|                 <textarea class="form-control" @bind="@exception" rows="5" disabled /> | ||||
|             </td> | ||||
|         </tr> | ||||
|     } | ||||
|     <tr> | ||||
|         <td> | ||||
|             <label class="control-label">Properties: </label> | ||||
|         </td> | ||||
|         <td> | ||||
|             <textarea class="form-control" @bind="@properties" rows="5" disabled /> | ||||
|         </td> | ||||
|     </tr> | ||||
|     <tr> | ||||
|         <td> | ||||
|             <label class="control-label">Server: </label> | ||||
|         </td> | ||||
|         <td> | ||||
|             <input class="form-control" @bind="@server" disabled /> | ||||
|         </td> | ||||
|     </tr> | ||||
| </table> | ||||
| <NavLink class="btn btn-secondary" href="@NavigateUrl()">Cancel</NavLink> | ||||
|  | ||||
| @code { | ||||
|     public override SecurityAccessLevel SecurityAccessLevel { get { return SecurityAccessLevel.Admin; } } | ||||
|  | ||||
|     int logid; | ||||
|     string logdate = ""; | ||||
|     string category = ""; | ||||
|     string level = ""; | ||||
|     string pagename = ""; | ||||
|     string moduletitle = ""; | ||||
|     string username = ""; | ||||
|     string url = ""; | ||||
|     string template = ""; | ||||
|     string message = ""; | ||||
|     string exception = ""; | ||||
|     string properties = ""; | ||||
|     string server = ""; | ||||
|  | ||||
|     protected override async Task OnInitializedAsync() | ||||
|     { | ||||
|         try | ||||
|         { | ||||
|             logid = Int32.Parse(PageState.QueryString["id"]); | ||||
|             Log log = await LogService.GetLogAsync(logid); | ||||
|             if (log != null) | ||||
|             { | ||||
|                 logdate = log.LogDate.ToString(); | ||||
|                 category = log.Category; | ||||
|                 level = log.Level; | ||||
|                 if (log.PageId != null) | ||||
|                 { | ||||
|                     Page page = await PageService.GetPageAsync(log.PageId.Value); | ||||
|                     if (page != null) | ||||
|                     { | ||||
|                         pagename = page.Name; | ||||
|                     } | ||||
|                 } | ||||
|                 if (log.PageId != null && log.ModuleId != null) | ||||
|                 { | ||||
|                     PageModule pagemodule = await PageModuleService.GetPageModuleAsync(log.PageId.Value, log.ModuleId.Value); | ||||
|                     if (pagemodule != null) | ||||
|                     { | ||||
|                         moduletitle = pagemodule.Title; | ||||
|                     } | ||||
|                 } | ||||
|                 if (log.UserId != null) | ||||
|                 { | ||||
|                     User user = await UserService.GetUserAsync(log.UserId.Value, PageState.Site.SiteId); | ||||
|                     if (user != null) | ||||
|                     { | ||||
|                         username = user.Username; | ||||
|                     } | ||||
|                 } | ||||
|                 url = log.Url; | ||||
|                 template = log.MessageTemplate; | ||||
|                 message = log.Message; | ||||
|                 exception = log.Exception; | ||||
|                 properties = log.Properties; | ||||
|                 server = log.Server; | ||||
|             } | ||||
|         } | ||||
|         catch (Exception ex) | ||||
|         { | ||||
|             await logger.LogError(ex, "Error Loading Log {LogId} {Error}", logid, ex.Message); | ||||
|             AddModuleMessage("Error Loading Log", MessageType.Error); | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @ -8,20 +8,36 @@ | ||||
| } | ||||
| else | ||||
| { | ||||
|     <div class="form-group"> | ||||
|         <label>Level: </label> | ||||
|         <select class="form-control" @onchange="(e => LevelChanged(e))"> | ||||
|             <option value="-"><All Levels></option> | ||||
|             <option value="Trace">Trace</option> | ||||
|             <option value="Debug">Debug</option> | ||||
|             <option value="Information">Information</option> | ||||
|             <option value="Warning">Warning</option> | ||||
|             <option value="Error">Error</option> | ||||
|             <option value="Critical">Critical</option> | ||||
|         </select> | ||||
|         <label>Rows: </label> | ||||
|         <select class="form-control" @onchange="(e => RowsChanged(e))"> | ||||
|             <option value="10">10</option> | ||||
|             <option value="50">50</option> | ||||
|             <option value="100">100</option> | ||||
|         </select> | ||||
|     </div> | ||||
|     <Pager Items="@Logs"> | ||||
|         <Header> | ||||
|             <th>Date</th> | ||||
|             <th>Level</th> | ||||
|             <th>Url</th> | ||||
|             <th>Category</th> | ||||
|             <th>Message</th> | ||||
|             <th>Level</th> | ||||
|             <th> </th> | ||||
|         </Header> | ||||
|         <Row> | ||||
|             <td>@context.LogDate</td> | ||||
|             <td>@context.Level</td> | ||||
|             <td>@context.Url</td> | ||||
|             <td>@context.Category</td> | ||||
|             <td>@context.Message</td> | ||||
|             <td>@context.Level</td> | ||||
|             <td><ActionLink Action="Detail" Parameters="@($"id=" + context.LogId.ToString())" /></td> | ||||
|         </Row> | ||||
|     </Pager> | ||||
| } | ||||
| @ -29,10 +45,50 @@ else | ||||
| @code { | ||||
|     public override SecurityAccessLevel SecurityAccessLevel { get { return SecurityAccessLevel.Admin; } } | ||||
|  | ||||
|     string level = "-"; | ||||
|     string rows = "50"; | ||||
|     List<Log> Logs; | ||||
|  | ||||
|     protected override async Task OnInitializedAsync() | ||||
|     { | ||||
|         Logs = await LogService.GetLogsAsync(PageState.Site.SiteId); | ||||
|         try | ||||
|         { | ||||
|             Logs = await LogService.GetLogsAsync(PageState.Site.SiteId, ((level == "-") ? "" : level), int.Parse(rows)); | ||||
|         } | ||||
|         catch (Exception ex) | ||||
|         { | ||||
|             await logger.LogError(ex, "Error Loading Logs {Error}", ex.Message); | ||||
|             AddModuleMessage("Error Loading Logs", MessageType.Error); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private async void LevelChanged(ChangeEventArgs e) | ||||
|     { | ||||
|         try | ||||
|         { | ||||
|             level = (string)e.Value; | ||||
|             Logs = await LogService.GetLogsAsync(PageState.Site.SiteId, ((level == "-") ? "" : level), int.Parse(rows)); | ||||
|             StateHasChanged(); | ||||
|         } | ||||
|         catch (Exception ex) | ||||
|         { | ||||
|             await logger.LogError(ex, "Error Loading Logs {Error}", ex.Message); | ||||
|             AddModuleMessage("Error Loading Logs", MessageType.Error); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private async void RowsChanged(ChangeEventArgs e) | ||||
|     { | ||||
|         try | ||||
|         { | ||||
|             rows = (string)e.Value; | ||||
|             Logs = await LogService.GetLogsAsync(PageState.Site.SiteId, ((level == "-") ? "" : level), int.Parse(rows)); | ||||
|             StateHasChanged(); | ||||
|         } | ||||
|         catch (Exception ex) | ||||
|         { | ||||
|             await logger.LogError(ex, "Error Loading Logs {Error}", ex.Message); | ||||
|             AddModuleMessage("Error Loading Logs", MessageType.Error); | ||||
|         } | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 Shaun Walker
					Shaun Walker