diff --git a/package.json b/package.json index 139d7817c6..c6e522a4c7 100755 --- a/package.json +++ b/package.json @@ -1,10 +1,10 @@ { "name": "planet", "license": "AGPL-3.0", - "version": "0.16.17", + "version": "0.16.49", "myplanet": { - "latest": "v0.21.45", - "min": "v0.20.45" + "latest": "v0.21.81", + "min": "v0.20.81" }, "scripts": { "ng": "ng", diff --git a/src/app/chat/chat-sidebar/chat-sidebar.component.html b/src/app/chat/chat-sidebar/chat-sidebar.component.html index 14625e5cee..e95768a217 100644 --- a/src/app/chat/chat-sidebar/chat-sidebar.component.html +++ b/src/app/chat/chat-sidebar/chat-sidebar.component.html @@ -13,8 +13,8 @@
- Full Conversation Search + Full Conversation Search @@ -69,7 +69,7 @@ -
No previous conversations.
+
No previous conversations.
diff --git a/src/app/chat/chat-sidebar/chat-sidebar.scss b/src/app/chat/chat-sidebar/chat-sidebar.scss index e974ca4f80..f76ee91517 100644 --- a/src/app/chat/chat-sidebar/chat-sidebar.scss +++ b/src/app/chat/chat-sidebar/chat-sidebar.scss @@ -77,6 +77,14 @@ li:hover { margin: 0; } +.no-chats-message { + margin-left: 4px; +} + +.mat-checkbox { + margin-right: 4px; +} + @media only screen and (max-width: $screen-md) { .expand-button { top: 10px; diff --git a/src/app/community/community.scss b/src/app/community/community.scss index 3d8e70b249..5f6aa4a2ff 100644 --- a/src/app/community/community.scss +++ b/src/app/community/community.scss @@ -66,6 +66,7 @@ planet-calendar { top: -0.25rem; right: -0.25rem; } + word-break: break-word; } mat-tab-group, mat-tab { diff --git a/src/app/courses/courses.scss b/src/app/courses/courses.scss index efe18f5943..e13f0980d8 100644 --- a/src/app/courses/courses.scss +++ b/src/app/courses/courses.scss @@ -59,6 +59,14 @@ $label-height: 1rem; word-break: break-word; } +.tags-list mat-chip { + max-width: 200px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + display: inline-block; +} + @media(max-width: $screen-md) { .mat-column-info { max-width: 120px; diff --git a/src/app/courses/step-view-courses/courses-step-view.component.html b/src/app/courses/step-view-courses/courses-step-view.component.html index a08a3a2267..d785b55e7f 100644 --- a/src/app/courses/step-view-courses/courses-step-view.component.html +++ b/src/app/courses/step-view-courses/courses-step-view.component.html @@ -66,7 +66,7 @@

Step {{ {{stepNum}}/{{maxStep}} - +
diff --git a/src/app/courses/step-view-courses/courses-step-view.scss b/src/app/courses/step-view-courses/courses-step-view.scss index 77862610d5..052748fcf0 100644 --- a/src/app/courses/step-view-courses/courses-step-view.scss +++ b/src/app/courses/step-view-courses/courses-step-view.scss @@ -56,4 +56,8 @@ text-overflow: ellipsis; } + .finish-button { + margin-left: 10px; + } + } diff --git a/src/app/dashboard/dashboard-tile.scss b/src/app/dashboard/dashboard-tile.scss index 63e24d4bdb..ca1765f696 100644 --- a/src/app/dashboard/dashboard-tile.scss +++ b/src/app/dashboard/dashboard-tile.scss @@ -25,7 +25,7 @@ flex-wrap: wrap; font-size: 1.25rem; } - + color: #fff; } .right-tile { diff --git a/src/app/exams/exams-add.component.ts b/src/app/exams/exams-add.component.ts index d3f786937e..abf7c6d3e9 100644 --- a/src/app/exams/exams-add.component.ts +++ b/src/app/exams/exams-add.component.ts @@ -37,6 +37,7 @@ export class ExamsAddComponent implements OnInit { pageType: 'Add' | 'Update' | 'Copy' = 'Add'; courseName = ''; examType: 'exam' | 'survey' = <'exam' | 'survey'>this.route.snapshot.paramMap.get('type') || 'exam'; + teamId = this.route.parent?.snapshot.paramMap.get('teamId') || null; successMessage = this.examType === 'survey' ? $localize`New survey added` : $localize`New test added`; steps = []; showFormError = false; @@ -120,6 +121,9 @@ export class ExamsAddComponent implements OnInit { onSubmit(reRoute = false) { if (this.examForm.valid) { + if (this.teamId) { + this.examForm.value.teamId = this.teamId; + } this.showFormError = false; this.addExam(Object.assign({}, this.examForm.value, this.documentInfo), reRoute); } else { diff --git a/src/app/health/health-event-dialog.component.html b/src/app/health/health-event-dialog.component.html index 8b594d91f9..5879b833db 100644 --- a/src/app/health/health-event-dialog.component.html +++ b/src/app/health/health-event-dialog.component.html @@ -27,6 +27,6 @@

Other Notes diff --git a/src/app/health/health-event.component.ts b/src/app/health/health-event.component.ts index 832e826095..7f44e4c4b7 100644 --- a/src/app/health/health-event.component.ts +++ b/src/app/health/health-event.component.ts @@ -116,6 +116,7 @@ export class HealthEventComponent implements OnInit { this.goBack(); } }, + displayName: '', showMainParagraph: false, extraMessage: $localize`The value(s) of the following are not in the normal range. Click Cancel to fix or click OK to submit.`, showLabels: invalidFields diff --git a/src/app/health/health.component.html b/src/app/health/health.component.html index cc68e701dd..397e14bef8 100644 --- a/src/app/health/health.component.html +++ b/src/app/health/health.component.html @@ -6,6 +6,7 @@
+ Update Details Add Examination Member login: {{userDetail.name}} @@ -56,7 +57,7 @@

Birthplace

-
+

Emergency Contact

Name: {{healthDetail?.emergencyContactName || 'N/A'}}

@@ -81,7 +82,7 @@

Notes

-

Examinations

+

Examinations

diff --git a/src/app/health/health.scss b/src/app/health/health.scss index 08c79a7c97..bc02abb366 100644 --- a/src/app/health/health.scss +++ b/src/app/health/health.scss @@ -68,3 +68,11 @@ mat-table { min-width: 110px; } } + +.examinations-header { + text-align: center; +} + +mat-header-cell div .header-date { + min-height: 1.7rem; +} \ No newline at end of file diff --git a/src/app/home/home-router.module.ts b/src/app/home/home-router.module.ts index 8eda6e64d8..bf3a53ac97 100644 --- a/src/app/home/home-router.module.ts +++ b/src/app/home/home-router.module.ts @@ -73,8 +73,8 @@ const routes: Routes = [ } ] }, - { path: 'landing', component: LandingComponent }, - { path: 'landing', loadChildren: () => import('../landing/landing.module').then(m => m.LandingModule) } + { path: 'landing', component: LandingComponent, data: { requiresAuth: false } }, + { path: 'landing', loadChildren: () => import('../landing/landing.module').then(m => m.LandingModule), data: { requiresAuth: false } } ]; @NgModule({ diff --git a/src/app/home/home.component.html b/src/app/home/home.component.html index b359b212a2..4a3e34eca7 100644 --- a/src/app/home/home.component.html +++ b/src/app/home/home.component.html @@ -43,9 +43,9 @@

Planet {{planetName}}

- - - + + + diff --git a/src/app/home/home.module.ts b/src/app/home/home.module.ts index 8ee5378d75..5611dc04be 100644 --- a/src/app/home/home.module.ts +++ b/src/app/home/home.module.ts @@ -27,6 +27,7 @@ import { UsersModule } from '../users/users.module'; import { PlanetComponent } from './planet.component'; import { CoursesViewDetailModule } from '../courses/view-courses/courses-view-detail.module'; import { ChatModule } from '../chat/chat.module'; +import { SurveysModule } from '../surveys/surveys.module'; @NgModule({ imports: [ @@ -46,7 +47,8 @@ import { ChatModule } from '../chat/chat.module'; PlanetCalendarModule, UsersModule, CoursesViewDetailModule, - ChatModule + ChatModule, + SurveysModule ], declarations: [ HomeComponent, diff --git a/src/app/manager-dashboard/manager-dashboard.component.html b/src/app/manager-dashboard/manager-dashboard.component.html index 85d2f7bb5b..0103f5a15b 100644 --- a/src/app/manager-dashboard/manager-dashboard.component.html +++ b/src/app/manager-dashboard/manager-dashboard.component.html @@ -75,7 +75,7 @@

{{ planetType === 'community' ? 'Nation' : 'Cent

Your request has not yet been accepted by { planetType, select, community {nation} nation {center}}

-
Your tablet pin number is: {{ ' ' + pin + ' ' }} +
myPlanet Server pin: {{ ' ' + pin + ' ' }}
diff --git a/src/app/meetups/meetups.service.ts b/src/app/meetups/meetups.service.ts index c7fa5773ee..d1f1f37820 100644 --- a/src/app/meetups/meetups.service.ts +++ b/src/app/meetups/meetups.service.ts @@ -96,9 +96,16 @@ export class MeetupService { openDeleteDialog(meetups: any[] | any, callback) { const isMany = meetups.length > 1; const displayName = isMany ? '' : (meetups[0] || meetups).title; - const recurringInfo = (meetups[0] || meetups).recurring && (meetups[0] || meetups).recurring !== 'none' && (meetups[0] || meetups).recurringNumber - ? `(Recurs ${ (meetups[0] || meetups).recurring} for ${ (meetups[0] || meetups).recurringNumber } ${ (meetups[0] || meetups).recurring === 'daily' ? 'days' : 'weeks' })` - : ''; + const recurringInfo = + (meetups[0] || meetups).recurring && + (meetups[0] || meetups).recurring !== 'none' && + (meetups[0] || meetups).recurringNumber + ? `(Recurs ${(meetups[0] || meetups).recurring} for ${ + (meetups[0] || meetups).recurringNumber + } ${ + (meetups[0] || meetups).recurring === 'daily' ? 'days' : 'weeks' + })` + : ''; this.deleteDialog = this.dialog.open(DialogsPromptComponent, { data: { okClick: this.deleteMeetups([ meetups ].flat(), displayName, callback), diff --git a/src/app/news/news-list.component.ts b/src/app/news/news-list.component.ts index 61d3ea892a..fb0b0cf5bd 100644 --- a/src/app/news/news-list.component.ts +++ b/src/app/news/news-list.component.ts @@ -115,7 +115,8 @@ export class NewsListComponent implements OnChanges { data: { okClick: this.deleteNews(news), changeType: 'delete', - type: 'news' + type: 'news', + displayName: news.message } }); } @@ -134,7 +135,7 @@ export class NewsListComponent implements OnChanges { this.deleteDialog.close(); }, onError: (error) => { - this.planetMessageService.showAlert($localize`There was a problem deleting this news.`); + this.planetMessageService.showAlert($localize`There was a problem deleting this message.`); } }; } diff --git a/src/app/news/news.service.ts b/src/app/news/news.service.ts index 32bfcab631..de318dab2c 100644 --- a/src/app/news/news.service.ts +++ b/src/app/news/news.service.ts @@ -54,7 +54,7 @@ export class NewsService { return ((item.viewIn || []).find(view => view._id === viewId) || {}).sharedDate; } - postNews(post, successMessage = $localize`Thank you for submitting your news`, isMessageEdit = true) { + postNews(post, successMessage = $localize`Thank you for submitting your message`, isMessageEdit = true) { const { configuration } = this.stateService; const message = typeof post.message === 'string' ? post.message : post.message.text; const images = this.createImagesArray(post, message); @@ -76,7 +76,7 @@ export class NewsService { } deleteNews(post) { - return this.postNews({ ...post, _deleted: true }, $localize`Post deleted`); + return this.postNews({ ...post, _deleted: true }, $localize`Message deleted`); } createImagesArray(post, message) { @@ -90,7 +90,7 @@ export class NewsService { return this.couchService.bulkDocs(this.dbName, replies.map(reply => ({ ...reply.doc, replyTo: newReplyToId }))); } - shareNews(news, planets?: any[], successMessage = $localize`News has been successfully shared`) { + shareNews(news, planets?: any[], successMessage = $localize`Message has been successfully shared`) { const viewInObject = (planet) => ( { '_id': `${planet.code}@${planet.parentCode}`, section: 'community', sharedDate: this.couchService.datePlaceholder } ); diff --git a/src/app/resources/resources-add.component.html b/src/app/resources/resources-add.component.html index 3ac3c770a9..f5978236eb 100644 --- a/src/app/resources/resources-add.component.html +++ b/src/app/resources/resources-add.component.html @@ -86,7 +86,7 @@ -
+
diff --git a/src/app/resources/resources-add.scss b/src/app/resources/resources-add.scss index 4f4a5cb9ac..b93107fbbd 100644 --- a/src/app/resources/resources-add.scss +++ b/src/app/resources/resources-add.scss @@ -22,5 +22,11 @@ .form-container { width: auto; } + + .file-upload { + display: flex; + flex-direction: column; + } + } } diff --git a/src/app/resources/resources.scss b/src/app/resources/resources.scss index b73f711a42..5e803920cf 100644 --- a/src/app/resources/resources.scss +++ b/src/app/resources/resources.scss @@ -44,6 +44,19 @@ $label-height: 1rem; } } +.list-content-menu { + &.list-content-menu-auto { + .header { + word-break: break-word; + max-width: 100%; + + a { + display: inline-block; + } + } + } +} + .ellipsis-menu { text-align: center; } @@ -56,6 +69,14 @@ $label-height: 1rem; justify-content: center; } +.tags-list mat-chip { + max-width: 200px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + display: inline-block; +} + @media(max-width: $screen-md) { .resources-list { .mat-column-createdDate { diff --git a/src/app/shared/auth-guard.service.ts b/src/app/shared/auth-guard.service.ts index c19ec8debe..5461ff3422 100644 --- a/src/app/shared/auth-guard.service.ts +++ b/src/app/shared/auth-guard.service.ts @@ -45,6 +45,15 @@ export class AuthService { // For main app (which requires login). Uses canActivateChild to check on every route // change if session has expired canActivateChild(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable { + let currentRoute: ActivatedRouteSnapshot | null = route; + + while (currentRoute) { + if (currentRoute.data && currentRoute.data.requiresAuth === false) { + return of(true); + } + currentRoute = currentRoute.parent; + } + return this.checkUser(state.url); } diff --git a/src/app/shared/dialogs/dialogs-announcement.component.html b/src/app/shared/dialogs/dialogs-announcement.component.html index 4754422790..79ad83396a 100644 --- a/src/app/shared/dialogs/dialogs-announcement.component.html +++ b/src/app/shared/dialogs/dialogs-announcement.component.html @@ -1,6 +1,6 @@
Issues Challenge diff --git a/src/app/shared/dialogs/dialogs-announcement.component.scss b/src/app/shared/dialogs/dialogs-announcement.component.scss index f3d53594ca..fd1a6d80aa 100644 --- a/src/app/shared/dialogs/dialogs-announcement.component.scss +++ b/src/app/shared/dialogs/dialogs-announcement.component.scss @@ -55,8 +55,9 @@ background-color: $primary; transition: width 0.5s; display: flex; - justify-content: center; align-items: center; + white-space: nowrap; + padding: 0 10px; } .thermometer-label { diff --git a/src/app/shared/dialogs/dialogs-announcement.component.ts b/src/app/shared/dialogs/dialogs-announcement.component.ts index ec17b7215b..93cbade868 100644 --- a/src/app/shared/dialogs/dialogs-announcement.component.ts +++ b/src/app/shared/dialogs/dialogs-announcement.component.ts @@ -1,8 +1,8 @@ import { Component, OnDestroy, OnInit } from '@angular/core'; import { MatDialogRef } from '@angular/material/dialog'; import { Router } from '@angular/router'; -import { Subject } from 'rxjs'; -import { takeUntil } from 'rxjs/operators'; +import { Subject, of, Observable } from 'rxjs'; +import { takeUntil, catchError, map, switchMap } from 'rxjs/operators'; import { findDocuments } from '../../shared/mangoQueries'; import { CouchService } from '../couchdb.service'; @@ -11,20 +11,19 @@ import { NewsService } from '../../news/news.service'; import { StateService } from '../state.service'; import { SubmissionsService } from '../../submissions/submissions.service'; import { UserService } from '../user.service'; -import { UsersService } from '../../users/users.service'; import { UserChallengeStatusService } from '../user-challenge-status.service'; import { planetAndParentId } from '../../manager-dashboard/reports/reports.utils'; export const includedCodes = [ 'guatemala', 'san.pablo', 'xela', 'okuro', 'uriur', 'mutugi', 'vi' ]; export const challengeCourseId = '4e6b78800b6ad18b4e8b0e1e38a98cac'; export const examId = '4e6b78800b6ad18b4e8b0e1e38b382ab'; -export const challengePeriod = (new Date() > new Date(2024, 10, 31)) && (new Date() < new Date(2024, 12, 1)); +export const challengePeriod = (new Date() > new Date(2024, 10, 31)) && (new Date() < new Date(2025, 0, 16)); @Component({ template: `
Issues Challenge @@ -67,7 +66,6 @@ export class DialogsAnnouncementComponent implements OnInit, OnDestroy { private stateService: StateService, private submissionsService: SubmissionsService, private userService: UserService, - private usersService: UsersService, private userStatusService: UserChallengeStatusService ) {} @@ -90,6 +88,7 @@ export class DialogsAnnouncementComponent implements OnInit, OnDestroy { } initializeData() { + this.fetchMembers().subscribe(members => { this.members = members; }); this.coursesService.requestCourses(); this.newsService.requestNews({ selectors: { @@ -100,7 +99,6 @@ export class DialogsAnnouncementComponent implements OnInit, OnDestroy { }, viewId: this.teamId }); - this.fetchMembers(); this.fetchCourseAndNews(); this.fetchEnrolledMembers(); } @@ -158,16 +156,22 @@ export class DialogsAnnouncementComponent implements OnInit, OnDestroy { ); } - fetchMembers() { - this.usersService.getAllUsers().subscribe((users: any) => { - this.members = users.map((member: any) => { - const [ , memberName ] = member?._id.split(':'); - return { - ...member, - name: memberName, - }; - }); - }); + fetchMembers(): Observable { + return this.couchService.findAll('login_activities', findDocuments({ + type: 'login', + loginTime: { $gte: this.startDate.getTime() } + }, [ 'user' ])).pipe( + catchError(() => of([])), + map((res: any[]) => Array.from(new Set(res.map(doc => doc.user)))), + switchMap(uniqueUsers => { + if (uniqueUsers.length === 0) { return of([]); } + return this.couchService.findAll( + '_users', + findDocuments({ name: { $in: uniqueUsers } }, [ '_id', 'name' ]) + ); + }), + catchError(() => of([])) + ); } fetchEnrolledMembers() { diff --git a/src/app/shared/dialogs/dialogs-prompt.component.html b/src/app/shared/dialogs/dialogs-prompt.component.html index 3c67eab8ba..456c4b973f 100644 --- a/src/app/shared/dialogs/dialogs-prompt.component.html +++ b/src/app/shared/dialogs/dialogs-prompt.component.html @@ -17,6 +17,7 @@ event {event} transaction {transaction} link {link} + news {message} report {report}}? } many diff --git a/src/app/shared/forms/planet-tag-input-dialog.component.ts b/src/app/shared/forms/planet-tag-input-dialog.component.ts index 8c549c019e..1e26049b29 100644 --- a/src/app/shared/forms/planet-tag-input-dialog.component.ts +++ b/src/app/shared/forms/planet-tag-input-dialog.component.ts @@ -21,7 +21,7 @@ import { DialogsPromptComponent } from '../../shared/dialogs/dialogs-prompt.comp } :host mat-dialog-content { overflow-y: auto; - max-height: calc(100vh - 100px); + max-height: calc(100vh - 100px); } :host .mat-list-option span { font-weight: inherit; diff --git a/src/app/submissions/submissions.component.html b/src/app/submissions/submissions.component.html index 950e0b2fbf..cd9fd16f52 100644 --- a/src/app/submissions/submissions.component.html +++ b/src/app/submissions/submissions.component.html @@ -62,7 +62,7 @@ Course Name - {{element.courseTitle}} + {{element.courseTitle || element.parent.courseTitle}} Course Step diff --git a/src/app/surveys/surveys.component.html b/src/app/surveys/surveys.component.html index cd3302a9bd..a94b93f4ed 100644 --- a/src/app/surveys/surveys.component.html +++ b/src/app/surveys/surveys.component.html @@ -1,4 +1,4 @@ - + @@ -11,7 +11,7 @@ - + Courses ({{team?.courses?.length || 0}}) @@ -211,6 +212,9 @@

{{configuration

+ + + { mode, select, team {Join Requests} enterprise {Applicants} } ({{requests.length}}) diff --git a/src/app/teams/teams-view.scss b/src/app/teams/teams-view.scss index 91ff662210..a5b4639e48 100644 --- a/src/app/teams/teams-view.scss +++ b/src/app/teams/teams-view.scss @@ -32,6 +32,14 @@ margin: 0; } + .mat-subheading-2 b { + display: inline-block; + max-width: 100%; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + } + .toolbar-button{ flex-shrink: 0; } diff --git a/src/app/teams/teams.component.html b/src/app/teams/teams.component.html index 033295d432..b2f889b592 100644 --- a/src/app/teams/teams.component.html +++ b/src/app/teams/teams.component.html @@ -43,8 +43,8 @@ Name -

- {{element.doc.name}} +

+ {{element.doc.name.length > 200 ? element.doc.name.slice(0, 200) + '...': element.doc.name }} check

diff --git a/src/app/teams/teams.module.ts b/src/app/teams/teams.module.ts index 11b2614760..c77877f90b 100644 --- a/src/app/teams/teams.module.ts +++ b/src/app/teams/teams.module.ts @@ -18,6 +18,7 @@ import { TeamsMemberComponent } from './teams-member.component'; import { TeamsReportsComponent } from './teams-reports.component'; import { TeamsReportsDialogComponent } from './teams-reports-dialog.component'; import { TeamsReportsDetailComponent } from './teams-reports-detail.component'; +import { SurveysModule } from '../surveys/surveys.module'; @NgModule({ exports: [ TeamsViewComponent, TeamsComponent, TeamsViewFinancesComponent, TeamsMemberComponent, TeamsReportsComponent ], @@ -34,6 +35,7 @@ import { TeamsReportsDetailComponent } from './teams-reports-detail.component'; SharedComponentsModule, PlanetCalendarModule, FormsModule, + SurveysModule ], declarations: [ TeamsComponent, diff --git a/src/app/teams/teams.scss b/src/app/teams/teams.scss index 0e6a2cfae0..0af5144e31 100644 --- a/src/app/teams/teams.scss +++ b/src/app/teams/teams.scss @@ -26,10 +26,33 @@ justify-content: center; } - @media screen and (max-width: #{$screen-sm}) { + .team-name{ + max-width: 95%; + overflow: hidden; + } + + .mat-cell button, .mat-cell div button[mat-raised-button] { + width: 150px; + text-align: center; + padding: 8px 12px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + } + + @media (max-width: $screen-sm) { mat-cell button { min-width: 0; padding: 0 3px; } + + .mat-cell button, .mat-cell div button[mat-raised-button] { + width: 50px; + } + + .button-container { + flex-direction: column; + align-items: flex-start; + } } } diff --git a/src/app/users/users-achievements/users-achievements-update.component.html b/src/app/users/users-achievements/users-achievements-update.component.html index 2240d819ae..7147bde432 100644 --- a/src/app/users/users-achievements/users-achievements-update.component.html +++ b/src/app/users/users-achievements/users-achievements-update.component.html @@ -1,6 +1,7 @@ - Edit Achievements + Add Achievements + Edit Achievements
@@ -91,7 +92,7 @@
- +
diff --git a/src/app/users/users-achievements/users-achievements-update.component.ts b/src/app/users/users-achievements/users-achievements-update.component.ts index 162823a75d..0b6c8fd501 100644 --- a/src/app/users/users-achievements/users-achievements-update.component.ts +++ b/src/app/users/users-achievements/users-achievements-update.component.ts @@ -20,11 +20,11 @@ import { showFormErrors } from '../../shared/table-helpers'; encapsulation: ViewEncapsulation.None }) export class UsersAchievementsUpdateComponent implements OnInit, OnDestroy { - user = this.userService.get(); configuration = this.stateService.configuration; docInfo = { '_id': this.user._id + '@' + this.configuration.code, '_rev': undefined }; readonly dbName = 'achievements'; + achievementNotFound = false; editForm: FormGroup; profileForm: FormGroup; private onDestroy$ = new Subject(); @@ -59,20 +59,25 @@ export class UsersAchievementsUpdateComponent implements OnInit, OnDestroy { ngOnInit() { this.profileForm.patchValue(this.user); this.usersAchievementsService.getAchievements(this.docInfo._id) - .pipe(catchError(() => this.usersAchievementsService.getAchievements(this.user._id))) - .subscribe((achievements) => { - this.editForm.patchValue(achievements); - this.editForm.controls.achievements = this.fb.array(achievements.achievements || []); - this.editForm.controls.references = this.fb.array(achievements.references || []); - this.editForm.controls.links = this.fb.array(achievements.links || []); - // Keeping older otherInfo property so we don't lose this info on database - this.editForm.controls.otherInfo = this.fb.array(achievements.otherInfo || []); - if (this.docInfo._id === achievements._id) { - this.docInfo._rev = achievements._rev; - } - }, (error) => { - console.log(error); - }); + .pipe( + catchError(() => this.usersAchievementsService.getAchievements(this.user._id)) + ) + .subscribe((achievements) => { + this.editForm.patchValue(achievements); + this.editForm.controls.achievements = this.fb.array(achievements.achievements || []); + this.editForm.controls.references = this.fb.array(achievements.references || []); + this.editForm.controls.links = this.fb.array(achievements.links || []); + // Keeping older otherInfo property so we don't lose this info on database + this.editForm.controls.otherInfo = this.fb.array(achievements.otherInfo || []); + + if (this.docInfo._id === achievements._id) { + this.docInfo._rev = achievements._rev; + } + }, (error) => { + console.log(error); + this.achievementNotFound = true; + }); + this.planetStepListService.stepMoveClick$.pipe(takeUntil(this.onDestroy$)).subscribe( () => this.editForm.controls.dateSortOrder.setValue('none') ); diff --git a/src/app/users/users-achievements/users-achievements.component.html b/src/app/users/users-achievements/users-achievements.component.html index 4f2f70d554..1ccb50c49a 100644 --- a/src/app/users/users-achievements/users-achievements.component.html +++ b/src/app/users/users-achievements/users-achievements.component.html @@ -31,39 +31,39 @@

{{user.firstName}} {{user.middleName}} {{user.lastName}}

Birthplace: {{' ' + user.birthplace}}
-
+

My Purpose

-
+

My Goals

-
+

My Certifications

- {{certification.name}} + {{certification.name}}
-
+

My Links

-

{{link.title}}:

+ {{link.url}}
-
+

My Achievements

@@ -85,8 +85,8 @@

My Achievements

-
+

My References

diff --git a/src/app/users/users-achievements/users-achievements.component.ts b/src/app/users/users-achievements/users-achievements.component.ts index de990a2643..4c420cea89 100644 --- a/src/app/users/users-achievements/users-achievements.component.ts +++ b/src/app/users/users-achievements/users-achievements.component.ts @@ -133,8 +133,8 @@ export class UsersAchievementsComponent implements OnInit { { text: ` ${this.user.firstName} ${this.user.middleName ? this.user.middleName : ''} ${this.user.lastName} - ${formattedBirthDate ? $localize`Birthplace: ${formattedBirthDate}` : ''} - ${this.user.Birthplace ? $localize`Birthdate: ${this.user.Birthplace}` : ''} + ${formattedBirthDate ? $localize`Birthdate: ${formattedBirthDate}` : ''} + ${this.user.birthplace ? $localize`Birthplace: ${this.user.birthplace}` : ''} `, alignment: 'center', }, diff --git a/src/app/users/users-achievements/users-achievements.scss b/src/app/users/users-achievements/users-achievements.scss index c280f57f51..27a8894a54 100644 --- a/src/app/users/users-achievements/users-achievements.scss +++ b/src/app/users/users-achievements/users-achievements.scss @@ -10,10 +10,12 @@ text-align: center; } - .certs-list .mat-list-item{ - display: flex; - justify-content: center; - text-align: center; + .certs-list { + .cert-item { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + } } & mat-list, & ul, & ol { @@ -76,6 +78,7 @@ grid-area: txt; display: flex; align-items: center; + max-width: 75%; } .achievement-date { @@ -92,6 +95,10 @@ } } + .link-title { + max-width: 75%; + } + .styled-link { color: #007bff; text-decoration: none; diff --git a/src/app/users/users-table.component.html b/src/app/users/users-table.component.html index 613bf4c617..f49f5f43bd 100644 --- a/src/app/users/users-table.component.html +++ b/src/app/users/users-table.component.html @@ -127,10 +127,10 @@ - +
diff --git a/src/app/users/users-table.scss b/src/app/users/users-table.scss index dc3458c0cd..68bc3af1fb 100644 --- a/src/app/users/users-table.scss +++ b/src/app/users/users-table.scss @@ -23,6 +23,15 @@ button-container { justify-content: center; } +.mat-cell button, .mat-cell div button[mat-raised-button] { + width: 150px; + text-align: center; + padding: 8px 12px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + @media(max-width: $screen-md) { .mat-column-visitCount, .mat-column-joinDate, .mat-column-lastLogin { max-width: 70px; @@ -30,8 +39,7 @@ button-container { } @media (max-width: $screen-sm) { - mat-cell button, .visibility-cell { - min-width: 0; - padding: 0 3px; + .mat-cell button, .mat-cell div button[mat-raised-button] { + width: 50px; } } diff --git a/src/assets/challenge/dec challenge.jpeg b/src/assets/challenge/dec challenge.jpeg new file mode 100644 index 0000000000..944b8beae6 Binary files /dev/null and b/src/assets/challenge/dec challenge.jpeg differ