Advertisement
Guest User

Untitled

a guest
Mar 26th, 2018
240
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.23 KB | None | 0 0
  1. @using ProjectSpring.Models.Domain.TeamAssessment
  2. @using ProjectSpring.Services.Helpers
  3. @model TeamAssessmentValueDataViewModel
  4.  
  5. @{
  6. const string selectedValuesListId = "selected-values";
  7. const string allValuesListId = "all-values";
  8. const string draggableDataValue = "draggable";
  9. string chooseValueTitle = Model.ValueType == TeamAssessmentUserValueType.MostImportant
  10. ? "What six values are <strong>most important</strong> to you?"
  11. : "What six values are <strong>least important</strong> to you?";
  12. const string valueInfoPopupId = "value-info";
  13. const string valueInfoPopupTitleType = "value-info-title";
  14. const string valueInfoPopupContentType = "value-info-content";
  15. const string buttonNextId = "next-step";
  16. const string dataValueSelected = "selected";
  17. const string dataValueNotSelected = "not-selected";
  18. const string dataStateAvailable = "available";
  19. const string dataStateNotAvailable = "not-available";
  20. }
  21. 
  22. <section class="t-team-assessment">
  23.  
  24. @Html.Partial("_TeamAssessmentNavigationPartial", new NavigationViewModel(TeamAssessmentState.Values, Model.TeamId))
  25.  
  26. <div class="container">
  27. <br>
  28. <br>
  29. <h4 class="text-center">Values</h4>
  30. <br>
  31. <p class="text-center">@Html.Raw(chooseValueTitle)</p>
  32. <br>
  33. <br>
  34.  
  35. <article class="row value-box">
  36. <aside class="col-xs-12 col-xs-offset-0 col-md-offset-1 col-md-3 connectedSortable" id="@selectedValuesListId">
  37. @foreach (var value in Model.SelectedValues)
  38. {
  39. <div class="value-box-item value-box-item-yellow m-b-20" data-state="@dataValueSelected">
  40. <a onclick="removeSelectedValue(this)" class="close-btn">&times;</a>
  41. <input hidden="hidden" data-id="@value.Id" />
  42. <h6>@value.Name</h6>
  43. <p>@value.ShortDescription</p>
  44. <a onclick="showValueInfoPopup('@value.Name', '@value.ShortDescription')">read more</a>
  45. </div>
  46. }
  47. </aside>
  48.  
  49. <div class="value-box-items col-xs-12 col-md-8 connectedSortable" id="@allValuesListId">
  50. @foreach (var value in Model.AllValues)
  51. {
  52. string isSelectedClass = value.IsSelected ? "disabled" : "blue";
  53. string isSelectedDataType = value.IsSelected ? "selected" : "not-selected";
  54.  
  55. <div class="value-box-item value-box-item-@isSelectedClass handle" data-value="@dataValueNotSelected" data-id="@value.Id" data-state="@dataStateAvailable" data-type="@draggableDataValue">
  56. <input hidden="hidden" data-id="@value.Id" />
  57. <h6>@value.Name</h6>
  58. <p>@value.ShortDescription</p>
  59. <a onclick="showValueInfoPopup('@value.Name', '@value.ShortDescription')">read more</a>
  60. </div>
  61. }
  62. </div>
  63. </article>
  64.  
  65. <br>
  66. <br>
  67.  
  68. <p class="text-center">Lorem ipsum dolor sit amet, consectetur adipisicing elit, <br> sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. </p>
  69.  
  70. <div class="nav-step text-center">
  71. @if (Model.ValueType == TeamAssessmentUserValueType.LeastImportant)
  72. {
  73. <a href="@Url.Action("Index", "Value", new { teamId = Model.TeamId, valueType = TeamAssessmentUserValueType.MostImportant})" class="btn btn-gray-medium">Previous</a>
  74. }
  75. <button onclick="saveSelectedValues()" id="@buttonNextId" class="btn btn-yellow-medium">Next</button>
  76. </div>
  77.  
  78. </div>
  79. </section>
  80.  
  81. <div class="popup" id="@valueInfoPopupId">
  82. <div class="overlay"></div>
  83. <div class="content">
  84. <div class="clearfix"></div>
  85. <h5 data-type="@valueInfoPopupTitleType"></h5>
  86. <br>
  87. <p data-type="@valueInfoPopupContentType"></p>
  88. <br>
  89. <br>
  90. <a onclick="closeValueInfoPopup()" class="close-popup-box close-popup-ex clickable">&#x2716;</a>
  91. </div>
  92. </div>
  93.  
  94. <script>
  95.  
  96. var draggableElement = $('[data-type="@draggableDataValue"]');
  97.  
  98. $(document).ready(function () {
  99. //initializeDrag();
  100. //initializeDrop();
  101. //checkThatAllValuesAreSelected();
  102.  
  103. $("#@selectedValuesListId, #@allValuesListId").sortable({
  104. connectWith: ".connectedSortable",
  105. receive: function (event, ui) {
  106. if (ui.item[0].dataset.value == '@dataValueNotSelected') {
  107. ui.item[0].dataset.value = '@dataValueSelected';
  108. ui.item[0].className = 'value-box-item value-box-item-yellow m-b-20';
  109. } else if (ui.item[0].dataset.value == '@dataValueSelected') {
  110. ui.item[0].dataset.value = '@dataValueNotSelected';
  111. ui.item[0].className = 'value-box-item value-box-item-blue';
  112. }
  113. },
  114.  
  115. stop: function (event, ui) {
  116. if ($("#@selectedValuesListId > div").length >= '@AppSettingsHelper.NumberOfSelectedValues') {
  117. $(ui.sender).sortable('cancel');
  118. $("#@buttonNextId").prop('disabled', false);
  119. } else {
  120. $("#@buttonNextId").prop('disabled', true);
  121. }
  122.  
  123. //checkThatAllValuesAreSelected();
  124. }
  125. }).disableSelection();
  126.  
  127. @*$("#@selectedValuesListId").on("sortreceive", function (event, ui) {
  128. if ($("#@selectedValuesListId > div").length > '@AppSettingsHelper.NumberOfSelectedValues') {
  129. $(ui.sender).sortable('cancel');
  130. }
  131. });*@
  132. });
  133.  
  134.  
  135.  
  136. function initializeDrag() {
  137. draggableElement.draggable({
  138. //helper: "clone",
  139. stop: function(event, ui) {
  140. if (ui.helper.data('dropped')) {
  141. checkThatAllValuesAreSelected();
  142. $(this).removeClass('value-box-item-blue').addClass('value-box-item-disabled');
  143. $(this).draggable("disable");
  144. $(this).data("type", "selected");
  145. }
  146. }
  147. });
  148. }
  149.  
  150. function initializeDrop() {
  151. $("#@selectedValuesListId").droppable({
  152. drop: function (event, ui) {
  153. /*var element = "<div class='value-box-item value-box-item-yellow m-b-20'><a onclick='removeSelectedValue(this)' class='close-btn'>&times;</a>" + $(ui.helper).html() + "</div>";
  154. $(this).append(element);*/
  155. ui.helper.data('dropped', true);
  156. }
  157. });
  158. }
  159.  
  160. function removeSelectedValue(element) {
  161. var selectedValue = $(element).closest("div");
  162. var valueId = selectedValue.find("input").data('id');
  163. var valueInAllValuesList = $("#@allValuesListId").find("[data-id='" + valueId + "']");
  164.  
  165. valueInAllValuesList.removeClass('value-box-item-disabled').addClass('value-box-item-blue');
  166. valueInAllValuesList.data("type", "not-selected");
  167. selectedValue.remove();
  168.  
  169. checkThatAllValuesAreSelected();
  170. }
  171.  
  172. function checkThatAllValuesAreSelected() {
  173. if ($("#@selectedValuesListId > div").length >= '@AppSettingsHelper.NumberOfSelectedValues') {
  174. draggableElement.draggable({ disabled: true });
  175. $("#@buttonNextId").prop('disabled', false);
  176. } else {
  177. for (var i = 0; i < draggableElement.length; i++) {
  178. if ($(draggableElement[i]).data("type") == "not-selected") {
  179. $(draggableElement[i]).draggable({ disabled: false });
  180. }
  181. }
  182. //draggableElement.draggable({ disabled: false });
  183. $("#@buttonNextId").prop('disabled', true);
  184. }
  185. }
  186.  
  187. function getSelectedValues() {
  188. var selectedValues = [];
  189. $("#@selectedValuesListId > div").each(function() {
  190. selectedValues.push($(this).find("input").data('id'));
  191. });
  192.  
  193. return selectedValues;
  194. }
  195.  
  196. function saveSelectedValues() {
  197. $.ajax({
  198. type: "POST",
  199. url: '@Url.Action("Save")',
  200. data: { teamId: '@Model.TeamId', type: '@Model.ValueType', selectedValues: getSelectedValues() },
  201. error: function (xhr, status, error) {
  202. window.location.href = '@Url.Action("Error500", "Errors")';
  203. },
  204. success: function (data) {
  205. window.location.href = data.redirectToAction;
  206. }
  207. });
  208. }
  209.  
  210. function showValueInfoPopup(title, content) {
  211. $('[data-type="@valueInfoPopupTitleType"]').text(title);
  212. $('[data-type="@valueInfoPopupContentType"]').text(content);
  213.  
  214. $("#@valueInfoPopupId").addClass('is-active');
  215. }
  216.  
  217. function closeValueInfoPopup() {
  218. $("#@valueInfoPopupId").removeClass('is-active');
  219. }
  220.  
  221. // close popup on ESC
  222. document.addEventListener('keyup',
  223. function(e) {
  224. if (e.which == 27) {
  225. $("#@valueInfoPopupId").removeClass('is-active');
  226. }
  227. });
  228.  
  229. </script>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement