github.com/billybanfield/evergreen@v0.0.0-20170525200750-eeee692790f7/service/templates/file_diff.html (about)

     1  {{define "base"}}
     2  <html>
     3    <script src="/static/js/jquery.js"></script>
     4    <style type="text/css">
     5      .addition{ background-color: #9f9; }
     6      .deletion{ background-color: #faa; }
     7      .filestat{ font-weight:bold; }
     8      .rawdiff{ display:none; }
     9    </style>
    10    <script type="text/javascript">
    11      var patches = {{.Data.Patches}};
    12      var filename = {{.FileName}};
    13      var patchNumber = {{.PatchNumber}};
    14  
    15      var handlePatchNumber = function(i) {
    16        var outputBlock = $('<code></code>');
    17        $('#output').append($('<pre></pre>').append(outputBlock));
    18  
    19        var found = false;
    20        var lines = patches[i].PatchSet.Patch.split('\n');
    21        var prevClass = undefined;
    22        var prevElement = undefined;
    23  
    24        for (var j = 0; j < lines.length; ++j) {
    25          var line = lines[j];
    26  
    27          var isNewFile = (line.indexOf('diff --git') === 0);
    28  
    29          if (isNewFile && found) {
    30            break;
    31          }
    32  
    33          if (filename && isNewFile && line.indexOf(filename) != -1) {
    34            found = true;
    35          }
    36  
    37          if (line.substring(0, 3) == "+++") {
    38            classname = "filestat";
    39          } else if (line.substring(0, 3) == "---") {
    40            classname = "filestat";
    41          } else if (line[0] == "+") {
    42            classname = "addition";
    43          } else if (line[0] == '-') {
    44            classname = 'deletion';
    45          } else {
    46            classname = undefined;
    47          }
    48  
    49          if (classname == prevClass && prevElement) {
    50            var x = $(prevElement).text(
    51              $(prevElement).text() + line + "\n");
    52          } else {
    53            if (found || !filename) {
    54              var newSpan = $('<span></span>').text(lines[j] + "\n");
    55              if (classname) {
    56                newSpan.addClass(classname);
    57              }
    58              outputBlock.append(newSpan);
    59              prevElement = newSpan;
    60              prevClass = classname;
    61            }
    62          }
    63        }
    64      };
    65  
    66      $(document).ready(function() {
    67        if (patchNumber || patchNumber === 0) {
    68          handlePatchNumber(patchNumber);
    69        } else {
    70          for (var i = 0; i < patches.length; ++i) {
    71            handlePatchNumber(i);
    72          }
    73        }
    74      });
    75    </script>
    76  
    77    <body>
    78      <div id="filename">{{.FileName}}</div>
    79      <div id="output">
    80        
    81      </div>
    82    </body>
    83  
    84  </html>
    85  {{end}}