GridViewSettingsHelper.cs 52 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205
  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. column.Settings.SortMode = DevExpress.XtraGrid.ColumnSortMode.Custom;
  612. });
  613. s.Columns.Add(column =>
  614. {
  615. column.Caption = "Bezeichnung";
  616. column.FieldName = "Description";
  617. column.MinWidth = 200;
  618. column.Width = new Unit(14, UnitType.Percentage);
  619. });
  620. s.Columns.Add(column =>
  621. {
  622. column.Caption = "Baustelle";
  623. column.FieldName = "SiteDescription";
  624. column.MinWidth = 150;
  625. column.Width = new Unit(10, UnitType.Percentage);
  626. });
  627. s.Columns.Add(column =>
  628. {
  629. column.Caption = "Kst.-Stelle";
  630. column.FieldName = "SiteCustomNumber";
  631. column.MinWidth = 120;
  632. column.Width = new Unit(120, UnitType.Pixel);
  633. });
  634. s.Columns.Add(column =>
  635. {
  636. column.Caption = "Einreichung";
  637. column.FieldName = "OfferingDate";
  638. column.PropertiesEdit.DisplayFormatString = "dd.MM.yyyy";
  639. column.MinWidth = 110;
  640. column.Width = new Unit(110, UnitType.Pixel);
  641. });
  642. s.Columns.Add(column =>
  643. {
  644. column.Caption = "Angeb. -Summe";
  645. column.FieldName = "OfferingValue";
  646. column.PropertiesEdit.DisplayFormatString = "c2";
  647. column.MinWidth = 110;
  648. column.Width = new Unit(110, UnitType.Pixel);
  649. column.HeaderStyle.Wrap = DefaultBoolean.True;
  650. });
  651. s.Columns.Add(column =>
  652. {
  653. column.Caption = "Verhand. -Summe";
  654. column.FieldName = "NegotiationValue";
  655. column.PropertiesEdit.DisplayFormatString = "c2";
  656. column.MinWidth = 110;
  657. column.Width = new Unit(110, UnitType.Pixel);
  658. column.HeaderStyle.Wrap = DefaultBoolean.True;
  659. });
  660. s.Columns.Add(column =>
  661. {
  662. column.Caption = "Anteil Verh. zu Angeb.";
  663. column.FieldName = "RelationOfferingToNegotiation";
  664. column.PropertiesEdit.DisplayFormatString = "p2";
  665. column.MinWidth = 115;
  666. column.Width = new Unit(115, UnitType.Pixel);
  667. column.HeaderStyle.Wrap = DefaultBoolean.True;
  668. });
  669. s.Columns.Add(column =>
  670. {
  671. column.Caption = "VA";
  672. column.FieldName = "DeviationDescription";
  673. column.MinWidth = 70;
  674. column.Width = new Unit(6, UnitType.Percentage);
  675. });
  676. s.Columns.Add(column =>
  677. {
  678. column.Caption = "Faktor Angeb. zu VA";
  679. column.FieldName = "RelationOfferingToDeviations";
  680. column.PropertiesEdit.DisplayFormatString = "n2";
  681. column.MinWidth = 100;
  682. column.Width = new Unit(100, UnitType.Pixel);
  683. column.HeaderStyle.Wrap = DefaultBoolean.True;
  684. });
  685. s.Columns.Add(column =>
  686. {
  687. column.Caption = "Status";
  688. column.FieldName = "StateDescription";
  689. column.MinWidth = 100;
  690. column.Width = new Unit(100, UnitType.Pixel);
  691. });
  692. s.Columns.Add(column =>
  693. {
  694. column.Caption = "NT-Kategorien";
  695. column.FieldName = "CategoryValuesDescription";
  696. column.MinWidth = 200;
  697. column.Width = new Unit(12, UnitType.Percentage);
  698. });
  699. s.Columns.Add(column =>
  700. {
  701. column.Caption = "Kommentar";
  702. column.FieldName = "Comment";
  703. column.CellStyle.Wrap = DefaultBoolean.True;
  704. column.SetDataItemTemplateContent(c =>
  705. {
  706. var id = Convert.ToInt32(DataBinder.Eval(c.DataItem, "Id"));
  707. var comment = DataBinder.Eval(c.DataItem, "Comment");
  708. var text = comment == null
  709. ? String.Empty
  710. : comment.ToString();
  711. var isLongText = text.ToString().Length > 40;
  712. if (isLongText)
  713. {
  714. html.ViewContext.Writer.Write(text.Substring(0, 40) + " ...");
  715. html.ViewContext.Writer.Write(
  716. "<a href=\"#\" onclick='showComment(\"appendix\"," + id + ",this)'><br />Anzeigen</a>");
  717. }
  718. else
  719. html.ViewContext.Writer.Write(text);
  720. if (_userContext.CurrentUser.HasFunction("Deviation-Deviations-Edit"))
  721. html.ViewContext.Writer.Write(
  722. (isLongText ? "&nbsp;" : "<br/>") +
  723. "<a href=\"#\" onclick='editComment(\"appendix\"," + id + ",function() { devGridViewAppendix.PerformCallback(); })'>Bearbeiten</a>");
  724. });
  725. column.MinWidth = 250;
  726. column.Width = new Unit(14, UnitType.Percentage);
  727. });
  728. s.TotalSummary.Add(new ASPxSummaryItem
  729. {
  730. SummaryType = DevExpress.Data.SummaryItemType.Count,
  731. FieldName = "Description",
  732. DisplayFormat = "Anzahl<br/><i>{0:n0}</i>"
  733. });
  734. s.GroupSummary.Add(new ASPxSummaryItem
  735. {
  736. SummaryType = DevExpress.Data.SummaryItemType.Count,
  737. FieldName = "Description",
  738. DisplayFormat = "Anzahl = {0:n0}"
  739. });
  740. s.TotalSummary.Add(new ASPxSummaryItem
  741. {
  742. SummaryType = DevExpress.Data.SummaryItemType.Sum,
  743. FieldName = "OfferingValue",
  744. DisplayFormat = "Angeb. ∑<br/><i>{0:c2}</i>"
  745. });
  746. s.GroupSummary.Add(new ASPxSummaryItem
  747. {
  748. SummaryType = DevExpress.Data.SummaryItemType.Sum,
  749. FieldName = "OfferingValue",
  750. DisplayFormat = "Angeb.-∑ = {0:c2}"
  751. });
  752. s.TotalSummary.Add(new ASPxSummaryItem
  753. {
  754. SummaryType = DevExpress.Data.SummaryItemType.Sum,
  755. FieldName = "NegotiationValue",
  756. DisplayFormat = "Verhand. ∑<br/><i>{0:c2}</i>"
  757. });
  758. s.GroupSummary.Add(new ASPxSummaryItem
  759. {
  760. SummaryType = DevExpress.Data.SummaryItemType.Sum,
  761. FieldName = "NegotiationValue",
  762. DisplayFormat = "Verhand.-∑ = {0:c2}"
  763. });
  764. s.HtmlRowPrepared = (sender, e) =>
  765. {
  766. var state = e.GetValue("State") as StateDataModel;
  767. if (e.RowType == GridViewRowType.Data && state != null && !state.IsDefault)
  768. e.Row.BackColor = System.Drawing.ColorTranslator.FromHtml(state.HexColor);
  769. };
  770. s.ClientLayout = (sender, e) =>
  771. {
  772. if (e.LayoutMode == ClientLayoutMode.Loading)
  773. {
  774. if (System.Web.HttpContext.Current.Session["AppendixGridState"] != null)
  775. e.LayoutData = (string)System.Web.HttpContext.Current.Session["AppendixGridState"];
  776. }
  777. else
  778. System.Web.HttpContext.Current.Session["AppendixGridState"] = e.LayoutData;
  779. };
  780. s.PreRender = s.BeforeGetCallbackResult = (sender, e) => {
  781. MVCxGridView gridView = sender as MVCxGridView;
  782. System.Web.HttpContext.Current.Session["AppendixGridViewState"] = new MVCxGridViewState(gridView);
  783. };
  784. s.CustomColumnSort = (sender, e) =>
  785. {
  786. if (e.Column.FieldName != "CustomNumber") return;
  787. int.TryParse(e.GetRow1Value("CustomNumber").ToString(), out int rowVal1);
  788. int.TryParse(e.GetRow2Value("CustomNumber").ToString(), out int rowVal2);
  789. e.Result = (rowVal1).CompareTo(rowVal2);
  790. e.Handled = true;
  791. };
  792. s.ClientSideEvents.BeginCallback = "function (s, e) { e.customArgs['scrollHeight'] = [ gridScrollHeight ]; }";
  793. s.ClientSideEvents.ToolbarItemClick = "function (s, e) { onToolbarItemClick(s, e); }";
  794. s.ClientSideEvents.ColumnResized = "function (s, e) { setGridScrollHeight(); }";
  795. //s.Styles.AlternatingRow.BackColor = System.Drawing.Color.FromArgb(247, 247, 247);
  796. s.Styles.Footer.CssClass += "devExGridFooterPanel";
  797. s.Styles.GroupRow.CssClass += "devExGridGroupRow";
  798. return s;
  799. }
  800. /// <summary>
  801. /// Creates GridViewSettings for the mailNotifications gridView
  802. /// </summary>
  803. /// <param name="html">Current HtmlHelper context.</param>
  804. public static GridViewSettings MailNotificationGridViewSettings(this System.Web.Mvc.HtmlHelper html)
  805. {
  806. var s = new GridViewSettings();
  807. s.Name = "devGridViewMailNotifications";
  808. s.KeyFieldName = "Id";
  809. s.CallbackRouteValues = new { Controller = "Misc", Action = "PartialMailNotifications" };
  810. s.Width = Unit.Percentage(99);
  811. s.Settings.ShowHeaderFilterButton = true;
  812. s.Settings.ShowFilterRow = true;
  813. s.Settings.ShowFilterRowMenu = true;
  814. s.Settings.ShowFooter = true;
  815. s.Settings.ShowGroupPanel = true;
  816. s.Settings.AutoFilterCondition = AutoFilterCondition.Contains;
  817. s.Settings.HorizontalScrollBarMode = ScrollBarMode.Auto;
  818. s.Settings.VerticalScrollBarMode = ScrollBarMode.Auto;
  819. s.Settings.VerticalScrollableHeight =
  820. (html.ViewData["ScrollHeight"] == null || (int)html.ViewData["ScrollHeight"] == -1)
  821. ? 400
  822. : (int)html.ViewData["ScrollHeight"];
  823. s.SettingsExport.Landscape = true;
  824. s.SettingsExport.FileName = "Benachrichtigungsliste";
  825. s.SettingsPopup.CustomizationWindow.Width = new Unit(250, UnitType.Pixel);
  826. s.SettingsPopup.CustomizationWindow.Height = new Unit(350, UnitType.Pixel);
  827. s.SettingsBehavior.EnableCustomizationWindow = true;
  828. s.SettingsBehavior.AllowHeaderFilter = true;
  829. s.SettingsPager.AlwaysShowPager = true;
  830. s.SettingsResizing.ColumnResizeMode = ColumnResizeMode.Control;
  831. s.SettingsCookies.Enabled = true;
  832. s.SettingsCookies.CookiesID = "mailNotificationGridStateCookie";
  833. s.Toolbars.Add(t =>
  834. {
  835. var refreshItem = t.Items.Add(GridViewToolbarCommand.Refresh);
  836. refreshItem.Text = "Aktualisieren";
  837. var filterItem = t.Items.Add(GridViewToolbarCommand.ClearFilter);
  838. filterItem.Text = "Filter entfernen";
  839. t.Items.Add(i =>
  840. {
  841. i.Text = "Spalten anzeigen / ausblenden";
  842. i.Name = "ToggleColumnChooser";
  843. i.Image.IconID = IconID.OtherViewgridlines16x16gray;
  844. i.BeginGroup = true;
  845. });
  846. });
  847. if (_userContext.CurrentUser.HasFunction("Misc-MailNotifications-Edit"))
  848. {
  849. s.Columns.Add(column =>
  850. {
  851. column.Caption = "#";
  852. column.SetDataItemTemplateContent(c =>
  853. {
  854. html.ViewContext.Writer.Write(
  855. "<a href=\"#\" onclick=\"editMailNotification(" + DataBinder.Eval(c.DataItem, "Id") + ")\">Bearbeiten</a>&nbsp;");
  856. html.ViewContext.Writer.Write(
  857. "<a href=\"#\" onclick=\"confirmDelete(" + DataBinder.Eval(c.DataItem, "Id") + ")\">Löschen</a><br />");
  858. html.ViewContext.Writer.Write(
  859. "<a href=\"#\" onclick=\"confirmProcess(" + DataBinder.Eval(c.DataItem, "Id") + ")\">Sofort ausführen</a>");
  860. });
  861. column.SetHeaderTemplateContent(c =>
  862. {
  863. html.ViewContext.Writer.Write(
  864. "<a href=\"#\" onclick=\"editMailNotification(-1)\">Neu</a>&nbsp;");
  865. });
  866. column.Settings.AllowDragDrop = DefaultBoolean.False;
  867. column.Settings.AllowSort = DefaultBoolean.False;
  868. column.Width = new Unit(150, UnitType.Pixel);
  869. });
  870. }
  871. s.Columns.Add(column =>
  872. {
  873. column.Caption = "Zeitplan";
  874. column.FieldName = "CronExpressionDescription";
  875. column.MinWidth = 100;
  876. column.Width = new Unit(20, UnitType.Percentage);
  877. });
  878. s.Columns.Add(column =>
  879. {
  880. column.Caption = "Benachrichtigungs-Plugin";
  881. column.FieldName = "NotificationPluginSystemNameDescription";
  882. column.Width = new Unit(17.5, UnitType.Percentage);
  883. });
  884. s.Columns.Add(column =>
  885. {
  886. column.Caption = "Benachrichtigungs-Job";
  887. column.FieldName = "NotificationJobSystemNameDescription";
  888. column.PropertiesEdit.DisplayFormatString = "dd.MM.yyyy";
  889. column.MinWidth = 110;
  890. column.Width = new Unit(17.5, UnitType.Percentage);
  891. });
  892. s.Columns.Add(column =>
  893. {
  894. column.Caption = "Mitarbeiter";
  895. column.FieldName = "UserDescriptions";
  896. column.MinWidth = 200;
  897. column.Width = new Unit(20, UnitType.Percentage);
  898. column.SetDataItemTemplateContent(c =>
  899. {
  900. var userDescriptions = DataBinder.Eval(c.DataItem, "UserDescriptions") as List<string>;
  901. if (userDescriptions != null)
  902. {
  903. foreach (var description in userDescriptions)
  904. {
  905. var split = description.Split('|');
  906. if (split.Length > 1)
  907. html.ViewContext.Writer.Write(
  908. "<span style=\"float: left\">" + split[0] + "</span>" +
  909. "<span style=\"float: right\">" + split[1] + "</span><br />");
  910. else
  911. html.ViewContext.Writer.Write(
  912. "<span>" + split[0] + "</span><br />");
  913. }
  914. }
  915. });
  916. });
  917. s.Columns.Add(column =>
  918. {
  919. column.Caption = "Nächste Ausführung";
  920. column.FieldName = "NextExecutionTime";
  921. column.PropertiesEdit.DisplayFormatString = "dd.MM.yyyy";
  922. column.MinWidth = 110;
  923. column.Width = new Unit(15, UnitType.Percentage);
  924. });
  925. s.ClientLayout = (sender, e) =>
  926. {
  927. if (e.LayoutMode == ClientLayoutMode.Loading)
  928. {
  929. if (System.Web.HttpContext.Current.Session["MailNotificationsGridState"] != null)
  930. e.LayoutData = (string)System.Web.HttpContext.Current.Session["MailNotificationsGridState"];
  931. }
  932. else
  933. System.Web.HttpContext.Current.Session["MailNotificationsGridState"] = e.LayoutData;
  934. };
  935. s.ClientSideEvents.BeginCallback = "function (s, e) { e.customArgs['scrollHeight'] = [ gridScrollHeight ]; }";
  936. s.ClientSideEvents.ToolbarItemClick = "function (s, e) { onToolbarItemClick(s, e); }";
  937. s.Styles.AlternatingRow.BackColor = System.Drawing.Color.FromArgb(247, 247, 247);
  938. return s;
  939. }
  940. /// <summary>
  941. /// Creates GridViewSettings for the logs gridView
  942. /// </summary>
  943. /// <param name="html">Current HtmlHelper context.</param>
  944. public static GridViewSettings LogGridViewSettings(this System.Web.Mvc.HtmlHelper html)
  945. {
  946. var s = new GridViewSettings();
  947. s.Name = "devGridViewLog";
  948. s.KeyFieldName = "Id";
  949. s.CallbackRouteValues = new { Controller = "Misc", Action = "PartialLogs" };
  950. s.Width = Unit.Percentage(99);
  951. s.Settings.ShowHeaderFilterButton = true;
  952. s.Settings.ShowFilterRow = true;
  953. s.Settings.ShowFilterRowMenu = true;
  954. s.Settings.ShowFooter = true;
  955. s.Settings.ShowGroupPanel = true;
  956. s.Settings.AutoFilterCondition = AutoFilterCondition.Contains;
  957. s.Settings.HorizontalScrollBarMode = ScrollBarMode.Auto;
  958. s.Settings.VerticalScrollBarMode = ScrollBarMode.Auto;
  959. s.Settings.VerticalScrollableHeight =
  960. (html.ViewData["ScrollHeight"] == null || (int)html.ViewData["ScrollHeight"] == -1)
  961. ? 400
  962. : (int)html.ViewData["ScrollHeight"];
  963. s.SettingsExport.Landscape = true;
  964. s.SettingsExport.FileName = "Logliste";
  965. s.SettingsPopup.CustomizationWindow.Width = new Unit(250, UnitType.Pixel);
  966. s.SettingsPopup.CustomizationWindow.Height = new Unit(350, UnitType.Pixel);
  967. s.SettingsBehavior.EnableCustomizationWindow = true;
  968. s.SettingsBehavior.AllowHeaderFilter = true;
  969. s.SettingsPager.AlwaysShowPager = true;
  970. s.SettingsResizing.ColumnResizeMode = ColumnResizeMode.Control;
  971. s.SettingsCookies.Enabled = true;
  972. s.SettingsCookies.CookiesID = "logGridStateCookie";
  973. s.Toolbars.Add(t =>
  974. {
  975. var refreshItem = t.Items.Add(GridViewToolbarCommand.Refresh);
  976. refreshItem.Text = "Aktualisieren";
  977. var filterItem = t.Items.Add(GridViewToolbarCommand.ClearFilter);
  978. filterItem.Text = "Filter entfernen";
  979. t.Items.Add(i =>
  980. {
  981. i.Text = "Spalten anzeigen / ausblenden";
  982. i.Name = "ToggleColumnChooser";
  983. i.Image.IconID = IconID.OtherViewgridlines16x16gray;
  984. i.BeginGroup = true;
  985. });
  986. t.Items.Add(i =>
  987. {
  988. i.Text = "Drucken";
  989. i.Name = "Print";
  990. i.Image.IconID = IconID.PrintDefaultprinter16x16;
  991. i.BeginGroup = true;
  992. });
  993. });
  994. s.Columns.Add(column =>
  995. {
  996. column.Caption = "#";
  997. column.SetDataItemTemplateContent(c =>
  998. {
  999. html.ViewContext.Writer.Write(
  1000. "<a href=\"#\" onclick=\"viewLog(" + DataBinder.Eval(c.DataItem, "Id") + ")\">Betrachten</a>&nbsp;");
  1001. if (_userContext.CurrentUser.HasFunction("Misc-Logs-Delete"))
  1002. {
  1003. html.ViewContext.Writer.Write(
  1004. "<a href=\"#\" onclick=\"deleteLog(" + DataBinder.Eval(c.DataItem, "Id") + ")\">Löschen</a><br />");
  1005. }
  1006. });
  1007. column.Settings.AllowDragDrop = DefaultBoolean.False;
  1008. column.Settings.AllowSort = DefaultBoolean.False;
  1009. column.Width = new Unit(150, UnitType.Pixel);
  1010. });
  1011. s.Columns.Add(column =>
  1012. {
  1013. column.Caption = "Level";
  1014. column.FieldName = "LogLevelDescription";
  1015. column.MinWidth = 100;
  1016. column.Width = new Unit(8, UnitType.Percentage);
  1017. });
  1018. s.Columns.Add(column =>
  1019. {
  1020. column.Caption = "Betreff";
  1021. column.FieldName = "ShortMessage";
  1022. column.MinWidth = 150;
  1023. column.Width = new Unit(12, UnitType.Percentage);
  1024. });
  1025. s.Columns.Add(column =>
  1026. {
  1027. column.Caption = "Nachricht";
  1028. column.FieldName = "FullMessage";
  1029. column.MinWidth = 200;
  1030. column.Width = new Unit(20, UnitType.Percentage);
  1031. column.SetDataItemTemplateContent(c =>
  1032. {
  1033. var fullMessage = DataBinder.Eval(c.DataItem, "FullMessage");
  1034. var text = fullMessage == null
  1035. ? String.Empty
  1036. : fullMessage.ToString();
  1037. if (text.ToString().Length > 80)
  1038. html.ViewContext.Writer.Write(text.Substring(0, 80) + " ...");
  1039. else
  1040. html.ViewContext.Writer.Write(text);
  1041. });
  1042. });
  1043. s.Columns.Add(column =>
  1044. {
  1045. column.Caption = "IP-Adresse";
  1046. column.FieldName = "IpAddress";
  1047. column.MinWidth = 130;
  1048. column.Width = new Unit(10, UnitType.Percentage);
  1049. });
  1050. s.Columns.Add(column =>
  1051. {
  1052. column.Caption = "Mitarbeiter";
  1053. column.FieldName = "UserDescription";
  1054. column.MinWidth = 130;
  1055. column.Width = new Unit(10, UnitType.Percentage);
  1056. });
  1057. s.Columns.Add(column =>
  1058. {
  1059. column.Caption = "Datentyp";
  1060. column.FieldName = "EntityType";
  1061. column.MinWidth = 100;
  1062. column.Width = new Unit(8, UnitType.Percentage);
  1063. });
  1064. s.Columns.Add(column =>
  1065. {
  1066. column.Caption = "Daten ID";
  1067. column.FieldName = "EntityId";
  1068. column.MinWidth = 100;
  1069. column.Width = new Unit(8, UnitType.Percentage);
  1070. });
  1071. s.Columns.Add(column =>
  1072. {
  1073. column.Caption = "Seiten URL";
  1074. column.FieldName = "PageUrl";
  1075. column.MinWidth = 150;
  1076. column.Width = new Unit(12, UnitType.Percentage);
  1077. column.Visible = false;
  1078. });
  1079. s.Columns.Add(column =>
  1080. {
  1081. column.Caption = "Relative URL";
  1082. column.FieldName = "ReferrerUrl";
  1083. column.MinWidth = 100;
  1084. column.Width = new Unit(8, UnitType.Percentage);
  1085. column.Visible = false;
  1086. });
  1087. s.Columns.Add(column =>
  1088. {
  1089. column.Caption = "Zeitpunkt";
  1090. column.FieldName = "CreatedOnLocal";
  1091. column.PropertiesEdit.DisplayFormatString = "dd.MM.yyyy - HH:mm:ss";
  1092. column.MinWidth = 150;
  1093. column.Width = new Unit(12, UnitType.Percentage);
  1094. });
  1095. s.ClientLayout = (sender, e) =>
  1096. {
  1097. if (e.LayoutMode == ClientLayoutMode.Loading)
  1098. {
  1099. if (System.Web.HttpContext.Current.Session["LogGridState"] != null)
  1100. e.LayoutData = (string)System.Web.HttpContext.Current.Session["LogGridState"];
  1101. }
  1102. else
  1103. System.Web.HttpContext.Current.Session["LogGridState"] = e.LayoutData;
  1104. };
  1105. s.PreRender = s.BeforeGetCallbackResult = (sender, e) => {
  1106. MVCxGridView gridView = sender as MVCxGridView;
  1107. System.Web.HttpContext.Current.Session["LogGridViewState"] = new MVCxGridViewState(gridView);
  1108. };
  1109. s.ClientSideEvents.BeginCallback = "function (s, e) { e.customArgs['scrollHeight'] = [ gridScrollHeight ]; }";
  1110. s.ClientSideEvents.ToolbarItemClick = "function (s, e) { onToolbarItemClick(s, e); }";
  1111. s.Styles.AlternatingRow.BackColor = System.Drawing.Color.FromArgb(247, 247, 247);
  1112. return s;
  1113. }
  1114. }
  1115. }