This commit is contained in:
2021-05-22 13:44:34 +01:00
parent 047e8b235a
commit 778ee3aa03
32 changed files with 254 additions and 135 deletions
@@ -1,4 +1,5 @@
using Saxonite.Net.Core.Web.Base.Consoles;
using Sarand.Net.Standard.Base.App;
using Saxonite.Net.Core.Web.Base.Consoles;
using Saxonite.Net.Standard.Base.App;
using Saxonite.Net.Standard.Base.Consoles;
using System;
@@ -17,6 +18,7 @@ namespace Saxonite.Net.Core.Web.Online.Consoles
public SaxDataCacheConsole_Online(SaxSessionContext sessionContext) :
base(sessionContext)
{
String fn = GetType().Name + ".CTR";
RegionsSupported = true;
SportsSupported = true;
@@ -24,11 +26,26 @@ namespace Saxonite.Net.Core.Web.Online.Consoles
refreshTimer = new System.Timers.Timer(Math.Max(2, Sax.Config.Online.DataCache.RefreshIntervalSecs.Initial) * 1000);
refreshTimer.Elapsed += RefreshTimer_Elapsed;
refreshTimer.Start();
SaLogger.Info(fn + " Refresh timer initialised. Interval: " + refreshTimer.Interval, true);
}
//-------------------------------------------------------------------
// Utilities.
protected override void ForceRefresh()
{
String fn = GetType().Name + ".ForceRefresh";
SaLogger.Warn(fn + " Refresh timer initialised", true);
RefreshData();
}
//-------------------------------------------------------------------
// Refresh data cache.
private void RefreshTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
refreshTimer.Stop();
RefreshData();
}
private void RefreshData()
{
refreshTimer.Stop();
@@ -84,7 +84,7 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
[ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
public IActionResult Error()
{
return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
return View(new ErrorViewModel(Localiser) { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
}
//-------------------------------------------------------------------
@@ -1,10 +1,18 @@
using Saxonite.Net.Core.Web.Base.App;
using System;
namespace Saxonite.Net.Core.Web.Online.Models
{
//=======================================================================
public class ErrorViewModel
public class ErrorViewModel : SaxModel_Online
{
//-------------------------------------------------------------------
// Construction.
public ErrorViewModel(SaxLocaliser localiser) :
base(localiser)
{
}
//-------------------------------------------------------------------
public string RequestId { get; set; }
@@ -7,11 +7,12 @@
<div class="">
<div class="sax-panel-filter">
<div class="sax-header">
<div class="floatl sax-caption">@Localiser["journalist.caption.articles"]</div>
<div class="floatr sax-action sax-results-refresh"><img src="~/img/action/refresh24.png" alt="@(Localiser["label.refresh"])" title="@(Localiser["label.refresh"])" /></div>
<div class="floatr sax-action sax-item-create"><img src="~/img/action/add24.png" alt="@(Localiser["label.create"])" title="@(Localiser["label.create"])" /></div>
<div class="clearb"></div>
<div class="sax-header row">
<div class="col"><div class="sax-caption">@Localiser["journalist.caption.articles"]</div></div>
<div class="fixed row">
<div class="sax-action sax-results-refresh"><img src="~/img/action/refresh24.png" alt="@(Localiser["label.refresh"])" title="@(Localiser["label.refresh"])" /></div>
<div class="sax-action sax-item-create"><img src="~/img/action/add24.png" alt="@(Localiser["label.create"])" title="@(Localiser["label.create"])" /></div>
</div>
</div>
<div class="sax-content">
@using (@Html.BeginForm(FormMethod.Post, new { @id = "frmArticleFilter", @class = "sax-form", @action = "#", @method = "POST", onsubmit = "return false;" }))
@@ -29,25 +30,28 @@
<div class="sax-panel-item-list"></div>
<div class="sax-panel-item-template">
<div class="sax-panel-item Article">
<div class="sax-header">
<div class="floatl sax-caption"><div class="ArticleHeadline"></div></div>
<div class="floatr sax-action sax-item-update"><img src="~/img/action/edit24.png" alt="@(Localiser["label.update"])" title="@(Localiser["label.update"])" /></div>
<div class="clearb"></div>
</div>
<div class="sax-content">
<div class="row">
<div class="col-sm-12"><div class="ArticleSummary"></div></div>
<div class="col-sm-6"><div class="ArticleRegionCaption"></div></div>
<div class="col-sm-6 right"><div class="ArticleSportCaption"></div></div>
<div class="sax-header row">
<div class="col">
<div class="sax-caption"><div class="sax-action ArticleHeadline"></div></div>
</div>
<div class="row">
<div class="col-sm-4"><div class="">@Localiser["label.created"]:&nbsp;<span class="ArticleCreatedOn"></span></div></div>
<div class="col-sm-4"><div class="ArticlePublished">@Localiser["label.published"]:&nbsp;<span class="ArticlePublishedOn"></span></div></div>
<div class="col-sm-4 right"><div class="ArticleStatusDesc"></div></div>
<div class="fixed sax-actions">
<div class="sax-action sax-item-update"><img src="~/img/action/edit24.png" alt="@(Localiser["label.update"])" title="@(Localiser["label.update"])" /></div>
</div>
</div>
<div class="sax-content">
<div class="row">
<div class="col-sm-12"><div class="ArticleSummary"></div></div>
<div class="col-sm-6"><div class="ArticleRegionCaption"></div></div>
<div class="col-sm-6 right"><div class="ArticleSportCaption"></div></div>
</div>
<div class="row">
<div class="col-sm-4"><div class="">@Localiser["label.created"]:&nbsp;<span class="ArticleCreatedOn"></span></div></div>
<div class="col-sm-4"><div class="ArticlePublished">@Localiser["label.published"]:&nbsp;<span class="ArticlePublishedOn"></span></div></div>
<div class="col-sm-4 right"><div class="ArticleStatusDesc"></div></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
@@ -7,11 +7,12 @@
<div id="pnlOpportunities">
<div class="sax-panel-filter">
<div class="sax-header">
<div class="floatl sax-caption">@Localiser["organisation.caption.opportunities"]</div>
<div class="floatr sax-action sax-results-refresh"><img src="~/img/action/refresh24.png" alt="@(Localiser["label.refresh"])" title="@(Localiser["label.refresh"])" /></div>
<div class="floatr sax-action sax-item-create hidden"><img src="~/img/action/add24.png" alt="@(Localiser["label.create"])" title="@(Localiser["label.create"])" /></div>
<div class="clearb"></div>
<div class="sax-header row">
<div class="col"><div class="sax-caption">@Localiser["organisation.caption.opportunities"]</div></div>
<div class="fixed row">
<div class="sax-action sax-results-refresh"><img src="~/img/action/refresh24.png" alt="@(Localiser["label.refresh"])" title="@(Localiser["label.refresh"])" /></div>
<div class="sax-action sax-item-create hidden"><img src="~/img/action/add24.png" alt="@(Localiser["label.create"])" title="@(Localiser["label.create"])" /></div>
</div>
</div>
<div class="sax-content">
@using (@Html.BeginForm(FormMethod.Post, new { @id = "frmOpportunityFilter", @class = "sax-form", @action = "#", @method = "POST", onsubmit = "return false;" }))
@@ -37,25 +38,28 @@
<div class="sax-panel-item-list"></div>
<div class="sax-panel-item-template">
<div class="sax-panel-item Opportunity">
<div class="sax-header">
<div class="floatl sax-caption"><span class="OpportunityType"></span> - <span class="OpportunityPosition"></span></div>
<div class="floatr sax-action sax-item-update hidden"><img src="~/img/action/edit24.png" alt="@(Localiser["label.update"])" title="@(Localiser["label.update"])" /></div>
<div class="clearb"></div>
</div>
<div class="sax-content">
<div class="row">
<div class="col-sm-12"><div class="OpportunityOutline"></div></div>
<div class="col-sm-6"><div class="OpportunityRegionCaption"></div></div>
<div class="col-sm-6 right"><div class="OpportunitySportCaption"></div></div>
<div class="sax-header row">
<div class="col">
<div class="sax-caption"><div class="sax-action"><span class="OpportunityType"></span> - <span class="OpportunityPosition"></span></div></div>
</div>
<div class="row">
<div class="col-sm-4"><div class="">@Localiser["label.created"]:&nbsp;<span class="OpportunityCreatedOn"></span></div></div>
<div class="col-sm-4"><div class="OpportunityPublished">@Localiser["label.published"]:&nbsp;<span class="OpportunityPublishedOn"></span></div></div>
<div class="col-sm-4 right"><div class="OpportunityStatusDesc"></div></div>
<div class="fixed sax-actions">
<div class="sax-action sax-item-update hidden"><img src="~/img/action/edit24.png" alt="@(Localiser["label.update"])" title="@(Localiser["label.update"])" /></div>
</div>
</div>
<div class="sax-content">
<div class="row">
<div class="col-sm-12"><div class="OpportunityOutline"></div></div>
<div class="col-sm-6"><div class="OpportunityRegionCaption"></div></div>
<div class="col-sm-6 right"><div class="OpportunitySportCaption"></div></div>
</div>
<div class="row">
<div class="col-sm-4"><div class="">@Localiser["label.created"]:&nbsp;<span class="OpportunityCreatedOn"></span></div></div>
<div class="col-sm-4"><div class="OpportunityPublished">@Localiser["label.published"]:&nbsp;<span class="OpportunityPublishedOn"></span></div></div>
<div class="col-sm-4 right"><div class="OpportunityStatusDesc"></div></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
@@ -42,7 +42,6 @@
<div class="row">
<div class="col-auto sax-label-text pt4">@Localiser["label.strength"]&nbsp;</div>
<div id="" class="col-auto"><div id="prgPasswordStrength" class="col-auto"></div></div>
<div class="clearb"></div>
</div>
<div class="sax-message"></div>
</div>
@@ -38,7 +38,6 @@
<div class="sax-action-link" style="font-size:12px;" onclick="sax.goToPage('Security/RequestPassword');">@Localiser["label.forgotten.password"]</div>
</div>
</div>
<div class="clearb"></div>
<div class="sax-control">
@Html.PasswordFor(model => model.Password, new { @id = "ifPassword", @class = "sax-input", @maxlength = @Model.PasswordMaxLength })
</div>
@@ -129,6 +129,27 @@
font-weight: bold;
}
.sax-panel-item .sax-header .sax-action
{
border-radius: 4px;
}
.sax-panel-item .sax-header .sax-caption .sax-action:hover
{
color: var(--color-primary);
}
.sax-panel-item .sax-header .sax-actions .sax-action
{
margin: 2px 0 0 8px;
}
.sax-panel-item .sax-header .sax-actions .sax-action:hover
{
background-color: #c0c0c0;
box-shadow: 0 0 4px 2px #c0c0c080;
}
.sax-panel-item > .sax-content
{
margin: 6px 8px;
@@ -54,7 +54,8 @@
$('.ArticlePublishedOn', $item).text(item.publishedOnFmt);
$('.ArticlePublished', $item).toggle(!!item.publishedOnFmt);
$('.ArticleStatusDesc', $item).text(item.statusDesc);
$('.sax-action.sax-item-update', $item).off('click').on('click', function () { sax.updateItem(item.id) })
$('.sax-caption .sax-action, .sax-actions .sax-action.sax-item-update', $item).off('click').on('click', function () { sax.updateItem(item.id) })
$item.off('dblclick').on('dblclick', function () { sax.updateItem(item.id) })
$('.sax-panel-results .sax-panel-messages').hide().empty();
}
@@ -67,7 +67,8 @@
$('.OpportunityExpiresOn', $item).text(item.expiresOnFmt);
$('.OpportunityExpires', $item).toggle(!!item.expiresOnFmt);
$('.OpportunityStatusDesc', $item).text(item.statusDesc);
$('.sax-action.sax-item-update', $item).off('click').on('click', function () { sax.updateItem(item.id) });
$('.sax-caption .sax-action, .sax-actions .sax-action.sax-item-update', $item).off('click').on('click', function () { sax.updateItem(item.id) });
$item.off('dblclick').on('dblclick', function () { sax.updateItem(item.id) });
$('.sax-panel-results .sax-panel-messages').hide().empty();
}