Skip to content
Snippets Groups Projects
Commit b64c91c0 authored by paf's avatar paf
Browse files

Merge remote-tracking branch 'testcenter-admin/master'

# Conflicts: (some are resolved directly, most are split into TC and ADMIN version)
#	.gitignore
#	README.md
#	angular.json
#	e2e/src/app.e2e-spec.ts
#	package-lock.json
#	package.json
#	src/app/about/about.component.html
#	src/app/about/about.component.ts
#	src/app/app-routing.module.ts
#	src/app/app.component.scss
#	src/app/app.component.spec.ts
#	src/app/app.component.ts
#	src/app/app.interceptor.ts
#	src/app/app.interfaces.ts
#	src/app/app.module.ts
#	src/app/backend.service.ts
#	src/app/maindata.service.spec.ts
#	src/app/maindata.service.ts
#	src/app/start/start.component.css
#	src/app/start/start.component.html
#	src/app/start/start.component.spec.ts
#	src/app/start/start.component.ts
#	src/app/superadmin/superadmin-routing.module.ts
#	src/app/superadmin/superadmin.component.css
#	src/app/superadmin/superadmin.component.html
#	src/app/superadmin/superadmin.component.ts
#	src/app/superadmin/superadmin.module.ts
#	src/environments/environment.build.ts
#	src/environments/environment.prod.ts
#	src/environments/environment.ts
#	src/index.html
#	src/polyfills.ts
#	src/styles.css
#	src/tsconfig.app.json
#	src/tsconfig.spec.json
#	src/tslint.json
#	tsconfig.json
#	tslint.json
parents 8cd1409a 3efeaeea
No related branches found
No related tags found
No related merge requests found
Showing
with 1089 additions and 897 deletions
......@@ -17,6 +17,7 @@
.settings/
*.sublime-workspace
# IDE - VSCode
.vscode/*
!.vscode/settings.json
......@@ -41,3 +42,4 @@ Thumbs.db
src/environments/environment.ts
.gitignore
# IQB Testcenter
Diese Angular-Programmierung ist die clientseitige Web-Anwendung für das Online-Testen des IQB. Über diesen Weg wird die Programmierung allen Interessierten zur Verfügung gestellt. Eine Anleitung zum Installieren und Konfigurieren wird schrittweise an dieser Stelle folgen.
# Testing
The following technology is / will be used in the development of this project:
![Browserstack logo](https://ocba2.iqb.hu-berlin.de/browserstack/logo-smaller.png)
# This file is used by the build system to adjust CSS and JS output to support the specified browsers below.
# For additional information regarding the format and rule options, please see:
# https://github.com/browserslist/browserslist#queries
# You can see what browsers were selected by your queries by running:
# npx browserslist
> 0.5%
last 2 versions
Firefox ESR
not dead
not IE 9-11 # For IE 9-11 support, remove 'not'.
\ No newline at end of file
import { AppPage } from './app.po';
describe('workspace-project App', () => {
let page: AppPage;
beforeEach(() => {
page = new AppPage();
});
it('should display welcome message', () => {
page.navigateTo();
expect(page.getParagraphText()).toEqual('Welcome to itc-ng-admin!');
});
});
File moved
This diff is collapsed.
{
"name": "itc-ng",
"version": "1.5.3",
"version": "2.0.0-alpha",
"scripts": {
"ng": "ng",
"start": "ng serve",
......@@ -11,50 +11,46 @@
},
"private": true,
"dependencies": {
"@angular/animations": "^8.0.0",
"@angular/cdk": "~8.0.0",
"@angular/common": "^8.0.0",
"@angular/compiler": "^8.0.0",
"@angular/core": "^8.0.0",
"@angular/animations": "~8.2.14",
"@angular/cdk": "~8.2.3",
"@angular/common": "~8.2.14",
"@angular/compiler": "~8.2.14",
"@angular/core": "~8.2.14",
"@angular/flex-layout": "~8.0.0-beta.27",
"@angular/forms": "^8.0.0",
"@angular/material": "~8.0.0",
"@angular/platform-browser": "^8.0.0",
"@angular/platform-browser-dynamic": "^8.0.0",
"@angular/router": "^8.0.0",
"browserslist": "^4.8.6",
"caniuse-lite": "^1.0.30001027",
"chromedriver": "^79.0.3",
"classlist.js": "^1.1.20150312",
"core-js": "~2.6.11",
"iqb-components": "^1.6.4",
"material-design-icons": "~3.0.1",
"rxjs": "~6.4.0",
"tslib": "~1.9.0",
"ua-parser-js": "^0.7.21",
"web-animations-js": "^2.3.2",
"@angular/forms": "~8.2.14",
"@angular/material": "~8.2.3",
"@angular/platform-browser": "~8.2.14",
"@angular/platform-browser-dynamic": "~8.2.14",
"@angular/router": "~8.2.14",
"@types/file-saver": "^2.0.1",
"iqb-components": "1.6.x",
"core-js": "^3.6.4",
"file-saver": "^2.0.2",
"hammerjs": "^2.0.8",
"rxjs": "^6.5.4",
"tslib": "^1.10.0",
"zone.js": "~0.9.1"
},
"devDependencies": {
"@angular-devkit/build-angular": "^0.803.25",
"@angular/cli": "^8.3.25",
"@angular/compiler-cli": "^8.0.0",
"@angular/language-service": "^8.0.0",
"@types/jasmine": "~2.8.8",
"@angular-devkit/build-angular": "~0.803.23",
"@angular/cli": "~8.3.23",
"@angular/compiler-cli": "~8.2.14",
"@angular/language-service": "~8.2.14",
"@types/jasmine": "^3.5.1",
"@types/jasminewd2": "~2.0.8",
"@types/node": "~8.9.4",
"codelyzer": "~5.2.1",
"jasmine-core": "~3.3",
"@types/node": "^13.5.0",
"codelyzer": "^5.0.1",
"jasmine-core": "~3.5.0",
"jasmine-spec-reporter": "~4.2.1",
"karma": "^4.4.1",
"karma-chrome-launcher": "~2.2.0",
"karma": "~4.4.1",
"karma-chrome-launcher": "~3.1.0",
"karma-coverage-istanbul-reporter": "^2.1.1",
"karma-jasmine": "~2.0.1",
"karma-jasmine-html-reporter": "~1.4.2",
"protractor": "^5.4.3",
"ts-node": "~7.0.0 ",
"tslint": "~5.11.0",
"typescript": "~3.4.0-rc"
"karma-jasmine": "~3.1.0",
"karma-jasmine-html-reporter": "~1.5.1",
"protractor": "^5.4.2",
"ts-node": "~8.6.2",
"tslint": "~5.20.1",
"typescript": "~3.5.0"
},
"resolutions": {
"tree-kill": "1.2.2"
......
.mat-card {
margin: 10px;
}
.status {
background-color: lightgrey;
}
<div class="logo">
<a [routerLink]="['/']">
<img src="assets/IQB-LogoA.png" matTooltip="Startseite"/>
</a>
</div>
<div class="page-body">
<div fxLayout="row wrap" fxLayoutAlign="center stretch" style="padding: 30px;">
<mat-card fxFlex="0 2 500px">
<mat-card-title>IQB-Testcenter Verwaltung - Impressum/Datenschutz</mat-card-title>
<!-- - - - - - - - - - - - - - - - - -->
<mat-card-content>
<p>Das <a href="http://www.iqb.hu-berlin.de" target="_blank">Institut zur Qualitätsentwicklung im Bildungswesen</a>
betreibt auf diesen Seiten eine Pilotanwendung für das computerbasierte Leistungstesten von
Schülerinnen und Schülern. Dies ist die Web-Anwendung zur Verwaltung der Testinhalte und -ergebnisse.
Der Zugang ist nur möglich, wenn Sie vom IQB
Zugangsdaten erhalten haben. Es sind keine weiteren Seiten öffentlich verfügbar.</p>
<ul>
<li>Programmname: {{ appName }}</li>
<li>Programmversion: {{ appVersion }}</li>
<li>Copyright: {{ appPublisher }}</li>
</ul>
<p>
<em>Postanschrift:</em><br/>
Humboldt-Universität zu Berlin<br/>
Institut zur Qualitätsentwicklung im Bildungswesen<br/>
Unter den Linden 6<br/>
10099 Berlin</p>
<p>
<em>Sitz:</em><br/>
Luisenstr. 56<br/>
10117 Berlin<br/>
Tel: +49 [30] 2093 - 46500 (Zentrale)<br/>
Fax: +49 [30] 2093 - 46599<br/>
E-Mail: <a href="mailto:iqboffice@iqb.hu-berlin.de">iqboffice@iqb.hu-berlin.de</a>
</p>
<p>
<em>Name und Anschrift der Datenschutzbeauftragten</em><br/>
Frau Gesine Hoffmann-Holland<br/>
Tel: +49 (30) 2093-2591<br/>
E-Mail: datenschutz@uv.hu-berlin.de<br/>
<a href="http://www.hu-berlin.de/de/datenschutz" target="_blank">www.hu-berlin.de/de/datenschutz</a>
</p>
</mat-card-content>
</mat-card>
</div>
</div>
import { Component, Inject } from '@angular/core';
@Component({
templateUrl: './about.component.html',
styleUrls: ['./about.component.css']
})
export class AboutComponent {
constructor(
@Inject('APP_NAME') public appName: string,
@Inject('APP_PUBLISHER') public appPublisher: string,
@Inject('APP_VERSION') public appVersion: string
) { }
}
import { AboutComponent } from './about/about.component';
import { StartComponent } from './start/start.component';
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { WorkspaceComponent } from './workspace';
const routes: Routes = [
{path: '', redirectTo: 'start', pathMatch: 'full'},
{path: 'start', component: StartComponent},
{path: 'about', component: AboutComponent},
// {path: 'ws', loadChildren: './workspace/workspace.module#WorkspaceModule'},
{path: 'ws', component: WorkspaceComponent},
{path: 'superadmin', loadChildren: './superadmin/superadmin.module#SuperadminModule'}
];
@NgModule({
imports: [RouterModule.forRoot(routes, {onSameUrlNavigation: 'reload'})],
exports: [RouterModule]
})
export class AppRoutingModule { }
File moved
@import '~@angular/material/theming';
@import '../iqb-theme2.scss';
.itp-fill-remaining-space {
flex: 1 1 auto;
}
.mat-toolbar {
overflow: auto;
position: absolute;
width: 100%;
height: 70px;
font-family: inherit;
/* background-color: #003333; */
background: linear-gradient(to left, #003333, #045659, #0d7b84, #1aa2b2, #2acae5);
color: white;
}
mat-toolbar > span {
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
}
.logo {
width: 80px;
margin-right: 20px;
margin-top: 12px;
}
.material-icons {
font-size: 2.0rem;
}
.mat-button {
text-align: right;
}
File moved
import { TestBed, async } from '@angular/core/testing';
import { RouterTestingModule } from '@angular/router/testing';
import { AppComponent } from './app.component';
describe('AppComponent', () => {
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [
RouterTestingModule
],
declarations: [
AppComponent
],
}).compileComponents();
}));
it('should create the app', async(() => {
const fixture = TestBed.createComponent(AppComponent);
const app = fixture.debugElement.componentInstance;
expect(app).toBeTruthy();
}));
it(`should have as title 'app'`, async(() => {
const fixture = TestBed.createComponent(AppComponent);
const app = fixture.debugElement.componentInstance;
expect(app.title).toEqual('app');
}));
it('should render title in a h1 tag', async(() => {
const fixture = TestBed.createComponent(AppComponent);
fixture.detectChanges();
const compiled = fixture.debugElement.nativeElement;
expect(compiled.querySelector('h1').textContent).toContain('Welcome to itc-ng-admin!');
}));
});
File moved
import { LoginData } from './app.interfaces';
import { BackendService } from './backend.service';
import { ServerError } from 'iqb-components';
import { Component, OnInit } from '@angular/core';
import { MainDataService } from './maindata.service';
@Component({
selector: 'app-root',
template: `<router-outlet></router-outlet>`,
styleUrls: ['./app.component.scss']
})
export class AppComponent implements OnInit {
constructor (
private mds: MainDataService,
private bs: BackendService) { }
ngOnInit() {
const adminToken = localStorage.getItem('at');
if (adminToken !== null) {
if (adminToken.length > 0) {
this.bs.getLoginData(adminToken).subscribe(
(admindata: LoginData) => {
this.mds.setNewLoginData(admindata);
}, (err: ServerError) => {
this.mds.setNewLoginData();
console.log(err);
this.mds.globalErrorMsg$.next(err);
}
);
} else {
this.mds.setNewLoginData();
}
} else {
this.mds.setNewLoginData();
}
}
}
File moved
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment