GridViewSettingsHelper.cs 36 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823
  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 System;
  8. using System.Collections.Generic;
  9. using System.Web.UI;
  10. using System.Web.UI.WebControls;
  11. namespace GreenTree.Nachtragsmanagement.Web.Extensions
  12. {
  13. public static class GridViewSettingsHelper
  14. {
  15. /// <summary>
  16. /// Current user context
  17. /// </summary>
  18. public static UserContext _userContext = Core.CommonHelper.UserContext();
  19. /// <summary>
  20. /// Creates GridViewSettings for the site gridView
  21. /// </summary>
  22. /// <param name="html">Current HtmlHelper context.</param>
  23. public static GridViewSettings SiteGridViewSettings(this System.Web.Mvc.HtmlHelper html)
  24. {
  25. var s = new GridViewSettings();
  26. s.Name = "devGridViewSite";
  27. s.KeyFieldName = "Id";
  28. s.CallbackRouteValues = new { Controller = "Site", Action = "PartialSites" };
  29. s.Width = Unit.Percentage(99);
  30. s.Settings.ShowFilterRow = true;
  31. s.Settings.ShowFilterRowMenu = true;
  32. s.Settings.ShowFooter = true;
  33. s.Settings.ShowGroupPanel = true;
  34. s.Settings.AutoFilterCondition = AutoFilterCondition.Contains;
  35. s.Settings.VerticalScrollBarMode = ScrollBarMode.Auto;
  36. s.Settings.VerticalScrollableHeight =
  37. (html.ViewData["ScrollHeight"] == null || (int)html.ViewData["ScrollHeight"] == -1)
  38. ? 400
  39. : (int)html.ViewData["ScrollHeight"];
  40. s.SettingsExport.Landscape = true;
  41. s.SettingsExport.FileName = "Baustellenliste";
  42. s.SettingsPopup.CustomizationWindow.Width = new Unit(250, UnitType.Pixel);
  43. s.SettingsPopup.CustomizationWindow.Height = new Unit(350, UnitType.Pixel);
  44. s.SettingsBehavior.EnableCustomizationWindow = true;
  45. s.Toolbars.Add(t =>
  46. {
  47. var refreshItem = t.Items.Add(GridViewToolbarCommand.Refresh);
  48. refreshItem.Text = "Aktualisieren";
  49. var expandItem = t.Items.Add(GridViewToolbarCommand.FullExpand);
  50. expandItem.Text = "Alle aufklappen";
  51. var collapseItem = t.Items.Add(GridViewToolbarCommand.FullCollapse);
  52. collapseItem.Text = "Alle einklappen";
  53. var filterItem = t.Items.Add(GridViewToolbarCommand.ClearFilter);
  54. filterItem.Text = "Filter entfernen";
  55. t.Items.Add(i =>
  56. {
  57. i.Text = "Spalten anzeigen / ausblenden";
  58. i.Name = "ToggleColumnChooser";
  59. i.Image.IconID = IconID.OtherViewgridlines16x16gray;
  60. i.BeginGroup = true;
  61. });
  62. t.Items.Add(i =>
  63. {
  64. i.Text = "Exportieren nach";
  65. i.Image.IconID = IconID.ActionsDownload16x16office2013;
  66. i.BeginGroup = true;
  67. i.Items.Add(exportitem =>
  68. {
  69. exportitem.Name = "Pdf";
  70. exportitem.Text = "PDF";
  71. exportitem.Image.IconID = IconID.ExportExporttopdf16x16office2013;
  72. });
  73. i.Items.Add(exportitem =>
  74. {
  75. exportitem.Name = "Xlsx";
  76. exportitem.Text = "XLSX";
  77. exportitem.Image.IconID = IconID.ExportExporttoxlsx16x16office2013;
  78. });
  79. i.Items.Add(exportitem =>
  80. {
  81. exportitem.Name = "Xls";
  82. exportitem.Text = "XLS";
  83. exportitem.Image.IconID = IconID.ExportExporttoxls16x16office2013;
  84. });
  85. });
  86. });
  87. if (_userContext.CurrentUser.HasFunction("Site-Sites-Edit") || _userContext.CurrentUser.HasFunction("Site-Sites-Delete"))
  88. {
  89. s.Columns.Add(column =>
  90. {
  91. column.Caption = "#";
  92. column.SetDataItemTemplateContent(c =>
  93. {
  94. if (_userContext.CurrentUser.HasFunction("Site-Sites-Edit"))
  95. html.ViewContext.Writer.Write(
  96. "<a href=\"#\" onclick=\"editSite(" + DataBinder.Eval(c.DataItem, "Id") + ")\">Bearbeiten</a>");
  97. if (_userContext.CurrentUser.HasFunction("Site-Sites-Delete"))
  98. html.ViewContext.Writer.Write(
  99. "<br /><a href=\"#\" onclick=\"confirmDelete(" + DataBinder.Eval(c.DataItem, "Id") + ")\">Löschen</a>");
  100. });
  101. column.SetHeaderTemplateContent(c =>
  102. {
  103. if (_userContext.CurrentUser.HasFunction("Site-Sites-Edit"))
  104. html.ViewContext.Writer.Write(
  105. "<a href=\"#\" onclick=\"editSite(-1)\">Neu</a>&nbsp;");
  106. });
  107. column.Settings.AllowDragDrop = DefaultBoolean.False;
  108. column.Settings.AllowSort = DefaultBoolean.False;
  109. column.Width = new Unit(150, UnitType.Pixel);
  110. });
  111. }
  112. s.Columns.Add(column =>
  113. {
  114. column.Caption = "Kostenstelle";
  115. column.FieldName = "CustomNumber";
  116. column.MinWidth = 100;
  117. column.Width = new Unit(10, UnitType.Percentage);
  118. });
  119. s.Columns.Add(column =>
  120. {
  121. column.Caption = "Bauvorhaben";
  122. column.FieldName = "Description";
  123. column.Width = new Unit(13, UnitType.Percentage);
  124. });
  125. s.Columns.Add(column =>
  126. {
  127. column.Caption = "Start";
  128. column.FieldName = "Start";
  129. column.PropertiesEdit.DisplayFormatString = "dd.MM.yyyy";
  130. column.MinWidth = 110;
  131. column.Width = new Unit(8, UnitType.Percentage);
  132. });
  133. s.Columns.Add(column =>
  134. {
  135. column.Caption = "Ende";
  136. column.FieldName = "End";
  137. column.PropertiesEdit.DisplayFormatString = "dd.MM.yyyy";
  138. column.MinWidth = 110;
  139. column.Width = new Unit(8, UnitType.Percentage);
  140. });
  141. s.Columns.Add(column =>
  142. {
  143. column.Caption = "VA";
  144. column.FieldName = "DeviationDescription";
  145. column.MinWidth = 150;
  146. column.Width = new Unit(12, UnitType.Percentage);
  147. });
  148. s.Columns.Add(column =>
  149. {
  150. column.Caption = "VA-Summe";
  151. column.FieldName = "DeviationValue";
  152. column.PropertiesEdit.DisplayFormatString = "c2";
  153. column.MinWidth = 120;
  154. column.Width = new Unit(10, UnitType.Percentage);
  155. });
  156. s.Columns.Add(column =>
  157. {
  158. column.Caption = "Nachträge";
  159. column.FieldName = "AppendixDescription";
  160. column.Width = new Unit(10, UnitType.Percentage);
  161. });
  162. s.Columns.Add(column =>
  163. {
  164. column.Caption = "Mitarbeiter";
  165. column.MinWidth = 150;
  166. column.Width = new Unit(20, UnitType.Percentage);
  167. column.SetDataItemTemplateContent(c =>
  168. {
  169. var userDescriptions = DataBinder.Eval(c.DataItem, "UserDescriptions") as List<string>;
  170. if (userDescriptions != null)
  171. {
  172. html.ViewContext.Writer.Write(
  173. String.Join("<br />", userDescriptions));
  174. }
  175. });
  176. });
  177. s.Columns.Add(column =>
  178. {
  179. column.Caption = "Kommentar";
  180. column.FieldName = "Comment";
  181. column.MinWidth = 100;
  182. column.Width = new Unit(10, UnitType.Percentage);
  183. });
  184. s.TotalSummary.Add(DevExpress.Data.SummaryItemType.Sum, "DeviationValue");
  185. s.GroupSummary.Add(DevExpress.Data.SummaryItemType.Sum, "DeviationValue");
  186. s.TotalSummary.Add(DevExpress.Data.SummaryItemType.Count, "CustomNumber");
  187. s.GroupSummary.Add(DevExpress.Data.SummaryItemType.Count, "CustomNumber");
  188. s.ClientLayout = (sender, e) =>
  189. {
  190. if (e.LayoutMode == ClientLayoutMode.Loading)
  191. {
  192. if (System.Web.HttpContext.Current.Session["SiteGridState"] != null)
  193. e.LayoutData = (string)System.Web.HttpContext.Current.Session["SiteGridState"];
  194. }
  195. else
  196. System.Web.HttpContext.Current.Session["SiteGridState"] = e.LayoutData;
  197. };
  198. s.ClientSideEvents.BeginCallback = "function (s, e) { e.customArgs['scrollHeight'] = [ gridScrollHeight ]; }";
  199. s.ClientSideEvents.ToolbarItemClick = "function (s, e) { onToolbarItemClick(s, e); }";
  200. s.Styles.AlternatingRow.BackColor = System.Drawing.Color.FromArgb(247, 247, 247);
  201. return s;
  202. }
  203. /// <summary>
  204. /// Creates GridViewSettings for the deviation gridView
  205. /// </summary>
  206. /// <param name="html">Current HtmlHelper context.</param>
  207. public static GridViewSettings DeviationGridViewSettings(this System.Web.Mvc.HtmlHelper html)
  208. {
  209. var s = new GridViewSettings();
  210. s.Name = "devGridViewDeviation";
  211. s.KeyFieldName = "Id";
  212. s.CallbackRouteValues = new { Controller = "Deviation", Action = "PartialDeviations" };
  213. s.Width = Unit.Percentage(99);
  214. s.Settings.ShowFilterRow = true;
  215. s.Settings.ShowFilterRowMenu = true;
  216. s.Settings.ShowFooter = true;
  217. s.Settings.ShowGroupPanel = true;
  218. s.Settings.AutoFilterCondition = AutoFilterCondition.Contains;
  219. s.Settings.VerticalScrollBarMode = ScrollBarMode.Auto;
  220. s.Settings.VerticalScrollableHeight =
  221. (html.ViewData["ScrollHeight"] == null || (int)html.ViewData["ScrollHeight"] == -1)
  222. ? 400
  223. : (int)html.ViewData["ScrollHeight"];
  224. s.SettingsExport.Landscape = true;
  225. s.SettingsExport.FileName = "Vertragsabweichungsliste";
  226. s.SettingsBehavior.EnableCustomizationWindow = true;
  227. s.SettingsPopup.CustomizationWindow.Width = new Unit(250, UnitType.Pixel);
  228. s.SettingsPopup.CustomizationWindow.Height = new Unit(350, UnitType.Pixel);
  229. s.Toolbars.Add(t =>
  230. {
  231. var refreshItem = t.Items.Add(GridViewToolbarCommand.Refresh);
  232. refreshItem.Text = "Aktualisieren";
  233. var expandItem = t.Items.Add(GridViewToolbarCommand.FullExpand);
  234. expandItem.Text = "Alle aufklappen";
  235. var collapseItem = t.Items.Add(GridViewToolbarCommand.FullCollapse);
  236. collapseItem.Text = "Alle einklappen";
  237. var filterItem = t.Items.Add(GridViewToolbarCommand.ClearFilter);
  238. filterItem.Text = "Filter entfernen";
  239. t.Items.Add(i =>
  240. {
  241. i.Text = "Spalten anzeigen / ausblenden";
  242. i.Name = "ToggleColumnChooser";
  243. i.Image.IconID = IconID.OtherViewgridlines16x16gray;
  244. i.BeginGroup = true;
  245. });
  246. t.Items.Add(i =>
  247. {
  248. i.Text = "Exportieren nach";
  249. i.Image.IconID = IconID.ActionsDownload16x16office2013;
  250. i.BeginGroup = true;
  251. i.Items.Add(exportitem =>
  252. {
  253. exportitem.Name = "Pdf";
  254. exportitem.Text = "PDF";
  255. exportitem.Image.IconID = IconID.ExportExporttopdf16x16office2013;
  256. });
  257. i.Items.Add(exportitem =>
  258. {
  259. exportitem.Name = "Xlsx";
  260. exportitem.Text = "XLSX";
  261. exportitem.Image.IconID = IconID.ExportExporttoxlsx16x16office2013;
  262. });
  263. i.Items.Add(exportitem =>
  264. {
  265. exportitem.Name = "Xls";
  266. exportitem.Text = "XLS";
  267. exportitem.Image.IconID = IconID.ExportExporttoxls16x16office2013;
  268. });
  269. });
  270. });
  271. s.Columns.Add(column =>
  272. {
  273. column.Caption = "Nummer";
  274. column.FieldName = "CustomNumber";
  275. column.MinWidth = 80;
  276. column.Width = new Unit(8, UnitType.Percentage);
  277. });
  278. s.Columns.Add(column =>
  279. {
  280. column.Caption = "Bezeichnung";
  281. column.FieldName = "Description";
  282. column.MinWidth = 200;
  283. column.Width = new Unit(14, UnitType.Percentage);
  284. });
  285. s.Columns.Add(column =>
  286. {
  287. column.Caption = "Baustelle";
  288. column.FieldName = "SiteDescription";
  289. column.MinWidth = 120;
  290. column.Width = new Unit(10, UnitType.Percentage);
  291. });
  292. s.Columns.Add(column =>
  293. {
  294. column.Caption = "Nachtrag";
  295. column.FieldName = "AppendixDescription";
  296. column.MinWidth = 120;
  297. column.Width = new Unit(10, UnitType.Percentage);
  298. });
  299. s.Columns.Add(column =>
  300. {
  301. column.Caption = "Einreichung";
  302. column.FieldName = "ReceiptDate";
  303. column.PropertiesEdit.DisplayFormatString = "dd.MM.yyyy";
  304. column.MinWidth = 110;
  305. column.Width = new Unit(8, UnitType.Percentage);
  306. });
  307. s.Columns.Add(column =>
  308. {
  309. column.Caption = "Tage VA - NT";
  310. column.FieldName = "DaysReceiptToAppendixOffering";
  311. column.MinWidth = 110;
  312. column.Width = new Unit(8, UnitType.Percentage);
  313. });
  314. s.Columns.Add(column =>
  315. {
  316. column.Caption = "Schätzung bew.";
  317. column.FieldName = "PercentageValue";
  318. column.PropertiesEdit.DisplayFormatString = "c2";
  319. column.MinWidth = 100;
  320. column.Width = new Unit(9, UnitType.Percentage);
  321. });
  322. s.Columns.Add(column =>
  323. {
  324. column.Caption = "Status";
  325. column.FieldName = "StatusDescription";
  326. column.MinWidth = 160;
  327. column.Width = new Unit(12, UnitType.Percentage);
  328. });
  329. s.Columns.Add(column =>
  330. {
  331. column.Caption = "VA-Kategorien";
  332. column.FieldName = "DisturbanceValuesDescription";
  333. column.MinWidth = 200;
  334. column.Width = new Unit(14, UnitType.Percentage);
  335. });
  336. s.Columns.Add(column =>
  337. {
  338. column.Caption = "Art";
  339. column.FieldName = "KindDescription";
  340. column.MinWidth = 140;
  341. column.Width = new Unit(10, UnitType.Percentage);
  342. });
  343. s.Columns.Add(column =>
  344. {
  345. column.Caption = "Kommentar";
  346. column.CellStyle.Wrap = DefaultBoolean.True;
  347. column.SetDataItemTemplateContent(c =>
  348. {
  349. var id = Convert.ToInt32(DataBinder.Eval(c.DataItem, "Id"));
  350. var comment = DataBinder.Eval(c.DataItem, "Comment");
  351. var text = comment == null
  352. ? String.Empty
  353. : comment.ToString();
  354. if (text.ToString().Length > 40)
  355. {
  356. html.ViewContext.Writer.Write(text.Substring(0, 40) + " ...");
  357. html.ViewContext.Writer.Write("<a href=\"#\" onclick='showComment(\"deviation\"," + id + ",this)'><br />Anzeigen</a>");
  358. }
  359. else
  360. html.ViewContext.Writer.Write(text);
  361. });
  362. column.MinWidth = 120;
  363. column.Width = new Unit(8, UnitType.Percentage);
  364. column.Visible = false;
  365. });
  366. var totalDaysReceiptToAppendixOfferingSum = 0;
  367. var totalDaysReceiptToAppendixOfferingCount = 0;
  368. s.CustomSummaryCalculate = (sender, e) =>
  369. {
  370. if (e.SummaryProcess == CustomSummaryProcess.Start)
  371. {
  372. totalDaysReceiptToAppendixOfferingSum = 0;
  373. totalDaysReceiptToAppendixOfferingCount = 0;
  374. }
  375. if (e.SummaryProcess == CustomSummaryProcess.Calculate)
  376. {
  377. var val = e.GetValue("DaysReceiptToAppendixOffering");
  378. if (val != null)
  379. {
  380. totalDaysReceiptToAppendixOfferingCount++;
  381. totalDaysReceiptToAppendixOfferingSum += Convert.ToInt32(val);
  382. }
  383. }
  384. if (e.SummaryProcess == CustomSummaryProcess.Finalize)
  385. e.TotalValue = totalDaysReceiptToAppendixOfferingSum / totalDaysReceiptToAppendixOfferingCount;
  386. };
  387. s.TotalSummary.Add(DevExpress.Data.SummaryItemType.Sum, "PercentageValue");
  388. s.GroupSummary.Add(DevExpress.Data.SummaryItemType.Sum, "PercentageValue");
  389. s.TotalSummary.Add(DevExpress.Data.SummaryItemType.Count, "CustomNumber");
  390. s.GroupSummary.Add(DevExpress.Data.SummaryItemType.Count, "CustomNumber");
  391. s.TotalSummary.Add(new ASPxSummaryItem
  392. {
  393. FieldName = "DaysReceiptToAppendixOffering",
  394. SummaryType = DevExpress.Data.SummaryItemType.Custom,
  395. DisplayFormat = "Schnitt = {0:n0}",
  396. });
  397. s.GroupSummary.Add(new ASPxSummaryItem
  398. {
  399. FieldName = "DaysReceiptToAppendixOffering",
  400. SummaryType = DevExpress.Data.SummaryItemType.Custom,
  401. DisplayFormat = "Schnitt = {0:n0}"
  402. });
  403. s.ClientLayout = (sender, e) =>
  404. {
  405. if (e.LayoutMode == ClientLayoutMode.Loading)
  406. {
  407. if (System.Web.HttpContext.Current.Session["DeviationGridState"] != null)
  408. e.LayoutData = (string)System.Web.HttpContext.Current.Session["DeviationGridState"];
  409. }
  410. else
  411. System.Web.HttpContext.Current.Session["DeviationGridState"] = e.LayoutData;
  412. };
  413. s.ClientSideEvents.BeginCallback = "function (s, e) { e.customArgs['scrollHeight'] = [ gridScrollHeight ]; }";
  414. s.ClientSideEvents.ToolbarItemClick = "function (s, e) { onToolbarItemClick(s, e); }";
  415. s.Styles.AlternatingRow.BackColor = System.Drawing.Color.FromArgb(247, 247, 247);
  416. return s;
  417. }
  418. /// <summary>
  419. /// Creates GridViewSettings for the appendix gridView
  420. /// </summary>
  421. /// <param name="html">Current HtmlHelper context.</param>
  422. public static GridViewSettings AppendixGridViewSettings(this System.Web.Mvc.HtmlHelper html)
  423. {
  424. var s = new GridViewSettings();
  425. s.Name = "devGridViewAppendix";
  426. s.KeyFieldName = "Id";
  427. s.CallbackRouteValues = new { Controller = "Appendix", Action = "PartialAppendices" };
  428. s.Width = Unit.Percentage(99);
  429. s.Settings.ShowFilterRow = true;
  430. s.Settings.ShowFilterRowMenu = true;
  431. s.Settings.ShowFooter = true;
  432. s.Settings.ShowGroupPanel = true;
  433. s.Settings.AutoFilterCondition = AutoFilterCondition.Contains;
  434. s.Settings.VerticalScrollBarMode = ScrollBarMode.Auto;
  435. s.Settings.VerticalScrollableHeight =
  436. (html.ViewData["ScrollHeight"] == null || (int)html.ViewData["ScrollHeight"] == -1)
  437. ? 400
  438. : (int)html.ViewData["ScrollHeight"];
  439. s.SettingsExport.Landscape = true;
  440. s.SettingsExport.FileName = "Nachtragsliste";
  441. s.SettingsBehavior.EnableCustomizationWindow = true;
  442. s.SettingsPopup.CustomizationWindow.Width = new Unit(250, UnitType.Pixel);
  443. s.SettingsPopup.CustomizationWindow.Height = new Unit(350, UnitType.Pixel);
  444. s.Toolbars.Add(t =>
  445. {
  446. var refreshItem = t.Items.Add(GridViewToolbarCommand.Refresh);
  447. refreshItem.Text = "Aktualisieren";
  448. var expandItem = t.Items.Add(GridViewToolbarCommand.FullExpand);
  449. expandItem.Text = "Alle aufklappen";
  450. var collapseItem = t.Items.Add(GridViewToolbarCommand.FullCollapse);
  451. collapseItem.Text = "Alle einklappen";
  452. var filterItem = t.Items.Add(GridViewToolbarCommand.ClearFilter);
  453. filterItem.Text = "Filter entfernen";
  454. t.Items.Add(i =>
  455. {
  456. i.Text = "Spalten anzeigen / ausblenden";
  457. i.Name = "ToggleColumnChooser";
  458. i.Image.IconID = IconID.OtherViewgridlines16x16gray;
  459. i.BeginGroup = true;
  460. });
  461. t.Items.Add(i =>
  462. {
  463. i.Text = "Exportieren nach";
  464. i.Image.IconID = IconID.ActionsDownload16x16office2013;
  465. i.BeginGroup = true;
  466. i.Items.Add(exportitem =>
  467. {
  468. exportitem.Name = "Pdf";
  469. exportitem.Text = "PDF";
  470. exportitem.Image.IconID = IconID.ExportExporttopdf16x16office2013;
  471. });
  472. i.Items.Add(exportitem =>
  473. {
  474. exportitem.Name = "Xlsx";
  475. exportitem.Text = "XLSX";
  476. exportitem.Image.IconID = IconID.ExportExporttoxlsx16x16office2013;
  477. });
  478. i.Items.Add(exportitem =>
  479. {
  480. exportitem.Name = "Xls";
  481. exportitem.Text = "XLS";
  482. exportitem.Image.IconID = IconID.ExportExporttoxls16x16office2013;
  483. });
  484. });
  485. });
  486. s.Columns.Add(column =>
  487. {
  488. column.Caption = "Nummer";
  489. column.FieldName = "CustomNumber";
  490. column.MinWidth = 80;
  491. column.Width = new Unit(8, UnitType.Percentage);
  492. });
  493. s.Columns.Add(column =>
  494. {
  495. column.Caption = "Bezeichnung";
  496. column.FieldName = "Description";
  497. column.MinWidth = 200;
  498. column.Width = new Unit(14, UnitType.Percentage);
  499. });
  500. s.Columns.Add(column =>
  501. {
  502. column.Caption = "Baustelle";
  503. column.FieldName = "SiteDescription";
  504. column.MinWidth = 120;
  505. column.Width = new Unit(10, UnitType.Percentage);
  506. });
  507. s.Columns.Add(column =>
  508. {
  509. column.Caption = "Einreichung";
  510. column.FieldName = "OfferingDate";
  511. column.PropertiesEdit.DisplayFormatString = "dd.MM.yyyy";
  512. column.MinWidth = 110;
  513. column.Width = new Unit(8, UnitType.Percentage);
  514. });
  515. s.Columns.Add(column =>
  516. {
  517. column.Caption = "Angeb.-Sum.";
  518. column.FieldName = "OfferingValue";
  519. column.PropertiesEdit.DisplayFormatString = "c2";
  520. column.MinWidth = 140;
  521. column.Width = new Unit(8, UnitType.Percentage);
  522. });
  523. s.Columns.Add(column =>
  524. {
  525. column.Caption = "Verhand.-Sum.";
  526. column.FieldName = "NegotiationValue";
  527. column.PropertiesEdit.DisplayFormatString = "c2";
  528. column.MinWidth = 140;
  529. column.Width = new Unit(8, UnitType.Percentage);
  530. });
  531. s.Columns.Add(column =>
  532. {
  533. column.Caption = "Verh. Angeb./Verha.";
  534. column.FieldName = "RelationOfferingToNegotiation";
  535. column.PropertiesEdit.DisplayFormatString = "p2";
  536. column.MinWidth = 140;
  537. column.Width = new Unit(10, UnitType.Percentage);
  538. });
  539. s.Columns.Add(column =>
  540. {
  541. column.Caption = "VA";
  542. column.FieldName = "DeviationDescription";
  543. column.MinWidth = 100;
  544. column.Width = new Unit(6, UnitType.Percentage);
  545. });
  546. s.Columns.Add(column =>
  547. {
  548. column.Caption = "Verh. Angeb./VA.";
  549. column.FieldName = "RelationOfferingToDeviations";
  550. column.PropertiesEdit.DisplayFormatString = "n2";
  551. column.MinWidth = 140;
  552. column.Width = new Unit(10, UnitType.Percentage);
  553. });
  554. s.Columns.Add(column =>
  555. {
  556. column.Caption = "Status";
  557. column.FieldName = "StateDescription";
  558. column.MinWidth = 100;
  559. column.Width = new Unit(6, UnitType.Percentage);
  560. });
  561. s.Columns.Add(column =>
  562. {
  563. column.Caption = "NT-Kategorien";
  564. column.FieldName = "CategoryValuesDescription";
  565. column.MinWidth = 200;
  566. column.Width = new Unit(12, UnitType.Percentage);
  567. });
  568. s.Columns.Add(column =>
  569. {
  570. column.Caption = "Kommentar";
  571. column.CellStyle.Wrap = DefaultBoolean.True;
  572. column.SetDataItemTemplateContent(c =>
  573. {
  574. var id = Convert.ToInt32(DataBinder.Eval(c.DataItem, "Id"));
  575. var comment = DataBinder.Eval(c.DataItem, "Comment");
  576. var text = comment == null
  577. ? String.Empty
  578. : comment.ToString();
  579. if (text.ToString().Length > 40)
  580. {
  581. html.ViewContext.Writer.Write(text.Substring(0, 40) + " ...");
  582. html.ViewContext.Writer.Write("<a href=\"#\" onclick='showComment(\"appendix\"," + id + ",this)'><br />Anzeigen</a>");
  583. }
  584. else
  585. html.ViewContext.Writer.Write(text);
  586. });
  587. column.MinWidth = 250;
  588. column.Width = new Unit(14, UnitType.Percentage);
  589. });
  590. s.TotalSummary.Add(DevExpress.Data.SummaryItemType.Count, "CustomNumber");
  591. s.GroupSummary.Add(DevExpress.Data.SummaryItemType.Count, "CustomNumber");
  592. s.TotalSummary.Add(new ASPxSummaryItem
  593. {
  594. SummaryType = DevExpress.Data.SummaryItemType.Sum,
  595. FieldName = "OfferingValue",
  596. DisplayFormat = "{0:c2}"
  597. });
  598. s.GroupSummary.Add(new ASPxSummaryItem
  599. {
  600. SummaryType = DevExpress.Data.SummaryItemType.Sum,
  601. FieldName = "OfferingValue",
  602. DisplayFormat = "{0:c2}"
  603. });
  604. s.TotalSummary.Add(new ASPxSummaryItem
  605. {
  606. SummaryType = DevExpress.Data.SummaryItemType.Sum,
  607. FieldName = "NegotiationValue",
  608. DisplayFormat = "{0:c2}"
  609. });
  610. s.GroupSummary.Add(new ASPxSummaryItem
  611. {
  612. SummaryType = DevExpress.Data.SummaryItemType.Sum,
  613. FieldName = "NegotiationValue",
  614. DisplayFormat = "{0:c2}"
  615. });
  616. s.ClientLayout = (sender, e) =>
  617. {
  618. if (e.LayoutMode == ClientLayoutMode.Loading)
  619. {
  620. if (System.Web.HttpContext.Current.Session["AppendixGridState"] != null)
  621. e.LayoutData = (string)System.Web.HttpContext.Current.Session["AppendixGridState"];
  622. }
  623. else
  624. System.Web.HttpContext.Current.Session["AppendixGridState"] = e.LayoutData;
  625. };
  626. s.ClientSideEvents.BeginCallback = "function (s, e) { e.customArgs['scrollHeight'] = [ gridScrollHeight ]; }";
  627. s.ClientSideEvents.ToolbarItemClick = "function (s, e) { onToolbarItemClick(s, e); }";
  628. s.Styles.AlternatingRow.BackColor = System.Drawing.Color.FromArgb(247, 247, 247);
  629. return s;
  630. }
  631. /// <summary>
  632. /// Creates GridViewSettings for the mailNotifications gridView
  633. /// </summary>
  634. /// <param name="html">Current HtmlHelper context.</param>
  635. public static GridViewSettings MailNotificationGridViewSettings(this System.Web.Mvc.HtmlHelper html)
  636. {
  637. var s = new GridViewSettings();
  638. s.Name = "devGridViewMailNotifications";
  639. s.KeyFieldName = "Id";
  640. s.CallbackRouteValues = new { Controller = "Misc", Action = "PartialMailNotifications" };
  641. s.Width = Unit.Percentage(99);
  642. s.Settings.ShowFilterRow = true;
  643. s.Settings.ShowFilterRowMenu = true;
  644. s.Settings.ShowFooter = true;
  645. s.Settings.ShowGroupPanel = true;
  646. s.Settings.AutoFilterCondition = AutoFilterCondition.Contains;
  647. s.Settings.VerticalScrollBarMode = ScrollBarMode.Auto;
  648. s.Settings.VerticalScrollableHeight =
  649. (html.ViewData["ScrollHeight"] == null || (int)html.ViewData["ScrollHeight"] == -1)
  650. ? 400
  651. : (int)html.ViewData["ScrollHeight"];
  652. s.SettingsExport.Landscape = true;
  653. s.SettingsExport.FileName = "Benachrichtigungsliste";
  654. s.SettingsPopup.CustomizationWindow.Width = new Unit(250, UnitType.Pixel);
  655. s.SettingsPopup.CustomizationWindow.Height = new Unit(350, UnitType.Pixel);
  656. s.SettingsBehavior.EnableCustomizationWindow = true;
  657. s.Toolbars.Add(t =>
  658. {
  659. var refreshItem = t.Items.Add(GridViewToolbarCommand.Refresh);
  660. refreshItem.Text = "Aktualisieren";
  661. var expandItem = t.Items.Add(GridViewToolbarCommand.FullExpand);
  662. expandItem.Text = "Alle aufklappen";
  663. var collapseItem = t.Items.Add(GridViewToolbarCommand.FullCollapse);
  664. collapseItem.Text = "Alle einklappen";
  665. var filterItem = t.Items.Add(GridViewToolbarCommand.ClearFilter);
  666. filterItem.Text = "Filter entfernen";
  667. t.Items.Add(i =>
  668. {
  669. i.Text = "Spalten anzeigen / ausblenden";
  670. i.Name = "ToggleColumnChooser";
  671. i.Image.IconID = IconID.OtherViewgridlines16x16gray;
  672. i.BeginGroup = true;
  673. });
  674. t.Items.Add(i =>
  675. {
  676. i.Text = "Exportieren nach";
  677. i.Image.IconID = IconID.ActionsDownload16x16office2013;
  678. i.BeginGroup = true;
  679. i.Items.Add(exportitem =>
  680. {
  681. exportitem.Name = "Pdf";
  682. exportitem.Text = "PDF";
  683. exportitem.Image.IconID = IconID.ExportExporttopdf16x16office2013;
  684. });
  685. i.Items.Add(exportitem =>
  686. {
  687. exportitem.Name = "Xlsx";
  688. exportitem.Text = "XLSX";
  689. exportitem.Image.IconID = IconID.ExportExporttoxlsx16x16office2013;
  690. });
  691. i.Items.Add(exportitem =>
  692. {
  693. exportitem.Name = "Xls";
  694. exportitem.Text = "XLS";
  695. exportitem.Image.IconID = IconID.ExportExporttoxls16x16office2013;
  696. });
  697. });
  698. });
  699. if (_userContext.CurrentUser.HasFunction("Misc-MailNotifications-Edit"))
  700. {
  701. s.Columns.Add(column =>
  702. {
  703. column.Caption = "#";
  704. column.SetDataItemTemplateContent(c =>
  705. {
  706. html.ViewContext.Writer.Write(
  707. "<a href=\"#\" onclick=\"editMailNotification(" + DataBinder.Eval(c.DataItem, "Id") + ")\">Bearbeiten</a>&nbsp;");
  708. html.ViewContext.Writer.Write(
  709. "<a href=\"#\" onclick=\"confirmDelete(" + DataBinder.Eval(c.DataItem, "Id") + ")\">Löschen</a>");
  710. });
  711. column.SetHeaderTemplateContent(c =>
  712. {
  713. html.ViewContext.Writer.Write(
  714. "<a href=\"#\" onclick=\"editMailNotification(-1)\">Neu</a>&nbsp;");
  715. });
  716. column.Settings.AllowDragDrop = DefaultBoolean.False;
  717. column.Settings.AllowSort = DefaultBoolean.False;
  718. column.Width = new Unit(150, UnitType.Pixel);
  719. });
  720. }
  721. s.Columns.Add(column =>
  722. {
  723. column.Caption = "Zeitplan";
  724. column.FieldName = "CronExpressionDescription";
  725. column.MinWidth = 100;
  726. column.Width = new Unit(20, UnitType.Percentage);
  727. });
  728. s.Columns.Add(column =>
  729. {
  730. column.Caption = "Benachrichtigungs-Plugin";
  731. column.FieldName = "NotificationPluginSystemNameDescription";
  732. column.Width = new Unit(17.5, UnitType.Percentage);
  733. });
  734. s.Columns.Add(column =>
  735. {
  736. column.Caption = "Benachrichtigungs-Job";
  737. column.FieldName = "NotificationJobSystemNameDescription";
  738. column.PropertiesEdit.DisplayFormatString = "dd.MM.yyyy";
  739. column.MinWidth = 110;
  740. column.Width = new Unit(17.5, UnitType.Percentage);
  741. });
  742. s.Columns.Add(column =>
  743. {
  744. column.Caption = "Mitarbeiter";
  745. column.MinWidth = 150;
  746. column.Width = new Unit(30, UnitType.Percentage);
  747. column.SetDataItemTemplateContent(c =>
  748. {
  749. var userDescriptions = DataBinder.Eval(c.DataItem, "UserDescriptions") as List<string>;
  750. if (userDescriptions != null)
  751. {
  752. html.ViewContext.Writer.Write(
  753. String.Join("<br />", userDescriptions));
  754. }
  755. });
  756. });
  757. s.ClientLayout = (sender, e) =>
  758. {
  759. if (e.LayoutMode == ClientLayoutMode.Loading)
  760. {
  761. if (System.Web.HttpContext.Current.Session["MailNotificationsGridState"] != null)
  762. e.LayoutData = (string)System.Web.HttpContext.Current.Session["MailNotificationsGridState"];
  763. }
  764. else
  765. System.Web.HttpContext.Current.Session["MailNotificationsGridState"] = e.LayoutData;
  766. };
  767. s.ClientSideEvents.BeginCallback = "function (s, e) { e.customArgs['scrollHeight'] = [ gridScrollHeight ]; }";
  768. s.ClientSideEvents.ToolbarItemClick = "function (s, e) { onToolbarItemClick(s, e); }";
  769. s.Styles.AlternatingRow.BackColor = System.Drawing.Color.FromArgb(247, 247, 247);
  770. return s;
  771. }
  772. }
  773. }