GridViewSettingsHelper.cs 68 KB

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