feature: update expression browser and add plugin expression extensions

This commit is contained in:
Gary Sharp
2025-01-16 12:36:01 +11:00
parent 963970feeb
commit a3e1e1d030
23 changed files with 652 additions and 555 deletions
@@ -1,24 +1,42 @@
using Disco.Services.Authorization;
using Disco.Models.Repository;
using Disco.Models.UI.Config.Expressions;
using Disco.Services.Authorization;
using Disco.Services.Expressions;
using Disco.Services.Plugins.Features.ExpressionExtensionProvider;
using Disco.Services.Plugins.Features.UIExtension;
using Disco.Services.Web;
using Disco.Web.Areas.Config.Models.Expressions;
using System;
using System.Linq;
using System.Web.Mvc;
namespace Disco.Web.Areas.Config.Controllers
{
[DiscoAuthorize(Claims.DiscoAdminAccount)]
public partial class ExpressionsController : AuthorizedDatabaseController
{
// Under Construction - Not In Production
[DiscoAuthorize(Claims.DiscoAdminAccount)]
public virtual ActionResult Index()
{
throw new NotImplementedException();
//return View(Views.Editor, new Models.Expressions.EditorModel()
//{
// Expression = @"JobComponentsTotalCost() < 100 ? JobComponentsTotalCost().ToString('c') : '$100.00'"
//});
}
[DiscoAuthorize(Claims.Config.Show)]
public virtual ActionResult Browser()
{
var m = new BrowserModel()
{
DeviceType = typeof(Device).AssemblyQualifiedName,
JobType = typeof(Job).AssemblyQualifiedName,
UserType = typeof(User).AssemblyQualifiedName,
Variables = Expression.StandardVariableTypes(),
ExtensionLibraries = Expression.ExtensionLibraryTypes(),
PluginExtensionLibraries = ExpressionExtensionProviderFeature.GetExpressionExtensionRegistrations().ToDictionary(r => r.Alias, r => r.ExtensionType.AssemblyQualifiedName)
};
// UI Extensions
UIExtensions.ExecuteExtensions<ConfigExpressionsBrowserModel>(ControllerContext, m);
return View(m);
}
}
}