GridViewSettingsHelper.cs 52 KB

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