Claims.cshtml 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268
  1. @using GreenTree.Nachtragsmanagement.Web.Models.Global
  2. @{
  3. Layout = "~/Views/Shared/_FunctionLayout.cshtml";
  4. }
  5. <script>
  6. var deleteId;
  7. var deleteReplaceId;
  8. var deleteClaimType;
  9. var claimTypeTranslation = {
  10. status: "Status",
  11. disturbance: "Verzögerung",
  12. kind: "Art"
  13. };
  14. $(document).ready(setListBoxHeights);
  15. $(window).resize(setListBoxHeights);
  16. function setListBoxHeights() {
  17. var windowHeight = $(window).height();
  18. devListBoxStatuses.SetHeight(windowHeight - 40);
  19. devListBoxDisturbances.SetHeight(windowHeight - 40);
  20. devListBoxKinds.SetHeight(windowHeight - 40);
  21. }
  22. function editClaim(claimType, id) {
  23. if (!id) return;
  24. $.ajax({
  25. url: '@Url.Action("EditClaim", "Deviation")',
  26. data: { claimType: claimType, Id: id },
  27. success: function (response) {
  28. setTimeout(function () {
  29. $(".claimEditContainer").remove();
  30. $("body").append(response);
  31. }, 200);
  32. },
  33. error: function () {
  34. alert("error occured");
  35. }
  36. });
  37. }
  38. function confirmDelete(claimType, id) {
  39. if (!id) return;
  40. deleteId = id;
  41. deleteClaimType = claimType;
  42. $.ajax({
  43. type: "GET",
  44. url: '@Url.Action("GetClaim", "Deviation")',
  45. data: { claimType: deleteClaimType, Id: id },
  46. success: function (response) {
  47. if (response == "notFound") return;
  48. var claim = JSON.parse(response);
  49. $(".deleteValidation").hide();
  50. var popupControl = MVCxClientPopupControl.Cast(devPopupControlDeleteClaim);
  51. popupControl.SetHeaderText(popupControl.GetHeaderText().replace("{claim}", claim.Description));
  52. $(".dialogText").text($(".dialogText").text().replace("{claim}", claim.Description));
  53. $(".dialogText").text($(".dialogText").text().replace("{claim}", claim.Description));
  54. $(".dialogText").text($(".dialogText").text().replace("{claimType}", claimTypeTranslation[claimType]));
  55. devRadioButtonDeleteReplaceClaim
  56. .SetText(devRadioButtonDeleteReplaceClaim.GetText().replace("{claimType}", claimTypeTranslation[claimType]));
  57. var comboBox = null;
  58. devComboBoxClaimDeleteReplaceStatus.SetVisible(false);
  59. devComboBoxClaimDeleteReplaceDisturbance.SetVisible(false);
  60. devComboBoxClaimDeleteReplaceKind.SetVisible(false);
  61. if (deleteClaimType == "status") {
  62. devComboBoxClaimDeleteReplaceStatus.SetVisible(true);
  63. comboBox = MVCxClientComboBox.Cast(devComboBoxClaimDeleteReplaceStatus);
  64. } else if (deleteClaimType == "disturbance") {
  65. devComboBoxClaimDeleteReplaceDisturbance.SetVisible(true);
  66. comboBox = MVCxClientComboBox.Cast(devComboBoxClaimDeleteReplaceStatus);
  67. } else if (deleteClaimType == "kind") {
  68. devComboBoxClaimDeleteReplaceKind.SetVisible(true);
  69. comboBox = MVCxClientComboBox.Cast(devComboBoxClaimDeleteReplaceStatus);
  70. }
  71. comboBox.PerformCallback();
  72. popupControl.Show();
  73. }
  74. });
  75. }
  76. function deleteClaim() {
  77. if (deleteClaimType == "status") {
  78. deleteReplaceId = devComboBoxClaimDeleteReplaceStatus.GetValue();
  79. } else if (deleteClaimType == "disturbance") {
  80. deleteReplaceId = devComboBoxClaimDeleteReplaceDisturbance.GetValue();
  81. } else if (deleteClaimType == "kind") {
  82. deleteReplaceId = devComboBoxClaimDeleteReplaceKind.GetValue();
  83. }
  84. if (deleteReplaceId == 0) {
  85. $(".deleteValidation").text("Es muss ein Ersatz ausgewählt werden.");
  86. $(".deleteValidation").show();
  87. return;
  88. }
  89. if (deleteId == deleteReplaceId) {
  90. $(".deleteValidation").text("Der Ersatz darf nicht gleich dem zu löschenden Element sein.");
  91. $(".deleteValidation").show();
  92. return;
  93. }
  94. $.ajax({
  95. type: "POST",
  96. url: '@Url.Action("DeleteClaim", "Deviation")',
  97. data: { claimType: deleteClaimType, Id: deleteId, replaceId: deleteReplaceId },
  98. success: function (response) {
  99. var popupControl = MVCxClientPopupControl.Cast(devPopupControlDeleteClaim);
  100. popupControl.Hide();
  101. setTimeout(function () {
  102. if (deleteClaimType == "status") {
  103. devListBoxStatuses.PerformCallback();
  104. } else if (deleteClaimType == "disturbance") {
  105. devListBoxDisturbances.PerformCallback();
  106. } else if (deleteClaimType == "kind") {
  107. devListBoxKinds.PerformCallback();
  108. }
  109. }, 200);
  110. },
  111. error: function () {
  112. alert("error occured");
  113. }
  114. });
  115. }
  116. </script>
  117. <table style="width: 100%">
  118. <tbody>
  119. <tr>
  120. <td style="width: 33%; padding-right: 6px">
  121. <div class="listHeader">
  122. <span>Statusse</span>
  123. <img src='@Url.Content("~/Content/Images/add-24-contrast.png")' onclick='editClaim("status", -1)' title="Neuer Status" />
  124. </div>
  125. @Html.Partial("~/Views/Deviations/_StatusListPartial.cshtml", ViewData["AllStatuses"])
  126. </td>
  127. <td style="width: 33%; padding: 0 6px">
  128. <div class="listHeader">
  129. <span>Verzögerungen</span>
  130. <img src='@Url.Content("~/Content/Images/add-24-contrast.png")' onclick='editClaim("disturbance", -1)' title="Neue Verzögerung" />
  131. </div>
  132. @Html.Partial("~/Views/Deviations/_DisturbanceListPartial.cshtml", ViewData["AllDisturbances"])
  133. </td>
  134. <td style="width: 33%; padding-left: 6px">
  135. <div class="listHeader">
  136. <span>Arten</span>
  137. <img src='@Url.Content("~/Content/Images/add-24-contrast.png")' onclick='editClaim("kind", -1)' title="Neue Art" />
  138. </div>
  139. @Html.Partial("~/Views/Deviations/_KindListPartial.cshtml", ViewData["AllKinds"])
  140. </td>
  141. </tr>
  142. </tbody>
  143. </table>
  144. @Html.DevExpress().PopupControl(s =>
  145. {
  146. s.Name = "devPopupControlDeleteClaim";
  147. s.HeaderText = "\"{claim}\" löschen";
  148. s.Modal = false;
  149. s.Width = new Unit(350, UnitType.Pixel);
  150. s.CloseAction = CloseAction.CloseButton;
  151. s.PopupHorizontalAlign = PopupHorizontalAlign.WindowCenter;
  152. s.PopupVerticalAlign = PopupVerticalAlign.WindowCenter;
  153. s.AllowDragging = false;
  154. s.AllowResize = false;
  155. s.ShowFooter = false;
  156. s.SetContent(() =>
  157. {
  158. ViewContext.Writer.Write("<div class='dialogText' style='padding: 12px'>");
  159. ViewContext.Writer.Write("Falls Sie \"{claim}\" löschen möchten, was soll mit den Vertragsabweichungen geschehen, die bereits \"{claim}\" zugeordnet sind?");
  160. ViewContext.Writer.Write("</div>");
  161. ViewContext.Writer.Write("<div style='padding: 0 12px 12px 12px'>");
  162. Html.DevExpress().RadioButton(rb =>
  163. {
  164. rb.Name = "devRadioButtonDeleteReplaceClaim";
  165. rb.Text = "Eine neue(n) {claimType} zuweisen";
  166. rb.GroupName = "claimDelete";
  167. rb.Checked = true;
  168. }).Render();
  169. Session.Add("StatusesDeleteComboBoxSettings", new Action<ComboBoxSettings>(a =>
  170. {
  171. a.Name = "devComboBoxClaimDeleteReplaceStatus";
  172. a.Width = new Unit(100, UnitType.Percentage);
  173. a.Properties.ValueType = typeof(int);
  174. a.Properties.ValueField = "Id";
  175. a.Properties.TextField = "Description";
  176. a.Properties.ClientSideEvents.BeginCallback = "function (s, e) { e.customArgs['excludedIds'] = [ deleteId ]; }";
  177. a.Properties.ClientSideEvents.EndCallback = "function (s, e) { s.SetSelectedIndex(0); }";
  178. a.SelectedIndex = 0;
  179. a.ClientVisible = false;
  180. a.CallbackRouteValues = new
  181. {
  182. Controller = "DataCallback",
  183. Action = "StatusesComboBoxExcluded",
  184. SettingsKey = "StatusesDeleteComboBoxSettings"
  185. };
  186. }));
  187. ViewData.Add("StatusesComboBoxSettings", "StatusesDeleteComboBoxSettings");
  188. Html.RenderPartial("~/Views/Shared/DataEditorTemplates/_StatusesComboBox.cshtml", null, ViewData);
  189. Session.Add("DisturbancesDeleteComboBoxSettings", new Action<ComboBoxSettings>(a =>
  190. {
  191. a.Name = "devComboBoxClaimDeleteReplaceDisturbance";
  192. a.Width = new Unit(100, UnitType.Percentage);
  193. a.Properties.ValueType = typeof(int);
  194. a.Properties.ValueField = "Id";
  195. a.Properties.TextField = "Description";
  196. a.Properties.ClientSideEvents.BeginCallback = "function (s, e) { e.customArgs['excludedIds'] = [ deleteId ]; }";
  197. a.Properties.ClientSideEvents.EndCallback = "function (s, e) { s.SetSelectedIndex(0); }";
  198. a.SelectedIndex = 0;
  199. a.ClientVisible = false;
  200. a.CallbackRouteValues = new
  201. {
  202. Controller = "DataCallback",
  203. Action = "DisturbancesComboBoxExcluded",
  204. SettingsKey = "DisturbancesDeleteComboBoxSettings"
  205. };
  206. }));
  207. ViewData.Add("DisturbancesComboBoxSettings", "DisturbancesDeleteComboBoxSettings");
  208. Html.RenderPartial("~/Views/Shared/DataEditorTemplates/_DisturbancesComboBox.cshtml", null, ViewData);
  209. Session.Add("KindsDeleteComboBoxSettings", new Action<ComboBoxSettings>(a =>
  210. {
  211. a.Name = "devComboBoxClaimDeleteReplaceKind";
  212. a.Width = new Unit(100, UnitType.Percentage);
  213. a.Properties.ValueType = typeof(int);
  214. a.Properties.ValueField = "Id";
  215. a.Properties.TextField = "Description";
  216. a.Properties.ClientSideEvents.BeginCallback = "function (s, e) { e.customArgs['excludedIds'] = [ deleteId ]; }";
  217. a.Properties.ClientSideEvents.EndCallback = "function (s, e) { s.SetSelectedIndex(0); }";
  218. a.SelectedIndex = 0;
  219. a.ClientVisible = false;
  220. a.CallbackRouteValues = new
  221. {
  222. Controller = "DataCallback",
  223. Action = "KindsComboBoxExcluded",
  224. SettingsKey = "KindsDeleteComboBoxSettings"
  225. };
  226. }));
  227. ViewData.Add("KindsComboBoxSettings", "KindsDeleteComboBoxSettings");
  228. Html.RenderPartial("~/Views/Shared/DataEditorTemplates/_KindsComboBox.cshtml", null, ViewData);
  229. ViewContext.Writer.Write("<div class=\"deleteValidation\" style=\"display: none\"></div>");
  230. ViewContext.Writer.Write("</div>");
  231. Html.RenderPartial(
  232. "~/Views/Shared/_PopupButtonPanelYesNo.cshtml",
  233. new YesNoDialogModel
  234. {
  235. PopupName = "devPopupControlDeleteClaim",
  236. YesFunction = "function (s, e) { deleteClaim(); }"
  237. }
  238. );
  239. });
  240. s.Styles.Content.Paddings.Padding = new Unit(0, UnitType.Pixel);
  241. }).GetHtml()