initial source commit

This commit is contained in:
Gary Sharp
2013-02-01 12:35:28 +11:00
parent 543a005d31
commit 0a93429800
1103 changed files with 285609 additions and 0 deletions
@@ -0,0 +1,96 @@
@model Disco.Web.Areas.Config.Models.DocumentTemplate.CreateModel
@{
ViewBag.Title = Html.ToBreadcrumb("Configuration", MVC.Config.Config.Index(), "Document Templates", MVC.Config.DocumentTemplate.Index(null), "Create");
}
@using (Html.BeginForm(MVC.Config.DocumentTemplate.Create(), FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<div class="form" style="width: 650px">
<table>
<tr>
<th>
Id:
</th>
<td>@Html.TextBoxFor(model => model.DocumentTemplate.Id)<br />@Html.ValidationMessageFor(model => model.DocumentTemplate.Id)
</td>
</tr>
<tr>
<th>
Description:
</th>
<td>@Html.TextBoxFor(model => model.DocumentTemplate.Description)<br />@Html.ValidationMessageFor(model => model.DocumentTemplate.Description)
</td>
</tr>
<tr>
<th>
Scope:
</th>
<td>
@Html.DropDownListFor(model => model.DocumentTemplate.Scope, Model.Scopes.ToSelectListItems(null))
</td>
</tr>
<tr>
<th>
Template PDF
</th>
<td>
<input type="file" name="Template" /><br />@Html.ValidationMessage("Template")
</td>
</tr>
<tr id="trJobTypes">
<th class="name">
Types:
</th>
<td class="value">
@CommonHelpers.CheckBoxList("Types", Model.JobTypes.ToSelectListItems(Model.Types), 2)
</td>
</tr>
@foreach (var jt in Model.JobTypes)
{
<tr id="trJobSubType@(jt.Id)" class="jobSubTypes">
<th class="name">
@jt.Description<br />
Sub Types<br />
@CommonHelpers.CheckboxBulkSelect(string.Format("CheckboxBulkSelect_{0}", jt.Id))
</th>
<td class="value">
@CommonHelpers.CheckBoxList("SubTypes", Model.JobSubTypes.Where(jst => jst.JobTypeId == jt.Id).ToList().ToSelectListItems(Model.SubTypes), 2)
</td>
</tr>
}
</table>
<p class="actions">
<input type="submit" class="button" value="Create" />
</p>
</div>
<script type="text/javascript">
$(function () {
$('#Name').focus().select();
var $scope = $('#DocumentTemplate_Scope');
var $trJobTypes = $('#trJobTypes');
var $jobTypes = $trJobTypes.find('input[type="checkbox"]');
$scope.change(scopeChange);
$jobTypes.change(jobTypesChange);
scopeChange();
function scopeChange() {
if ($scope.val() == 'Job') {
$trJobTypes.show();
jobTypesChange();
} else {
$trJobTypes.hide();
$('.jobSubTypes').hide();
}
}
function jobTypesChange() {
$('.jobSubTypes').hide();
$jobTypes.filter(':checked').each(function () {
$('#trJobSubType' + $(this).val()).show();
});
}
});
</script>
}
@@ -0,0 +1,299 @@
#pragma warning disable 1591
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.17929
//
// 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.BI.Extensions;
using Disco.Models.Repository;
using Disco.Web;
using Disco.Web.Extensions;
[System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "1.5.0.0")]
[System.Web.WebPages.PageVirtualPathAttribute("~/Areas/Config/Views/DocumentTemplate/Create.cshtml")]
public class Create : System.Web.Mvc.WebViewPage<Disco.Web.Areas.Config.Models.DocumentTemplate.CreateModel>
{
public Create()
{
}
public override void Execute()
{
#line 2 "..\..\Areas\Config\Views\DocumentTemplate\Create.cshtml"
ViewBag.Title = Html.ToBreadcrumb("Configuration", MVC.Config.Config.Index(), "Document Templates", MVC.Config.DocumentTemplate.Index(null), "Create");
#line default
#line hidden
WriteLiteral("\r\n");
#line 5 "..\..\Areas\Config\Views\DocumentTemplate\Create.cshtml"
using (Html.BeginForm(MVC.Config.DocumentTemplate.Create(), FormMethod.Post, new { enctype = "multipart/form-data" }))
{
#line default
#line hidden
WriteLiteral(" <div");
WriteLiteral(" class=\"form\"");
WriteLiteral(" style=\"width: 650px\"");
WriteLiteral(">\r\n <table>\r\n <tr>\r\n <th>\r\n I" +
"d:\r\n </th>\r\n <td>");
#line 13 "..\..\Areas\Config\Views\DocumentTemplate\Create.cshtml"
Write(Html.TextBoxFor(model => model.DocumentTemplate.Id));
#line default
#line hidden
WriteLiteral("<br />");
#line 13 "..\..\Areas\Config\Views\DocumentTemplate\Create.cshtml"
Write(Html.ValidationMessageFor(model => model.DocumentTemplate.Id));
#line default
#line hidden
WriteLiteral("\r\n </td>\r\n </tr>\r\n <tr>\r\n <th" +
">\r\n Description:\r\n </th>\r\n <td>" +
"");
#line 20 "..\..\Areas\Config\Views\DocumentTemplate\Create.cshtml"
Write(Html.TextBoxFor(model => model.DocumentTemplate.Description));
#line default
#line hidden
WriteLiteral("<br />");
#line 20 "..\..\Areas\Config\Views\DocumentTemplate\Create.cshtml"
Write(Html.ValidationMessageFor(model => model.DocumentTemplate.Description));
#line default
#line hidden
WriteLiteral("\r\n </td>\r\n </tr>\r\n <tr>\r\n <th" +
">\r\n Scope:\r\n </th>\r\n <td>\r\n");
WriteLiteral(" ");
#line 28 "..\..\Areas\Config\Views\DocumentTemplate\Create.cshtml"
Write(Html.DropDownListFor(model => model.DocumentTemplate.Scope, Model.Scopes.ToSelectListItems(null)));
#line default
#line hidden
WriteLiteral("\r\n </td>\r\n </tr>\r\n <tr>\r\n <th" +
">\r\n Template PDF\r\n </th>\r\n <td>" +
"\r\n <input");
WriteLiteral(" type=\"file\"");
WriteLiteral(" name=\"Template\"");
WriteLiteral(" /><br />");
#line 36 "..\..\Areas\Config\Views\DocumentTemplate\Create.cshtml"
Write(Html.ValidationMessage("Template"));
#line default
#line hidden
WriteLiteral("\r\n </td>\r\n </tr>\r\n <tr");
WriteLiteral(" id=\"trJobTypes\"");
WriteLiteral(">\r\n <th");
WriteLiteral(" class=\"name\"");
WriteLiteral(">\r\n Types:\r\n </th>\r\n <td");
WriteLiteral(" class=\"value\"");
WriteLiteral(">\r\n");
WriteLiteral(" ");
#line 44 "..\..\Areas\Config\Views\DocumentTemplate\Create.cshtml"
Write(CommonHelpers.CheckBoxList("Types", Model.JobTypes.ToSelectListItems(Model.Types), 2));
#line default
#line hidden
WriteLiteral("\r\n </td>\r\n </tr>\r\n");
#line 47 "..\..\Areas\Config\Views\DocumentTemplate\Create.cshtml"
#line default
#line hidden
#line 47 "..\..\Areas\Config\Views\DocumentTemplate\Create.cshtml"
foreach (var jt in Model.JobTypes)
{
#line default
#line hidden
WriteLiteral(" <tr");
WriteAttribute("id", Tuple.Create(" id=\"", 1914), Tuple.Create("\"", 1939)
, Tuple.Create(Tuple.Create("", 1919), Tuple.Create("trJobSubType", 1919), true)
#line 49 "..\..\Areas\Config\Views\DocumentTemplate\Create.cshtml"
, Tuple.Create(Tuple.Create("", 1931), Tuple.Create<System.Object, System.Int32>(jt.Id
#line default
#line hidden
, 1931), false)
);
WriteLiteral(" class=\"jobSubTypes\"");
WriteLiteral(">\r\n <th");
WriteLiteral(" class=\"name\"");
WriteLiteral(">\r\n");
WriteLiteral(" ");
#line 51 "..\..\Areas\Config\Views\DocumentTemplate\Create.cshtml"
Write(jt.Description);
#line default
#line hidden
WriteLiteral("<br />\r\n Sub Types<br />\r\n");
WriteLiteral(" ");
#line 53 "..\..\Areas\Config\Views\DocumentTemplate\Create.cshtml"
Write(CommonHelpers.CheckboxBulkSelect(string.Format("CheckboxBulkSelect_{0}", jt.Id)));
#line default
#line hidden
WriteLiteral("\r\n </th>\r\n <td");
WriteLiteral(" class=\"value\"");
WriteLiteral(">\r\n");
WriteLiteral(" ");
#line 56 "..\..\Areas\Config\Views\DocumentTemplate\Create.cshtml"
Write(CommonHelpers.CheckBoxList("SubTypes", Model.JobSubTypes.Where(jst => jst.JobTypeId == jt.Id).ToList().ToSelectListItems(Model.SubTypes), 2));
#line default
#line hidden
WriteLiteral("\r\n </td>\r\n </tr> \r\n");
#line 59 "..\..\Areas\Config\Views\DocumentTemplate\Create.cshtml"
}
#line default
#line hidden
WriteLiteral(" </table>\r\n <p");
WriteLiteral(" class=\"actions\"");
WriteLiteral(">\r\n <input");
WriteLiteral(" type=\"submit\"");
WriteLiteral(" class=\"button\"");
WriteLiteral(" value=\"Create\"");
WriteLiteral(" />\r\n </p>\r\n </div>\r\n");
WriteLiteral(" <script");
WriteLiteral(" type=\"text/javascript\"");
WriteLiteral(@">
$(function () {
$('#Name').focus().select();
var $scope = $('#DocumentTemplate_Scope');
var $trJobTypes = $('#trJobTypes');
var $jobTypes = $trJobTypes.find('input[type=""checkbox""]');
$scope.change(scopeChange);
$jobTypes.change(jobTypesChange);
scopeChange();
function scopeChange() {
if ($scope.val() == 'Job') {
$trJobTypes.show();
jobTypesChange();
} else {
$trJobTypes.hide();
$('.jobSubTypes').hide();
}
}
function jobTypesChange() {
$('.jobSubTypes').hide();
$jobTypes.filter(':checked').each(function () {
$('#trJobSubType' + $(this).val()).show();
});
}
});
</script>
");
#line 96 "..\..\Areas\Config\Views\DocumentTemplate\Create.cshtml"
}
#line default
#line hidden
}
}
}
#pragma warning restore 1591
@@ -0,0 +1,132 @@
@model Disco.Web.Areas.Config.Models.DocumentTemplate.ExpressionBrowserModel
@{
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 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>
Device Scope</h2>
<div id="deviceScopeTree" class="expressionTree">
</div>
<h2>
Job Scope</h2>
<div id="jobScopeTree" class="expressionTree">
</div>
<h2>
User Scope</h2>
<div id="userScopeTree" class="expressionTree">
</div>
<h2>
Variables
</h2>
<div id="variableScopeTree" class="expressionTree">
</div>
<h2>
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>
@@ -0,0 +1,282 @@
#pragma warning disable 1591
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.17929
//
// 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.BI.Extensions;
using Disco.Models.Repository;
using Disco.Web;
using Disco.Web.Extensions;
[System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "1.5.0.0")]
[System.Web.WebPages.PageVirtualPathAttribute("~/Areas/Config/Views/DocumentTemplate/ExpressionBrowser.cshtml")]
public class ExpressionBrowser : System.Web.Mvc.WebViewPage<Disco.Web.Areas.Config.Models.DocumentTemplate.ExpressionBrowserModel>
{
public ExpressionBrowser()
{
}
public override void Execute()
{
#line 2 "..\..\Areas\Config\Views\DocumentTemplate\ExpressionBrowser.cshtml"
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 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>\r\n Device Scope</h2>\r\n " +
" <div");
WriteLiteral(" id=\"deviceScopeTree\"");
WriteLiteral(" class=\"expressionTree\"");
WriteLiteral(">\r\n </div>\r\n <h2>\r\n Job Scope</h2>\r\n <div");
WriteLiteral(" id=\"jobScopeTree\"");
WriteLiteral(" class=\"expressionTree\"");
WriteLiteral(">\r\n </div>\r\n <h2>\r\n User Scope</h2>\r\n <div");
WriteLiteral(" id=\"userScopeTree\"");
WriteLiteral(" class=\"expressionTree\"");
WriteLiteral(">\r\n </div>\r\n <h2>\r\n Variables\r\n </h2>\r\n <div");
WriteLiteral(" id=\"variableScopeTree\"");
WriteLiteral(" class=\"expressionTree\"");
WriteLiteral(">\r\n </div>\r\n <h2>\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 40 "..\..\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 104 "..\..\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 107 "..\..\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 110 "..\..\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 121 "..\..\Areas\Config\Views\DocumentTemplate\ExpressionBrowser.cshtml"
foreach (var variable in Model.Variables)
{
#line default
#line hidden
WriteLiteral(" ");
WriteLiteral("document.DiscoFunctions.expressionInitVariable(\'");
#line 124 "..\..\Areas\Config\Views\DocumentTemplate\ExpressionBrowser.cshtml"
Write(variable.Key);
#line default
#line hidden
WriteLiteral("\', \'");
#line 124 "..\..\Areas\Config\Views\DocumentTemplate\ExpressionBrowser.cshtml"
Write(variable.Value);
#line default
#line hidden
WriteLiteral("\');");
WriteLiteral("\r\n");
#line 125 "..\..\Areas\Config\Views\DocumentTemplate\ExpressionBrowser.cshtml"
}
foreach (var variable in Model.ExtensionLibraries)
{
#line default
#line hidden
WriteLiteral(" ");
WriteLiteral("document.DiscoFunctions.expressionInitExpressionLibrary(\'");
#line 128 "..\..\Areas\Config\Views\DocumentTemplate\ExpressionBrowser.cshtml"
Write(variable.Key);
#line default
#line hidden
WriteLiteral("\', \'");
#line 128 "..\..\Areas\Config\Views\DocumentTemplate\ExpressionBrowser.cshtml"
Write(variable.Value);
#line default
#line hidden
WriteLiteral("\');");
WriteLiteral("\r\n");
#line 129 "..\..\Areas\Config\Views\DocumentTemplate\ExpressionBrowser.cshtml"
}
#line default
#line hidden
WriteLiteral("\r\n });\r\n </script>");
}
}
}
#pragma warning restore 1591
@@ -0,0 +1,322 @@
@{
ViewBag.Title = Html.ToBreadcrumb("Configuration", MVC.Config.Config.Index(), "Document Templates", MVC.Config.DocumentTemplate.Index(), "Import Status");
Html.BundleDeferred("~/ClientScripts/Modules/Knockout");
Html.BundleDeferred("~/ClientScripts/Modules/jQuery-SignalR");
}
<h2>
Documents Imported Today
</h2>
<div id="importStatus">
<div id="noSessions" data-bind="visible: noSessions">
<h3>
No imported documents today</h3>
</div>
<div id="sessions" data-bind="visible: !noSessions(), foreach: {data: sessions, afterRender: sessionRendered}"
style="display: none">
<div class="session">
<div class="clearfix">
<div class="sessionLeftPane">
<h3>
<span data-bind="text: title"></span>
</h3>
</div>
<div class="sessionRightPane">
<p class="sessionStart" data-bind="text: startTime">
</p>
<p class="sessionStatus" data-bind="text: progressStatus">
</p>
<div data-bind="visible: !sessionEnded(), progressValue: progressValue" class="sessionProgress">
</div>
</div>
</div>
<div class="sessionPages clearfix" data-bind="foreach: {data: sessionPages}">
<div class="sessionPage" data-bind="style: {backgroundImage: thumbnailUrl}">
<div class="sessionPageDetails">
<h3 data-bind="text: title">
</h3>
<div data-bind="visible: undetected">
Disco QR-Code not found<br />
<a target="_blank" data-bind="attr: {href: manuallyAssignUrl}, visible: $parent.sessionEnded">Manually Assign Page</a>
</div>
<div data-bind="visible: detected">
Document: <a target="_blank" data-bind="text: documentTemplate, attr: {href: documentTemplateUrl}">
</a>
<br />
Target: <a target="_blank" data-bind="text: assignedData, attr: {href: assignedDataUrl}">
</a>
</div>
<div data-bind="visible: !(detected() || undetected())">
<p class="sessionStatus" data-bind="text: progressStatus">
</p>
<div data-bind="progressValue: progressValue" class="sessionProgress">
</div>
</div>
</div>
</div>
</div>
<div class="sessionInfoMessages">
<table class="logEventsViewport">
<thead>
<tr>
<th class="icon">
&nbsp;
</th>
<th class="message">
Message
</th>
</tr>
</thead>
</table>
<div class="logEventsViewportContainer">
<div class="logEventsViewportNoLogs" data-bind="visible: messages().length == 0"
style="display: none">
No logs
</div>
<table class="logEventsViewport" data-bind="visible: messages().length > 0" style="display: none">
<tbody data-bind="foreach: messages">
<tr>
<td class="icon" data-bind="attr: {title: FormattedTimestamp}, css: {information: EventTypeSeverity == 0, warning: EventTypeSeverity == 1, error: EventTypeSeverity == 2}">
&nbsp;
</td>
<td class="message" data-bind="text: FormattedMessage, attr: {title: EventTypeName}">
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<script type="text/javascript">
ko.bindingHandlers.progressValue = {
update: function (element, valueAccessor, allBindingsAccessor, viewModel) {
var v = ko.utils.unwrapObservable(valueAccessor());
var vInt = parseInt(v);
if (vInt >= 0) {
$element = $(element);
if (!$element.is('.ui-progressbar'))
$element.progressbar();
$(element).progressbar('option', 'value', vInt);
}
}
};
</script>
<script type="text/javascript">
$(function () {
var vm;
var host = $('#importStatus');
var hostSessions = $('#sessions');
var liveConnection;
var urlDeviceShow = '@(Url.Action(MVC.Device.Show()))/'
var urlJobShow = '@(Url.Action(MVC.Job.Show()))/'
var urlUserShow = '@(Url.Action(MVC.User.Show()))/'
var urlPageThumbnail = '@(Url.Action(MVC.API.DocumentTemplate.ImporterThumbnail()))/'
var urlDocumentTemplate = '@(Url.Action(MVC.Config.DocumentTemplate.Index()))/';
var urlManuallyAssign = '@(Url.Action(MVC.Config.DocumentTemplate.UndetectedPages()))';
var iconErrorUrl = 'url(@(Links.ClientSource.Style.Images.Status.fail32_png))';
var isLive = false;
function pageViewModel() {
var self = this;
self.noSessions = ko.observable(true);
self.sessions = ko.observableArray();
self.sessionIndex = {};
self.sessionRendered = function (e, d) {
if (!d.sessionEnded()) {
d.progressbar = $(e).find('.sessionProgress').progressbar();
}
};
}
function sessionViewModel(id) {
var self = this;
self.title = ko.observable(id);
self.messages = ko.observableArray();
self.progressStatus = ko.observable();
self.progressValue = ko.observable();
self.startTime = ko.observable();
self.sessionEnded = ko.observable(false);
self.sessionPages = ko.observableArray();
self.sessionPagesIndex = {};
self.addSessionPage = function (sessionPage) {
//if (isLive) {
self.sessionPages.push(sessionPage);
self.sessionPagesIndex[sessionPage.pageNumber] = sessionPage;
//}
}
}
function sessionPageViewModel(sessionId, pageNumber) {
var self = this;
self.sessionId = sessionId;
self.pageNumber = pageNumber;
self.title = 'Page ' + pageNumber;
self.progressStatus = ko.observable();
self.progressValue = ko.observable();
self.undetected = ko.observable(false);
self.detected = ko.observable(false);
self.documentTemplateId = ko.observable();
self.documentTemplate = ko.observable();
self.assignedDataType = ko.observable();
self.assignedDataId = ko.observable();
self.assignedData = ko.observable();
self.thumbnailEnabled = ko.observable(0);
self.updateThumbnail = function () {
self.thumbnailEnabled(self.thumbnailEnabled() + 1);
}
self.documentTemplateUrl = ko.computed(function () {
return urlDocumentTemplate + self.documentTemplateId();
});
self.manuallyAssignUrl = ko.computed(function () {
return urlManuallyAssign + '#' + self.sessionId + '_' + self.pageNumber;
});
self.assignedDataUrl = ko.computed(function () {
var t = self.assignedDataType();
var dId = self.assignedDataId();
switch (t) {
case 'Device':
return urlDeviceShow + dId;
case 'Job':
return urlJobShow + dId;
case 'User':
return urlUserShow + dId;
}
return null;
});
self.thumbnailUrl = ko.computed(function () {
var enabled = self.thumbnailEnabled();
if (enabled > 0) {
return 'url(' + urlPageThumbnail + '?SessionId=' + self.sessionId + '&PageNumber=' + self.pageNumber + '&NoCache=' + enabled + ')';
}
return null;
});
}
function parseLog(log) {
if (log.ModuleId === 40 && log.Arguments && log.Arguments.length > 0) {
// find session
var sessionId = log.Arguments[0];
var session = vm.sessionIndex[sessionId];
if (!session && log.EventTypeId === 10) { // Starting Session (Ignore 'partial' sessions)
session = new sessionViewModel(log.Arguments[1]);
vm.sessionIndex[sessionId] = session;
vm.sessions.unshift(session);
vm.noSessions(false);
}
if (session) {
switch (log.EventTypeId) {
case 10: // SessionStarting
session.startTime(log.FormattedTimestamp.substring(log.FormattedTimestamp.indexOf(' ') + 1));
break;
case 11: // SessionProgress
session.progressValue(log.Arguments[1]);
session.progressStatus(log.Arguments[2]);
break;
case 12: // SessionFinished
session.sessionEnded(true);
session.progressStatus('Import Finished');
break;
case 15: // SessionWarning
session.messages.unshift(log);
break;
case 16: // SessionError
session.messages.unshift(log);
break;
case 100: // ImportPageStarting
session.addSessionPage(new sessionPageViewModel(sessionId, log.Arguments[1]));
break;
case 104: // ImportPageImageUpdate
var p = session.sessionPagesIndex[log.Arguments[1]];
if (p) {
p.updateThumbnail();
}
break;
case 105: // ImportPageProgress
var p = session.sessionPagesIndex[log.Arguments[1]];
if (p) {
p.progressValue(log.Arguments[2]);
p.progressStatus(log.Arguments[3]);
}
break;
case 110: // ImportPageDetected
var p = session.sessionPagesIndex[log.Arguments[1]];
if (p) {
p.documentTemplateId(log.Arguments[2]);
p.documentTemplate(log.Arguments[3]);
p.assignedDataType(log.Arguments[4]);
p.assignedDataId(log.Arguments[5]);
p.assignedData(log.Arguments[6]);
p.detected(true);
if (!isLive) {
p.updateThumbnail();
}
}
session.messages.unshift(log);
break;
case 115: // ImportPageUndetected
var p = session.sessionPagesIndex[log.Arguments[1]];
if (p) {
p.undetected(true);
if (!isLive) {
p.updateThumbnail();
}
}
session.messages.unshift(log);
break;
case 150: // Ignore: ImportPageUndetectedStored
break;
default:
session.messages.unshift(log);
}
}
}
}
function init() {
// Create View Model
vm = new pageViewModel();
// Load Logs
var d = new Date();
var loadData = {
Format: "json",
Start: d.getFullYear() + '-' + (d.getMonth() + 1) + '-' + d.getDate(),
End: null,
ModuleId: 40,
Take: 2000
};
$.ajax({
url: '@(Url.Action(MVC.API.Logging.RetrieveEvents()))',
dataType: 'json',
type: 'POST',
traditional: true,
data: loadData,
success: init_loadedLogs,
error: function (jqXHR, textStatus, errorThrown) {
alert('Unable to retrieve logs: ' + errorThrown);
}
});
}
function init_loadedLogs(logs) {
logs.reverse();
for (var i = 0; i < logs.length; i++) {
parseLog(logs[i]);
}
// Bind
ko.applyBindings(vm);
// Init Persistent Connection
liveConnection = $.connection('@(Url.Content("~/API/Logging/Notifications"))');
liveConnection.received(parseLog);
liveConnection.error(function (e) { alert('Live-Log Error: ' + e) });
isLive = true;
liveConnection.start(function () {
liveConnection.send('/addToGroups:@(Disco.BI.DocumentTemplateBI.Importer.DocumentImporterLog.Current.LiveLogGroupName)');
});
}
init();
});
</script>
@@ -0,0 +1,484 @@
#pragma warning disable 1591
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.17929
//
// 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.BI.Extensions;
using Disco.Models.Repository;
using Disco.Web;
using Disco.Web.Extensions;
[System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "1.5.0.0")]
[System.Web.WebPages.PageVirtualPathAttribute("~/Areas/Config/Views/DocumentTemplate/ImportStatus.cshtml")]
public class ImportStatus : System.Web.Mvc.WebViewPage<dynamic>
{
public ImportStatus()
{
}
public override void Execute()
{
#line 1 "..\..\Areas\Config\Views\DocumentTemplate\ImportStatus.cshtml"
ViewBag.Title = Html.ToBreadcrumb("Configuration", MVC.Config.Config.Index(), "Document Templates", MVC.Config.DocumentTemplate.Index(), "Import Status");
Html.BundleDeferred("~/ClientScripts/Modules/Knockout");
Html.BundleDeferred("~/ClientScripts/Modules/jQuery-SignalR");
#line default
#line hidden
WriteLiteral("\r\n<h2>\r\n Documents Imported Today\r\n</h2>\r\n<div");
WriteLiteral(" id=\"importStatus\"");
WriteLiteral(">\r\n <div");
WriteLiteral(" id=\"noSessions\"");
WriteLiteral(" data-bind=\"visible: noSessions\"");
WriteLiteral(">\r\n <h3>\r\n No imported documents today</h3>\r\n </div>\r\n <d" +
"iv");
WriteLiteral(" id=\"sessions\"");
WriteLiteral(" data-bind=\"visible: !noSessions(), foreach: {data: sessions, afterRender: sessio" +
"nRendered}\"");
WriteLiteral("\r\n style=\"display: none\"");
WriteLiteral(">\r\n <div");
WriteLiteral(" class=\"session\"");
WriteLiteral(">\r\n <div");
WriteLiteral(" class=\"clearfix\"");
WriteLiteral(">\r\n <div");
WriteLiteral(" class=\"sessionLeftPane\"");
WriteLiteral(">\r\n <h3>\r\n <span");
WriteLiteral(" data-bind=\"text: title\"");
WriteLiteral("></span>\r\n </h3>\r\n </div>\r\n <div" +
"");
WriteLiteral(" class=\"sessionRightPane\"");
WriteLiteral(">\r\n <p");
WriteLiteral(" class=\"sessionStart\"");
WriteLiteral(" data-bind=\"text: startTime\"");
WriteLiteral(">\r\n </p>\r\n <p");
WriteLiteral(" class=\"sessionStatus\"");
WriteLiteral(" data-bind=\"text: progressStatus\"");
WriteLiteral(">\r\n </p>\r\n <div");
WriteLiteral(" data-bind=\"visible: !sessionEnded(), progressValue: progressValue\"");
WriteLiteral(" class=\"sessionProgress\"");
WriteLiteral(">\r\n </div>\r\n </div>\r\n </div>\r\n " +
" <div");
WriteLiteral(" class=\"sessionPages clearfix\"");
WriteLiteral(" data-bind=\"foreach: {data: sessionPages}\"");
WriteLiteral(">\r\n <div");
WriteLiteral(" class=\"sessionPage\"");
WriteLiteral(" data-bind=\"style: {backgroundImage: thumbnailUrl}\"");
WriteLiteral(">\r\n <div");
WriteLiteral(" class=\"sessionPageDetails\"");
WriteLiteral(">\r\n <h3");
WriteLiteral(" data-bind=\"text: title\"");
WriteLiteral(">\r\n </h3>\r\n <div");
WriteLiteral(" data-bind=\"visible: undetected\"");
WriteLiteral(">\r\n Disco QR-Code not found<br />\r\n " +
" <a");
WriteLiteral(" target=\"_blank\"");
WriteLiteral(" data-bind=\"attr: {href: manuallyAssignUrl}, visible: $parent.sessionEnded\"");
WriteLiteral(">Manually Assign Page</a>\r\n </div>\r\n " +
" <div");
WriteLiteral(" data-bind=\"visible: detected\"");
WriteLiteral(">\r\n Document: <a");
WriteLiteral(" target=\"_blank\"");
WriteLiteral(" data-bind=\"text: documentTemplate, attr: {href: documentTemplateUrl}\"");
WriteLiteral(">\r\n </a>\r\n <br />\r\n " +
" Target: <a");
WriteLiteral(" target=\"_blank\"");
WriteLiteral(" data-bind=\"text: assignedData, attr: {href: assignedDataUrl}\"");
WriteLiteral(">\r\n </a>\r\n </div>\r\n " +
" <div");
WriteLiteral(" data-bind=\"visible: !(detected() || undetected())\"");
WriteLiteral(">\r\n <p");
WriteLiteral(" class=\"sessionStatus\"");
WriteLiteral(" data-bind=\"text: progressStatus\"");
WriteLiteral(">\r\n </p>\r\n <div");
WriteLiteral(" data-bind=\"progressValue: progressValue\"");
WriteLiteral(" class=\"sessionProgress\"");
WriteLiteral(">\r\n </div>\r\n </div>\r\n " +
" </div>\r\n </div>\r\n </div>\r\n <div");
WriteLiteral(" class=\"sessionInfoMessages\"");
WriteLiteral(">\r\n <table");
WriteLiteral(" class=\"logEventsViewport\"");
WriteLiteral(">\r\n <thead>\r\n <tr>\r\n " +
" <th");
WriteLiteral(" class=\"icon\"");
WriteLiteral(">\r\n &nbsp;\r\n </th>\r\n " +
" <th");
WriteLiteral(" class=\"message\"");
WriteLiteral(">\r\n Message\r\n </th>\r\n " +
" </tr>\r\n </thead>\r\n </tab" +
"le>\r\n <div");
WriteLiteral(" class=\"logEventsViewportContainer\"");
WriteLiteral(">\r\n <div");
WriteLiteral(" class=\"logEventsViewportNoLogs\"");
WriteLiteral(" data-bind=\"visible: messages().length == 0\"");
WriteLiteral("\r\n style=\"display: none\"");
WriteLiteral(">\r\n No logs\r\n </div>\r\n " +
" <table");
WriteLiteral(" class=\"logEventsViewport\"");
WriteLiteral(" data-bind=\"visible: messages().length > 0\"");
WriteLiteral(" style=\"display: none\"");
WriteLiteral(">\r\n <tbody");
WriteLiteral(" data-bind=\"foreach: messages\"");
WriteLiteral(">\r\n <tr>\r\n <td");
WriteLiteral(" class=\"icon\"");
WriteLiteral(" data-bind=\"attr: {title: FormattedTimestamp}, css: {information: EventTypeSeveri" +
"ty == 0, warning: EventTypeSeverity == 1, error: EventTypeSeverity == 2}\"");
WriteLiteral(">\r\n &nbsp;\r\n </" +
"td>\r\n <td");
WriteLiteral(" class=\"message\"");
WriteLiteral(" data-bind=\"text: FormattedMessage, attr: {title: EventTypeName}\"");
WriteLiteral(">\r\n </td>\r\n </tr>\r\n " +
" </tbody>\r\n </table>\r\n </di" +
"v>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<script");
WriteLiteral(" type=\"text/javascript\"");
WriteLiteral(@">
ko.bindingHandlers.progressValue = {
update: function (element, valueAccessor, allBindingsAccessor, viewModel) {
var v = ko.utils.unwrapObservable(valueAccessor());
var vInt = parseInt(v);
if (vInt >= 0) {
$element = $(element);
if (!$element.is('.ui-progressbar'))
$element.progressbar();
$(element).progressbar('option', 'value', vInt);
}
}
};
</script>
<script");
WriteLiteral(" type=\"text/javascript\"");
WriteLiteral(">\r\n $(function () {\r\n var vm;\r\n var host = $(\'#importStatus\');\r\n" +
" var hostSessions = $(\'#sessions\');\r\n var liveConnection;\r\n " +
" var urlDeviceShow = \'");
#line 111 "..\..\Areas\Config\Views\DocumentTemplate\ImportStatus.cshtml"
Write(Url.Action(MVC.Device.Show()));
#line default
#line hidden
WriteLiteral("/\'\r\n var urlJobShow = \'");
#line 112 "..\..\Areas\Config\Views\DocumentTemplate\ImportStatus.cshtml"
Write(Url.Action(MVC.Job.Show()));
#line default
#line hidden
WriteLiteral("/\'\r\n var urlUserShow = \'");
#line 113 "..\..\Areas\Config\Views\DocumentTemplate\ImportStatus.cshtml"
Write(Url.Action(MVC.User.Show()));
#line default
#line hidden
WriteLiteral("/\'\r\n var urlPageThumbnail = \'");
#line 114 "..\..\Areas\Config\Views\DocumentTemplate\ImportStatus.cshtml"
Write(Url.Action(MVC.API.DocumentTemplate.ImporterThumbnail()));
#line default
#line hidden
WriteLiteral("/\'\r\n var urlDocumentTemplate = \'");
#line 115 "..\..\Areas\Config\Views\DocumentTemplate\ImportStatus.cshtml"
Write(Url.Action(MVC.Config.DocumentTemplate.Index()));
#line default
#line hidden
WriteLiteral("/\';\r\n var urlManuallyAssign = \'");
#line 116 "..\..\Areas\Config\Views\DocumentTemplate\ImportStatus.cshtml"
Write(Url.Action(MVC.Config.DocumentTemplate.UndetectedPages()));
#line default
#line hidden
WriteLiteral("\';\r\n var iconErrorUrl = \'url(");
#line 117 "..\..\Areas\Config\Views\DocumentTemplate\ImportStatus.cshtml"
Write(Links.ClientSource.Style.Images.Status.fail32_png);
#line default
#line hidden
WriteLiteral(")\';\r\n var isLive = false;\r\n\r\n function pageViewModel() {\r\n " +
" var self = this;\r\n\r\n self.noSessions = ko.observable(true);\r\n " +
" self.sessions = ko.observableArray();\r\n self.sessionIndex = {}" +
";\r\n\r\n self.sessionRendered = function (e, d) {\r\n if (!" +
"d.sessionEnded()) {\r\n d.progressbar = $(e).find(\'.sessionProg" +
"ress\').progressbar();\r\n }\r\n };\r\n }\r\n fun" +
"ction sessionViewModel(id) {\r\n var self = this;\r\n\r\n self.t" +
"itle = ko.observable(id);\r\n self.messages = ko.observableArray();\r\n " +
" self.progressStatus = ko.observable();\r\n self.progressValue" +
" = ko.observable();\r\n self.startTime = ko.observable();\r\n " +
"self.sessionEnded = ko.observable(false);\r\n\r\n self.sessionPages = ko." +
"observableArray();\r\n self.sessionPagesIndex = {};\r\n self.a" +
"ddSessionPage = function (sessionPage) {\r\n //if (isLive) {\r\n " +
" self.sessionPages.push(sessionPage);\r\n self.sessionPag" +
"esIndex[sessionPage.pageNumber] = sessionPage;\r\n //}\r\n " +
" }\r\n }\r\n function sessionPageViewModel(sessionId, pageNumber) {\r\n " +
" var self = this;\r\n\r\n self.sessionId = sessionId;\r\n " +
" self.pageNumber = pageNumber;\r\n self.title = \'Page \' + pageNumber" +
";\r\n self.progressStatus = ko.observable();\r\n self.progress" +
"Value = ko.observable();\r\n self.undetected = ko.observable(false);\r\n " +
" self.detected = ko.observable(false);\r\n self.documentTempl" +
"ateId = ko.observable();\r\n self.documentTemplate = ko.observable();\r\n" +
" self.assignedDataType = ko.observable();\r\n self.assignedD" +
"ataId = ko.observable();\r\n self.assignedData = ko.observable();\r\n " +
" self.thumbnailEnabled = ko.observable(0);\r\n self.updateThumbn" +
"ail = function () {\r\n self.thumbnailEnabled(self.thumbnailEnabled" +
"() + 1);\r\n }\r\n self.documentTemplateUrl = ko.computed(func" +
"tion () {\r\n return urlDocumentTemplate + self.documentTemplateId(" +
");\r\n });\r\n self.manuallyAssignUrl = ko.computed(function (" +
") {\r\n return urlManuallyAssign + \'#\' + self.sessionId + \'_\' + sel" +
"f.pageNumber;\r\n });\r\n self.assignedDataUrl = ko.computed(f" +
"unction () {\r\n var t = self.assignedDataType();\r\n " +
"var dId = self.assignedDataId();\r\n switch (t) {\r\n " +
" case \'Device\':\r\n return urlDeviceShow + dId;\r\n " +
" case \'Job\':\r\n return urlJobShow + dId;\r\n " +
" case \'User\':\r\n return urlUserShow + dId;\r" +
"\n }\r\n return null;\r\n });\r\n s" +
"elf.thumbnailUrl = ko.computed(function () {\r\n var enabled = self" +
".thumbnailEnabled();\r\n if (enabled > 0) {\r\n re" +
"turn \'url(\' + urlPageThumbnail + \'?SessionId=\' + self.sessionId + \'&PageNumber=\'" +
" + self.pageNumber + \'&NoCache=\' + enabled + \')\';\r\n }\r\n " +
" return null;\r\n });\r\n }\r\n\r\n function parseLog(log)" +
" {\r\n if (log.ModuleId === 40 && log.Arguments && log.Arguments.length" +
" > 0) {\r\n // find session\r\n var sessionId = log.Ar" +
"guments[0];\r\n var session = vm.sessionIndex[sessionId];\r\n " +
" if (!session && log.EventTypeId === 10) { // Starting Session (Ignore \'p" +
"artial\' sessions)\r\n session = new sessionViewModel(log.Argume" +
"nts[1]);\r\n vm.sessionIndex[sessionId] = session;\r\n " +
" vm.sessions.unshift(session);\r\n vm.noSessions(false)" +
";\r\n }\r\n if (session) {\r\n switch" +
" (log.EventTypeId) {\r\n case 10: // SessionStarting\r\n " +
" session.startTime(log.FormattedTimestamp.substring(log.Fo" +
"rmattedTimestamp.indexOf(\' \') + 1));\r\n break;\r\n " +
" case 11: // SessionProgress\r\n sessi" +
"on.progressValue(log.Arguments[1]);\r\n session.progres" +
"sStatus(log.Arguments[2]);\r\n break;\r\n " +
" case 12: // SessionFinished\r\n session.session" +
"Ended(true);\r\n session.progressStatus(\'Import Finishe" +
"d\');\r\n break;\r\n case 15: // Se" +
"ssionWarning\r\n session.messages.unshift(log);\r\n " +
" break;\r\n case 16: // SessionError\r\n" +
" session.messages.unshift(log);\r\n " +
" break;\r\n case 100: // ImportPageStarting\r\n " +
" session.addSessionPage(new sessionPageViewModel(sessionId, " +
"log.Arguments[1]));\r\n break;\r\n " +
" case 104: // ImportPageImageUpdate\r\n var p = session" +
".sessionPagesIndex[log.Arguments[1]];\r\n if (p) {\r\n " +
" p.updateThumbnail();\r\n }" +
"\r\n break;\r\n case 105: // Impor" +
"tPageProgress\r\n var p = session.sessionPagesIndex[log" +
".Arguments[1]];\r\n if (p) {\r\n " +
" p.progressValue(log.Arguments[2]);\r\n p.pro" +
"gressStatus(log.Arguments[3]);\r\n }\r\n " +
" break;\r\n case 110: // ImportPageDetected\r\n " +
" var p = session.sessionPagesIndex[log.Arguments[1]];\r\n " +
" if (p) {\r\n p.documentTe" +
"mplateId(log.Arguments[2]);\r\n p.documentTemplate(" +
"log.Arguments[3]);\r\n p.assignedDataType(log.Argum" +
"ents[4]);\r\n p.assignedDataId(log.Arguments[5]);\r\n" +
" p.assignedData(log.Arguments[6]);\r\n " +
" p.detected(true);\r\n if (!isLiv" +
"e) {\r\n p.updateThumbnail();\r\n " +
" }\r\n }\r\n se" +
"ssion.messages.unshift(log);\r\n break;\r\n " +
" case 115: // ImportPageUndetected\r\n var p =" +
" session.sessionPagesIndex[log.Arguments[1]];\r\n if (p" +
") {\r\n p.undetected(true);\r\n " +
" if (!isLive) {\r\n p.updateThumbnail(" +
");\r\n }\r\n }\r\n " +
" session.messages.unshift(log);\r\n br" +
"eak;\r\n case 150: // Ignore: ImportPageUndetectedStored\r\n " +
" break;\r\n default:\r\n " +
" session.messages.unshift(log);\r\n }\r\n " +
" }\r\n }\r\n }\r\n function init() {\r\n // C" +
"reate View Model\r\n vm = new pageViewModel();\r\n\r\n // Load L" +
"ogs\r\n var d = new Date();\r\n var loadData = {\r\n " +
" Format: \"json\",\r\n Start: d.getFullYear() + \'-\' + (d.getMonth(" +
") + 1) + \'-\' + d.getDate(),\r\n End: null,\r\n ModuleI" +
"d: 40,\r\n Take: 2000\r\n };\r\n $.ajax({\r\n " +
" url: \'");
#line 292 "..\..\Areas\Config\Views\DocumentTemplate\ImportStatus.cshtml"
Write(Url.Action(MVC.API.Logging.RetrieveEvents()));
#line default
#line hidden
WriteLiteral(@"',
dataType: 'json',
type: 'POST',
traditional: true,
data: loadData,
success: init_loadedLogs,
error: function (jqXHR, textStatus, errorThrown) {
alert('Unable to retrieve logs: ' + errorThrown);
}
});
}
function init_loadedLogs(logs) {
logs.reverse();
for (var i = 0; i < logs.length; i++) {
parseLog(logs[i]);
}
// Bind
ko.applyBindings(vm);
// Init Persistent Connection
liveConnection = $.connection('");
#line 312 "..\..\Areas\Config\Views\DocumentTemplate\ImportStatus.cshtml"
Write(Url.Content("~/API/Logging/Notifications"));
#line default
#line hidden
WriteLiteral(@"');
liveConnection.received(parseLog);
liveConnection.error(function (e) { alert('Live-Log Error: ' + e) });
isLive = true;
liveConnection.start(function () {
liveConnection.send('/addToGroups:");
#line 317 "..\..\Areas\Config\Views\DocumentTemplate\ImportStatus.cshtml"
Write(Disco.BI.DocumentTemplateBI.Importer.DocumentImporterLog.Current.LiveLogGroupName);
#line default
#line hidden
WriteLiteral("\');\r\n });\r\n }\r\n init();\r\n });\r\n</script>\r\n");
}
}
}
#pragma warning restore 1591
@@ -0,0 +1,37 @@
@model Disco.Web.Areas.Config.Models.DocumentTemplate.IndexModel
@{
ViewBag.Title = Html.ToBreadcrumb("Configuration", MVC.Config.Config.Index(), "Document Templates");
}
<table class="tableData">
<tr>
<th>
Id
</th>
<th>
Description
</th>
<th>
Scope
</th>
</tr>
@foreach (var item in Model.DocumentTemplates)
{
<tr>
<td>
@Html.ActionLink(item.Id.ToString(), MVC.Config.DocumentTemplate.Index(item.Id))
</td>
<td>
@Html.DisplayFor(modelItem => item.Description)
</td>
<td>
@Html.DisplayFor(modelItem => item.Scope)
</td>
</tr>
}
</table>
<div class="actionBar">
@Html.ActionLinkButton("Undetected Pages", MVC.Config.DocumentTemplate.UndetectedPages())
@Html.ActionLinkButton("Import Status", MVC.Config.DocumentTemplate.ImportStatus())
@Html.ActionLinkButton("Expression Browser", MVC.Config.DocumentTemplate.ExpressionBrowser())
@Html.ActionLinkButton("Create Document Template", MVC.Config.DocumentTemplate.Create())
</div>
@@ -0,0 +1,168 @@
#pragma warning disable 1591
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.17929
//
// 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.BI.Extensions;
using Disco.Models.Repository;
using Disco.Web;
using Disco.Web.Extensions;
[System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "1.5.0.0")]
[System.Web.WebPages.PageVirtualPathAttribute("~/Areas/Config/Views/DocumentTemplate/Index.cshtml")]
public class Index : System.Web.Mvc.WebViewPage<Disco.Web.Areas.Config.Models.DocumentTemplate.IndexModel>
{
public Index()
{
}
public override void Execute()
{
#line 2 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
ViewBag.Title = Html.ToBreadcrumb("Configuration", MVC.Config.Config.Index(), "Document Templates");
#line default
#line hidden
WriteLiteral("\r\n<table");
WriteLiteral(" class=\"tableData\"");
WriteLiteral(">\r\n <tr>\r\n <th>\r\n Id\r\n </th>\r\n <th>\r\n " +
" Description\r\n </th>\r\n <th>\r\n Scope\r\n </th>\r\n " +
" </tr>\r\n");
#line 17 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
#line default
#line hidden
#line 17 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
foreach (var item in Model.DocumentTemplates)
{
#line default
#line hidden
WriteLiteral(" <tr>\r\n <td>\r\n");
WriteLiteral(" ");
#line 21 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
Write(Html.ActionLink(item.Id.ToString(), MVC.Config.DocumentTemplate.Index(item.Id)));
#line default
#line hidden
WriteLiteral("\r\n </td>\r\n <td>\r\n");
WriteLiteral(" ");
#line 24 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
Write(Html.DisplayFor(modelItem => item.Description));
#line default
#line hidden
WriteLiteral("\r\n </td>\r\n <td>\r\n");
WriteLiteral(" ");
#line 27 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
Write(Html.DisplayFor(modelItem => item.Scope));
#line default
#line hidden
WriteLiteral("\r\n </td>\r\n </tr>\r\n");
#line 30 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
}
#line default
#line hidden
WriteLiteral("</table>\r\n<div");
WriteLiteral(" class=\"actionBar\"");
WriteLiteral(">\r\n");
WriteLiteral(" ");
#line 33 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
Write(Html.ActionLinkButton("Undetected Pages", MVC.Config.DocumentTemplate.UndetectedPages()));
#line default
#line hidden
WriteLiteral("\r\n");
WriteLiteral(" ");
#line 34 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
Write(Html.ActionLinkButton("Import Status", MVC.Config.DocumentTemplate.ImportStatus()));
#line default
#line hidden
WriteLiteral("\r\n");
WriteLiteral(" ");
#line 35 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
Write(Html.ActionLinkButton("Expression Browser", MVC.Config.DocumentTemplate.ExpressionBrowser()));
#line default
#line hidden
WriteLiteral("\r\n");
WriteLiteral(" ");
#line 36 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
Write(Html.ActionLinkButton("Create Document Template", MVC.Config.DocumentTemplate.Create()));
#line default
#line hidden
WriteLiteral("\r\n</div>");
}
}
}
#pragma warning restore 1591
@@ -0,0 +1,362 @@
@model Disco.Web.Areas.Config.Models.DocumentTemplate.ShowModel
@{
ViewBag.Title = Html.ToBreadcrumb("Configuration", MVC.Config.Config.Index(), "Document Templates", MVC.Config.DocumentTemplate.Index(null), Model.DocumentTemplate.Description);
}
<div class="form" style="width: 650px">
<table>
<tr>
<th>
Id:
</th>
<td>@Html.DisplayFor(model => model.DocumentTemplate.Id)
</td>
</tr>
<tr>
<th>
Stored Instances:
</th>
<td>@Html.DisplayFor(model => model.StoredInstanceCount)
</td>
</tr>
<tr>
<th>
Description:
</th>
<td>@Html.TextBoxFor(model => model.DocumentTemplate.Description)
@AjaxHelpers.AjaxSave()
@AjaxHelpers.AjaxLoader()
<script type="text/javascript">
$(function () {
var $Description = $('#DocumentTemplate_Description');
var $DescriptionAjaxSave = $Description.next('.ajaxSave');
$Description
.watermark('Description')
.focus(function () { $Description.select() })
.keydown(function (e) {
$DescriptionAjaxSave.show();
if (e.which == 13) {
$(this).blur();
}
}).blur(function () {
$DescriptionAjaxSave.hide();
})
.change(function () {
$DescriptionAjaxSave.hide();
var $ajaxLoading = $DescriptionAjaxSave.next('.ajaxLoading').show();
var data = { Description: $Description.val() };
$.ajax({
url: '@Url.Action(MVC.API.DocumentTemplate.UpdateDescription(Model.DocumentTemplate.Id))',
dataType: 'json',
data: data,
success: function (d) {
if (d == 'OK') {
$ajaxLoading.hide().next('.ajaxOk').show().delay('fast').fadeOut('slow');
} else {
$ajaxLoading.hide();
alert('Unable to update description: ' + d);
}
},
error: function (jqXHR, textStatus, errorThrown) {
alert('Unable to update description: ' + textStatus);
$ajaxLoading.hide();
}
});
});
});
</script>
</td>
</tr>
<tr>
<th>
Always Flatten Form:
</th>
<td>
<input id="DocumentTemplate_FlattenForm" type="checkbox" @(Model.DocumentTemplate.FlattenForm ? new MvcHtmlString("checked=\"checked\" ") : new MvcHtmlString(string.Empty))/>
@AjaxHelpers.AjaxLoader()
<script type="text/javascript">
$(function () {
$('#DocumentTemplate_FlattenForm').click(function () {
var $this = $(this);
var $ajaxLoading = $this.next('.ajaxLoading').show();
var data = { FlattenForm: $this.is(':checked') };
$.getJSON('@(Url.Action(MVC.API.DocumentTemplate.UpdateFlattenForm(Model.DocumentTemplate.Id)))', data, function (response, result) {
if (result != 'success' || response != 'OK') {
alert('Unable to change Flatten Form:\n' + response);
$ajaxLoading.hide();
} else {
$ajaxLoading.hide().next('.ajaxOk').show().delay('fast').fadeOut('slow');
}
});
});
});
</script>
</td>
</tr>
<tr>
<th>
Scope:
</th>
<td>
@Html.DropDownListFor(model => model.DocumentTemplate.Scope, Model.Scopes.ToSelectListItems(null))
@AjaxHelpers.AjaxLoader()
<script type="text/javascript">
$(function () {
var $scope = $('#DocumentTemplate_Scope');
$scope.change(function () {
var $ajaxLoading = $scope.next('.ajaxLoading').show();
var data = { Scope: $scope.val() };
$.ajax({
url: '@Url.Action(MVC.API.DocumentTemplate.UpdateScope(Model.DocumentTemplate.Id))',
dataType: 'json',
data: data,
success: function (d) {
if (d == 'OK') {
$ajaxLoading.hide().next('.ajaxOk').show().delay('fast').fadeOut('slow');
scopeChange();
} else {
$ajaxLoading.hide();
alert('Unable to update scope: ' + d);
}
},
error: function (jqXHR, textStatus, errorThrown) {
alert('Unable to update scope: ' + textStatus);
$ajaxLoading.hide();
}
});
});
var $trJobTypes = $('#trJobTypes');
var $trJobTypeActions = $('#trJobTypeActions');
var $jobTypes = $trJobTypes.find('input[type="checkbox"]');
$jobTypes.change(jobTypesChange);
function scopeChange() {
if ($scope.val() == 'Job') {
$trJobTypes.show();
$trJobTypeActions.show();
jobTypesChange();
} else {
$trJobTypes.hide();
$trJobTypeActions.hide();
$jobTypes.filter(':checked').each(function () {
$(this).attr('checked', false);
});
$('.jobSubTypes').hide().find('input[type="checkbox"]:checked').each(function () {
$(this).attr('checked', false);
});
}
}
function jobTypesChange() {
$('.jobSubTypes').hide();
$jobTypes.filter(':checked').each(function () {
$('#trJobSubType' + $(this).val()).show();
});
}
$('#TypeAction_Save').click(function () {
var data = { SubTypes: [] };
var $ajaxLoading = $('#TypeAction_Save').next('.ajaxLoading').show();
$jobTypes.filter(':checked').each(function () {
var $this = $(this);
$('#trJobSubType' + $this.val()).find('input[type="checkbox"]:checked').each(function () {
data.SubTypes.push($(this).val());
});
});
$.ajax({
url: '@Url.Action(MVC.API.DocumentTemplate.UpdateSubTypes(Model.DocumentTemplate.Id))',
dataType: 'json',
type: 'POST',
traditional: true,
data: data,
success: function (d) {
if (d == 'OK') {
$ajaxLoading.hide().next('.ajaxOk').show().delay('fast').fadeOut('slow');
scopeChange();
} else {
$ajaxLoading.hide();
alert('Unable to update job types: ' + d);
}
},
error: function (jqXHR, textStatus, errorThrown) {
alert('Unable to update job types: ' + textStatus);
$ajaxLoading.hide();
}
});
return false;
});
scopeChange();
});
</script>
</td>
</tr>
<tr id="trJobTypes">
<th class="name">
Types:
</th>
<td class="value">
@CommonHelpers.CheckBoxList("Types", Model.JobTypes.ToSelectListItems(Model.Types), 2)
</td>
</tr>
@foreach (var jt in Model.JobTypes)
{
<tr id="trJobSubType@(jt.Id)" class="jobSubTypes">
<th class="name">
@jt.Description<br />
Sub Types<br />
@CommonHelpers.CheckboxBulkSelect(string.Format("CheckboxBulkSelect_{0}", jt.Id))
</th>
<td class="value">
@CommonHelpers.CheckBoxList("SubTypes", Model.JobSubTypes.Where(jst => jst.JobTypeId == jt.Id).ToList().ToSelectListItems(Model.SubTypes), 2)
</td>
</tr>
}
<tr id="trJobTypeActions">
<th class="name">
</th>
<td class="value">
<a id="TypeAction_Save" href="#" class="button">Save Job Types</a>@AjaxHelpers.AjaxLoader()
</td>
</tr>
<tr>
<th>
Template PDF
</th>
<td>
@Html.ActionLink("Download Template", MVC.API.DocumentTemplate.Template(Model.DocumentTemplate.Id))
<br />
@using (Html.BeginForm(MVC.API.DocumentTemplate.Template(Model.DocumentTemplate.Id, true, null), FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<input type="file" name="Template" id="Template" style="width: 250px;" />
<input class="button" type="submit" value="Upload" />
}
<script type="text/javascript">
$(function () {
var $template = $('#Template');
$template.closest('form').submit(function () {
if ($template.val() == '') {
alert('A template file is required to upload.');
return false;
}
});
});
</script>
</td>
</tr>
<tr>
<th>
Filter Expression:
</th>
<td>@Html.TextBoxFor(model => model.DocumentTemplate.FilterExpression)
@AjaxHelpers.AjaxRemove()
@AjaxHelpers.AjaxLoader()
<script type="text/javascript">
$(function () {
var $FilterExpression = $('#DocumentTemplate_FilterExpression');
var $ajaxLoading = $FilterExpression.nextAll('.ajaxLoading').first();
var $ajaxRemove = $FilterExpression.nextAll('.ajaxRemove').first();
$FilterExpression
.watermark('Filter Expression')
.focus(function () { $FilterExpression.select() })
.keydown(function (e) {
if (e.which == 13) {
$(this).blur();
}
}).change(function () {
updateFilterExpression($FilterExpression.val());
});
if ($FilterExpression.val() != '')
$ajaxRemove.show();
$ajaxRemove.click(function () {
updateFilterExpression('');
$FilterExpression.val('');
});
var updateFilterExpression = function (filterExpression) {
$ajaxLoading.show();
$ajaxRemove.hide();
var data = { FilterExpression: filterExpression };
$.ajax({
url: '@Url.Action(MVC.API.DocumentTemplate.UpdateFilterExpression(Model.DocumentTemplate.Id))',
dataType: 'json',
data: data,
success: function (d) {
if (d == 'OK') {
$ajaxLoading.hide().next('.ajaxOk').show().delay('fast').fadeOut('slow');
if (data.FilterExpression != '')
$ajaxRemove.fadeIn('fast');
} else {
$ajaxLoading.hide();
alert('Unable to update filter expression: ' + d);
}
},
error: function (jqXHR, textStatus, errorThrown) {
alert('Unable to update filter expression: ' + textStatus);
$ajaxLoading.hide();
}
});
};
});
</script>
</td>
</tr>
<tr>
<th>
Bulk Generate
</th>
<td>
@using (Html.BeginForm(MVC.API.DocumentTemplate.BulkGenerate(Model.DocumentTemplate.Id), FormMethod.Post))
{
<textarea name="DataIds"></textarea>
<input class="button" type="submit" value="Generate" />
}
</td>
</tr>
</table>
</div>
<h2>
Template Expressions</h2>
@Html.Partial(MVC.Config.DocumentTemplate.Views._ExpressionsTable, Model.TemplateExpressions)
<div id="dialogConfirmDelete" title="Delete this Document Template?">
<p>
<span class="ui-icon ui-icon-alert" style="float: left; margin: 0 7px 100px 0;">
</span>This item will be permanently deleted and cannot be recovered.<br />
<em>This <strong>will not delete attachments</strong> which have already been imported,
but any generated documents will no longer be automatically imported.</em><br />
Are you sure?</p>
</div>
<script type="text/javascript">
$(function () {
var button = $('#buttonDelete');
var buttonDialog = $("#dialogConfirmDelete");
var buttonLink = button.attr('href');
button.attr('href', '#');
button.click(function () {
buttonDialog.dialog('open');
return false;
});
buttonDialog.dialog({
resizable: false,
modal: true,
autoOpen: false,
buttons: {
"Delete": function () {
$this = $(this);
$this.dialog('disable');
$this.dialog("option", "buttons", null);
window.location.href = buttonLink;
},
Cancel: function () {
$(this).dialog("close");
}
}
});
});
</script>
<div class="actionBar">
@Html.ActionLinkButton("Expression Browser", MVC.Config.DocumentTemplate.ExpressionBrowser())
@Html.ActionLinkButton("Delete", MVC.API.DocumentTemplate.Delete(Model.DocumentTemplate.Id, true), "buttonDelete")
</div>
@@ -0,0 +1,781 @@
#pragma warning disable 1591
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.17929
//
// 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.BI.Extensions;
using Disco.Models.Repository;
using Disco.Web;
using Disco.Web.Extensions;
[System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "1.5.0.0")]
[System.Web.WebPages.PageVirtualPathAttribute("~/Areas/Config/Views/DocumentTemplate/Show.cshtml")]
public class Show : System.Web.Mvc.WebViewPage<Disco.Web.Areas.Config.Models.DocumentTemplate.ShowModel>
{
public Show()
{
}
public override void Execute()
{
#line 2 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml"
ViewBag.Title = Html.ToBreadcrumb("Configuration", MVC.Config.Config.Index(), "Document Templates", MVC.Config.DocumentTemplate.Index(null), Model.DocumentTemplate.Description);
#line default
#line hidden
WriteLiteral("\r\n<div");
WriteLiteral(" class=\"form\"");
WriteLiteral(" style=\"width: 650px\"");
WriteLiteral(">\r\n <table>\r\n <tr>\r\n <th>\r\n Id:\r\n " +
"</th>\r\n <td>");
#line 11 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml"
Write(Html.DisplayFor(model => model.DocumentTemplate.Id));
#line default
#line hidden
WriteLiteral("\r\n </td>\r\n </tr>\r\n <tr>\r\n <th>\r\n " +
" Stored Instances:\r\n </th>\r\n <td>");
#line 18 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml"
Write(Html.DisplayFor(model => model.StoredInstanceCount));
#line default
#line hidden
WriteLiteral("\r\n </td>\r\n </tr>\r\n <tr>\r\n <th>\r\n " +
" Description:\r\n </th>\r\n <td>");
#line 25 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml"
Write(Html.TextBoxFor(model => model.DocumentTemplate.Description));
#line default
#line hidden
WriteLiteral("\r\n");
WriteLiteral(" ");
#line 26 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml"
Write(AjaxHelpers.AjaxSave());
#line default
#line hidden
WriteLiteral("\r\n");
WriteLiteral(" ");
#line 27 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml"
Write(AjaxHelpers.AjaxLoader());
#line default
#line hidden
WriteLiteral("\r\n <script");
WriteLiteral(" type=\"text/javascript\"");
WriteLiteral(@">
$(function () {
var $Description = $('#DocumentTemplate_Description');
var $DescriptionAjaxSave = $Description.next('.ajaxSave');
$Description
.watermark('Description')
.focus(function () { $Description.select() })
.keydown(function (e) {
$DescriptionAjaxSave.show();
if (e.which == 13) {
$(this).blur();
}
}).blur(function () {
$DescriptionAjaxSave.hide();
})
.change(function () {
$DescriptionAjaxSave.hide();
var $ajaxLoading = $DescriptionAjaxSave.next('.ajaxLoading').show();
var data = { Description: $Description.val() };
$.ajax({
url: '");
#line 48 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml"
Write(Url.Action(MVC.API.DocumentTemplate.UpdateDescription(Model.DocumentTemplate.Id)));
#line default
#line hidden
WriteLiteral(@"',
dataType: 'json',
data: data,
success: function (d) {
if (d == 'OK') {
$ajaxLoading.hide().next('.ajaxOk').show().delay('fast').fadeOut('slow');
} else {
$ajaxLoading.hide();
alert('Unable to update description: ' + d);
}
},
error: function (jqXHR, textStatus, errorThrown) {
alert('Unable to update description: ' + textStatus);
$ajaxLoading.hide();
}
});
});
});
</script>
</td>
</tr>
<tr>
<th>
Always Flatten Form:
</th>
<td>
<input");
WriteLiteral(" id=\"DocumentTemplate_FlattenForm\"");
WriteLiteral(" type=\"checkbox\"");
WriteLiteral(" ");
#line 74 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml"
Write(Model.DocumentTemplate.FlattenForm ? new MvcHtmlString("checked=\"checked\" ") : new MvcHtmlString(string.Empty));
#line default
#line hidden
WriteLiteral("/>\r\n");
WriteLiteral(" ");
#line 75 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml"
Write(AjaxHelpers.AjaxLoader());
#line default
#line hidden
WriteLiteral("\r\n <script");
WriteLiteral(" type=\"text/javascript\"");
WriteLiteral(@">
$(function () {
$('#DocumentTemplate_FlattenForm').click(function () {
var $this = $(this);
var $ajaxLoading = $this.next('.ajaxLoading').show();
var data = { FlattenForm: $this.is(':checked') };
$.getJSON('");
#line 82 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml"
Write(Url.Action(MVC.API.DocumentTemplate.UpdateFlattenForm(Model.DocumentTemplate.Id)));
#line default
#line hidden
WriteLiteral(@"', data, function (response, result) {
if (result != 'success' || response != 'OK') {
alert('Unable to change Flatten Form:\n' + response);
$ajaxLoading.hide();
} else {
$ajaxLoading.hide().next('.ajaxOk').show().delay('fast').fadeOut('slow');
}
});
});
});
</script>
</td>
</tr>
<tr>
<th>
Scope:
</th>
<td>
");
WriteLiteral(" ");
#line 100 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml"
Write(Html.DropDownListFor(model => model.DocumentTemplate.Scope, Model.Scopes.ToSelectListItems(null)));
#line default
#line hidden
WriteLiteral("\r\n");
WriteLiteral(" ");
#line 101 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml"
Write(AjaxHelpers.AjaxLoader());
#line default
#line hidden
WriteLiteral("\r\n <script");
WriteLiteral(" type=\"text/javascript\"");
WriteLiteral(@">
$(function () {
var $scope = $('#DocumentTemplate_Scope');
$scope.change(function () {
var $ajaxLoading = $scope.next('.ajaxLoading').show();
var data = { Scope: $scope.val() };
$.ajax({
url: '");
#line 109 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml"
Write(Url.Action(MVC.API.DocumentTemplate.UpdateScope(Model.DocumentTemplate.Id)));
#line default
#line hidden
WriteLiteral("\',\r\n dataType: \'json\',\r\n " +
" data: data,\r\n success: function (d) {\r\n " +
" if (d == \'OK\') {\r\n " +
" $ajaxLoading.hide().next(\'.ajaxOk\').show().delay(\'fast\').fadeOut(\'slow" +
"\');\r\n scopeChange();\r\n " +
" } else {\r\n $ajaxLoading." +
"hide();\r\n alert(\'Unable to update scope: " +
"\' + d);\r\n }\r\n " +
"},\r\n error: function (jqXHR, textStatus, errorThr" +
"own) {\r\n alert(\'Unable to update scope: \' + t" +
"extStatus);\r\n $ajaxLoading.hide();\r\n " +
" }\r\n });\r\n " +
" });\r\n\r\n var $trJobTypes = $(\'#trJobTypes\');\r\n " +
" var $trJobTypeActions = $(\'#trJobTypeActions\');\r\n " +
" var $jobTypes = $trJobTypes.find(\'input[type=\"checkbox\"]\');\r\n " +
" $jobTypes.change(jobTypesChange);\r\n\r\n functi" +
"on scopeChange() {\r\n if ($scope.val() == \'Job\') {\r\n " +
" $trJobTypes.show();\r\n " +
" $trJobTypeActions.show();\r\n jobTypesChange();\r" +
"\n } else {\r\n $trJobTyp" +
"es.hide();\r\n $trJobTypeActions.hide();\r\n " +
" $jobTypes.filter(\':checked\').each(function () {\r\n " +
" $(this).attr(\'checked\', false);\r\n " +
" });\r\n $(\'.jobSubTypes\').hide().find(" +
"\'input[type=\"checkbox\"]:checked\').each(function () {\r\n " +
" $(this).attr(\'checked\', false);\r\n });\r\n" +
" }\r\n }\r\n\r\n " +
" function jobTypesChange() {\r\n $(\'.jobSubTypes\').h" +
"ide();\r\n $jobTypes.filter(\':checked\').each(function (" +
") {\r\n $(\'#trJobSubType\' + $(this).val()).show();\r" +
"\n });\r\n }\r\n\r\n " +
" $(\'#TypeAction_Save\').click(function () {\r\n va" +
"r data = { SubTypes: [] };\r\n var $ajaxLoading = $(\'#T" +
"ypeAction_Save\').next(\'.ajaxLoading\').show();\r\n\r\n $jo" +
"bTypes.filter(\':checked\').each(function () {\r\n va" +
"r $this = $(this);\r\n $(\'#trJobSubType\' + $this.va" +
"l()).find(\'input[type=\"checkbox\"]:checked\').each(function () {\r\n " +
" data.SubTypes.push($(this).val());\r\n " +
" });\r\n });\r\n\r\n $.aj" +
"ax({\r\n url: \'");
#line 169 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml"
Write(Url.Action(MVC.API.DocumentTemplate.UpdateSubTypes(Model.DocumentTemplate.Id)));
#line default
#line hidden
WriteLiteral(@"',
dataType: 'json',
type: 'POST',
traditional: true,
data: data,
success: function (d) {
if (d == 'OK') {
$ajaxLoading.hide().next('.ajaxOk').show().delay('fast').fadeOut('slow');
scopeChange();
} else {
$ajaxLoading.hide();
alert('Unable to update job types: ' + d);
}
},
error: function (jqXHR, textStatus, errorThrown) {
alert('Unable to update job types: ' + textStatus);
$ajaxLoading.hide();
}
});
return false;
});
scopeChange();
});
</script>
</td>
</tr>
<tr");
WriteLiteral(" id=\"trJobTypes\"");
WriteLiteral(">\r\n <th");
WriteLiteral(" class=\"name\"");
WriteLiteral(">\r\n Types:\r\n </th>\r\n <td");
WriteLiteral(" class=\"value\"");
WriteLiteral(">\r\n");
WriteLiteral(" ");
#line 201 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml"
Write(CommonHelpers.CheckBoxList("Types", Model.JobTypes.ToSelectListItems(Model.Types), 2));
#line default
#line hidden
WriteLiteral("\r\n </td>\r\n </tr>\r\n");
#line 204 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml"
#line default
#line hidden
#line 204 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml"
foreach (var jt in Model.JobTypes)
{
#line default
#line hidden
WriteLiteral(" <tr");
WriteAttribute("id", Tuple.Create(" id=\"", 10448), Tuple.Create("\"", 10473)
, Tuple.Create(Tuple.Create("", 10453), Tuple.Create("trJobSubType", 10453), true)
#line 206 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml"
, Tuple.Create(Tuple.Create("", 10465), Tuple.Create<System.Object, System.Int32>(jt.Id
#line default
#line hidden
, 10465), false)
);
WriteLiteral(" class=\"jobSubTypes\"");
WriteLiteral(">\r\n <th");
WriteLiteral(" class=\"name\"");
WriteLiteral(">\r\n");
WriteLiteral(" ");
#line 208 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml"
Write(jt.Description);
#line default
#line hidden
WriteLiteral("<br />\r\n Sub Types<br />\r\n");
WriteLiteral(" ");
#line 210 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml"
Write(CommonHelpers.CheckboxBulkSelect(string.Format("CheckboxBulkSelect_{0}", jt.Id)));
#line default
#line hidden
WriteLiteral("\r\n </th>\r\n <td");
WriteLiteral(" class=\"value\"");
WriteLiteral(">\r\n");
WriteLiteral(" ");
#line 213 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml"
Write(CommonHelpers.CheckBoxList("SubTypes", Model.JobSubTypes.Where(jst => jst.JobTypeId == jt.Id).ToList().ToSelectListItems(Model.SubTypes), 2));
#line default
#line hidden
WriteLiteral("\r\n </td>\r\n </tr> \r\n");
#line 216 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml"
}
#line default
#line hidden
WriteLiteral(" <tr");
WriteLiteral(" id=\"trJobTypeActions\"");
WriteLiteral(">\r\n <th");
WriteLiteral(" class=\"name\"");
WriteLiteral(">\r\n </th>\r\n <td");
WriteLiteral(" class=\"value\"");
WriteLiteral(">\r\n <a");
WriteLiteral(" id=\"TypeAction_Save\"");
WriteLiteral(" href=\"#\"");
WriteLiteral(" class=\"button\"");
WriteLiteral(">Save Job Types</a>");
#line 221 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml"
Write(AjaxHelpers.AjaxLoader());
#line default
#line hidden
WriteLiteral("\r\n </td>\r\n </tr>\r\n <tr>\r\n <th>\r\n " +
" Template PDF\r\n </th>\r\n <td>\r\n");
WriteLiteral(" ");
#line 229 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml"
Write(Html.ActionLink("Download Template", MVC.API.DocumentTemplate.Template(Model.DocumentTemplate.Id)));
#line default
#line hidden
WriteLiteral("\r\n <br />\r\n");
#line 231 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml"
#line default
#line hidden
#line 231 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml"
using (Html.BeginForm(MVC.API.DocumentTemplate.Template(Model.DocumentTemplate.Id, true, null), FormMethod.Post, new { enctype = "multipart/form-data" }))
{
#line default
#line hidden
WriteLiteral(" <input");
WriteLiteral(" type=\"file\"");
WriteLiteral(" name=\"Template\"");
WriteLiteral(" id=\"Template\"");
WriteLiteral(" style=\"width: 250px;\"");
WriteLiteral(" />\r\n");
WriteLiteral(" <input");
WriteLiteral(" class=\"button\"");
WriteLiteral(" type=\"submit\"");
WriteLiteral(" value=\"Upload\"");
WriteLiteral(" />\r\n");
#line 235 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml"
}
#line default
#line hidden
WriteLiteral(" <script");
WriteLiteral(" type=\"text/javascript\"");
WriteLiteral(@">
$(function () {
var $template = $('#Template');
$template.closest('form').submit(function () {
if ($template.val() == '') {
alert('A template file is required to upload.');
return false;
}
});
});
</script>
</td>
</tr>
<tr>
<th>
Filter Expression:
</th>
<td>");
#line 253 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml"
Write(Html.TextBoxFor(model => model.DocumentTemplate.FilterExpression));
#line default
#line hidden
WriteLiteral("\r\n");
WriteLiteral(" ");
#line 254 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml"
Write(AjaxHelpers.AjaxRemove());
#line default
#line hidden
WriteLiteral("\r\n");
WriteLiteral(" ");
#line 255 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml"
Write(AjaxHelpers.AjaxLoader());
#line default
#line hidden
WriteLiteral("\r\n <script");
WriteLiteral(" type=\"text/javascript\"");
WriteLiteral(">\r\n $(function () {\r\n var $FilterExpres" +
"sion = $(\'#DocumentTemplate_FilterExpression\');\r\n var $aj" +
"axLoading = $FilterExpression.nextAll(\'.ajaxLoading\').first();\r\n " +
" var $ajaxRemove = $FilterExpression.nextAll(\'.ajaxRemove\').first();\r\n " +
" $FilterExpression\r\n .waterma" +
"rk(\'Filter Expression\')\r\n .focus(function () { $F" +
"ilterExpression.select() })\r\n .keydown(function (" +
"e) {\r\n if (e.which == 13) {\r\n " +
" $(this).blur();\r\n }\r\n" +
" }).change(function () {\r\n " +
" updateFilterExpression($FilterExpression.val());\r\n " +
" });\r\n if ($FilterExpression.val() != \'\')\r\n" +
" $ajaxRemove.show();\r\n $ajaxRe" +
"move.click(function () {\r\n updateFilterExpression(\'\')" +
";\r\n $FilterExpression.val(\'\');\r\n " +
" });\r\n var updateFilterExpression = function (filterExp" +
"ression) {\r\n $ajaxLoading.show();\r\n " +
" $ajaxRemove.hide();\r\n var data = { FilterEx" +
"pression: filterExpression };\r\n $.ajax({\r\n " +
" url: \'");
#line 282 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml"
Write(Url.Action(MVC.API.DocumentTemplate.UpdateFilterExpression(Model.DocumentTemplate.Id)));
#line default
#line hidden
WriteLiteral(@"',
dataType: 'json',
data: data,
success: function (d) {
if (d == 'OK') {
$ajaxLoading.hide().next('.ajaxOk').show().delay('fast').fadeOut('slow');
if (data.FilterExpression != '')
$ajaxRemove.fadeIn('fast');
} else {
$ajaxLoading.hide();
alert('Unable to update filter expression: ' + d);
}
},
error: function (jqXHR, textStatus, errorThrown) {
alert('Unable to update filter expression: ' + textStatus);
$ajaxLoading.hide();
}
});
};
});
</script>
</td>
</tr>
<tr>
<th>
Bulk Generate
</th>
<td>
");
#line 310 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml"
#line default
#line hidden
#line 310 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml"
using (Html.BeginForm(MVC.API.DocumentTemplate.BulkGenerate(Model.DocumentTemplate.Id), FormMethod.Post))
{
#line default
#line hidden
WriteLiteral(" <textarea");
WriteLiteral(" name=\"DataIds\"");
WriteLiteral("></textarea>\r\n");
WriteLiteral(" <input");
WriteLiteral(" class=\"button\"");
WriteLiteral(" type=\"submit\"");
WriteLiteral(" value=\"Generate\"");
WriteLiteral(" />\r\n");
#line 314 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml"
}
#line default
#line hidden
WriteLiteral(" </td>\r\n </tr>\r\n </table>\r\n</div>\r\n<h2>\r\n Template Expres" +
"sions</h2>\r\n");
#line 321 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml"
Write(Html.Partial(MVC.Config.DocumentTemplate.Views._ExpressionsTable, Model.TemplateExpressions));
#line default
#line hidden
WriteLiteral("\r\n<div");
WriteLiteral(" id=\"dialogConfirmDelete\"");
WriteLiteral(" title=\"Delete this Document Template?\"");
WriteLiteral(">\r\n <p>\r\n <span");
WriteLiteral(" class=\"ui-icon ui-icon-alert\"");
WriteLiteral(" style=\"float: left; margin: 0 7px 100px 0;\"");
WriteLiteral(@">
</span>This item will be permanently deleted and cannot be recovered.<br />
<em>This <strong>will not delete attachments</strong> which have already been imported,
but any generated documents will no longer be automatically imported.</em><br />
Are you sure?</p>
</div>
<script");
WriteLiteral(" type=\"text/javascript\"");
WriteLiteral(@">
$(function () {
var button = $('#buttonDelete');
var buttonDialog = $(""#dialogConfirmDelete"");
var buttonLink = button.attr('href');
button.attr('href', '#');
button.click(function () {
buttonDialog.dialog('open');
return false;
});
buttonDialog.dialog({
resizable: false,
modal: true,
autoOpen: false,
buttons: {
""Delete"": function () {
$this = $(this);
$this.dialog('disable');
$this.dialog(""option"", ""buttons"", null);
window.location.href = buttonLink;
},
Cancel: function () {
$(this).dialog(""close"");
}
}
});
});
</script>
<div");
WriteLiteral(" class=\"actionBar\"");
WriteLiteral(">\r\n");
WriteLiteral(" ");
#line 360 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml"
Write(Html.ActionLinkButton("Expression Browser", MVC.Config.DocumentTemplate.ExpressionBrowser()));
#line default
#line hidden
WriteLiteral("\r\n");
WriteLiteral(" ");
#line 361 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml"
Write(Html.ActionLinkButton("Delete", MVC.API.DocumentTemplate.Delete(Model.DocumentTemplate.Id, true), "buttonDelete"));
#line default
#line hidden
WriteLiteral("\r\n</div>\r\n");
}
}
}
#pragma warning restore 1591
@@ -0,0 +1,239 @@
@model Disco.Web.Areas.Config.Models.DocumentTemplate.UndetectedPagesModel
@{
ViewBag.Title = Html.ToBreadcrumb("Configuration", MVC.Config.Config.Index(), "Document Templates", MVC.Config.DocumentTemplate.Index(), "Undetected Pages");
Html.BundleDeferred("~/ClientScripts/Modules/Knockout");
Html.BundleDeferred("~/ClientScripts/Modules/jQuery-SignalR");
}
<div id="undetectedPagesContainer">
<div id="noUndetectedPages" data-bind="visible: noUndetectedPages">
<h3>
No Undetected Pages</h3>
</div>
<ul id="undetectedPages" class="clearfix" data-bind="visible: !noUndetectedPages(), foreach: {data: undetectedPages}">
<li class="undetectedPage" data-bind="style: {backgroundImage: thumbnailUrl}, click: select">
<div class="pageDetails" data-bind="text: timestampFuzzy, attr: {title: timestamp}">
</div>
</li>
</ul>
</div>
<div id="undetectedPageDialog" data-bind="with: selectedUndetectedPage">
<div class="pagePreview" data-bind="style: {backgroundImage: previewUrl}">
</div>
<div class="actions">
<a href="#" class="button" target="_blank" data-bind="attr: {href: sourceUrl}">Download</a>
<a href="#" class="button" id="dialogDeleteButton" data-bind="click: deletePage">Delete</a>
</div>
<div class="actions">
Type: @Html.DropDownList("dialogDocumentTemplateId", Model.DocumentTemplatesSelectListItems, new Dictionary<string, object> { { "data-bind", "value: dialogTemplateId" } })
Data:
<input id="dialogDataId" type="text" data-bind="value: dialogDataId, autocomplete: {source: dialogDataIdService, minLength: 3, position: {my: 'left bottom', at: 'left top'}}" />
<a href="#" class="button" id="dialogAssignButton" data-bind="click: assignPage">Assign</a>
</div>
</div>
<div id="dialogRemove" title="Delete this Page?">
<p>
<span class="ui-icon ui-icon-alert" style="float: left; margin: 0 7px 20px 0;"></span>
Are you sure?</p>
</div>
<script type="text/javascript">
ko.bindingHandlers.autocomplete = {
update: function (element, valueAccessor, allBindingsAccessor, viewModel) {
var autocompleteOptions = ko.utils.unwrapObservable(valueAccessor());
if (autocompleteOptions.source)
autocompleteOptions.source = ko.utils.unwrapObservable(autocompleteOptions.source);
$element = $(element);
if (!$element.is('.ui-autocomplete-input')) {
autocompleteOptions.select = function (e, ui) {
allBindingsAccessor().value(ui.item.value);
return false;
}
$element.autocomplete(autocompleteOptions);
} else {
// Update Source Option Only
if (autocompleteOptions.source)
$element.autocomplete('option', 'source', autocompleteOptions.source);
}
}
};
</script>
<script type="text/javascript">
$(function () {
var vm;
var urlUndetectedPageThumbnail = '@(new HtmlString(Url.Action(MVC.API.DocumentTemplate.ImporterUndetectedFile(null, false, true))))';
var urlUndetectedPagePreview = '@(new HtmlString(Url.Action(MVC.API.DocumentTemplate.ImporterUndetectedFile(null, false, false))))';
var urlUndetectedPageSource = '@(new HtmlString(Url.Action(MVC.API.DocumentTemplate.ImporterUndetectedFile(null, true, false))))';
var urlDataIdLookupService = '@(Url.Action(MVC.API.DocumentTemplate.ImporterUndetectedDataIdLookup()))/';
var urlImporterUndetectedAssign = '@(Url.Action(MVC.API.DocumentTemplate.ImporterUndetectedAssign()))/';
var urlImporterUndetectedDelete = '@(Url.Action(MVC.API.DocumentTemplate.ImporterUndetectedDelete()))/';
var $undetectedPageDialog = $('#undetectedPageDialog').dialog({
modal: true,
height: 820,
width: 800,
resizable: false,
autoOpen: false
});
$dialogRemove = $('#dialogRemove').dialog({
resizable: false,
height: 140,
modal: true,
autoOpen: false
});
function pageViewModel() {
var self = this;
self.selectedUndetectedPage = ko.observable(null);
self.undetectedPages = ko.observableArray();
self.noUndetectedPages = ko.computed(function () { return self.undetectedPages().length == 0 });
self.selectNextPage = function () {
var oldSelected = self.selectedUndetectedPage();
var oldSelectedIndex = vm.undetectedPages.indexOf(oldSelected);
if (vm.undetectedPages().length > 1) {
if (oldSelectedIndex > vm.undetectedPages().length - 1)
vm.selectedUndetectedPage(vm.undetectedPages()[oldSelectedIndex + 1]);
else
vm.selectedUndetectedPage(vm.undetectedPages()[oldSelectedIndex - 1]);
} else {
$undetectedPageDialog.dialog('close');
vm.selectedUndetectedPage(null);
}
}
}
function undetectedPageViewModel(id, timestamp, timestampFuzzy) {
var self = this;
self.id = id;
self.timestamp = timestamp;
self.timestampFuzzy = timestampFuzzy;
self.thumbnailUrl = "url(" + urlUndetectedPageThumbnail + "&id=" + id + ")";
self.previewUrl = "url(" + urlUndetectedPagePreview + "&id=" + id + ")";
self.sourceUrl = urlUndetectedPageSource + "&id=" + id;
self.select = function (e, d) {
vm.selectedUndetectedPage(self);
$undetectedPageDialog.dialog('open');
}
// Dialog Properties
self.dialogTemplateId = ko.observable(null);
self.dialogDataId = ko.observable(null);
self.dialogDataIdService = ko.computed(function () {
return urlDataIdLookupService + self.dialogTemplateId();
});
self.deletePage = function () {
$undetectedPageDialog.dialog('option', 'disabled', true);
$dialogRemove.dialog('option', 'buttons', {
"Remove": function () {
$dialogRemove.dialog("close");
var data = { id: self.id };
$.ajax({
url: urlImporterUndetectedDelete,
dataType: 'json',
data: data,
type: 'POST',
success: function (d) {
if (d == 'OK') {
vm.selectNextPage();
vm.undetectedPages.remove(self);
} else {
alert('Unable to delete page: ' + d);
}
$undetectedPageDialog.dialog('option', 'disabled', false);
},
error: function (jqXHR, textStatus, errorThrown) {
alert('Unable to delete page: ' + errorThrown);
$undetectedPageDialog.dialog('option', 'disabled', false);
}
});
},
"Cancel": function () {
$dialogRemove.dialog("close");
$undetectedPageDialog.dialog('option', 'disabled', false);
}
});
$dialogRemove.dialog('open');
return false;
}
self.assignPage = function () {
var dtId = self.dialogTemplateId();
var dId = self.dialogDataId();
if (!dtId || !dId) {
alert('Please specify a valid Document Type and Data Id');
} else {
$undetectedPageDialog.dialog('option', 'disabled', true);
var data = { id: self.id, DocumentTemplateId: dtId, DataId: dId };
$.ajax({
url: urlImporterUndetectedAssign,
dataType: 'json',
data: data,
type: 'POST',
success: function (d) {
if (d == 'OK') {
vm.selectNextPage();
vm.undetectedPages.remove(self);
} else {
alert('Unable to assign page: ' + d);
}
$undetectedPageDialog.dialog('option', 'disabled', false);
},
error: function (jqXHR, textStatus, errorThrown) {
alert('Unable to assign page: ' + errorThrown);
$undetectedPageDialog.dialog('option', 'disabled', false);
}
});
}
return false;
};
}
function init() {
vm = new pageViewModel();
$.ajax({
url: '@(Url.Action(MVC.API.DocumentTemplate.ImporterUndetectedFiles()))',
dataType: 'json',
type: 'POST',
success: init_loadedContent,
error: function (jqXHR, textStatus, errorThrown) {
alert('Unable to load content: ' + errorThrown);
}
});
}
function init_loadedContent(content) {
if (content.length > 0) {
for (var i = 0; i < content.length; i++) {
var c = content[i];
var up = new undetectedPageViewModel(c.Id, c.Timestamp, c.TimestampFuzzy);
vm.undetectedPages.push(up);
}
}
ko.applyBindings(vm);
init_loadedOpen();
}
function init_loadedOpen() {
var fileId = window.location.hash;
if (fileId) {
fileId = fileId.substr(1);
for (var i = 0; i < vm.undetectedPages().length; i++) {
var up = vm.undetectedPages()[i];
if (up.id == fileId) {
up.select();
return;
}
}
}
}
init();
});
</script>
@@ -0,0 +1,370 @@
#pragma warning disable 1591
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.17929
//
// 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.BI.Extensions;
using Disco.Models.Repository;
using Disco.Web;
using Disco.Web.Extensions;
[System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "1.5.0.0")]
[System.Web.WebPages.PageVirtualPathAttribute("~/Areas/Config/Views/DocumentTemplate/UndetectedPages.cshtml")]
public class UndetectedPages : System.Web.Mvc.WebViewPage<Disco.Web.Areas.Config.Models.DocumentTemplate.UndetectedPagesModel>
{
public UndetectedPages()
{
}
public override void Execute()
{
#line 2 "..\..\Areas\Config\Views\DocumentTemplate\UndetectedPages.cshtml"
ViewBag.Title = Html.ToBreadcrumb("Configuration", MVC.Config.Config.Index(), "Document Templates", MVC.Config.DocumentTemplate.Index(), "Undetected Pages");
Html.BundleDeferred("~/ClientScripts/Modules/Knockout");
Html.BundleDeferred("~/ClientScripts/Modules/jQuery-SignalR");
#line default
#line hidden
WriteLiteral("\r\n<div");
WriteLiteral(" id=\"undetectedPagesContainer\"");
WriteLiteral(">\r\n <div");
WriteLiteral(" id=\"noUndetectedPages\"");
WriteLiteral(" data-bind=\"visible: noUndetectedPages\"");
WriteLiteral(">\r\n <h3>\r\n No Undetected Pages</h3>\r\n </div>\r\n <ul");
WriteLiteral(" id=\"undetectedPages\"");
WriteLiteral(" class=\"clearfix\"");
WriteLiteral(" data-bind=\"visible: !noUndetectedPages(), foreach: {data: undetectedPages}\"");
WriteLiteral(">\r\n <li");
WriteLiteral(" class=\"undetectedPage\"");
WriteLiteral(" data-bind=\"style: {backgroundImage: thumbnailUrl}, click: select\"");
WriteLiteral(">\r\n <div");
WriteLiteral(" class=\"pageDetails\"");
WriteLiteral(" data-bind=\"text: timestampFuzzy, attr: {title: timestamp}\"");
WriteLiteral(">\r\n </div>\r\n </li>\r\n </ul>\r\n</div>\r\n<div");
WriteLiteral(" id=\"undetectedPageDialog\"");
WriteLiteral(" data-bind=\"with: selectedUndetectedPage\"");
WriteLiteral(">\r\n <div");
WriteLiteral(" class=\"pagePreview\"");
WriteLiteral(" data-bind=\"style: {backgroundImage: previewUrl}\"");
WriteLiteral(">\r\n </div>\r\n <div");
WriteLiteral(" class=\"actions\"");
WriteLiteral(">\r\n <a");
WriteLiteral(" href=\"#\"");
WriteLiteral(" class=\"button\"");
WriteLiteral(" target=\"_blank\"");
WriteLiteral(" data-bind=\"attr: {href: sourceUrl}\"");
WriteLiteral(">Download</a>\r\n <a");
WriteLiteral(" href=\"#\"");
WriteLiteral(" class=\"button\"");
WriteLiteral(" id=\"dialogDeleteButton\"");
WriteLiteral(" data-bind=\"click: deletePage\"");
WriteLiteral(">Delete</a>\r\n </div>\r\n <div");
WriteLiteral(" class=\"actions\"");
WriteLiteral(">\r\n Type: ");
#line 27 "..\..\Areas\Config\Views\DocumentTemplate\UndetectedPages.cshtml"
Write(Html.DropDownList("dialogDocumentTemplateId", Model.DocumentTemplatesSelectListItems, new Dictionary<string, object> { { "data-bind", "value: dialogTemplateId" } }));
#line default
#line hidden
WriteLiteral("\r\n Data:\r\n <input");
WriteLiteral(" id=\"dialogDataId\"");
WriteLiteral(" type=\"text\"");
WriteLiteral(" data-bind=\"value: dialogDataId, autocomplete: {source: dialogDataIdService, minL" +
"ength: 3, position: {my: \'left bottom\', at: \'left top\'}}\"");
WriteLiteral(" />\r\n <a");
WriteLiteral(" href=\"#\"");
WriteLiteral(" class=\"button\"");
WriteLiteral(" id=\"dialogAssignButton\"");
WriteLiteral(" data-bind=\"click: assignPage\"");
WriteLiteral(">Assign</a>\r\n </div>\r\n</div>\r\n<div");
WriteLiteral(" id=\"dialogRemove\"");
WriteLiteral(" title=\"Delete this Page?\"");
WriteLiteral(">\r\n <p>\r\n <span");
WriteLiteral(" class=\"ui-icon ui-icon-alert\"");
WriteLiteral(" style=\"float: left; margin: 0 7px 20px 0;\"");
WriteLiteral("></span>\r\n Are you sure?</p>\r\n</div>\r\n<script");
WriteLiteral(" type=\"text/javascript\"");
WriteLiteral(@">
ko.bindingHandlers.autocomplete = {
update: function (element, valueAccessor, allBindingsAccessor, viewModel) {
var autocompleteOptions = ko.utils.unwrapObservable(valueAccessor());
if (autocompleteOptions.source)
autocompleteOptions.source = ko.utils.unwrapObservable(autocompleteOptions.source);
$element = $(element);
if (!$element.is('.ui-autocomplete-input')) {
autocompleteOptions.select = function (e, ui) {
allBindingsAccessor().value(ui.item.value);
return false;
}
$element.autocomplete(autocompleteOptions);
} else {
// Update Source Option Only
if (autocompleteOptions.source)
$element.autocomplete('option', 'source', autocompleteOptions.source);
}
}
};
</script>
<script");
WriteLiteral(" type=\"text/javascript\"");
WriteLiteral(">\r\n $(function () {\r\n\r\n var vm;\r\n var urlUndetectedPageThumbnail" +
" = \'");
#line 63 "..\..\Areas\Config\Views\DocumentTemplate\UndetectedPages.cshtml"
Write(new HtmlString(Url.Action(MVC.API.DocumentTemplate.ImporterUndetectedFile(null, false, true))));
#line default
#line hidden
WriteLiteral("\';\r\n var urlUndetectedPagePreview = \'");
#line 64 "..\..\Areas\Config\Views\DocumentTemplate\UndetectedPages.cshtml"
Write(new HtmlString(Url.Action(MVC.API.DocumentTemplate.ImporterUndetectedFile(null, false, false))));
#line default
#line hidden
WriteLiteral("\';\r\n var urlUndetectedPageSource = \'");
#line 65 "..\..\Areas\Config\Views\DocumentTemplate\UndetectedPages.cshtml"
Write(new HtmlString(Url.Action(MVC.API.DocumentTemplate.ImporterUndetectedFile(null, true, false))));
#line default
#line hidden
WriteLiteral("\';\r\n var urlDataIdLookupService = \'");
#line 66 "..\..\Areas\Config\Views\DocumentTemplate\UndetectedPages.cshtml"
Write(Url.Action(MVC.API.DocumentTemplate.ImporterUndetectedDataIdLookup()));
#line default
#line hidden
WriteLiteral("/\';\r\n var urlImporterUndetectedAssign = \'");
#line 67 "..\..\Areas\Config\Views\DocumentTemplate\UndetectedPages.cshtml"
Write(Url.Action(MVC.API.DocumentTemplate.ImporterUndetectedAssign()));
#line default
#line hidden
WriteLiteral("/\';\r\n var urlImporterUndetectedDelete = \'");
#line 68 "..\..\Areas\Config\Views\DocumentTemplate\UndetectedPages.cshtml"
Write(Url.Action(MVC.API.DocumentTemplate.ImporterUndetectedDelete()));
#line default
#line hidden
WriteLiteral("/\';\r\n var $undetectedPageDialog = $(\'#undetectedPageDialog\').dialog({\r\n " +
" modal: true,\r\n height: 820,\r\n width: 800,\r\n " +
" resizable: false,\r\n autoOpen: false\r\n });\r\n\r\n $di" +
"alogRemove = $(\'#dialogRemove\').dialog({\r\n resizable: false,\r\n " +
" height: 140,\r\n modal: true,\r\n autoOpen: false\r\n " +
" });\r\n\r\n function pageViewModel() {\r\n var self = this;\r\n\r\n " +
" self.selectedUndetectedPage = ko.observable(null);\r\n self.un" +
"detectedPages = ko.observableArray();\r\n self.noUndetectedPages = ko.c" +
"omputed(function () { return self.undetectedPages().length == 0 });\r\n " +
" self.selectNextPage = function () {\r\n var oldSelected = self.sel" +
"ectedUndetectedPage();\r\n var oldSelectedIndex = vm.undetectedPage" +
"s.indexOf(oldSelected);\r\n\r\n if (vm.undetectedPages().length > 1) " +
"{\r\n if (oldSelectedIndex > vm.undetectedPages().length - 1)\r\n" +
" vm.selectedUndetectedPage(vm.undetectedPages()[oldSelect" +
"edIndex + 1]);\r\n else\r\n vm.selectedUnd" +
"etectedPage(vm.undetectedPages()[oldSelectedIndex - 1]);\r\n } else" +
" {\r\n $undetectedPageDialog.dialog(\'close\');\r\n " +
" vm.selectedUndetectedPage(null);\r\n }\r\n }\r\n " +
"}\r\n\r\n function undetectedPageViewModel(id, timestamp, timestampFuzzy) {\r\n" +
" var self = this;\r\n\r\n self.id = id;\r\n self.time" +
"stamp = timestamp;\r\n self.timestampFuzzy = timestampFuzzy;\r\n " +
" self.thumbnailUrl = \"url(\" + urlUndetectedPageThumbnail + \"&id=\" + id + \")\";\r" +
"\n self.previewUrl = \"url(\" + urlUndetectedPagePreview + \"&id=\" + id +" +
" \")\";\r\n self.sourceUrl = urlUndetectedPageSource + \"&id=\" + id;\r\n " +
" self.select = function (e, d) {\r\n vm.selectedUndetectedPa" +
"ge(self);\r\n $undetectedPageDialog.dialog(\'open\');\r\n }\r" +
"\n\r\n // Dialog Properties\r\n self.dialogTemplateId = ko.obse" +
"rvable(null);\r\n self.dialogDataId = ko.observable(null);\r\n " +
" self.dialogDataIdService = ko.computed(function () {\r\n return ur" +
"lDataIdLookupService + self.dialogTemplateId();\r\n });\r\n se" +
"lf.deletePage = function () {\r\n $undetectedPageDialog.dialog(\'opt" +
"ion\', \'disabled\', true);\r\n\r\n $dialogRemove.dialog(\'option\', \'butt" +
"ons\', {\r\n \"Remove\": function () {\r\n $d" +
"ialogRemove.dialog(\"close\");\r\n var data = { id: self.id }" +
";\r\n $.ajax({\r\n url: urlImporte" +
"rUndetectedDelete,\r\n dataType: \'json\',\r\n " +
" data: data,\r\n type: \'POST\',\r\n " +
" success: function (d) {\r\n if (" +
"d == \'OK\') {\r\n vm.selectNextPage();\r\n " +
" vm.undetectedPages.remove(self);\r\n " +
" } else {\r\n alert(\'Unable to del" +
"ete page: \' + d);\r\n }\r\n " +
" $undetectedPageDialog.dialog(\'option\', \'disabled\', false);\r\n " +
" },\r\n error: function (jqXHR, textStatus" +
", errorThrown) {\r\n alert(\'Unable to delete page: " +
"\' + errorThrown);\r\n $undetectedPageDialog.dialog(" +
"\'option\', \'disabled\', false);\r\n }\r\n " +
" });\r\n },\r\n \"Cancel\": function () {\r\n" +
" $dialogRemove.dialog(\"close\");\r\n " +
"$undetectedPageDialog.dialog(\'option\', \'disabled\', false);\r\n " +
"}\r\n });\r\n\r\n $dialogRemove.dialog(\'open\');\r\n\r\n " +
" return false;\r\n }\r\n self.assignPage = function " +
"() {\r\n var dtId = self.dialogTemplateId();\r\n var d" +
"Id = self.dialogDataId();\r\n if (!dtId || !dId) {\r\n " +
" alert(\'Please specify a valid Document Type and Data Id\');\r\n " +
" } else {\r\n $undetectedPageDialog.dialog(\'option\', \'disabled\'" +
", true);\r\n\r\n var data = { id: self.id, DocumentTemplateId: dt" +
"Id, DataId: dId };\r\n\r\n $.ajax({\r\n url:" +
" urlImporterUndetectedAssign,\r\n dataType: \'json\',\r\n " +
" data: data,\r\n type: \'POST\',\r\n " +
" success: function (d) {\r\n if (d == \'OK\'" +
") {\r\n vm.selectNextPage();\r\n " +
" vm.undetectedPages.remove(self);\r\n } else " +
"{\r\n alert(\'Unable to assign page: \' + d);\r\n " +
" }\r\n $undetectedPageDialog.dialo" +
"g(\'option\', \'disabled\', false);\r\n },\r\n " +
" error: function (jqXHR, textStatus, errorThrown) {\r\n " +
" alert(\'Unable to assign page: \' + errorThrown);\r\n " +
" $undetectedPageDialog.dialog(\'option\', \'disabled\', false);\r\n " +
" }\r\n });\r\n\r\n }\r\n return fa" +
"lse;\r\n };\r\n }\r\n\r\n function init() {\r\n vm = n" +
"ew pageViewModel();\r\n\r\n $.ajax({\r\n url: \'");
#line 202 "..\..\Areas\Config\Views\DocumentTemplate\UndetectedPages.cshtml"
Write(Url.Action(MVC.API.DocumentTemplate.ImporterUndetectedFiles()));
#line default
#line hidden
WriteLiteral(@"',
dataType: 'json',
type: 'POST',
success: init_loadedContent,
error: function (jqXHR, textStatus, errorThrown) {
alert('Unable to load content: ' + errorThrown);
}
});
}
function init_loadedContent(content) {
if (content.length > 0) {
for (var i = 0; i < content.length; i++) {
var c = content[i];
var up = new undetectedPageViewModel(c.Id, c.Timestamp, c.TimestampFuzzy);
vm.undetectedPages.push(up);
}
}
ko.applyBindings(vm);
init_loadedOpen();
}
function init_loadedOpen() {
var fileId = window.location.hash;
if (fileId) {
fileId = fileId.substr(1);
for (var i = 0; i < vm.undetectedPages().length; i++) {
var up = vm.undetectedPages()[i];
if (up.id == fileId) {
up.select();
return;
}
}
}
}
init();
});
</script>
");
}
}
}
#pragma warning restore 1591
@@ -0,0 +1,75 @@
@model IEnumerable<Disco.BI.Expressions.Expression>
<div class="expressionsTable">
@if (Model.Count() > 0)
{
<table class="expressionsTable">
<tr>
<th>
Name
</th>
<th>
Expression
</th>
<th>
Errors Allowed
</th>
</tr>
@foreach (var expression in Model.Where(m => m.IsDynamic))
{
var expressionParts = expression.Where(e => e.IsDynamic).ToArray();
<tr>
<td rowspan="@(expressionParts.Length)">
@expression.Name
</td>
@if (expressionParts[0].ParseError)
{
<td class="parseError">
@expressionParts[0].Source
<div class="code">
<strong>Expression Compilation Error:</strong><br />
@expressionParts[0].ParseErrorMessage
</div>
</td>
}
else
{
<td>
@expressionParts[0].Source
</td>
}
<td>
@(expressionParts[0].ErrorsAllowed ? "Yes" : "No")
</td>
</tr>
for (int expressionIndex = 1; expressionIndex < expressionParts.Length; expressionIndex++)
{
<tr>
@if (expressionParts[expressionIndex].ParseError)
{
<td class="parseError">
@expressionParts[expressionIndex].Source
<div class="code">
<strong>Expression Compilation Error:</strong><br />
@expressionParts[expressionIndex].ParseErrorMessage
</div>
</td>
}
else
{
<td>
@expressionParts[expressionIndex].Source
</td>
}
<td>
@(expressionParts[expressionIndex].ErrorsAllowed ? "Yes" : "No")
</td>
</tr>
}
}
</table>
}
else
{
<span class="smallMessage">No Expressions Found</span>
}
</div>
@@ -0,0 +1,346 @@
#pragma warning disable 1591
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.17929
//
// 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.BI.Extensions;
using Disco.Models.Repository;
using Disco.Web;
using Disco.Web.Extensions;
[System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "1.5.0.0")]
[System.Web.WebPages.PageVirtualPathAttribute("~/Areas/Config/Views/DocumentTemplate/_ExpressionsTable.cshtml")]
public class ExpressionsTable : System.Web.Mvc.WebViewPage<IEnumerable<Disco.BI.Expressions.Expression>>
{
public ExpressionsTable()
{
}
public override void Execute()
{
WriteLiteral("<div");
WriteLiteral(" class=\"expressionsTable\"");
WriteLiteral(">\r\n");
#line 3 "..\..\Areas\Config\Views\DocumentTemplate\_ExpressionsTable.cshtml"
#line default
#line hidden
#line 3 "..\..\Areas\Config\Views\DocumentTemplate\_ExpressionsTable.cshtml"
if (Model.Count() > 0)
{
#line default
#line hidden
WriteLiteral(" <table");
WriteLiteral(" class=\"expressionsTable\"");
WriteLiteral(@">
<tr>
<th>
Name
</th>
<th>
Expression
</th>
<th>
Errors Allowed
</th>
</tr>
");
#line 17 "..\..\Areas\Config\Views\DocumentTemplate\_ExpressionsTable.cshtml"
#line default
#line hidden
#line 17 "..\..\Areas\Config\Views\DocumentTemplate\_ExpressionsTable.cshtml"
foreach (var expression in Model.Where(m => m.IsDynamic))
{
var expressionParts = expression.Where(e => e.IsDynamic).ToArray();
#line default
#line hidden
WriteLiteral(" <tr>\r\n <td");
WriteAttribute("rowspan", Tuple.Create(" rowspan=\"", 647), Tuple.Create("\"", 682)
#line 21 "..\..\Areas\Config\Views\DocumentTemplate\_ExpressionsTable.cshtml"
, Tuple.Create(Tuple.Create("", 657), Tuple.Create<System.Object, System.Int32>(expressionParts.Length
#line default
#line hidden
, 657), false)
);
WriteLiteral(">\r\n");
WriteLiteral(" ");
#line 22 "..\..\Areas\Config\Views\DocumentTemplate\_ExpressionsTable.cshtml"
Write(expression.Name);
#line default
#line hidden
WriteLiteral("\r\n </td>\r\n");
#line 24 "..\..\Areas\Config\Views\DocumentTemplate\_ExpressionsTable.cshtml"
#line default
#line hidden
#line 24 "..\..\Areas\Config\Views\DocumentTemplate\_ExpressionsTable.cshtml"
if (expressionParts[0].ParseError)
{
#line default
#line hidden
WriteLiteral(" <td");
WriteLiteral(" class=\"parseError\"");
WriteLiteral(">\r\n");
WriteLiteral(" ");
#line 27 "..\..\Areas\Config\Views\DocumentTemplate\_ExpressionsTable.cshtml"
Write(expressionParts[0].Source);
#line default
#line hidden
WriteLiteral("\r\n <div");
WriteLiteral(" class=\"code\"");
WriteLiteral(">\r\n <strong>Expression Compilation Error:</strong>" +
"<br />\r\n");
WriteLiteral(" ");
#line 30 "..\..\Areas\Config\Views\DocumentTemplate\_ExpressionsTable.cshtml"
Write(expressionParts[0].ParseErrorMessage);
#line default
#line hidden
WriteLiteral("\r\n </div>\r\n </td>\r\n");
#line 33 "..\..\Areas\Config\Views\DocumentTemplate\_ExpressionsTable.cshtml"
}
else
{
#line default
#line hidden
WriteLiteral(" <td>\r\n");
WriteLiteral(" ");
#line 37 "..\..\Areas\Config\Views\DocumentTemplate\_ExpressionsTable.cshtml"
Write(expressionParts[0].Source);
#line default
#line hidden
WriteLiteral("\r\n </td>\r\n");
#line 39 "..\..\Areas\Config\Views\DocumentTemplate\_ExpressionsTable.cshtml"
}
#line default
#line hidden
WriteLiteral(" <td>\r\n");
WriteLiteral(" ");
#line 41 "..\..\Areas\Config\Views\DocumentTemplate\_ExpressionsTable.cshtml"
Write(expressionParts[0].ErrorsAllowed ? "Yes" : "No");
#line default
#line hidden
WriteLiteral("\r\n </td>\r\n </tr>\r\n");
#line 44 "..\..\Areas\Config\Views\DocumentTemplate\_ExpressionsTable.cshtml"
for (int expressionIndex = 1; expressionIndex < expressionParts.Length; expressionIndex++)
{
#line default
#line hidden
WriteLiteral(" <tr>\r\n");
#line 47 "..\..\Areas\Config\Views\DocumentTemplate\_ExpressionsTable.cshtml"
#line default
#line hidden
#line 47 "..\..\Areas\Config\Views\DocumentTemplate\_ExpressionsTable.cshtml"
if (expressionParts[expressionIndex].ParseError)
{
#line default
#line hidden
WriteLiteral(" <td");
WriteLiteral(" class=\"parseError\"");
WriteLiteral(">\r\n");
WriteLiteral(" ");
#line 50 "..\..\Areas\Config\Views\DocumentTemplate\_ExpressionsTable.cshtml"
Write(expressionParts[expressionIndex].Source);
#line default
#line hidden
WriteLiteral("\r\n <div");
WriteLiteral(" class=\"code\"");
WriteLiteral(">\r\n <strong>Expression Compilation Error:</strong>" +
"<br />\r\n");
WriteLiteral(" ");
#line 53 "..\..\Areas\Config\Views\DocumentTemplate\_ExpressionsTable.cshtml"
Write(expressionParts[expressionIndex].ParseErrorMessage);
#line default
#line hidden
WriteLiteral("\r\n </div>\r\n </td>\r\n");
#line 56 "..\..\Areas\Config\Views\DocumentTemplate\_ExpressionsTable.cshtml"
}
else
{
#line default
#line hidden
WriteLiteral(" <td>\r\n");
WriteLiteral(" ");
#line 60 "..\..\Areas\Config\Views\DocumentTemplate\_ExpressionsTable.cshtml"
Write(expressionParts[expressionIndex].Source);
#line default
#line hidden
WriteLiteral("\r\n </td>\r\n");
#line 62 "..\..\Areas\Config\Views\DocumentTemplate\_ExpressionsTable.cshtml"
}
#line default
#line hidden
WriteLiteral(" <td>\r\n");
WriteLiteral(" ");
#line 64 "..\..\Areas\Config\Views\DocumentTemplate\_ExpressionsTable.cshtml"
Write(expressionParts[expressionIndex].ErrorsAllowed ? "Yes" : "No");
#line default
#line hidden
WriteLiteral("\r\n </td>\r\n </tr>\r\n");
#line 67 "..\..\Areas\Config\Views\DocumentTemplate\_ExpressionsTable.cshtml"
}
}
#line default
#line hidden
WriteLiteral(" </table>\r\n");
#line 70 "..\..\Areas\Config\Views\DocumentTemplate\_ExpressionsTable.cshtml"
}
else
{
#line default
#line hidden
WriteLiteral(" <span");
WriteLiteral(" class=\"smallMessage\"");
WriteLiteral(">No Expressions Found</span>\r\n");
#line 74 "..\..\Areas\Config\Views\DocumentTemplate\_ExpressionsTable.cshtml"
}
#line default
#line hidden
WriteLiteral("</div>\r\n");
}
}
}
#pragma warning restore 1591