Commit e0d130877f86006f000bbecd44849a7d30126b95

Authored by Administrator
2 parents adf1208b ad296a58

Merge branch 'master' of gitlab.artweb.com.ua:root/maps-admin

src/app/app.module.ts
... ... @@ -27,6 +27,8 @@ import { RoadWidthComponent } from './data/road-width/road-width.component';
27 27 import { CrossSectionComponent } from './data/cross-section/cross-section.component';
28 28 import { EditorComponent } from '../helpers/editor.component';
29 29 import { RendererComponent } from '../helpers/renderer.component';
  30 +import { FlowIntensityComponent } from './data/flow-intensity/flow-intensity.component';
  31 +import { RoadComponent } from './data/road/road.component';
30 32  
31 33 // Services
32 34 import { BusStopCreateService } from '../services/bus-stop-create.service';
... ... @@ -40,6 +42,10 @@ import { RoadWidthCreateService } from '../services/road-width-create.service';
40 42 import { CrossSectionService } from '../services/cross-section.service';
41 43 import { CrossSectionCreateService } from '../services/cross-section-create.service';
42 44 import { BooleanSelectListService } from '../services/boolean-select-list.service';
  45 +import { FlowIntensityCreateService } from '../services/flow-intensity-create.service';
  46 +import { FlowIntensityService } from '../services/flow-intensity.service';
  47 +import { RoadCreateService } from '../services/road-create.service';
  48 +import { RoadService } from '../services/road.service';
43 49  
44 50 const httpInterceptorProviders: Type<any>[] = [
45 51 RequestInterceptor,
... ... @@ -59,6 +65,8 @@ const httpInterceptorProviders: Type&lt;any&gt;[] = [
59 65 EditorComponent,
60 66 RendererComponent,
61 67 RoadWidthComponent,
  68 + FlowIntensityComponent,
  69 + RoadComponent,
62 70 CrossSectionComponent,
63 71 ], // directives, components, and pipes owned by this NgModule
64 72 imports: [
... ... @@ -70,6 +78,8 @@ const httpInterceptorProviders: Type&lt;any&gt;[] = [
70 78 RendererComponent,
71 79 RoadSurfaceComponent,
72 80 RoadWidthComponent,
  81 + FlowIntensityComponent,
  82 + RoadComponent,
73 83 CrossSectionComponent,
74 84 ]),
75 85 CovalentCoreModule.forRoot(),
... ... @@ -98,6 +108,10 @@ const httpInterceptorProviders: Type&lt;any&gt;[] = [
98 108 RoadSurfaceService,
99 109 RoadWidthCreateService,
100 110 RoadWidthService,
  111 + FlowIntensityCreateService,
  112 + FlowIntensityService,
  113 + RoadCreateService,
  114 + RoadService,
101 115 CrossSectionCreateService,
102 116 CrossSectionService,
103 117 ], // additional providers needed for this module
... ...
src/app/app.routes.ts
... ... @@ -9,6 +9,8 @@ import { RoadSurfaceComponent } from &#39;./data/road-surface/road-surface.component
9 9 import { RoadWidthComponent } from './data/road-width/road-width.component';
10 10 import { CrossSectionComponent } from './data/cross-section/cross-section.component';
11 11 import { ServiceObjectComponent } from './data/service-object/service-object.component';
  12 +import { FlowIntensityComponent } from './data/flow-intensity/flow-intensity.component';
  13 +import { RoadComponent } from './data/road/road.component';
12 14  
13 15 const routes: Routes = [
14 16 {path: 'login', component: LoginComponent},
... ... @@ -19,7 +21,9 @@ const routes: Routes = [
19 21 {path: 'service-object', component: ServiceObjectComponent},
20 22 {path: 'road-surface', component: RoadSurfaceComponent},
21 23 {path: 'road-width', component: RoadWidthComponent},
22   - {path: 'cross-section', component: CrossSectionComponent}
  24 + {path: 'flow-intensity', component: FlowIntensityComponent},
  25 + {path: 'cross-section', component: CrossSectionComponent},
  26 + {path: 'road', component: RoadComponent},
23 27 ]},
24 28 ]},
25 29 ];
... ...
src/app/data/cross-section/cross-section.component.html
... ... @@ -2,11 +2,11 @@
2 2 <ag-grid-ng2 #agGrid style="width: 100%; height: 100%;" class="ag-blue" [gridOptions]="gridOptions" [columnDefs]="columnDefs" [rowData]="rowData" enableColResize enableSorting enableFilter groupHeaders suppressRowClickSelection toolPanelSuppressGroups
3 3 toolPanelSuppressValues debug rowHeight="22" rowSelection="multiple" (cellClicked)="onCellClicked($event)" (cellDoubleClicked)="onCellDoubleClicked($event)" (cellContextMenu)="onCellContextMenu($event)" (cellValueChanged)="onCellValueChanged($event)"
4 4 (cellFocused)="onCellFocused($event)" (rowSelected)="onRowSelected($event)" (selectionChanged)="onSelectionChanged()" (beforeFilterChanged)="onBeforeFilterChanged()" (afterFilterChanged)="onAfterFilterChanged()" (filterModified)="onFilterModified()"
5   - (beforeSortChanged)="onBeforeSortChanged()" (afterSortChanged)="onAfterSortChanged()" (virtualRowRemoved)="onVirtualRowRemoved($event)" (rowClicked)="onRowClicked($event)">
  5 + (beforeSortChanged)="onBeforeSortChanged()" (afterSortChanged)="onAfterSortChanged($event)" (virtualRowRemoved)="onVirtualRowRemoved($event)" (rowClicked)="onRowClicked($event)">
