GridViewSettingsHelper.cs 52 KB

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