GridViewSettingsHelper.cs 73 KB

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