git-object-browser 0.0.6 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (79) hide show
  1. data/README.md +17 -0
  2. data/htdocs/{css → common/css}/angular-ui.min.css +0 -0
  3. data/htdocs/{css → common/css}/bootstrap-responsive.css +0 -0
  4. data/htdocs/{css → common/css}/bootstrap-responsive.min.css +0 -0
  5. data/htdocs/{css → common/css}/bootstrap.css +0 -0
  6. data/htdocs/{css → common/css}/bootstrap.min.css +0 -0
  7. data/htdocs/{css → common/css}/font-awesome-ie7.css +0 -0
  8. data/htdocs/{css → common/css}/font-awesome.css +0 -0
  9. data/htdocs/{css → common/css}/main.css +0 -0
  10. data/htdocs/{font → common/font}/fontawesome-webfont.eot +0 -0
  11. data/htdocs/{font → common/font}/fontawesome-webfont.svg +0 -0
  12. data/htdocs/{font → common/font}/fontawesome-webfont.ttf +0 -0
  13. data/htdocs/{font → common/font}/fontawesome-webfont.woff +0 -0
  14. data/htdocs/{img → common/img}/glyphicons-halflings-white.png +0 -0
  15. data/htdocs/{img → common/img}/glyphicons-halflings.png +0 -0
  16. data/htdocs/common/js/main.js +495 -0
  17. data/htdocs/{js → common/js}/vendor/angular-bootstrap-prettify.min.js +0 -0
  18. data/htdocs/{js → common/js}/vendor/angular-bootstrap.min.js +0 -0
  19. data/htdocs/{js → common/js}/vendor/angular-cookies.min.js +0 -0
  20. data/htdocs/{js → common/js}/vendor/angular-loader.min.js +0 -0
  21. data/htdocs/{js → common/js}/vendor/angular-resource.min.js +0 -0
  22. data/htdocs/{js → common/js}/vendor/angular-sanitize.min.js +0 -0
  23. data/htdocs/{js → common/js}/vendor/angular-ui-ieshiv.min.js +0 -0
  24. data/htdocs/{js → common/js}/vendor/angular-ui.min.js +0 -0
  25. data/htdocs/{js → common/js}/vendor/angular.js +0 -0
  26. data/htdocs/{js → common/js}/vendor/angular.min.js +0 -0
  27. data/htdocs/{js → common/js}/vendor/bootstrap.js +0 -0
  28. data/htdocs/{js → common/js}/vendor/bootstrap.min.js +0 -0
  29. data/htdocs/{js → common/js}/vendor/html5shiv.js +0 -0
  30. data/htdocs/{js → common/js}/vendor/jquery-1.8.2.min.js +0 -0
  31. data/htdocs/{templates → common/templates}/directory.html +2 -2
  32. data/htdocs/common/templates/error.html +6 -0
  33. data/htdocs/{templates → common/templates}/file.html +0 -0
  34. data/htdocs/{templates → common/templates}/git.html +0 -0
  35. data/htdocs/{templates → common/templates}/index.html +1 -1
  36. data/htdocs/{templates → common/templates}/index_entry.html +0 -0
  37. data/htdocs/{templates → common/templates}/info_refs.html +2 -2
  38. data/htdocs/{templates → common/templates}/loading.html +0 -0
  39. data/htdocs/{templates → common/templates}/notfound.html +1 -2
  40. data/htdocs/{templates → common/templates}/object.html +1 -1
  41. data/htdocs/{templates → common/templates}/objects.html +3 -3
  42. data/htdocs/{templates → common/templates}/pack_file.html +1 -1
  43. data/htdocs/common/templates/pack_index.html +39 -0
  44. data/htdocs/{templates → common/templates}/packed_object.html +4 -4
  45. data/htdocs/{templates → common/templates}/packed_refs.html +2 -2
  46. data/htdocs/{templates → common/templates}/ref.html +0 -0
  47. data/htdocs/common/templates/reflog.html +29 -0
  48. data/htdocs/config.js +6 -0
  49. data/htdocs/default.js +7 -0
  50. data/htdocs/index.html +52 -20
  51. data/lib/git-object-browser.rb +12 -4
  52. data/lib/git-object-browser/dumper/directories_dumper.rb +42 -0
  53. data/lib/git-object-browser/dumper/index_dumper.rb +20 -7
  54. data/lib/git-object-browser/dumper/info_refs_dumper.rb +37 -0
  55. data/lib/git-object-browser/dumper/main.rb +188 -81
  56. data/lib/git-object-browser/dumper/objects_dumper.rb +46 -0
  57. data/lib/git-object-browser/dumper/pack_indexes_dumper.rb +85 -0
  58. data/lib/git-object-browser/dumper/packed_objects_dumper.rb +36 -0
  59. data/lib/git-object-browser/dumper/packed_refs_dumper.rb +37 -0
  60. data/lib/git-object-browser/dumper/plain_files_dumper.rb +74 -0
  61. data/lib/git-object-browser/dumper/refs_dumper.rb +46 -0
  62. data/lib/git-object-browser/main.rb +22 -6
  63. data/lib/git-object-browser/models/directory.rb +5 -3
  64. data/lib/git-object-browser/models/git_date.rb +26 -0
  65. data/lib/git-object-browser/models/git_object.rb +1 -1
  66. data/lib/git-object-browser/models/pack_file.rb +1 -1
  67. data/lib/git-object-browser/models/pack_index.rb +139 -25
  68. data/lib/git-object-browser/models/packed_object.rb +1 -1
  69. data/lib/git-object-browser/models/reflog.rb +54 -0
  70. data/lib/git-object-browser/models/wrapped_object.rb +40 -0
  71. data/lib/git-object-browser/server/git_servlet.rb +130 -100
  72. data/lib/git-object-browser/server/main.rb +1 -1
  73. data/lib/git-object-browser/version.rb +1 -1
  74. metadata +62 -50
  75. data/htdocs/js/main.js +0 -285
  76. data/htdocs/templates/pack_index.html +0 -37
  77. data/lib/git-object-browser/dumper/object_dumper.rb +0 -20
  78. data/lib/git-object-browser/dumper/pack_index_dumper.rb +0 -21
  79. data/lib/git-object-browser/dumper/packed_object_dumper.rb +0 -19
