GridViewSettingsHelper.cs 66 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482
  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. var totalPercentageValueSumZeroSummarize = default(decimal);
  538. s.CustomSummaryCalculate = (sender, e) =>
  539. {
  540. if (e.SummaryProcess == CustomSummaryProcess.Start)
  541. {
  542. totalDaysReceiptToAppendixOfferingSum = 0;
  543. totalDaysReceiptToAppendixOfferingCount = 0;
  544. totalDisturbanceSum = 0;
  545. totalPercentageValueSumZeroSummarize = 0;
  546. }
  547. if (e.SummaryProcess == CustomSummaryProcess.Calculate)
  548. {
  549. var daysReceiptToAppendixOfferingVal = e.GetValue("DaysReceiptToAppendixOffering");
  550. if (daysReceiptToAppendixOfferingVal != null)
  551. {
  552. totalDaysReceiptToAppendixOfferingCount++;
  553. totalDaysReceiptToAppendixOfferingSum += Convert.ToInt32(daysReceiptToAppendixOfferingVal);
  554. }
  555. var disturbanceVal = e.GetValue("DisturbanceValueSum");
  556. if (disturbanceVal != null)
  557. totalDisturbanceSum += Convert.ToDecimal(disturbanceVal);
  558. var isZeroValueSum = e.GetValue("IsZeroSummarize");
  559. if (isZeroValueSum == null || (isZeroValueSum != null && !Convert.ToBoolean(isZeroValueSum)))
  560. {
  561. var percentageValue = e.GetValue("PercentageValue");
  562. if (percentageValue != null)
  563. totalPercentageValueSumZeroSummarize += (decimal)percentageValue;
  564. }
  565. }
  566. if (e.SummaryProcess == CustomSummaryProcess.Finalize)
  567. {
  568. var summaryItem = (ASPxSummaryItem)e.Item;
  569. if (summaryItem.FieldName == "DaysReceiptToAppendixOffering")
  570. {
  571. if (totalDaysReceiptToAppendixOfferingSum == 0 || totalDaysReceiptToAppendixOfferingCount == 0)
  572. e.TotalValue = 0;
  573. else
  574. e.TotalValue = totalDaysReceiptToAppendixOfferingSum / totalDaysReceiptToAppendixOfferingCount;
  575. }
  576. else if (summaryItem.FieldName == "DisturbanceValuesDescription")
  577. e.TotalValue = totalDisturbanceSum;
  578. else if (summaryItem.FieldName == "StatusDescription")
  579. e.TotalValue = totalPercentageValueSumZeroSummarize;
  580. }
  581. };
  582. s.TotalSummary.Add(new ASPxSummaryItem
  583. {
  584. SummaryType = DevExpress.Data.SummaryItemType.Count,
  585. FieldName = "SiteDescription",
  586. DisplayFormat = "Anzahl<br/><i>{0:n0}</i>"
  587. });
  588. s.GroupSummary.Add(new ASPxSummaryItem
  589. {
  590. SummaryType = DevExpress.Data.SummaryItemType.Count,
  591. FieldName = "SiteDescription",
  592. DisplayFormat = "Anzahl = {0:n0}"
  593. });
  594. s.TotalSummary.Add(new ASPxSummaryItem
  595. {
  596. FieldName = "Value",
  597. SummaryType = DevExpress.Data.SummaryItemType.Sum,
  598. DisplayFormat = "Schätzung ∑<br/><i>{0:c2}</i>"
  599. });
  600. s.GroupSummary.Add(new ASPxSummaryItem
  601. {
  602. FieldName = "Value",
  603. SummaryType = DevExpress.Data.SummaryItemType.Sum,
  604. DisplayFormat = "Schätzung ∑ = <i>{0:c2}</i>"
  605. });
  606. s.TotalSummary.Add(new ASPxSummaryItem
  607. {
  608. FieldName = "Percentage",
  609. SummaryType = DevExpress.Data.SummaryItemType.Average,
  610. DisplayFormat = "Bew. Ø<br/><i>{0:p0}</i>"
  611. });
  612. s.GroupSummary.Add(new ASPxSummaryItem
  613. {
  614. FieldName = "Percentage",
  615. SummaryType = DevExpress.Data.SummaryItemType.Average,
  616. DisplayFormat = "Bew. Ø = <i>{0:p0}</i>"
  617. });
  618. s.TotalSummary.Add(new ASPxSummaryItem
  619. {
  620. FieldName = "PercentageValue",
  621. SummaryType = DevExpress.Data.SummaryItemType.Sum,
  622. DisplayFormat = "Schätz. bew. ∑<br/><i>{0:c2}</i>"
  623. });
  624. s.GroupSummary.Add(new ASPxSummaryItem
  625. {
  626. FieldName = "PercentageValue",
  627. SummaryType = DevExpress.Data.SummaryItemType.Sum,
  628. DisplayFormat = "Schätz. bew. ∑ = <i>{0:c2}</i>"
  629. });
  630. s.TotalSummary.Add(new ASPxSummaryItem
  631. {
  632. FieldName = "StatusDescription",
  633. SummaryType = DevExpress.Data.SummaryItemType.Custom,
  634. DisplayFormat = "Schätz. o. Sta. ∑<br/><i>{0:c2}</i>"
  635. });
  636. s.GroupSummary.Add(new ASPxSummaryItem
  637. {
  638. FieldName = "StatusDescription",
  639. SummaryType = DevExpress.Data.SummaryItemType.Custom,
  640. DisplayFormat = "Schätz. o. Sta. ∑ = <i>{0:c2}</i>"
  641. });
  642. s.TotalSummary.Add(new ASPxSummaryItem
  643. {
  644. FieldName = "DaysReceiptToAppendixOffering",
  645. SummaryType = DevExpress.Data.SummaryItemType.Custom,
  646. DisplayFormat = "T. VA-NT Ø<br/><i>{0:n0}</i>"
  647. });
  648. s.GroupSummary.Add(new ASPxSummaryItem
  649. {
  650. FieldName = "DaysReceiptToAppendixOffering",
  651. SummaryType = DevExpress.Data.SummaryItemType.Custom,
  652. DisplayFormat = "Tage VA-NT Ø = <i>{0:n0}</i>"
  653. });
  654. s.TotalSummary.Add(new ASPxSummaryItem
  655. {
  656. FieldName = "DisturbanceValuesDescription",
  657. SummaryType = DevExpress.Data.SummaryItemType.Custom,
  658. DisplayFormat = "Kat. ∑<br/><i>{0:c2}</i>"
  659. });
  660. s.GroupSummary.Add(new ASPxSummaryItem
  661. {
  662. FieldName = "DisturbanceValuesDescription",
  663. SummaryType = DevExpress.Data.SummaryItemType.Custom,
  664. DisplayFormat = "Kat. ∑ = <i>{0:c2}</i>"
  665. });
  666. s.HtmlRowPrepared = (sender, e) =>
  667. {
  668. var displayColor = e.GetValue("DisplayColor");
  669. if (displayColor != null && e.RowType == GridViewRowType.Data)
  670. e.Row.BackColor = System.Drawing.ColorTranslator.FromHtml(displayColor.ToString());
  671. };
  672. s.ClientLayout = (sender, e) =>
  673. {
  674. if (e.LayoutMode == ClientLayoutMode.Loading)
  675. {
  676. if (System.Web.HttpContext.Current.Session["DeviationGridState"] != null)
  677. e.LayoutData = (string)System.Web.HttpContext.Current.Session["DeviationGridState"];
  678. }
  679. else
  680. System.Web.HttpContext.Current.Session["DeviationGridState"] = e.LayoutData;
  681. };
  682. s.PreRender = s.BeforeGetCallbackResult = (sender, e) => {
  683. MVCxGridView gridView = sender as MVCxGridView;
  684. System.Web.HttpContext.Current.Session["DeviationGridViewState"] = new MVCxGridViewState(gridView);
  685. };
  686. s.CustomColumnSort = (sender, e) =>
  687. {
  688. if (e.Column.FieldName != "CustomNumber") return;
  689. int.TryParse(e.GetRow1Value("CustomNumber").ToString(), out int rowVal1);
  690. int.TryParse(e.GetRow2Value("CustomNumber").ToString(), out int rowVal2);
  691. e.Result = (rowVal1).CompareTo(rowVal2);
  692. e.Handled = true;
  693. };
  694. s.ClientSideEvents.BeginCallback = "function (s, e) { " +
  695. "e.customArgs['scrollHeight'] = [ gridScrollHeight ]; " +
  696. "e.customArgs['customFilters'] = [ JSON.stringify(customFilters) ]; }";
  697. s.ClientSideEvents.ToolbarItemClick = "function (s, e) { onToolbarItemClick(s, e); }";
  698. s.Styles.Footer.CssClass += "devExGridFooterPanel";
  699. s.Styles.GroupRow.CssClass += "devExGridGroupRow";
  700. s.Styles.AlternatingRow.BackColor = System.Drawing.Color.FromArgb(247, 247, 247);
  701. return s;
  702. }
  703. /// <summary>
  704. /// Creates GridViewSettings for the appendix gridView
  705. /// </summary>
  706. /// <param name="html">Current HtmlHelper context.</param>
  707. public static GridViewSettings AppendixGridViewSettings(this System.Web.Mvc.HtmlHelper html)
  708. {
  709. var s = new GridViewSettings();
  710. s.Name = "devGridViewAppendix";
  711. s.KeyFieldName = "Id";
  712. s.CallbackRouteValues = new { Controller = "Appendix", Action = "PartialAppendices" };
  713. s.Width = Unit.Percentage(99);
  714. s.Settings.ShowHeaderFilterButton = true;
  715. s.Settings.ShowFilterRow = true;
  716. s.Settings.ShowFilterRowMenu = true;
  717. s.Settings.ShowFooter = true;
  718. s.Settings.ShowGroupPanel = true;
  719. s.Settings.AutoFilterCondition = AutoFilterCondition.Contains;
  720. s.Settings.HorizontalScrollBarMode = ScrollBarMode.Auto;
  721. s.Settings.VerticalScrollBarMode = ScrollBarMode.Auto;
  722. s.Settings.VerticalScrollableHeight =
  723. (html.ViewData["ScrollHeight"] == null || (int)html.ViewData["ScrollHeight"] == -1)
  724. ? 400
  725. : (int)html.ViewData["ScrollHeight"];
  726. s.SettingsExport.Landscape = true;
  727. s.SettingsExport.FileName = "Nachtragsliste";
  728. s.SettingsPopup.CustomizationWindow.Width = new Unit(250, UnitType.Pixel);
  729. s.SettingsPopup.CustomizationWindow.Height = new Unit(350, UnitType.Pixel);
  730. s.SettingsBehavior.EnableCustomizationWindow = true;
  731. s.SettingsBehavior.AllowHeaderFilter = true;
  732. s.SettingsPager.AlwaysShowPager = true;
  733. s.SettingsResizing.ColumnResizeMode = ColumnResizeMode.Control;
  734. s.SettingsCookies.Enabled = true;
  735. s.SettingsCookies.CookiesID = "appendixGridStateCookie";
  736. s.SettingsPager.Position = PagerPosition.Bottom;
  737. s.SettingsPager.PageSizeItemSettings.Visible = true;
  738. s.SettingsPager.FirstPageButton.Visible = true;
  739. s.SettingsPager.LastPageButton.Visible = true;
  740. s.SettingsPager.NumericButtonCount = 5;
  741. s.Toolbars.Add(t =>
  742. {
  743. var refreshItem = t.Items.Add(GridViewToolbarCommand.Refresh);
  744. refreshItem.Text = "Aktualisieren";
  745. var expandItem = t.Items.Add(GridViewToolbarCommand.FullExpand);
  746. expandItem.Text = "Alle aufklappen";
  747. var collapseItem = t.Items.Add(GridViewToolbarCommand.FullCollapse);
  748. collapseItem.Text = "Alle einklappen";
  749. var filterItem = t.Items.Add(GridViewToolbarCommand.ClearFilter);
  750. filterItem.Text = "Filter entfernen";
  751. t.Items.Add(i =>
  752. {
  753. i.Text = "Spalten anzeigen / ausblenden";
  754. i.Name = "ToggleColumnChooser";
  755. i.Image.IconID = IconID.OtherViewgridlines16x16gray;
  756. i.BeginGroup = true;
  757. });
  758. t.Items.Add(i =>
  759. {
  760. i.Text = "Drucken";
  761. i.Name = "Print";
  762. i.Image.IconID = IconID.PrintDefaultprinter16x16;
  763. i.BeginGroup = true;
  764. });
  765. });
  766. s.Columns.Add(column =>
  767. {
  768. column.Caption = "#";
  769. column.FieldName = "CustomNumber";
  770. column.MinWidth = 80;
  771. column.Width = new Unit(80, UnitType.Pixel);
  772. column.Settings.AutoFilterCondition = AutoFilterCondition.Equals;
  773. column.Settings.ShowFilterRowMenu = DefaultBoolean.False;
  774. column.Settings.SortMode = DevExpress.XtraGrid.ColumnSortMode.Custom;
  775. column.SettingsHeaderFilter.Mode = GridHeaderFilterMode.CheckedList;
  776. });
  777. s.Columns.Add(column =>
  778. {
  779. column.Caption = "Bezeichnung";
  780. column.FieldName = "Description";
  781. column.MinWidth = 200;
  782. column.Width = new Unit(14, UnitType.Percentage);
  783. column.SettingsHeaderFilter.Mode = GridHeaderFilterMode.CheckedList;
  784. column.SetDataItemTemplateContent(c =>
  785. {
  786. var id = Convert.ToInt32(DataBinder.Eval(c.DataItem, "Id"));
  787. var description = DataBinder.Eval(c.DataItem, "Description");
  788. html.ViewContext.Writer.Write(description +
  789. "<br/><a href=\"#\" onclick='viewAppendix(" + id + ")'>Details anzeigen</a>");
  790. });
  791. });
  792. s.Columns.Add(column =>
  793. {
  794. column.Caption = "Baustelle";
  795. column.FieldName = "SiteDescription";
  796. column.MinWidth = 150;
  797. column.Width = new Unit(10, UnitType.Percentage);
  798. column.SettingsHeaderFilter.Mode = GridHeaderFilterMode.CheckedList;
  799. });
  800. s.Columns.Add(column =>
  801. {
  802. column.Caption = "Kst.-Stelle";
  803. column.FieldName = "SiteCustomNumber";
  804. column.MinWidth = 120;
  805. column.Width = new Unit(120, UnitType.Pixel);
  806. column.SettingsHeaderFilter.Mode = GridHeaderFilterMode.CheckedList;
  807. });
  808. s.Columns.Add(column =>
  809. {
  810. column.Caption = "Mitarbeiter";
  811. column.FieldName = "UserDescription";
  812. column.MinWidth = 150;
  813. column.Width = new Unit(15, UnitType.Percentage);
  814. column.SetDataItemTemplateContent(c =>
  815. {
  816. var userDescriptions = DataBinder.Eval(c.DataItem, "UserDescriptions") as List<string>;
  817. if (userDescriptions != null)
  818. {
  819. foreach (var description in userDescriptions)
  820. {
  821. var split = description.Split('|');
  822. if (split.Length > 1)
  823. html.ViewContext.Writer.Write(
  824. "<span style=\"float: left\">" + split[0] + "</span>" +
  825. "<span style=\"float: right\">" + split[1] + "</span><br />");
  826. else
  827. html.ViewContext.Writer.Write(
  828. "<span>" + split[0] + "</span><br />");
  829. }
  830. }
  831. });
  832. });
  833. s.Columns.Add(column =>
  834. {
  835. column.Caption = "Einreichung";
  836. column.FieldName = "OfferingDate";
  837. column.PropertiesEdit.DisplayFormatString = "dd.MM.yyyy";
  838. column.MinWidth = 110;
  839. column.Width = new Unit(110, UnitType.Pixel);
  840. });
  841. s.Columns.Add(column =>
  842. {
  843. column.Caption = "Angeb. -Summe";
  844. column.FieldName = "OfferingValue";
  845. column.PropertiesEdit.DisplayFormatString = "c2";
  846. column.MinWidth = 110;
  847. column.Width = new Unit(110, UnitType.Pixel);
  848. column.HeaderStyle.Wrap = DefaultBoolean.True;
  849. });
  850. s.Columns.Add(column =>
  851. {
  852. column.Caption = "Verhand. -Summe";
  853. column.FieldName = "NegotiationValue";
  854. column.PropertiesEdit.DisplayFormatString = "c2";
  855. column.MinWidth = 110;
  856. column.Width = new Unit(110, UnitType.Pixel);
  857. column.HeaderStyle.Wrap = DefaultBoolean.True;
  858. });
  859. s.Columns.Add(column =>
  860. {
  861. column.Caption = "Anteil Verh. zu Angeb.";
  862. column.FieldName = "RelationOfferingToNegotiation";
  863. column.PropertiesEdit.DisplayFormatString = "p2";
  864. column.MinWidth = 115;
  865. column.Width = new Unit(115, UnitType.Pixel);
  866. column.HeaderStyle.Wrap = DefaultBoolean.True;
  867. });
  868. s.Columns.Add(column =>
  869. {
  870. column.Caption = "VA";
  871. column.FieldName = "DeviationDescription";
  872. column.MinWidth = 70;
  873. column.Width = new Unit(6, UnitType.Percentage);
  874. });
  875. s.Columns.Add(column =>
  876. {
  877. column.Caption = "Fak. Ang. zu VA";
  878. column.FieldName = "RelationOfferingToDeviations";
  879. column.PropertiesEdit.DisplayFormatString = "n2";
  880. column.MinWidth = 100;
  881. column.Width = new Unit(100, UnitType.Pixel);
  882. column.HeaderStyle.Wrap = DefaultBoolean.True;
  883. });
  884. s.Columns.Add(column =>
  885. {
  886. column.Caption = "AR gestellt";
  887. column.FieldName = "OrderInvoiceCreatedDescription";
  888. column.MinWidth = 60;
  889. column.Width = new Unit(80, UnitType.Pixel);
  890. column.HeaderStyle.Wrap = DefaultBoolean.True;
  891. column.SettingsHeaderFilter.Mode = GridHeaderFilterMode.CheckedList;
  892. column.SetDataItemTemplateContent(c =>
  893. {
  894. var id = Convert.ToInt32(DataBinder.Eval(c.DataItem, "Id"));
  895. var description = DataBinder.Eval(c.DataItem, "OrderInvoiceCreatedDescription");
  896. if (_userContext.CurrentUser.HasFunction("Appendix-Appendices-Edit"))
  897. html.ViewContext.Writer.Write(description +
  898. "<br/><a href=\"#\" onclick='editOrderInvoiceCreated(" + id + "," +
  899. " function() { devGridViewAppendix.PerformCallback(); })'>Ändern</a>");
  900. });
  901. });
  902. s.Columns.Add(column =>
  903. {
  904. column.Caption = "Status";
  905. column.FieldName = "StateDescription";
  906. column.MinWidth = 100;
  907. column.Width = new Unit(100, UnitType.Pixel);
  908. column.SettingsHeaderFilter.Mode = GridHeaderFilterMode.CheckedList;
  909. });
  910. s.Columns.Add(column =>
  911. {
  912. column.Caption = "Bestellsch.-Datum";
  913. column.FieldName = "OrderDate";
  914. column.PropertiesEdit.DisplayFormatString = "dd.MM.yyyy";
  915. column.MinWidth = 110;
  916. column.Width = new Unit(110, UnitType.Pixel);
  917. column.HeaderStyle.Wrap = DefaultBoolean.True;
  918. });
  919. s.Columns.Add(column =>
  920. {
  921. column.Caption = "Bestellsch.-Nummer";
  922. column.FieldName = "OrderNumber";
  923. column.MinWidth = 90;
  924. column.Width = new Unit(110, UnitType.Pixel);
  925. column.HeaderStyle.Wrap = DefaultBoolean.True;
  926. });
  927. s.Columns.Add(column =>
  928. {
  929. column.Caption = "NT-Kategorien";
  930. column.FieldName = "CategoryValuesDescription";
  931. column.MinWidth = 200;
  932. column.Width = new Unit(12, UnitType.Percentage);
  933. });
  934. s.Columns.Add(column =>
  935. {
  936. column.Caption = "Kommentar";
  937. column.FieldName = "Comment";
  938. column.CellStyle.Wrap = DefaultBoolean.True;
  939. column.SetDataItemTemplateContent(c =>
  940. {
  941. var id = Convert.ToInt32(DataBinder.Eval(c.DataItem, "Id"));
  942. var comment = DataBinder.Eval(c.DataItem, "Comment");
  943. var text = comment == null
  944. ? String.Empty
  945. : comment.ToString();
  946. var isLongText = text.ToString().Length > 40;
  947. if (isLongText)
  948. {
  949. html.ViewContext.Writer.Write(text.Substring(0, 40) + " ...");
  950. html.ViewContext.Writer.Write(
  951. "<a href=\"#\" onclick='showComment(\"appendix\"," + id + ",this)'><br />Anzeigen</a>");
  952. }
  953. else
  954. html.ViewContext.Writer.Write(text);
  955. if (_userContext.CurrentUser.HasFunction("Deviation-Deviations-Edit-Comment"))
  956. html.ViewContext.Writer.Write(
  957. (isLongText ? "&nbsp;" : "<br/>") +
  958. "<a href=\"#\" onclick='editComment(\"appendix\"," + id + ",function() { devGridViewAppendix.PerformCallback(); })'>Bearbeiten</a>");
  959. });
  960. column.MinWidth = 250;
  961. column.Width = new Unit(14, UnitType.Percentage);
  962. });
  963. s.TotalSummary.Add(new ASPxSummaryItem
  964. {
  965. SummaryType = DevExpress.Data.SummaryItemType.Count,
  966. FieldName = "Description",
  967. DisplayFormat = "Anzahl<br/><i>{0:n0}</i>"
  968. });
  969. s.GroupSummary.Add(new ASPxSummaryItem
  970. {
  971. SummaryType = DevExpress.Data.SummaryItemType.Count,
  972. FieldName = "Description",
  973. DisplayFormat = "Anzahl = {0:n0}"
  974. });
  975. s.TotalSummary.Add(new ASPxSummaryItem
  976. {
  977. SummaryType = DevExpress.Data.SummaryItemType.Sum,
  978. FieldName = "OfferingValue",
  979. DisplayFormat = "Angeb. ∑<br/><i>{0:c2}</i>"
  980. });
  981. s.GroupSummary.Add(new ASPxSummaryItem
  982. {
  983. SummaryType = DevExpress.Data.SummaryItemType.Sum,
  984. FieldName = "OfferingValue",
  985. DisplayFormat = "Angeb.-∑ = {0:c2}"
  986. });
  987. s.TotalSummary.Add(new ASPxSummaryItem
  988. {
  989. SummaryType = DevExpress.Data.SummaryItemType.Sum,
  990. FieldName = "NegotiationValue",
  991. DisplayFormat = "Verhand. ∑<br/><i>{0:c2}</i>"
  992. });
  993. s.GroupSummary.Add(new ASPxSummaryItem
  994. {
  995. SummaryType = DevExpress.Data.SummaryItemType.Sum,
  996. FieldName = "NegotiationValue",
  997. DisplayFormat = "Verhand.-∑ = {0:c2}"
  998. });
  999. s.HtmlRowPrepared = (sender, e) =>
  1000. {
  1001. var state = e.GetValue("State") as StateDataModel;
  1002. if (e.RowType == GridViewRowType.Data && state != null && !state.IsDefault)
  1003. e.Row.BackColor = System.Drawing.ColorTranslator.FromHtml(state.HexColor);
  1004. };
  1005. s.ClientLayout = (sender, e) =>
  1006. {
  1007. if (e.LayoutMode == ClientLayoutMode.Loading)
  1008. {
  1009. if (System.Web.HttpContext.Current.Session["AppendixGridState"] != null)
  1010. e.LayoutData = (string)System.Web.HttpContext.Current.Session["AppendixGridState"];
  1011. }
  1012. else
  1013. System.Web.HttpContext.Current.Session["AppendixGridState"] = e.LayoutData;
  1014. };
  1015. s.PreRender = s.BeforeGetCallbackResult = (sender, e) => {
  1016. MVCxGridView gridView = sender as MVCxGridView;
  1017. System.Web.HttpContext.Current.Session["AppendixGridViewState"] = new MVCxGridViewState(gridView);
  1018. };
  1019. s.CustomColumnSort = (sender, e) =>
  1020. {
  1021. if (e.Column.FieldName != "CustomNumber") return;
  1022. int.TryParse(e.GetRow1Value("CustomNumber").ToString(), out int rowVal1);
  1023. int.TryParse(e.GetRow2Value("CustomNumber").ToString(), out int rowVal2);
  1024. e.Result = (rowVal1).CompareTo(rowVal2);
  1025. e.Handled = true;
  1026. };
  1027. s.ClientSideEvents.BeginCallback = "function (s, e) { e.customArgs['scrollHeight'] = [ gridScrollHeight ]; }";
  1028. s.ClientSideEvents.ToolbarItemClick = "function (s, e) { onToolbarItemClick(s, e); }";
  1029. s.ClientSideEvents.ColumnResized = "function (s, e) { setGridScrollHeight(); }";
  1030. //s.Styles.AlternatingRow.BackColor = System.Drawing.Color.FromArgb(247, 247, 247);
  1031. s.Styles.Footer.CssClass += "devExGridFooterPanel";
  1032. s.Styles.GroupRow.CssClass += "devExGridGroupRow";
  1033. return s;
  1034. }
  1035. /// <summary>
  1036. /// Creates GridViewSettings for the mailNotifications gridView
  1037. /// </summary>
  1038. /// <param name="html">Current HtmlHelper context.</param>
  1039. public static GridViewSettings MailNotificationGridViewSettings(this System.Web.Mvc.HtmlHelper html)
  1040. {
  1041. var s = new GridViewSettings();
  1042. s.Name = "devGridViewMailNotifications";
  1043. s.KeyFieldName = "Id";
  1044. s.CallbackRouteValues = new { Controller = "Misc", Action = "PartialMailNotifications" };
  1045. s.Width = Unit.Percentage(99);
  1046. s.Settings.ShowHeaderFilterButton = true;
  1047. s.Settings.ShowFilterRow = true;
  1048. s.Settings.ShowFilterRowMenu = true;
  1049. s.Settings.ShowFooter = true;
  1050. s.Settings.ShowGroupPanel = true;
  1051. s.Settings.AutoFilterCondition = AutoFilterCondition.Contains;
  1052. s.Settings.HorizontalScrollBarMode = ScrollBarMode.Auto;
  1053. s.Settings.VerticalScrollBarMode = ScrollBarMode.Auto;
  1054. s.Settings.VerticalScrollableHeight =
  1055. (html.ViewData["ScrollHeight"] == null || (int)html.ViewData["ScrollHeight"] == -1)
  1056. ? 400
  1057. : (int)html.ViewData["ScrollHeight"];
  1058. s.SettingsExport.Landscape = true;
  1059. s.SettingsExport.FileName = "Benachrichtigungsliste";
  1060. s.SettingsPopup.CustomizationWindow.Width = new Unit(250, UnitType.Pixel);
  1061. s.SettingsPopup.CustomizationWindow.Height = new Unit(350, UnitType.Pixel);
  1062. s.SettingsBehavior.EnableCustomizationWindow = true;
  1063. s.SettingsBehavior.AllowHeaderFilter = true;
  1064. s.SettingsPager.AlwaysShowPager = true;
  1065. s.SettingsResizing.ColumnResizeMode = ColumnResizeMode.Control;
  1066. s.SettingsCookies.Enabled = true;
  1067. s.SettingsCookies.CookiesID = "mailNotificationGridStateCookie";
  1068. s.SettingsPager.Position = PagerPosition.Bottom;
  1069. s.SettingsPager.PageSizeItemSettings.Visible = true;
  1070. s.SettingsPager.FirstPageButton.Visible = true;
  1071. s.SettingsPager.LastPageButton.Visible = true;
  1072. s.SettingsPager.NumericButtonCount = 5;
  1073. s.Toolbars.Add(t =>
  1074. {
  1075. var refreshItem = t.Items.Add(GridViewToolbarCommand.Refresh);
  1076. refreshItem.Text = "Aktualisieren";
  1077. var filterItem = t.Items.Add(GridViewToolbarCommand.ClearFilter);
  1078. filterItem.Text = "Filter entfernen";
  1079. t.Items.Add(i =>
  1080. {
  1081. i.Text = "Spalten anzeigen / ausblenden";
  1082. i.Name = "ToggleColumnChooser";
  1083. i.Image.IconID = IconID.OtherViewgridlines16x16gray;
  1084. i.BeginGroup = true;
  1085. });
  1086. });
  1087. if (_userContext.CurrentUser.HasFunction("Misc-MailNotifications-Edit"))
  1088. {
  1089. s.Columns.Add(column =>
  1090. {
  1091. column.Caption = "#";
  1092. column.SetDataItemTemplateContent(c =>
  1093. {
  1094. html.ViewContext.Writer.Write(
  1095. "<a href=\"#\" onclick=\"editMailNotification(" + DataBinder.Eval(c.DataItem, "Id") + ")\">Bearbeiten</a>&nbsp;");
  1096. html.ViewContext.Writer.Write(
  1097. "<a href=\"#\" onclick=\"confirmDelete(" + DataBinder.Eval(c.DataItem, "Id") + ")\">Löschen</a><br />");
  1098. html.ViewContext.Writer.Write(
  1099. "<a href=\"#\" onclick=\"confirmProcess(" + DataBinder.Eval(c.DataItem, "Id") + ")\">Sofort ausführen</a>");
  1100. });
  1101. column.SetHeaderTemplateContent(c =>
  1102. {
  1103. html.ViewContext.Writer.Write(
  1104. "<a href=\"#\" onclick=\"editMailNotification(-1)\">Neu</a>&nbsp;");
  1105. });
  1106. column.Settings.AllowDragDrop = DefaultBoolean.False;
  1107. column.Settings.AllowSort = DefaultBoolean.False;
  1108. column.Width = new Unit(150, UnitType.Pixel);
  1109. });
  1110. }
  1111. s.Columns.Add(column =>
  1112. {
  1113. column.Caption = "Zeitplan";
  1114. column.FieldName = "CronExpressionDescription";
  1115. column.MinWidth = 100;
  1116. column.Width = new Unit(20, UnitType.Percentage);
  1117. });
  1118. s.Columns.Add(column =>
  1119. {
  1120. column.Caption = "Benachrichtigungs-Plugin";
  1121. column.FieldName = "NotificationPluginSystemNameDescription";
  1122. column.Width = new Unit(17.5, UnitType.Percentage);
  1123. });
  1124. s.Columns.Add(column =>
  1125. {
  1126. column.Caption = "Benachrichtigungs-Job";
  1127. column.FieldName = "NotificationJobSystemNameDescription";
  1128. column.PropertiesEdit.DisplayFormatString = "dd.MM.yyyy";
  1129. column.MinWidth = 110;
  1130. column.Width = new Unit(17.5, UnitType.Percentage);
  1131. });
  1132. s.Columns.Add(column =>
  1133. {
  1134. column.Caption = "Mitarbeiter";
  1135. column.FieldName = "UserDescriptions";
  1136. column.MinWidth = 200;
  1137. column.Width = new Unit(20, UnitType.Percentage);
  1138. column.SetDataItemTemplateContent(c =>
  1139. {
  1140. var userDescriptions = DataBinder.Eval(c.DataItem, "UserDescriptions") as List<string>;
  1141. if (userDescriptions != null)
  1142. {
  1143. foreach (var description in userDescriptions)
  1144. {
  1145. var split = description.Split('|');
  1146. if (split.Length > 1)
  1147. html.ViewContext.Writer.Write(
  1148. "<span style=\"float: left\">" + split[0] + "</span>" +
  1149. "<span style=\"float: right\">" + split[1] + "</span><br />");
  1150. else
  1151. html.ViewContext.Writer.Write(
  1152. "<span>" + split[0] + "</span><br />");
  1153. }
  1154. }
  1155. });
  1156. });
  1157. s.Columns.Add(column =>
  1158. {
  1159. column.Caption = "Nächste Ausführung";
  1160. column.FieldName = "NextExecutionTime";
  1161. column.PropertiesEdit.DisplayFormatString = "dd.MM.yyyy";
  1162. column.MinWidth = 110;
  1163. column.Width = new Unit(15, UnitType.Percentage);
  1164. });
  1165. s.ClientLayout = (sender, e) =>
  1166. {
  1167. if (e.LayoutMode == ClientLayoutMode.Loading)
  1168. {
  1169. if (System.Web.HttpContext.Current.Session["MailNotificationsGridState"] != null)
  1170. e.LayoutData = (string)System.Web.HttpContext.Current.Session["MailNotificationsGridState"];
  1171. }
  1172. else
  1173. System.Web.HttpContext.Current.Session["MailNotificationsGridState"] = e.LayoutData;
  1174. };
  1175. s.ClientSideEvents.BeginCallback = "function (s, e) { e.customArgs['scrollHeight'] = [ gridScrollHeight ]; }";
  1176. s.ClientSideEvents.ToolbarItemClick = "function (s, e) { onToolbarItemClick(s, e); }";
  1177. s.Styles.AlternatingRow.BackColor = System.Drawing.Color.FromArgb(247, 247, 247);
  1178. return s;
  1179. }
  1180. /// <summary>
  1181. /// Creates GridViewSettings for the logs gridView
  1182. /// </summary>
  1183. /// <param name="html">Current HtmlHelper context.</param>
  1184. public static GridViewSettings LogGridViewSettings(this System.Web.Mvc.HtmlHelper html)
  1185. {
  1186. var s = new GridViewSettings();
  1187. s.Name = "devGridViewLog";
  1188. s.KeyFieldName = "Id";
  1189. s.CallbackRouteValues = new { Controller = "Misc", Action = "PartialLogs" };
  1190. s.Width = Unit.Percentage(99);
  1191. s.Settings.ShowHeaderFilterButton = true;
  1192. s.Settings.ShowFilterRow = true;
  1193. s.Settings.ShowFilterRowMenu = true;
  1194. s.Settings.ShowFooter = true;
  1195. s.Settings.ShowGroupPanel = true;
  1196. s.Settings.AutoFilterCondition = AutoFilterCondition.Contains;
  1197. s.Settings.HorizontalScrollBarMode = ScrollBarMode.Auto;
  1198. s.Settings.VerticalScrollBarMode = ScrollBarMode.Auto;
  1199. s.Settings.VerticalScrollableHeight =
  1200. (html.ViewData["ScrollHeight"] == null || (int)html.ViewData["ScrollHeight"] == -1)
  1201. ? 400
  1202. : (int)html.ViewData["ScrollHeight"];
  1203. s.SettingsExport.Landscape = true;
  1204. s.SettingsExport.FileName = "Logliste";
  1205. s.SettingsPopup.CustomizationWindow.Width = new Unit(250, UnitType.Pixel);
  1206. s.SettingsPopup.CustomizationWindow.Height = new Unit(350, UnitType.Pixel);
  1207. s.SettingsBehavior.EnableCustomizationWindow = true;
  1208. s.SettingsBehavior.AllowHeaderFilter = true;
  1209. s.SettingsPager.AlwaysShowPager = true;
  1210. s.SettingsResizing.ColumnResizeMode = ColumnResizeMode.Control;
  1211. s.SettingsCookies.Enabled = true;
  1212. s.SettingsCookies.CookiesID = "logGridStateCookie";
  1213. s.SettingsPager.Position = PagerPosition.Bottom;
  1214. s.SettingsPager.PageSizeItemSettings.Visible = true;
  1215. s.SettingsPager.FirstPageButton.Visible = true;
  1216. s.SettingsPager.LastPageButton.Visible = true;
  1217. s.SettingsPager.NumericButtonCount = 5;
  1218. s.Toolbars.Add(t =>
  1219. {
  1220. var refreshItem = t.Items.Add(GridViewToolbarCommand.Refresh);
  1221. refreshItem.Text = "Aktualisieren";
  1222. var filterItem = t.Items.Add(GridViewToolbarCommand.ClearFilter);
  1223. filterItem.Text = "Filter entfernen";
  1224. t.Items.Add(i =>
  1225. {
  1226. i.Text = "Spalten anzeigen / ausblenden";
  1227. i.Name = "ToggleColumnChooser";
  1228. i.Image.IconID = IconID.OtherViewgridlines16x16gray;
  1229. i.BeginGroup = true;
  1230. });
  1231. t.Items.Add(i =>
  1232. {
  1233. i.Text = "Drucken";
  1234. i.Name = "Print";
  1235. i.Image.IconID = IconID.PrintDefaultprinter16x16;
  1236. i.BeginGroup = true;
  1237. });
  1238. });
  1239. s.Columns.Add(column =>
  1240. {
  1241. column.Caption = "#";
  1242. column.SetDataItemTemplateContent(c =>
  1243. {
  1244. html.ViewContext.Writer.Write(
  1245. "<a href=\"#\" onclick=\"viewLog(" + DataBinder.Eval(c.DataItem, "Id") + ")\">Betrachten</a>&nbsp;");
  1246. if (_userContext.CurrentUser.HasFunction("Misc-Logs-Delete"))
  1247. {
  1248. html.ViewContext.Writer.Write(
  1249. "<a href=\"#\" onclick=\"deleteLog(" + DataBinder.Eval(c.DataItem, "Id") + ")\">Löschen</a><br />");
  1250. }
  1251. });
  1252. column.Settings.AllowDragDrop = DefaultBoolean.False;
  1253. column.Settings.AllowSort = DefaultBoolean.False;
  1254. column.Width = new Unit(150, UnitType.Pixel);
  1255. });
  1256. s.Columns.Add(column =>
  1257. {
  1258. column.Caption = "Level";
  1259. column.FieldName = "LogLevelDescription";
  1260. column.MinWidth = 100;
  1261. column.Width = new Unit(8, UnitType.Percentage);
  1262. column.SettingsHeaderFilter.Mode = GridHeaderFilterMode.CheckedList;
  1263. });
  1264. s.Columns.Add(column =>
  1265. {
  1266. column.Caption = "Betreff";
  1267. column.FieldName = "ShortMessage";
  1268. column.MinWidth = 150;
  1269. column.Width = new Unit(12, UnitType.Percentage);
  1270. column.SettingsHeaderFilter.Mode = GridHeaderFilterMode.CheckedList;
  1271. });
  1272. s.Columns.Add(column =>
  1273. {
  1274. column.Caption = "Nachricht";
  1275. column.FieldName = "FullMessage";
  1276. column.MinWidth = 200;
  1277. column.Width = new Unit(20, UnitType.Percentage);
  1278. column.SetDataItemTemplateContent(c =>
  1279. {
  1280. var fullMessage = DataBinder.Eval(c.DataItem, "FullMessage");
  1281. var text = fullMessage == null
  1282. ? String.Empty
  1283. : fullMessage.ToString();
  1284. if (text.ToString().Length > 80)
  1285. html.ViewContext.Writer.Write(text.Substring(0, 80) + " ...");
  1286. else
  1287. html.ViewContext.Writer.Write(text);
  1288. });
  1289. });
  1290. s.Columns.Add(column =>
  1291. {
  1292. column.Caption = "IP-Adresse";
  1293. column.FieldName = "IpAddress";
  1294. column.MinWidth = 130;
  1295. column.Width = new Unit(10, UnitType.Percentage);
  1296. column.SettingsHeaderFilter.Mode = GridHeaderFilterMode.CheckedList;
  1297. });
  1298. s.Columns.Add(column =>
  1299. {
  1300. column.Caption = "Mitarbeiter";
  1301. column.FieldName = "UserDescription";
  1302. column.MinWidth = 130;
  1303. column.Width = new Unit(10, UnitType.Percentage);
  1304. column.SettingsHeaderFilter.Mode = GridHeaderFilterMode.CheckedList;
  1305. });
  1306. s.Columns.Add(column =>
  1307. {
  1308. column.Caption = "Datentyp";
  1309. column.FieldName = "EntityType";
  1310. column.MinWidth = 100;
  1311. column.Width = new Unit(8, UnitType.Percentage);
  1312. column.SettingsHeaderFilter.Mode = GridHeaderFilterMode.CheckedList;
  1313. });
  1314. s.Columns.Add(column =>
  1315. {
  1316. column.Caption = "Daten ID";
  1317. column.FieldName = "EntityId";
  1318. column.MinWidth = 100;
  1319. column.Width = new Unit(8, UnitType.Percentage);
  1320. column.SettingsHeaderFilter.Mode = GridHeaderFilterMode.CheckedList;
  1321. });
  1322. s.Columns.Add(column =>
  1323. {
  1324. column.Caption = "Seiten URL";
  1325. column.FieldName = "PageUrl";
  1326. column.MinWidth = 150;
  1327. column.Width = new Unit(12, UnitType.Percentage);
  1328. column.Visible = false;
  1329. });
  1330. s.Columns.Add(column =>
  1331. {
  1332. column.Caption = "Relative URL";
  1333. column.FieldName = "ReferrerUrl";
  1334. column.MinWidth = 100;
  1335. column.Width = new Unit(8, UnitType.Percentage);
  1336. column.Visible = false;
  1337. });
  1338. s.Columns.Add(column =>
  1339. {
  1340. column.Caption = "Zeitpunkt";
  1341. column.FieldName = "CreatedOnLocal";
  1342. column.PropertiesEdit.DisplayFormatString = "dd.MM.yyyy - HH:mm:ss";
  1343. column.MinWidth = 150;
  1344. column.Width = new Unit(12, UnitType.Percentage);
  1345. });
  1346. s.ClientLayout = (sender, e) =>
  1347. {
  1348. if (e.LayoutMode == ClientLayoutMode.Loading)
  1349. {
  1350. if (System.Web.HttpContext.Current.Session["LogGridState"] != null)
  1351. e.LayoutData = (string)System.Web.HttpContext.Current.Session["LogGridState"];
  1352. }
  1353. else
  1354. System.Web.HttpContext.Current.Session["LogGridState"] = e.LayoutData;
  1355. };
  1356. s.PreRender = s.BeforeGetCallbackResult = (sender, e) => {
  1357. MVCxGridView gridView = sender as MVCxGridView;
  1358. System.Web.HttpContext.Current.Session["LogGridViewState"] = new MVCxGridViewState(gridView);
  1359. };
  1360. s.ClientSideEvents.BeginCallback = "function (s, e) { e.customArgs['scrollHeight'] = [ gridScrollHeight ]; }";
  1361. s.ClientSideEvents.ToolbarItemClick = "function (s, e) { onToolbarItemClick(s, e); }";
  1362. s.Styles.AlternatingRow.BackColor = System.Drawing.Color.FromArgb(247, 247, 247);
  1363. return s;
  1364. }
  1365. }
  1366. }