aboutsummaryrefslogtreecommitdiffhomepage
path: root/client/app
diff options
context:
space:
mode:
Diffstat (limited to 'client/app')
-rw-r--r--client/app/images/favicon.pngbin0 -> 2335 bytes
-rw-r--r--client/app/images/loading.gifbin0 -> 673 bytes
-rw-r--r--client/app/javascripts/index.js245
-rw-r--r--client/app/stylesheets/application.scss6
-rw-r--r--client/app/stylesheets/base.scss20
-rw-r--r--client/app/stylesheets/bootstrap-variables.scss875
-rw-r--r--client/app/stylesheets/index.scss88
7 files changed, 1234 insertions, 0 deletions
diff --git a/client/app/images/favicon.png b/client/app/images/favicon.png
new file mode 100644
index 000000000..bb57ee6b0
--- /dev/null
+++ b/client/app/images/favicon.png
Binary files differ
diff --git a/client/app/images/loading.gif b/client/app/images/loading.gif
new file mode 100644
index 000000000..f2a1bc0c6
--- /dev/null
+++ b/client/app/images/loading.gif
Binary files differ
diff --git a/client/app/javascripts/index.js b/client/app/javascripts/index.js
new file mode 100644
index 000000000..4910e4540
--- /dev/null
+++ b/client/app/javascripts/index.js
@@ -0,0 +1,245 @@
1;(function () {
2 'use strict'
3
4 var $ = require('jquery')
5 require('blueimp-file-upload')
6
7 var WebTorrent = require('webtorrent')
8 var client = new WebTorrent({ dht: false })
9
10 var $content = $('#ajax_load')
11
12 // Webtorrent events
13 client.on('error', function (err) {
14 console.error(err)
15 })
16
17 client.on('warning', function (err) {
18 console.warning(err)
19 })
20
21 // Events of the panel
22 $('#panel_get_videos').on('click', function () {
23 getVideos()
24 })
25
26 $('#panel_upload_video').on('click', function () {
27 uploadVideo()
28 })
29
30 $('#panel_make_friends').on('click', function () {
31 makeFriends()
32 })
33
34 $('#panel_quit_friends').on('click', function () {
35 quitFriends()
36 })
37
38 $('#search-video').on('keyup', function (e) {
39 var search = $(this).val()
40
41 if (search === '') return
42
43 if (e.keyCode === 13) {
44 $.ajax({
45 url: '/api/v1/videos/search/' + search,
46 type: 'GET',
47 dataType: 'json',
48 success: function (videos) {
49 printVideos(videos)
50 }
51 })
52 }
53 })
54
55 // Join a new network
56 function makeFriends () {
57 $.ajax({
58 url: '/api/v1/pods/makefriends',
59 type: 'GET',
60 dataType: 'json',
61 statusCode: {
62 409: function () {
63 alert('Already made friends.')
64 }
65 },
66 success: function () {
67 alert('Made friends!')
68 }
69 })
70 }
71
72 function quitFriends () {
73 $.ajax({
74 url: '/api/v1/pods/quitfriends',
75 type: 'GET',
76 dataType: 'json',
77 success: function () {
78 alert('Quit friends!')
79 }
80 })
81 }
82
83 function printVideos (videos) {
84 $content.empty()
85
86 if (videos.length === 0) {
87 $content.text('There is no videos.')
88 }
89
90 videos.forEach(function (video) {
91 var $video = $('<div></div>').addClass('video')
92
93 var $video_name = $('<span></span>').addClass('video_name').text(video.name)
94 var $video_pod = $('<span></span>').addClass('video_pod_url').text(video.podUrl)
95 var $header = $('<div></div>').append([ $video_name, $video_pod ])
96
97 if (video.namePath !== null) {
98 var $remove = $('<span></span>').addClass('span_action glyphicon glyphicon-remove')
99
100 // Remove the video
101 $remove.on('click', function () {
102 if (!confirm('Are you sure ?')) return
103
104 removeVideo(video)
105 })
106
107 $header.append($remove)
108 }
109
110 var $video_description = $('<div></div>').addClass('video_description').text(video.description)
111
112 // Get the video
113 $video_name.on('click', function () {
114 getVideo(video)
115 })
116
117 if (!video.magnetUri) {
118 $remove.css('display', 'none')
119 }
120
121 $video.append([ $header, $video_description ])
122 $content.append($video)
123 })
124 }
125
126 // Upload the video, the server will seed it
127 function uploadVideo () {
128 // Creating all the elements
129 var $video_label = $('<label></label>').attr('for', 'name').text('Video name')
130 var $video_name = $('<input></input>').addClass('form-control').attr({
131 name: 'name',
132 id: 'name'
133 })
134 var $video_block = $('<div></div>').addClass('form-group').append([ $video_label, $video_name ])
135
136 var $title = $('<h3></h3>').text('Upload a video')
137
138 var $button_text = $('<span></span>').text('Select the video...')
139 var $input_video = $('<input></input>').attr({
140 type: 'file',
141 name: 'input_video',
142 id: 'input_video'
143 })
144 var $button = $('<div></div>').addClass('btn btn-default btn-file').append([ $button_text, $input_video ])
145
146 var $description_label = $('<label></label>').attr('for', 'description').text('Description')
147 var $description_text = $('<textarea></textarea>').addClass('form-control').attr({
148 name: 'description',
149 id: 'description',
150 placeholder: 'Description...'
151 })
152 var $description = $('<div></div>').addClass('form-group').append([ $description_label, $description_text ])
153
154 var $bar = $('<progress></progress').attr('value', '0').css('display', 'none')
155 var $progress_bar = $('<div><div>').attr('id', 'progress').append($bar)
156
157 var $input_submit = $('<input></input>').addClass('btn btn-default').attr({
158 type: 'button',
159 value: 'Upload'
160 })
161
162 // JQuery plugin
163 var $form_video = $('<form></form>').append([ $video_block, $button, $progress_bar, $description, $input_submit ])
164 $form_video.fileupload({
165 singleFileUploads: true,
166 multipart: true,
167 url: '/api/v1/videos',
168 autoupload: false,
169 add: function (e, data) {
170 var $text = $('<span></span>').addClass('name_file').text(data['files'][0]['name'])
171 $text.insertAfter($button)
172 $input_submit.off('click').on('click', function () {
173 $bar.css('display', 'block')
174 data.formData = $form_video.serializeArray()
175 data.submit()
176 })
177 },
178 progressall: function (e, data) {
179 $bar.attr({
180 value: data.loaded,
181 max: data.total
182 })
183 },
184 done: function (e, data) {
185 // Print all the videos once it's finished
186 getVideos()
187 }
188 })
189
190 $content.empty()
191 $content.append([ $title, $form_video ])
192 }
193
194 // Print the list of all the videos
195 function getVideos () {
196 $.ajax({
197 url: '/api/v1/videos/',
198 dataType: 'json',
199 type: 'GET',
200 success: function (videos) {
201 printVideos(videos)
202 }
203 })
204 }
205
206 function removeVideo (video) {
207 $.ajax({
208 url: '/api/v1/videos/' + video._id,
209 type: 'DELETE',
210 success: function (response, status) {
211 getVideos()
212 }
213 })
214 }
215
216 // Get the video: add the torrent file and stream it into a video tag
217 function getVideo (video) {
218 var $waiting = $('<img></img>').addClass('center-block loading').attr('src', '/images/loading.gif')
219 $content.empty()
220 $content.append($waiting)
221
222 console.log('Getting ' + video)
223 client.add(video.magnetUri, function (torrent) {
224 var $embed = $('<div></div>').addClass('embed-responsive embed-responsive-16by9')
225
226 $content.empty()
227 $content.append($embed)
228
229 // Got torrent metadata!
230 console.log('Torrent info hash:', torrent.infoHash)
231
232 // Let's say the first file is a webm (vp8) or mp4 (h264) video...
233 var file = torrent.files[0]
234
235 file.appendTo($embed.get(0), function (err) {
236 if (err) {
237 alert('Cannot append the file.')
238 console.error(err)
239 }
240 })
241 })
242 }
243
244 getVideos()
245})()
diff --git a/client/app/stylesheets/application.scss b/client/app/stylesheets/application.scss
new file mode 100644
index 000000000..bf9ec90ab
--- /dev/null
+++ b/client/app/stylesheets/application.scss
@@ -0,0 +1,6 @@
1$icon-font-path: "/stylesheets/vendor/fonts/bootstrap/";
2
3@import "bootstrap-variables";
4@import "_bootstrap";
5@import "base";
6@import "index"; \ No newline at end of file
diff --git a/client/app/stylesheets/base.scss b/client/app/stylesheets/base.scss
new file mode 100644
index 000000000..37bdade1e
--- /dev/null
+++ b/client/app/stylesheets/base.scss
@@ -0,0 +1,20 @@
1body {
2 padding: 20px;
3}
4
5footer {
6 border-top: 1px solid rgba(0, 0, 0, 0.2);
7 padding-top: 10px;
8 text-align: center;
9 font-size: small;
10}
11
12.search-group {
13 .search-btn {
14 position: relative;
15 left: -40px;
16 top: 0;
17
18 &:hover { text-decoration: none; }
19 }
20} \ No newline at end of file
diff --git a/client/app/stylesheets/bootstrap-variables.scss b/client/app/stylesheets/bootstrap-variables.scss
new file mode 100644
index 000000000..5a49649f9
--- /dev/null
+++ b/client/app/stylesheets/bootstrap-variables.scss
@@ -0,0 +1,875 @@
1// Override Bootstrap variables here (defaults from bootstrap-sass v3.3.6):
2
3//
4// Variables
5// --------------------------------------------------
6
7
8//== Colors
9//
10//## Gray and brand colors for use across Bootstrap.
11
12// $gray-base: #000
13// $gray-darker: lighten($gray-base, 13.5%) // #222
14// $gray-dark: lighten($gray-base, 20%) // #333
15// $gray: lighten($gray-base, 33.5%) // #555
16// $gray-light: lighten($gray-base, 46.7%) // #777
17// $gray-lighter: lighten($gray-base, 93.5%) // #eee
18
19// $brand-primary: darken(#428bca, 6.5%) // #337ab7
20// $brand-success: #5cb85c
21// $brand-info: #5bc0de
22// $brand-warning: #f0ad4e
23// $brand-danger: #d9534f
24
25
26//== Scaffolding
27//
28//## Settings for some of the most global styles.
29
30//** Background color for `<body>`.
31// $body-bg: #fff
32//** Global text color on `<body>`.
33// $text-color: $gray-dark
34
35//** Global textual link color.
36// $link-color: $brand-primary
37//** Link hover color set via `darken()` function.
38// $link-hover-color: darken($link-color, 15%)
39//** Link hover decoration.
40// $link-hover-decoration: underline
41
42
43//== Typography
44//
45//## Font, line-height, and color for body text, headings, and more.
46
47// $font-family-sans-serif: "Helvetica Neue", Helvetica, Arial, sans-serif
48// $font-family-serif: Georgia, "Times New Roman", Times, serif
49//** Default monospace fonts for `<code>`, `<kbd>`, and `<pre>`.
50// $font-family-monospace: Menlo, Monaco, Consolas, "Courier New", monospace
51// $font-family-base: $font-family-sans-serif
52
53// $font-size-base: 14px
54// $font-size-large: ceil(($font-size-base * 1.25)) // ~18px
55// $font-size-small: ceil(($font-size-base * 0.85)) // ~12px
56
57// $font-size-h1: floor(($font-size-base * 2.6)) // ~36px
58// $font-size-h2: floor(($font-size-base * 2.15)) // ~30px
59// $font-size-h3: ceil(($font-size-base * 1.7)) // ~24px
60// $font-size-h4: ceil(($font-size-base * 1.25)) // ~18px
61// $font-size-h5: $font-size-base
62// $font-size-h6: ceil(($font-size-base * 0.85)) // ~12px
63
64//** Unit-less `line-height` for use in components like buttons.
65// $line-height-base: 1.428571429 // 20/14
66//** Computed "line-height" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.
67// $line-height-computed: floor(($font-size-base * $line-height-base)) // ~20px
68
69//** By default, this inherits from the `<body>`.
70// $headings-font-family: inherit
71// $headings-font-weight: 500
72// $headings-line-height: 1.1
73// $headings-color: inherit
74
75
76//== Iconography
77//
78//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.
79
80//** Load fonts from this directory.
81
82// [converter] If $bootstrap-sass-asset-helper if used, provide path relative to the assets load path.
83// [converter] This is because some asset helpers, such as Sprockets, do not work with file-relative paths.
84// $icon-font-path: if($bootstrap-sass-asset-helper, "bootstrap/", "../fonts/bootstrap/")
85
86//** File name for all font files.
87// $icon-font-name: "glyphicons-halflings-regular"
88//** Element ID within SVG icon file.
89// $icon-font-svg-id: "glyphicons_halflingsregular"
90
91
92//== Components
93//
94//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).
95
96// $padding-base-vertical: 6px
97// $padding-base-horizontal: 12px
98
99// $padding-large-vertical: 10px
100// $padding-large-horizontal: 16px
101
102// $padding-small-vertical: 5px
103// $padding-small-horizontal: 10px
104
105// $padding-xs-vertical: 1px
106// $padding-xs-horizontal: 5px
107
108// $line-height-large: 1.3333333 // extra decimals for Win 8.1 Chrome
109// $line-height-small: 1.5
110
111$border-radius-base: 0;
112$border-radius-large: 0;
113$border-radius-small: 0;
114
115//** Global color for active items (e.g., navs or dropdowns).
116// $component-active-color: #fff
117//** Global background color for active items (e.g., navs or dropdowns).
118// $component-active-bg: $brand-primary
119
120//** Width of the `border` for generating carets that indicator dropdowns.
121// $caret-width-base: 4px
122//** Carets increase slightly in size for larger components.
123// $caret-width-large: 5px
124
125
126//== Tables
127//
128//## Customizes the `.table` component with basic values, each used across all table variations.
129
130//** Padding for `<th>`s and `<td>`s.
131// $table-cell-padding: 8px
132//** Padding for cells in `.table-condensed`.
133// $table-condensed-cell-padding: 5px
134
135//** Default background color used for all tables.
136// $table-bg: transparent
137//** Background color used for `.table-striped`.
138// $table-bg-accent: #f9f9f9
139//** Background color used for `.table-hover`.
140// $table-bg-hover: #f5f5f5
141// $table-bg-active: $table-bg-hover
142
143//** Border color for table and cell borders.
144// $table-border-color: #ddd
145
146
147//== Buttons
148//
149//## For each of Bootstrap's buttons, define text, background and border color.
150
151// $btn-font-weight: normal
152
153// $btn-default-color: #333
154// $btn-default-bg: #fff
155// $btn-default-border: #ccc
156
157// $btn-primary-color: #fff
158// $btn-primary-bg: $brand-primary
159// $btn-primary-border: darken($btn-primary-bg, 5%)
160
161// $btn-success-color: #fff
162// $btn-success-bg: $brand-success
163// $btn-success-border: darken($btn-success-bg, 5%)
164
165// $btn-info-color: #fff
166// $btn-info-bg: $brand-info
167// $btn-info-border: darken($btn-info-bg, 5%)
168
169// $btn-warning-color: #fff
170// $btn-warning-bg: $brand-warning
171// $btn-warning-border: darken($btn-warning-bg, 5%)
172
173// $btn-danger-color: #fff
174// $btn-danger-bg: $brand-danger
175// $btn-danger-border: darken($btn-danger-bg, 5%)
176
177// $btn-link-disabled-color: $gray-light
178
179// Allows for customizing button radius independently from global border radius
180// $btn-border-radius-base: $border-radius-base
181// $btn-border-radius-large: $border-radius-large
182// $btn-border-radius-small: $border-radius-small
183
184
185//== Forms
186//
187//##
188
189//** `<input>` background color
190// $input-bg: #fff
191//** `<input disabled>` background color
192// $input-bg-disabled: $gray-lighter
193
194//** Text color for `<input>`s
195// $input-color: $gray
196//** `<input>` border color
197// $input-border: #ccc
198
199// TODO: Rename `$input-border-radius` to `$input-border-radius-base` in v4
200//** Default `.form-control` border radius
201// This has no effect on `<select>`s in some browsers, due to the limited stylability of `<select>`s in CSS.
202// $input-border-radius: $border-radius-base
203//** Large `.form-control` border radius
204// $input-border-radius-large: $border-radius-large
205//** Small `.form-control` border radius
206// $input-border-radius-small: $border-radius-small
207
208//** Border color for inputs on focus
209// $input-border-focus: #66afe9
210
211//** Placeholder text color
212// $input-color-placeholder: #999
213
214//** Default `.form-control` height
215// $input-height-base: ($line-height-computed + ($padding-base-vertical * 2) + 2)
216//** Large `.form-control` height
217// $input-height-large: (ceil($font-size-large * $line-height-large) + ($padding-large-vertical * 2) + 2)
218//** Small `.form-control` height
219// $input-height-small: (floor($font-size-small * $line-height-small) + ($padding-small-vertical * 2) + 2)
220
221//** `.form-group` margin
222// $form-group-margin-bottom: 15px
223
224// $legend-color: $gray-dark
225// $legend-border-color: #e5e5e5
226
227//** Background color for textual input addons
228// $input-group-addon-bg: $gray-lighter
229//** Border color for textual input addons
230// $input-group-addon-border-color: $input-border
231
232//** Disabled cursor for form controls and buttons.
233// $cursor-disabled: not-allowed
234
235
236//== Dropdowns
237//
238//## Dropdown menu container and contents.
239
240//** Background for the dropdown menu.
241// $dropdown-bg: #fff
242//** Dropdown menu `border-color`.
243// $dropdown-border: rgba(0,0,0,.15)
244//** Dropdown menu `border-color` **for IE8**.
245// $dropdown-fallback-border: #ccc
246//** Divider color for between dropdown items.
247// $dropdown-divider-bg: #e5e5e5
248
249//** Dropdown link text color.
250// $dropdown-link-color: $gray-dark
251//** Hover color for dropdown links.
252// $dropdown-link-hover-color: darken($gray-dark, 5%)
253//** Hover background for dropdown links.
254// $dropdown-link-hover-bg: #f5f5f5
255
256//** Active dropdown menu item text color.
257// $dropdown-link-active-color: $component-active-color
258//** Active dropdown menu item background color.
259// $dropdown-link-active-bg: $component-active-bg
260
261//** Disabled dropdown menu item background color.
262// $dropdown-link-disabled-color: $gray-light
263
264//** Text color for headers within dropdown menus.
265// $dropdown-header-color: $gray-light
266
267//** Deprecated `$dropdown-caret-color` as of v3.1.0
268// $dropdown-caret-color: #000
269
270
271//-- Z-index master list
272//
273// Warning: Avoid customizing these values. They're used for a bird's eye view
274// of components dependent on the z-axis and are designed to all work together.
275//
276// Note: These variables are not generated into the Customizer.
277
278// $zindex-navbar: 1000
279// $zindex-dropdown: 1000
280// $zindex-popover: 1060
281// $zindex-tooltip: 1070
282// $zindex-navbar-fixed: 1030
283// $zindex-modal-background: 1040
284// $zindex-modal: 1050
285
286
287//== Media queries breakpoints
288//
289//## Define the breakpoints at which your layout will change, adapting to different screen sizes.
290
291// Extra small screen / phone
292//** Deprecated `$screen-xs` as of v3.0.1
293// $screen-xs: 480px
294//** Deprecated `$screen-xs-min` as of v3.2.0
295// $screen-xs-min: $screen-xs
296//** Deprecated `$screen-phone` as of v3.0.1
297// $screen-phone: $screen-xs-min
298
299// Small screen / tablet
300//** Deprecated `$screen-sm` as of v3.0.1
301// $screen-sm: 768px
302// $screen-sm-min: $screen-sm
303//** Deprecated `$screen-tablet` as of v3.0.1
304// $screen-tablet: $screen-sm-min
305
306// Medium screen / desktop
307//** Deprecated `$screen-md` as of v3.0.1
308// $screen-md: 992px
309// $screen-md-min: $screen-md
310//** Deprecated `$screen-desktop` as of v3.0.1
311// $screen-desktop: $screen-md-min
312
313// Large screen / wide desktop
314//** Deprecated `$screen-lg` as of v3.0.1
315// $screen-lg: 1200px
316// $screen-lg-min: $screen-lg
317//** Deprecated `$screen-lg-desktop` as of v3.0.1
318// $screen-lg-desktop: $screen-lg-min
319
320// So media queries don't overlap when required, provide a maximum
321// $screen-xs-max: ($screen-sm-min - 1)
322// $screen-sm-max: ($screen-md-min - 1)
323// $screen-md-max: ($screen-lg-min - 1)
324
325
326//== Grid system
327//
328//## Define your custom responsive grid.
329
330//** Number of columns in the grid.
331// $grid-columns: 12
332//** Padding between columns. Gets divided in half for the left and right.
333// $grid-gutter-width: 30px
334// Navbar collapse
335//** Point at which the navbar becomes uncollapsed.
336// $grid-float-breakpoint: $screen-sm-min
337//** Point at which the navbar begins collapsing.
338// $grid-float-breakpoint-max: ($grid-float-breakpoint - 1)
339
340
341//== Container sizes
342//
343//## Define the maximum width of `.container` for different screen sizes.
344
345// Small screen / tablet
346// $container-tablet: (720px + $grid-gutter-width)
347//** For `$screen-sm-min` and up.
348// $container-sm: $container-tablet
349
350// Medium screen / desktop
351// $container-desktop: (940px + $grid-gutter-width)
352//** For `$screen-md-min` and up.
353// $container-md: $container-desktop
354
355// Large screen / wide desktop
356// $container-large-desktop: (1140px + $grid-gutter-width)
357//** For `$screen-lg-min` and up.
358// $container-lg: $container-large-desktop
359
360
361//== Navbar
362//
363//##
364
365// Basics of a navbar
366// $navbar-height: 50px
367// $navbar-margin-bottom: $line-height-computed
368// $navbar-border-radius: $border-radius-base
369// $navbar-padding-horizontal: floor(($grid-gutter-width / 2))
370// $navbar-padding-vertical: (($navbar-height - $line-height-computed) / 2)
371// $navbar-collapse-max-height: 340px
372
373// $navbar-default-color: #777
374// $navbar-default-bg: #f8f8f8
375// $navbar-default-border: darken($navbar-default-bg, 6.5%)
376
377// Navbar links
378// $navbar-default-link-color: #777
379// $navbar-default-link-hover-color: #333
380// $navbar-default-link-hover-bg: transparent
381// $navbar-default-link-active-color: #555
382// $navbar-default-link-active-bg: darken($navbar-default-bg, 6.5%)
383// $navbar-default-link-disabled-color: #ccc
384// $navbar-default-link-disabled-bg: transparent
385
386// Navbar brand label
387// $navbar-default-brand-color: $navbar-default-link-color
388// $navbar-default-brand-hover-color: darken($navbar-default-brand-color, 10%)
389// $navbar-default-brand-hover-bg: transparent
390
391// Navbar toggle
392// $navbar-default-toggle-hover-bg: #ddd
393// $navbar-default-toggle-icon-bar-bg: #888
394// $navbar-default-toggle-border-color: #ddd
395
396
397//=== Inverted navbar
398// Reset inverted navbar basics
399// $navbar-inverse-color: lighten($gray-light, 15%)
400// $navbar-inverse-bg: #222
401// $navbar-inverse-border: darken($navbar-inverse-bg, 10%)
402
403// Inverted navbar links
404// $navbar-inverse-link-color: lighten($gray-light, 15%)
405// $navbar-inverse-link-hover-color: #fff
406// $navbar-inverse-link-hover-bg: transparent
407// $navbar-inverse-link-active-color: $navbar-inverse-link-hover-color
408// $navbar-inverse-link-active-bg: darken($navbar-inverse-bg, 10%)
409// $navbar-inverse-link-disabled-color: #444
410// $navbar-inverse-link-disabled-bg: transparent
411
412// Inverted navbar brand label
413// $navbar-inverse-brand-color: $navbar-inverse-link-color
414// $navbar-inverse-brand-hover-color: #fff
415// $navbar-inverse-brand-hover-bg: transparent
416
417// Inverted navbar toggle
418// $navbar-inverse-toggle-hover-bg: #333
419// $navbar-inverse-toggle-icon-bar-bg: #fff
420// $navbar-inverse-toggle-border-color: #333
421
422
423//== Navs
424//
425//##
426
427//=== Shared nav styles
428// $nav-link-padding: 10px 15px
429// $nav-link-hover-bg: $gray-lighter
430
431// $nav-disabled-link-color: $gray-light
432// $nav-disabled-link-hover-color: $gray-light
433
434//== Tabs
435// $nav-tabs-border-color: #ddd
436
437// $nav-tabs-link-hover-border-color: $gray-lighter
438
439// $nav-tabs-active-link-hover-bg: $body-bg
440// $nav-tabs-active-link-hover-color: $gray
441// $nav-tabs-active-link-hover-border-color: #ddd
442
443// $nav-tabs-justified-link-border-color: #ddd
444// $nav-tabs-justified-active-link-border-color: $body-bg
445
446//== Pills
447// $nav-pills-border-radius: $border-radius-base
448// $nav-pills-active-link-hover-bg: $component-active-bg
449// $nav-pills-active-link-hover-color: $component-active-color
450
451
452//== Pagination
453//
454//##
455
456// $pagination-color: $link-color
457// $pagination-bg: #fff
458// $pagination-border: #ddd
459
460// $pagination-hover-color: $link-hover-color
461// $pagination-hover-bg: $gray-lighter
462// $pagination-hover-border: #ddd
463
464// $pagination-active-color: #fff
465// $pagination-active-bg: $brand-primary
466// $pagination-active-border: $brand-primary
467
468// $pagination-disabled-color: $gray-light
469// $pagination-disabled-bg: #fff
470// $pagination-disabled-border: #ddd
471
472
473//== Pager
474//
475//##
476
477// $pager-bg: $pagination-bg
478// $pager-border: $pagination-border
479// $pager-border-radius: 15px
480
481// $pager-hover-bg: $pagination-hover-bg
482
483// $pager-active-bg: $pagination-active-bg
484// $pager-active-color: $pagination-active-color
485
486// $pager-disabled-color: $pagination-disabled-color
487
488
489//== Jumbotron
490//
491//##
492
493// $jumbotron-padding: 30px
494// $jumbotron-color: inherit
495// $jumbotron-bg: $gray-lighter
496// $jumbotron-heading-color: inherit
497// $jumbotron-font-size: ceil(($font-size-base * 1.5))
498// $jumbotron-heading-font-size: ceil(($font-size-base * 4.5))
499
500
501//== Form states and alerts
502//
503//## Define colors for form feedback states and, by default, alerts.
504
505// $state-success-text: #3c763d
506// $state-success-bg: #dff0d8
507// $state-success-border: darken(adjust-hue($state-success-bg, -10), 5%)
508
509// $state-info-text: #31708f
510// $state-info-bg: #d9edf7
511// $state-info-border: darken(adjust-hue($state-info-bg, -10), 7%)
512
513// $state-warning-text: #8a6d3b
514// $state-warning-bg: #fcf8e3
515// $state-warning-border: darken(adjust-hue($state-warning-bg, -10), 5%)
516
517// $state-danger-text: #a94442
518// $state-danger-bg: #f2dede
519// $state-danger-border: darken(adjust-hue($state-danger-bg, -10), 5%)
520
521
522//== Tooltips
523//
524//##
525
526//** Tooltip max width
527// $tooltip-max-width: 200px
528//** Tooltip text color
529// $tooltip-color: #fff
530//** Tooltip background color
531// $tooltip-bg: #000
532// $tooltip-opacity: .9
533
534//** Tooltip arrow width
535// $tooltip-arrow-width: 5px
536//** Tooltip arrow color
537// $tooltip-arrow-color: $tooltip-bg
538
539
540//== Popovers
541//
542//##
543
544//** Popover body background color
545// $popover-bg: #fff
546//** Popover maximum width
547// $popover-max-width: 276px
548//** Popover border color
549// $popover-border-color: rgba(0,0,0,.2)
550//** Popover fallback border color
551// $popover-fallback-border-color: #ccc
552
553//** Popover title background color
554// $popover-title-bg: darken($popover-bg, 3%)
555
556//** Popover arrow width
557// $popover-arrow-width: 10px
558//** Popover arrow color
559// $popover-arrow-color: $popover-bg
560
561//** Popover outer arrow width
562// $popover-arrow-outer-width: ($popover-arrow-width + 1)
563//** Popover outer arrow color
564// $popover-arrow-outer-color: fade_in($popover-border-color, 0.05)
565//** Popover outer arrow fallback color
566// $popover-arrow-outer-fallback-color: darken($popover-fallback-border-color, 20%)
567
568
569//== Labels
570//
571//##
572
573//** Default label background color
574// $label-default-bg: $gray-light
575//** Primary label background color
576// $label-primary-bg: $brand-primary
577//** Success label background color
578// $label-success-bg: $brand-success
579//** Info label background color
580// $label-info-bg: $brand-info
581//** Warning label background color
582// $label-warning-bg: $brand-warning
583//** Danger label background color
584// $label-danger-bg: $brand-danger
585
586//** Default label text color
587// $label-color: #fff
588//** Default text color of a linked label
589// $label-link-hover-color: #fff
590
591
592//== Modals
593//
594//##
595
596//** Padding applied to the modal body
597// $modal-inner-padding: 15px
598
599//** Padding applied to the modal title
600// $modal-title-padding: 15px
601//** Modal title line-height
602// $modal-title-line-height: $line-height-base
603
604//** Background color of modal content area
605// $modal-content-bg: #fff
606//** Modal content border color
607// $modal-content-border-color: rgba(0,0,0,.2)
608//** Modal content border color **for IE8**
609// $modal-content-fallback-border-color: #999
610
611//** Modal backdrop background color
612// $modal-backdrop-bg: #000
613//** Modal backdrop opacity
614// $modal-backdrop-opacity: .5
615//** Modal header border color
616// $modal-header-border-color: #e5e5e5
617//** Modal footer border color
618// $modal-footer-border-color: $modal-header-border-color
619
620// $modal-lg: 900px
621// $modal-md: 600px
622// $modal-sm: 300px
623
624
625//== Alerts
626//
627//## Define alert colors, border radius, and padding.
628
629// $alert-padding: 15px
630// $alert-border-radius: $border-radius-base
631// $alert-link-font-weight: bold
632
633// $alert-success-bg: $state-success-bg
634// $alert-success-text: $state-success-text
635// $alert-success-border: $state-success-border
636
637// $alert-info-bg: $state-info-bg
638// $alert-info-text: $state-info-text
639// $alert-info-border: $state-info-border
640
641// $alert-warning-bg: $state-warning-bg
642// $alert-warning-text: $state-warning-text
643// $alert-warning-border: $state-warning-border
644
645// $alert-danger-bg: $state-danger-bg
646// $alert-danger-text: $state-danger-text
647// $alert-danger-border: $state-danger-border
648
649
650//== Progress bars
651//
652//##
653
654//** Background color of the whole progress component
655// $progress-bg: #f5f5f5
656//** Progress bar text color
657// $progress-bar-color: #fff
658//** Variable for setting rounded corners on progress bar.
659// $progress-border-radius: $border-radius-base
660
661//** Default progress bar color
662// $progress-bar-bg: $brand-primary
663//** Success progress bar color
664// $progress-bar-success-bg: $brand-success
665//** Warning progress bar color
666// $progress-bar-warning-bg: $brand-warning
667//** Danger progress bar color
668// $progress-bar-danger-bg: $brand-danger
669//** Info progress bar color
670// $progress-bar-info-bg: $brand-info
671
672
673//== List group
674//
675//##
676
677//** Background color on `.list-group-item`
678// $list-group-bg: #fff
679//** `.list-group-item` border color
680// $list-group-border: #ddd
681//** List group border radius
682// $list-group-border-radius: $border-radius-base
683
684//** Background color of single list items on hover
685// $list-group-hover-bg: #f5f5f5
686//** Text color of active list items
687// $list-group-active-color: $component-active-color
688//** Background color of active list items
689// $list-group-active-bg: $component-active-bg
690//** Border color of active list elements
691// $list-group-active-border: $list-group-active-bg
692//** Text color for content within active list items
693// $list-group-active-text-color: lighten($list-group-active-bg, 40%)
694
695//** Text color of disabled list items
696// $list-group-disabled-color: $gray-light
697//** Background color of disabled list items
698// $list-group-disabled-bg: $gray-lighter
699//** Text color for content within disabled list items
700// $list-group-disabled-text-color: $list-group-disabled-color
701
702// $list-group-link-color: #555
703// $list-group-link-hover-color: $list-group-link-color
704// $list-group-link-heading-color: #333
705
706
707//== Panels
708//
709//##
710
711// $panel-bg: #fff
712// $panel-body-padding: 15px
713// $panel-heading-padding: 10px 15px
714// $panel-footer-padding: $panel-heading-padding
715// $panel-border-radius: $border-radius-base
716
717//** Border color for elements within panels
718// $panel-inner-border: #ddd
719// $panel-footer-bg: #f5f5f5
720
721// $panel-default-text: $gray-dark
722// $panel-default-border: #ddd
723// $panel-default-heading-bg: #f5f5f5
724
725// $panel-primary-text: #fff
726// $panel-primary-border: $brand-primary
727// $panel-primary-heading-bg: $brand-primary
728
729// $panel-success-text: $state-success-text
730// $panel-success-border: $state-success-border
731// $panel-success-heading-bg: $state-success-bg
732
733// $panel-info-text: $state-info-text
734// $panel-info-border: $state-info-border
735// $panel-info-heading-bg: $state-info-bg
736
737// $panel-warning-text: $state-warning-text
738// $panel-warning-border: $state-warning-border
739// $panel-warning-heading-bg: $state-warning-bg
740
741// $panel-danger-text: $state-danger-text
742// $panel-danger-border: $state-danger-border
743// $panel-danger-heading-bg: $state-danger-bg
744
745
746//== Thumbnails
747//
748//##
749
750//** Padding around the thumbnail image
751// $thumbnail-padding: 4px
752//** Thumbnail background color
753// $thumbnail-bg: $body-bg
754//** Thumbnail border color
755// $thumbnail-border: #ddd
756//** Thumbnail border radius
757// $thumbnail-border-radius: $border-radius-base
758
759//** Custom text color for thumbnail captions
760// $thumbnail-caption-color: $text-color
761//** Padding around the thumbnail caption
762// $thumbnail-caption-padding: 9px
763
764
765//== Wells
766//
767//##
768
769// $well-bg: #f5f5f5
770// $well-border: darken($well-bg, 7%)
771
772
773//== Badges
774//
775//##
776
777// $badge-color: #fff
778//** Linked badge text color on hover
779// $badge-link-hover-color: #fff
780// $badge-bg: $gray-light
781
782//** Badge text color in active nav link
783// $badge-active-color: $link-color
784//** Badge background color in active nav link
785// $badge-active-bg: #fff
786
787// $badge-font-weight: bold
788// $badge-line-height: 1
789// $badge-border-radius: 10px
790
791
792//== Breadcrumbs
793//
794//##
795
796// $breadcrumb-padding-vertical: 8px
797// $breadcrumb-padding-horizontal: 15px
798//** Breadcrumb background color
799// $breadcrumb-bg: #f5f5f5
800//** Breadcrumb text color
801// $breadcrumb-color: #ccc
802//** Text color of current page in the breadcrumb
803// $breadcrumb-active-color: $gray-light
804//** Textual separator for between breadcrumb elements
805// $breadcrumb-separator: "/"
806
807
808//== Carousel
809//
810//##
811
812// $carousel-text-shadow: 0 1px 2px rgba(0,0,0,.6)
813
814// $carousel-control-color: #fff
815// $carousel-control-width: 15%
816// $carousel-control-opacity: .5
817// $carousel-control-font-size: 20px
818
819// $carousel-indicator-active-bg: #fff
820// $carousel-indicator-border-color: #fff
821
822// $carousel-caption-color: #fff
823
824
825//== Close
826//
827//##
828
829// $close-font-weight: bold
830// $close-color: #000
831// $close-text-shadow: 0 1px 0 #fff
832
833
834//== Code
835//
836//##
837
838// $code-color: #c7254e
839// $code-bg: #f9f2f4
840
841// $kbd-color: #fff
842// $kbd-bg: #333
843
844// $pre-bg: #f5f5f5
845// $pre-color: $gray-dark
846// $pre-border-color: #ccc
847// $pre-scrollable-max-height: 340px
848
849
850//== Type
851//
852//##
853
854//** Horizontal offset for forms and lists.
855// $component-offset-horizontal: 180px
856//** Text muted color
857// $text-muted: $gray-light
858//** Abbreviations and acronyms border color
859// $abbr-border-color: $gray-light
860//** Headings small color
861// $headings-small-color: $gray-light
862//** Blockquote small color
863// $blockquote-small-color: $gray-light
864//** Blockquote font size
865// $blockquote-font-size: ($font-size-base * 1.25)
866//** Blockquote border color
867// $blockquote-border-color: $gray-lighter
868//** Page header border color
869// $page-header-border-color: $gray-lighter
870//** Width of horizontal description list titles
871// $dl-horizontal-offset: $component-offset-horizontal
872//** Point at which .dl-horizontal becomes horizontal
873// $dl-horizontal-breakpoint: $grid-float-breakpoint
874//** Horizontal line color.
875// $hr-border: $gray-lighter
diff --git a/client/app/stylesheets/index.scss b/client/app/stylesheets/index.scss
new file mode 100644
index 000000000..d13dcfa90
--- /dev/null
+++ b/client/app/stylesheets/index.scss
@@ -0,0 +1,88 @@
1.span_action {
2 margin: 5px;
3 cursor: pointer;
4}
5
6header div {
7 height: 50px;
8 line-height: 25px;
9 margin-bottom: 50px;
10}
11
12menu {
13 margin-right: 20px;
14 border-right: 1px solid rgba(0, 0, 0, 0.2);
15}
16
17menu .panel_button {
18 margin: 8px;
19 cursor: pointer;
20 transition: margin 0.2s;
21}
22
23menu .panel_button:hover {
24 margin-left: 15px;
25}
26
27menu .glyphicon {
28 margin: 5px;
29}
30
31#ajax_load {
32 min-height: 500px;
33}
34
35.loading {
36 display: inline-block;
37 margin-top: 100px;
38}
39
40.video {
41 margin-bottom: 10px;
42 transition: margin 0.5s ease;
43}
44
45.video:hover {
46 margin-left: 5px;
47}
48
49.video_name {
50 cursor: pointer;
51 margin-right: 5px;
52}
53
54.video_pod_url {
55 font-size: small;
56 color: rgba(0, 0, 0, 0.5);
57}
58
59.video_description {
60 font-size: small;
61 font-style: italic;
62 margin-left: 7px;
63}
64
65.btn-file {
66 position: relative;
67 overflow: hidden;
68}
69.btn-file input[type=file] {
70 position: absolute;
71 top: 0;
72 right: 0;
73 min-width: 100%;
74 min-height: 100%;
75 font-size: 100px;
76 text-align: right;
77 filter: alpha(opacity=0);
78 opacity: 0;
79 outline: none;
80 background: white;
81 cursor: inherit;
82 display: block;
83}
84
85.name_file {
86 display: inline-block;
87 margin-left: 10px;
88} \ No newline at end of file