6 6 </ag-grid-ng2>
7 7 <div class="control_button">
8 8 <div *tdLoading="'loading'; mode:'indeterminate'; type:'circle'; strategy:'replace'; color:'accent'"></div>
9   - <button md-fab color="accent" (click)="addNewRow()" type="button"><md-icon>add</md-icon></button>
10   - <button md-fab color="warn" (click)="deleteRows()" type="button"><md-icon>delete</md-icon></button>
  9 + <button md-fab color="accent" [disabled]="isNew || isSelected" (click)="addNewRow()" type="button"><md-icon>add</md-icon></button>
  10 + <button md-fab color="warn" [disabled]="!isSelected" (click)="deleteRows()" type="button"><md-icon>delete</md-icon></button>
11 11 </div>
12 12 </div>
13 13 \ No newline at end of file
... ...
src/app/data/data.component.html
... ... @@ -14,7 +14,7 @@
14 14 <span>ะ’ั–ะดะพะผะพัั‚ั–</span>
15 15 </md-toolbar>
16 16 <md-nav-list td-sidenav-content>
17   - <a md-list-item md-ripple class="block relative" (click)="!media.query('gt-sm') && manageList.close()" [routerLinkActive]="['active']" [routerLinkActiveOptions]="{exact:true}" [routerLink]="['/product']">
  17 + <a md-list-item md-ripple class="block relative" (click)="!media.query('gt-sm') && manageList.close()" [routerLinkActive]="['active']" [routerLinkActiveOptions]="{exact:true}" [routerLink]="['road']">
18 18 <md-icon md-list-icon>dashboard</md-icon>
19 19 ะะฒั‚ะพะผะพะฑั–ะปัŒะฝั– ะดะพั€ะพะณะธ
20 20 </a>
... ...
src/app/data/flow-intensity/flow-intensity.component.html 0 โ†’ 100644
  1 +<div class="grid_containert" *ngIf="showGrid">
  2 + <ag-grid-ng2 #agGrid style="width: 100%; height: 100%;" class="ag-blue" [gridOptions]="gridOptions" [columnDefs]="columnDefs" [rowData]="rowData" enableColResize enableSorting enableFilter groupHeaders suppressRowClickSelection toolPanelSuppressGroups
  3 + toolPanelSuppressValues debug rowHeight="22" rowSelection="multiple" (cellClicked)="onCellClicked($event)" (cellDoubleClicked)="onCellDoubleClicked($event)" (cellContextMenu)="onCellContextMenu($event)" (cellValueChanged)="onCellValueChanged($event)"
  4 + (cellFocused)="onCellFocused($event)" (rowSelected)="onRowSelected($event)" (selectionChanged)="onSelectionChanged()" (beforeFilterChanged)="onBeforeFilterChanged()" (afterFilterChanged)="onAfterFilterChanged()" (filterModified)="onFilterModified()"
  5 + (beforeSortChanged)="onBeforeSortChanged()" (afterSortChanged)="onAfterSortChanged($event)" (virtualRowRemoved)="onVirtualRowRemoved($event)" (rowClicked)="onRowClicked($event)">
  6 + </ag-grid-ng2>
  7 + <div class="control_button">
  8 + <div *tdLoading="'loading'; mode:'indeterminate'; type:'circle'; strategy:'replace'; color:'accent'"></div>
  9 + <button md-fab color="accent" [disabled]="isNew || isSelected" (click)="addNewRow()" type="button"><md-icon>add</md-icon></button>
  10 + <button md-fab color="warn" [disabled]="!isSelected" (click)="deleteRows()" type="button"><md-icon>delete</md-icon></button>
  11 + </div>
  12 +</div>
