vines-services 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -168,7 +168,7 @@ ServicesPage = (function() {
168
168
  var code, prev;
169
169
  $('#syntax-status').text('');
170
170
  prev = $('#syntax').data('prev');
171
- code = $.trim($('#syntax').val());
171
+ code = $('#syntax').val().trim();
172
172
  $('#syntax').data('prev', code);
173
173
  if (!(code && code !== prev)) {
174
174
  return;
@@ -194,38 +194,43 @@ ServicesPage = (function() {
194
194
  ServicesPage.prototype.validateForm = function() {
195
195
  var name, valid;
196
196
  $('#name-error').empty();
197
+ $('#unix-users-error').empty();
197
198
  valid = true;
198
- name = $.trim($('#name').val());
199
+ name = $('#name').val().trim();
199
200
  if (name === '') {
200
201
  $('#name-error').text('Name is required.');
201
202
  valid = false;
202
203
  }
204
+ if (this.accounts().length === 0) {
205
+ $('#unix-users-error').text('At least one user account is required.');
206
+ valid = false;
207
+ }
203
208
  return valid;
204
209
  };
210
+ ServicesPage.prototype.accounts = function() {
211
+ var accounts, u, _i, _len, _results;
212
+ accounts = $('#unix-users').val().split(',');
213
+ _results = [];
214
+ for (_i = 0, _len = accounts.length; _i < _len; _i++) {
215
+ u = accounts[_i];
216
+ if (u.trim().length > 0) {
217
+ _results.push(u.trim());
218
+ }
219
+ }
220
+ return _results;
221
+ };
205
222
  ServicesPage.prototype.save = function() {
206
- var accounts, service, u, users;
223
+ var service, users;
207
224
  if (!this.validateForm()) {
208
- return;
225
+ return false;
209
226
  }
210
227
  users = $('#users :checked').map(function() {
211
228
  return $(this).val();
212
229
  }).get();
213
- accounts = $('#unix-users').val().split(',');
214
- accounts = (function() {
215
- var _i, _len, _results;
216
- _results = [];
217
- for (_i = 0, _len = accounts.length; _i < _len; _i++) {
218
- u = accounts[_i];
219
- if ($.trim(u).length > 0) {
220
- _results.push($.trim(u));
221
- }
222
- }
223
- return _results;
224
- })();
225
230
  service = {
226
231
  name: $('#name').val(),
227
232
  code: $('#syntax').val(),
228
- accounts: accounts,
233
+ accounts: this.accounts(),
229
234
  users: users
230
235
  };
231
236
  if ($('#id').val().length > 0) {
@@ -320,7 +325,7 @@ ServicesPage = (function() {
320
325
  $('#services li').removeClass('selected');
321
326
  }
322
327
  $('#beta').empty();
323
- $("<form id=\"editor-form\" class=\"sections y-fill scroll\">\n <input id=\"id\" type=\"hidden\"/>\n <div>\n <section>\n <h2>Service</h2>\n <fieldset>\n <label for=\"name\">Name</label>\n <input id=\"name\" type=\"text\"/>\n <p id=\"name-error\" class=\"error\"></p>\n <label for=\"syntax\">Criteria</label>\n <textarea id=\"syntax\" placeholder=\"fqdn starts with 'www.' and platform is 'mac_os_x'\"></textarea>\n <p id=\"syntax-status\"></p>\n </fieldset>\n </section>\n <section>\n <h2>Members</h2>\n <fieldset id=\"service-preview\">\n <ul id=\"members\" class=\"scroll\"></ul>\n </fieldset>\n </section>\n <section>\n <h2>Permissions</h2>\n <fieldset>\n <label>Users</label>\n <ul id=\"users\" class=\"scroll\"></ul>\n <label for=\"unix-users\">Unix Accounts</label>\n <input id=\"unix-users\" type=\"text\"/>\n </fieldset>\n </section>\n </div>\n</form>\n<form id=\"editor-buttons\">\n <input id=\"save\" type=\"submit\" value=\"Save\"/>\n</form>").appendTo('#beta');
328
+ $("<form id=\"editor-form\" class=\"sections y-fill scroll\">\n <input id=\"id\" type=\"hidden\"/>\n <div>\n <section>\n <h2>Service</h2>\n <fieldset>\n <label for=\"name\">Name</label>\n <input id=\"name\" type=\"text\"/>\n <p id=\"name-error\" class=\"error\"></p>\n <label for=\"syntax\">Criteria</label>\n <textarea id=\"syntax\" placeholder=\"fqdn starts with 'www.' and platform is 'mac_os_x'\"></textarea>\n <p id=\"syntax-status\"></p>\n </fieldset>\n </section>\n <section>\n <h2>Members</h2>\n <fieldset id=\"service-preview\">\n <ul id=\"members\" class=\"scroll\"></ul>\n </fieldset>\n </section>\n <section>\n <h2>Permissions</h2>\n <fieldset>\n <label>Users</label>\n <ul id=\"users\" class=\"scroll\"></ul>\n <label for=\"unix-users\">Unix Accounts</label>\n <input id=\"unix-users\" type=\"text\"/>\n <p id=\"unix-users-error\" class=\"error\"></p>\n <p class=\"hint\">Comma separated user names like: apache, postgres, root, etc.</p>\n </fieldset>\n </section>\n </div>\n</form>\n<form id=\"editor-buttons\">\n <input id=\"save\" type=\"submit\" value=\"Save\"/>\n</form>").appendTo('#beta');
324
329
  if (service) {
325
330
  this.findMembers(service.id);
326
331
  $('#id').val(service.id);
@@ -46,7 +46,7 @@ SystemsPage = (function() {
46
46
  return groups;
47
47
  };
48
48
  SystemsPage.prototype.roster = function() {
49
- var contact, contacts, group, groups, items, name, optgroup, option, sorted, _i, _len, _results;
49
+ var contact, contacts, group, groups, icon, items, name, optgroup, option, opts, sorted, _i, _len, _results;
50
50
  groups = this.groupContacts();
51
51
  sorted = (function() {
52
52
  var _results;
@@ -81,7 +81,7 @@ SystemsPage = (function() {
81
81
  _results2 = [];
82
82
  for (_j = 0, _len2 = contacts.length; _j < _len2; _j++) {
83
83
  contact = contacts[_j];
84
- option = $("<li data-jid=\"" + contact.jid + "\">\n <span class=\"text\"></span>\n <span class=\"unread\" style=\"display:none;\"></span>\n</li>").appendTo(items);
84
+ option = $("<li data-jid=\"" + contact.jid + "\">\n <span class=\"icon\"></span>\n <span class=\"text\"></span>\n <span class=\"unread\" style=\"display:none;\"></span>\n</li>").appendTo(items);
85
85
  if (contact.offline()) {
86
86
  option.addClass('offline');
87
87
  }
@@ -91,7 +91,25 @@ SystemsPage = (function() {
91
91
  name = contact.name || contact.jid.split('@')[0];
92
92
  option.attr('data-name', name);
93
93
  option.attr('data-group', group);
94
- _results2.push($('.text', option).text(name));
94
+ $('.text', option).text(name);
95
+ opts = {
96
+ fill: '#fff',
97
+ stroke: '#404040',
98
+ 'stroke-width': 0.3,
99
+ opacity: 1.0,
100
+ scale: 0.65
101
+ };
102
+ icon = (function() {
103
+ switch (group) {
104
+ case 'People':
105
+ return ICONS.man;
106
+ case 'Services':
107
+ return ICONS.magic;
108
+ default:
109
+ return ICONS.run;
110
+ }
111
+ })();
112
+ _results2.push(new Button($('.icon', option), icon, opts));
95
113
  }
96
114
  return _results2;
97
115
  }).call(this));
@@ -106,7 +124,7 @@ SystemsPage = (function() {
106
124
  if (me || from === this.currentContact) {
107
125
  bottom = this.atBottom();
108
126
  this.appendMessage(message);
109
- if (bottom) {
127
+ if (bottom || me) {
110
128
  return this.scroll({
111
129
  animate: true
112
130
  });
@@ -139,6 +157,7 @@ SystemsPage = (function() {
139
157
  node = $("<li data-jid=\"" + from + "\"><pre></pre></li>").appendTo('#messages');
140
158
  prefix = me ? '$ ' : '';
141
159
  $('pre', node).text(prefix + message.text);
160
+ $('#message-form').css('top', '0px');
142
161
  if (!me) {
143
162
  node.append("<footer>\n <span class=\"author\"></span> @\n <span class=\"time\">" + (this.datef(message.received)) + "</span>\n</footer>");
144
163
  return $('.author', node).text(name);
@@ -192,6 +211,7 @@ SystemsPage = (function() {
192
211
  return $(this).remove();
193
212
  });
194
213
  $('#roster').hide();
214
+ $('#message').focus();
195
215
  selected = $(event.currentTarget);
196
216
  jid = selected.attr('data-jid');
197
217
  contact = this.session.roster[jid];
@@ -201,7 +221,7 @@ SystemsPage = (function() {
201
221
  this.currentContact = jid;
202
222
  $('#message-label').text($('.text', selected).text());
203
223
  $('#messages').empty();
204
- $('#message').focus();
224
+ $('#message-form').css('top', '10px');
205
225
  this.layout.resize();
206
226
  return this.restoreChat(jid);
207
227
  };
@@ -262,10 +282,31 @@ SystemsPage = (function() {
262
282
  input.val('');
263
283
  return false;
264
284
  };
285
+ SystemsPage.prototype.showRoster = function() {
286
+ var container, form, height, items, rform, roster, up;
287
+ container = $('#container');
288
+ form = $('#message-form');
289
+ roster = $('#roster');
290
+ items = $('#roster-items');
291
+ rform = $('#roster-form');
292
+ up = container.height() - form.position().top < container.height() / 2;
293
+ if (up) {
294
+ roster.css('top', '');
295
+ roster.css('bottom', (form.outerHeight() + 5) + 'px');
296
+ height = container.height() - form.outerHeight() - 20;
297
+ } else {
298
+ roster.css('bottom', '');
299
+ roster.css('top', (form.position().top + form.outerHeight()) + 'px');
300
+ height = container.height() - form.position().top - 30;
301
+ }
302
+ items.css('max-height', (height - rform.outerHeight() - 40) + 'px');
303
+ roster.css('max-height', height + 'px');
304
+ return roster.show();
305
+ };
265
306
  SystemsPage.prototype.drawBlankSlate = function() {
266
307
  $("<form id=\"blank-slate\" class=\"float\">\n <p>\n Services, and individual systems, can be controlled by sending\n them shell commands through this terminal. Select a system to chat with\n to get started.\n </p>\n <input type=\"submit\" value=\"Select System\"/>\n</form>").appendTo('#alpha');
267
308
  return $('#blank-slate').submit(__bind(function() {
268
- $('#roster').show();
309
+ this.showRoster();
269
310
  this.layout.resize();
270
311
  return false;
271
312
  }, this));
@@ -278,7 +319,8 @@ SystemsPage = (function() {
278
319
  }
279
320
  $('body').attr('id', 'systems-page');
280
321
  $('#container').hide().empty();
281
- $("<div id=\"alpha\" class=\"primary column x-fill y-fill\">\n <ul id=\"messages\" class=\"scroll y-fill\"></ul>\n <form id=\"message-form\">\n <label id=\"message-label\"></label>\n <input id=\"message\" name=\"message\" type=\"text\" maxlength=\"1024\" placeholder=\"Type a command and press enter to send\"/>\n </form>\n <div id=\"roster\" class=\"float\" style=\"display:none;\">\n <ul id=\"roster-items\"></ul>\n <div id=\"roster-form\"></div>\n </div>\n</div>").appendTo('#container');
322
+ $("<div id=\"alpha\" class=\"primary column x-fill y-fill\">\n <ul id=\"messages\" class=\"scroll\"></ul>\n <form id=\"message-form\">\n <label id=\"message-label\"></label>\n <input id=\"message\" name=\"message\" type=\"text\" maxlength=\"1024\" placeholder=\"Type a command and press enter to send\"/>\n </form>\n <div id=\"roster\" class=\"float\" style=\"display:none;\">\n <ul id=\"roster-items\"></ul>\n <div id=\"roster-form\"></div>\n </div>\n</div>").appendTo('#container');
323
+ $('#message-form').css('top', '10px');
282
324
  $('#message-form').submit(__bind(function() {
283
325
  return this.send();
284
326
  }, this));
@@ -288,9 +330,20 @@ SystemsPage = (function() {
288
330
  $('#message').focus(function() {
289
331
  return $('#roster').hide();
290
332
  });
333
+ $(document).keyup(function(e) {
334
+ if (e.keyCode === 27) {
335
+ return $('#roster').hide();
336
+ }
337
+ });
291
338
  this.roster();
292
339
  $('#message-label').click(__bind(function() {
293
- return $('#roster').toggle();
340
+ var roster;
341
+ roster = $('#roster');
342
+ if (roster.is(':visible')) {
343
+ return roster.hide();
344
+ } else {
345
+ return this.showRoster();
346
+ }
294
347
  }, this));
295
348
  $('#message').keyup(__bind(function(e) {
296
349
  switch (e.keyCode) {
@@ -314,6 +367,7 @@ SystemsPage = (function() {
314
367
  $('#container').show();
315
368
  this.layout = this.resize();
316
369
  this.scroll();
370
+ $('#message').focus();
317
371
  new Filter({
318
372
  list: '#roster-items',
319
373
  form: '#roster-form',
@@ -322,20 +376,15 @@ SystemsPage = (function() {
322
376
  return $('form', '#roster-form').show();
323
377
  };
324
378
  SystemsPage.prototype.resize = function() {
325
- var container, form, items, label, msg, rform, roster;
379
+ var container, form, label, msg, msgs;
326
380
  container = $('#container');
327
- roster = $('#roster');
328
- items = $('#roster-items');
329
- rform = $('#roster-form');
381
+ msgs = $('#messages');
330
382
  msg = $('#message');
331
383
  form = $('#message-form');
332
384
  label = $('#message-label');
333
385
  return new Layout(function() {
334
- var height;
335
386
  msg.width(form.width() - label.width() - 32);
336
- height = container.height() - form.height() - 10;
337
- roster.css('max-height', height);
338
- return items.css('max-height', height - rform.outerHeight() - 10);
387
+ return msgs.css('max-height', container.height() - form.height());
339
388
  });
340
389
  };
341
390
  return SystemsPage;
@@ -49,7 +49,14 @@ form.sections .error {
49
49
  color: #dd2828;
50
50
  font-size: 8pt;
51
51
  width: 89%;
52
- }#systems-page #container {
52
+ }
53
+ .hint {
54
+ color: #aaa;
55
+ font-size: 8pt;
56
+ line-height: 1;
57
+ margin-top: 3px;
58
+ }
59
+ #systems-page #container {
53
60
  height: 100%;
54
61
  }
55
62
  #systems-page #alpha {
@@ -72,7 +79,6 @@ form.sections .error {
72
79
  margin-bottom: 20px;
73
80
  }
74
81
  #systems-page #messages {
75
- height: 100%;
76
82
  list-style: none;
77
83
  width: 100%;
78
84
  }
@@ -91,14 +97,15 @@ form.sections .error {
91
97
  font-family: Menlo, monospace;
92
98
  font-size: 11px;
93
99
  line-height: 1.3;
100
+ word-wrap: break-word;
94
101
  }
95
102
  #systems-page #messages li footer {
96
103
  font-weight: bold;
97
104
  }
98
105
  #systems-page #message-form {
99
- height: 25px;
100
- position: absolute;
101
- bottom: 0;
106
+ height: 21px;
107
+ line-height: 1;
108
+ position: relative;
102
109
  width: 100%;
103
110
  }
104
111
  #systems-page #message-label {
@@ -107,8 +114,6 @@ form.sections .error {
107
114
  font-family: Menlo, monospace;
108
115
  font-size: 11px;
109
116
  padding: 0 2px 0 10px;
110
- position: relative;
111
- top: -3px;
112
117
  }
113
118
  #systems-page #message-label::after {
114
119
  margin: 0;
@@ -124,38 +129,39 @@ form.sections .error {
124
129
  font-size: 11px;
125
130
  margin: 0;
126
131
  padding: 0;
127
- position: relative;
128
- top: -3px;
129
132
  }
130
133
  #systems-page #message:focus {
131
134
  box-shadow: none;
132
135
  }
133
136
  #systems-page #roster {
134
- background: #fff;
135
- border: 1px solid #c4c4c4;
136
- border-radius: 5px;
137
- box-shadow: 0 10px 15px rgba(0,0,0, 0.15);
138
- padding-top: 3px;
137
+ background: rgba(60, 60, 60, 0.98);
138
+ border: 2px solid rgb(12, 12, 12);
139
+ border-radius: 3px;
140
+ box-shadow: 0 3px 10px rgba(0, 0, 0, 0.75);
141
+ min-width: 250px;
139
142
  position: absolute;
140
- bottom: 25px;
141
143
  left: 10px;
142
144
  }
143
145
  #systems-page #roster-items {
144
- font-family: "Lucida Grande", Helvetica, sans-serif;
145
- font-size: 11px;
146
- margin-bottom: 3px;
146
+ color: #fff;
147
+ font-size: 13px;
148
+ font-weight: 500;
147
149
  overflow-y: auto;
150
+ text-shadow: 0 1px 1px rgb(21, 21, 21);
148
151
  }
149
152
  #systems-page #roster-items li {
150
- border-top: 1px solid transparent;
151
- border-bottom: 1px solid transparent;
152
- line-height: 1.5;
153
+ border-top: 1px solid rgb(80, 80, 80);
154
+ border-bottom: 1px solid rgb(48, 48, 48);
155
+ line-height: 38px;
153
156
  list-style: none;
154
157
  padding-right: 50px;
155
158
  position: relative;
156
159
  }
157
160
  #systems-page #roster-items li.offline {
158
- color: rgba(0, 0, 0, 0.25);
161
+ color: #888;
162
+ }
163
+ #systems-page #roster-items li.offline .icon {
164
+ opacity: 0.3;
159
165
  }
160
166
  #systems-page #roster-items li:hover:not(.group) {
161
167
  background: #319be7;
@@ -164,40 +170,58 @@ form.sections .error {
164
170
  background: -o-linear-gradient(#319be7, #1b78d9);
165
171
  background: -webkit-linear-gradient(#319be7, #1b78d9);
166
172
  border-top: 1px solid #148ddf;
167
- border-bottom: 1px solid #095bba;
168
173
  color: #fff;
169
174
  cursor: pointer;
170
175
  text-shadow: -1px 1px 1px hsl(210, 51%, 45%), 0px -1px 1px hsl(210, 51%, 49%);
171
176
  }
172
- #systems-page #roster-items li:not(.group) {
173
- padding-left: 3em;
174
- }
175
177
  #systems-page #roster-items li.group {
176
- color: #808080;
177
- padding-left: 20px;
178
+ background: #404040;
179
+ background: -moz-linear-gradient(#404040, #353535);
180
+ background: -ms-linear-gradient(#404040, #353535);
181
+ background: -o-linear-gradient(#404040, #353535);
182
+ background: -webkit-linear-gradient(#404040, #353535);
183
+ color: #ccc;
184
+ font-size: 10px;
185
+ font-weight: bold;
186
+ line-height: 2;
187
+ padding-left: 10px;
188
+ text-transform: uppercase;
189
+ }
190
+ #systems-page #roster-items li .icon {
191
+ position: absolute;
192
+ height: 32px;
193
+ width: 32px;
194
+ top: 2px;
195
+ }
196
+ #systems-page #roster-items li .icon svg {
197
+ height: 32px;
198
+ width: 32px;
199
+ }
200
+ #systems-page #roster-items li .text {
201
+ padding-left: 32px;
178
202
  }
179
203
  #systems-page #roster-items li .unread {
180
- color: #c0c0c0;
204
+ background: rgba(255, 255, 255, 0.15);
205
+ border-radius: 30px;
206
+ color: #fff;
181
207
  display: inline-block;
182
- font-size: 9px;
208
+ font-size: 11px;
183
209
  font-weight: bold;
184
210
  line-height: 15px;
211
+ padding: 0 6px;
185
212
  position: absolute;
186
213
  right: 10px;
187
- top: 1px;
214
+ top: 12px;
188
215
  }
189
216
  #systems-page #roster-items li:hover .unread {
190
217
  color: #fff;
191
218
  }
192
219
  #systems-page #roster-form {
193
- background: #f8f8f8;
194
- background: -moz-linear-gradient(#f8f8f8, #eee);
195
- background: -ms-linear-gradient(#f8f8f8, #eee);
196
- background: -o-linear-gradient(#f8f8f8, #eee);
197
- background: -webkit-linear-gradient(#f8f8f8, #eee);
198
- border-top: 1px solid #c4c4c4;
199
- border-bottom-right-radius: 5px;
200
- border-bottom-left-radius: 5px;
220
+ background: rgb(80, 80, 80);
221
+ background: -moz-linear-gradient(rgb(80,80,80), rgb(48, 48, 48));
222
+ background: -ms-linear-gradient(rgb(80,80,80), rgb(48, 48, 48));
223
+ background: -o-linear-gradient(rgb(80,80,80), rgb(48, 48, 48));
224
+ background: -webkit-linear-gradient(rgb(80,80,80), rgb(48, 48, 48));
201
225
  padding: 3px 5px;
202
226
  }
203
227
  #systems-page #roster-form form {
@@ -49,4 +49,10 @@ form.sections .error {
49
49
  color: #dd2828;
50
50
  font-size: 8pt;
51
51
  width: 89%;
52
- }
52
+ }
53
+ .hint {
54
+ color: #aaa;
55
+ font-size: 8pt;
56
+ line-height: 1;
57
+ margin-top: 3px;
58
+ }
@@ -21,7 +21,6 @@
21
21
  margin-bottom: 20px;
22
22
  }
23
23
  #systems-page #messages {
24
- height: 100%;
25
24
  list-style: none;
26
25
  width: 100%;
27
26
  }
@@ -40,14 +39,15 @@
40
39
  font-family: Menlo, monospace;
41
40
  font-size: 11px;
42
41
  line-height: 1.3;
42
+ word-wrap: break-word;
43
43
  }
44
44
  #systems-page #messages li footer {
45
45
  font-weight: bold;
46
46
  }
47
47
  #systems-page #message-form {
48
- height: 25px;
49
- position: absolute;
50
- bottom: 0;
48
+ height: 21px;
49
+ line-height: 1;
50
+ position: relative;
51
51
  width: 100%;
52
52
  }
53
53
  #systems-page #message-label {
@@ -56,8 +56,6 @@
56
56
  font-family: Menlo, monospace;
57
57
  font-size: 11px;
58
58
  padding: 0 2px 0 10px;
59
- position: relative;
60
- top: -3px;
61
59
  }
62
60
  #systems-page #message-label::after {
63
61
  margin: 0;
@@ -73,38 +71,39 @@
73
71
  font-size: 11px;
74
72
  margin: 0;
75
73
  padding: 0;
76
- position: relative;
77
- top: -3px;
78
74
  }
79
75
  #systems-page #message:focus {
80
76
  box-shadow: none;
81
77
  }
82
78
  #systems-page #roster {
83
- background: #fff;
84
- border: 1px solid #c4c4c4;
85
- border-radius: 5px;
86
- box-shadow: 0 10px 15px rgba(0,0,0, 0.15);
87
- padding-top: 3px;
79
+ background: rgba(60, 60, 60, 0.98);
80
+ border: 2px solid rgb(12, 12, 12);
81
+ border-radius: 3px;
82
+ box-shadow: 0 3px 10px rgba(0, 0, 0, 0.75);
83
+ min-width: 250px;
88
84
  position: absolute;
89
- bottom: 25px;
90
85
  left: 10px;
91
86
  }
92
87
  #systems-page #roster-items {
93
- font-family: "Lucida Grande", Helvetica, sans-serif;
94
- font-size: 11px;
95
- margin-bottom: 3px;
88
+ color: #fff;
89
+ font-size: 13px;
90
+ font-weight: 500;
96
91
  overflow-y: auto;
92
+ text-shadow: 0 1px 1px rgb(21, 21, 21);
97
93
  }
98
94
  #systems-page #roster-items li {
99
- border-top: 1px solid transparent;
100
- border-bottom: 1px solid transparent;
101
- line-height: 1.5;
95
+ border-top: 1px solid rgb(80, 80, 80);
96
+ border-bottom: 1px solid rgb(48, 48, 48);
97
+ line-height: 38px;
102
98
  list-style: none;
103
99
  padding-right: 50px;
104
100
  position: relative;
105
101
  }
106
102
  #systems-page #roster-items li.offline {
107
- color: rgba(0, 0, 0, 0.25);
103
+ color: #888;
104
+ }
105
+ #systems-page #roster-items li.offline .icon {
106
+ opacity: 0.3;
108
107
  }
109
108
  #systems-page #roster-items li:hover:not(.group) {
110
109
  background: #319be7;
@@ -113,40 +112,58 @@
113
112
  background: -o-linear-gradient(#319be7, #1b78d9);
114
113
  background: -webkit-linear-gradient(#319be7, #1b78d9);
115
114
  border-top: 1px solid #148ddf;
116
- border-bottom: 1px solid #095bba;
117
115
  color: #fff;
118
116
  cursor: pointer;
119
117
  text-shadow: -1px 1px 1px hsl(210, 51%, 45%), 0px -1px 1px hsl(210, 51%, 49%);
120
118
  }
121
- #systems-page #roster-items li:not(.group) {
122
- padding-left: 3em;
123
- }
124
119
  #systems-page #roster-items li.group {
125
- color: #808080;
126
- padding-left: 20px;
120
+ background: #404040;
121
+ background: -moz-linear-gradient(#404040, #353535);
122
+ background: -ms-linear-gradient(#404040, #353535);
123
+ background: -o-linear-gradient(#404040, #353535);
124
+ background: -webkit-linear-gradient(#404040, #353535);
125
+ color: #ccc;
126
+ font-size: 10px;
127
+ font-weight: bold;
128
+ line-height: 2;
129
+ padding-left: 10px;
130
+ text-transform: uppercase;
131
+ }
132
+ #systems-page #roster-items li .icon {
133
+ position: absolute;
134
+ height: 32px;
135
+ width: 32px;
136
+ top: 2px;
137
+ }
138
+ #systems-page #roster-items li .icon svg {
139
+ height: 32px;
140
+ width: 32px;
141
+ }
142
+ #systems-page #roster-items li .text {
143
+ padding-left: 32px;
127
144
  }
128
145
  #systems-page #roster-items li .unread {
129
- color: #c0c0c0;
146
+ background: rgba(255, 255, 255, 0.15);
147
+ border-radius: 30px;
148
+ color: #fff;
130
149
  display: inline-block;
131
- font-size: 9px;
150
+ font-size: 11px;
132
151
  font-weight: bold;
133
152
  line-height: 15px;
153
+ padding: 0 6px;
134
154
  position: absolute;
135
155
  right: 10px;
136
- top: 1px;
156
+ top: 12px;
137
157
  }
138
158
  #systems-page #roster-items li:hover .unread {
139
159
  color: #fff;
140
160
  }
141
161
  #systems-page #roster-form {
142
- background: #f8f8f8;
143
- background: -moz-linear-gradient(#f8f8f8, #eee);
144
- background: -ms-linear-gradient(#f8f8f8, #eee);
145
- background: -o-linear-gradient(#f8f8f8, #eee);
146
- background: -webkit-linear-gradient(#f8f8f8, #eee);
147
- border-top: 1px solid #c4c4c4;
148
- border-bottom-right-radius: 5px;
149
- border-bottom-left-radius: 5px;
162
+ background: rgb(80, 80, 80);
163
+ background: -moz-linear-gradient(rgb(80,80,80), rgb(48, 48, 48));
164
+ background: -ms-linear-gradient(rgb(80,80,80), rgb(48, 48, 48));
165
+ background: -o-linear-gradient(rgb(80,80,80), rgb(48, 48, 48));
166
+ background: -webkit-linear-gradient(rgb(80,80,80), rgb(48, 48, 48));
150
167
  padding: 3px 5px;
151
168
  }
152
169
  #systems-page #roster-form form {