diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 710e960f..811ac2eb 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -15,6 +15,7 @@ import { HttpClientModule, HttpClient } from '@angular/common/http'; import { TranslateModule, TranslateLoader } from '@ngx-translate/core'; import { TranslateHttpLoader } from "@ngx-translate/http-loader"; import { i18nData } from './assets/i18n-en'; +import { AppConfigModule } from '../shared/app-config/app-config.module'; import { TranslationModule } from '../shared/translation/translation.module'; import { MomentModule } from 'angular2-moment'; import { WindowRef } from '../shared/window'; @@ -65,9 +66,8 @@ import { EventsListPage } from '../pages/events/list/list.page'; import { EventsPreviewPage } from '../pages/events/download/events-preview.page'; import { EventsViewPage } from '../pages/events/view/events-view.page'; import { ForgetPasswordPage } from '../pages/forget-password/forget-password'; -import { GalleryPage } from '../pages/gallery/gallery'; +import { GalleryPage } from '../pages/gallery/gallery.page'; import { ItemsPopupPage } from '../pages/assessments/popup/items-popup.page'; -import { LeaderboardSettingsPage } from '../pages/settings/leaderboard/leaderboard-settings.page'; import { LevelsListPage } from '../pages/levels/list/list'; import { LoginPage } from '../pages/login/login'; import { MagicLinkPage } from '../pages/magic-link/magic-link'; @@ -79,7 +79,7 @@ import { ResetPasswordPage } from '../pages/reset-password/reset-password'; import { SettingsPage } from '../pages/settings/settings.page'; import { SidenavPage } from '../pages/sidenav/sidenav'; import { TabsPage } from '../pages/tabs/tabs.page'; -import { TeamPage } from '../pages/team/team'; +import { TeamPage } from '../pages/team/team.page'; import { TermsConditionsPage } from '../pages/registration/terms-conditions/terms-conditions.page'; import { TestPage } from '../pages/tabs/test.page'; import { TutorialPage } from '../pages/settings/tutorial/tutorial.page'; @@ -117,7 +117,6 @@ export function createTranslateLoader(http: HttpClient) { ForgetPasswordPage, GalleryPage, ItemsPopupPage, - LeaderboardSettingsPage, LevelComponent, LevelsListPage, LoadingMarkerComponent, @@ -150,6 +149,7 @@ export function createTranslateLoader(http: HttpClient) { EscapeHtmlPipe, ], imports: [ + AppConfigModule, BrowserModule, CacheModule, FormsModule, @@ -230,7 +230,6 @@ export function createTranslateLoader(http: HttpClient) { ForgetPasswordPage, ItemsPopupPage, GalleryPage, - LeaderboardSettingsPage, LevelComponent, LevelsListPage, LoadingMarkerComponent, diff --git a/src/pages/activities-classic/list/activities-classic-list.page.ts b/src/pages/activities-classic/list/activities-classic-list.page.ts index 633a5f7f..d01caf09 100644 --- a/src/pages/activities-classic/list/activities-classic-list.page.ts +++ b/src/pages/activities-classic/list/activities-classic-list.page.ts @@ -1,3 +1,6 @@ +/** + * @TODO: I believe we can delete this now + */ import { Component } from '@angular/core'; import { NavController, ToastController, LoadingController } from 'ionic-angular'; @@ -10,7 +13,7 @@ declare var _: any; templateUrl: './list.html' }) export class ActivitiesClassicListPage { - public activities: Array = []; + activities: Array = []; constructor( public navCtrl: NavController, @@ -38,7 +41,7 @@ export class ActivitiesClassicListPage { /** * normalise activities */ - public normaliseActivities(activities): Array { + normaliseActivities(activities): Array { let result = []; activities.forEach((act, index) => { @@ -78,7 +81,7 @@ export class ActivitiesClassicListPage { }); } - public doRefresh(refresher) { + doRefresh(refresher) { this._pullData(this.activities, () => { if (refresher) { refresher.complete(); @@ -103,19 +106,19 @@ export class ActivitiesClassicListPage { }); } - public hasReservation(activity) { + hasReservation(activity) { return false; } - public viewTicket(activity) { + viewTicket(activity) { } - public book(activity) { + book(activity) { } - public gotoActivity(activity) { + gotoActivity(activity) { console.log(activity); this.navCtrl.push(ActivitiesViewPage, {activity}); } diff --git a/src/pages/activities/list/popup.ts b/src/pages/activities/list/popup.ts index c461f689..44a0e7f4 100644 --- a/src/pages/activities/list/popup.ts +++ b/src/pages/activities/list/popup.ts @@ -13,7 +13,6 @@ import { loadingMessages, errMessages } from '../../../app/messages'; templateUrl: 'popup.html' }) export class ActivityListPopupPage { - achievementData: any = null; achievementName: string; achievementsLoadingErr: any = errMessages.General.loading.load; diff --git a/src/pages/assessments/assessments.html b/src/pages/assessments/assessments.html index 02d56f6b..bb0fe09f 100644 --- a/src/pages/assessments/assessments.html +++ b/src/pages/assessments/assessments.html @@ -1,7 +1,6 @@ - - - - - - {{ 'SETTINGS.SUPPORT' | translate }} - {{ 'SETTINGS.HELP' | translate }} + + diff --git a/src/pages/settings/settings.page.ts b/src/pages/settings/settings.page.ts index 2fdf7e37..e69c08f0 100644 --- a/src/pages/settings/settings.page.ts +++ b/src/pages/settings/settings.page.ts @@ -1,15 +1,15 @@ import { Component } from '@angular/core'; -import { App, NavController, MenuController, LoadingController } from 'ionic-angular'; +import { App, NavController, MenuController, LoadingController, AlertController } from 'ionic-angular'; // services import { CacheService } from '../../shared/cache/cache.service'; +import { GameService } from '../../services/game.service'; // pages -import { LeaderboardSettingsPage } from '../settings/leaderboard/leaderboard-settings.page'; import { LoginPage } from '../../pages/login/login'; import { TutorialPage } from '../settings/tutorial/tutorial.page'; import { TermsConditionsPage } from '../registration/terms-conditions/terms-conditions.page'; // Others import { TranslationService } from '../../shared/translation/translation.service'; -import { loadingMessages, errMessages } from '../../app/messages'; +import { loadingMessages } from '../../app/messages'; @Component({ selector: 'settings-page', @@ -17,34 +17,113 @@ import { loadingMessages, errMessages } from '../../app/messages'; }) export class SettingsPage { helpline: string = "help@practera.com"; + hideName: boolean = false; logoutMessage: any = loadingMessages.Logout.logout; settings: any = []; + isLock: boolean = false; constructor( public appCtrl: App, + public alertCtrl: AlertController, + public cacheService: CacheService, + public gameService: GameService, public loadingCtrl: LoadingController, public menuCtrl: MenuController, public navCtrl: NavController, - public cache: CacheService, - public translationService: TranslationService) {} - getUserEmail() { - return this.cache.getLocal('email') || ''; + public translationService: TranslationService, + ) {} + + ionViewWillEnter(){ + this.preload(); + } + + preload() { + const loading = this.loadingCtrl.create({ + content: 'Loading' + }); + loading.present(); + + let gameId = this.cacheService.getLocal('game_id'); + this.gameService.getCharacters(gameId) + .subscribe((characters) => { + let me = characters.Characters[0]; + if(me.meta == null) { + this.hideName = false; + } + if(me.meta != null){ + if (me.meta.private === 0) { + this.hideName = false; + } else { + this.hideName = true; + } + } + loading.dismiss(); + }, (err) => { + loading.dismiss(); + }); + } + + triggerHideName() { + if (this.isLock) { + this.isLock = false; + } else { + const showAlert = (msg) => { + let alert = this.alertCtrl.create({ + subTitle: msg, + buttons: ['OK'] + }); + alert.present(); + } + + const loader = this.loadingCtrl.create({ + content: 'Updating' + }); + + loader.present().then(() => { + this.isLock = true; + this.gameService.postCharacter({ + Character: { + id: this.cacheService.getLocal('character_id'), + meta: { + private: (this.hideName) ? 1 : 0 + } + } + }) + .subscribe((result) => { + this.isLock = false; + loader.dismiss(); + let msg = 'You name will now be hidden if in the ranking'; + if (!this.hideName) { + msg = 'Your name will now be displayed if in the ranking'; + } + showAlert(msg); + }, (err) => { + this.hideName = !this.hideName; + showAlert('Unabled to change your privacy setting.'); + loader.dismiss(); + }); + }); + } } - goLeaderBoardSettings(){ - this.navCtrl.push(LeaderboardSettingsPage); + + getUserEmail() { + return this.cacheService.getLocal('email') || ''; } + goToTutorial() { this.navCtrl.push(TutorialPage); } + goToTermConditions() { this.navCtrl.push(TermsConditionsPage); } + logout() { let loader = this.loadingCtrl.create({ spinner: 'hide', content: this.logoutMessage }); loader.present().then(() => { - this.cache.clear().then(() => { + this.cacheService.clear().then(() => { localStorage.clear(); window.location.reload(); // the reason of doing this is because of we need to refresh page content instead of API data cache issue occurs loader.dismiss(); diff --git a/src/pages/spinwheel/celebration.html b/src/pages/spinwheel/celebration.html deleted file mode 100644 index f736105a..00000000 --- a/src/pages/spinwheel/celebration.html +++ /dev/null @@ -1,3 +0,0 @@ - - Test - diff --git a/src/pages/spinwheel/celebration.page.ts b/src/pages/spinwheel/celebration.page.ts deleted file mode 100644 index 5bf0adbe..00000000 --- a/src/pages/spinwheel/celebration.page.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { Component } from '@angular/core'; - -@Component({ - templateUrl: './celebration.html' -}) -export class CelebrationPage { - -} diff --git a/src/pages/tabs/tabs.html b/src/pages/tabs/tabs.html index c45f2d85..a32f5ba4 100755 --- a/src/pages/tabs/tabs.html +++ b/src/pages/tabs/tabs.html @@ -1,9 +1,4 @@ - - - + - - - diff --git a/src/pages/tabs/tabs.page.ts b/src/pages/tabs/tabs.page.ts index c0339b8b..847afcbc 100644 --- a/src/pages/tabs/tabs.page.ts +++ b/src/pages/tabs/tabs.page.ts @@ -2,11 +2,8 @@ import { Component } from '@angular/core'; // Pages import { ActivitiesListPage } from '../activities/list/list.page'; -import { RankingsPage } from '../rankings/list/rankings.page'; -import { SettingsPage } from '../settings/settings.page'; -import { TestPage } from './test.page'; -import { EventsListPage } from '../events/list/list.page'; // Others +import { AppConfigService } from '../../shared/app-config/app-config.service'; import { TranslationService } from '../../shared/translation/translation.service'; @Component({ @@ -16,13 +13,18 @@ import { TranslationService } from '../../shared/translation/translation.service export class TabsPage { // this tells the tabs component which Pages // should be each tab's root Page - ranking: any = RankingsPage; - // ranking: any = TestPage; + + // We need hardcode at least one tab menu, + // otherwise any misconfigure will break dashboard: any = ActivitiesListPage; - settings: any = SettingsPage; - events: any = EventsListPage; + tabs: any = []; constructor( + public appConfig: AppConfigService, public translationService: TranslationService ) {} + + ionViewWillEnter() { + this.tabs = this.appConfig.getTabs(); + } } diff --git a/src/pages/team/team.ts b/src/pages/team/team.page.ts similarity index 99% rename from src/pages/team/team.ts rename to src/pages/team/team.page.ts index dc33a180..bbeec9df 100644 --- a/src/pages/team/team.ts +++ b/src/pages/team/team.page.ts @@ -19,8 +19,6 @@ export class TeamPage { public toastCtrl: ToastController ) {} - - // @TODO: Move to shared function later... _error(err) { let toast = this.toastCtrl.create({ diff --git a/src/pages/term-condition/term-condition.page.ts b/src/pages/term-condition/term-condition.page.ts new file mode 100644 index 00000000..d256d987 --- /dev/null +++ b/src/pages/term-condition/term-condition.page.ts @@ -0,0 +1,120 @@ +import { Component, Input } from '@angular/core'; +import { SafeResourceUrl } from '@angular/platform-browser'; +import { NavController, AlertController } from 'ionic-angular'; + +// services +import { AuthService } from '../../services/auth.service'; +import { NotificationService } from '../../shared/notification/notification.service'; +// pages +import { RegisterPage } from '../registration/register.page'; +import { TabsPage } from '../tabs/tabs.page'; +// Others +import { TranslationService } from '../../shared/translation/translation.service'; +import { loadingMessages, errMessages, generalVariableMessages } from '../../app/messages'; + +@Component({ + selector: 'term-condition', + templateUrl: 'term-condition.html' +}) +export class TermConditionPage { + @Input('content') content?: SafeResourceUrl; + @Input('user') user: any; + + agreed:boolean = false; + checkAccessMethod: boolean = false; + disagreeErrMessage = errMessages.TermConditions.disagreement.noAccepted; + helpEmailMessage = generalVariableMessages.helpMail.email; + verifyFailedErrMessage = errMessages.TermConditions.verifyFailed.verifyfailed; + + constructor( + public alertCtrl: AlertController, + public authService: AuthService, + public nav: NavController, + public notificationService: NotificationService, + public translationService: TranslationService, + ) {} + + accessMethod(){ + return (window.location.href.indexOf('?do=') > -1) ? this.checkAccessMethod = true : this.checkAccessMethod = false + } + + displayError(errorMessage?: any): void { + let alert = this.alertCtrl.create({ + title: 'Invalid registration code', + subTitle: errorMessage, + buttons: [{ + text: 'Close' + }] + }); + alert.present(); + } + backToSAccountPage() { + this.nav.popToRoot(); + } + + ionViewDidEnter() { + console.log(this.user); + } + + agree(user): void { + if (this.agreed === true) { + this.nav.push(RegisterPage, user); + } else { + this.notificationService.present(this.disagreeErrMessage); + } + } + /** + * verify if params from url is allowed to proceed with registration + */ + verify(): void { + this.authService.verifyRegistration({ + key: 'test', + password: 'test' + }).subscribe( + res => { + console.log(res); + }, + err => { + this.notificationService.present(this.verifyFailedErrMessage); + }, + () => { + this.nav.push(TabsPage); + } + ); + } + /** + * toggle Read & confirm to proceed next registration page + */ + toggleAgree(): void { + this.agreed = !this.agreed; + } + + navToRegister(): void { + if (this.agreed === true) { + console.log(this.nav.getViews()); + } + } + + onTermError(err): void { + const supportEmail = this.helpEmailMessage; + if ((err.data || {}).msg) { + //@TODO: implement error handling + console.log({title: "Unable to register", template: `Something went wrong, please contact ${supportEmail}.`}); + } else if (err.data.msg.indexOf('already registered') != -1) { + console.log({ + title: "Account already registered", + template: "Please log in, or click 'forgot password'" + }); + } else { + console.log({ + title: "Invalid registration link", + template: `Please check your email again, or contact ${supportEmail}` + }); + } + } + + // temporary fix for direct signin + signIn(): void { + this.nav.push(TabsPage); + } +} diff --git a/src/services/assessment.service.ts b/src/services/assessment.service.ts index dbc0e492..722df12e 100755 --- a/src/services/assessment.service.ts +++ b/src/services/assessment.service.ts @@ -1,6 +1,7 @@ import { Injectable } from '@angular/core'; import { RequestService } from '../shared/request/request.service'; +// Others import * as _ from 'lodash'; class Assessment { @@ -15,6 +16,15 @@ class Answer { choices?: Array; } +export class questionsResult { + required: Boolean; + answer: any; + reviewerAnswer: { + answer: any; + comment: any; + }; +} + export class ChoiceBase { id: number; value?: number; // or choice id, usually same as "id" above @@ -32,11 +42,12 @@ export class QuestionBase { assessment_id: number; name: string; type: string; - file_type?: string; - audience: Array; + description: string; + required: boolean; + audience: string | Array; + file_type?: string | any; choices?: ChoiceBase[]; answer?: any; - required?: boolean; order?: string | number; constructor(id, assessment_id, name, type) { @@ -270,9 +281,10 @@ export class AssessmentService { */ normaliseGroup(group) { // let result = group; - let thisQuestions = group.AssessmentGroupQuestion; - thisQuestions = thisQuestions.map(question => { - return this.normaliseQuestion(question); + let questions = group.AssessmentGroupQuestion; + let thisQuestions = []; + questions.forEach(question => { + thisQuestions.push(this.normaliseQuestion(question)); }); return { @@ -285,6 +297,27 @@ export class AssessmentService { } } + /** + * filter submission by: + * - "submitter" as audience + * - "submitter" as audience && status as "published" + * @name isAccessible + * @param {object} question Single normalised assessment + * object from this.normalise above + */ + public isAccessible(question, status) { + let result = true; + if (question.audience.indexOf('submitter') === -1) { + result = false; + } + + if (result && status === 'published') { + result = false; + } + + return result; + } + /* turn "AssessmentGroupQuestion" array format from: { @@ -328,18 +361,19 @@ export class AssessmentService { }); return { - id: question.id, + id: question.id, // unknown purpose (be careful with this id) assessment_id: question.assessment_question_id, - question_id: question.assessment_question_id, + question_id: question.assessment_question_id, // use this to indicate question group_id: question.assessment_group_id, name: thisQuestion.name, type: thisQuestion.question_type, audience: thisQuestion.audience, + description: thisQuestion.description, file_type: thisQuestion.file_type, required: thisQuestion.is_required, choices: choices, order: question.order, - answer: thisQuestion.answer + answer: thisQuestion.answer, }; } @@ -381,4 +415,100 @@ export class AssessmentService { weight: choice.weight }; } + + /** + * hardcode communication to different server + * @param {[type]} assessment_id [description] + */ + public getPostProgramAssessment(assessment_id) { + // let url = `${this.prefixUrl}api/assessments.json?assessment_id=${assessment_id}&structured=true`; + // let headers = new Headers(); + // headers.append('appkey', this.appkey); + // headers.append('apikey', this.cacheService.getLocalObject('apikey')); + // headers.append('timelineID', this.cacheService.getLocalObject('timelineID')); + return this.request.get(`api/assessments.json?assessment_id=${assessment_id}&structured=true`); + } + + // helpers + public getStatus(questionsResult, submissionResult): string { + let questionsStatus = []; + _.forEach(questionsResult, q => { + if (q.required && q.answer !== null) { + if ( + q.reviewerAnswer !== null && + submissionResult.status !== 'pending approval' && + (q.reviewerAnswer.answer || q.reviewerAnswer.comment) + ) { + questionsStatus.push('reviewed'); + } else { + questionsStatus.push('completed'); + } + } + + if (!q.required && q.answer !== null) { + if ( + q.reviewerAnswer !== null && + submissionResult.status !== 'pending approval' && + (q.reviewerAnswer.answer || q.reviewerAnswer.comment) + ) { + questionsStatus.push('reviewed'); + } else { + questionsStatus.push('completed'); + } + } + + if (q.answer === null) { + questionsStatus.push('incomplete'); + } + }); + + // get final status by checking all questions' statuses + let status = 'incomplete'; + if (_.every(questionsStatus, (v) => { + return (v === 'completed'); + })) { + status = 'completed'; + } + if (_.includes(questionsStatus, 'reviewed')) { + status = 'reviewed'; + } + + return status; + } + + public getSummaries(questionsResult: Array) { + let totalRequiredQuestions = 0; + let answeredQuestions = 0; + let reviewerFeedback = 0; + + _.forEach(questionsResult, (q) => { + // get total number of questions + if (q.required) { + totalRequiredQuestions += 1; + } + + // get total number of answered questions + if (q.required && q.answer && q.answer !== null) { + answeredQuestions += 1; + } + + // get total number of feedback + // If API response, the reviewer's answer and comment are empty, + // front-end don't consider it as a feedback + if ( + q.reviewerAnswer && + q.reviewerAnswer !== null && + !_.isEmpty(q.reviewerAnswer.answer) && + !_.isEmpty(q.reviewerAnswer.comment) + ) { + reviewerFeedback += 1; + } + }); + + return { + totalRequiredQuestions, + answeredQuestions, + reviewerFeedback + }; + } } diff --git a/src/services/submission.service.ts b/src/services/submission.service.ts index 562de8dc..54220189 100755 --- a/src/services/submission.service.ts +++ b/src/services/submission.service.ts @@ -1,4 +1,5 @@ import { Injectable } from '@angular/core'; +import { Observable } from 'rxjs/Observable'; // Others import { RequestService } from '../shared/request/request.service'; @@ -214,7 +215,7 @@ export class SubmissionService { * extract reference IDs and prepare Observables to retrieve submissions * @param {array} references References array responded with get_activities() api */ - getSubmissionsByReferences(references) { + getSubmissionsByReferences(references: Array<{context_id : Number}>): Array> { let tasks = []; // multiple API requests // get_submissions API to retrieve submitted answer diff --git a/src/shared/app-config/app-config.module.ts b/src/shared/app-config/app-config.module.ts new file mode 100644 index 00000000..58769a6f --- /dev/null +++ b/src/shared/app-config/app-config.module.ts @@ -0,0 +1,6 @@ +import { NgModule } from '@angular/core'; +import { AppConfigService } from './app-config.service'; +@NgModule({ + providers: [ AppConfigService ] +}) +export class AppConfigModule {} diff --git a/src/shared/app-config/app-config.service.ts b/src/shared/app-config/app-config.service.ts new file mode 100644 index 00000000..8d7965a6 --- /dev/null +++ b/src/shared/app-config/app-config.service.ts @@ -0,0 +1,53 @@ +import { Injectable } from '@angular/core'; +import { CacheService } from '../cache/cache.service'; + +// Pages +import { EventsListPage } from '../../pages/events/list/list.page'; +import { GalleryPage } from '../../pages/gallery/gallery.page'; +import { LevelsPage } from '../../pages/levels/list/list.page'; +import { RankingsPage } from '../../pages/rankings/list/rankings.page'; +import { SettingsPage } from '../../pages/settings/settings.page'; +import { TeamPage } from '../../pages/team/team.page'; + +// Others +import * as _ from 'lodash'; + +@Injectable() +export class AppConfigService { + // Mapping page to name, + // use for changing page in tab menu + pagesMap: any = { + events: EventsListPage, + rankings: RankingsPage, + settings: SettingsPage, + gallery: GalleryPage, + team: TeamPage + } + + constructor ( + private cacheService: CacheService + ) {} + + /** + * @description Get full configure data + */ + get(): any { + return this.cacheService.getLocal('appConfig'); + } + + /** + * @description Get only configure for tabs + */ + getTabs(): any { + let appConfig: any = this.cacheService.getLocal('appConfig'); + if (!appConfig.tabs) { + return appConfig.tabs; + } + + let modules = _.sortBy(appConfig.tabs, [(o) => o.order]); + return _.map(modules, (o) => { + o.root = this.pagesMap[o.name]; + return o; + }); + } +} diff --git a/src/shared/request/request.service.ts b/src/shared/request/request.service.ts index 9fbb1bdb..5d890a48 100755 --- a/src/shared/request/request.service.ts +++ b/src/shared/request/request.service.ts @@ -149,10 +149,6 @@ export class RequestService { */ post(endPoint: string, data: any, header?: any) { let headers = this.appendHeader(); - - // @TODO: make sure if Content-Type is optional - headers = headers.delete('Content-Type'); - headers = headers.set('Content-Type', 'application/x-www-form-urlencoded'); return this.http.post(this.prefixUrl + endPoint, data, { headers }) .map(this.extractData) .catch(this.handleError); diff --git a/src/shared/testModules/pages/test/test-start.page.ts b/src/shared/testModules/pages/test/test-start.page.ts index 8a6fde14..a3c150f4 100755 --- a/src/shared/testModules/pages/test/test-start.page.ts +++ b/src/shared/testModules/pages/test/test-start.page.ts @@ -7,20 +7,15 @@ import { AssessmentsGroupPage } from '../../../../pages/assessments/group/assess import { ActivitiesClassicListPage } from '../../../../pages/activities-classic/list/activities-classic-list.page'; import { EventsListPage } from '../../../../pages/events/list/list.page'; import { EventsDownloadPage } from '../../../../pages/events/download/events-download.page'; -import { GalleryPage } from '../../../../pages/gallery/gallery'; +import { GalleryPage } from '../../../../pages/gallery/gallery.page'; import { LevelsListPage } from '../../../../pages/levels/list/list'; import { LoginPage } from '../../../../pages/login/login'; import { RegisterPage } from '../../../../pages/registration/register.page'; import { SettingsPage } from '../../../../pages/settings/settings.page'; import { EventCheckinPage } from '../../../../pages/events/checkin/event-checkin.page'; -import { TeamPage } from '../../../../pages/team/team'; -import { CelebrationPage } from '../../../../pages/spinwheel/celebration.page'; +import { TeamPage } from '../../../../pages/team/team.page'; const PAGES = [ - { - name: 'celebration', - page: CelebrationPage - }, { name: 'Check-in', page: EventCheckinPage, diff --git a/src/theme/main.styles.theme.scss b/src/theme/main.styles.theme.scss index e3706265..1e65b890 100755 --- a/src/theme/main.styles.theme.scss +++ b/src/theme/main.styles.theme.scss @@ -30,7 +30,6 @@ @import "./pages/rankings/view-ranking-details"; // Settings -@import "./pages/settings/leaderboard"; @import "./pages/settings/tutorial"; @import "./pages/settings/settings"; diff --git a/src/theme/pages/settings/leaderboard.scss b/src/theme/pages/settings/leaderboard.scss deleted file mode 100644 index 3f4261df..00000000 --- a/src/theme/pages/settings/leaderboard.scss +++ /dev/null @@ -1,15 +0,0 @@ -/** - * @description - * - leaderboard settings page styling - * @page - * - pages/settings/leaderboard/leaderboard-settings.html - */ - -.leaderboard-settings { - .hide-settings { - padding: 0; - margin: 0; - display: flex; - align-items: center; - } -} diff --git a/yarn.lock b/yarn.lock index 3e62e6e9..f89b54ca 100644 --- a/yarn.lock +++ b/yarn.lock @@ -982,9 +982,9 @@ date-now@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" -debug@2, debug@^2.2.0: - version "2.6.8" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc" +debug@2, debug@2.6.7, debug@^2.2.0: + version "2.6.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.7.tgz#92bad1f6d05bbb6bba22cca88bcd0ec894c2861e" dependencies: ms "2.0.0" @@ -1000,12 +1000,6 @@ debug@2.3.3: dependencies: ms "0.7.2" -debug@2.6.7: - version "2.6.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.7.tgz#92bad1f6d05bbb6bba22cca88bcd0ec894c2861e" - dependencies: - ms "2.0.0" - decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" @@ -1026,7 +1020,7 @@ deferred-leveldown@~0.2.0: dependencies: abstract-leveldown "~0.12.1" -del@2.2.0: +del@2.2.0, del@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/del/-/del-2.2.0.tgz#9a50f04bf37325e283b4f44e985336c252456bd5" dependencies: @@ -1038,18 +1032,6 @@ del@2.2.0: pinkie-promise "^2.0.0" rimraf "^2.2.8" -del@^2.2.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" - dependencies: - globby "^5.0.0" - is-path-cwd "^1.0.0" - is-path-in-cwd "^1.0.0" - object-assign "^4.0.1" - pify "^2.0.0" - pinkie-promise "^2.0.0" - rimraf "^2.2.8" - delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" @@ -1654,7 +1636,7 @@ glob-parent@^2.0.0: dependencies: is-glob "^2.0.0" -glob@7.1.1: +glob@7.1.1, glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.1, glob@~7.1.1: version "7.1.1" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" dependencies: @@ -1675,17 +1657,6 @@ glob@^6.0.1: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.1, glob@~7.1.1: - version "7.1.2" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - globby@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-4.1.0.tgz#080f54549ec1b82a6c60e631fc82e1211dbe95f8" @@ -1697,17 +1668,6 @@ globby@^4.0.0: pify "^2.0.0" pinkie-promise "^2.0.0" -globby@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" - dependencies: - array-union "^1.0.1" - arrify "^1.0.0" - glob "^7.0.3" - object-assign "^4.0.1" - pify "^2.0.0" - pinkie-promise "^2.0.0" - globule@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/globule/-/globule-1.2.0.tgz#1dc49c6822dd9e8a2fa00ba2a295006e8664bd09" @@ -2202,14 +2162,10 @@ jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" -json-loader@0.5.4: +json-loader@0.5.4, json-loader@^0.5.4: version "0.5.4" resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.4.tgz#8baa1365a632f58a3c46d20175fc6002c96e37de" -json-loader@^0.5.4: - version "0.5.7" - resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.7.tgz#dca14a70235ff82f0ac9a3abeb60d337a365185d" - json-schema-traverse@^0.3.0: version "0.3.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" @@ -2509,13 +2465,7 @@ localforage-cordovasqlitedriver@~1.5.0: "@types/localforage" "0.0.30" localforage ">=1.4.0" -localforage@>=1.4.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/localforage/-/localforage-1.5.0.tgz#6b994e19b56611fa85df3992df397ac4ab66e815" - dependencies: - lie "3.0.2" - -localforage@~1.4.2: +localforage@>=1.4.0, localforage@~1.4.2: version "1.4.3" resolved "https://registry.yarnpkg.com/localforage/-/localforage-1.4.3.tgz#a212543c39c7c76424edd12bf474c489aaca494c" dependencies: @@ -2724,11 +2674,7 @@ minimist@~0.0.1: dependencies: minimist "0.0.8" -moment@^2.16.0: - version "2.18.1" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.18.1.tgz#c36193dd3ce1c2eed2adb7c802dbbc77a81b1c0f" - -moment@^2.19.1: +moment@^2.16.0, moment@^2.19.1: version "2.19.1" resolved "https://registry.yarnpkg.com/moment/-/moment-2.19.1.tgz#56da1a2d1cbf01d38b7e1afc31c10bcfa1929167" @@ -3249,26 +3195,18 @@ punycode@^1.2.4, punycode@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" -q@1.4.1: +q@1.4.1, q@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/q/-/q-1.4.1.tgz#55705bcd93c5f3673530c2c2cbc0c2b3addc286e" -q@^1.4.1: - version "1.5.0" - resolved "https://registry.yarnpkg.com/q/-/q-1.5.0.tgz#dd01bac9d06d30e6f219aecb8253ee9ebdc308f1" - qjobs@^1.1.4: version "1.1.5" resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.1.5.tgz#659de9f2cf8dcc27a1481276f205377272382e73" -qs@6.4.0, qs@~6.4.0: +qs@6.4.0, qs@^6.4.0, qs@~6.4.0: version "6.4.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" -qs@^6.4.0: - version "6.5.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.0.tgz#8d04954d364def3efc55b5a0793e1e2c8b1e6e49" - querystring-es3@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" @@ -3348,7 +3286,7 @@ read-pkg@^2.0.0: normalize-package-data "^2.3.2" path-type "^2.0.0" -"readable-stream@>=1.0.33-1 <1.1.0-0", readable-stream@~1.0.2, readable-stream@~1.0.26, readable-stream@~1.0.26-4: +"readable-stream@>=1.0.33-1 <1.1.0-0", readable-stream@^1.0.26-4, readable-stream@~1.0.2, readable-stream@~1.0.26, readable-stream@~1.0.26-4: version "1.0.34" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" dependencies: @@ -3357,15 +3295,6 @@ read-pkg@^2.0.0: isarray "0.0.1" string_decoder "~0.10.x" -readable-stream@^1.0.26-4: - version "1.1.14" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.2.2, readable-stream@^2.2.6: version "2.3.3" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c" @@ -3812,11 +3741,7 @@ source-map@^0.1.41: dependencies: amdefine ">=0.0.4" -source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.0, source-map@~0.5.1, source-map@~0.5.3: - version "0.5.6" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" - -source-map@^0.5.7: +source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7, source-map@~0.5.0, source-map@~0.5.1, source-map@~0.5.3: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" @@ -4172,14 +4097,10 @@ typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" -typescript@2.3.4: +typescript@2.3.4, typescript@^2.3.3: version "2.3.4" resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.3.4.tgz#3d38321828231e434f287514959c37a82b629f42" -typescript@^2.3.3: - version "2.5.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.5.3.tgz#df3dcdc38f3beb800d4bc322646b04a3f6ca7f0d" - uglify-es@^3.1.0: version "3.1.5" resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.1.5.tgz#63bae0fd4f9feeda417fee7c0ff685a673819683" @@ -4445,20 +4366,13 @@ ws@1.1.1: options ">=0.0.5" ultron "1.0.x" -ws@1.1.2: +ws@1.1.2, ws@^1.0.1: version "1.1.2" resolved "https://registry.yarnpkg.com/ws/-/ws-1.1.2.tgz#8a244fa052401e08c9886cf44a85189e1fd4067f" dependencies: options ">=0.0.5" ultron "1.0.x" -ws@^1.0.1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/ws/-/ws-1.1.4.tgz#57f40d036832e5f5055662a397c4de76ed66bf61" - dependencies: - options ">=0.0.5" - ultron "1.0.x" - wtf-8@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/wtf-8/-/wtf-8-1.0.0.tgz#392d8ba2d0f1c34d1ee2d630f15d0efb68e1048a" @@ -4477,11 +4391,7 @@ xml2js@0.4.4: sax "0.6.x" xmlbuilder ">=1.0.0" -xmlbuilder@>=1.0.0: - version "9.0.1" - resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.1.tgz#91cd70897755363eba57c12ddeeab4a341a61f65" - -xmlbuilder@^4.1.0: +xmlbuilder@>=1.0.0, xmlbuilder@^4.1.0: version "4.2.1" resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-4.2.1.tgz#aa58a3041a066f90eaa16c2f5389ff19f3f461a5" dependencies: