diff options
Diffstat (limited to 'public/src/app/bar-icons')
-rw-r--r-- | public/src/app/bar-icons/bar-icons.component.html | 59 | ||||
-rw-r--r-- | public/src/app/bar-icons/bar-icons.component.scss | 48 | ||||
-rw-r--r-- | public/src/app/bar-icons/bar-icons.component.ts | 47 |
3 files changed, 154 insertions, 0 deletions
diff --git a/public/src/app/bar-icons/bar-icons.component.html b/public/src/app/bar-icons/bar-icons.component.html new file mode 100644 index 0000000..03129bf --- /dev/null +++ b/public/src/app/bar-icons/bar-icons.component.html @@ -0,0 +1,59 @@ +<div style="display: flex; position: relative; justify-content: flex-end;"> + <div style="display: flex; justify-content: flex-end;" [class]="genrateBarTestId()"> + <button mat-icon-button> + <span style="width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center;" [innerHTML]="'help-circle' | feather:18"></span> + </button> + <hr> + + <div *ngIf="tabName.includes('map')" style="display: flex;"> + <button mat-icon-button> + <span style="width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center;" [innerHTML]="'upload' | feather:18"></span> + </button> + <hr> + + <button mat-icon-button> + <span style="width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center;" [innerHTML]="'download' | feather:18"></span> + </button> + <hr> + </div> + + <button mat-icon-button (click)="enableSetting()" data-tests-id="setting-gear" [style.color]="this.store.expandAdvancedSetting[store.tabIndex] ? '#009FDB' : 'black'"> + <span style="width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center;" [innerHTML]="'settings' | feather:18"></span> + </button> + </div> + + <!-- advanced setting --> + <div class="setting" *ngIf="store.expandAdvancedSetting[store.tabIndex]"> + <div *mobxAutorun style="width: 100%;" [class]="tabName+'-setting-list'"> + <div style="font-size: 1.5em; padding: 0 12px;">{{tabName}} Advanced Setting</div> + <form #cdumpConfForm="ngForm"> + <div *ngFor="let prop of store.configurationForm" class="field" [id]="prop.name"> + <p class="field-label">{{prop.name}}</p> + <input *ngIf="!isPropertyDdl(prop)" type="text" name="{{prop.name}}" class="field-text" [(ngModel)]="prop.assignment.value" + (ngModelChange)="onChange($event)"> + <select *ngIf="isPropertyDdl(prop)" class="field-text" name="{{prop.name}}" [(ngModel)]="prop.assignment.value" (ngModelChange)="onChange($event)"> + <option *ngFor="let value of prop.constraints[0].valid_values" [value]="value"> + {{value}} + </option> + </select> + </div> + </form> + </div> + </div> +</div> diff --git a/public/src/app/bar-icons/bar-icons.component.scss b/public/src/app/bar-icons/bar-icons.component.scss new file mode 100644 index 0000000..893f757 --- /dev/null +++ b/public/src/app/bar-icons/bar-icons.component.scss @@ -0,0 +1,48 @@ +.setting { + position: absolute; + top: 47px; + right: 0; + background: white; + padding: 1em; + border: 1px solid gray; + display: flex; + min-width: 400px; + z-index: 2; + // width: 35%; +} + +.target-field { + width: 370px; + display: flex; + align-items: center; + margin: 10px; + .field-label { + padding-right: 10px; + } + .required::before { + content: '*'; + color: red; + padding-right: 5px; + } + .field-select { + flex: 1; + width: 100%; + min-width: 250px; + padding: 5px 0 5px 5px; + margin: 0; + } +} + +.field { + margin: 1em; + .field-label { + padding-bottom: 0.5em; + } + .field-text { + flex: 1; + width: 100%; + min-width: 250px; + padding: 5px 0 5px 5px; + margin: 0; + } +} diff --git a/public/src/app/bar-icons/bar-icons.component.ts b/public/src/app/bar-icons/bar-icons.component.ts new file mode 100644 index 0000000..adf4b88 --- /dev/null +++ b/public/src/app/bar-icons/bar-icons.component.ts @@ -0,0 +1,47 @@ +import { Component, Input, ViewChild } from '@angular/core'; +import { Store } from '../store/store'; +import { includes } from 'lodash'; +import { NgForm } from '@angular/forms'; + +@Component({ + selector: 'app-bar-icons', + templateUrl: './bar-icons.component.html', + styleUrls: ['./bar-icons.component.scss'] +}) +export class BarIconsComponent { + configuration; + @Input() tabName: string; + @ViewChild('cdumpConfForm') cdumpConfForm: NgForm; + + constructor(public store: Store) {} + + onChange(e) { + this.store.cdumpIsDirty = true; + } + + isPropertyDdl(property) { + if (property.hasOwnProperty('constraints')) { + if ( + includes( + property.constraints[0].valid_values, + property.assignment.value + ) + ) { + return true; + } else { + return false; + } + } else { + return false; + } + } + + genrateBarTestId() { + return `${this.tabName}-bar-icon-container`; + } + + enableSetting() { + this.store.expandAdvancedSetting[this.store.tabIndex] = !this.store + .expandAdvancedSetting[this.store.tabIndex]; + } +} |