commit
e1d4a4152a
114
client/README.md
114
client/README.md
@ -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
|
||||
- [@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@3.5.0](https://github.com/tinymce/tinymce-angular), License: Apache-2.0
|
||||
- [acorn@7.1.1](https://github.com/acornjs/acorn), 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.4](https://github.com/zloirock/core-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@3.8.2](https://github.com/exceljs/exceljs), 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.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
|
||||
- [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.65](https://github.com/bpampuch/pdfmake), 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.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
|
||||
- [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.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
|
||||
- [@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@9.1.0](https://github.com/angular/angular-cli), License: MIT
|
||||
- [@types/jasmine@3.5.10](https://github.com/DefinitelyTyped/DefinitelyTyped), 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/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
|
||||
- [@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@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
|
||||
- [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.0.2](https://github.com/prettier/prettier), License: MIT
|
||||
- [protractor@5.4.3](https://github.com/angular/protractor), License: MIT
|
||||
- [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@8.8.1](https://github.com/TypeStrong/ts-node), License: MIT
|
||||
- [tslint@6.1.0](https://github.com/palantir/tslint), License: Apache-2.0
|
||||
- [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.8.3](https://github.com/Microsoft/TypeScript), License: Apache-2.0
|
||||
- [typescript@3.9.7](https://github.com/Microsoft/TypeScript), License: Apache-2.0
|
||||
|
@ -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"],
|
||||
|
@ -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
18525
client/package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
@ -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"
|
||||
}
|
||||
}
|
||||
|
@ -34,7 +34,8 @@ export abstract class BaseIsAgendaItemAndListOfSpeakersContentObjectRepository<
|
||||
V extends BaseProjectableViewModel & BaseViewModelWithAgendaItem & BaseViewModelWithListOfSpeakers & T,
|
||||
M extends BaseModel,
|
||||
T extends TitleInformationWithAgendaItem
|
||||
> extends BaseRepository<V, M, T>
|
||||
>
|
||||
extends BaseRepository<V, M, T>
|
||||
implements
|
||||
IBaseIsAgendaItemContentObjectRepository<V, M, T>,
|
||||
IBaseIsListOfSpeakersContentObjectRepository<V, M, T> {
|
||||
|
@ -41,7 +41,9 @@ export abstract class BaseIsAgendaItemContentObjectRepository<
|
||||
V extends BaseViewModelWithAgendaItem & T,
|
||||
M extends BaseModel,
|
||||
T extends TitleInformationWithAgendaItem
|
||||
> extends BaseRepository<V, M, T> implements IBaseIsAgendaItemContentObjectRepository<V, M, T> {
|
||||
>
|
||||
extends BaseRepository<V, M, T>
|
||||
implements IBaseIsAgendaItemContentObjectRepository<V, M, T> {
|
||||
public constructor(
|
||||
DS: DataStoreService,
|
||||
dataSend: DataSendService,
|
||||
|
@ -38,7 +38,9 @@ export abstract class BaseIsListOfSpeakersContentObjectRepository<
|
||||
V extends BaseViewModelWithListOfSpeakers & T,
|
||||
M extends BaseModel,
|
||||
T extends TitleInformation
|
||||
> extends BaseRepository<V, M, T> implements IBaseIsListOfSpeakersContentObjectRepository<V, M, T> {
|
||||
>
|
||||
extends BaseRepository<V, M, T>
|
||||
implements IBaseIsListOfSpeakersContentObjectRepository<V, M, T> {
|
||||
public constructor(
|
||||
DS: DataStoreService,
|
||||
dataSend: DataSendService,
|
||||
|
@ -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
|
||||
*/
|
||||
|
@ -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.
|
||||
*/
|
||||
|
@ -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.
|
||||
*/
|
||||
|
@ -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;
|
||||
|
@ -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`.
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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`.
|
||||
|
@ -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>;
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
*/
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
*/
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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'];
|
||||
|
@ -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
|
||||
|
@ -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[] = [];
|
||||
|
@ -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) {
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
*/
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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.
|
||||
*/
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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()
|
||||
|
@ -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.
|
||||
*/
|
||||
|
@ -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.
|
||||
*/
|
||||
|
@ -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.
|
||||
*/
|
||||
|
@ -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.
|
||||
*/
|
||||
|
@ -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
|
||||
*/
|
||||
|
@ -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
|
||||
*/
|
||||
|
@ -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.
|
||||
*/
|
||||
|
@ -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,
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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.
|
||||
*/
|
||||
|
@ -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
|
||||
*/
|
||||
|
@ -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
|
||||
*/
|
||||
|
@ -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>;
|
||||
|
||||
|
@ -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
|
||||
*/
|
||||
|
@ -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
|
||||
*/
|
||||
|
@ -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.
|
||||
*/
|
||||
|
@ -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
|
||||
*/
|
||||
|
@ -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.
|
||||
*/
|
||||
|
@ -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
|
||||
*/
|
||||
|
@ -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
|
||||
*/
|
||||
|
@ -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
|
||||
*/
|
||||
|
@ -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.
|
||||
*/
|
||||
|
@ -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[] = [
|
||||
{
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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[] = [
|
||||
{
|
||||
|
@ -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
|
||||
*/
|
||||
|
@ -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.
|
||||
*/
|
||||
|
@ -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>;
|
||||
|
||||
|
@ -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.
|
||||
|
@ -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>;
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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([]);
|
||||
|
@ -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.
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
*/
|
||||
|
@ -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
|
||||
*/
|
||||
|
@ -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
|
||||
*/
|
||||
|
@ -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
|
||||
*/
|
||||
|
@ -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.
|
||||
*/
|
||||
|
@ -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.
|
||||
*/
|
||||
|
@ -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.
|
||||
|
@ -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.
|
||||
*/
|
||||
|
@ -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.
|
||||
*/
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
*/
|
||||
|
@ -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
|
||||
*/
|
||||
|
@ -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
|
||||
*/
|
||||
|
@ -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
|
||||
*/
|
||||
|
@ -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>) {
|
||||
|
@ -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
|
||||
> {
|
||||
|
@ -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;
|
||||
|
@ -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.
|
||||
|
@ -32,5 +32,6 @@ export class MediafileSlideComponent extends BaseSlideComponentDirective<
|
||||
|
||||
public constructor() {
|
||||
super();
|
||||
(window as any).pdfWorkerSrc = '/assets/js/pdf.worker.min.js';
|
||||
}
|
||||
}
|
||||
|
@ -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();
|
||||
}
|
||||
|
@ -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
|
||||
*/
|
||||
|
@ -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
Loading…
Reference in New Issue
Block a user