0 13 \ No newline at end of file
... ...
src/app/data/flow-intensity/flow-intensity.component.ts 0 โ†’ 100644
  1 +import { Component, ViewEncapsulation, AfterViewInit } from '@angular/core';
  2 +import { TdLoadingService } from '@covalent/core';
  3 +import { GridOptions, IGetRowsParams, IRowModel } from 'ag-grid/main';
  4 +
  5 +import { StatementBase } from '../../../models/statement.base';
  6 +
  7 +import { FlowIntensityService } from '../../../services/flow-intensity.service';
  8 +import { FlowIntensity } from '../../../models/flow-intensity';
  9 +import { EditorComponent } from '../../../helpers/editor.component';
  10 +import { RendererComponent } from '../../../helpers/renderer.component';
  11 +import { FlowIntensityCreateService } from '../../../services/flow-intensity-create.service';
  12 +import { RegionSelectList } from '../../../models/region-select-list';
  13 +import { RoadDirectionSelectList } from '../../../models/road-direction-select-list';
  14 +import { RoadSelectList } from '../../../models/road-select-list';
  15 +import { SettlementSelectList } from '../../../models/settlement-select-list';
  16 +
  17 +import { routerTransition } from '../../../animations/router.animation';
  18 +
  19 +@Component({
  20 + // tslint:disable-next-line:component-selector
  21 + selector: 'flow-grid',
  22 + templateUrl: 'flow-intensity.component.html',
  23 + styleUrls: ['flow-intensity.scss'],
  24 + encapsulation: ViewEncapsulation.None,
  25 +})
  26 +export class FlowIntensityComponent extends StatementBase {
  27 +
  28 + public regions: RegionSelectList[];
  29 + public settlements: SettlementSelectList[];
  30 + public roads: RoadSelectList[];
  31 + public roadDirections: RoadDirectionSelectList[];
  32 +
  33 + constructor(
  34 + protected service: FlowIntensityService,
  35 + protected dataService: FlowIntensityCreateService,
  36 + protected loadingService: TdLoadingService,
  37 + ) {
  38 + super();
  39 + }
  40 +
  41 + protected createColumnDefs(): any[] {
  42 + return [
  43 + {
  44 + headerName: '#',
  45 + width: 30,
  46 + checkboxSelection: true,
  47 + suppressSorting: true,
  48 + suppressMenu: true,
  49 + pinned: true,
  50 + },
  51 + {
  52 + headerName: 'ID',
  53 + field: 'id',
  54 + },
  55 + {
  56 + headerName: 'ะะฐะทะฒะฐ ะดะพั€ะพะณะธ',
  57 + field: 'roadId',
  58 + editable: true,
  59 + cellEditorFramework: EditorComponent,
  60 + cellRendererFramework: RendererComponent,
  61 + cellEditorParams: {
  62 + data: this.roads,
  63 + valueCol: 'roadId',
  64 + labelCol: 'name',
  65 + },
  66 + },
  67 + {
  68 + headerName: 'ะžะฑะปะฐัั‚ัŒ',
  69 + field: 'regionId',
  70 + editable: true,
  71 + cellEditorFramework: EditorComponent,
  72 + cellRendererFramework: RendererComponent,
  73 + cellEditorParams: {
  74 + data: this.regions,
  75 + valueCol: 'regionId',
  76 + labelCol: 'name',
  77 + },
  78 + },
  79 + {
  80 + headerName: 'ะœั–ัั†ะตะทะฝะฐั…ะพะดะถะตะฝะฝั, ะบะผ+',
  81 + field: 'location',
  82 + editable: true,
  83 + },
  84 + {
  85 + headerName: 'ะœั–ัั†ะตะทะฝะฐั…ะพะดะถะตะฝะฝั ะดั–ะปัะฝะบะธ ะท ะพะดะฝะพั€ั–ะดะฝะพัŽ ั–ะฝั‚ะตะฝัะธะฒะฝั–ัั‚ัŽ ั€ัƒั…ัƒ, ะบะผ+, ะฟะพั‡ะฐั‚ะพะบ',
  86 + field: 'begin',
  87 + editable: true,
  88 + },
  89 + {
  90 + headerName: 'ะœั–ัั†ะตะทะฝะฐั…ะพะดะถะตะฝะฝั ะดั–ะปัะฝะบะธ ะท ะพะดะฝะพั€ั–ะดะฝะพัŽ ั–ะฝั‚ะตะฝัะธะฒะฝั–ัั‚ัŽ ั€ัƒั…ัƒ, ะบะผ+, ะบั–ะฝะตั†ัŒ',
  91 + field: 'end',
  92 + editable: true,
  93 + },
  94 + {
  95 + headerName: 'ะะฐะฟั€ัะผะพะบ ัะผัƒะณะธ ั€ัƒั…ัƒ',
  96 + field: 'roadDirectionId',
  97 + editable: true,
  98 + cellEditorFramework: EditorComponent,
  99 + cellRendererFramework: RendererComponent,
  100 + cellEditorParams: {
  101 + data: this.roadDirections,
  102 + valueCol: 'roadDirectionId',
  103 + labelCol: 'name',
  104 + },
  105 + },
  106 + {
  107 + headerName: 'ะะฐะนะฑะปะธะถั‡ะธะน ะฝะฐัะตะปะตะฝะธะน ะฟัƒะฝะบั‚',
  108 + field: 'settlementId',
  109 + editable: true,
  110 + cellEditorFramework: EditorComponent,
  111 + cellRendererFramework: RendererComponent,
  112 + cellEditorParams: {
  113 + data: this.settlements,
  114 + valueCol: 'settlementId',
  115 + labelCol: 'name',
  116 + },
  117 + },
  118 + {
  119 + headerName: 'ะ†ะฝั‚ะตะฝัะธะฒะฝั–ัั‚ัŒ ั€ัƒั…ัƒ, ะฐะฒั‚/ะดะพะฑัƒ, ะฒััŒะพะณะพ',
  120 + field: 'intensityTotal',
  121 + editable: true,
  122 + },
  123 + {
  124 + headerName: 'ะ†ะฝั‚ะตะฝัะธะฒะฝั–ัั‚ัŒ ั€ัƒั…ัƒ, ะฐะฒั‚/ะดะพะฑัƒ, ะฟั€ะธั€ั–ัั‚',
  125 + field: 'intensityIncrease',
  126 + editable: true,
  127 + },
  128 + {
  129 + headerName: 'ะ†ะฝั‚ะตะฝัะธะฒะฝั–ัั‚ัŒ ั€ัƒั…ัƒ, ะฐะฒั‚/ะดะพะฑัƒ, ะผะพั‚ะพั†ะธะบะป ะฑะตะท ะบะพะปััะบะธ ั‚ะฐ ะผะพะฟะตะด',
  130 + field: 'intensityMoto',
  131 + editable: true,
  132 + },
  133 + {
  134 + headerName: 'ะ†ะฝั‚ะตะฝัะธะฒะฝั–ัั‚ัŒ ั€ัƒั…ัƒ, ะฐะฒั‚/ะดะพะฑัƒ, ะผะพั‚ะพั†ะธะบะป ะท ะบะพะปััะบะพัŽ',
  135 + field: 'intensityMotoSidecar',
  136 + editable: true,
  137 + },
  138 + {
  139 + headerName: 'ะ†ะฝั‚ะตะฝัะธะฒะฝั–ัั‚ัŒ ั€ัƒั…ัƒ, ะฐะฒั‚/ะดะพะฑัƒ, ะปะตะณะบะพะฒะธะน ะฐะฒั‚ะพะผะพะฑั–ะปัŒ',
  140 + field: 'intensityCar',
  141 + editable: true,
  142 + },
  143 + {
  144 + headerName: 'ะ†ะฝั‚ะตะฝัะธะฒะฝั–ัั‚ัŒ ั€ัƒั…ัƒ, ะฐะฒั‚/ะดะพะฑัƒ, ะฒะฐะฝั‚ะฐะถะฝะธะน ะฐะฒั‚ะพะผะพะฑั–ะปัŒ ะฒะฐะฝั‚ะฐะถะพะฟั–ะดะนะพะผะฝั–ัั‚ัŽ: ะดะพ 2 ั‚.',
  145 + field: 'intensityTruckTwo',
  146 + editable: true,
  147 + },
  148 + {
  149 + headerName: 'ะ†ะฝั‚ะตะฝัะธะฒะฝั–ัั‚ัŒ ั€ัƒั…ัƒ, ะฐะฒั‚/ะดะพะฑัƒ, ะฒะฐะฝั‚ะฐะถะฝะธะน ะฐะฒั‚ะพะผะพะฑั–ะปัŒ ะฒะฐะฝั‚ะฐะถะพะฟั–ะดะนะพะผะฝั–ัั‚ัŽ: ะฒั–ะด 2 ั‚. ะดะพ 6 ั‚.',
  150 + field: 'intensityTruckTwoSix',
  151 + editable: true,
  152 + },
  153 + {
  154 + headerName: 'ะ†ะฝั‚ะตะฝัะธะฒะฝั–ัั‚ัŒ ั€ัƒั…ัƒ, ะฐะฒั‚/ะดะพะฑัƒ, ะฒะฐะฝั‚ะฐะถะฝะธะน ะฐะฒั‚ะพะผะพะฑั–ะปัŒ ะฒะฐะฝั‚ะฐะถะพะฟั–ะดะนะพะผะฝั–ัั‚ัŽ: ะฒั–ะด 6 ั‚. ะดะพ 8 ั‚.',
  155 + field: 'intensityTruckSixEight',
  156 + editable: true,
  157 + },
  158 + {
  159 + headerName: 'ะ†ะฝั‚ะตะฝัะธะฒะฝั–ัั‚ัŒ ั€ัƒั…ัƒ, ะฐะฒั‚/ะดะพะฑัƒ, ะฒะฐะฝั‚ะฐะถะฝะธะน ะฐะฒั‚ะพะผะพะฑั–ะปัŒ ะฒะฐะฝั‚ะฐะถะพะฟั–ะดะนะพะผะฝั–ัั‚ัŽ: ะฒั–ะด 8 ั‚. ะดะพ 14 ั‚.',
  160 + field: 'intensityTruckEightFourteen',
  161 + editable: true,
  162 + },
  163 + {
  164 + headerName: 'ะ†ะฝั‚ะตะฝัะธะฒะฝั–ัั‚ัŒ ั€ัƒั…ัƒ, ะฐะฒั‚/ะดะพะฑัƒ, ะฒะฐะฝั‚ะฐะถะฝะธะน ะฐะฒั‚ะพะผะพะฑั–ะปัŒ ะฒะฐะฝั‚ะฐะถะพะฟั–ะดะนะพะผะฝั–ัั‚ัŽ: ะฟะพะฝะฐะด 14 ั‚.',
  165 + field: 'intensityTruckFourteen',
  166 + editable: true,
  167 + },
  168 + {
  169 + headerName: 'ะ†ะฝั‚ะตะฝัะธะฒะฝั–ัั‚ัŒ ั€ัƒั…ัƒ, ะฐะฒั‚/ะดะพะฑัƒ, ะฐะฒั‚ะพะฟะพั—ะทะด ะฒะฐะฝั‚ะฐะถะพะฟั–ะดะนะพะผะฝั–ัั‚ัŽ: ะดะพ 12 ั‚.',
  170 + field: 'intensityLorryTwelve',
  171 + editable: true,
  172 + },
  173 + {
  174 + headerName: 'ะ†ะฝั‚ะตะฝัะธะฒะฝั–ัั‚ัŒ ั€ัƒั…ัƒ, ะฐะฒั‚/ะดะพะฑัƒ, ะฐะฒั‚ะพะฟะพั—ะทะด ะฒะฐะฝั‚ะฐะถะพะฟั–ะดะนะพะผะฝั–ัั‚ัŽ: ะฒั–ะด 12 ั‚. ะดะพ 20 ั‚.',
  175 + field: 'intensityLorryTwelveTwenty',
  176 + editable: true,
  177 + },
  178 + {
  179 + headerName: 'ะ†ะฝั‚ะตะฝัะธะฒะฝั–ัั‚ัŒ ั€ัƒั…ัƒ, ะฐะฒั‚/ะดะพะฑัƒ, ะฐะฒั‚ะพะฟะพั—ะทะด ะฒะฐะฝั‚ะฐะถะพะฟั–ะดะนะพะผะฝั–ัั‚ัŽ: ะฒั–ะด 20 ั‚. ะดะพ 30 ั‚.',
  180 + field: 'intensityLorryTwentyThirty',
  181 + editable: true,
  182 + },
  183 + {
  184 + headerName: 'ะ†ะฝั‚ะตะฝัะธะฒะฝั–ัั‚ัŒ ั€ัƒั…ัƒ, ะฐะฒั‚/ะดะพะฑัƒ, ะฐะฒั‚ะพะฟะพั—ะทะด ะฒะฐะฝั‚ะฐะถะพะฟั–ะดะนะพะผะฝั–ัั‚ัŽ: ะฟะพะฝะฐะด 30 ั‚.',
  185 + field: 'intensityLorryThirty',
  186 + editable: true,
  187 + },
  188 + {
  189 + headerName: 'ะ†ะฝั‚ะตะฝัะธะฒะฝั–ัั‚ัŒ ั€ัƒั…ัƒ, ะฐะฒั‚/ะดะพะฑัƒ, ะบะพะปั–ัะฝะธะน ั‚ั€ะฐะบั‚ะพั€ ะท ะฟั€ะธั‡ะตะฟะฐะผะธ ะดะพ 10 ั‚.',
  190 + field: 'intensityTractorUnderTen',
  191 + editable: true,
  192 + },
  193 + {
  194 + headerName: 'ะ†ะฝั‚ะตะฝัะธะฒะฝั–ัั‚ัŒ ั€ัƒั…ัƒ, ะฐะฒั‚/ะดะพะฑัƒ, ะบะพะปั–ัะฝะธะน ั‚ั€ะฐะบั‚ะพั€ ะท ะฟั€ะธั‡ะตะฟะฐะผะธ ะฟะพะฝะฐะด 10 ั‚.',
  195 + field: 'intensityTractorOverTen',
  196 + editable: true,
  197 + },
  198 + {
  199 + headerName: 'ะ†ะฝั‚ะตะฝัะธะฒะฝั–ัั‚ัŒ ั€ัƒั…ัƒ, ะฐะฒั‚/ะดะพะฑัƒ, ะฐะฒั‚ะพะฑัƒั, ั‚ั€ะพะปะตะนะฑัƒั',
  200 + field: 'intensityBus',
  201 + editable: true,
  202 + },
  203 + {
  204 + headerName: 'ะ†ะฝั‚ะตะฝัะธะฒะฝั–ัั‚ัŒ ั€ัƒั…ัƒ, ะฐะฒั‚/ะดะพะฑัƒ, ะฐะฒั‚ะพะฑัƒั ะทั‡ะตะฟะปะตะฝะธะน (ะทะดะฒะพั”ะฝะธะน)',
  205 + field: 'intensityBusCoupled',
  206 + editable: true,
  207 + },
  208 + ];
  209 + }
  210 +
  211 + protected initFunction(): void {
  212 + this.dataService.getModels().then((models: any) => {
  213 + this.regions = models.regionSelectListDsM as RegionSelectList[];
  214 + this.settlements = models.settlementSelectListDsM as SettlementSelectList[];
  215 + this.roads = models.roadSelectListDsM as RoadSelectList[];
  216 + this.roadDirections = models.roadDirectionSelectListDsM as RoadDirectionSelectList[];
  217 + }).then(() => {
  218 + this.bootstrapGrid();
  219 + });
  220 + }
  221 +}
