feature: update expression browser and add plugin expression extensions
This commit is contained in:
@@ -1,134 +0,0 @@
|
||||
@model Disco.Web.Areas.Config.Models.DocumentTemplate.ExpressionBrowserModel
|
||||
@{
|
||||
Authorization.Require(Claims.Config.Show);
|
||||
|
||||
ViewBag.Title = Html.ToBreadcrumb("Configuration", MVC.Config.Config.Index(), "Document Templates", MVC.Config.DocumentTemplate.Index(null), "Expression Browser");
|
||||
Html.BundleDeferred("~/Style/jQueryUI/dynatree");
|
||||
Html.BundleDeferred("~/ClientScripts/Modules/jQueryUI-DynaTree");
|
||||
}
|
||||
<div id="configurationDocumentTemplateExpressionBrowser">
|
||||
Expressions within Disco ICT are based on the <a href="http://www.springframework.net/"
|
||||
target="_blank">Spring.NET Framework</a>. Please refer to the <a href="http://www.springframework.net/doc-latest/reference/html/expressions.html"
|
||||
target="_blank">Expression Evaluation</a> documentation.
|
||||
<h2 id="DeviceScope">
|
||||
Device Scope</h2>
|
||||
<div id="deviceScopeTree" class="expressionTree">
|
||||
</div>
|
||||
<h2 id="JobScope">
|
||||
Job Scope</h2>
|
||||
<div id="jobScopeTree" class="expressionTree">
|
||||
</div>
|
||||
<h2 id="UserScope">
|
||||
User Scope</h2>
|
||||
<div id="userScopeTree" class="expressionTree">
|
||||
</div>
|
||||
<h2 id="Variables">
|
||||
Variables
|
||||
</h2>
|
||||
<div id="variableScopeTree" class="expressionTree">
|
||||
</div>
|
||||
<h2 id="ExtensionLibraries">
|
||||
Extension Libraries</h2>
|
||||
<div id="extScopeTree" class="expressionTree">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
$(function () {
|
||||
if (!document.DiscoFunctions) {
|
||||
document.DiscoFunctions = {};
|
||||
}
|
||||
|
||||
var typeLib = {};
|
||||
var loadTypeUrl = '@(Url.Action(MVC.Config.DocumentTemplate.ExpressionBrowser()))';
|
||||
var deviceScopeTree = $('#deviceScopeTree');
|
||||
var jobScopeTree = $('#jobScopeTree');
|
||||
var userScopeTree = $('#userScopeTree');
|
||||
var variableScopeTree = $('#variableScopeTree');
|
||||
var extScopeTree = $('#extScopeTree');
|
||||
|
||||
var lazyLoadNode = function (node) {
|
||||
if (node.data.expressionType) {
|
||||
node.setLazyNodeStatus(DTNodeStatus_Loading);
|
||||
loadType(node, node.data.expressionType, node.data.staticDeclaredMembersOnly);
|
||||
} else {
|
||||
if (node.data.memberDescriptor) {
|
||||
loadMember(node);
|
||||
} else {
|
||||
node.setLazyNodeStatus(DTNodeStatus_Ok);
|
||||
}
|
||||
}
|
||||
}
|
||||
var loadMember = function (memberNode) {
|
||||
var previousUpdateMode = memberNode.tree.enableUpdate(false);
|
||||
var memberDescriptor = memberNode.data.memberDescriptor;
|
||||
// Return Type
|
||||
memberNode.addChild({ title: 'Returns: ' + memberDescriptor.ReturnType, tooltip: memberDescriptor.ReturnExpressionType, isFolder: true, expressionType: memberDescriptor.ReturnExpressionType, isLazy: true, addClass: 'object' });
|
||||
// Parameters
|
||||
var parametersNode = memberNode.addChild({ title: 'Parameters', isFolder: true, addClass: 'parameter' });
|
||||
for (var i = 0; i < memberDescriptor.Parameters.length; i++) {
|
||||
var p = memberDescriptor.Parameters[i];
|
||||
parametersNode.addChild({ title: p.Name + ' [' + p.ReturnType + ']', tooltip: p.ReturnExpressionType, addClass: 'object' });
|
||||
}
|
||||
memberNode.setLazyNodeStatus(DTNodeStatus_Ok);
|
||||
memberNode.tree.enableUpdate(previousUpdateMode);
|
||||
}
|
||||
var typeLoaded = function (parentNode, typeDescriptor) {
|
||||
var previousUpdateMode = parentNode.tree.enableUpdate(false);
|
||||
for (var i = 0; i < typeDescriptor.Members.length; i++) {
|
||||
var memberDescriptor = typeDescriptor.Members[i];
|
||||
parentNode.addChild({ title: memberDescriptor.Name, tooltip: memberDescriptor.ReturnType, isFolder: true, addClass: memberDescriptor.Kind, memberDescriptor: memberDescriptor, isLazy: true });
|
||||
}
|
||||
parentNode.setLazyNodeStatus(DTNodeStatus_Ok);
|
||||
parentNode.tree.enableUpdate(previousUpdateMode);
|
||||
}
|
||||
|
||||
var loadType = function (parentNode, type, staticDeclaredMembersOnly) {
|
||||
if (typeLib[type]) {
|
||||
typeLoaded(parentNode, typeLib[type]);
|
||||
} else {
|
||||
var requestData = { type: type, StaticDeclaredMembersOnly: staticDeclaredMembersOnly };
|
||||
$.getJSON(loadTypeUrl, requestData, function (data) {
|
||||
typeLib[type] = data;
|
||||
typeLoaded(parentNode, data);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
var initVariable = function (name, type) {
|
||||
variableScopeTree.dynatree('getRoot').addChild({ title: name, tooltip: type, isFolder: true, addClass: 'object', expressionType: type, isLazy: true });
|
||||
}
|
||||
var initExpressionLibrary = function (name, type) {
|
||||
extScopeTree.dynatree('getRoot').addChild({ title: name, tooltip: type, isFolder: true, addClass: 'object', expressionType: type, staticDeclaredMembersOnly: true, isLazy: true });
|
||||
}
|
||||
|
||||
// Init
|
||||
deviceScopeTree.dynatree({ onLazyRead: lazyLoadNode });
|
||||
loadType(deviceScopeTree.dynatree('getRoot'), '@(Model.DeviceType)');
|
||||
|
||||
jobScopeTree.dynatree({ onLazyRead: lazyLoadNode });
|
||||
loadType(jobScopeTree.dynatree('getRoot'), '@(Model.JobType)');
|
||||
|
||||
userScopeTree.dynatree({ onLazyRead: lazyLoadNode });
|
||||
loadType(userScopeTree.dynatree('getRoot'), '@(Model.UserType)');
|
||||
|
||||
variableScopeTree.dynatree({ onLazyRead: lazyLoadNode });
|
||||
document.DiscoFunctions.expressionInitVariable = initVariable;
|
||||
|
||||
extScopeTree.dynatree({ onLazyRead: lazyLoadNode });
|
||||
document.DiscoFunctions.expressionInitExpressionLibrary = initExpressionLibrary;
|
||||
});
|
||||
</script>
|
||||
<script type="text/javascript">
|
||||
$(function () {
|
||||
@{
|
||||
foreach (var variable in Model.Variables)
|
||||
{
|
||||
<text>document.DiscoFunctions.expressionInitVariable('@(variable.Key)', '@variable.Value');</text>
|
||||
}
|
||||
foreach (var variable in Model.ExtensionLibraries)
|
||||
{
|
||||
<text>document.DiscoFunctions.expressionInitExpressionLibrary('@(variable.Key)', '@variable.Value');</text>
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
@@ -1,306 +0,0 @@
|
||||
#pragma warning disable 1591
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace Disco.Web.Areas.Config.Views.DocumentTemplate
|
||||
{
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Text;
|
||||
using System.Web;
|
||||
using System.Web.Helpers;
|
||||
using System.Web.Mvc;
|
||||
using System.Web.Mvc.Ajax;
|
||||
using System.Web.Mvc.Html;
|
||||
using System.Web.Routing;
|
||||
using System.Web.Security;
|
||||
using System.Web.UI;
|
||||
using System.Web.WebPages;
|
||||
using Disco;
|
||||
using Disco.Models.Repository;
|
||||
using Disco.Services;
|
||||
using Disco.Services.Authorization;
|
||||
using Disco.Services.Web;
|
||||
using Disco.Web;
|
||||
using Disco.Web.Extensions;
|
||||
|
||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "2.0.0.0")]
|
||||
[System.Web.WebPages.PageVirtualPathAttribute("~/Areas/Config/Views/DocumentTemplate/ExpressionBrowser.cshtml")]
|
||||
public partial class ExpressionBrowser : Disco.Services.Web.WebViewPage<Disco.Web.Areas.Config.Models.DocumentTemplate.ExpressionBrowserModel>
|
||||
{
|
||||
public ExpressionBrowser()
|
||||
{
|
||||
}
|
||||
public override void Execute()
|
||||
{
|
||||
|
||||
#line 2 "..\..\Areas\Config\Views\DocumentTemplate\ExpressionBrowser.cshtml"
|
||||
|
||||
Authorization.Require(Claims.Config.Show);
|
||||
|
||||
ViewBag.Title = Html.ToBreadcrumb("Configuration", MVC.Config.Config.Index(), "Document Templates", MVC.Config.DocumentTemplate.Index(null), "Expression Browser");
|
||||
Html.BundleDeferred("~/Style/jQueryUI/dynatree");
|
||||
Html.BundleDeferred("~/ClientScripts/Modules/jQueryUI-DynaTree");
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("\r\n<div");
|
||||
|
||||
WriteLiteral(" id=\"configurationDocumentTemplateExpressionBrowser\"");
|
||||
|
||||
WriteLiteral(">\r\n Expressions within Disco ICT are based on the <a");
|
||||
|
||||
WriteLiteral(" href=\"http://www.springframework.net/\"");
|
||||
|
||||
WriteLiteral("\r\n target=\"_blank\"");
|
||||
|
||||
WriteLiteral(">Spring.NET Framework</a>. Please refer to the <a");
|
||||
|
||||
WriteLiteral(" href=\"http://www.springframework.net/doc-latest/reference/html/expressions.html\"" +
|
||||
"");
|
||||
|
||||
WriteLiteral("\r\n target=\"_blank\"");
|
||||
|
||||
WriteLiteral(">Expression Evaluation</a> documentation.\r\n <h2");
|
||||
|
||||
WriteLiteral(" id=\"DeviceScope\"");
|
||||
|
||||
WriteLiteral(">\r\n Device Scope</h2>\r\n <div");
|
||||
|
||||
WriteLiteral(" id=\"deviceScopeTree\"");
|
||||
|
||||
WriteLiteral(" class=\"expressionTree\"");
|
||||
|
||||
WriteLiteral(">\r\n </div>\r\n <h2");
|
||||
|
||||
WriteLiteral(" id=\"JobScope\"");
|
||||
|
||||
WriteLiteral(">\r\n Job Scope</h2>\r\n <div");
|
||||
|
||||
WriteLiteral(" id=\"jobScopeTree\"");
|
||||
|
||||
WriteLiteral(" class=\"expressionTree\"");
|
||||
|
||||
WriteLiteral(">\r\n </div>\r\n <h2");
|
||||
|
||||
WriteLiteral(" id=\"UserScope\"");
|
||||
|
||||
WriteLiteral(">\r\n User Scope</h2>\r\n <div");
|
||||
|
||||
WriteLiteral(" id=\"userScopeTree\"");
|
||||
|
||||
WriteLiteral(" class=\"expressionTree\"");
|
||||
|
||||
WriteLiteral(">\r\n </div>\r\n <h2");
|
||||
|
||||
WriteLiteral(" id=\"Variables\"");
|
||||
|
||||
WriteLiteral(">\r\n Variables\r\n </h2>\r\n <div");
|
||||
|
||||
WriteLiteral(" id=\"variableScopeTree\"");
|
||||
|
||||
WriteLiteral(" class=\"expressionTree\"");
|
||||
|
||||
WriteLiteral(">\r\n </div>\r\n <h2");
|
||||
|
||||
WriteLiteral(" id=\"ExtensionLibraries\"");
|
||||
|
||||
WriteLiteral(">\r\n Extension Libraries</h2>\r\n <div");
|
||||
|
||||
WriteLiteral(" id=\"extScopeTree\"");
|
||||
|
||||
WriteLiteral(" class=\"expressionTree\"");
|
||||
|
||||
WriteLiteral(">\r\n </div>\r\n</div>\r\n<script");
|
||||
|
||||
WriteLiteral(" type=\"text/javascript\"");
|
||||
|
||||
WriteLiteral(">\r\n $(function () {\r\n if (!document.DiscoFunctions) {\r\n docu" +
|
||||
"ment.DiscoFunctions = {};\r\n }\r\n\r\n var typeLib = {};\r\n var l" +
|
||||
"oadTypeUrl = \'");
|
||||
|
||||
|
||||
#line 42 "..\..\Areas\Config\Views\DocumentTemplate\ExpressionBrowser.cshtml"
|
||||
Write(Url.Action(MVC.Config.DocumentTemplate.ExpressionBrowser()));
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("\';\r\n var deviceScopeTree = $(\'#deviceScopeTree\');\r\n var jobScopeTre" +
|
||||
"e = $(\'#jobScopeTree\');\r\n var userScopeTree = $(\'#userScopeTree\');\r\n " +
|
||||
" var variableScopeTree = $(\'#variableScopeTree\');\r\n var extScopeTree = " +
|
||||
"$(\'#extScopeTree\');\r\n\r\n var lazyLoadNode = function (node) {\r\n " +
|
||||
" if (node.data.expressionType) {\r\n node.setLazyNodeStatus(DTNodeS" +
|
||||
"tatus_Loading);\r\n loadType(node, node.data.expressionType, node.d" +
|
||||
"ata.staticDeclaredMembersOnly);\r\n } else {\r\n if (node." +
|
||||
"data.memberDescriptor) {\r\n loadMember(node);\r\n " +
|
||||
" } else {\r\n node.setLazyNodeStatus(DTNodeStatus_Ok);\r\n " +
|
||||
" }\r\n }\r\n }\r\n var loadMember = function (memberN" +
|
||||
"ode) {\r\n var previousUpdateMode = memberNode.tree.enableUpdate(false)" +
|
||||
";\r\n var memberDescriptor = memberNode.data.memberDescriptor;\r\n " +
|
||||
" // Return Type\r\n memberNode.addChild({ title: \'Returns: \' + memb" +
|
||||
"erDescriptor.ReturnType, tooltip: memberDescriptor.ReturnExpressionType, isFolde" +
|
||||
"r: true, expressionType: memberDescriptor.ReturnExpressionType, isLazy: true, ad" +
|
||||
"dClass: \'object\' });\r\n // Parameters\r\n var parametersNode " +
|
||||
"= memberNode.addChild({ title: \'Parameters\', isFolder: true, addClass: \'paramete" +
|
||||
"r\' });\r\n for (var i = 0; i < memberDescriptor.Parameters.length; i++)" +
|
||||
" {\r\n var p = memberDescriptor.Parameters[i];\r\n par" +
|
||||
"ametersNode.addChild({ title: p.Name + \' [\' + p.ReturnType + \']\', tooltip: p.Ret" +
|
||||
"urnExpressionType, addClass: \'object\' });\r\n }\r\n memberNode" +
|
||||
".setLazyNodeStatus(DTNodeStatus_Ok);\r\n memberNode.tree.enableUpdate(p" +
|
||||
"reviousUpdateMode);\r\n }\r\n var typeLoaded = function (parentNode, t" +
|
||||
"ypeDescriptor) {\r\n var previousUpdateMode = parentNode.tree.enableUpd" +
|
||||
"ate(false);\r\n for (var i = 0; i < typeDescriptor.Members.length; i++)" +
|
||||
" {\r\n var memberDescriptor = typeDescriptor.Members[i];\r\n " +
|
||||
" parentNode.addChild({ title: memberDescriptor.Name, tooltip: memberDescri" +
|
||||
"ptor.ReturnType, isFolder: true, addClass: memberDescriptor.Kind, memberDescript" +
|
||||
"or: memberDescriptor, isLazy: true });\r\n }\r\n parentNode.se" +
|
||||
"tLazyNodeStatus(DTNodeStatus_Ok);\r\n parentNode.tree.enableUpdate(prev" +
|
||||
"iousUpdateMode);\r\n }\r\n\r\n var loadType = function (parentNode, type" +
|
||||
", staticDeclaredMembersOnly) {\r\n if (typeLib[type]) {\r\n " +
|
||||
" typeLoaded(parentNode, typeLib[type]);\r\n } else {\r\n " +
|
||||
"var requestData = { type: type, StaticDeclaredMembersOnly: staticDeclaredMembers" +
|
||||
"Only };\r\n $.getJSON(loadTypeUrl, requestData, function (data) {\r\n" +
|
||||
" typeLib[type] = data;\r\n typeLoaded(parent" +
|
||||
"Node, data);\r\n });\r\n }\r\n }\r\n\r\n var initV" +
|
||||
"ariable = function (name, type) {\r\n variableScopeTree.dynatree(\'getRo" +
|
||||
"ot\').addChild({ title: name, tooltip: type, isFolder: true, addClass: \'object\', " +
|
||||
"expressionType: type, isLazy: true });\r\n }\r\n var initExpressionLib" +
|
||||
"rary = function (name, type) {\r\n extScopeTree.dynatree(\'getRoot\').add" +
|
||||
"Child({ title: name, tooltip: type, isFolder: true, addClass: \'object\', expressi" +
|
||||
"onType: type, staticDeclaredMembersOnly: true, isLazy: true });\r\n }\r\n\r\n " +
|
||||
" // Init\r\n deviceScopeTree.dynatree({ onLazyRead: lazyLoadNode });\r\n" +
|
||||
" loadType(deviceScopeTree.dynatree(\'getRoot\'), \'");
|
||||
|
||||
|
||||
#line 106 "..\..\Areas\Config\Views\DocumentTemplate\ExpressionBrowser.cshtml"
|
||||
Write(Model.DeviceType);
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("\');\r\n\r\n jobScopeTree.dynatree({ onLazyRead: lazyLoadNode });\r\n load" +
|
||||
"Type(jobScopeTree.dynatree(\'getRoot\'), \'");
|
||||
|
||||
|
||||
#line 109 "..\..\Areas\Config\Views\DocumentTemplate\ExpressionBrowser.cshtml"
|
||||
Write(Model.JobType);
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("\');\r\n\r\n userScopeTree.dynatree({ onLazyRead: lazyLoadNode });\r\n loa" +
|
||||
"dType(userScopeTree.dynatree(\'getRoot\'), \'");
|
||||
|
||||
|
||||
#line 112 "..\..\Areas\Config\Views\DocumentTemplate\ExpressionBrowser.cshtml"
|
||||
Write(Model.UserType);
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(@"');
|
||||
|
||||
variableScopeTree.dynatree({ onLazyRead: lazyLoadNode });
|
||||
document.DiscoFunctions.expressionInitVariable = initVariable;
|
||||
|
||||
extScopeTree.dynatree({ onLazyRead: lazyLoadNode });
|
||||
document.DiscoFunctions.expressionInitExpressionLibrary = initExpressionLibrary;
|
||||
});
|
||||
</script>
|
||||
<script");
|
||||
|
||||
WriteLiteral(" type=\"text/javascript\"");
|
||||
|
||||
WriteLiteral(">\r\n $(function () {\r\n");
|
||||
|
||||
|
||||
#line 123 "..\..\Areas\Config\Views\DocumentTemplate\ExpressionBrowser.cshtml"
|
||||
|
||||
foreach (var variable in Model.Variables)
|
||||
{
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" ");
|
||||
|
||||
WriteLiteral("document.DiscoFunctions.expressionInitVariable(\'");
|
||||
|
||||
|
||||
#line 126 "..\..\Areas\Config\Views\DocumentTemplate\ExpressionBrowser.cshtml"
|
||||
Write(variable.Key);
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("\', \'");
|
||||
|
||||
|
||||
#line 126 "..\..\Areas\Config\Views\DocumentTemplate\ExpressionBrowser.cshtml"
|
||||
Write(variable.Value);
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("\');");
|
||||
|
||||
WriteLiteral("\r\n");
|
||||
|
||||
|
||||
#line 127 "..\..\Areas\Config\Views\DocumentTemplate\ExpressionBrowser.cshtml"
|
||||
}
|
||||
foreach (var variable in Model.ExtensionLibraries)
|
||||
{
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" ");
|
||||
|
||||
WriteLiteral("document.DiscoFunctions.expressionInitExpressionLibrary(\'");
|
||||
|
||||
|
||||
#line 130 "..\..\Areas\Config\Views\DocumentTemplate\ExpressionBrowser.cshtml"
|
||||
Write(variable.Key);
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("\', \'");
|
||||
|
||||
|
||||
#line 130 "..\..\Areas\Config\Views\DocumentTemplate\ExpressionBrowser.cshtml"
|
||||
Write(variable.Value);
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("\');");
|
||||
|
||||
WriteLiteral("\r\n");
|
||||
|
||||
|
||||
#line 131 "..\..\Areas\Config\Views\DocumentTemplate\ExpressionBrowser.cshtml"
|
||||
}
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("\r\n });\r\n </script>");
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
#pragma warning restore 1591
|
||||
Reference in New Issue
Block a user