GridViewSettingsHelper.cs 65 KB

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