Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

🤖 📈 Visualise All Students Progression And also Group By Class #440

Merged
merged 27 commits into from
May 4, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
ad4601d
:sparkles: feat: add not-in to query filter package
LemmyMwaura Apr 19, 2023
fe3a011
:truck: refactor: refactor how we fetch the group based progress-client
LemmyMwaura Apr 24, 2023
eb0054f
:sparkles: feat: export cursor and abstract class data service
LemmyMwaura Apr 24, 2023
0f1cb3f
:recycle: refactor: update interfaces
LemmyMwaura Apr 24, 2023
4f41301
:sparkles: feat: add monitoring and evaluation data service
LemmyMwaura Apr 24, 2023
9afc15f
:truck: refactor: update participant progress tracking handler
LemmyMwaura Apr 24, 2023
ba2910b
:truck: refactor: update group progress tracking handler
LemmyMwaura Apr 24, 2023
ae80213
:recycle: refactor: update participant and group tracking interfaces
LemmyMwaura Apr 24, 2023
bf847b9
:recycle: refactor: update enduser and story interfaces
LemmyMwaura Apr 24, 2023
411942f
:sparkles: feat: add progress state monitoring module
LemmyMwaura Apr 24, 2023
a8cfe64
:sparkles: feat: add progress monitoring state-layer(store)
LemmyMwaura Apr 24, 2023
83489e2
:recycle: refactor: update group progress types
LemmyMwaura Apr 25, 2023
28c4c02
:sparkles: feat: update group tracking milestone
LemmyMwaura Apr 25, 2023
e60f732
:sparkles: feat: get documents by a specific moment in time
LemmyMwaura Apr 26, 2023
b996e8c
:sparkles: feat: get user cursor at a specific moment in time when in…
LemmyMwaura Apr 26, 2023
6619ed8
:recycle: refactor: refactor group progress handler
LemmyMwaura Apr 26, 2023
fab6c9e
:recycle: refactor: refactor and add interfaces to some files
LemmyMwaura Apr 26, 2023
7650b14
:recycle: refactor: export channel data service - to pick org Id
LemmyMwaura Apr 26, 2023
b7e8d27
:sparkles: feat: visualise user milestones and grouped milestones
LemmyMwaura Apr 26, 2023
924b5d2
:sparkles: feat: order milestones by time
LemmyMwaura Apr 26, 2023
db01550
:lipstick: style: add toggle btns and styles to the chart area
LemmyMwaura Apr 26, 2023
bc8c136
:truck: refactor: remove not-in from query predicate - not necessary
LemmyMwaura Apr 27, 2023
ac8f62e
:bulb: feat: update JSDoc comments
LemmyMwaura Apr 27, 2023
5d75be8
Merge branch 'develop' of https://github.com/italanta/elewa into feat…
LemmyMwaura Apr 27, 2023
2d2e9b5
:adhesive_bandage: fix: satisfy eslint typesafety, no-explicit-any
LemmyMwaura Apr 30, 2023
e0adf49
:zap: perf: set normalized to true, since data is already sorted and …
LemmyMwaura May 2, 2023
0792219
Merge branch 'develop' into feature/mne-review-status
LemmyMwaura May 3, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 26 additions & 0 deletions angular.json
Original file line number Diff line number Diff line change
Expand Up @@ -914,6 +914,32 @@
"state-convs-mgr-conversations-analytics-traffic-by-day": "libs/state/convs-mgr/conversations/analytics/traffic-by-day",
"state-convs-mgr-conversations-chats": "libs/state/convs-mgr/conversations/chats",
"state-convs-mgr-conversations-messages": "libs/state/convs-mgr/conversations/messages",
"state-convs-mgr-monitoring": {
"projectType": "library",
"root": "libs/state/convs-mgr/monitoring",
"sourceRoot": "libs/state/convs-mgr/monitoring/src",
"prefix": "app",
"targets": {
"test": {
"executor": "@nrwl/jest:jest",
"outputs": ["coverage/libs/state/convs-mgr/monitoring"],
"options": {
"jestConfig": "libs/state/convs-mgr/monitoring/jest.config.ts",
"passWithNoTests": true
}
},
"lint": {
"executor": "@nrwl/linter:eslint",
"options": {
"lintFilePatterns": [
"libs/state/convs-mgr/monitoring/**/*.ts",
"libs/state/convs-mgr/monitoring/**/*.html"
]
}
}
},
"tags": []
},
"state-convs-mgr-stories": "libs/state/convs-mgr/stories/main",
"state-convs-mgr-stories-block-connections": "libs/state/convs-mgr/stories/block-connections",
"state-convs-mgr-stories-blocks": "libs/state/convs-mgr/stories/blocks",
Expand Down
186 changes: 94 additions & 92 deletions apps/conv-learning-manager/src/app/app.module.ts
Original file line number Diff line number Diff line change
@@ -1,92 +1,94 @@
import { NgModule } from '@angular/core';

