GridViewSettingsHelper.cs 73 KB

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