Merge pull request #5537 from tsiegleauq/angular-10

Angular 10
This commit is contained in:
Emanuel Schütze 2020-09-23 11:18:25 +02:00 committed by GitHub
commit e1d4a4152a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
105 changed files with 18919 additions and 313 deletions

View File

@ -23,73 +23,77 @@ Language files can be found in `/src/assets/i18n`.
OpenSlides uses the following software or parts of them:
- [@angular/animations@9.1.0](https://github.com/angular/angular), License: MIT
- [@angular/cdk-experimental@9.2.0](https://github.com/angular/components), License: MIT
- [@angular/cdk@9.2.0](https://github.com/angular/components), License: MIT
- [@angular/common@9.1.0](https://github.com/angular/angular), License: MIT
- [@angular/compiler@9.1.0](https://github.com/angular/angular), License: MIT
- [@angular/core@9.1.0](https://github.com/angular/angular), License: MIT
- [@angular/forms@9.1.0](https://github.com/angular/angular), License: MIT
- [@angular/material-moment-adapter@9.2.0](https://github.com/angular/components), License: MIT
- [@angular/material@9.2.0](https://github.com/angular/components), License: MIT
- [@angular/platform-browser-dynamic@9.1.0](https://github.com/angular/angular), License: MIT
- [@angular/platform-browser@9.1.0](https://github.com/angular/angular), License: MIT
- [@angular/router@9.1.0](https://github.com/angular/angular), License: MIT
- [@angular/service-worker@9.1.0](https://github.com/angular/angular), License: MIT
- [@ngx-pwa/local-storage@9.0.3](https://github.com/cyrilletuzi/angular-async-local-storage), License: MIT
- [@ngx-translate/core@12.1.2](https://github.com/ngx-translate/core), License: MIT
- [@ngx-translate/http-loader@4.0.0](https://github.com/ngx-translate/http-loader), License: MIT
- [@pebula/ngrid-material@2.0.0-rc.1](undefined), License: MIT
- [@pebula/ngrid@2.0.0-rc.1](https://github.com/shlomiassaf/ngrid), License: MIT
- [@pebula/utils@1.0.2](undefined), License: MIT
- [@tinymce/tinymce-angular@3.5.0](https://github.com/tinymce/tinymce-angular), License: Apache-2.0
- [acorn@7.1.1](https://github.com/acornjs/acorn), License: MIT
- [chart.js@2.9.3](https://github.com/chartjs/Chart.js), License: MIT
- [core-js@3.6.4](https://github.com/zloirock/core-js), License: MIT
- [css-element-queries@1.2.3](https://github.com/marcj/css-element-queries), License: MIT
- [exceljs@3.8.2](https://github.com/exceljs/exceljs), License: MIT
- [file-saver@2.0.2](https://github.com/eligrey/FileSaver.js), License: MIT
- [lz4js@0.2.0](https://github.com/Benzinga/lz4js), License: ISC
- [material-icon-font@0.1.0](https://github.com//petergng/svgFontCreator), License: ISC
- [moment@2.24.0](https://github.com/moment/moment), License: MIT
- [ng2-charts@2.3.0](https://github.com/valor-software/ng2-charts), License: ISC
- [ng2-pdf-viewer@6.1.2](git+https://vadimdez@github.com/VadimDez/ng2-pdf-viewer), License: MIT
- [ngx-file-drop@8.0.8](https://github.com/georgipeltekov/ngx-file-drop), License: MIT
- [ngx-mat-select-search@2.1.2](https://github.com/bithost-gmbh/ngx-mat-select-search), License: MIT
- [ngx-material-timepicker@5.5.1](https://github.com/Agranom/ngx-material-timepicker), License: MIT
- [ngx-papaparse@4.0.4](https://github.com/alberthaff/ngx-papaparse), License: MIT
- [pdfmake@0.1.65](https://github.com/bpampuch/pdfmake), License: MIT
- [po2json@1.0.0-beta-2](https://github.com/mikeedwards/po2json), License: LGPL-2.0-or-later
- [rxjs@6.5.4](https://github.com/reactivex/rxjs), License: Apache-2.0
- [tinymce@5.2.1](https://github.com/tinymce/tinymce-dist), License: LGPL-2.1
- [tslib@1.11.1](https://github.com/Microsoft/tslib), License: Apache-2.0
- [zone.js@0.10.3](https://github.com/angular/angular), License: MIT
- [@angular-devkit/build-angular@0.901.0](https://github.com/angular/angular-cli), License: MIT
- [@angular-devkit/schematics@9.1.0](https://github.com/angular/angular-cli), License: MIT
- [@angular/cli@9.1.0](https://github.com/angular/angular-cli), License: MIT
- [@angular/compiler-cli@9.1.0](https://github.com/angular/angular), License: MIT
- [@angular/language-service@9.1.0](https://github.com/angular/angular), License: MIT
- [@biesbjerg/ngx-translate-extract@6.0.3](https://github.com/biesbjerg/ngx-translate-extract), License: MIT
- [@compodoc/compodoc@1.1.11](https://github.com/compodoc/compodoc), License: MIT
- [@schematics/angular@9.1.0](https://github.com/angular/angular-cli), License: MIT
- [@types/jasmine@3.5.10](https://github.com/DefinitelyTyped/DefinitelyTyped), License: MIT
- [@types/jasminewd2@2.0.8](https://github.com/DefinitelyTyped/DefinitelyTyped), License: MIT
- [@types/node@13.9.8](https://github.com/DefinitelyTyped/DefinitelyTyped), License: MIT
- [@types/yargs@15.0.4](https://github.com/DefinitelyTyped/DefinitelyTyped), License: MIT
- [codelyzer@5.2.2](https://github.com/mgechev/codelyzer), License: MIT
- [husky@4.2.3](https://github.com/typicode/husky), License: MIT
- [jasmine-core@3.5.0](https://github.com/jasmine/jasmine), License: MIT
- [jasmine-spec-reporter@5.0.1](https://github.com/bcaudan/jasmine-spec-reporter), License: Apache-2.0
- [karma-chrome-launcher@3.1.0](https://github.com/karma-runner/karma-chrome-launcher), License: MIT
- [karma-coverage-istanbul-reporter@2.1.1](https://github.com/mattlewis92/karma-coverage-istanbul-reporter), License: MIT
- [karma-jasmine-html-reporter@1.5.3](https://github.com/dfederm/karma-jasmine-html-reporter), License: MIT
- [karma-jasmine@3.1.1](https://github.com/karma-runner/karma-jasmine), License: MIT
- [karma@4.4.1](https://github.com/karma-runner/karma), License: MIT
- [npm-license-crawler@0.2.1](https://github.com/mwittig/npm-license-crawler), License: BSD-3-Clause
- [prettier@2.0.2](https://github.com/prettier/prettier), License: MIT
- [protractor@5.4.3](https://github.com/angular/protractor), License: MIT
- [resize-observer-polyfill@1.5.1](https://github.com/que-etc/resize-observer-polyfill), License: MIT
- [ts-node@8.8.1](https://github.com/TypeStrong/ts-node), License: MIT
- [tslint@6.1.0](https://github.com/palantir/tslint), License: Apache-2.0
- [tsutils@3.17.1](https://github.com/ajafff/tsutils), License: MIT
- [typescript@3.8.3](https://github.com/Microsoft/TypeScript), License: Apache-2.0
- [@angular/animations@10.0.14](https://github.com/angular/angular), License: MIT
- [@angular/cdk-experimental@10.0.2](https://github.com/angular/components), License: MIT
- [@angular/cdk@10.0.2](https://github.com/angular/components), License: MIT
- [@angular/common@10.0.14](https://github.com/angular/angular), License: MIT
- [@angular/compiler@10.0.14](https://github.com/angular/angular), License: MIT
- [@angular/core@10.0.14](https://github.com/angular/angular), License: MIT
- [@angular/forms@10.0.14](https://github.com/angular/angular), License: MIT
- [@angular/material-moment-adapter@10.1.3](https://github.com/angular/components), License: MIT
- [@angular/material@10.0.2](https://github.com/angular/components), License: MIT
- [@angular/platform-browser-dynamic@10.0.14](https://github.com/angular/angular), License: MIT
- [@angular/platform-browser@10.0.14](https://github.com/angular/angular), License: MIT
- [@angular/router@10.0.14](https://github.com/angular/angular), License: MIT
- [@angular/service-worker@10.0.14](https://github.com/angular/angular), License: MIT
- [@ngx-pwa/local-storage@10.0.1](https://github.com/cyrilletuzi/angular-async-local-storage), License: MIT
- [@ngx-translate/core@13.0.0](https://github.com/ngx-translate/core), License: MIT
- [@ngx-translate/http-loader@6.0.0](https://github.com/ngx-translate/http-loader), License: MIT
- [@pebula/ngrid-material@2.0.0](undefined), License: MIT
- [@pebula/ngrid@2.0.0](https://github.com/shlomiassaf/ngrid), License: MIT
- [@pebula/utils@1.0.2](undefined), License: MIT
- [@tinymce/tinymce-angular@4.1.0](https://github.com/tinymce/tinymce-angular), License: Apache-2.0
- [@videojs/http-streaming@1.13.3](https://github.com/videojs/http-streaming), License: Apache-2.0
- [acorn@8.0.1](https://github.com/acornjs/acorn), License: MIT
- [chart.js@2.9.3](https://github.com/chartjs/Chart.js), License: MIT
- [core-js@3.6.5](https://github.com/zloirock/core-js), License: MIT
- [css-element-queries@1.2.3](https://github.com/marcj/css-element-queries), License: MIT
- [exceljs@4.1.1](https://github.com/exceljs/exceljs), License: MIT
- [file-saver@2.0.2](https://github.com/eligrey/FileSaver.js), License: MIT
- [jszip@3.5.0](https://github.com/Stuk/jszip), License: (MIT OR GPL-3.0)
- [lz4js@0.2.0](https://github.com/Benzinga/lz4js), License: ISC
- [material-icon-font@0.1.0](https://github.com//petergng/svgFontCreator), License: ISC
- [moment@2.27.0](https://github.com/moment/moment), License: MIT
- [ng2-charts@2.4.0](https://github.com/valor-software/ng2-charts), License: ISC
- [ng2-pdf-viewer@6.3.2](git+https://vadimdez@github.com/VadimDez/ng2-pdf-viewer), License: MIT
- [ngx-device-detector@2.0.0](undefined), License: MIT*
- [ngx-file-drop@9.0.1](https://github.com/georgipeltekov/ngx-file-drop), License: MIT
- [ngx-mat-select-search@3.0.3](https://github.com/bithost-gmbh/ngx-mat-select-search), License: MIT
- [ngx-material-timepicker@5.5.3](https://github.com/Agranom/ngx-material-timepicker), License: MIT
- [ngx-papaparse@4.0.4](https://github.com/alberthaff/ngx-papaparse), License: MIT
- [pdfmake@0.1.68](https://github.com/bpampuch/pdfmake), License: MIT
- [po2json@1.0.0-beta-2](https://github.com/mikeedwards/po2json), License: LGPL-2.0-or-later
- [rxjs@6.6.2](https://github.com/reactivex/rxjs), License: Apache-2.0
- [tinymce@5.4.2](https://github.com/tinymce/tinymce-dist), License: LGPL-2.1
- [tslib@1.13.0](https://github.com/Microsoft/tslib), License: 0BSD
- [video.js@7.8.4](https://github.com/videojs/video.js), License: Apache-2.0
- [zone.js@0.10.3](https://github.com/angular/angular), License: MIT
- [@angular-devkit/build-angular@0.1000.8](https://github.com/angular/angular-cli), License: MIT
- [@angular-devkit/schematics@10.0.8](https://github.com/angular/angular-cli), License: MIT
- [@angular/cli@10.0.8](https://github.com/angular/angular-cli), License: MIT
- [@angular/compiler-cli@10.0.14](https://github.com/angular/angular), License: MIT
- [@angular/language-service@10.0.14](https://github.com/angular/angular), License: MIT
- [@biesbjerg/ngx-translate-extract-marker@1.0.0](https://github.com/biesbjerg/ngx-translate-extract-marker), License: MIT
- [@biesbjerg/ngx-translate-extract@7.0.2](https://github.com/biesbjerg/ngx-translate-extract), License: MIT
- [@compodoc/compodoc@1.1.11](https://github.com/compodoc/compodoc), License: MIT
- [@schematics/angular@10.0.8](https://github.com/angular/angular-cli), License: MIT
- [@types/jasmine@3.5.14](https://github.com/DefinitelyTyped/DefinitelyTyped), License: MIT
- [@types/jasminewd2@2.0.8](https://github.com/DefinitelyTyped/DefinitelyTyped), License: MIT
- [@types/yargs@15.0.5](https://github.com/DefinitelyTyped/DefinitelyTyped), License: MIT
- [codelyzer@6.0.0](https://github.com/mgechev/codelyzer), License: MIT
- [husky@4.2.5](https://github.com/typicode/husky), License: MIT
- [jasmine-core@3.6.0](https://github.com/jasmine/jasmine), License: MIT
- [jasmine-spec-reporter@5.0.2](https://github.com/bcaudan/jasmine-spec-reporter), License: Apache-2.0
- [karma-chrome-launcher@3.1.0](https://github.com/karma-runner/karma-chrome-launcher), License: MIT
- [karma-coverage-istanbul-reporter@3.0.3](https://github.com/mattlewis92/karma-coverage-istanbul-reporter), License: MIT
- [karma-jasmine-html-reporter@1.5.4](https://github.com/dfederm/karma-jasmine-html-reporter), License: MIT
- [karma-jasmine@4.0.1](https://github.com/karma-runner/karma-jasmine), License: MIT
- [karma@5.1.1](https://github.com/karma-runner/karma), License: MIT
- [npm-license-crawler@0.2.1](https://github.com/mwittig/npm-license-crawler), License: BSD-3-Clause
- [prettier@2.1.1](https://github.com/prettier/prettier), License: MIT
- [protractor@7.0.0](https://github.com/angular/protractor), License: MIT
- [resize-observer-polyfill@1.5.1](https://github.com/que-etc/resize-observer-polyfill), License: MIT
- [ts-node@9.0.0](https://github.com/TypeStrong/ts-node), License: MIT
- [tslint@6.1.3](https://github.com/palantir/tslint), License: Apache-2.0
- [tsutils@3.17.1](https://github.com/ajafff/tsutils), License: MIT
- [typescript@3.9.7](https://github.com/Microsoft/TypeScript), License: Apache-2.0

View File

@ -17,7 +17,7 @@
"build": {
"builder": "@angular-devkit/build-angular:browser",
"options": {
"outputPath": "static",
"outputPath": "../server/openslides/static",
"index": "src/index.html",
"main": "src/main.ts",
"polyfills": "src/polyfills.ts",
@ -30,6 +30,11 @@
"glob": "**/*",
"input": "node_modules/tinymce",
"output": "/tinymce/"
},
{
"glob": "pdf.worker.min.js",
"input": "node_modules/pdfjs-dist/build/",
"output": "/assets/js/"
}
],
"styles": ["src/styles.scss"],

View File

@ -6,12 +6,12 @@ RUN useradd -m openslides
RUN chown -R openslides /build/app
USER root
RUN npm install -g @angular/cli@^9
RUN npm install -g @angular/cli@^10
RUN ng config -g cli.warnings.versionMismatch false
USER openslides
COPY package.json .
RUN npm install
RUN npm ci
COPY browserslist *.json ./
COPY src ./src
RUN npm run build

18525
client/package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -13,7 +13,7 @@
"start": "ng serve --proxy-config proxy.conf.json --host=0.0.0.0",
"start-es5": "ng serve --proxy-config proxy.conf.json --host=0.0.0.0 --configuration es5",
"build": "ng build --prod",
"postinstall": "ngcc --properties es2015 browser module main --first-only --create-ivy-entry-points",
"postinstall": "ngcc",
"build-debug": "ng build",
"test": "ng test",
"test-silently": "npm run test -- --watch=false --no-progress --browsers=ChromeHeadlessNoSandbox",
@ -32,82 +32,82 @@
"cleanup-win": "npm run prettify-write & npm run lint-write"
},
"dependencies": {
"@angular/animations": "~9.1.0",
"@angular/cdk": "~9.2.0",
"@angular/cdk-experimental": "~9.2.0",
"@angular/common": "~9.1.0",
"@angular/compiler": "~9.1.0",
"@angular/core": "~9.1.0",
"@angular/forms": "~9.1.0",
"@angular/material": "~9.2.0",
"@angular/material-moment-adapter": "~9.2.0",
"@angular/platform-browser": "~9.1.0",
"@angular/platform-browser-dynamic": "~9.1.0",
"@angular/router": "~9.1.0",
"@angular/service-worker": "~9.1.0",
"@ngx-pwa/local-storage": "~9.0.2",
"@ngx-translate/core": "~12.1.2",
"@ngx-translate/http-loader": "^4.0.0",
"@pebula/ngrid": "2.0.0-rc.1",
"@pebula/ngrid-material": "2.0.0-rc.1",
"@angular/animations": "~10.0.14",
"@angular/cdk": "~10.0.0",
"@angular/cdk-experimental": "~10.0.0",
"@angular/common": "~10.0.14",
"@angular/compiler": "~10.0.14",
"@angular/core": "~10.0.14",
"@angular/forms": "~10.0.14",
"@angular/material": "~10.0.0",
"@angular/material-moment-adapter": "~10.1.3",
"@angular/platform-browser": "~10.0.14",
"@angular/platform-browser-dynamic": "~10.0.14",
"@angular/router": "~10.0.14",
"@angular/service-worker": "~10.0.14",
"@ngx-pwa/local-storage": "~10.0.1",
"@ngx-translate/core": "~13.0.0",
"@ngx-translate/http-loader": "^6.0.0",
"@pebula/ngrid": "2.0.0",
"@pebula/ngrid-material": "2.0.0",
"@pebula/utils": "1.0.2",
"@tinymce/tinymce-angular": "^4.1.0",
"@videojs/http-streaming": "^1.13.3",
"acorn": "^7.1.0",
"chart.js": "^2.9.2",
"core-js": "^3.6.4",
"acorn": "^8.0.1",
"chart.js": "^2.9.3",
"core-js": "^3.6.5",
"css-element-queries": "^1.2.3",
"exceljs": "1.15.0",
"exceljs": "4.1.1",
"file-saver": "^2.0.2",
"jszip": "^3.5.0",
"lz4js": "^0.2.0",
"material-icon-font": "git+https://github.com/petergng/materialIconFont.git",
"moment": "^2.24.0",
"ng2-charts": "^2.3.0",
"ng2-pdf-viewer": "^6.1.2",
"ngx-device-detector": "^1.4.4",
"moment": "^2.27.0",
"ng2-charts": "^2.4.0",
"ng2-pdf-viewer": "6.3.2",
"ngx-device-detector": "^2.0.0",
"ngx-file-drop": "^9.0.1",
"ngx-mat-select-search": "^2.1.2",
"ngx-material-timepicker": "^5.5.1",
"ngx-papaparse": "^4.0.2",
"pdfmake": "^0.1.63",
"ngx-mat-select-search": "^3.0.3",
"ngx-material-timepicker": "^5.5.3",
"ngx-papaparse": "^4.0.4",
"pdfmake": "^0.1.68",
"po2json": "^1.0.0-beta-2",
"rxjs": "^6.5.4",
"tinymce": "5.4.1",
"rxjs": "^6.6.2",
"tinymce": "5.4.2",
"tslib": "^1.10.0",
"video.js": "^7.7.6",
"video.js": "^7.8.4",
"zone.js": "~0.10.2"
},
"devDependencies": {
"@angular-devkit/build-angular": "~0.901.9",
"@angular-devkit/schematics": "^9.0.6",
"@angular/cli": "~9.1.0",
"@angular/compiler-cli": "~9.1.0",
"@angular/language-service": "~9.1.0",
"@biesbjerg/ngx-translate-extract": "^6.0.3",
"@angular-devkit/build-angular": "~0.1000.8",
"@angular-devkit/schematics": "^10.0.8",
"@angular/cli": "~10.0.8",
"@angular/compiler-cli": "~10.0.14",
"@angular/language-service": "~10.0.14",
"@biesbjerg/ngx-translate-extract": "^7.0.2",
"@biesbjerg/ngx-translate-extract-marker": "^1.0.0",
"@compodoc/compodoc": "^1.1.8",
"@schematics/angular": "^9.0.6",
"@types/jasmine": "^3.3.9",
"@schematics/angular": "^10.0.8",
"@types/jasmine": "^3.5.14",
"@types/jasminewd2": "^2.0.6",
"@types/node": "^13.9.8",
"@types/node": "^14.6.2",
"@types/yargs": "^15.0.4",
"codelyzer": "^5.1.2",
"codelyzer": "^6.0.0",
"husky": "^4.2.3",
"jasmine-core": "~3.5.0",
"jasmine-core": "~3.6.0",
"jasmine-spec-reporter": "~5.0.1",
"karma": "^4.4.1",
"karma": "^5.1.1",
"karma-chrome-launcher": "~3.1.0",
"karma-coverage-istanbul-reporter": "^2.0.5",
"karma-jasmine": "~3.1.1",
"karma-coverage-istanbul-reporter": "^3.0.3",
"karma-jasmine": "~4.0.1",
"karma-jasmine-html-reporter": "^1.4.0",
"npm-license-crawler": "^0.2.1",
"prettier": "~2.0.5",
"protractor": "^5.4.3",
"prettier": "^2.1.1",
"protractor": "^7.0.0",
"resize-observer-polyfill": "^1.5.1",
"ts-node": "~8.8.1",
"tslint": "~6.1.0",
"ts-node": "~9.0.0",
"tslint": "~6.1.3",
"tsutils": "3.17.1",
"typescript": "~3.8.3"
"typescript": "~3.9.7"
}
}

View File

@ -31,10 +31,11 @@ export function isBaseIsAgendaItemAndListOfSpeakersContentObjectRepository(
* multi-inheritance by implementing both inherit classes again...
*/
export abstract class BaseIsAgendaItemAndListOfSpeakersContentObjectRepository<
V extends BaseProjectableViewModel & BaseViewModelWithAgendaItem & BaseViewModelWithListOfSpeakers & T,
M extends BaseModel,
T extends TitleInformationWithAgendaItem
> extends BaseRepository<V, M, T>
V extends BaseProjectableViewModel & BaseViewModelWithAgendaItem & BaseViewModelWithListOfSpeakers & T,
M extends BaseModel,
T extends TitleInformationWithAgendaItem
>
extends BaseRepository<V, M, T>
implements
IBaseIsAgendaItemContentObjectRepository<V, M, T>,
IBaseIsListOfSpeakersContentObjectRepository<V, M, T> {

View File

@ -38,10 +38,12 @@ export interface IBaseIsAgendaItemContentObjectRepository<
* The base repository for objects with an agenda item.
*/
export abstract class BaseIsAgendaItemContentObjectRepository<
V extends BaseViewModelWithAgendaItem & T,
M extends BaseModel,
T extends TitleInformationWithAgendaItem
> extends BaseRepository<V, M, T> implements IBaseIsAgendaItemContentObjectRepository<V, M, T> {
V extends BaseViewModelWithAgendaItem & T,
M extends BaseModel,
T extends TitleInformationWithAgendaItem
>
extends BaseRepository<V, M, T>
implements IBaseIsAgendaItemContentObjectRepository<V, M, T> {
public constructor(
DS: DataStoreService,
dataSend: DataSendService,

View File

@ -35,10 +35,12 @@ export interface IBaseIsListOfSpeakersContentObjectRepository<
* The base repository for objects with a list of speakers.
*/
export abstract class BaseIsListOfSpeakersContentObjectRepository<
V extends BaseViewModelWithListOfSpeakers & T,
M extends BaseModel,
T extends TitleInformation
> extends BaseRepository<V, M, T> implements IBaseIsListOfSpeakersContentObjectRepository<V, M, T> {
V extends BaseViewModelWithListOfSpeakers & T,
M extends BaseModel,
T extends TitleInformation
>
extends BaseRepository<V, M, T>
implements IBaseIsListOfSpeakersContentObjectRepository<V, M, T> {
public constructor(
DS: DataStoreService,
dataSend: DataSendService,

View File

@ -18,7 +18,7 @@ import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';
import { MediafileRepositoryService } from 'app/core/repositories/mediafiles/mediafile-repository.service';
import { BaseFormControlComponent } from 'app/shared/models/base/base-form-control';
import { BaseFormControlComponentDirective } from 'app/shared/models/base/base-form-control';
import { mediumDialogSettings } from 'app/shared/utils/dialog-settings';
import { ViewMediafile } from 'app/site/mediafiles/models/view-mediafile';
@ -29,7 +29,7 @@ import { ViewMediafile } from 'app/site/mediafiles/models/view-mediafile';
providers: [{ provide: MatFormFieldControl, useExisting: AttachmentControlComponent }],
changeDetection: ChangeDetectionStrategy.OnPush
})
export class AttachmentControlComponent extends BaseFormControlComponent<ViewMediafile[]> implements OnInit {
export class AttachmentControlComponent extends BaseFormControlComponentDirective<ViewMediafile[]> implements OnInit {
/**
* Output for an error handler
*/

View File

@ -6,7 +6,7 @@ import { TranslateService } from '@ngx-translate/core';
import { ChartOptions } from 'chart.js';
import { Label } from 'ng2-charts';
import { BaseViewComponent } from 'app/site/base/base-view';
import { BaseViewComponentDirective } from 'app/site/base/base-view';
/**
* The different supported chart-types.
@ -41,7 +41,7 @@ export type ChartData = ChartDate[];
styleUrls: ['./charts.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush
})
export class ChartsComponent extends BaseViewComponent {
export class ChartsComponent extends BaseViewComponentDirective {
/**
* The type of the chart.
*/

View File

@ -5,7 +5,7 @@ import { Title } from '@angular/platform-browser';
import { TranslateService } from '@ngx-translate/core';
import { BaseViewComponent } from 'app/site/base/base-view';
import { BaseViewComponentDirective } from 'app/site/base/base-view';
@Component({
selector: 'os-check-input',
@ -13,7 +13,7 @@ import { BaseViewComponent } from 'app/site/base/base-view';
styleUrls: ['./check-input.component.scss'],
providers: [{ provide: NG_VALUE_ACCESSOR, multi: true, useExisting: forwardRef(() => CheckInputComponent) }]
})
export class CheckInputComponent extends BaseViewComponent implements OnInit, ControlValueAccessor {
export class CheckInputComponent extends BaseViewComponentDirective implements OnInit, ControlValueAccessor {
/**
* Type of the used input.
*/

View File

@ -12,7 +12,7 @@ import { OperatorService } from 'app/core/core-services/operator.service';
import { Deferred } from 'app/core/promises/deferred';
import { UserRepositoryService } from 'app/core/repositories/users/user-repository.service';
import { ConfigService } from 'app/core/ui-services/config.service';
import { BaseViewComponent } from 'app/site/base/base-view';
import { BaseViewComponentDirective } from 'app/site/base/base-view';
import { CurrentListOfSpeakersService } from 'app/site/projector/services/current-list-of-speakers.service';
declare var JitsiMeetExternalAPI: any;
@ -75,7 +75,7 @@ enum ConferenceState {
],
encapsulation: ViewEncapsulation.None
})
export class JitsiComponent extends BaseViewComponent implements OnInit, OnDestroy {
export class JitsiComponent extends BaseViewComponentDirective implements OnInit, OnDestroy {
public enableJitsi: boolean;
private autoconnect: boolean;

View File

@ -8,7 +8,7 @@ import { environment } from 'environments/environment';
import { HttpService } from 'app/core/core-services/http.service';
import { LoginDataService } from 'app/core/ui-services/login-data.service';
import { BaseViewComponent } from 'app/site/base/base-view';
import { BaseViewComponentDirective } from 'app/site/base/base-view';
/**
* Characterize a plugin. This data is retrieved from the server
@ -69,7 +69,7 @@ interface VersionResponse {
templateUrl: './legal-notice-content.component.html',
styleUrls: ['./legal-notice-content.component.scss']
})
export class LegalNoticeContentComponent extends BaseViewComponent implements OnInit {
export class LegalNoticeContentComponent extends BaseViewComponentDirective implements OnInit {
/**
* Decides, whether the component can be edited at all.
* Defaults to `false`.

View File

@ -24,7 +24,7 @@ import { PromptService } from 'app/core/ui-services/prompt.service';
import { ViewportService } from 'app/core/ui-services/viewport.service';
import { ViewListOfSpeakers } from 'app/site/agenda/models/view-list-of-speakers';
import { SpeakerState, ViewSpeaker } from 'app/site/agenda/models/view-speaker';
import { BaseViewComponent } from 'app/site/base/base-view';
import { BaseViewComponentDirective } from 'app/site/base/base-view';
import { ViewUser } from 'app/site/users/models/view-user';
import { Selectable } from '../selectable';
import { SortingListComponent } from '../sorting-list/sorting-list.component';
@ -35,7 +35,7 @@ import { SortingListComponent } from '../sorting-list/sorting-list.component';
styleUrls: ['./list-of-speakers-content.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush
})
export class ListOfSpeakersContentComponent extends BaseViewComponent implements OnInit {
export class ListOfSpeakersContentComponent extends BaseViewComponentDirective implements OnInit {
@ViewChild(SortingListComponent)
public listElement: SortingListComponent;

View File

@ -6,7 +6,7 @@ import { Title } from '@angular/platform-browser';
import { TranslateService } from '@ngx-translate/core';
import { LoginDataService } from 'app/core/ui-services/login-data.service';
import { BaseViewComponent } from 'app/site/base/base-view';
import { BaseViewComponentDirective } from 'app/site/base/base-view';
/**
* Shared component to hold the content of the Privacy Policy.
@ -17,7 +17,7 @@ import { BaseViewComponent } from 'app/site/base/base-view';
templateUrl: './privacy-policy-content.component.html',
styleUrls: ['./privacy-policy-content.component.scss']
})
export class PrivacyPolicyContentComponent extends BaseViewComponent implements OnInit {
export class PrivacyPolicyContentComponent extends BaseViewComponentDirective implements OnInit {
/**
* Decides, whether the component can be edited at all.
* Defaults to `false`.

View File

@ -18,7 +18,7 @@ import { TranslateService } from '@ngx-translate/core';
import { Observable } from 'rxjs';
import { auditTime } from 'rxjs/operators';
import { BaseFormControlComponent } from 'app/shared/models/base/base-form-control';
import { BaseFormControlComponentDirective } from 'app/shared/models/base/base-form-control';
import { ParentErrorStateMatcher } from 'app/shared/parent-error-state-matcher';
import { Selectable } from '../selectable';
@ -51,7 +51,7 @@ import { Selectable } from '../selectable';
encapsulation: ViewEncapsulation.None,
changeDetection: ChangeDetectionStrategy.OnPush
})
export class SearchValueSelectorComponent extends BaseFormControlComponent<Selectable[]> {
export class SearchValueSelectorComponent extends BaseFormControlComponentDirective<Selectable[]> {
@ViewChild('chipPlaceholder', { static: false })
public chipPlaceholder: ElementRef<HTMLElement>;

View File

@ -11,7 +11,7 @@ import { ConfigService } from 'app/core/ui-services/config.service';
import { LoginDataService } from 'app/core/ui-services/login-data.service';
import { OverlayService } from 'app/core/ui-services/overlay.service';
import { DEFAULT_AUTH_TYPE } from 'app/shared/models/users/user';
import { BaseViewComponent } from 'app/site/base/base-view';
import { BaseViewComponentDirective } from 'app/site/base/base-view';
import { ViewUser } from 'app/site/users/models/view-user';
@Component({
@ -19,7 +19,7 @@ import { ViewUser } from 'app/site/users/models/view-user';
templateUrl: './user-menu.component.html',
styleUrls: ['./user-menu.component.scss']
})
export class UserMenuComponent extends BaseViewComponent implements OnInit {
export class UserMenuComponent extends BaseViewComponentDirective implements OnInit {
public isLoggedIn: boolean;
public user: ViewUser;

View File

@ -1,6 +1,6 @@
import { FocusMonitor } from '@angular/cdk/a11y';
import { coerceBooleanProperty } from '@angular/cdk/coercion';
import { ElementRef, HostBinding, Input, OnDestroy, Optional, Self } from '@angular/core';
import { Directive, ElementRef, HostBinding, Input, OnDestroy, Optional, Self } from '@angular/core';
import { ControlValueAccessor, FormBuilder, FormControl, FormGroup, NgControl } from '@angular/forms';
import { MatFormFieldControl } from '@angular/material/form-field';
@ -21,11 +21,13 @@ import { Subject, Subscription } from 'rxjs';
* })
* ```
*/
export abstract class BaseFormControlComponent<T> extends MatFormFieldControl<T>
@Directive()
export abstract class BaseFormControlComponentDirective<T>
extends MatFormFieldControl<T>
implements OnDestroy, ControlValueAccessor {
public static nextId = 0;
@HostBinding() public id = `base-form-control-${BaseFormControlComponent.nextId++}`;
@HostBinding() public id = `base-form-control-${BaseFormControlComponentDirective.nextId++}`;
@HostBinding('class.floating') public get shouldLabelFloat(): boolean {
return this.focused || !this.empty;

View File

@ -9,7 +9,8 @@ export function isBaseModelWithAgendaItemAndListOfSpeakers(obj: any): obj is Bas
/**
* A base model with an agenda item and a list of speakers.
*/
export abstract class BaseModelWithAgendaItemAndListOfSpeakers<T = object> extends BaseModel<T>
export abstract class BaseModelWithAgendaItemAndListOfSpeakers<T = object>
extends BaseModel<T>
implements BaseModelWithAgendaItem<T>, BaseModelWithListOfSpeakers<T> {
public agenda_item_id: number;
public list_of_speakers_id: number;

View File

@ -10,7 +10,7 @@ import { ListOfSpeakersRepositoryService } from 'app/core/repositories/agenda/li
import { PromptService } from 'app/core/ui-services/prompt.service';
import { ViewportService } from 'app/core/ui-services/viewport.service';
import { ListOfSpeakersContentComponent } from 'app/shared/components/list-of-speakers-content/list-of-speakers-content.component';
import { BaseViewComponent } from 'app/site/base/base-view';
import { BaseViewComponentDirective } from 'app/site/base/base-view';
import { ProjectorElementBuildDeskriptor } from 'app/site/base/projectable';
import { ViewProjector } from 'app/site/projector/models/view-projector';
import { CurrentListOfSpeakersSlideService } from 'app/site/projector/services/current-list-of-speakers-slide.service';
@ -25,9 +25,10 @@ import { ViewListOfSpeakers } from '../../models/view-list-of-speakers';
templateUrl: './list-of-speakers.component.html',
styleUrls: ['./list-of-speakers.component.scss']
})
export class ListOfSpeakersComponent extends BaseViewComponent implements OnInit {
export class ListOfSpeakersComponent extends BaseViewComponentDirective implements OnInit {
@ViewChild('content')
private listOfSpeakersContentComponent: ListOfSpeakersContentComponent;
/**
* Determine if the user is viewing the current list if speakers
*/

View File

@ -10,7 +10,8 @@ export interface ItemTitleInformation {
title_information: object;
}
export class ViewItem extends BaseViewModelWithContentObject<Item, BaseViewModelWithAgendaItem>
export class ViewItem
extends BaseViewModelWithContentObject<Item, BaseViewModelWithAgendaItem>
implements ItemTitleInformation {
public static COLLECTIONSTRING = Item.COLLECTIONSTRING;
protected _collectionString = Item.COLLECTIONSTRING;

View File

@ -15,7 +15,8 @@ export interface ListOfSpeakersTitleInformation {
/**
* TODO: Resolve potential circular dependencies with {@link BaseViewModelWithListOfSpeakers}.
*/
export class ViewListOfSpeakers extends BaseViewModelWithContentObject<ListOfSpeakers, BaseViewModelWithListOfSpeakers>
export class ViewListOfSpeakers
extends BaseViewModelWithContentObject<ListOfSpeakers, BaseViewModelWithListOfSpeakers>
implements ListOfSpeakersTitleInformation, Projectable {
public static COLLECTIONSTRING = ListOfSpeakers.COLLECTIONSTRING;
protected _collectionString = ListOfSpeakers.COLLECTIONSTRING;

View File

@ -16,7 +16,7 @@ import { UserRepositoryService } from 'app/core/repositories/users/user-reposito
import { PromptService } from 'app/core/ui-services/prompt.service';
import { Assignment } from 'app/shared/models/assignments/assignment';
import { ViewItem } from 'app/site/agenda/models/view-item';
import { BaseViewComponent } from 'app/site/base/base-view';
import { BaseViewComponentDirective } from 'app/site/base/base-view';
import { ViewMediafile } from 'app/site/mediafiles/models/view-mediafile';
import { LocalPermissionsService } from 'app/site/motions/services/local-permissions.service';
import { ViewTag } from 'app/site/tags/models/view-tag';
@ -36,7 +36,7 @@ import { ViewAssignmentRelatedUser } from '../../models/view-assignment-related-
templateUrl: './assignment-detail.component.html',
styleUrls: ['./assignment-detail.component.scss']
})
export class AssignmentDetailComponent extends BaseViewComponent implements OnInit {
export class AssignmentDetailComponent extends BaseViewComponentDirective implements OnInit {
/**
* Determines if the assignment is new
*/

View File

@ -32,7 +32,8 @@ export const AssignmentPollPercentBaseVerbose = {
disabled: _('Disabled (no percents)')
};
export class ViewAssignmentPoll extends ViewBasePoll<AssignmentPoll, AssignmentPollMethod, AssignmentPollPercentBase>
export class ViewAssignmentPoll
extends ViewBasePoll<AssignmentPoll, AssignmentPollMethod, AssignmentPollPercentBase>
implements AssignmentPollTitleInformation {
public static COLLECTIONSTRING = AssignmentPoll.COLLECTIONSTRING;
protected _collectionString = AssignmentPoll.COLLECTIONSTRING;

View File

@ -37,7 +37,8 @@ export const AssignmentPhases: { name: string; value: number; display_name: stri
}
];
export class ViewAssignment extends BaseViewModelWithAgendaItemAndListOfSpeakers<Assignment>
export class ViewAssignment
extends BaseViewModelWithAgendaItemAndListOfSpeakers<Assignment>
implements AssignmentTitleInformation {
public static COLLECTIONSTRING = Assignment.COLLECTIONSTRING;
protected _collectionString = Assignment.COLLECTIONSTRING;

View File

@ -14,7 +14,7 @@ import { ConfigService } from 'app/core/ui-services/config.service';
import { PromptService } from 'app/core/ui-services/prompt.service';
import { VoteValue } from 'app/shared/models/poll/base-vote';
import { ViewAssignmentPoll } from 'app/site/assignments/models/view-assignment-poll';
import { BasePollDetailComponent } from 'app/site/polls/components/base-poll-detail.component';
import { BasePollDetailComponentDirective } from 'app/site/polls/components/base-poll-detail.component';
import { AssignmentPollDialogService } from '../../services/assignment-poll-dialog.service';
import { AssignmentPollService } from '../../services/assignment-poll.service';
@ -24,7 +24,10 @@ import { AssignmentPollService } from '../../services/assignment-poll.service';
styleUrls: ['./assignment-poll-detail.component.scss'],
encapsulation: ViewEncapsulation.None
})
export class AssignmentPollDetailComponent extends BasePollDetailComponent<ViewAssignmentPoll, AssignmentPollService> {
export class AssignmentPollDetailComponent extends BasePollDetailComponentDirective<
ViewAssignmentPoll,
AssignmentPollService
> {
public columnDefinitionSingleVotes: PblColumnDefinition[];
public filterProps = ['user.getFullName'];

View File

@ -30,7 +30,8 @@ type OptionsObject = { user_id: number; user: ViewUser }[];
templateUrl: './assignment-poll-dialog.component.html',
styleUrls: ['./assignment-poll-dialog.component.scss']
})
export class AssignmentPollDialogComponent extends BasePollDialogComponent<ViewAssignmentPoll, AssignmentPollService>
export class AssignmentPollDialogComponent
extends BasePollDialogComponent<ViewAssignmentPoll, AssignmentPollService>
implements OnInit {
/**
* The summary values that will have fields in the dialog

View File

@ -16,7 +16,7 @@ import { AssignmentPollMethod } from 'app/shared/models/assignments/assignment-p
import { PollType } from 'app/shared/models/poll/base-poll';
import { VoteValue } from 'app/shared/models/poll/base-vote';
import { ViewAssignmentPoll } from 'app/site/assignments/models/view-assignment-poll';
import { BasePollVoteComponent } from 'app/site/polls/components/base-poll-vote.component';
import { BasePollVoteComponentDirective } from 'app/site/polls/components/base-poll-vote.component';
// TODO: Duplicate
interface VoteActions {
@ -32,7 +32,7 @@ interface VoteActions {
styleUrls: ['./assignment-poll-vote.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush
})
export class AssignmentPollVoteComponent extends BasePollVoteComponent<ViewAssignmentPoll> implements OnInit {
export class AssignmentPollVoteComponent extends BasePollVoteComponentDirective<ViewAssignmentPoll> implements OnInit {
public AssignmentPollMethod = AssignmentPollMethod;
public PollType = PollType;
public voteActions: VoteActions[] = [];

View File

@ -24,7 +24,8 @@ import { AssignmentPollService } from '../../services/assignment-poll.service';
templateUrl: './assignment-poll.component.html',
styleUrls: ['./assignment-poll.component.scss']
})
export class AssignmentPollComponent extends BasePollComponent<ViewAssignmentPoll, AssignmentPollService>
export class AssignmentPollComponent
extends BasePollComponent<ViewAssignmentPoll, AssignmentPollService>
implements OnInit {
@Input()
public set poll(value: ViewAssignmentPoll) {

View File

@ -11,10 +11,11 @@ import { auditTime, distinctUntilChanged } from 'rxjs/operators';
import { BaseImportService, NewEntry, ValueLabelCombination } from 'app/core/ui-services/base-import.service';
import { BaseModel } from 'app/shared/models/base/base-model';
import { getLongPreview, getShortPreview } from 'app/shared/utils/previewStrings';
import { BaseViewComponent } from './base-view';
import { BaseViewComponentDirective } from './base-view';
@Directive()
export abstract class BaseImportListComponentDirective<M extends BaseModel> extends BaseViewComponent
export abstract class BaseImportListComponentDirective<M extends BaseModel>
extends BaseViewComponentDirective
implements OnInit {
/**
* The data source for a table. Requires to be initialised with a BaseViewModel

View File

@ -6,10 +6,12 @@ import { TranslateService } from '@ngx-translate/core';
import { PblColumnDefinition, PblDataSource } from '@pebula/ngrid';
import { StorageService } from 'app/core/core-services/storage.service';
import { BaseViewComponent } from './base-view';
import { BaseViewComponentDirective } from './base-view';
import { BaseViewModel } from './base-view-model';
export abstract class BaseListViewComponent<V extends BaseViewModel> extends BaseViewComponent implements OnDestroy {
export abstract class BaseListViewComponent<V extends BaseViewModel>
extends BaseViewComponentDirective
implements OnDestroy {
/**
* The source of the table data, will be filled by an event emitter
*/

View File

@ -7,7 +7,8 @@ import { Projectable, ProjectorElementBuildDeskriptor } from './projectable';
/**
* Base view class for projectable models.
*/
export abstract class BaseProjectableViewModel<M extends BaseModel = any> extends BaseViewModel<M>
export abstract class BaseProjectableViewModel<M extends BaseModel = any>
extends BaseViewModel<M>
implements Projectable {
public abstract getSlide(configService?: ConfigService): ProjectorElementBuildDeskriptor;

View File

@ -1,4 +1,4 @@
import { OnDestroy } from '@angular/core';
import { Directive, OnDestroy } from '@angular/core';
import { MatSnackBar, MatSnackBarRef, SimpleSnackBar } from '@angular/material/snack-bar';
import { Title } from '@angular/platform-browser';
@ -12,7 +12,8 @@ import { BaseComponent } from '../../base.component';
* with the error. The error is dismissed, if the component is destroyed, so if the
* view is leaved.
*/
export abstract class BaseViewComponent extends BaseComponent implements OnDestroy {
@Directive()
export abstract class BaseViewComponentDirective extends BaseComponent implements OnDestroy {
/**
* A reference to the current error snack bar.
*/

View File

@ -9,7 +9,7 @@ import { PromptService } from 'app/core/ui-services/prompt.service';
import { SortingTreeComponent } from 'app/shared/components/sorting-tree/sorting-tree.component';
import { Identifiable } from 'app/shared/models/base/identifiable';
import { CanComponentDeactivate } from 'app/shared/utils/watch-for-changes.guard';
import { BaseViewComponent } from './base-view';
import { BaseViewComponentDirective } from './base-view';
import { BaseViewModel } from './base-view-model';
export interface SortTreeFilterOption extends Identifiable {
@ -22,7 +22,8 @@ export interface SortTreeFilterOption extends Identifiable {
* Abstract Sort view for hierarchic item trees
*/
@Directive()
export abstract class SortTreeViewComponentDirective<V extends BaseViewModel> extends BaseViewComponent
export abstract class SortTreeViewComponentDirective<V extends BaseViewModel>
extends BaseViewComponentDirective
implements CanComponentDeactivate {
/**
* Reference to the view child

View File

@ -11,7 +11,7 @@ import { DetailNavigable, isDetailNavigable } from 'app/shared/models/base/detai
import { ProjectorElement } from 'app/shared/models/core/projector';
import { ViewListOfSpeakers } from 'app/site/agenda/models/view-list-of-speakers';
import { BaseProjectableViewModel } from 'app/site/base/base-projectable-view-model';
import { BaseViewComponent } from 'app/site/base/base-view';
import { BaseViewComponentDirective } from 'app/site/base/base-view';
import { ViewProjector } from 'app/site/projector/models/view-projector';
import { CurrentListOfSpeakersService } from 'app/site/projector/services/current-list-of-speakers.service';
@ -20,7 +20,7 @@ import { CurrentListOfSpeakersService } from 'app/site/projector/services/curren
templateUrl: './cinema.component.html',
styleUrls: ['./cinema.component.scss']
})
export class CinemaComponent extends BaseViewComponent implements OnInit {
export class CinemaComponent extends BaseViewComponentDirective implements OnInit {
public listOfSpeakers: ViewListOfSpeakers;
public projector: ViewProjector;
private currentProjectorElement: ProjectorElement;

View File

@ -5,7 +5,7 @@ import { Title } from '@angular/platform-browser';
import { TranslateService } from '@ngx-translate/core';
import { map } from 'rxjs/operators';
import { BaseViewComponent } from 'app/site/base/base-view';
import { BaseViewComponentDirective } from 'app/site/base/base-view';
import { BaseViewModel } from 'app/site/base/base-view-model';
import { ViewBasePoll } from 'app/site/polls/models/view-base-poll';
import { PollListObservableService } from 'app/site/polls/services/poll-list-observable.service';
@ -15,7 +15,7 @@ import { PollListObservableService } from 'app/site/polls/services/poll-list-obs
templateUrl: './poll-collection.component.html',
styleUrls: ['./poll-collection.component.scss']
})
export class PollCollectionComponent extends BaseViewComponent implements OnInit {
export class PollCollectionComponent extends BaseViewComponentDirective implements OnInit {
public polls: ViewBasePoll[];
@Input()

View File

@ -9,13 +9,13 @@ import { OpenSlidesService } from 'app/core/core-services/openslides.service';
import { OperatorService, Permission } from 'app/core/core-services/operator.service';
import { ConfigRepositoryService } from 'app/core/repositories/config/config-repository.service';
import { UpdateService } from 'app/core/ui-services/update.service';
import { BaseViewComponent } from 'app/site/base/base-view';
import { BaseViewComponentDirective } from 'app/site/base/base-view';
@Component({
selector: 'os-legal-notice',
templateUrl: './legal-notice.component.html'
})
export class LegalNoticeComponent extends BaseViewComponent implements OnInit {
export class LegalNoticeComponent extends BaseViewComponentDirective implements OnInit {
/**
* Whether this component is in editing-mode.
*/

View File

@ -6,14 +6,14 @@ import { TranslateService } from '@ngx-translate/core';
import { OperatorService, Permission } from 'app/core/core-services/operator.service';
import { ConfigRepositoryService } from 'app/core/repositories/config/config-repository.service';
import { BaseViewComponent } from 'app/site/base/base-view';
import { BaseViewComponentDirective } from 'app/site/base/base-view';
@Component({
selector: 'os-privacy-policy',
templateUrl: './privacy-policy.component.html',
styleUrls: ['./privacy-policy.component.scss']
})
export class PrivacyPolicyComponent extends BaseViewComponent implements OnInit {
export class PrivacyPolicyComponent extends BaseViewComponentDirective implements OnInit {
/**
* Whether the component is in editing-mode.
*/

View File

@ -8,7 +8,7 @@ import { TranslateService } from '@ngx-translate/core'; // showcase
import { OperatorService, Permission } from 'app/core/core-services/operator.service';
import { ConfigRepositoryService } from 'app/core/repositories/config/config-repository.service';
import { ConfigService } from 'app/core/ui-services/config.service';
import { BaseViewComponent } from 'app/site/base/base-view';
import { BaseViewComponentDirective } from 'app/site/base/base-view';
/**
* Interface describes the keys for the fields at start-component.
@ -26,7 +26,7 @@ interface IStartContent {
templateUrl: './start.component.html',
styleUrls: ['./start.component.scss']
})
export class StartComponent extends BaseViewComponent implements OnInit {
export class StartComponent extends BaseViewComponentDirective implements OnInit {
/**
* Whether the user is editing the content.
*/

View File

@ -12,7 +12,7 @@ import {
} from 'app/core/repositories/agenda/list-of-speakers-repository.service';
import { DurationService } from 'app/core/ui-services/duration.service';
import { ViewSpeaker } from 'app/site/agenda/models/view-speaker';
import { BaseViewComponent } from 'app/site/base/base-view';
import { BaseViewComponentDirective } from 'app/site/base/base-view';
@Component({
selector: 'os-user-statistics',
@ -21,7 +21,7 @@ import { BaseViewComponent } from 'app/site/base/base-view';
changeDetection: ChangeDetectionStrategy.OnPush,
encapsulation: ViewEncapsulation.None
})
export class UserStatisticsComponent extends BaseViewComponent {
export class UserStatisticsComponent extends BaseViewComponentDirective {
/**
* Returns the total duration for a whole assembly.
*/

View File

@ -20,7 +20,7 @@ import { isDetailNavigable } from 'app/shared/models/base/detail-navigable';
import { History } from 'app/shared/models/core/history';
import { Motion } from 'app/shared/models/motions/motion';
import { langToLocale } from 'app/shared/utils/lang-to-locale';
import { BaseViewComponent } from 'app/site/base/base-view';
import { BaseViewComponentDirective } from 'app/site/base/base-view';
import { BaseViewModel } from 'app/site/base/base-view-model';
import { ViewUser } from 'app/site/users/models/view-user';
@ -34,7 +34,7 @@ import { ViewUser } from 'app/site/users/models/view-user';
templateUrl: './history-list.component.html',
styleUrls: ['./history-list.component.scss']
})
export class HistoryListComponent extends BaseViewComponent implements OnInit {
export class HistoryListComponent extends BaseViewComponentDirective implements OnInit {
/**
* Subject determine when the custom timestamp subject changes
*/

View File

@ -14,7 +14,7 @@ import { LoginDataService } from 'app/core/ui-services/login-data.service';
import { OverlayService } from 'app/core/ui-services/overlay.service';
import { UserAuthType } from 'app/shared/models/users/user';
import { ParentErrorStateMatcher } from 'app/shared/parent-error-state-matcher';
import { BaseViewComponent } from 'app/site/base/base-view';
import { BaseViewComponentDirective } from 'app/site/base/base-view';
import { BrowserSupportService } from '../../services/browser-support.service';
/**
@ -27,7 +27,7 @@ import { BrowserSupportService } from '../../services/browser-support.service';
templateUrl: './login-mask.component.html',
styleUrls: ['./login-mask.component.scss']
})
export class LoginMaskComponent extends BaseViewComponent implements OnInit, OnDestroy {
export class LoginMaskComponent extends BaseViewComponentDirective implements OnInit, OnDestroy {
/**
* Show or hide password and change the indicator accordingly
*/

View File

@ -8,7 +8,7 @@ import { TranslateService } from '@ngx-translate/core';
import { environment } from 'environments/environment';
import { HttpService } from 'app/core/core-services/http.service';
import { BaseViewComponent } from 'app/site/base/base-view';
import { BaseViewComponentDirective } from 'app/site/base/base-view';
/**
* Reset password component.
@ -19,7 +19,7 @@ import { BaseViewComponent } from 'app/site/base/base-view';
templateUrl: './reset-password.component.html',
styleUrls: ['../../assets/reset-password-pages.scss']
})
export class ResetPasswordComponent extends BaseViewComponent implements OnInit {
export class ResetPasswordComponent extends BaseViewComponentDirective implements OnInit {
/**
* THis form holds one control for the email.
*/

View File

@ -2,8 +2,6 @@ import { CommonModule } from '@angular/common';
import { NgModule } from '@angular/core';
import { RouterModule } from '@angular/router';
import { DeviceDetectorModule } from 'ngx-device-detector';
import { LoginLegalNoticeComponent } from './components/login-legal-notice/login-legal-notice.component';
import { LoginMaskComponent } from './components/login-mask/login-mask.component';
import { LoginPrivacyPolicyComponent } from './components/login-privacy-policy/login-privacy-policy.component';
@ -14,7 +12,7 @@ import { SharedModule } from '../../shared/shared.module';
import { UnsupportedBrowserComponent } from './components/unsupported-browser/unsupported-browser.component';
@NgModule({
imports: [CommonModule, RouterModule, SharedModule, DeviceDetectorModule],
imports: [CommonModule, RouterModule, SharedModule],
declarations: [
LoginWrapperComponent,
ResetPasswordComponent,

View File

@ -7,7 +7,7 @@ import { ActivatedRoute } from '@angular/router';
import { TranslateService } from '@ngx-translate/core';
import { MediafileRepositoryService } from 'app/core/repositories/mediafiles/mediafile-repository.service';
import { BaseViewComponent } from 'app/site/base/base-view';
import { BaseViewComponentDirective } from 'app/site/base/base-view';
/**
* Handle file uploads from user
@ -17,7 +17,7 @@ import { BaseViewComponent } from 'app/site/base/base-view';
templateUrl: './media-upload.component.html',
styleUrls: ['./media-upload.component.scss']
})
export class MediaUploadComponent extends BaseViewComponent implements OnInit {
export class MediaUploadComponent extends BaseViewComponentDirective implements OnInit {
/**
* Determine if uploading should happen parallel or synchronously.
* Synchronous uploading might be necessary if we see that stuff breaks

View File

@ -26,7 +26,8 @@ export interface MediafileTitleInformation {
title: string;
}
export class ViewMediafile extends BaseViewModelWithListOfSpeakers<Mediafile>
export class ViewMediafile
extends BaseViewModelWithListOfSpeakers<Mediafile>
implements MediafileTitleInformation, Searchable {
public static COLLECTIONSTRING = Mediafile.COLLECTIONSTRING;
protected _collectionString = Mediafile.COLLECTIONSTRING;

View File

@ -14,7 +14,8 @@ export interface MotionBlockTitleInformation extends TitleInformationWithAgendaI
* ViewModel for motion blocks.
* @ignore
*/
export class ViewMotionBlock extends BaseViewModelWithAgendaItemAndListOfSpeakers
export class ViewMotionBlock
extends BaseViewModelWithAgendaItemAndListOfSpeakers
implements MotionBlockTitleInformation, Searchable {
public static COLLECTIONSTRING = MotionBlock.COLLECTIONSTRING;
protected _collectionString = MotionBlock.COLLECTIONSTRING;

View File

@ -12,7 +12,8 @@ export type MotionChangeRecommendationTitleInformation = object;
* Provides "safe" access to variables and functions in {@link MotionChangeRecommendation}
* @ignore
*/
export class ViewMotionChangeRecommendation extends BaseViewModel<MotionChangeRecommendation>
export class ViewMotionChangeRecommendation
extends BaseViewModel<MotionChangeRecommendation>
implements MotionChangeRecommendationTitleInformation, ViewUnifiedChange {
public static COLLECTIONSTRING = MotionChangeRecommendation.COLLECTIONSTRING;
protected _collectionString = MotionChangeRecommendation.COLLECTIONSTRING;

View File

@ -13,7 +13,8 @@ export interface MotionCommentSectionTitleInformation {
* Provides "safe" access to variables and functions in {@link MotionCommentSection}
* @ignore
*/
export class ViewMotionCommentSection extends BaseViewModel<MotionCommentSection>
export class ViewMotionCommentSection
extends BaseViewModel<MotionCommentSection>
implements MotionCommentSectionTitleInformation {
public static COLLECTIONSTRING = MotionCommentSection.COLLECTIONSTRING;
protected _collectionString = MotionCommentSection.COLLECTIONSTRING;

View File

@ -23,7 +23,8 @@ export const MotionPollPercentBaseVerbose = {
disabled: 'Disabled (no percents)'
};
export class ViewMotionPoll extends ViewBasePoll<MotionPoll, MotionPollMethod, PercentBase>
export class ViewMotionPoll
extends ViewBasePoll<MotionPoll, MotionPollMethod, PercentBase>
implements MotionPollTitleInformation {
public static COLLECTIONSTRING = MotionPoll.COLLECTIONSTRING;
protected _collectionString = MotionPoll.COLLECTIONSTRING;

View File

@ -35,7 +35,8 @@ export interface MotionTitleInformation extends TitleInformationWithAgendaItem {
* Provides "safe" access to variables and functions in {@link Motion}
* @ignore
*/
export class ViewMotion extends BaseViewModelWithAgendaItemAndListOfSpeakers<Motion>
export class ViewMotion
extends BaseViewModelWithAgendaItemAndListOfSpeakers<Motion>
implements MotionTitleInformation, Searchable {
public get motion(): Motion {
return this._model;

View File

@ -14,7 +14,8 @@ export interface StatuteParagraphTitleInformation {
* Provides "safe" access to variables and functions in {@link StatuteParagraph}
* @ignore
*/
export class ViewStatuteParagraph extends BaseViewModel<StatuteParagraph>
export class ViewStatuteParagraph
extends BaseViewModel<StatuteParagraph>
implements StatuteParagraphTitleInformation, Searchable {
public static COLLECTIONSTRING = StatuteParagraph.COLLECTIONSTRING;
protected _collectionString = StatuteParagraph.COLLECTIONSTRING;

View File

@ -9,7 +9,7 @@ import { CategoryRepositoryService } from 'app/core/repositories/motions/categor
import { PromptService } from 'app/core/ui-services/prompt.service';
import { SortingTreeComponent } from 'app/shared/components/sorting-tree/sorting-tree.component';
import { CanComponentDeactivate } from 'app/shared/utils/watch-for-changes.guard';
import { BaseViewComponent } from 'app/site/base/base-view';
import { BaseViewComponentDirective } from 'app/site/base/base-view';
import { ViewCategory } from 'app/site/motions/models/view-category';
/**
@ -20,7 +20,7 @@ import { ViewCategory } from 'app/site/motions/models/view-category';
templateUrl: './categories-sort.component.html',
styleUrls: ['./categories-sort.component.scss']
})
export class CategoriesSortComponent extends BaseViewComponent implements CanComponentDeactivate {
export class CategoriesSortComponent extends BaseViewComponentDirective implements CanComponentDeactivate {
/**
* Reference to the sorting tree.
*/

View File

@ -13,7 +13,7 @@ import { CategoryRepositoryService } from 'app/core/repositories/motions/categor
import { MotionRepositoryService } from 'app/core/repositories/motions/motion-repository.service';
import { PromptService } from 'app/core/ui-services/prompt.service';
import { infoDialogSettings } from 'app/shared/utils/dialog-settings';
import { BaseViewComponent } from 'app/site/base/base-view';
import { BaseViewComponentDirective } from 'app/site/base/base-view';
import { ViewCategory } from 'app/site/motions/models/view-category';
import { ViewMotion } from 'app/site/motions/models/view-motion';
@ -25,7 +25,7 @@ import { ViewMotion } from 'app/site/motions/models/view-motion';
templateUrl: './category-detail.component.html',
styleUrls: ['./category-detail.component.scss']
})
export class CategoryDetailComponent extends BaseViewComponent implements OnInit {
export class CategoryDetailComponent extends BaseViewComponentDirective implements OnInit {
/**
* The one selected category
*/

View File

@ -12,7 +12,7 @@ import { ChoiceService } from 'app/core/ui-services/choice.service';
import { PromptService } from 'app/core/ui-services/prompt.service';
import { SortingListComponent } from 'app/shared/components/sorting-list/sorting-list.component';
import { CanComponentDeactivate } from 'app/shared/utils/watch-for-changes.guard';
import { BaseViewComponent } from 'app/site/base/base-view';
import { BaseViewComponentDirective } from 'app/site/base/base-view';
import { ViewCategory } from 'app/site/motions/models/view-category';
import { ViewMotion } from 'app/site/motions/models/view-motion';
@ -26,7 +26,7 @@ import { ViewMotion } from 'app/site/motions/models/view-motion';
templateUrl: './category-motions-sort.component.html',
styleUrls: ['./category-motions-sort.component.scss']
})
export class CategoryMotionsSortComponent extends BaseViewComponent implements OnInit, CanComponentDeactivate {
export class CategoryMotionsSortComponent extends BaseViewComponentDirective implements OnInit, CanComponentDeactivate {
/**
* The current category. Determined by the route
*/

View File

@ -12,7 +12,7 @@ import { GroupRepositoryService } from 'app/core/repositories/users/group-reposi
import { PromptService } from 'app/core/ui-services/prompt.service';
import { MotionCommentSection } from 'app/shared/models/motions/motion-comment-section';
import { infoDialogSettings } from 'app/shared/utils/dialog-settings';
import { BaseViewComponent } from 'app/site/base/base-view';
import { BaseViewComponentDirective } from 'app/site/base/base-view';
import { ViewMotionCommentSection } from 'app/site/motions/models/view-motion-comment-section';
import { ViewGroup } from 'app/site/users/models/view-group';
@ -24,7 +24,7 @@ import { ViewGroup } from 'app/site/users/models/view-group';
templateUrl: './motion-comment-section-list.component.html',
styleUrls: ['./motion-comment-section-list.component.scss']
})
export class MotionCommentSectionListComponent extends BaseViewComponent implements OnInit {
export class MotionCommentSectionListComponent extends BaseViewComponentDirective implements OnInit {
@ViewChild('motionCommentDialog', { static: true })
private motionCommentDialog: TemplateRef<string>;

View File

@ -5,7 +5,7 @@ import { Title } from '@angular/platform-browser';
import { TranslateService } from '@ngx-translate/core';
import { MotionCommentSectionRepositoryService } from 'app/core/repositories/motions/motion-comment-section-repository.service';
import { BaseViewComponent } from 'app/site/base/base-view';
import { BaseViewComponentDirective } from 'app/site/base/base-view';
import { ViewMotionCommentSection } from 'app/site/motions/models/view-motion-comment-section';
/**
@ -16,7 +16,7 @@ import { ViewMotionCommentSection } from 'app/site/motions/models/view-motion-co
templateUrl: './motion-comment-section-sort.component.html',
styleUrls: ['./motion-comment-section-sort.component.scss']
})
export class MotionCommentSectionSortComponent extends BaseViewComponent implements OnInit {
export class MotionCommentSectionSortComponent extends BaseViewComponentDirective implements OnInit {
/**
* Holds the models
*/

View File

@ -9,7 +9,7 @@ import { TranslateService } from '@ngx-translate/core';
import { MotionRepositoryService, ParagraphToChoose } from 'app/core/repositories/motions/motion-repository.service';
import { ConfigService } from 'app/core/ui-services/config.service';
import { PromptService } from 'app/core/ui-services/prompt.service';
import { BaseViewComponent } from 'app/site/base/base-view';
import { BaseViewComponentDirective } from 'app/site/base/base-view';
import { CreateMotion } from 'app/site/motions/models/create-motion';
import { ViewMotion } from 'app/site/motions/models/view-motion';
@ -22,7 +22,7 @@ import { ViewMotion } from 'app/site/motions/models/view-motion';
styleUrls: ['./amendment-create-wizard.component.scss'],
encapsulation: ViewEncapsulation.None
})
export class AmendmentCreateWizardComponent extends BaseViewComponent implements OnInit {
export class AmendmentCreateWizardComponent extends BaseViewComponentDirective implements OnInit {
/**
* The motion to be amended
*/

View File

@ -10,7 +10,7 @@ import { ViewModelStoreService } from 'app/core/core-services/view-model-store.s
import { MotionRepositoryService } from 'app/core/repositories/motions/motion-repository.service';
import { UserRepositoryService } from 'app/core/repositories/users/user-repository.service';
import { Selectable } from 'app/shared/components/selectable';
import { BaseViewComponent } from 'app/site/base/base-view';
import { BaseViewComponentDirective } from 'app/site/base/base-view';
import { ViewMotion } from 'app/site/motions/models/view-motion';
import { LocalPermissionsService } from 'app/site/motions/services/local-permissions.service';
import { ViewUser } from 'app/site/users/models/view-user';
@ -23,7 +23,7 @@ import { ViewUser } from 'app/site/users/models/view-user';
templateUrl: './manage-submitters.component.html',
styleUrls: ['./manage-submitters.component.scss']
})
export class ManageSubmittersComponent extends BaseViewComponent {
export class ManageSubmittersComponent extends BaseViewComponentDirective {
/**
* The motion, which the personal note belong to.
*/

View File

@ -8,7 +8,7 @@ import { TranslateService } from '@ngx-translate/core';
import { ChangeRecommendationRepositoryService } from 'app/core/repositories/motions/change-recommendation-repository.service';
import { LineRange, ModificationType } from 'app/core/ui-services/diff.service';
import { BaseViewComponent } from 'app/site/base/base-view';
import { BaseViewComponentDirective } from 'app/site/base/base-view';
import { ViewMotionChangeRecommendation } from 'app/site/motions/models/view-motion-change-recommendation';
/**
@ -45,7 +45,7 @@ export interface MotionChangeRecommendationDialogComponentData {
templateUrl: './motion-change-recommendation-dialog.component.html',
styleUrls: ['./motion-change-recommendation-dialog.component.scss']
})
export class MotionChangeRecommendationDialogComponent extends BaseViewComponent {
export class MotionChangeRecommendationDialogComponent extends BaseViewComponentDirective {
/**
* Determine if the change recommendation is edited
*/

View File

@ -8,7 +8,7 @@ import { TranslateService } from '@ngx-translate/core';
import { OperatorService } from 'app/core/core-services/operator.service';
import { MotionCommentSectionRepositoryService } from 'app/core/repositories/motions/motion-comment-section-repository.service';
import { MotionComment } from 'app/shared/models/motions/motion';
import { BaseViewComponent } from 'app/site/base/base-view';
import { BaseViewComponentDirective } from 'app/site/base/base-view';
import { ViewMotion } from 'app/site/motions/models/view-motion';
import { ViewMotionCommentSection } from 'app/site/motions/models/view-motion-comment-section';
import { MotionPdfExportService } from 'app/site/motions/services/motion-pdf-export.service';
@ -21,7 +21,7 @@ import { MotionPdfExportService } from 'app/site/motions/services/motion-pdf-exp
templateUrl: './motion-comments.component.html',
styleUrls: ['./motion-comments.component.scss']
})
export class MotionCommentsComponent extends BaseViewComponent implements OnInit {
export class MotionCommentsComponent extends BaseViewComponentDirective implements OnInit {
/**
* An array of all sections the operator can see.
*/

View File

@ -14,7 +14,7 @@ import { PromptService } from 'app/core/ui-services/prompt.service';
import { ViewUnifiedChange, ViewUnifiedChangeType } from 'app/shared/models/motions/view-unified-change';
import { mediumDialogSettings } from 'app/shared/utils/dialog-settings';
import { getRecommendationTypeName } from 'app/shared/utils/recommendation-type-names';
import { BaseViewComponent } from 'app/site/base/base-view';
import { BaseViewComponentDirective } from 'app/site/base/base-view';
import { ViewMotion } from 'app/site/motions/models/view-motion';
import { ViewMotionChangeRecommendation } from 'app/site/motions/models/view-motion-change-recommendation';
import { LineNumberingMode } from 'app/site/motions/motions.constants';
@ -57,7 +57,7 @@ import { ViewMotionAmendedParagraph } from '../../../../models/view-motion-amend
styleUrls: ['./motion-detail-diff.component.scss'],
encapsulation: ViewEncapsulation.None
})
export class MotionDetailDiffComponent extends BaseViewComponent implements AfterViewInit {
export class MotionDetailDiffComponent extends BaseViewComponentDirective implements AfterViewInit {
/**
* Get the {@link getRecommendationTypeName}-Function from Utils
*/

View File

@ -40,7 +40,7 @@ import { Mediafile } from 'app/shared/models/mediafiles/mediafile';
import { Motion } from 'app/shared/models/motions/motion';
import { ViewUnifiedChange } from 'app/shared/models/motions/view-unified-change';
import { infoDialogSettings, mediumDialogSettings } from 'app/shared/utils/dialog-settings';
import { BaseViewComponent } from 'app/site/base/base-view';
import { BaseViewComponentDirective } from 'app/site/base/base-view';
import { CreateMotion } from 'app/site/motions/models/create-motion';
import { ViewCategory } from 'app/site/motions/models/view-category';
import { ViewCreateMotion } from 'app/site/motions/models/view-create-motion';
@ -87,7 +87,7 @@ import {
changeDetection: ChangeDetectionStrategy.OnPush,
encapsulation: ViewEncapsulation.None
})
export class MotionDetailComponent extends BaseViewComponent implements OnInit, OnDestroy {
export class MotionDetailComponent extends BaseViewComponentDirective implements OnInit, OnDestroy {
/**
* Motion content. Can be a new version
*/

View File

@ -8,7 +8,7 @@ import { TranslateService } from '@ngx-translate/core';
import { ChangeRecommendationRepositoryService } from 'app/core/repositories/motions/change-recommendation-repository.service';
import { ModificationType } from 'app/core/ui-services/diff.service';
import { BaseViewComponent } from 'app/site/base/base-view';
import { BaseViewComponentDirective } from 'app/site/base/base-view';
import { ViewMotionChangeRecommendation } from 'app/site/motions/models/view-motion-change-recommendation';
/**
@ -43,7 +43,7 @@ export interface MotionTitleChangeRecommendationDialogComponentData {
styleUrls: ['./motion-title-change-recommendation-dialog.component.scss'],
encapsulation: ViewEncapsulation.None
})
export class MotionTitleChangeRecommendationDialogComponent extends BaseViewComponent {
export class MotionTitleChangeRecommendationDialogComponent extends BaseViewComponentDirective {
/**
* Determine if the change recommendation is edited
*/

View File

@ -7,7 +7,7 @@ import { TranslateService } from '@ngx-translate/core';
import { PersonalNoteService } from 'app/core/ui-services/personal-note.service';
import { PersonalNoteContent } from 'app/shared/models/users/personal-note';
import { BaseViewComponent } from 'app/site/base/base-view';
import { BaseViewComponentDirective } from 'app/site/base/base-view';
import { ViewMotion } from 'app/site/motions/models/view-motion';
import { MotionPdfExportService } from 'app/site/motions/services/motion-pdf-export.service';
@ -19,7 +19,7 @@ import { MotionPdfExportService } from 'app/site/motions/services/motion-pdf-exp
templateUrl: './personal-note.component.html',
styleUrls: ['./personal-note.component.scss']
})
export class PersonalNoteComponent extends BaseViewComponent {
export class PersonalNoteComponent extends BaseViewComponentDirective {
/**
* The motion, which the personal note belong to.
*/

View File

@ -16,7 +16,7 @@ import { ViewMotion } from 'app/site/motions/models/view-motion';
import { ViewMotionPoll } from 'app/site/motions/models/view-motion-poll';
import { MotionPollDialogService } from 'app/site/motions/services/motion-poll-dialog.service';
import { MotionPollService } from 'app/site/motions/services/motion-poll.service';
import { BasePollDetailComponent } from 'app/site/polls/components/base-poll-detail.component';
import { BasePollDetailComponentDirective } from 'app/site/polls/components/base-poll-detail.component';
@Component({
selector: 'os-motion-poll-detail',
@ -25,7 +25,7 @@ import { BasePollDetailComponent } from 'app/site/polls/components/base-poll-det
changeDetection: ChangeDetectionStrategy.OnPush,
encapsulation: ViewEncapsulation.None
})
export class MotionPollDetailComponent extends BasePollDetailComponent<ViewMotionPoll, MotionPollService> {
export class MotionPollDetailComponent extends BasePollDetailComponentDirective<ViewMotionPoll, MotionPollService> {
public motion: ViewMotion;
public columnDefinition: PblColumnDefinition[] = [
{

View File

@ -18,7 +18,8 @@ import { PercentBaseVerbose } from 'app/site/polls/models/view-base-poll';
templateUrl: './motion-poll-dialog.component.html',
styleUrls: ['./motion-poll-dialog.component.scss']
})
export class MotionPollDialogComponent extends BasePollDialogComponent<ViewMotionPoll, MotionPollService>
export class MotionPollDialogComponent
extends BasePollDialogComponent<ViewMotionPoll, MotionPollService>
implements OnInit {
public PercentBaseVerbose = PercentBaseVerbose;

View File

@ -10,7 +10,7 @@ import { PromptService } from 'app/core/ui-services/prompt.service';
import { VotingService } from 'app/core/ui-services/voting.service';
import { VoteValue } from 'app/shared/models/poll/base-vote';
import { ViewMotionPoll } from 'app/site/motions/models/view-motion-poll';
import { BasePollVoteComponent } from 'app/site/polls/components/base-poll-vote.component';
import { BasePollVoteComponentDirective } from 'app/site/polls/components/base-poll-vote.component';
interface VoteOption {
vote?: VoteValue;
@ -25,7 +25,7 @@ interface VoteOption {
styleUrls: ['./motion-poll-vote.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush
})
export class MotionPollVoteComponent extends BasePollVoteComponent<ViewMotionPoll> {
export class MotionPollVoteComponent extends BasePollVoteComponentDirective<ViewMotionPoll> {
public currentVote: VoteOption = {};
public voteOptions: VoteOption[] = [
{

View File

@ -15,7 +15,7 @@ import { WorkflowRepositoryService } from 'app/core/repositories/motions/workflo
import { PromptService } from 'app/core/ui-services/prompt.service';
import { MergeAmendment, Restriction, State } from 'app/shared/models/motions/state';
import { infoDialogSettings } from 'app/shared/utils/dialog-settings';
import { BaseViewComponent } from 'app/site/base/base-view';
import { BaseViewComponentDirective } from 'app/site/base/base-view';
import { ViewState } from 'app/site/motions/models/view-state';
import { ViewWorkflow } from 'app/site/motions/models/view-workflow';
@ -73,7 +73,7 @@ interface RestrictionShape {
styleUrls: ['./workflow-detail.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush
})
export class WorkflowDetailComponent extends BaseViewComponent implements OnInit {
export class WorkflowDetailComponent extends BaseViewComponentDirective implements OnInit {
/**
* Reference to the workflow dialog
*/

View File

@ -10,7 +10,7 @@ import { MotionBlockRepositoryService } from 'app/core/repositories/motions/moti
import { TagRepositoryService } from 'app/core/repositories/tags/tag-repository.service';
import { ConfigService } from 'app/core/ui-services/config.service';
import { largeDialogSettings } from 'app/shared/utils/dialog-settings';
import { BaseViewComponent } from 'app/site/base/base-view';
import { BaseViewComponentDirective } from 'app/site/base/base-view';
import { ViewCategory } from 'app/site/motions/models/view-category';
import { ViewMotion } from 'app/site/motions/models/view-motion';
import { ViewMotionBlock } from 'app/site/motions/models/view-motion-block';
@ -24,7 +24,7 @@ import { MotionExportDialogComponent } from '../motion-export-dialog/motion-expo
templateUrl: './motion-multiselect-actions.component.html',
styleUrls: ['./motion-multiselect-actions.component.scss']
})
export class MotionMultiselectActionsComponent extends BaseViewComponent implements OnInit {
export class MotionMultiselectActionsComponent extends BaseViewComponentDirective implements OnInit {
/**
* The list of the selected motions.
*/

View File

@ -10,7 +10,7 @@ import { StatuteParagraphRepositoryService } from 'app/core/repositories/motions
import { PromptService } from 'app/core/ui-services/prompt.service';
import { StatuteParagraph } from 'app/shared/models/motions/statute-paragraph';
import { largeDialogSettings } from 'app/shared/utils/dialog-settings';
import { BaseViewComponent } from 'app/site/base/base-view';
import { BaseViewComponentDirective } from 'app/site/base/base-view';
import { ViewStatuteParagraph } from 'app/site/motions/models/view-statute-paragraph';
import { StatuteCsvExportService } from 'app/site/motions/services/statute-csv-export.service';
@ -22,7 +22,7 @@ import { StatuteCsvExportService } from 'app/site/motions/services/statute-csv-e
templateUrl: './statute-paragraph-list.component.html',
styleUrls: ['./statute-paragraph-list.component.scss']
})
export class StatuteParagraphListComponent extends BaseViewComponent implements OnInit {
export class StatuteParagraphListComponent extends BaseViewComponentDirective implements OnInit {
@ViewChild('statuteParagraphDialog', { static: true })
private statuteParagraphDialog: TemplateRef<string>;

View File

@ -1,4 +1,4 @@
import { OnInit } from '@angular/core';
import { Directive, OnInit } from '@angular/core';
import { MatSnackBar } from '@angular/material/snack-bar';
import { Title } from '@angular/platform-browser';
import { ActivatedRoute } from '@angular/router';
@ -15,7 +15,7 @@ import { BasePollDialogService } from 'app/core/ui-services/base-poll-dialog.ser
import { PromptService } from 'app/core/ui-services/prompt.service';
import { ChartData } from 'app/shared/components/charts/charts.component';
import { BaseVote } from 'app/shared/models/poll/base-vote';
import { BaseViewComponent } from 'app/site/base/base-view';
import { BaseViewComponentDirective } from 'app/site/base/base-view';
import { ViewGroup } from 'app/site/users/models/view-group';
import { ViewUser } from 'app/site/users/models/view-user';
import { BasePollRepositoryService } from '../services/base-poll-repository.service';
@ -27,7 +27,9 @@ export interface BaseVoteData {
user?: ViewUser;
}
export abstract class BasePollDetailComponent<V extends ViewBasePoll, S extends PollService> extends BaseViewComponent
@Directive()
export abstract class BasePollDetailComponentDirective<V extends ViewBasePoll, S extends PollService>
extends BaseViewComponentDirective
implements OnInit {
/**
* All the groups of users.

View File

@ -7,7 +7,7 @@ import { TranslateService } from '@ngx-translate/core';
import { VOTE_UNDOCUMENTED } from 'app/shared/models/poll/base-poll';
import { OneOfValidator } from 'app/shared/validators/one-of-validator';
import { BaseViewComponent } from 'app/site/base/base-view';
import { BaseViewComponentDirective } from 'app/site/base/base-view';
import { PollFormComponent } from './poll-form/poll-form.component';
import { PollService } from '../services/poll.service';
import { ViewBasePoll } from '../models/view-base-poll';
@ -15,7 +15,10 @@ import { ViewBasePoll } from '../models/view-base-poll';
/**
* A dialog for updating the values of a poll.
*/
export abstract class BasePollDialogComponent<T extends ViewBasePoll, S extends PollService> extends BaseViewComponent {
export abstract class BasePollDialogComponent<
T extends ViewBasePoll,
S extends PollService
> extends BaseViewComponentDirective {
public publishImmediately: boolean;
protected pollForm: PollFormComponent<T, S>;

View File

@ -1,4 +1,4 @@
import { Input } from '@angular/core';
import { Directive, Input } from '@angular/core';
import { MatSnackBar } from '@angular/material/snack-bar';
import { Title } from '@angular/platform-browser';
@ -6,11 +6,12 @@ import { TranslateService } from '@ngx-translate/core';
import { OperatorService } from 'app/core/core-services/operator.service';
import { VotingError } from 'app/core/ui-services/voting.service';
import { BaseViewComponent } from 'app/site/base/base-view';
import { BaseViewComponentDirective } from 'app/site/base/base-view';
import { ViewUser } from 'app/site/users/models/view-user';
import { ViewBasePoll } from '../models/view-base-poll';
export abstract class BasePollVoteComponent<V extends ViewBasePoll> extends BaseViewComponent {
@Directive()
export abstract class BasePollVoteComponentDirective<V extends ViewBasePoll> extends BaseViewComponentDirective {
@Input()
public poll: V;

View File

@ -9,12 +9,15 @@ import { BasePollDialogService } from 'app/core/ui-services/base-poll-dialog.ser
import { PromptService } from 'app/core/ui-services/prompt.service';
import { ChartData } from 'app/shared/components/charts/charts.component';
import { PollState, PollType } from 'app/shared/models/poll/base-poll';
import { BaseViewComponent } from 'app/site/base/base-view';
import { BaseViewComponentDirective } from 'app/site/base/base-view';
import { BasePollRepositoryService } from '../services/base-poll-repository.service';
import { PollService } from '../services/poll.service';
import { ViewBasePoll } from '../models/view-base-poll';
export abstract class BasePollComponent<V extends ViewBasePoll, S extends PollService> extends BaseViewComponent {
export abstract class BasePollComponent<
V extends ViewBasePoll,
S extends PollService
> extends BaseViewComponentDirective {
public stateChangePending = false;
public chartDataSubject: BehaviorSubject<ChartData> = new BehaviorSubject([]);

View File

@ -15,7 +15,7 @@ import { PercentBase } from 'app/shared/models/poll/base-poll';
import { PollType } from 'app/shared/models/poll/base-poll';
import { infoDialogSettings } from 'app/shared/utils/dialog-settings';
import { ViewAssignmentPoll } from 'app/site/assignments/models/view-assignment-poll';
import { BaseViewComponent } from 'app/site/base/base-view';
import { BaseViewComponentDirective } from 'app/site/base/base-view';
import {
MajorityMethodVerbose,
PollClassType,
@ -31,7 +31,8 @@ import { PollService } from '../../services/poll.service';
templateUrl: './poll-form.component.html',
styleUrls: ['./poll-form.component.scss']
})
export class PollFormComponent<T extends ViewBasePoll, S extends PollService> extends BaseViewComponent
export class PollFormComponent<T extends ViewBasePoll, S extends PollService>
extends BaseViewComponentDirective
implements OnInit {
/**
* The form-group for the meta-info.

View File

@ -6,7 +6,7 @@ import { TranslateService } from '@ngx-translate/core';
import { map } from 'rxjs/operators';
import { UserRepositoryService } from 'app/core/repositories/users/user-repository.service';
import { BaseViewComponent } from 'app/site/base/base-view';
import { BaseViewComponentDirective } from 'app/site/base/base-view';
import { ViewBasePoll } from 'app/site/polls/models/view-base-poll';
@Component({
@ -14,7 +14,7 @@ import { ViewBasePoll } from 'app/site/polls/models/view-base-poll';
templateUrl: './poll-progress.component.html',
styleUrls: ['./poll-progress.component.scss']
})
export class PollProgressComponent extends BaseViewComponent implements OnInit {
export class PollProgressComponent extends BaseViewComponentDirective implements OnInit {
@Input()
public poll: ViewBasePoll;
public max: number;

View File

@ -10,7 +10,7 @@ import { ConfigService } from 'app/core/ui-services/config.service';
import { ProjectionDialogService } from 'app/core/ui-services/projection-dialog.service';
import { PromptService } from 'app/core/ui-services/prompt.service';
import { Projector } from 'app/shared/models/core/projector';
import { BaseViewComponent } from 'app/site/base/base-view';
import { BaseViewComponentDirective } from 'app/site/base/base-view';
import { ViewCountdown } from '../../models/view-countdown';
/**
@ -21,7 +21,7 @@ import { ViewCountdown } from '../../models/view-countdown';
templateUrl: './countdown-controls.component.html',
styleUrls: ['./countdown-controls.component.scss']
})
export class CountdownControlsComponent extends BaseViewComponent {
export class CountdownControlsComponent extends BaseViewComponentDirective {
/**
* Countdown as input
*/

View File

@ -8,7 +8,7 @@ import { TranslateService } from '@ngx-translate/core';
import { ConfigService } from 'app/core/ui-services/config.service';
import { DurationService } from 'app/core/ui-services/duration.service';
import { BaseViewComponent } from 'app/site/base/base-view';
import { BaseViewComponentDirective } from 'app/site/base/base-view';
/**
* Countdown data for the form
@ -28,7 +28,7 @@ export interface CountdownData {
templateUrl: './countdown-dialog.component.html',
styleUrls: ['./countdown-dialog.component.scss']
})
export class CountdownDialogComponent extends BaseViewComponent implements OnInit {
export class CountdownDialogComponent extends BaseViewComponentDirective implements OnInit {
/**
* The form data
*/

View File

@ -8,7 +8,7 @@ import { ProjectorMessageRepositoryService } from 'app/core/repositories/project
import { ProjectionDialogService } from 'app/core/ui-services/projection-dialog.service';
import { PromptService } from 'app/core/ui-services/prompt.service';
import { Projector } from 'app/shared/models/core/projector';
import { BaseViewComponent } from 'app/site/base/base-view';
import { BaseViewComponentDirective } from 'app/site/base/base-view';
import { ViewProjectorMessage } from '../../models/view-projector-message';
/**
@ -20,7 +20,7 @@ import { ViewProjectorMessage } from '../../models/view-projector-message';
templateUrl: './message-controls.component.html',
styleUrls: ['./message-controls.component.scss']
})
export class MessageControlsComponent extends BaseViewComponent implements OnInit {
export class MessageControlsComponent extends BaseViewComponentDirective implements OnInit {
/**
* Input slot for the projector message model
*/

View File

@ -6,7 +6,7 @@ import { Title } from '@angular/platform-browser';
import { TranslateService } from '@ngx-translate/core';
import { BaseViewComponent } from 'app/site/base/base-view';
import { BaseViewComponentDirective } from 'app/site/base/base-view';
/**
* Determine what to send
@ -23,7 +23,7 @@ export interface MessageData {
templateUrl: './message-dialog.component.html',
styleUrls: ['./message-dialog.component.scss']
})
export class MessageDialogComponent extends BaseViewComponent implements OnInit {
export class MessageDialogComponent extends BaseViewComponentDirective implements OnInit {
/**
* The form data
*/

View File

@ -7,7 +7,7 @@ import { TranslateService } from '@ngx-translate/core';
import { ProjectorService } from 'app/core/core-services/projector.service';
import { MediafileRepositoryService } from 'app/core/repositories/mediafiles/mediafile-repository.service';
import { Mediafile } from 'app/shared/models/mediafiles/mediafile';
import { BaseViewComponent } from 'app/site/base/base-view';
import { BaseViewComponentDirective } from 'app/site/base/base-view';
import { MediafileProjectorElement } from 'app/site/mediafiles/models/mediafile-projector-element';
import { ViewMediafile } from 'app/site/mediafiles/models/view-mediafile';
import { SlideManager } from 'app/slides/services/slide-manager.service';
@ -21,7 +21,7 @@ import { ViewProjector } from '../../models/view-projector';
templateUrl: './presentation-control.component.html',
styleUrls: ['./presentation-control.component.scss']
})
export class PresentationControlComponent extends BaseViewComponent {
export class PresentationControlComponent extends BaseViewComponentDirective {
/**
* The projector.
*/

View File

@ -23,7 +23,7 @@ import { Countdown } from 'app/shared/models/core/countdown';
import { ProjectorElement } from 'app/shared/models/core/projector';
import { ProjectorMessage } from 'app/shared/models/core/projector-message';
import { infoDialogSettings, largeDialogSettings } from 'app/shared/utils/dialog-settings';
import { BaseViewComponent } from 'app/site/base/base-view';
import { BaseViewComponentDirective } from 'app/site/base/base-view';
import { Projectable } from 'app/site/base/projectable';
import { ViewCountdown } from 'app/site/projector/models/view-countdown';
import { ViewProjectorMessage } from 'app/site/projector/models/view-projector-message';
@ -44,7 +44,7 @@ import { ViewProjector } from '../../models/view-projector';
styleUrls: ['./projector-detail.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush
})
export class ProjectorDetailComponent extends BaseViewComponent implements OnInit {
export class ProjectorDetailComponent extends BaseViewComponentDirective implements OnInit {
/**
* The projector to show.
*/

View File

@ -19,7 +19,7 @@ import { ProjectionDefaultRepositoryService } from 'app/core/repositories/projec
import { ProjectorRepositoryService } from 'app/core/repositories/projector/projector-repository.service';
import { ProjectorComponent } from 'app/shared/components/projector/projector.component';
import { Projector } from 'app/shared/models/core/projector';
import { BaseViewComponent } from 'app/site/base/base-view';
import { BaseViewComponentDirective } from 'app/site/base/base-view';
import { ClockSlideService } from '../../services/clock-slide.service';
import { ViewProjectionDefault } from '../../models/view-projection-default';
import { ViewProjector } from '../../models/view-projector';
@ -35,7 +35,7 @@ import { ViewProjector } from '../../models/view-projector';
encapsulation: ViewEncapsulation.None,
changeDetection: ChangeDetectionStrategy.OnPush
})
export class ProjectorEditDialogComponent extends BaseViewComponent implements OnInit {
export class ProjectorEditDialogComponent extends BaseViewComponentDirective implements OnInit {
/**
* import the projector as view child, to determine when to update
* the preview.

View File

@ -9,7 +9,7 @@ import { OperatorService, Permission } from 'app/core/core-services/operator.ser
import { ProjectorRepositoryService } from 'app/core/repositories/projector/projector-repository.service';
import { PromptService } from 'app/core/ui-services/prompt.service';
import { largeDialogSettings } from 'app/shared/utils/dialog-settings';
import { BaseViewComponent } from 'app/site/base/base-view';
import { BaseViewComponentDirective } from 'app/site/base/base-view';
import { ProjectorEditDialogComponent } from '../projector-edit-dialog/projector-edit-dialog.component';
import { ViewProjector } from '../../models/view-projector';
@ -22,7 +22,7 @@ import { ViewProjector } from '../../models/view-projector';
styleUrls: ['./projector-list-entry.component.scss'],
encapsulation: ViewEncapsulation.None
})
export class ProjectorListEntryComponent extends BaseViewComponent implements OnInit {
export class ProjectorListEntryComponent extends BaseViewComponentDirective implements OnInit {
/**
* The projector shown by this entry.
*/

View File

@ -20,7 +20,7 @@ import { OperatorService, Permission } from 'app/core/core-services/operator.ser
import { ProjectorRepositoryService } from 'app/core/repositories/projector/projector-repository.service';
import { Projector } from 'app/shared/models/core/projector';
import { infoDialogSettings } from 'app/shared/utils/dialog-settings';
import { BaseViewComponent } from 'app/site/base/base-view';
import { BaseViewComponentDirective } from 'app/site/base/base-view';
import { ViewProjector } from '../../models/view-projector';
/**
@ -33,7 +33,7 @@ import { ViewProjector } from '../../models/view-projector';
changeDetection: ChangeDetectionStrategy.OnPush,
encapsulation: ViewEncapsulation.None
})
export class ProjectorListComponent extends BaseViewComponent implements OnInit, AfterViewInit, OnDestroy {
export class ProjectorListComponent extends BaseViewComponentDirective implements OnInit, AfterViewInit, OnDestroy {
/**
* The create form.
*/

View File

@ -5,7 +5,8 @@ export interface ProjectionDefaultTitleInformation {
display_name: string;
}
export class ViewProjectionDefault extends BaseViewModel<ProjectionDefault>
export class ViewProjectionDefault
extends BaseViewModel<ProjectionDefault>
implements ProjectionDefaultTitleInformation {
public static COLLECTIONSTRING = ProjectionDefault.COLLECTIONSTRING;
protected _collectionString = ProjectionDefault.COLLECTIONSTRING;

View File

@ -5,7 +5,8 @@ import { ProjectorElementBuildDeskriptor } from 'app/site/base/projectable';
export type ProjectorMessageTitleInformation = object;
export class ViewProjectorMessage extends BaseProjectableViewModel<ProjectorMessage>
export class ViewProjectorMessage
extends BaseProjectableViewModel<ProjectorMessage>
implements ProjectorMessageTitleInformation {
public static COLLECTIONSTRING = ProjectorMessage.COLLECTIONSTRING;
protected _collectionString = ProjectorMessage.COLLECTIONSTRING;

View File

@ -14,7 +14,7 @@ import { PromptService } from 'app/core/ui-services/prompt.service';
import { ItemVisibilityChoices } from 'app/shared/models/agenda/item';
import { Topic } from 'app/shared/models/topics/topic';
import { ViewItem } from 'app/site/agenda/models/view-item';
import { BaseViewComponent } from 'app/site/base/base-view';
import { BaseViewComponentDirective } from 'app/site/base/base-view';
import { CreateTopic } from '../../models/create-topic';
import { ViewTopic } from '../../models/view-topic';
@ -26,7 +26,7 @@ import { ViewTopic } from '../../models/view-topic';
templateUrl: './topic-detail.component.html',
styleUrls: ['./topic-detail.component.scss']
})
export class TopicDetailComponent extends BaseViewComponent {
export class TopicDetailComponent extends BaseViewComponentDirective {
/**
* Determine if the topic is in edit mode
*/

View File

@ -12,7 +12,7 @@ import { AppPermissions, GroupRepositoryService } from 'app/core/repositories/us
import { PromptService } from 'app/core/ui-services/prompt.service';
import { Group } from 'app/shared/models/users/group';
import { infoDialogSettings } from 'app/shared/utils/dialog-settings';
import { BaseViewComponent } from 'app/site/base/base-view';
import { BaseViewComponentDirective } from 'app/site/base/base-view';
import { ViewGroup } from '../../models/view-group';
/**
@ -23,7 +23,7 @@ import { ViewGroup } from '../../models/view-group';
templateUrl: './group-list.component.html',
styleUrls: ['./group-list.component.scss']
})
export class GroupListComponent extends BaseViewComponent implements OnInit {
export class GroupListComponent extends BaseViewComponentDirective implements OnInit {
/**
* Holds all Groups
*/

View File

@ -8,7 +8,7 @@ import { TranslateService } from '@ngx-translate/core';
import { OperatorService, Permission } from 'app/core/core-services/operator.service';
import { UserRepositoryService } from 'app/core/repositories/users/user-repository.service';
import { BaseViewComponent } from 'app/site/base/base-view';
import { BaseViewComponentDirective } from 'app/site/base/base-view';
import { ViewUser } from '../../models/view-user';
/**
@ -19,7 +19,7 @@ import { ViewUser } from '../../models/view-user';
templateUrl: './password.component.html',
styleUrls: ['./password.component.scss']
})
export class PasswordComponent extends BaseViewComponent implements OnInit {
export class PasswordComponent extends BaseViewComponentDirective implements OnInit {
/**
* the user that is currently worked own
*/

View File

@ -15,7 +15,7 @@ import { ConfigService } from 'app/core/ui-services/config.service';
import { PromptService } from 'app/core/ui-services/prompt.service';
import { genders } from 'app/shared/models/users/user';
import { OneOfValidator } from 'app/shared/validators/one-of-validator';
import { BaseViewComponent } from 'app/site/base/base-view';
import { BaseViewComponentDirective } from 'app/site/base/base-view';
import { PollService } from 'app/site/polls/services/poll.service';
import { UserPdfExportService } from '../../services/user-pdf-export.service';
import { ViewGroup } from '../../models/view-group';
@ -35,7 +35,7 @@ interface UserBackends {
templateUrl: './user-detail.component.html',
styleUrls: ['./user-detail.component.scss']
})
export class UserDetailComponent extends BaseViewComponent implements OnInit {
export class UserDetailComponent extends BaseViewComponentDirective implements OnInit {
/**
* Info form object
*/

View File

@ -13,7 +13,8 @@ import { CommonListOfSpeakersSlideData } from './common-list-of-speakers-slide-d
templateUrl: './common-list-of-speakers-slide.component.html',
styleUrls: ['./common-list-of-speakers-slide.component.scss']
})
export class CommonListOfSpeakersSlideComponent extends BaseSlideComponentDirective<CommonListOfSpeakersSlideData>
export class CommonListOfSpeakersSlideComponent
extends BaseSlideComponentDirective<CommonListOfSpeakersSlideData>
implements OnInit {
@Input()
public set data(value: SlideData<CommonListOfSpeakersSlideData, ProjectorElement>) {

View File

@ -2,7 +2,7 @@ import { Component } from '@angular/core';
import { PollState } from 'app/shared/models/poll/base-poll';
import { AssignmentPollService } from 'app/site/assignments/modules/assignment-poll/services/assignment-poll.service';
import { BasePollSlideComponent } from 'app/slides/polls/base-poll-slide.component';
import { BasePollSlideComponentDirective } from 'app/slides/polls/base-poll-slide.component';
import { AssignmentPollSlideData } from './assignment-poll-slide-data';
@Component({
@ -10,7 +10,7 @@ import { AssignmentPollSlideData } from './assignment-poll-slide-data';
templateUrl: './assignment-poll-slide.component.html',
styleUrls: ['./assignment-poll-slide.component.scss']
})
export class AssignmentPollSlideComponent extends BasePollSlideComponent<
export class AssignmentPollSlideComponent extends BasePollSlideComponentDirective<
AssignmentPollSlideData,
AssignmentPollService
> {

View File

@ -19,7 +19,8 @@ export interface IBaseScaleScrollSlideComponent<T extends object> extends BaseSl
* that the slide itself (and not the slide container) will take care of this.
*/
@Directive()
export abstract class BaseScaleScrollSlideComponentDirective<T extends object> extends BaseSlideComponentDirective<T>
export abstract class BaseScaleScrollSlideComponentDirective<T extends object>
extends BaseSlideComponentDirective<T>
implements IBaseScaleScrollSlideComponent<T> {
@Input()
public scroll: number;

View File

@ -1,4 +1,4 @@
import { Input } from '@angular/core';
import { Directive, Input } from '@angular/core';
import { SlideData } from 'app/core/core-services/projector-data.service';
import { ProjectorElement } from 'app/shared/models/core/projector';
@ -8,6 +8,7 @@ import { ViewProjector } from 'app/site/projector/models/view-projector';
* Every slide has to extends this base class. It forces the slides
* to have an input for the slidedata.
*/
@Directive()
export abstract class BaseSlideComponentDirective<T extends object, P extends ProjectorElement = ProjectorElement> {
/**
* Each slide must take slide data.

View File

@ -32,5 +32,6 @@ export class MediafileSlideComponent extends BaseSlideComponentDirective<
public constructor() {
super();
(window as any).pdfWorkerSrc = '/assets/js/pdf.worker.min.js';
}
}

View File

@ -1,3 +1,5 @@
import { Directive } from '@angular/core';
import { TranslateService } from '@ngx-translate/core';
import { MotionRepositoryService } from 'app/core/repositories/motions/motion-repository.service';
@ -15,7 +17,8 @@ export interface ReferencedMotions {
* Base slide for motions and motion blocks. This Provides the functionality of
* replacing referenced motions (format: `[motion:<id>]`) in strings.
*/
export class BaseMotionSlideComponent<T extends object> extends BaseSlideComponentDirective<T> {
@Directive()
export class BaseMotionSlideComponentDirective<T extends object> extends BaseSlideComponentDirective<T> {
public constructor(protected translate: TranslateService, protected motionRepo: MotionRepositoryService) {
super();
}

View File

@ -4,7 +4,7 @@ import { TranslateService } from '@ngx-translate/core';
import { SlideData } from 'app/core/core-services/projector-data.service';
import { MotionRepositoryService } from 'app/core/repositories/motions/motion-repository.service';
import { BaseMotionSlideComponent } from '../base/base-motion-slide';
import { BaseMotionSlideComponentDirective } from '../base/base-motion-slide';
import { MotionBlockSlideData, MotionBlockSlideMotionRepresentation } from './motion-block-slide-data';
// Layout:
@ -27,7 +27,7 @@ const MAX_COLUMNS = 3;
templateUrl: './motion-block-slide.component.html',
styleUrls: ['./motion-block-slide.component.scss']
})
export class MotionBlockSlideComponent extends BaseMotionSlideComponent<MotionBlockSlideData> {
export class MotionBlockSlideComponent extends BaseMotionSlideComponentDirective<MotionBlockSlideData> {
/**
* For sorting motion blocks by their displayed title
*/

View File

@ -3,7 +3,7 @@ import { Component } from '@angular/core';
import { PollState } from 'app/shared/models/poll/base-poll';
import { MotionPollService } from 'app/site/motions/services/motion-poll.service';
import { PollData, PollTableData } from 'app/site/polls/services/poll.service';
import { BasePollSlideComponent } from 'app/slides/polls/base-poll-slide.component';
import { BasePollSlideComponentDirective } from 'app/slides/polls/base-poll-slide.component';
import { MotionPollSlideData } from './motion-poll-slide-data';
@Component({
@ -11,7 +11,7 @@ import { MotionPollSlideData } from './motion-poll-slide-data';
templateUrl: './motion-poll-slide.component.html',
styleUrls: ['./motion-poll-slide.component.scss']
})
export class MotionPollSlideComponent extends BasePollSlideComponent<MotionPollSlideData, MotionPollService> {
export class MotionPollSlideComponent extends BasePollSlideComponentDirective<MotionPollSlideData, MotionPollService> {
public PollState = PollState;
public pollData: PollData;

Some files were not shown because too many files have changed in this diff Show More