Claims.cshtml 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  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. state: "NT-State",
  11. category: "Kategorie"
  12. };
  13. $(document).ready(setListBoxHeights);
  14. $(window).resize(setListBoxHeights);
  15. function setListBoxHeights() {
  16. var windowHeight = $(window).height();
  17. devListBoxStates.SetHeight(windowHeight - 40);
  18. devListBoxCategories.SetHeight(windowHeight - 40);
  19. devListBoxKinds.SetHeight(windowHeight - 40);
  20. }
  21. function editClaim(claimType, id) {
  22. if (!id) return;
  23. $.ajax({
  24. url: '@Url.Action("EditClaim", "Appendix")',
  25. data: { claimType: claimType, Id: id },
  26. success: function (response) {
  27. setTimeout(function () {
  28. $(".claimEditContainer").remove();
  29. $("body").append(response);
  30. }, 200);
  31. },
  32. error: function () {
  33. alert("error occured");
  34. }
  35. });
  36. }
  37. function confirmDelete(claimType, id) {
  38. if (!id) return;
  39. deleteId = id;
  40. deleteClaimType = claimType;
  41. $.ajax({
  42. type: "GET",
  43. url: '@Url.Action("GetClaim", "Appendix")',
  44. data: { claimType: deleteClaimType, Id: id },
  45. success: function (response) {
  46. if (response == "notFound") return;
  47. var claim = JSON.parse(response);
  48. $(".deleteValidation").hide();
  49. var popupControl = MVCxClientPopupControl.Cast(devPopupControlDeleteClaim);
  50. popupControl.SetHeaderText(popupControl.GetHeaderText().replace("{claim}", claim.Description));
  51. $(".dialogText").text($(".dialogText").text().replace("{claim}", claim.Description));
  52. $(".dialogText").text($(".dialogText").text().replace("{claim}", claim.Description));
  53. $(".dialogText").text($(".dialogText").text().replace("{claimType}", claimTypeTranslation[claimType]));
  54. devRadioButtonDeleteReplaceClaim
  55. .SetText(devRadioButtonDeleteReplaceClaim.GetText().replace("{claimType}", claimTypeTranslation[claimType]));
  56. var comboBox = null;
  57. devComboBoxClaimDeleteReplaceState.SetVisible(false);
  58. devComboBoxClaimDeleteReplaceCategory.SetVisible(false);
  59. if (deleteClaimType == "state") {
  60. devComboBoxClaimDeleteReplaceState.SetVisible(true);
  61. comboBox = MVCxClientComboBox.Cast(devComboBoxClaimDeleteReplaceState);
  62. }
  63. comboBox.PerformCallback();
  64. popupControl.Show();
  65. }
  66. });
  67. }
  68. function deleteClaim() {
  69. if (deleteClaimType == "state") {
  70. deleteReplaceId = devComboBoxClaimDeleteReplaceState.GetValue();
  71. }
  72. if (deleteReplaceId == 0) {
  73. $(".deleteValidation").text("Es muss ein Ersatz ausgewählt werden.");
  74. $(".deleteValidation").show();
  75. return;
  76. }
  77. if (deleteId == deleteReplaceId) {
  78. $(".deleteValidation").text("Der Ersatz darf nicht gleich dem zu löschenden Element sein.");
  79. $(".deleteValidation").show();
  80. return;
  81. }
  82. $.ajax({
  83. type: "POST",
  84. url: '@Url.Action("DeleteClaim", "Appendix")',
  85. data: { claimType: deleteClaimType, Id: deleteId, replaceId: deleteReplaceId },
  86. success: function (response) {
  87. var popupControl = MVCxClientPopupControl.Cast(devPopupControlDeleteClaim);
  88. popupControl.Hide();
  89. setTimeout(function () {
  90. if (deleteClaimType == "state") {
  91. devListBoxStates.PerformCallback();
  92. } else if (deleteClaimType == "category") {
  93. devListBoxCategories.PerformCallback();
  94. }
  95. }, 200);
  96. },
  97. error: function () {
  98. alert("error occured");
  99. }
  100. });
  101. }
  102. </script>
  103. <table style="width: 100%">
  104. <tbody>
  105. <tr>
  106. <td style="width: 50%; padding-right: 8px">
  107. <div class="listHeader">
  108. <span>NT-Stati</span>
  109. <img src='@Url.Content("~/Content/Images/add-24-contrast.png")' onclick='editClaim("state", -1)' title="Neuer NT-Status" />
  110. </div>
  111. @Html.Partial("~/Views/Appendices/_StateListPartial.cshtml", ViewData["AllStates"])
  112. </td>
  113. <td style="width: 50%; padding-left: 8px">
  114. <div class="listHeader">
  115. <span>Kategorien</span>
  116. <img src='@Url.Content("~/Content/Images/add-24-contrast.png")' onclick='editClaim("category", -1)' title="Neue NT-Kategorie" />
  117. </div>
  118. @Html.Partial("~/Views/Appendices/_CategoryListPartial.cshtml", ViewData["AllCategories"])
  119. </td>
  120. </tr>
  121. </tbody>
  122. </table>
  123. @Html.DevExpress().PopupControl(s =>
  124. {
  125. s.Name = "devPopupControlDeleteClaim";
  126. s.HeaderText = "\"{claim}\" löschen";
  127. s.Modal = false;
  128. s.Width = new Unit(350, UnitType.Pixel);
  129. s.CloseAction = CloseAction.CloseButton;
  130. s.PopupHorizontalAlign = PopupHorizontalAlign.WindowCenter;
  131. s.PopupVerticalAlign = PopupVerticalAlign.WindowCenter;
  132. s.AllowDragging = false;
  133. s.AllowResize = false;
  134. s.ShowFooter = false;
  135. s.SetContent(() =>
  136. {
  137. ViewContext.Writer.Write("<div class='dialogText' style='padding: 12px'>");
  138. ViewContext.Writer.Write("Falls Sie \"{claim}\" löschen möchten, was soll mit den Nachträgen geschehen, die bereits \"{claim}\" zugeordnet sind?");
  139. ViewContext.Writer.Write("</div>");
  140. ViewContext.Writer.Write("<div style='padding: 0 12px 12px 12px'>");
  141. Html.DevExpress().RadioButton(rb =>
  142. {
  143. rb.Name = "devRadioButtonDeleteReplaceClaim";
  144. rb.Text = "Eine neue(n) {claimType} zuweisen";
  145. rb.GroupName = "claimDelete";
  146. rb.Checked = true;
  147. }).Render();
  148. Session.Add("StatesDeleteComboBoxSettings", new Action<ComboBoxSettings>(a =>
  149. {
  150. a.Name = "devComboBoxClaimDeleteReplaceState";
  151. a.Width = new Unit(100, UnitType.Percentage);
  152. a.Properties.ValueType = typeof(int);
  153. a.Properties.ValueField = "Id";
  154. a.Properties.TextField = "Description";
  155. a.Properties.ClientSideEvents.BeginCallback = "function (s, e) { e.customArgs['excludedIds'] = [ deleteId ]; }";
  156. a.Properties.ClientSideEvents.EndCallback = "function (s, e) { s.SetSelectedIndex(0); }";
  157. a.SelectedIndex = 0;
  158. a.ClientVisible = false;
  159. a.CallbackRouteValues = new
  160. {
  161. Controller = "DataCallback",
  162. Action = "StatesComboBoxExcluded",
  163. SettingsKey = "StatesDeleteComboBoxSettings"
  164. };
  165. }));
  166. ViewData.Add("StatesComboBoxSettings", "StatesDeleteComboBoxSettings");
  167. Html.RenderPartial("~/Views/Shared/DataEditorTemplates/_StatesComboBox.cshtml", null, ViewData);
  168. ViewContext.Writer.Write("<div class=\"deleteValidation\" style=\"display: none\"></div>");
  169. ViewContext.Writer.Write("</div>");
  170. Html.RenderPartial(
  171. "~/Views/Shared/_PopupButtonPanelYesNo.cshtml",
  172. new YesNoDialogModel
  173. {
  174. PopupName = "devPopupControlDeleteClaim",
  175. YesFunction = "function (s, e) { deleteClaim(); }"
  176. }
  177. );
  178. });
  179. s.Styles.Content.Paddings.Padding = new Unit(0, UnitType.Pixel);
  180. }).GetHtml()