Revision d0fe8c12
b/snf-cyclades-app/synnefo/ui/new_ui/ui/Gruntfile.js | ||
---|---|---|
1 |
module.exports = function(grunt) { |
|
2 |
|
|
3 |
// Project configuration. |
|
4 |
grunt.initConfig({ |
|
5 |
pkg: grunt.file.readJSON('package.json'), |
|
6 |
watch: { |
|
7 |
css: { |
|
8 |
files: [ |
|
9 |
'sass/*.scss', |
|
10 |
], |
|
11 |
tasks: ['compass'] |
|
12 |
}, |
|
13 |
js: { |
|
14 |
files: [ |
|
15 |
'javascripts/vendor/*.js', |
|
16 |
'javascripts/okeanos-ember/*.js', |
|
17 |
'javascripts/okeanos-scripts/*.js' |
|
18 |
], |
|
19 |
tasks: ['concat'] |
|
20 |
}, |
|
21 |
}, |
|
22 |
compass: { |
|
23 |
dist: { |
|
24 |
options: { |
|
25 |
sassDir: 'sass', |
|
26 |
cssDir: 'stylesheets', |
|
27 |
outputStyle: 'expanded', |
|
28 |
} |
|
29 |
} |
|
30 |
}, |
|
31 |
concat: { |
|
32 |
options: { |
|
33 |
separator: ';', |
|
34 |
}, |
|
35 |
dist: { |
|
36 |
files: { |
|
37 |
'javascripts/okeanos.js': ['javascripts/okeanos-scripts/common.js', 'javascripts/okeanos-scripts/checkboxes-radiobuttons.js', 'javascripts/okeanos-scripts/wizard.js', 'javascripts/okeanos-scripts/sshkeys-wizard.js'], |
|
38 |
'javascripts/okeanos-ember.js': ['javascripts/okeanos-ember/*.js'], |
|
39 |
} |
|
40 |
}, |
|
41 |
}, |
|
42 |
emberTemplates: { |
|
43 |
compile: { |
|
44 |
options: { |
|
45 |
templateBasePath: /javascripts\/templates\// |
|
46 |
}, |
|
47 |
files: { |
|
48 |
'javascripts/templates.js': 'javascripts/templates/*' |
|
49 |
} |
|
50 |
}, |
|
51 |
files: 'templates/*', |
|
52 |
tasks: ['emberTemplates'] |
|
53 |
} |
|
54 |
|
|
55 |
}); |
|
56 |
grunt.loadNpmTasks('grunt-contrib-watch'); |
|
57 |
grunt.loadNpmTasks('grunt-contrib-compass'); |
|
58 |
grunt.loadNpmTasks('grunt-contrib-concat'); |
|
59 |
grunt.loadNpmTasks('grunt-ember-templates'); |
|
60 |
|
|
61 |
// concat, ember-templates is necessary only the 1st time that I run it to create the the destination files that include the concatenated |
|
62 |
grunt.registerTask('default', ['concat', 'emberTemplates', 'compass', 'watch']); |
|
63 |
|
|
64 |
}; |
/dev/null | ||
---|---|---|
1 |
<!doctype html> |
|
2 |
<html> |
|
3 |
<head> |
|
4 |
<meta charset='utf-8' /> |
|
5 |
<meta name='viewport' content='width=device-width' /> |
|
6 |
<title>snf fonts</title> |
|
7 |
<link rel='stylesheet' href='stylesheets/font_custom.css' /> |
|
8 |
<!--[if lte IE 7]><script src='lte-ie7.js'></script><![endif]--> |
|
9 |
<style> |
|
10 |
section, header, footer {display: block; overflow: hidden;} |
|
11 |
body { |
|
12 |
font-family: sans-serif; |
|
13 |
color: #444; |
|
14 |
line-height: 1.5; |
|
15 |
font-size: 1em; |
|
16 |
} |
|
17 |
* { |
|
18 |
-moz-box-sizing: border-box; |
|
19 |
-webkit-box-sizing: border-box; |
|
20 |
box-sizing: border-box; |
|
21 |
margin: 0; |
|
22 |
padding: 0; |
|
23 |
} |
|
24 |
.glyph { |
|
25 |
font-size: 14px; |
|
26 |
float: left; |
|
27 |
text-align: center; |
|
28 |
background: #eee; |
|
29 |
padding: .75em; |
|
30 |
margin: .75em 1.5em .75em 1px; |
|
31 |
width: 20em; |
|
32 |
border-radius: .25em; |
|
33 |
box-shadow: inset 0 0 0 1px #f8f8f8, 0 0 0 1px #CCC; |
|
34 |
} |
|
35 |
.glyph.aux { |
|
36 |
background-color: #f8f8e7; |
|
37 |
} |
|
38 |
.glyph input { |
|
39 |
font-family: consolas, monospace; |
|
40 |
font-size: 13px; |
|
41 |
width: 100%; |
|
42 |
text-align: center; |
|
43 |
border: 0; |
|
44 |
box-shadow: 0 0 0 1px #ccc; |
|
45 |
padding: .125em; |
|
46 |
} |
|
47 |
.w-main { |
|
48 |
width: 80%; |
|
49 |
} |
|
50 |
.centered { |
|
51 |
margin-left: auto; |
|
52 |
margin-right: auto; |
|
53 |
} |
|
54 |
.fs1 { |
|
55 |
font-size: 2em; |
|
56 |
color: rgb(71, 176, 233); |
|
57 |
} |
|
58 |
header { |
|
59 |
margin: 2em 0; |
|
60 |
padding-bottom: .5em; |
|
61 |
color: #666; |
|
62 |
box-shadow: 0 2px #eee; |
|
63 |
} |
|
64 |
header h1 { |
|
65 |
font-size: 2em; |
|
66 |
font-weight: normal; |
|
67 |
} |
|
68 |
.clearfix:before, .clearfix:after { content: ''; display: table; } |
|
69 |
.clearfix:after, .clear { clear: both; } |
|
70 |
footer { |
|
71 |
margin-top: 2em; |
|
72 |
padding: .5em 0; |
|
73 |
box-shadow: 0 -2px #eee; |
|
74 |
} |
|
75 |
a, a:visited { |
|
76 |
color: #B35047; |
|
77 |
text-decoration: none; |
|
78 |
} |
|
79 |
a:hover, a:focus {color: #000;} |
|
80 |
.box1 { |
|
81 |
font-size: 14px; |
|
82 |
display: inline-block; |
|
83 |
width: 15em; |
|
84 |
padding: .25em .5em; |
|
85 |
background: #eee; |
|
86 |
margin: .5em 1em .5em 0; |
|
87 |
} |
|
88 |
.general { |
|
89 |
font-weight: bold; |
|
90 |
} |
|
91 |
h1, h2 { |
|
92 |
color: #666; |
|
93 |
font-weight: normal; |
|
94 |
} |
|
95 |
|
|
96 |
.note { |
|
97 |
font-style: italic; |
|
98 |
} |
|
99 |
|
|
100 |
section ul { |
|
101 |
list-style-type:circle; |
|
102 |
margin: 18px; |
|
103 |
} |
|
104 |
li { |
|
105 |
font-size: 14px; |
|
106 |
} |
|
107 |
</style> |
|
108 |
</head> |
|
109 |
<body> |
|
110 |
<div class='w-main centered'> |
|
111 |
<section class='mtm clearfix' > |
|
112 |
<header> |
|
113 |
<h1>Icons included in snf-font-1</h1> |
|
114 |
|
|
115 |
</header> |
|
116 |
|
|
117 |
<section> |
|
118 |
<h2>snf icons</h2> |
|
119 |
<div class='glyph'> |
|
120 |
<div class='fs1' aria-hidden='true' data-icon='v'></div> |
|
121 |
<input type='text' readonly='readonly' value='snf-network-outline [v]' /> |
|
122 |
</div> |
|
123 |
<div class='glyph'> |
|
124 |
<div class='fs1' aria-hidden='true' data-icon='K'></div> |
|
125 |
<input type='text' readonly='readonly' value='snf-network-full [K]' /> |
|
126 |
</div> |
|
127 |
<div class='glyph'> |
|
128 |
<div class='fs1' aria-hidden='true' data-icon='T'></div> |
|
129 |
<input type='text' readonly='readonly' value='snf-network-create-outline [T]' /> |
|
130 |
</div> |
|
131 |
<div class='glyph'> |
|
132 |
<div class='fs1' aria-hidden='true' data-icon='U'></div> |
|
133 |
<input type='text' readonly='readonly' value='snf-network-create-full [U]' /> |
|
134 |
</div> |
|
135 |
<div class='glyph'> |
|
136 |
<div class='fs1' aria-hidden='true' data-icon='7'></div> |
|
137 |
<input type='text' readonly='readonly' value='snf-network-broken-1-outline [7]' /> |
|
138 |
</div> |
|
139 |
<div class='glyph'> |
|
140 |
<div class='fs1' aria-hidden='true' data-icon='V'></div> |
|
141 |
<input type='text' readonly='readonly' value='snf-network-broken-1-full [V]' /> |
|
142 |
</div> |
|
143 |
<div class='glyph'> |
|
144 |
<div class='fs1' aria-hidden='true' data-icon='8'></div> |
|
145 |
<input type='text' readonly='readonly' value='snf-network-broken-2-outline [8]' /> |
|
146 |
</div> |
|
147 |
<div class='glyph'> |
|
148 |
<div class='fs1' aria-hidden='true' data-icon='W'></div> |
|
149 |
<input type='text' readonly='readonly' value='snf-network-broken-2-full [W]' /> |
|
150 |
</div> |
|
151 |
<div class='glyph'> |
|
152 |
<div class='fs1' aria-hidden='true' data-icon='w'></div> |
|
153 |
<input type='text' readonly='readonly' value='snf-pc-outline [w]' /> |
|
154 |
</div> |
|
155 |
<div class='glyph'> |
|
156 |
<div class='fs1' aria-hidden='true' data-icon='x'></div> |
|
157 |
<input type='text' readonly='readonly' value='snf-pc-full [x]' /> |
|
158 |
</div> |
|
159 |
<div class='glyph'> |
|
160 |
<div class='fs1' aria-hidden='true' data-icon='S'></div> |
|
161 |
<input type='text' readonly='readonly' value='snf-pc-create-full [S]' /> |
|
162 |
</div> |
|
163 |
<div class='glyph'> |
|
164 |
<div class='fs1' aria-hidden='true' data-icon='9'></div> |
|
165 |
<input type='text' readonly='readonly' value='snf-pc-broken-outline [9]' /> |
|
166 |
</div> |
|
167 |
<div class='glyph'> |
|
168 |
<div class='fs1' aria-hidden='true' data-icon='X'></div> |
|
169 |
<input type='text' readonly='readonly' value='snf-pc-broken-full [X]' /> |
|
170 |
</div> |
|
171 |
<div class='glyph'> |
|
172 |
<div class='fs1' aria-hidden='true' data-icon='!'></div> |
|
173 |
<input type='text' readonly='readonly' value='snf-pc-reboot-outline [!]' /> |
|
174 |
</div> |
|
175 |
<div class='glyph'> |
|
176 |
<div class='fs1' aria-hidden='true' data-icon='Y'></div> |
|
177 |
<input type='text' readonly='readonly' value='snf-pc-reboot-full [Y]' /> |
|
178 |
</div> |
|
179 |
<div class='glyph'> |
|
180 |
<div class='fs1' aria-hidden='true' data-icon='@'></div> |
|
181 |
<input type='text' readonly='readonly' value='snf-pc-switch-outline [@]' /> |
|
182 |
</div> |
|
183 |
<div class='glyph'> |
|
184 |
<div class='fs1' aria-hidden='true' data-icon='Z'></div> |
|
185 |
<input type='text' readonly='readonly' value='snf-pc-switch-full [Z]' /> |
|
186 |
</div> |
|
187 |
<div class='glyph'> |
|
188 |
<div class='fs1' aria-hidden='true' data-icon='u'></div> |
|
189 |
<input type='text' readonly='readonly' value='snf-volume-outline [u]' /> |
|
190 |
</div> |
|
191 |
<div class='glyph'> |
|
192 |
<div class='fs1' aria-hidden='true' data-icon='O'></div> |
|
193 |
<input type='text' readonly='readonly' value='snf-volume-full [O]' /> |
|
194 |
</div> |
|
195 |
<div class='glyph'> |
|
196 |
<div class='fs1' aria-hidden='true' data-icon='6'></div> |
|
197 |
<input type='text' readonly='readonly' value='snf-volume-create-full [6]' /> |
|
198 |
</div> |
|
199 |
<div class='glyph'> |
|
200 |
<div class='fs1' aria-hidden='true' data-icon='0'></div> |
|
201 |
<input type='text' readonly='readonly' value='snf-volume-broken-outline [0]' /> |
|
202 |
</div> |
|
203 |
<div class='glyph'> |
|
204 |
<div class='fs1' aria-hidden='true' data-icon='y'></div> |
|
205 |
<input type='text' readonly='readonly' value='snf-pithos-outline [y]' /> |
|
206 |
</div> |
|
207 |
<div class='glyph'> |
|
208 |
<div class='fs1' aria-hidden='true' data-icon='5'></div> |
|
209 |
<input type='text' readonly='readonly' value='snf-pithos-full [5]' /> |
|
210 |
</div> |
|
211 |
<div class='glyph'> |
|
212 |
<div class='fs1' aria-hidden='true' data-icon='z'></div> |
|
213 |
<input type='text' readonly='readonly' value='snf-dashboard-outline [z]' /> |
|
214 |
</div> |
|
215 |
<div class='glyph'> |
|
216 |
<div class='fs1' aria-hidden='true' data-icon='E'></div> |
|
217 |
<input type='text' readonly='readonly' value='snf-chip-outline [E]' /> |
|
218 |
</div> |
|
219 |
<div class='glyph'> |
|
220 |
<div class='fs1' aria-hidden='true' data-icon='3'></div> |
|
221 |
<input type='text' readonly='readonly' value='snf-chip-full [3]' /> |
|
222 |
</div> |
|
223 |
<div class='glyph'> |
|
224 |
<div class='fs1' aria-hidden='true' data-icon='F'></div> |
|
225 |
<input type='text' readonly='readonly' value='snf-lock-closed-full [F]' /> |
|
226 |
</div> |
|
227 |
<div class='glyph'> |
|
228 |
<div class='fs1' aria-hidden='true' data-icon='G'></div> |
|
229 |
<input type='text' readonly='readonly' value='snf-lock-open-full [G]' /> |
|
230 |
</div> |
|
231 |
<div class='glyph'> |
|
232 |
<div class='fs1' aria-hidden='true' data-icon='H'></div> |
|
233 |
<input type='text' readonly='readonly' value='snf-router-outline [H]' /> |
|
234 |
</div> |
|
235 |
<div class='glyph'> |
|
236 |
<div class='fs1' aria-hidden='true' data-icon='2'></div> |
|
237 |
<input type='text' readonly='readonly' value='snf-router-full [2]' /> |
|
238 |
</div> |
|
239 |
<div class='glyph'> |
|
240 |
<div class='fs1' aria-hidden='true' data-icon='I'></div> |
|
241 |
<input type='text' readonly='readonly' value='snf-www [I]' /> |
|
242 |
</div> |
|
243 |
<div class='glyph'> |
|
244 |
<div class='fs1' aria-hidden='true' data-icon='J'></div> |
|
245 |
<input type='text' readonly='readonly' value='snf-ram-outline [J]' /> |
|
246 |
</div> |
|
247 |
<div class='glyph'> |
|
248 |
<div class='fs1' aria-hidden='true' data-icon='R'></div> |
|
249 |
<input type='text' readonly='readonly' value='snf-ram-full [R]' /> |
|
250 |
</div> |
|
251 |
<div class='glyph'> |
|
252 |
<div class='fs1' aria-hidden='true' data-icon='e'></div> |
|
253 |
<input type='text' readonly='readonly' value='snf-snapshot-outline [e]' /> |
|
254 |
</div> |
|
255 |
<div class='glyph'> |
|
256 |
<div class='fs1' aria-hidden='true' data-icon='N'></div> |
|
257 |
<input type='text' readonly='readonly' value='snf-snapshot-full [N]' /> |
|
258 |
</div> |
|
259 |
<div class='glyph'> |
|
260 |
<div class='fs1' aria-hidden='true' data-icon='f'></div> |
|
261 |
<input type='text' readonly='readonly' value='snf-image-outline [f]' /> |
|
262 |
</div> |
|
263 |
<div class='glyph'> |
|
264 |
<div class='fs1' aria-hidden='true' data-icon='Q'></div> |
|
265 |
<input type='text' readonly='readonly' value='snf-image-full [Q]' /> |
|
266 |
</div> |
|
267 |
<div class='glyph'> |
|
268 |
<div class='fs1' aria-hidden='true' data-icon='m'></div> |
|
269 |
<input type='text' readonly='readonly' value='snf-plus-outline [m]' /> |
|
270 |
</div> |
|
271 |
<div class='glyph'> |
|
272 |
<div class='fs1' aria-hidden='true' data-icon='4'></div> |
|
273 |
<input type='text' readonly='readonly' value='snf-plus-full [4]' /> |
|
274 |
</div> |
|
275 |
<div class='glyph'> |
|
276 |
<div class='fs1' aria-hidden='true' data-icon='P'></div> |
|
277 |
<input type='text' readonly='readonly' value='snf-nic-outline [P]' /> |
|
278 |
</div> |
|
279 |
<div class='glyph'> |
|
280 |
<div class='fs1' aria-hidden='true' data-icon='r'></div> |
|
281 |
<input type='text' readonly='readonly' value='snf-nic-full [r]' /> |
|
282 |
</div> |
|
283 |
<div class='glyph'> |
|
284 |
<div class='fs1' aria-hidden='true' data-icon='#'></div> |
|
285 |
<input type='text' readonly='readonly' value='snf-key-outline [#]' /> |
|
286 |
</div> |
|
287 |
<div class='glyph'> |
|
288 |
<div class='fs1' aria-hidden='true' data-icon='1'></div> |
|
289 |
<input type='text' readonly='readonly' value='snf-key-full [1]' /> |
|
290 |
</div> |
|
291 |
</section> |
|
292 |
|
|
293 |
<section> |
|
294 |
<h2>checkboxes - radiobuttons</h2> |
|
295 |
<div class='glyph'> |
|
296 |
<div class='fs1' aria-hidden='true' data-icon='a'></div> |
|
297 |
<input type='text' readonly='readonly' value='snf-checkbox-unchecked [a]' /> |
|
298 |
</div> |
|
299 |
<div class='glyph'> |
|
300 |
<div class='fs1' aria-hidden='true' data-icon='b'></div> |
|
301 |
<input type='text' readonly='readonly' value='snf-checkbox-checked [b]' /> |
|
302 |
</div> |
|
303 |
<div class='glyph'> |
|
304 |
<div class='fs1' aria-hidden='true' data-icon='C'></div> |
|
305 |
<input type='text' readonly='readonly' value='snf-radio-unchecked [C]' /> |
|
306 |
</div> |
|
307 |
<div class='glyph'> |
|
308 |
<div class='fs1' aria-hidden='true' data-icon='B'></div> |
|
309 |
<input type='text' readonly='readonly' value='snf-radio-checked [B]' /> |
|
310 |
</div> |
|
311 |
</section> |
|
312 |
|
|
313 |
<section> |
|
314 |
<h2>close - cancel - remove</h2> |
|
315 |
<div class='glyph'> |
|
316 |
<div class='fs1' aria-hidden='true' data-icon='D'></div> |
|
317 |
<input type='text' readonly='readonly' value='snf-close [D]' /> |
|
318 |
</div> |
|
319 |
<div class='glyph'> |
|
320 |
<div class='fs1' aria-hidden='true' data-icon='c'></div> |
|
321 |
<input type='text' readonly='readonly' value='snf-cancel-circled [c]' /> |
|
322 |
</div> |
|
323 |
<div class='glyph'> |
|
324 |
<div class='fs1' aria-hidden='true' data-icon='n'></div> |
|
325 |
<input type='text' readonly='readonly' value='snf-minus-sign [n]' /> |
|
326 |
</div> |
|
327 |
<div class='glyph'> |
|
328 |
<div class='fs1' aria-hidden='true' data-icon='j'></div> |
|
329 |
<input type='text' readonly='readonly' value='snf-ban-circle [j]' /> |
|
330 |
</div> |
|
331 |
<div class='glyph'> |
|
332 |
<div class='fs1' aria-hidden='true' data-icon='$'></div> |
|
333 |
<input type='text' readonly='readonly' value='snf-trash-outline [$]' /> |
|
334 |
</div> |
|
335 |
<div class='glyph'> |
|
336 |
<div class='fs1' aria-hidden='true' data-icon='='></div> |
|
337 |
<input type='text' readonly='readonly' value='snf-trash-full [=]' /> |
|
338 |
</div> |
|
339 |
</section> |
|
340 |
|
|
341 |
<section> |
|
342 |
<h2>ok - confirm</h2> |
|
343 |
<div class='glyph'> |
|
344 |
<div class='fs1' aria-hidden='true' data-icon='l'></div> |
|
345 |
<input type='text' readonly='readonly' value='snf-ok-sign [l]' /> |
|
346 |
</div> |
|
347 |
<div class='glyph'> |
|
348 |
<div class='fs1' aria-hidden='true' data-icon='h'></div> |
|
349 |
<input type='text' readonly='readonly' value='snf-ok [h]' /> |
|
350 |
</div> |
|
351 |
</section> |
|
352 |
|
|
353 |
<section> |
|
354 |
<h2>show - preview - view type</h2> |
|
355 |
<div class='glyph'> |
|
356 |
<div class='fs1' aria-hidden='true' data-icon='A'></div> |
|
357 |
<input type='text' readonly='readonly' value='snf-eye [A]' /> |
|
358 |
</div> |
|
359 |
<div class='glyph'> |
|
360 |
<div class='fs1' aria-hidden='true' data-icon='t'></div> |
|
361 |
<input type='text' readonly='readonly' value='ssnf-gridview [t]' /> |
|
362 |
</div> |
|
363 |
<div class='glyph'> |
|
364 |
<div class='fs1' aria-hidden='true' data-icon='s'></div> |
|
365 |
<input type='text' readonly='readonly' value='snf-listview [s]' /> |
|
366 |
</div> |
|
367 |
</section> |
|
368 |
|
|
369 |
<section> |
|
370 |
<h2>arrows</h2> |
|
371 |
<div class='glyph'> |
|
372 |
<div class='fs1' aria-hidden='true' data-icon='L'></div> |
|
373 |
<input type='text' readonly='readonly' value='snf-arrow-up [L]' /> |
|
374 |
</div> |
|
375 |
<div class='glyph'> |
|
376 |
<div class='fs1' aria-hidden='true' data-icon='M'></div> |
|
377 |
<input type='text' readonly='readonly' value='snf-arrow-down [M]' /> |
|
378 |
</div> |
|
379 |
<div class='glyph'> |
|
380 |
<div class='fs1' aria-hidden='true' data-icon='_'></div> |
|
381 |
<input type='text' readonly='readonly' value='snf-arrow-left-small-full [_]' /> |
|
382 |
</div> |
|
383 |
<div class='glyph'> |
|
384 |
<div class='fs1' aria-hidden='true' data-icon='-'></div> |
|
385 |
<input type='text' readonly='readonly' value='snf-arrow-right-small-full [-]' /> |
|
386 |
</div> |
|
387 |
<div class='glyph'> |
|
388 |
<div class='fs1' aria-hidden='true' data-icon='('></div> |
|
389 |
<input type='text' readonly='readonly' value='snf-upload-full [()]' /> |
|
390 |
</div> |
|
391 |
<div class='glyph'> |
|
392 |
<div class='fs1' aria-hidden='true' data-icon='%'></div> |
|
393 |
<input type='text' readonly='readonly' value='snf-download-full [%]' /> |
|
394 |
</div> |
|
395 |
<div class='glyph'> |
|
396 |
<div class='fs1' aria-hidden='true' data-icon=')'></div> |
|
397 |
<input type='text' readonly='readonly' value='snf-refresh-outline [)]' /> |
|
398 |
</div> |
|
399 |
</section> |
|
400 |
|
|
401 |
<section> |
|
402 |
<h2>misc</h2> |
|
403 |
<div class='glyph'> |
|
404 |
<div class='fs1' aria-hidden='true' data-icon='q'></div> |
|
405 |
<input type='text' readonly='readonly' value='snf-edit [q]' /> |
|
406 |
</div> |
|
407 |
<div class='glyph'> |
|
408 |
<div class='fs1' aria-hidden='true' data-icon='d'></div> |
|
409 |
<input type='text' readonly='readonly' value='snf-search [d]' /> |
|
410 |
</div> |
|
411 |
<div class='glyph'> |
|
412 |
<div class='fs1' aria-hidden='true' data-icon='g'></div> |
|
413 |
<input type='text' readonly='readonly' value='snf-twitter-logo [g]' /> |
|
414 |
</div> |
|
415 |
<div class='glyph'> |
|
416 |
<div class='fs1' aria-hidden='true' data-icon='i'></div> |
|
417 |
<input type='text' readonly='readonly' value='snf-switch [i]' /> |
|
418 |
</div> |
|
419 |
<div class='glyph'> |
|
420 |
<div class='fs1' aria-hidden='true' data-icon='k'></div> |
|
421 |
<input type='text' readonly='readonly' value='snf-thunder-full [k]' /> |
|
422 |
</div> |
|
423 |
<div class='glyph'> |
|
424 |
<div class='fs1' aria-hidden='true' data-icon='o'></div> |
|
425 |
<input type='text' readonly='readonly' value='snf-info-outline [o]' /> |
|
426 |
</div> |
|
427 |
<div class='glyph'> |
|
428 |
<div class='fs1' aria-hidden='true' data-icon='p'></div> |
|
429 |
<input type='text' readonly='readonly' value='snf-info-full [p]' /> |
|
430 |
</div> |
|
431 |
<div class='glyph'> |
|
432 |
<div class='fs1' aria-hidden='true' data-icon='*'></div> |
|
433 |
<input type='text' readonly='readonly' value='snf-person-outline [*]' /> |
|
434 |
</div> |
|
435 |
<div class='glyph'> |
|
436 |
<div class='fs1' aria-hidden='true' data-icon='?'></div> |
|
437 |
<input type='text' readonly='readonly' value='snf-copy-outline [?]' /> |
|
438 |
</div> |
|
439 |
<div class='glyph'> |
|
440 |
<div class='fs1' aria-hidden='true' data-icon= '"'></div> |
|
441 |
<input type='text' readonly='readonly' value='snf-copy-full ["]' /> |
|
442 |
</div> |
|
443 |
<div class='glyph'> |
|
444 |
<div class='fs1' aria-hidden='true' data-icon='&'></div> |
|
445 |
<input type='text' readonly='readonly' value='snf-link-outline [&]' /> |
|
446 |
</div> |
|
447 |
<div class='glyph aux'> |
|
448 |
<div class='fs1' aria-hidden='true' data-icon-aux='f'></div> |
|
449 |
<input type='text' readonly='readonly' value='snf-folder-outline [f]' /> |
|
450 |
</div> |
|
451 |
<div class='glyph aux'> |
|
452 |
<div class='fs1' aria-hidden='true' data-icon-aux='F'></div> |
|
453 |
<input type='text' readonly='readonly' value='snf-folder-full [F]' /> |
|
454 |
</div> |
|
455 |
<div class='glyph aux'> |
|
456 |
<div class='fs1' aria-hidden='true' data-icon-aux='a'></div> |
|
457 |
<input type='text' readonly='readonly' value='snf-folder-create-outline [a]' /> |
|
458 |
</div> |
|
459 |
<div class='glyph aux'> |
|
460 |
<div class='fs1' aria-hidden='true' data-icon-aux= 'A'></div> |
|
461 |
<input type='text' readonly='readonly' value='snf-folder-create-full [A]' /> |
|
462 |
</div> |
|
463 |
<div class='glyph aux'> |
|
464 |
<div class='fs1' aria-hidden='true' data-icon-aux='e'></div> |
|
465 |
<input type='text' readonly='readonly' value='snf-folder-move-outline [e]' /> |
|
466 |
</div> |
|
467 |
<div class='glyph aux'> |
|
468 |
<div class='fs1' aria-hidden='true' data-icon-aux='E'></div> |
|
469 |
<input type='text' readonly='readonly' value='snf-folder-move-full [E]' /> |
|
470 |
</div> |
|
471 |
<div class='glyph aux'> |
|
472 |
<div class='fs1' aria-hidden='true' data-icon-aux='c'></div> |
|
473 |
<input type='text' readonly='readonly' value='snf-shared-by-me-outline [c]' /> |
|
474 |
</div> |
|
475 |
<div class='glyph aux'> |
|
476 |
<div class='fs1' aria-hidden='true' data-icon-aux='C'></div> |
|
477 |
<input type='text' readonly='readonly' value='snf-shared-by-me-full [C]' /> |
|
478 |
</div> |
|
479 |
<div class='glyph aux'> |
|
480 |
<div class='fs1' aria-hidden='true' data-icon-aux='d'></div> |
|
481 |
<input type='text' readonly='readonly' value='snf-shared-to-me-outline [d]' /> |
|
482 |
</div> |
|
483 |
<div class='glyph aux'> |
|
484 |
<div class='fs1' aria-hidden='true' data-icon-aux='D'></div> |
|
485 |
<input type='text' readonly='readonly' value='snf-shared-to-me-full [D]' /> |
|
486 |
</div> |
|
487 |
</section> |
|
488 |
|
|
489 |
</section> |
|
490 |
</div> |
|
491 |
</body> |
|
492 |
</html> |
/dev/null | ||
---|---|---|
1 |
|
|
2 |
|
|
3 |
<!DOCTYPE html> |
|
4 |
<!--[if lte IE 7]><script src="javascripts/lte-ie7.js"></script><![endif]--> |
|
5 |
<!--[if IE 8]> <html class="no-js lt-ie9" lang="en"> <![endif]--> |
|
6 |
<!--[if gt IE 8]><!--> <html class="no-js" lang="en"> <!--<![endif]--> |
|
7 |
|
|
8 |
<head> |
|
9 |
<meta charset="utf-8" /> |
|
10 |
<meta name="viewport" content="width=device-width" /> |
|
11 |
<title>Images list</title> |
|
12 |
<link href='https://fonts.googleapis.com/css?family=Open+Sans:300,400,600,700&subset=latin,greek-ext,greek' rel='stylesheet' type='text/css'> |
|
13 |
<link rel="stylesheet" href="stylesheets/normalize.css" /> |
|
14 |
<link rel="stylesheet" href="stylesheets/app.css" /> |
|
15 |
<link rel="stylesheet" href="stylesheets/font_custom.css" /> |
|
16 |
<link rel="stylesheet" href="stylesheets/jquery.jscrollpane.css" media="all" /> |
|
17 |
<link rel="stylesheet" href="stylesheets/magnific-popup.css" /> |
|
18 |
<script src="javascripts/vendor/custom.modernizr.js"></script> |
|
19 |
</head> |
|
20 |
<body> |
|
21 |
<header class="header"> |
|
22 |
<nav> |
|
23 |
<ul class="icons-nav"> |
|
24 |
<li><a href="vm_list.html" data-tooltip class="has-tip" title="Machines"><span class="snf-pc-outline"></span></a></li> |
|
25 |
<li><a href="network_list.html" data-tooltip class="has-tip" title="Networks"><span class="snf-network-outline"></span></a></li> |
|
26 |
<li><a href="volumes_list.html" data-tooltip class="has-tip" title="Volumes"><span class="snf-volume-outline"></span></a></li> |
|
27 |
<li><a href="pithos.html" data-tooltip class="has-tip" title="Storage" ><span class="snf-pithos-outline"></span></a></li> |
|
28 |
<li><a href="images_list.html" data-tooltip class="has-tip current" title="Images" ><span class="snf-image-outline"></span></a></li> |
|
29 |
<li><a href="snapshots_list.html" data-tooltip class="has-tip" title="Snapshots" ><span class="snf-snapshot-outline"></span></a></li> |
|
30 |
<li><a href="" data-tooltip class="has-tip" title="IPs"><span class="snf-nic-outline"></span></a></li> |
|
31 |
<li><a href="" data-tooltip class="has-tip" title="SSH keys"><span class="snf-key-outline"></span></a></li> |
|
32 |
</ul> |
|
33 |
</nav> |
|
34 |
<div class="login"> |
|
35 |
<div class="wrap"> |
|
36 |
<a href="">user1@synnefo.org</a> |
|
37 |
<ul> |
|
38 |
<li><a href="">dashboard</a></li> |
|
39 |
<li><a href="">sign out</a></li> |
|
40 |
</ul> |
|
41 |
</div> |
|
42 |
</div> |
|
43 |
<div class="logo"> |
|
44 |
<a href="index.html"><img src="images/synnefo-logo.png" alt="software logo"></a> |
|
45 |
</div> |
|
46 |
</header> |
|
47 |
|
|
48 |
<div class="body-wrapper"> |
|
49 |
|
|
50 |
<!-- overlays start --> |
|
51 |
<div class="overlay-area-custom"> |
|
52 |
|
|
53 |
<div id="overlay1" class="overlay-div"> |
|
54 |
<a href="" class="close"><span class="snf-close"></span></a> |
|
55 |
<p>Are you sure you want to reboot your machine?</p> |
|
56 |
<p class="buttons"><a href="" class="btn4">YES</a><a href="" class="btn4">NO</a></p> |
|
57 |
</div> |
|
58 |
<div id="overlay2" class="overlay-div"> |
|
59 |
<p>Are you sure you want to shutdown your machine?</p> |
|
60 |
<p class="buttons"><a href="" class="btn4">YES</a><a href="" class="btn4">NO</a></p> |
|
61 |
</div> |
|
62 |
<div id="image-wizard" class="overlay-div wizard"> |
|
63 |
<div class="top"> |
|
64 |
<div class="numbers"> |
|
65 |
<div class="menus row"> |
|
66 |
<a href="" class="close"><span class="snf-close"></span></a> |
|
67 |
<ul class="nums"> |
|
68 |
<li class="preselected current"> |
|
69 |
<em><span>1</span></em> |
|
70 |
<p><strong>To be added...</strong></p> |
|
71 |
</li> |
|
72 |
</ul> |
|
73 |
</div> |
|
74 |
</div> |
|
75 |
<div class="row"> |
|
76 |
<nav class="sub-menu" data-step=1> |
|
77 |
</nav> |
|
78 |
</div> |
|
79 |
</div> |
|
80 |
<div class="middle"> |
|
81 |
<div class="steps"> |
|
82 |
<div class="step step-1 preselected current"> |
|
83 |
</div> |
|
84 |
</div> |
|
85 |
</div> |
|
86 |
<!-- new tba start --> |
|
87 |
<div class="bottom"> |
|
88 |
<div class="row"> |
|
89 |
<a href="" class="nav prev"><span>CANCEL</span></a> |
|
90 |
<a href="" class="nav next" data-next="el1"><span>CREATE</span></a> |
|
91 |
|
|
92 |
</div> |
|
93 |
</div> |
|
94 |
<!-- new tba end --> |
|
95 |
|
|
96 |
</div> |
|
97 |
|
|
98 |
</div> |
|
99 |
<!-- overlays end --> |
|
100 |
|
|
101 |
<section class="actions-bar clearfix"> |
|
102 |
<h2>Images</h2> |
|
103 |
<div class="rt-actions"> |
|
104 |
<a href="" class="single"></a> |
|
105 |
<a href="#grid" class="grid"><span class="snf-gridview current"></span></a> |
|
106 |
<a href="#list" class="list"><span class="snf-listview "></span></a> |
|
107 |
</div> |
|
108 |
<div class="filter-menu"> |
|
109 |
<a class="filter" href="">Filter</a> |
|
110 |
<ul class="options"> |
|
111 |
<li><a href=""> set an option</a></li> |
|
112 |
<li><a href=""> set an option</a></li> |
|
113 |
<li><a href=""> set an option</a></li> |
|
114 |
<li><a href=""> set an option</a></li> |
|
115 |
</ul> |
|
116 |
</div> |
|
117 |
<div id="hd-search" class="hd-search"> |
|
118 |
<form> |
|
119 |
<span class="hd-icon-search snf-search"></span> |
|
120 |
<input class="hd-search-input" placeholder="Enter your search term..." type="search" value="" name="search" id="search"> |
|
121 |
</form> |
|
122 |
</div> |
|
123 |
</section> |
|
124 |
<section class="main row"> |
|
125 |
<div class="images entities grid-view"> |
|
126 |
<ul class="items-list"> |
|
127 |
<li data-status="add-new" class="add-new not-selectable" data-overlay-id="image-wizard"> |
|
128 |
<div class="container"> |
|
129 |
<a href="" class="check"> |
|
130 |
<span class="snf-checkbox-unchecked"></span> |
|
131 |
</a> |
|
132 |
<div class="img-wrap"> |
|
133 |
<span class="snf-image-full snf-font"></span> |
|
134 |
<span class="os symbol">+</span> |
|
135 |
</div> |
|
136 |
<h4>New Image</h4> |
|
137 |
</div> |
|
138 |
<div class="tags"> |
|
139 |
</div> |
|
140 |
<div class= "status"> |
|
141 |
</div> |
|
142 |
</li> |
|
143 |
<li data-status="available" class="running"> |
|
144 |
<div class="more"> |
|
145 |
<div class="clearfix"> |
|
146 |
<div class="col lt"> |
|
147 |
<ul> |
|
148 |
<li><a href="">Option i</a></li> |
|
149 |
<li><a href="">Option j</a></li> |
|
150 |
<li><a href="">Option k</a></li> |
|
151 |
<li><a href="">Option l</a></li> |
|
152 |
<li><a href="">Option m</a></li> |
|
153 |
</ul> |
|
154 |
</div> |
|
155 |
<div class="col rt"> |
|
156 |
<ul> |
|
157 |
<li><a href="">Option i</a></li> |
|
158 |
<li><a href="">Option j</a></li> |
|
159 |
</ul> |
|
160 |
</div> |
|
161 |
</div> |
|
162 |
<div class="name">Image Name</div> |
|
163 |
</div> |
|
164 |
<div class="container"> |
|
165 |
<a href="" class="check"> |
|
166 |
<span class="snf-checkbox-unchecked"></span> |
|
167 |
</a> |
|
168 |
<div class="img-wrap"> |
|
169 |
<span class="snf-font snf-image-full"></span> |
|
170 |
</div> |
|
171 |
<h4>Image Name</h4> |
|
172 |
<div class="tags"> |
|
173 |
</div> |
|
174 |
<div class= "status"> |
|
175 |
<span class="state"></span> |
|
176 |
<span class="logs"></span> |
|
177 |
</div> |
|
178 |
</div> |
|
179 |
</li> |
|
180 |
<li data-status="active" class="running"> |
|
181 |
<div class="more"> |
|
182 |
<div class="clearfix"> |
|
183 |
<div class="col lt"> |
|
184 |
<ul> |
|
185 |
<li><a href="">Option i</a></li> |
|
186 |
<li><a href="">Option j</a></li> |
|
187 |
<li><a href="">Option k</a></li> |
|
188 |
<li><a href="">Option l</a></li> |
|
189 |
<li><a href="">Option m</a></li> |
|
190 |
</ul> |
|
191 |
</div> |
|
192 |
<div class="col rt"> |
|
193 |
<ul> |
|
194 |
<li><a href="">Option i</a></li> |
|
195 |
<li><a href="">Option j</a></li> |
|
196 |
</ul> |
|
197 |
</div> |
|
198 |
</div> |
|
199 |
<div class="name">Image Name</div> |
|
200 |
</div> |
|
201 |
<div class="container"> |
|
202 |
<a href="" class="check"> |
|
203 |
<span class="snf-checkbox-unchecked"></span> |
|
204 |
</a> |
|
205 |
<div class="img-wrap"> |
|
206 |
<span class="snf-font snf-image-full"></span> |
|
207 |
</div> |
|
208 |
<h4>Image Name</h4> |
|
209 |
<div class="tags"> |
|
210 |
</div> |
|
211 |
<div class= "status"> |
|
212 |
<span class="state"></span> |
|
213 |
<span class="logs"></span> |
|
214 |
</div> |
|
215 |
</div> |
|
216 |
</li> |
|
217 |
</ul> |
|
218 |
<div class="lt-bar"> |
|
219 |
<ul> |
|
220 |
<li class="select trigger-checkbox"> |
|
221 |
<a href="" class="check"> |
|
222 |
<span class="snf-checkbox-unchecked checkbox"></span> |
|
223 |
</a> |
|
224 |
<em>Un</em>Select all |
|
225 |
</li> |
|
226 |
<li class="running"><a href="#" title="">Destroy</a></li> |
|
227 |
<!-- in case we want an action always activated |
|
228 |
<li class="pernament"><a href="" class="active">Action</a></li> --> |
|
229 |
</ul> |
|
230 |
</div> |
|
231 |
<div class="welcome">It seems you have not yet created a VM! Go ahead!</div> |
|
232 |
</div> |
|
233 |
</section> |
|
234 |
</div> |
|
235 |
|
|
236 |
|
|
237 |
<script src="javascripts/vendor/jquery.js"></script> |
|
238 |
<script src="javascripts/jquery-ui-1.10.3.custom.min.js"></script> |
|
239 |
<script src="javascripts/underscore-min.js"></script> |
|
240 |
<script src="javascripts/foundation/foundation.js"></script> |
|
241 |
<script src="javascripts/foundation/foundation.alerts.js"></script> |
|
242 |
<script src="javascripts/foundation/foundation.clearing.js"></script> |
|
243 |
<script src="javascripts/foundation/foundation.cookie.js"></script> |
|
244 |
<script src="javascripts/foundation/foundation.dropdown.js"></script> |
|
245 |
<script src="javascripts/foundation/foundation.forms.js"></script> |
|
246 |
<script src="javascripts/foundation/foundation.joyride.js"></script> |
|
247 |
<script src="javascripts/foundation/foundation.magellan.js"></script> |
|
248 |
<script src="javascripts/foundation/foundation.orbit.js"></script> |
|
249 |
<script src="javascripts/foundation/foundation.placeholder.js"></script> |
|
250 |
<script src="javascripts/foundation/foundation.reveal.js"></script> |
|
251 |
<script src="javascripts/foundation/foundation.section.js"></script> |
|
252 |
<script src="javascripts/foundation/foundation.tooltips.js"></script> |
|
253 |
<script src="javascripts/foundation/foundation.topbar.js"></script> |
|
254 |
<script type="text/javascript" src="javascripts/jquery.scrollTo.js"></script> |
|
255 |
<script type="text/javascript" src="javascripts/jquery.easing.1.3.js"></script> |
|
256 |
<script type="text/javascript" src="javascripts/jquery.mousewheel.js"></script> |
|
257 |
<script type="text/javascript" src="javascripts/jquery.jscrollpane.js"></script> |
|
258 |
<!-- dropzone.js used for drag and drop files to upload them --> |
|
259 |
<script type="text/javascript" src="javascripts/dropzone.js"></script> |
|
260 |
<script type="text/javascript" src="javascripts/jquery.magnific-popup.js"></script> |
|
261 |
<!-- fabrastic.js used for the color picker --> |
|
262 |
<script type="text/javascript" src="javascripts/farbtastic.js"></script> |
|
263 |
<script type="text/javascript" src="javascripts/jquery.scrollintoview.js"></script> |
|
264 |
<script src="javascripts/common.js"></script> |
|
265 |
|
|
266 |
<script type="text/javascript" src="javascripts/wizard.js"></script> |
|
267 |
<script type="text/javascript" src="javascripts/sshkeys-wizard.js"></script> |
|
268 |
<script type="text/javascript" src="javascripts/checkboxes-radiobuttons.js"></script> |
|
269 |
<script> |
|
270 |
$(document).foundation(); |
|
271 |
</script> |
|
272 |
</body> |
|
273 |
</html> |
b/snf-cyclades-app/synnefo/ui/new_ui/ui/index.html | ||
---|---|---|
1 |
|
|
2 | 1 |
<!DOCTYPE html> |
2 |
<!--[if lte IE 7]><script src="javascripts/lte-ie7.js"></script><![endif]--> |
|
3 | 3 |
<!--[if IE 8]> <html class="no-js lt-ie9" lang="en"> <![endif]--> |
4 | 4 |
<!--[if gt IE 8]><!--> <html class="no-js" lang="en"> <!--<![endif]--> |
5 | 5 |
|
6 | 6 |
<head> |
7 | 7 |
<meta charset="utf-8" /> |
8 |
<meta name="viewport" content="width=device-width" /> |
|
9 |
<title>New ui mocks</title>
|
|
10 |
<link href='https://fonts.googleapis.com/css?family=Open+Sans:300,400,600,700&subset=latin,greek-ext,greek' rel='stylesheet' type='text/css'> |
|
11 |
<link rel="stylesheet" href="stylesheets/normalize.css" /> |
|
12 |
|
|
13 |
<link rel="stylesheet" href="stylesheets/app.css" />
|
|
14 |
|
|
15 |
|
|
16 |
<script src="javascripts/vendor/custom.modernizr.js"></script>
|
|
8 |
<meta name="viewport" content="width=device-width" />
|
|
9 |
<title>VMs list</title>
|
|
10 |
<link href='https://fonts.googleapis.com/css?family=Open+Sans:300,400,600,700&subset=latin,greek-ext,greek' rel='stylesheet' type='text/css'>
|
|
11 |
<link rel="stylesheet" href="stylesheets/normalize.css" />
|
|
12 |
<link rel="stylesheet" href="stylesheets/app.css" /> |
|
13 |
<link rel="stylesheet" href="stylesheets/farbtastic.css" />
|
|
14 |
<link rel="stylesheet" href="stylesheets/font_custom.css" /> |
|
15 |
<link rel="stylesheet" href="stylesheets/jquery.jscrollpane.css" media="all" /> |
|
16 |
<link rel="stylesheet" href="stylesheets/magnific-popup.css" />
|
|
17 | 17 |
|
18 | 18 |
</head> |
19 | 19 |
<body> |
20 |
<div class="row"> |
|
21 |
<h2>Misc</h2> |
|
22 |
<ul> |
|
23 |
<li><a href="icon_guide.html">Info about Icon-Font</a></li> |
|
24 |
</ul> |
|
25 |
|
|
26 |
<h2>Kpal original designs</h2> |
|
27 |
<ul> |
|
28 |
<li><a href="vm_list.html">VMs list page</a></li> |
|
29 |
<li><a href="vm_list_no_vms.html">VMs list with no machine</a></li> |
|
30 |
<li><a href="vm_details.html">VM Details</a></li> |
|
31 |
<li><a href="network_list.html">Networks list page</a></li> |
|
32 |
<li><a href="network_details.html">Network Details</a></li> |
|
33 |
<li><a href="volumes_list.html">Volumes list</a></li> |
|
34 |
<li><a href="images_list.html">Images list</a></li> |
|
35 |
<li><a href="snapshots_list.html">Snapshots list</a></li> |
|
36 |
<li><a href="pithos.html">Pithos</a></li> |
|
37 |
</ul> |
|
20 |
<script type="text/x-handlebars"> |
|
21 |
<header class="header"> |
|
22 |
<nav> |
|
23 |
{{collection Okeanos.NavigationView}} |
|
24 |
|
|
25 |
</nav> |
|
26 |
{{login-menu email = model.email}} |
|
27 |
<div class="logo"> |
|
28 |
<a href="index.html"><img src="images/synnefo-logo.png" alt="software logo"></a> |
|
29 |
</div> |
|
30 |
</header> |
|
31 |
<div class="body-wrapper"> |
|
32 |
<section class="actions-bar clearfix"> |
|
33 |
<h2>{{pageTitle}}</h2> |
|
34 |
<div class="rt-actions"> |
|
35 |
<a href="vm_details.html" class="single"></a> |
|
36 |
<a href="#grid" class="grid"><span class="snf-gridview current"></span></a> |
|
37 |
<a href="#list" class="list"><span class="snf-listview "></span></a> |
|
38 |
</div> |
|
39 |
<div class="filter-menu"> |
|
40 |
<div><a class="filter" href="">Filter</a></div> |
|
41 |
<ul class="options"> |
|
42 |
<li><a href="">option 1</a></li> |
|
43 |
<li><a href="">option 2</a></li> |
|
44 |
<li><a href="">option 3</a></li> |
|
45 |
<li><a href="">option 4</a></li> |
|
46 |
</ul> |
|
47 |
</div> |
|
48 |
<div id="hd-search" class="hd-search"> |
|
49 |
<form> |
|
50 |
<span class="hd-icon-search snf-search"></span> |
|
51 |
<input class="hd-search-input" placeholder="Enter your search term..." type="search" value="" name="search" id="search"> |
|
52 |
</form> |
|
53 |
</div> |
|
54 |
</section> |
|
55 |
<section class="main row"> |
|
56 |
{{outlet}} |
|
57 |
</section> |
|
38 | 58 |
</div> |
59 |
</script> |
|
60 |
<script type="text/x-handlebars" data-template-name="nets"> |
|
61 |
<h2>nets</h2> |
|
62 |
</script> |
|
63 |
<script type="text/x-handlebars" data-template-name="elems"> |
|
64 |
<h2>{{other}}</h2> |
|
65 |
<div {{bind-attr class=":entities :grid-view"}}> |
|
66 |
<ul class="items-list"> |
|
67 |
<li>Add New...</li> |
|
68 |
{{#each}} |
|
69 |
{{view Okeanos.ElemView}} |
|
70 |
{{/each}} |
|
71 |
</ul> |
|
72 |
</div> |
|
73 |
</script> |
|
39 | 74 |
|
40 |
<script> |
|
41 |
document.write('<script src=' + |
|
42 |
('__proto__' in {} ? 'javascripts/vendor/zepto' : 'javascripts/vendor/jquery') + |
|
43 |
'.js><\/script>') |
|
44 |
</script> |
|
45 |
|
|
46 |
<script src="javascripts/foundation/foundation.js"></script> |
|
75 |
<script type="text/x-handlebars" data-template-name="elem"> |
|
76 |
<ul class="side-actions"> |
|
77 |
<li> |
|
78 |
<a href="vm_details.html" data-tooltip title="view details" class="details has-tip">i</a> |
|
79 |
</li> |
|
80 |
<li> |
|
81 |
<a href="#" title="connect to machine" data-tooltip data-reveal-id="vm-connect" class="has-tip"> |
|
82 |
<span class="snf-thunder-full"></span> |
|
83 |
</a> |
|
84 |
</li> |
|
85 |
<li class="more-actions"> |
|
86 |
<a href="#" title="">...</a> |
|
87 |
<ul class="many"> |
|
88 |
{{#each setAvailableActions}} |
|
89 |
<li> |
|
90 |
{{actionBtns-simple actionLabel=this.description elementID=controller.id action= this.description param=controller.id}} |
|
91 |
</li> |
|
92 |
{{/each}} |
|
93 |
</ul> |
|
94 |
</li> |
|
95 |
<li class="bottom"> |
|
96 |
<a href="" title=""><span ></span></a> |
|
97 |
<ul class="options"> |
|
98 |
<li class="selected"><a href="">My awesome project</a></li> |
|
99 |
<li><a href="">Project 1</a></li> |
|
100 |
<li><a href="">Project 2</a></li> |
|
101 |
<li><a href="">Project 3</a></li> |
|
102 |
<li><a href="">Project 4</a></li> |
|
103 |
</ul> |
|
104 |
<ul> |
|
105 |
<li>My awesome project</li> |
|
106 |
<li><a href="" class="reassign">Reassign<span class="arrow-right"></span></a></li> |
|
107 |
</ul> |
|
108 |
</li> |
|
109 |
</ul> |
|
110 |
<div class="container"> |
|
111 |
<a href="" class="check"> |
|
112 |
<span class="snf-checkbox-unchecked"></span> |
|
113 |
</a> |
|
114 |
<div class="img-wrap"> |
|
115 |
<span {{bind-attr class="parentController.icon :snf-font"}}></span> |
|
116 |
{{#if parentController.hasOS}} |
|
117 |
<span {{bind-attr class="os :os"}}></span> |
|
118 |
{{/if}} |
|
119 |
</div> |
|
120 |
<h4>{{icon}}</h4> |
|
121 |
<div class="actions"> |
|
122 |
<a href="" data-reveal-id="vm-connect" data-tooltip title="connect" class="connect has-tip"><span class="snf-thunder-full"></span></a> |
|
123 |
<a href="vm_details.html" data-tooltip title="view vm details" class="snf-info-outline has-tip">i</a> |
|
124 |
</div> |
|
125 |
<div class="tags"> |
|
126 |
</div> |
|
127 |
<div class= "status"> |
|
128 |
<span class="state">{{parentController.icon}}</span> |
|
129 |
<span class="state">{{status}}</span> |
|
130 |
<span class="logs">{{name}}</span> |
|
131 |
</div> |
|
132 |
<div class="info"><a {{bind-attr href=hostname}} title="">{{hostname}}</a></div> |
|
133 |
</div> |
|
134 |
</script> |
|
47 | 135 |
|
136 |
|
|
137 |
<script type="text/x-handlebars" data-template-name="volumes"> |
|
138 |
<h2>volumes</h2> |
|
139 |
</script> |
|
140 |
<script type="text/x-handlebars" data-template-name="pithos"> |
|
141 |
<h2>pithos</h2> |
|
142 |
</script> |
|
143 |
<script type="text/x-handlebars" data-template-name="snapshots"> |
|
144 |
<h2>shapshots</h2> |
|
145 |
</script> |
|
146 |
<script type="text/x-handlebars" data-template-name="images"> |
|
147 |
<h2>images</h2> |
|
148 |
</script> |
|
149 |
<script type="text/x-handlebars" data-template-name="ips"> |
|
150 |
<h2>ips</h2> |
|
151 |
</script> |
|
152 |
<script type="text/x-handlebars" data-template-name="sshkeys"> |
|
153 |
<h2>sshkeys</h2> |
|
154 |
</script> |
|
155 |
|
|
156 |
|
|
157 |
<!-- COMPONENTS --> |
|
158 |
<script type="text/x-handlebars" id="components/actionBtns-simple"> |
|
159 |
{{actionLabel}} - {{elementID}} |
|
160 |
</script> |
|
161 |
|
|
162 |
<script type="text/x-handlebars" id="components/login-menu"> |
|
163 |
<div class="wrap"> |
|
164 |
<a href="">{{email}}</a> |
|
165 |
<ul> |
|
166 |
<li><a href="">dashboard</a></li> |
|
167 |
<li><a href="">sign out</a></li> |
|
168 |
</ul> |
|
169 |
</div> |
|
170 |
</script> |
|
171 |
|
|
172 |
|
|
173 |
|
|
174 |
|
|
175 |
|
|
176 |
<script src="javascripts/custom.modernizr.js"></script> |
|
177 |
<script src="javascripts/jquery.js"></script> |
|
178 |
<script src="javascripts/jquery-ui-1.10.3.custom.min.js"></script> |
|
179 |
<script src="javascripts/handlebars-1.1.2.js"></script> |
|
180 |
<script src="javascripts/ember-1.3.0.js"></script> |
|
181 |
<script src="javascripts/ember-data.js"></script> |
|
182 |
<script src="javascripts/underscore-min.js"></script> |
|
183 |
<script src="javascripts/okeanos.js"></script> |
|
184 |
<!-- templates must be loaded before we use it --> |
|
185 |
<script src="javascripts/templates.js"></script> |
|
186 |
<script src="javascripts/okeanos-ember.js"></script> |
|
187 |
<script src="javascripts/foundation/foundation.js"></script> |
|
48 | 188 |
<script src="javascripts/foundation/foundation.alerts.js"></script> |
49 | 189 |
|
50 | 190 |
<script src="javascripts/foundation/foundation.clearing.js"></script> |
... | ... | |
68 | 208 |
<script src="javascripts/foundation/foundation.section.js"></script> |
69 | 209 |
|
70 | 210 |
<script src="javascripts/foundation/foundation.tooltips.js"></script> |
71 |
|
|
72 | 211 |
<script src="javascripts/foundation/foundation.topbar.js"></script> |
73 |
|
|
74 |
|
|
212 |
<script type="text/javascript" src="javascripts/jquery.scrollTo.js"></script> |
|
213 |
<script type="text/javascript" src="javascripts/jquery.easing.1.3.js"></script> |
|
214 |
<script type="text/javascript" src="javascripts/jquery.mousewheel.js"></script> |
|
215 |
<script type="text/javascript" src="javascripts/jquery.jscrollpane.js"></script> |
|
216 |
<!-- dropzone.js used for drag and drop files to upload them --> |
|
217 |
<script type="text/javascript" src="javascripts/dropzone.js"></script> |
|
218 |
<script type="text/javascript" src="javascripts/jquery.magnific-popup.js"></script> |
|
219 |
<!-- fabrastic.js used for the color picker --> |
|
220 |
<script type="text/javascript" src="javascripts/farbtastic.js"></script> |
|
221 |
|
|
75 | 222 |
<script> |
76 | 223 |
$(document).foundation(); |
224 |
$(document).ready(function() { |
|
225 |
|
|
226 |
}) |
|
77 | 227 |
</script> |
78 | 228 |
</body> |
79 | 229 |
</html> |
/dev/null | ||
---|---|---|
1 |
/* |
|
2 |
* functions concerning checkboxes and radiobuttons links |
|
3 |
*/ |
|
4 |
|
|
5 |
|
|
6 |
|
|
7 |
ui.checkbox = { |
|
8 |
changeState : function(checkbox_link) { |
|
9 |
$(checkbox_link).find('.snf-checkbox-unchecked, .snf-checkbox-checked').toggleClass('snf-checkbox-unchecked snf-checkbox-checked'); |
|
10 |
$(checkbox_link).closest('li').toggleClass('selected'); |
|
11 |
}, |
|
12 |
check : function(checkbox_link) { |
|
13 |
$(checkbox_link).find('span').removeClass('snf-checkbox-unchecked').addClass('snf-checkbox-checked'); |
|
14 |
$(checkbox_link).closest('li').addClass('selected'); |
|
15 |
}, |
|
16 |
uncheck : function(checkbox_link) { |
|
17 |
$(checkbox_link).find('span').removeClass('snf-checkbox-checked').addClass('snf-checkbox-unchecked'); |
|
18 |
$(checkbox_link).closest('li').removeClass('selected'); |
|
19 |
}, |
|
20 |
|
|
21 |
reset: function(area) { |
|
22 |
$(area).find('.snf-radio-checked').not('.prechecked').toggleClass('snf-radio-checked snf-radio-unchecked'); |
|
23 |
$(area).find('.snf-radio-unchecked.prechecked').toggleClass('snf-radio-checked snf-radio-unchecked'); |
|
24 |
} |
|
25 |
|
|
26 |
}; |
|
27 |
|
|
28 |
ui.radiobtn = { |
|
29 |
changeState: function(radiobtn_link) { |
|
30 |
$(radiobtn_link).find('span.snf-radio-unchecked, span.snf-radio-checked').toggleClass('snf-radio-unchecked snf-radio-checked'); |
|
31 |
$(radiobtn_link).closest('li').addClass('selected'); |
|
32 |
}, |
|
33 |
obtainOneChecked : function(radiobtn_link) { |
|
34 |
$(radiobtn_link).closest('ul').find('li').removeClass('selected'); |
|
35 |
$(radiobtn_link).closest('ul').find('span.snf-radio-checked').toggleClass('snf-radio-unchecked snf-radio-checked'); |
|
36 |
}, |
|
37 |
reset : function(area) { |
|
38 |
$(area).find('.snf-checkbox-checked').not('.prechecked').toggleClass('snf-checkbox-checked snf-checkbox-unchecked'); |
|
39 |
$(area).find('.snf-checkbox-unchecked.prechecked').toggleClass('snf-checkbox-checked snf-checkbox-unchecked'); |
|
40 |
} |
|
41 |
|
|
42 |
}; |
|
43 |
|
|
44 |
$(document).ready(function(){ |
|
45 |
|
|
46 |
// checkboxes binds |
|
47 |
|
|
48 |
$('.check').click(function(e) { |
|
49 |
e.preventDefault(); |
|
50 |
e.stopPropagation(); |
|
51 |
ui.checkbox.changeState(this); |
|
52 |
ui.entitiesActionsEnabled(); |
|
53 |
}); |
|
54 |
|
|
55 |
$('.lt-bar .select .check').click(function(e) { |
|
56 |
$(this).siblings('em').toggle(); |
|
57 |
if ( $(this).find('span').hasClass('snf-checkbox-unchecked')){ |
|
58 |
ui.checkbox.uncheck($('.list-view li:not(".not-selectable") .check')); |
|
59 |
} else { |
|
60 |
ui.checkbox.check($('.list-view li:not(".not-selectable") .check')); |
|
61 |
} |
|
62 |
}); |
|
63 |
|
|
64 |
$('.trigger-checkbox.has-more .check').click(function(e) { |
|
65 |
ui.slideHiddenArea(this, $(this).parent().next('.more')); |
|
66 |
}); |
|
67 |
|
|
68 |
$('.dhcp-option .check').click(function(e) { |
|
69 |
$(this).parents('li').siblings().find('ul.subnet-options').parent('li').toggle(); |
|
70 |
}); |
|
71 |
|
|
72 |
// for lis that we want to change the checkbox state |
|
73 |
$('.trigger-checkbox').click(function(e){ |
|
74 |
$(this).find('.check').trigger('click'); |
|
75 |
}); |
|
76 |
|
|
77 |
$('.trigger-checkbox').find('a').click(function(e){ |
|
78 |
e.stopPropagation(); |
|
79 |
}); |
|
80 |
|
|
81 |
// for checkboxes created after document.ready |
|
82 |
$('.items-list').on('click','.check', function(e){ |
|
83 |
e.preventDefault(); |
|
84 |
e.stopPropagation(); |
|
85 |
ui.changeCheckboxState(this); |
|
86 |
}); |
|
87 |
|
|
88 |
// radiobuttons binds |
|
89 |
|
|
90 |
$('.radiobtn').click(function(e) { |
|
91 |
e.stopPropagation(); |
|
92 |
e.preventDefault(); |
|
93 |
if($(this).find('span').hasClass('snf-radio-unchecked')) { |
|
94 |
ui.radiobtn.obtainOneChecked(this); |
|
95 |
ui.radiobtn.changeState(this); |
|
96 |
} |
|
97 |
}); |
|
98 |
|
|
99 |
$('.subnet-options .radiobtn').click(function(e) { |
|
100 |
if($(this).closest('li').hasClass('manual')) { |
|
101 |
$(this).siblings('.input').show(); |
|
102 |
} |
|
103 |
else { |
|
104 |
$(this).closest('li').siblings('.manual').find('.input').hide(); |
|
105 |
} |
|
106 |
}); |
|
107 |
|
|
108 |
$('.trigger-radiobtn').click(function(e) { |
|
109 |
$(this).find('.radiobtn').trigger('click'); |
|
110 |
}); |
|
111 |
|
|
112 |
$('.firewall .more .radiobtn').click(function(e){ |
|
113 |
$(this).parents('.firewall').removeAttr('data-firewall'); |
|
114 |
$(this).parents('.firewall').data('firewall', $(this).parent().attr('class')); |
|
115 |
ui.firewallSetup(); |
|
116 |
}); |
|
117 |
|
|
118 |
}); |
/dev/null | ||
---|---|---|
1 |
/* |
|
2 |
* Various functions that will be used throughout all templates |
|
3 |
* are inside ui Object |
|
4 |
*/ |
|
5 |
|
|
6 |
ui = {}; |
|
7 |
/* |
|
8 |
* ui.wizards get populated in vm-wizard.js |
|
9 |
* here is the declaration only |
|
10 |
*/ |
|
11 |
ui.wizard = {}; |
|
12 |
ui.checkbox = {}; |
|
13 |
ui.radiobtn = {}; |
|
14 |
|
|
15 |
/* when closeEl el is clicked, its parent with class divToCloseClass slidesUp */ |
|
16 |
ui.closeDiv = function(closeEl, divToCloseClass) { |
|
17 |
closeEl.click(function(e){ |
|
18 |
e.preventDefault(); |
|
19 |
$(this).parents(divToCloseClass).slideUp('slow'); |
|
20 |
}); |
|
21 |
} |
|
22 |
|
|
23 |
|
|
24 |
ui.trimChars = function( str, chars) { |
|
25 |
if ( str.length>chars){ |
|
26 |
return $.trim(str).substring(0, chars)+ "..."; |
|
27 |
} else { |
|
28 |
return str; |
|
29 |
} |
|
30 |
} |
|
31 |
|
|
32 |
|
|
33 |
/* Sets element min-height |
|
34 |
* Used for .details, .lt-bar divs |
|
35 |
*/ |
|
36 |
ui.setElminHeight = function(el){ |
|
37 |
var WindowHeight = $(window).height(); |
|
38 |
var header = $('.header').outerHeight(); |
|
39 |
var actions = $('.actions-bar').height(); |
|
40 |
var h1= WindowHeight - (header+actions); |
|
41 |
el.css('min-height', h1); |
|
42 |
} |
|
43 |
|
|
44 |
/* Sets element height |
|
45 |
* Used for .details, .lt-bar divs |
|
46 |
*/ |
|
47 |
ui.setElHeight = function(el){ |
|
48 |
var WindowHeight = $(window).height(); |
|
49 |
var header = $('.header').outerHeight(); |
|
50 |
var actions = $('.actions-bar').height(); |
|
51 |
var h1= WindowHeight - (header+actions); |
|
52 |
el.css('height', h1); |
|
53 |
} |
|
54 |
|
|
55 |
/* Sets element max-height |
|
56 |
* Used for div.storage-progress |
|
57 |
*/ |
|
58 |
ui.setElmaxHeight = function(el){ |
|
59 |
var WindowHeight = $(window).height(); |
|
60 |
var header = $('.header').outerHeight(); |
|
61 |
var actions = $('.actions-bar').height(); |
|
62 |
var h1= WindowHeight - (header+actions); |
|
63 |
el.css('max-height', h1); |
|
64 |
} |
|
65 |
|
|
66 |
/* |
|
67 |
* Logic for Entities actions. Present in items_list pages |
|
68 |
* Available categories are : |
|
69 |
* - both/single ( for multiple entities/single entities) |
|
70 |
* - running/off ( for running/off entities) |
|
71 |
* - permanent ( for entities always active ) |
|
72 |
* Can be used for pithos as well |
|
73 |
* Available categories are : |
|
74 |
* - files ( for files only actions) |
|
75 |
* - folders ( for folders only actions) |
|
76 |
* - all ( for files/folders actions) |
|
77 |
*/ |
|
78 |
ui.entitiesActionsEnabled = function(){ |
|
79 |
var all = $('.snf-checkbox-checked').length; |
|
80 |
var running = $('.snf-checkbox-checked').parents('li.running').length; |
|
81 |
var off = $('.snf-checkbox-checked').parents('li.off').length; |
|
82 |
var files = $('.snf-checkbox-checked').parents('li.file').length; |
|
83 |
var folders = $('.snf-checkbox-checked').parents('li.folder').length; |
|
84 |
|
|
85 |
console.log(files,'files'); |
|
86 |
console.log(folders,'folders'); |
|
87 |
|
|
88 |
$('.lt-bar .lt-actions li:not(.permanent) a').removeClass('active'); |
|
89 |
|
|
90 |
if ( ( files * folders )>0 ) { |
|
91 |
$('.lt-actions li.all a').addClass('active'); |
|
92 |
} else { |
|
93 |
if ( files>0 ) { |
|
94 |
$('.lt-actions li.files a').addClass('active'); |
|
95 |
} |
|
96 |
if ( folders>0 ){ |
|
97 |
$('.lt-actions li.folders a').addClass('active'); |
|
98 |
} |
|
99 |
} |
|
100 |
|
|
101 |
if ( (running*off) > 0 ){ |
|
102 |
$('.lt-actions li.both a').addClass('active'); |
|
103 |
$('.lt-actions li.single a').removeClass('active'); |
|
104 |
} else { |
|
105 |
if (running > 0) { |
|
106 |
$('.lt-actions li.both a').addClass('active'); |
|
107 |
$('.lt-actions li.running a').addClass('active'); |
|
108 |
} else if (off>0) { |
|
109 |
$('.lt-actions li.both a').addClass('active'); |
|
110 |
$('.lt-actions li.off a').addClass('active'); |
|
111 |
} |
|
112 |
if ( all > 1 ) { |
|
113 |
$('.lt-actions li.single a').removeClass('active'); |
|
114 |
} |
|
115 |
} |
|
116 |
} |
|
117 |
|
|
118 |
ui.inactiveActions = function() { |
|
119 |
|
|
120 |
// Availble actions: connect, reboot, shut, destroy, start |
|
121 |
// These actions will be DISABLED |
|
122 |
var statesActions ={ |
|
123 |
'off' : ['connect', 'reboot', 'shut'], |
|
124 |
'error' : ['connect', 'reboot', 'shut', 'start'], |
|
125 |
'building' : ['reboot', 'start'], |
|
126 |
'running' : ['start'], |
|
127 |
'rebooting': ['start'], |
|
128 |
'starting' : ['start'], |
|
129 |
'shutting' : ['connect', 'reboot', 'shut'] |
|
130 |
} ; |
|
131 |
|
|
132 |
_.each (statesActions, function(val, key) { |
|
133 |
_.each(val, function(value) { |
|
134 |
var el = '.' + key + ' .' + value; |
|
135 |
$(el).addClass('inactive'); |
|
136 |
}); |
|
137 |
}) |
|
138 |
} |
|
139 |
|
|
140 |
ui.detailsCustom = function(area) { |
|
141 |
// position last connected item |
|
142 |
var el = area.find('.item').last(); |
|
143 |
// -2 is the border width; |
|
144 |
var moveY = el.find('.connections >li').last().outerHeight(true) - 2; |
|
145 |
el.css('top',moveY); |
|
146 |
el.css('marginTop', -moveY); |
|
147 |
} |
|
148 |
|
|
149 |
ui.firewallSetup = function(){ |
|
150 |
$('.firewall').each(function(){ |
|
151 |
$(this).removeClass('fully unprotected basic'); |
|
152 |
$(this).addClass($(this).data('firewall')); |
|
153 |
if($(this).hasClass('unprotected')){ |
|
154 |
$(this).find('p').first().find('em').html('off'); |
|
155 |
} else { |
|
156 |
$(this).find('p').first().find('em').html('on'); |
|
157 |
} |
|
158 |
}); |
|
159 |
} |
|
160 |
|
|
161 |
|
|
162 |
|
|
163 |
/* |
|
164 |
* In order for the editable value functionality to work, the html markup |
|
165 |
* should be: |
|
166 |
<div class="editable"> |
|
167 |
<span class="input-txt">editable value</span> |
|
168 |
<input type="text"> |
|
169 |
<a href="#" class="edit">edit</a> |
|
170 |
<a href="#" class="save">save</a> |
|
171 |
<a href="#" class="cancel">cancel</a> |
|
172 |
</div> |
|
173 |
*/ |
|
174 |
ui.editable = function(){ |
|
175 |
|
|
176 |
/* |
|
177 |
* resetForm hides save and cancel buttons, |
|
178 |
* text input and shows input-txt. resetForm does not alter |
|
179 |
* input-txt content. |
|
180 |
*/ |
|
181 |
|
|
182 |
function resetForm(e, elem) { |
|
183 |
var el = elem.parents('.editable'); |
|
184 |
el.find('input[type="text"]').hide(); |
|
185 |
el.find('a.cancel, a.save').hide(); |
|
186 |
el.find('a.edit, .input-txt').show(); |
|
187 |
} |
|
188 |
|
|
189 |
/* |
|
190 |
* showForm hides input-txt, shows save and cancel buttons and |
|
191 |
* sets input value to input-txt content. |
|
192 |
*/ |
|
193 |
function showForm(e,elem) { |
|
194 |
e.stopPropagation(); |
|
195 |
e.preventDefault(); |
|
196 |
var el = elem.parents('.editable'); |
|
197 |
el.find('input[type="text"]').val(el.find('.input-txt').html()); |
|
198 |
el.find('input[type="text"]').show().focus(); |
|
199 |
el.find('a.cancel, a.save').show(); |
|
200 |
elem.hide(); |
|
201 |
el.find('.input-txt').hide(); |
|
202 |
} |
|
203 |
|
|
204 |
/* |
|
205 |
setValue sets input-txt value to the input value. |
|
206 |
Makes sure that the input value is not empty. |
|
207 |
TODO: |
|
208 |
Ajax request to submit form |
|
209 |
*/ |
|
210 |
|
|
211 |
function setValue(elem) { |
|
212 |
var el = elem.parents('.editable'); |
|
213 |
if( el.find('input[type="text"]').val() ) { |
|
214 |
el.find('.input-txt').html(el.find('input[type="text"]').val()); |
|
215 |
} |
|
216 |
} |
|
217 |
|
|
218 |
|
|
219 |
$('.editable .edit').click(function(e){ |
|
220 |
showForm(e, $(this)); |
|
221 |
}) |
|
222 |
|
|
223 |
$('.editable .cancel').click(function(e){ |
|
224 |
e.stopPropagation(); |
|
225 |
e.preventDefault(); |
|
226 |
resetForm(e, $(this)); |
|
227 |
}) |
|
228 |
|
|
229 |
$('.editable .save').click(function(e){ |
|
230 |
e.stopPropagation(); |
|
231 |
e.preventDefault(); |
|
232 |
setValue($(this)); |
|
233 |
resetForm(e, $(this)); |
|
234 |
|
|
235 |
}) |
|
236 |
|
|
237 |
|
|
238 |
$('.editable input[type="text"]').click(function(e){ |
|
239 |
e.stopPropagation(); |
|
240 |
}) |
|
241 |
|
|
242 |
$('.editable input[type="text"]').keyup(function(e){ |
|
243 |
if(e.keyCode == 13) { |
|
244 |
setValue($(this)); |
|
245 |
resetForm(e, $(this)); |
|
246 |
|
|
247 |
} |
|
248 |
|
|
249 |
}) |
|
250 |
|
|
251 |
$('html').click(function(e) { |
|
252 |
resetForm(e, $('.editable a.cancel')); |
|
253 |
}); |
|
254 |
|
|
255 |
} |
|
256 |
|
|
257 |
/* TODO: better overlay functionality */ |
|
258 |
ui.overlay = function() { |
Also available in: Unified diff