... ...
src/app/data/flow-intensity/flow-intensity.scss 0 โ†’ 100644
  1 +.toolbar button {
  2 + margin: 2px;
  3 + padding: 0;
  4 +}
0 5 \ No newline at end of file
... ...
src/app/data/road-surface/road-surface.component.html
... ... @@ -2,11 +2,11 @@
2 2 <ag-grid-ng2 #agGrid style="width: 100%; height: 100%;" class="ag-blue" [gridOptions]="gridOptions" [columnDefs]="columnDefs" [rowData]="rowData" enableColResize enableSorting enableFilter groupHeaders suppressRowClickSelection toolPanelSuppressGroups
3 3 toolPanelSuppressValues debug rowHeight="22" rowSelection="multiple" (cellClicked)="onCellClicked($event)" (cellDoubleClicked)="onCellDoubleClicked($event)" (cellContextMenu)="onCellContextMenu($event)" (cellValueChanged)="onCellValueChanged($event)"
4 4 (cellFocused)="onCellFocused($event)" (rowSelected)="onRowSelected($event)" (selectionChanged)="onSelectionChanged()" (beforeFilterChanged)="onBeforeFilterChanged()" (afterFilterChanged)="onAfterFilterChanged()" (filterModified)="onFilterModified()"
5   - (beforeSortChanged)="onBeforeSortChanged()" (afterSortChanged)="onAfterSortChanged()" (virtualRowRemoved)="onVirtualRowRemoved($event)" (rowClicked)="onRowClicked($event)">
  5 + (beforeSortChanged)="onBeforeSortChanged()" (afterSortChanged)="onAfterSortChanged($event)" (virtualRowRemoved)="onVirtualRowRemoved($event)" (rowClicked)="onRowClicked($event)">
