Skip to content

Commit c48c50f

Browse files
Remove and Revert
1 parent 3c9bffd commit c48c50f

3 files changed

Lines changed: 234 additions & 399 deletions

File tree

Lines changed: 234 additions & 129 deletions
Original file line numberDiff line numberDiff line change
@@ -1,143 +1,248 @@
11
<div class="admin-nav-gap">
2-
<mat-toolbar color="primary">
3-
<span><mat-icon>dashboard</mat-icon>&nbsp;Dashboard</span>
4-
</mat-toolbar>
2+
<div class="container-fluid">
3+
<ol class="breadcrumb">
4+
<li class="active"><i class="fa fa-dashboard"></i> Dashboard</li>
5+
</ol>
6+
</div>
57
</div>
68

7-
<div class="admin-content p-4">
8-
<mat-card class="mb-4">
9-
<mat-card-title>
10-
MAGE Access
11-
</mat-card-title>
12-
13-
<div fxLayout="row" fxLayoutGap="24px" fxLayoutAlign="start stretch">
14-
15-
<!-- Inactive Users Section -->
16-
<div fxFlex="50">
17-
<mat-card>
18-
<mat-card-title>
19-
Inactive Users
20-
<sup><mat-badge [content]="count()" matBadgeColor="accent"></mat-badge></sup>
21-
</mat-card-title>
22-
23-
<mat-form-field appearance="fill" class="w-100 mb-3">
24-
<mat-label>Search</mat-label>
25-
<input matInput [(ngModel)]="userSearch" (ngModelChange)="search()" />
26-
</mat-form-field>
27-
28-
<mat-list>
29-
<mat-list-item *ngFor="let user of inactiveUsers" (click)="gotoUser(user)" class="clickable">
30-
<mat-icon matListIcon>person</mat-icon>
31-
<div matLine>{{ user.displayName }}</div>
32-
<button mat-mini-button color="primary" *ngIf="hasPermission('UPDATE_USER')" (click)="activateUser($event, user)">
33-
<mat-icon>check</mat-icon> Activate
34-
</button>
35-
</mat-list-item>
36-
</mat-list>
9+
<div class="admin-content">
10+
<div class="container-fluid bottom-gap-l">
11+
12+
<h4 class="bottom-gap">MAGE Access</h4>
13+
<div class="row">
14+
<div class="col-md-6">
15+
<div class="row">
16+
<div class="col-md-12">
17+
<nav class="navbar navbar-default admin-dashboard-navbar">
18+
<div class="container-fluid">
19+
<div class="navbar-header">
20+
<a class="navbar-brand">Inactive Users <sup><span class="badge badge-accent">{{$ctrl.count()}}</span></sup></a>
21+
</div>
22+
23+
<form class="navbar-form navbar-left">
24+
<div class="form-group">
25+
<!-- Triggers search method -->
26+
<input type="text" class="form-control" placeholder="Search" ng-model="$ctrl.userSearch"
27+
ng-model-options="{ debounce: 1000 }" ng-change="$ctrl.search()">
28+
</div>
29+
</form>
30+
</div>
31+
</nav>
32+
</div>
33+
</div>
3734

