GridViewSettingsHelper.cs 64 KB

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