GridViewSettingsHelper.cs 54 KB

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