import { AngularFireModule } from '@angular/fire/compat';
import { AngularFireAnalyticsModule } from '@angular/fire/compat/analytics';
import { AngularFireAuthModule } from '@angular/fire/compat/auth';
import { AngularFirestoreModule } from '@angular/fire/compat/firestore';
import { AngularFireFunctionsModule } from '@angular/fire/compat/functions';
import { ServiceWorkerModule } from '@angular/service-worker';
import { HttpClientModule } from '@angular/common/http';

import { MatProgressBarModule } from '@angular/material/progress-bar';
import { BrowserModule } from '@angular/platform-browser';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';

import { MaterialBricksRootModule } from '@iote/bricks-angular';
import { NgFireModule } from '@ngfi/angular';
import { MultiLangModule } from '@ngfi/multi-lang';

import { GooglePlaceModule } from 'ngx-google-places-autocomplete';

import { AuthorisationModule } from '@app/elements/base/authorisation';
import { AppConfigurationModule } from '@app/elements/base/configuration';
import { DateConfigurationModule } from '@app/elements/base/date-time';
import { FirebaseConfigurationModule } from '@app/elements/base/firebase';


import { UserStateModule } from '@app/state/user';
import { OrgStateModule } from '@app/state/organisation';
import { StoriesStateModule } from '@app/state/convs-mgr/stories';
import { StoryBlocksStateModule } from '@app/state/convs-mgr/stories/blocks';
import { StoryBlockConnectionsStateModule } from '@app/state/convs-mgr/stories/block-connections';
import { VariablesConfigStateModule } from '@app/state/convs-mgr/stories/variables-config';

import { EnvironmentConfigModule } from '@app/admin/config/environment-config'

import { AppComponent } from './app.component';
import { AppRoutingModule } from './app.routing.module';

import { environment } from '../environments/environment';


@NgModule({
declarations: [AppComponent],
imports: [
BrowserModule, BrowserAnimationsModule,
GooglePlaceModule,

AngularFireModule.initializeApp(environment.firebase),
AngularFireAuthModule, AngularFirestoreModule, AngularFireFunctionsModule, NgFireModule,
AngularFireAnalyticsModule,
HttpClientModule,


MaterialBricksRootModule.forRoot(),

UserStateModule.forRoot(),
AuthorisationModule.forRoot(environment, environment.production),
EnvironmentConfigModule.forRoot(environment),

AppConfigurationModule.forRoot(environment, environment.production),
DateConfigurationModule.forRoot(),
FirebaseConfigurationModule.forRoot(!environment.production, environment.useEmulators),
MultiLangModule.forRoot(true),
// UserNavModule,

MatProgressBarModule,

// AppConfigModule.forRoot(),

// DataModule.forRoot(),
OrgStateModule.forRoot(),
StoriesStateModule.forRoot(),
StoryBlocksStateModule.forRoot(),
StoryBlockConnectionsStateModule.forRoot(),
VariablesConfigStateModule.forRoot(),
// FlowsStateModule.forRoot(),
// ChatsStateModule.forRoot(),
// MessagingStateModule.forRoot(),
// CommChannelsStateModule.forRoot(),

AppRoutingModule,
ServiceWorkerModule.register('ngsw-worker.js', {
enabled: environment.production,
// Register the ServiceWorker as soon as the application is stable
// or after 30 seconds (whichever comes first).
registrationStrategy: 'registerWhenStable:30000'
})
],
providers: [],
bootstrap: [AppComponent],
})
export class AppModule {}
import { NgModule } from '@angular/core';

