GridViewSettingsHelper.cs 63 KB

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