Skip to content
This repository was archived by the owner on Mar 4, 2025. It is now read-only.

Commit c12c3f1

Browse files
committed
Merge pull request #228 from appirio-tech/list-view-challenges
Implement list view on dashboard
2 parents 7986684 + a2d5fbf commit c12c3f1

File tree

10 files changed

+403
-174
lines changed

10 files changed

+403
-174
lines changed

app/directives/challenge-tile/challenge-tile.directive.jade

Lines changed: 35 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
// TILE VIEW
21
.challenge.tile-view(ng-show="view === 'tile'", ng-class="challenge.track")
32
.challenge-track
43

@@ -11,7 +10,7 @@
1110
p.currentPhase {{challenge.userCurrentPhase}}
1211

1312
.challenge-calendar(ng-show="challenge.userCurrentPhaseEndTime")
14-
p.starts-in Ends In
13+
p.ends-in Ends In
1514
p.time-remaining {{challenge.userCurrentPhaseEndTime[0]}}
1615
p.unit-of-time {{challenge.userCurrentPhaseEndTime[1]}}
1716

@@ -45,36 +44,46 @@
4544

4645
p Forum
4746

48-
// LIST VIEW
49-
.challenge.list-view(ng-show="view=='list'")
50-
.challenge-icons
51-
img(ng-show="challenge.track === 'DEVELOP'", src="/images/member-program/svg/development-generic.svg")
52-
img(ng-show="challenge.track === 'DESIGN' || challenge.track === 'Data Science'", src="/images/member-program/svg/design-generic.svg")
47+
.challenge.list-view(ng-show="view=='list'", ng-class="challenge.track")
48+
.challenge-track
5349

54-
.challenge-name
50+
header
5551
a(ng-href="https://www.{{DOMAIN}}/challenge-details/{{challenge.id}}/?type={{challenge.track}}") {{challenge.name}}
56-
.phase-status(ng-show="challenge.status === 'Active'")
57-
i.fa.fa-check-circle-o
5852

59-
p {{challenge.memberStatusMsg}}
53+
p.subtrack {{challenge.subTrack | underscoreStrip}}
6054

61-
.roles
62-
p Roles : {{challenge.userDetails.roles | listRoles}}
55+
// Only show if not data science track
56+
p.roles(ng-hide="challenge.track === 'DATA SCIENCE'") #[span Role:] {{challenge.userDetails.roles | listRoles}}
57+
58+
.challenge-details
59+
.challenge-info
60+
p.currentPhase {{challenge.userCurrentPhase}}
6361

64-
p.days-remaining(ng-show="challenge.status === 'Active'") {{challenge.registrationEndDate | timeDiff}}
65-
span Registration Ends
66-
p.completion-date(ng-show="challenge.status === 'Completed'")
67-
span Ended {{challenge.submissionEndDate | date: "mediumDate"}}
62+
p.ends-in(ng-show="challenge.userCurrentPhaseEndTime") Ends: {{challenge.userCurrentPhaseEndTime[2] | localTime}}
63+
64+
p.ends-in(ng-hide="challenge.userCurrentPhaseEndTime") This challenge is currently paused.
65+
66+
.phase-action(ng-switch="challenge.userAction")
67+
.submit(ng-switch-when="Submit") Submit
6868

69-
.stats
70-
.registrants(ng-show="challenge.numRegistrants > 0")
71-
i.fa.fa-user
72-
a(ng-href="https://www.{{DOMAIN}}/challenge-details/{{challenge.id}}/?type={{challenge.track}}#viewRegistrant") {{challenge.numRegistrants}}
73-
.submissions(ng-show="challenge.numSubmissions > 0")
74-
i.fa.fa-files-o
75-
a(ng-href="https://www.{{DOMAIN}}/challenge-details/{{challenge.id}}/?type={{challenge.track}}#viewRegistrant") {{challenge.numSubmissions}}
69+
.submitted(ng-switch-when="Submitted") Submitted
7670

71+
// Need styling and JS logic for this one
72+
.registered(ng-switch-when="Registered") Registered
7773

7874
.challenge-links
79-
a(ng-href="http://apps.{{DOMAIN}}/forums//?module=Category&categoryID={{challenge.forumId}}")
80-
i.fa.fa-comment
75+
a.registrants(ng-href="https://www.{{DOMAIN}}/challenge-details/{{challenge.id}}/?type={{challenge.track}}#viewRegistrant")
76+
p {{challenge.numRegistrants}}
77+
78+
.registrants-icon
79+
80+
a.submissions(ng-hide="challenge.track === 'DATA SCIENCE'", ng-href="https://www.{{DOMAIN}}/challenge-details/{{challenge.id}}/?type={{challenge.track}}#viewRegistrant")
81+
p {{challenge.numSubmissions}}
82+
83+
.submissions-icon
84+
85+
a.forum(ng-href="http://apps.{{DOMAIN}}/forums//?module=Category&categoryID={{challenge.forumId}}")
86+
.forum-icon
87+
88+
p Forum
89+

app/filters/local-time.filter.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
function localTime() {
77
var timezone = jstz.determine().name();
88
return function(input) {
9-
return moment(input).tz(timezone).format('MM/DD/YY hh:mm A z');
9+
return moment(input).tz(timezone).format('MM/DD/YY hh:mm a z');
1010
};
1111
};
1212

