Merge pull request #4790 from FinnStutzenstein/cleanup

Cleanup
This commit is contained in:
Sean 2019-06-28 12:02:07 +02:00 committed by GitHub
commit ec9760216a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
47 changed files with 123 additions and 72 deletions

View File

@ -17,7 +17,7 @@ import { OpenSlidesTranslateModule } from './core/translate/openslides-translate
// PWA // PWA
import { ServiceWorkerModule } from '@angular/service-worker'; import { ServiceWorkerModule } from '@angular/service-worker';
import { environment } from '../environments/environment'; import { environment } from '../environments/environment';
import { GlobalSpinnerComponent } from './site/global-spinner/global-spinner.component'; import { GlobalSpinnerComponent } from './site/common/components/global-spinner/global-spinner.component';
/** /**
* Returns a function that returns a promis that will be resolved, if all apps are loaded. * Returns a function that returns a promis that will be resolved, if all apps are loaded.

View File

@ -19,6 +19,7 @@ import { ProjectorAppConfig } from 'app/site/projector/projector.config';
import { BaseRepository } from 'app/core/repositories/base-repository'; import { BaseRepository } from 'app/core/repositories/base-repository';
import { OnAfterAppsLoaded } from '../onAfterAppsLoaded'; import { OnAfterAppsLoaded } from '../onAfterAppsLoaded';
import { ServicesToLoadOnAppsLoaded } from '../core.module'; import { ServicesToLoadOnAppsLoaded } from '../core.module';
import { TopicsAppConfig } from 'app/site/topics/topics.config';
/** /**
* A list of all app configurations of all delivered apps. * A list of all app configurations of all delivered apps.
@ -33,7 +34,8 @@ const appConfigs: AppConfig[] = [
TagAppConfig, TagAppConfig,
UsersAppConfig, UsersAppConfig,
HistoryAppConfig, HistoryAppConfig,
ProjectorAppConfig ProjectorAppConfig,
TopicsAppConfig
]; ];
/** /**

View File

@ -7,7 +7,7 @@ import { DataStoreService } from 'app/core/core-services/data-store.service';
import { DataSendService } from 'app/core/core-services/data-send.service'; import { DataSendService } from 'app/core/core-services/data-send.service';
import { Mediafile } from 'app/shared/models/mediafiles/mediafile'; import { Mediafile } from 'app/shared/models/mediafiles/mediafile';
import { Topic } from 'app/shared/models/topics/topic'; import { Topic } from 'app/shared/models/topics/topic';
import { ViewTopic, TopicTitleInformation } from 'app/site/agenda/models/view-topic'; import { ViewTopic, TopicTitleInformation } from 'app/site/topics/models/view-topic';
import { ViewModelStoreService } from 'app/core/core-services/view-model-store.service'; import { ViewModelStoreService } from 'app/core/core-services/view-model-store.service';
import { ViewMediafile } from 'app/site/mediafiles/models/view-mediafile'; import { ViewMediafile } from 'app/site/mediafiles/models/view-mediafile';
import { ViewItem } from 'app/site/agenda/models/view-item'; import { ViewItem } from 'app/site/agenda/models/view-item';

View File

@ -5,13 +5,11 @@ import { AgendaImportListComponent } from './components/agenda-import-list/agend
import { AgendaListComponent } from './components/agenda-list/agenda-list.component'; import { AgendaListComponent } from './components/agenda-list/agenda-list.component';
import { AgendaSortComponent } from './components/agenda-sort/agenda-sort.component'; import { AgendaSortComponent } from './components/agenda-sort/agenda-sort.component';
import { ListOfSpeakersComponent } from './components/list-of-speakers/list-of-speakers.component'; import { ListOfSpeakersComponent } from './components/list-of-speakers/list-of-speakers.component';
import { TopicDetailComponent } from './components/topic-detail/topic-detail.component';
import { WatchSortingTreeGuard } from 'app/shared/utils/watch-sorting-tree.guard'; import { WatchSortingTreeGuard } from 'app/shared/utils/watch-sorting-tree.guard';
const routes: Routes = [ const routes: Routes = [
{ path: '', component: AgendaListComponent, pathMatch: 'full' }, { path: '', component: AgendaListComponent, pathMatch: 'full' },
{ path: 'import', component: AgendaImportListComponent, data: { basePerm: 'agenda.can_manage' } }, { path: 'import', component: AgendaImportListComponent, data: { basePerm: 'agenda.can_manage' } },
{ path: 'topics/new', component: TopicDetailComponent, data: { basePerm: 'agenda.can_manage' } },
{ {
path: 'sort-agenda', path: 'sort-agenda',
component: AgendaSortComponent, component: AgendaSortComponent,
@ -19,8 +17,7 @@ const routes: Routes = [
data: { basePerm: 'agenda.can_manage' } data: { basePerm: 'agenda.can_manage' }
}, },
{ path: 'speakers', component: ListOfSpeakersComponent, data: { basePerm: 'agenda.can_see_list_of_speakers' } }, { path: 'speakers', component: ListOfSpeakersComponent, data: { basePerm: 'agenda.can_see_list_of_speakers' } },
{ path: 'speakers/:id', component: ListOfSpeakersComponent, data: { basePerm: 'agenda.can_see_list_of_speakers' } }, { path: 'speakers/:id', component: ListOfSpeakersComponent, data: { basePerm: 'agenda.can_see_list_of_speakers' } }
{ path: 'topics/:id', component: TopicDetailComponent, data: { basePerm: 'agenda.can_see' } }
]; ];
@NgModule({ @NgModule({

View File

@ -1,9 +1,6 @@
import { AppConfig } from '../../core/app-config'; import { AppConfig } from '../../core/app-config';
import { Item } from '../../shared/models/agenda/item'; import { Item } from '../../shared/models/agenda/item';
import { Topic } from '../../shared/models/topics/topic';
import { ItemRepositoryService } from 'app/core/repositories/agenda/item-repository.service'; import { ItemRepositoryService } from 'app/core/repositories/agenda/item-repository.service';
import { TopicRepositoryService } from 'app/core/repositories/topics/topic-repository.service';
import { ViewTopic } from './models/view-topic';
import { ViewItem } from './models/view-item'; import { ViewItem } from './models/view-item';
import { ListOfSpeakers } from 'app/shared/models/agenda/list-of-speakers'; import { ListOfSpeakers } from 'app/shared/models/agenda/list-of-speakers';
import { ViewListOfSpeakers } from './models/view-list-of-speakers'; import { ViewListOfSpeakers } from './models/view-list-of-speakers';
@ -18,13 +15,6 @@ export const AgendaAppConfig: AppConfig = {
model: ListOfSpeakers, model: ListOfSpeakers,
viewModel: ViewListOfSpeakers, viewModel: ViewListOfSpeakers,
repository: ListOfSpeakersRepositoryService repository: ListOfSpeakersRepositoryService
},
{
collectionString: 'topics/topic',
model: Topic,
viewModel: ViewTopic,
searchOrder: 1,
repository: TopicRepositoryService
} }
], ],
mainMenuEntries: [ mainMenuEntries: [

View File

@ -6,7 +6,6 @@ import { AgendaListComponent } from './components/agenda-list/agenda-list.compon
import { ItemInfoDialogComponent } from './components/item-info-dialog/item-info-dialog.component'; import { ItemInfoDialogComponent } from './components/item-info-dialog/item-info-dialog.component';
import { AgendaRoutingModule } from './agenda-routing.module'; import { AgendaRoutingModule } from './agenda-routing.module';
import { SharedModule } from '../../shared/shared.module'; import { SharedModule } from '../../shared/shared.module';
import { TopicDetailComponent } from './components/topic-detail/topic-detail.component';
import { AgendaSortComponent } from './components/agenda-sort/agenda-sort.component'; import { AgendaSortComponent } from './components/agenda-sort/agenda-sort.component';
import { ListOfSpeakersComponent } from './components/list-of-speakers/list-of-speakers.component'; import { ListOfSpeakersComponent } from './components/list-of-speakers/list-of-speakers.component';
@ -18,7 +17,6 @@ import { ListOfSpeakersComponent } from './components/list-of-speakers/list-of-s
entryComponents: [ItemInfoDialogComponent], entryComponents: [ItemInfoDialogComponent],
declarations: [ declarations: [
AgendaListComponent, AgendaListComponent,
TopicDetailComponent,
ItemInfoDialogComponent, ItemInfoDialogComponent,
AgendaImportListComponent, AgendaImportListComponent,
AgendaSortComponent, AgendaSortComponent,

View File

@ -4,12 +4,12 @@ import { MatSnackBar } from '@angular/material';
import { Title } from '@angular/platform-browser'; import { Title } from '@angular/platform-browser';
import { TranslateService } from '@ngx-translate/core'; import { TranslateService } from '@ngx-translate/core';
import { AgendaImportService } from '../../agenda-import.service'; import { AgendaImportService } from '../../services/agenda-import.service';
import { BaseImportListComponent } from 'app/site/base/base-import-list'; import { BaseImportListComponent } from 'app/site/base/base-import-list';
import { CsvExportService } from 'app/core/ui-services/csv-export.service'; import { CsvExportService } from 'app/core/ui-services/csv-export.service';
import { DurationService } from 'app/core/ui-services/duration.service'; import { DurationService } from 'app/core/ui-services/duration.service';
import { ItemVisibilityChoices } from 'app/shared/models/agenda/item'; import { ItemVisibilityChoices } from 'app/shared/models/agenda/item';
import { ViewCreateTopic } from '../../models/view-create-topic'; import { ViewCreateTopic } from 'app/site/topics/models/view-create-topic';
/** /**
* Component for the agenda import list view. * Component for the agenda import list view.

View File

@ -1,6 +1,6 @@
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
import { MatSnackBar, MatDialog } from '@angular/material'; import { MatSnackBar, MatDialog } from '@angular/material';
import { Router, ActivatedRoute } from '@angular/router'; import { Router } from '@angular/router';
import { Title } from '@angular/platform-browser'; import { Title } from '@angular/platform-browser';
import { TranslateService } from '@ngx-translate/core'; import { TranslateService } from '@ngx-translate/core';
@ -16,7 +16,7 @@ import { DurationService } from 'app/core/ui-services/duration.service';
import { ItemInfoDialogComponent } from '../item-info-dialog/item-info-dialog.component'; import { ItemInfoDialogComponent } from '../item-info-dialog/item-info-dialog.component';
import { ItemRepositoryService } from 'app/core/repositories/agenda/item-repository.service'; import { ItemRepositoryService } from 'app/core/repositories/agenda/item-repository.service';
import { ListOfSpeakersRepositoryService } from 'app/core/repositories/agenda/list-of-speakers-repository.service'; import { ListOfSpeakersRepositoryService } from 'app/core/repositories/agenda/list-of-speakers-repository.service';
import { ListViewBaseComponent } from 'app/site/base/list-view-base'; import { BaseListViewComponent } from 'app/site/base/base-list-view';
import { OperatorService } from 'app/core/core-services/operator.service'; import { OperatorService } from 'app/core/core-services/operator.service';
import { ProjectorElementBuildDeskriptor } from 'app/site/base/projectable'; import { ProjectorElementBuildDeskriptor } from 'app/site/base/projectable';
import { PromptService } from 'app/core/ui-services/prompt.service'; import { PromptService } from 'app/core/ui-services/prompt.service';
@ -26,7 +26,7 @@ import { TopicRepositoryService } from 'app/core/repositories/topics/topic-repos
import { ViewportService } from 'app/core/ui-services/viewport.service'; import { ViewportService } from 'app/core/ui-services/viewport.service';
import { ViewItem } from '../../models/view-item'; import { ViewItem } from '../../models/view-item';
import { ViewListOfSpeakers } from '../../models/view-list-of-speakers'; import { ViewListOfSpeakers } from '../../models/view-list-of-speakers';
import { ViewTopic } from '../../models/view-topic'; import { ViewTopic } from 'app/site/topics/models/view-topic';
/** /**
* List view for the agenda. * List view for the agenda.
@ -36,7 +36,7 @@ import { ViewTopic } from '../../models/view-topic';
templateUrl: './agenda-list.component.html', templateUrl: './agenda-list.component.html',
styleUrls: ['./agenda-list.component.scss'] styleUrls: ['./agenda-list.component.scss']
}) })
export class AgendaListComponent extends ListViewBaseComponent<ViewItem> implements OnInit { export class AgendaListComponent extends BaseListViewComponent<ViewItem> implements OnInit {
/** /**
* Show or hide the numbering button * Show or hide the numbering button
*/ */
@ -111,7 +111,6 @@ export class AgendaListComponent extends ListViewBaseComponent<ViewItem> impleme
* @param translate translations * @param translate translations
* @param matSnackBar Shows errors and messages * @param matSnackBar Shows errors and messages
* @param operator The current user * @param operator The current user
* @param route Angulars ActivatedRoute
* @param router Angulars router * @param router Angulars router
* @param repo the agenda repository, * @param repo the agenda repository,
* @param promptService the delete prompt * @param promptService the delete prompt
@ -130,7 +129,6 @@ export class AgendaListComponent extends ListViewBaseComponent<ViewItem> impleme
matSnackBar: MatSnackBar, matSnackBar: MatSnackBar,
storage: StorageService, storage: StorageService,
private operator: OperatorService, private operator: OperatorService,
protected route: ActivatedRoute,
private router: Router, private router: Router,
public repo: ItemRepositoryService, public repo: ItemRepositoryService,
private promptService: PromptService, private promptService: PromptService,
@ -231,7 +229,7 @@ export class AgendaListComponent extends ListViewBaseComponent<ViewItem> impleme
* Comes from the HeadBar Component * Comes from the HeadBar Component
*/ */
public onPlusButton(): void { public onPlusButton(): void {
this.router.navigate(['topics/new'], { relativeTo: this.route }); this.router.navigate(['/topics/new']);
} }
/** /**

View File

@ -1,14 +1,15 @@
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { MatSnackBar } from '@angular/material'; import { MatSnackBar } from '@angular/material';
import { Papa } from 'ngx-papaparse'; import { Papa } from 'ngx-papaparse';
import { TranslateService } from '@ngx-translate/core'; import { TranslateService } from '@ngx-translate/core';
import { BaseImportService, NewEntry } from 'app/core/ui-services/base-import.service'; import { BaseImportService, NewEntry } from 'app/core/ui-services/base-import.service';
import { CreateTopic } from './models/create-topic'; import { CreateTopic } from '../../topics/models/create-topic';
import { DurationService } from 'app/core/ui-services/duration.service'; import { DurationService } from 'app/core/ui-services/duration.service';
import { ItemVisibilityChoices } from 'app/shared/models/agenda/item'; import { ItemVisibilityChoices } from 'app/shared/models/agenda/item';
import { TopicRepositoryService } from '../../core/repositories/topics/topic-repository.service'; import { TopicRepositoryService } from 'app/core/repositories/topics/topic-repository.service';
import { ViewCreateTopic } from './models/view-create-topic'; import { ViewCreateTopic } from 'app/site/topics/models/view-create-topic';
@Injectable({ @Injectable({
providedIn: 'root' providedIn: 'root'

View File

@ -9,7 +9,7 @@ import { PblColumnDefinition } from '@pebula/ngrid';
import { AssignmentFilterListService } from '../../services/assignment-filter.service'; import { AssignmentFilterListService } from '../../services/assignment-filter.service';
import { AssignmentSortListService } from '../../services/assignment-sort-list.service'; import { AssignmentSortListService } from '../../services/assignment-sort-list.service';
import { AssignmentRepositoryService } from 'app/core/repositories/assignments/assignment-repository.service'; import { AssignmentRepositoryService } from 'app/core/repositories/assignments/assignment-repository.service';
import { ListViewBaseComponent } from 'app/site/base/list-view-base'; import { BaseListViewComponent } from 'app/site/base/base-list-view';
import { OperatorService } from 'app/core/core-services/operator.service'; import { OperatorService } from 'app/core/core-services/operator.service';
import { PromptService } from 'app/core/ui-services/prompt.service'; import { PromptService } from 'app/core/ui-services/prompt.service';
import { StorageService } from 'app/core/core-services/storage.service'; import { StorageService } from 'app/core/core-services/storage.service';
@ -24,7 +24,7 @@ import { AssignmentPdfExportService } from '../../services/assignment-pdf-export
templateUrl: './assignment-list.component.html', templateUrl: './assignment-list.component.html',
styleUrls: ['./assignment-list.component.scss'] styleUrls: ['./assignment-list.component.scss']
}) })
export class AssignmentListComponent extends ListViewBaseComponent<ViewAssignment> implements OnInit { export class AssignmentListComponent extends BaseListViewComponent<ViewAssignment> implements OnInit {
/** /**
* The different phases of an assignment. Info is fetched from server * The different phases of an assignment. Info is fetched from server
*/ */

