EnVisageOnline/Main-RMO/Source/EnVisage/Views/Reporting/Designer.cshtml

143 lines
6.1 KiB
Plaintext

@using DevExpress.Web.Mvc.UI
@model EnVisage.Models.DesignModel
@{
ViewBag.Title = "Designer";
Layout = "~/Views/Shared/_Layout.cshtml";
}
@section scripts {
@*<script type="text/javascript"> window.jQuery || document.write('<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.js">' + "<" + "/script>"); </script>*@
<script src="~/Scripts/4DX/jquery-ui-1.10.4.min.js" type="text/javascript"></script>
<script src="~/Scripts/4DX/globalize.js" type="text/javascript"></script>
<script src="~/Scripts/4DX/knockout-3.3.0.js" type="text/javascript"></script>
<script src="~/Scripts/4DX/ace.js" type="text/javascript"></script>
<script src="~/Scripts/4DX/ext-language_tools.js" type="text/javascript"></script>
@Html.DevExpress().GetScripts(
new Script { ExtensionSuite = ExtensionSuite.NavigationAndLayout },
new Script { ExtensionSuite = ExtensionSuite.HtmlEditor },
new Script { ExtensionSuite = ExtensionSuite.GridView },
new Script { ExtensionSuite = ExtensionSuite.PivotGrid },
new Script { ExtensionSuite = ExtensionSuite.Editors },
new Script { ExtensionSuite = ExtensionSuite.Chart },
new Script { ExtensionSuite = ExtensionSuite.Report },
new Script { ExtensionSuite = ExtensionSuite.Scheduler },
new Script { ExtensionSuite = ExtensionSuite.TreeList },
new Script { ExtensionSuite = ExtensionSuite.Spreadsheet },
new Script { ExtensionSuite = ExtensionSuite.RichEdit },
new Script { ExtensionSuite = ExtensionSuite.SpellChecker }
)
<script type="text/javascript">
$(function () {
$("#rptContent").appendTo("#content-wrapper");
reportDesigner.CustomizeMenuActions.AddHandler(function (s, e) {
var saveItem = e.Actions.filter(function (x) { return x.text === 'Save' })[0];
saveItem.text = 'Save&Close';
saveItem.imageClassName = 'saveCloseAction';
});
reportDesigner.SaveCommandExecuted.AddHandler(function (s, e) {
if (e.Result) {
window.location = reportDesigner.cpIndexUrl;
}
});
}); var reportParams = {
reportId: '@Model.Id',
sortFields: {},
};
function OnBeginReportCallback(s, e) {
e.customArgs["ReportId"] = reportParams.reportId;
e.customArgs["SortFields"] = reportParams.sortFields;
}
function OnBeforeExportRequest(s, e) {
e.customArgs["ReportId"] = reportParams.reportId;
e.customArgs["SortFields"] = reportParams.sortFields;
}
function Report_HeaderClick(s, e, fieldName) {
if (e.shiftKey) {
var field = reportParams.sortFields[fieldName];
if (field != null) {
reportParams.sortFields[fieldName] = !reportParams.sortFields[fieldName];
} else {
reportParams.sortFields[fieldName] = true;
}
} else {
var length = Object.size(reportParams.sortFields);
if (length == 1 && reportParams.sortFields[fieldName] != null) {
reportParams.sortFields[fieldName] = !reportParams.sortFields[fieldName];
} else {
reportParams.sortFields = {};
reportParams.sortFields[fieldName] = true;
}
}
CallbackPanel.PerformCallback();
}
function handleBrickClick(brick) {
if (brick == null || brick.content == null || brick.content.length == 0)
return;
var fieldName = brick.content[0].Value.replace(" ▼", "").replace(" ▲", "");
if (fieldName == null || fieldName.length <= 0)
return;
var length = Object.size(reportParams.sortFields);
if (length == 1 && reportParams.sortFields[fieldName] != null) {
reportParams.sortFields[fieldName] = !reportParams.sortFields[fieldName];
} else {
reportParams.sortFields = {};
reportParams.sortFields[fieldName] = true;
}
CallbackPanel.PerformCallback();
}
function WebDocumentViewer_Init(s, e) {
var previewModel = s.GetPreviewModel();
if (previewModel == null)
return;
previewModel.reportPreview.customProcessBrickClick = function (pageNumber, brick) {
debugger;
var cancelDefaultClickProcessing = true;
handleBrickClick(brick);
return cancelDefaultClickProcessing;
}
}
</script>
}
@section stylesheets {
<link href="~/Content/stylesheets/jquery-ui.css" rel="stylesheet" type="text/css">
@Html.DevExpress().GetStyleSheets(
new StyleSheet { ExtensionSuite = ExtensionSuite.NavigationAndLayout },
new StyleSheet { ExtensionSuite = ExtensionSuite.Editors },
new StyleSheet { ExtensionSuite = ExtensionSuite.HtmlEditor },
new StyleSheet { ExtensionSuite = ExtensionSuite.GridView },
new StyleSheet { ExtensionSuite = ExtensionSuite.PivotGrid },
new StyleSheet { ExtensionSuite = ExtensionSuite.Chart },
new StyleSheet { ExtensionSuite = ExtensionSuite.Report },
new StyleSheet { ExtensionSuite = ExtensionSuite.Scheduler },
new StyleSheet { ExtensionSuite = ExtensionSuite.TreeList },
new StyleSheet { ExtensionSuite = ExtensionSuite.Spreadsheet },
new StyleSheet { ExtensionSuite = ExtensionSuite.RichEdit },
new StyleSheet { ExtensionSuite = ExtensionSuite.SpellChecker }
)
<style type="text/css">
.saveCloseAction {
background-image: url(/Content/images/SaveClose.png);
}
</style>
}
@section afterAllScripts{
<div class="row" id="rptContent">
<div class="col-sm-12">
@Html.DevExpress().ReportDesigner(settings =>
{
settings.Name = "reportDesigner";
object newReportUrl = new { Controller = "Reporting", Action = "AddNewReport", name = Model.NewName };
object existReportUrl = new { Controller = "Reporting", Action = "UpdateReport", id = Model.Id };
settings.SaveCallbackRouteValues = (!string.IsNullOrWhiteSpace (Model.Id) && Model.Id != "0") ? existReportUrl : newReportUrl;
//settings.Height = System.Web.UI.WebControls.Unit.Percentage(100);
settings.ControlStyle.CssClass = "fullscreen";
if (Model.DataSource != null)
{
settings.DataSources.Add("ReportingDataSource", Model.DataSource);
}
settings.CustomJSProperties = (_, e) => e.Properties["cpIndexUrl"] = Url.Action("List", "Reporting");
}).Bind(Model.Report).GetHtml()
</div>
</div>
}