6 6 </ag-grid-ng2>
7 7 <div class="control_button">
8 8 <div *tdLoading="'loading'; mode:'indeterminate'; type:'circle'; strategy:'replace'; color:'accent'"></div>
9   - <button md-fab color="accent" (click)="addNewRow()" type="button"><md-icon>add</md-icon></button>
10   - <button md-fab color="warn" (click)="deleteRows()" type="button"><md-icon>delete</md-icon></button>
  9 + <button md-fab color="accent" [disabled]="isNew || isSelected" (click)="addNewRow()" type="button"><md-icon>add</md-icon></button>
  10 + <button md-fab color="warn" [disabled]="!isSelected" (click)="deleteRows()" type="button"><md-icon>delete</md-icon></button>
11 11 </div>
12 12 </div>
13 13 \ No newline at end of file
... ...
src/app/data/road-width/road-width.component.html
... ... @@ -2,11 +2,11 @@
2 2 <ag-grid-ng2 #agGrid style="width: 100%; height: 100%;" class="ag-blue" [gridOptions]="gridOptions" [columnDefs]="columnDefs" [rowData]="rowData" enableColResize enableSorting enableFilter groupHeaders suppressRowClickSelection toolPanelSuppressGroups
3 3 toolPanelSuppressValues debug rowHeight="22" rowSelection="multiple" (cellClicked)="onCellClicked($event)" (cellDoubleClicked)="onCellDoubleClicked($event)" (cellContextMenu)="onCellContextMenu($event)" (cellValueChanged)="onCellValueChanged($event)"
4 4 (cellFocused)="onCellFocused($event)" (rowSelected)="onRowSelected($event)" (selectionChanged)="onSelectionChanged()" (beforeFilterChanged)="onBeforeFilterChanged()" (afterFilterChanged)="onAfterFilterChanged()" (filterModified)="onFilterModified()"
5   - (beforeSortChanged)="onBeforeSortChanged()" (afterSortChanged)="onAfterSortChanged()" (virtualRowRemoved)="onVirtualRowRemoved($event)" (rowClicked)="onRowClicked($event)">
  5 + (beforeSortChanged)="onBeforeSortChanged()" (afterSortChanged)="onAfterSortChanged($event)" (virtualRowRemoved)="onVirtualRowRemoved($event)" (rowClicked)="onRowClicked($event)">