View File

@ -8,7 +8,7 @@ import { UserRepositoryService } from 'app/core/repositories/users/user-reposito
import { AssignmentRepositoryService } from 'app/core/repositories/assignments/assignment-repository.service'; import { AssignmentRepositoryService } from 'app/core/repositories/assignments/assignment-repository.service';
import { ViewAssignmentPoll } from '../models/view-assignment-poll'; import { ViewAssignmentPoll } from '../models/view-assignment-poll';
import { AssignmentPollMethod } from './assignment-poll.service'; import { AssignmentPollMethod } from './assignment-poll.service';
import { PollPdfService, BallotCountChoices, AbstractPollData } from 'app/core/core-services/poll-pdf-service'; import { PollPdfService, BallotCountChoices, AbstractPollData } from 'app/core/ui-services/poll-pdf-service';
/** /**
* Creates a pdf for a motion poll. Takes as input any motionPoll * Creates a pdf for a motion poll. Takes as input any motionPoll

View File

@ -10,7 +10,7 @@ import { BaseViewModel } from './base-view-model';
import { StorageService } from 'app/core/core-services/storage.service'; import { StorageService } from 'app/core/core-services/storage.service';
import { ViewUser } from '../users/models/view-user'; import { ViewUser } from '../users/models/view-user';
export abstract class ListViewBaseComponent<V extends BaseViewModel> extends BaseViewComponent implements OnDestroy { export abstract class BaseListViewComponent<V extends BaseViewModel> extends BaseViewComponent implements OnDestroy {
/** /**
* The source of the table data, will be filled by an event emitter * The source of the table data, will be filled by an event emitter
*/ */

