Przeglądaj źródła

✨ add meaningful legend for index layer

jmacura 4 lat temu
rodzic
commit
fe480e764b
2 zmienionych plików z 29 dodań i 2 usunięć
  1. 23 0
      src/adjuster/adjuster-legend.service.ts
  2. 6 2
      src/app.service.ts

+ 23 - 0
src/adjuster/adjuster-legend.service.ts

@@ -0,0 +1,23 @@
+import {Injectable} from '@angular/core';
+
+import {perc2color} from '../app.config';
+
+@Injectable({providedIn: 'root'})
+export class AdjusterLegendService {
+  constructor() {}
+
+  createIndexLegend(): FakeLegend {
+    return [
+      {color: perc2color(0), name: '0 %'},
+      {color: perc2color(0.25), name: '25 %'},
+      {color: perc2color(0.5), name: '50 %'},
+      {color: perc2color(0.75), name: '75 %'},
+      {color: perc2color(1), name: '100 %'},
+    ];
+  }
+}
+
+type FakeLegend = Array<{
+  color: string;
+  name: string;
+}>;

+ 6 - 2
src/app.service.ts

@@ -16,8 +16,9 @@ import {HsSidebarService} from 'hslayers-ng/components/sidebar/sidebar.service';
 
 import {AdjusterComponent} from './adjuster/adjuster.component';
 import {AdjusterEventService} from './adjuster/adjuster-event.service';
+import {AdjusterLegendService} from './adjuster/adjuster-legend.service';
 import {AdjusterService} from './adjuster/adjuster.service';
-import {krajeLayer, obce, obceIndexLayer, okresyLayer} from './app.config';
+import {krajeLayer, obceIndexLayer, okresyLayer} from './app.config';
 
 @Injectable({providedIn: 'root'})
 export class AppService {
@@ -40,6 +41,7 @@ export class AppService {
   constructor(
     public adjusterService: AdjusterService,
     public adjusterEventService: AdjusterEventService,
+    public adjusterLegendService: AdjusterLegendService,
     public hsConfig: HsConfig,
     public hsEventBus: HsEventBusService,
     public hsLanguageService: HsLanguageService,
@@ -106,9 +108,11 @@ export class AppService {
     // obceIndexLayer, okresyLayer and krajeLayer must be pushed in this order
     // so they will display in correct order
     this.hsConfig.default_layers.push(obceIndexLayer);
+    obceIndexLayer.on('featuresloadend', this.adjusterService.init());
+    const indexLegend = this.adjusterLegendService.createIndexLegend();
+    obceIndexLayer.getSource().legend_categories = indexLegend;
     this.hsConfig.default_layers.push(okresyLayer);
     this.hsConfig.default_layers.push(krajeLayer);
-    obceIndexLayer.on('featuresloadend', this.adjusterService.init());
   }
 
   /**