summaryrefslogtreecommitdiffstats
path: root/public/src/app/bar-icons
diff options
context:
space:
mode:
Diffstat (limited to 'public/src/app/bar-icons')
-rw-r--r--public/src/app/bar-icons/bar-icons.component.html59
-rw-r--r--public/src/app/bar-icons/bar-icons.component.scss48
-rw-r--r--public/src/app/bar-icons/bar-icons.component.ts47
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];
+ }
+}