38-
<div class="d-flex justify-content-end mt-3">
39-
<button mat-button (click)="previous()" [disabled]="!hasPrevious()">← Previous User</button>
40-
<button mat-button (click)="next()" [disabled]="!hasNext()">Next User →</button>
35+
<div class="row">
36+
<div class="col-sm-12">
37+
<div class="admin-table">
38+
<div class="well-item"
39+
ng-repeat="user in $ctrl.inactiveUsers">
40+
<div class="row pointer" ng-click="$ctrl.gotoUser(user)">
41+
<div class="col-md-12">
42+
<div class="right-gap pull-left">
43+
<i class="fa fa-user"></i>
44+
</div>
45+
<span>
46+
{{user.displayName}}
47+
</span>
48+
<span class="pull-right" ng-if="$ctrl.hasPermission('UPDATE_USER')">
49+
<a class="btn btn-xs btn-success" ng-click="$ctrl.activateUser($event, user)"><i
50+
class="fa fa-check"></i> Activate</a>
51+
</span>
52+
</div>
53+
</div>
54+
</div>
55+
</div>
56+
</div>
57+
</div>
58+
<div class="row">
59+
<div class="col-md-12">
60+
<ul class="pager pull-right">
61+
<li ng-class="{'disabled': $ctrl.hasPrevious() == false}">
62+
<a href="javascript:void(0);" ng-click="$ctrl.previous()">&larr; Previous User</a>
63+
</li>
64+
<li ng-class="{'disabled': $ctrl.hasNext() == false}">
65+
<a href="javascript:void(0);" ng-click="$ctrl.next()">Next User&rarr;</a>
66+
</li>
67+
</ul>
4168
</div>
42-
</mat-card>
69+
</div>
4370
</div>
44-
45-
<!-- Unregistered Devices Section -->
46-
<div fxFlex="50">
47-
<mat-card>
48-
<mat-card-title>
49-
Unregistered Devices
50-
<sup><mat-badge [content]="deviceCount()" matBadgeColor="accent"></mat-badge></sup>
51-
</mat-card-title>
52-
53-
<mat-form-field appearance="fill" class="w-100 mb-3">
54-
<mat-label>Search</mat-label>
55-
<input matInput [(ngModel)]="deviceSearch" (ngModelChange)="searchDevices()" />
56-
</mat-form-field>
57-
58-
<mat-list>
59-
<mat-list-item *ngFor="let d of unregisteredDevices" (click)="gotoDevice(d)" class="clickable">
60-
<mat-icon matListIcon [ngClass]="iconClass(d)"></mat-icon>
61-
<div matLine *ngIf="d.user">{{ d.user.displayName }}</div>
62-
<div matLine class="text-muted" *ngIf="d.user">({{ d.uid }})</div>
63-
<button mat-mini-button color="primary" *ngIf="hasPermission('UPDATE_DEVICE')" (click)="registerDevice($event, d)">
64-
<mat-icon>check</mat-icon> Register
65-
</button>
66-
</mat-list-item>
67-
</mat-list>
68-
69-
<div class="d-flex justify-content-end mt-3">
70-
<button mat-button (click)="previousDevice()" [disabled]="!hasPreviousDevice()">← Previous Device</button>
71-
<button mat-button (click)="nextDevice()" [disabled]="!hasNextDevice()">Next Device →</button>
71+
<div class="col-md-6">
72+
<div class="row">
73+
<div class="col-md-12">
74+
<nav class="navbar navbar-default admin-dashboard-navbar">
75+
<div class="container-fluid">
76+
<div class="navbar-header">
77+
<a class="navbar-brand">Unregistered Devices <sup><span class="badge badge-accent">{{$ctrl.deviceCount()}}</span></sup></a>
78+
</div>
79+
80+
<form class="navbar-form navbar-left">
81+
<div class="form-group">
82+
<input type="text" class="form-control" placeholder="Search" ng-model="$ctrl.deviceSearch"
83+
ng-model-options="{ debounce: 1000 }" ng-change="$ctrl.searchDevices()">
84+
</div>
85+
</form>
86+
</div>
87+
</nav>
88+
</div>
89+
</div>
90+
<div class="row">
91+
<div class="col-sm-12">
92+
<div class="admin-table">
93+
<div class="well-item"
94+
ng-repeat="d in $ctrl.unregisteredDevices">
95+
<div class="row pointer" ng-click="$ctrl.gotoDevice(d)">
96+
<div class="col-md-12">
97+
<div class="right-gap pull-left">
98+
<i class="fa" ng-class="iconClass(d)"></i>
99+
</div>
100+
101+
<span class="strong" ng-if="d.user">{{d.user.displayName}}</span>
102+
<span class="muted" ng-if="d.user">({{d.uid}})</span>
103+
104+
<span class="pull-right" ng-if="$ctrl.hasPermission('UPDATE_DEVICE')">
105+
<a class="btn btn-xs btn-success" ng-click="$ctrl.registerDevice($event, d)"><i
106+
class="fa fa-check"></i> Register</a>
107+
</span>
108+
</div>
109+
</div>
110+
</div>
111+
</div>
72112
</div>
73-
</mat-card>
113+
</div>
114+
<div class="row">
115+
<div class="col-md-12">
116+
<ul class="pager pull-right">
117+
<ul class="pager pull-right">
118+
<li ng-class="{'disabled': $ctrl.hasPreviousDevice() == false}">
119+
<a href="javascript:void(0);" ng-click="$ctrl.previous()">&larr; Previous Device</a>
120+
</li>
121+
<li ng-class="{'disabled': $ctrl.hasNextDevice() == false}">
122+
<a href="javascript:void(0);" ng-click="$ctrl.next()">Next Device&rarr;</a>
123+
</li>
124+
</ul>
125+
</div>
126+
</div>
74127
</div>
75128
</div>
76-
</mat-card>
77-
78-
<!-- Logins Section -->
79-
<mat-card class="mt-5">
80-
<mat-card-title>Logins</mat-card-title>
81-
82-
<div fxLayout="row" fxLayoutGap="24px" fxLayoutAlign="start stretch">
83-
<mat-form-field appearance="fill" fxFlex>
84-
<mat-label>Filter on User</mat-label>
85-
<input matInput [matAutocomplete]="userAuto" [(ngModel)]="user" (ngModelChange)="filterLogins()" />
86-
<mat-autocomplete #userAuto="matAutocomplete">
87-
<mat-option *ngFor="let u of loginSearchResults" [value]="u">
88-
{{ u.displayName }}
89-
</mat-option>
90-
</mat-autocomplete>
91-
</mat-form-field>
92-
93-
<mat-form-field appearance="fill" fxFlex>
94-
<mat-label>Filter on Device</mat-label>
95-
<input matInput [matAutocomplete]="deviceAuto" [(ngModel)]="device" (ngModelChange)="filterLogins()" />
96-
<mat-autocomplete #deviceAuto="matAutocomplete">
97-
<mat-option *ngFor="let d of loginDeviceSearchResults" [value]="d">
98-
{{ d.uid }}
99-
</mat-option>
100-
</mat-autocomplete>
101-
</mat-form-field>
102129