app/my-challenges/my-challenges.jade

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@
1010

1111
p.viewOptions
1212
a(ng-click="vm.changeView('list')", ng-class="{disabled: vm.view == 'list'}") List
13+
1314
span   |  
15+
1416
a(ng-click="vm.changeView('tile')", ng-class="{disabled: vm.view == 'tile'}") Tile
1517

1618
p.filters
@@ -22,6 +24,7 @@
2224

2325
section.challenges(ng-show="vm.userHasChallenges && !vm.loading")
2426
tc-paginator(data="vm.myChallenges", page-params="vm.pageParams")
27+
2528
.data(ng-class="vm.view + '-view'")
2629
challenge-tile(ng-repeat="challenge in vm.myChallenges | orderBy:registrationEndDate:true", challenge="challenge", view="vm.view", ng-class="vm.view + '-view'")
2730

app/my-dashboard/my-challenges/my-challenges.controller.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
vm.domain = CONSTANTS.domain;
1111
vm.loading = true;
1212
vm.userHasChallenges = true;
13+
vm.challengeView = 'list';
14+
vm.toggleView = toggleView;
1315

1416
var handle = userIdentity.handle;
1517

@@ -65,5 +67,11 @@
6567
vm.loading = false;
6668
});
6769
}
70+
71+
function toggleView(view) {
72+
if (vm.challengeView !== view) {
73+
vm.challengeView = view;
74+
}
75+
}
6876
}
6977
})();

app/my-dashboard/my-challenges/my-challenges.jade

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
header(ng-hide="vm.loading")
22
h1.section-title(ng-bind="vm.userHasChallenges ? 'My Challenges' : 'Challenges'")
33

4+
.challenge-view-toggle
5+
button.grid(ng-click="vm.toggleView('tile')", ng-class="{ disabled: vm.challengeView === 'tile' }") Grid
6+
7+
button.list(ng-click="vm.toggleView('list')", ng-class="{ disabled: vm.challengeView === 'list' }") List
8+
49
.section-loading(ng-show="vm.loading")
510

611
section.noChallenges(ng-if="!vm.userHasChallenges && !vm.loading")
@@ -29,9 +34,15 @@ section.noChallenges(ng-if="!vm.userHasChallenges && !vm.loading")
2934

3035
a(href="") Learn More
3136

32-
section.hasChallenges(ng-if="vm.userHasChallenges && !vm.loading")
33-
.challenges
34-
challenge-tile(ng-repeat="challenge in vm.myChallenges | orderBy:registrationEndDate:true", challenge="challenge", view="'tile'", ng-class="'tile-view'")
37+
section.hasChallenges(ng-if="vm.userHasChallenges && !vm.loading", ng-class="{ 'list-view-active': vm.challengeView === 'list' }")
38+
.section-titles(ng-show="vm.challengeView === 'list'")
39+
.challenge-title Challenges
40+
.phase-title Phase
41+
.regs-subs-title Registrations & Submissions
42+
43+
.challenges(ng-class="vm.challengeView + '-view'")
44+
45+
challenge-tile(ng-repeat="challenge in vm.myChallenges | orderBy:registrationEndDate:true", challenge="challenge", view="vm.challengeView", ng-class="vm.challengeView + '-view'")
3546

3647
.my-challenges-links(ng-if="vm.userHasChallenges && !vm.loading")
3748
a(ui-sref="my-challenges") View All Active Challenges

app/services/challenge.service.js

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -78,13 +78,17 @@
7878
}
7979

8080
if (challenge.userCurrentPhaseEndTime) {
81-
var timeAndUnit = moment(challenge.userCurrentPhaseEndTime).fromNow(true);
82-
// Split into components: ['an', 'hour'] || ['2', months]
81+
var fullTime = challenge.userCurrentPhaseEndTime;
82+
var timeAndUnit = moment(fullTime).fromNow(true);
83+
// Split into components: ['an', 'hour'] || ['2', 'months']
8384
timeAndUnit = timeAndUnit.split(' ');
8485

8586
if (timeAndUnit[0] === 'a' || timeAndUnit[0] === 'an') {
8687
timeAndUnit[0] = '1';
8788
}
89+
90+
// Add actual time ['2', 'months', actual date]
91+
timeAndUnit.push(fullTime);
8892
challenge.userCurrentPhaseEndTime = timeAndUnit;
8993
}
9094
});
@@ -119,13 +123,17 @@
119123
}
120124

121125
if (challenge.userCurrentPhaseEndTime) {
122-
var timeAndUnit = moment(challenge.userCurrentPhaseEndTime).fromNow(true);
123-
// Split into components: ['an', 'hour'] || ['2', months]
126+
var fullTime = challenge.userCurrentPhaseEndTime;
127+
var timeAndUnit = moment(fullTime).fromNow(true);
128+
// Split into components: ['an', 'hour'] || ['2', 'months']
124129
timeAndUnit = timeAndUnit.split(' ');
125130

126131
if (timeAndUnit[0] === 'a' || timeAndUnit[0] === 'an') {
127132
timeAndUnit[0] = '1';
128133
}
134+
135+
// Add actual time ['2', 'months', actual date]
136+
timeAndUnit.push(fullTime);
129137
challenge.userCurrentPhaseEndTime = timeAndUnit;
130138
}
131139
});

0 commit comments

Comments
 (0)