feature: document handlers

This commit is contained in:
Gary Sharp
2022-12-03 14:32:05 +11:00
parent 96cccab958
commit 13e666d95a
26 changed files with 1027 additions and 120 deletions
@@ -5,54 +5,28 @@
selectListItems.Add(new SelectListItem() { Selected = true, Value = string.Empty, Text = "Generate Document" });
selectListItems.AddRange(Model.Templates.ToSelectListItems());
selectListItems.AddRange(Model.TemplatePackages.ToSelectListItems());
<div id="Document_Generation_Container">
<div id="Document_Generation_Container" data-targetid="@HttpUtility.UrlEncode(Model.Target.AttachmentReferenceId)" data-targettype="@Model.Target.HasAttachmentType" data-generatepdfurl="@Url.Action(MVC.API.DocumentTemplate.Generate())/" data-generatepackageurl="@Url.Action(MVC.API.DocumentTemplatePackage.Generate())/" data-handlerspresent="@(Model.HandlersPresent ? "true" : "false")" data-handlersurl="@Url.Action(MVC.API.DocumentTemplate.DocumentHandlers())">
@Html.DropDownList("Document_Generate", selectListItems)
<div id="Document_Generation_Dialog" class="dialog" title="Generate Document">
</div>
@if (Model.HandlersPresent)
{
<div id="Document_Generation_Dialog" class="dialog" title="Generate Document">
<div class="handlerPicker">
<div data-id="download" class="selected">
<i class="fa fa-download fa-fw fa-lg"></i>Download
</div>
<div id="Document_Generation_Dialog_Handlers_Loading">
<i class="ajaxLoading" title="Loading"></i>
</div>
</div>
<div class="details">
<div id="Document_Generation_Dialog_Download_Container">
<a id="Document_Generation_Dialog_Download" href="#" class="button">Download Document</a>
</div>
<div id="Document_Generation_Dialog_HandlerUI">
</div>
</div>
</div>
}
</div>
<script type="text/javascript">
$(function () {
var generatePdfUrl = '@Url.Action(MVC.API.DocumentTemplate.Generate())/';
var generatePackageUrl = '@Url.Action(MVC.API.DocumentTemplatePackage.Generate())/';
var generateTargetId = '@HttpUtility.UrlEncode(Model.Target.AttachmentReferenceId)';
var $control = $('#Document_Generate');
var $generationHost;
var downloadDocument = function (templateId) {
var url;
if (templateId.lastIndexOf('Package:', 0) === 0)
url = generatePackageUrl + templateId.substring(8);
else
url = generatePdfUrl + templateId;
url = url + '?TargetId=' + generateTargetId;
if ($.connection && $.connection.hub && $.connection.hub.transport &&
$.connection.hub.transport.name == 'foreverFrame') {
// SignalR active with foreverFrame transport - use popup window
window.open(url, '_blank', 'height=150,width=250,location=no,menubar=no,resizable=no,scrollbars=no,status=no,toolbar=no');
} else {
// use iFrame
if (!$generationHost) {
$generationHost = $('<iframe>')
.attr({ 'src': url, 'title': 'Document Generation Host' })
.addClass('hidden')
.appendTo('body')
.contents();
} else {
$generationHost[0].location.href = url;
}
}
}
$control.change(function () {
var templateId = $control.val();
if (templateId) {
downloadDocument(templateId);
$control.val('').blur();
}
});
});
</script>
Html.BundleDeferred("~/ClientScripts/Modules/Disco-DocumentGenerator");
}