6 6 </ag-grid-ng2>
7 7 <div class="control_button">
8 8 <div *tdLoading="'loading'; mode:'indeterminate'; type:'circle'; strategy:'replace'; color:'accent'"></div>
9   - <button md-fab color="accent" (click)="addNewRow()" type="button"><md-icon>add</md-icon></button>
10   - <button md-fab color="warn" (click)="deleteRows()" type="button"><md-icon>delete</md-icon></button>
  9 + <button md-fab color="accent" [disabled]="isNew || isSelected" (click)="addNewRow()" type="button"><md-icon>add</md-icon></button>
  10 + <button md-fab color="warn" [disabled]="!isSelected" (click)="deleteRows()" type="button"><md-icon>delete</md-icon></button>
11 11 </div>
12 12 </div>
13 13 \ No newline at end of file
... ...
src/app/data/road/road.component.html 0 โ†’ 100644
  1 +<div class="grid_containert" *ngIf="showGrid">
  2 + <ag-grid-ng2 #agGrid style="width: 100%; height: 100%;" class="ag-blue" [gridOptions]="gridOptions" [columnDefs]="columnDefs" [rowData]="rowData" enableColResize enableSorting enableFilter groupHeaders suppressRowClickSelection toolPanelSuppressGroups
  3 + toolPanelSuppressValues debug rowHeight="22" rowSelection="multiple" (cellClicked)="onCellClicked($event)" (cellDoubleClicked)="onCellDoubleClicked($event)" (cellContextMenu)="onCellContextMenu($event)" (cellValueChanged)="onCellValueChanged($event)"
  4 + (cellFocused)="onCellFocused($event)" (rowSelected)="onRowSelected($event)" (selectionChanged)="onSelectionChanged()" (beforeFilterChanged)="onBeforeFilterChanged()" (afterFilterChanged)="onAfterFilterChanged()" (filterModified)="onFilterModified()"
  5 + (beforeSortChanged)="onBeforeSortChanged()" (afterSortChanged)="onAfterSortChanged($event)" (virtualRowRemoved)="onVirtualRowRemoved($event)" (rowClicked)="onRowClicked($event)">
  6 + </ag-grid-ng2>
  7 + <div class="control_button">
  8 + <div *tdLoading="'loading'; mode:'indeterminate'; type:'circle'; strategy:'replace'; color:'accent'"></div>
  9 + <button md-fab color="accent" [disabled]="isNew || isSelected" (click)="addNewRow()" type="button"><md-icon>add</md-icon></button>
  10 + <button md-fab color="warn" [disabled]="!isSelected" (click)="deleteRows()" type="button"><md-icon>delete</md-icon></button>
  11 + </div>
  12 +</div>
