Skip to content

Commit 1dfb7f3

Browse files
authored
Merge pull request #205 from TGFTech/feature/version-0.0.43
Feature/version 0.0.43
2 parents 482be1c + cae754b commit 1dfb7f3

File tree

27 files changed

+111
-95
lines changed

27 files changed

+111
-95
lines changed

CHANGELOG.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,14 @@
1+
## 0.0.43
2+
### Fixes
3+
* Improved shape editors performance
4+
* Fixed undragable editable hippodrome
5+
* Fixed editable hippodrome updating
6+
* Fixed editing multiple shapes of the same type simultaneously
7+
8+
### Features
9+
* Labels of editable shapes now update on mouse move
10+
* Update Cesium version to 1.41.0
11+
112
## 0.0.42
213
### Fixes
314
* Fixed `PolygonsEditorService` shape drag

demo/app/components/editor-layer/circles-editor-layer/circles-editor-layer.component.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Component, OnInit } from '@angular/core';
1+
import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';
22
import { CircleEditorObservable } from '../../../../../src/angular-cesium-widgets/models/circle-editor-observable';
33
import { CircleEditUpdate } from '../../../../../src/angular-cesium-widgets/models/circle-edit-update';
44
import { CirclesEditorService } from '../../../../../src/angular-cesium-widgets/services/entity-editors/circles-editor/circles-editor.service';
@@ -9,6 +9,7 @@ import { LabelProps } from '../../../../../src/angular-cesium-widgets/models/lab
99
templateUrl: 'circles-editor-layer.component.html',
1010
styleUrls: ['./circles-editor-layer.component.css'],
1111
providers: [CirclesEditorService],
12+
changeDetection: ChangeDetectionStrategy.OnPush,
1213
})
1314
export class CirclesEditorLayerComponent implements OnInit {
1415

@@ -25,7 +26,7 @@ export class CirclesEditorLayerComponent implements OnInit {
2526
if (this.editing$) {
2627
this.stopEdit();
2728
}
28-
this.editing$ = this.circlesEditor.create({ allowDrag: false });
29+
this.editing$ = this.circlesEditor.create();
2930
this.editing$.subscribe((editUpdate: CircleEditUpdate) => {
3031
// current edit value
3132
console.log(editUpdate);
@@ -47,6 +48,11 @@ export class CirclesEditorLayerComponent implements OnInit {
4748
this.stopEdit();
4849
}
4950
this.editing$ = this.circlesEditor.edit(Cesium.Cartesian3.fromDegrees(-70, 0), 800000);
51+
this.editing$.subscribe((editUpdate: CircleEditUpdate) => {
52+
console.log(editUpdate);
53+
console.log('center', this.editing$.getCenter());
54+
console.log('radius', this.editing$.getRadius());
55+
});
5056
this.editing$.setLabelsRenderFn((update: CircleEditUpdate) => {
5157
const newLabels: LabelProps[] = [];
5258
newLabels.push(

demo/app/components/editor-layer/hippodrome-example/hippodrome-editor-layer.component.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,16 @@
1-
import { Component, OnInit } from '@angular/core';
1+
import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';
22
import { EditActions } from '../../../../../src/angular-cesium-widgets/models/edit-actions.enum';
33
import { HippodromeEditorService } from '../../../../../src/angular-cesium-widgets/services/entity-editors/hippodrome-editor/hippodrome-editor.service';
44
import { HippodromeEditorObservable } from '../../../../../src/angular-cesium-widgets/models/hippodrome-editor-oboservable';
55
import { LabelProps } from '../../../../../src/angular-cesium-widgets/models/label-props';
6-
import {HippodromeEditUpdate} from '../../../../../src/angular-cesium-widgets/models/hippodrome-edit-update';
6+
import { HippodromeEditUpdate } from '../../../../../src/angular-cesium-widgets/models/hippodrome-edit-update';
77

88
@Component({
99
selector : 'hippodrome-editor-layer',
1010
templateUrl : 'hippodrome-editor-layer.component.html',
1111
styleUrls : ['./hippodrome-editor-layer.component.css'],
1212
providers: [HippodromeEditorService],
13+
changeDetection: ChangeDetectionStrategy.OnPush,
1314
})
1415
export class HippodromeEditorLayerComponent implements OnInit {
1516
editing$: HippodromeEditorObservable;
@@ -31,7 +32,6 @@ export class HippodromeEditorLayerComponent implements OnInit {
3132
outline : true,
3233
outlineWidth : 2,
3334
},
34-
allowDrag : false
3535
});
3636
this.editing$.subscribe((editUpdate: HippodromeEditUpdate) => {
3737

demo/app/components/editor-layer/polygons-editor-layer/polygons-editor-layer.component.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Component, OnInit } from '@angular/core';
1+
import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';
22
import { PolygonEditUpdate } from '../../../../../src/angular-cesium-widgets/models/polygon-edit-update';
33
import { EditActions } from '../../../../../src/angular-cesium-widgets/models/edit-actions.enum';
44
import { PolygonEditorObservable } from '../../../../../src/angular-cesium-widgets/models/polygon-editor-observable';
@@ -10,6 +10,7 @@ import { LabelProps } from '../../../../../src/angular-cesium-widgets/models/lab
1010
templateUrl: 'polygons-editor-layer.component.html',
1111
styleUrls: ['./polygons-editor-layer.component.css'],
1212
providers: [PolygonsEditorService],
13+
changeDetection: ChangeDetectionStrategy.OnPush,
1314
})
1415
export class PolygonsEditorLayerComponent implements OnInit {
1516
editing$: PolygonEditorObservable;
@@ -25,7 +26,7 @@ export class PolygonsEditorLayerComponent implements OnInit {
2526
if (this.editing$) {
2627
this.stopEdit();
2728
}
28-
this.editing$ = this.polygonsEditor.create({ allowDrag: true });
29+
this.editing$ = this.polygonsEditor.create();
2930
this.editing$.subscribe((editUpdate: PolygonEditUpdate) => {
3031
console.log(editUpdate.points); // point = position with id
3132
console.log(editUpdate.positions); // or just position

demo/app/components/editor-layer/polyline-example/polyline-editor-layer.component.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Component, OnInit } from '@angular/core';
1+
import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';
22
import { PolygonEditUpdate } from '../../../../../src/angular-cesium-widgets/models/polygon-edit-update';
33
import { EditActions } from '../../../../../src/angular-cesium-widgets/models/edit-actions.enum';
44
import { PolylinesEditorService } from '../../../../../src/angular-cesium-widgets/services/entity-editors/polyline-editor/polylines-editor.service';
@@ -10,6 +10,7 @@ import { LabelProps } from '../../../../../src/angular-cesium-widgets/models/lab
1010
templateUrl: 'polyline-editor-layer.component.html',
1111
styleUrls: ['./polyline-editor-layer.component.css'],
1212
providers: [PolylinesEditorService],
13+
changeDetection: ChangeDetectionStrategy.OnPush,
1314
})
1415
export class PolylineEditorLayerComponent implements OnInit {
1516

package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "angular-cesium",
3-
"version": "0.0.42",
3+
"version": "0.0.43",
44
"license": "MIT",
55
"description": "Angular library for working with Cesium.",
66
"repository": "https://github.com/TGFTech/angular-cesium",
@@ -36,8 +36,8 @@
3636
"postpublish": "npm run docs:push"
3737
},
3838
"peerDependencies": {
39-
"@angular/common": "^4.2.6",
40-
"@angular/core": "^4.2.6"
39+
"@angular/common": "^4.2.6 || ^5.0.0",
40+
"@angular/core": "^4.2.6 || ^5.0.0"
4141
},
4242
"devDependencies": {
4343
"@angular/animations": "5.1.0",
@@ -72,7 +72,7 @@
7272
"bower": "^1.7.9",
7373
"browserify": "^14.1.0",
7474
"casual": "^1.5.12",
75-
"cesium": "^1.38.0",
75+
"cesium": "^1.41.0",
7676
"codelyzer": "^4.0.1",
7777
"concurrently": "^3.1.0",
7878
"copy-webpack-plugin": "^4.0.1",

src/angular-cesium-widgets/components/circles-editor/circles-editor.component.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<ac-layer #editArcsLayer acFor="let arc of editArcs$" [context]="this" [zIndex]="1">
1+
<ac-layer #editArcsLayer acFor="let arc of editArcs$" [context]="this">
22
<ac-arc-desc props="{
33
angle: arc.angle,
44
delta: arc.delta,
@@ -10,7 +10,7 @@
1010
</ac-arc-desc>
1111
</ac-layer>
1212

13-
<ac-layer #editPointsLayer acFor="let point of editPoints$" [context]="this" [zIndex]="2">
13+
<ac-layer #editPointsLayer acFor="let point of editPoints$" [context]="this">
1414
<ac-point-desc props="{
1515
position: point.getPosition(),
1616
pixelSize: getPointSize(point),

src/angular-cesium-widgets/components/circles-editor/circles-editor.component.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Component, OnDestroy, ViewChild } from '@angular/core';
1+
import { ChangeDetectionStrategy, Component, OnDestroy, ViewChild } from '@angular/core';
22
import { EditModes } from '../../models/edit-mode.enum';
33
import { AcNotification } from '../../../angular-cesium/models/ac-notification';
44
import { EditActions } from '../../models/edit-actions.enum';
@@ -17,7 +17,8 @@ import { EditableCircle } from '../../models/editable-circle';
1717
@Component({
1818
selector: 'circles-editor',
1919
templateUrl: './circles-editor.component.html',
20-
providers: [CoordinateConverter, CirclesManagerService]
20+
providers: [CoordinateConverter, CirclesManagerService],
21+
changeDetection: ChangeDetectionStrategy.OnPush,
2122
})
2223
export class CirclesEditorComponent implements OnDestroy {
2324

@@ -170,6 +171,7 @@ export class CirclesEditorComponent implements OnDestroy {
170171
const circle = this.circlesManager.get(update.id);
171172
if (circle && circle.enableEdit) {
172173
circle.moveCircle(update.startDragPosition, update.endDragPosition);
174+
this.renderEditLabels(circle, update);
173175
}
174176
break;
175177
}

src/angular-cesium-widgets/components/hippodrome-editor/hippodrome-editor.component.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<ac-layer #editHippodromesLayer acFor="let hippodrome of editHippodromes$" [context]="this" [zIndex]="2">
1+
<ac-layer #editHippodromesLayer acFor="let hippodrome of editHippodromes$" [context]="this">
22
<ac-corridor-desc props="{
33
positions: hippodrome.getRealPositions(),
44
cornerType: Cesium.CornerType.ROUNDED,
@@ -39,7 +39,7 @@
3939
</ac-array-desc>
4040
</ac-layer>
4141

42-
<ac-layer #editPointsLayer acFor="let point of editPoints$" [context]="this" [zIndex]="2">
42+
<ac-layer #editPointsLayer acFor="let point of editPoints$" [context]="this">
4343
<ac-point-desc props="{
4444
position: point.getPosition(),
4545
pixelSize: getPointSize(point),

src/angular-cesium-widgets/components/hippodrome-editor/hippodrome-editor.component.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Component, OnDestroy, ViewChild } from '@angular/core';
1+
import { ChangeDetectionStrategy, Component, OnDestroy, ViewChild } from '@angular/core';
22
import { EditModes } from '../../models/edit-mode.enum';
33
import { AcNotification } from '../../../angular-cesium/models/ac-notification';
44
import { EditActions } from '../../models/edit-actions.enum';
@@ -17,7 +17,8 @@ import { EditableHippodrome } from '../../models/editable-hippodrome';
1717
@Component({
1818
selector: 'hippodrome-editor',
1919
templateUrl: './hippodrome-editor.component.html',
20-
providers: [CoordinateConverter, HippodromeManagerService]
20+
providers: [CoordinateConverter, HippodromeManagerService],
21+
changeDetection: ChangeDetectionStrategy.OnPush,
2122
})
2223
export class HippodromeEditorComponent implements OnDestroy {
2324

@@ -181,6 +182,7 @@ export class HippodromeEditorComponent implements OnDestroy {
181182
const hippodrome = this.hippodromesManager.get(update.id);
182183
if (hippodrome && hippodrome.enableEdit) {
183184
hippodrome.moveShape(update.draggedPosition, update.updatedPosition);
185+
this.renderEditLabels(hippodrome, update);
184186
}
185187
break;
186188
}

src/angular-cesium-widgets/components/polygons-editor/polygons-editor.component.html

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
1-
<ac-layer #editPolylinesLayer acFor="let polyline of editPolylines$" [context]="this" [zIndex]="1">
1+
<ac-layer #editPolylinesLayer acFor="let polyline of editPolylines$" [context]="this">
22
<ac-polyline-primitive-desc props="{
33
positions: polyline.getPositions(),
44
width: polyline.props.width,
5-
material: polyline.props.material(),
6-
followSurface: true
5+
material: polyline.props.material()
76
}">
87
</ac-polyline-primitive-desc>
98
</ac-layer>
109

11-
<ac-layer #editPointsLayer acFor="let point of editPoints$" [context]="this" [zIndex]="2">
10+
<ac-layer #editPointsLayer acFor="let point of editPoints$" [context]="this">
1211
<ac-point-desc props="{
1312
position: point.getPosition(),
1413
pixelSize: getPointSize(point),
@@ -21,7 +20,7 @@
2120
</ac-point-desc>
2221
</ac-layer>
2322

24-
<ac-layer #editPolygonsLayer acFor="let polygon of editPolygons$" [context]="this" [zIndex]="0">
23+
<ac-layer #editPolygonsLayer acFor="let polygon of editPolygons$" [context]="this">
2524
<ac-polygon-desc props="{
2625
hierarchy: polygon.getRealPositions(),
2726
material: polygon.polygonProps.material

src/angular-cesium-widgets/components/polygons-editor/polygons-editor.component.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Component, OnDestroy, ViewChild } from '@angular/core';
1+
import { ChangeDetectionStrategy, Component, OnDestroy, ViewChild } from '@angular/core';
22
import { EditModes } from '../../models/edit-mode.enum';
33
import { PolygonEditUpdate } from '../../models/polygon-edit-update';
44
import { AcNotification } from '../../../angular-cesium/models/ac-notification';
@@ -17,7 +17,8 @@ import { EditablePolygon } from '../../models/editable-polygon';
1717
@Component({
1818
selector: 'polygons-editor',
1919
templateUrl: './polygons-editor.component.html',
20-
providers: [CoordinateConverter, PolygonsManagerService]
20+
providers: [CoordinateConverter, PolygonsManagerService],
21+
changeDetection: ChangeDetectionStrategy.OnPush,
2122
})
2223
export class PolygonsEditorComponent implements OnDestroy {
2324

@@ -200,6 +201,7 @@ export class PolygonsEditorComponent implements OnDestroy {
200201
const polygon = this.polygonsManager.get(update.id);
201202
if (polygon && polygon.enableEdit) {
202203
polygon.movePolygon(update.draggedPosition, update.updatedPosition);
204+
this.renderEditLabels(polygon, update);
203205
}
204206
break;
205207
}

src/angular-cesium-widgets/components/polylines-editor/polylines-editor.component.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<ac-layer #editPolylinesLayer acFor="let polyline of editPolylines$" [context]="this" [zIndex]="1">
1+
<ac-layer #editPolylinesLayer acFor="let polyline of editPolylines$" [context]="this">
22
<ac-polyline-primitive-desc props="{
33
positions: polyline.getPositions(),
44
width: polyline.props.width,
@@ -7,7 +7,7 @@
77
</ac-polyline-primitive-desc>
88
</ac-layer>
99

10-
<ac-layer #editPointsLayer acFor="let point of editPoints$" [context]="this" [zIndex]="2">
10+
<ac-layer #editPointsLayer acFor="let point of editPoints$" [context]="this">
1111
<ac-point-desc props="{
1212
position: point.getPosition(),
1313
pixelSize: getPointSize(point),
@@ -19,7 +19,7 @@
1919
</ac-point-desc>
2020
</ac-layer>
2121

22-
<ac-layer #polylineLabelsLayer acFor="let polylineLabels of polylineLabels$" [context]="this" [zIndex]="3">
22+
<ac-layer #polylineLabelsLayer acFor="let polylineLabels of polylineLabels$" [context]="this">
2323
<ac-array-desc acFor="let label of polylineLabels.labels" [idGetter]="getLabelId">
2424
<ac-label-primitive-desc props="{
2525
position: label.position,

src/angular-cesium-widgets/components/polylines-editor/polylines-editor.component.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Component, OnDestroy, ViewChild } from '@angular/core';
1+
import { ChangeDetectionStrategy, Component, OnDestroy, ViewChild } from '@angular/core';
22
import { EditModes } from '../../models/edit-mode.enum';
33
import { AcNotification } from '../../../angular-cesium/models/ac-notification';
44
import { EditActions } from '../../models/edit-actions.enum';
@@ -17,7 +17,8 @@ import { LabelProps } from '../../models/label-props';
1717
@Component({
1818
selector: 'polylines-editor',
1919
templateUrl: './polylines-editor.component.html',
20-
providers: [CoordinateConverter, PolylinesManagerService]
20+
providers: [CoordinateConverter, PolylinesManagerService],
21+
changeDetection: ChangeDetectionStrategy.OnPush,
2122
})
2223
export class PolylinesEditorComponent implements OnDestroy {
2324

@@ -200,6 +201,7 @@ export class PolylinesEditorComponent implements OnDestroy {
200201
const polyline = this.polylinesManager.get(update.id);
201202
if (polyline && polyline.enableEdit) {
202203
polyline.moveShape(update.draggedPosition, update.updatedPosition)
204+
this.renderEditLabels(polyline, update);
203205
}
204206
break;
205207
}

src/angular-cesium-widgets/models/editable-hippodrome.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ export class EditableHippodrome extends AcEntity {
164164

165165
if (!editPoint.isVirtualEditPoint()) {
166166
editPoint.setPosition(toPosition);
167-
167+
this.createHeightEditPoints();
168168
this.updatePointsLayer(...this.positions);
169169
this.updateHippdromeLayer();
170170
} else {

src/angular-cesium-widgets/services.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,4 @@ export * from './services/entity-editors/circles-editor/circles-editor.service';
33
export * from './services/entity-editors/polyline-editor/polylines-editor.service';
44
export * from './services/entity-editors/hippodrome-editor/hippodrome-editor.service';
55
export * from './services/draggable-to-map.service';
6+
export * from './services/utils';

src/angular-cesium-widgets/services/entity-editors/circles-editor/circles-editor.service.ts

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import { EditableCircle } from '../../../models/editable-circle';
2121
import { PointProps } from '../../../models/polyline-edit-options';
2222
import { LabelProps } from '../../../models/label-props';
2323
import { BasicEditUpdate } from '../../../models/basic-edit-update';
24+
import { generateKey } from '../../utils';
2425

2526

2627
export const DEFAULT_CIRCLE_OPTIONS: CircleEditOptions = {
@@ -87,21 +88,21 @@ export class CirclesEditorService {
8788
private mapEventsManager: MapEventsManagerService;
8889
private updateSubject = new Subject<CircleEditUpdate>();
8990
private updatePublisher = this.updateSubject.publish(); // TODO maybe not needed
90-
private counter = 0;
9191
private coordinateConverter: CoordinateConverter;
9292
private cameraService: CameraService;
9393
private circlesManager: CirclesManagerService;
9494
private observablesMap = new Map<string, DisposableObservable<any>[]>();
95-
95+
9696
init(mapEventsManager: MapEventsManagerService,
9797
coordinateConverter: CoordinateConverter,
9898
cameraService: CameraService,
99-
circlesManager: CirclesManagerService) {
99+
circlesManager: CirclesManagerService,
100+
) {
100101
this.mapEventsManager = mapEventsManager;
101-
this.updatePublisher.connect();
102102
this.coordinateConverter = coordinateConverter;
103103
this.cameraService = cameraService;
104104
this.circlesManager = circlesManager;
105+
this.updatePublisher.connect();
105106
}
106107

107108
onUpdate(): Observable<CircleEditUpdate> {
@@ -110,7 +111,7 @@ export class CirclesEditorService {
110111

111112
create(options = DEFAULT_CIRCLE_OPTIONS, priority = 100): CircleEditorObservable {
112113
let center: any = undefined;
113-
const id = this.generteId();
114+
const id = generateKey();
114115
const circleOptions = this.setOptions(options);
115116
const clientEditSubject = new BehaviorSubject<CircleEditUpdate>({
116117
id,
@@ -226,7 +227,7 @@ export class CirclesEditorService {
226227
}
227228

228229
edit(center: Cartesian3, radius: number, options = DEFAULT_CIRCLE_OPTIONS, priority = 100): CircleEditorObservable {
229-
const id = this.generteId();
230+
const id = generateKey();
230231
const circleOptions = this.setOptions(options);
231232
const editSubject = new BehaviorSubject<CircleEditUpdate>({
232233
id,
@@ -468,8 +469,4 @@ export class CirclesEditorService {
468469
radius : circle.getRadius()
469470
}
470471
}
471-
472-
private generteId(): string {
473-
return 'edit-circle-' + this.counter++;
474-
}
475472
}

0 commit comments

Comments
 (0)