@@ -1,3 +1,3 @@
1
1
  module GitObjectBrowser
2
- VERSION = "0.0.6"
2
+ VERSION = "0.0.7"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: git-object-browser
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-06-13 00:00:00.000000000 Z
12
+ date: 2013-08-28 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: Browse git raw objects.
15
15
  email:
@@ -28,60 +28,70 @@ files:
28
28
  - Rakefile
29
29
  - bin/git-object-browser
30
30
  - git-object-browser.gemspec
31
- - htdocs/css/angular-ui.min.css
32
- - htdocs/css/bootstrap-responsive.css
33
- - htdocs/css/bootstrap-responsive.min.css
34
- - htdocs/css/bootstrap.css
35
- - htdocs/css/bootstrap.min.css
36
- - htdocs/css/font-awesome-ie7.css
37
- - htdocs/css/font-awesome.css
38
- - htdocs/css/main.css
39
- - htdocs/font/fontawesome-webfont.eot
40
- - htdocs/font/fontawesome-webfont.svg
41
- - htdocs/font/fontawesome-webfont.ttf
42
- - htdocs/font/fontawesome-webfont.woff
43
- - htdocs/img/glyphicons-halflings-white.png
44
- - htdocs/img/glyphicons-halflings.png
31
+ - htdocs/common/css/angular-ui.min.css
32
+ - htdocs/common/css/bootstrap-responsive.css
33
+ - htdocs/common/css/bootstrap-responsive.min.css
34
+ - htdocs/common/css/bootstrap.css
35
+ - htdocs/common/css/bootstrap.min.css
36
+ - htdocs/common/css/font-awesome-ie7.css
37
+ - htdocs/common/css/font-awesome.css
38
+ - htdocs/common/css/main.css
39
+ - htdocs/common/font/fontawesome-webfont.eot
40
+ - htdocs/common/font/fontawesome-webfont.svg
41
+ - htdocs/common/font/fontawesome-webfont.ttf
42
+ - htdocs/common/font/fontawesome-webfont.woff
43
+ - htdocs/common/img/glyphicons-halflings-white.png
44
+ - htdocs/common/img/glyphicons-halflings.png
45
+ - htdocs/common/js/main.js
46
+ - htdocs/common/js/vendor/angular-bootstrap-prettify.min.js
47
+ - htdocs/common/js/vendor/angular-bootstrap.min.js
48
+ - htdocs/common/js/vendor/angular-cookies.min.js
49
+ - htdocs/common/js/vendor/angular-loader.min.js
50
+ - htdocs/common/js/vendor/angular-resource.min.js
51
+ - htdocs/common/js/vendor/angular-sanitize.min.js
52
+ - htdocs/common/js/vendor/angular-ui-ieshiv.min.js
53
+ - htdocs/common/js/vendor/angular-ui.min.js
54
+ - htdocs/common/js/vendor/angular.js
55
+ - htdocs/common/js/vendor/angular.min.js
56
+ - htdocs/common/js/vendor/bootstrap.js
57
+ - htdocs/common/js/vendor/bootstrap.min.js
58
+ - htdocs/common/js/vendor/html5shiv.js
59
+ - htdocs/common/js/vendor/jquery-1.8.2.min.js
60
+ - htdocs/common/templates/directory.html
61
+ - htdocs/common/templates/error.html
62
+ - htdocs/common/templates/file.html
63
+ - htdocs/common/templates/git.html
64
+ - htdocs/common/templates/index.html
65
+ - htdocs/common/templates/index_entry.html
66
+ - htdocs/common/templates/info_refs.html
67
+ - htdocs/common/templates/loading.html
68
+ - htdocs/common/templates/notfound.html
69
+ - htdocs/common/templates/object.html
70
+ - htdocs/common/templates/objects.html
71
+ - htdocs/common/templates/pack_file.html
72
+ - htdocs/common/templates/pack_index.html
73
+ - htdocs/common/templates/packed_object.html
74
+ - htdocs/common/templates/packed_refs.html
75
+ - htdocs/common/templates/ref.html
76
+ - htdocs/common/templates/reflog.html
77
+ - htdocs/config.js
78
+ - htdocs/default.js
45
79
  - htdocs/index.html
