memcached-manager 0.4.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. checksums.yaml +13 -5
  2. data/.travis.yml +1 -1
  3. data/CONTRIBUTING.md +4 -4
  4. data/Dockerfile +7 -0
  5. data/Gemfile +0 -1
  6. data/Gemfile.lock +23 -19
  7. data/README.rdoc +8 -5
  8. data/Rakefile +6 -6
  9. data/VERSION +1 -1
  10. data/features/api/run_command.feature +6 -0
  11. data/features/api/search_memcached_keys.feature +6 -0
  12. data/features/step_definitions/api/create_memcached_key.rb +1 -1
  13. data/features/step_definitions/api/list_memcached_keys.rb +1 -0
  14. data/features/step_definitions/api/run_command.rb +12 -0
  15. data/features/step_definitions/api/search_memcached_keys.rb +6 -0
  16. data/features/step_definitions/webapp/create_memcached_key.rb +13 -7
  17. data/features/step_definitions/webapp/delete_memcached_key.rb +7 -13
  18. data/features/step_definitions/webapp/edit_configs.rb +7 -0
  19. data/features/support/env.rb +3 -2
  20. data/features/webapp/edit_configs.feature +9 -0
  21. data/features/webapp/edit_memcached_key.feature +1 -1
  22. data/fig.yml +13 -0
  23. data/githubpage_idea +23 -0
  24. data/lib/api.rb +25 -7
  25. data/lib/extensions.rb +6 -0
  26. data/lib/extensions/memcached_command.rb +14 -0
  27. data/lib/extensions/memcached_connection.rb +9 -0
  28. data/lib/extensions/memcached_inspector.rb +12 -5
  29. data/lib/extensions/memcached_settings.rb +2 -2
  30. data/lib/public/images/favicon.png +0 -0
  31. data/lib/public/images/glyphicons-halflings.png +0 -0
  32. data/lib/public/images/logo.png +0 -0
  33. data/lib/public/images/org-logo.png +0 -0
  34. data/lib/public/images/search.png +0 -0
  35. data/lib/public/javascripts/angular/controllers.js +48 -3
  36. data/lib/public/javascripts/angular/filters.js +85 -0
  37. data/lib/public/javascripts/angular/routes.js +26 -0
  38. data/lib/public/javascripts/angular/services/notification.js +41 -6
  39. data/lib/public/javascripts/angular/services/query_params_singleton.js +10 -0
  40. data/lib/public/javascripts/angular/services/resources.js +13 -0
  41. data/lib/public/javascripts/application.js +38 -1
  42. data/lib/public/javascripts/humanize.js +473 -0
  43. data/lib/public/javascripts/humanize_duration.js +329 -0
  44. data/lib/public/javascripts/jquery-terminal.js +4335 -0
  45. data/lib/public/javascripts/underscore.js +5 -0
  46. data/lib/public/stylesheets/app.css +196 -10
  47. data/lib/public/stylesheets/buttons.css +107 -0
  48. data/lib/public/stylesheets/inputs.css +119 -0
  49. data/lib/public/stylesheets/jquery-terminal.css +184 -0
  50. data/lib/public/stylesheets/media_queries.css +162 -0
  51. data/lib/public/templates/config.html.erb +8 -0
  52. data/lib/public/templates/edit.html.erb +5 -3
  53. data/lib/public/templates/keys.html.erb +42 -31
  54. data/lib/public/templates/new.html.erb +6 -4
  55. data/lib/public/templates/show.html.erb +1 -1
  56. data/lib/public/templates/stats.html.erb +1 -2
  57. data/lib/routes.rb +3 -0
  58. data/lib/views/index.erb +24 -3
  59. data/lib/views/layout.erb +14 -1
  60. data/memcached-manager.gemspec +31 -5
  61. data/spec/lib/extensions/api_response_spec.rb +9 -7
  62. data/spec/lib/extensions/memcached_command_spec.rb +13 -0
  63. data/spec/lib/extensions/memcached_connection_spec.rb +9 -4
  64. data/spec/lib/extensions/memcached_inspector_spec.rb +38 -17
  65. data/spec/lib/extensions/memcached_settings_spec.rb +16 -16
  66. data/spec/spec_helper.rb +2 -4
  67. metadata +48 -21