View File

@ -8,7 +8,8 @@ import { TranslateService } from '@ngx-translate/core';
import { PblColumnDefinition } from '@pebula/ngrid'; import { PblColumnDefinition } from '@pebula/ngrid';
import { ColumnRestriction } from 'app/shared/components/list-view-table/list-view-table.component'; import { ColumnRestriction } from 'app/shared/components/list-view-table/list-view-table.component';
import { ListViewBaseComponent } from 'app/site/base/list-view-base'; import { BaseListViewComponent } from 'app/site/base/base-list-view';
import { ViewMediafile } from 'app/site/mediafiles/models/view-mediafile';
import { MediafileRepositoryService } from 'app/core/repositories/mediafiles/mediafile-repository.service'; import { MediafileRepositoryService } from 'app/core/repositories/mediafiles/mediafile-repository.service';
import { MediaManageService } from 'app/core/ui-services/media-manage.service'; import { MediaManageService } from 'app/core/ui-services/media-manage.service';
import { MediafileFilterListService } from '../../services/mediafile-filter.service'; import { MediafileFilterListService } from '../../services/mediafile-filter.service';
@ -17,7 +18,6 @@ import { OperatorService } from 'app/core/core-services/operator.service';
import { PromptService } from 'app/core/ui-services/prompt.service'; import { PromptService } from 'app/core/ui-services/prompt.service';
import { StorageService } from 'app/core/core-services/storage.service'; import { StorageService } from 'app/core/core-services/storage.service';
import { ViewportService } from 'app/core/ui-services/viewport.service'; import { ViewportService } from 'app/core/ui-services/viewport.service';
import { ViewMediafile } from '../../models/view-mediafile';
/** /**
* Lists all the uploaded files. * Lists all the uploaded files.
@ -27,7 +27,7 @@ import { ViewMediafile } from '../../models/view-mediafile';
templateUrl: './mediafile-list.component.html', templateUrl: './mediafile-list.component.html',
styleUrls: ['./mediafile-list.component.scss'] styleUrls: ['./mediafile-list.component.scss']
}) })
export class MediafileListComponent extends ListViewBaseComponent<ViewMediafile> implements OnInit { export class MediafileListComponent extends BaseListViewComponent<ViewMediafile> implements OnInit {
/** /**
* Holds the actions for logos. Updated via an observable * Holds the actions for logos. Updated via an observable
*/ */