import { AngularFireModule } from '@angular/fire/compat';
import { AngularFireAnalyticsModule } from '@angular/fire/compat/analytics';
import { AngularFireAuthModule } from '@angular/fire/compat/auth';
import { AngularFirestoreModule } from '@angular/fire/compat/firestore';
import { AngularFireFunctionsModule } from '@angular/fire/compat/functions';
import { ServiceWorkerModule } from '@angular/service-worker';
import { HttpClientModule } from '@angular/common/http';

import { MatProgressBarModule } from '@angular/material/progress-bar';
import { BrowserModule } from '@angular/platform-browser';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';

import { MaterialBricksRootModule } from '@iote/bricks-angular';
import { NgFireModule } from '@ngfi/angular';
import { MultiLangModule } from '@ngfi/multi-lang';

import { GooglePlaceModule } from 'ngx-google-places-autocomplete';

import { AuthorisationModule } from '@app/elements/base/authorisation';
import { AppConfigurationModule } from '@app/elements/base/configuration';
import { DateConfigurationModule } from '@app/elements/base/date-time';
import { FirebaseConfigurationModule } from '@app/elements/base/firebase';


import { UserStateModule } from '@app/state/user';
import { OrgStateModule } from '@app/state/organisation';
import { StoriesStateModule } from '@app/state/convs-mgr/stories';
import { StoryBlocksStateModule } from '@app/state/convs-mgr/stories/blocks';
import { StoryBlockConnectionsStateModule } from '@app/state/convs-mgr/stories/block-connections';
import { VariablesConfigStateModule } from '@app/state/convs-mgr/stories/variables-config';
import { ProgressMonitoringStateModule } from '@app/state/convs-mgr/monitoring';

import { EnvironmentConfigModule } from '@app/admin/config/environment-config'

import { AppComponent } from './app.component';
import { AppRoutingModule } from './app.routing.module';

import { environment } from '../environments/environment';


@NgModule({
declarations: [AppComponent],
imports: [
BrowserModule, BrowserAnimationsModule,
GooglePlaceModule,

AngularFireModule.initializeApp(environment.firebase),
AngularFireAuthModule, AngularFirestoreModule, AngularFireFunctionsModule, NgFireModule,
AngularFireAnalyticsModule,
HttpClientModule,


MaterialBricksRootModule.forRoot(),

UserStateModule.forRoot(),
AuthorisationModule.forRoot(environment, environment.production),
EnvironmentConfigModule.forRoot(environment),

AppConfigurationModule.forRoot(environment, environment.production),
DateConfigurationModule.forRoot(),
FirebaseConfigurationModule.forRoot(!environment.production, environment.useEmulators),
MultiLangModule.forRoot(true),
// UserNavModule,

MatProgressBarModule,

// AppConfigModule.forRoot(),

// DataModule.forRoot(),
OrgStateModule.forRoot(),
StoriesStateModule.forRoot(),
StoryBlocksStateModule.forRoot(),
StoryBlockConnectionsStateModule.forRoot(),
VariablesConfigStateModule.forRoot(),
ProgressMonitoringStateModule.forRoot(),
// FlowsStateModule.forRoot(),
// ChatsStateModule.forRoot(),
// MessagingStateModule.forRoot(),
// CommChannelsStateModule.forRoot(),

AppRoutingModule,
ServiceWorkerModule.register('ngsw-worker.js', {
enabled: environment.production,
// Register the ServiceWorker as soon as the application is stable
// or after 30 seconds (whichever comes first).
registrationStrategy: 'registerWhenStable:30000'
})
],
providers: [],
bootstrap: [AppComponent],
})
export class AppModule {}
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
<div class="menu">
<div class="menu__wrapper">
<div *ngFor="let group of groups" class="group">
<button class="group__btn" (click)="selectActiveGroup(group)">{{ group }}</button>
</div>
</div>
</div>

<div class="chart">
<canvas id="chart-ctx" >{{ chart }}</canvas>
</div>
<canvas id="chart-ctx">{{ chart }}</canvas>
</div>
Original file line number Diff line number Diff line change
@@ -1,4 +1,30 @@
#chart-ctx {
width: 100%;
height: 500px;
}
}

.menu {
.menu__wrapper {
display: flex;
gap: 0.5rem;

.group {
padding: 0.3rem;

&__btn {
border: none;
padding: 0.5rem;
border-radius: 5px;
cursor: pointer;

&:active {
transform: scale(0.95);
}
}
}
}

span {
color: white;
}
}
Loading