@@ -0,0 +1,5 @@
1
+ // Underscore.js 1.7.0
2
+ // http://underscorejs.org
3
+ // (c) 2009-2014 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
4
+ // Underscore may be freely distributed under the MIT license.
5
+ (function(){var n=this,t=n._,r=Array.prototype,e=Object.prototype,u=Function.prototype,i=r.push,a=r.slice,o=r.concat,l=e.toString,c=e.hasOwnProperty,f=Array.isArray,s=Object.keys,p=u.bind,h=function(n){return n instanceof h?n:this instanceof h?void(this._wrapped=n):new h(n)};"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=h),exports._=h):n._=h,h.VERSION="1.7.0";var g=function(n,t,r){if(t===void 0)return n;switch(null==r?3:r){case 1:return function(r){return n.call(t,r)};case 2:return function(r,e){return n.call(t,r,e)};case 3:return function(r,e,u){return n.call(t,r,e,u)};case 4:return function(r,e,u,i){return n.call(t,r,e,u,i)}}return function(){return n.apply(t,arguments)}};h.iteratee=function(n,t,r){return null==n?h.identity:h.isFunction(n)?g(n,t,r):h.isObject(n)?h.matches(n):h.property(n)},h.each=h.forEach=function(n,t,r){if(null==n)return n;t=g(t,r);var e,u=n.length;if(u===+u)for(e=0;u>e;e++)t(n[e],e,n);else{var i=h.keys(n);for(e=0,u=i.length;u>e;e++)t(n[i[e]],i[e],n)}return n},h.map=h.collect=function(n,t,r){if(null==n)return[];t=h.iteratee(t,r);for(var e,u=n.length!==+n.length&&h.keys(n),i=(u||n).length,a=Array(i),o=0;i>o;o++)e=u?u[o]:o,a[o]=t(n[e],e,n);return a};var v="Reduce of empty array with no initial value";h.reduce=h.foldl=h.inject=function(n,t,r,e){null==n&&(n=[]),t=g(t,e,4);var u,i=n.length!==+n.length&&h.keys(n),a=(i||n).length,o=0;if(arguments.length<3){if(!a)throw new TypeError(v);r=n[i?i[o++]:o++]}for(;a>o;o++)u=i?i[o]:o,r=t(r,n[u],u,n);return r},h.reduceRight=h.foldr=function(n,t,r,e){null==n&&(n=[]),t=g(t,e,4);var u,i=n.length!==+n.length&&h.keys(n),a=(i||n).length;if(arguments.length<3){if(!a)throw new TypeError(v);r=n[i?i[--a]:--a]}for(;a--;)u=i?i[a]:a,r=t(r,n[u],u,n);return r},h.find=h.detect=function(n,t,r){var e;return t=h.iteratee(t,r),h.some(n,function(n,r,u){return t(n,r,u)?(e=n,!0):void 0}),e},h.filter=h.select=function(n,t,r){var e=[];return null==n?e:(t=h.iteratee(t,r),h.each(n,function(n,r,u){t(n,r,u)&&e.push(n)}),e)},h.reject=function(n,t,r){return h.filter(n,h.negate(h.iteratee(t)),r)},h.every=h.all=function(n,t,r){if(null==n)return!0;t=h.iteratee(t,r);var e,u,i=n.length!==+n.length&&h.keys(n),a=(i||n).length;for(e=0;a>e;e++)if(u=i?i[e]:e,!t(n[u],u,n))return!1;return!0},h.some=h.any=function(n,t,r){if(null==n)return!1;t=h.iteratee(t,r);var e,u,i=n.length!==+n.length&&h.keys(n),a=(i||n).length;for(e=0;a>e;e++)if(u=i?i[e]:e,t(n[u],u,n))return!0;return!1},h.contains=h.include=function(n,t){return null==n?!1:(n.length!==+n.length&&(n=h.values(n)),h.indexOf(n,t)>=0)},h.invoke=function(n,t){var r=a.call(arguments,2),e=h.isFunction(t);return h.map(n,function(n){return(e?t:n[t]).apply(n,r)})},h.pluck=function(n,t){return h.map(n,h.property(t))},h.where=function(n,t){return h.filter(n,h.matches(t))},h.findWhere=function(n,t){return h.find(n,h.matches(t))},h.max=function(n,t,r){var e,u,i=-1/0,a=-1/0;if(null==t&&null!=n){n=n.length===+n.length?n:h.values(n);for(var o=0,l=n.length;l>o;o++)e=n[o],e>i&&(i=e)}else t=h.iteratee(t,r),h.each(n,function(n,r,e){u=t(n,r,e),(u>a||u===-1/0&&i===-1/0)&&(i=n,a=u)});return i},h.min=function(n,t,r){var e,u,i=1/0,a=1/0;if(null==t&&null!=n){n=n.length===+n.length?n:h.values(n);for(var o=0,l=n.length;l>o;o++)e=n[o],i>e&&(i=e)}else t=h.iteratee(t,r),h.each(n,function(n,r,e){u=t(n,r,e),(a>u||1/0===u&&1/0===i)&&(i=n,a=u)});return i},h.shuffle=function(n){for(var t,r=n&&n.length===+n.length?n:h.values(n),e=r.length,u=Array(e),i=0;e>i;i++)t=h.random(0,i),t!==i&&(u[i]=u[t]),u[t]=r[i];return u},h.sample=function(n,t,r){return null==t||r?(n.length!==+n.length&&(n=h.values(n)),n[h.random(n.length-1)]):h.shuffle(n).slice(0,Math.max(0,t))},h.sortBy=function(n,t,r){return t=h.iteratee(t,r),h.pluck(h.map(n,function(n,r,e){return{value:n,index:r,criteria:t(n,r,e)}}).sort(function(n,t){var r=n.criteria,e=t.criteria;if(r!==e){if(r>e||r===void 0)return 1;if(e>r||e===void 0)return-1}return n.index-t.index}),"value")};var m=function(n){return function(t,r,e){var u={};return r=h.iteratee(r,e),h.each(t,function(e,i){var a=r(e,i,t);n(u,e,a)}),u}};h.groupBy=m(function(n,t,r){h.has(n,r)?n[r].push(t):n[r]=[t]}),h.indexBy=m(function(n,t,r){n[r]=t}),h.countBy=m(function(n,t,r){h.has(n,r)?n[r]++:n[r]=1}),h.sortedIndex=function(n,t,r,e){r=h.iteratee(r,e,1);for(var u=r(t),i=0,a=n.length;a>i;){var o=i+a>>>1;r(n[o])<u?i=o+1:a=o}return i},h.toArray=function(n){return n?h.isArray(n)?a.call(n):n.length===+n.length?h.map(n,h.identity):h.values(n):[]},h.size=function(n){return null==n?0:n.length===+n.length?n.length:h.keys(n).length},h.partition=function(n,t,r){t=h.iteratee(t,r);var e=[],u=[];return h.each(n,function(n,r,i){(t(n,r,i)?e:u).push(n)}),[e,u]},h.first=h.head=h.take=function(n,t,r){return null==n?void 0:null==t||r?n[0]:0>t?[]:a.call(n,0,t)},h.initial=function(n,t,r){return a.call(n,0,Math.max(0,n.length-(null==t||r?1:t)))},h.last=function(n,t,r){return null==n?void 0:null==t||r?n[n.length-1]:a.call(n,Math.max(n.length-t,0))},h.rest=h.tail=h.drop=function(n,t,r){return a.call(n,null==t||r?1:t)},h.compact=function(n){return h.filter(n,h.identity)};var y=function(n,t,r,e){if(t&&h.every(n,h.isArray))return o.apply(e,n);for(var u=0,a=n.length;a>u;u++){var l=n[u];h.isArray(l)||h.isArguments(l)?t?i.apply(e,l):y(l,t,r,e):r||e.push(l)}return e};h.flatten=function(n,t){return y(n,t,!1,[])},h.without=function(n){return h.difference(n,a.call(arguments,1))},h.uniq=h.unique=function(n,t,r,e){if(null==n)return[];h.isBoolean(t)||(e=r,r=t,t=!1),null!=r&&(r=h.iteratee(r,e));for(var u=[],i=[],a=0,o=n.length;o>a;a++){var l=n[a];if(t)a&&i===l||u.push(l),i=l;else if(r){var c=r(l,a,n);h.indexOf(i,c)<0&&(i.push(c),u.push(l))}else h.indexOf(u,l)<0&&u.push(l)}return u},h.union=function(){return h.uniq(y(arguments,!0,!0,[]))},h.intersection=function(n){if(null==n)return[];for(var t=[],r=arguments.length,e=0,u=n.length;u>e;e++){var i=n[e];if(!h.contains(t,i)){for(var a=1;r>a&&h.contains(arguments[a],i);a++);a===r&&t.push(i)}}return t},h.difference=function(n){var t=y(a.call(arguments,1),!0,!0,[]);return h.filter(n,function(n){return!h.contains(t,n)})},h.zip=function(n){if(null==n)return[];for(var t=h.max(arguments,"length").length,r=Array(t),e=0;t>e;e++)r[e]=h.pluck(arguments,e);return r},h.object=function(n,t){if(null==n)return{};for(var r={},e=0,u=n.length;u>e;e++)t?r[n[e]]=t[e]:r[n[e][0]]=n[e][1];return r},h.indexOf=function(n,t,r){if(null==n)return-1;var e=0,u=n.length;if(r){if("number"!=typeof r)return e=h.sortedIndex(n,t),n[e]===t?e:-1;e=0>r?Math.max(0,u+r):r}for(;u>e;e++)if(n[e]===t)return e;return-1},h.lastIndexOf=function(n,t,r){if(null==n)return-1;var e=n.length;for("number"==typeof r&&(e=0>r?e+r+1:Math.min(e,r+1));--e>=0;)if(n[e]===t)return e;return-1},h.range=function(n,t,r){arguments.length<=1&&(t=n||0,n=0),r=r||1;for(var e=Math.max(Math.ceil((t-n)/r),0),u=Array(e),i=0;e>i;i++,n+=r)u[i]=n;return u};var d=function(){};h.bind=function(n,t){var r,e;if(p&&n.bind===p)return p.apply(n,a.call(arguments,1));if(!h.isFunction(n))throw new TypeError("Bind must be called on a function");return r=a.call(arguments,2),e=function(){if(!(this instanceof e))return n.apply(t,r.concat(a.call(arguments)));d.prototype=n.prototype;var u=new d;d.prototype=null;var i=n.apply(u,r.concat(a.call(arguments)));return h.isObject(i)?i:u}},h.partial=function(n){var t=a.call(arguments,1);return function(){for(var r=0,e=t.slice(),u=0,i=e.length;i>u;u++)e[u]===h&&(e[u]=arguments[r++]);for(;r<arguments.length;)e.push(arguments[r++]);return n.apply(this,e)}},h.bindAll=function(n){var t,r,e=arguments.length;if(1>=e)throw new Error("bindAll must be passed function names");for(t=1;e>t;t++)r=arguments[t],n[r]=h.bind(n[r],n);return n},h.memoize=function(n,t){var r=function(e){var u=r.cache,i=t?t.apply(this,arguments):e;return h.has(u,i)||(u[i]=n.apply(this,arguments)),u[i]};return r.cache={},r},h.delay=function(n,t){var r=a.call(arguments,2);return setTimeout(function(){return n.apply(null,r)},t)},h.defer=function(n){return h.delay.apply(h,[n,1].concat(a.call(arguments,1)))},h.throttle=function(n,t,r){var e,u,i,a=null,o=0;r||(r={});var l=function(){o=r.leading===!1?0:h.now(),a=null,i=n.apply(e,u),a||(e=u=null)};return function(){var c=h.now();o||r.leading!==!1||(o=c);var f=t-(c-o);return e=this,u=arguments,0>=f||f>t?(clearTimeout(a),a=null,o=c,i=n.apply(e,u),a||(e=u=null)):a||r.trailing===!1||(a=setTimeout(l,f)),i}},h.debounce=function(n,t,r){var e,u,i,a,o,l=function(){var c=h.now()-a;t>c&&c>0?e=setTimeout(l,t-c):(e=null,r||(o=n.apply(i,u),e||(i=u=null)))};return function(){i=this,u=arguments,a=h.now();var c=r&&!e;return e||(e=setTimeout(l,t)),c&&(o=n.apply(i,u),i=u=null),o}},h.wrap=function(n,t){return h.partial(t,n)},h.negate=function(n){return function(){return!n.apply(this,arguments)}},h.compose=function(){var n=arguments,t=n.length-1;return function(){for(var r=t,e=n[t].apply(this,arguments);r--;)e=n[r].call(this,e);return e}},h.after=function(n,t){return function(){return--n<1?t.apply(this,arguments):void 0}},h.before=function(n,t){var r;return function(){return--n>0?r=t.apply(this,arguments):t=null,r}},h.once=h.partial(h.before,2),h.keys=function(n){if(!h.isObject(n))return[];if(s)return s(n);var t=[];for(var r in n)h.has(n,r)&&t.push(r);return t},h.values=function(n){for(var t=h.keys(n),r=t.length,e=Array(r),u=0;r>u;u++)e[u]=n[t[u]];return e},h.pairs=function(n){for(var t=h.keys(n),r=t.length,e=Array(r),u=0;r>u;u++)e[u]=[t[u],n[t[u]]];return e},h.invert=function(n){for(var t={},r=h.keys(n),e=0,u=r.length;u>e;e++)t[n[r[e]]]=r[e];return t},h.functions=h.methods=function(n){var t=[];for(var r in n)h.isFunction(n[r])&&t.push(r);return t.sort()},h.extend=function(n){if(!h.isObject(n))return n;for(var t,r,e=1,u=arguments.length;u>e;e++){t=arguments[e];for(r in t)c.call(t,r)&&(n[r]=t[r])}return n},h.pick=function(n,t,r){var e,u={};if(null==n)return u;if(h.isFunction(t)){t=g(t,r);for(e in n){var i=n[e];t(i,e,n)&&(u[e]=i)}}else{var l=o.apply([],a.call(arguments,1));n=new Object(n);for(var c=0,f=l.length;f>c;c++)e=l[c],e in n&&(u[e]=n[e])}return u},h.omit=function(n,t,r){if(h.isFunction(t))t=h.negate(t);else{var e=h.map(o.apply([],a.call(arguments,1)),String);t=function(n,t){return!h.contains(e,t)}}return h.pick(n,t,r)},h.defaults=function(n){if(!h.isObject(n))return n;for(var t=1,r=arguments.length;r>t;t++){var e=arguments[t];for(var u in e)n[u]===void 0&&(n[u]=e[u])}return n},h.clone=function(n){return h.isObject(n)?h.isArray(n)?n.slice():h.extend({},n):n},h.tap=function(n,t){return t(n),n};var b=function(n,t,r,e){if(n===t)return 0!==n||1/n===1/t;if(null==n||null==t)return n===t;n instanceof h&&(n=n._wrapped),t instanceof h&&(t=t._wrapped);var u=l.call(n);if(u!==l.call(t))return!1;switch(u){case"[object RegExp]":case"[object String]":return""+n==""+t;case"[object Number]":return+n!==+n?+t!==+t:0===+n?1/+n===1/t:+n===+t;case"[object Date]":case"[object Boolean]":return+n===+t}if("object"!=typeof n||"object"!=typeof t)return!1;for(var i=r.length;i--;)if(r[i]===n)return e[i]===t;var a=n.constructor,o=t.constructor;if(a!==o&&"constructor"in n&&"constructor"in t&&!(h.isFunction(a)&&a instanceof a&&h.isFunction(o)&&o instanceof o))return!1;r.push(n),e.push(t);var c,f;if("[object Array]"===u){if(c=n.length,f=c===t.length)for(;c--&&(f=b(n[c],t[c],r,e)););}else{var s,p=h.keys(n);if(c=p.length,f=h.keys(t).length===c)for(;c--&&(s=p[c],f=h.has(t,s)&&b(n[s],t[s],r,e)););}return r.pop(),e.pop(),f};h.isEqual=function(n,t){return b(n,t,[],[])},h.isEmpty=function(n){if(null==n)return!0;if(h.isArray(n)||h.isString(n)||h.isArguments(n))return 0===n.length;for(var t in n)if(h.has(n,t))return!1;return!0},h.isElement=function(n){return!(!n||1!==n.nodeType)},h.isArray=f||function(n){return"[object Array]"===l.call(n)},h.isObject=function(n){var t=typeof n;return"function"===t||"object"===t&&!!n},h.each(["Arguments","Function","String","Number","Date","RegExp"],function(n){h["is"+n]=function(t){return l.call(t)==="[object "+n+"]"}}),h.isArguments(arguments)||(h.isArguments=function(n){return h.has(n,"callee")}),"function"!=typeof/./&&(h.isFunction=function(n){return"function"==typeof n||!1}),h.isFinite=function(n){return isFinite(n)&&!isNaN(parseFloat(n))},h.isNaN=function(n){return h.isNumber(n)&&n!==+n},h.isBoolean=function(n){return n===!0||n===!1||"[object Boolean]"===l.call(n)},h.isNull=function(n){return null===n},h.isUndefined=function(n){return n===void 0},h.has=function(n,t){return null!=n&&c.call(n,t)},h.noConflict=function(){return n._=t,this},h.identity=function(n){return n},h.constant=function(n){return function(){return n}},h.noop=function(){},h.property=function(n){return function(t){return t[n]}},h.matches=function(n){var t=h.pairs(n),r=t.length;return function(n){if(null==n)return!r;n=new Object(n);for(var e=0;r>e;e++){var u=t[e],i=u[0];if(u[1]!==n[i]||!(i in n))return!1}return!0}},h.times=function(n,t,r){var e=Array(Math.max(0,n));t=g(t,r,1);for(var u=0;n>u;u++)e[u]=t(u);return e},h.random=function(n,t){return null==t&&(t=n,n=0),n+Math.floor(Math.random()*(t-n+1))},h.now=Date.now||function(){return(new Date).getTime()};var _={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","`":"&#x60;"},w=h.invert(_),j=function(n){var t=function(t){return n[t]},r="(?:"+h.keys(n).join("|")+")",e=RegExp(r),u=RegExp(r,"g");return function(n){return n=null==n?"":""+n,e.test(n)?n.replace(u,t):n}};h.escape=j(_),h.unescape=j(w),h.result=function(n,t){if(null==n)return void 0;var r=n[t];return h.isFunction(r)?n[t]():r};var x=0;h.uniqueId=function(n){var t=++x+"";return n?n+t:t},h.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var A=/(.)^/,k={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},O=/\\|'|\r|\n|\u2028|\u2029/g,F=function(n){return"\\"+k[n]};h.template=function(n,t,r){!t&&r&&(t=r),t=h.defaults({},t,h.templateSettings);var e=RegExp([(t.escape||A).source,(t.interpolate||A).source,(t.evaluate||A).source].join("|")+"|$","g"),u=0,i="__p+='";n.replace(e,function(t,r,e,a,o){return i+=n.slice(u,o).replace(O,F),u=o+t.length,r?i+="'+\n((__t=("+r+"))==null?'':_.escape(__t))+\n'":e?i+="'+\n((__t=("+e+"))==null?'':__t)+\n'":a&&(i+="';\n"+a+"\n__p+='"),t}),i+="';\n",t.variable||(i="with(obj||{}){\n"+i+"}\n"),i="var __t,__p='',__j=Array.prototype.join,"+"print=function(){__p+=__j.call(arguments,'');};\n"+i+"return __p;\n";try{var a=new Function(t.variable||"obj","_",i)}catch(o){throw o.source=i,o}var l=function(n){return a.call(this,n,h)},c=t.variable||"obj";return l.source="function("+c+"){\n"+i+"}",l},h.chain=function(n){var t=h(n);return t._chain=!0,t};var E=function(n){return this._chain?h(n).chain():n};h.mixin=function(n){h.each(h.functions(n),function(t){var r=h[t]=n[t];h.prototype[t]=function(){var n=[this._wrapped];return i.apply(n,arguments),E.call(this,r.apply(h,n))}})},h.mixin(h),h.each(["pop","push","reverse","shift","sort","splice","unshift"],function(n){var t=r[n];h.prototype[n]=function(){var r=this._wrapped;return t.apply(r,arguments),"shift"!==n&&"splice"!==n||0!==r.length||delete r[0],E.call(this,r)}}),h.each(["concat","join","slice"],function(n){var t=r[n];h.prototype[n]=function(){return E.call(this,t.apply(this._wrapped,arguments))}}),h.prototype.value=function(){return this._wrapped},"function"==typeof define&&define.amd&&define("underscore",[],function(){return h})}).call(this);
@@ -1,18 +1,140 @@
1
- /*
1
+ /*
2
2
  * Ui-view: keys
3
3
  * */
4
4
 
5
+
6
+ html, body{
7
+ height:100%;
8
+ }
9
+
10
+ body {
11
+ font-family: "Lucida Grande", "Lucida Sans Unicode", Helvetica, Arial, Verdana, sans-serif;
12
+ background-color: #BBC7C5;
13
+ min-height: 100%;
14
+ }
15
+
16
+ h1, h2, h3, h4 {
17
+ text-shadow: 1px 1px 0px #782d15;
18
+ color: #be5330;
19
+ font-family: "Lucida Grande", "Lucida Sans Unicode", Helvetica, Arial, Verdana, sans-serif;
20
+ }
21
+
22
+ #right-side {
23
+ max-width: 620px;
24
+ }
25
+
26
+ #notification {
27
+ border-bottom-width: 1px;
28
+ border-bottom-style: solid;
29
+ text-align: center;
30
+ height: 25px;
31
+ line-height: 25px;
32
+ color: white;
33
+ font-weight: 600;
34
+ }
35
+
36
+ .notification-red {
37
+ position: absolute;
38
+ width: 100%;
39
+ z-index: 1;
40
+ background-color: #ab4e3d;
41
+ border-bottom-color: #823b2e;
42
+ text-shadow: #823b2e 1px 1px;
43
+ }
44
+
45
+ .notification-red-fatal {
46
+ position: absolute;
47
+ width: 100%;
48
+ z-index: 1;
49
+ animation: 1 blink 1s step-end infinite;
50
+ background-color: #ab4e3d;
51
+ border-bottom-color: #823b2e;
52
+ text-shadow: #823b2e 1px 1px;
53
+ }
54
+
55
+ .notification-blue {
56
+ position: absolute;
57
+ width: 100%;
58
+ z-index: 1;
59
+ background-color: #5390b7;
60
+ border-bottom-color: #326586;
61
+ text-shadow: #326586 1px 1px;
62
+ }
63
+
64
+ .notification-green {
65
+ position: absolute;
66
+ width: 100%;
67
+ z-index: 1;
68
+ background-color: #53b78b;
69
+ border-bottom-color: #348964;
70
+ text-shadow: #348964 1px 1px;
71
+ }
72
+
73
+ .left-nav-bottom {
74
+ text-align: center;
75
+ color: #87aba7;
76
+ background-color: #d9e8e6;
77
+ font-size: 10px;
78
+ padding: 5px;
79
+ }
80
+
81
+ .left-nav-bottom .highlight {
82
+ color: #2c4e4a;
83
+ }
84
+
85
+ .container {
86
+ height: 100%;
87
+ background-color: #fff;
88
+ }
89
+
90
+ .text-content {
91
+ padding-top: 20px;
92
+ }
93
+
94
+ .bottom-container {
95
+ background-color: #000;
96
+ background-opacity: 50%;
97
+ position: fixed;
98
+ font-weight: bold;
99
+ width: 0;
100
+ height: 0;
101
+ bottom:0;
102
+ left:0;
103
+ }
104
+
5
105
  .key {
6
- padding: 10px;
106
+ font-size: 13px;
107
+ padding-top: 10px;
108
+ padding-left: 13px;
109
+ padding-right: 13px;
110
+ padding-bottom: 10px;
7
111
  margin: 0px;
8
- height: 40px;
9
- border-top: 1px solid #eee;
112
+ height: 20px;
113
+ border-bottom: 1px solid #eee;
10
114
  display: block;
11
- background-color: #f5f5f5;
12
115
  }
