Status Monitor, as inspired by Dave Roach's dribbble, Status Monitor, with my own twist and visions.
https://dribbble.com/shots/1669764-Status-Monitor
A Pen by Matt Porter on CodePen.
| <html ng-app="status_monitor"> | |
| <head> | |
| <script src="//cdnjs.cloudflare.com/ajax/libs/angular.js/1.1.5/angular.min.js"></script> | |
| </head> | |
| <body> | |
| <div ng-controller="EmpCtrl as ctrl"> | |
| <div class="nav"> | |
| <div class="title">Status Monitor</div> | |
| <div class="user">Welcome back, <a href="#">Mike Romanager</a></div> | |
| </div> | |
| <div class="filters"> | |
| <div class="button disabled" | |
| ng-click="predicate = '';">ALL</div> | |
| <div class="button disabled" | |
| ng-click="predicate = 'status';">IN</div> | |
| <div class="button disabled" | |
| ng-click="predicate = '-status';">OUT</div> | |
| <div class="button disabled" | |
| ng-click="predicate = 'first';">FIRST</div> | |
| <div class="button disabled" | |
| ng-click="predicate = 'last';">LAST</div> | |
| </div> | |
| <div class="hr"></div> | |
| <div class="container"> | |
| <div class="row"> | |
| <div class="employees"> | |
| <div class="employee" | |
| ng-repeat="employee in employees | orderBy:predicate" | |
| ng-class="{in: employee.status == 'in', | |
| out: employee.status == 'out'}"> | |
| <div class="name"> | |
| {{ employee.first }} {{ employee.last }} | |
| </div> | |
| <div class="date"> | |
| {{ employee.date | date: 'MMM dd yyyy h:mm a' }} | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <div class="footer"> | |
| by <a href="http://codepen.io/pattmorter">Matthew Porter</a><br> | |
| Inspired by <a href="https://dribbble.com/roach">Dave Roach</a>'s <a href="https://dribbble.com/shots/1669764-Status-Monitor">Status Monitor</a> | |
| </div> | |
| </div> | |
| </body> | |
| </html> | 
| angular.module('status_monitor', []) | |
| .controller('EmpCtrl', function($scope) { | |
| $scope.employees = employee_list; | |
| }); | |
| var employee_list = [ | |
| { | |
| first: 'Matthew', | |
| last: 'Chambers', | |
| status: 'in', | |
| date: '1406809200000' | |
| }, | |
| { | |
| first: 'Michelle', | |
| last: 'Sissom', | |
| status: 'in', | |
| date: '1406809440000' | |
| }, | |
| { | |
| first: 'Nathan', | |
| last: 'McOwen', | |
| status: 'in', | |
| date: '1406807400000' | |
| }, | |
| { | |
| first: 'Nicole', | |
| last: 'Thornton', | |
| status: 'in', | |
| date: '1406808120000' | |
| }, | |
| { | |
| first: 'Paul', | |
| last: 'Russell', | |
| status: 'out', | |
| date: '1406758860000' | |
| }, | |
| { | |
| first: 'Penny', | |
| last: 'Vrient', | |
| status: 'in', | |
| date: '1406806620000' | |
| }, | |
| { | |
| first: 'Shulu', | |
| last: 'Zhang', | |
| status: 'in', | |
| date: '1406807280000' | |
| }, | |
| { | |
| first: 'Sonny', | |
| last: 'Drennin', | |
| status: 'out', | |
| date: '1406808060000' | |
| }, | |
| { | |
| first: 'Sou', | |
| last: 'Sopraseuth', | |
| status: 'out', | |
| date: '1406054160000' | |
| }, | |
| { | |
| first: 'Steve', | |
| last: 'Lutes', | |
| status: 'in', | |
| date: '1406030280000' | |
| }, | |
| { | |
| first: 'Tana', | |
| last: 'Fager', | |
| status: 'in', | |
| date: '1406026200000' | |
| }, | |
| { | |
| first: 'Terry', | |
| last: 'Miller', | |
| status: 'in', | |
| date: '1406029860000' | |
| } | |
| ]; | 
Status Monitor, as inspired by Dave Roach's dribbble, Status Monitor, with my own twist and visions.
https://dribbble.com/shots/1669764-Status-Monitor
A Pen by Matt Porter on CodePen.
| @import url(http://fonts.googleapis.com/css?family=Open+Sans:400,700,600); | |
| $darkblack: #0C1422; | |
| $darkblue: #212E47; | |
| $bluegrey: #A5A9B1; | |
| $lightgrey: #ECEDEE; | |
| $disabled: #39455E; | |
| $enabled: #536383; | |
| $in: #76DE90; | |
| $out: #E31B29; | |
| body, html { | |
| background: $lightgrey; | |
| font-family: 'Open Sans'; | |
| } | |
| .container { | |
| margin: 0 10%; | |
| } | |
| .row { | |
| margin: 16px -15px; | |
| } | |
| .nav { | |
| background: $darkblack; | |
| width: 100%; | |
| padding: 0 10%; | |
| height: 62px; | |
| border-bottom: 2px solid $darkblue; | |
| } | |
| .title { | |
| display: inline; | |
| color: $lightgrey; | |
| vertical-align: center; | |
| line-height: 62px; | |
| font-size: 1.3em; | |
| } | |
| .user { | |
| @extend .title; | |
| float: right; | |
| font-size: 0.85em; | |
| } | |
| .user a { | |
| color: $lightgrey; | |
| } | |
| .user a:hover { | |
| color: $enabled; | |
| } | |
| .filters { | |
| background: #f1f1f1; | |
| line-height: 62px; | |
| height: 62px; | |
| padding: 0 10%; | |
| display: block; | |
| } | |
| .filters .sp { | |
| width: 16px; | |
| } | |
| .button { | |
| cursor: pointer; | |
| border: 1px solid $disabled; | |
| border-radius: 4px; | |
| padding: 1px 24px; | |
| font-size: 0.85em; | |
| color: $disabled; | |
| display: inline; | |
| margin: 0 2px; | |
| } | |
| .disabled:hover { | |
| background: $disabled; | |
| border: 1px solid $darkblack; | |
| color: $lightgrey; | |
| } | |
| .disabled { | |
| color: $disabled; | |
| border: 1px solid $disabled; | |
| } | |
| .enabled { | |
| color: $lightgrey; | |
| border: 1px solid $darkblack; | |
| background: $darkblue; | |
| transition: background 250ms, border 250ms, color 250ms; | |
| } | |
| .hr { | |
| margin: 0 auto; | |
| height: 1px; | |
| width: 100%; | |
| background: #ccc; | |
| display: block; | |
| } | |
| .employees { | |
| columns: 2; | |
| -webkit-columns: 2; | |
| -moz-columns: 2; | |
| list-style-position: inside; | |
| list-style-type: disc; | |
| } | |
| .employee { | |
| padding: 2px 16px; | |
| display: inline-block; | |
| margin: 12px 0; | |
| width: 100%; | |
| cursor: pointer; | |
| } | |
| .employee:hover { | |
| background: #ddd; | |
| } | |
| .employee .name { | |
| font-size: 1.25em; | |
| font-weight: 700; | |
| } | |
| .employee .date { | |
| color: #777; | |
| font-size: 0.75em; | |
| font-weight: 400; | |
| } | |
| .in { | |
| border-left: 3px solid $in; | |
| } | |
| .out { | |
| border-left: 3px solid $out; | |
| } | |
| .footer { | |
| margin: 24px 0 6px 0; | |
| font-size: 0.7em; | |
| height: 62px; | |
| position: relative; | |
| display: block; | |
| text-align: center; | |
| } | |
| a { | |
| color: $disabled; | |
| text-decoration: underline; | |
| } |