46
- - htdocs/js/main.js
47
- - htdocs/js/vendor/angular-bootstrap-prettify.min.js
48
- - htdocs/js/vendor/angular-bootstrap.min.js
49
- - htdocs/js/vendor/angular-cookies.min.js
50
- - htdocs/js/vendor/angular-loader.min.js
51
- - htdocs/js/vendor/angular-resource.min.js
52
- - htdocs/js/vendor/angular-sanitize.min.js
53
- - htdocs/js/vendor/angular-ui-ieshiv.min.js
54
- - htdocs/js/vendor/angular-ui.min.js
55
- - htdocs/js/vendor/angular.js
56
- - htdocs/js/vendor/angular.min.js
57
- - htdocs/js/vendor/bootstrap.js
58
- - htdocs/js/vendor/bootstrap.min.js
59
- - htdocs/js/vendor/html5shiv.js
60
- - htdocs/js/vendor/jquery-1.8.2.min.js
61
- - htdocs/templates/directory.html
62
- - htdocs/templates/file.html
63
- - htdocs/templates/git.html
64
- - htdocs/templates/index.html
65
- - htdocs/templates/index_entry.html
66
- - htdocs/templates/info_refs.html
67
- - htdocs/templates/loading.html
68
- - htdocs/templates/notfound.html
69
- - htdocs/templates/object.html
70
- - htdocs/templates/objects.html
71
- - htdocs/templates/pack_file.html
72
- - htdocs/templates/pack_index.html
73
- - htdocs/templates/packed_object.html
74
- - htdocs/templates/packed_refs.html
75
- - htdocs/templates/ref.html
76
80
  - lib/git-object-browser.rb
81
+ - lib/git-object-browser/dumper/directories_dumper.rb
77
82
  - lib/git-object-browser/dumper/index_dumper.rb
83
+ - lib/git-object-browser/dumper/info_refs_dumper.rb
78
84
  - lib/git-object-browser/dumper/main.rb
79
- - lib/git-object-browser/dumper/object_dumper.rb
80
- - lib/git-object-browser/dumper/pack_index_dumper.rb
81
- - lib/git-object-browser/dumper/packed_object_dumper.rb
85
+ - lib/git-object-browser/dumper/objects_dumper.rb
86
+ - lib/git-object-browser/dumper/pack_indexes_dumper.rb
87
+ - lib/git-object-browser/dumper/packed_objects_dumper.rb
88
+ - lib/git-object-browser/dumper/packed_refs_dumper.rb
89
+ - lib/git-object-browser/dumper/plain_files_dumper.rb
90
+ - lib/git-object-browser/dumper/refs_dumper.rb
82
91
  - lib/git-object-browser/main.rb
