GridViewSettingsHelper.cs 59 KB

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