103-
<mat-form-field appearance="fill">
104-
<mat-label>Start Date</mat-label>
105-
<input matInput [matDatepicker]="startPicker" [(ngModel)]="login.startDate" (dateChange)="dateFilterChanged()" />
106-
<mat-datepicker-toggle matSuffix [for]="startPicker"></mat-datepicker-toggle>
107-
<mat-datepicker #startPicker></mat-datepicker>
108-
</mat-form-field>
109-
110-
<mat-form-field appearance="fill">
111-
<mat-label>End Date</mat-label>
112-
<input matInput [matDatepicker]="endPicker" [(ngModel)]="login.endDate" (dateChange)="dateFilterChanged()" />
113-
<mat-datepicker-toggle matSuffix [for]="endPicker"></mat-datepicker-toggle>
114-
<mat-datepicker #endPicker></mat-datepicker>
115-
</mat-form-field>
130+
<hr>
131+
132+
<div class="row top-gap-xl">
133+
<div class="col-md-12">
134+
<nav class="navbar navbar-default admin-dashboard-navbar">
135+
<div class="container-fluid">
136+
<div class="navbar-header">
137+
<button type="button" class="admin-navbar-toggle navbar-toggle collapsed" data-toggle="collapse"
138+
data-target="#login-nav" aria-expanded="false">
139+
<span class="sr-only">Toggle navigation</span>
140+
<span class="icon-bar"></span>
141+
<span class="icon-bar"></span>
142+
<span class="icon-bar"></span>
143+
</button>
144+
<a class="navbar-brand">Logins</a>
145+
</div>
146+
147+
<div class="collapse navbar-collapse admin-navbar-collapse" id="login-nav">
148+
<form class="navbar-form navbar-left fixed-width-navbar" id="login-nav">
149+
<div class="form-group">
150+
<input type="text" ng-model="$ctrl.user" placeholder="Filter on user"
151+
uib-typeahead="user as user.displayName for user in $ctrl.searchLoginsAgainstUsers($viewValue)"
152+
typeahead-loading="$ctrl.loginSearchResults" class="form-control" ng-model-options="{ debounce: 1000 }"
153+
typeahead-min-length="0" typeahead-on-select='$ctrl.filterLogins()'>
154+
</div>
155+
156+
<div class="form-group">
157+
<div class="form-group">
158+
<input type="text" ng-model="$ctrl.device" placeholder="Filter on device"
159+
uib-typeahead="device as device.uid for device in $ctrl.searchLoginsAgainstDevices($viewValue)"
160+
typeahead-loading="$ctrl.loginDeviceSearchResults" class="form-control" ng-model-options="{ debounce: 1000 }"
161+
typeahead-min-length="0" typeahead-on-select='$ctrl.filterLogins()'>
162+
</div>
163+
</div>
164+
165+
<div class="form-group">
166+
<div class="input-group">
167+
<input type="text" placeholder="Start Date" class="form-control" uib-datepicker-popup="MM-dd-yyyy"
168+
ng-model="$ctrl.login.startDate" ng-change="$ctrl.dateFilterChanged()"
169+
is-open="$ctrl.login.startDateOpened" close-text="Close" />
170+
<span class="input-group-btn">
171+
<button type="button" class="btn btn-default" ng-click="$ctrl.openLoginStart($event)"><i
172+
class="glyphicon glyphicon-calendar"></i></button>
173+
</span>
174+
</div>
175+
</div>
176+
<div class="form-group">
177+
<span class="navbar-text-inverse">&nbsp;to&nbsp;</span>
178+
</div>
179+
<div class="form-group">
180+
<div class="input-group">
181+
<input type="text" placeholder="End Date" class="form-control" uib-datepicker-popup="MM-dd-yyyy"
182+
ng-model="$ctrl.login.endDate" ng-change="$ctrl.dateFilterChanged()"
183+
is-open="$ctrl.login.endDateOpened" close-text="Close" />
184+
<span class="input-group-btn">
185+
<button type="button" class="btn btn-default" ng-click="$ctrl.openLoginEnd($event)"><i
186+
class="glyphicon glyphicon-calendar"></i></button>
187+
</span>
188+
</div>
189+
</div>
190+
</form>
191+
<form class="navbar-form navbar-right">
192+
<div class="form-group">
193+
<span class="navbar-text-inverse">Results: </span>
194+
<select class="form-control" ng-init="$ctrl.loginResultsLimit = 10" ng-model="$ctrl.loginResultsLimit"
195+
ng-change="$ctrl.loginResultsLimitChanged()"
196+
ng-options="o as o for o in [10, 25, 50, 100]"></select>
197+
</div>
198+
</form>
199+
</div>
116200

