From cd13ee9105b3de3762999397ebb4bc987085fdb1 Mon Sep 17 00:00:00 2001
From: nixa <4dmitr@gmail.com>
Date: Wed, 4 May 2016 19:08:05 +0300
Subject: [PATCH] users map component
---
.../pages/dashboard/dashboard.component.ts | 3 +-
src/app/pages/dashboard/dashboard.html | 9 +-
src/app/pages/dashboard/usersMap/index.ts | 1 +
.../dashboard/usersMap/usersMap.component.ts | 26 +++++
.../pages/dashboard/usersMap/usersMap.html | 1 +
.../dashboard/usersMap/usersMap.loader.ts | 2 +
.../pages/dashboard/usersMap/usersMap.scss | 4 +
.../dashboard/usersMap/usersMap.service.ts | 98 +++++++++++++++++++
8 files changed, 141 insertions(+), 3 deletions(-)
create mode 100644 src/app/pages/dashboard/usersMap/index.ts
create mode 100644 src/app/pages/dashboard/usersMap/usersMap.component.ts
create mode 100644 src/app/pages/dashboard/usersMap/usersMap.html
create mode 100644 src/app/pages/dashboard/usersMap/usersMap.loader.ts
create mode 100644 src/app/pages/dashboard/usersMap/usersMap.scss
create mode 100644 src/app/pages/dashboard/usersMap/usersMap.service.ts
diff --git a/src/app/pages/dashboard/dashboard.component.ts b/src/app/pages/dashboard/dashboard.component.ts
index e4a29877..eba077b7 100644
--- a/src/app/pages/dashboard/dashboard.component.ts
+++ b/src/app/pages/dashboard/dashboard.component.ts
@@ -3,12 +3,13 @@ import {Component, ViewEncapsulation} from 'angular2/core';
import {PopularApp} from './popularApp';
import {PieChart} from './pieChart';
import {TrafficChart} from './trafficChart';
+import {UsersMap} from './usersMap';
import {BaCard} from '../../theme/components';
@Component({
selector: 'dashboard',
pipes: [],
- directives: [PopularApp, PieChart, TrafficChart, BaCard],
+ directives: [PopularApp, PieChart, TrafficChart, UsersMap, BaCard],
encapsulation: ViewEncapsulation.None,
styles: [require('./dashboard.scss')],
template: require('./dashboard.html')
diff --git a/src/app/pages/dashboard/dashboard.html b/src/app/pages/dashboard/dashboard.html
index 448cff93..18f177e6 100644
--- a/src/app/pages/dashboard/dashboard.html
+++ b/src/app/pages/dashboard/dashboard.html
@@ -7,8 +7,13 @@
diff --git a/src/app/pages/dashboard/usersMap/index.ts b/src/app/pages/dashboard/usersMap/index.ts
new file mode 100644
index 00000000..78ebc66f
--- /dev/null
+++ b/src/app/pages/dashboard/usersMap/index.ts
@@ -0,0 +1 @@
+export * from './usersMap.component';
diff --git a/src/app/pages/dashboard/usersMap/usersMap.component.ts b/src/app/pages/dashboard/usersMap/usersMap.component.ts
new file mode 100644
index 00000000..45e83390
--- /dev/null
+++ b/src/app/pages/dashboard/usersMap/usersMap.component.ts
@@ -0,0 +1,26 @@
+import {Component, ViewEncapsulation} from 'angular2/core';
+
+import './usersMap.loader.ts';
+import {UsersMapService} from './usersMap.service';
+
+@Component({
+ selector: 'users-map',
+ encapsulation: ViewEncapsulation.None,
+ providers: [UsersMapService],
+ styles: [require('./usersMap.scss')],
+ template: require('./usersMap.html')
+})
+export class UsersMap {
+
+ constructor(private _usersMapService:UsersMapService) {
+ }
+
+ ngAfterViewInit() {
+ this._loadUsersMap();
+ }
+
+ // TODO: load proper AmCharts theme
+ private _loadUsersMap() {
+ AmCharts.makeChart('amChartMap', this._usersMapService.getData());
+ }
+}
diff --git a/src/app/pages/dashboard/usersMap/usersMap.html b/src/app/pages/dashboard/usersMap/usersMap.html
new file mode 100644
index 00000000..da7ed640
--- /dev/null
+++ b/src/app/pages/dashboard/usersMap/usersMap.html
@@ -0,0 +1 @@
+
diff --git a/src/app/pages/dashboard/usersMap/usersMap.loader.ts b/src/app/pages/dashboard/usersMap/usersMap.loader.ts
new file mode 100644
index 00000000..543f9562
--- /dev/null
+++ b/src/app/pages/dashboard/usersMap/usersMap.loader.ts
@@ -0,0 +1,2 @@
+require('ammap3');
+require('ammap3/ammap/maps/js/worldLow');
diff --git a/src/app/pages/dashboard/usersMap/usersMap.scss b/src/app/pages/dashboard/usersMap/usersMap.scss
new file mode 100644
index 00000000..a8011fe1
--- /dev/null
+++ b/src/app/pages/dashboard/usersMap/usersMap.scss
@@ -0,0 +1,4 @@
+#amChartMap {
+ width: 100%;
+ height: 315px;
+}
diff --git a/src/app/pages/dashboard/usersMap/usersMap.service.ts b/src/app/pages/dashboard/usersMap/usersMap.service.ts
new file mode 100644
index 00000000..7db45627
--- /dev/null
+++ b/src/app/pages/dashboard/usersMap/usersMap.service.ts
@@ -0,0 +1,98 @@
+import {Injectable} from 'angular2/core';
+import {layoutColors, layoutPaths} from '../../../theme';
+
+@Injectable()
+export class UsersMapService {
+
+ private _data = {
+ type: 'map',
+ theme: 'blur',
+ zoomControl: { zoomControlEnabled: false, panControlEnabled: false },
+
+ dataProvider: {
+ map: 'worldLow',
+ zoomLevel: 3.5,
+ zoomLongitude: 10,
+ zoomLatitude: 52,
+ areas: [
+ { title: 'Austria', id: 'AT', color: layoutColors.primary, customData: '1 244', groupId: '1'},
+ { title: 'Ireland', id: 'IE', color: layoutColors.primary, customData: '1 342', groupId: '1'},
+ { title: 'Denmark', id: 'DK', color: layoutColors.primary, customData: '1 973', groupId: '1'},
+ { title: 'Finland', id: 'FI', color: layoutColors.primary, customData: '1 573', groupId: '1'},
+ { title: 'Sweden', id: 'SE', color: layoutColors.primary, customData: '1 084', groupId: '1'},
+ { title: 'Great Britain', id: 'GB', color: layoutColors.primary, customData: '1 452', groupId: '1'},
+ { title: 'Italy', id: 'IT', color: layoutColors.primary, customData: '1 321', groupId: '1'},
+ { title: 'France', id: 'FR', color: layoutColors.primary, customData: '1 112', groupId: '1'},
+ { title: 'Spain', id: 'ES', color: layoutColors.primary, customData: '1 865', groupId: '1'},
+ { title: 'Greece', id: 'GR', color: layoutColors.primary, customData: '1 453', groupId: '1'},
+ { title: 'Germany', id: 'DE', color: layoutColors.primary, customData: '1 957', groupId: '1'},
+ { title: 'Belgium', id: 'BE', color: layoutColors.primary, customData: '1 011', groupId: '1'},
+ { title: 'Luxembourg', id: 'LU', color: layoutColors.primary, customData: '1 011', groupId: '1'},
+ { title: 'Netherlands', id: 'NL', color: layoutColors.primary, customData: '1 213', groupId: '1'},
+ { title: 'Portugal', id: 'PT', color: layoutColors.primary, customData: '1 291', groupId: '1'},
+ { title: 'Lithuania', id: 'LT', color: layoutColors.successLight, customData: '567', groupId: '2'},
+ { title: 'Latvia', id: 'LV', color: layoutColors.successLight, customData: '589', groupId: '2'},
+ { title: 'Czech Republic ', id: 'CZ', color: layoutColors.successLight, customData: '785', groupId: '2'},
+ { title: 'Slovakia', id: 'SK', color: layoutColors.successLight, customData: '965', groupId: '2'},
+ { title: 'Estonia', id: 'EE', color: layoutColors.successLight, customData: '685', groupId: '2'},
+ { title: 'Hungary', id: 'HU', color: layoutColors.successLight, customData: '854', groupId: '2'},
+ { title: 'Cyprus', id: 'CY', color: layoutColors.successLight, customData: '754', groupId: '2'},
+ { title: 'Malta', id: 'MT', color: layoutColors.successLight, customData: '867', groupId: '2'},
+ { title: 'Poland', id: 'PL', color: layoutColors.successLight, customData: '759', groupId: '2'},
+ { title: 'Romania', id: 'RO', color: layoutColors.success, customData: '302', groupId: '3'},
+ { title: 'Bulgaria', id: 'BG', color: layoutColors.success, customData: '102', groupId: '3'},
+ { title: 'Slovenia', id: 'SI', color: layoutColors.danger, customData: '23', groupId: '4'},
+ { title: 'Croatia', id: 'HR', color: layoutColors.danger, customData: '96', groupId: '4'}
+ ]
+ },
+
+ areasSettings: {
+ rollOverOutlineColor: '#FFFFFF',
+ rollOverColor: layoutColors.primaryDark,
+ alpha: 0.8,
+ unlistedAreasAlpha: 0.1,
+ balloonText: '[[title]]: [[customData]] users'
+ },
+
+ legend: {
+ width: '100%',
+ marginRight: 27,
+ marginLeft: 27,
+ equalWidths: false,
+ backgroundAlpha: 0.5,
+ backgroundColor: '#FFFFFF',
+ borderColor: '#ffffff',
+ borderAlpha: 1,
+ top: 362,
+ left: 0,
+ horizontalGap: 10,
+ data: [
+ {
+ title: 'over 1 000 users',
+ color: layoutColors.primary
+ },
+ {
+ title: '500 - 1 000 users',
+ color: layoutColors.successLight
+ },
+ {
+ title: '100 - 500 users',
+ color: layoutColors.success
+ },
+ {
+ title: '0 - 100 users',
+ color: layoutColors.danger
+ }
+ ]
+ },
+ export: {
+ enabled: true
+ },
+ creditsPosition: 'bottom-right',
+ pathToImages: layoutPaths.images.amChart
+ };
+
+ getData() {
+ return this._data;
+ }
+}