0 13 \ No newline at end of file
... ...
src/app/data/road/road.component.ts 0 โ†’ 100644
  1 +import { Component, ViewEncapsulation, AfterViewInit } from '@angular/core';
  2 +import { TdLoadingService } from '@covalent/core';
  3 +import { GridOptions, IGetRowsParams, IRowModel } from 'ag-grid/main';
  4 +
  5 +import { StatementBase } from '../../../models/statement.base';
  6 +
  7 +import { RoadService } from '../../../services/road.service';
  8 +import { RoadCreateService } from '../../../services/road-create.service';
  9 +import { Road } from '../../../models/road';
  10 +import { EditorComponent } from '../../../helpers/editor.component';
  11 +import { RendererComponent } from '../../../helpers/renderer.component';
  12 +import { RoadTypeSelectList } from '../../../models/road-type-select-list';
  13 +
  14 +import { routerTransition } from '../../../animations/router.animation';
  15 +
  16 +@Component({
  17 + // tslint:disable-next-line:component-selector
  18 + selector: 'road-grid',
  19 + templateUrl: 'road.component.html',
  20 + styleUrls: ['road.scss'],
  21 + encapsulation: ViewEncapsulation.None,
  22 +})
  23 +export class RoadComponent extends StatementBase {
  24 +
  25 + public roadTypes: RoadTypeSelectList[];
  26 +
  27 + constructor(
  28 + protected service: RoadService,
  29 + protected dataService: RoadCreateService,
  30 + protected loadingService: TdLoadingService,
  31 + ) {
  32 + super();
  33 + }
  34 +
  35 + protected createColumnDefs(): any[] {
  36 + return [
  37 + {
  38 + headerName: '#',
  39 + width: 30,
  40 + checkboxSelection: true,
  41 + suppressSorting: true,
  42 + suppressMenu: true,
  43 + pinned: true,
  44 + },
  45 + {
  46 + headerName: 'ID',
  47 + field: 'id',
  48 + },
  49 + {
  50 + headerName: 'ะะฐะทะฒะฐ ะดะพั€ะพะณะธ',
  51 + field: 'name',
  52 + editable: true,
  53 + },
  54 + {
  55 + headerName: 'ะ†ะฝะดะตะบั ะดะพั€ะพะณะธ',
  56 + field: 'index',
  57 + editable: true,
  58 + },
  59 + {
  60 + headerName: 'ะขะธะฟ ะดะพั€ะพะณะธ',
  61 + field: 'roadTypeId',
  62 + editable: true,
  63 + cellEditorFramework: EditorComponent,
  64 + cellRendererFramework: RendererComponent,
  65 + cellEditorParams: {
  66 + data: this.roadTypes,
  67 + valueCol: 'roadTypeId',
  68 + labelCol: 'name',
  69 + },
  70 + },
  71 + ];
  72 + }
  73 +
  74 + protected initFunction(): void {
  75 + this.dataService.getModels().then((models: any) => {
  76 + this.roadTypes = models.roadTypeSelectListDsM as RoadTypeSelectList[];
  77 + }).then(() => {
  78 + this.bootstrapGrid();
  79 + });
  80 + }
  81 +}
... ...
src/app/data/road/road.scss 0 โ†’ 100644
  1 +.toolbar button {
  2 + margin: 2px;
  3 + padding: 0;
  4 +}
0 5 \ No newline at end of file
... ...
src/app/data/service-object/service-object.component.html
... ... @@ -2,11 +2,11 @@
2 2 <ag-grid-ng2 #agGrid style="width: 100%; height: 100%;" class="ag-blue" [gridOptions]="gridOptions" [columnDefs]="columnDefs" [rowData]="rowData" enableColResize enableSorting enableFilter groupHeaders suppressRowClickSelection toolPanelSuppressGroups
3 3 toolPanelSuppressValues debug rowHeight="22" rowSelection="multiple" (cellClicked)="onCellClicked($event)" (cellDoubleClicked)="onCellDoubleClicked($event)" (cellContextMenu)="onCellContextMenu($event)" (cellValueChanged)="onCellValueChanged($event)"
4 4 (cellFocused)="onCellFocused($event)" (rowSelected)="onRowSelected($event)" (selectionChanged)="onSelectionChanged()" (beforeFilterChanged)="onBeforeFilterChanged()" (afterFilterChanged)="onAfterFilterChanged()" (filterModified)="onFilterModified()"
5   - (beforeSortChanged)="onBeforeSortChanged()" (afterSortChanged)="onAfterSortChanged()" (virtualRowRemoved)="onVirtualRowRemoved($event)" (rowClicked)="onRowClicked($event)">
  5 + (beforeSortChanged)="onBeforeSortChanged()" (afterSortChanged)="onAfterSortChanged($event)" (virtualRowRemoved)="onVirtualRowRemoved($event)" (rowClicked)="onRowClicked($event)">
6 6 </ag-grid-ng2>
7 7 <div class="control_button">
8 8 <div *tdLoading="'loading'; mode:'indeterminate'; type:'circle'; strategy:'replace'; color:'accent'"></div>
9   - <button md-fab color="accent" (click)="addNewRow()" type="button"><md-icon>add</md-icon></button>
10   - <button md-fab color="warn" (click)="deleteRows()" type="button"><md-icon>delete</md-icon></button>
  9 + <button md-fab color="accent" [disabled]="isNew || isSelected" (click)="addNewRow()" type="button"><md-icon>add</md-icon></button>
  10 + <button md-fab color="warn" [disabled]="!isSelected" (click)="deleteRows()" type="button"><md-icon>delete</md-icon></button>