13
116
 
14
117
  .key:hover {
15
- background-color: #eee;
118
+ background-color: #d9e8e6;
119
+ }
120
+
121
+ a {
122
+ text-decoration: none;
123
+ }
124
+
125
+ #key-keys {
126
+ }
127
+
128
+ #key-keys a:hover {
129
+ text-decoration: underline;
130
+ }
131
+
132
+ #settings-button {
133
+ float: left;
134
+ }
135
+
136
+ #new-key-button {
137
+ float: right;
16
138
  }
17
139
 
18
140
  #key-text {
@@ -21,14 +143,30 @@
21
143
  margin-left: 10px;
22
144
  }
23
145
 
146
+ .search {
147
+ font-weight: bold;
148
+ }
149
+
24
150
  #key-new {
25
151
  float: right;
26
152
  width: 30%;
27
153
  }
28
154
 
155
+ .key-data {
156
+ text-shadow: 1px 1px 0px #782d15;
157
+ border-bottom: 1px solid #782d15;
158
+ -moz-border-radius:10px 10px 10px 10px;
159
+ border-radius:7px 7px 7px 7px;
160
+ color: #fff;
161
+ background-color: #be5330;
162
+ padding: 1px 5px 1px 4px;
163
+ margin-right: 3px;
164
+ font-size: 10px;
165
+ font-weight: bold;
166
+ }
167
+
29
168
  .key-info {
30
169
  float: left;
31
- width: 85%;
32
170
  }
