diff --git a/angular.json b/angular.json index 6a51f04..0d025e4 100644 --- a/angular.json +++ b/angular.json @@ -23,10 +23,7 @@ ], "styles": [ "node_modules/bootstrap/dist/css/bootstrap.min.css", - "node_modules/font-awesome/css/font-awesome.min.css", "node_modules/material-design-icons-iconfont/dist/material-design-icons.scss", - "node_modules/froala-editor/css/froala_editor.pkgd.min.css", - "node_modules/froala-editor/css/froala_style.min.css", "client/styles.scss" ], "scripts": [ @@ -35,7 +32,6 @@ "node_modules/popper.js/dist/umd/popper.min.js", "node_modules/hammerjs/hammer.min.js", "node_modules/bootstrap/dist/js/bootstrap.min.js", - "node_modules/froala-editor/js/froala_editor.pkgd.min.js", "node_modules/jsonform/deps/underscore.js", "node_modules/jsonform/lib/jsonform.js" ] @@ -89,16 +85,11 @@ "node_modules/tether/dist/js/tether.min.js", "node_modules/popper.js/dist/umd/popper.min.js", "node_modules/hammerjs/hammer.min.js", - "node_modules/bootstrap/dist/js/bootstrap.min.js", - "node_modules/froala-editor/js/froala_editor.pkgd.min.js" + "node_modules/bootstrap/dist/js/bootstrap.min.js" ], "styles": [ "node_modules/bootstrap/dist/css/bootstrap.min.css", - "node_modules/font-awesome/css/font-awesome.min.css", - "node_modules/material-design-icons-iconfont/dist/material-design-icons.scss", - "node_modules/froala-editor/css/froala_editor.pkgd.min.css", - "node_modules/froala-editor/css/froala_style.min.css", - "client/styles.scss" + "node_modules/material-design-icons-iconfont/dist/material-design-icons.scss" ], "assets": [ "client/assets", diff --git a/client/app/end-user.module.ts b/client/app/end-user.module.ts deleted file mode 100644 index a4450e9..0000000 --- a/client/app/end-user.module.ts +++ /dev/null @@ -1,41 +0,0 @@ -import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { SharedModule } from './shared/shared.module'; -import { RoutingModule } from './routing.module'; -import { EndUserHomeComponent } from './end-user/end-user-home/end-user-home.component'; -import { EndUserSignInComponent } from './end-user/end-user-sign-in/end-user-sign-in.component'; -import { EndUserFrameComponent } from './end-user/end-user-frame/end-user-frame.component'; -import { MaterialDesignModule } from './material-design.module'; -import { AngularFireModule } from 'angularfire2'; -import { AngularFireAuthModule } from 'angularfire2/auth'; -import { EndUserApiService } from './end-user/services/end-user-api.service'; -import { EndUserAuthCheckGuard } from './end-user/services/end-user-auth-check.guard'; -import { EndUserAuthToMainGuard } from './end-user/services/end-user-auth-to-main.guard'; -import { EndUserDashboardComponent } from './end-user/end-user-dashboard/end-user-dashboard.component'; -import { EndUserTrackerListComponent } from './end-user/end-user-tracker-list/end-user-tracker-list.component'; -import { EndUserTriggerListComponent } from './end-user/end-user-trigger-list/end-user-trigger-list.component'; - -@NgModule({ - imports: [ - CommonModule, - SharedModule, - RoutingModule, - AngularFireModule.initializeApp(require('../credentials/firebase-client-config')), - AngularFireAuthModule - ], - exports: [ - - ], - declarations: [ - EndUserHomeComponent, - EndUserSignInComponent, - EndUserFrameComponent, - EndUserDashboardComponent, - EndUserTrackerListComponent, - EndUserTriggerListComponent, - ], - providers: [EndUserApiService, EndUserAuthCheckGuard, EndUserAuthToMainGuard], - schemas: [CUSTOM_ELEMENTS_SCHEMA], - entryComponents: [] -}) -export class EndUserModule { } diff --git a/client/app/end-user/end-user-dashboard/end-user-dashboard.component.html b/client/app/end-user/end-user-dashboard/end-user-dashboard.component.html deleted file mode 100644 index 4661478..0000000 --- a/client/app/end-user/end-user-dashboard/end-user-dashboard.component.html +++ /dev/null @@ -1,3 +0,0 @@ -
- -
\ No newline at end of file diff --git a/client/app/end-user/end-user-dashboard/end-user-dashboard.component.scss b/client/app/end-user/end-user-dashboard/end-user-dashboard.component.scss deleted file mode 100644 index e69de29..0000000 diff --git a/client/app/end-user/end-user-dashboard/end-user-dashboard.component.spec.ts b/client/app/end-user/end-user-dashboard/end-user-dashboard.component.spec.ts deleted file mode 100644 index 882fb4b..0000000 --- a/client/app/end-user/end-user-dashboard/end-user-dashboard.component.spec.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; - -import { EndUserDashboardComponent } from './end-user-dashboard.component'; - -describe('EndUserDashboardComponent', () => { - let component: EndUserDashboardComponent; - let fixture: ComponentFixture; - - beforeEach(async(() => { - TestBed.configureTestingModule({ - declarations: [ EndUserDashboardComponent ] - }) - .compileComponents(); - })); - - beforeEach(() => { - fixture = TestBed.createComponent(EndUserDashboardComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/client/app/end-user/end-user-dashboard/end-user-dashboard.component.ts b/client/app/end-user/end-user-dashboard/end-user-dashboard.component.ts deleted file mode 100644 index b06013d..0000000 --- a/client/app/end-user/end-user-dashboard/end-user-dashboard.component.ts +++ /dev/null @@ -1,60 +0,0 @@ -import { Component, OnInit, OnDestroy } from "@angular/core"; -import { EndUserApiService } from "../services/end-user-api.service"; -import { ITrackerDbEntity, IItemDbEntity } from "../../../../omnitrack/core/db-entity-types"; -import { Subscription, of } from "rxjs"; -import { combineLatest } from 'rxjs/operators'; -import { TrackingSet, ProductivityHelper } from "../../shared-visualization/custom/productivity-helper"; - - - -@Component({ - selector: "app-end-user-dashboard", - templateUrl: "./end-user-dashboard.component.html", - styleUrls: ["./end-user-dashboard.component.scss"] -}) -export class EndUserDashboardComponent implements OnInit, OnDestroy { - private readonly _internalSubscriptions = new Subscription(); - productivityTrackingSet: TrackingSet - - constructor(private api: EndUserApiService) { - api.loadTrackers(); - } - - ngOnInit() { - this._internalSubscriptions.add( - this.api.trackers.subscribe(trackers => { - const productivityTracker = trackers.find(tracker => ProductivityHelper.isProductivityTracker(tracker)===true); - - const omitLogTracker = trackers.find(tracker => ProductivityHelper.isOmitLogTracker(tracker)===true) - - if (productivityTracker) { - this.api.loadItemsofTracker(productivityTracker._id) - - - const experimentId = productivityTracker.flags.experiment - - this._internalSubscriptions.add( - - this.api.getItemsOfTracker(productivityTracker._id).pipe(combineLatest( - omitLogTracker ? this.api.getItemsOfTracker(omitLogTracker._id) : of([]), - experimentId? this.api.getExperimentParticipationList() : of([]), - (items, logs, experiments) => { - return [items, logs, experiments] - } - )) - .subscribe(result => { - const participantList = result[2] - const thisExperiment = participantList.find(participant => participant._id === experimentId) - this.productivityTrackingSet = { tracker: productivityTracker, items: result[0], - omitLogTracker: omitLogTracker, omitLogs: result[1], overrideStartDate: thisExperiment? thisExperiment.experimentRangeStart : null } as TrackingSet - }) - ) - } - }) - ); - } - - ngOnDestroy() { - this._internalSubscriptions.unsubscribe(); - } -} diff --git a/client/app/end-user/end-user-frame/end-user-frame.component.html b/client/app/end-user/end-user-frame/end-user-frame.component.html deleted file mode 100644 index 02be9d3..0000000 --- a/client/app/end-user/end-user-frame/end-user-frame.component.html +++ /dev/null @@ -1,30 +0,0 @@ -
-
-
- - - OmniTrack - -
-
- -
-
-
{{user.displayName}}
-
{{user.email}}
-
- -
- -
-
-
- - Client Download - - -
-
- -
diff --git a/client/app/end-user/end-user-frame/end-user-frame.component.scss b/client/app/end-user/end-user-frame/end-user-frame.component.scss deleted file mode 100644 index d4ea8c2..0000000 --- a/client/app/end-user/end-user-frame/end-user-frame.component.scss +++ /dev/null @@ -1,44 +0,0 @@ -.header-bar { - height: 60px; - background: #ffffff; - padding-left: 0.5rem; - box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.2); - .omnitrack-icon { - height: 70%; - } - - .title { - font-size: 1.1rem; - font-weight: 500; - color: #575757; - margin-left: 0.5rem; - } - - .profile-container { - height: 100%; - padding-left: 0.8rem; - padding-right: 0.8rem; - cursor: pointer; - - - .profile { - height: 75%; - - .profile-text{ - margin-right: 0.7rem; - } - .thumbnail { - height: 100%; - overflow: hidden; - border-radius: 50%; - img { - height: 100%; - } - } - } - - &:hover { - background: rgba(0, 0, 0, 0.1); - } - } -} diff --git a/client/app/end-user/end-user-frame/end-user-frame.component.spec.ts b/client/app/end-user/end-user-frame/end-user-frame.component.spec.ts deleted file mode 100644 index fd8723d..0000000 --- a/client/app/end-user/end-user-frame/end-user-frame.component.spec.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; - -import { EndUserFrameComponent } from './end-user-frame.component'; - -describe('EndUserFrameComponent', () => { - let component: EndUserFrameComponent; - let fixture: ComponentFixture; - - beforeEach(async(() => { - TestBed.configureTestingModule({ - declarations: [ EndUserFrameComponent ] - }) - .compileComponents(); - })); - - beforeEach(() => { - fixture = TestBed.createComponent(EndUserFrameComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/client/app/end-user/end-user-frame/end-user-frame.component.ts b/client/app/end-user/end-user-frame/end-user-frame.component.ts deleted file mode 100644 index 2b34a6a..0000000 --- a/client/app/end-user/end-user-frame/end-user-frame.component.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { Component, OnInit, OnDestroy } from '@angular/core'; -import { Subscription } from 'rxjs'; -import { filter, map, flatMap } from 'rxjs/operators'; -import { NotificationService } from '../../services/notification.service'; -import { MatSnackBar, MatDialog } from '@angular/material'; -import { AngularFireAuth } from 'angularfire2/auth'; -import { Router, NavigationEnd } from '@angular/router'; - -@Component({ - selector: 'app-end-user-frame', - styleUrls: ['./end-user-frame.component.scss'], - templateUrl: './end-user-frame.component.html' -}) -export class EndUserFrameComponent implements OnInit, OnDestroy { - - title: string = "" - - private readonly _internalSubscriptions = new Subscription() - - constructor(private notificationService: NotificationService, private snackBar: MatSnackBar, public auth: AngularFireAuth, private dialog: MatDialog, private router: Router) { - this._internalSubscriptions.add( - this.router.events.pipe( - filter(ev => ev instanceof NavigationEnd), - map(_ => this.router.routerState.root), - map(route => { - while (route.firstChild) { route = route.firstChild; } - return route; - }), - flatMap(route => route.data) - ).subscribe(data => { - this.title = data['title']; - }) - ) - } - - ngOnInit() { - this._internalSubscriptions.add( - this.notificationService.snackBarMessageQueue.subscribe( - message => { - console.log(message) - if (message.action) { - this.snackBar.open(message.message, message.action.label, { duration: 3000 }) - } - else this.snackBar.open(message.message, null, { duration: 3000 }) - }) - ) - } - - ngOnDestroy() { - this._internalSubscriptions.unsubscribe() - } - - signOutClicked() { - this.auth.auth.signOut().then( - () => { - this.router.navigate(["/tracking/login"]) - } - ) - } - -} diff --git a/client/app/end-user/end-user-home/end-user-home.component.html b/client/app/end-user/end-user-home/end-user-home.component.html deleted file mode 100644 index 61c0f12..0000000 --- a/client/app/end-user/end-user-home/end-user-home.component.html +++ /dev/null @@ -1,11 +0,0 @@ - - diff --git a/client/app/end-user/end-user-home/end-user-home.component.scss b/client/app/end-user/end-user-home/end-user-home.component.scss deleted file mode 100644 index f49c0f9..0000000 --- a/client/app/end-user/end-user-home/end-user-home.component.scss +++ /dev/null @@ -1,9 +0,0 @@ -.tab-container{ - background: white; - border-top: 1px solid lightgray; - box-shadow: 0px 2px 4px rgba(0,0,0,0.2); -} - -.gnb-link{ - text-decoration: initial; -} \ No newline at end of file diff --git a/client/app/end-user/end-user-home/end-user-home.component.spec.ts b/client/app/end-user/end-user-home/end-user-home.component.spec.ts deleted file mode 100644 index 2ca34ff..0000000 --- a/client/app/end-user/end-user-home/end-user-home.component.spec.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; - -import { EndUserHomeComponent } from './end-user-home.component'; - -describe('EndUserHomeComponent', () => { - let component: EndUserHomeComponent; - let fixture: ComponentFixture; - - beforeEach(async(() => { - TestBed.configureTestingModule({ - declarations: [ EndUserHomeComponent ] - }) - .compileComponents(); - })); - - beforeEach(() => { - fixture = TestBed.createComponent(EndUserHomeComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/client/app/end-user/end-user-home/end-user-home.component.ts b/client/app/end-user/end-user-home/end-user-home.component.ts deleted file mode 100644 index 94bcaf0..0000000 --- a/client/app/end-user/end-user-home/end-user-home.component.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { Component, OnInit } from '@angular/core'; - -@Component({ - selector: 'app-end-user-home', - templateUrl: './end-user-home.component.html', - styleUrls: ['./end-user-home.component.scss'] -}) -export class EndUserHomeComponent implements OnInit { - - tablinks = [ - { - label: "Dashboard", - path: "/tracking/dashboard" - }, - { - label: "Trackers", - path: "/tracking/trackers" - }, - { - label: "Triggers", - path: "/tracking/triggers" - } - ] - - constructor() { } - - ngOnInit() { - } - -} diff --git a/client/app/end-user/end-user-sign-in/end-user-sign-in.component.html b/client/app/end-user/end-user-sign-in/end-user-sign-in.component.html deleted file mode 100644 index 5a8a43d..0000000 --- a/client/app/end-user/end-user-sign-in/end-user-sign-in.component.html +++ /dev/null @@ -1,14 +0,0 @@ -
- - -
\ No newline at end of file diff --git a/client/app/end-user/end-user-sign-in/end-user-sign-in.component.scss b/client/app/end-user/end-user-sign-in/end-user-sign-in.component.scss deleted file mode 100644 index dcfefc2..0000000 --- a/client/app/end-user/end-user-sign-in/end-user-sign-in.component.scss +++ /dev/null @@ -1,22 +0,0 @@ -.button-signin-google{ - margin-top: 25px; - height: 50px; - color: rgba(0,0,0,0.54) !important; - font-size: 1.0rem; - - img{ - width: 19pt; - margin-right: 0.5rem; - } -} - -#main-logo{ - img{ - max-width: 80%; - } -} - -.sign-in-form{ - padding-top: 25px; - padding-bottom: 30px; -} \ No newline at end of file diff --git a/client/app/end-user/end-user-sign-in/end-user-sign-in.component.spec.ts b/client/app/end-user/end-user-sign-in/end-user-sign-in.component.spec.ts deleted file mode 100644 index 2faf359..0000000 --- a/client/app/end-user/end-user-sign-in/end-user-sign-in.component.spec.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; - -import { EndUserSignInComponent } from './end-user-sign-in.component'; - -describe('EndUserSignInComponent', () => { - let component: EndUserSignInComponent; - let fixture: ComponentFixture; - - beforeEach(async(() => { - TestBed.configureTestingModule({ - declarations: [ EndUserSignInComponent ] - }) - .compileComponents(); - })); - - beforeEach(() => { - fixture = TestBed.createComponent(EndUserSignInComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/client/app/end-user/end-user-sign-in/end-user-sign-in.component.ts b/client/app/end-user/end-user-sign-in/end-user-sign-in.component.ts deleted file mode 100644 index f897fb6..0000000 --- a/client/app/end-user/end-user-sign-in/end-user-sign-in.component.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { Component, OnInit, OnDestroy, AfterViewInit } from '@angular/core'; -import { Subscription } from 'rxjs'; -import { AngularFireAuth } from 'angularfire2/auth'; -import * as firebase from 'firebase/app'; -import { Router } from '@angular/router'; - -@Component({ - selector: 'app-end-user-sign-in', - templateUrl: './end-user-sign-in.component.html', - styleUrls: ['./end-user-sign-in.component.scss'] -}) -export class EndUserSignInComponent implements OnInit, OnDestroy, AfterViewInit { - - private readonly _internalSubscriptions = new Subscription() - - constructor(private router: Router, private authService: AngularFireAuth ) { - this._internalSubscriptions.add( - authService.authState.subscribe(user => { - if(user){ - router.navigate(["tracking"]) - } - }) - ) - } - - login() { - this.authService.auth.signInWithPopup(new firebase.auth.GoogleAuthProvider()).then( - result=>{ - } - ) - } - logout() { - this.authService.auth.signOut(); - } - - ngAfterViewInit(){ - } - - ngOnInit() { - } - - ngOnDestroy(){ - this._internalSubscriptions.unsubscribe() - } - -} diff --git a/client/app/end-user/end-user-tracker-list/end-user-tracker-list.component.html b/client/app/end-user/end-user-tracker-list/end-user-tracker-list.component.html deleted file mode 100644 index 025583a..0000000 --- a/client/app/end-user/end-user-tracker-list/end-user-tracker-list.component.html +++ /dev/null @@ -1,5 +0,0 @@ -
- - {{tracker.name}} - -
\ No newline at end of file diff --git a/client/app/end-user/end-user-tracker-list/end-user-tracker-list.component.scss b/client/app/end-user/end-user-tracker-list/end-user-tracker-list.component.scss deleted file mode 100644 index 485ce3e..0000000 --- a/client/app/end-user/end-user-tracker-list/end-user-tracker-list.component.scss +++ /dev/null @@ -1,3 +0,0 @@ -mat-card-title{ - font-size: 1rem; -} \ No newline at end of file diff --git a/client/app/end-user/end-user-tracker-list/end-user-tracker-list.component.spec.ts b/client/app/end-user/end-user-tracker-list/end-user-tracker-list.component.spec.ts deleted file mode 100644 index 5891980..0000000 --- a/client/app/end-user/end-user-tracker-list/end-user-tracker-list.component.spec.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; - -import { EndUserTrackerListComponent } from './end-user-tracker-list.component'; - -describe('EndUserTrackerListComponent', () => { - let component: EndUserTrackerListComponent; - let fixture: ComponentFixture; - - beforeEach(async(() => { - TestBed.configureTestingModule({ - declarations: [ EndUserTrackerListComponent ] - }) - .compileComponents(); - })); - - beforeEach(() => { - fixture = TestBed.createComponent(EndUserTrackerListComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/client/app/end-user/end-user-tracker-list/end-user-tracker-list.component.ts b/client/app/end-user/end-user-tracker-list/end-user-tracker-list.component.ts deleted file mode 100644 index f65ac14..0000000 --- a/client/app/end-user/end-user-tracker-list/end-user-tracker-list.component.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { Component, OnInit } from '@angular/core'; -import { EndUserApiService } from '../services/end-user-api.service'; - -@Component({ - selector: 'app-end-user-tracker-list', - templateUrl: './end-user-tracker-list.component.html', - styleUrls: ['./end-user-tracker-list.component.scss'] -}) -export class EndUserTrackerListComponent implements OnInit { - - constructor(public api: EndUserApiService) { - } - - ngOnInit() { - this.api.loadTrackers() - } - -} diff --git a/client/app/end-user/end-user-trigger-list/end-user-trigger-list.component.html b/client/app/end-user/end-user-trigger-list/end-user-trigger-list.component.html deleted file mode 100644 index 2ead3ec..0000000 --- a/client/app/end-user/end-user-trigger-list/end-user-trigger-list.component.html +++ /dev/null @@ -1,5 +0,0 @@ -
-
- {{trigger.actionType}} -
-
\ No newline at end of file diff --git a/client/app/end-user/end-user-trigger-list/end-user-trigger-list.component.scss b/client/app/end-user/end-user-trigger-list/end-user-trigger-list.component.scss deleted file mode 100644 index e69de29..0000000 diff --git a/client/app/end-user/end-user-trigger-list/end-user-trigger-list.component.spec.ts b/client/app/end-user/end-user-trigger-list/end-user-trigger-list.component.spec.ts deleted file mode 100644 index 707391b..0000000 --- a/client/app/end-user/end-user-trigger-list/end-user-trigger-list.component.spec.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; - -import { EndUserTriggerListComponent } from './end-user-trigger-list.component'; - -describe('EndUserTriggerListComponent', () => { - let component: EndUserTriggerListComponent; - let fixture: ComponentFixture; - - beforeEach(async(() => { - TestBed.configureTestingModule({ - declarations: [ EndUserTriggerListComponent ] - }) - .compileComponents(); - })); - - beforeEach(() => { - fixture = TestBed.createComponent(EndUserTriggerListComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/client/app/end-user/end-user-trigger-list/end-user-trigger-list.component.ts b/client/app/end-user/end-user-trigger-list/end-user-trigger-list.component.ts deleted file mode 100644 index cdb6960..0000000 --- a/client/app/end-user/end-user-trigger-list/end-user-trigger-list.component.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { Component, OnInit } from '@angular/core'; -import { EndUserApiService } from '../services/end-user-api.service'; - -@Component({ - selector: 'app-end-user-trigger-list', - templateUrl: './end-user-trigger-list.component.html', - styleUrls: ['./end-user-trigger-list.component.scss'] -}) -export class EndUserTriggerListComponent implements OnInit { - - constructor(public api: EndUserApiService) { - - } - - ngOnInit() { - this.api.loadTriggers() - } - -} diff --git a/client/app/end-user/services/end-user-api.service.spec.ts b/client/app/end-user/services/end-user-api.service.spec.ts deleted file mode 100644 index b6e5942..0000000 --- a/client/app/end-user/services/end-user-api.service.spec.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { TestBed, inject } from '@angular/core/testing'; - -import { EndUserApiService } from './end-user-api.service'; - -describe('EndUserApiService', () => { - beforeEach(() => { - TestBed.configureTestingModule({ - providers: [EndUserApiService] - }); - }); - - it('should be created', inject([EndUserApiService], (service: EndUserApiService) => { - expect(service).toBeTruthy(); - })); -}); diff --git a/client/app/end-user/services/end-user-api.service.ts b/client/app/end-user/services/end-user-api.service.ts deleted file mode 100644 index f8f8437..0000000 --- a/client/app/end-user/services/end-user-api.service.ts +++ /dev/null @@ -1,112 +0,0 @@ -import { Injectable, OnDestroy } from "@angular/core"; -import { AngularFireAuth } from "angularfire2/auth"; -import { BehaviorSubject , Subscription , Observable, of } from "rxjs"; -import { combineLatest, filter, flatMap, map } from 'rxjs/operators'; -import { - ITrackerDbEntity, - IItemDbEntity -} from "../../../../omnitrack/core/db-entity-types"; - -import { Http, Headers, RequestOptions } from "@angular/http"; - -@Injectable() -export class EndUserApiService implements OnDestroy { - private readonly _internalSubscriptions = new Subscription(); - - readonly trackers = new BehaviorSubject>([]); - readonly triggers = new BehaviorSubject>([]); - - private readonly itemsPerTrackerDict = new Map< - string, - BehaviorSubject> - >(); - - private tokenHeaders: Headers; - private authorizedOptions = new BehaviorSubject(null); - - private authRequestOptions = this.auth.authState.pipe(combineLatest(this.authorizedOptions.pipe(filter(o => o != null)), (user, options) => { return { user: user, options: options } })) - - constructor(private auth: AngularFireAuth, private http: Http) { - this._internalSubscriptions.add( - auth.idToken.subscribe(token => { - if (token) { - this.tokenHeaders = new Headers({ Authorization: "Bearer " + token }); - this.authorizedOptions.next(new RequestOptions({ - headers: this.tokenHeaders - })) - } else { - this.tokenHeaders = null - this.authorizedOptions = null - } - }) - ); - } - - ngOnDestroy(): void { - this._internalSubscriptions.unsubscribe(); - } - - private loadChildren(path: string, subject: BehaviorSubject) { - this._internalSubscriptions.add( - this.authRequestOptions.pipe( - flatMap(result => { - if (result.user) { - return this.http - .get("/api/" + path, result.options) - .pipe(map(res => res.json().filter(t => t.removed !== true))); - } else { - return of([]); - } - })) - .subscribe(children => { - subject.next(children); - }) - ); - } - - loadTrackers() { - this.loadChildren("trackers", this.trackers); - } - - loadTriggers() { - this.loadChildren("triggers", this.triggers); - } - - loadItemsofTracker(trackerId: string) { - this._internalSubscriptions.add( - this.authRequestOptions - .pipe(flatMap(result => { - if (result.user) { - return this.http - .get("/api/trackers/" + trackerId + "/items", result.options) - .pipe(map(res => res.json().filter(t => t.removed !== true))); - } else { - return of([]); - } - })) - .subscribe(children => { - (this.getItemsOfTracker(trackerId) as BehaviorSubject>).next(children) - }) - ); - } - - getItemsOfTracker(trackerId: string): Observable> { - if (this.itemsPerTrackerDict.has(trackerId)) { - return this.itemsPerTrackerDict.get(trackerId) - } - else { - const newSubject = new BehaviorSubject>([]) - this.itemsPerTrackerDict.set(trackerId, newSubject) - return newSubject - } - } - - getExperimentParticipationList(): Observable> { - return this.authRequestOptions.pipe(flatMap(result => { - if (result.user) { - return this.http.get('/api/research/experiments/history', result.options).pipe(map(list => list.json())) - } - else return of([]) - })) - } -} diff --git a/client/app/end-user/services/end-user-auth-check.guard.spec.ts b/client/app/end-user/services/end-user-auth-check.guard.spec.ts deleted file mode 100644 index 80a2f40..0000000 --- a/client/app/end-user/services/end-user-auth-check.guard.spec.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { TestBed, async, inject } from '@angular/core/testing'; - -import { EndUserAuthCheckGuard } from './end-user-auth-check.guard'; - -describe('EndUserAuthCheckGuard', () => { - beforeEach(() => { - TestBed.configureTestingModule({ - providers: [EndUserAuthCheckGuard] - }); - }); - - it('should ...', inject([EndUserAuthCheckGuard], (guard: EndUserAuthCheckGuard) => { - expect(guard).toBeTruthy(); - })); -}); diff --git a/client/app/end-user/services/end-user-auth-check.guard.ts b/client/app/end-user/services/end-user-auth-check.guard.ts deleted file mode 100644 index 948954a..0000000 --- a/client/app/end-user/services/end-user-auth-check.guard.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { Injectable } from '@angular/core'; -import { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, Router } from '@angular/router'; -import { Observable } from 'rxjs'; -import { map } from 'rxjs/operators'; -import { AngularFireAuth } from 'angularfire2/auth'; - -@Injectable() -export class EndUserAuthCheckGuard implements CanActivate { - - constructor(private router: Router, private auth: AngularFireAuth){ - - } - - canActivate( - next: ActivatedRouteSnapshot, - state: RouterStateSnapshot): Observable | Promise | boolean { - return this.auth.authState.pipe(map(user => { - console.log("Check the end-user auth status:") - if(user==null){ - if(state.url != "/tracking/login") - { - this.router.navigate(["/tracking/login"]) - } - } - return true - })) - } -} diff --git a/client/app/end-user/services/end-user-auth-to-main.guard.spec.ts b/client/app/end-user/services/end-user-auth-to-main.guard.spec.ts deleted file mode 100644 index b428737..0000000 --- a/client/app/end-user/services/end-user-auth-to-main.guard.spec.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { TestBed, async, inject } from '@angular/core/testing'; - -import { EndUserAuthToMainGuard } from './end-user-auth-to-main.guard'; - -describe('EndUserAuthToMainGuard', () => { - beforeEach(() => { - TestBed.configureTestingModule({ - providers: [EndUserAuthToMainGuard] - }); - }); - - it('should ...', inject([EndUserAuthToMainGuard], (guard: EndUserAuthToMainGuard) => { - expect(guard).toBeTruthy(); - })); -}); diff --git a/client/app/end-user/services/end-user-auth-to-main.guard.ts b/client/app/end-user/services/end-user-auth-to-main.guard.ts deleted file mode 100644 index 6ab353b..0000000 --- a/client/app/end-user/services/end-user-auth-to-main.guard.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { Injectable } from '@angular/core'; -import { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, Router } from '@angular/router'; -import { Observable } from 'rxjs'; -import { map } from 'rxjs/operators'; -import { AngularFireAuth } from 'angularfire2/auth'; - -@Injectable() -export class EndUserAuthToMainGuard implements CanActivate { - constructor(private auth: AngularFireAuth, private router: Router){ - - } - - canActivate( - next: ActivatedRouteSnapshot, - state: RouterStateSnapshot): Observable | Promise | boolean { - return this.auth.authState.pipe(map(user=>{ - if(user != null){ - if(state.url != "/tracking"){ - this.router.navigate(["/tracking"]) - } - } - return true - })) - } -} diff --git a/client/app/experiment-messaging/compose-message/compose-message.component.html b/client/app/experiment-messaging/compose-message/compose-message.component.html index 1100d68..e660890 100644 --- a/client/app/experiment-messaging/compose-message/compose-message.component.html +++ b/client/app/experiment-messaging/compose-message/compose-message.component.html @@ -26,7 +26,7 @@
-
Mail content
+ Mail content
diff --git a/client/app/experiment-messaging/compose-message/compose-message.component.ts b/client/app/experiment-messaging/compose-message/compose-message.component.ts index a9ca999..4fe2675 100644 --- a/client/app/experiment-messaging/compose-message/compose-message.component.ts +++ b/client/app/experiment-messaging/compose-message/compose-message.component.ts @@ -10,7 +10,6 @@ import { BehaviorSubject, Subscription } from "rxjs"; import { flatMap } from "rxjs/operators"; import { Router, ActivatedRoute } from "@angular/router"; import * as moment from "moment-timezone"; -import { FroalaEditorModule } from "angular-froala-wysiwyg/editor/editor.module"; import { IParticipantDbEntity } from "../../../../omnitrack/core/db-entity-types"; declare var $: any; @@ -64,6 +63,11 @@ export class ComposeMessageComponent implements OnInit, OnDestroy { deliveryDate: Date = new Date(); deliveryTime = "12:00"; + public editorOptions = { + theme: "vs-dark", + language: 'markdown' + } + /* froalaOptions = { placeHolder: "Insert the email content", multiline: true, @@ -78,7 +82,7 @@ export class ComposeMessageComponent implements OnInit, OnDestroy { enter: $.FroalaEditor.ENTER_BR, height: 300, heightMin: 200 - }; + };*/ constructor( private api: ResearchApiService, diff --git a/client/app/research.module.ts b/client/app/research.module.ts index ababa49..a227553 100644 --- a/client/app/research.module.ts +++ b/client/app/research.module.ts @@ -41,7 +41,6 @@ import { NouisliderModule, NouisliderComponent } from 'ng2-nouislider'; import { NewExperimentDialogComponent } from './experiment-list/new-experiment-dialog/new-experiment-dialog.component'; import { EngagementParticipantGroupDirective } from './research/visualization/engagement/engagement-participant-group.directive'; import { DeleteExperimentConfirmDialogComponent } from './dialogs/delete-experiment-confirm-dialog/delete-experiment-confirm-dialog.component'; -import { FroalaEditorModule, FroalaViewModule } from 'angular-froala-wysiwyg'; import { TableCellValueComponent } from './components/table-cell-value/table-cell-value.component'; import { ServerSettingsComponent } from './server-settings/server-settings.component'; import { UploadClientBinaryDialogComponent } from './server-settings/upload-client-binary-dialog/upload-client-binary-dialog.component'; @@ -91,8 +90,6 @@ import { CheckInstallationGuard } from './services/check-installation.guard'; SharedModule, RoutingModule, NouisliderModule, - FroalaEditorModule.forRoot(), - FroalaViewModule.forRoot(), MonacoEditorModule.forRoot(), ProductivityStatisticsModule, NgxJsonViewerModule diff --git a/client/app/server-status-overview/client-crash-logs/client-crash-logs.component.ts b/client/app/server-status-overview/client-crash-logs/client-crash-logs.component.ts index e0d3891..87a394e 100644 --- a/client/app/server-status-overview/client-crash-logs/client-crash-logs.component.ts +++ b/client/app/server-status-overview/client-crash-logs/client-crash-logs.component.ts @@ -62,7 +62,7 @@ export class ClientCrashLogsComponent implements OnInit, OnDestroy { getErrorVersionCode(log: IUsageLogDbEntity): string { if (log.content) { - return log.content.version_code + return log.content.versionCode } return "" } diff --git a/client/styles.scss b/client/styles.scss index c27cab0..47923c4 100644 --- a/client/styles.scss +++ b/client/styles.scss @@ -1,6 +1,7 @@ /* You can add global styles to this file, and also import other style files */ - @import '~@angular/material/theming'; +@import "~nouislider/distribute/nouislider.min.css"; + // Plus imports for other components in your app. $material-typography: mat-typography-config( $font-family: "Roboto, 'Open Sans', 'Segoe UI', 'Helvetica Neue', Arial, 'Noto Sans KR', 'Malgun Gothic', sans-serif"); // Include the common styles for Angular Material. We include this here so that you only @@ -77,7 +78,6 @@ $visualization_heatmap_color_overflow: #173958; } } -@import "~nouislider/distribute/nouislider.min.css"; nouislider { padding-right: 12px; padding-left: 12px; diff --git a/omnitrack/core/db-entity-types.ts b/omnitrack/core/db-entity-types.ts index c37528e..9e6eebd 100644 --- a/omnitrack/core/db-entity-types.ts +++ b/omnitrack/core/db-entity-types.ts @@ -107,10 +107,20 @@ export interface IItemDbEntity extends IUserChildDbEntity { deviceId: string, dataTable: [{ attrLocalId: string, sVal: string }], removed: boolean, - metadata: any, + metadata?: IItemMetadata, userUpdatedAt: number } +export interface IItemMetadata{ + pingIndex?: number, + pivotDate?: string,//YYYY-MM-DD + conditionType?: string, + reservedAt?: number, + actuallyFiredAt?: number, + screenAcesssedAt?: number, + accessedDirectlyFromReminder?: boolean +} + export interface IUsageLogDbEntity extends IUserChildDbEntity { name?: string, sub?: string, diff --git a/package-lock.json b/package-lock.json index 717439a..0aadff9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -938,7 +938,7 @@ "@types/d3-array": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-1.2.1.tgz", - "integrity": "sha512-YBaAfimGdWE4nDuoGVKsH89/dkz2hWZ0i8qC+xxqmqi+XJ/aXiRF0jPtzXmN7VdkpVjy1xuDmM5/m1FNuB6VWA==", + "integrity": "sha1-5IlgUgjUahydmA0uV3L6nHXZ7GU=", "dev": true }, "@types/d3-axis": { @@ -1122,7 +1122,7 @@ "@types/d3-time-format": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-2.1.0.tgz", - "integrity": "sha512-/myT3I7EwlukNOX2xVdMzb8FRgNzRMpsZddwst9Ld/VFe6LyJyRp0s32l/V9XoUzk+Gqu56F/oGk6507+8BxrA==", + "integrity": "sha1-AR4Pt5N740qaj1gK4eLy8TNqiiI=", "dev": true }, "@types/d3-timer": { @@ -1143,7 +1143,7 @@ "@types/d3-voronoi": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/@types/d3-voronoi/-/d3-voronoi-1.1.7.tgz", - "integrity": "sha512-/dHFLK5jhXTb/W4XEQcFydVk8qlIAo85G3r7+N2fkBFw190l0R1GQ8C1VPeXBb2GfSU5GbT2hjlnE7i7UY5Gvg==", + "integrity": "sha1-wKFFzwQ5WSfgFwb/bE/4Ncl6js4=", "dev": true }, "@types/d3-zoom": { @@ -1242,7 +1242,7 @@ "@types/jasminewd2": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@types/jasminewd2/-/jasminewd2-2.0.3.tgz", - "integrity": "sha512-hYDVmQZT5VA2kigd4H4bv7vl/OhlympwREUemqBdOqtrYTo5Ytm12a5W5/nGgGYdanGVxj0x/VhZ7J3hOg/YKg==", + "integrity": "sha1-DSiGsMva5MDuulXjB5L1hL8ECpU=", "dev": true, "requires": { "@types/jasmine": "*" @@ -1251,7 +1251,8 @@ "@types/jquery": { "version": "2.0.49", "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-2.0.49.tgz", - "integrity": "sha512-/9xLnYmohN/vD2gDnLS4cym8TUmrJu7DvZa/LELKzZjdPsvWVJiedsdu2SXNtb/DA7FGimqL2g0IoyhbNKLl8g==" + "integrity": "sha512-/9xLnYmohN/vD2gDnLS4cym8TUmrJu7DvZa/LELKzZjdPsvWVJiedsdu2SXNtb/DA7FGimqL2g0IoyhbNKLl8g==", + "dev": true }, "@types/json2csv": { "version": "4.2.0", @@ -1270,7 +1271,7 @@ "@types/mime": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-2.0.0.tgz", - "integrity": "sha512-A2TAGbTFdBw9azHbpVd+/FkdW2T6msN1uct1O9bH3vTerEHKZhTXJUQXy+hNq1B0RagfU8U+KBdqiZpxjhOUQA==", + "integrity": "sha1-WnMG42fFObn2VDSZ3o3VGfrDeos=", "dev": true }, "@types/moment-timezone": { @@ -1370,7 +1371,7 @@ "@types/socket.io-client": { "version": "1.4.32", "resolved": "https://registry.npmjs.org/@types/socket.io-client/-/socket.io-client-1.4.32.tgz", - "integrity": "sha512-Vs55Kq8F+OWvy1RLA31rT+cAyemzgm0EWNeax6BWF8H7QiiOYMJIdcwSDdm5LVgfEkoepsWkS+40+WNb7BUMbg==", + "integrity": "sha1-mIploDhsJ0scIqVTd/q2oweJrBQ=", "dev": true }, "@types/tough-cookie": { @@ -1382,7 +1383,7 @@ "@types/uuid": { "version": "3.4.3", "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-3.4.3.tgz", - "integrity": "sha512-5fRLCYhLtDb3hMWqQyH10qtF+Ud2JnNCXTCZ+9ktNdCcgslcuXkDTkFcJNk++MT29yDntDnlF1+jD+uVGumsbw==", + "integrity": "sha1-EhrOJl9Vac5A9PbQ/3ijOMcyp1Q=", "dev": true, "requires": { "@types/node": "*" @@ -1640,7 +1641,7 @@ "abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + "integrity": "sha1-+PLIh60Qv2f2NPAFtph/7TF5qsg=" }, "accepts": { "version": "1.3.5", @@ -1811,15 +1812,6 @@ "semver": "^5.4.1" } }, - "angular-froala-wysiwyg": { - "version": "2.8.4", - "resolved": "https://registry.npmjs.org/angular-froala-wysiwyg/-/angular-froala-wysiwyg-2.8.4.tgz", - "integrity": "sha512-CWn8lEfhCvKC0KluRZ7c897kSL2LcczPRxPQLdLGL/3OZFSpTEF2HFy5tfydI8/HnaLhJ6XLzSUhnB+M/6AAQA==", - "requires": { - "@types/jquery": "^2.0.40", - "froala-editor": "2.8.4" - } - }, "angular-highcharts": { "version": "6.1.4", "resolved": "https://registry.npmjs.org/angular-highcharts/-/angular-highcharts-6.1.4.tgz", @@ -1834,11 +1826,6 @@ "tslib": "^1.9.0" } }, - "angularfire2": { - "version": "5.0.0-rc.11", - "resolved": "https://registry.npmjs.org/angularfire2/-/angularfire2-5.0.0-rc.11.tgz", - "integrity": "sha512-Jr6uEquMRuJSgYTw8YxNkDwpkvg2CDJtLlQD0AdMXYoUAwcgsIE4ar7qatIJ2/fwX12TO+oPooCyr0G4GjdwXQ==" - }, "ansi-align": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", @@ -2052,7 +2039,7 @@ "arr-flatten": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" + "integrity": "sha1-NgSLv/TntH4TZkQxbJlmnqWukfE=" }, "arr-union": { "version": "3.1.0", @@ -2112,7 +2099,7 @@ "arraybuffer.slice": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", - "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==" + "integrity": "sha1-O7xCdd1YTMGxCAm4nU6LY6aednU=" }, "arrify": { "version": "1.0.1", @@ -2214,7 +2201,7 @@ "async-limiter": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", - "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==" + "integrity": "sha1-ePrtjD0HSrgfIrTphdeehzj3IPg=" }, "asynckit": { "version": "0.4.0", @@ -2365,7 +2352,7 @@ "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", "dev": true, "requires": { "ms": "2.0.0" @@ -2388,7 +2375,7 @@ "babylon": { "version": "6.18.0", "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "integrity": "sha1-ry87iPpvXB5MY00aD46sT1WzleM=", "dev": true }, "backo2": { @@ -2650,7 +2637,7 @@ "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", "requires": { "ms": "2.0.0" } @@ -3921,7 +3908,7 @@ "content-type": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + "integrity": "sha1-4TjMdeBAxyexlm/l5fjJruJW/js=" }, "convert-source-map": { "version": "1.5.1", @@ -4545,7 +4532,7 @@ "debug": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "integrity": "sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE=", "requires": { "ms": "2.0.0" } @@ -4680,7 +4667,7 @@ "deep-eql": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", - "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "integrity": "sha1-38lARACtHI/gI+faHfHBR8S0RN8=", "dev": true, "requires": { "type-detect": "^4.0.0" @@ -5288,7 +5275,7 @@ "engine.io-parser": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.2.tgz", - "integrity": "sha512-dInLFzr80RijZ1rGpx1+56/uFoH7/7InhH3kZt+Ms6hT8tNx3NGW/WNSA/f8As1WkOfkuyb3tnRyuXGxusclMw==", + "integrity": "sha1-TA9M/3mq7su9z96maoI8YIVAkZY=", "requires": { "after": "0.8.2", "arraybuffer.slice": "~0.0.7", @@ -5794,7 +5781,7 @@ "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", "requires": { "ms": "2.0.0" } @@ -6162,7 +6149,7 @@ "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", "requires": { "ms": "2.0.0" } @@ -6297,11 +6284,6 @@ "debug": "^3.1.0" } }, - "font-awesome": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/font-awesome/-/font-awesome-4.7.0.tgz", - "integrity": "sha1-j6jPBBGhoxr9B7BtKQK7n8gVoTM=" - }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", @@ -6363,15 +6345,6 @@ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" }, - "froala-editor": { - "version": "2.8.4", - "resolved": "https://registry.npmjs.org/froala-editor/-/froala-editor-2.8.4.tgz", - "integrity": "sha512-DObeh8j8mmRDprgCOnUvtYqJ0IVsKUFxvzCFX1hoEVMt3l659QaKLcQDYoaiPtecIIjGHWvARYh1YpR4FpAAjw==", - "requires": { - "font-awesome": ">=4.4.0", - "jquery": ">=1.11.0" - } - }, "from": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", @@ -7123,7 +7096,7 @@ "glob": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=", "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -7205,7 +7178,7 @@ "globals": { "version": "9.18.0", "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "integrity": "sha1-qjiWs+abSH8X4x7SFD1pqOMMLYo=", "dev": true }, "globby": { @@ -8561,7 +8534,7 @@ "ini": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" + "integrity": "sha1-7uJfVtscnsYIXgwid4CD9Zar+Sc=" }, "internal-ip": { "version": "1.2.0", @@ -8644,7 +8617,7 @@ "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=" }, "is-builtin-module": { "version": "1.0.0", @@ -8865,7 +8838,7 @@ "is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "integrity": "sha1-LBY7P6+xtgbZ0Xko8FwqHDjgdnc=", "requires": { "isobject": "^3.0.1" } @@ -9272,7 +9245,7 @@ "jasmine-spec-reporter": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/jasmine-spec-reporter/-/jasmine-spec-reporter-4.2.1.tgz", - "integrity": "sha512-FZBoZu7VE5nR7Nilzy+Np8KuVIOxF4oXDPDknehCYBDE080EnlPu0afdZNmpGDBRCUBv3mj5qgqCRmk6W/K8vg==", + "integrity": "sha1-HWMq7ANBZwrTJPkrqEtLMrNeniI=", "dev": true, "requires": { "colors": "1.1.2" @@ -9574,7 +9547,7 @@ "karma-chrome-launcher": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-2.2.0.tgz", - "integrity": "sha512-uf/ZVpAabDBPvdPdveyk1EPgbnloPvFFGgmRhYLTDH7gEB4nZdSBk8yTU47w1g/drLSx5uMOkjKk7IWKfWg/+w==", + "integrity": "sha1-zxudBxNswY/iOTJ9JGVMPbw2is8=", "dev": true, "requires": { "fs-access": "^1.0.0", @@ -10241,7 +10214,7 @@ "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", "requires": { "brace-expansion": "^1.1.7" } @@ -10440,7 +10413,7 @@ "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", "requires": { "ms": "2.0.0" } @@ -10613,7 +10586,7 @@ "no-case": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", - "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "integrity": "sha1-YLgTOWvjmz8SiKTB7V0efSi0ZKw=", "requires": { "lower-case": "^1.1.1" } @@ -10867,7 +10840,7 @@ "normalize-package-data": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "integrity": "sha1-EvlaMH1YNSB1oEkHuErIvpisAS8=", "dev": true, "requires": { "hosted-git-info": "^2.1.4", @@ -11295,7 +11268,7 @@ "pako": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", - "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==" + "integrity": "sha1-AQEhG6pwxLykoPY/Igbpe3368lg=" }, "parallel-transform": { "version": "1.1.0", @@ -11504,7 +11477,7 @@ "path-type": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "integrity": "sha1-zvMdyOCho7sNEFwM2Xzzv0f0428=", "requires": { "pify": "^3.0.0" } @@ -12603,7 +12576,7 @@ "require_optional": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/require_optional/-/require_optional-1.0.1.tgz", - "integrity": "sha512-qhM/y57enGWHAe3v/NcwML6a3/vfESLe/sGM2dII+gEO0BpKRUkWZow/tyloNqJyN6kXSl3RyyM8Ll5D/sJP8g==", + "integrity": "sha1-TPNaQkf2TKPfjC7yCMxJSxyo/C4=", "requires": { "resolve-from": "^2.0.0", "semver": "^5.1.0" @@ -12689,7 +12662,7 @@ "rimraf": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "integrity": "sha1-LtgVDSShbqhlHm1u8PR8QVjOejY=", "requires": { "glob": "^7.0.5" } @@ -13025,7 +12998,7 @@ "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", "requires": { "ms": "2.0.0" } @@ -13033,7 +13006,7 @@ "mime": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", - "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==" + "integrity": "sha1-Eh+evEnjdm8xGnbh+hyAA8SwOqY=" }, "statuses": { "version": "1.4.0", @@ -13260,7 +13233,7 @@ "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", "requires": { "ms": "2.0.0" } @@ -14854,7 +14827,7 @@ "ultron": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", - "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==" + "integrity": "sha1-n+FTahCmZKZSZqHjzPhf02MCvJw=" }, "unbzip2-stream": { "version": "1.2.5", @@ -15822,7 +15795,7 @@ "ws": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", - "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", + "integrity": "sha1-8c+E/i1ekB686U767OeF8YeiKPI=", "requires": { "async-limiter": "~1.0.0", "safe-buffer": "~5.1.0", @@ -15858,7 +15831,7 @@ "xml2js": { "version": "0.4.19", "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", - "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", + "integrity": "sha1-aGwg8hMgnpSr8NG88e+qKRx4J6c=", "requires": { "sax": ">=0.6.0", "xmlbuilder": "~9.0.1" diff --git a/package.json b/package.json index ffea838..6b217b0 100644 --- a/package.json +++ b/package.json @@ -43,10 +43,8 @@ "agenda": "^2.0.0", "ajv": "^6.5.3", "android-versions": "^1.3.0", - "angular-froala-wysiwyg": "^2.8.4", "angular-highcharts": "6.1.4", "angular-oauth2-oidc": "^4.0.2", - "angularfire2": "^5.0.0-rc.11", "app-metadata": "^0.1.26", "bcryptjs": "^2.4.3", "bigdecimal": "^0.6.1", @@ -70,7 +68,6 @@ "filesize": "^3.6.1", "firebase": "^5.3.1", "firebase-admin": "^6.0.0", - "font-awesome": "^4.7.0", "fs-extra": "^7.0.0", "group-array": "^0.3.3", "hammerjs": "^2.0.8",