summaryrefslogtreecommitdiff
path: root/docsite/js/ansible/application.js
blob: 5e9f81ba526336bcffbf68824bfbba6e5435f032 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
angular.module('ansibleApp', []).filter('moduleVersion', function() {
  return function(modules, version) {

    var parseVersionString = function (str) {
        if (typeof(str) != 'string') { return false; }
        var x = str.split('.');
        // parse from string or default to 0 if can't parse
        var maj = parseInt(x[0]) || 0;
        var min = parseInt(x[1]) || 0;
        var pat = parseInt(x[2]) || 0;
        return {
            major: maj,
            minor: min,
            patch: pat
        }
    }

    var vMinMet = function(vmin, vcurrent) {
        minimum = parseVersionString(vmin);
        running = parseVersionString(vcurrent);
        if (running.major != minimum.major)
            return (running.major > minimum.major);
        else {
            if (running.minor != minimum.minor)
                return (running.minor > minimum.minor);
            else {
                if (running.patch != minimum.patch)
                    return (running.patch > minimum.patch);
                else
                    return true;
            }
        }
    };

    var result = [];
    if (!version) {
      return modules;
    }
    for (var i = 0; i < modules.length; i++) {
      if (vMinMet(modules[i].version_added, version)) {
        result[result.length] = modules[i];
      }
    }

    return result;
  };
}).filter('uniqueVersion', function() {
  return function(modules) {
    var result = [];
    var inArray = function (needle, haystack) {
      var length = haystack.length;
      for(var i = 0; i < length; i++) {
        if(haystack[i] == needle) return true;
      }
      return false;
    }

    var parseVersionString = function (str) {
        if (typeof(str) != 'string') { return false; }
        var x = str.split('.');
        // parse from string or default to 0 if can't parse
        var maj = parseInt(x[0]) || 0;
        var min = parseInt(x[1]) || 0;
        var pat = parseInt(x[2]) || 0;
        return {
            major: maj,
            minor: min,
            patch: pat
        }
    }

    for (var i = 0; i < modules.length; i++) {
      if (!inArray(modules[i].version_added, result)) {
        // Some module do not define version
        if (modules[i].version_added) {
          result[result.length] = "" + modules[i].version_added;
        }
      }
    }

    result.sort(
      function (a, b) {
        ao = parseVersionString(a);
        bo = parseVersionString(b);
        if (ao.major == bo.major) {
          if (ao.minor == bo.minor) {
            if (ao.patch == bo.patch) {
              return 0;
            }
            else {
              return (ao.patch > bo.patch) ? 1 : -1;
            }
          }
          else {
            return (ao.minor > bo.minor) ? 1 : -1;
          }
        }
        else {
          return (ao.major > bo.major) ? 1 : -1;
        }
    });

    return result;
  };
});