33
171
 
34
172
  .pointer {
@@ -37,8 +175,6 @@
37
175
 
38
176
  .key-actions {
39
177
  float: right;
40
- padding-top: 10px;
41
- width: 15%;
42
178
  }
43
179
 
44
180
  .clear {
@@ -46,5 +182,55 @@
46
182
  }
47
183
 
48
184
  .key-title {
49
- font-weight: 800;
185
+ }
186
+
187
+ #keys {
188
+ margin-top: 10px;
189
+ }
190
+
191
+ #keys tr {
192
+ color: #2c4e4a;
193
+ height: 25px;
194
+ text-align: left;
195
+ line-height: 25px;
196
+ }
197
+
198
+ #keys th {
199
+ border-bottom: 5px solid #2c4e4a;
200
+ font-weight: 600;
201
+ }
202
+
203
+ #keys td {
204
+ font-size: 12px;
205
+ }
206
+
207
+ #keys #key {
208
+ padding-left: 10px;
209
+ width: 93px;
210
+ }
211
+
212
+ #keys #size {
213
+ text-align: center;
214
+ width: 60px;
215
+ }
216
+
217
+ #keys #expires-in {
218
+ text-align: center;
219
+ width: 100px;
220
+ }
221
+
222
+ #keys #actions {
223
+ width: 60px;
224
+ text-align: center;
225
+ }
226
+
227
+ #keys .keys-key {
228
+ padding-left: 10px;
229
+ }
230
+
231
+ #keys .keys-expires-in {
232
+ text-align: center;
233
+ }
234
+ #keys .keys-actions {
235
+ text-align: center;
50
236
  }
