GridViewSettingsHelper.cs 51 KB

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