diff --git a/discovery-frontend/src/app/common/component/data-preview/data.preview.component.html b/discovery-frontend/src/app/common/component/data-preview/data.preview.component.html
index d103ba6fa6..d45e172f15 100644
--- a/discovery-frontend/src/app/common/component/data-preview/data.preview.component.html
+++ b/discovery-frontend/src/app/common/component/data-preview/data.preview.component.html
@@ -493,7 +493,7 @@
{{'msg.metadata.th.dictionary' | translate}}
- {{selectedField.dictionary?.name}}
+ {{selectedField.dictionary?.logicalName}}
|
diff --git a/discovery-frontend/src/app/common/component/data-preview/data.preview.component.ts b/discovery-frontend/src/app/common/component/data-preview/data.preview.component.ts
index 21339f1b3c..fe1ba60b34 100644
--- a/discovery-frontend/src/app/common/component/data-preview/data.preview.component.ts
+++ b/discovery-frontend/src/app/common/component/data-preview/data.preview.component.ts
@@ -1015,24 +1015,10 @@ export class DataPreviewComponent extends AbstractPopupComponent implements OnIn
// 메타데이터가 존재한다면
if (this.isExistMetaData(source)) {
const fieldMetaData: MetadataColumn = _.find(source.uiMetaData.columns, {'physicalName': field.name});
- // logical name
- field['logicalName'] = fieldMetaData.name;
// code table
field['codeTable'] = fieldMetaData.codeTable;
// dictionary
field['dictionary'] = fieldMetaData.dictionary;
- // type
- if (fieldMetaData.type) {
- field['metaType'] = fieldMetaData.type;
- }
- // description
- if (fieldMetaData.description) {
- field['description'] = fieldMetaData.description;
- }
- // format
- if (fieldMetaData.format) {
- field['format'] = fieldMetaData.format;
- }
}
}
@@ -1237,8 +1223,7 @@ export class DataPreviewComponent extends AbstractPopupComponent implements OnIn
*/
public createMetaDataHeader(args: any): void {
// TODO 추후 그리드 자체에서 생성하도록 변경하기
- $('' + (_.find(this.columns, {'name': args.column.id}).logicalName || '') + '
')
- .appendTo(args.node);
+ $('' + (_.find(this.columns, {'name': args.column.id}).logicalName || '') + '
').appendTo(args.node);
}
/*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
diff --git a/discovery-frontend/src/app/dashboard/component/custom-field/custom-field.component.ts b/discovery-frontend/src/app/dashboard/component/custom-field/custom-field.component.ts
index cf61aef620..1e6994d343 100644
--- a/discovery-frontend/src/app/dashboard/component/custom-field/custom-field.component.ts
+++ b/discovery-frontend/src/app/dashboard/component/custom-field/custom-field.component.ts
@@ -20,7 +20,7 @@ import {
} from '@angular/core';
import { DashboardService } from '../../service/dashboard.service';
import { CommonCode } from '../../../domain/code/common-code';
-import { BIType, Field, FieldRole } from '../../../domain/datasource/datasource';
+import { Field, FieldRole } from '../../../domain/datasource/datasource';
import { AbstractComponent } from '../../../common/component/abstract.component';
import { Alert } from '../../../common/util/alert.util';
import { BoardDataSource } from '../../../domain/dashboard/dashboard';
@@ -372,7 +372,7 @@ export class CustomFieldComponent extends AbstractComponent implements OnInit, O
} else {
let color = '#439fe5';
- if (data.biType === BIType.DIMENSION) {
+ if (data.role === FieldRole.DIMENSION) {
color = '#5fd7a5';
}
@@ -506,7 +506,7 @@ export class CustomFieldComponent extends AbstractComponent implements OnInit, O
// 컬럼 클릭
public selecteColumn(column: Field) {
let color = '#439fe5';
- if (column.biType === BIType.DIMENSION) {
+ if (column.role === FieldRole.DIMENSION) {
color = '#5fd7a5';
}
let inserColumn = '';
diff --git a/discovery-frontend/src/app/dashboard/filters/configure-filters-update.component.ts b/discovery-frontend/src/app/dashboard/filters/configure-filters-update.component.ts
index 9b0d233014..2ddc3bebc7 100644
--- a/discovery-frontend/src/app/dashboard/filters/configure-filters-update.component.ts
+++ b/discovery-frontend/src/app/dashboard/filters/configure-filters-update.component.ts
@@ -13,21 +13,21 @@
*/
import * as _ from 'lodash';
-import { Component, ElementRef, EventEmitter, Injector, OnDestroy, OnInit, Output, ViewChild } from '@angular/core';
-import { AbstractFilterPopupComponent } from 'app/dashboard/filters/abstract-filter-popup.component';
-import { Filter } from '../../domain/workbook/configurations/filter/filter';
-import { Dashboard } from '../../domain/dashboard/dashboard';
-import { Field, FieldRole, BIType, ConnectionType, Datasource } from '../../domain/datasource/datasource';
-import { CustomField } from '../../domain/workbook/configurations/field/custom-field';
-import { InclusionFilter } from '../../domain/workbook/configurations/filter/inclusion-filter';
-import { ConfigureFiltersInclusionComponent } from './inclusion-filter/configure-filters-inclusion.component';
-import { BoundFilter } from '../../domain/workbook/configurations/filter/bound-filter';
-import { ConfigureFiltersBoundComponent } from './bound-filter/configure-filters-bound.component';
-import { Widget } from '../../domain/dashboard/widget/widget';
-import { StringUtil } from '../../common/util/string.util';
-import { TimeFilter } from '../../domain/workbook/configurations/filter/time-filter';
-import { ConfigureFiltersTimeComponent } from './time-filter/configure-filters-time.component';
-import { FilterUtil } from '../util/filter.util';
+import {Component, ElementRef, EventEmitter, Injector, OnDestroy, OnInit, Output, ViewChild} from '@angular/core';
+import {AbstractFilterPopupComponent} from 'app/dashboard/filters/abstract-filter-popup.component';
+import {Filter} from '../../domain/workbook/configurations/filter/filter';
+import {Dashboard} from '../../domain/dashboard/dashboard';
+import {ConnectionType, Datasource, Field, FieldRole, LogicalType} from '../../domain/datasource/datasource';
+import {CustomField} from '../../domain/workbook/configurations/field/custom-field';
+import {InclusionFilter} from '../../domain/workbook/configurations/filter/inclusion-filter';
+import {ConfigureFiltersInclusionComponent} from './inclusion-filter/configure-filters-inclusion.component';
+import {BoundFilter} from '../../domain/workbook/configurations/filter/bound-filter';
+import {ConfigureFiltersBoundComponent} from './bound-filter/configure-filters-bound.component';
+import {Widget} from '../../domain/dashboard/widget/widget';
+import {StringUtil} from '../../common/util/string.util';
+import {TimeFilter} from '../../domain/workbook/configurations/filter/time-filter';
+import {ConfigureFiltersTimeComponent} from './time-filter/configure-filters-time.component';
+import {FilterUtil} from '../util/filter.util';
import {CommonConstant} from "../../common/constant/common.constant";
@Component({
@@ -200,7 +200,7 @@ export class ConfigureFiltersUpdateComponent extends AbstractFilterPopupComponen
public isTimestamp(): boolean {
return (
this.targetField
- && (this.targetField).biType === BIType.TIMESTAMP
+ && this.targetField.type === 'TIMESTAMP'
&& this.targetField.role === FieldRole.TIMESTAMP
) || (
this.targetField == null && this.targetFilter.field === CommonConstant.COL_NAME_CURRENT_DATETIME
@@ -278,7 +278,7 @@ export class ConfigureFiltersUpdateComponent extends AbstractFilterPopupComponen
this._dashboard = _.cloneDeep(board);
this.targetFilter = targetFilter;
- ( this.targetFilter.ui ) || ( this.targetFilter.ui = {} );
+ (this.targetFilter.ui) || (this.targetFilter.ui = {});
this.targetField = this._getTargetField(targetFilter, board.configuration.fields, board.configuration.customFields);
this.dataSource = FilterUtil.getDataSourceForFilter(targetFilter, board);
@@ -316,7 +316,7 @@ export class ConfigureFiltersUpdateComponent extends AbstractFilterPopupComponen
// 글로벌 필터
if (fieldList && 0 < fieldList.length) {
- return fieldList.find((field: Field | CustomField) => field.name === filter.field && field.dataSource === filter.dataSource );
+ return fieldList.find((field: Field | CustomField) => field.name === filter.field && field.dataSource === filter.dataSource);
} else {
return null;
}
diff --git a/discovery-frontend/src/app/dashboard/filters/time-filter/time-filter-panel.component.ts b/discovery-frontend/src/app/dashboard/filters/time-filter/time-filter-panel.component.ts
index 11ca6b3add..9727139888 100644
--- a/discovery-frontend/src/app/dashboard/filters/time-filter/time-filter-panel.component.ts
+++ b/discovery-frontend/src/app/dashboard/filters/time-filter/time-filter-panel.component.ts
@@ -21,7 +21,7 @@ import {
OnInit,
ViewChild
} from '@angular/core';
-import { BIType, Field, FieldRole } from '../../../domain/datasource/datasource';
+import {Field, FieldRole, LogicalType} from '../../../domain/datasource/datasource';
import { AbstractFilterPanelComponent } from '../abstract-filter-panel.component';
import { ByTimeUnit, TimeUnit } from '../../../domain/workbook/configurations/field/timestamp-field';
import { TimeListFilterComponent } from './time-list-filter.component';
@@ -309,8 +309,7 @@ export class TimeFilterPanelComponent extends AbstractFilterPanelComponent imple
if( this.dataSource ) {
// 타임스탬프인지 판단
- if (this.field && this.field.biType === BIType.TIMESTAMP
- && this.field.role === FieldRole.TIMESTAMP) {
+ if (this.field && this.field.type === 'TIMESTAMP' && this.field.role === FieldRole.TIMESTAMP) {
this.isTimeStamp = true;
} else if (this.field == null && filter.field === CommonConstant.COL_NAME_CURRENT_DATETIME) {
this.isTimeStamp = true;
diff --git a/discovery-frontend/src/app/dashboard/widgets/page-widget/page-widget.component.ts b/discovery-frontend/src/app/dashboard/widgets/page-widget/page-widget.component.ts
index 28722a6a0f..3593dc652d 100644
--- a/discovery-frontend/src/app/dashboard/widgets/page-widget/page-widget.component.ts
+++ b/discovery-frontend/src/app/dashboard/widgets/page-widget/page-widget.component.ts
@@ -1108,7 +1108,7 @@ export class PageWidgetComponent extends AbstractWidgetComponent implements OnIn
this.widgetConfiguration.pivot.rows
.forEach((abstractField) => {
if (isNullOrUndefined(abstractField.field)
- && String(field.biType) == abstractField.type.toUpperCase() && field.name == abstractField.name) {
+ && String(field.type) == abstractField.type.toUpperCase() && field.name == abstractField.name) {
abstractField.field = field;
}
});
@@ -1116,7 +1116,7 @@ export class PageWidgetComponent extends AbstractWidgetComponent implements OnIn
this.widgetConfiguration.pivot.columns
.forEach((abstractField) => {
if (isNullOrUndefined(abstractField.field)
- && String(field.biType) == abstractField.type.toUpperCase() && field.name == abstractField.name) {
+ && String(field.type) == abstractField.type.toUpperCase() && field.name == abstractField.name) {
abstractField.field = field;
}
});
@@ -1124,7 +1124,7 @@ export class PageWidgetComponent extends AbstractWidgetComponent implements OnIn
this.widgetConfiguration.pivot.aggregations
.forEach((abstractField) => {
if (isNullOrUndefined(abstractField.field)
- && String(field.biType) == abstractField.type.toUpperCase() && field.name == abstractField.name) {
+ && String(field.type) == abstractField.type.toUpperCase() && field.name == abstractField.name) {
abstractField.field = field;
}
});
@@ -1135,7 +1135,7 @@ export class PageWidgetComponent extends AbstractWidgetComponent implements OnIn
this.widgetConfiguration.shelf.layers[this.widgetConfiguration.chart['layerNum']]
.forEach((abstractField) => {
if (isNullOrUndefined(abstractField.field)
- && String(field.biType) == abstractField.type.toUpperCase() && field.name == abstractField.name) {
+ && String(field.type) == abstractField.type.toUpperCase() && field.name == abstractField.name) {
abstractField.field = field;
}
});
diff --git a/discovery-frontend/src/app/data-storage/data-source-list/component/storage-filter-select-box.component.html b/discovery-frontend/src/app/data-storage/data-source-list/component/storage-filter-select-box.component.html
new file mode 100644
index 0000000000..19f21b3dcf
--- /dev/null
+++ b/discovery-frontend/src/app/data-storage/data-source-list/component/storage-filter-select-box.component.html
@@ -0,0 +1,10 @@
+
+
{{selectedFilter.label}}
+
+
diff --git a/discovery-frontend/src/app/data-storage/data-source-list/component/storage-filter-select-box.component.ts b/discovery-frontend/src/app/data-storage/data-source-list/component/storage-filter-select-box.component.ts
new file mode 100644
index 0000000000..c1c56a3eb3
--- /dev/null
+++ b/discovery-frontend/src/app/data-storage/data-source-list/component/storage-filter-select-box.component.ts
@@ -0,0 +1,49 @@
+import {Component, ElementRef, EventEmitter, Injector, Input, Output} from "@angular/core";
+import {AbstractComponent} from "../../../common/component/abstract.component";
+
+@Component({
+ selector: 'storage-filter-select-box',
+ templateUrl: 'storage-filter-select-box.component.html',
+ host: {
+ '(document:click)': 'onClickHost($event)',
+ },
+})
+export class StorageFilterSelectBoxComponent extends AbstractComponent {
+
+ @Output('changedFilter')
+ private _changedFilter: EventEmitter = new EventEmitter();
+
+ @Input()
+ public filterList: any;
+
+ @Input()
+ public selectedFilter: any;
+
+ // select list show/hide flag
+ public isListShow: boolean;
+
+ // constructor
+ constructor(protected element: ElementRef,
+ protected injector: Injector) {
+ super(element, injector);
+ }
+
+ /**
+ * 컴포넌트 내부 host 클릭이벤트 처리
+ * @param event
+ */
+ public onClickHost(event: MouseEvent) {
+ // 현재 element 내부에서 생긴 이벤트가 아닌경우 hide 처리
+ if (!this.elementRef.nativeElement.contains(event.target)) {
+ // close
+ this.isListShow = false;
+ }
+ }
+
+ public onChangedFilter(filter: any): void {
+ // change filter
+ this.selectedFilter = filter;
+ // event emit
+ this._changedFilter.emit(filter);
+ }
+}
diff --git a/discovery-frontend/src/app/data-storage/data-source-list/create-data-source/staging-db-component/staging-db-select-data/staging-db-select-data.component.ts b/discovery-frontend/src/app/data-storage/data-source-list/create-data-source/staging-db-component/staging-db-select-data/staging-db-select-data.component.ts
index 215ef2114a..4af2b4df0c 100644
--- a/discovery-frontend/src/app/data-storage/data-source-list/create-data-source/staging-db-component/staging-db-select-data/staging-db-select-data.component.ts
+++ b/discovery-frontend/src/app/data-storage/data-source-list/create-data-source/staging-db-component/staging-db-select-data/staging-db-select-data.component.ts
@@ -450,8 +450,8 @@ export class StagingDbSelectDataComponent extends AbstractPopupComponent impleme
return fields.map((item) => {
// name
item.name = this._sliceTableName(item.name);
- // alias
- item.alias = this._sliceTableName(item.alias);
+ // if exist alias, convert alias
+ item.alias && (item.alias = this._sliceTableName(item.alias));
return item;
});
}
diff --git a/discovery-frontend/src/app/data-storage/data-source-list/detail-data-source/column-detail-data-source/column-detail-data-source.component.html b/discovery-frontend/src/app/data-storage/data-source-list/detail-data-source/column-detail-data-source/column-detail-data-source.component.html
index 95ec6554cf..64a0b7cd38 100644
--- a/discovery-frontend/src/app/data-storage/data-source-list/detail-data-source/column-detail-data-source/column-detail-data-source.component.html
+++ b/discovery-frontend/src/app/data-storage/data-source-list/detail-data-source/column-detail-data-source/column-detail-data-source.component.html
@@ -157,7 +157,7 @@
- {{field['logicalName']}}
+ {{field.logicalName}}
@@ -323,7 +323,7 @@
{{'msg.metadata.th.dictionary' | translate}}
- {{selectedField.dictionary?.name}}
+ {{selectedField.dictionary?.logicalName}}
|
diff --git a/discovery-frontend/src/app/data-storage/data-source-list/detail-data-source/column-detail-data-source/column-detail-data-source.component.ts b/discovery-frontend/src/app/data-storage/data-source-list/detail-data-source/column-detail-data-source/column-detail-data-source.component.ts
index 039f9821bc..6e49ad13b4 100644
--- a/discovery-frontend/src/app/data-storage/data-source-list/detail-data-source/column-detail-data-source/column-detail-data-source.component.ts
+++ b/discovery-frontend/src/app/data-storage/data-source-list/detail-data-source/column-detail-data-source/column-detail-data-source.component.ts
@@ -78,12 +78,28 @@ export class ColumnDetailDataSourceComponent extends AbstractComponent implement
public filteredColumnList: any[];
// role type filter list
- public roleTypeFilterList: any[];
+ public roleTypeFilterList: any[] = [
+ { label: this.translateService.instant('msg.comm.ui.list.all'), value: 'ALL' },
+ { label: this.translateService.instant('msg.comm.name.dim'), value: 'DIMENSION' },
+ { label: this.translateService.instant('msg.comm.name.mea'), value: 'MEASURE' },
+ ];
// selected role type filter
public selectedRoleTypeFilter: any;
// type filter list
- public typeFilterList: any[];
+ public typeFilterList: any[] = [
+ { label: this.translateService.instant('msg.comm.ui.list.all'), value: 'ALL' },
+ { label: this.translateService.instant('msg.storage.ui.list.string'), value: 'STRING' },
+ { label: this.translateService.instant('msg.storage.ui.list.boolean'), value: 'BOOLEAN' },
+ { label: this.translateService.instant('msg.storage.ui.list.integer'), value: 'INTEGER', measure: true },
+ { label: this.translateService.instant('msg.storage.ui.list.double'), value: 'DOUBLE', measure: true },
+ { label: this.translateService.instant('msg.storage.ui.list.date'), value: 'TIMESTAMP' },
+ { label: this.translateService.instant('msg.storage.ui.list.lnt'), value: 'LNT' },
+ { label: this.translateService.instant('msg.storage.ui.list.lng'), value: 'LNG' },
+ { label: this.translateService.instant('msg.storage.ui.list.geo.point'), value: 'GEO_POINT', derived: true },
+ { label: this.translateService.instant('msg.storage.ui.list.geo.polygon'), value: 'GEO_POLYGON', derived: true },
+ { label: this.translateService.instant('msg.storage.ui.list.geo.line'), value: 'GEO_LINE', derived: true },
+ ];
// selected type filter
public selectedTypeFilter: any;
// type filter show | hide flag
@@ -519,7 +535,7 @@ export class ColumnDetailDataSourceComponent extends AbstractComponent implement
* Configure schema click event
*/
public onClickConfigureSchema(): void {
- this._editConfigSchemaComp.init(this.datasource.id, this.datasource.fields);
+ this._editConfigSchemaComp.init(this.datasource.id, this.datasource.fields, this.roleTypeFilterList, this.typeFilterList);
// change markup position
$('#edit-config-schema').appendTo($('#layout-contents'));
}
@@ -529,25 +545,7 @@ export class ColumnDetailDataSourceComponent extends AbstractComponent implement
* @private
*/
private _initView(): void {
- this.typeFilterList = [
- { label: this.translateService.instant('msg.comm.ui.list.all'), value: 'ALL' },
- { label: this.translateService.instant('msg.storage.ui.list.string'), value: 'STRING' },
- { label: this.translateService.instant('msg.storage.ui.list.boolean'), value: 'BOOLEAN' },
- { label: this.translateService.instant('msg.storage.ui.list.integer'), value: 'INTEGER', measure: true },
- { label: this.translateService.instant('msg.storage.ui.list.double'), value: 'DOUBLE', measure: true },
- { label: this.translateService.instant('msg.storage.ui.list.date'), value: 'TIMESTAMP' },
- { label: this.translateService.instant('msg.storage.ui.list.lnt'), value: 'LNT' },
- { label: this.translateService.instant('msg.storage.ui.list.lng'), value: 'LNG' },
- { label: this.translateService.instant('msg.storage.ui.list.geo.point'), value: 'GEO_POINT', derived: true },
- { label: this.translateService.instant('msg.storage.ui.list.geo.polygon'), value: 'GEO_POLYGON', derived: true },
- { label: this.translateService.instant('msg.storage.ui.list.geo.line'), value: 'GEO_LINE', derived: true },
- ];
this.selectedTypeFilter = this.typeFilterList[0];
- this.roleTypeFilterList = [
- { label: this.translateService.instant('msg.comm.ui.list.all'), value: 'ALL' },
- { label: this.translateService.instant('msg.comm.name.dim'), value: 'DIMENSION' },
- { label: this.translateService.instant('msg.comm.name.mea'), value: 'MEASURE' },
- ];
this.selectedRoleTypeFilter = this.roleTypeFilterList[0];
// search
this.searchTextKeyword = '';
@@ -644,24 +642,10 @@ export class ColumnDetailDataSourceComponent extends AbstractComponent implement
*/
private _setMetaDataField(field: Field): void {
const fieldMetaData: MetadataColumn = _.find(this.metaData.columns, {'physicalName': field.name});
- // logical name
- field['logicalName'] = fieldMetaData.name;
// code table
field['codeTable'] = fieldMetaData.codeTable;
// dictionary
field['dictionary'] = fieldMetaData.dictionary;
- // type
- if (fieldMetaData.type) {
- field['metaType'] = fieldMetaData.type;
- }
- // description
- if (fieldMetaData.description) {
- field['description'] = fieldMetaData.description;
- }
- // format
- if (fieldMetaData.format) {
- field['format'] = fieldMetaData.format;
- }
}
/**
diff --git a/discovery-frontend/src/app/data-storage/data-source-list/detail-data-source/column-detail-data-source/edit-config-schema/edit-config-schema.component.html b/discovery-frontend/src/app/data-storage/data-source-list/detail-data-source/column-detail-data-source/edit-config-schema/edit-config-schema.component.html
index a035845b0b..d3cdcad541 100644
--- a/discovery-frontend/src/app/data-storage/data-source-list/detail-data-source/column-detail-data-source/edit-config-schema/edit-config-schema.component.html
+++ b/discovery-frontend/src/app/data-storage/data-source-list/detail-data-source/column-detail-data-source/edit-config-schema/edit-config-schema.component.html
@@ -27,7 +27,105 @@
-
-
+
-
- {{(column.role === 'MEASURE' ? 'msg.comm.name.mea' : 'msg.comm.name.dim') | translate}}
+
+ {{(column.role === fieldRole.MEASURE ? 'msg.comm.name.mea' : 'msg.comm.name.dim') | translate}}
|
@@ -85,25 +183,25 @@
+ [(ngModel)]="column.logicalName">
|
+ (clickOutside)="column['isShowTypeList'] = false"
+ (click)="onChangeTypeListShowFlag(column)"
+ [class.ddp-selected]="column['isShowTypeList']">
- {{column.role.toString() === 'TIMESTAMP' ? ('msg.storage.ui.list.timestamp' | translate) : getSelectedLogicalTypeLabel(column)}}
-
+ {{column.role === fieldRole.TIMESTAMP ? ('msg.storage.ui.list.timestamp' | translate) : getSelectedLogicalTypeLabel(column)}}
+
|