Fix: Javascript Bugs
jQuery v1.9 migrations; Isotope Update
This commit is contained in:
@@ -1,322 +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">
|
||||
|
||||
</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}">
|
||||
|
||||
</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>
|
||||
@{
|
||||
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">
|
||||
|
||||
</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}">
|
||||
|
||||
</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) { if (e.status != 200) alert('Live-Log Error: ' + e.statusText + ': ' + e.responseText); });
|
||||
isLive = true;
|
||||
liveConnection.start(function () {
|
||||
liveConnection.send('/addToGroups:@(Disco.BI.DocumentTemplateBI.Importer.DocumentImporterLog.Current.LiveLogGroupName)');
|
||||
});
|
||||
}
|
||||
init();
|
||||
});
|
||||
</script>
|
||||
|
||||
@@ -1,484 +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 \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 \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
|
||||
#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 \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 \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) { if (e.status != 200) alert('Live-Log Error: ' + e.statusText + ': ' + e.responseText); });
|
||||
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
|
||||
|
||||
@@ -1,362 +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>
|
||||
@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).prop('checked', false);
|
||||
});
|
||||
$('.jobSubTypes').hide().find('input[type="checkbox"]:checked').each(function () {
|
||||
$(this).prop('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>
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user