GridViewSettingsHelper.cs 41 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928
  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.CellStyle.Wrap = DefaultBoolean.True;
  201. column.SetDataItemTemplateContent(c =>
  202. {
  203. var id = Convert.ToInt32(DataBinder.Eval(c.DataItem, "Id"));
  204. var comment = DataBinder.Eval(c.DataItem, "Comment");
  205. var text = comment == null
  206. ? String.Empty
  207. : comment.ToString();
  208. if (text.ToString().Length > 40)
  209. {
  210. html.ViewContext.Writer.Write(text.Substring(0, 40) + " ...");
  211. html.ViewContext.Writer.Write("<a href=\"#\" onclick='showComment(\"site\"," + id + ",this)'><br />Anzeigen</a>");
  212. }
  213. else
  214. html.ViewContext.Writer.Write(text);
  215. });
  216. column.MinWidth = 120;
  217. column.Width = new Unit(15, UnitType.Percentage);
  218. column.Visible = false;
  219. });
  220. s.TotalSummary.Add(DevExpress.Data.SummaryItemType.Sum, "DeviationValue");
  221. s.GroupSummary.Add(DevExpress.Data.SummaryItemType.Sum, "DeviationValue");
  222. s.TotalSummary.Add(DevExpress.Data.SummaryItemType.Count, "CustomNumber");
  223. s.GroupSummary.Add(DevExpress.Data.SummaryItemType.Count, "CustomNumber");
  224. s.ClientLayout = (sender, e) =>
  225. {
  226. if (e.LayoutMode == ClientLayoutMode.Loading)
  227. {
  228. if (System.Web.HttpContext.Current.Session["SiteGridState"] != null)
  229. e.LayoutData = (string)System.Web.HttpContext.Current.Session["SiteGridState"];
  230. }
  231. else
  232. System.Web.HttpContext.Current.Session["SiteGridState"] = e.LayoutData;
  233. };
  234. s.ClientSideEvents.BeginCallback = "function (s, e) { e.customArgs['scrollHeight'] = [ gridScrollHeight ]; }";
  235. s.ClientSideEvents.ToolbarItemClick = "function (s, e) { onToolbarItemClick(s, e); }";
  236. s.Styles.AlternatingRow.BackColor = System.Drawing.Color.FromArgb(247, 247, 247);
  237. s.Styles.Footer.CssClass += "devExGridFooterPanel";
  238. s.Styles.GroupRow.CssClass += "devExGridGroupRow";
  239. return s;
  240. }
  241. /// <summary>
  242. /// Creates GridViewSettings for the deviation gridView
  243. /// </summary>
  244. /// <param name="html">Current HtmlHelper context.</param>
  245. public static GridViewSettings DeviationGridViewSettings(this System.Web.Mvc.HtmlHelper html)
  246. {
  247. var s = new GridViewSettings();
  248. s.Name = "devGridViewDeviation";
  249. s.KeyFieldName = "Id";
  250. s.CallbackRouteValues = new { Controller = "Deviation", Action = "PartialDeviations" };
  251. s.Width = Unit.Percentage(99);
  252. s.Settings.ShowHeaderFilterButton = true;
  253. s.Settings.ShowFilterRow = true;
  254. s.Settings.ShowFilterRowMenu = true;
  255. s.Settings.ShowFooter = true;
  256. s.Settings.ShowGroupPanel = true;
  257. s.Settings.AutoFilterCondition = AutoFilterCondition.Contains;
  258. s.Settings.VerticalScrollBarMode = ScrollBarMode.Auto;
  259. s.Settings.VerticalScrollableHeight =
  260. (html.ViewData["ScrollHeight"] == null || (int)html.ViewData["ScrollHeight"] == -1)
  261. ? 400
  262. : (int)html.ViewData["ScrollHeight"];
  263. s.SettingsExport.Landscape = true;
  264. s.SettingsExport.FileName = "Vertragsabweichungsliste";
  265. s.SettingsPopup.CustomizationWindow.Width = new Unit(250, UnitType.Pixel);
  266. s.SettingsPopup.CustomizationWindow.Height = new Unit(350, UnitType.Pixel);
  267. s.SettingsBehavior.EnableCustomizationWindow = true;
  268. s.SettingsBehavior.AllowHeaderFilter = true;
  269. s.SettingsPager.AlwaysShowPager = true;
  270. s.SettingsResizing.ColumnResizeMode = ColumnResizeMode.NextColumn;
  271. s.SettingsCookies.Enabled = true;
  272. s.SettingsCookies.CookiesID = "deviationGridStateCookie";
  273. s.Toolbars.Add(t =>
  274. {
  275. var refreshItem = t.Items.Add(GridViewToolbarCommand.Refresh);
  276. refreshItem.Text = "Aktualisieren";
  277. var expandItem = t.Items.Add(GridViewToolbarCommand.FullExpand);
  278. expandItem.Text = "Alle aufklappen";
  279. var collapseItem = t.Items.Add(GridViewToolbarCommand.FullCollapse);
  280. collapseItem.Text = "Alle einklappen";
  281. var filterItem = t.Items.Add(GridViewToolbarCommand.ClearFilter);
  282. filterItem.Text = "Filter entfernen";
  283. t.Items.Add(i =>
  284. {
  285. i.Text = "Spalten anzeigen / ausblenden";
  286. i.Name = "ToggleColumnChooser";
  287. i.Image.IconID = IconID.OtherViewgridlines16x16gray;
  288. i.BeginGroup = true;
  289. });
  290. t.Items.Add(i =>
  291. {
  292. i.Text = "Exportieren nach";
  293. i.Image.IconID = IconID.ActionsDownload16x16office2013;
  294. i.BeginGroup = true;
  295. i.Items.Add(exportitem =>
  296. {
  297. exportitem.Name = "Pdf";
  298. exportitem.Text = "PDF";
  299. exportitem.Image.IconID = IconID.ExportExporttopdf16x16office2013;
  300. });
  301. i.Items.Add(exportitem =>
  302. {
  303. exportitem.Name = "Xlsx";
  304. exportitem.Text = "XLSX";
  305. exportitem.Image.IconID = IconID.ExportExporttoxlsx16x16office2013;
  306. });
  307. i.Items.Add(exportitem =>
  308. {
  309. exportitem.Name = "Xls";
  310. exportitem.Text = "XLS";
  311. exportitem.Image.IconID = IconID.ExportExporttoxls16x16office2013;
  312. });
  313. });
  314. });
  315. s.Columns.Add(column =>
  316. {
  317. column.Caption = "Nummer";
  318. column.FieldName = "CustomNumber";
  319. column.MinWidth = 80;
  320. column.Width = new Unit(8, UnitType.Percentage);
  321. });
  322. s.Columns.Add(column =>
  323. {
  324. column.Caption = "Bezeichnung";
  325. column.FieldName = "Description";
  326. column.MinWidth = 200;
  327. column.Width = new Unit(14, UnitType.Percentage);
  328. });
  329. s.Columns.Add(column =>
  330. {
  331. column.Caption = "Baustelle";
  332. column.FieldName = "SiteDescription";
  333. column.MinWidth = 120;
  334. column.Width = new Unit(10, UnitType.Percentage);
  335. });
  336. s.Columns.Add(column =>
  337. {
  338. column.Caption = "Nachtrag";
  339. column.FieldName = "AppendixDescription";
  340. column.MinWidth = 120;
  341. column.Width = new Unit(10, UnitType.Percentage);
  342. });
  343. s.Columns.Add(column =>
  344. {
  345. column.Caption = "Einreichung";
  346. column.FieldName = "ReceiptDate";
  347. column.PropertiesEdit.DisplayFormatString = "dd.MM.yyyy";
  348. column.SettingsHeaderFilter.Mode = GridHeaderFilterMode.DateRangePicker;
  349. column.MinWidth = 110;
  350. column.Width = new Unit(8, UnitType.Percentage);
  351. });
  352. s.Columns.Add(column =>
  353. {
  354. column.Caption = "Tage VA - NT";
  355. column.FieldName = "DaysReceiptToAppendixOffering";
  356. column.MinWidth = 110;
  357. column.Width = new Unit(8, UnitType.Percentage);
  358. });
  359. s.Columns.Add(column =>
  360. {
  361. column.Caption = "Schätzung bew.";
  362. column.FieldName = "PercentageValue";
  363. column.PropertiesEdit.DisplayFormatString = "c2";
  364. column.MinWidth = 100;
  365. column.Width = new Unit(9, UnitType.Percentage);
  366. });
  367. s.Columns.Add(column =>
  368. {
  369. column.Caption = "Status";
  370. column.FieldName = "StatusDescription";
  371. column.MinWidth = 160;
  372. column.Width = new Unit(12, UnitType.Percentage);
  373. });
  374. s.Columns.Add(column =>
  375. {
  376. column.Caption = "VA-Kategorien";
  377. column.FieldName = "DisturbanceValuesDescription";
  378. column.MinWidth = 200;
  379. column.Width = new Unit(14, UnitType.Percentage);
  380. });
  381. s.Columns.Add(column =>
  382. {
  383. column.Caption = "Art";
  384. column.FieldName = "KindDescription";
  385. column.MinWidth = 140;
  386. column.Width = new Unit(10, UnitType.Percentage);
  387. });
  388. s.Columns.Add(column =>
  389. {
  390. column.Caption = "Kommentar";
  391. column.CellStyle.Wrap = DefaultBoolean.True;
  392. column.SetDataItemTemplateContent(c =>
  393. {
  394. var id = Convert.ToInt32(DataBinder.Eval(c.DataItem, "Id"));
  395. var comment = DataBinder.Eval(c.DataItem, "Comment");
  396. var text = comment == null
  397. ? String.Empty
  398. : comment.ToString();
  399. if (text.ToString().Length > 40)
  400. {
  401. html.ViewContext.Writer.Write(text.Substring(0, 40) + " ...");
  402. html.ViewContext.Writer.Write("<a href=\"#\" onclick='showComment(\"deviation\"," + id + ",this)'><br />Anzeigen</a>");
  403. }
  404. else
  405. html.ViewContext.Writer.Write(text);
  406. });
  407. column.MinWidth = 120;
  408. column.Width = new Unit(8, UnitType.Percentage);
  409. column.Visible = false;
  410. });
  411. var totalDaysReceiptToAppendixOfferingSum = 0;
  412. var totalDaysReceiptToAppendixOfferingCount = 0;
  413. s.CustomSummaryCalculate = (sender, e) =>
  414. {
  415. if (e.SummaryProcess == CustomSummaryProcess.Start)
  416. {
  417. totalDaysReceiptToAppendixOfferingSum = 0;
  418. totalDaysReceiptToAppendixOfferingCount = 0;
  419. }
  420. if (e.SummaryProcess == CustomSummaryProcess.Calculate)
  421. {
  422. var val = e.GetValue("DaysReceiptToAppendixOffering");
  423. if (val != null)
  424. {
  425. totalDaysReceiptToAppendixOfferingCount++;
  426. totalDaysReceiptToAppendixOfferingSum += Convert.ToInt32(val);
  427. }
  428. }
  429. if (e.SummaryProcess == CustomSummaryProcess.Finalize)
  430. e.TotalValue = totalDaysReceiptToAppendixOfferingSum / totalDaysReceiptToAppendixOfferingCount;
  431. };
  432. s.TotalSummary.Add(DevExpress.Data.SummaryItemType.Sum, "PercentageValue");
  433. s.GroupSummary.Add(DevExpress.Data.SummaryItemType.Sum, "PercentageValue");
  434. s.TotalSummary.Add(DevExpress.Data.SummaryItemType.Count, "CustomNumber");
  435. s.GroupSummary.Add(DevExpress.Data.SummaryItemType.Count, "CustomNumber");
  436. s.TotalSummary.Add(new ASPxSummaryItem
  437. {
  438. FieldName = "DaysReceiptToAppendixOffering",
  439. SummaryType = DevExpress.Data.SummaryItemType.Custom,
  440. DisplayFormat = "Schnitt = {0:n0}"
  441. });
  442. s.GroupSummary.Add(new ASPxSummaryItem
  443. {
  444. FieldName = "DaysReceiptToAppendixOffering",
  445. SummaryType = DevExpress.Data.SummaryItemType.Custom,
  446. DisplayFormat = "Schnitt = {0:n0}"
  447. });
  448. s.ClientLayout = (sender, e) =>
  449. {
  450. if (e.LayoutMode == ClientLayoutMode.Loading)
  451. {
  452. if (System.Web.HttpContext.Current.Session["DeviationGridState"] != null)
  453. e.LayoutData = (string)System.Web.HttpContext.Current.Session["DeviationGridState"];
  454. }
  455. else
  456. System.Web.HttpContext.Current.Session["DeviationGridState"] = e.LayoutData;
  457. };
  458. s.ClientSideEvents.BeginCallback = "function (s, e) { e.customArgs['scrollHeight'] = [ gridScrollHeight ]; }";
  459. s.ClientSideEvents.ToolbarItemClick = "function (s, e) { onToolbarItemClick(s, e); }";
  460. s.Styles.Footer.CssClass += "devExGridFooterPanel";
  461. s.Styles.GroupRow.CssClass += "devExGridGroupRow";
  462. s.Styles.AlternatingRow.BackColor = System.Drawing.Color.FromArgb(247, 247, 247);
  463. return s;
  464. }
  465. /// <summary>
  466. /// Creates GridViewSettings for the appendix gridView
  467. /// </summary>
  468. /// <param name="html">Current HtmlHelper context.</param>
  469. public static GridViewSettings AppendixGridViewSettings(this System.Web.Mvc.HtmlHelper html)
  470. {
  471. var s = new GridViewSettings();
  472. s.Name = "devGridViewAppendix";
  473. s.KeyFieldName = "Id";
  474. s.CallbackRouteValues = new { Controller = "Appendix", Action = "PartialAppendices" };
  475. s.Width = Unit.Percentage(99);
  476. s.Settings.ShowHeaderFilterButton = true;
  477. s.Settings.ShowFilterRow = true;
  478. s.Settings.ShowFilterRowMenu = true;
  479. s.Settings.ShowFooter = true;
  480. s.Settings.ShowGroupPanel = true;
  481. s.Settings.AutoFilterCondition = AutoFilterCondition.Contains;
  482. s.Settings.HorizontalScrollBarMode = ScrollBarMode.Auto;
  483. s.Settings.VerticalScrollBarMode = ScrollBarMode.Auto;
  484. s.Settings.VerticalScrollableHeight =
  485. (html.ViewData["ScrollHeight"] == null || (int)html.ViewData["ScrollHeight"] == -1)
  486. ? 400
  487. : (int)html.ViewData["ScrollHeight"];
  488. s.SettingsExport.Landscape = true;
  489. s.SettingsExport.FileName = "Nachtragsliste";
  490. s.SettingsPopup.CustomizationWindow.Width = new Unit(250, UnitType.Pixel);
  491. s.SettingsPopup.CustomizationWindow.Height = new Unit(350, UnitType.Pixel);
  492. s.SettingsBehavior.EnableCustomizationWindow = true;
  493. s.SettingsBehavior.AllowHeaderFilter = true;
  494. s.SettingsPager.AlwaysShowPager = true;
  495. s.SettingsResizing.ColumnResizeMode = ColumnResizeMode.Control;
  496. s.SettingsCookies.Enabled = true;
  497. s.SettingsCookies.CookiesID = "appendixGridStateCookie";
  498. s.Toolbars.Add(t =>
  499. {
  500. var refreshItem = t.Items.Add(GridViewToolbarCommand.Refresh);
  501. refreshItem.Text = "Aktualisieren";
  502. var expandItem = t.Items.Add(GridViewToolbarCommand.FullExpand);
  503. expandItem.Text = "Alle aufklappen";
  504. var collapseItem = t.Items.Add(GridViewToolbarCommand.FullCollapse);
  505. collapseItem.Text = "Alle einklappen";
  506. var filterItem = t.Items.Add(GridViewToolbarCommand.ClearFilter);
  507. filterItem.Text = "Filter entfernen";
  508. t.Items.Add(i =>
  509. {
  510. i.Text = "Spalten anzeigen / ausblenden";
  511. i.Name = "ToggleColumnChooser";
  512. i.Image.IconID = IconID.OtherViewgridlines16x16gray;
  513. i.BeginGroup = true;
  514. });
  515. t.Items.Add(i =>
  516. {
  517. i.Text = "Exportieren nach";
  518. i.Image.IconID = IconID.ActionsDownload16x16office2013;
  519. i.BeginGroup = true;
  520. i.Items.Add(exportitem =>
  521. {
  522. exportitem.Name = "Pdf";
  523. exportitem.Text = "PDF";
  524. exportitem.Image.IconID = IconID.ExportExporttopdf16x16office2013;
  525. });
  526. i.Items.Add(exportitem =>
  527. {
  528. exportitem.Name = "Xlsx";
  529. exportitem.Text = "XLSX";
  530. exportitem.Image.IconID = IconID.ExportExporttoxlsx16x16office2013;
  531. });
  532. i.Items.Add(exportitem =>
  533. {
  534. exportitem.Name = "Xls";
  535. exportitem.Text = "XLS";
  536. exportitem.Image.IconID = IconID.ExportExporttoxls16x16office2013;
  537. });
  538. });
  539. });
  540. s.Columns.Add(column =>
  541. {
  542. column.Caption = "#";
  543. column.FieldName = "CustomNumber";
  544. column.MinWidth = 80;
  545. column.Width = new Unit(80, UnitType.Pixel);
  546. });
  547. s.Columns.Add(column =>
  548. {
  549. column.Caption = "Bezeichnung";
  550. column.FieldName = "Description";
  551. column.MinWidth = 200;
  552. column.Width = new Unit(14, UnitType.Percentage);
  553. });
  554. s.Columns.Add(column =>
  555. {
  556. column.Caption = "Baustelle";
  557. column.FieldName = "SiteDescription";
  558. column.MinWidth = 150;
  559. column.Width = new Unit(10, UnitType.Percentage);
  560. });
  561. s.Columns.Add(column =>
  562. {
  563. column.Caption = "Kst.-Stelle";
  564. column.FieldName = "SiteCustomNumber";
  565. column.MinWidth = 120;
  566. column.Width = new Unit(120, UnitType.Pixel);
  567. });
  568. s.Columns.Add(column =>
  569. {
  570. column.Caption = "Einreichung";
  571. column.FieldName = "OfferingDate";
  572. column.PropertiesEdit.DisplayFormatString = "dd.MM.yyyy";
  573. column.MinWidth = 110;
  574. column.Width = new Unit(110, UnitType.Pixel);
  575. });
  576. s.Columns.Add(column =>
  577. {
  578. column.Caption = "Angeb. -Summe";
  579. column.FieldName = "OfferingValue";
  580. column.PropertiesEdit.DisplayFormatString = "c2";
  581. column.MinWidth = 110;
  582. column.Width = new Unit(110, UnitType.Pixel);
  583. column.HeaderStyle.Wrap = DefaultBoolean.True;
  584. });
  585. s.Columns.Add(column =>
  586. {
  587. column.Caption = "Verhand. -Summe";
  588. column.FieldName = "NegotiationValue";
  589. column.PropertiesEdit.DisplayFormatString = "c2";
  590. column.MinWidth = 110;
  591. column.Width = new Unit(110, UnitType.Pixel);
  592. column.HeaderStyle.Wrap = DefaultBoolean.True;
  593. });
  594. s.Columns.Add(column =>
  595. {
  596. column.Caption = "Anteil Verh. zu Angeb.";
  597. column.FieldName = "RelationOfferingToNegotiation";
  598. column.PropertiesEdit.DisplayFormatString = "p2";
  599. column.MinWidth = 115;
  600. column.Width = new Unit(115, UnitType.Pixel);
  601. column.HeaderStyle.Wrap = DefaultBoolean.True;
  602. });
  603. s.Columns.Add(column =>
  604. {
  605. column.Caption = "VA";
  606. column.FieldName = "DeviationDescription";
  607. column.MinWidth = 70;
  608. column.Width = new Unit(6, UnitType.Percentage);
  609. });
  610. s.Columns.Add(column =>
  611. {
  612. column.Caption = "Faktor Angeb. zu VA";
  613. column.FieldName = "RelationOfferingToDeviations";
  614. column.PropertiesEdit.DisplayFormatString = "n2";
  615. column.MinWidth = 100;
  616. column.Width = new Unit(100, UnitType.Pixel);
  617. column.HeaderStyle.Wrap = DefaultBoolean.True;
  618. });
  619. s.Columns.Add(column =>
  620. {
  621. column.Caption = "Status";
  622. column.FieldName = "StateDescription";
  623. column.MinWidth = 100;
  624. column.Width = new Unit(100, UnitType.Pixel);
  625. });
  626. s.Columns.Add(column =>
  627. {
  628. column.Caption = "NT-Kategorien";
  629. column.FieldName = "CategoryValuesDescription";
  630. column.MinWidth = 200;
  631. column.Width = new Unit(12, UnitType.Percentage);
  632. });
  633. s.Columns.Add(column =>
  634. {
  635. column.Caption = "Kommentar";
  636. column.CellStyle.Wrap = DefaultBoolean.True;
  637. column.SetDataItemTemplateContent(c =>
  638. {
  639. var id = Convert.ToInt32(DataBinder.Eval(c.DataItem, "Id"));
  640. var comment = DataBinder.Eval(c.DataItem, "Comment");
  641. var text = comment == null
  642. ? String.Empty
  643. : comment.ToString();
  644. if (text.ToString().Length > 40)
  645. {
  646. html.ViewContext.Writer.Write(text.Substring(0, 40) + " ...");
  647. html.ViewContext.Writer.Write("<a href=\"#\" onclick='showComment(\"appendix\"," + id + ",this)'><br />Anzeigen</a>");
  648. }
  649. else
  650. html.ViewContext.Writer.Write(text);
  651. });
  652. column.MinWidth = 250;
  653. column.Width = new Unit(14, UnitType.Percentage);
  654. });
  655. s.TotalSummary.Add(DevExpress.Data.SummaryItemType.Count, "CustomNumber");
  656. s.GroupSummary.Add(DevExpress.Data.SummaryItemType.Count, "CustomNumber");
  657. s.TotalSummary.Add(new ASPxSummaryItem
  658. {
  659. SummaryType = DevExpress.Data.SummaryItemType.Sum,
  660. FieldName = "OfferingValue",
  661. DisplayFormat = "Angeb.-Sum.: {0:c2}"
  662. });
  663. s.GroupSummary.Add(new ASPxSummaryItem
  664. {
  665. SummaryType = DevExpress.Data.SummaryItemType.Sum,
  666. FieldName = "OfferingValue",
  667. DisplayFormat = "Angeb.-Sum.: {0:c2}"
  668. });
  669. s.TotalSummary.Add(new ASPxSummaryItem
  670. {
  671. SummaryType = DevExpress.Data.SummaryItemType.Sum,
  672. FieldName = "NegotiationValue",
  673. DisplayFormat = "Verhand.-Sum.: {0:c2}"
  674. });
  675. s.GroupSummary.Add(new ASPxSummaryItem
  676. {
  677. SummaryType = DevExpress.Data.SummaryItemType.Sum,
  678. FieldName = "NegotiationValue",
  679. DisplayFormat = "Verhand.-Sum.: {0:c2}"
  680. });
  681. s.HtmlRowPrepared = (sender, e) =>
  682. {
  683. var state = e.GetValue("State") as StateDataModel;
  684. if (e.RowType == GridViewRowType.Data && state != null && !state.IsDefault)
  685. e.Row.BackColor = System.Drawing.ColorTranslator.FromHtml(state.HexColor);
  686. };
  687. s.ClientLayout = (sender, e) =>
  688. {
  689. if (e.LayoutMode == ClientLayoutMode.Loading)
  690. {
  691. if (System.Web.HttpContext.Current.Session["AppendixGridState"] != null)
  692. e.LayoutData = (string)System.Web.HttpContext.Current.Session["AppendixGridState"];
  693. }
  694. else
  695. System.Web.HttpContext.Current.Session["AppendixGridState"] = e.LayoutData;
  696. };
  697. s.ClientSideEvents.BeginCallback = "function (s, e) { e.customArgs['scrollHeight'] = [ gridScrollHeight ]; }";
  698. s.ClientSideEvents.ToolbarItemClick = "function (s, e) { onToolbarItemClick(s, e); }";
  699. s.ClientSideEvents.ColumnResized = "function (s, e) { setGridScrollHeight(); }";
  700. //s.Styles.AlternatingRow.BackColor = System.Drawing.Color.FromArgb(247, 247, 247);
  701. s.Styles.Footer.CssClass += "devExGridFooterPanel";
  702. s.Styles.GroupRow.CssClass += "devExGridGroupRow";
  703. return s;
  704. }
  705. /// <summary>
  706. /// Creates GridViewSettings for the mailNotifications gridView
  707. /// </summary>
  708. /// <param name="html">Current HtmlHelper context.</param>
  709. public static GridViewSettings MailNotificationGridViewSettings(this System.Web.Mvc.HtmlHelper html)
  710. {
  711. var s = new GridViewSettings();
  712. s.Name = "devGridViewMailNotifications";
  713. s.KeyFieldName = "Id";
  714. s.CallbackRouteValues = new { Controller = "Misc", Action = "PartialMailNotifications" };
  715. s.Width = Unit.Percentage(99);
  716. s.Settings.ShowHeaderFilterButton = true;
  717. s.Settings.ShowFilterRow = true;
  718. s.Settings.ShowFilterRowMenu = true;
  719. s.Settings.ShowFooter = true;
  720. s.Settings.ShowGroupPanel = true;
  721. s.Settings.AutoFilterCondition = AutoFilterCondition.Contains;
  722. s.Settings.VerticalScrollBarMode = ScrollBarMode.Auto;
  723. s.Settings.VerticalScrollableHeight =
  724. (html.ViewData["ScrollHeight"] == null || (int)html.ViewData["ScrollHeight"] == -1)
  725. ? 400
  726. : (int)html.ViewData["ScrollHeight"];
  727. s.SettingsExport.Landscape = true;
  728. s.SettingsExport.FileName = "Benachrichtigungsliste";
  729. s.SettingsPopup.CustomizationWindow.Width = new Unit(250, UnitType.Pixel);
  730. s.SettingsPopup.CustomizationWindow.Height = new Unit(350, UnitType.Pixel);
  731. s.SettingsBehavior.EnableCustomizationWindow = true;
  732. s.SettingsBehavior.AllowHeaderFilter = true;
  733. s.SettingsPager.AlwaysShowPager = true;
  734. s.SettingsResizing.ColumnResizeMode = ColumnResizeMode.NextColumn;
  735. s.SettingsCookies.Enabled = true;
  736. s.SettingsCookies.CookiesID = "mailNotificationGridStateCookie";
  737. s.Toolbars.Add(t =>
  738. {
  739. var refreshItem = t.Items.Add(GridViewToolbarCommand.Refresh);
  740. refreshItem.Text = "Aktualisieren";
  741. var filterItem = t.Items.Add(GridViewToolbarCommand.ClearFilter);
  742. filterItem.Text = "Filter entfernen";
  743. t.Items.Add(i =>
  744. {
  745. i.Text = "Spalten anzeigen / ausblenden";
  746. i.Name = "ToggleColumnChooser";
  747. i.Image.IconID = IconID.OtherViewgridlines16x16gray;
  748. i.BeginGroup = true;
  749. });
  750. t.Items.Add(i =>
  751. {
  752. i.Text = "Exportieren nach";
  753. i.Image.IconID = IconID.ActionsDownload16x16office2013;
  754. i.BeginGroup = true;
  755. i.Items.Add(exportitem =>
  756. {
  757. exportitem.Name = "Pdf";
  758. exportitem.Text = "PDF";
  759. exportitem.Image.IconID = IconID.ExportExporttopdf16x16office2013;
  760. });
  761. i.Items.Add(exportitem =>
  762. {
  763. exportitem.Name = "Xlsx";
  764. exportitem.Text = "XLSX";
  765. exportitem.Image.IconID = IconID.ExportExporttoxlsx16x16office2013;
  766. });
  767. i.Items.Add(exportitem =>
  768. {
  769. exportitem.Name = "Xls";
  770. exportitem.Text = "XLS";
  771. exportitem.Image.IconID = IconID.ExportExporttoxls16x16office2013;
  772. });
  773. });
  774. });
  775. if (_userContext.CurrentUser.HasFunction("Misc-MailNotifications-Edit"))
  776. {
  777. s.Columns.Add(column =>
  778. {
  779. column.Caption = "#";
  780. column.SetDataItemTemplateContent(c =>
  781. {
  782. html.ViewContext.Writer.Write(
  783. "<a href=\"#\" onclick=\"editMailNotification(" + DataBinder.Eval(c.DataItem, "Id") + ")\">Bearbeiten</a>&nbsp;");
  784. html.ViewContext.Writer.Write(
  785. "<a href=\"#\" onclick=\"confirmDelete(" + DataBinder.Eval(c.DataItem, "Id") + ")\">Löschen</a><br />");
  786. html.ViewContext.Writer.Write(
  787. "<a href=\"#\" onclick=\"confirmProcess(" + DataBinder.Eval(c.DataItem, "Id") + ")\">Sofort ausführen</a>");
  788. });
  789. column.SetHeaderTemplateContent(c =>
  790. {
  791. html.ViewContext.Writer.Write(
  792. "<a href=\"#\" onclick=\"editMailNotification(-1)\">Neu</a>&nbsp;");
  793. });
  794. column.Settings.AllowDragDrop = DefaultBoolean.False;
  795. column.Settings.AllowSort = DefaultBoolean.False;
  796. column.Width = new Unit(150, UnitType.Pixel);
  797. });
  798. }
  799. s.Columns.Add(column =>
  800. {
  801. column.Caption = "Zeitplan";
  802. column.FieldName = "CronExpressionDescription";
  803. column.MinWidth = 100;
  804. column.Width = new Unit(20, UnitType.Percentage);
  805. });
  806. s.Columns.Add(column =>
  807. {
  808. column.Caption = "Benachrichtigungs-Plugin";
  809. column.FieldName = "NotificationPluginSystemNameDescription";
  810. column.Width = new Unit(17.5, UnitType.Percentage);
  811. });
  812. s.Columns.Add(column =>
  813. {
  814. column.Caption = "Benachrichtigungs-Job";
  815. column.FieldName = "NotificationJobSystemNameDescription";
  816. column.PropertiesEdit.DisplayFormatString = "dd.MM.yyyy";
  817. column.MinWidth = 110;
  818. column.Width = new Unit(17.5, UnitType.Percentage);
  819. });
  820. s.Columns.Add(column =>
  821. {
  822. column.Caption = "Mitarbeiter";
  823. column.MinWidth = 150;
  824. column.Width = new Unit(15, UnitType.Percentage);
  825. column.SetDataItemTemplateContent(c =>
  826. {
  827. var userDescriptions = DataBinder.Eval(c.DataItem, "UserDescriptions") as List<string>;
  828. if (userDescriptions != null)
  829. {
  830. foreach (var description in userDescriptions)
  831. {
  832. var split = description.Split('|');
  833. if (split.Length > 1)
  834. html.ViewContext.Writer.Write(
  835. "<span style=\"float: left\">" + split[0] + "</span>" +
  836. "<span style=\"float: right\">" + split[1] + "</span><br />");
  837. else
  838. html.ViewContext.Writer.Write(
  839. "<span>" + split[0] + "</span><br />");
  840. }
  841. }
  842. });
  843. });
  844. s.Columns.Add(column =>
  845. {
  846. column.Caption = "Nächste Ausführung";
  847. column.FieldName = "NextExecutionTime";
  848. column.PropertiesEdit.DisplayFormatString = "dd.MM.yyyy";
  849. column.MinWidth = 110;
  850. column.Width = new Unit(15, UnitType.Percentage);
  851. });
  852. s.ClientLayout = (sender, e) =>
  853. {
  854. if (e.LayoutMode == ClientLayoutMode.Loading)
  855. {
  856. if (System.Web.HttpContext.Current.Session["MailNotificationsGridState"] != null)
  857. e.LayoutData = (string)System.Web.HttpContext.Current.Session["MailNotificationsGridState"];
  858. }
  859. else
  860. System.Web.HttpContext.Current.Session["MailNotificationsGridState"] = e.LayoutData;
  861. };
  862. s.ClientSideEvents.BeginCallback = "function (s, e) { e.customArgs['scrollHeight'] = [ gridScrollHeight ]; }";
  863. s.ClientSideEvents.ToolbarItemClick = "function (s, e) { onToolbarItemClick(s, e); }";
  864. s.Styles.AlternatingRow.BackColor = System.Drawing.Color.FromArgb(247, 247, 247);
  865. return s;
  866. }
  867. }
  868. }