feature: user details are individually exported; shared export field renderer

This commit is contained in:
Gary Sharp
2025-02-26 13:23:24 +11:00
parent 539503133a
commit a9687b5f25
65 changed files with 1559 additions and 2743 deletions
@@ -0,0 +1,79 @@
@using Disco.Models.Services.Exporting;
@using System.Collections.Generic;
@model List<ExportOptionGroup>
@{
var optionId = 0;
}
<div id="Export_Fields" class="form" style="width: 570px; margin-top: 15px;">
<h2>Export Fields <a id="Export_Fields_Defaults" href="#">(Defaults)</a></h2>
<table>
@foreach (var optionGroup in Model)
{
var optionFields = optionGroup.ToList();
var itemsPerColumn = (int)Math.Ceiling((double)optionFields.Count / 2);
<tr>
<th style="width: 120px;">
@optionGroup.Name
@if (optionFields.Count > 2)
{
<span style="display: block;" class="select"><a class="selectAll" href="#">ALL</a> | <a class="selectNone" href="#">NONE</a></span>
}
</th>
<td>
<div class="Export_Fields_Group">
<table class="none">
<tr>
<td style="width: 50%">
<ul class="none">
@foreach (var optionItem in optionFields.Take(itemsPerColumn))
{
<li title="@optionItem.Description">
<input type="checkbox" id="Export_Field_Option_@optionId" name="Options.@(optionItem.CustomKey ?? optionItem.Name)" value="@(optionItem.CustomValue ?? "true")" @(optionItem.IsDefault ? " data-default" : null) @((optionItem.IsChecked) ? " checked " : null) /><label for="Export_Field_Option_@optionId">@optionItem.DisplayName</label>
</li>
optionId++;
}
</ul>
</td>
<td style="width: 50%">
<ul class="none">
@foreach (var optionItem in optionFields.Skip(itemsPerColumn))
{
<li title="@optionItem.Description">
<input type="checkbox" id="Export_Field_Option_@optionId" name="Options.@(optionItem.CustomKey ?? optionItem.Name)" value="@(optionItem.CustomValue ?? "true")" @(optionItem.IsDefault ? " data-default" : null) @((optionItem.IsChecked) ? " checked " : null) /><label for="Export_Field_Option_@optionId">@optionItem.DisplayName</label>
</li>
optionId++;
}
</ul>
</td>
</tr>
</table>
</div>
</td>
</tr>
}
</table>
</div>
<script>
$(function () {
var $exportFields = $('#Export_Fields');
var $form = $exportFields.closest('form');
var $exportingDialog = null;
$exportFields.on('click', 'a.selectAll,a.selectNone', function (e) {
e.preventDefault();
const $this = $(this);
$this.closest('tr').find('input').prop('checked', $this.is('.selectAll'));
return false;
});
$('#Export_Fields_Defaults').click(function (e) {
e.preventDefault();
$exportFields.find('input').prop('checked', false);
$exportFields.find('input[data-default]').prop('checked', true);
return false;
});
});
</script>
@@ -0,0 +1,450 @@
#pragma warning disable 1591
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace Disco.Web.Views.Shared
{
using System;
#line 2 "..\..\Views\Shared\_ExportFields.cshtml"
using System.Collections.Generic;
#line default
#line hidden
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Web;
using System.Web.Helpers;
using System.Web.Mvc;
using System.Web.Mvc.Ajax;
using System.Web.Mvc.Html;
using System.Web.Routing;
using System.Web.Security;
using System.Web.UI;
using System.Web.WebPages;
using Disco;
using Disco.Models.Repository;
#line 1 "..\..\Views\Shared\_ExportFields.cshtml"
using Disco.Models.Services.Exporting;
#line default
#line hidden
using Disco.Services;
using Disco.Services.Authorization;
using Disco.Services.Web;
using Disco.Web;
using Disco.Web.Extensions;
[System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "2.0.0.0")]
[System.Web.WebPages.PageVirtualPathAttribute("~/Views/Shared/_ExportFields.cshtml")]
public partial class _ExportFields : Disco.Services.Web.WebViewPage<List<ExportOptionGroup>>
{
public _ExportFields()
{
}
public override void Execute()
{
#line 4 "..\..\Views\Shared\_ExportFields.cshtml"
var optionId = 0;
#line default
#line hidden
WriteLiteral("\r\n<div");
WriteLiteral(" id=\"Export_Fields\"");
WriteLiteral(" class=\"form\"");
WriteLiteral(" style=\"width: 570px; margin-top: 15px;\"");
WriteLiteral(">\r\n <h2>Export Fields <a");
WriteLiteral(" id=\"Export_Fields_Defaults\"");
WriteLiteral(" href=\"#\"");
WriteLiteral(">(Defaults)</a></h2>\r\n <table>\r\n");
#line 10 "..\..\Views\Shared\_ExportFields.cshtml"
#line default
#line hidden
#line 10 "..\..\Views\Shared\_ExportFields.cshtml"
foreach (var optionGroup in Model)
{
var optionFields = optionGroup.ToList();
var itemsPerColumn = (int)Math.Ceiling((double)optionFields.Count / 2);
#line default
#line hidden
WriteLiteral(" <tr>\r\n <th");
WriteLiteral(" style=\"width: 120px;\"");
WriteLiteral(">\r\n");
WriteLiteral(" ");
#line 16 "..\..\Views\Shared\_ExportFields.cshtml"
Write(optionGroup.Name);
#line default
#line hidden
WriteLiteral("\r\n");
#line 17 "..\..\Views\Shared\_ExportFields.cshtml"
#line default
#line hidden
#line 17 "..\..\Views\Shared\_ExportFields.cshtml"
if (optionFields.Count > 2)
{
#line default
#line hidden
WriteLiteral(" <span");
WriteLiteral(" style=\"display: block;\"");
WriteLiteral(" class=\"select\"");
WriteLiteral("><a");
WriteLiteral(" class=\"selectAll\"");
WriteLiteral(" href=\"#\"");
WriteLiteral(">ALL</a> | <a");
WriteLiteral(" class=\"selectNone\"");
WriteLiteral(" href=\"#\"");
WriteLiteral(">NONE</a></span>\r\n");
#line 20 "..\..\Views\Shared\_ExportFields.cshtml"
}
#line default
#line hidden
WriteLiteral(" </th>\r\n <td>\r\n <div");
WriteLiteral(" class=\"Export_Fields_Group\"");
WriteLiteral(">\r\n <table");
WriteLiteral(" class=\"none\"");
WriteLiteral(">\r\n <tr>\r\n <td");
WriteLiteral(" style=\"width: 50%\"");
WriteLiteral(">\r\n <ul");
WriteLiteral(" class=\"none\"");
WriteLiteral(">\r\n");
#line 28 "..\..\Views\Shared\_ExportFields.cshtml"
#line default
#line hidden
#line 28 "..\..\Views\Shared\_ExportFields.cshtml"
foreach (var optionItem in optionFields.Take(itemsPerColumn))
{
#line default
#line hidden
WriteLiteral(" <li");
WriteAttribute("title", Tuple.Create(" title=\"", 1349), Tuple.Create("\"", 1380)
#line 30 "..\..\Views\Shared\_ExportFields.cshtml"
, Tuple.Create(Tuple.Create("", 1357), Tuple.Create<System.Object, System.Int32>(optionItem.Description
#line default
#line hidden
, 1357), false)
);
WriteLiteral(">\r\n <input");
WriteLiteral(" type=\"checkbox\"");
WriteAttribute("id", Tuple.Create(" id=\"", 1454), Tuple.Create("\"", 1488)
, Tuple.Create(Tuple.Create("", 1459), Tuple.Create("Export_Field_Option_", 1459), true)
#line 31 "..\..\Views\Shared\_ExportFields.cshtml"
, Tuple.Create(Tuple.Create("", 1479), Tuple.Create<System.Object, System.Int32>(optionId
#line default
#line hidden
, 1479), false)
);
WriteAttribute("name", Tuple.Create(" name=\"", 1489), Tuple.Create("\"", 1546)
, Tuple.Create(Tuple.Create("", 1496), Tuple.Create("Options.", 1496), true)
#line 31 "..\..\Views\Shared\_ExportFields.cshtml"
, Tuple.Create(Tuple.Create("", 1504), Tuple.Create<System.Object, System.Int32>(optionItem.CustomKey ?? optionItem.Name
#line default
#line hidden
, 1504), false)
);
WriteAttribute("value", Tuple.Create(" value=\"", 1547), Tuple.Create("\"", 1590)
#line 31 "..\..\Views\Shared\_ExportFields.cshtml"
, Tuple.Create(Tuple.Create("", 1555), Tuple.Create<System.Object, System.Int32>(optionItem.CustomValue ?? "true"
#line default
#line hidden
, 1555), false)
);
WriteLiteral(" ");
#line 31 "..\..\Views\Shared\_ExportFields.cshtml"
Write(optionItem.IsDefault ? " data-default" : null);
#line default
#line hidden
WriteLiteral(" ");
#line 31 "..\..\Views\Shared\_ExportFields.cshtml"
Write((optionItem.IsChecked) ? " checked " : null);
#line default
#line hidden
WriteLiteral(" /><label");
WriteAttribute("for", Tuple.Create(" for=\"", 1696), Tuple.Create("\"", 1731)
, Tuple.Create(Tuple.Create("", 1702), Tuple.Create("Export_Field_Option_", 1702), true)
#line 31 "..\..\Views\Shared\_ExportFields.cshtml"
, Tuple.Create(Tuple.Create("", 1722), Tuple.Create<System.Object, System.Int32>(optionId
#line default
#line hidden
, 1722), false)
);
WriteLiteral(">");
#line 31 "..\..\Views\Shared\_ExportFields.cshtml"
Write(optionItem.DisplayName);
#line default
#line hidden
WriteLiteral("</label>\r\n </li>\r\n");
#line 33 "..\..\Views\Shared\_ExportFields.cshtml"
optionId++;
}
#line default
#line hidden
WriteLiteral(" </ul>\r\n </td>\r" +
"\n <td");
WriteLiteral(" style=\"width: 50%\"");
WriteLiteral(">\r\n <ul");
WriteLiteral(" class=\"none\"");
WriteLiteral(">\r\n");
#line 39 "..\..\Views\Shared\_ExportFields.cshtml"
#line default
#line hidden
#line 39 "..\..\Views\Shared\_ExportFields.cshtml"
foreach (var optionItem in optionFields.Skip(itemsPerColumn))
{
#line default
#line hidden
WriteLiteral(" <li");
WriteAttribute("title", Tuple.Create(" title=\"", 2305), Tuple.Create("\"", 2336)
#line 41 "..\..\Views\Shared\_ExportFields.cshtml"
, Tuple.Create(Tuple.Create("", 2313), Tuple.Create<System.Object, System.Int32>(optionItem.Description
#line default
#line hidden
, 2313), false)
);
WriteLiteral(">\r\n <input");
WriteLiteral(" type=\"checkbox\"");
WriteAttribute("id", Tuple.Create(" id=\"", 2410), Tuple.Create("\"", 2444)
, Tuple.Create(Tuple.Create("", 2415), Tuple.Create("Export_Field_Option_", 2415), true)
#line 42 "..\..\Views\Shared\_ExportFields.cshtml"
, Tuple.Create(Tuple.Create("", 2435), Tuple.Create<System.Object, System.Int32>(optionId
#line default
#line hidden
, 2435), false)
);
WriteAttribute("name", Tuple.Create(" name=\"", 2445), Tuple.Create("\"", 2502)
, Tuple.Create(Tuple.Create("", 2452), Tuple.Create("Options.", 2452), true)
#line 42 "..\..\Views\Shared\_ExportFields.cshtml"
, Tuple.Create(Tuple.Create("", 2460), Tuple.Create<System.Object, System.Int32>(optionItem.CustomKey ?? optionItem.Name
#line default
#line hidden
, 2460), false)
);
WriteAttribute("value", Tuple.Create(" value=\"", 2503), Tuple.Create("\"", 2546)
#line 42 "..\..\Views\Shared\_ExportFields.cshtml"
, Tuple.Create(Tuple.Create("", 2511), Tuple.Create<System.Object, System.Int32>(optionItem.CustomValue ?? "true"
#line default
#line hidden
, 2511), false)
);
WriteLiteral(" ");
#line 42 "..\..\Views\Shared\_ExportFields.cshtml"
Write(optionItem.IsDefault ? " data-default" : null);
#line default
#line hidden
WriteLiteral(" ");
#line 42 "..\..\Views\Shared\_ExportFields.cshtml"
Write((optionItem.IsChecked) ? " checked " : null);
#line default
#line hidden
WriteLiteral(" /><label");
WriteAttribute("for", Tuple.Create(" for=\"", 2652), Tuple.Create("\"", 2687)
, Tuple.Create(Tuple.Create("", 2658), Tuple.Create("Export_Field_Option_", 2658), true)
#line 42 "..\..\Views\Shared\_ExportFields.cshtml"
, Tuple.Create(Tuple.Create("", 2678), Tuple.Create<System.Object, System.Int32>(optionId
#line default
#line hidden
, 2678), false)
);
WriteLiteral(">");
#line 42 "..\..\Views\Shared\_ExportFields.cshtml"
Write(optionItem.DisplayName);
#line default
#line hidden
WriteLiteral("</label>\r\n </li>\r\n");
#line 44 "..\..\Views\Shared\_ExportFields.cshtml"
optionId++;
}
#line default
#line hidden
WriteLiteral(" </ul>\r\n </td>\r" +
"\n </tr>\r\n </table>\r\n " +
" </div>\r\n </td>\r\n </tr>\r\n");
#line 53 "..\..\Views\Shared\_ExportFields.cshtml"
}
#line default
#line hidden
WriteLiteral(@" </table>
</div>
<script>
$(function () {
var $exportFields = $('#Export_Fields');
var $form = $exportFields.closest('form');
var $exportingDialog = null;
$exportFields.on('click', 'a.selectAll,a.selectNone', function (e) {
e.preventDefault();
const $this = $(this);
$this.closest('tr').find('input').prop('checked', $this.is('.selectAll'));
return false;
});
$('#Export_Fields_Defaults').click(function (e) {
e.preventDefault();
$exportFields.find('input').prop('checked', false);
$exportFields.find('input[data-default]').prop('checked', true);
return false;
});
});
</script>
");
}
}
}
#pragma warning restore 1591
+1 -1
View File
@@ -17,7 +17,7 @@
<div class="page">
<header>
<div id="heading">
<a href="@Url.Action(MVC.Job.Index())"><i title="Disco ICT - Jobs"></i></a>
<a href="@Url.Action(MVC.Job.Index())"><i title="Disco ICT"></i></a>
</div>
<nav>
<ul id="menu">
+30 -30
View File
@@ -135,7 +135,7 @@ WriteAttribute("href", Tuple.Create(" href=\"", 688), Tuple.Create("\"", 723)
WriteLiteral("><i");
WriteLiteral(" title=\"Disco ICT - Jobs\"");
WriteLiteral(" title=\"Disco ICT\"");
WriteLiteral("></i></a>\r\n </div>\r\n <nav>\r\n <ul");
@@ -143,15 +143,15 @@ WriteLiteral(" id=\"menu\"");
WriteLiteral(">\r\n <li");
WriteAttribute("class", Tuple.Create(" class=\"", 857), Tuple.Create("\"", 947)
, Tuple.Create(Tuple.Create("", 865), Tuple.Create("d-sm", 865), true)
WriteAttribute("class", Tuple.Create(" class=\"", 850), Tuple.Create("\"", 940)
, Tuple.Create(Tuple.Create("", 858), Tuple.Create("d-sm", 858), true)
#line 24 "..\..\Views\Shared\_Layout.cshtml"
, Tuple.Create(Tuple.Create("", 869), Tuple.Create<System.Object, System.Int32>((string)ViewContext.ViewData["MenuArea"] == MVC.Job.Name ? " active" : null
, Tuple.Create(Tuple.Create("", 862), Tuple.Create<System.Object, System.Int32>((string)ViewContext.ViewData["MenuArea"] == MVC.Job.Name ? " active" : null
#line default
#line hidden
, 869), false)
, 862), false)
);
WriteLiteral(">");
@@ -208,37 +208,37 @@ WriteLiteral("></i><a>Queues</a>\r\n <ul>\r\n
#line hidden
WriteLiteral(" <li><a");
WriteAttribute("href", Tuple.Create(" href=\"", 1688), Tuple.Create("\"", 1745)
WriteAttribute("href", Tuple.Create(" href=\"", 1681), Tuple.Create("\"", 1738)
#line 35 "..\..\Views\Shared\_Layout.cshtml"
, Tuple.Create(Tuple.Create("", 1695), Tuple.Create<System.Object, System.Int32>(Url.Action(MVC.Job.Queue(queueToken.JobQueue.Id))
, Tuple.Create(Tuple.Create("", 1688), Tuple.Create<System.Object, System.Int32>(Url.Action(MVC.Job.Queue(queueToken.JobQueue.Id))
#line default
#line hidden
, 1695), false)
, 1688), false)
);
WriteLiteral("><i");
WriteAttribute("class", Tuple.Create(" class=\"", 1749), Tuple.Create("\"", 1832)
, Tuple.Create(Tuple.Create("", 1757), Tuple.Create("fa", 1757), true)
, Tuple.Create(Tuple.Create(" ", 1759), Tuple.Create("fa-", 1760), true)
WriteAttribute("class", Tuple.Create(" class=\"", 1742), Tuple.Create("\"", 1825)
, Tuple.Create(Tuple.Create("", 1750), Tuple.Create("fa", 1750), true)
, Tuple.Create(Tuple.Create(" ", 1752), Tuple.Create("fa-", 1753), true)
#line 35 "..\..\Views\Shared\_Layout.cshtml"
, Tuple.Create(Tuple.Create("", 1763), Tuple.Create<System.Object, System.Int32>(queueToken.JobQueue.Icon
, Tuple.Create(Tuple.Create("", 1756), Tuple.Create<System.Object, System.Int32>(queueToken.JobQueue.Icon
#line default
#line hidden
, 1763), false)
, Tuple.Create(Tuple.Create(" ", 1790), Tuple.Create("fa-fw", 1791), true)
, Tuple.Create(Tuple.Create(" ", 1796), Tuple.Create("d-", 1797), true)
, 1756), false)
, Tuple.Create(Tuple.Create(" ", 1783), Tuple.Create("fa-fw", 1784), true)
, Tuple.Create(Tuple.Create(" ", 1789), Tuple.Create("d-", 1790), true)
#line 35 "..\..\Views\Shared\_Layout.cshtml"
, Tuple.Create(Tuple.Create("", 1799), Tuple.Create<System.Object, System.Int32>(queueToken.JobQueue.IconColour
, Tuple.Create(Tuple.Create("", 1792), Tuple.Create<System.Object, System.Int32>(queueToken.JobQueue.IconColour
#line default
#line hidden
, 1799), false)
, 1792), false)
);
WriteLiteral("></i>");
@@ -718,14 +718,14 @@ WriteLiteral(" </ul>\r\n </li>\r\n");
#line hidden
WriteLiteral(" <li");
WriteAttribute("class", Tuple.Create(" class=\"", 6912), Tuple.Create("\"", 7000)
WriteAttribute("class", Tuple.Create(" class=\"", 6905), Tuple.Create("\"", 6993)
#line 111 "..\..\Views\Shared\_Layout.cshtml"
, Tuple.Create(Tuple.Create("", 6920), Tuple.Create<System.Object, System.Int32>((string)ViewContext.ViewData["MenuArea"] == MVC.Device.Name ? "active" : null
, Tuple.Create(Tuple.Create("", 6913), Tuple.Create<System.Object, System.Int32>((string)ViewContext.ViewData["MenuArea"] == MVC.Device.Name ? "active" : null
#line default
#line hidden
, 6920), false)
, 6913), false)
);
WriteLiteral(">");
@@ -758,14 +758,14 @@ WriteLiteral(" ");
#line hidden
WriteLiteral(" <li");
WriteAttribute("class", Tuple.Create(" class=\"", 7213), Tuple.Create("\"", 7299)
WriteAttribute("class", Tuple.Create(" class=\"", 7206), Tuple.Create("\"", 7292)
#line 115 "..\..\Views\Shared\_Layout.cshtml"
, Tuple.Create(Tuple.Create("", 7221), Tuple.Create<System.Object, System.Int32>((string)ViewContext.ViewData["MenuArea"] == MVC.User.Name ? "active" : null
, Tuple.Create(Tuple.Create("", 7214), Tuple.Create<System.Object, System.Int32>((string)ViewContext.ViewData["MenuArea"] == MVC.User.Name ? "active" : null
#line default
#line hidden
, 7221), false)
, 7214), false)
);
WriteLiteral(">");
@@ -788,15 +788,15 @@ WriteLiteral("</li>\r\n");
#line hidden
WriteLiteral(" <li");
WriteAttribute("class", Tuple.Create(" class=\"", 7413), Tuple.Create("\"", 7511)
, Tuple.Create(Tuple.Create("", 7421), Tuple.Create("moveRight", 7421), true)
WriteAttribute("class", Tuple.Create(" class=\"", 7406), Tuple.Create("\"", 7504)
, Tuple.Create(Tuple.Create("", 7414), Tuple.Create("moveRight", 7414), true)
#line 117 "..\..\Views\Shared\_Layout.cshtml"
, Tuple.Create(Tuple.Create("", 7430), Tuple.Create<System.Object, System.Int32>((string)ViewContext.ViewData["MenuArea"] == MVC.Public.Name ? " active" : null
, Tuple.Create(Tuple.Create("", 7423), Tuple.Create<System.Object, System.Int32>((string)ViewContext.ViewData["MenuArea"] == MVC.Public.Name ? " active" : null
#line default
#line hidden
, 7430), false)
, 7423), false)
);
WriteLiteral(">");
@@ -826,14 +826,14 @@ WriteLiteral("</li>\r\n");
#line hidden
WriteLiteral(" <li");
WriteAttribute("class", Tuple.Create(" class=\"", 7689), Tuple.Create("\"", 7777)
WriteAttribute("class", Tuple.Create(" class=\"", 7682), Tuple.Create("\"", 7770)
#line 120 "..\..\Views\Shared\_Layout.cshtml"
, Tuple.Create(Tuple.Create("", 7697), Tuple.Create<System.Object, System.Int32>((string)ViewContext.ViewData["MenuArea"] == MVC.Config.Name ? "active" : null
, Tuple.Create(Tuple.Create("", 7690), Tuple.Create<System.Object, System.Int32>((string)ViewContext.ViewData["MenuArea"] == MVC.Config.Name ? "active" : null
#line default
#line hidden
, 7697), false)
, 7690), false)
);
WriteLiteral(">");