From dee9c1077bb06014be28f09fdcb15f36f94cc884 Mon Sep 17 00:00:00 2001 From: Nejc Zdovc Date: Mon, 29 Aug 2016 21:51:30 +0200 Subject: [PATCH] Add keymap page (#80) --- src/app.module.ts | 18 +- .../keymap/add/keymap-add.component.html | 32 + .../keymap/add/keymap-add.component.scss | 61 ++ .../keymap/add/keymap-add.component.ts | 27 + src/components/keymap/index.ts | 1 + src/components/keymap/keymap.component.ts | 3 +- src/components/keymap/keymap.routes.ts | 5 + .../side-menu/side-menu.component.html | 2 +- .../side-menu/side-menu.component.ts | 1 - .../svg/keyboard/svg-keyboard.component.html | 3 +- .../svg/keyboard/svg-keyboard.component.ts | 12 +- .../svg/module/svg-module.component.html | 5 +- .../svg/module/svg-module.component.ts | 19 +- .../svg/wrap/svg-keyboard-wrap.component.html | 17 +- .../svg/wrap/svg-keyboard-wrap.component.scss | 36 +- .../svg/wrap/svg-keyboard-wrap.component.ts | 90 +- src/config-serializer/config-items/Keymap.ts | 6 + src/config-serializer/default-keymaps.json | 947 ++++++++++++++++++ src/config-serializer/uhk-config.json | 3 + src/services/data-provider.service.ts | 4 + 20 files changed, 1258 insertions(+), 34 deletions(-) create mode 100644 src/components/keymap/add/keymap-add.component.html create mode 100644 src/components/keymap/add/keymap-add.component.scss create mode 100644 src/components/keymap/add/keymap-add.component.ts create mode 100644 src/config-serializer/default-keymaps.json diff --git a/src/app.module.ts b/src/app.module.ts index 6b0bf163..25015fab 100644 --- a/src/app.module.ts +++ b/src/app.module.ts @@ -10,11 +10,15 @@ import { KeymapComponent } from './components/keymap'; import { MacroComponent } from './components/macro'; import { LegacyLoaderComponent } from './components/legacy-loader'; import { NotificationComponent } from './components/notification'; -import { SvgKeystrokeKeyComponent, SvgOneLineTextKeyComponent, SvgTwoLineTextKeyComponent } from './components/svg/keys'; -import {SvgKeyboardWrapComponent} from './components/svg/wrap/svg-keyboard-wrap.component'; -import {LayersComponent} from './components/layers/layers.component'; -import {SvgKeyboardComponent} from './components/svg/keyboard/svg-keyboard.component'; -import {PopoverComponent} from './components/popover/popover.component'; +import { + SvgKeystrokeKeyComponent, SvgOneLineTextKeyComponent, SvgTwoLineTextKeyComponent +} from './components/svg/keys'; +import { SvgKeyboardWrapComponent } from './components/svg/wrap'; +import { LayersComponent } from './components/layers'; +import { SvgKeyboardComponent } from './components/svg/keyboard'; +import { PopoverComponent } from './components/popover'; +import { KeymapAddComponent } from './components/keymap'; +import {UhkConfigurationService} from './services/uhk-configuration.service'; @NgModule({ declarations: [ @@ -29,11 +33,13 @@ import {PopoverComponent} from './components/popover/popover.component'; SvgKeyboardWrapComponent, LayersComponent, PopoverComponent, - SvgKeyboardComponent + SvgKeyboardComponent, + KeymapAddComponent ], imports: [BrowserModule], providers: [ DataProviderService, + UhkConfigurationService, MapperService, APP_ROUTER_PROVIDERS, { provide: LocationStrategy, useClass: HashLocationStrategy } diff --git a/src/components/keymap/add/keymap-add.component.html b/src/components/keymap/add/keymap-add.component.html new file mode 100644 index 00000000..212216b8 --- /dev/null +++ b/src/components/keymap/add/keymap-add.component.html @@ -0,0 +1,32 @@ +

+ + Add new keymap +

+ +
+
+

{{ keymap.name }}

+

+ {{ keymap.description }} +

+ + +
+ +
+
+
\ No newline at end of file diff --git a/src/components/keymap/add/keymap-add.component.scss b/src/components/keymap/add/keymap-add.component.scss new file mode 100644 index 00000000..1e6d3c35 --- /dev/null +++ b/src/components/keymap/add/keymap-add.component.scss @@ -0,0 +1,61 @@ +:host { + overflow-y: auto; + display: block; + height: 100%; +} + +.uhk__layer-switcher--wrapper { + position: relative; + + &:before { + content: attr(data-title); + display: inline-block; + position: absolute; + bottom: -0.3em; + right: 100%; + font-size: 2.4rem; + padding-right: 0.25em; + margin: 0; + } +} + +.keymap { + &__search { + margin-top: 10px; + + .input-group { + width: 100%; + max-width: 350px; + float: left; + } + + &_amount { + float: left; + margin: 7px 0 0 20px; + } + } + + &__description { + margin-bottom: 20px; + } + + &__list { + margin-top: 40px; + + &_item { + margin-bottom: 50px; + } + + .btn-group-lg { + margin: 30px 0 0; + width: 100%; + text-align: center; + + .btn { + float: none; + padding-left: 50px; + padding-right: 50px; + } + } + } +} diff --git a/src/components/keymap/add/keymap-add.component.ts b/src/components/keymap/add/keymap-add.component.ts new file mode 100644 index 00000000..e2e82be8 --- /dev/null +++ b/src/components/keymap/add/keymap-add.component.ts @@ -0,0 +1,27 @@ +import { Component } from '@angular/core'; +import { Keymap } from '../../../config-serializer/config-items/Keymap'; +import { Keymaps } from '../../../config-serializer/config-items/Keymaps'; +import {DataProviderService} from '../../../services/data-provider.service'; + +@Component({ + selector: 'keymap-add', + template: require('./keymap-add.component.html'), + styles: [require('./keymap-add.component.scss')] +}) +export class KeymapAddComponent { + private keymaps: Keymap[]; + private keymapsAll: Keymap[]; + private currentKeyboards: number; + + constructor(data: DataProviderService) { + let json: any = data.getDefaultKeymaps(); + let all: Keymaps = new Keymaps().fromJsObject(json.keymaps); + this.keymaps = all.elements; + this.keymapsAll = this.keymaps.slice(0); + this.currentKeyboards = this.keymaps.length; + } + + filterKeyboards(value: string) { + this.keymaps = this.keymapsAll.filter((item: Keymap) => item.name.toLocaleLowerCase().indexOf(value) !== -1); + } +} diff --git a/src/components/keymap/index.ts b/src/components/keymap/index.ts index 69136468..753c64f3 100644 --- a/src/components/keymap/index.ts +++ b/src/components/keymap/index.ts @@ -1,2 +1,3 @@ export * from './keymap.component'; export * from './keymap.routes'; +export * from './add/keymap-add.component'; diff --git a/src/components/keymap/keymap.component.ts b/src/components/keymap/keymap.component.ts index 73e4b0de..5a245910 100644 --- a/src/components/keymap/keymap.component.ts +++ b/src/components/keymap/keymap.component.ts @@ -9,8 +9,7 @@ import { Subscription } from 'rxjs/Subscription'; @Component({ selector: 'keymap', template: require('./keymap.component.html'), - styles: [require('./keymap.component.scss')], - providers: [UhkConfigurationService] + styles: [require('./keymap.component.scss')] }) export class KeymapComponent implements OnInit { private keymapId: number = 0; diff --git a/src/components/keymap/keymap.routes.ts b/src/components/keymap/keymap.routes.ts index 1d9e5771..549cb152 100644 --- a/src/components/keymap/keymap.routes.ts +++ b/src/components/keymap/keymap.routes.ts @@ -1,5 +1,6 @@ import { RouterConfig } from '@angular/router'; import { KeymapComponent } from './keymap.component'; +import { KeymapAddComponent } from './add/keymap-add.component'; export const keymapRoutes: RouterConfig = [ { @@ -11,6 +12,10 @@ export const keymapRoutes: RouterConfig = [ path: 'keymap', component: KeymapComponent }, + { + path: 'keymap/add', + component: KeymapAddComponent + }, { path: 'keymap/:id', component: KeymapComponent diff --git a/src/components/side-menu/side-menu.component.html b/src/components/side-menu/side-menu.component.html index c79f7d6a..dfbebeea 100644 --- a/src/components/side-menu/side-menu.component.html +++ b/src/components/side-menu/side-menu.component.html @@ -2,7 +2,7 @@