git-visualiser 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. checksums.yaml +15 -0
  2. data/bin/git_vis +19 -0
  3. data/lib/application/application.rb +82 -0
  4. data/lib/application/coffee_engine.rb +20 -0
  5. data/lib/application/images/ajax-loader.gif +0 -0
  6. data/lib/application/javascripts/branch_graph.coffee +424 -0
  7. data/lib/application/javascripts/commit_graph.coffee +442 -0
  8. data/lib/application/javascripts/common.coffee +50 -0
  9. data/lib/application/javascripts/d3.min.js +5 -0
  10. data/lib/application/javascripts/data_convert.coffee +56 -0
  11. data/lib/application/javascripts/jquery.min.js +6 -0
  12. data/lib/application/javascripts/moment.min.js +6 -0
  13. data/lib/application/javascripts/namespace.coffee +2 -0
  14. data/lib/application/sass_engine.rb +14 -0
  15. data/lib/application/stylesheets/scss/app.scss +172 -0
  16. data/lib/application/stylesheets/scss/flat_ui/_config.sass +16 -0
  17. data/lib/application/stylesheets/scss/flat_ui/_icon-font-24.sass +91 -0
  18. data/lib/application/stylesheets/scss/flat_ui/_icon-font.sass +91 -0
  19. data/lib/application/stylesheets/scss/flat_ui/_mixins.sass +96 -0
  20. data/lib/application/stylesheets/scss/flat_ui/_spaces.sass +129 -0
  21. data/lib/application/stylesheets/scss/flat_ui/flat-ui.sass +39 -0
  22. data/lib/application/stylesheets/scss/flat_ui/modules/_btn.sass +73 -0
  23. data/lib/application/stylesheets/scss/flat_ui/modules/_checkbox-and-radio.sass +86 -0
  24. data/lib/application/stylesheets/scss/flat_ui/modules/_demo.sass +228 -0
  25. data/lib/application/stylesheets/scss/flat_ui/modules/_footer.sass +57 -0
  26. data/lib/application/stylesheets/scss/flat_ui/modules/_input.sass +66 -0
  27. data/lib/application/stylesheets/scss/flat_ui/modules/_login.sass +95 -0
  28. data/lib/application/stylesheets/scss/flat_ui/modules/_navbar.sass +152 -0
  29. data/lib/application/stylesheets/scss/flat_ui/modules/_pager.sass +56 -0
  30. data/lib/application/stylesheets/scss/flat_ui/modules/_pagination.sass +75 -0
  31. data/lib/application/stylesheets/scss/flat_ui/modules/_palette.sass +88 -0
  32. data/lib/application/stylesheets/scss/flat_ui/modules/_progress.sass +29 -0
  33. data/lib/application/stylesheets/scss/flat_ui/modules/_select.sass +163 -0
  34. data/lib/application/stylesheets/scss/flat_ui/modules/_share.sass +34 -0
  35. data/lib/application/stylesheets/scss/flat_ui/modules/_tagsinput.sass +91 -0
  36. data/lib/application/stylesheets/scss/flat_ui/modules/_tile.sass +42 -0
  37. data/lib/application/stylesheets/scss/flat_ui/modules/_todo.sass +77 -0
  38. data/lib/application/stylesheets/scss/flat_ui/modules/_toggle.sass +85 -0
  39. data/lib/application/stylesheets/scss/flat_ui/modules/_tooltip.sass +45 -0
  40. data/lib/application/stylesheets/scss/flat_ui/modules/_type.sass +43 -0
  41. data/lib/application/stylesheets/scss/flat_ui/modules/_ui-slider.sass +44 -0
  42. data/lib/application/stylesheets/scss/flat_ui/modules/_video.sass +358 -0
  43. data/lib/application/views/authors_list.haml +11 -0
  44. data/lib/application/views/index.haml +48 -0
  45. data/lib/application/visualisation.rb +156 -0
  46. metadata +87 -0
