_DeviationEditPartial.cshtml 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479
  1. @using GreenTree.Nachtragsmanagement.Web.Extensions
  2. @{
  3. var userContext = GreenTree.Nachtragsmanagement.Core.CommonHelper.UserContext();
  4. }
  5. @model GreenTree.Nachtragsmanagement.Web.Models.Deviation.DeviationDataModel
  6. <div class="deviationEditContainer">
  7. <script>
  8. var textSeparator = ", ";
  9. function addStatus() {
  10. $.ajax({
  11. url: '@Url.Action("EditClaim", "Deviation")',
  12. data: { claimType: "status", Id: -1 },
  13. success: function (response) {
  14. setTimeout(function () {
  15. $(".claimEditContainer").remove();
  16. $("body").append(response);
  17. parent.addCustomEventListener('StatusDataCallbackEventReceiver', function () {
  18. StatusId.PerformCallback();
  19. });
  20. }, 200);
  21. },
  22. error: function () {
  23. alert("error occured");
  24. }
  25. });
  26. }
  27. function addDisturbance() {
  28. $.ajax({
  29. url: '@Url.Action("EditClaim", "Deviation")',
  30. data: { claimType: "disturbance", Id: -1 },
  31. success: function (response) {
  32. setTimeout(function () {
  33. $(".claimEditContainer").remove();
  34. $("body").append(response);
  35. parent.addCustomEventListener('DisturbanceDataCallbackEventReceiver', function () {
  36. DisturbanceId.PerformCallback();
  37. });
  38. }, 200);
  39. },
  40. error: function () {
  41. alert("error occured");
  42. }
  43. });
  44. }
  45. function addKind() {
  46. $.ajax({
  47. url: '@Url.Action("EditClaim", "Deviation")',
  48. data: { claimType: "kind", Id: -1 },
  49. success: function (response) {
  50. setTimeout(function () {
  51. $(".claimEditContainer").remove();
  52. $("body").append(response);
  53. parent.addCustomEventListener('KindDataCallbackEventReceiver', function () {
  54. KindId.PerformCallback();
  55. });
  56. }, 200);
  57. },
  58. error: function () {
  59. alert("error occured");
  60. }
  61. });
  62. }
  63. function calculateValue() {
  64. Sum.SetValue(Value.GetValue() * (Percentage.GetValue() / 100));
  65. }
  66. function onListBoxSelectionChanged(s, e) {
  67. if (e.index == 0)
  68. e.isSelected ? s.SelectAll() : s.UnselectAll();
  69. updateSelectAllItemState();
  70. updateText();
  71. }
  72. function updateSelectAllItemState() {
  73. isAllSelected() ? DisturbanceValues.SelectIndices([0]) : DisturbanceValues.UnselectIndices([0]);
  74. }
  75. function isAllSelected() {
  76. for (var i = 1; i < DisturbanceValues.GetItemCount(); i++)
  77. if (!DisturbanceValues.GetItem(i).selected)
  78. return false;
  79. return true;
  80. }
  81. function updateText() {
  82. var selectedItems = DisturbanceValues.GetSelectedItems();
  83. devDropDownListDisturbanceValues.SetText(getSelectedItemsText(selectedItems));
  84. }
  85. function synchronizeListBoxValues(s, e) {
  86. DisturbanceValues.UnselectAll();
  87. var texts = s.GetText().split(textSeparator);
  88. var values = getValuesByTexts(texts);
  89. DisturbanceValues.SelectValues(values);
  90. updateSelectAllItemState();
  91. updateText();
  92. }
  93. function getSelectedItemsText(items) {
  94. var texts = [];
  95. for (var i = 0; i < items.length; i++)
  96. if (items[i].index != 0)
  97. texts.push(items[i].text);
  98. return texts.join(textSeparator);
  99. }
  100. function getValuesByTexts(texts) {
  101. var actualValues = [];
  102. var item;
  103. for (var i = 0; i < texts.length; i++) {
  104. item = DisturbanceValues.FindItemByText(texts[i]);
  105. if (item != null)
  106. actualValues.push(item.value);
  107. }
  108. return actualValues;
  109. }
  110. </script>
  111. @Html.DevExpress().PopupControl(s =>
  112. {
  113. s.Name = "devPopupControlEditDeviation";
  114. if (Model.Id == -1)
  115. s.HeaderText = "Neue Vertragsabweichung erstellen";
  116. else
  117. s.HeaderText = "\"" + Model.CustomNumber + "\" bearbeiten";
  118. s.Modal = true;
  119. s.Width = new Unit(700, UnitType.Pixel);
  120. s.CloseAction = CloseAction.CloseButton;
  121. s.PopupHorizontalAlign = PopupHorizontalAlign.WindowCenter;
  122. s.PopupVerticalAlign = PopupVerticalAlign.TopSides;
  123. s.PopupVerticalOffset = 10;
  124. s.AllowDragging = false;
  125. s.AllowResize = false;
  126. s.ShowFooter = false;
  127. s.ShowOnPageLoad = true;
  128. s.SetContent(() =>
  129. {
  130. using (Html.BeginForm("EditDeviation", "Deviation", FormMethod.Post, new { id = "deviationEditForm" }))
  131. {
  132. ViewContext.Writer.Write("<div class='editFormWrapper'>");
  133. ViewContext.Writer.Write("<input type=\"hidden\" value=\"" + Model.Id + "\" id=\"Id\" name=\"Id\" />");
  134. ViewContext.Writer.Write("<div class='inlineModelPropertyContainer'>");
  135. {
  136. ViewContext.Writer.Write("<div class='inlineModelProperty' style='width: 15%'>");
  137. {
  138. ViewContext.Writer.Write(Html.CustomLabelFor(m => m.CustomNumber, "Nummer:"));
  139. ViewContext.Writer.Write(Html.ValidationMessageFor(m => m.CustomNumber).ToHtmlString());
  140. Html.DevExpress().TextBoxFor(m => m.CustomNumber, t =>
  141. {
  142. t.Width = new Unit(80, UnitType.Percentage);
  143. }).Render();
  144. }
  145. ViewContext.Writer.Write("</div>");
  146. ViewContext.Writer.Write("<div class='inlineModelProperty' style='width: 55%'>");
  147. {
  148. ViewContext.Writer.Write(Html.CustomLabelFor(m => m.Description, "Bezeichnung:"));
  149. ViewContext.Writer.Write(Html.ValidationMessageFor(m => m.Description).ToHtmlString());
  150. Html.DevExpress().TextBoxFor(m => m.Description, t =>
  151. {
  152. t.Width = new Unit(92, UnitType.Percentage);
  153. }).Render();
  154. }
  155. ViewContext.Writer.Write("</div>");
  156. ViewContext.Writer.Write("<div class='inlineModelProperty' style='width: 30%'>");
  157. {
  158. ViewContext.Writer.Write(Html.CustomLabelFor(m => m.ReceiptDate, "Einreichdatum VA:"));
  159. ViewContext.Writer.Write(Html.ValidationMessageFor(m => m.ReceiptDate).ToHtmlString());
  160. Html.DevExpress().DateEditFor(m => m.ReceiptDate, t =>
  161. {
  162. t.Width = new Unit(100, UnitType.Percentage);
  163. }).Render();
  164. }
  165. ViewContext.Writer.Write("</div>");
  166. }
  167. ViewContext.Writer.Write("</div>");
  168. ViewContext.Writer.Write("<div class='inlineModelPropertyContainer'>");
  169. {
  170. ViewContext.Writer.Write("<div class='inlineModelProperty' style='width: 40%'>");
  171. {
  172. ViewContext.Writer.Write(Html.CustomLabelFor(m => m.DisturbanceValues, "Kategorien:"));
  173. ViewContext.Writer.Write(Html.ValidationMessageFor(m => m.DisturbanceValues).ToHtmlString());
  174. Html.DevExpress().DropDownEdit(t =>
  175. {
  176. t.Name = "devDropDownListDisturbanceValues";
  177. t.Width = new Unit(95, UnitType.Percentage);
  178. if (Model.DisturbanceDescriptions != null && Model.DisturbanceDescriptions.Any())
  179. t.Text = String.Join(", ", Model.DisturbanceDescriptions);
  180. t.SetDropDownWindowTemplateContent(l =>
  181. {
  182. Html.DevExpress().ListBox(lb =>
  183. {
  184. lb.Name = "DisturbanceValues";
  185. lb.Width = new Unit(100, UnitType.Percentage);
  186. lb.Properties.TextField = "Description";
  187. lb.Properties.ValueField = "Id";
  188. lb.Properties.ValueType = typeof(int);
  189. lb.Properties.SelectionMode = ListEditSelectionMode.CheckColumn;
  190. lb.ControlStyle.Border.BorderStyle = BorderStyle.None;
  191. lb.PreRender = (sender, e) =>
  192. {
  193. var listBox = sender as MVCxListBox;
  194. foreach (ListEditItem listItem in listBox.Items)
  195. {
  196. if (Model.DisturbanceValues == null || !Model.DisturbanceValues.Any(m => m == (int)listItem.Value)) continue;
  197. listItem.Selected = true;
  198. }
  199. listBox.Items.Insert(0, new ListEditItem("(Alle auswählen)", -1));
  200. };
  201. lb.Properties.ClientSideEvents.SelectedIndexChanged = "function (s, e) { onListBoxSelectionChanged(s, e); }";
  202. }).BindList(ViewData["AllDisturbances"]).Render();
  203. t.Properties.ClientSideEvents.TextChanged = "function (s, e) { synchronizeListBoxValues(s, e); }";
  204. t.Properties.ClientSideEvents.DropDown = "function (s, e) { synchronizeListBoxValues(s, e); }";
  205. });
  206. }).Render();
  207. if (userContext.CurrentUser.HasFunction("Deviation-Claims-Edit"))
  208. {
  209. Html.DevExpress().HyperLink(t =>
  210. {
  211. t.Name = "devHyperLinkDisturbanceEventReceiver";
  212. t.Properties.Text = "Hinzufügen";
  213. t.NavigateUrl = "#";
  214. t.Properties.ClientSideEvents.Click = "function (s, e) { addDisturbance(); }";
  215. t.Style.Add("line-height", "24px");
  216. }).Render();
  217. }
  218. }
  219. ViewContext.Writer.Write("</div>");
  220. ViewContext.Writer.Write("<div class='inlineModelProperty' style='width: 22%'>");
  221. {
  222. ViewContext.Writer.Write(Html.CustomLabelFor(m => m.Value, "Schätzung VA:"));
  223. ViewContext.Writer.Write(Html.ValidationMessageFor(m => m.Value).ToHtmlString());
  224. Html.DevExpress().SpinEditFor(m => m.Value, t =>
  225. {
  226. t.Width = new Unit(90, UnitType.Percentage);
  227. t.Properties.DecimalPlaces = 2;
  228. t.Properties.NumberType = SpinEditNumberType.Float;
  229. t.Properties.DisplayFormatString = "c2";
  230. t.Properties.ClientSideEvents.ValueChanged = "function (s, e) { calculateValue(); }";
  231. }).Render();
  232. }
  233. ViewContext.Writer.Write("</div>");
  234. ViewContext.Writer.Write("<div class='inlineModelProperty' style='width: 16%'>");
  235. {
  236. ViewContext.Writer.Write(Html.CustomLabelFor(m => m.Value, "Bewertung (%):"));
  237. ViewContext.Writer.Write(Html.ValidationMessageFor(m => m.Value).ToHtmlString());
  238. Html.DevExpress().SpinEditFor(m => m.Percentage, t =>
  239. {
  240. t.Width = new Unit(88, UnitType.Percentage);
  241. t.Properties.DecimalPlaces = 0;
  242. t.Properties.MaxValue = 100;
  243. t.Properties.MinValue = 0;
  244. t.Properties.NumberType = SpinEditNumberType.Integer;
  245. t.Properties.DisplayFormatString = "{0:n0} %";
  246. t.Properties.ClientSideEvents.ValueChanged = "function (s, e) { calculateValue(); }";
  247. }).Render();
  248. }
  249. ViewContext.Writer.Write("</div>");
  250. ViewContext.Writer.Write("<div class='inlineModelProperty' style='width: 22%'>");
  251. {
  252. ViewContext.Writer.Write(Html.CustomLabelFor(m => m.Value, "Wert:"));
  253. Html.DevExpress().SpinEdit(t =>
  254. {
  255. t.Name = "Sum";
  256. t.Width = new Unit(100, UnitType.Percentage);
  257. t.ClientEnabled = false;
  258. t.Properties.DecimalPlaces = 2;
  259. t.Properties.NumberType = SpinEditNumberType.Float;
  260. t.Properties.DisplayFormatString = "c2";
  261. }).Render();
  262. }
  263. ViewContext.Writer.Write("</div>");
  264. }
  265. ViewContext.Writer.Write("</div>");
  266. ViewContext.Writer.Write("<div class='inlineModelPropertyContainer'>");
  267. {
  268. ViewContext.Writer.Write("<div class='inlineModelProperty' style='width: 50%'>");
  269. {
  270. ViewContext.Writer.Write(Html.CustomLabelFor(m => m.AppendixId, "Nachtrag:"));
  271. Session.Add("DeviationAppendicesComboBoxSettings", new Action<ComboBoxSettings>(a =>
  272. {
  273. a.Width = new Unit(95, UnitType.Percentage);
  274. a.Properties.ValueType = typeof(int);
  275. a.Properties.ValueField = "Id";
  276. a.Properties.TextField = "Description";
  277. var serializedModel = Newtonsoft.Json.JsonConvert.SerializeObject(Model);
  278. a.CallbackRouteValues = new
  279. {
  280. Controller = "DataCallback",
  281. Action = "AppendicesComboBox",
  282. SettingsKey = "DeviationAppendicesComboBoxSettings",
  283. Model = serializedModel,
  284. Type = Model.GetType().FullName
  285. };
  286. }));
  287. ViewData.Add("AppendicesComboBoxSettings", "DeviationAppendicesComboBoxSettings");
  288. Html.RenderPartial("~/Views/Shared/DataEditorTemplates/_AppendicesComboBox.cshtml", Model, ViewData);
  289. }
  290. ViewContext.Writer.Write("</div>");
  291. ViewContext.Writer.Write("<div class='inlineModelProperty' style='width: 50%'>");
  292. {
  293. ViewContext.Writer.Write(Html.CustomLabelFor(m => m.AppendixDate, "Einreichdatum NT:"));
  294. ViewContext.Writer.Write(Html.ValidationMessageFor(m => m.AppendixDate).ToHtmlString());
  295. Html.DevExpress().DateEditFor(m => m.AppendixDate, t =>
  296. {
  297. t.Width = new Unit(100, UnitType.Percentage);
  298. }).Render();
  299. }
  300. ViewContext.Writer.Write("</div>");
  301. }
  302. ViewContext.Writer.Write("</div>");
  303. ViewContext.Writer.Write("<div class='inlineModelPropertyContainer'>");
  304. {
  305. ViewContext.Writer.Write("<div class='inlineModelProperty' style='width: 50%'>");
  306. {
  307. ViewContext.Writer.Write(Html.CustomLabelFor(m => m.StatusId, "VA-Status:"));
  308. ViewContext.Writer.Write(Html.ValidationMessageFor(m => m.StatusId).ToHtmlString());
  309. Session.Add("DeviationStatusesComboBoxSettings", new Action<ComboBoxSettings>(a =>
  310. {
  311. a.Width = new Unit(95, UnitType.Percentage);
  312. a.Properties.ValueType = typeof(int);
  313. a.Properties.ValueField = "Id";
  314. a.Properties.TextField = "Description";
  315. var serializedModel = Newtonsoft.Json.JsonConvert.SerializeObject(Model);
  316. a.CallbackRouteValues = new
  317. {
  318. Controller = "DataCallback",
  319. Action = "StatusesComboBox",
  320. SettingsKey = "DeviationStatusesComboBoxSettings",
  321. Model = serializedModel,
  322. Type = Model.GetType().FullName
  323. };
  324. }));
  325. ViewData.Add("StatusesComboBoxSettings", "DeviationStatusesComboBoxSettings");
  326. Html.RenderPartial("~/Views/Shared/DataEditorTemplates/_StatusesComboBox.cshtml", Model, ViewData);
  327. if (userContext.CurrentUser.HasFunction("Deviation-Claims-Edit"))
  328. {
  329. Html.DevExpress().HyperLink(t =>
  330. {
  331. t.Name = "devHyperLinkStatusEventReceiver";
  332. t.Properties.Text = "Hinzufügen";
  333. t.NavigateUrl = "#";
  334. t.Properties.ClientSideEvents.Click = "function (s, e) { addStatus(); }";
  335. t.Style.Add("line-height", "24px");
  336. }).Render();
  337. }
  338. }
  339. ViewContext.Writer.Write("</div>");
  340. //ViewContext.Writer.Write("<div class='inlineModelProperty' style='width: 33%'>");
  341. //{
  342. // ViewContext.Writer.Write(Html.CustomLabelFor(m => m.DisturbanceId, "Verzögerung:"));
  343. // ViewContext.Writer.Write(Html.ValidationMessageFor(m => m.DisturbanceId).ToHtmlString());
  344. // Session.Add("DeviationDisturbancesComboBoxSettings", new Action<ComboBoxSettings>(a =>
  345. // {
  346. // a.Width = new Unit(95, UnitType.Percentage);
  347. // a.Properties.ValueType = typeof(int);
  348. // a.Properties.ValueField = "Id";
  349. // a.Properties.TextField = "Description";
  350. // var serializedModel = Newtonsoft.Json.JsonConvert.SerializeObject(Model);
  351. // a.CallbackRouteValues = new
  352. // {
  353. // Controller = "DataCallback",
  354. // Action = "DisturbancesComboBox",
  355. // SettingsKey = "DeviationDisturbancesComboBoxSettings",
  356. // Model = serializedModel,
  357. // Type = Model.GetType().FullName
  358. // };
  359. // }));
  360. // ViewData.Add("DisturbancesComboBoxSettings", "DeviationDisturbancesComboBoxSettings");
  361. // Html.RenderPartial("~/Views/Shared/DataEditorTemplates/_DisturbancesComboBox.cshtml", Model, ViewData);
  362. // if (userContext.CurrentUser.HasFunction("Deviation-Claims-Edit"))
  363. // {
  364. // Html.DevExpress().HyperLink(t =>
  365. // {
  366. // t.Name = "devHyperLinkDisturbanceEventReceiver";
  367. // t.Properties.Text = "Hinzufügen";
  368. // t.NavigateUrl = "#";
  369. // t.Properties.ClientSideEvents.Click = "function (s, e) { addDisturbance(); }";
  370. // t.Style.Add("line-height", "24px");
  371. // }).Render();
  372. // }
  373. //}
  374. //ViewContext.Writer.Write("</div>");
  375. ViewContext.Writer.Write("<div class='inlineModelProperty' style='width: 50%'>");
  376. {
  377. ViewContext.Writer.Write(Html.CustomLabelFor(m => m.KindId, "Art:"));
  378. ViewContext.Writer.Write(Html.ValidationMessageFor(m => m.KindId).ToHtmlString());
  379. Session.Add("DeviationKindsComboBoxSettings", new Action<ComboBoxSettings>(a =>
  380. {
  381. a.Width = new Unit(100, UnitType.Percentage);
  382. a.Properties.ValueType = typeof(int);
  383. a.Properties.ValueField = "Id";
  384. a.Properties.TextField = "Description";
  385. var serializedModel = Newtonsoft.Json.JsonConvert.SerializeObject(Model);
  386. a.CallbackRouteValues = new
  387. {
  388. Controller = "DataCallback",
  389. Action = "KindsComboBox",
  390. SettingsKey = "DeviationKindsComboBoxSettings",
  391. Model = serializedModel,
  392. Type = Model.GetType().FullName
  393. };
  394. }));
  395. ViewData.Add("KindsComboBoxSettings", "DeviationKindsComboBoxSettings");
  396. Html.RenderPartial("~/Views/Shared/DataEditorTemplates/_KindsComboBox.cshtml", Model, ViewData);
  397. if (userContext.CurrentUser.HasFunction("Deviation-Claims-Edit"))
  398. {
  399. Html.DevExpress().HyperLink(t =>
  400. {
  401. t.Name = "devHyperLinkKindEventReceiver";
  402. t.Properties.Text = "Hinzufügen";
  403. t.NavigateUrl = "#";
  404. t.Properties.ClientSideEvents.Click = "function (s, e) { addKind(); }";
  405. t.Style.Add("line-height", "24px");
  406. }).Render();
  407. }
  408. }
  409. ViewContext.Writer.Write("</div>");
  410. }
  411. ViewContext.Writer.Write("</div>");
  412. ViewContext.Writer.Write(Html.CustomLabelFor(m => m.Comment, "Kommentar:"));
  413. ViewContext.Writer.Write(Html.ValidationMessageFor(m => m.Comment).ToHtmlString());
  414. Html.DevExpress().MemoFor(m => m.Comment, t =>
  415. {
  416. t.Width = new Unit(100, UnitType.Percentage);
  417. t.Height = new Unit(90, UnitType.Pixel);
  418. }).Render();
  419. ViewContext.Writer.Write("</div>");
  420. Html.RenderPartial(
  421. "~/Views/Shared/_PopupButtonPanel.cshtml",
  422. new GreenTree.Nachtragsmanagement.Web.Models.Global.PopupModel
  423. {
  424. PopupName = "devPopupControlEditDeviation",
  425. AcceptFunction = "function (s, e) { saveDeviation(); }"
  426. }
  427. );
  428. }
  429. });
  430. s.Styles.Content.Paddings.Padding = new Unit(0);
  431. s.Styles.ModalBackground.Opacity = 0;
  432. }).GetHtml()
  433. </div>