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:
parent
70191ce455
commit
6a421f8f6b
@ -16,7 +16,7 @@ const routes: Routes = [
|
|||||||
path: 'login',
|
path: 'login',
|
||||||
component: LoginWrapperComponent,
|
component: LoginWrapperComponent,
|
||||||
children: [
|
children: [
|
||||||
{ path: '', component: LoginMaskComponent },
|
{ path: '', component: LoginMaskComponent, pathMatch: 'full' },
|
||||||
{ path: 'reset-password', component: ResetPasswordComponent },
|
{ path: 'reset-password', component: ResetPasswordComponent },
|
||||||
{ path: 'reset-password-confirm', component: ResetPasswordConfirmComponent },
|
{ path: 'reset-password-confirm', component: ResetPasswordConfirmComponent },
|
||||||
{ path: 'legalnotice', component: LoginLegalNoticeComponent },
|
{ path: 'legalnotice', component: LoginLegalNoticeComponent },
|
||||||
|
@ -61,14 +61,12 @@ export class AppComponent {
|
|||||||
// change default JS functions
|
// change default JS functions
|
||||||
this.overloadArrayToString();
|
this.overloadArrayToString();
|
||||||
|
|
||||||
appRef.isStable.subscribe(s => console.log('is stable', s));
|
|
||||||
appRef.isStable
|
appRef.isStable
|
||||||
.pipe(
|
.pipe(
|
||||||
filter(s => s),
|
filter(s => s),
|
||||||
take(1)
|
take(1)
|
||||||
)
|
)
|
||||||
.subscribe(() => {
|
.subscribe(() => {
|
||||||
console.log('start scheduler');
|
|
||||||
servertimeService.startScheduler();
|
servertimeService.startScheduler();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -6,7 +6,8 @@ import { FullscreenProjectorComponent } from './fullscreen-projector/fullscreen-
|
|||||||
const routes: Routes = [
|
const routes: Routes = [
|
||||||
{
|
{
|
||||||
path: '',
|
path: '',
|
||||||
component: FullscreenProjectorComponent
|
component: FullscreenProjectorComponent,
|
||||||
|
pathMatch: 'full'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: ':id',
|
path: ':id',
|
||||||
|
@ -16,6 +16,7 @@ import { MainMenuService } from 'app/core/core-services/main-menu.service';
|
|||||||
*
|
*
|
||||||
* ```html
|
* ```html
|
||||||
* <os-head-bar
|
* <os-head-bar
|
||||||
|
* prevUrl="../.."
|
||||||
* [nav]="false"
|
* [nav]="false"
|
||||||
* [goBack]="true"
|
* [goBack]="true"
|
||||||
* [mainButton]="opCanEdit()"
|
* [mainButton]="opCanEdit()"
|
||||||
@ -89,6 +90,15 @@ export class HeadBarComponent {
|
|||||||
@Input()
|
@Input()
|
||||||
public goBack = false;
|
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
|
* Emit a signal to the parent component if the main button was clicked
|
||||||
*/
|
*/
|
||||||
@ -141,7 +151,7 @@ export class HeadBarComponent {
|
|||||||
if (this.goBack) {
|
if (this.goBack) {
|
||||||
this.location.back();
|
this.location.back();
|
||||||
} else {
|
} else {
|
||||||
this.router.navigate(['../'], { relativeTo: this.route });
|
this.router.navigate([this.prevUrl], { relativeTo: this.route });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
@import '../../../../assets/styles/drag.scss';
|
@import '~assets/styles/drag.scss';
|
||||||
|
|
||||||
.box {
|
.box {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
@ -8,7 +8,7 @@ import { ListOfSpeakersComponent } from './components/list-of-speakers/list-of-s
|
|||||||
import { TopicDetailComponent } from './components/topic-detail/topic-detail.component';
|
import { TopicDetailComponent } from './components/topic-detail/topic-detail.component';
|
||||||
|
|
||||||
const routes: Routes = [
|
const routes: Routes = [
|
||||||
{ path: '', component: AgendaListComponent },
|
{ path: '', component: AgendaListComponent, pathMatch: 'full' },
|
||||||
{ path: 'import', component: AgendaImportListComponent },
|
{ path: 'import', component: AgendaImportListComponent },
|
||||||
{ path: 'topics/new', component: TopicDetailComponent },
|
{ path: 'topics/new', component: TopicDetailComponent },
|
||||||
{ path: 'sort-agenda', component: AgendaSortComponent },
|
{ path: 'sort-agenda', component: AgendaSortComponent },
|
||||||
|
@ -2,7 +2,7 @@ import { NgModule } from '@angular/core';
|
|||||||
import { Routes, RouterModule } from '@angular/router';
|
import { Routes, RouterModule } from '@angular/router';
|
||||||
import { AssignmentListComponent } from './assignment-list/assignment-list.component';
|
import { AssignmentListComponent } from './assignment-list/assignment-list.component';
|
||||||
|
|
||||||
const routes: Routes = [{ path: '', component: AssignmentListComponent }];
|
const routes: Routes = [{ path: '', component: AssignmentListComponent, pathMatch: 'full' }];
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [RouterModule.forChild(routes)],
|
imports: [RouterModule.forChild(routes)],
|
||||||
|
@ -9,7 +9,8 @@ import { SearchComponent } from './components/search/search.component';
|
|||||||
const routes: Routes = [
|
const routes: Routes = [
|
||||||
{
|
{
|
||||||
path: '',
|
path: '',
|
||||||
component: StartComponent
|
component: StartComponent,
|
||||||
|
pathMatch: 'full'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'legalnotice',
|
path: 'legalnotice',
|
||||||
|
@ -2,7 +2,7 @@ import { NgModule } from '@angular/core';
|
|||||||
import { Routes, RouterModule } from '@angular/router';
|
import { Routes, RouterModule } from '@angular/router';
|
||||||
import { ConfigListComponent } from './components/config-list/config-list.component';
|
import { ConfigListComponent } from './components/config-list/config-list.component';
|
||||||
|
|
||||||
const routes: Routes = [{ path: '', component: ConfigListComponent }];
|
const routes: Routes = [{ path: '', component: ConfigListComponent, pathMatch: 'full' }];
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [RouterModule.forChild(routes)],
|
imports: [RouterModule.forChild(routes)],
|
||||||
|
@ -5,7 +5,7 @@ import { HistoryListComponent } from './components/history-list/history-list.com
|
|||||||
/**
|
/**
|
||||||
* Define the routes for the history module
|
* 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
|
* Define the routing component and setup the routes
|
||||||
|
@ -4,7 +4,7 @@ import { MediafileListComponent } from './components/mediafile-list/mediafile-li
|
|||||||
import { MediaUploadComponent } from './components/media-upload/media-upload.component';
|
import { MediaUploadComponent } from './components/media-upload/media-upload.component';
|
||||||
|
|
||||||
const routes: Routes = [
|
const routes: Routes = [
|
||||||
{ path: '', component: MediafileListComponent },
|
{ path: '', component: MediafileListComponent, pathMatch: 'full' },
|
||||||
{ path: 'upload', component: MediaUploadComponent }
|
{ path: 'upload', component: MediaUploadComponent }
|
||||||
];
|
];
|
||||||
|
|
||||||
|
@ -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();
|
|
||||||
});
|
|
||||||
});
|
|
@ -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 {}
|
@ -1,4 +1,4 @@
|
|||||||
<os-head-bar [nav]="false">
|
<os-head-bar prevUrl="../.." [nav]="false">
|
||||||
<!-- Title -->
|
<!-- Title -->
|
||||||
<div class="title-slot">
|
<div class="title-slot">
|
||||||
<h2 translate>Call list</h2>
|
<h2 translate>Call list</h2>
|
@ -5,12 +5,13 @@ import { MatSnackBar } from '@angular/material';
|
|||||||
import { TranslateService } from '@ngx-translate/core';
|
import { TranslateService } from '@ngx-translate/core';
|
||||||
import { Observable } from 'rxjs';
|
import { Observable } from 'rxjs';
|
||||||
|
|
||||||
import { BaseViewComponent } from '../../../base/base-view';
|
|
||||||
import { MotionRepositoryService } from 'app/core/repositories/motions/motion-repository.service';
|
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 { BaseViewComponent } from 'app/site/base/base-view';
|
||||||
import { ViewMotion } from '../../models/view-motion';
|
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 { 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.
|
* Sort view for the call list.
|
@ -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 {}
|
@ -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 {}
|
@ -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 {}
|
@ -1,4 +1,4 @@
|
|||||||
<os-head-bar [nav]="false" [mainButton]="true" (mainEvent)="onPlusButton()">
|
<os-head-bar prevUrl="../.." [nav]="false" [mainButton]="true" (mainEvent)="onPlusButton()">
|
||||||
<!-- Title -->
|
<!-- Title -->
|
||||||
<div class="title-slot">
|
<div class="title-slot">
|
||||||
<h2 translate>Categories</h2>
|
<h2 translate>Categories</h2>
|
@ -1,7 +1,7 @@
|
|||||||
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
|
||||||
import { CategoryListComponent } from './category-list.component';
|
import { CategoryListComponent } from './category-list.component';
|
||||||
import { E2EImportsModule } from '../../../../../e2e-imports.module';
|
import { E2EImportsModule } from 'e2e-imports.module';
|
||||||
|
|
||||||
describe('CategoryListComponent', () => {
|
describe('CategoryListComponent', () => {
|
||||||
let component: CategoryListComponent;
|
let component: CategoryListComponent;
|
@ -5,13 +5,13 @@ import { Title } 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 { Category } from 'app/shared/models/motions/category';
|
import { Category } from 'app/shared/models/motions/category';
|
||||||
import { CategoryRepositoryService } from 'app/core/repositories/motions/category-repository.service';
|
import { CategoryRepositoryService } from 'app/core/repositories/motions/category-repository.service';
|
||||||
import { MotionRepositoryService } from 'app/core/repositories/motions/motion-repository.service';
|
import { MotionRepositoryService } from 'app/core/repositories/motions/motion-repository.service';
|
||||||
import { PromptService } from 'app/core/ui-services/prompt.service';
|
import { PromptService } from 'app/core/ui-services/prompt.service';
|
||||||
import { ViewCategory } from '../../models/view-category';
|
import { ViewCategory } from 'app/site/motions/models/view-category';
|
||||||
import { ViewMotion } from '../../models/view-motion';
|
import { ViewMotion } from 'app/site/motions/models/view-motion';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* List view for the categories.
|
* List view for the categories.
|
@ -10,8 +10,8 @@ import { MatSnackBar } from '@angular/material';
|
|||||||
import { MotionRepositoryService } from 'app/core/repositories/motions/motion-repository.service';
|
import { MotionRepositoryService } from 'app/core/repositories/motions/motion-repository.service';
|
||||||
import { PromptService } from 'app/core/ui-services/prompt.service';
|
import { PromptService } from 'app/core/ui-services/prompt.service';
|
||||||
import { SortingListComponent } from 'app/shared/components/sorting-list/sorting-list.component';
|
import { SortingListComponent } from 'app/shared/components/sorting-list/sorting-list.component';
|
||||||
import { ViewCategory } from '../../models/view-category';
|
import { ViewCategory } from 'app/site/motions/models/view-category';
|
||||||
import { ViewMotion } from '../../models/view-motion';
|
import { ViewMotion } from 'app/site/motions/models/view-motion';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* View for rearranging and renumbering the motions of a category. The {@link onNumberMotions}
|
* View for rearranging and renumbering the motions of a category. The {@link onNumberMotions}
|
@ -24,6 +24,7 @@
|
|||||||
|
|
||||||
.chip-container {
|
.chip-container {
|
||||||
display: block;
|
display: block;
|
||||||
|
min-height: 0; // default is inherit, will appear on the top edge of the cell
|
||||||
}
|
}
|
||||||
|
|
||||||
.os-headed-listview-table {
|
.os-headed-listview-table {
|
@ -10,10 +10,10 @@ import { ListViewBaseComponent } from 'app/site/base/list-view-base';
|
|||||||
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 { MotionRepositoryService } from 'app/core/repositories/motions/motion-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 { PromptService } from 'app/core/ui-services/prompt.service';
|
||||||
import { ViewMotion } from '../../models/view-motion';
|
import { ViewMotion } from 'app/site/motions/models/view-motion';
|
||||||
import { OperatorService } from '../../../../core/core-services/operator.service';
|
import { ViewMotionBlock } from 'app/site/motions/models/view-motion-block';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Detail component to display one motion block
|
* Detail component to display one motion block
|
@ -1,4 +1,4 @@
|
|||||||
<os-head-bar [nav]="false" [mainButton]="canEdit" (mainEvent)="onPlusButton()">
|
<os-head-bar prevUrl="../.." [nav]="false" [mainButton]="canEdit" (mainEvent)="onPlusButton()">
|
||||||
<!-- Title -->
|
<!-- Title -->
|
||||||
<div class="title-slot"><h2 translate>Motion blocks</h2></div>
|
<div class="title-slot"><h2 translate>Motion blocks</h2></div>
|
||||||
</os-head-bar>
|
</os-head-bar>
|
@ -15,7 +15,7 @@ import { MotionBlockRepositoryService } from 'app/core/repositories/motions/moti
|
|||||||
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 { ViewItem } from 'app/site/agenda/models/view-item';
|
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
|
* Table for the motion blocks
|
@ -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 {}
|
@ -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 {}
|
@ -1,4 +1,4 @@
|
|||||||
<os-head-bar [nav]="false" [mainButton]="true" (mainEvent)="onPlusButton()">
|
<os-head-bar prevUrl="../.." [nav]="false" [mainButton]="true" (mainEvent)="onPlusButton()">
|
||||||
<!-- Title -->
|
<!-- Title -->
|
||||||
<div class="title-slot">
|
<div class="title-slot">
|
||||||
<h2 translate>Comment fields</h2>
|
<h2 translate>Comment fields</h2>
|
||||||
@ -12,19 +12,31 @@
|
|||||||
<form [formGroup]="createForm" (keydown)="keyDownFunction($event)">
|
<form [formGroup]="createForm" (keydown)="keyDownFunction($event)">
|
||||||
<p>
|
<p>
|
||||||
<mat-form-field>
|
<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">
|
<mat-hint *ngIf="!createForm.controls.name.valid">
|
||||||
<span translate>Required</span>
|
<span translate>Required</span>
|
||||||
</mat-hint>
|
</mat-hint>
|
||||||
</mat-form-field>
|
</mat-form-field>
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
<os-search-value-selector ngDefaultControl [form]="createForm" [formControl]="this.createForm.get('read_groups_id')"
|
<os-search-value-selector
|
||||||
[multiple]="true" listname="Groups with read permissions" [InputListValues]="this.groups"></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>
|
||||||
<p>
|
<p>
|
||||||
<os-search-value-selector ngDefaultControl [form]="createForm" [formControl]="this.createForm.get('write_groups_id')"
|
<os-search-value-selector
|
||||||
[multiple]="true" listname="Groups with write permissions" [InputListValues]="this.groups"></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>
|
</p>
|
||||||
</form>
|
</form>
|
||||||
</mat-card-content>
|
</mat-card-content>
|
||||||
@ -38,8 +50,13 @@
|
|||||||
</mat-card-actions>
|
</mat-card-actions>
|
||||||
</mat-card>
|
</mat-card>
|
||||||
<mat-accordion class="os-card">
|
<mat-accordion class="os-card">
|
||||||
<mat-expansion-panel *ngFor="let section of this.commentSections" (opened)="openId = section.id" (closed)="panelClosed(section)"
|
<mat-expansion-panel
|
||||||
[expanded]="openId === section.id" multiple="false">
|
*ngFor="let section of this.commentSections"
|
||||||
|
(opened)="openId = section.id"
|
||||||
|
(closed)="panelClosed(section)"
|
||||||
|
[expanded]="openId === section.id"
|
||||||
|
multiple="false"
|
||||||
|
>
|
||||||
<mat-expansion-panel-header>
|
<mat-expansion-panel-header>
|
||||||
<mat-panel-title>
|
<mat-panel-title>
|
||||||
<div class="header-container">
|
<div class="header-container">
|
||||||
@ -67,19 +84,31 @@
|
|||||||
<span translate>Edit comment field:</span>
|
<span translate>Edit comment field:</span>
|
||||||
<p>
|
<p>
|
||||||
<mat-form-field>
|
<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">
|
<mat-hint *ngIf="!updateForm.controls.name.valid">
|
||||||
<span translate>Required</span>
|
<span translate>Required</span>
|
||||||
</mat-hint>
|
</mat-hint>
|
||||||
</mat-form-field>
|
</mat-form-field>
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
<os-search-value-selector ngDefaultControl [form]="updateForm" [formControl]="this.updateForm.get('read_groups_id')"
|
<os-search-value-selector
|
||||||
[multiple]="true" listname="Groups with read permissions" [InputListValues]="this.groups"></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>
|
||||||
<p>
|
<p>
|
||||||
<os-search-value-selector ngDefaultControl [form]="updateForm" [formControl]="this.updateForm.get('write_groups_id')"
|
<os-search-value-selector
|
||||||
[multiple]="true" listname="Groups with write permissions" [InputListValues]="this.groups"></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>
|
</p>
|
||||||
</form>
|
</form>
|
||||||
<ng-container *ngIf="editId !== section.id">
|
<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>
|
<div class="spacer-left" *ngIf="section.write_groups.length === 0" translate>No groups selected</div>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
<mat-action-row>
|
<mat-action-row>
|
||||||
<button *ngIf="editId !== section.id" mat-button class="on-transition-fade" (click)="onEditButton(section)"
|
<button
|
||||||
mat-icon-button>
|
*ngIf="editId !== section.id"
|
||||||
|
mat-button
|
||||||
|
class="on-transition-fade"
|
||||||
|
(click)="onEditButton(section)"
|
||||||
|
mat-icon-button
|
||||||
|
>
|
||||||
<mat-icon>edit</mat-icon>
|
<mat-icon>edit</mat-icon>
|
||||||
</button>
|
</button>
|
||||||
<button *ngIf="editId === section.id" mat-button class="on-transition-fade" (click)="editId = null"
|
<button
|
||||||
mat-icon-button>
|
*ngIf="editId === section.id"
|
||||||
|
mat-button
|
||||||
|
class="on-transition-fade"
|
||||||
|
(click)="editId = null"
|
||||||
|
mat-icon-button
|
||||||
|
>
|
||||||
<mat-icon>cancel</mat-icon>
|
<mat-icon>cancel</mat-icon>
|
||||||
</button>
|
</button>
|
||||||
<button *ngIf="editId === section.id" mat-button class="on-transition-fade" (click)="onSaveButton(section)"
|
<button
|
||||||
mat-icon-button>
|
*ngIf="editId === section.id"
|
||||||
|
mat-button
|
||||||
|
class="on-transition-fade"
|
||||||
|
(click)="onSaveButton(section)"
|
||||||
|
mat-icon-button
|
||||||
|
>
|
||||||
<mat-icon>save</mat-icon>
|
<mat-icon>save</mat-icon>
|
||||||
</button>
|
</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>
|
<mat-icon>delete</mat-icon>
|
||||||
</button>
|
</button>
|
||||||
</mat-action-row>
|
</mat-action-row>
|
@ -7,12 +7,13 @@ import { BehaviorSubject } from 'rxjs';
|
|||||||
|
|
||||||
import { FormGroup, FormBuilder, Validators } from '@angular/forms';
|
import { FormGroup, FormBuilder, Validators } from '@angular/forms';
|
||||||
import { MotionCommentSection } from 'app/shared/models/motions/motion-comment-section';
|
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 { MotionCommentSectionRepositoryService } from 'app/core/repositories/motions/motion-comment-section-repository.service';
|
||||||
import { PromptService } from 'app/core/ui-services/prompt.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 { ViewGroup } from 'app/site/users/models/view-group';
|
||||||
import { GroupRepositoryService } from 'app/core/repositories/users/group-repository.service';
|
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.
|
* List view for the comment sections.
|
@ -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 {}
|
@ -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 {}
|
@ -1,7 +1,7 @@
|
|||||||
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
|
||||||
import { AmendmentCreateWizardComponent } from './amendment-create-wizard.component';
|
import { AmendmentCreateWizardComponent } from './amendment-create-wizard.component';
|
||||||
import { E2EImportsModule } from '../../../../../e2e-imports.module';
|
import { E2EImportsModule } from 'e2e-imports.module';
|
||||||
|
|
||||||
describe('AmendmentCreateWizardComponent', () => {
|
describe('AmendmentCreateWizardComponent', () => {
|
||||||
let component: AmendmentCreateWizardComponent;
|
let component: AmendmentCreateWizardComponent;
|
@ -5,13 +5,13 @@ import { FormBuilder, FormGroup, Validators } from '@angular/forms';
|
|||||||
import { MatSnackBar } from '@angular/material';
|
import { MatSnackBar } from '@angular/material';
|
||||||
|
|
||||||
import { TranslateService } from '@ngx-translate/core';
|
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 { BaseViewComponent } from 'app/site/base/base-view';
|
||||||
import { ViewMotion } from '../../models/view-motion';
|
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 { LinenumberingService } from 'app/core/ui-services/linenumbering.service';
|
||||||
import { BaseViewComponent } from '../../../base/base-view';
|
import { MotionRepositoryService } from 'app/core/repositories/motions/motion-repository.service';
|
||||||
import { CreateMotion } from '../../models/create-motion';
|
import { ViewMotion } from 'app/site/motions/models/view-motion';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Describes the single paragraphs from the base motion.
|
* Describes the single paragraphs from the base motion.
|
@ -3,7 +3,8 @@ import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
|||||||
import { ManageSubmittersComponent } from './manage-submitters.component';
|
import { ManageSubmittersComponent } from './manage-submitters.component';
|
||||||
import { E2EImportsModule } from 'e2e-imports.module';
|
import { E2EImportsModule } from 'e2e-imports.module';
|
||||||
import { ViewChild, Component } from '@angular/core';
|
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';
|
import { Motion } from 'app/shared/models/motions/motion';
|
||||||
|
|
||||||
describe('ManageSubmittersComponent', () => {
|
describe('ManageSubmittersComponent', () => {
|
@ -2,18 +2,18 @@ import { Component, Input } from '@angular/core';
|
|||||||
import { FormGroup, FormControl } from '@angular/forms';
|
import { FormGroup, FormControl } from '@angular/forms';
|
||||||
import { MatSnackBar } from '@angular/material';
|
import { MatSnackBar } from '@angular/material';
|
||||||
import { Title } from '@angular/platform-browser';
|
import { Title } from '@angular/platform-browser';
|
||||||
|
|
||||||
import { TranslateService } from '@ngx-translate/core';
|
|
||||||
import { BehaviorSubject, Observable } from 'rxjs';
|
import { BehaviorSubject, Observable } from 'rxjs';
|
||||||
|
|
||||||
|
import { TranslateService } from '@ngx-translate/core';
|
||||||
|
|
||||||
import { BaseViewComponent } from 'app/site/base/base-view';
|
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 { MotionRepositoryService } from 'app/core/repositories/motions/motion-repository.service';
|
||||||
import { User } from 'app/shared/models/users/user';
|
import { User } from 'app/shared/models/users/user';
|
||||||
import { ViewMotion } from '../../models/view-motion';
|
|
||||||
import { ViewUser } from 'app/site/users/models/view-user';
|
import { ViewUser } from 'app/site/users/models/view-user';
|
||||||
import { ViewModelStoreService } from 'app/core/core-services/view-model-store.service';
|
import { ViewModelStoreService } from 'app/core/core-services/view-model-store.service';
|
||||||
import { UserRepositoryService } from 'app/core/repositories/users/user-repository.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
|
* Component for the motion comments view
|
@ -4,10 +4,11 @@ import {
|
|||||||
MotionChangeRecommendationComponent,
|
MotionChangeRecommendationComponent,
|
||||||
MotionChangeRecommendationComponentData
|
MotionChangeRecommendationComponentData
|
||||||
} from './motion-change-recommendation.component';
|
} 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 { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material';
|
||||||
import { ModificationType } from 'app/core/ui-services/diff.service';
|
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', () => {
|
describe('MotionChangeRecommendationComponent', () => {
|
||||||
let component: MotionChangeRecommendationComponent;
|
let component: MotionChangeRecommendationComponent;
|
@ -5,10 +5,10 @@ import { Title } from '@angular/platform-browser';
|
|||||||
|
|
||||||
import { TranslateService } from '@ngx-translate/core';
|
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 { ChangeRecommendationRepositoryService } from 'app/core/repositories/motions/change-recommendation-repository.service';
|
||||||
import { ViewMotionChangeRecommendation } from '../../models/view-change-recommendation';
|
import { LineRange, ModificationType } from 'app/core/ui-services/diff.service';
|
||||||
import { BaseViewComponent } from '../../../base/base-view';
|
import { ViewMotionChangeRecommendation } from 'app/site/motions/models/view-change-recommendation';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Data that needs to be provided to the MotionChangeRecommendationComponent dialog
|
* Data that needs to be provided to the MotionChangeRecommendationComponent dialog
|
@ -1,7 +1,7 @@
|
|||||||
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
|
||||||
import { MotionCommentsComponent } from './motion-comments.component';
|
import { MotionCommentsComponent } from './motion-comments.component';
|
||||||
import { E2EImportsModule } from '../../../../../e2e-imports.module';
|
import { E2EImportsModule } from 'e2e-imports.module';
|
||||||
|
|
||||||
describe('MotionCommentsComponent', () => {
|
describe('MotionCommentsComponent', () => {
|
||||||
let component: MotionCommentsComponent;
|
let component: MotionCommentsComponent;
|
@ -5,13 +5,13 @@ import { FormGroup, FormBuilder } from '@angular/forms';
|
|||||||
|
|
||||||
import { TranslateService } from '@ngx-translate/core';
|
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 { BaseViewComponent } from 'app/site/base/base-view';
|
||||||
import { MotionPdfExportService } from '../../services/motion-pdf-export.service';
|
|
||||||
import { MotionComment } from 'app/shared/models/motions/motion';
|
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
|
* Component for the motion comments view
|
@ -1,13 +1,13 @@
|
|||||||
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
|
||||||
import { E2EImportsModule } from '../../../../../e2e-imports.module';
|
|
||||||
import { Component } from '@angular/core';
|
import { Component } from '@angular/core';
|
||||||
import { LineNumberingMode, ViewMotion } from '../../models/view-motion';
|
|
||||||
import { MotionDetailDiffComponent } from './motion-detail-diff.component';
|
import { MotionDetailDiffComponent } from './motion-detail-diff.component';
|
||||||
import { MotionDetailOriginalChangeRecommendationsComponent } from '../motion-detail-original-change-recommendations/motion-detail-original-change-recommendations.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 { 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({
|
@Component({
|
||||||
template: `
|
template: `
|
@ -4,19 +4,19 @@ import { DomSanitizer, SafeHtml, Title } 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 { ConfigService } from 'app/core/ui-services/config.service';
|
import { ConfigService } from 'app/core/ui-services/config.service';
|
||||||
import { ChangeRecommendationRepositoryService } from 'app/core/repositories/motions/change-recommendation-repository.service';
|
import { ChangeRecommendationRepositoryService } from 'app/core/repositories/motions/change-recommendation-repository.service';
|
||||||
import { DiffService, LineRange, ModificationType } from 'app/core/ui-services/diff.service';
|
import { DiffService, LineRange, ModificationType } from 'app/core/ui-services/diff.service';
|
||||||
import { LineNumberingMode, ViewMotion } from '../../models/view-motion';
|
|
||||||
import {
|
import {
|
||||||
MotionChangeRecommendationComponent,
|
MotionChangeRecommendationComponent,
|
||||||
MotionChangeRecommendationComponentData
|
MotionChangeRecommendationComponentData
|
||||||
} from '../motion-change-recommendation/motion-change-recommendation.component';
|
} from '../motion-change-recommendation/motion-change-recommendation.component';
|
||||||
import { MotionRepositoryService } from 'app/core/repositories/motions/motion-repository.service';
|
import { MotionRepositoryService } from 'app/core/repositories/motions/motion-repository.service';
|
||||||
import { PromptService } from 'app/core/ui-services/prompt.service';
|
import { PromptService } from 'app/core/ui-services/prompt.service';
|
||||||
import { ViewUnifiedChange, ViewUnifiedChangeType } from '../../../../shared/models/motions/view-unified-change';
|
import { ViewMotion, LineNumberingMode } from 'app/site/motions/models/view-motion';
|
||||||
import { ViewMotionChangeRecommendation } from '../../models/view-change-recommendation';
|
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.
|
* This component displays the original motion text with the change blocks inside.
|
@ -1,7 +1,7 @@
|
|||||||
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
|
||||||
import { MotionDetailOriginalChangeRecommendationsComponent } from './motion-detail-original-change-recommendations.component';
|
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';
|
import { Component } from '@angular/core';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
@ -11,8 +11,8 @@ import {
|
|||||||
} from '@angular/core';
|
} from '@angular/core';
|
||||||
|
|
||||||
import { LineRange, ModificationType } from 'app/core/ui-services/diff.service';
|
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 { 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
|
* This component displays the original motion text with annotated change commendations
|
@ -1,6 +1,7 @@
|
|||||||
<os-head-bar
|
<os-head-bar
|
||||||
[mainButton]="perms.isAllowed('update', motion)"
|
[mainButton]="perms.isAllowed('update', motion)"
|
||||||
mainButtonIcon="edit"
|
mainButtonIcon="edit"
|
||||||
|
prevUrl="../.."
|
||||||
[nav]="false"
|
[nav]="false"
|
||||||
[editMode]="editMotion"
|
[editMode]="editMotion"
|
||||||
(mainEvent)="setEditMode(!editMotion)"
|
(mainEvent)="setEditMode(!editMotion)"
|
@ -1,4 +1,4 @@
|
|||||||
@import '../../../../../assets/styles/motion-styles-common';
|
@import '~assets/styles/motion-styles-common';
|
||||||
|
|
||||||
span {
|
span {
|
||||||
margin: 0;
|
margin: 0;
|
@ -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();
|
||||||
|
});
|
||||||
|
});
|
@ -7,28 +7,26 @@ import { MatDialog, MatSnackBar, MatCheckboxChange, ErrorStateMatcher } from '@a
|
|||||||
import { BehaviorSubject, Subscription } from 'rxjs';
|
import { BehaviorSubject, Subscription } from 'rxjs';
|
||||||
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 { CategoryRepositoryService } from 'app/core/repositories/motions/category-repository.service';
|
import { CategoryRepositoryService } from 'app/core/repositories/motions/category-repository.service';
|
||||||
import { ChangeRecommendationRepositoryService } from 'app/core/repositories/motions/change-recommendation-repository.service';
|
import { ChangeRecommendationRepositoryService } from 'app/core/repositories/motions/change-recommendation-repository.service';
|
||||||
import { ChangeRecoMode, LineNumberingMode, ViewMotion } from '../../models/view-motion';
|
import { CreateMotion } from 'app/site/motions/models/create-motion';
|
||||||
import { CreateMotion } from '../../models/create-motion';
|
|
||||||
import { ConfigService } from 'app/core/ui-services/config.service';
|
import { ConfigService } from 'app/core/ui-services/config.service';
|
||||||
import { DataStoreService } from 'app/core/core-services/data-store.service';
|
import { DataStoreService } from 'app/core/core-services/data-store.service';
|
||||||
import { DiffLinesInParagraph, LineRange } from 'app/core/ui-services/diff.service';
|
import { DiffLinesInParagraph, LineRange } from 'app/core/ui-services/diff.service';
|
||||||
import { ItemRepositoryService } from 'app/core/repositories/agenda/item-repository.service';
|
import { ItemRepositoryService } from 'app/core/repositories/agenda/item-repository.service';
|
||||||
import { itemVisibilityChoices, Item } from 'app/shared/models/agenda/item';
|
import { itemVisibilityChoices, Item } from 'app/shared/models/agenda/item';
|
||||||
import { LinenumberingService } from 'app/core/ui-services/linenumbering.service';
|
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 { Mediafile } from 'app/shared/models/mediafiles/mediafile';
|
||||||
import { Motion } from 'app/shared/models/motions/motion';
|
import { Motion } from 'app/shared/models/motions/motion';
|
||||||
import { MotionBlock } from 'app/shared/models/motions/motion-block';
|
import { MotionBlock } from 'app/shared/models/motions/motion-block';
|
||||||
import {
|
import {
|
||||||
MotionChangeRecommendationComponent,
|
MotionChangeRecommendationComponentData,
|
||||||
MotionChangeRecommendationComponentData
|
MotionChangeRecommendationComponent
|
||||||
} from '../motion-change-recommendation/motion-change-recommendation.component';
|
} 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 { MotionRepositoryService } from 'app/core/repositories/motions/motion-repository.service';
|
||||||
|
|
||||||
import { NotifyService } from 'app/core/core-services/notify.service';
|
import { NotifyService } from 'app/core/core-services/notify.service';
|
||||||
import { OperatorService } from 'app/core/core-services/operator.service';
|
import { OperatorService } from 'app/core/core-services/operator.service';
|
||||||
import { PersonalNoteContent } from 'app/shared/models/users/personal-note';
|
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 { StatuteParagraphRepositoryService } from 'app/core/repositories/motions/statute-paragraph-repository.service';
|
||||||
import { Tag } from 'app/shared/models/core/tag';
|
import { Tag } from 'app/shared/models/core/tag';
|
||||||
import { UserRepositoryService } from 'app/core/repositories/users/user-repository.service';
|
import { UserRepositoryService } from 'app/core/repositories/users/user-repository.service';
|
||||||
import { ViewMotionBlock } from '../../models/view-motion-block';
|
import { ViewMotionBlock } from 'app/site/motions/models/view-motion-block';
|
||||||
import { ViewWorkflow } from '../../models/view-workflow';
|
import { ViewWorkflow } from 'app/site/motions/models/view-workflow';
|
||||||
import { ViewUser } from 'app/site/users/models/view-user';
|
import { ViewUser } from 'app/site/users/models/view-user';
|
||||||
import { ViewCategory } from '../../models/view-category';
|
import { ViewCategory } from 'app/site/motions/models/view-category';
|
||||||
import { ViewCreateMotion } from '../../models/view-create-motion';
|
import { ViewCreateMotion } from 'app/site/motions/models/view-create-motion';
|
||||||
import { ViewItem } from 'app/site/agenda/models/view-item';
|
import { ViewItem } from 'app/site/agenda/models/view-item';
|
||||||
import { ViewportService } from 'app/core/ui-services/viewport.service';
|
import { ViewportService } from 'app/core/ui-services/viewport.service';
|
||||||
import { ViewMediafile } from 'app/site/mediafiles/models/view-mediafile';
|
import { ViewMediafile } from 'app/site/mediafiles/models/view-mediafile';
|
||||||
import { ViewModelStoreService } from 'app/core/core-services/view-model-store.service';
|
import { ViewModelStoreService } from 'app/core/core-services/view-model-store.service';
|
||||||
import { ViewMotionChangeRecommendation } from '../../models/view-change-recommendation';
|
import { ViewMotionChangeRecommendation } from 'app/site/motions/models/view-change-recommendation';
|
||||||
import { ViewMotionNotificationEditMotion, TypeOfNotificationViewMotion } from '../../models/view-motion-notify';
|
import {
|
||||||
import { ViewStatuteParagraph } from '../../models/view-statute-paragraph';
|
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 { ViewTag } from 'app/site/tags/models/view-tag';
|
||||||
import { ViewUnifiedChange } from 'app/shared/models/motions/view-unified-change';
|
import { ViewUnifiedChange } from 'app/shared/models/motions/view-unified-change';
|
||||||
import { Workflow } from 'app/shared/models/motions/workflow';
|
import { Workflow } from 'app/shared/models/motions/workflow';
|
||||||
@ -342,7 +344,7 @@ export class MotionDetailComponent extends BaseViewComponent implements OnInit,
|
|||||||
private editNotificationSubscription: Subscription;
|
private editNotificationSubscription: Subscription;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constuct the detail view.
|
* Constructs the detail view.
|
||||||
*
|
*
|
||||||
* @param title
|
* @param title
|
||||||
* @param translate
|
* @param translate
|
||||||
@ -552,7 +554,33 @@ export class MotionDetailComponent extends BaseViewComponent implements OnInit,
|
|||||||
* determine the motion to display using the URL
|
* determine the motion to display using the URL
|
||||||
*/
|
*/
|
||||||
public getMotionByUrl(): void {
|
public getMotionByUrl(): void {
|
||||||
if (this.route.snapshot.url[0] && this.route.snapshot.url[0].path === 'new') {
|
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;
|
||||||
|
this.newStateExtension = this.motion.stateExtension;
|
||||||
|
this.personalNoteService.getPersonalNoteObserver(this.motion.motion).subscribe(pn => {
|
||||||
|
this.personalNoteContent = pn;
|
||||||
|
});
|
||||||
|
this.patchForm(this.motion);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
this.repo.amendmentsTo(motionId).subscribe(
|
||||||
|
(amendments: ViewMotion[]): void => {
|
||||||
|
this.amendments = amendments;
|
||||||
|
this.recalcUnifiedChanges();
|
||||||
|
}
|
||||||
|
);
|
||||||
|
this.changeRecoRepo
|
||||||
|
.getChangeRecosOfMotionObservable(motionId)
|
||||||
|
.subscribe((recos: ViewMotionChangeRecommendation[]) => {
|
||||||
|
this.changeRecommendations = recos;
|
||||||
|
this.recalcUnifiedChanges();
|
||||||
|
});
|
||||||
|
} else {
|
||||||
// creates a new motion
|
// creates a new motion
|
||||||
this.newMotion = true;
|
this.newMotion = true;
|
||||||
this.editMotion = true;
|
this.editMotion = true;
|
||||||
@ -586,34 +614,8 @@ export class MotionDetailComponent extends BaseViewComponent implements OnInit,
|
|||||||
}
|
}
|
||||||
this.motion = new ViewCreateMotion(new CreateMotion(defaultMotion));
|
this.motion = new ViewCreateMotion(new CreateMotion(defaultMotion));
|
||||||
this.motionCopy = 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.repo.getViewModelObservable(motionId).subscribe(newViewMotion => {
|
|
||||||
if (newViewMotion) {
|
|
||||||
this.motion = newViewMotion;
|
|
||||||
this.newStateExtension = this.motion.stateExtension;
|
|
||||||
this.personalNoteService.getPersonalNoteObserver(this.motion.motion).subscribe(pn => {
|
|
||||||
this.personalNoteContent = pn;
|
|
||||||
});
|
|
||||||
this.patchForm(this.motion);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
this.repo.amendmentsTo(motionId).subscribe(
|
|
||||||
(amendments: ViewMotion[]): void => {
|
|
||||||
this.amendments = amendments;
|
|
||||||
this.recalcUnifiedChanges();
|
|
||||||
}
|
|
||||||
);
|
|
||||||
this.changeRecoRepo
|
|
||||||
.getChangeRecosOfMotionObservable(motionId)
|
|
||||||
.subscribe((recos: ViewMotionChangeRecommendation[]) => {
|
|
||||||
this.changeRecommendations = recos;
|
|
||||||
this.recalcUnifiedChanges();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1080,7 +1082,7 @@ export class MotionDetailComponent extends BaseViewComponent implements OnInit,
|
|||||||
*/
|
*/
|
||||||
public navigateToMotion(motion: ViewMotion): void {
|
public navigateToMotion(motion: ViewMotion): void {
|
||||||
if (motion) {
|
if (motion) {
|
||||||
this.router.navigate(['../' + motion.id], { relativeTo: this.route });
|
this.router.navigate(['../contacts'], { relativeTo: this.route.parent });
|
||||||
// update the current motion
|
// update the current motion
|
||||||
this.motion = motion;
|
this.motion = motion;
|
||||||
this.setSurroundingMotions();
|
this.setSurroundingMotions();
|
@ -3,7 +3,7 @@ import { MatDialogRef, MAT_DIALOG_DATA, MatSnackBar } from '@angular/material';
|
|||||||
import { TranslateService } from '@ngx-translate/core';
|
import { TranslateService } from '@ngx-translate/core';
|
||||||
|
|
||||||
import { MotionPoll } from 'app/shared/models/motions/motion-poll';
|
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.
|
* A dialog for updating the values of a poll.
|
@ -5,13 +5,13 @@ import { TranslateService } from '@ngx-translate/core';
|
|||||||
|
|
||||||
import { CalculablePollKey } from 'app/core/ui-services/poll.service';
|
import { CalculablePollKey } from 'app/core/ui-services/poll.service';
|
||||||
import { ConstantsService } from 'app/core/ui-services/constants.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 { MotionPoll } from 'app/shared/models/motions/motion-poll';
|
||||||
import { MotionPollService } from '../../services/motion-poll.service';
|
|
||||||
import { MotionPollDialogComponent } from './motion-poll-dialog.component';
|
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 { MotionRepositoryService } from 'app/core/repositories/motions/motion-repository.service';
|
||||||
import { PromptService } from 'app/core/ui-services/prompt.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.
|
* A component used to display and edit polls of a motion.
|
@ -3,11 +3,11 @@ import { FormBuilder, FormGroup } from '@angular/forms';
|
|||||||
|
|
||||||
import { Subscription } from 'rxjs';
|
import { Subscription } from 'rxjs';
|
||||||
|
|
||||||
import { BaseComponent } from '../../../../base.component';
|
import { BaseComponent } from 'app/base.component';
|
||||||
import { MotionPdfExportService } from '../../services/motion-pdf-export.service';
|
import { MotionPdfExportService } from 'app/site/motions/services/motion-pdf-export.service';
|
||||||
import { PersonalNoteContent } from 'app/shared/models/users/personal-note';
|
import { PersonalNoteContent } from 'app/shared/models/users/personal-note';
|
||||||
import { PersonalNoteService } from 'app/core/ui-services/personal-note.service';
|
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
|
* Component for the motion comments view
|
@ -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 {}
|
@ -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 {}
|
@ -1,4 +1,4 @@
|
|||||||
<os-head-bar [nav]="false">
|
<os-head-bar prevUrl="../.." [nav]="false">
|
||||||
<!-- Title -->
|
<!-- Title -->
|
||||||
<div class="title-slot"><h2 translate>Import motions</h2></div>
|
<div class="title-slot"><h2 translate>Import motions</h2></div>
|
||||||
|
|
||||||
@ -48,7 +48,7 @@
|
|||||||
</mat-form-field>
|
</mat-form-field>
|
||||||
<mat-form-field>
|
<mat-form-field>
|
||||||
<mat-label translate>Text separator</mat-label>
|
<mat-label translate>Text separator</mat-label>
|
||||||
<mat-select class="selection" (selectionChange)="selectTextSep($event)" value=""">
|
<mat-select class="selection" (selectionChange)="selectTextSep($event)" value='"'>
|
||||||
<mat-option *ngFor="let option of textSeparators" [value]="option.value">
|
<mat-option *ngFor="let option of textSeparators" [value]="option.value">
|
||||||
{{ option.label | translate }}
|
{{ option.label | translate }}
|
||||||
</mat-option>
|
</mat-option>
|
||||||
@ -107,7 +107,6 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="table-container">
|
<div class="table-container">
|
||||||
<table mat-table class="on-transition-fade" [dataSource]="dataSource" matSort>
|
<table mat-table class="on-transition-fade" [dataSource]="dataSource" matSort>
|
||||||
|
|
||||||
<!-- Status column -->
|
<!-- Status column -->
|
||||||
<ng-container matColumnDef="status" sticky>
|
<ng-container matColumnDef="status" sticky>
|
||||||
<mat-header-cell *matHeaderCellDef class="first-column"></mat-header-cell>
|
<mat-header-cell *matHeaderCellDef class="first-column"></mat-header-cell>
|
@ -5,9 +5,9 @@ import { Title } from '@angular/platform-browser';
|
|||||||
import { TranslateService } from '@ngx-translate/core';
|
import { TranslateService } from '@ngx-translate/core';
|
||||||
|
|
||||||
import { BaseImportListComponent } from 'app/site/base/base-import-list';
|
import { BaseImportListComponent } from 'app/site/base/base-import-list';
|
||||||
import { MotionCsvExportService } from '../../services/motion-csv-export.service';
|
import { MotionCsvExportService } from 'app/site/motions/services/motion-csv-export.service';
|
||||||
import { MotionImportService } from '../../services/motion-import.service';
|
import { MotionImportService } from 'app/site/motions/services/motion-import.service';
|
||||||
import { ViewMotion } from '../../models/view-motion';
|
import { ViewMotion } from 'app/site/motions/models/view-motion';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Component for the motion import list view.
|
* Component for the motion import list view.
|
@ -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 {}
|
@ -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 {}
|
@ -3,10 +3,10 @@ import { FormGroup, FormBuilder } from '@angular/forms';
|
|||||||
import { MatDialogRef, MatButtonToggle } from '@angular/material';
|
import { MatDialogRef, MatButtonToggle } from '@angular/material';
|
||||||
|
|
||||||
import { ConfigService } from 'app/core/ui-services/config.service';
|
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 { 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.
|
* Dialog component to determine exporting.
|
@ -1,7 +1,7 @@
|
|||||||
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
|
||||||
import { MotionListComponent } from './motion-list.component';
|
import { MotionListComponent } from './motion-list.component';
|
||||||
import { E2EImportsModule } from '../../../../../e2e-imports.module';
|
import { E2EImportsModule } from 'e2e-imports.module';
|
||||||
|
|
||||||
describe('MotionListComponent', () => {
|
describe('MotionListComponent', () => {
|
||||||
let component: MotionListComponent;
|
let component: MotionListComponent;
|
@ -7,27 +7,27 @@ import { TranslateService } from '@ngx-translate/core';
|
|||||||
|
|
||||||
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 '../../../base/list-view-base';
|
import { ListViewBaseComponent } from 'app/site/base/list-view-base';
|
||||||
import { LocalPermissionsService } from '../../services/local-permissions.service';
|
|
||||||
import { MotionBlockRepositoryService } from 'app/core/repositories/motions/motion-block-repository.service';
|
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 { 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 { 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 { ViewTag } from 'app/site/tags/models/view-tag';
|
||||||
import { ViewWorkflow } from '../../models/view-workflow';
|
|
||||||
import { WorkflowState } from 'app/shared/models/motions/workflow-state';
|
import { WorkflowState } from 'app/shared/models/motions/workflow-state';
|
||||||
import { WorkflowRepositoryService } from 'app/core/repositories/motions/workflow-repository.service';
|
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 { MotionExportDialogComponent } from '../motion-export-dialog/motion-export-dialog.component';
|
||||||
import { OperatorService } from 'app/core/core-services/operator.service';
|
import { OperatorService } from 'app/core/core-services/operator.service';
|
||||||
import { ViewportService } from 'app/core/ui-services/viewport.service';
|
import { ViewportService } from 'app/core/ui-services/viewport.service';
|
||||||
import { Motion } from 'app/shared/models/motions/motion';
|
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.
|
* Component that displays all the motions in a Table using DataSource.
|
@ -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 {}
|
@ -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
Loading…
Reference in New Issue
Block a user