11 11 </div>
12 12 </div>
13 13 \ No newline at end of file
... ...
src/models/flow-intensity.ts 0 โ†’ 100644
  1 +export class FlowIntensity {
  2 + id: number;
  3 + roadId: number;
  4 + regionId: number;
  5 + location: number;
  6 + begin: number;
  7 + end: number;
  8 + roadDirectionId: number;
  9 + settlementId: number;
  10 + intensityTotal: number;
  11 + intensityIncrease: number;
  12 + intensityMoto: number;
  13 + intensityMotoSidecar: number;
  14 + intensityCar: number;
  15 + intensityTruckTwo: number;
  16 + intensityTruckTwoSix: number;
  17 + intensityTruckSixEight: number;
  18 + intensityTruckEightFourteen: number;
  19 + intensityTruckFourteen: number;
  20 + intensityLorryTwelve: number;
  21 + intensityLorryTwelveTwenty: number;
  22 + intensityLorryTwentyThirty: number;
  23 + intensityLorryThirty: number;
  24 + intensityTractorUnderTen: number;
  25 + intensityTractorOverTen: number;
  26 + intensityBus: number;
  27 + intensityBusCoupled: number;
  28 + dateAdd: number;
  29 +}
... ...
src/models/road-type-select-list.ts 0 โ†’ 100644
  1 +export class RoadTypeSelectList {
  2 + roadTypeId: number;
  3 + name: string;
  4 + }
... ...
src/models/road.ts 0 โ†’ 100644
  1 +export class Road {
  2 + id: number;
  3 + name: string;
  4 + value: string;
  5 + length: number;
  6 + historicalBackground: string;
  7 + economicValue: string;
  8 + lawDoc: string;
  9 + acceptTransferDoc: string;
  10 + acceptanceDoc: string;
  11 + authorityAct: string;
  12 + roadTypeId: number;
  13 + index: number;
  14 +}
... ...
src/models/statement.base.ts
... ... @@ -28,7 +28,6 @@ export abstract class StatementBase implements AfterViewInit, OnInit {
28 28 ngAfterViewInit(): void {
29 29 this.gridOptions.api.setDatasource(this.setRowData());
30 30 this.data = this.paramsSubject
31   - .distinctUntilChanged()
32 31 .switchMap((params: IGetRowsParams) => {
33 32 return this.service.getData(params);
34 33 }).catch((error: any) => {
... ... @@ -40,7 +39,7 @@ export abstract class StatementBase implements AfterViewInit, OnInit {
40 39 data = [this.createModel()];
41 40 }
42 41 let lastRow: number = -1;
43   - if (data.length <= this.params.endRow) {
  42 + if (data.length <= this.params.endRow && !this.isNew) {
44 43 lastRow = data.length;
45 44 }
46 45 this.params.successCallback(data, lastRow);
... ...
src/services/flow-intensity-create.service.ts 0 โ†’ 100644
  1 +import { Injectable } from '@angular/core';
  2 +import { Http } from '@angular/http';
  3 +
  4 +import { CreateBaseService } from './create.base.service';
  5 +
  6 +@Injectable()
  7 +export class FlowIntensityCreateService extends CreateBaseService {
  8 + protected apiUrl: string = 'http://localhost:5000/flowintensity/directory';
  9 + constructor(protected http: Http) {
  10 + super(http);
  11 + }
  12 +}
... ...
src/services/flow-intensity.service.ts 0 โ†’ 100644
  1 +import { Injectable } from '@angular/core';
  2 +import { Http } from '@angular/http';
  3 +
  4 +import { StatementBaseService } from './statement.base.service';
  5 +
  6 +import { FlowIntensity } from '../models/flow-intensity';
  7 +
  8 +@Injectable()
  9 +export class FlowIntensityService extends StatementBaseService {
  10 + protected url: string = 'http://localhost:5000/flowintensity';
  11 + constructor(protected http: Http) {
  12 + super(http);
  13 + }
  14 + public createModel(): Object {
  15 + return new FlowIntensity();
  16 + }
  17 + protected parseModels(json: any): any[] {
  18 + return json.flowIntensityEditDsM as FlowIntensity[];
  19 + };
  20 + protected parseModel(json: any): any {
  21 + return json as FlowIntensity;
  22 + };
  23 +}
... ...
src/services/road-create.service.ts 0 โ†’ 100644
  1 +import { Injectable } from '@angular/core';
  2 +import { Http } from '@angular/http';
  3 +
  4 +import { CreateBaseService } from './create.base.service';
  5 +
  6 +@Injectable()
  7 +export class RoadCreateService extends CreateBaseService {
  8 + protected apiUrl: string = 'http://localhost:5000/road/directory';
  9 + constructor(protected http: Http) {
  10 + super(http);
  11 + }
  12 +}
... ...
src/services/road.service.ts 0 โ†’ 100644
  1 +import { Injectable } from '@angular/core';
  2 +import { Http } from '@angular/http';
  3 +
  4 +import { StatementBaseService } from './statement.base.service';
  5 +
  6 +import { Road } from '../models/road';
  7 +
  8 +@Injectable()
  9 +export class RoadService extends StatementBaseService {
  10 + protected url: string = 'http://localhost:5000/road';
  11 + constructor(protected http: Http) {
  12 + super(http);
  13 + }
  14 + public createModel(): Object {
  15 + return new Road();
  16 + }
  17 + protected parseModels(json: any): any[] {
  18 + return json.busStopEditDsM as Road[];
  19 + };
  20 + protected parseModel(json: any): any {
  21 + return json as Road;
  22 + };
  23 +}
... ...