_SiteEditPartial.cshtml 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309
  1. @using GreenTree.Nachtragsmanagement.Web.Extensions
  2. @{
  3. var userContext = GreenTree.Nachtragsmanagement.Core.CommonHelper.UserContext();
  4. }
  5. @model GreenTree.Nachtragsmanagement.Web.Models.Site.SiteDataModel
  6. <div class="siteEditContainer">
  7. <script>
  8. var textSeparator = ", ";
  9. function addAppendixToSite(siteId) {
  10. if (!siteId) return;
  11. $.ajax({
  12. url: '@Url.Action("AppendAppendixToSite", "Appendix")',
  13. data: { SiteId: siteId },
  14. success: function (response) {
  15. setTimeout(function () {
  16. $(".appendixEditContainer").remove();
  17. $("body").append(response);
  18. }, 200);
  19. },
  20. error: function () {
  21. alert("error occured");
  22. }
  23. });
  24. }
  25. function addDeviationToSite(siteId) {
  26. if (!siteId) return;
  27. $.ajax({
  28. url: '@Url.Action("AppendDeviationToSite", "Deviation")',
  29. data: { SiteId: siteId },
  30. success: function (response) {
  31. setTimeout(function () {
  32. $(".deviationEditContainer").remove();
  33. $("body").append(response);
  34. }, 200);
  35. },
  36. error: function () {
  37. alert("error occured");
  38. }
  39. });
  40. }
  41. function addDeviationToAppendix(appendixId) {
  42. if (!appendixId) return;
  43. $.ajax({
  44. url: '@Url.Action("AppendDeviationToAppendix", "Deviation")',
  45. data: { AppendixId: appendixId },
  46. success: function (response) {
  47. setTimeout(function () {
  48. $(".deviationEditContainer").remove();
  49. $("body").append(response);
  50. }, 200);
  51. },
  52. error: function () {
  53. alert("error occured");
  54. }
  55. });
  56. }
  57. function editDeviation(id) {
  58. if (!id) return;
  59. $.ajax({
  60. url: '@Url.Action("EditDeviation", "Deviation")',
  61. data: { Id: id },
  62. success: function (response) {
  63. setTimeout(function () {
  64. $(".deviationEditContainer").remove();
  65. $("body").append(response);
  66. }, 200);
  67. },
  68. error: function () {
  69. alert("error occured");
  70. }
  71. });
  72. }
  73. function editAppendix(id) {
  74. if (!id) return;
  75. $.ajax({
  76. url: '@Url.Action("EditAppendix", "Appendix")',
  77. data: { Id: id },
  78. success: function (response) {
  79. setTimeout(function () {
  80. $(".appendixEditContainer").remove();
  81. $("body").append(response);
  82. }, 200);
  83. },
  84. error: function () {
  85. alert("error occured");
  86. }
  87. });
  88. }
  89. function onDeviationSaveSuccess() {
  90. devTreeListSiteDeviationAppendices.PerformCallback();
  91. }
  92. function onAppendixSaveSuccess() {
  93. devTreeListSiteDeviationAppendices.PerformCallback();
  94. }
  95. function onListBoxSelectionChanged(s, e) {
  96. if (e.index == 0)
  97. e.isSelected ? s.SelectAll() : s.UnselectAll();
  98. updateSelectAllItemState();
  99. updateText();
  100. }
  101. function updateSelectAllItemState() {
  102. isAllSelected() ? UserValues.SelectIndices([0]) : UserValues.UnselectIndices([0]);
  103. }
  104. function isAllSelected() {
  105. for (var i = 1; i < UserValues.GetItemCount(); i++)
  106. if (!UserValues.GetItem(i).selected)
  107. return false;
  108. return true;
  109. }
  110. function updateText() {
  111. var selectedItems = UserValues.GetSelectedItems();
  112. devDropDownListUserValues.SetText(getSelectedItemsText(selectedItems));
  113. }
  114. function synchronizeListBoxValues(s, e) {
  115. UserValues.UnselectAll();
  116. var texts = s.GetText().split(textSeparator);
  117. var values = getValuesByTexts(texts);
  118. UserValues.SelectValues(values);
  119. updateSelectAllItemState();
  120. updateText();
  121. }
  122. function getSelectedItemsText(items) {
  123. var texts = [];
  124. for (var i = 0; i < items.length; i++)
  125. if (items[i].index != 0)
  126. texts.push(items[i].text);
  127. return texts.join(textSeparator);
  128. }
  129. function getValuesByTexts(texts) {
  130. var actualValues = [];
  131. var item;
  132. for (var i = 0; i < texts.length; i++) {
  133. item = UserValues.FindItemByText(texts[i]);
  134. if (item != null)
  135. actualValues.push(item.value);
  136. }
  137. return actualValues;
  138. }
  139. </script>
  140. <style>
  141. .siteTreeList { }
  142. .siteTreeList > tbody > tr > td > table > tbody > tr:nth-child(2n) { background-color: #F7F7F7; }
  143. .siteTreeList > tbody > tr > td > table > tbody > tr:nth-child(2n) > td:first-child { background-color: #F7F7F7; }
  144. .siteEditLayoutTable { width: 100%; }
  145. .siteEditLayoutTable > tbody > tr > td { width: 50%; padding-right: 8px; vertical-align: top }
  146. </style>
  147. @Html.DevExpress().PopupControl(s =>
  148. {
  149. s.Name = "devPopupControlEditSite";
  150. if (Model.Id == -1)
  151. s.HeaderText = "Neue Baustelle erstellen";
  152. else
  153. s.HeaderText = "\"" + Model.CustomNumber + "\" bearbeiten";
  154. s.Modal = true;
  155. s.Width = new Unit(1000, UnitType.Pixel);
  156. //s.Height = new Unit(700, UnitType.Pixel);
  157. s.CloseAction = CloseAction.CloseButton;
  158. s.PopupHorizontalAlign = PopupHorizontalAlign.WindowCenter;
  159. s.PopupVerticalAlign = PopupVerticalAlign.TopSides;
  160. s.PopupVerticalOffset = 10;
  161. s.AllowDragging = true;
  162. s.AllowResize = false;
  163. s.ShowMaximizeButton = true;
  164. s.ShowFooter = false;
  165. s.ShowOnPageLoad = true;
  166. s.SetContent(() =>
  167. {
  168. using (Html.BeginForm("EditSite", "Site", FormMethod.Post, new { id = "siteEditForm" }))
  169. {
  170. ViewContext.Writer.Write("<div class='editFormWrapper'>");
  171. ViewContext.Writer.Write("<input type=\"hidden\" value=\"" + Model.Id + "\" id=\"Id\" name=\"Id\" />");
  172. ViewContext.Writer.Write("<table class=\"siteEditLayoutTable\"><tbody><tr><td>");
  173. {
  174. ViewContext.Writer.Write("<div class='inlineModelPropertyContainer'>");
  175. {
  176. ViewContext.Writer.Write("<div class='inlineModelProperty' style='width: 30%'>");
  177. {
  178. ViewContext.Writer.Write(Html.CustomLabelFor(m => m.CustomNumber, "Kostenstelle:"));
  179. ViewContext.Writer.Write(Html.ValidationMessageFor(m => m.CustomNumber).ToHtmlString());
  180. Html.DevExpress().TextBoxFor(m => m.CustomNumber, t =>
  181. {
  182. t.Width = new Unit(90, UnitType.Percentage);
  183. }).Render();
  184. }
  185. ViewContext.Writer.Write("</div>");
  186. ViewContext.Writer.Write("<div class='inlineModelProperty' style='width: 70%'>");
  187. {
  188. ViewContext.Writer.Write(Html.CustomLabelFor(m => m.Description, "Bauvorhaben:"));
  189. ViewContext.Writer.Write(Html.ValidationMessageFor(m => m.Description).ToHtmlString());
  190. Html.DevExpress().TextBoxFor(m => m.Description, t =>
  191. {
  192. t.Width = new Unit(99, UnitType.Percentage);
  193. }).Render();
  194. }
  195. ViewContext.Writer.Write("</div>");
  196. }
  197. ViewContext.Writer.Write("</div>");
  198. ViewContext.Writer.Write("<div class='inlineModelPropertyContainer'>");
  199. {
  200. ViewContext.Writer.Write("<div class='inlineModelProperty' style='width: 52%'>");
  201. {
  202. ViewContext.Writer.Write(Html.CustomLabelFor(m => m.Start, "Start:"));
  203. ViewContext.Writer.Write(Html.ValidationMessageFor(m => m.Start).ToHtmlString());
  204. Html.DevExpress().DateEditFor(m => m.Start, t =>
  205. {
  206. t.Width = new Unit(95, UnitType.Percentage);
  207. }).Render();
  208. }
  209. ViewContext.Writer.Write("</div>");
  210. ViewContext.Writer.Write("<div class='inlineModelProperty' style='width: 48%'>");
  211. {
  212. ViewContext.Writer.Write(Html.CustomLabelFor(m => m.End, "Ende:"));
  213. ViewContext.Writer.Write(Html.ValidationMessageFor(m => m.End).ToHtmlString());
  214. Html.DevExpress().DateEditFor(m => m.End, t =>
  215. {
  216. t.Width = new Unit(98, UnitType.Percentage);
  217. }).Render();
  218. }
  219. ViewContext.Writer.Write("</div>");
  220. }
  221. ViewContext.Writer.Write("</div>");
  222. }
  223. ViewContext.Writer.Write("</td><td>");
  224. {
  225. ViewContext.Writer.Write(Html.CustomLabelFor(m => m.Start, "Benutzer:"));
  226. Html.DevExpress().DropDownEdit(t =>
  227. {
  228. t.Name = "devDropDownListUserValues";
  229. t.Width = new Unit(100, UnitType.Percentage);
  230. t.Text = Model.UserDescription;
  231. t.SetDropDownWindowTemplateContent(l =>
  232. {
  233. Html.DevExpress().ListBox(lb =>
  234. {
  235. lb.Name = "UserValues";
  236. lb.Width = new Unit(100, UnitType.Percentage);
  237. lb.Height = new Unit(250, UnitType.Pixel);
  238. lb.Properties.TextField = "Description";
  239. lb.Properties.ValueField = "Id";
  240. lb.Properties.ValueType = typeof(int);
  241. lb.Properties.SelectionMode = ListEditSelectionMode.CheckColumn;
  242. lb.ControlStyle.Border.BorderStyle = BorderStyle.None;
  243. lb.PreRender = (sender, e) =>
  244. {
  245. var listBox = sender as MVCxListBox;
  246. foreach (ListEditItem listItem in listBox.Items)
  247. {
  248. if (Model.UserValues == null || !Model.UserValues.Any(m => m == (int)listItem.Value)) continue;
  249. listItem.Selected = true;
  250. }
  251. };
  252. lb.Properties.ClientSideEvents.SelectedIndexChanged = "function (s, e) { onListBoxSelectionChanged(s, e); }";
  253. }).BindList(ViewData["AllUsers"]).Render();
  254. t.Properties.ClientSideEvents.TextChanged = "function (s, e) { synchronizeListBoxValues(s, e); }";
  255. t.Properties.ClientSideEvents.DropDown = "function (s, e) { synchronizeListBoxValues(s, e); }";
  256. });
  257. }).Render();
  258. }
  259. ViewContext.Writer.Write("</td></tr></tbody></table>");
  260. ViewContext.Writer.Write(Html.CustomLabelFor(m => m.Deviations, "Vertragsabweichungen / Nachträge:"));
  261. ViewContext.Writer.Write("<div style='width: 100%; overflow: auto; max-height: 450px; border: 1px solid #d0d0d0'>");
  262. {
  263. ViewContext.Writer.Write(Html.Partial("~/Views/Sites/_SiteEditTreePartial.cshtml", Model).ToHtmlString());
  264. }
  265. ViewContext.Writer.Write("</div>");
  266. ViewContext.Writer.Write("</div>");
  267. Html.RenderPartial(
  268. "~/Views/Shared/_PopupButtonPanel.cshtml",
  269. new GreenTree.Nachtragsmanagement.Web.Models.Global.PopupModel
  270. {
  271. PopupName = "devPopupControlEditSite",
  272. AcceptFunction = "function (s, e) { saveSite(); }"
  273. }
  274. );
  275. }
  276. });
  277. s.Styles.Content.Paddings.Padding = new Unit(0);
  278. s.Styles.ModalBackground.Opacity = 0;
  279. }).GetHtml()
  280. </div>