GridViewSettingsHelper.cs 55 KB

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