@@ -0,0 +1,107 @@
1
+ .spaced-icon {
2
+ margin-right: 7px;
3
+ }
4
+
5
+ a.push_button {
6
+ color: #fff;
7
+ }
8
+
9
+ .push:active {
10
+ -webkit-box-shadow:0 1px 0 rgba(255, 255, 255, .5) inset, 0 -1px 0 rgba(255, 255, 255, .1) inset;
11
+ top:5px;
12
+ }
13
+
14
+ .push:hover, .push:focus {
15
+ color: #fff;
16
+ }
17
+
18
+ .push {
19
+ float: left;
20
+ letter-spacing: 1px;
21
+ position: relative;
22
+ height:40px;
23
+ text-align:center;
24
+ color:#FFF;
25
+ text-decoration:none;
26
+ font-family: "Lucida Grande", "Lucida Sans Unicode", Helvetica, Arial, Verdana, sans-serif;
27
+ font-size: 14px;
28
+ font-weight: normal;
29
+ padding-left: 20px;
30
+ padding-right: 20px;
31
+ }
32
+
33
+ .form-button-container {
34
+ width: 300px;
35
+ }
36
+
37
+ .form-button {
38
+ float: right;
39
+ }
40
+
41
+ .green {
42
+ text-shadow:-1px -1px 0 #2c4e4a;
43
+ background: #448780;
44
+ border:1px solid #2c4e4a;
45
+ -webkit-border-radius:5px;
46
+ -moz-border-radius:5px;
47
+ border-radius:5px;
48
+ -webkit-box-shadow:0 1px 0 rgba(255, 255, 255, .5) inset, 0 -1px 0 rgba(255, 255, 255, .1) inset, 0 4px 0 #2c4e4a, 0 4px 2px rgba(0, 0, 0, .5);
49
+ -moz-box-shadow:0 1px 0 rgba(255, 255, 255, .5) inset, 0 -1px 0 rgba(255, 255, 255, .1) inset, 0 4px 0 #2c4e4a, 0 4px 2px rgba(0, 0, 0, .5);
50
+ box-shadow:0 1px 0 rgba(255, 255, 255, .5) inset, 0 -1px 0 rgba(255, 255, 255, .1) inset, 0 4px 0 #2c4e4a, 0 4px 2px rgba(0, 0, 0, .5);
51
+ }
52
+
53
+ .green:hover, .green:focus {
54
+ background: #569c95;
55
+ }
56
+
57
+ .red {
58
+ text-shadow:-1px -1px 0 #A84155;
59
+ background: #D25068;
60
+ border:1px solid #D25068;
61
+ background-image:-webkit-linear-gradient(top, #F66C7B, #D25068);
62
+ background-image:-moz-linear-gradient(top, #F66C7B, #D25068);
63
+ background-image:-ms-linear-gradient(top, #F66C7B, #D25068);
64
+ background-image:-o-linear-gradient(top, #F66C7B, #D25068);
65
+ background-image:linear-gradient(to bottom, #F66C7B, #D25068);
66
+ -webkit-border-radius:5px;
67
+ -moz-border-radius:5px;
68
+ border-radius:5px;
69
+ -webkit-box-shadow:0 1px 0 rgba(255, 255, 255, .5) inset, 0 -1px 0 rgba(255, 255, 255, .1) inset, 0 4px 0 #AD4257, 0 4px 2px rgba(0, 0, 0, .5);
70
+ -moz-box-shadow:0 1px 0 rgba(255, 255, 255, .5) inset, 0 -1px 0 rgba(255, 255, 255, .1) inset, 0 4px 0 #AD4257, 0 4px 2px rgba(0, 0, 0, .5);
71
+ box-shadow:0 1px 0 rgba(255, 255, 255, .5) inset, 0 -1px 0 rgba(255, 255, 255, .1) inset, 0 4px 0 #AD4257, 0 4px 2px rgba(0, 0, 0, .5);
72
+ }
73
+
74
+ .red:hover {
75
+ background: #F66C7B;
76
+ background-image:-webkit-linear-gradient(top, #D25068, #F66C7B);
77
+ background-image:-moz-linear-gradient(top, #D25068, #F66C7B);
78
+ background-image:-ms-linear-gradient(top, #D25068, #F66C7B);
79
+ background-image:-o-linear-gradient(top, #D25068, #F66C7B);
80
+ background-image:linear-gradient(top, #D25068, #F66C7B);
81
+ }
82
+
83
+ .blue {
84
+ text-shadow:-1px -1px 0 #2C7982;
85
+ background: #3EACBA;
86
+ border:1px solid #379AA4;
87
+ background-image:-webkit-linear-gradient(top, #48C6D4, #3EACBA);
88
+ background-image:-moz-linear-gradient(top, #48C6D4, #3EACBA);
89
+ background-image:-ms-linear-gradient(top, #48C6D4, #3EACBA);
90
+ background-image:-o-linear-gradient(top, #48C6D4, #3EACBA);
91
+ background-image:linear-gradient(top, #48C6D4, #3EACBA);
92
+ -webkit-border-radius:5px;
93
+ -moz-border-radius:5px;
94
+ border-radius:5px;
95
+ -webkit-box-shadow:0 1px 0 rgba(255, 255, 255, .5) inset, 0 -1px 0 rgba(255, 255, 255, .1) inset, 0 4px 0 #338A94, 0 4px 2px rgba(0, 0, 0, .5);
96
+ -moz-box-shadow:0 1px 0 rgba(255, 255, 255, .5) inset, 0 -1px 0 rgba(255, 255, 255, .1) inset, 0 4px 0 #338A94, 0 4px 2px rgba(0, 0, 0, .5);
97
+ box-shadow:0 1px 0 rgba(255, 255, 255, .5) inset, 0 -1px 0 rgba(255, 255, 255, .1) inset, 0 4px 0 #338A94, 0 4px 2px rgba(0, 0, 0, .5);
98
+ }
99
+
100
+ .blue:hover {
101
+ background: #48C6D4;
102
+ background-image:-webkit-linear-gradient(top, #3EACBA, #48C6D4);
103
+ background-image:-moz-linear-gradient(top, #3EACBA, #48C6D4);
104
+ background-image:-ms-linear-gradient(top, #3EACBA, #48C6D4);
105
+ background-image:-o-linear-gradient(top, #3EACBA, #48C6D4);
106
+ background-image:linear-gradient(top, #3EACBA, #48C6D4);
107
+ }
@@ -0,0 +1,119 @@
1
+ .brown-input::-webkit-input-placeholder, input.brown-input::-webkit-input-placeholder {
2
+ font-family: "Lucida Grande", "Lucida Sans Unicode", Helvetica, Arial, Verdana, sans-serif;
3
+ font-size: 13px;
4
+ color: #988a84;
5
+ }
6
+
7
+ .brown-input:-moz-placeholder, input.brown-input:-moz-placeholder {
8
+ font-family: "Lucida Grande", "Lucida Sans Unicode", Helvetica, Arial, Verdana, sans-serif;
9
+ font-size: 13px;
10
+ color: #988a84;
11
+ }
12
+
13
+ .brown-input::-moz-placeholder, input.brown-input::-moz-placeholder {
14
+ font-family: "Lucida Grande", "Lucida Sans Unicode", Helvetica, Arial, Verdana, sans-serif;
15
+ font-size: 13px;
16
+ color: #988a84;
17
+ }
18
+
19
+ .brown-input:-ms-input-placeholder, input.brown-input:-ms-input-placeholder {
20
+ font-family: "Lucida Grande", "Lucida Sans Unicode", Helvetica, Arial, Verdana, sans-serif;
21
+ font-size: 13px;
22
+ color: #988a84;
23
+ }
24
+
25
+ .brown-input:hover, input.brown-input:hover {
26
+ background: #7b6e69;
27
+ }
28
+
29
+ .brown-input:focus, input.brown-input:focus {
30
+ border: 0;
31
+ border-bottom: 5px solid #0c2724;
32
+ color: #fff;
33
+ -webkit-box-shadow: 0px 0px 9px 0px #4f4745;
34
+ -moz-box-shadow: 0px 0px 9px 0px #4f4745;
35
+ box-shadow: 0px 0px 9px 0px #4f4745;
36
+ }
37
+
38
+ .brown-input, input.brown-input {
39
+ font-family: "Lucida Grande", "Lucida Sans Unicode", Helvetica, Arial, Verdana, sans-serif;
40
+ font-size: 13px;
41
+ color: #fff;
42
+ background-color: #675d59;
43
+ height: 25px;
44
+ -moz-border-radius:0;
45
+ border-radius:0;
46
+ border: 0;
47
+ padding:8px 15px;
48
+ padding-top: 10px;
49
+ padding-bottom: 10px;
50
+ margin: 0;
51
+ margin-bottom: 10px;
52
+ width: 270px;
53
+ border-bottom: 5px solid #4f4745;
54
+ }
55
+
56
+ /* green input*/
57
+
58
+ .green-input::-webkit-input-placeholder, input.green-input::-webkit-input-placeholder {
59
+ font-family: "Lucida Grande", "Lucida Sans Unicode", Helvetica, Arial, Verdana, sans-serif;
60
+ font-size: 13px;
61
+ color: #75bdb5;
62
+ }
63
+
64
+ .green-input:-moz-placeholder, input.green-input:-moz-placeholder {
65
+ font-family: "Lucida Grande", "Lucida Sans Unicode", Helvetica, Arial, Verdana, sans-serif;
66
+ font-size: 13px;
67
+ color: #75bdb5;
68
+ }
69
+
70
+ .green-input::-moz-placeholder, input.green-input::-moz-placeholder {
71
+ font-family: "Lucida Grande", "Lucida Sans Unicode", Helvetica, Arial, Verdana, sans-serif;
72
+ font-size: 13px;
73
+ color: #75bdb5;
74
+ }
75
+
76
+ .green-input:-ms-input-placeholder, input.green-input:-ms-input-placeholder {
77
+ font-family: "Lucida Grande", "Lucida Sans Unicode", Helvetica, Arial, Verdana, sans-serif;
78
+ font-size: 13px;
79
+ color: #75bdb5;
80
+ }
81
+
82
+ .green-input:hover, input.green-input:hover {
83
+ background: #569c95;
84
+ }
85
+
86
+ .green-input:focus, input.green-input:focus {
87
+ border: 0;
88
+ border-bottom: 5px solid #0c2724;
89
+ color: #fff;
90
+ -webkit-box-shadow: 0px 0px 9px 0px #2c4e4a;
91
+ -moz-box-shadow: 0px 0px 9px 0px #2c4e4a;
92
+ box-shadow: 0px 0px 9px 0px #2c4e4a;
93
+ }
94
+
95
+ .green-input, input.green-input {
96
+ font-family: "Lucida Grande", "Lucida Sans Unicode", Helvetica, Arial, Verdana, sans-serif;
97
+ font-size: 13px;
98
+ color: #fff;
99
+ background-color: #448780;
100
+ height: 25px;
101
+ -moz-border-radius:0;
102
+ border-radius:0;
103
+ border: 0;
104
+ padding:8px 15px;
105
+ padding-top: 10px;
106
+ padding-bottom: 10px;
107
+ margin: 0;
108
+ margin-bottom: 10px;
109
+ width: 270px;
110
+ border-bottom: 5px solid #2c4e4a;
111
+ }
112
+
113
+ #search-box {
114
+ background-image: url('/images/search.png');
115
+ background-repeat: no-repeat;
116
+ background-position: 7px 7px;
117
+ padding-left: 48px;
118
+ width: 237px;
119
+ }