83
92
  - lib/git-object-browser/models/bindata.rb
84
93
  - lib/git-object-browser/models/directory.rb
94
+ - lib/git-object-browser/models/git_date.rb
85
95
  - lib/git-object-browser/models/git_object.rb
86
96
  - lib/git-object-browser/models/index.rb
87
97
  - lib/git-object-browser/models/index_entry.rb
@@ -94,6 +104,8 @@ files:
94
104
  - lib/git-object-browser/models/packed_refs.rb
95
105
  - lib/git-object-browser/models/plain_file.rb
96
106
  - lib/git-object-browser/models/ref.rb
107
+ - lib/git-object-browser/models/reflog.rb
108
+ - lib/git-object-browser/models/wrapped_object.rb
97
109
  - lib/git-object-browser/server/git_servlet.rb
98
110
  - lib/git-object-browser/server/main.rb
99
111
  - lib/git-object-browser/version.rb
@@ -187,7 +199,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
187
199
  version: '0'
188
200
  segments:
189
201
  - 0
190
- hash: 144653815734182267
202
+ hash: 803331941906399481
191
203
  requirements: []
192
204
  rubyforge_project:
193
205
  rubygems_version: 1.8.24
data/htdocs/js/main.js DELETED
@@ -1,285 +0,0 @@
1
-
2
- angular.module('GitServices', ['ngResource'])
3
- .factory('GitResource', function($resource) {
4
- var resource = $resource('/.git/:path');
5
- return resource;
6
- })
7
- .factory('PackedObjectResource', function($resource) {
8
- var resource = $resource('/.git/:path?offset=:offset');
9
- return resource;
10
- });
11
-
12
- angular.module('GitObjectBrowser', ['GitServices'])
13
- .config(function($routeProvider) {
14
- $routeProvider = angular.extend($routeProvider, {
15
-
16
- // AngularJS doesn't support regular expressions in routes.
17
- // http://stackoverflow.com/questions/12685085/angularjs-route-how-to-match-star-as-a-path
18
- 'whenPath': function(path, depth, route) {
19
- for (var i = 1; i <= depth; i++) {
20
- path += '/:path' + i;
21
- this.when(path, route);
22
- }
23
- return this;
24
- }
25
- });
26
-
27
- $routeProvider.
28
- whenPath('/.git', 10, {controller:GitCtrl, templateUrl:'templates/git.html'}).
29
- otherwise({redirectTo:'/.git/'});
30
- })
31
-
32
- .directive('entryIcon', function($parse) {
33
- return function(scope, element, attrs) {
34
- var icons = {
35
- 'directory': 'icon-folder-open',
36
- 'ref': 'icon-map-marker',
37
- 'info_refs': 'icon-map-marker',
38
- 'packed_refs': 'icon-map-marker',
39
- 'index': 'icon-list',
40
- 'file': 'icon-file',
41
- 'object': 'icon-comment',
42
- 'blob': 'icon-file',
43
- 'tree': 'icon-folder-open',
44
- 'commit': 'icon-ok',
45
- 'tag': 'icon-tag',
46
- 'ofs_delta': 'icon-arrow-up',
47
- 'ref_delta': 'icon-arrow-down'
48
- };
49
-
50
- var entryType = ($parse(attrs.entryIcon))(scope);
51
- element.addClass(icons[entryType]);
52
- }
53
- })
54
-
55
- .directive('modeIcon', function($parse) {
56
- return function(scope, element, attrs) {
57
- var mode = ($parse(attrs.modeIcon))(scope);
58
- var iconClass;
59
- if (120000 <= mode) {
60
- iconClass = 'icon-share-alt';
61
- } else if (100000 <= mode) {
62
- iconClass = 'icon-file';
63
- } else {
64
- iconClass = 'icon-folder-open';
65
- }
66
- element.addClass(iconClass);
67
- }
68
- })
69
-
70
- .directive('refHref', function($parse) {
71
- return function(scope, element, attrs) {
72
- var entry = ($parse(attrs.refHref))(scope);
73
- var href = "";
74
- var sha1 = null;
75
-
76
- if (typeof(entry) == 'string') {
77
- sha1 = entry;
78
- } else if (entry && entry.sha1) {
79
- sha1 = entry.sha1;
80
- }
81
-
82
- if (sha1 !== null) {
83
- href = '#/.git/objects/' + sha1.substr(0, 2) + '/' + sha1.substr(2);
84
- } else if (entry && entry.ref) {
85
- href = '#/.git/' + entry.ref;
86
- }
87
-
88
- element.attr('href', href);
89
- }
90
- })
91
-
92
- .filter('unixtime', function($filter) {
93
- return function(input, format) {
94
- return ($filter('date'))(input * 1000, format);
95
- }
96
- });
97
-
98
- function GitCtrl($scope, $location, $routeParams, GitResource, PackedObjectResource) {
99
- $scope.template = 'templates/loading.html';
100
- var path = '';
101
- for (var i = 1; i <= 10; i++) {
102
- if ($routeParams['path' + i]) {
103
- if (i > 1) path += '/';
104
- path += $routeParams['path' + i];
105
- }
106
- }
107
-
108
- $scope.objectTable = function(entries) {
109
- var rows = [];
110
- var hash = {};
111
-
112
- angular.forEach(entries, function(entry) {
113
- hash[entry.basename] = entry;
114
- })
115
-
116
- var hex = ['0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'];
117
- for (var i = 0; i < 16; i++) {
118
- var cols = [];
119
- for (var j = 0; j < 16; j++) {
120
- if (hash[hex[i] + hex[j]]) {
121
- cols[j] = hash[hex[i] + hex[j]];
122
- } else {
123
- cols[j] = {'basename': hex[i] + hex[j], 'type': 'empty'};
124
- }
125
- }
126
- rows[i] = cols;
127
- }
128
- return rows;
129
- }
130
-
131
- $scope.findIndexEntry = function(sha1) {
132
- var entries = $scope.object.entries;
133
- var entry = null;
134
- angular.forEach(entries, function(value) {
135
- if (value.sha1 == sha1) {
136
- entry = value;
137
- return;
138
- }
139
- });
140
- return entry;
141
- };
142
-
143
- $scope.indexEntryKeys = function(version) {
144
- var keys = [
145
- 'ctime',
146
- 'cnano',
147
- 'mtime',
148
- 'mnano',
149
- 'dev',
150
- 'ino',
151
- 'object_type',
152
- 'unix_permission',
153
- 'uid',
154
- 'gid',
155
- 'size',
156
- 'sha1',
157
- 'assume_valid_flag',
158
- 'extended_flag',
159
- 'stage',
160
- 'name_length'
161
- ]
162
- if (version > 2) {
163
- keys = keys.concat([
164
- 'skip_worktree',
165
- 'intent_to_add',
166
- ]);
167
- }
168
- keys.push('path')
169
-
170
- return keys;
171
- };
172
-
173
- $scope.resourceLoaded = function(json) {
174
- $scope.workingdir = json.workingdir;
175
- $scope.root = json.root;
176
- if (json.path == "") {
177
- $scope.path = ".git";
178
- } else {
179
- $scope.path = ".git/" + json.path;
180
- }
181
- $scope.object = json.object;
182
- $scope.keys = $scope.indexEntryKeys($scope.object.version);
183
- var template;
184
- if (json.path == "objects") {
185
- template = "objects";
186
- $scope.objectTable = $scope.objectTable($scope.object.entries);
187
- } else if (json.type == "index" && $routeParams.sha1) {
188
- template = "index_entry";
189
- $scope.entry = $scope.findIndexEntry($routeParams.sha1);
190
- } else if (json.type == "packed_refs" && $routeParams.ref) {
191
- template = json.type;
192
- var entries = [];
193
- angular.forEach($scope.object.entries, function(entry) {
194
- if (entry.ref == $routeParams.ref) {
195
- entries.push(entry);
196
- $scope.limited = true;
197
- }
198
- });
199
- $scope.object.entries = entries;
200
- } else if (json.type == "packed_object") {
201
- template = json.type;
202
- $scope.unpacked = json.unpacked;
203
- } else {
204
- template = json.type;
205
- }
206
-
207
- $scope.template = 'templates/' + template + '.html';
208
- };
209
-
210
- $scope.resourceError = function(path) {
211
- return function(response) {
212
- if (response.status == 404) {
213
- $scope.resourceNotFound(path);
214
- } else {
215
- $scope.template = 'templates/error.html';
216
- }
217
- };
218
- };
219
-
220
- $scope.resourceNotFound = function(path) {
221
- $scope.path = path;
222
- if (path.indexOf('refs/') == 0) {
223
- $location.url('/.git/packed-refs?ref=' + path);
224
- } else {
225
- $scope.template = 'templates/notfound.html';
226
- }
227
- };
228
-
229
- if (path.match(/^objects\/pack\/pack-[0-9a-f]{40}\.pack$/) && $routeParams.offset) {
230
- PackedObjectResource.get({path: path, offset:$routeParams.offset}, $scope.resourceLoaded, $scope.resourceError(path));
231
- } else {
232
- GitResource.get({path: path}, $scope.resourceLoaded, $scope.resourceError(path));
233
- }
234
-
235
- }
236
-
237
- function PackFileCtrl($scope, $location, $routeParams) {
238
- $scope.indexUrl = $scope.path.replace(/.pack$/, '.idx');
239
- }
240
-
241
- function PackIndexCtrl($scope, $location, $routeParams) {
242
-
243
- $scope.orderByOffset = function() {
244
- $scope.object.entries = $scope.object.entries.sort(function(a, b) {
245
- var x = a.offset - b.offset;
246
- if (x == 0) {
247
- return a.index - b.index;
248
- }
249
- return x;
250
- });
251
- return false;
252
- }
253
-
254
- $scope.orderByIndex = function() {
255
- $scope.object.entries = $scope.object.entries.sort(function(a, b) {
256
- return a.index - b.index;
257
- })
258
- return false;
259
- }
260
-
261
- $scope.packUrl = $scope.path.replace(/.idx$/, '.pack');
262
-
263
- angular.forEach($scope.object.entries, function(entry, i) {
264
- entry.index = i;
265
- });
266
-
267
- angular.forEach($scope.object.fanout, function(fanout, i) {
268
- function toHex(num) {
269
- var hex = num.toString(16);
270
- return hex.length < 2 ? '0' + hex : hex;
271
- }
272
-
273
- if ($scope.object.entries[fanout]) {
274
- var entry = $scope.object.entries[fanout];
275
- if (! entry.fanoutMin) {
276
- entry.fanoutMin = toHex(i);
277
- } else {
278
- entry.fanoutMax = toHex(i);
279
- }
280
- } else {
281
- $scope.object.entries[fanout] = { fanoutMin: toHex(i) };
282
- }
283
- });
284
-
285
- }
@@ -1,37 +0,0 @@
1
- <article>
2
- <h1 style="font-size:1.8em;"><i data-entry-icon="'index'"></i> {{path}} <small>Pack Index</small></h1>
3
-
4
- <table class="table table-striped" data-ng-controller="PackIndexCtrl">
5
- <thead>
6
- <tr>
7
- <th><a href="" data-ng-click="orderByIndex()">#</a></th>
8
- <th>fanout</th>
9
- <th>sha1</th>
10
- <th>crc32</th>
11
- <th><a href="" data-ng-click="orderByOffset()">offset</a></th>
12
- <th>type</th>
13
- <th>size</th>
14
- </tr>
15
- </thead>
16
- <tbody>
17
- <tr data-ng-repeat="(i, entry) in object.entries">
18
- <td>{{entry.index}}</td>
19
-
20
- <td>
21
- <span data-ng-show="entry.fanoutMax"><i class="icon-arrow-up"></i> {{entry.fanoutMin}} - {{entry.fanoutMax}}</span>
22
- <span data-ng-show="entry.fanoutMin != null && ! entry.fanoutMax"><i class="icon-arrow-up"></i> {{entry.fanoutMin}}</span>
23
- </td>
24
- <td>{{entry.sha1}}</td>
25
- <td>{{entry.crc32}}</td>
26
- <td><a href="#/{{packUrl}}?offset={{entry.offset}}">{{entry.offset}}</a></td>
27
- <td><i data-entry-icon="entry.type"></i> {{entry.type}}
28
- <span data-ng-show="entry.base_offset"><a href="#/{{packUrl}}?offset={{entry.base_offset}}">{{entry.base_offset}}</a></span>
29
- <span data-ng-show="entry.base_sha1"><a data-ref-href="entry.base_sha1">{{entry.base_sha1.substr(0,6)}}</a></span>
30
- </td>
31
- <td>{{entry.size}}</td>
32
- </tr>
33
- </tbody>
34
- </table>
35
-
36
- </article>
37
-