View File

@ -8,7 +8,7 @@ import { TranslateService } from '@ngx-translate/core';
import { PblColumnDefinition } from '@pebula/ngrid'; import { PblColumnDefinition } from '@pebula/ngrid';
import { ItemRepositoryService } from 'app/core/repositories/agenda/item-repository.service'; import { ItemRepositoryService } from 'app/core/repositories/agenda/item-repository.service';
import { ListViewBaseComponent } from 'app/site/base/list-view-base'; import { BaseListViewComponent } from 'app/site/base/base-list-view';
import { MotionBlock } from 'app/shared/models/motions/motion-block'; import { MotionBlock } from 'app/shared/models/motions/motion-block';
import { MotionBlockRepositoryService } from 'app/core/repositories/motions/motion-block-repository.service'; import { MotionBlockRepositoryService } from 'app/core/repositories/motions/motion-block-repository.service';
import { MotionBlockSortService } from 'app/site/motions/services/motion-block-sort.service'; import { MotionBlockSortService } from 'app/site/motions/services/motion-block-sort.service';
@ -25,7 +25,7 @@ import { ViewMotionBlock } from 'app/site/motions/models/view-motion-block';
templateUrl: './motion-block-list.component.html', templateUrl: './motion-block-list.component.html',
styleUrls: ['./motion-block-list.component.scss'] styleUrls: ['./motion-block-list.component.scss']
}) })
export class MotionBlockListComponent extends ListViewBaseComponent<ViewMotionBlock> implements OnInit { export class MotionBlockListComponent extends BaseListViewComponent<ViewMotionBlock> implements OnInit {
/** /**
* Holds the create form * Holds the create form
*/ */

View File

@ -8,7 +8,7 @@ import { PblColumnDefinition } from '@pebula/ngrid';
import { CategoryRepositoryService } from 'app/core/repositories/motions/category-repository.service'; import { CategoryRepositoryService } from 'app/core/repositories/motions/category-repository.service';
import { ConfigService } from 'app/core/ui-services/config.service'; import { ConfigService } from 'app/core/ui-services/config.service';
import { ListViewBaseComponent } from 'app/site/base/list-view-base'; import { BaseListViewComponent } from 'app/site/base/base-list-view';
import { MotionBlockRepositoryService } from 'app/core/repositories/motions/motion-block-repository.service'; import { MotionBlockRepositoryService } from 'app/core/repositories/motions/motion-block-repository.service';
import { MotionRepositoryService } from 'app/core/repositories/motions/motion-repository.service'; import { MotionRepositoryService } from 'app/core/repositories/motions/motion-repository.service';
import { TagRepositoryService } from 'app/core/repositories/tags/tag-repository.service'; import { TagRepositoryService } from 'app/core/repositories/tags/tag-repository.service';
@ -72,7 +72,7 @@ interface InfoDialog {
templateUrl: './motion-list.component.html', templateUrl: './motion-list.component.html',
styleUrls: ['./motion-list.component.scss'] styleUrls: ['./motion-list.component.scss']
}) })
export class MotionListComponent extends ListViewBaseComponent<ViewMotion> implements OnInit { export class MotionListComponent extends BaseListViewComponent<ViewMotion> implements OnInit {
/** /**
* Reference to the dialog for quick editing meta information. * Reference to the dialog for quick editing meta information.
*/ */

View File

@ -4,7 +4,7 @@ import { Title } from '@angular/platform-browser';
import { TranslateService } from '@ngx-translate/core'; import { TranslateService } from '@ngx-translate/core';
import { PblColumnDefinition } from '@pebula/ngrid'; import { PblColumnDefinition } from '@pebula/ngrid';
import { ListViewBaseComponent } from 'app/site/base/list-view-base'; import { BaseListViewComponent } from 'app/site/base/base-list-view';
import { MatSnackBar, MatDialog } from '@angular/material'; import { MatSnackBar, MatDialog } from '@angular/material';
import { PromptService } from 'app/core/ui-services/prompt.service'; import { PromptService } from 'app/core/ui-services/prompt.service';
import { ViewWorkflow } from 'app/site/motions/models/view-workflow'; import { ViewWorkflow } from 'app/site/motions/models/view-workflow';
@ -20,7 +20,7 @@ import { StorageService } from 'app/core/core-services/storage.service';
templateUrl: './workflow-list.component.html', templateUrl: './workflow-list.component.html',
styleUrls: ['./workflow-list.component.scss'] styleUrls: ['./workflow-list.component.scss']
}) })
export class WorkflowListComponent extends ListViewBaseComponent<ViewWorkflow> implements OnInit { export class WorkflowListComponent extends BaseListViewComponent<ViewWorkflow> implements OnInit {
/** /**
* Holds the new workflow title * Holds the new workflow title
*/ */

View File

@ -10,10 +10,10 @@ import {
import { sortMotionPropertyList } from '../motion-import-export-order'; import { sortMotionPropertyList } from '../motion-import-export-order';
import { MotionRepositoryService } from 'app/core/repositories/motions/motion-repository.service'; import { MotionRepositoryService } from 'app/core/repositories/motions/motion-repository.service';
import { ChangeRecoMode, ViewMotion } from '../models/view-motion'; import { ChangeRecoMode, ViewMotion } from '../models/view-motion';
import { ChangeRecommendationRepositoryService } from '../../../core/repositories/motions/change-recommendation-repository.service'; import { ChangeRecommendationRepositoryService } from 'app/core/repositories/motions/change-recommendation-repository.service';
import { ConfigService } from '../../../core/ui-services/config.service'; import { ConfigService } from 'app/core/ui-services/config.service';
import { ViewUnifiedChange } from '../../../shared/models/motions/view-unified-change'; import { ViewUnifiedChange } from 'app/shared/models/motions/view-unified-change';
import { LinenumberingService } from '../../../core/ui-services/linenumbering.service'; import { LinenumberingService } from 'app/core/ui-services/linenumbering.service';
/** /**
* Exports CSVs for motions. Collect all CSV types here to have them in one place. * Exports CSVs for motions. Collect all CSV types here to have them in one place.

View File

@ -6,7 +6,7 @@ import { ConfigService } from 'app/core/ui-services/config.service';
import { MotionPoll } from 'app/shared/models/motions/motion-poll'; import { MotionPoll } from 'app/shared/models/motions/motion-poll';
import { MotionRepositoryService } from 'app/core/repositories/motions/motion-repository.service'; import { MotionRepositoryService } from 'app/core/repositories/motions/motion-repository.service';
import { PdfDocumentService } from 'app/core/ui-services/pdf-document.service'; import { PdfDocumentService } from 'app/core/ui-services/pdf-document.service';
import { PollPdfService, AbstractPollData } from 'app/core/core-services/poll-pdf-service'; import { PollPdfService, AbstractPollData } from 'app/core/ui-services/poll-pdf-service';
import { UserRepositoryService } from 'app/core/repositories/users/user-repository.service'; import { UserRepositoryService } from 'app/core/repositories/users/user-repository.service';
type BallotCountChoices = 'NUMBER_OF_DELEGATES' | 'NUMBER_OF_ALL_PARTICIPANTS' | 'CUSTOM_NUMBER'; type BallotCountChoices = 'NUMBER_OF_DELEGATES' | 'NUMBER_OF_ALL_PARTICIPANTS' | 'CUSTOM_NUMBER';

View File

@ -4,7 +4,7 @@ import { MatSnackBar } from '@angular/material';
import { TranslateService } from '@ngx-translate/core'; import { TranslateService } from '@ngx-translate/core';
import { BaseViewComponent } from '../../../base/base-view'; import { BaseViewComponent } from 'app/site/base/base-view';
import { ViewCountdown } from '../../models/view-countdown'; import { ViewCountdown } from '../../models/view-countdown';
import { CountdownRepositoryService } from 'app/core/repositories/projector/countdown-repository.service'; import { CountdownRepositoryService } from 'app/core/repositories/projector/countdown-repository.service';
import { ConfigService } from 'app/core/ui-services/config.service'; import { ConfigService } from 'app/core/ui-services/config.service';

View File

@ -23,6 +23,11 @@ const routes: Routes = [
loadChildren: './agenda/agenda.module#AgendaModule', loadChildren: './agenda/agenda.module#AgendaModule',
data: { basePerm: 'agenda.can_see' } data: { basePerm: 'agenda.can_see' }
}, },
{
path: 'topics',
loadChildren: './topics/topics.module#TopicsModule',
data: { basePerm: 'agenda.can_see' }
},
{ {
path: 'assignments', path: 'assignments',
loadChildren: './assignments/assignments.module#AssignmentsModule', loadChildren: './assignments/assignments.module#AssignmentsModule',

View File

@ -6,7 +6,7 @@ import { MatSnackBar } from '@angular/material';
import { TranslateService } from '@ngx-translate/core'; import { TranslateService } from '@ngx-translate/core';
import { PblColumnDefinition } from '@pebula/ngrid'; import { PblColumnDefinition } from '@pebula/ngrid';
import { ListViewBaseComponent } from '../../../base/list-view-base'; import { BaseListViewComponent } from 'app/site/base/base-list-view';
import { PromptService } from 'app/core/ui-services/prompt.service'; import { PromptService } from 'app/core/ui-services/prompt.service';
import { Tag } from 'app/shared/models/core/tag'; import { Tag } from 'app/shared/models/core/tag';
import { TagRepositoryService } from 'app/core/repositories/tags/tag-repository.service'; import { TagRepositoryService } from 'app/core/repositories/tags/tag-repository.service';
@ -24,7 +24,7 @@ import { ViewTag } from '../../models/view-tag';
templateUrl: './tag-list.component.html', templateUrl: './tag-list.component.html',
styleUrls: ['./tag-list.component.scss'] styleUrls: ['./tag-list.component.scss']
}) })
export class TagListComponent extends ListViewBaseComponent<ViewTag> implements OnInit { export class TagListComponent extends BaseListViewComponent<ViewTag> implements OnInit {
public editTag = false; public editTag = false;
public newTag = false; public newTag = false;
public selectedTag: ViewTag; public selectedTag: ViewTag;

View File

@ -16,7 +16,7 @@ import { ItemVisibilityChoices } from 'app/shared/models/agenda/item';
import { CreateTopic } from '../../models/create-topic'; import { CreateTopic } from '../../models/create-topic';
import { Topic } from 'app/shared/models/topics/topic'; import { Topic } from 'app/shared/models/topics/topic';
import { ViewMediafile } from 'app/site/mediafiles/models/view-mediafile'; import { ViewMediafile } from 'app/site/mediafiles/models/view-mediafile';
import { ViewItem } from '../../models/view-item'; import { ViewItem } from 'app/site/agenda/models/view-item';
import { MediafileRepositoryService } from 'app/core/repositories/mediafiles/mediafile-repository.service'; import { MediafileRepositoryService } from 'app/core/repositories/mediafiles/mediafile-repository.service';
import { ItemRepositoryService } from 'app/core/repositories/agenda/item-repository.service'; import { ItemRepositoryService } from 'app/core/repositories/agenda/item-repository.service';
@ -163,7 +163,7 @@ export class TopicDetailComponent extends BaseViewComponent {
* be loaded using the ID from the URL * be loaded using the ID from the URL
*/ */
public getTopicByUrl(): void { public getTopicByUrl(): void {
if (this.route.snapshot.url[1] && this.route.snapshot.url[1].path === 'new') { if (this.route.snapshot.url[0] && this.route.snapshot.url[0].path === 'new') {
// creates a new topic // creates a new topic
this.newTopic = true; this.newTopic = true;
this.editTopic = true; this.editTopic = true;

View File

@ -2,9 +2,9 @@ import { Topic } from 'app/shared/models/topics/topic';
import { SearchRepresentation } from 'app/core/ui-services/search.service'; import { SearchRepresentation } from 'app/core/ui-services/search.service';
import { ProjectorElementBuildDeskriptor } from 'app/site/base/projectable'; import { ProjectorElementBuildDeskriptor } from 'app/site/base/projectable';
import { ViewMediafile } from 'app/site/mediafiles/models/view-mediafile'; import { ViewMediafile } from 'app/site/mediafiles/models/view-mediafile';
import { ViewItem } from './view-item'; import { ViewItem } from '../../agenda/models/view-item';
import { BaseViewModel } from 'app/site/base/base-view-model'; import { BaseViewModel } from 'app/site/base/base-view-model';
import { ViewListOfSpeakers } from './view-list-of-speakers'; import { ViewListOfSpeakers } from '../../agenda/models/view-list-of-speakers';
import { BaseViewModelWithAgendaItemAndListOfSpeakers } from 'app/site/base/base-view-model-with-agenda-item-and-list-of-speakers'; import { BaseViewModelWithAgendaItemAndListOfSpeakers } from 'app/site/base/base-view-model-with-agenda-item-and-list-of-speakers';
import { TitleInformationWithAgendaItem } from 'app/site/base/base-view-model-with-agenda-item'; import { TitleInformationWithAgendaItem } from 'app/site/base/base-view-model-with-agenda-item';
@ -62,7 +62,7 @@ export class ViewTopic extends BaseViewModelWithAgendaItemAndListOfSpeakers impl
} }
public getDetailStateURL(): string { public getDetailStateURL(): string {
return `/agenda/topics/${this.id}`; return `/topics/${this.id}`;
} }
/** /**

View File

@ -0,0 +1,15 @@
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { TopicDetailComponent } from './components/topic-detail/topic-detail.component';
const routes: Routes = [
{ path: 'new', component: TopicDetailComponent, data: { basePerm: 'agenda.can_manage' } },
{ path: ':id', component: TopicDetailComponent, data: { basePerm: 'agenda.can_see' } }
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule]
})
export class TopicsRoutingModule {}

View File

@ -0,0 +1,17 @@
import { AppConfig } from '../../core/app-config';
import { Topic } from '../../shared/models/topics/topic';
import { TopicRepositoryService } from 'app/core/repositories/topics/topic-repository.service';
import { ViewTopic } from './models/view-topic';
export const TopicsAppConfig: AppConfig = {
name: 'topics',
models: [
{
collectionString: 'topics/topic',
model: Topic,
viewModel: ViewTopic,
searchOrder: 1,
repository: TopicRepositoryService
}
]
};

View File

@ -0,0 +1,13 @@
import { TopicsModule } from './topics.module';
describe('TopicsModule', () => {
let topicsModule: TopicsModule;
beforeEach(() => {
topicsModule = new TopicsModule();
});
it('should create an instance', () => {
expect(topicsModule).toBeTruthy();
});
});

View File

@ -0,0 +1,15 @@
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { SharedModule } from 'app/shared/shared.module';
import { TopicDetailComponent } from './components/topic-detail/topic-detail.component';
import { TopicsRoutingModule } from './topics-routing.module';
/**
* AppModule for the agenda and it's children.
*/
@NgModule({
imports: [CommonModule, TopicsRoutingModule, SharedModule],
declarations: [TopicDetailComponent]
})
export class TopicsModule {}

View File

@ -7,7 +7,7 @@ import { FormGroup, Validators, FormBuilder } from '@angular/forms';
import { GroupRepositoryService, AppPermissions } from 'app/core/repositories/users/group-repository.service'; import { GroupRepositoryService, AppPermissions } from 'app/core/repositories/users/group-repository.service';
import { ViewGroup } from '../../models/view-group'; import { ViewGroup } from '../../models/view-group';
import { Group } from 'app/shared/models/users/group'; import { Group } from 'app/shared/models/users/group';
import { BaseViewComponent } from '../../../base/base-view'; import { BaseViewComponent } from 'app/site/base/base-view';
import { PromptService } from 'app/core/ui-services/prompt.service'; import { PromptService } from 'app/core/ui-services/prompt.service';
/** /**

View File

@ -6,7 +6,7 @@ import { Title, SafeHtml, DomSanitizer } from '@angular/platform-browser';
import { TranslateService } from '@ngx-translate/core'; import { TranslateService } from '@ngx-translate/core';
import { BaseViewComponent } from '../../../base/base-view'; import { BaseViewComponent } from 'app/site/base/base-view';
import { genders, User } from 'app/shared/models/users/user'; import { genders, User } from 'app/shared/models/users/user';
import { OperatorService } from 'app/core/core-services/operator.service'; import { OperatorService } from 'app/core/core-services/operator.service';
import { PromptService } from 'app/core/ui-services/prompt.service'; import { PromptService } from 'app/core/ui-services/prompt.service';

View File

@ -10,7 +10,7 @@ import { ChoiceService } from 'app/core/ui-services/choice.service';
import { ConfigService } from 'app/core/ui-services/config.service'; import { ConfigService } from 'app/core/ui-services/config.service';
import { CsvExportService } from 'app/core/ui-services/csv-export.service'; import { CsvExportService } from 'app/core/ui-services/csv-export.service';
import { GroupRepositoryService } from 'app/core/repositories/users/group-repository.service'; import { GroupRepositoryService } from 'app/core/repositories/users/group-repository.service';
import { ListViewBaseComponent } from '../../../base/list-view-base'; import { BaseListViewComponent } from 'app/site/base/base-list-view';
import { PromptService } from 'app/core/ui-services/prompt.service'; import { PromptService } from 'app/core/ui-services/prompt.service';
import { UserFilterListService } from '../../services/user-filter-list.service'; import { UserFilterListService } from '../../services/user-filter-list.service';
import { UserRepositoryService } from 'app/core/repositories/users/user-repository.service'; import { UserRepositoryService } from 'app/core/repositories/users/user-repository.service';
@ -62,7 +62,7 @@ interface InfoDialog {
templateUrl: './user-list.component.html', templateUrl: './user-list.component.html',
styleUrls: ['./user-list.component.scss'] styleUrls: ['./user-list.component.scss']
}) })
export class UserListComponent extends ListViewBaseComponent<ViewUser> implements OnInit { export class UserListComponent extends BaseListViewComponent<ViewUser> implements OnInit {
/** /**
* The reference to the template. * The reference to the template.
*/ */

View File

@ -2,7 +2,7 @@ import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common'; import { CommonModule } from '@angular/common';
import { CommonListOfSpeakersSlideComponent } from './common-list-of-speakers-slide.component'; import { CommonListOfSpeakersSlideComponent } from './common-list-of-speakers-slide.component';
import { SharedModule } from '../../../shared/shared.module'; import { SharedModule } from 'app/shared/shared.module';
@NgModule({ @NgModule({
declarations: [CommonListOfSpeakersSlideComponent], declarations: [CommonListOfSpeakersSlideComponent],

View File

@ -1,4 +1,4 @@
import { ChangeRecoMode, LineNumberingMode } from '../../../site/motions/models/view-motion'; import { ChangeRecoMode, LineNumberingMode } from 'app/site/motions/models/view-motion';
import { ReferencedMotions } from '../base/base-motion-slide'; import { ReferencedMotions } from '../base/base-motion-slide';
/** /**

View File

@ -1,6 +1,6 @@
import { ViewUnifiedChange, ViewUnifiedChangeType } from '../../../shared/models/motions/view-unified-change'; import { ViewUnifiedChange, ViewUnifiedChangeType } from 'app/shared/models/motions/view-unified-change';
import { MotionSlideDataAmendment } from './motion-slide-data'; import { MotionSlideDataAmendment } from './motion-slide-data';
import { LineRange } from '../../../core/ui-services/diff.service'; import { LineRange } from 'app/core/ui-services/diff.service';
/** /**
* This class adds methods to the MotionsMotionSlideDataChangeReco data object * This class adds methods to the MotionsMotionSlideDataChangeReco data object

View File

@ -1,4 +1,4 @@
import { ViewUnifiedChange, ViewUnifiedChangeType } from '../../../shared/models/motions/view-unified-change'; import { ViewUnifiedChange, ViewUnifiedChangeType } from 'app/shared/models/motions/view-unified-change';
import { MotionSlideDataChangeReco } from './motion-slide-data'; import { MotionSlideDataChangeReco } from './motion-slide-data';
/** /**

View File

@ -4,12 +4,12 @@ import { DomSanitizer, SafeHtml } from '@angular/platform-browser';
import { TranslateService } from '@ngx-translate/core'; import { TranslateService } from '@ngx-translate/core';
import { MotionSlideData, MotionSlideDataAmendment } from './motion-slide-data'; import { MotionSlideData, MotionSlideDataAmendment } from './motion-slide-data';
import { ChangeRecoMode, LineNumberingMode } from '../../../site/motions/models/view-motion'; import { ChangeRecoMode, LineNumberingMode } from 'app/site/motions/models/view-motion';
import { DiffLinesInParagraph, DiffService, LineRange } from '../../../core/ui-services/diff.service'; import { DiffLinesInParagraph, DiffService, LineRange } from 'app/core/ui-services/diff.service';
import { LinenumberingService } from '../../../core/ui-services/linenumbering.service'; import { LinenumberingService } from 'app/core/ui-services/linenumbering.service';
import { ViewUnifiedChange } from '../../../shared/models/motions/view-unified-change'; import { ViewUnifiedChange } from 'app/shared/models/motions/view-unified-change';
import { MotionSlideObjChangeReco } from './motion-slide-obj-change-reco'; import { MotionSlideObjChangeReco } from './motion-slide-obj-change-reco';
import { SlideData } from '../../../core/core-services/projector-data.service'; import { SlideData } from 'app/core/core-services/projector-data.service';
import { MotionSlideObjAmendmentParagraph } from './motion-slide-obj-amendment-paragraph'; import { MotionSlideObjAmendmentParagraph } from './motion-slide-obj-amendment-paragraph';
import { BaseMotionSlideComponent } from '../base/base-motion-slide'; import { BaseMotionSlideComponent } from '../base/base-motion-slide';
import { MotionRepositoryService } from 'app/core/repositories/motions/motion-repository.service'; import { MotionRepositoryService } from 'app/core/repositories/motions/motion-repository.service';

View File

@ -15,7 +15,7 @@
@import './app/shared/components/projector-button/projector-button.component.scss'; @import './app/shared/components/projector-button/projector-button.component.scss';
@import './app/site/agenda/components/list-of-speakers/list-of-speakers.component.scss-theme.scss'; @import './app/site/agenda/components/list-of-speakers/list-of-speakers.component.scss-theme.scss';
@import './app/shared/components/sorting-tree/sorting-tree.component.scss'; @import './app/shared/components/sorting-tree/sorting-tree.component.scss';
@import './app/site/global-spinner/global-spinner.component.scss'; @import './app/site/common/components/global-spinner/global-spinner.component.scss';
@import './app/shared/components/tile/tile.component.scss'; @import './app/shared/components/tile/tile.component.scss';
@import './app/shared/components/block-tile/block-tile.component.scss'; @import './app/shared/components/block-tile/block-tile.component.scss';
@import './app/shared/components/icon-container/icon-container.component.scss'; @import './app/shared/components/icon-container/icon-container.component.scss';