Advertisement
Magicbjorn

Untitled

Aug 10th, 2017
337
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var requirements = [];
  2.  
  3. var sortAsc = true;
  4. var sortId = "";
  5.  
  6. Template.requirementsManagement.events({
  7.     'click .projectNameButton': function(event, template) {
  8.         selectedprojectId = event.target.id;
  9.  
  10.         $('#projectSelectHeader').hide();
  11.         $('#requirementSelectHeader').show();
  12.  
  13.         $("#selectProject").slideToggle(500);
  14.         $("#selectRequirement").slideToggle(500);
  15.  
  16.         quarantines = this.quarantines;
  17.  
  18.         requirements = [];
  19.         quarantinesOfSegments = [];
  20.  
  21.         quarantines.forEach(function(quarantineId) {
  22.             var quarantine = Quarantines.findOne(quarantineId);
  23.  
  24.             if (quarantinesOfSegments.indexOf(quarantineId === -1)) {
  25.                 quarantinesOfSegments.push(quarantineId);
  26.             }
  27.         });
  28.  
  29.         Projects.findOne(selectedprojectId).requirements.forEach(function(requirement) {
  30.             var foundIndex = -1;
  31.  
  32.             for (var i = 0; i < requirements.length; i++) {
  33.                 if (requirements[i].ID == requirement.ID && requirement.Version != "V1") {
  34.                     foundIndex = i;
  35.                 }
  36.             }
  37.  
  38.             if (foundIndex > -1) {
  39.                 requirements.splice(foundIndex, 1);
  40.             }
  41.  
  42.             requirements.push(requirement);
  43.         });
  44.  
  45.         requirements.forEach(function(requirement) {
  46.             quarantinesOfSegments.forEach(function(quarantineId) {
  47.                 var segmentData = Segments.find({
  48.                     quarantineId: quarantineId
  49.                 }).fetch()[0].data.message;
  50.  
  51.                 segmentData.segmentedText.forEach(function(segmentedText) {
  52.                     if (segmentedText.textId == requirement.ID) {
  53.                         requirement.segment = segmentedText.bestSegmentFit
  54.                     }
  55.  
  56.                     if (segments.indexOf(segmentedText.bestSegmentFit) == -1) {
  57.                         segments.push(segmentedText.bestSegmentFit);
  58.                     }
  59.                 });
  60.             });
  61.         });
  62.  
  63.         CreateTable("requirementsTable", "tableHeader", "tableBody", requirements, true);
  64.     },
  65.     'click .reqManTHeaderTH': function(event, template) {
  66.         var requirementsToUse = requirements;
  67.  
  68.         if (sortId != event.target.id) {
  69.             sortAsc = true;
  70.             sortId = event.target.id;
  71.         }
  72.  
  73.         if (!sortAsc) {
  74.             requirements.sort((a, b) => {
  75.                 const v1 = (sortAsc ? a : b)[sortId];
  76.                 const v2 = (sortAsc ? b : a)[sortId];
  77.                 return v1 < v2 ? -1 : (v1 > v2 ? 1 : 0);
  78.             });
  79.             // requirements = _.sortBy(requirements, event.target.id).reverse();
  80.         } else {
  81.             requirements = _.sortBy(requirements, sortId);
  82.         }
  83.  
  84.         sortAsc = !sortAsc;
  85.  
  86.         CreateTable("requirementsTable", "tableHeader", "tableBody", requirements, true);
  87.     }
  88. }
  89.  
  90. CreateTable = function(table, header, body, requirements, clickable) {
  91.     $('#' + header).empty();
  92.     $('#' + body).empty();
  93.  
  94.     CreateTableHeader(header, requirements, false);
  95.  
  96.     if (clickable) {
  97.         CreateTableBodyReqs(body, requirements);
  98.     } else {
  99.         CreateTableBody(body, requirements);
  100.     }
  101.  
  102.     var table = $('#' + table);
  103.  
  104.     table.floatThead({
  105.         scrollContainer: function(table) {
  106.             return table.closest('.requirementsManagementTable');
  107.         }
  108.     });
  109. }
  110.  
  111. CreateTableHeader = function(header, result, importingFile) {
  112.     if (result.length > 0) {
  113.         var array = Object.keys(result[0]);
  114.  
  115.         var columnHeaders = [];
  116.  
  117.         array.forEach(function(columnheader) {
  118.             if (importingFile) {
  119.                 var checkNotImport = columnheader.substring(0, columnheader.length - 1);
  120.                 if (checkNotImport === "Do not import") {
  121.                     if (columnHeaders.indexOf(checkNotImport) == -1) {
  122.                         columnHeaders.push(checkNotImport);
  123.                     }
  124.                 } else {
  125.                     columnHeaders.push(columnheader);
  126.                 }
  127.             } else {
  128.                 columnHeaders.push(columnheader);
  129.             }
  130.         });
  131.  
  132.         if (importingFile) {
  133.             for (var i = 0; i < array.length; i++) {
  134.                 var line = "";
  135.  
  136.                 line = "<th><select class=\"form-control\" id=\"sel" + i + "\">";
  137.  
  138.                 for (var j = 0; j < columnHeaders.length; j++) {
  139.                     line += "<option id=\"opt" + j + "\">" + columnHeaders[j] + "</option>";
  140.                 }
  141.  
  142.                 line += "</select></th>";
  143.  
  144.                 $('#' + header).append(line);
  145.             }
  146.  
  147.             var tableHeaders = $('#' + header).children();
  148.  
  149.             for (var i = 0; i < tableHeaders.length; i++) {
  150.                 if (columnHeaders[i]) {
  151.                     document.getElementById('sel' + i).selectedIndex = i;
  152.                 } else {
  153.                     document.getElementById('sel' + i).selectedIndex = columnHeaders.length - 1;
  154.                 }
  155.             }
  156.         } else {
  157.             for (var j = 0; j < columnHeaders.length; j++) {
  158.                 line += "<th id=\"" + columnHeaders[j] + "\" class=\"reqManTHeaderTH\">";
  159.  
  160.                 line += "<p id=\"" + columnHeaders[j] + "\" class=\"reqManTHeadText\">" + columnHeaders[j] + "</p><span id=\"" + columnHeaders[j] + "\" class=\"glyphicon glyphicon-arrow-down reqManTHeadGlyph\"></span>";
  161.  
  162.                 line += "</th>";
  163.             }
  164.  
  165.             $('#' + header).append(line);
  166.         }
  167.     }
  168. }
  169.  
  170. CreateTableBody = function(body, result) {
  171.     if (result.length > 0) {
  172.         var array = Object.keys(result[0]);
  173.  
  174.         for (var i = 0; i < result.length; i++) {
  175.             var line = '<tr>';
  176.  
  177.             for (var j = 0; j < array.length; j++) {
  178.                 var key = array[j];
  179.  
  180.                 line += "<td class=\"tablecolumn\">" + result[i][key] + "</td>";
  181.             }
  182.             line += "</tr>"
  183.  
  184.             $('#' + body).append(line);
  185.         }
  186.     }
  187. }
  188.  
  189. CreateTableBodyReqs = function(body, result) {
  190.     if (result.length > 0) {
  191.         var array = Object.keys(result[0]);
  192.  
  193.         for (var i = 0; i < result.length; i++) {
  194.             var line = "<tr class=\"tableRowReqs\">";
  195.  
  196.             for (var j = 0; j < array.length; j++) {
  197.                 var key = array[j];
  198.  
  199.                 line += "<td id=\"" + i + "\" class=\"tablecolumnReqs\">" + result[i][key] + "</td>";
  200.             }
  201.             line += "</tr>";
  202.  
  203.             $('#' + body).append(line);
  204.         }
  205.     }
  206. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement