From 6252cc120b5f5d7a004c3f4cd9c65889e9ea0f91 Mon Sep 17 00:00:00 2001 From: Francisco Salas Date: Wed, 18 Nov 2020 15:07:39 +0100 Subject: [PATCH 01/11] aw-1686 expand user profile; added put operation --- projects/common/src/fm/models/user.ts | 12 +++++++++++- projects/common/src/fm/services/user.service.ts | 4 ++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/projects/common/src/fm/models/user.ts b/projects/common/src/fm/models/user.ts index fd41620..e7c8144 100644 --- a/projects/common/src/fm/models/user.ts +++ b/projects/common/src/fm/models/user.ts @@ -3,4 +3,14 @@ export interface IUser { name?: string; email?: string; claims: any; -} + firstName?: string; + lastName?: string; + address?: string; + postalCode?: string; + city?: string; + country?: string; + phone?: string; + mobile?: string; + organisation?: string; + cocNumber?: string; +} \ No newline at end of file diff --git a/projects/common/src/fm/services/user.service.ts b/projects/common/src/fm/services/user.service.ts index fd9e668..d6c7add 100644 --- a/projects/common/src/fm/services/user.service.ts +++ b/projects/common/src/fm/services/user.service.ts @@ -18,4 +18,8 @@ export class UserService { getCurrentUser(): Observable { return this.httpClient.get(`${this.ApiEndpoint()}/api/v1/currentuser`); } + + updateCurrentUser(user: IUser): Observable { + return this.httpClient.put(`${this.ApiEndpoint()}/api/v1/currentuser`, user); + } } From f2cb5d4d64f939f88bfda23659f0b6db6a8b1d6c Mon Sep 17 00:00:00 2001 From: Willem Dantuma Date: Mon, 7 Dec 2020 17:20:34 +0100 Subject: [PATCH 02/11] Update configuration --- src/configuration.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/configuration.json b/src/configuration.json index 2241895..f9a46d6 100644 --- a/src/configuration.json +++ b/src/configuration.json @@ -1,9 +1,9 @@ { - "issuer": "https://accounts.farmmaps.awtest.nl", + "issuer": "https://accounts.test.farmmaps.eu", "clientId": "farmmapsdev", - "audience": "https://farmmaps.awtest.nl/", + "audience": "https://test.farmmaps.eu/", "requireHttps": true, - "apiEndPoint": "https://farmmaps.awtest.nl", + "apiEndPoint": "https://test.farmmaps.eu", "grantType":"code" } \ No newline at end of file From 6dccaa8ce565f94e696ec9f8c0b10382f1206a2c Mon Sep 17 00:00:00 2001 From: Willem Dantuma Date: Tue, 8 Dec 2020 16:14:58 +0100 Subject: [PATCH 03/11] Wait for item types to be loaded --- projects/common/src/fm/components/app/app.component.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/projects/common/src/fm/components/app/app.component.ts b/projects/common/src/fm/components/app/app.component.ts index a8894c0..66cfa97 100644 --- a/projects/common/src/fm/components/app/app.component.ts +++ b/projects/common/src/fm/components/app/app.component.ts @@ -101,6 +101,10 @@ export class AppComponent implements OnInit, OnDestroy { return action; } + async loadItemTypes() { + await this.itemTypeService$.load(this.appConfig$) + } + ngOnInit() { this.InstallRouteEventHandler(); this.InstallEventServiceEventHandler(); @@ -108,7 +112,7 @@ export class AppComponent implements OnInit, OnDestroy { this.InstallHealthCheck(); //load item types - this.itemTypeService$.load(this.appConfig$) + this.loadItemTypes(); } @HostListener('document:keyup', ['$event']) From 1a8bc43c604179d554f1389046a4de3635f7b63e Mon Sep 17 00:00:00 2001 From: Willem Dantuma Date: Wed, 9 Dec 2020 15:23:50 +0100 Subject: [PATCH 04/11] Remove horizontal scrollbar --- projects/common/src/fm/components/app/app.component.scss | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/projects/common/src/fm/components/app/app.component.scss b/projects/common/src/fm/components/app/app.component.scss index 8a93d54..7c26e1b 100644 --- a/projects/common/src/fm/components/app/app.component.scss +++ b/projects/common/src/fm/components/app/app.component.scss @@ -34,8 +34,8 @@ body { background: #f1f1f1; line-height: 18px; user-select:none;font-family: Lat } .app { - width:100vw; - height:100vh; + width:100%; + height:100%; } .app > .navbar { From 200f3e95eb5a908cc2d971bf385f46faae3351dc Mon Sep 17 00:00:00 2001 From: Willem Dantuma Date: Wed, 9 Dec 2020 20:35:01 +0100 Subject: [PATCH 05/11] Dont's show blank screen --- .../src/fm/components/auth-callback/auth-callback.component.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/projects/common/src/fm/components/auth-callback/auth-callback.component.ts b/projects/common/src/fm/components/auth-callback/auth-callback.component.ts index 74ccef2..a51b5f0 100644 --- a/projects/common/src/fm/components/auth-callback/auth-callback.component.ts +++ b/projects/common/src/fm/components/auth-callback/auth-callback.component.ts @@ -13,6 +13,8 @@ export class AuthCallbackComponent { oauthService$.loadDiscoveryDocument().then(() => { oauthService$.tryLoginCodeFlow().then(() => { router$.navigateByUrl((oauthService$.state && oauthService$.state!="")?decodeURIComponent(oauthService$.state):""); + }).catch(() => { + router$.navigateByUrl("/"); }); }) } From 44f476d5fdbdb8d5623f289a82a152fe6c013203 Mon Sep 17 00:00:00 2001 From: Willem Dantuma Date: Wed, 9 Dec 2020 21:45:38 +0100 Subject: [PATCH 06/11] Add app-menu --- .../src/fm/actions/app-common.actions.ts | 11 ++++- projects/common/src/fm/common.module.ts | 4 +- .../app-menu/app-menu.component.html | 9 ++++ .../app-menu/app-menu.component.scss | 48 +++++++++++++++++++ .../app-menu/app-menu.component.spec.ts | 25 ++++++++++ .../components/app-menu/app-menu.component.ts | 29 +++++++++++ .../src/fm/components/app/app.component.html | 3 +- .../src/fm/components/app/app.component.scss | 5 ++ .../src/fm/components/app/app.component.ts | 1 + .../user-menu/user-menu.component.scss | 1 - .../src/fm/reducers/app-common.reducer.ts | 17 +++++-- 11 files changed, 144 insertions(+), 9 deletions(-) create mode 100644 projects/common/src/fm/components/app-menu/app-menu.component.html create mode 100644 projects/common/src/fm/components/app-menu/app-menu.component.scss create mode 100644 projects/common/src/fm/components/app-menu/app-menu.component.spec.ts create mode 100644 projects/common/src/fm/components/app-menu/app-menu.component.ts diff --git a/projects/common/src/fm/actions/app-common.actions.ts b/projects/common/src/fm/actions/app-common.actions.ts index 7e1ebc5..2407bd0 100644 --- a/projects/common/src/fm/actions/app-common.actions.ts +++ b/projects/common/src/fm/actions/app-common.actions.ts @@ -60,6 +60,8 @@ export const TOGGLEMENU = '[AppCommon] ToggleMenu'; export const TOGGLEACCOUNTMENU = '[AppCommon] ToggleAccountMenu'; +export const TOGGLEAPPMENU = '[AppCommon] ToggleAppMenu'; + export const SETMENUVISIBLE = '[AppCommon] SetMenuVisible'; export const ONLINE = '[AppCommon] Online'; @@ -283,6 +285,12 @@ export class ToggleAccountMenu implements Action { constructor() { } } +export class ToggleAppMenu implements Action { + readonly type = TOGGLEAPPMENU; + + constructor() { } +} + export class SetMenuVisible implements Action { readonly type = SETMENUVISIBLE; @@ -346,6 +354,7 @@ export type Actions = OpenModal | CloseAll | Online | Offline - | SetPageMode; + | SetPageMode + | ToggleAppMenu; diff --git a/projects/common/src/fm/common.module.ts b/projects/common/src/fm/common.module.ts index 2bbebee..bd08884 100644 --- a/projects/common/src/fm/common.module.ts +++ b/projects/common/src/fm/common.module.ts @@ -55,6 +55,7 @@ import * as commonEffects from './effects/app-common.effects'; import { SecureOAuthStorage} from './shared/secureOAuthStorage'; import { GradientComponent } from './components/gradient/gradient.component'; import { GradientSelectComponent } from './components/gradient-select/gradient-select.component'; +import { AppMenuComponent } from './components/app-menu/app-menu.component'; export { SafePipe, @@ -126,7 +127,8 @@ export { HasClaimDirective, UserMenuComponent, GradientComponent, - GradientSelectComponent + GradientSelectComponent, + AppMenuComponent ], exports: [ NgbModule, diff --git a/projects/common/src/fm/components/app-menu/app-menu.component.html b/projects/common/src/fm/components/app-menu/app-menu.component.html new file mode 100644 index 0000000..9dd1fe6 --- /dev/null +++ b/projects/common/src/fm/components/app-menu/app-menu.component.html @@ -0,0 +1,9 @@ +
+ +
+ diff --git a/projects/common/src/fm/components/app-menu/app-menu.component.scss b/projects/common/src/fm/components/app-menu/app-menu.component.scss new file mode 100644 index 0000000..d750974 --- /dev/null +++ b/projects/common/src/fm/components/app-menu/app-menu.component.scss @@ -0,0 +1,48 @@ +.menu-button { + background-color: gray; + display: inline-block; + width: 2.5em; + height: 2.5em; + line-height: 2.5em; + text-align: center; + font-size: 1rem; + position: relative; +} + +div.menu-button > span { + color:white; +} + +.menu { + max-height: 100vh; + //transition: max-height 0.2s; + overflow: hidden; + box-shadow: 0 0 20px rgba(0,0,0,.3); + position: absolute; + top: 3rem; + right:0; + background-color: #fff; + border-radius: 0.25rem; + padding: 0.5rem; +} + +.card { + padding:0.5rem; + min-width: 10rem; +} + +.card-body { + text-align: left; +} + +.hidden { + max-height: 0; +} + +.menu.hidden { + padding: 0; +} + +.menu-button.hidden { + overflow: hidden; +} \ No newline at end of file diff --git a/projects/common/src/fm/components/app-menu/app-menu.component.spec.ts b/projects/common/src/fm/components/app-menu/app-menu.component.spec.ts new file mode 100644 index 0000000..bc5b5eb --- /dev/null +++ b/projects/common/src/fm/components/app-menu/app-menu.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AppMenuComponent } from './app-menu.component'; + +describe('AppMenuComponent', () => { + let component: AppMenuComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ AppMenuComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(AppMenuComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/projects/common/src/fm/components/app-menu/app-menu.component.ts b/projects/common/src/fm/components/app-menu/app-menu.component.ts new file mode 100644 index 0000000..4df1e62 --- /dev/null +++ b/projects/common/src/fm/components/app-menu/app-menu.component.ts @@ -0,0 +1,29 @@ +import { Component, OnInit, Input } from '@angular/core'; + + +import { IUser } from '../../models/user'; +import {Store} from '@ngrx/store'; +import * as appReducers from '../../reducers/app-common.reducer'; +import * as appActions from '../../actions/app-common.actions'; + +@Component({ + selector: 'fm-app-menu', + templateUrl: './app-menu.component.html', + styleUrls: ['./app-menu.component.scss'] +}) +export class AppMenuComponent implements OnInit { + + @Input() user:IUser; + @Input() showMenu:boolean; + + constructor(private store: Store) { } + + ngOnInit(): void { + } + + toggle(event:MouseEvent) { + event.stopPropagation(); + this.store.dispatch(new appActions.ToggleAppMenu()); + } + +} diff --git a/projects/common/src/fm/components/app/app.component.html b/projects/common/src/fm/components/app/app.component.html index f2e7713..dc37080 100644 --- a/projects/common/src/fm/components/app/app.component.html +++ b/projects/common/src/fm/components/app/app.component.html @@ -31,7 +31,8 @@
- + +
diff --git a/projects/common/src/fm/components/app/app.component.scss b/projects/common/src/fm/components/app/app.component.scss index 7c26e1b..b3c08b2 100644 --- a/projects/common/src/fm/components/app/app.component.scss +++ b/projects/common/src/fm/components/app/app.component.scss @@ -124,3 +124,8 @@ body { background: #f1f1f1; line-height: 18px; user-select:none;font-family: Lat .online { max-height:0em; } + +fm-app-menu,fm-user-menu { + display: inline-block; + margin-left: 1rem; +} diff --git a/projects/common/src/fm/components/app/app.component.ts b/projects/common/src/fm/components/app/app.component.ts index 66cfa97..f11fbff 100644 --- a/projects/common/src/fm/components/app/app.component.ts +++ b/projects/common/src/fm/components/app/app.component.ts @@ -42,6 +42,7 @@ export class AppComponent implements OnInit, OnDestroy { public routeLoading: Observable = this.store$.select(appReducers.selectGetRouteLoading); public menuVisible: Observable = this.store$.select(appReducers.SelectGetMenuVisible); public accountMenuVisible: Observable = this.store$.select(appReducers.SelectGetAccountMenuVisible); + public appMenuVisible: Observable = this.store$.select(appReducers.SelectGetAppMenuVisible); public user: Observable = this.store$.select(appReducers.SelectGetUser); public isPageMode: Observable = this.store$.select(appReducers.SelectGetIsPageMode); @Input() showUploadProgress: boolean = true; diff --git a/projects/common/src/fm/components/user-menu/user-menu.component.scss b/projects/common/src/fm/components/user-menu/user-menu.component.scss index 08f8d40..69e3945 100644 --- a/projects/common/src/fm/components/user-menu/user-menu.component.scss +++ b/projects/common/src/fm/components/user-menu/user-menu.component.scss @@ -7,7 +7,6 @@ text-align: center; font-size: 1rem; position: relative; - display: inline-block; } div.menu-button > span { diff --git a/projects/common/src/fm/reducers/app-common.reducer.ts b/projects/common/src/fm/reducers/app-common.reducer.ts index 795c797..b2f561b 100644 --- a/projects/common/src/fm/reducers/app-common.reducer.ts +++ b/projects/common/src/fm/reducers/app-common.reducer.ts @@ -21,6 +21,7 @@ export interface State { userPackages: IPackages, userSettingsRoot: IItem, accountMenuVisible: boolean, + appMenuVisible: boolean, isOnline: boolean, isPageMode:boolean } @@ -37,6 +38,7 @@ export const initialState: State = { userPackages: {}, userSettingsRoot: null, accountMenuVisible: false, + appMenuVisible: false, isOnline: true, isPageMode: true } @@ -95,17 +97,20 @@ export function reducer(state = initialState, action: appCommonActions.Actions ) }); } case appCommonActions.TOGGLEMENU: { - return tassign(state, { menuVisible: !state.menuVisible,accountMenuVisible:!state.menuVisible?false:state.accountMenuVisible }); + return tassign(state, { menuVisible: !state.menuVisible,accountMenuVisible:!state.menuVisible?false:state.accountMenuVisible,appMenuVisible:!state.menuVisible?false:state.appMenuVisible }); } case appCommonActions.TOGGLEACCOUNTMENU: { - return tassign(state, { accountMenuVisible: !state.accountMenuVisible }); + return tassign(state, { accountMenuVisible: !state.accountMenuVisible,appMenuVisible:false }); + } + case appCommonActions.TOGGLEAPPMENU: { + return tassign(state, { appMenuVisible: !state.appMenuVisible,accountMenuVisible:false }); } case appCommonActions.ESCAPE: { - return tassign(state, { menuVisible: false,accountMenuVisible:false }); + return tassign(state, { menuVisible: false,accountMenuVisible:false,appMenuVisible: false }); } case appCommonActions.SETMENUVISIBLE: { let a = action as appCommonActions.SetMenuVisible; - return tassign(state, { menuVisible: a.visible,accountMenuVisible:a.visible?false:state.accountMenuVisible }); + return tassign(state, { menuVisible: a.visible,accountMenuVisible:a.visible?false:state.accountMenuVisible,appMenuVisible:a.visible?false:state.appMenuVisible }); } case appCommonActions.INITUSERPACKAGESSUCCESS:{ let a = action as appCommonActions.InitUserPackagesSuccess; @@ -124,7 +129,7 @@ export function reducer(state = initialState, action: appCommonActions.Actions ) return tassign(state,{user:null,initialized:false}); } case appCommonActions.CLOSEALL: { - return tassign(state,{accountMenuVisible:false,menuVisible:false }); + return tassign(state,{accountMenuVisible:false,appMenuVisible:false, menuVisible:false }); } case appCommonActions.ONLINE:{ return tassign(state,{isOnline:true}); @@ -153,6 +158,7 @@ export const getUser = (state: State) => state.user; export const getUserPackages = (state: State) => state.userPackages; export const getUserSettingsRoot = (state: State) => state.userSettingsRoot; export const getAccountMenuVisible = (state: State) => state.accountMenuVisible; +export const getAppMenuVisible = (state: State) => state.appMenuVisible; export const getIsOnline = (state: State) => state.isOnline; export const getIsPageMode = (state: State) => state.isPageMode; @@ -169,6 +175,7 @@ export const SelectGetUser = createSelector(selectAppCommonState,getUser); export const SelectGetUserPackages = createSelector(selectAppCommonState,getUserPackages); export const SelectGetUserSettingsRoot = createSelector(selectAppCommonState,getUserSettingsRoot); export const SelectGetAccountMenuVisible = createSelector(selectAppCommonState,getAccountMenuVisible); +export const SelectGetAppMenuVisible = createSelector(selectAppCommonState,getAppMenuVisible); export const SelectGetIsOnline = createSelector(selectAppCommonState,getIsOnline); export const SelectGetIsPageMode = createSelector(selectAppCommonState,getIsPageMode); From e873f5af5bfe174acafd3b5f2b15e638fda79e89 Mon Sep 17 00:00:00 2001 From: Willem Dantuma Date: Wed, 9 Dec 2020 23:39:44 +0100 Subject: [PATCH 07/11] Fix icon --- fonts/FMIconFont/FMIconFont.svg | 184 ++++++++++++++++-- fonts/FMIconFont/FMIconFont.ttf | Bin 2936 -> 6572 bytes fonts/FMIconFont/FMIconFont.woff | Bin 6808 -> 12712 bytes fonts/FMIconFont/FMIconFont.woff2 | Bin 1656 -> 3856 bytes fonts/FMIconFont/style.css | 24 +++ .../app-menu/app-menu.component.html | 2 +- 6 files changed, 195 insertions(+), 15 deletions(-) diff --git a/fonts/FMIconFont/FMIconFont.svg b/fonts/FMIconFont/FMIconFont.svg index 8181e1a..4f413e1 100644 --- a/fonts/FMIconFont/FMIconFont.svg +++ b/fonts/FMIconFont/FMIconFont.svg @@ -1,6 +1,4 @@ - - + inkscape:showpageshadow="false" + inkscape:document-rotation="0"> + + + + + + + + + font-family="FMIconFont" /> @@ -90,7 +138,55 @@ id="glyph5072" d="m 667.85901,47.05746 c 52.55976,15.6087 154.70543,85.90829 189.72033,130.57135 38.83311,49.53329 47.43676,70.27021 47.43676,114.33585 0,83.30319 -53.15465,136.93019 -142.86222,144.13094 -63.15956,5.06997 -258.40531,-18.50751 -312.41642,-37.72651 -45.26643,-16.1075 -101.96856,-78.49666 -114.86313,-126.38343 -26.17054,-97.19001 37.2249,-196.3167 146.88577,-229.674 37.02144,-11.2617 141.13659,-8.6062 186.09891,4.7458 z m -140.97354,57.3422 c -15.66204,15.66207 -13.10309,30.36665 7.83654,45.03351 26.15266,18.31778 52.21145,3.51275 48.61486,-27.61991 -2.00137,-17.32586 -8.02436,-23.68801 -24.21533,-25.5802 -11.85295,-1.38413 -26.35931,2.29052 -32.23607,8.1666 z m -47.3854,86.76183 c -6.04661,17.33426 2.97284,32.23596 19.50818,32.23596 16.16276,0 29.22849,-21.86458 21.01116,-35.16076 -7.15683,-11.58004 -36.1907,-9.48409 -40.51934,2.92409 z m -130.44714,40.05657 c -8.21734,13.29585 4.84838,35.16087 21.0114,35.16087 16.53636,0 25.55452,-14.90178 19.50792,-32.23607 -4.32865,-12.40912 -33.36251,-14.50473 -40.51932,-2.92411 z m -41.60686,-40.05657 c -10.12089,56.30281 1.05922,101.45485 39.09536,157.87409 38.33081,56.85877 87.1838,80.45971 188.78464,91.20247 43.85243,4.63656 81.31959,9.94286 83.26055,11.79148 7.33459,6.98627 -27.04025,36.21931 -70.23249,59.72769 -36.25508,19.73228 -58.54732,25.12171 -116.49026,28.16306 -62.65272,3.28831 -78.86637,0.89676 -129.0505,-19.03022 C 224.2163,489.67935 156.28985,440.87063 122.92158,391.62775 99.71184,357.37567 94.9839,342.32577 94.9839,302.69668 c 0,-62.64398 28.56794,-113.54347 74.66971,-133.03926 49.58107,-20.96665 55.1462,-22.21557 102.23893,-22.94757 l 43.66625,-0.67909 z M 180.58838,339.87834 c -9.1514,11.02701 -8.501,15.84684 3.77111,27.93792 13.96282,13.75755 15.54505,13.64769 27.05352,-1.87458 9.05824,-12.21787 9.76262,-19.45232 2.71945,-27.93768 -12.34517,-14.87514 -19.99843,-14.44732 -33.54475,1.87467 z m 192.60637,111.26259 c -2.97603,7.75926 -1.28988,18.2294 3.74641,23.26725 13.09726,13.09761 37.91295,1.1274 34.49181,-16.63797 -3.81072,-19.7873 -31.35623,-24.56297 -38.23822,-6.62928 z m 301.90918,59.22566 c -14.44791,48.00729 -5.99247,57.30525 46.46332,51.09247 34.75665,-4.1164 42.50283,-1.88436 62.34565,17.95753 24.73549,24.73573 47.25709,71.15552 38.68241,79.7303 -10.58132,10.58122 -83.93416,3.95428 -104.35792,-9.42795 -11.44256,-7.4973 -25.44468,-29.12027 -31.11673,-48.05113 -11.40888,-38.07997 -20.75061,-43.47592 -29.1967,-16.86481 -7.80601,24.59415 2.80385,83.36533 22.65776,125.50393 15.25106,32.37024 20.43806,36.15493 57.08846,41.65095 102.41079,15.35732 147.92834,74.26422 148.08563,191.64632 0.097,74.0745 -6.72768,79.9763 -66.86111,57.7958 -56.54492,-20.85687 -101.85778,-53.13352 -123.30012,-87.82812 -15.6653,-25.3466 -17.65328,-38.74179 -14.06031,-94.72857 4.22602,-65.8519 -0.59142,-80.61692 -50.91763,-156.11246 -1.23787,-1.85524 -8.37198,1.70893 -15.8557,7.91835 -7.95971,6.60588 -12.87867,22.27635 -11.85261,37.759 3.98395,60.11493 -0.85448,75.87704 -33.21785,108.24179 -31.12292,31.12293 -99.65723,60.0632 -142.23743,60.0632 -15.47455,0 -16.41386,-4.23728 -11.4546,-51.68314 10.46595,-100.13457 58.1109,-154.53189 135.40384,-154.59498 57.52736,-0.0344 71.03115,-18.2638 68.852,-92.88509 -1.41005,-48.25931 1.4881,-62.59615 16.51265,-81.69596 10.02211,-12.74085 25.29913,-23.16484 33.9492,-23.16484 14.57135,0 14.89398,2.76809 4.38779,37.67741 z m -381.76199,70.55193 c 10.33373,12.45108 12.30778,12.35498 22.13047,-1.07866 6.41021,-8.76673 16.47782,-12.56413 24.82117,-9.36254 12.3861,4.75287 11.42409,10.06106 -8.1832,45.14231 -12.22096,21.86563 -22.22004,43.38654 -22.22004,47.82436 0,4.43741 11.60502,17.83329 25.78877,29.76808 29.76327,25.04418 34.42226,64.50401 12.59886,106.70564 -11.16345,21.58814 -15.77147,24.12428 -29.99778,16.51067 -38.3045,-20.50011 -54.61177,-90.91586 -29.39293,-126.92078 10.67483,-15.24066 11.02282,-19.10527 1.71873,-19.10527 -16.59681,0 -32.2939,17.87101 -32.2939,36.76576 0,8.87394 -11.3071,27.44185 -25.1273,41.26206 -22.17329,22.17294 -31.1752,25.1273 -76.56191,25.1273 h -51.43394 l 9.52407,-31.03233 c 5.2383,-17.06788 20.41009,-42.68577 33.71496,-56.92898 22.46572,-24.0496 27.5829,-25.61523 71.75246,-21.95237 43.61529,3.61678 48.83639,2.09886 62.9279,-18.2882 29.72296,-43.00442 31.04041,-47.68105 9.10199,-32.31498 -27.25694,19.09161 -53.32579,18.15461 -78.07622,-2.80711 -19.91497,-16.86612 -19.98254,-17.42754 -3.60735,-30.08717 21.9007,-16.93111 68.48332,-16.4977 82.81492,0.77022 z" unicode="b" /> + + + + + + + + + + + @@ -104,13 +200,46 @@ + + + + + + + + diff --git a/fonts/FMIconFont/FMIconFont.ttf b/fonts/FMIconFont/FMIconFont.ttf index c8b8ea1d041bc6fe7c1edd8985a5e00cf272a39a..1375c6faaa6b7755eed730d5733e0681b968a8bf 100644 GIT binary patch literal 6572 zcmcgxeT-b!Rlnc&eZQIa-n_T7^Rc_LJ2Sg$@9fUU&f2^7Vkfp^Cvk9`#3e}y**aT0 z!C$gBRZ|G1Dgl)Q8blif6;%~#X(Ci8q99ZOYJ=Ja1c*PNh^7KTfu>MsRg|_UiOui6 znQfAPkopgA=e>77&pr3tbAIQXw}cWxeDbq|lT*iz-F@utn%-M@uSG;e;=TQG^+_#?Fx_0Hp4NxNG^XRwEU3l!B zl?VRuON8(NAxZW8_SQp_uiyOl==&<};dwMzcL<5O3F>p_FYdhCJ5Rre`lnH^U$}gB zEBmX;3z%O;ed6NQyRVQltd9PDs83(oy0|^KePu{Ub_#9JUb%d2=Wo{k;e#0ZGWy?3 z%-(Q+Z}Tf3`HAqrE5sFOAmpX*-ng{;2ET-VCvUe1%e(VAdCS`c8TIFs#+~^~ylKAI^JaIrw#@s+ zZ@j?=Rc|mw&E9q;lMlz^EgbJQ{*Z4jq|%n{{E*ZBUx#}Hf9%_0NA^^z{y<08zdONb z_xxqZA9C)_6leI$uT7w4;XE?_WqvPtmi!j^Joy?Gv`#nJBq3|<)xmIWIM`%s!?nSt zSj!7|Y*G~ay&-<+8KT}_!8=QPX)jB&I;wSwS6;?@iq=^VttlGJU!7%XDNBQ{h7M>6Q+n;zpfy-MK(YRCon^hW zl&A(D81`rvPcUe>$yUsQIpsvnHrj)J&$RCT60LN=@mK-515|ccyF;S*J`AE8-N z(xcYa>R=j+n85+lfzYanrXl38Ne8)Hs1e!jUo)3VR_9%;$g+O^w?Xq)nr+ZDXV5U0 ziv?SU09Z1TP?l;10T^al1H1<)7>S?(l35*qBfM5j_lRLUXIrx?yZpCXvyI*Pvkk*@ zK=Cuu%SG4-ST{ja-mVfAQk4V@(zstS#q6@8nmfKjIi-wJ>If;A{D5WxwFyeKh?KCo zq9x_V4xeDI?`!mGE*-`#uBixx%YdE7=iyx>Ox3vOsY!Fn&b*wba-Vx%Q@VA-0FfL6_Z+OOLIt* zCbrK62Q}c?vV-3#-ueO)qIHmS#@>5T?JKQmU)NnkG zq!~aQXxrvtdKPKiR*1@#i4TOP=|I{ zm;+hGLu`skN`LclP90T@A{}xaDdqVPQOMgucu}o&kMukVW47W99D*HNSNo+yxIPlC zQfljIqsd_uFsW@RY)eD4J}xZ|C6r9rq7uw`ESy{LB;RiZjvg2#0XZ$um*)VkX_m7L11q8&+g~5~qY&^*T;b#I=q&OB|6;;L{%zVHw<{1jux=Z zK)%65(Qb`Vq+~#f_A}sQP8;|I!X3KSS{vpBo2?-R5B+do~Y zMYrF){7>^~x22MMPFq=ZYN|H*{%p#Q1B+4Dv*SJv6tV^gd7j7n>X?B!l9_+ooM1tfTAo8gN5-QNg9x z-(zX*1`ZE}t@vcBfp~5;i9P6#pOg!eje#R#r=>BUVWTUoxJSb@T0+&)rp@jq`C?!)nfvu=-h4T1Z0y_od#cRsaj;aRx+IGFs z3|-eTW|mCt-8Z)u7iWfXW3kuUC$h;}t6a>Qg}K{Kh3!^zD#+X|+X;b-6|3Mm)Go#Q zrVC1icUK}xv!GBe+EaeRiC|E&FmDC4U~8@YJiw!f3)lE}_>1HN(0ije9X4xpI}cgv zqTgE^8qWyL-qm_&*60WIOV9%qSN(L(_<2@;I!G{kZRMhG&+Qus~u;r!`8 zm*yq{gN?Fr?}IjLEch(0)XE{XIEURb+m&`};^6je4LHcXla-Tm%+v{;}&I$^?^|7A4@>&Myli{kZ>dl?9Dd4Aij@fCYIT=S)4F!UsgD*}a7lBo25c|LHIcbzll`5J2d(v@Y-|?9j zgn?J`1q__g)Bj>wKmTu1!D^5pJVuW5%lz}?C~~^@B6V76mmFkrJBU)x(BE69)G7wPqs1%yiTkKv>E8Bi zeWGBqC+=r_>GZ}d#0U9lQsv*~-y$v2B^!_*Vr}SWnnA&V8b~S9IfE}qGP*`VGe8o= zm?C{K8XI><#lestx%qcK@vEI%4wcuQateq!_LQD{gf3iMIoqmst0&hcQh)!#^?6#~ zv*+NRJ-^*vTf1Z5KK`xYU1yh%efqi0r`$9y2rDi7%6fyuCXdlvtI7-dH$rWgA|F3ROk}pl+4)oust})4$vWzn-1$5>jz>0 zZIiS{6BDY4DGE5okb}%5LgNwA1Ts3%MzDz)S!dt};e`Y^ATc^XJ4{KaX^mEqfC3aU z#1=?96&hHbn>`$$UGS90AJ_zIBY84p%@(lZBrR2$s_!Pg%4A(QsQ(g0+T!)HFg=2_r?Yibf$)4`_@a zSD5fxuv1kAa@#KUHU@y9MK#yxb z;%Sd*))`l$1($^SV4wZ06jzGXJdD6d)YN?PvF=UPif_>!*nx~HTL_^*h z8-9cC(Y)8>mR2B2DuNfp{<^mt9YM;1c%z5KcVG|bOZ^Y+x zit^2W=_En?}C(B>do`bO7(s{U%L(u_~PNtm_ME~ zwaYA}=>k0Z4|-u0=)eBSZf(ZQJ=9@zeKum_eyqgZG>Py%K)Iz#BQj%Z{W=e;!0j_7fNej+DHamn5k?7BM&c8=B05|@N7xnJdEahG|2CfXU5-0DRD?TE;IPC?zqg! z9C`n^Eb!Ivv*WTPE_rEOR%rhp=p^KU7V~|4RAwX~GvhKR$I1S2S&#yGZd{gF^-srT zh4!zLW8@?`LC%uP5vt?*Kr@q$6o~bEx5UB0W1LdVTuX z*42wAx2{}6asN`cx71tdt(fJ^@^6qMyTkDB2CRJ*D?FUDKMneZ3vy=r>a~Y2Uz+ZA z{_p8;{en%+LA~X2QNvep_yK%OppxQ?9kr+}3g6L_J6ktD`i^bu@Rcjm7q>4xYL+tD j6w6Q7LoLN^Y8*O3^UwLa9Ok_J?SCHqLo?~k|Eu_4e`3MS literal 2936 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 diff --git a/fonts/FMIconFont/FMIconFont.woff2 b/fonts/FMIconFont/FMIconFont.woff2 index ebf2f18b5b67add30388ff99e79d0377c76fce9d..bb83cf41263fbaf275e03816a9f6d660e57ee9e0 100644 GIT binary patch literal 3856 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 SuJR0pqAJ(6ZEt%90002)&3T3Z delta 1646 zcmV-!29f!Y9{3CxcTYw#00961000Jf01W^D000Yk000Ifkr*F;AO=Tt@n$npk`wv_g_I{Wm=%)9nP^CZwXvQ8O@ET8~s$Th7=>=0>apx@x| zZd;ar!9?3mP@l z98*~c4yqxi5@;v}9A*=22jWGM)Z636NM5P4B5eG)QK|GFi?bMV&KOjOlsf8sF3+ok zJK)EUtDx3H9M$84X}KP3A%lffF#Svszaz_kiLFERR8ty-VC(fUyz3J`aOA>!nKbdn}NA?Mt{FSqFC!U43yux z-8$0(%>Dh!i)yB%h-yv$C7miNi5?D~{@shPj3rGM%9dpO{|*Mrle`_PJmjX75$~jb za){L%HeyHwXk327qfEN;-R~?(W^p+nx>BnvN=sA9jgqES|L$MmSz79OV%*#A9om2* zK?vILf5wvYmJbiKdg15fC*!2j$ zdzSS#23^FUF@1~Bh1jByid@b1RcK{@c2Kz%^Ys~_n1#`}5s{ogaqY+FU%I)>v8)+C z<*+Yn!E;{Dt)wng|H0&9u~;tlAEv$J=j(%OFZ%lq>7QJU&%6jGlIO2)-FGuEytt;e z9RKvAfK7qZ>)!OOY#nLxJF_00S3di*q@Ni#>#?%D!P?_)ZeMj({Jb@_>nk^Zx8sGm zKmRz_yXxNgmY5n@gM22ITXXoGeIMVdHw{eLqSzOl5>t`X;EX)F?b>YR4vT#K)p6a^ zQ|sz>j2%o2`7E~LfbWVorho5aY+KzZ{d;9Xk?eGnd(98#pc6I9ir&tg=Br&{lH+A@ z;YdZK(LeF@npN#lVMIxWta@sHLw@1`8t=bEc@fI3gKK1S58K~N{-)iVZ=UVB*c#{UOA3xAgrIGDu7_UZoW2M2*xs6YUjzey0Y00hC63HT&){rcm7W16A~DAWre z#2~N<+ zC_%Y;Ov=k=_6=EPp*p>>#B$&!IC?vJ9RNpWnr)>8(E|9p5J6fjw#W)yu?&3nOkvU` zOBE(xSaEnrJx#VG6{Lbq^hTOI-~l#_?N~N@W>|W1YFK_)#fa6CmYtNAnzT%x88i@_ s$;&X@+y)_4V2u#KQOfdZ$*EcADWgAV8VP8i2!`iql{PM3F|=Ya04m@a0ssI2 diff --git a/fonts/FMIconFont/style.css b/fonts/FMIconFont/style.css index 1cc9b8c..513315b 100644 --- a/fonts/FMIconFont/style.css +++ b/fonts/FMIconFont/style.css @@ -23,6 +23,30 @@ content: "b"; } +.fm-trijntje:before { + content: "c"; +} + +.fm-satellite:before { + content: "d"; +} + +.fm-sensoterra:before { + content: "e"; +} + +.fm-blight:before { + content: "f"; +} + +.fm-agrodatacube:before { + content: "g"; +} + +.fm-app-menu:before { + content: "h"; +} + @font-face { font-family: "FarmMaps"; src: url("./FMIconFont.woff") format("woff"), /* Modern Browsers */ diff --git a/projects/common/src/fm/components/app-menu/app-menu.component.html b/projects/common/src/fm/components/app-menu/app-menu.component.html index 9dd1fe6..e06bc26 100644 --- a/projects/common/src/fm/components/app-menu/app-menu.component.html +++ b/projects/common/src/fm/components/app-menu/app-menu.component.html @@ -1,6 +1,6 @@