Skip to content

Commit 462fb8d

Browse files
committed
initial commit
1 parent 3836551 commit 462fb8d

File tree

3 files changed

+697
-3
lines changed

3 files changed

+697
-3
lines changed
Lines changed: 337 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,337 @@
1-
<p>team-details works!</p>
1+
<div class="admin-nav-gap">
2+
<div class="container-fluid">
3+
<ol class="breadcrumb">
4+
<li><i class="fa fa-users admin-dashboard"></i><a [routerLink]="['/admin/teams']">Teams</a></li>
5+
<li class="active">{{team?.name}}</li>
6+
</ol>
7+
</div>
8+
</div>
9+
10+
<div class="container-fluid bottom-gap-l">
11+
<div class="row">
12+
<div class="col-md-offset-1 col-md-10" *ngIf="team">
13+
14+
<div class="row">
15+
<div class="col-md-8">
16+
<h2>Team: {{team.name}}</h2>
17+
</div>
18+
<div class="col-md-4">
19+
<h2 *ngIf="hasUpdatePermission">
20+
<button class="btn btn-default pull-right" (click)="editTeam(team)"><i class="fa fa-edit"></i>
21+
Edit</button>
22+
<button class="btn btn-default pull-right right-gap" (click)="editAccess(team)"><i
23+
class="fa fa-shield"></i> Access</button>
24+
</h2>
25+
</div>
26+
</div>
27+
28+
<hr>
29+
30+
<div class="row top-gap-l">
31+
<div class="col-sm-6 col-xs-12">
32+
33+
<div class="row top-gap-l">
34+
<div class="col-md-3">
35+
<span class="muted">Name:&nbsp;</span>
36+
</div>
37+
<div class="col-md-9">
38+
<span>{{team.name}}</span>
39+
</div>
40+
</div>
41+
42+
<div class="row top-gap-s bottom-gap">
43+
<div class="col-md-3">
44+
<span class="muted">Description:&nbsp;</span>
45+
</div>
46+
<div class="col-md-9">
47+
<span>{{team.description}}</span>
48+
</div>
49+
</div>
50+
</div>
51+
52+
<div class="col-sm-6" *ngIf="hasDeletePermission">
53+
<div class="card">
54+
<div class="card-content">
55+
<strong class="text-danger">Delete Team</strong>
56+
<p class="text-danger">Deleting a team will remove all team information. This cannot be
57+
undone, and
58+
all team data will be unrecoverable. Users within the team will not be deleted.</p>
59+
<button class="btn btn-danger top-gap" (click)="deleteTeam()"> <i class="fa fa-trash-o"></i>
60+
Delete</button>
61+
</div>
62+
</div>
63+
</div>
64+
65+
</div>
66+
67+
<hr>
68+
69+
<div class="row">
70+
<div class="col-md-6 col-xs-12">
71+
72+
<div *ngIf="hasUpdatePermission" class="bottom-gap-l">
73+
<div class="row">
74+
<div class="col-md-12">
75+
<nav class="navbar navbar-default admin-dashboard-navbar">
76+
<div class="container-fluid">
77+
<div class="navbar-header">
78+
<a class="navbar-brand">Add Team Member <sup><span
79+
class="badge">{{nonMembersPage.totalCount}}</span></sup></a>
80+
</div>
81+
82+
<form class="navbar-form navbar-left">
83+
<div class="form-group">
84+
<input type="text" class="form-control" placeholder="Search"
85+
[(ngModel)]="nonMemberSearchTerm"
86+
[ngModelOptions]="{standalone: true, debounce: 500}"
87+
(ngModelChange)="searchNonMember()">
88+
</div>
89+
</form>
90+
</div>
91+
</nav>
92+
</div>
93+
</div>
94+
95+
<div class="admin-table admin-teams-table">
96+
<div class="admin-teams-table-content">
97+
<div class="admin-teams-table-items">
98+
<div class="admin-teams-table-item" *ngFor="let user of nonMembersPage.items">
99+
<div class="row pointer" (click)="gotoUser(user)">
100+
<div class="admin-teams-user">
101+
<!-- <user-avatar class="right-gap" [user]="user" [avatarWidth]="40"
102+
[avatarHeight]="40"></user-avatar> -->
103+
<div class="admin-teams-user-detail">
104+
<div class="strong right-gap">
105+
<span class="right-gap">{{user.displayName}}</span>
106+
<span class="muted">({{user.username}})</span>
107+
</div>
108+
<div class="muted">{{user.email}}</div>
109+
</div>
110+
<a class="btn btn-xs btn-success" (click)="addMember($event, user)">Add
111+
Member</a>
112+
</div>
113+
</div>
114+
</div>
115+
</div>
116+
<div class="row">
117+
<div class="col-md-12">
118+
<ul class="pager pull-right admin-teams-pager">
119+
<li [ngClass]="{'disabled': !hasPreviousNonMember()}">
120+
<a href="javascript:void(0);" (click)="previousNonMemberPage()">&larr;
121+
Previous</a>
122+
</li>
123+
<li [ngClass]="{'disabled': !hasNextNonMember()}">
124+
<a href="javascript:void(0);"
125+
(click)="nextNonMemberPage()">Next&rarr;</a>
126+
</li>
127+
</ul>
128+
</div>
129+
</div>
130+
</div>
131+
132+
<div class="admin-teams-table-status" *ngIf="loadingNonMembers">
133+
<div class="admin-teams-table-status-text">Loading</div>
134+
<div>
135+
<i class="fa fa-spinner fa-spin admin-teams-table-status-spinner"></i>
136+
</div>
137+
</div>
138+
</div>
139+
</div>
140+
141+
<div class="row">
142+
<div class="col-md-12">
143+
<nav class="navbar navbar-default admin-dashboard-navbar">
144+
<div class="container-fluid">
145+
<div class="navbar-header">
146+
<a class="navbar-brand">Team Members <sup><span
147+
class="badge">{{membersPage.totalCount}}</span></sup></a>
148+
</div>
149+
150+
<form class="navbar-form navbar-left">
151+
<div class="form-group">
152+
<input type="text" class="form-control" placeholder="Search"
153+
[(ngModel)]="memberSearchTerm"
154+
[ngModelOptions]="{standalone: true, debounce: 500}"
155+
(ngModelChange)="searchMembers()">
156+
</div>
157+
</form>
158+
<div class="navbar-form navbar-right right-gap-s" *ngIf="hasUpdatePermission">
159+
<button class="btn btn-default navbar-right"
160+
(click)="edit = !edit">Edit</button>
161+
</div>
162+
</div>
163+
</nav>
164+
</div>
165+
</div>
166+
<div class="admin-table admin-teams-table">
167+
<div class="admin-teams-table-content">
168+
<div class="admin-teams-table-items">
169+
<div class="admin-teams-table-item" *ngFor="let user of membersPage.items">
170+
<div class="row pointer" (click)="gotoUser(user)">
171+
<div class="admin-teams-user">
172+
<!-- <user-avatar class="pull-left right-gap" [user]="user" [avatarWidth]="40"
173+
[avatarHeight]="40"></user-avatar> -->
174+
<div class="admin-teams-user-detail">
175+
<div class="strong right-gap">
176+
<span class="right-gap">{{user.displayName}}</span>
177+
<span class="muted">({{user.username}})</span>
178+
</div>
179+
<div class="muted">{{user.email}}</div>
180+
</div>
181+
<a class="btn btn-xs btn-danger" *ngIf="edit"
182+
(click)="removeMember($event, user)">Remove Member</a>
183+
</div>
184+
</div>
185+
</div>
186+
</div>
187+
<div class="row">
188+
<div class="col-md-12">
189+
<ul class="pager pull-right admin-teams-pager">
190+
<li [ngClass]="{'disabled': !hasPreviousMember()}">
191+
<a href="javascript:void(0);" (click)="previousMemberPage()">&larr;
192+
Previous</a>
193+
</li>
194+
<li [ngClass]="{'disabled': !hasNextMember()}">
195+
<a href="javascript:void(0);" (click)="nextMemberPage()">Next&rarr;</a>
196+
</li>
197+
</ul>
198+
</div>
199+
</div>
200+
</div>
201+
202+
<div class="admin-teams-table-status" *ngIf="loadingMembers">
203+
<div class="admin-teams-table-status-text">Loading</div>
204+
<div>
205+
<i class="fa fa-spinner fa-spin admin-teams-table-status-spinner"></i>
206+
</div>
207+
</div>
208+
</div>
209+
</div>
210+
211+
<div class="col-md-6 col-xs-12">
212+
<div class="row">
213+
<div class="col-md-12">
214+
<nav class="navbar navbar-default admin-dashboard-navbar">
215+
<div class="container-fluid">
216+
<div class="navbar-header">
217+
<a class="navbar-brand">Add Team to an Event <sup><span
218+
class="badge">{{filteredNonTeamEvents.length}}</span></sup></a>
219+
</div>
220+
221+
<form class="navbar-form navbar-left">
222+
<div class="form-group">
223+
<input type="text" class="form-control" placeholder="Search"
224+
[(ngModel)]="eventSearch" [ngModelOptions]="{standalone: true}"
225+
(ngModelChange)="onEventSearchChange()">
226+
</div>
227+
</form>
228+
</div>
229+
</nav>
230+
</div>
231+
</div>
232+
233+
<div class="admin-table admin-teams-table">
234+
<div class="admin-teams-table-content">
235+
<div class="admin-teams-table-items">
236+
<div class="admin-teams-table-item"
237+
*ngFor="let event of getPagedEvents(filteredNonTeamEvents, nonTeamEventsPage)">
238+
<div class="row pointer" (click)="gotoEvent(event)">
239+
<div class="admin-teams-user">
240+
<i class="fa fa-calendar admin-teams-table-item-icon"></i>
241+
<div class="admin-teams-user-detail">
242+
<div class="strong right-gap">
243+
<span class="right-gap">{{event.name}}</span>
244+
</div>
245+
<div class="muted">{{event.description}}</div>
246+
</div>
247+
<a class="btn btn-xs btn-success"
248+
(click)="addEventToTeam($event, event)">Add Event</a>
249+
</div>
250+
</div>
251+
</div>
252+
</div>
253+
<div class="row">
254+
<div class="col-md-12">
255+
<ul class="pager pull-right admin-teams-pager">
256+
<li [ngClass]="{'disabled': !canGoPreviousNonTeamEvents()}">
257+
<a href="javascript:void(0);"
258+
(click)="canGoPreviousNonTeamEvents() && (nonTeamEventsPage = nonTeamEventsPage - 1)">&larr;
259+
Previous</a>
260+
</li>
261+
<li [ngClass]="{'disabled': !canGoNextNonTeamEvents()}">
262+
<a href="javascript:void(0);"
263+
(click)="canGoNextNonTeamEvents() && (nonTeamEventsPage = nonTeamEventsPage + 1)">Next&rarr;</a>
264+
</li>
265+
</ul>
266+
</div>
267+
</div>
268+
</div>
269+
</div>
270+
271+
<div class="row top-gap-l">
272+
<div class="col-md-12">
273+
<nav class="navbar navbar-default admin-dashboard-navbar">
274+
<div class="container-fluid">
275+
<div class="navbar-header">
276+
<a class="navbar-brand">Events for {{team.name}} <sup><span
277+
class="badge">{{filteredEvents.length}}</span></sup></a>
278+
</div>
279+
280+
<form class="navbar-form navbar-left">
281+
<div class="form-group">
282+
<input type="text" class="form-control" placeholder="Search"
283+
[(ngModel)]="teamEventSearch" [ngModelOptions]="{standalone: true}"
284+
(ngModelChange)="onTeamEventSearchChange()">
285+
</div>
286+
</form>
287+
<div class="navbar-form navbar-right right-gap-s">
288+
<button class="btn btn-default navbar-right"
289+
(click)="editEvent = !editEvent">Edit</button>
290+
</div>
291+
</div>
292+
</nav>
293+
</div>
294+
</div>
295+
296+
<div class="admin-table admin-teams-table">
297+
<div class="admin-teams-table-content">
298+
<div class="admin-teams-table-items">
299+
<div class="admin-teams-table-item"
300+
*ngFor="let event of getPagedEvents(filteredEvents, teamEventsPage)">
301+
<div class="row pointer" (click)="gotoEvent(event)">
302+
<div class="admin-teams-user">
303+
<i class="fa fa-calendar admin-teams-table-item-icon"></i>
304+
<div class="admin-teams-user-detail">
305+
<div class="strong right-gap">
306+
<span class="right-gap">{{event.name}}</span>
307+
</div>
308+
<div class="muted">{{event.description}}</div>
309+
</div>
310+
<a class="btn btn-xs btn-danger" *ngIf="editEvent"
311+
(click)="removeEventFromTeam($event, event)">Remove Event</a>
312+
</div>
313+
</div>
314+
</div>
315+
</div>
316+
<div class="row">
317+
<div class="col-md-12">
318+
<ul class="pager pull-right admin-teams-pager">
319+
<li [ngClass]="{'disabled': !canGoPreviousTeamEvents()}">
320+
<a href="javascript:void(0);"
321+
(click)="canGoPreviousTeamEvents() && (teamEventsPage = teamEventsPage - 1)">&larr;
322+
Previous</a>
323+
</li>
324+
<li [ngClass]="{'disabled': !canGoNextTeamEvents()}">
325+
<a href="javascript:void(0);"
326+
(click)="canGoNextTeamEvents() && (teamEventsPage = teamEventsPage + 1)">Next&rarr;</a>
327+
</li>
328+
</ul>
329+
</div>
330+
</div>
331+
</div>
332+
</div>
333+
</div>
334+
</div>
335+
</div>
336+
</div>
337+
</div>

0 commit comments

Comments
 (0)