@@ -0,0 +1,77 @@
1
+ // Todo list
2
+ .todo
3
+ background-color: scale-color($base, $lightness: -15%)
4
+ border-radius: 8px 8px 6px 6px
5
+ color: scale-color($base, $lightness: 33%)
6
+ margin-bottom: 20px
7
+
8
+ ul
9
+ margin: 0
10
+ list-style-type: none
11
+
12
+ li
13
+ background: $base url('../images/todo/todo.png') 92% center no-repeat
14
+ background-size: 20px 20px
15
+ cursor: pointer
16
+ margin-top: 2px
17
+ padding: 18px 42px 17px 25px
18
+ position: relative
19
+ +transition(.25s)
20
+ &:first-child
21
+ margin-top: 0
22
+ &:last-child
23
+ border-radius: 0 0 6px 6px
24
+ padding-bottom: 18px
25
+ &.todo-done
26
+ background: transparent url('../images/todo/done.png') 92% center no-repeat
27
+ background-size: 20px 20px
28
+ color: $firm
29
+
30
+ .todo-name
31
+ color: $firm
32
+
33
+ .todo-search
34
+ background: $firm url('../images/todo/search.png') 92% center no-repeat
35
+ background-size: 16px 16px
36
+ border-radius: 6px 6px 0 0
37
+ color: $base
38
+ padding: 19px 25px 20px
39
+
40
+ input.todo-search-field
41
+ background: none
42
+ border: none
43
+ color: $base
44
+ font-size: 19px
45
+ font-weight: 700
46
+ margin: 0
47
+ line-height: 23px
48
+ padding: 5px 0
49
+ text-indent: 0
50
+ +box-shadow(none)
51
+ +placeholder-color($base)
52
+
53
+ .todo-icon
54
+ float: left
55
+ font-size: 24px
56
+ padding: 11px 22px 0 0
57
+
58
+ .todo-content
59
+ padding-top: 1px
60
+ overflow: hidden
61
+
62
+ .todo-name
63
+ color: $inverse
64
+ font-size: 17px
65
+ margin: 1px 0 3px
66
+
67
+ // Serving 2x images
68
+ @media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (-moz-min-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 3/2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min--moz-device-pixel-ratio: 1.5), only screen and (min-device-pixel-ratio: 1.5), only screen and (min-device-pixel-ratio: 2)
69
+ .todo
70
+ li
71
+ background-image: ('../images/todo/todo-2x.png')
72
+ &.todo-done
73
+ background-image: ('../images/todo/done-2x.png')
74
+
75
+ .todo-search
76
+ background-image: ('../images/todo/search-2x.png')
77
+
@@ -0,0 +1,85 @@
1
+ // Toggle
2
+ .toggle
3
+ background-color: $base
4
+ border-radius: 60px
5
+ color: $inverse
6
+ height: 29px
7
+ margin: 0 12px 12px 0
8
+ overflow: hidden
9
+ +clearfix
10
+ +inline-block
11
+ +transition(.25s)
12
+
13
+ // Common style -----------------------------
14
+ &.toggle-off
15
+ background-color: scale-color(desaturate($base, 15%), $lightness: 75%)
16
+
17
+ .toggle-radio
18
+ background-image: url('../images/toggle/icon-off.png')
19
+ background-position: 0 0
20
+ color: $inverse
21
+ left: 0
22
+ margin-left: .5px
23
+ margin-right: -13px
24
+ z-index: 1
25
+ &:first-child
26
+ left: -120%
27
+
28
+ .toggle-radio
29
+ background: url('../images/toggle/icon-on.png') right top no-repeat
30
+ color: $firm
31
+ display: block
32
+ font-weight: 700
33
+ height: 21px
34
+ left: 120%
35
+ margin-left: -13px
36
+ padding: 5px 32px 3px
37
+ position: relative
38
+ text-align: center
39
+ z-index: 2
40
+ +transition(.25s)
41
+
42
+ &:first-child
43
+ margin-bottom: -29px
44
+ left: 0
45
+
46
+ input
47
+ display: none
48
+ position: absolute
49
+ outline: none !important
50
+ // Radios in IE should be always visible in order to work
51
+ display: block\9
52
+ +opacity(0.01)
53
+
54
+ // Iconic style -----------------------------
55
+ &.toggle-icon
56
+ border-radius: 6px 7px 7px 6px
57
+
58
+ &.toggle-off
59
+ border-radius: 7px 6px 6px 7px
60
+ .toggle-radio
61
+ background-image: url('../images/toggle/block-off.png')
62
+ background-position: 0 0
63
+
64
+ .toggle-radio
65
+ background-image: url('../images/toggle/block-on.png')
66
+ background-position: 62px 0
67
+ border-radius: 6px
68
+ min-width: 27px
69
+ text-align: right
70
+
71
+ &:first-child
72
+ text-align: left
73
+
74
+ // Serving 2x images
75
+ @media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (-moz-min-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 3/2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min--moz-device-pixel-ratio: 1.5), only screen and (min-device-pixel-ratio: 1.5), only screen and (min-device-pixel-ratio: 2)
76
+ .toggle
77
+ &.toggle-off
78
+ .toggle-radio
79
+ background-image: url('../images/toggle/icon-off-2x.png')
80
+ background-size: 30px 29px
81
+
82
+ .toggle-radio
83
+ background-image: url('../images/toggle/icon-on-2x.png')
84
+ background-size: 30px 29px
85
+
@@ -0,0 +1,45 @@
1
+ // Tooltip on hover
2
+ .tooltip
3
+ font-size: 13px
4
+
5
+ &.in
6
+ +opacity(1)
7
+
8
+ &.top
9
+ padding-bottom: 9px
10
+ .tooltip-arrow
11
+ border-top-color: $base
12
+ border-width: 9px 9px 0
13
+ bottom: 0
14
+ margin-left: -9px
15
+
16
+ &.right
17
+ .tooltip-arrow
18
+ border-right-color: $base
19
+ border-width: 9px 9px 9px 0
20
+ margin-top: -9px
21
+ left: -3px
22
+
23
+ &.bottom
24
+ padding-top: 8px
25
+ .tooltip-arrow
26
+ border-bottom-color: $base
27
+ border-width: 0 9px 9px
28
+ margin-left: -9px
29
+ top: -1px
30
+
31
+ &.left
32
+ .tooltip-arrow
33
+ border-right-color: $base
34
+ border-width: 9px 9px 9px 0
35
+ margin-top: -3px
36
+ top: -3px
37
+
38
+ .tooltip-inner
39
+ background-color: $base
40
+ line-height: 18px
41
+ padding: 12px 12px
42
+ text-align: center
43
+ width: 183px
44
+ +border-radius(6px)
45
+
@@ -0,0 +1,43 @@
1
+ // Typography
2
+ body
3
+ color: $base
4
+ font: #{$base-font-size}/#{1.231} 'Lato', sans-serif
5
+
6
+ a
7
+ color: $firm
8
+ text-decoration: underline
9
+ +transition(.25s)
10
+ &:hover
11
+ color: $success
12
+ text-decoration: none
13
+
14
+ h1
15
+ font-size: 32px
16
+ font-weight: 900
17
+
18
+ h2
19
+ font-size: 26px
20
+ font-weight: 700
21
+ margin-bottom: 2px
22
+
23
+ h3
24
+ font-size: 24px
25
+ font-weight: 700
26
+ margin-bottom: 4px
27
+ margin-top: 2px
28
+
29
+ h4
30
+ font-size: 18px
31
+ font-weight: 500
32
+ margin-top: 4px
33
+
34
+ h5
35
+ font-size: 16px
36
+ font-weight: 500
37
+ text-transform: uppercase
38
+
39
+ h6
40
+ font-size: 13px
41
+ font-weight: 500
42
+ text-transform: uppercase
43
+
@@ -0,0 +1,44 @@
1
+ // jQuery UI Slider
2
+ .ui-slider
3
+ @extend .progress
4
+ margin-bottom: 20px
5
+ position: relative
6
+
7
+ .ui-slider-handle
8
+ background-color: scale-color($firm, $lightness: -15%)
9
+ border-radius: 50%
10
+ cursor: pointer
11
+ height: 18px
12
+ margin-left: -9px
13
+ position: absolute
14
+ top: -3px
15
+ width: 18px
16
+ z-index: 2
17
+ +transition(background .25s)
18
+
19
+ &[style*='100']
20
+ margin-left: -15px
21
+
22
+ &:hover,
23
+ &:focus
24
+ background-color: scale-color($firm, $lightness: 20%)
25
+ outline: none
26
+ &:active
27
+ background-color: scale-color($firm, $lightness: -15%)
28
+
29
+ .ui-slider-range
30
+ background-color: $firm
31
+ border-radius: 30px 0 0 30px
32
+ display: block
33
+ height: 100%
34
+ position: absolute
35
+ z-index: 1
36
+
37
+ .ui-slider-segment
38
+ background-color: scale-color(desaturate($base, 15%), $lightness: 80%)
39
+ border-radius: 50%
40
+ float: left
41
+ height: 6px
42
+ margin: 3px -6px 0 25%
43
+ width: 6px
44
+
@@ -0,0 +1,358 @@
1
+ // Styling JS Video plugin
2
+ $controls-color: scale-color($base, $lightness: -15%)
3
+
4
+ .video-js
5
+ background-color: $base
6
+ border-radius: 6px 6px 0 0
7
+ // Otherwise you won't see controls in Fullscreen mode
8
+ margin-top: -95px
9
+ position: relative
10
+ padding: 0
11
+ font-size: 10px
12
+ vertical-align: middle
13
+ .vjs-tech
14
+ border-radius: 6px 6px 0 0
15
+ position: absolute
16
+ top: 0
17
+ left: 0
18
+ width: 100%
19
+ height: 100%
20
+ &:-moz-full-screen
21
+ position: absolute
22
+
23
+ body.vjs-full-window
24
+ padding: 0
25
+ margin: 0
26
+ height: 100%
27
+ overflow-y: auto
28
+
29
+ .video-js
30
+ &.vjs-fullscreen
31
+ position: fixed
32
+ overflow: hidden
33
+ z-index: 1000
34
+ left: 0
35
+ top: 0
36
+ bottom: 0
37
+ right: 0
38
+ width: 100%!important
39
+ height: 100%!important
40
+ _position: absolute
41
+ &:-webkit-full-screen
42
+ width: 100%!important
43
+ height: 100%!important
44
+
45
+ .vjs-poster
46
+ margin: 0 auto
47
+ padding: 0
48
+ cursor: pointer
49
+ position: relative
50
+ width: 100%
51
+ max-height: 100%
52
+
53
+ .video-js
54
+ .vjs-text-track-display
55
+ text-align: center
56
+ position: absolute
57
+ bottom: 4em
58
+ left: 1em
59
+ right: 1em
60
+ font-family: $base-font-family
61
+ .vjs-text-track
62
+ display: none
63
+ color: #fff
64
+ font-size: 1.4em
65
+ text-align: center
66
+ margin-bottom: .1em
67
+ background: #000
68
+ background: rgba(0, 0, 0, 0.5)
69
+ .vjs-subtitles
70
+ color: #fff
71
+ .vjs-captions
72
+ color: #fc6
73
+
74
+ .vjs-tt-cue
75
+ display: block
76
+
77
+ .vjs-fade-in
78
+ visibility: visible!important
79
+ opacity: 1!important
80
+ +transition((visibility 0s linear 0s, opacity .3s linear))
81
+
82
+ .vjs-fade-out
83
+ visibility: hidden!important
84
+ opacity: 0!important
85
+ +transition((visibility 0s linear 1.5s, opacity 1.5s linear))
86
+
87
+ .vjs-controls
88
+ border-radius: 0 0 6px 6px
89
+ position: absolute
90
+ bottom: -47px
91
+ left: 0
92
+ right: 0
93
+ margin: 0
94
+ padding: 0
95
+ height: 47px
96
+ color: $inverse
97
+ background: $controls-color
98
+ &.vjs-fade-out
99
+ visibility: visible!important
100
+ opacity: 1!important
101
+
102
+ // Video player control general style
103
+ .vjs-control
104
+ background-position: center center
105
+ background-repeat: no-repeat
106
+ position: relative
107
+ float: left
108
+ text-align: center
109
+ margin: 0
110
+ padding: 0
111
+ height: 18px
112
+ width: 18px
113
+ &:focus
114
+ outline: 0
115
+ div
116
+ background-position: center center
117
+ background-repeat: no-repeat
118
+
119
+ // Control tooltip
120
+ .vjs-control-text
121
+ border: 0
122
+ clip: rect(0 0 0 0)
123
+ height: 1px
124
+ margin: -1px
125
+ overflow: hidden
126
+ padding: 0
127
+ position: absolute
128
+ width: 1px
129
+
130
+ .vjs-play-control
131
+ cursor: pointer!important
132
+ height: 47px
133
+ left: 0
134
+ position: absolute
135
+ top: 0
136
+ width: 58px
137
+
138
+ .vjs-paused .vjs-play-control
139
+ background: url('../images/video/play.png') center -31px no-repeat
140
+ background-size: 16px 64px
141
+ &:hover
142
+ div
143
+ opacity: 0
144
+ div
145
+ background: url('../images/video/play.png') center 15px no-repeat
146
+ background-size: 16px 64px
147
+ height: 47px
148
+ +transition(opacity .25s)
149
+
150
+ .vjs-playing .vjs-play-control
151
+ background: url('../images/video/pause.png') center -31px no-repeat
152
+ background-size: 15px 64px
153
+ &:hover
154
+ div
155
+ opacity: 0
156
+
157
+ div
158
+ background: url('../images/video/pause.png') center 15px no-repeat
159
+ background-size: 15px 64px
160
+ height: 47px
161
+ +transition(opacity .25s)
162
+
163
+ .vjs-rewind-control
164
+ width: 5em
165
+ cursor: pointer!important
166
+ div
167
+ width: 19px
168
+ height: 16px
169
+ background: url('video-js.png')
170
+ margin: .5em auto 0
171
+
172
+ .vjs-mute-control
173
+ background: url('../images/video/volume-full.png') center -48px no-repeat
174
+ background-size: 16px 64px
175
+ cursor: pointer!important
176
+ position: absolute
177
+ right: 51px
178
+ top: 14px
179
+
180
+ &:hover,
181
+ &:focus
182
+ div
183
+ opacity: 0
184
+
185
+ // Muted state
186
+ &.vjs-vol-0
187
+ &,
188
+ div
189
+ background-image: url('../images/video/volume-off.png')
190
+
191
+ div
192
+ background: $controls-color url('../images/video/volume-full.png') no-repeat center 2px
193
+ background-size: 16px 64px
194
+ height: 18px
195
+ +transition(opacity .25s)
196
+
197
+ .vjs-volume-control,
198
+ .vjs-volume-level,
199
+ .vjs-volume-handle,
200
+ .vjs-volume-bar
201
+ display: none
202
+
203
+ .vjs-progress-control
204
+ border-radius: 32px
205
+ position: absolute
206
+ left: 60px
207
+ right: 180px
208
+ height: 12px
209
+ width: auto
210
+ top: 18px
211
+ background: scale-color($base, $lightness: 93%)
212
+
213
+ .vjs-progress-holder
214
+ position: relative
215
+ cursor: pointer!important
216
+ padding: 0
217
+ margin: 0
218
+ height: 12px
219
+
220
+ .vjs-play-progress, .vjs-load-progress
221
+ border-radius: 32px
222
+ position: absolute
223
+ display: block
224
+ height: 12px
225
+ margin: 0
226
+ padding: 0
227
+ left: 0
228
+ top: 0
229
+
230
+ .vjs-play-progress
231
+ background: $firm
232
+ left: -1px
233
+
234
+ .vjs-load-progress
235
+ background: scale-color(desaturate($base, 15%), $lightness: 80%)
236
+ border-radius: 32px 0 0 32px
237
+ &[style*='100%'],
238
+ &[style*='99%']
239
+ border-radius: 32px
240
+
241
+ .vjs-seek-handle
242
+ background-color: scale-color($firm, $lightness: -15%)
243
+ border-radius: 50%
244
+ position: absolute
245
+ width: 18px
246
+ height: 18px
247
+ margin: -3px 0 0 1px
248
+ left: 0
249
+ top: 0
250
+ +transition(background-color .25s)
251
+
252
+ &[style*='95.']
253
+ margin-left: 3px
254
+
255
+ &[style='left: 0%;']
256
+ margin-left: -2px
257
+
258
+ &:hover,
259
+ &:focus
260
+ background-color: scale-color($firm, $lightness: -25%)
261
+ &:active
262
+ background-color: scale-color($firm, $lightness: -33%)
263
+
264
+ // Player time controls
265
+ .vjs-time-controls
266
+ position: absolute
267
+ height: 20px
268
+ width: 50px
269
+ top: 16px
270
+ font: 300 13px $base-font-family
271
+
272
+ .vjs-current-time
273
+ right: 128px
274
+ text-align: right
275
+
276
+ .vjs-duration
277
+ color: scale-color(desaturate($base, 15%), $lightness: 25%)
278
+ right: 69px
279
+ text-align: left
280
+
281
+ .vjs-remaining-time
282
+ display: none
283
+
284
+ .vjs-time-divider
285
+ color: scale-color(desaturate($base, 15%), $lightness: 25%)
286
+ font-size: 14px
287
+ position: absolute
288
+ right: 121px
289
+ top: 15px
290
+
291
+ .vjs-secondary-controls
292
+ float: right
293
+
294
+ .vjs-fullscreen-control
295
+ background-image: url('../images/video/fullscreen.png')
296
+ background-position: center -47px
297
+ background-size: 15px 64px
298
+ cursor: pointer!important
299
+ position: absolute
300
+ right: 17px
301
+ top: 13px
302
+
303
+ &:hover,
304
+ &:focus
305
+ div
306
+ opacity: 0
307
+
308
+ div
309
+ height: 18px
310
+ background: url('../images/video/fullscreen.png') no-repeat center 2px
311
+ background-size: 15px 64px
312
+ +transition(opacity .25s)
313
+
314
+ // Subtitles menu. Hide for no need by design.
315
+ .vjs-menu-button
316
+ display: none !important
317
+
318
+ // Video preloader
319
+ =sharp-keyframes
320
+ 0%
321
+ background: #e74c3c
322
+ border-radius: 10px
323
+ +transform(rotate(0deg))
324
+
325
+ 50%
326
+ background: #ebedee
327
+ border-radius: 0
328
+ +transform(rotate(180deg))
329
+
330
+ 100%
331
+ background: #e74c3c
332
+ border-radius: 10px
333
+ +transform(rotate(360deg))
334
+
335
+ @-webkit-keyframes sharp
336
+ +sharp-keyframes
337
+
338
+ @-moz-keyframes sharp
339
+ +sharp-keyframes
340
+
341
+ @-o-keyframes sharp
342
+ +sharp-keyframes
343
+
344
+ @keyframes sharp
345
+ +sharp-keyframes
346
+
347
+ .vjs-loading-spinner
348
+ background: #ebedee
349
+ border-radius: 10px
350
+ display: none
351
+ height: 16px
352
+ left: 50%
353
+ margin: -8px 0 0 -8px
354
+ position: absolute
355
+ top: 50%
356
+ width: 16px
357
+ +animation(sharp 2s ease infinite)
358
+