Add more motion modules

Seperates the previously large motion module in various smaller
and very small feature modules.
Motion Detail, and all direct dependancies to Motion Detail
is now an own module.
This significantly increases the response time of openslides 3
This commit is contained in:
Sean Engelhardt 2019-03-08 10:43:54 +01:00
parent 70191ce455
commit 6a421f8f6b
126 changed files with 628 additions and 323 deletions

View File

@ -16,7 +16,7 @@ const routes: Routes = [
path: 'login',
component: LoginWrapperComponent,
children: [
{ path: '', component: LoginMaskComponent },
{ path: '', component: LoginMaskComponent, pathMatch: 'full' },
{ path: 'reset-password', component: ResetPasswordComponent },
{ path: 'reset-password-confirm', component: ResetPasswordConfirmComponent },
{ path: 'legalnotice', component: LoginLegalNoticeComponent },

View File

@ -61,14 +61,12 @@ export class AppComponent {
// change default JS functions
this.overloadArrayToString();
appRef.isStable.subscribe(s => console.log('is stable', s));
appRef.isStable
.pipe(
filter(s => s),
take(1)
)
.subscribe(() => {
console.log('start scheduler');
servertimeService.startScheduler();
});
}

View File

@ -6,7 +6,8 @@ import { FullscreenProjectorComponent } from './fullscreen-projector/fullscreen-
const routes: Routes = [
{
path: '',
component: FullscreenProjectorComponent
component: FullscreenProjectorComponent,
pathMatch: 'full'
},
{
path: ':id',

View File

@ -16,6 +16,7 @@ import { MainMenuService } from 'app/core/core-services/main-menu.service';
*
* ```html
* <os-head-bar
* prevUrl="../.."
* [nav]="false"
* [goBack]="true"
* [mainButton]="opCanEdit()"
@ -89,6 +90,15 @@ export class HeadBarComponent {
@Input()
public goBack = false;
/**
* Determine the back URL. Default is ".." (previous parent page)
* Lazy Loaded modules sometimes have different routing events or require
* special "back" logic.
* Has only an effect if goBack is set to false
*/
@Input()
public prevUrl = '../';
/**
* Emit a signal to the parent component if the main button was clicked
*/
@ -141,7 +151,7 @@ export class HeadBarComponent {
if (this.goBack) {
this.location.back();
} else {
this.router.navigate(['../'], { relativeTo: this.route });
this.router.navigate([this.prevUrl], { relativeTo: this.route });
}
}
}

View File

@ -1,4 +1,4 @@
@import '../../../../assets/styles/drag.scss';
@import '~assets/styles/drag.scss';
.box {
width: 100%;

View File

@ -8,7 +8,7 @@ import { ListOfSpeakersComponent } from './components/list-of-speakers/list-of-s
import { TopicDetailComponent } from './components/topic-detail/topic-detail.component';
const routes: Routes = [
{ path: '', component: AgendaListComponent },
{ path: '', component: AgendaListComponent, pathMatch: 'full' },
{ path: 'import', component: AgendaImportListComponent },
{ path: 'topics/new', component: TopicDetailComponent },
{ path: 'sort-agenda', component: AgendaSortComponent },

View File

@ -2,7 +2,7 @@ import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { AssignmentListComponent } from './assignment-list/assignment-list.component';
const routes: Routes = [{ path: '', component: AssignmentListComponent }];
const routes: Routes = [{ path: '', component: AssignmentListComponent, pathMatch: 'full' }];
@NgModule({
imports: [RouterModule.forChild(routes)],

View File

@ -9,7 +9,8 @@ import { SearchComponent } from './components/search/search.component';
const routes: Routes = [
{
path: '',
component: StartComponent
component: StartComponent,
pathMatch: 'full'
},
{
path: 'legalnotice',

View File

@ -2,7 +2,7 @@ import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { ConfigListComponent } from './components/config-list/config-list.component';
const routes: Routes = [{ path: '', component: ConfigListComponent }];
const routes: Routes = [{ path: '', component: ConfigListComponent, pathMatch: 'full' }];
@NgModule({
imports: [RouterModule.forChild(routes)],

View File

@ -5,7 +5,7 @@ import { HistoryListComponent } from './components/history-list/history-list.com
/**
* Define the routes for the history module
*/
const routes: Routes = [{ path: '', component: HistoryListComponent }];
const routes: Routes = [{ path: '', component: HistoryListComponent, pathMatch: 'full' }];
/**
* Define the routing component and setup the routes

View File

@ -4,7 +4,7 @@ import { MediafileListComponent } from './components/mediafile-list/mediafile-li
import { MediaUploadComponent } from './components/media-upload/media-upload.component';
const routes: Routes = [
{ path: '', component: MediafileListComponent },
{ path: '', component: MediafileListComponent, pathMatch: 'full' },
{ path: 'upload', component: MediaUploadComponent }
];

View File

@ -1,27 +0,0 @@
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { MotionDetailComponent } from './motion-detail.component';
import { E2EImportsModule } from '../../../../../e2e-imports.module';
import { MotionsModule } from '../../motions.module';
describe('MotionDetailComponent', () => {
let component: MotionDetailComponent;
let fixture: ComponentFixture<MotionDetailComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [E2EImportsModule, MotionsModule],
declarations: []
}).compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(MotionDetailComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});

View File

@ -0,0 +1,12 @@
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { CallListComponent } from './call-list.component';
const routes: Routes = [{ path: '', component: CallListComponent, pathMatch: 'full' }];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule]
})
export class CallListRoutingModule {}

View File

@ -1,4 +1,4 @@
<os-head-bar [nav]="false">
<os-head-bar prevUrl="../.." [nav]="false">
<!-- Title -->
<div class="title-slot">
<h2 translate>Call list</h2>

View File

@ -5,12 +5,13 @@ import { MatSnackBar } from '@angular/material';
import { TranslateService } from '@ngx-translate/core';
import { Observable } from 'rxjs';
import { BaseViewComponent } from '../../../base/base-view';
import { MotionRepositoryService } from 'app/core/repositories/motions/motion-repository.service';
import { MotionCsvExportService } from '../../services/motion-csv-export.service';
import { MotionPdfExportService } from '../../services/motion-pdf-export.service';
import { ViewMotion } from '../../models/view-motion';
import { BaseViewComponent } from 'app/site/base/base-view';
import { MotionCsvExportService } from 'app/site/motions/services/motion-csv-export.service';
import { MotionPdfExportService } from 'app/site/motions/services/motion-pdf-export.service';
import { OSTreeSortEvent } from 'app/shared/components/sorting-tree/sorting-tree.component';
import { ViewMotion } from 'app/site/motions/models/view-motion';
/**
* Sort view for the call list.

View File

@ -0,0 +1,12 @@
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { CallListRoutingModule } from './call-list-routing.module';
import { CallListComponent } from './call-list.component';
import { SharedModule } from 'app/shared/shared.module';
@NgModule({
declarations: [CallListComponent],
imports: [CommonModule, CallListRoutingModule, SharedModule]
})
export class CallListModule {}

View File

@ -0,0 +1,15 @@
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { CategoryListComponent } from './components/category-list/category-list.component';
import { CategorySortComponent } from './components/category-sort/category-sort.component';
const routes: Routes = [
{ path: '', component: CategoryListComponent, pathMatch: 'full' },
{ path: ':id', component: CategorySortComponent }
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule]
})
export class CategoryRoutingModule {}

View File

@ -0,0 +1,13 @@
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { CategoryRoutingModule } from './category-routing.module';
import { SharedModule } from 'app/shared/shared.module';
import { CategoryListComponent } from './components/category-list/category-list.component';
import { CategorySortComponent } from './components/category-sort/category-sort.component';
@NgModule({
declarations: [CategoryListComponent, CategorySortComponent],
imports: [CommonModule, CategoryRoutingModule, SharedModule]
})
export class CategoryModule {}

View File

@ -1,4 +1,4 @@
<os-head-bar [nav]="false" [mainButton]="true" (mainEvent)="onPlusButton()">
<os-head-bar prevUrl="../.." [nav]="false" [mainButton]="true" (mainEvent)="onPlusButton()">
<!-- Title -->
<div class="title-slot">
<h2 translate>Categories</h2>

View File

@ -1,7 +1,7 @@
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { CategoryListComponent } from './category-list.component';
import { E2EImportsModule } from '../../../../../e2e-imports.module';
import { E2EImportsModule } from 'e2e-imports.module';
describe('CategoryListComponent', () => {
let component: CategoryListComponent;

View File

@ -5,13 +5,13 @@ import { Title } from '@angular/platform-browser';
import { TranslateService } from '@ngx-translate/core';
import { BaseViewComponent } from '../../../base/base-view';
import { BaseViewComponent } from 'app/site/base/base-view';
import { Category } from 'app/shared/models/motions/category';
import { CategoryRepositoryService } from 'app/core/repositories/motions/category-repository.service';
import { MotionRepositoryService } from 'app/core/repositories/motions/motion-repository.service';
import { PromptService } from 'app/core/ui-services/prompt.service';
import { ViewCategory } from '../../models/view-category';
import { ViewMotion } from '../../models/view-motion';
import { ViewCategory } from 'app/site/motions/models/view-category';
import { ViewMotion } from 'app/site/motions/models/view-motion';
/**
* List view for the categories.

View File

@ -10,8 +10,8 @@ import { MatSnackBar } from '@angular/material';
import { MotionRepositoryService } from 'app/core/repositories/motions/motion-repository.service';
import { PromptService } from 'app/core/ui-services/prompt.service';
import { SortingListComponent } from 'app/shared/components/sorting-list/sorting-list.component';
import { ViewCategory } from '../../models/view-category';
import { ViewMotion } from '../../models/view-motion';
import { ViewCategory } from 'app/site/motions/models/view-category';
import { ViewMotion } from 'app/site/motions/models/view-motion';
/**
* View for rearranging and renumbering the motions of a category. The {@link onNumberMotions}

View File

@ -24,6 +24,7 @@
.chip-container {
display: block;
min-height: 0; // default is inherit, will appear on the top edge of the cell
}
.os-headed-listview-table {

View File

@ -10,10 +10,10 @@ import { ListViewBaseComponent } from 'app/site/base/list-view-base';
import { MotionBlock } from 'app/shared/models/motions/motion-block';
import { MotionBlockRepositoryService } from 'app/core/repositories/motions/motion-block-repository.service';
import { MotionRepositoryService } from 'app/core/repositories/motions/motion-repository.service';
import { ViewMotionBlock } from '../../models/view-motion-block';
import { OperatorService } from 'app/core/core-services/operator.service';
import { PromptService } from 'app/core/ui-services/prompt.service';
import { ViewMotion } from '../../models/view-motion';
import { OperatorService } from '../../../../core/core-services/operator.service';
import { ViewMotion } from 'app/site/motions/models/view-motion';
import { ViewMotionBlock } from 'app/site/motions/models/view-motion-block';
/**
* Detail component to display one motion block

View File

@ -1,4 +1,4 @@
<os-head-bar [nav]="false" [mainButton]="canEdit" (mainEvent)="onPlusButton()">
<os-head-bar prevUrl="../.." [nav]="false" [mainButton]="canEdit" (mainEvent)="onPlusButton()">
<!-- Title -->
<div class="title-slot"><h2 translate>Motion blocks</h2></div>
</os-head-bar>

View File

@ -15,7 +15,7 @@ import { MotionBlockRepositoryService } from 'app/core/repositories/motions/moti
import { OperatorService } from 'app/core/core-services/operator.service';
import { PromptService } from 'app/core/ui-services/prompt.service';
import { ViewItem } from 'app/site/agenda/models/view-item';
import { ViewMotionBlock } from '../../models/view-motion-block';
import { ViewMotionBlock } from 'app/site/motions/models/view-motion-block';
/**
* Table for the motion blocks

View File

@ -0,0 +1,15 @@
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { MotionBlockDetailComponent } from './components/motion-block-detail/motion-block-detail.component';
import { MotionBlockListComponent } from './components/motion-block-list/motion-block-list.component';
const routes: Routes = [
{ path: '', component: MotionBlockListComponent, pathMatch: 'full' },
{ path: ':id', component: MotionBlockDetailComponent }
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule]
})
export class MotionBlockRoutingModule {}

View File

@ -0,0 +1,13 @@
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { MotionBlockRoutingModule } from './motion-block-routing.module';
import { MotionBlockListComponent } from './components/motion-block-list/motion-block-list.component';
import { MotionBlockDetailComponent } from './components/motion-block-detail/motion-block-detail.component';
import { SharedModule } from 'app/shared/shared.module';
@NgModule({
declarations: [MotionBlockListComponent, MotionBlockDetailComponent],
imports: [CommonModule, MotionBlockRoutingModule, SharedModule]
})
export class MotionBlockModule {}

View File

@ -1,4 +1,4 @@
<os-head-bar [nav]="false" [mainButton]="true" (mainEvent)="onPlusButton()">
<os-head-bar prevUrl="../.." [nav]="false" [mainButton]="true" (mainEvent)="onPlusButton()">
<!-- Title -->
<div class="title-slot">
<h2 translate>Comment fields</h2>
@ -12,19 +12,31 @@
<form [formGroup]="createForm" (keydown)="keyDownFunction($event)">
<p>
<mat-form-field>
<input formControlName="name" matInput placeholder="{{'Name' | translate}}" required>
<input formControlName="name" matInput placeholder="{{ 'Name' | translate }}" required />
<mat-hint *ngIf="!createForm.controls.name.valid">
<span translate>Required</span>
</mat-hint>
</mat-form-field>
</p>
<p>
<os-search-value-selector ngDefaultControl [form]="createForm" [formControl]="this.createForm.get('read_groups_id')"
[multiple]="true" listname="Groups with read permissions" [InputListValues]="this.groups"></os-search-value-selector>
<os-search-value-selector
ngDefaultControl
[form]="createForm"
[formControl]="this.createForm.get('read_groups_id')"
[multiple]="true"
listname="Groups with read permissions"
[InputListValues]="this.groups"
></os-search-value-selector>
</p>
<p>
<os-search-value-selector ngDefaultControl [form]="createForm" [formControl]="this.createForm.get('write_groups_id')"
[multiple]="true" listname="Groups with write permissions" [InputListValues]="this.groups"></os-search-value-selector>
<os-search-value-selector
ngDefaultControl
[form]="createForm"
[formControl]="this.createForm.get('write_groups_id')"
[multiple]="true"
listname="Groups with write permissions"
[InputListValues]="this.groups"
></os-search-value-selector>
</p>
</form>
</mat-card-content>
@ -38,8 +50,13 @@
</mat-card-actions>
</mat-card>
<mat-accordion class="os-card">
<mat-expansion-panel *ngFor="let section of this.commentSections" (opened)="openId = section.id" (closed)="panelClosed(section)"
[expanded]="openId === section.id" multiple="false">
<mat-expansion-panel
*ngFor="let section of this.commentSections"
(opened)="openId = section.id"
(closed)="panelClosed(section)"
[expanded]="openId === section.id"
multiple="false"
>
<mat-expansion-panel-header>
<mat-panel-title>
<div class="header-container">
@ -67,19 +84,31 @@
<span translate>Edit comment field:</span>
<p>
<mat-form-field>
<input formControlName="name" matInput placeholder="{{'Name' | translate}}" required>
<input formControlName="name" matInput placeholder="{{ 'Name' | translate }}" required />
<mat-hint *ngIf="!updateForm.controls.name.valid">
<span translate>Required</span>
</mat-hint>
</mat-form-field>
</p>
<p>
<os-search-value-selector ngDefaultControl [form]="updateForm" [formControl]="this.updateForm.get('read_groups_id')"
[multiple]="true" listname="Groups with read permissions" [InputListValues]="this.groups"></os-search-value-selector>
<os-search-value-selector
ngDefaultControl
[form]="updateForm"
[formControl]="this.updateForm.get('read_groups_id')"
[multiple]="true"
listname="Groups with read permissions"
[InputListValues]="this.groups"
></os-search-value-selector>
</p>
<p>
<os-search-value-selector ngDefaultControl [form]="updateForm" [formControl]="this.updateForm.get('write_groups_id')"
[multiple]="true" listname="Groups with write permissions" [InputListValues]="this.groups"></os-search-value-selector>
<os-search-value-selector
ngDefaultControl
[form]="updateForm"
[formControl]="this.updateForm.get('write_groups_id')"
[multiple]="true"
listname="Groups with write permissions"
[InputListValues]="this.groups"
></os-search-value-selector>
</p>
</form>
<ng-container *ngIf="editId !== section.id">
@ -97,19 +126,34 @@
<div class="spacer-left" *ngIf="section.write_groups.length === 0" translate>No groups selected</div>
</ng-container>
<mat-action-row>
<button *ngIf="editId !== section.id" mat-button class="on-transition-fade" (click)="onEditButton(section)"
mat-icon-button>
<button
*ngIf="editId !== section.id"
mat-button
class="on-transition-fade"
(click)="onEditButton(section)"
mat-icon-button
>
<mat-icon>edit</mat-icon>
</button>
<button *ngIf="editId === section.id" mat-button class="on-transition-fade" (click)="editId = null"
mat-icon-button>
<button
*ngIf="editId === section.id"
mat-button
class="on-transition-fade"
(click)="editId = null"
mat-icon-button
>
<mat-icon>cancel</mat-icon>
</button>
<button *ngIf="editId === section.id" mat-button class="on-transition-fade" (click)="onSaveButton(section)"
mat-icon-button>
<button
*ngIf="editId === section.id"
mat-button
class="on-transition-fade"
(click)="onSaveButton(section)"
mat-icon-button
>
<mat-icon>save</mat-icon>
</button>
<button mat-button class='on-transition-fade' (click)=onDeleteButton(section) mat-icon-button>
<button mat-button class="on-transition-fade" (click)="onDeleteButton(section)" mat-icon-button>
<mat-icon>delete</mat-icon>
</button>
</mat-action-row>

View File

@ -7,12 +7,13 @@ import { BehaviorSubject } from 'rxjs';
import { FormGroup, FormBuilder, Validators } from '@angular/forms';
import { MotionCommentSection } from 'app/shared/models/motions/motion-comment-section';
import { ViewMotionCommentSection } from '../../models/view-motion-comment-section';
import { BaseViewComponent } from 'app/site/base/base-view';
import { MotionCommentSectionRepositoryService } from 'app/core/repositories/motions/motion-comment-section-repository.service';
import { PromptService } from 'app/core/ui-services/prompt.service';
import { BaseViewComponent } from '../../../base/base-view';
import { ViewGroup } from 'app/site/users/models/view-group';
import { GroupRepositoryService } from 'app/core/repositories/users/group-repository.service';
import { ViewMotionCommentSection } from 'app/site/motions/models/view-motion-comment-section';
/**
* List view for the comment sections.

View File

@ -0,0 +1,12 @@
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { MotionCommentSectionListComponent } from './motion-comment-section-list.component';
const routes: Routes = [{ path: '', component: MotionCommentSectionListComponent, pathMatch: 'full' }];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule]
})
export class MotionCommentSectionRoutingModule {}

View File

@ -0,0 +1,12 @@
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { MotionCommentSectionRoutingModule } from './motion-comment-section-routing.module';
import { SharedModule } from 'app/shared/shared.module';
import { MotionCommentSectionListComponent } from './motion-comment-section-list.component';
@NgModule({
declarations: [MotionCommentSectionListComponent],
imports: [CommonModule, MotionCommentSectionRoutingModule, SharedModule]
})
export class MotionCommentSectionModule {}

View File

@ -1,7 +1,7 @@
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { AmendmentCreateWizardComponent } from './amendment-create-wizard.component';
import { E2EImportsModule } from '../../../../../e2e-imports.module';
import { E2EImportsModule } from 'e2e-imports.module';
describe('AmendmentCreateWizardComponent', () => {
let component: AmendmentCreateWizardComponent;

View File

@ -5,13 +5,13 @@ import { FormBuilder, FormGroup, Validators } from '@angular/forms';
import { MatSnackBar } from '@angular/material';
import { TranslateService } from '@ngx-translate/core';
import { ConfigService } from 'app/core/ui-services/config.service';
import { MotionRepositoryService } from 'app/core/repositories/motions/motion-repository.service';
import { ViewMotion } from '../../models/view-motion';
import { BaseViewComponent } from 'app/site/base/base-view';
import { ConfigService } from 'app/core/ui-services/config.service';
import { CreateMotion } from 'app/site/motions/models/create-motion';
import { LinenumberingService } from 'app/core/ui-services/linenumbering.service';
import { BaseViewComponent } from '../../../base/base-view';
import { CreateMotion } from '../../models/create-motion';
import { MotionRepositoryService } from 'app/core/repositories/motions/motion-repository.service';
import { ViewMotion } from 'app/site/motions/models/view-motion';
/**
* Describes the single paragraphs from the base motion.

View File

@ -3,7 +3,8 @@ import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { ManageSubmittersComponent } from './manage-submitters.component';
import { E2EImportsModule } from 'e2e-imports.module';
import { ViewChild, Component } from '@angular/core';
import { ViewMotion } from '../../models/view-motion';
import { ViewMotion } from 'app/site/motions/models/view-motion';
import { Motion } from 'app/shared/models/motions/motion';
describe('ManageSubmittersComponent', () => {

View File

@ -2,18 +2,18 @@ import { Component, Input } from '@angular/core';
import { FormGroup, FormControl } from '@angular/forms';
import { MatSnackBar } from '@angular/material';
import { Title } from '@angular/platform-browser';
import { TranslateService } from '@ngx-translate/core';
import { BehaviorSubject, Observable } from 'rxjs';
import { TranslateService } from '@ngx-translate/core';
import { BaseViewComponent } from 'app/site/base/base-view';
import { LocalPermissionsService } from '../../services/local-permissions.service';
import { LocalPermissionsService } from 'app/site/motions/services/local-permissions.service';
import { MotionRepositoryService } from 'app/core/repositories/motions/motion-repository.service';
import { User } from 'app/shared/models/users/user';
import { ViewMotion } from '../../models/view-motion';
import { ViewUser } from 'app/site/users/models/view-user';
import { ViewModelStoreService } from 'app/core/core-services/view-model-store.service';
import { UserRepositoryService } from 'app/core/repositories/users/user-repository.service';
import { ViewMotion } from 'app/site/motions/models/view-motion';
/**
* Component for the motion comments view

View File

@ -4,10 +4,11 @@ import {
MotionChangeRecommendationComponent,
MotionChangeRecommendationComponentData
} from './motion-change-recommendation.component';
import { E2EImportsModule } from '../../../../../e2e-imports.module';
import { E2EImportsModule } from 'e2e-imports.module';
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material';
import { ModificationType } from 'app/core/ui-services/diff.service';
import { ViewMotionChangeRecommendation } from '../../models/view-change-recommendation';
import { ViewMotionChangeRecommendation } from 'app/site/motions/models/view-change-recommendation';
describe('MotionChangeRecommendationComponent', () => {
let component: MotionChangeRecommendationComponent;

View File

@ -5,10 +5,10 @@ import { Title } from '@angular/platform-browser';
import { TranslateService } from '@ngx-translate/core';
import { LineRange, ModificationType } from 'app/core/ui-services/diff.service';
import { BaseViewComponent } from 'app/site/base/base-view';
import { ChangeRecommendationRepositoryService } from 'app/core/repositories/motions/change-recommendation-repository.service';
import { ViewMotionChangeRecommendation } from '../../models/view-change-recommendation';
import { BaseViewComponent } from '../../../base/base-view';
import { LineRange, ModificationType } from 'app/core/ui-services/diff.service';
import { ViewMotionChangeRecommendation } from 'app/site/motions/models/view-change-recommendation';
/**
* Data that needs to be provided to the MotionChangeRecommendationComponent dialog

View File

@ -1,7 +1,7 @@
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { MotionCommentsComponent } from './motion-comments.component';
import { E2EImportsModule } from '../../../../../e2e-imports.module';
import { E2EImportsModule } from 'e2e-imports.module';
describe('MotionCommentsComponent', () => {
let component: MotionCommentsComponent;

View File

@ -5,13 +5,13 @@ import { FormGroup, FormBuilder } from '@angular/forms';
import { TranslateService } from '@ngx-translate/core';
import { MotionCommentSectionRepositoryService } from 'app/core/repositories/motions/motion-comment-section-repository.service';
import { ViewMotionCommentSection } from '../../models/view-motion-comment-section';
import { OperatorService } from 'app/core/core-services/operator.service';
import { ViewMotion } from '../../models/view-motion';
import { BaseViewComponent } from 'app/site/base/base-view';
import { MotionPdfExportService } from '../../services/motion-pdf-export.service';
import { MotionComment } from 'app/shared/models/motions/motion';
import { MotionCommentSectionRepositoryService } from 'app/core/repositories/motions/motion-comment-section-repository.service';
import { MotionPdfExportService } from 'app/site/motions/services/motion-pdf-export.service';
import { OperatorService } from 'app/core/core-services/operator.service';
import { ViewMotion } from 'app/site/motions/models/view-motion';
import { ViewMotionCommentSection } from 'app/site/motions/models/view-motion-comment-section';
/**
* Component for the motion comments view

View File

@ -1,13 +1,13 @@
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { E2EImportsModule } from '../../../../../e2e-imports.module';
import { Component } from '@angular/core';
import { LineNumberingMode, ViewMotion } from '../../models/view-motion';
import { MotionDetailDiffComponent } from './motion-detail-diff.component';
import { MotionDetailOriginalChangeRecommendationsComponent } from '../motion-detail-original-change-recommendations/motion-detail-original-change-recommendations.component';
import { ViewUnifiedChange } from '../../../../shared/models/motions/view-unified-change';
import { Motion } from 'app/shared/models/motions/motion';
import { ViewMotionChangeRecommendation } from '../../models/view-change-recommendation';
import { ViewMotion, LineNumberingMode } from 'app/site/motions/models/view-motion';
import { ViewMotionChangeRecommendation } from 'app/site/motions/models/view-change-recommendation';
import { ViewUnifiedChange } from 'app/shared/models/motions/view-unified-change';
import { E2EImportsModule } from 'e2e-imports.module';
@Component({
template: `

View File

@ -4,19 +4,19 @@ import { DomSanitizer, SafeHtml, Title } from '@angular/platform-browser';
import { TranslateService } from '@ngx-translate/core';
import { BaseViewComponent } from '../../../base/base-view';
import { BaseViewComponent } from 'app/site/base/base-view';
import { ConfigService } from 'app/core/ui-services/config.service';
import { ChangeRecommendationRepositoryService } from 'app/core/repositories/motions/change-recommendation-repository.service';
import { DiffService, LineRange, ModificationType } from 'app/core/ui-services/diff.service';
import { LineNumberingMode, ViewMotion } from '../../models/view-motion';
import {
MotionChangeRecommendationComponent,
MotionChangeRecommendationComponentData
} from '../motion-change-recommendation/motion-change-recommendation.component';
import { MotionRepositoryService } from 'app/core/repositories/motions/motion-repository.service';
import { PromptService } from 'app/core/ui-services/prompt.service';
import { ViewUnifiedChange, ViewUnifiedChangeType } from '../../../../shared/models/motions/view-unified-change';
import { ViewMotionChangeRecommendation } from '../../models/view-change-recommendation';
import { ViewMotion, LineNumberingMode } from 'app/site/motions/models/view-motion';
import { ViewUnifiedChange, ViewUnifiedChangeType } from 'app/shared/models/motions/view-unified-change';
import { ViewMotionChangeRecommendation } from 'app/site/motions/models/view-change-recommendation';
/**
* This component displays the original motion text with the change blocks inside.

View File

@ -1,7 +1,7 @@
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { MotionDetailOriginalChangeRecommendationsComponent } from './motion-detail-original-change-recommendations.component';
import { E2EImportsModule } from '../../../../../e2e-imports.module';
import { E2EImportsModule } from 'e2e-imports.module';
import { Component } from '@angular/core';
@Component({

View File

@ -11,8 +11,8 @@ import {
} from '@angular/core';
import { LineRange, ModificationType } from 'app/core/ui-services/diff.service';
import { ViewMotionChangeRecommendation } from '../../models/view-change-recommendation';
import { OperatorService } from 'app/core/core-services/operator.service';
import { ViewMotionChangeRecommendation } from 'app/site/motions/models/view-change-recommendation';
/**
* This component displays the original motion text with annotated change commendations

View File

@ -1,6 +1,7 @@
<os-head-bar
[mainButton]="perms.isAllowed('update', motion)"
mainButtonIcon="edit"
prevUrl="../.."
[nav]="false"
[editMode]="editMotion"
(mainEvent)="setEditMode(!editMotion)"

View File

@ -1,4 +1,4 @@
@import '../../../../../assets/styles/motion-styles-common';
@import '~assets/styles/motion-styles-common';
span {
margin: 0;

View File

@ -0,0 +1,40 @@
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { MotionDetailComponent } from './motion-detail.component';
import { E2EImportsModule } from 'e2e-imports.module';
import { MotionCommentsComponent } from '../motion-comments/motion-comments.component';
import { PersonalNoteComponent } from '../personal-note/personal-note.component';
import { ManageSubmittersComponent } from '../manage-submitters/manage-submitters.component';
import { MotionPollComponent } from '../motion-poll/motion-poll.component';
import { MotionDetailOriginalChangeRecommendationsComponent } from '../motion-detail-original-change-recommendations/motion-detail-original-change-recommendations.component';
import { MotionDetailDiffComponent } from '../motion-detail-diff/motion-detail-diff.component';
describe('MotionDetailComponent', () => {
let component: MotionDetailComponent;
let fixture: ComponentFixture<MotionDetailComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [E2EImportsModule],
declarations: [
MotionDetailComponent,
MotionCommentsComponent,
PersonalNoteComponent,
ManageSubmittersComponent,
MotionPollComponent,
MotionDetailOriginalChangeRecommendationsComponent,
MotionDetailDiffComponent
]
}).compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(MotionDetailComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});

View File

@ -7,28 +7,26 @@ import { MatDialog, MatSnackBar, MatCheckboxChange, ErrorStateMatcher } from '@a
import { BehaviorSubject, Subscription } from 'rxjs';
import { TranslateService } from '@ngx-translate/core';
import { BaseViewComponent } from '../../../base/base-view';
import { BaseViewComponent } from 'app/site/base/base-view';
import { CategoryRepositoryService } from 'app/core/repositories/motions/category-repository.service';
import { ChangeRecommendationRepositoryService } from 'app/core/repositories/motions/change-recommendation-repository.service';
import { ChangeRecoMode, LineNumberingMode, ViewMotion } from '../../models/view-motion';
import { CreateMotion } from '../../models/create-motion';
import { CreateMotion } from 'app/site/motions/models/create-motion';
import { ConfigService } from 'app/core/ui-services/config.service';
import { DataStoreService } from 'app/core/core-services/data-store.service';
import { DiffLinesInParagraph, LineRange } from 'app/core/ui-services/diff.service';
import { ItemRepositoryService } from 'app/core/repositories/agenda/item-repository.service';
import { itemVisibilityChoices, Item } from 'app/shared/models/agenda/item';
import { LinenumberingService } from 'app/core/ui-services/linenumbering.service';
import { LocalPermissionsService } from '../../services/local-permissions.service';
import { LocalPermissionsService } from 'app/site/motions/services/local-permissions.service';
import { Mediafile } from 'app/shared/models/mediafiles/mediafile';
import { Motion } from 'app/shared/models/motions/motion';
import { MotionBlock } from 'app/shared/models/motions/motion-block';
import {
MotionChangeRecommendationComponent,
MotionChangeRecommendationComponentData
MotionChangeRecommendationComponentData,
MotionChangeRecommendationComponent
} from '../motion-change-recommendation/motion-change-recommendation.component';
import { MotionPdfExportService } from '../../services/motion-pdf-export.service';
import { MotionPdfExportService } from 'app/site/motions/services/motion-pdf-export.service';
import { MotionRepositoryService } from 'app/core/repositories/motions/motion-repository.service';
import { NotifyService } from 'app/core/core-services/notify.service';
import { OperatorService } from 'app/core/core-services/operator.service';
import { PersonalNoteContent } from 'app/shared/models/users/personal-note';
@ -37,18 +35,22 @@ import { PromptService } from 'app/core/ui-services/prompt.service';
import { StatuteParagraphRepositoryService } from 'app/core/repositories/motions/statute-paragraph-repository.service';
import { Tag } from 'app/shared/models/core/tag';
import { UserRepositoryService } from 'app/core/repositories/users/user-repository.service';
import { ViewMotionBlock } from '../../models/view-motion-block';
import { ViewWorkflow } from '../../models/view-workflow';
import { ViewMotionBlock } from 'app/site/motions/models/view-motion-block';
import { ViewWorkflow } from 'app/site/motions/models/view-workflow';
import { ViewUser } from 'app/site/users/models/view-user';
import { ViewCategory } from '../../models/view-category';
import { ViewCreateMotion } from '../../models/view-create-motion';
import { ViewCategory } from 'app/site/motions/models/view-category';
import { ViewCreateMotion } from 'app/site/motions/models/view-create-motion';
import { ViewItem } from 'app/site/agenda/models/view-item';
import { ViewportService } from 'app/core/ui-services/viewport.service';
import { ViewMediafile } from 'app/site/mediafiles/models/view-mediafile';
import { ViewModelStoreService } from 'app/core/core-services/view-model-store.service';
import { ViewMotionChangeRecommendation } from '../../models/view-change-recommendation';
import { ViewMotionNotificationEditMotion, TypeOfNotificationViewMotion } from '../../models/view-motion-notify';
import { ViewStatuteParagraph } from '../../models/view-statute-paragraph';
import { ViewMotionChangeRecommendation } from 'app/site/motions/models/view-change-recommendation';
import {
ViewMotionNotificationEditMotion,
TypeOfNotificationViewMotion
} from 'app/site/motions/models/view-motion-notify';
import { ViewMotion, ChangeRecoMode, LineNumberingMode } from 'app/site/motions/models/view-motion';
import { ViewStatuteParagraph } from 'app/site/motions/models/view-statute-paragraph';
import { ViewTag } from 'app/site/tags/models/view-tag';
import { ViewUnifiedChange } from 'app/shared/models/motions/view-unified-change';
import { Workflow } from 'app/shared/models/motions/workflow';
@ -342,7 +344,7 @@ export class MotionDetailComponent extends BaseViewComponent implements OnInit,
private editNotificationSubscription: Subscription;
/**
* Constuct the detail view.
* Constructs the detail view.
*
* @param title
* @param translate
@ -552,44 +554,10 @@ export class MotionDetailComponent extends BaseViewComponent implements OnInit,
* determine the motion to display using the URL
*/
public getMotionByUrl(): void {
if (this.route.snapshot.url[0] && this.route.snapshot.url[0].path === 'new') {
// creates a new motion
this.newMotion = true;
this.editMotion = true;
// prevent 'undefined' to appear in the ui
const defaultMotion: Partial<CreateMotion> = {
title: '',
origin: '',
identifier: ''
};
if (this.route.snapshot.queryParams.parent) {
this.amendmentEdit = true;
const parentMotion = this.repo.getViewModel(this.route.snapshot.queryParams.parent);
const defaultTitle = `${this.translate.instant('Amendment to')} ${parentMotion.identifierOrTitle}`;
const mode = this.configService.instant<string>('motions_amendments_text_mode');
if (mode === 'freestyle' || mode === 'fulltext') {
defaultMotion.title = defaultTitle;
defaultMotion.parent_id = parentMotion.id;
defaultMotion.category_id = parentMotion.category_id;
defaultMotion.motion_block_id = parentMotion.motion_block_id;
this.contentForm.patchValue({
title: defaultTitle,
category_id: parentMotion.category_id,
motion_block_id: parentMotion.motion_block_id,
parent_id: parentMotion.id
});
}
if (mode === 'fulltext') {
defaultMotion.text = parentMotion.text;
this.contentForm.patchValue({ text: parentMotion.text });
}
}
this.motion = new ViewCreateMotion(new CreateMotion(defaultMotion));
this.motionCopy = new ViewCreateMotion(new CreateMotion(defaultMotion));
} else {
// load existing motion
this.route.params.subscribe(params => {
const motionId: number = parseInt(params.id, 10);
this.route.params.subscribe(params => {
if (Object.keys(params).length > 0) {
// load existing motion
const motionId: number = +params.id;
this.repo.getViewModelObservable(motionId).subscribe(newViewMotion => {
if (newViewMotion) {
this.motion = newViewMotion;
@ -612,8 +580,42 @@ export class MotionDetailComponent extends BaseViewComponent implements OnInit,
this.changeRecommendations = recos;
this.recalcUnifiedChanges();
});
});
}
} else {
// creates a new motion
this.newMotion = true;
this.editMotion = true;
// prevent 'undefined' to appear in the ui
const defaultMotion: Partial<CreateMotion> = {
title: '',
origin: '',
identifier: ''
};
if (this.route.snapshot.queryParams.parent) {
this.amendmentEdit = true;
const parentMotion = this.repo.getViewModel(this.route.snapshot.queryParams.parent);
const defaultTitle = `${this.translate.instant('Amendment to')} ${parentMotion.identifierOrTitle}`;
const mode = this.configService.instant<string>('motions_amendments_text_mode');
if (mode === 'freestyle' || mode === 'fulltext') {
defaultMotion.title = defaultTitle;
defaultMotion.parent_id = parentMotion.id;
defaultMotion.category_id = parentMotion.category_id;
defaultMotion.motion_block_id = parentMotion.motion_block_id;
this.contentForm.patchValue({
title: defaultTitle,
category_id: parentMotion.category_id,
motion_block_id: parentMotion.motion_block_id,
parent_id: parentMotion.id
});
}
if (mode === 'fulltext') {
defaultMotion.text = parentMotion.text;
this.contentForm.patchValue({ text: parentMotion.text });
}
}
this.motion = new ViewCreateMotion(new CreateMotion(defaultMotion));
this.motionCopy = new ViewCreateMotion(new CreateMotion(defaultMotion));
}
});
}
/**
@ -1080,7 +1082,7 @@ export class MotionDetailComponent extends BaseViewComponent implements OnInit,
*/
public navigateToMotion(motion: ViewMotion): void {
if (motion) {
this.router.navigate(['../' + motion.id], { relativeTo: this.route });
this.router.navigate(['../contacts'], { relativeTo: this.route.parent });
// update the current motion
this.motion = motion;
this.setSurroundingMotions();

View File

@ -3,7 +3,7 @@ import { MatDialogRef, MAT_DIALOG_DATA, MatSnackBar } from '@angular/material';
import { TranslateService } from '@ngx-translate/core';
import { MotionPoll } from 'app/shared/models/motions/motion-poll';
import { MotionPollService, CalculablePollKey } from '../../services/motion-poll.service';
import { MotionPollService, CalculablePollKey } from 'app/site/motions/services/motion-poll.service';
/**
* A dialog for updating the values of a poll.

View File

@ -5,13 +5,13 @@ import { TranslateService } from '@ngx-translate/core';
import { CalculablePollKey } from 'app/core/ui-services/poll.service';
import { ConstantsService } from 'app/core/ui-services/constants.service';
import { LocalPermissionsService } from '../../services/local-permissions.service';
import { LocalPermissionsService } from 'app/site/motions/services/local-permissions.service';
import { MotionPoll } from 'app/shared/models/motions/motion-poll';
import { MotionPollService } from '../../services/motion-poll.service';
import { MotionPollDialogComponent } from './motion-poll-dialog.component';
import { MotionPollPdfService } from 'app/site/motions/services/motion-poll-pdf.service';
import { MotionPollService } from 'app/site/motions/services/motion-poll.service';
import { MotionRepositoryService } from 'app/core/repositories/motions/motion-repository.service';
import { PromptService } from 'app/core/ui-services/prompt.service';
import { MotionPollPdfService } from '../../services/motion-poll-pdf.service';
/**
* A component used to display and edit polls of a motion.

View File

@ -3,11 +3,11 @@ import { FormBuilder, FormGroup } from '@angular/forms';
import { Subscription } from 'rxjs';
import { BaseComponent } from '../../../../base.component';
import { MotionPdfExportService } from '../../services/motion-pdf-export.service';
import { BaseComponent } from 'app/base.component';
import { MotionPdfExportService } from 'app/site/motions/services/motion-pdf-export.service';
import { PersonalNoteContent } from 'app/shared/models/users/personal-note';
import { PersonalNoteService } from 'app/core/ui-services/personal-note.service';
import { ViewMotion } from '../../models/view-motion';
import { ViewMotion } from 'app/site/motions/models/view-motion';
/**
* Component for the motion comments view

View File

@ -0,0 +1,16 @@
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { MotionDetailComponent } from './components/motion-detail/motion-detail.component';
import { AmendmentCreateWizardComponent } from './components/amendment-create-wizard/amendment-create-wizard.component';
const routes: Routes = [
{ path: '', component: MotionDetailComponent, pathMatch: 'full' },
{ path: 'create-amendment', component: AmendmentCreateWizardComponent }
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule]
})
export class MotionDetailRoutingModule {}

View File

@ -0,0 +1,39 @@
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { MotionDetailRoutingModule } from './motion-detail-routing.module';
import { SharedModule } from 'app/shared/shared.module';
import { MotionDetailComponent } from './components/motion-detail/motion-detail.component';
import { AmendmentCreateWizardComponent } from './components/amendment-create-wizard/amendment-create-wizard.component';
import { MotionCommentsComponent } from './components/motion-comments/motion-comments.component';
import { PersonalNoteComponent } from './components/personal-note/personal-note.component';
import { ManageSubmittersComponent } from './components/manage-submitters/manage-submitters.component';
import { MotionPollDialogComponent } from './components/motion-poll/motion-poll-dialog.component';
import { MotionPollComponent } from './components/motion-poll/motion-poll.component';
import { MotionDetailOriginalChangeRecommendationsComponent } from './components/motion-detail-original-change-recommendations/motion-detail-original-change-recommendations.component';
import { MotionDetailDiffComponent } from './components/motion-detail-diff/motion-detail-diff.component';
import { MotionChangeRecommendationComponent } from './components/motion-change-recommendation/motion-change-recommendation.component';
@NgModule({
imports: [CommonModule, MotionDetailRoutingModule, SharedModule],
declarations: [
MotionDetailComponent,
AmendmentCreateWizardComponent,
MotionCommentsComponent,
PersonalNoteComponent,
ManageSubmittersComponent,
MotionPollComponent,
MotionPollDialogComponent,
MotionDetailDiffComponent,
MotionDetailOriginalChangeRecommendationsComponent,
MotionChangeRecommendationComponent
],
entryComponents: [
MotionCommentsComponent,
PersonalNoteComponent,
ManageSubmittersComponent,
MotionPollDialogComponent,
MotionChangeRecommendationComponent
]
})
export class MotionDetailModule {}

View File

@ -1,4 +1,4 @@
<os-head-bar [nav]="false">
<os-head-bar prevUrl="../.." [nav]="false">
<!-- Title -->
<div class="title-slot"><h2 translate>Import motions</h2></div>
@ -48,7 +48,7 @@
</mat-form-field>
<mat-form-field>
<mat-label translate>Text separator</mat-label>
<mat-select class="selection" (selectionChange)="selectTextSep($event)" value="&quot;">
<mat-select class="selection" (selectionChange)="selectTextSep($event)" value='"'>
<mat-option *ngFor="let option of textSeparators" [value]="option.value">
{{ option.label | translate }}
</mat-option>
@ -107,7 +107,6 @@
</div>
<div class="table-container">
<table mat-table class="on-transition-fade" [dataSource]="dataSource" matSort>
<!-- Status column -->
<ng-container matColumnDef="status" sticky>
<mat-header-cell *matHeaderCellDef class="first-column"></mat-header-cell>

View File

@ -5,9 +5,9 @@ import { Title } from '@angular/platform-browser';
import { TranslateService } from '@ngx-translate/core';
import { BaseImportListComponent } from 'app/site/base/base-import-list';
import { MotionCsvExportService } from '../../services/motion-csv-export.service';
import { MotionImportService } from '../../services/motion-import.service';
import { ViewMotion } from '../../models/view-motion';
import { MotionCsvExportService } from 'app/site/motions/services/motion-csv-export.service';
import { MotionImportService } from 'app/site/motions/services/motion-import.service';
import { ViewMotion } from 'app/site/motions/models/view-motion';
/**
* Component for the motion import list view.

View File

@ -0,0 +1,12 @@
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { MotionImportListComponent } from './motion-import-list.component';
const routes: Routes = [{ path: '', component: MotionImportListComponent, pathMatch: 'full' }];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule]
})
export class MotionImportRoutingModule {}

View File

@ -0,0 +1,12 @@
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { MotionImportListComponent } from './motion-import-list.component';
import { MotionImportRoutingModule } from './motion-import-routing.module';
import { SharedModule } from 'app/shared/shared.module';
@NgModule({
declarations: [MotionImportListComponent],
imports: [CommonModule, MotionImportRoutingModule, SharedModule]
})
export class MotionImportModule {}

View File

@ -3,10 +3,10 @@ import { FormGroup, FormBuilder } from '@angular/forms';
import { MatDialogRef, MatButtonToggle } from '@angular/material';
import { ConfigService } from 'app/core/ui-services/config.service';
import { LineNumberingMode, ChangeRecoMode } from '../../models/view-motion';
import { InfoToExport } from '../../services/motion-pdf.service';
import { MotionCommentSectionRepositoryService } from 'app/core/repositories/motions/motion-comment-section-repository.service';
import { ViewMotionCommentSection } from '../../models/view-motion-comment-section';
import { LineNumberingMode, ChangeRecoMode } from 'app/site/motions/models/view-motion';
import { InfoToExport } from 'app/site/motions/services/motion-pdf.service';
import { ViewMotionCommentSection } from 'app/site/motions/models/view-motion-comment-section';
/**
* Dialog component to determine exporting.

View File

@ -1,7 +1,7 @@
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { MotionListComponent } from './motion-list.component';
import { E2EImportsModule } from '../../../../../e2e-imports.module';
import { E2EImportsModule } from 'e2e-imports.module';
describe('MotionListComponent', () => {
let component: MotionListComponent;

View File

@ -7,27 +7,27 @@ import { TranslateService } from '@ngx-translate/core';
import { CategoryRepositoryService } from 'app/core/repositories/motions/category-repository.service';
import { ConfigService } from 'app/core/ui-services/config.service';
import { ListViewBaseComponent } from '../../../base/list-view-base';
import { LocalPermissionsService } from '../../services/local-permissions.service';
import { ListViewBaseComponent } from 'app/site/base/list-view-base';
import { MotionBlockRepositoryService } from 'app/core/repositories/motions/motion-block-repository.service';
import { MotionCsvExportService } from '../../services/motion-csv-export.service';
import { MotionFilterListService } from '../../services/motion-filter-list.service';
import { MotionMultiselectService } from '../../services/motion-multiselect.service';
import { MotionRepositoryService } from 'app/core/repositories/motions/motion-repository.service';
import { MotionSortListService } from '../../services/motion-sort-list.service';
import { TagRepositoryService } from 'app/core/repositories/tags/tag-repository.service';
import { ViewCategory } from '../../models/view-category';
import { ViewMotion, LineNumberingMode, ChangeRecoMode } from '../../models/view-motion';
import { ViewMotionBlock } from '../../models/view-motion-block';
import { ViewTag } from 'app/site/tags/models/view-tag';
import { ViewWorkflow } from '../../models/view-workflow';
import { WorkflowState } from 'app/shared/models/motions/workflow-state';
import { WorkflowRepositoryService } from 'app/core/repositories/motions/workflow-repository.service';
import { MotionPdfExportService } from '../../services/motion-pdf-export.service';
import { MotionExportDialogComponent } from '../motion-export-dialog/motion-export-dialog.component';
import { OperatorService } from 'app/core/core-services/operator.service';
import { ViewportService } from 'app/core/ui-services/viewport.service';
import { Motion } from 'app/shared/models/motions/motion';
import { ViewMotion, LineNumberingMode, ChangeRecoMode } from 'app/site/motions/models/view-motion';
import { ViewWorkflow } from 'app/site/motions/models/view-workflow';
import { ViewCategory } from 'app/site/motions/models/view-category';
import { ViewMotionBlock } from 'app/site/motions/models/view-motion-block';
import { MotionSortListService } from 'app/site/motions/services/motion-sort-list.service';
import { MotionFilterListService } from 'app/site/motions/services/motion-filter-list.service';
import { MotionCsvExportService } from 'app/site/motions/services/motion-csv-export.service';
import { MotionPdfExportService } from 'app/site/motions/services/motion-pdf-export.service';
import { MotionMultiselectService } from 'app/site/motions/services/motion-multiselect.service';
import { LocalPermissionsService } from 'app/site/motions/services/local-permissions.service';
/**
* Component that displays all the motions in a Table using DataSource.

View File

@ -0,0 +1,11 @@
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { MotionListComponent } from './components/motion-list/motion-list.component';
const routes: Routes = [{ path: '', component: MotionListComponent, pathMatch: 'full' }];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule]
})
export class MotionListRoutingModule {}

View File

@ -0,0 +1,14 @@
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { MotionListRoutingModule } from './motion-list-routing.module';
import { SharedModule } from 'app/shared/shared.module';
import { MotionExportDialogComponent } from './components/motion-export-dialog/motion-export-dialog.component';
import { MotionListComponent } from './components/motion-list/motion-list.component';
@NgModule({
imports: [CommonModule, MotionListRoutingModule, SharedModule],
declarations: [MotionListComponent, MotionExportDialogComponent],
entryComponents: [MotionExportDialogComponent]
})
export class MotionListModule {}

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