117-
<mat-form-field appearance="fill">
118-
<mat-label>Results</mat-label>
119-
<mat-select [(ngModel)]="loginResultsLimit" (selectionChange)="loginResultsLimitChanged()">
120-
<mat-option *ngFor="let opt of [10, 25, 50, 100]" [value]="opt">{{ opt }}</mat-option>
121-
</mat-select>
122-
</mat-form-field>
201+
</div>
202+
</nav>
203+
</div>
123204
</div>
124-
125-
<mat-list class="mt-4">
126-
<mat-list-item *ngFor="let login of loginPage?.logins">
127-
<mat-icon matListIcon [ngClass]="iconClass(login.device)"></mat-icon>
128-
<div matLine>
129-
<a (click)="gotoUser(login.user)">{{ login.user.displayName }}</a>
130-
<span class="muted">(<a (click)="gotoDevice(login.device)">{{ login.device.uid }}</a>)</span>
131-
</div>
132-
<div matLine>
133-
{{ login.timestamp | date:'short' }} ({{ login.timestamp | date:'shortTime' }})
205+
<div class="row">
206+
<div class="col-sm-12">
207+
<div class="admin-table">
208+
<div class="well-item" ng-repeat="login in $ctrl.loginPage.logins">
209+
<div class="row">
210+
<div class="col-md-12">
211+
<div class="right-gap pull-left">
212+
<i class="fa fa-fw" ng-class="$ctrl.iconClass(login.device)"></i>
213+
</div>
214+
<strong class="right-gap"><a href="javascript:void(0);"
215+
ng-click="$ctrl.gotoUser(login.user)">{{login.user.displayName}}</a></strong>
216+
<span class="muted"><a href="javascript:void(0);"
217+
ng-click="$ctrl.gotoDevice(login.device)">{{login.device.uid}}</a></span>
218+
</div>
219+
</div>
220+
<div class="row">
221+
<div class="col-md-12">
222+
<div class="right-gap pull-left">
223+
<i class="fa fa-fw"></i>
224+
</div>
225+
<span>{{login.timestamp | moment:'fromNow'}}
226+
({{login.timestamp | moment:'MMM D YYYY hh:mm:ss A'}})</span>
227+
</div>
228+
</div>
229+
</div>
134230
</div>
135-
</mat-list-item>
136-
</mat-list>
137-
138-
<div class="d-flex justify-content-end mt-3">
139-
<button mat-button (click)="pageLogin(loginPage.prev)" [disabled]="!showPrevious">← Previous</button>
140-
<button mat-button (click)="pageLogin(loginPage.next)" [disabled]="!showNext">Next →</button>
231+
</div>
141232
</div>
142-
</mat-card>
143-
</div>
233+
<div class="row">
234+
<div class="col-md-12">
235+
<ul class="pager pull-right">
236+
<li ng-class="{'disabled': !$ctrl.showPrevious}">
237+
<a href="javascript:void(0);" ng-click="!$ctrl.showPrevious || $ctrl.pageLogin($ctrl.loginPage.prev)">&larr;
238+
Previous</a>
239+
</li>
240+
<li ng-class="{'disabled': !$ctrl.showNext}">
241+
<a href="javascript:void(0);" ng-click="!$ctrl.showNext || $ctrl.pageLogin($ctrl.loginPage.next)">Next
242+
&rarr;</a>
243+
</li>
244+
</ul>
245+
</div>
246+
</div>
247+
</div>
248+
</div>

web-app/admin/src/ng1/admin/admin.dashboard.scss

Whitespace-only changes.

0 commit comments

Comments
 (0)