GridViewSettingsHelper.cs 54 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242
  1. using DevExpress.Data;
  2. using DevExpress.Utils;
  3. using DevExpress.Web;
  4. using DevExpress.Web.ASPxThemes;
  5. using DevExpress.Web.Mvc;
  6. using GreenTree.Nachtragsmanagement.Core.Authentication;
  7. using GreenTree.Nachtragsmanagement.Web.Models.Appendix;
  8. using System;
  9. using System.Collections.Generic;
  10. using System.Web.UI;
  11. using System.Web.UI.WebControls;
  12. namespace GreenTree.Nachtragsmanagement.Web.Extensions
  13. {
  14. public static class GridViewSettingsHelper
  15. {
  16. /// <summary>
  17. /// Current user context
  18. /// </summary>
  19. public static UserContext _userContext = Core.CommonHelper.UserContext();
  20. /// <summary>
  21. /// Creates GridViewSettings for the site gridView
  22. /// </summary>
  23. /// <param name="html">Current HtmlHelper context.</param>
  24. public static GridViewSettings SiteGridViewSettings(this System.Web.Mvc.HtmlHelper html)
  25. {
  26. var s = new GridViewSettings();
  27. s.Name = "devGridViewSite";
  28. s.KeyFieldName = "Id";
  29. s.CallbackRouteValues = new { Controller = "Site", Action = "PartialSites" };
  30. s.Width = Unit.Percentage(99);
  31. s.Settings.ShowHeaderFilterButton = true;
  32. s.Settings.ShowFilterRow = true;
  33. s.Settings.ShowFilterRowMenu = false;
  34. s.Settings.ShowFooter = true;
  35. s.Settings.ShowGroupPanel = true;
  36. s.Settings.AutoFilterCondition = AutoFilterCondition.Contains;
  37. s.Settings.VerticalScrollBarMode = ScrollBarMode.Auto;
  38. s.Settings.VerticalScrollableHeight =
  39. (html.ViewData["ScrollHeight"] == null || (int)html.ViewData["ScrollHeight"] == -1)
  40. ? 400
  41. : (int)html.ViewData["ScrollHeight"];
  42. s.SettingsExport.Landscape = true;
  43. s.SettingsExport.FileName = "Baustellenliste";
  44. s.SettingsPopup.CustomizationWindow.Width = new Unit(250, UnitType.Pixel);
  45. s.SettingsPopup.CustomizationWindow.Height = new Unit(350, UnitType.Pixel);
  46. s.SettingsBehavior.EnableCustomizationWindow = true;
  47. s.SettingsBehavior.AllowHeaderFilter = true;
  48. s.SettingsPager.AlwaysShowPager = true;
  49. s.SettingsResizing.ColumnResizeMode = ColumnResizeMode.NextColumn;
  50. s.SettingsCookies.Enabled = true;
  51. s.SettingsCookies.CookiesID = "siteGridStateCookie";
  52. s.Toolbars.Add(t =>
  53. {
  54. var refreshItem = t.Items.Add(GridViewToolbarCommand.Refresh);
  55. refreshItem.Text = "Aktualisieren";
  56. var expandItem = t.Items.Add(GridViewToolbarCommand.FullExpand);
  57. expandItem.Text = "Alle aufklappen";
  58. var collapseItem = t.Items.Add(GridViewToolbarCommand.FullCollapse);
  59. collapseItem.Text = "Alle einklappen";
  60. var filterItem = t.Items.Add(GridViewToolbarCommand.ClearFilter);
  61. filterItem.Text = "Filter entfernen";
  62. t.Items.Add(i =>
  63. {
  64. i.Text = "Spalten anzeigen / ausblenden";
  65. i.Name = "ToggleColumnChooser";
  66. i.Image.IconID = IconID.OtherViewgridlines16x16gray;
  67. i.BeginGroup = true;
  68. });
  69. t.Items.Add(i =>
  70. {
  71. i.Text = "Exportieren nach";
  72. i.Image.IconID = IconID.ActionsDownload16x16office2013;
  73. i.BeginGroup = true;
  74. i.Items.Add(exportitem =>
  75. {
  76. exportitem.Name = "Pdf";
  77. exportitem.Text = "PDF";
  78. exportitem.Image.IconID = IconID.ExportExporttopdf16x16office2013;
  79. });
  80. i.Items.Add(exportitem =>
  81. {
  82. exportitem.Name = "Xlsx";
  83. exportitem.Text = "XLSX";
  84. exportitem.Image.IconID = IconID.ExportExporttoxlsx16x16office2013;
  85. });
  86. i.Items.Add(exportitem =>
  87. {
  88. exportitem.Name = "Xls";
  89. exportitem.Text = "XLS";
  90. exportitem.Image.IconID = IconID.ExportExporttoxls16x16office2013;
  91. });
  92. });
  93. });
  94. if (_userContext.CurrentUser.HasFunction("Site-Sites-Edit") || _userContext.CurrentUser.HasFunction("Site-Sites-Delete"))
  95. {
  96. s.Columns.Add(column =>
  97. {
  98. column.Caption = "#";
  99. column.SetDataItemTemplateContent(c =>
  100. {
  101. if (_userContext.CurrentUser.HasFunction("Site-Sites-Edit"))
  102. html.ViewContext.Writer.Write(
  103. "<a href=\"#\" onclick=\"editSite(" + DataBinder.Eval(c.DataItem, "Id") + ")\">Bearbeiten</a>");
  104. if (_userContext.CurrentUser.HasFunction("Site-Sites-Delete"))
  105. html.ViewContext.Writer.Write(
  106. "<br /><a href=\"#\" onclick=\"confirmDelete(" + DataBinder.Eval(c.DataItem, "Id") + ")\">Löschen</a>");
  107. });
  108. column.SetHeaderTemplateContent(c =>
  109. {
  110. if (_userContext.CurrentUser.HasFunction("Site-Sites-Edit"))
  111. html.ViewContext.Writer.Write(
  112. "<a href=\"#\" onclick=\"editSite(-1)\">Neu</a>&nbsp;");
  113. });
  114. column.Settings.AllowDragDrop = DefaultBoolean.False;
  115. column.Settings.AllowSort = DefaultBoolean.False;
  116. column.Width = new Unit(100, UnitType.Pixel);
  117. });
  118. }
  119. s.Columns.Add(column =>
  120. {
  121. column.Caption = "Kostenstelle";
  122. column.FieldName = "CustomNumber";
  123. column.MinWidth = 100;
  124. column.Width = new Unit(8, UnitType.Percentage);
  125. });
  126. s.Columns.Add(column =>
  127. {
  128. column.Caption = "Bauvorhaben";
  129. column.FieldName = "Description";
  130. column.Width = new Unit(20, UnitType.Percentage);
  131. });
  132. s.Columns.Add(column =>
  133. {
  134. column.Caption = "Start";
  135. column.FieldName = "Start";
  136. column.PropertiesEdit.DisplayFormatString = "dd.MM.yyyy";
  137. column.SettingsHeaderFilter.Mode = GridHeaderFilterMode.DateRangePicker;
  138. column.MinWidth = 110;
  139. column.Width = new Unit(8, UnitType.Percentage);
  140. });
  141. s.Columns.Add(column =>
  142. {
  143. column.Caption = "Ende";
  144. column.FieldName = "End";
  145. column.PropertiesEdit.DisplayFormatString = "dd.MM.yyyy";
  146. column.SettingsHeaderFilter.Mode = GridHeaderFilterMode.DateRangePicker;
  147. column.MinWidth = 110;
  148. column.Width = new Unit(8, UnitType.Percentage);
  149. });
  150. s.Columns.Add(column =>
  151. {
  152. column.Caption = "VA";
  153. column.FieldName = "DeviationDescription";
  154. column.Visible = false;
  155. column.MinWidth = 150;
  156. column.Width = new Unit(12, UnitType.Percentage);
  157. });
  158. s.Columns.Add(column =>
  159. {
  160. column.Caption = "VA-Summe";
  161. column.FieldName = "DeviationValue";
  162. column.PropertiesEdit.DisplayFormatString = "c2";
  163. column.Visible = false;
  164. column.MinWidth = 120;
  165. column.Width = new Unit(10, UnitType.Percentage);
  166. });
  167. s.Columns.Add(column =>
  168. {
  169. column.Caption = "Nachträge";
  170. column.FieldName = "AppendixDescription";
  171. column.Width = new Unit(10, UnitType.Percentage);
  172. });
  173. s.Columns.Add(column =>
  174. {
  175. column.Caption = "Mitarbeiter";
  176. column.MinWidth = 150;
  177. column.Width = new Unit(15, UnitType.Percentage);
  178. column.SetDataItemTemplateContent(c =>
  179. {
  180. var userDescriptions = DataBinder.Eval(c.DataItem, "UserDescriptions") as List<string>;
  181. if (userDescriptions != null)
  182. {
  183. foreach (var description in userDescriptions)
  184. {
  185. var split = description.Split('|');
  186. if (split.Length > 1)
  187. html.ViewContext.Writer.Write(
  188. "<span style=\"float: left\">" + split[0] + "</span>" +
  189. "<span style=\"float: right\">" + split[1] + "</span><br />");
  190. else
  191. html.ViewContext.Writer.Write(
  192. "<span>" + split[0] + "</span><br />");
  193. }
  194. }
  195. });
  196. });
  197. s.Columns.Add(column =>
  198. {
  199. column.Caption = "Kommentar";
  200. column.FieldName = "Comment";
  201. column.CellStyle.Wrap = DefaultBoolean.True;
  202. column.SetDataItemTemplateContent(c =>
  203. {
  204. var id = Convert.ToInt32(DataBinder.Eval(c.DataItem, "Id"));
  205. var comment = DataBinder.Eval(c.DataItem, "Comment");
  206. var text = comment == null
  207. ? String.Empty
  208. : comment.ToString();
  209. var isLongText = text.ToString().Length > 40;
  210. if (isLongText)
  211. {
  212. html.ViewContext.Writer.Write(text.Substring(0, 40) + " ...");
  213. html.ViewContext.Writer.Write(
  214. "<a href=\"#\" onclick='showComment(\"site\"," + id + ",this)'><br />Anzeigen</a>");
  215. }
  216. else
  217. html.ViewContext.Writer.Write(text);
  218. if (_userContext.CurrentUser.HasFunction("Site-Sites-Edit"))
  219. html.ViewContext.Writer.Write(
  220. (isLongText ? "&nbsp;" : "<br/>") +
  221. "<a href=\"#\" onclick='editComment(\"site\"," + id + ",function() { devGridViewSite.PerformCallback(); })'>Bearbeiten</a>");
  222. });
  223. column.MinWidth = 120;
  224. column.Width = new Unit(15, UnitType.Percentage);
  225. column.Visible = false;
  226. });
  227. s.TotalSummary.Add(new ASPxSummaryItem
  228. {
  229. SummaryType = DevExpress.Data.SummaryItemType.Count,
  230. FieldName = "Description",
  231. DisplayFormat = "Anzahl<br/><i>{0:n0}</i>"
  232. });
  233. s.GroupSummary.Add(new ASPxSummaryItem
  234. {
  235. SummaryType = DevExpress.Data.SummaryItemType.Count,
  236. FieldName = "Description",
  237. DisplayFormat = "Anzahl = {0:n0}"
  238. });
  239. s.TotalSummary.Add(new ASPxSummaryItem
  240. {
  241. FieldName = "DeviationValue",
  242. SummaryType = DevExpress.Data.SummaryItemType.Sum,
  243. DisplayFormat = "VA ∑<br/><i>{0:c2}</i>"
  244. });
  245. s.GroupSummary.Add(new ASPxSummaryItem
  246. {
  247. FieldName = "DeviationValue",
  248. SummaryType = DevExpress.Data.SummaryItemType.Sum,
  249. DisplayFormat = "VA ∑ = <i>{0:c2}</i>"
  250. });
  251. s.ClientLayout = (sender, e) =>
  252. {
  253. if (e.LayoutMode == ClientLayoutMode.Loading)
  254. {
  255. if (System.Web.HttpContext.Current.Session["SiteGridState"] != null)
  256. e.LayoutData = (string)System.Web.HttpContext.Current.Session["SiteGridState"];
  257. }
  258. else
  259. System.Web.HttpContext.Current.Session["SiteGridState"] = e.LayoutData;
  260. };
  261. s.ClientSideEvents.BeginCallback = "function (s, e) { e.customArgs['scrollHeight'] = [ gridScrollHeight ]; }";
  262. s.ClientSideEvents.ToolbarItemClick = "function (s, e) { onToolbarItemClick(s, e); }";
  263. s.Styles.AlternatingRow.BackColor = System.Drawing.Color.FromArgb(247, 247, 247);
  264. s.Styles.Footer.CssClass += "devExGridFooterPanel";
  265. s.Styles.GroupRow.CssClass += "devExGridGroupRow";
  266. return s;
  267. }
  268. /// <summary>
  269. /// Creates GridViewSettings for the deviation gridView
  270. /// </summary>
  271. /// <param name="html">Current HtmlHelper context.</param>
  272. public static GridViewSettings DeviationGridViewSettings(this System.Web.Mvc.HtmlHelper html)
  273. {
  274. var s = new GridViewSettings();
  275. s.Name = "devGridViewDeviation";
  276. s.KeyFieldName = "Id";
  277. s.CallbackRouteValues = new { Controller = "Deviation", Action = "PartialDeviations" };
  278. s.Width = Unit.Percentage(99);
  279. s.Settings.ShowHeaderFilterButton = true;
  280. s.Settings.ShowFilterRow = true;
  281. s.Settings.ShowFilterRowMenu = true;
  282. s.Settings.ShowFooter = true;
  283. s.Settings.ShowGroupPanel = true;
  284. s.Settings.AutoFilterCondition = AutoFilterCondition.Contains;
  285. s.Settings.HorizontalScrollBarMode = ScrollBarMode.Auto;
  286. s.Settings.VerticalScrollBarMode = ScrollBarMode.Auto;
  287. s.Settings.VerticalScrollableHeight =
  288. (html.ViewData["ScrollHeight"] == null || (int)html.ViewData["ScrollHeight"] == -1)
  289. ? 400
  290. : (int)html.ViewData["ScrollHeight"];
  291. s.SettingsExport.Landscape = true;
  292. s.SettingsExport.FileName = "Vertragsabweichungsliste";
  293. s.SettingsPopup.CustomizationWindow.Width = new Unit(250, UnitType.Pixel);
  294. s.SettingsPopup.CustomizationWindow.Height = new Unit(350, UnitType.Pixel);
  295. s.SettingsBehavior.EnableCustomizationWindow = true;
  296. s.SettingsBehavior.AllowHeaderFilter = true;
  297. s.SettingsPager.AlwaysShowPager = true;
  298. s.SettingsResizing.ColumnResizeMode = ColumnResizeMode.Control;
  299. s.SettingsCookies.Enabled = true;
  300. s.SettingsCookies.CookiesID = "deviationGridStateCookie";
  301. s.Toolbars.Add(t =>
  302. {
  303. var refreshItem = t.Items.Add(GridViewToolbarCommand.Refresh);
  304. refreshItem.Text = "Aktualisieren";
  305. var expandItem = t.Items.Add(GridViewToolbarCommand.FullExpand);
  306. expandItem.Text = "Alle aufklappen";
  307. var collapseItem = t.Items.Add(GridViewToolbarCommand.FullCollapse);
  308. collapseItem.Text = "Alle einklappen";
  309. var filterItem = t.Items.Add(GridViewToolbarCommand.ClearFilter);
  310. filterItem.Text = "Filter entfernen";
  311. t.Items.Add(i =>
  312. {
  313. i.Text = "Spalten anzeigen / ausblenden";
  314. i.Name = "ToggleColumnChooser";
  315. i.Image.IconID = IconID.OtherViewgridlines16x16gray;
  316. i.BeginGroup = true;
  317. });
  318. t.Items.Add(i =>
  319. {
  320. i.Text = "Exportieren nach";
  321. i.Image.IconID = IconID.ActionsDownload16x16office2013;
  322. i.BeginGroup = true;
  323. i.Items.Add(exportitem =>
  324. {
  325. exportitem.Name = "Pdf";
  326. exportitem.Text = "PDF";
  327. exportitem.Image.IconID = IconID.ExportExporttopdf16x16office2013;
  328. });
  329. i.Items.Add(exportitem =>
  330. {
  331. exportitem.Name = "Xlsx";
  332. exportitem.Text = "XLSX";
  333. exportitem.Image.IconID = IconID.ExportExporttoxlsx16x16office2013;
  334. });
  335. i.Items.Add(exportitem =>
  336. {
  337. exportitem.Name = "Xls";
  338. exportitem.Text = "XLS";
  339. exportitem.Image.IconID = IconID.ExportExporttoxls16x16office2013;
  340. });
  341. });
  342. });
  343. s.Columns.Add(column =>
  344. {
  345. column.Caption = "Nr.";
  346. column.FieldName = "CustomNumber";
  347. column.MinWidth = 50;
  348. column.Width = new Unit(60, UnitType.Pixel);
  349. });
  350. s.Columns.Add(column =>
  351. {
  352. column.Caption = "Bezeichnung";
  353. column.FieldName = "Description";
  354. column.MinWidth = 220;
  355. column.Width = new Unit(250, UnitType.Pixel);
  356. });
  357. s.Columns.Add(column =>
  358. {
  359. column.Caption = "Kst.-Stelle";
  360. column.FieldName = "SiteDescription";
  361. column.MinWidth = 120;
  362. column.Width = new Unit(130, UnitType.Pixel);
  363. });
  364. s.Columns.Add(column =>
  365. {
  366. column.Caption = "Nachtrag";
  367. column.FieldName = "AppendixDescription";
  368. column.MinWidth = 100;
  369. column.Width = new Unit(100, UnitType.Pixel);
  370. });
  371. s.Columns.Add(column =>
  372. {
  373. column.Caption = "Einreichung";
  374. column.FieldName = "ReceiptDate";
  375. column.PropertiesEdit.DisplayFormatString = "dd.MM.yyyy";
  376. column.SettingsHeaderFilter.Mode = GridHeaderFilterMode.DateRangePicker;
  377. column.MinWidth = 110;
  378. column.Width = new Unit(110, UnitType.Pixel);
  379. });
  380. s.Columns.Add(column =>
  381. {
  382. column.Caption = "Tage VA-NT";
  383. column.FieldName = "DaysReceiptToAppendixOffering";
  384. column.MinWidth = 100;
  385. column.Width = new Unit(110, UnitType.Pixel);
  386. column.HeaderStyle.Wrap = DefaultBoolean.True;
  387. });
  388. s.Columns.Add(column =>
  389. {
  390. column.Caption = "Schätzung";
  391. column.FieldName = "Value";
  392. column.PropertiesEdit.DisplayFormatString = "c2";
  393. column.MinWidth = 100;
  394. column.Width = new Unit(120, UnitType.Pixel);
  395. });
  396. s.Columns.Add(column =>
  397. {
  398. column.Caption = "Bewert.";
  399. column.FieldName = "Percentage";
  400. column.PropertiesEdit.DisplayFormatString = "p0";
  401. column.MinWidth = 70;
  402. column.Width = new Unit(80, UnitType.Pixel);
  403. });
  404. s.Columns.Add(column =>
  405. {
  406. column.Caption = "Schätzung bew.";
  407. column.FieldName = "PercentageValue";
  408. column.PropertiesEdit.DisplayFormatString = "c2";
  409. column.MinWidth = 100;
  410. column.Width = new Unit(120, UnitType.Pixel);
  411. column.HeaderStyle.Wrap = DefaultBoolean.True;
  412. });
  413. s.Columns.Add(column =>
  414. {
  415. column.Caption = "Status";
  416. column.FieldName = "StatusDescription";
  417. column.MinWidth = 110;
  418. column.Width = new Unit(120, UnitType.Pixel);
  419. });
  420. s.Columns.Add(column =>
  421. {
  422. column.Caption = "VA-Kategorien";
  423. column.FieldName = "DisturbanceValuesDescription";
  424. column.MinWidth = 190;
  425. column.Width = new Unit(220, UnitType.Pixel);
  426. });
  427. s.Columns.Add(column =>
  428. {
  429. column.Caption = "Art";
  430. column.FieldName = "KindDescription";
  431. column.MinWidth = 140;
  432. column.Width = new Unit(140, UnitType.Pixel);
  433. });
  434. s.Columns.Add(column =>
  435. {
  436. column.Caption = "Kommentar";
  437. column.FieldName = "Comment";
  438. column.CellStyle.Wrap = DefaultBoolean.True;
  439. column.SetDataItemTemplateContent(c =>
  440. {
  441. var id = Convert.ToInt32(DataBinder.Eval(c.DataItem, "Id"));
  442. var comment = DataBinder.Eval(c.DataItem, "Comment");
  443. var text = comment == null
  444. ? String.Empty
  445. : comment.ToString();
  446. var isLongText = text.ToString().Length > 40;
  447. if (isLongText)
  448. {
  449. html.ViewContext.Writer.Write(text.Substring(0, 40) + " ...");
  450. html.ViewContext.Writer.Write(
  451. "<a href=\"#\" onclick='showComment(\"deviation\"," + id + ",this)'><br />Anzeigen</a>");
  452. }
  453. else
  454. html.ViewContext.Writer.Write(text);
  455. if (_userContext.CurrentUser.HasFunction("Deviation-Deviations-Edit"))
  456. html.ViewContext.Writer.Write(
  457. (isLongText ? "&nbsp;" : "<br/>") +
  458. "&nbsp;<a href=\"#\" onclick='editComment(\"deviation\"," + id + ",function() { devGridViewDeviation.PerformCallback(); })'>Bearbeiten</a>");
  459. });
  460. column.MinWidth = 120;
  461. column.Width = new Unit(8, UnitType.Percentage);
  462. column.Visible = false;
  463. });
  464. var totalDaysReceiptToAppendixOfferingSum = 0;
  465. var totalDaysReceiptToAppendixOfferingCount = 0;
  466. s.CustomSummaryCalculate = (sender, e) =>
  467. {
  468. if (e.SummaryProcess == CustomSummaryProcess.Start)
  469. {
  470. totalDaysReceiptToAppendixOfferingSum = 0;
  471. totalDaysReceiptToAppendixOfferingCount = 0;
  472. }
  473. if (e.SummaryProcess == CustomSummaryProcess.Calculate)
  474. {
  475. var val = e.GetValue("DaysReceiptToAppendixOffering");
  476. if (val != null)
  477. {
  478. totalDaysReceiptToAppendixOfferingCount++;
  479. totalDaysReceiptToAppendixOfferingSum += Convert.ToInt32(val);
  480. }
  481. }
  482. if (e.SummaryProcess == CustomSummaryProcess.Finalize)
  483. e.TotalValue = totalDaysReceiptToAppendixOfferingSum / totalDaysReceiptToAppendixOfferingCount;
  484. };
  485. s.TotalSummary.Add(new ASPxSummaryItem
  486. {
  487. SummaryType = DevExpress.Data.SummaryItemType.Count,
  488. FieldName = "Description",
  489. DisplayFormat = "Anzahl<br/><i>{0:n0}</i>"
  490. });
  491. s.GroupSummary.Add(new ASPxSummaryItem
  492. {
  493. SummaryType = DevExpress.Data.SummaryItemType.Count,
  494. FieldName = "Description",
  495. DisplayFormat = "Anzahl = {0:n0}"
  496. });
  497. s.TotalSummary.Add(new ASPxSummaryItem
  498. {
  499. FieldName = "Value",
  500. SummaryType = DevExpress.Data.SummaryItemType.Sum,
  501. DisplayFormat = "Schätzung ∑<br/><i>{0:c2}</i>"
  502. });
  503. s.GroupSummary.Add(new ASPxSummaryItem
  504. {
  505. FieldName = "Value",
  506. SummaryType = DevExpress.Data.SummaryItemType.Sum,
  507. DisplayFormat = "Schätzung ∑ = <i>{0:c2}</i>"
  508. });
  509. s.TotalSummary.Add(new ASPxSummaryItem
  510. {
  511. FieldName = "Percentage",
  512. SummaryType = DevExpress.Data.SummaryItemType.Average,
  513. DisplayFormat = "Bew. Ø<br/><i>{0:p0}</i>"
  514. });
  515. s.GroupSummary.Add(new ASPxSummaryItem
  516. {
  517. FieldName = "Percentage",
  518. SummaryType = DevExpress.Data.SummaryItemType.Average,
  519. DisplayFormat = "Bew. Ø = <i>{0:p0}</i>"
  520. });
  521. s.TotalSummary.Add(new ASPxSummaryItem
  522. {
  523. FieldName = "PercentageValue",
  524. SummaryType = DevExpress.Data.SummaryItemType.Sum,
  525. DisplayFormat = "Schätz. bew. ∑<br/><i>{0:c2}</i>"
  526. });
  527. s.GroupSummary.Add(new ASPxSummaryItem
  528. {
  529. FieldName = "PercentageValue",
  530. SummaryType = DevExpress.Data.SummaryItemType.Sum,
  531. DisplayFormat = "Schätz. bew. ∑ = <i>{0:c2}</i>"
  532. });
  533. s.TotalSummary.Add(new ASPxSummaryItem
  534. {
  535. FieldName = "DaysReceiptToAppendixOffering",
  536. SummaryType = DevExpress.Data.SummaryItemType.Custom,
  537. DisplayFormat = "T. VA-NT Ø<br/><i>{0:n0}</i>"
  538. });
  539. s.GroupSummary.Add(new ASPxSummaryItem
  540. {
  541. FieldName = "DaysReceiptToAppendixOffering",
  542. SummaryType = DevExpress.Data.SummaryItemType.Custom,
  543. DisplayFormat = "Tage VA-NT Ø = <i>{0:n0}</i>"
  544. });
  545. s.ClientLayout = (sender, e) =>
  546. {
  547. if (e.LayoutMode == ClientLayoutMode.Loading)
  548. {
  549. if (System.Web.HttpContext.Current.Session["DeviationGridState"] != null)
  550. e.LayoutData = (string)System.Web.HttpContext.Current.Session["DeviationGridState"];
  551. }
  552. else
  553. System.Web.HttpContext.Current.Session["DeviationGridState"] = e.LayoutData;
  554. };
  555. s.ClientSideEvents.BeginCallback = "function (s, e) { e.customArgs['scrollHeight'] = [ gridScrollHeight ]; }";
  556. s.ClientSideEvents.ToolbarItemClick = "function (s, e) { onToolbarItemClick(s, e); }";
  557. s.Styles.Footer.CssClass += "devExGridFooterPanel";
  558. s.Styles.GroupRow.CssClass += "devExGridGroupRow";
  559. s.Styles.AlternatingRow.BackColor = System.Drawing.Color.FromArgb(247, 247, 247);
  560. return s;
  561. }
  562. /// <summary>
  563. /// Creates GridViewSettings for the appendix gridView
  564. /// </summary>
  565. /// <param name="html">Current HtmlHelper context.</param>
  566. public static GridViewSettings AppendixGridViewSettings(this System.Web.Mvc.HtmlHelper html)
  567. {
  568. var s = new GridViewSettings();
  569. s.Name = "devGridViewAppendix";
  570. s.KeyFieldName = "Id";
  571. s.CallbackRouteValues = new { Controller = "Appendix", Action = "PartialAppendices" };
  572. s.Width = Unit.Percentage(99);
  573. s.Settings.ShowHeaderFilterButton = true;
  574. s.Settings.ShowFilterRow = true;
  575. s.Settings.ShowFilterRowMenu = true;
  576. s.Settings.ShowFooter = true;
  577. s.Settings.ShowGroupPanel = true;
  578. s.Settings.AutoFilterCondition = AutoFilterCondition.Contains;
  579. s.Settings.HorizontalScrollBarMode = ScrollBarMode.Auto;
  580. s.Settings.VerticalScrollBarMode = ScrollBarMode.Auto;
  581. s.Settings.VerticalScrollableHeight =
  582. (html.ViewData["ScrollHeight"] == null || (int)html.ViewData["ScrollHeight"] == -1)
  583. ? 400
  584. : (int)html.ViewData["ScrollHeight"];
  585. s.SettingsExport.Landscape = true;
  586. s.SettingsExport.FileName = "Nachtragsliste";
  587. s.SettingsPopup.CustomizationWindow.Width = new Unit(250, UnitType.Pixel);
  588. s.SettingsPopup.CustomizationWindow.Height = new Unit(350, UnitType.Pixel);
  589. s.SettingsBehavior.EnableCustomizationWindow = true;
  590. s.SettingsBehavior.AllowHeaderFilter = true;
  591. s.SettingsPager.AlwaysShowPager = true;
  592. s.SettingsResizing.ColumnResizeMode = ColumnResizeMode.Control;
  593. s.SettingsCookies.Enabled = true;
  594. s.SettingsCookies.CookiesID = "appendixGridStateCookie";
  595. s.Toolbars.Add(t =>
  596. {
  597. var refreshItem = t.Items.Add(GridViewToolbarCommand.Refresh);
  598. refreshItem.Text = "Aktualisieren";
  599. var expandItem = t.Items.Add(GridViewToolbarCommand.FullExpand);
  600. expandItem.Text = "Alle aufklappen";
  601. var collapseItem = t.Items.Add(GridViewToolbarCommand.FullCollapse);
  602. collapseItem.Text = "Alle einklappen";
  603. var filterItem = t.Items.Add(GridViewToolbarCommand.ClearFilter);
  604. filterItem.Text = "Filter entfernen";
  605. t.Items.Add(i =>
  606. {
  607. i.Text = "Spalten anzeigen / ausblenden";
  608. i.Name = "ToggleColumnChooser";
  609. i.Image.IconID = IconID.OtherViewgridlines16x16gray;
  610. i.BeginGroup = true;
  611. });
  612. t.Items.Add(i =>
  613. {
  614. i.Text = "Drucken";
  615. i.Name = "Print";
  616. i.Image.IconID = IconID.PrintDefaultprinter16x16;
  617. i.BeginGroup = true;
  618. });
  619. });
  620. s.Columns.Add(column =>
  621. {
  622. column.Caption = "#";
  623. column.FieldName = "CustomNumber";
  624. column.MinWidth = 80;
  625. column.Width = new Unit(80, UnitType.Pixel);
  626. });
  627. s.Columns.Add(column =>
  628. {
  629. column.Caption = "Bezeichnung";
  630. column.FieldName = "Description";
  631. column.MinWidth = 200;
  632. column.Width = new Unit(14, UnitType.Percentage);
  633. });
  634. s.Columns.Add(column =>
  635. {
  636. column.Caption = "Baustelle";
  637. column.FieldName = "SiteDescription";
  638. column.MinWidth = 150;
  639. column.Width = new Unit(10, UnitType.Percentage);
  640. });
  641. s.Columns.Add(column =>
  642. {
  643. column.Caption = "Kst.-Stelle";
  644. column.FieldName = "SiteCustomNumber";
  645. column.MinWidth = 120;
  646. column.Width = new Unit(120, UnitType.Pixel);
  647. });
  648. s.Columns.Add(column =>
  649. {
  650. column.Caption = "Einreichung";
  651. column.FieldName = "OfferingDate";
  652. column.PropertiesEdit.DisplayFormatString = "dd.MM.yyyy";
  653. column.MinWidth = 110;
  654. column.Width = new Unit(110, UnitType.Pixel);
  655. });
  656. s.Columns.Add(column =>
  657. {
  658. column.Caption = "Angeb. -Summe";
  659. column.FieldName = "OfferingValue";
  660. column.PropertiesEdit.DisplayFormatString = "c2";
  661. column.MinWidth = 110;
  662. column.Width = new Unit(110, UnitType.Pixel);
  663. column.HeaderStyle.Wrap = DefaultBoolean.True;
  664. });
  665. s.Columns.Add(column =>
  666. {
  667. column.Caption = "Verhand. -Summe";
  668. column.FieldName = "NegotiationValue";
  669. column.PropertiesEdit.DisplayFormatString = "c2";
  670. column.MinWidth = 110;
  671. column.Width = new Unit(110, UnitType.Pixel);
  672. column.HeaderStyle.Wrap = DefaultBoolean.True;
  673. });
  674. s.Columns.Add(column =>
  675. {
  676. column.Caption = "Anteil Verh. zu Angeb.";
  677. column.FieldName = "RelationOfferingToNegotiation";
  678. column.PropertiesEdit.DisplayFormatString = "p2";
  679. column.MinWidth = 115;
  680. column.Width = new Unit(115, UnitType.Pixel);
  681. column.HeaderStyle.Wrap = DefaultBoolean.True;
  682. });
  683. s.Columns.Add(column =>
  684. {
  685. column.Caption = "VA";
  686. column.FieldName = "DeviationDescription";
  687. column.MinWidth = 70;
  688. column.Width = new Unit(6, UnitType.Percentage);
  689. });
  690. s.Columns.Add(column =>
  691. {
  692. column.Caption = "Faktor Angeb. zu VA";
  693. column.FieldName = "RelationOfferingToDeviations";
  694. column.PropertiesEdit.DisplayFormatString = "n2";
  695. column.MinWidth = 100;
  696. column.Width = new Unit(100, UnitType.Pixel);
  697. column.HeaderStyle.Wrap = DefaultBoolean.True;
  698. });
  699. s.Columns.Add(column =>
  700. {
  701. column.Caption = "Status";
  702. column.FieldName = "StateDescription";
  703. column.MinWidth = 100;
  704. column.Width = new Unit(100, UnitType.Pixel);
  705. });
  706. s.Columns.Add(column =>
  707. {
  708. column.Caption = "NT-Kategorien";
  709. column.FieldName = "CategoryValuesDescription";
  710. column.MinWidth = 200;
  711. column.Width = new Unit(12, UnitType.Percentage);
  712. });
  713. s.Columns.Add(column =>
  714. {
  715. column.Caption = "Kommentar";
  716. column.FieldName = "Comment";
  717. column.CellStyle.Wrap = DefaultBoolean.True;
  718. column.SetDataItemTemplateContent(c =>
  719. {
  720. var id = Convert.ToInt32(DataBinder.Eval(c.DataItem, "Id"));
  721. var comment = DataBinder.Eval(c.DataItem, "Comment");
  722. var text = comment == null
  723. ? String.Empty
  724. : comment.ToString();
  725. var isLongText = text.ToString().Length > 40;
  726. if (isLongText)
  727. {
  728. html.ViewContext.Writer.Write(text.Substring(0, 40) + " ...");
  729. html.ViewContext.Writer.Write(
  730. "<a href=\"#\" onclick='showComment(\"appendix\"," + id + ",this)'><br />Anzeigen</a>");
  731. }
  732. else
  733. html.ViewContext.Writer.Write(text);
  734. if (_userContext.CurrentUser.HasFunction("Deviation-Deviations-Edit"))
  735. html.ViewContext.Writer.Write(
  736. (isLongText ? "&nbsp;" : "<br/>") +
  737. "<a href=\"#\" onclick='editComment(\"appendix\"," + id + ",function() { devGridViewAppendix.PerformCallback(); })'>Bearbeiten</a>");
  738. });
  739. column.MinWidth = 250;
  740. column.Width = new Unit(14, UnitType.Percentage);
  741. });
  742. s.TotalSummary.Add(new ASPxSummaryItem
  743. {
  744. SummaryType = DevExpress.Data.SummaryItemType.Count,
  745. FieldName = "Description",
  746. DisplayFormat = "Anzahl<br/><i>{0:n0}</i>"
  747. });
  748. s.GroupSummary.Add(new ASPxSummaryItem
  749. {
  750. SummaryType = DevExpress.Data.SummaryItemType.Count,
  751. FieldName = "Description",
  752. DisplayFormat = "Anzahl = {0:n0}"
  753. });
  754. s.TotalSummary.Add(new ASPxSummaryItem
  755. {
  756. SummaryType = DevExpress.Data.SummaryItemType.Sum,
  757. FieldName = "OfferingValue",
  758. DisplayFormat = "Angeb. ∑<br/><i>{0:c2}</i>"
  759. });
  760. s.GroupSummary.Add(new ASPxSummaryItem
  761. {
  762. SummaryType = DevExpress.Data.SummaryItemType.Sum,
  763. FieldName = "OfferingValue",
  764. DisplayFormat = "Angeb.-∑ = {0:c2}"
  765. });
  766. s.TotalSummary.Add(new ASPxSummaryItem
  767. {
  768. SummaryType = DevExpress.Data.SummaryItemType.Sum,
  769. FieldName = "NegotiationValue",
  770. DisplayFormat = "Verhand. ∑<br/><i>{0:c2}</i>"
  771. });
  772. s.GroupSummary.Add(new ASPxSummaryItem
  773. {
  774. SummaryType = DevExpress.Data.SummaryItemType.Sum,
  775. FieldName = "NegotiationValue",
  776. DisplayFormat = "Verhand.-∑ = {0:c2}"
  777. });
  778. s.HtmlRowPrepared = (sender, e) =>
  779. {
  780. var state = e.GetValue("State") as StateDataModel;
  781. if (e.RowType == GridViewRowType.Data && state != null && !state.IsDefault)
  782. e.Row.BackColor = System.Drawing.ColorTranslator.FromHtml(state.HexColor);
  783. };
  784. s.ClientLayout = (sender, e) =>
  785. {
  786. if (e.LayoutMode == ClientLayoutMode.Loading)
  787. {
  788. if (System.Web.HttpContext.Current.Session["AppendixGridState"] != null)
  789. e.LayoutData = (string)System.Web.HttpContext.Current.Session["AppendixGridState"];
  790. }
  791. else
  792. System.Web.HttpContext.Current.Session["AppendixGridState"] = e.LayoutData;
  793. };
  794. s.PreRender = s.BeforeGetCallbackResult = (sender, e) => {
  795. MVCxGridView gridView = sender as MVCxGridView;
  796. System.Web.HttpContext.Current.Session["AppendixGridViewState"] = new MVCxGridViewState(gridView);
  797. };
  798. s.ClientSideEvents.BeginCallback = "function (s, e) { e.customArgs['scrollHeight'] = [ gridScrollHeight ]; }";
  799. s.ClientSideEvents.ToolbarItemClick = "function (s, e) { onToolbarItemClick(s, e); }";
  800. s.ClientSideEvents.ColumnResized = "function (s, e) { setGridScrollHeight(); }";
  801. //s.Styles.AlternatingRow.BackColor = System.Drawing.Color.FromArgb(247, 247, 247);
  802. s.Styles.Footer.CssClass += "devExGridFooterPanel";
  803. s.Styles.GroupRow.CssClass += "devExGridGroupRow";
  804. return s;
  805. }
  806. /// <summary>
  807. /// Creates GridViewSettings for the mailNotifications gridView
  808. /// </summary>
  809. /// <param name="html">Current HtmlHelper context.</param>
  810. public static GridViewSettings MailNotificationGridViewSettings(this System.Web.Mvc.HtmlHelper html)
  811. {
  812. var s = new GridViewSettings();
  813. s.Name = "devGridViewMailNotifications";
  814. s.KeyFieldName = "Id";
  815. s.CallbackRouteValues = new { Controller = "Misc", Action = "PartialMailNotifications" };
  816. s.Width = Unit.Percentage(99);
  817. s.Settings.ShowHeaderFilterButton = true;
  818. s.Settings.ShowFilterRow = true;
  819. s.Settings.ShowFilterRowMenu = true;
  820. s.Settings.ShowFooter = true;
  821. s.Settings.ShowGroupPanel = true;
  822. s.Settings.AutoFilterCondition = AutoFilterCondition.Contains;
  823. s.Settings.HorizontalScrollBarMode = ScrollBarMode.Auto;
  824. s.Settings.VerticalScrollBarMode = ScrollBarMode.Auto;
  825. s.Settings.VerticalScrollableHeight =
  826. (html.ViewData["ScrollHeight"] == null || (int)html.ViewData["ScrollHeight"] == -1)
  827. ? 400
  828. : (int)html.ViewData["ScrollHeight"];
  829. s.SettingsExport.Landscape = true;
  830. s.SettingsExport.FileName = "Benachrichtigungsliste";
  831. s.SettingsPopup.CustomizationWindow.Width = new Unit(250, UnitType.Pixel);
  832. s.SettingsPopup.CustomizationWindow.Height = new Unit(350, UnitType.Pixel);
  833. s.SettingsBehavior.EnableCustomizationWindow = true;
  834. s.SettingsBehavior.AllowHeaderFilter = true;
  835. s.SettingsPager.AlwaysShowPager = true;
  836. s.SettingsResizing.ColumnResizeMode = ColumnResizeMode.Control;
  837. s.SettingsCookies.Enabled = true;
  838. s.SettingsCookies.CookiesID = "mailNotificationGridStateCookie";
  839. s.Toolbars.Add(t =>
  840. {
  841. var refreshItem = t.Items.Add(GridViewToolbarCommand.Refresh);
  842. refreshItem.Text = "Aktualisieren";
  843. var filterItem = t.Items.Add(GridViewToolbarCommand.ClearFilter);
  844. filterItem.Text = "Filter entfernen";
  845. t.Items.Add(i =>
  846. {
  847. i.Text = "Spalten anzeigen / ausblenden";
  848. i.Name = "ToggleColumnChooser";
  849. i.Image.IconID = IconID.OtherViewgridlines16x16gray;
  850. i.BeginGroup = true;
  851. });
  852. t.Items.Add(i =>
  853. {
  854. i.Text = "Exportieren nach";
  855. i.Image.IconID = IconID.ActionsDownload16x16office2013;
  856. i.BeginGroup = true;
  857. i.Items.Add(exportitem =>
  858. {
  859. exportitem.Name = "Pdf";
  860. exportitem.Text = "PDF";
  861. exportitem.Image.IconID = IconID.ExportExporttopdf16x16office2013;
  862. });
  863. i.Items.Add(exportitem =>
  864. {
  865. exportitem.Name = "Xlsx";
  866. exportitem.Text = "XLSX";
  867. exportitem.Image.IconID = IconID.ExportExporttoxlsx16x16office2013;
  868. });
  869. i.Items.Add(exportitem =>
  870. {
  871. exportitem.Name = "Xls";
  872. exportitem.Text = "XLS";
  873. exportitem.Image.IconID = IconID.ExportExporttoxls16x16office2013;
  874. });
  875. });
  876. });
  877. if (_userContext.CurrentUser.HasFunction("Misc-MailNotifications-Edit"))
  878. {
  879. s.Columns.Add(column =>
  880. {
  881. column.Caption = "#";
  882. column.SetDataItemTemplateContent(c =>
  883. {
  884. html.ViewContext.Writer.Write(
  885. "<a href=\"#\" onclick=\"editMailNotification(" + DataBinder.Eval(c.DataItem, "Id") + ")\">Bearbeiten</a>&nbsp;");
  886. html.ViewContext.Writer.Write(
  887. "<a href=\"#\" onclick=\"confirmDelete(" + DataBinder.Eval(c.DataItem, "Id") + ")\">Löschen</a><br />");
  888. html.ViewContext.Writer.Write(
  889. "<a href=\"#\" onclick=\"confirmProcess(" + DataBinder.Eval(c.DataItem, "Id") + ")\">Sofort ausführen</a>");
  890. });
  891. column.SetHeaderTemplateContent(c =>
  892. {
  893. html.ViewContext.Writer.Write(
  894. "<a href=\"#\" onclick=\"editMailNotification(-1)\">Neu</a>&nbsp;");
  895. });
  896. column.Settings.AllowDragDrop = DefaultBoolean.False;
  897. column.Settings.AllowSort = DefaultBoolean.False;
  898. column.Width = new Unit(150, UnitType.Pixel);
  899. });
  900. }
  901. s.Columns.Add(column =>
  902. {
  903. column.Caption = "Zeitplan";
  904. column.FieldName = "CronExpressionDescription";
  905. column.MinWidth = 100;
  906. column.Width = new Unit(20, UnitType.Percentage);
  907. });
  908. s.Columns.Add(column =>
  909. {
  910. column.Caption = "Benachrichtigungs-Plugin";
  911. column.FieldName = "NotificationPluginSystemNameDescription";
  912. column.Width = new Unit(17.5, UnitType.Percentage);
  913. });
  914. s.Columns.Add(column =>
  915. {
  916. column.Caption = "Benachrichtigungs-Job";
  917. column.FieldName = "NotificationJobSystemNameDescription";
  918. column.PropertiesEdit.DisplayFormatString = "dd.MM.yyyy";
  919. column.MinWidth = 110;
  920. column.Width = new Unit(17.5, UnitType.Percentage);
  921. });
  922. s.Columns.Add(column =>
  923. {
  924. column.Caption = "Mitarbeiter";
  925. column.FieldName = "UserDescriptions";
  926. column.MinWidth = 200;
  927. column.Width = new Unit(20, UnitType.Percentage);
  928. column.SetDataItemTemplateContent(c =>
  929. {
  930. var userDescriptions = DataBinder.Eval(c.DataItem, "UserDescriptions") as List<string>;
  931. if (userDescriptions != null)
  932. {
  933. foreach (var description in userDescriptions)
  934. {
  935. var split = description.Split('|');
  936. if (split.Length > 1)
  937. html.ViewContext.Writer.Write(
  938. "<span style=\"float: left\">" + split[0] + "</span>" +
  939. "<span style=\"float: right\">" + split[1] + "</span><br />");
  940. else
  941. html.ViewContext.Writer.Write(
  942. "<span>" + split[0] + "</span><br />");
  943. }
  944. }
  945. });
  946. });
  947. s.Columns.Add(column =>
  948. {
  949. column.Caption = "Nächste Ausführung";
  950. column.FieldName = "NextExecutionTime";
  951. column.PropertiesEdit.DisplayFormatString = "dd.MM.yyyy";
  952. column.MinWidth = 110;
  953. column.Width = new Unit(15, UnitType.Percentage);
  954. });
  955. s.ClientLayout = (sender, e) =>
  956. {
  957. if (e.LayoutMode == ClientLayoutMode.Loading)
  958. {
  959. if (System.Web.HttpContext.Current.Session["MailNotificationsGridState"] != null)
  960. e.LayoutData = (string)System.Web.HttpContext.Current.Session["MailNotificationsGridState"];
  961. }
  962. else
  963. System.Web.HttpContext.Current.Session["MailNotificationsGridState"] = e.LayoutData;
  964. };
  965. s.ClientSideEvents.BeginCallback = "function (s, e) { e.customArgs['scrollHeight'] = [ gridScrollHeight ]; }";
  966. s.ClientSideEvents.ToolbarItemClick = "function (s, e) { onToolbarItemClick(s, e); }";
  967. s.Styles.AlternatingRow.BackColor = System.Drawing.Color.FromArgb(247, 247, 247);
  968. return s;
  969. }
  970. /// <summary>
  971. /// Creates GridViewSettings for the logs gridView
  972. /// </summary>
  973. /// <param name="html">Current HtmlHelper context.</param>
  974. public static GridViewSettings LogGridViewSettings(this System.Web.Mvc.HtmlHelper html)
  975. {
  976. var s = new GridViewSettings();
  977. s.Name = "devGridViewLog";
  978. s.KeyFieldName = "Id";
  979. s.CallbackRouteValues = new { Controller = "Misc", Action = "PartialLogs" };
  980. s.Width = Unit.Percentage(99);
  981. s.Settings.ShowHeaderFilterButton = true;
  982. s.Settings.ShowFilterRow = true;
  983. s.Settings.ShowFilterRowMenu = true;
  984. s.Settings.ShowFooter = true;
  985. s.Settings.ShowGroupPanel = true;
  986. s.Settings.AutoFilterCondition = AutoFilterCondition.Contains;
  987. s.Settings.HorizontalScrollBarMode = ScrollBarMode.Auto;
  988. s.Settings.VerticalScrollBarMode = ScrollBarMode.Auto;
  989. s.Settings.VerticalScrollableHeight =
  990. (html.ViewData["ScrollHeight"] == null || (int)html.ViewData["ScrollHeight"] == -1)
  991. ? 400
  992. : (int)html.ViewData["ScrollHeight"];
  993. s.SettingsExport.Landscape = true;
  994. s.SettingsExport.FileName = "Logliste";
  995. s.SettingsPopup.CustomizationWindow.Width = new Unit(250, UnitType.Pixel);
  996. s.SettingsPopup.CustomizationWindow.Height = new Unit(350, UnitType.Pixel);
  997. s.SettingsBehavior.EnableCustomizationWindow = true;
  998. s.SettingsBehavior.AllowHeaderFilter = true;
  999. s.SettingsPager.AlwaysShowPager = true;
  1000. s.SettingsResizing.ColumnResizeMode = ColumnResizeMode.Control;
  1001. s.SettingsCookies.Enabled = true;
  1002. s.SettingsCookies.CookiesID = "logGridStateCookie";
  1003. s.Toolbars.Add(t =>
  1004. {
  1005. var refreshItem = t.Items.Add(GridViewToolbarCommand.Refresh);
  1006. refreshItem.Text = "Aktualisieren";
  1007. var filterItem = t.Items.Add(GridViewToolbarCommand.ClearFilter);
  1008. filterItem.Text = "Filter entfernen";
  1009. t.Items.Add(i =>
  1010. {
  1011. i.Text = "Spalten anzeigen / ausblenden";
  1012. i.Name = "ToggleColumnChooser";
  1013. i.Image.IconID = IconID.OtherViewgridlines16x16gray;
  1014. i.BeginGroup = true;
  1015. });
  1016. t.Items.Add(i =>
  1017. {
  1018. i.Text = "Exportieren nach";
  1019. i.Image.IconID = IconID.ActionsDownload16x16office2013;
  1020. i.BeginGroup = true;
  1021. i.Items.Add(exportitem =>
  1022. {
  1023. exportitem.Name = "Pdf";
  1024. exportitem.Text = "PDF";
  1025. exportitem.Image.IconID = IconID.ExportExporttopdf16x16office2013;
  1026. });
  1027. i.Items.Add(exportitem =>
  1028. {
  1029. exportitem.Name = "Xlsx";
  1030. exportitem.Text = "XLSX";
  1031. exportitem.Image.IconID = IconID.ExportExporttoxlsx16x16office2013;
  1032. });
  1033. i.Items.Add(exportitem =>
  1034. {
  1035. exportitem.Name = "Xls";
  1036. exportitem.Text = "XLS";
  1037. exportitem.Image.IconID = IconID.ExportExporttoxls16x16office2013;
  1038. });
  1039. });
  1040. });
  1041. s.Columns.Add(column =>
  1042. {
  1043. column.Caption = "#";
  1044. column.SetDataItemTemplateContent(c =>
  1045. {
  1046. html.ViewContext.Writer.Write(
  1047. "<a href=\"#\" onclick=\"viewLog(" + DataBinder.Eval(c.DataItem, "Id") + ")\">Betrachten</a>&nbsp;");
  1048. if (_userContext.CurrentUser.HasFunction("Misc-Logs-Delete"))
  1049. {
  1050. html.ViewContext.Writer.Write(
  1051. "<a href=\"#\" onclick=\"deleteLog(" + DataBinder.Eval(c.DataItem, "Id") + ")\">Löschen</a><br />");
  1052. }
  1053. });
  1054. column.Settings.AllowDragDrop = DefaultBoolean.False;
  1055. column.Settings.AllowSort = DefaultBoolean.False;
  1056. column.Width = new Unit(150, UnitType.Pixel);
  1057. });
  1058. s.Columns.Add(column =>
  1059. {
  1060. column.Caption = "Level";
  1061. column.FieldName = "LogLevelDescription";
  1062. column.MinWidth = 100;
  1063. column.Width = new Unit(8, UnitType.Percentage);
  1064. });
  1065. s.Columns.Add(column =>
  1066. {
  1067. column.Caption = "Betreff";
  1068. column.FieldName = "ShortMessage";
  1069. column.MinWidth = 150;
  1070. column.Width = new Unit(12, UnitType.Percentage);
  1071. });
  1072. s.Columns.Add(column =>
  1073. {
  1074. column.Caption = "Nachricht";
  1075. column.FieldName = "FullMessage";
  1076. column.MinWidth = 200;
  1077. column.Width = new Unit(20, UnitType.Percentage);
  1078. column.SetDataItemTemplateContent(c =>
  1079. {
  1080. var fullMessage = DataBinder.Eval(c.DataItem, "FullMessage");
  1081. var text = fullMessage == null
  1082. ? String.Empty
  1083. : fullMessage.ToString();
  1084. if (text.ToString().Length > 80)
  1085. html.ViewContext.Writer.Write(text.Substring(0, 80) + " ...");
  1086. else
  1087. html.ViewContext.Writer.Write(text);
  1088. });
  1089. });
  1090. s.Columns.Add(column =>
  1091. {
  1092. column.Caption = "IP-Adresse";
  1093. column.FieldName = "IpAddress";
  1094. column.MinWidth = 130;
  1095. column.Width = new Unit(10, UnitType.Percentage);
  1096. });
  1097. s.Columns.Add(column =>
  1098. {
  1099. column.Caption = "Mitarbeiter";
  1100. column.FieldName = "UserDescription";
  1101. column.MinWidth = 130;
  1102. column.Width = new Unit(10, UnitType.Percentage);
  1103. });
  1104. s.Columns.Add(column =>
  1105. {
  1106. column.Caption = "Datentyp";
  1107. column.FieldName = "EntityType";
  1108. column.MinWidth = 100;
  1109. column.Width = new Unit(8, UnitType.Percentage);
  1110. });
  1111. s.Columns.Add(column =>
  1112. {
  1113. column.Caption = "Daten ID";
  1114. column.FieldName = "EntityId";
  1115. column.MinWidth = 100;
  1116. column.Width = new Unit(8, UnitType.Percentage);
  1117. });
  1118. s.Columns.Add(column =>
  1119. {
  1120. column.Caption = "Seiten URL";
  1121. column.FieldName = "PageUrl";
  1122. column.MinWidth = 150;
  1123. column.Width = new Unit(12, UnitType.Percentage);
  1124. column.Visible = false;
  1125. });
  1126. s.Columns.Add(column =>
  1127. {
  1128. column.Caption = "Relative URL";
  1129. column.FieldName = "ReferrerUrl";
  1130. column.MinWidth = 100;
  1131. column.Width = new Unit(8, UnitType.Percentage);
  1132. column.Visible = false;
  1133. });
  1134. s.Columns.Add(column =>
  1135. {
  1136. column.Caption = "Zeitpunkt";
  1137. column.FieldName = "CreatedOnUtc";
  1138. column.SetDataItemTemplateContent(c =>
  1139. {
  1140. var dateTime = DataBinder.Eval(c.DataItem, "CreatedOnUtc") as DateTime?;
  1141. var text = dateTime == null
  1142. ? String.Empty
  1143. : dateTime.Value.ToLocalTime().ToString("dd.MM.yyyy - HH:mm:ss");
  1144. html.ViewContext.Writer.Write(text);
  1145. });
  1146. column.MinWidth = 150;
  1147. column.Width = new Unit(12, UnitType.Percentage);
  1148. });
  1149. s.ClientLayout = (sender, e) =>
  1150. {
  1151. if (e.LayoutMode == ClientLayoutMode.Loading)
  1152. {
  1153. if (System.Web.HttpContext.Current.Session["LogGridState"] != null)
  1154. e.LayoutData = (string)System.Web.HttpContext.Current.Session["LogGridState"];
  1155. }
  1156. else
  1157. System.Web.HttpContext.Current.Session["LogGridState"] = e.LayoutData;
  1158. };
  1159. s.ClientSideEvents.BeginCallback = "function (s, e) { e.customArgs['scrollHeight'] = [ gridScrollHeight ]; }";
  1160. s.ClientSideEvents.ToolbarItemClick = "function (s, e) { onToolbarItemClick(s, e); }";
  1161. s.Styles.AlternatingRow.BackColor = System.Drawing.Color.FromArgb(247, 247, 247);
  1162. return s;
  1163. }
  1164. }
  1165. }