Update to Angular 10

Update @angular/core @angular/cli
Update material, search-select, cdk, ngrid
Update localstorage
Update rxjs
Update ngx-translate
Update ngx-translate-extract
Update @schematics/angular
Update some deps
Update dev deps
Fix css imports, lint
Downgrad CDK and Material for ngrid
Update docker
Provide pdf worker
Move static file output to django folder
Update readme / used files
Update package-lock.json for npm ci
This commit is contained in:
Sean 2020-08-31 17:37:11 +02:00
parent 3b2fbe8915
commit 42dd397fae
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