Add shared (collaborative) samples
This commit is contained in:
parent
a43508253e
commit
813b48bbdb
|
@ -8,6 +8,8 @@ using Microsoft.AspNetCore.Mvc;
|
|||
using AspNetCoreMvc.Models;
|
||||
using Ooui;
|
||||
using Ooui.AspNetCore;
|
||||
using Samples;
|
||||
using System.Collections.Concurrent;
|
||||
|
||||
namespace AspNetCoreMvc.Controllers
|
||||
{
|
||||
|
@ -43,10 +45,13 @@ namespace AspNetCoreMvc.Controllers
|
|||
return samples.ToList ();
|
||||
}), true);
|
||||
|
||||
static readonly ConcurrentDictionary<string, Element> sharedSamples =
|
||||
new ConcurrentDictionary<string, Element> ();
|
||||
|
||||
public static List<Samples.ISample> Samples => lazySamples.Value;
|
||||
|
||||
[Route("/Samples/Run/{name}")]
|
||||
public IActionResult Run (string name)
|
||||
public IActionResult Run (string name, bool shared)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace (name) || name.Length > 32)
|
||||
return BadRequest ();
|
||||
|
@ -55,7 +60,18 @@ namespace AspNetCoreMvc.Controllers
|
|||
if (s == null)
|
||||
return NotFound ();
|
||||
|
||||
return new ElementResult (s.CreateElement (), title: s.Title + " - Ooui Samples");
|
||||
var element = shared ? GetSharedSample (s) : s.CreateElement ();
|
||||
|
||||
return new ElementResult (element, title: s.Title + " - Ooui Samples");
|
||||
}
|
||||
|
||||
private Element GetSharedSample (ISample s)
|
||||
{
|
||||
if (sharedSamples.TryGetValue (s.Title, out var e))
|
||||
return e;
|
||||
e = s.CreateElement ();
|
||||
sharedSamples[s.Title] = e;
|
||||
return e;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -17,7 +17,10 @@
|
|||
<h3>Samples</h3>
|
||||
<ul>
|
||||
@foreach (var s in SamplesController.Samples) {
|
||||
<li><a asp-area="" asp-controller="Samples" asp-action="Run" asp-route-name="@s.Title">@s.Title</a></li>
|
||||
<li>
|
||||
<a asp-area="" asp-controller="Samples" asp-action="Run" asp-route-name="@s.Title">@s.Title</a>
|
||||
(<a asp-area="" asp-controller="Samples" asp-action="Run" asp-route-name="@s.Title" asp-route-shared="@true">Shared</a>)
|
||||
</li>
|
||||
}
|
||||
</ul>
|
||||
</div>
|
||||
|
|
|
@ -17,7 +17,7 @@ namespace Samples
|
|||
public Element CreateElement ()
|
||||
{
|
||||
var heading = new Heading ("Draw");
|
||||
var subtitle = new Paragraph ("Click to draw a collaborative masterpiece");
|
||||
var subtitle = new Paragraph ("Click to draw a masterpiece");
|
||||
var canvas = new Canvas {
|
||||
Width = 320,
|
||||
Height = 240,
|
||||
|
|
Loading…
Reference in New Issue