http://git-wip-us.apache.org/repos/asf/asterixdb/blob/a7e8dbe3/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/metadata/indexes-collection/indexes.component.ts ---------------------------------------------------------------------- diff --git a/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/metadata/indexes-collection/indexes.component.ts b/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/metadata/indexes-collection/indexes.component.ts deleted file mode 100755 index 2913470..0000000 --- a/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/metadata/indexes-collection/indexes.component.ts +++ /dev/null @@ -1,230 +0,0 @@ -/* -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ -import { Component, Inject, Input } from '@angular/core'; -import { Index } from '../../../shared/models/asterixDB.model' -import { Store } from '@ngrx/store'; -import { Observable } from 'rxjs/Observable'; -import * as indexActions from '../../../shared/actions/index.actions' -import { ElementRef, ViewChild} from '@angular/core'; -import {DataSource} from '@angular/cdk/collections'; -import {BehaviorSubject} from 'rxjs/BehaviorSubject'; -import 'rxjs/add/operator/startWith'; -import 'rxjs/add/observable/merge'; -import 'rxjs/add/operator/map'; -import 'rxjs/add/operator/debounceTime'; -import 'rxjs/add/operator/distinctUntilChanged'; -import 'rxjs/add/observable/fromEvent'; -import { Subscription } from "rxjs/Rx"; -import { State } from '../../../shared/reducers/index.reducer'; -import { MatPaginator } from '@angular/material'; -import { SelectionModel } from '@angular/cdk/collections'; -import { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material'; - -/** - * Root component - * Defines our application's layout - */ -@Component({ - selector: 'awc-indexes', - templateUrl: 'indexes.component.html', - styleUrls: ['indexes.component.scss'] -}) - -export class IndexCollection { - displayedColumns = "['dataverseName', 'datasetName', 'indexName', 'indexStructure', 'isPrimary', 'timestamp', 'pendingOp']" - /* - dataverseName: string; - datasetName: string; - indexName: string; - indexStructure: string; - searchKey: string[]; - isPrimary: boolean; - timestamp: string; - pendingOp: string; - */ - indexName: string; - dataSource: IndexDataSource | null; - loaded$: Observable<any>; - @Input('message') errorMessage: string = "" - - idxName = ""; - - constructor(private store: Store<any>, public dialog: MatDialog) { - this.loaded$ = this.store.select('index'); - // Watching the name of the latest create index - this.store.select(s => s.index.createIndexName).subscribe((data: any) => { - this.idxName = data; - }) - - // Watching the name of the latest drop index - this.store.select(s => s.index.dropIndexName).subscribe((data: any) => { - this.idxName = data; - }) - - // Watching for the if there is a change in the collection - this.store.select(s => s.index.createIndexSuccess).subscribe((data: any) => { - if (data === true) { - this.getIndexes(); - this.errorMessage = "SUCCEED: CREATE INDEX " + this.idxName; - } - }) - - // Watching for the if there is a error in a create index operation - this.store.select(s => s.index.createIndexError).subscribe((data: any) => { - if (data.errors) { - this.errorMessage = "ERROR: " + data.errors[0].msg; - } - }) - - // Watching for the success message in a drop index operation - this.store.select(s => s.index.dropIndexSuccess).subscribe((data: any) => { - if (data === true) { - this.getIndexes(); - this.errorMessage = "SUCCEED: DROP INDEX " + this.idxName; - } - }) - - // Watching for the if there is a error in a drop index operation - this.store.select(s => s.index.dropIndexError).subscribe((data: any) => { - if (data.errors) { - this.errorMessage = "ERROR: " + data.errors[0].msg; - } - }) - } - - getIndexes() { - // Triggers the effect to refresg the indexes - this.store.dispatch(new indexActions.SelectIndexes('-')); - } - - ngOnInit() { - // Assign the datasource for the table - this.dataSource = new IndexDataSource(this.store); - } - - /* - * opens the create index dialog - */ - openCreateIndexDialog(): void { - let dialogRef = this.dialog.open(DialogCreateIndex, { - width: '420px', - data: { name: this.indexName } - }); - - dialogRef.afterClosed().subscribe(result => { - this.indexName = result; - }); - } - - - /* - * opens the drop index dialog - */ - openDropIndexDialog(): void { - let dialogRef = this.dialog.open(DialogDropIndex, { - width: '420px', - data: { name: this.indexName } - }); - - dialogRef.afterClosed().subscribe(result => { - this.indexName = result; - }); - } - - /* - * Clean up the error message on the screen - */ - onClick(): void { - this.errorMessage = ""; - } - - /* Showing all the index metadata information */ - output: any; - - highlight(row){ - this.output = JSON.stringify(row, null, 2); - } - - @ViewChild('querymetadata') inputQuery; - - /* Cleans up error message */ - cleanUp() { - this.errorMessage = ""; - // Cascading - this.inputQuery.cleanUp(); - } -} - -@Component({ - selector: 'index-create-dialog', - templateUrl: 'index-create-dialog.component.html', - styleUrls: ['index-create-dialog.component.scss'] -}) - -export class DialogCreateIndex { - constructor( private store: Store<any>, - public dialogCreateIdxRef: MatDialogRef<DialogCreateIndex>, - @Inject(MAT_DIALOG_DATA) public data: any) { } - - onClick(): void { - this.store.dispatch(new indexActions.CreateIndex(this.data.indexName)); - this.dialogCreateIdxRef.close(); - } - - onNoClick(): void { - this.dialogCreateIdxRef.close(); - } -} - -@Component({ - selector: 'index-drop-dialog', - templateUrl: 'index-drop-dialog.component.html', - styleUrls: ['index-drop-dialog.component.scss'] -}) - -export class DialogDropIndex { - constructor( private store: Store<any>, - public dialogDropIdxRef: MatDialogRef<DialogDropIndex>, - @Inject(MAT_DIALOG_DATA) public data: any) { } - - onClick(): void { - console.log(this.data.indexName) - this.store.dispatch(new indexActions.DropIndex(this.data.indexName)); - this.dialogDropIdxRef.close(); - } - - onNoClick(): void { - this.dialogDropIdxRef.close(); - } -} - -export class IndexDataSource extends DataSource<any> { - private indexes$: Observable<any> - - constructor(private store: Store<any>) { - super(); - this.indexes$ = this.store.select(s => s.index.indexes.results); - } - - /** Connect function called by the table to retrieve one stream containing the data to render. */ - connect(): Observable<Index[]> { - const displayDataChanges = [ - this.indexes$, - ]; - - return this.indexes$; - } - - disconnect() {} -}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/a7e8dbe3/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/metadata/input-metadata.component.html ---------------------------------------------------------------------- diff --git a/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/metadata/input-metadata.component.html b/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/metadata/input-metadata.component.html deleted file mode 100755 index 939ab06..0000000 --- a/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/metadata/input-metadata.component.html +++ /dev/null @@ -1,31 +0,0 @@ -<!--/* -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ --> -<mat-card class="input-card" (click)="onClick()"> - <mat-toolbar color="primary" class="input-selector"> - <mat-icon class="toolbar-icon">menu</mat-icon> - <span>INPUT: SQL++</span> - <span class="spacer"></span> - </mat-toolbar> - <mat-card-content class="content-area"> - <div class="codemirror-container"> - <codemirror-metadata class="code" [(ngModel)]="queryMetadataString" [config]="codemirrorMetadataConfig"> - </codemirror-metadata> - </div> - </mat-card-content> - <mat-card-actions class="actions"> - <button mat-button class="query-button" (click)="executeQuery()">RUN</button> - <span class="error-message">{{errorMessage}}</span> - <span class="spacer"></span> - </mat-card-actions> -</mat-card> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/asterixdb/blob/a7e8dbe3/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/metadata/input-metadata.component.scss ---------------------------------------------------------------------- diff --git a/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/metadata/input-metadata.component.scss b/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/metadata/input-metadata.component.scss deleted file mode 100755 index b98080c..0000000 --- a/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/metadata/input-metadata.component.scss +++ /dev/null @@ -1,78 +0,0 @@ -/* -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ -$query-spacing-unit: 8px; - -.input-card { - display: flex; - flex-flow: column; - padding: 0; - margin: 0 auto; - margin-top: $query-spacing-unit; - height: 250px; - width: 95%; - overflow: hidden; -} - -.toolbar-icon { - padding: 0 14px 0 0; - margin: 0; -} - -.spacer { - flex: 1 1 auto; -} - -.input-selector { - max-height: 42px; - min-height: 42px; - justify-content: center; - //align-items: center; - font-size: 0.80rem; - font-weight: 500; - background-color: white; - border: 1px solid rgba(54, 147, 209, 0.87); -} - -.content-area { - position: relative; - color: hsla(0,0%,0%,.87); - height: 120px; - padding: 0; - margin: $query-spacing-unit * 2; - overflow: none; -} - -.codemirror-container { - width: 100%; - height: 100%; - padding: 0; - margin: 0; - font-size: 14px; - line-height: 1.8; -} - -.actions { - border-top: 1px solid rgba(0, 0, 0, 0.1); - color: rgba(54, 147, 209, 0.87); - padding: $query-spacing-unit; - margin: 0; -} - -.error-message { - border-bottom: 1px solid rgba(0, 0, 0, 0.1); - color: rgba(209, 54, 54, 0.87); - padding-top: 10px; - padding-left: 20px; - text-overflow: ellipsis; -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/asterixdb/blob/a7e8dbe3/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/metadata/input-metadata.component.ts ---------------------------------------------------------------------- diff --git a/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/metadata/input-metadata.component.ts b/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/metadata/input-metadata.component.ts deleted file mode 100755 index 06b9375..0000000 --- a/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/metadata/input-metadata.component.ts +++ /dev/null @@ -1,111 +0,0 @@ -/* -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ -import { Component, ViewChild, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core'; -import { Observable } from 'rxjs/Observable'; -import { Store } from '@ngrx/store'; -import * as sqlQueryActions from '../../shared/actions/query.actions' -import * as dataverseActions from '../../shared/actions/dataverse.actions' -import * as datasetActions from '../../shared/actions/dataset.actions' -import * as datatypeActions from '../../shared/actions/datatype.actions' -import * as indexActions from '../../shared/actions/index.actions' - - -import * as CodeMirror from 'codemirror'; - -/* - * Query metadata component - * has editor (codemirror) for writing some query - */ -@Component({ - moduleId: module.id, - selector: 'awc-query-metadata', - templateUrl:'input-metadata.component.html', - styleUrls: ['input-metadata.component.scss'], -}) - -export class InputQueryMetadataComponent { - private dataverses$: Observable<any>; - private datatypes$: Observable<any>; - private datasets$: Observable<any>; - private indexes$: Observable<any>; - dataverses = []; - datatypes = []; - datasets = []; - indexes = []; - queryMetadataString: string = ""; - loaded$: Observable<any>; - errorMessage: string = ""; - - /** - * Initialize codemirror - */ - codemirrorMetadataConfig = { mode: "asterix", - //lineNumbers: true, - lineWrapping: true, - showCursorWhenSelecting: true, - autofocus: true - }; - - constructor(private store: Store<any>, private changeDetector: ChangeDetectorRef) { - this.store.select("sqlMetadataQuery").subscribe((data: any) => { - if (data.success === false){ - if (data.sqlQueryMetadataError.errors){ - this.errorMessage = "ERROR: " + data.sqlQueryMetadataError.errors[0].msg - this.changeDetector.detectChanges(); - } - } else { - this.errorMessage = "SUCCEED"; - - // Refresh the tables automatically - let stringQuery = data.sqlQueryMetadataString; - stringQuery = stringQuery.toUpperCase(); - - if (stringQuery.includes("CREATE DATAVERSE") || stringQuery.includes("DROP DATAVERSE") ){ - this.store.dispatch(new dataverseActions.SelectDataverses('-')); - } - else if (stringQuery.includes("CREATE DATASET") || stringQuery.includes("DROP DATASET")){ - this.store.dispatch(new datasetActions.SelectDatasets('-')); - } - else if (stringQuery.includes("CREATE TYPE") || stringQuery.includes("DROP TYPE")){ - this.store.dispatch(new datatypeActions.SelectDatatypes('-')); - } - else if (stringQuery.includes("CREATE INDEX") || stringQuery.includes("DROP INDEX")){ - this.store.dispatch(new indexActions.SelectIndexes('-')); - } - - this.changeDetector.detectChanges(); - } - - }) - } - - getQueryResults(queryMetadataString: string) { - this.store.dispatch(new sqlQueryActions.ExecuteMetadataQuery(queryMetadataString)); - } - - executeQuery() { - this.getQueryResults(this.queryMetadataString.replace(/\n/g, " ")); - // Component View Refresh - - } - - onClick() { - this.errorMessage = ""; - } - - /* Cleans up error message */ - cleanUp() { - this.errorMessage = ""; - } -} http://git-wip-us.apache.org/repos/asf/asterixdb/blob/a7e8dbe3/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/metadata/metadata-container.component.html ---------------------------------------------------------------------- diff --git a/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/metadata/metadata-container.component.html b/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/metadata/metadata-container.component.html deleted file mode 100755 index a2f3a73..0000000 --- a/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/metadata/metadata-container.component.html +++ /dev/null @@ -1,36 +0,0 @@ -<!--/* -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ --> -<mat-tab-group class="metadata-menu" (selectedTabChange)="tabChange()"> - <mat-tab label="DATAVERSES" class="submenu"> - <div class="dataverses"> - <awc-dataverses #dataverses [message]="message" class="dataverses"></awc-dataverses> - </div> - </mat-tab> - <mat-tab label="DATASETS"> - <div class="datasets"> - <awc-datasets #datasets [message]="message" class="datasets"></awc-datasets> - </div> - </mat-tab> - <mat-tab label="DATATYPES"> - <div class="datatypes"> - <awc-datatypes #datatypes [message]="message" class="datatypes"></awc-datatypes> - </div> - </mat-tab> - <mat-tab label="INDEXES" class="indexes"> - <div class="indexes"> - <awc-indexes #indexes [message]="message" class="indexes"></awc-indexes> - </div> - </mat-tab> -</mat-tab-group> - http://git-wip-us.apache.org/repos/asf/asterixdb/blob/a7e8dbe3/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/metadata/metadata-container.component.scss ---------------------------------------------------------------------- diff --git a/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/metadata/metadata-container.component.scss b/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/metadata/metadata-container.component.scss deleted file mode 100755 index 3857d74..0000000 --- a/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/metadata/metadata-container.component.scss +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - .dataverses { - margin: 0; - min-height: 750px; - max-height: 750px; - width: 100%; - overflow: hidden; - } - -.datasets { - margin: 0; - min-height: 750px; - max-height: 750px; - width: 100%; - overflow: hidden; -} - -.datatypes { - margin: 0; - min-height: 750px; - max-height: 750px; - width: 100%; - overflow: hidden; -} - -.indexes { - margin: 0; - min-height: 750px; - max-height: 750px; - width: 100%; - overflow: hidden; -} - -.metadata-menu { - /deep/ .mat-tab-label { - font-size: 0.80rem !important; - font-weight: 500 !important; - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/asterixdb/blob/a7e8dbe3/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/metadata/metadata-container.component.ts ---------------------------------------------------------------------- diff --git a/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/metadata/metadata-container.component.ts b/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/metadata/metadata-container.component.ts deleted file mode 100755 index c8382cf..0000000 --- a/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/metadata/metadata-container.component.ts +++ /dev/null @@ -1,41 +0,0 @@ -/* -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ -import { Component, ViewChild } from '@angular/core'; - -@Component({ - moduleId: module.id, - selector: 'awc-metadata-container', - templateUrl: 'metadata-container.component.html', - styleUrls: ['metadata-container.component.scss'] -}) - -export class MetadataContainerComponent { - - @ViewChild('dataverses') dataverses ; - @ViewChild('datasets') datasets ; - @ViewChild('datatypes') datatypes ; - @ViewChild('indexes') indexes ; - message = ""; - - constructor() {} - - tabChange() { - this.indexes.cleanUp(); - this.datasets.cleanUp(); - this.datatypes.cleanUp(); - this.dataverses.cleanUp(); - } - - -} http://git-wip-us.apache.org/repos/asf/asterixdb/blob/a7e8dbe3/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/query/codemirror.component.scss ---------------------------------------------------------------------- diff --git a/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/query/codemirror.component.scss b/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/query/codemirror.component.scss deleted file mode 100755 index ba795c2..0000000 --- a/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/query/codemirror.component.scss +++ /dev/null @@ -1,23 +0,0 @@ -/* -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ -/* -- Place holder for future expansion --> */ -code { - width: 100%; - height: 100%; - padding: 10%; - margin: 0; - overflow-wrap: break-word; - word-break: break-all; - background-color: pink; -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/asterixdb/blob/a7e8dbe3/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/query/codemirror.component.ts ---------------------------------------------------------------------- diff --git a/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/query/codemirror.component.ts b/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/query/codemirror.component.ts deleted file mode 100755 index 91b711d..0000000 --- a/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/query/codemirror.component.ts +++ /dev/null @@ -1,237 +0,0 @@ -/* -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ -/** - * Integrating codemirror (using ng2-codemirror) with our application - * - * component from "https://runkit.com/npm/ng2-codemirror" - * "https://www.npmjs.com/package/ng2-codemirror" - * copy component from /src/codemirror.component.ts - * and modified for custom mode (asterix aql, sql++ code hilighting) - * - * therefore, actually we don't need to "npm install ng2-codemirror" - * - * Because on the outside of this component, - * It was hard to access the codemirror instance that 'ng-codemirror' use - * So, we copied the component in our application and modified it - * - * 'codemirror.js(^5.23.0)' is included in the 'index.html' - * And in this component(codemirror.component.ts) - * add statement like "declare var CodeMirror: any;" - * - * I don't know whether this is right way - * - * ref 1) usage : https://embed.plnkr.co/8e9gxss9u10VeFrv29Zt/ - * ref 2) custom mode : http://jsfiddle.net/TcqAf/99/ - * ref 3) integrating : http://stackoverflow.com/questions/37092142/integrating-codemirror-with-angular2-typescript - * ref 3) integrating : https://medium.com/@s_eschweiler/using-external-libraries-with-angular-2-87e06db8e5d1#.8ok74uvwg - */ - import { - Component, - Input, - Output, - ElementRef, - ViewChild, - EventEmitter, - forwardRef, - AfterViewInit, - OnDestroy - } from '@angular/core'; - import { NG_VALUE_ACCESSOR } from '@angular/forms'; - import * as CodeMirror from 'codemirror'; - -/** - * CodeMirror component - * Usage : - * <codemirror [(ngModel)]="data" [config]="{...}"></codemirror> - */ -@Component({ - moduleId: module.id, - selector: 'codemirror', - providers: [ - { - provide: NG_VALUE_ACCESSOR, - useExisting: forwardRef(() => CodemirrorComponent), - multi: true - } - ], - styleUrls: ['codemirror.component.scss'], - template: `<textarea class="code" #host></textarea>`,//, -}) - -export class CodemirrorComponent implements AfterViewInit, OnDestroy { - @Input() config; - @Output() change = new EventEmitter(); - @Output() focus = new EventEmitter(); - @Output() blur = new EventEmitter(); - @Output() instance = null; - @ViewChild('host') host; - _value = ''; - - /** - * Constructor - */ - constructor(){ - /** - * Custom mode for AsterixDB - */ - CodeMirror.defineMode("asterix", function(){ - var KEYWORD_MATCH = [ - // AQL - "drop", "dataverse", "dataset", - "if", "exists", "create", - "use", "type", "as", "closed", - "primary", "key", "hints", "cardinality", - "index", "on", "btree", "rtree", "keyword", - "for", "in", "Metadata", "Dataset", - "return", "Index", "load", "using", "localfs", "path", "format", - // Query (not perfect) - "from", "in", "with", "group", "by", "select", - "let", "where", "order", "asc", "desc", "limit", - "keeping", "offset", "distinct", "or", "and", - // Built in functions (TODO) - // Built in functions (TODO) - // Built in functions (TODO) - // Asterix Data Model - // Primitive type - "boolean", - "tinyint", "smallint", "integer", "bigint", - "float", "double", - "string", - "binary", "hex", "base64", - "point", "line", "rectangle", "circle", "polygon", - "date", "time", "datetime", "duration", "interval", "uuid", - // Incomplete information type - "null", "missing", - // Derived type - // object {}, array [], multiset {{}} - // SQL++ - "DROP", "DATAVERSE", "IF", "EXISTS", "CREATE", "USE", "TYPE", "AS", "DATASET", "PRIMARY", "KEY", - "INDEX", "SELECT", "VALUE", "INSERT", "INTO", "FROM", "WHERE", "AND", "SOME", "IN", "SATISFIES", "IS", "UNKNOWN", "NOT", "EVERY", - "GROUP", "BY", "ORDER", "DESC", "LIMIT", "OR", "SET", "DELETE", "LOAD", "USING", - ]; - - //"(", ")","{{", "}}", "[", "]", "{", "}", ";", ",", ":","?", "=", - var VAR_MATCH = /[$][a-zA-Z]+(\d*)/; - var DOT_MATCH = /[.](\S)*/; - var DOUBLE_QUOTE_MATCH = /["].*["]/; - var SINGLE_QUOTE_MATCH = /['].*[']/; - var BREAK_POINT = /(\s)/; - - return { - startState: function() {return {inString: false};}, - token: function(stream, state) { - if (state.newLine == undefined)state.newLine = true; - - //match variable reference - if (stream.match(VAR_MATCH)) { - return "variable"; - } - - if (stream.match(DOT_MATCH)) { - return "dot-variable"; - } - - //string variable match - if (stream.match(DOUBLE_QUOTE_MATCH)) { - return "string"; - } - if (stream.match(SINGLE_QUOTE_MATCH)) { - return "string"; - } - - //keyword match - for (var i in KEYWORD_MATCH){ - if (state.newLine && stream.match(KEYWORD_MATCH[i])){ - return "keyword"; - } - } - - if (stream.peek() === " " || stream.peek() === null){ - state.newLine = true; - }else{ - state.newLine = false; - } - stream.next(); - return null; - } - }; - }); - } - - get value() { return this._value; }; - - @Input() set value(v) { - if (v !== this._value) { - this._value = v; - this.onChange(v); - } - } - - /** - * On component destroy - */ - ngOnDestroy() {} - - /** - * On component view init - */ - ngAfterViewInit() { - this.config = this.config || {}; - this.codemirrorInit(this.config); - } - - /** - * Initialize codemirror - */ - codemirrorInit(config){ - this.instance = CodeMirror.fromTextArea(this.host.nativeElement, config); - this.instance.setValue(this._value); - this.instance.setSize(null, 90); - this.instance.on('change', () => { - this.updateValue(this.instance.getValue()); - }); - - this.instance.on('focus', () => { - this.focus.emit(); - }); - - this.instance.on('blur', () => { - this.blur.emit(); - }); - } - - /** - * Value update process - */ - updateValue(value){ - this.value = value; - this.onTouched(); - this.change.emit(value); - } - - /** - * Implements ControlValueAccessor - */ - writeValue(value){ - this._value = value || ''; - if (this.instance) { - this.instance.setValue(this._value); - } - } - - onChange(_) {} - onTouched() {} - registerOnChange(fn){this.onChange = fn;} - registerOnTouched(fn){this.onTouched = fn;} -} http://git-wip-us.apache.org/repos/asf/asterixdb/blob/a7e8dbe3/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/query/input.component.html ---------------------------------------------------------------------- diff --git a/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/query/input.component.html b/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/query/input.component.html deleted file mode 100755 index 2eec6b7..0000000 --- a/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/query/input.component.html +++ /dev/null @@ -1,28 +0,0 @@ -<!--/* -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ --> -<mat-card class="input-card"> - <mat-toolbar color="primary" class="input-selector"> - <mat-icon class="toolbar-icon">menu</mat-icon> - <span>INPUT: SQL++</span> - <span class="spacer"></span> - </mat-toolbar> - <mat-card-content class="content-area"> - <div class="codemirror-container"> - <codemirror class="code" #host [(ngModel)]="queryString" [config]="codemirrorConfig"></codemirror> - </div> - </mat-card-content> - <mat-card-actions class="actions"> - <button mat-button class="query-button" (click)="onClick()">RUN</button> - </mat-card-actions> -</mat-card> http://git-wip-us.apache.org/repos/asf/asterixdb/blob/a7e8dbe3/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/query/input.component.scss ---------------------------------------------------------------------- diff --git a/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/query/input.component.scss b/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/query/input.component.scss deleted file mode 100755 index 437ff58..0000000 --- a/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/query/input.component.scss +++ /dev/null @@ -1,82 +0,0 @@ -/* -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ -$query-spacing-unit: 5px; - -.input-card { - display: flex; - flex-flow: column; - padding: 0; - margin: ($query-spacing-unit * 2); - height: 200px; - width: 100%; - min-height: 150px; - - //background-color: orange; -} - -.toolbar-icon { - padding: 0 14px 0 0; - margin: 0; -} - -.spacer { - flex: 1 1 auto; -} - -.input-selector { - max-height: 42px; - min-height: 42px; - justify-content: center; - //align-items: center; - font-size: 0.80rem; - font-weight: 500; - background-color: white; - border: 1px solid rgba(54, 147, 209, 0.87); -} - -.content-area { - //position: relative; - color: hsla(0,0%,0%,.87); - //height: 102px; - padding: 0; - margin: 0; - overflow: none; - } - -.codemirror-container { - width: 95%; - height: 98%; - padding: 0; // ($query-spacing-unit * 2); - margin: 0 auto; - font-size: 14px; - //letter-spacing: 3px; - line-height: 1.8; - background-color: red; -} - -//.code { -// width: 100%; -// height: 100%; -// padding: 0; -// margin: 0; -// overflow-wrap: break-word; -// word-break: break-all; -//} - -.actions { - border-top: 1px solid rgba(0, 0, 0, 0.1); - color: rgba(54, 147, 209, 0.87); - padding-left: $query-spacing-unit; - margin: 0; -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/asterixdb/blob/a7e8dbe3/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/query/input.component.ts ---------------------------------------------------------------------- diff --git a/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/query/input.component.ts b/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/query/input.component.ts deleted file mode 100755 index 9be9bd9..0000000 --- a/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/query/input.component.ts +++ /dev/null @@ -1,90 +0,0 @@ -/* -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ -import { Component, ViewChild } from '@angular/core'; -import { Observable } from 'rxjs/Observable'; -import { Store } from '@ngrx/store'; -import * as sqlQueryActions from '../../shared/actions/query.actions' -import * as CodeMirror from 'codemirror'; - -/* - * query component - * has editor (codemirror) for writing some query - */ -@Component({ - moduleId: module.id, - selector: 'awc-query', - templateUrl:'input.component.html', - styleUrls: ['input.component.scss'] -}) - -export class InputQueryComponent { - private guideSelectedDataset$: Observable<any>; - private dataverses$: Observable<any>; - private datatypes$: Observable<any>; - private datasets$: Observable<any>; - private indexes$: Observable<any>; - dataverses = []; - datatypes = []; - datasets = []; - indexes = []; - datasetName = ""; - dataverseName = ""; - queryString: string = "" - - /* Codemirror configuration - */ - codemirrorConfig = { mode: "asterix", - lineWrapping: true, - showCursorWhenSelecting: true, - autofocus: true - } ; - - loaded$: Observable<any> - - constructor(private store: Store<any>) { - // Watching for guide selected or clicked dataset - this.guideSelectedDataset$ = this.store.select(s => s.dataset.guideSelectsDataset); - this.guideSelectedDataset$.subscribe((data: any) => { - if (data) { - this.datasetName = data; - for (let i = 0; i < this.datasets.length; i++) { - if ( this.datasets[i]['DatasetName'] === this.datasetName ) { - this.dataverseName = this.datasets[i]['DataverseName']; - } - } - this.queryString = "USE " + this.dataverseName + "; SELECT * FROM " + this.datasetName; - } - }); - - // Watching for Datatypes - this.dataverses$ = this.store.select(s => s.dataverse.dataverses.results); - this.dataverses$.subscribe((data: any[]) => { - this.dataverses = data; - }); - - // Watching for Datasets - this.datasets$ = this.store.select(s => s.dataset.datasets.results); - this.datasets$.subscribe((data: any[]) => { - this.datasets = data; - }); - } - - getQueryResults(queryString: string) { - this.store.dispatch(new sqlQueryActions.ExecuteQuery(queryString)); - } - - onClick() { - this.getQueryResults(this.queryString.replace(/\n/g, " ")); - } -} http://git-wip-us.apache.org/repos/asf/asterixdb/blob/a7e8dbe3/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/query/metadata.component.html ---------------------------------------------------------------------- diff --git a/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/query/metadata.component.html b/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/query/metadata.component.html deleted file mode 100755 index 4641426..0000000 --- a/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/query/metadata.component.html +++ /dev/null @@ -1,44 +0,0 @@ -<!--/* -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ --> -<mat-card class="metadata-card"> - <mat-toolbar color="primary" class="metadata-selector"> - <mat-icon class="example-icon">menu</mat-icon> - <span>METADATA GUIDE</span> - <span class="spacer"></span> - </mat-toolbar> - <div class="metadata-content-area"> - <div class="metadata-tree"> - <div class="metadata-all"> - <p-tree [style]="{'width':'100%', 'border': 'none', 'font-family': 'Roboto Mono', 'font-size': '0.80rem', - 'font-weight': '500'}" selectionMode="single" [value]="nodesAll" (onNodeSelect)="nodeSelectAll($event)"></p-tree> - </div> - <div class="metadata-datasets"> - <p-tree [style]="{'width':'100%', 'border': 'none', 'font-family': 'Roboto Mono', 'font-size': '0.80rem', - 'font-weight': '500'}" selectionMode="single" [value]="nodesDatasets" (onNodeSelect)="nodeSelectDataset($event)"></p-tree> - </div> - <div class="metadata-datatypes"> - <p-tree [style]="{'width':'100%', 'border': 'none', 'font-family': 'Roboto Mono', 'font-size': '0.80rem', - 'font-weight': '500'}" selectionMode="single" [value]="nodesDatatypes"></p-tree> - </div> - <div class="metadata-index"> - <p-tree [style]="{'width':'100%', 'border': 'none', 'font-family': 'Roboto Mono', 'font-size': '0.80rem', - 'font-weight': '500'}" selectionMode="single" [value]="nodesIndexes"></p-tree> - </div> - - </div> - </div> - <!--<mat-card-actions class="actions"> - <button mat-button class="refresh-button" (click)="menuRefresh()">COLLAPSE</button> - </mat-card-actions> --> -</mat-card> http://git-wip-us.apache.org/repos/asf/asterixdb/blob/a7e8dbe3/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/query/metadata.component.scss ---------------------------------------------------------------------- diff --git a/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/query/metadata.component.scss b/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/query/metadata.component.scss deleted file mode 100755 index 4ee2339..0000000 --- a/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/query/metadata.component.scss +++ /dev/null @@ -1,97 +0,0 @@ -/* -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ -$metadata-spacing-unit: 5px; - -.metadata-card { - display: flex; - flex-flow: column; - padding: 0; - margin: 0 auto; //($metadata-spacing-unit * 2); - margin-top: ($metadata-spacing-unit * 2); - margin-bottom: ($metadata-spacing-unit * 2); - min-height: 150px; - box-shadow: none !important; - width: 92%; - overflow: hidden; -} - -.example-icon { - padding: 0 14px 0 0; - margin: 0; -} - -.spacer { - flex: 1 1 auto; -} - -.metadata-selector { - min-height: 42px; - max-height: 42px; - justify-content: center; - //align-items: center; - font-size: 0.80rem; - font-weight: 500; - background-color: white; - border: 1px solid rgba(54, 147, 209, 0.87); -} - -.metadata-content-area { - padding: ($metadata-spacing-unit * 2); - margin: 0; -} - -.metadata-tree { - min-height: 30px; - font-size: 0.80rem; - font-weight: 500; -} - -.metadata-datasets { - margin-top: ($metadata-spacing-unit * 2); - margin-bottom: ($metadata-spacing-unit * 2); -} - -.metadata-datatypes { - margin-top: ($metadata-spacing-unit * 2); - margin-bottom: ($metadata-spacing-unit * 2); -} - -.metadata-dataindexes { - margin-top: ($metadata-spacing-unit * 2); - margin-bottom: ($metadata-spacing-unit * 2); -} - - -.metadata-tree.ui-tree { - //width: 260px !important; - font-size: 0.80rem; - font-weight: 500; - border: none !important; - background-color: red; -} - -.refresh-button { - float: left; - margin-top: $metadata-spacing-unit; -} - -.actions { - border-top: 1px solid rgba(0, 0, 0, 0.1); - color: rgba(54, 147, 209, 0.87); - padding: $metadata-spacing-unit; - margin: 0; -} - - - http://git-wip-us.apache.org/repos/asf/asterixdb/blob/a7e8dbe3/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/query/metadata.component.ts ---------------------------------------------------------------------- diff --git a/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/query/metadata.component.ts b/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/query/metadata.component.ts deleted file mode 100755 index e60c9de..0000000 --- a/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/query/metadata.component.ts +++ /dev/null @@ -1,209 +0,0 @@ -/* -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ -import { Component, OnInit, ChangeDetectorRef } from '@angular/core'; -import { Router } from '@angular/router'; -import { Dataverse } from '../../shared/models/asterixDB.model'; -import { Store } from '@ngrx/store'; -import { Observable } from 'rxjs/Observable'; -import * as dataverseActions from '../../shared/actions/dataverse.actions'; -import * as datasetActions from '../../shared/actions/dataset.actions'; -import * as datatypesActions from '../../shared/actions/datatype.actions'; -import * as indexesActions from '../../shared/actions/index.actions'; -import * as metadataActions from '../../shared/actions/metadata.actions'; -import * as datasetsActions from '../../shared/actions/dataset.actions'; -import { ElementRef, ViewChild} from '@angular/core'; -import {DataSource} from '@angular/cdk/collections'; -import {BehaviorSubject} from 'rxjs/BehaviorSubject'; -import 'rxjs/add/operator/startWith'; -import 'rxjs/add/observable/merge'; -import 'rxjs/add/operator/map'; -import 'rxjs/add/operator/debounceTime'; -import 'rxjs/add/operator/distinctUntilChanged'; -import 'rxjs/add/observable/fromEvent'; -import { Subscription } from 'rxjs/Rx'; -import * as fromRoot from '../../shared/reducers/dataverse.reducer'; -import { State } from '../../shared/reducers/dataverse.reducer'; -import { TreeModule, TreeNode} from 'primeng/primeng'; - - -/** - * query component - * has editor (codemirror) for writing some query - */ -@Component({ - moduleId: module.id, - selector: 'awc-metadata', - templateUrl: 'metadata.component.html', - styleUrls: ['metadata.component.scss'] -}) - -export class MetadataComponent implements OnInit { - nodesAll = []; - nodesDatasets = []; - nodesDatatypes = []; - nodesIndexes = []; - - constructor(private store: Store<any>, private changeDetector: ChangeDetectorRef) {} - - ngOnInit(): void { - - // Watching for the metadata tree - this.store.select(s => s.metadata.tree).subscribe((data: any[]) => { - - this.nodesAll = []; - this.nodesDatasets = []; - this.nodesDatatypes = []; - this.nodesIndexes = []; - const indexesMenu = []; - const datatypesMenu = []; - const datasetsMenu = []; - const dataversesRoot = { label: '', children: []}; - dataversesRoot.label = 'DATAVERSES'; - dataversesRoot.children = []; - - for (let i = 0; i < data.length; i++) { - - // Don't want to show metadata system datasets, datatypes or indexes - // if (data[i]['DataverseName'] && data[i]['DataverseName'] !== "Metadata" ) - // { - // Counting dataverses to align the menu identifiers - const dataverse = { label: '', children: [] }; - dataverse.label = data[i]['DataverseName']; - dataversesRoot.children.push(dataverse); - - // Adding the datasets to correspondent dataverse - if (data[i]['Datasets'].length) { - const datasetRoot = { label: '', children: [] }; - datasetRoot.label = 'DATASETS'; - dataverse.children.push(datasetRoot); - for (let j = 0; j < data[i]['Datasets'].length; j++) { - const dataset = { label: '', children: [] }; - dataset.label = data[i]['Datasets'][j]['DatasetName']; - - // - // Adding the datatype to correspondent dataset - // - if (data[i]['Datasets'][j]['Datatype']) { - const datatypeRoot = { label: '', children: [] }; - datatypeRoot.label = 'Datatype: ' + data[i]['Datasets'][j]['Datatype']['DatatypeName']; - // - // Looking for the datatype fields - // - if (data[i]['Datasets'][j]['Datatype']['Derived']) { - if (data[i]['Datasets'][j]['Datatype']['Derived']['Record']) { - const datatypeFieldsRoot = { label: '', leaf: true, expanded: true, children: [] }; - datatypeFieldsRoot.label = 'FIELDS'; - for (let k = 0; k < data[i]['Datasets'][j]['Datatype']['Derived']['Record']['Fields'].length; k++) { - const datatypeField = { label: '', children: [] }; - datatypeField.label = data[i]['Datasets'][j]['Datatype']['Derived']['Record']['Fields'][k]['FieldName'] + ": " + data[i]['Datasets'][j]['Datatype']['Derived']['Record']['Fields'][k]['FieldType']; - datatypeFieldsRoot.children.push(datatypeField); - } - datatypeRoot.children.push(datatypeFieldsRoot); - - } - } - dataset.children.push(datatypeRoot); - - datatypeRoot.label = data[i]['Datasets'][j]['Datatype']['DatatypeName']; - datatypesMenu.push(datatypeRoot); - } - - // - // Adding the indexes to correspondent dataset - // - if (data[i]['Datasets'][j]['Indexes'].length) { - const indexRoot = { label: '', children: [] }; - indexRoot.label = 'INDEXES'; - - for (let k = 0; k < data[i]['Datasets'][j]['Indexes'].length; k++) { - const indexChild = { label: '', children: [] }; - indexChild.label = data[i]['Datasets'][j]['Indexes'][k]['IndexName']; - - // is Primary - const indexIsPrimaryRoot = { label: '', children: [] }; - indexIsPrimaryRoot.label = 'isPrimary' + ': ' + data[i]['Datasets'][j]['Indexes'][k]['IsPrimary']; - indexChild.children.push(indexIsPrimaryRoot); - - // SearchKey - if (data[i]['Datasets'][j]['Indexes'][k]['SearchKey']) { - const indexSearchKeyRoot = { label: '', children: [] }; - indexSearchKeyRoot.label = 'SEARCH KEY'; - for (let l = 0; l < data[i]['Datasets'][j]['Indexes'][k]['SearchKey'].length; l++) { - const indexsearchKeyField = { label: '', children: [] }; - indexsearchKeyField.label = data[i]['Datasets'][j]['Indexes'][k]['SearchKey'][l] - indexSearchKeyRoot.children.push(indexsearchKeyField); - } - - indexChild.children.push(indexSearchKeyRoot); - indexesMenu.push(indexChild); - } - - indexRoot.children.push(indexChild); - } - - dataset.children.push(indexRoot); - datasetRoot.children.push(dataset); - datasetsMenu.push(dataset); - } - } - } - // } - } - - this.nodesAll.push(dataversesRoot); - - /* - * Making the rest of the stand alone submenus - */ - - // Adding the DATASET stand alone submenu - const datasetMenuRoot = { label: '', children: [] }; - datasetMenuRoot.label = 'DATASETS'; - datasetMenuRoot.children = datasetsMenu; - this.nodesDatasets.push(datasetMenuRoot); - - // Adding the DATATYPES stand alone submenu - const datatypeMenuRoot = { label: '', children: [] }; - datatypeMenuRoot.label = 'DATATYPES'; - datatypeMenuRoot.children = datatypesMenu; - this.nodesDatatypes.push(datatypeMenuRoot); - - // Adding the DATATYPE stand alone submenu - const indexesMenuRoot = { label: '', children: [] }; - indexesMenuRoot.label = 'INDEXES'; - indexesMenuRoot.children = indexesMenu; - this.nodesIndexes.push(indexesMenuRoot); - - // Component View Refresh - this.changeDetector.detectChanges(); - }); - } - - /* - * UI helpers to select dataverses from the guide menu - */ - nodeSelectAll(event) { - if (event.node.parent && event.node.parent.label === 'DATASETS') { - const datasetName = event.node.label.replace(/-;-/g); - this.store.dispatch(new datasetsActions.GuideSelectDatasets(datasetName)); - } - } - - nodeSelectDataset(event) { - if (event.node.parent && event.node.parent.label === 'DATASETS') { - const datasetName = event.node.label.replace(/-;-/g); - this.store.dispatch(new datasetsActions.GuideSelectDatasets(datasetName)); - } - } -} http://git-wip-us.apache.org/repos/asf/asterixdb/blob/a7e8dbe3/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/query/ouput.component.ts ---------------------------------------------------------------------- diff --git a/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/query/ouput.component.ts b/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/query/ouput.component.ts deleted file mode 100755 index fcfc235..0000000 --- a/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/query/ouput.component.ts +++ /dev/null @@ -1,278 +0,0 @@ -/* -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ -import { Component, OnInit, ViewChild, AfterViewInit, ChangeDetectorRef, Pipe, PipeTransform } from '@angular/core'; -import { Observable } from 'rxjs/Observable'; -import { Store } from '@ngrx/store'; -import * as sqlQueryActions from '../../shared/actions/query.actions' -import { saveAs } from 'file-saver'; -import { DomSanitizer } from '@angular/platform-browser'; -import {TreeModule,TreeNode} from 'primeng/primeng'; - -/** - * query component - * has editor (codemirror) for writing some query - */ - -@Pipe({ name: 'safeHtml'}) -export class SafeHtmlPipe implements PipeTransform { - constructor(private sanitized: DomSanitizer) {} - transform(value) { - return this.sanitized.bypassSecurityTrustHtml(value); - } -} - -@Component({ - moduleId: module.id, - selector: 'awc-results', - templateUrl:'output.component.html', - styleUrls: ['output.component.scss'] -}) - - -export class QueryOutputComponent implements OnInit { - queryMessage: string; - treeData = []; - flattenData = []; - dataColumns = []; - query_message: string; - execution_time: number; - loaded$: Observable<any> - data: any[]; - loading: Boolean; - jsonOutput = ""; - selectedOutputView = "NONE"; - outputQueryString = ""; - toogleExpand = "EXPAND TREE" - - /* Codemirror configuration */ - codemirrorConfig = { mode: "asterix", - lineWrapping: true, - showCursorWhenSelecting: true - }; - - generateTreeMenu(node, rootMenu): any { - - // Check in case the root object is not defined properly - if (rootMenu === undefined) { - rootMenu = { label: '', children: []}; - } - - let nodeArray = []; - - // Going through all the keys in a node looking for objects or array of key values - // and create a sub menu if is an object. - Object.keys(node).map((k) => { - - if (typeof node[k] === 'object') { - let nodeObject = { label: '', children: []}; - nodeObject = { label: '', children: []}; - nodeObject.label = k; - // if this is an object then a new node is created and - // recursive call to find and fill with the nested elements - let newNodeObject = this.generateTreeMenu(node[k], nodeObject); - - // if this is the first node, then will become the root. - if (rootMenu.children) { - rootMenu.children.push(newNodeObject) - } else { - rootMenu = newNodeObject - } - } - else { - // Array of key values converted into a unique string with a : separator - let nodeKeyValue = { label: '', children: []}; - nodeKeyValue.label = k + " : " + node[k] - nodeArray.push(nodeKeyValue); - } - }) - - // The array will be added as value to a parent key. - if (nodeArray.length > 0) { - rootMenu.children = nodeArray.concat(rootMenu.children) - } - - return rootMenu - } - - constructor(private store: Store<any>, private changeDetector: ChangeDetectorRef) { - this.loaded$ = this.store.select(s => s.sqlQuery.loaded); - this.store.select("sqlQuery").subscribe((data: any) => { - // Set the output toolbar query string and default view settings - if (data.loaded) { - this.selectedOutputView = "TABLE"; - this.loading = true; - this.data = data.sqlQueryResult.results; - this.treeData = []; - let stringQuery = data.sqlQueryString; - - // Preparing the toolbar - if (stringQuery.length > 150) { - this.outputQueryString = ": " + stringQuery.slice(0, 150) + " (..)" - } else { - this.outputQueryString = ": " + stringQuery; - } - - // Processing the results - if (data.sqlQueryResult.results && data.sqlQueryResult.results.length > 0 && this.data[0]) { - - /* Removing the root object, disabled for the time being - var resultKeyList = Object.keys(this.data[0]); - var resultKey: string = resultKeyList[0]; - */ - - for (let i = 0; i < this.data.length; i++) { - - /* Removing the root object, disabled for the time being - if (this.data[i][resultKey] instanceof Object) { - this.data[i] = this.data[i][resultKey]; - }*/ - - let nodeContent = { label:"[" + i + "]" , children: []}; - this.treeData.push(this.generateTreeMenu(this.data[i], nodeContent)) - } - - this.loading = false; - } - - // JSON OUTPUT - // Making into a JSON String for JSON String Output - this.jsonOutput = JSON.stringify(data.sqlQueryResult.results, null, 2) - - // TABLE OUTPUT - if (this.data && this.data.length > 0) { - - this.collapseAll(); - // Normalize the data ( removing the first key if is an object ) - // TODO: Move it into a recursive function. - this.dataColumns = []; - - var resultKeyList = Object.keys(this.data[0]); - var resultKey: string = resultKeyList[0]; - if (this.data[0][resultKey] instanceof Object) { - // is a SQL++ Query Results - var nestedKeyList = Object.keys(this.data[0][resultKey]); - for (let i = 0; i < nestedKeyList.length; i++) { - if (typeof this.data[0][resultKey][nestedKeyList[i]] === 'object') { - // Creating a key to display a nested type - this.dataColumns.push({field: 'nestedString' + i, header: nestedKeyList[i]}) - - } else { - this.dataColumns.push({field: nestedKeyList[i], header: nestedKeyList[i] }) - } - - } - } - else { // is a SQL++ Metadata Results and there is an Array - for (let i = 0; i < resultKeyList.length; i++) { - this.dataColumns.push({field: resultKeyList[i], header: resultKeyList[i] }) - } - } - - // Now prepare the data ( SQL++ Query, Metatada Queries no need to change anything ). - // TODO: Move it into a recursive function. - if (this.data[0][resultKey] instanceof Object) { - // is a SQL++ Query Results - for (let i = 0; i < this.data.length; i++) { - - // // is a SQL++ Query Results - var nestedKeyList = Object.keys(this.data[i][resultKey]); - for (let k = 0; k < nestedKeyList.length; k++) { - if ( typeof this.data[i][resultKey][nestedKeyList[k]] === 'object' ){ - // Creating a display value to for a nested type JSON.stringify(jsObj, - var nestedObjectStr = JSON.stringify(this.data[i][resultKey][nestedKeyList[k]], null, '\n'); - var nestedKey = 'nestedString' + k; - this.data[i][resultKey][nestedKey] = nestedObjectStr; - } - } - - this.data[i] = this.data[i][resultKey]; - } - } - } - } - }); - } - - /* - * Subscribing to store values - */ - ngOnInit(): void { - this.loaded$ = this.store.select('sqlQuery'); - this.store.select("sqlQuery").subscribe((data: any) => { - if (data.sqlQueryError.errors){ - this.queryMessage = data.sqlQueryError.errors[0].msg - }else{ - this.queryMessage = "" - } - }) - } - - /* - * Changes view mode [ TABLE, TREE, JSON VIEW ] - */ - onSelect(value: any) { - this.selectedOutputView = value; - } - - /* - * Export to CSV - */ - exportToCSV(){ - var blob = new Blob([this.jsonOutput], {type: "text/csv;charset=utf-8"}); - saveAs(blob, "Asterix-results.csv"); - } - - /* - * Export to plain text - */ - exportToText(){ - var exportOutput = this.jsonOutput; - var blob = new Blob([exportOutput], {type: "text/plain;charset=utf-8"}); - saveAs(blob, "Asterix-results.txt"); - } - - /* - * Expand/Collapse Tree - */ - expandTree(){ - if (this.toogleExpand === "EXPAND TREE"){ - this.expandAll(); - } else { - this.collapseAll(); - } - } - - expandAll(){ - this.toogleExpand = "TREE COLLAPSE"; - this.treeData.forEach( node => { - this.expandRecursive(node, true); - } ); - } - - collapseAll(){ - this.toogleExpand = "EXPAND TREE"; - this.treeData.forEach( node => { - this.expandRecursive(node, false); - } ); - } - - private expandRecursive(node:TreeNode, isExpand:boolean){ - node.expanded = isExpand; - if(node.children){ - node.children.forEach( childNode => { - this.expandRecursive(childNode, isExpand); - } ); - } - } -} http://git-wip-us.apache.org/repos/asf/asterixdb/blob/a7e8dbe3/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/query/output.component.html ---------------------------------------------------------------------- diff --git a/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/query/output.component.html b/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/query/output.component.html deleted file mode 100755 index f7c4b43..0000000 --- a/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/query/output.component.html +++ /dev/null @@ -1,68 +0,0 @@ -<!--/* -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ --> -<mat-card class="sql-results-card"> - <mat-toolbar color="primary" class="results-selector"> - <mat-icon class="toolbar-icon">menu</mat-icon> - <span class="output-query-string">OUTPUT{{outputQueryString}}</span> - <span class="spacer"></span> - </mat-toolbar> - <mat-card-content class="content-area"> - <div *ngIf="loaded$ | async as ld"> - <div *ngIf="selectedOutputView=='TABLE'"> - <p-dataTable [style]="{'width':'100%', 'overflow':'hidden'}" id='review-table' [responsive]="true" [hidden]="loading" [value]="data" [rows]="20" [paginator]="true" [pageLinks]="3" [rowsPerPageOptions]="[5,10,20, 30, 40, 50]" > - <p-column [style]="{'text-align':'left', - 'text-overflow': 'ellipsis', 'word-wrap': 'break-word', 'word-break': 'break-all'}" - - [footerStyle]="{'color':'blue'}" [headerStyleClass]="datatable-header" *ngFor="let node of dataColumns;" [field]="node.field" - [header]="node.header" [sortable]="true"> - </p-column> - </p-dataTable> - </div> - </div> - <div *ngIf="loaded$ | async as ld"> - <div *ngIf="ld.sqlQueryError.metrics" class="queryErrorMessage"> - <span>ERROR:</span> - <span>{{queryMessage}}</span> - </div> - <div [hidden]="selectedOutputView!='TREE'" class="data-viewer-container"> - <button mat-button class="button-expand" (click)="expandTree()">{{toogleExpand}}</button> - <p-tree [style]="{'width':'100%', 'border': 'none', 'font-family': 'Roboto Mono', 'font-size': '0.80rem', - 'font-weight': '500'}" [value]="treeData"></p-tree> - </div> - <div *ngIf="loaded$ | async as ld"> - <div *ngIf="selectedOutputView=='JSON'" class="data-viewer-container"> - <button mat-button class="button-export" (click)="exportToText()">EXPORT</button> - <pre class="json-output">{{jsonOutput}}</pre> - </div> - </div> - </div> - </mat-card-content> - <mat-card-actions class="actions"> - <div *ngIf="loaded$ | async as ld"> - <span *ngIf="ld.sqlQueryResult.metrics" class="metrics"> - <span class="span-results">SUCCESS:</span> - <span class="span-results">Count: {{ld.sqlQueryResult.metrics.resultCount}}</span> - <span class="span-results">Size: {{ld.sqlQueryResult.metrics.resultSize}}</span> - <span class="span-results">Elapsed time: {{ld.sqlQueryResult.metrics.elapsedTime}}</span> - <span class="span-results">Execution time: {{ld.sqlQueryResult.metrics.executionTime}}</span> - <span class="spacer"></span> - <mat-button-toggle-group #group="matButtonToggleGroup" class="output-group" value={{selectedOutput}} (change)="onSelect(group.value)"> - <mat-button-toggle mat-button value="TABLE">TABLE</mat-button-toggle> - <mat-button-toggle mat-button value="TREE">TREE</mat-button-toggle> - <mat-button-toggle mat-button value="JSON">JSON</mat-button-toggle> - </mat-button-toggle-group> - </span> - </div> - </mat-card-actions> -</mat-card> http://git-wip-us.apache.org/repos/asf/asterixdb/blob/a7e8dbe3/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/query/output.component.scss ---------------------------------------------------------------------- diff --git a/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/query/output.component.scss b/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/query/output.component.scss deleted file mode 100755 index 099ca87..0000000 --- a/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/query/output.component.scss +++ /dev/null @@ -1,169 +0,0 @@ -/* -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ -$results-spacing-unit: 5px; - -.sql-results-card { - display: flex; - flex-flow: column; - padding: 0; - height: 600px; - width: 100%; // 1350px; - margin: ($results-spacing-unit * 2); - min-height: 150px; -} - -.toolbar-icon { - padding: 0 14px 0 0; - margin: 0; -} - -.spacer { - flex: 1 1 auto; -} - -.results-selector { - max-height: 42px; - min-height: 42px; - justify-content: center; - text-overflow: ellipsis; - white-space: nowrap; - overflow: hidden; - font-size: 0.80rem; - font-weight: 500; - background-color: white; - border: 1px solid rgba(54, 147, 209, 0.87); - overflow-wrap: break-word; - word-break: break-all; -} - -.content-area { - position: relative; - color: hsla(0,0%,0%,.87); - height: 500px; - padding: 0; - margin: 0; - overflow: auto; - font-size: 0.80rem; - font-weight: 500; - font-family: "Roboto", monospace; -} - -.root-closed { - list-style-type:none; -} - -.root-open { - list-style-type:none; -} - -.leaf-list-open { - list-style-type:none; - // padding-top: ($results-spacing-unit) * 2; - padding-left: 25px; - color: red; -} - -.leaf-list-open.div -//.leaf-list-open.ul -.leaf-list-open.li { - margin-left: ($results-spacing-unit * 10) !important; - color: green; -} - -.leaf { - color: blue; -} - -.leaf-list-closed { - list-style-type:none; - display: none; -} - -ul > .root-closed::before { - content:'+' -} - -ul > .root-open::before { - content:'-' -} - -.queryErrorMessage { - border-bottom: 1px solid rgba(0, 0, 0, 0.1); - color: rgba(209, 54, 54, 0.87); - padding: $results-spacing-unit; - padding-left: ($results-spacing-unit * 2); -} - -.metrics { - display: flex; - color: rgba(54, 147, 209, 0.87); - font-size: 0.80rem; - font-weight: 500; -} - -.span-results { - padding-top: ($results-spacing-unit * 2); - padding-left: ($results-spacing-unit * 2); -} - -.actions { - border-top: 1px solid rgba(0, 0, 0, 0.1); - color: rgba(54, 147, 209, 0.87); - margin: 0; -} - -//someID\:review-table -th { - text-align: left !important; -} - -.datatable-header { - color: red !important; - background-color: blue; -} - -.data-viewer-container { - padding: ($results-spacing-unit * 4); - padding-bottom: ($results-spacing-unit * 8); - height: 100%; - overflow: hidden; -} - -.output-group { - margin-right: ($results-spacing-unit * 4); -} - -.menu-export { - font-size: 0.80rem !important; - font-weight: 500 !important; -} - -.button-export { - margin-right: ($results-spacing-unit * 4); - color: rgba(54, 147, 209, 0.87); -} - -.button-expand { - margin-right: ($results-spacing-unit * 4); - color: rgba(54, 147, 209, 0.87); -} - -.ui-datatable-data> tr> td { - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - max-width: 150px; - color: red; -} - http://git-wip-us.apache.org/repos/asf/asterixdb/blob/a7e8dbe3/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/query/query-container.component.html ---------------------------------------------------------------------- diff --git a/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/query/query-container.component.html b/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/query/query-container.component.html deleted file mode 100755 index 6dd3ef3..0000000 --- a/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/query/query-container.component.html +++ /dev/null @@ -1,24 +0,0 @@ -<!--/* -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ --> - -<div class="query-container"> - <div class="metadata"> - <awc-metadata class="metadata-card"></awc-metadata> - </div> - <div class="vertical"> - <awc-query class="query-card"></awc-query> - <awc-results class="output-card"></awc-results> - </div> -</div> - http://git-wip-us.apache.org/repos/asf/asterixdb/blob/a7e8dbe3/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/query/query-container.component.scss ---------------------------------------------------------------------- diff --git a/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/query/query-container.component.scss b/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/query/query-container.component.scss deleted file mode 100755 index d6b530b..0000000 --- a/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/query/query-container.component.scss +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - .query-container { - display: flex; - flex-direction: row; - //background-color: red; - width: 100%; - margin:0; - padding:0; - overflow: hidden; - } - -.metadata { - display: flex; - flex-direction: row; - width: 20%; - // background-color: rgb(0, 255, 42); - margin:0; - padding: 0; - // padding-right: 10px; - border-right: 1px solid hsla(0,0%,0%,.20); -} - -.vertical { - display: flex; - flex-direction: column; - align-items: center; - width: 80%; - overflow: hidden; - margin:0; - padding: 1px0; - // background-color: rgb(38, 0, 255); -} - -.metadata-card { - display: flex; - flex-direction: row; - justify-content: center; - width: 100%; - overflow: hidden; - margin:0; - padding: 0; - // background-color: green; -} - -.query-card { - display: flex; - flex-direction: row; - justify-content: center; - width: 100%; - overflow: hidden; - margin:0; - padding: 0; - //background-color: green; -} - -.output-card { - display: flex; - flex-direction: row; - justify-content: center; - width: 100%; - overflow: hidden; - margin:0; - padding: 0; - //background-color: yellow; -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/asterixdb/blob/a7e8dbe3/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/query/query-container.component.ts ---------------------------------------------------------------------- diff --git a/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/query/query-container.component.ts b/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/query/query-container.component.ts deleted file mode 100755 index 776e184..0000000 --- a/asterixdb/asterix-app/src/main/resources/dashboard/src/app/dashboard/query/query-container.component.ts +++ /dev/null @@ -1,74 +0,0 @@ -/* -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ -import { Component, OnInit } from '@angular/core'; -import { Router } from '@angular/router'; -import { Dataverse } from '../../shared/models/asterixDB.model' -import { Store } from '@ngrx/store'; -import { Observable } from 'rxjs/Observable'; -import * as dataverseActions from '../../shared/actions/dataverse.actions' -import * as datasetActions from '../../shared/actions/dataset.actions' -import * as datatypesActions from '../../shared/actions/datatype.actions' -import * as indexesActions from '../../shared/actions/index.actions' -import * as metadataActions from '../../shared/actions/metadata.actions' -import { ElementRef, ViewChild} from '@angular/core'; -import {DataSource} from '@angular/cdk/collections'; -import {BehaviorSubject} from 'rxjs/BehaviorSubject'; -import 'rxjs/add/operator/startWith'; -import 'rxjs/add/observable/merge'; -import 'rxjs/add/operator/map'; -import 'rxjs/add/operator/debounceTime'; -import 'rxjs/add/operator/distinctUntilChanged'; -import 'rxjs/add/observable/fromEvent'; -import { Subscription } from "rxjs/Rx"; -import * as fromRoot from '../../shared/reducers/dataverse.reducer'; -import { State } from '../../shared/reducers/dataverse.reducer'; -import * as sqlQueryActions from '../../shared/actions/query.actions' -/* - * query component - * has editor (codemirror) for writing some query - */ -@Component({ - moduleId: module.id, - selector: 'awc-query-container', - templateUrl:'query-container.component.html', - styleUrls: ['query-container.component.scss'] -}) - -export class QueryContainerComponent { - nodes = [] - constructor(private store: Store<any>) { - - this.store.select(s => s.metadata.tree).subscribe((data: any[]) => { - this.nodes = [] - for (let i = 0; i < data.length; i++) { - if (data[i]['DataverseName']) { - let node = { id: 0, name:"", children:[] }; - node.id = i; - node.name = data[i]['DataverseName']; - for (let j = 0; j < data[i]['Datasets'].length; j++) { - let children = { id: 0, name:"", children:[] }; - children.id = j - children.name = data[i]['Datasets'][j]['DatasetName']; - node.children.push(children) - } - this.nodes.push(node) - } - } - }); - } - - treeCalc() { - this.store.dispatch(new metadataActions.UpdateMetadataTree()); - } -} http://git-wip-us.apache.org/repos/asf/asterixdb/blob/a7e8dbe3/asterixdb/asterix-app/src/main/resources/dashboard/src/app/db.ts ---------------------------------------------------------------------- diff --git a/asterixdb/asterix-app/src/main/resources/dashboard/src/app/db.ts b/asterixdb/asterix-app/src/main/resources/dashboard/src/app/db.ts deleted file mode 100755 index 8f51b00..0000000 --- a/asterixdb/asterix-app/src/main/resources/dashboard/src/app/db.ts +++ /dev/null @@ -1,23 +0,0 @@ -/* -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ -import { DBSchema } from '@ngrx/db'; - -/* -* Persistent storage capability to the dashboard in case is needed. -*/ -export const schema: DBSchema = { - version: 1, - name: 'asterixDB_app', - stores: {}, -}; http://git-wip-us.apache.org/repos/asf/asterixdb/blob/a7e8dbe3/asterixdb/asterix-app/src/main/resources/dashboard/src/app/material.module.ts ---------------------------------------------------------------------- diff --git a/asterixdb/asterix-app/src/main/resources/dashboard/src/app/material.module.ts b/asterixdb/asterix-app/src/main/resources/dashboard/src/app/material.module.ts deleted file mode 100755 index 3bb67d9..0000000 --- a/asterixdb/asterix-app/src/main/resources/dashboard/src/app/material.module.ts +++ /dev/null @@ -1,105 +0,0 @@ -/* -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ -import {NgModule} from '@angular/core'; -import { - MatAutocompleteModule, - MatButtonModule, - MatButtonToggleModule, - MatCardModule, - MatCheckboxModule, - MatChipsModule, - MatDatepickerModule, - MatDialogModule, - MatExpansionModule, - MatFormFieldModule, - MatGridListModule, - MatIconModule, - MatInputModule, - MatListModule, - MatMenuModule, - MatPaginatorModule, - MatProgressBarModule, - MatProgressSpinnerModule, - MatRadioModule, - MatSelectModule, - MatSidenavModule, - MatSliderModule, - MatSlideToggleModule, - MatSnackBarModule, - MatSortModule, - MatTableModule, - MatTabsModule, - MatToolbarModule, - MatTooltipModule, - MatStepperModule, -} from '@angular/material'; -import {MatNativeDateModule, MatRippleModule} from '@angular/material'; -import {CdkTableModule} from '@angular/cdk/table'; -//import {CdkAccordionModule} from '@angular/cdk/accordion'; -import {A11yModule} from '@angular/cdk/a11y'; -import {BidiModule} from '@angular/cdk/bidi'; -import {OverlayModule} from '@angular/cdk/overlay'; -import {PlatformModule} from '@angular/cdk/platform'; -import {ObserversModule} from '@angular/cdk/observers'; -import {PortalModule} from '@angular/cdk/portal'; - -/* -* NgModule that includes all Material modules that are required to -* serve AsterixDB Dashboard -*/ -@NgModule({ - exports: [ - MatAutocompleteModule, - MatButtonModule, - MatButtonToggleModule, - MatCardModule, - MatCheckboxModule, - MatChipsModule, - MatTableModule, - MatDatepickerModule, - MatDialogModule, - MatExpansionModule, - MatFormFieldModule, - MatGridListModule, - MatIconModule, - MatInputModule, - MatListModule, - MatMenuModule, - MatPaginatorModule, - MatProgressBarModule, - MatProgressSpinnerModule, - MatRadioModule, - MatRippleModule, - MatSelectModule, - MatSidenavModule, - MatSlideToggleModule, - MatSliderModule, - MatSnackBarModule, - MatSortModule, - MatStepperModule, - MatTabsModule, - MatToolbarModule, - MatTooltipModule, - MatNativeDateModule, - CdkTableModule, - A11yModule, - BidiModule, - // CdkAccordionModule, - ObserversModule, - OverlayModule, - PlatformModule, - PortalModule, - ] -}) -export class MaterialModule {} http://git-wip-us.apache.org/repos/asf/asterixdb/blob/a7e8dbe3/asterixdb/asterix-app/src/main/resources/dashboard/src/app/shared/actions/app.actions.ts ---------------------------------------------------------------------- diff --git a/asterixdb/asterix-app/src/main/resources/dashboard/src/app/shared/actions/app.actions.ts b/asterixdb/asterix-app/src/main/resources/dashboard/src/app/shared/actions/app.actions.ts deleted file mode 100755 index 29da05f..0000000 --- a/asterixdb/asterix-app/src/main/resources/dashboard/src/app/shared/actions/app.actions.ts +++ /dev/null @@ -1,33 +0,0 @@ -/* -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ -import { Action } from '@ngrx/store'; -import { AsterixDBQueryMessage, Dataset } from '../models/asterixDB.model'; - -/* -* Definition of App Actions -*/ -export const APP_MODE_CHANGE = '[App State] App Mode Change'; - -/* -* Guide Select Datasets for UI Helpers -*/ -export class ChangeMode implements Action { - readonly type = APP_MODE_CHANGE; - constructor(public payload: string) {} -} - -/* -* Exports of datasets actions -*/ -export type All = ChangeMode; http://git-wip-us.apache.org/repos/asf/asterixdb/blob/a7e8dbe3/asterixdb/asterix-app/src/main/resources/dashboard/src/app/shared/actions/dataset.actions.ts ---------------------------------------------------------------------- diff --git a/asterixdb/asterix-app/src/main/resources/dashboard/src/app/shared/actions/dataset.actions.ts b/asterixdb/asterix-app/src/main/resources/dashboard/src/app/shared/actions/dataset.actions.ts deleted file mode 100755 index a49e07c..0000000 --- a/asterixdb/asterix-app/src/main/resources/dashboard/src/app/shared/actions/dataset.actions.ts +++ /dev/null @@ -1,130 +0,0 @@ -/* -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ -import { Action } from '@ngrx/store'; -import { AsterixDBQueryMessage, Dataset } from '../models/asterixDB.model'; - -/* -* Definition of Datasets Actions -*/ -export const SELECT_DATASETS = '[Dataset Collection] Select Dataset'; -export const SELECT_DATASETS_SUCCESS = '[Dataset Collection] Select Dataset Success'; -export const SELECT_DATASETS_FAIL = '[Dataset Collection] Select Dataset Fail'; -export const CREATE_DATASET = '[Dataset Collection] Create Dataset'; -export const CREATE_DATASET_SUCCESS = '[Dataset Collection] Create Dataset Success'; -export const CREATE_DATASET_FAIL = '[Dataset Collection] Create Dataset Fail'; -export const UPDATE_DATASET = '[Dataset Collection] Update Dataset'; -export const UPDATE_DATASET_SUCCESS = '[Dataset Collection] Update Dataset Success'; -export const UPDATE_DATASET_FAIL = '[Dataset Collection] Update Dataset Fail'; -export const DROP_DATASET = '[Dataset Collection] Drop Dataset'; -export const DROP_DATASET_SUCCESS = '[Dataset Collection] Drop Dataset Success'; -export const DROP_DATASET_FAIL = '[Dataset Collection] Drop Dataset Fail'; -export const GUIDE_SELECT_DATASET = '[Dataset Collection] Guide Select Dataset'; - - -/* -* Guide Select Datasets for UI Helpers -*/ -export class GuideSelectDatasets implements Action { - readonly type = GUIDE_SELECT_DATASET; - constructor(public payload: string) {} -} - -/* -* Select Datasets -*/ -export class SelectDatasets implements Action { - readonly type = SELECT_DATASETS; - constructor(public payload: string) {} -} - -export class SelectDatasetsSuccess implements Action { - readonly type = SELECT_DATASETS_SUCCESS; - constructor(public payload: AsterixDBQueryMessage[]) {} -} - -export class SelectDatasetsFail implements Action { - readonly type = SELECT_DATASETS_FAIL; - constructor(public payload: AsterixDBQueryMessage[]) {} -} - -/* -* Create Dataset -*/ -export class CreateDataset implements Action { - readonly type = CREATE_DATASET; - constructor(public payload: string) {} -} - -export class CreateDatasetSuccess implements Action { - readonly type = CREATE_DATASET_SUCCESS; - constructor(public payload: Dataset[]) {} -} - -export class CreateDatasetFail implements Action { - readonly type = CREATE_DATASET_FAIL; - constructor(public payload: Dataset) {} -} - -/* -* Update Dataset -*/ -export class UpdateDataset implements Action { - readonly type = UPDATE_DATASET; - constructor(public payload: Dataset) {} -} - -export class UpdateDatasetSuccess implements Action { - readonly type = UPDATE_DATASET_SUCCESS; - constructor(public payload: Dataset[]) {} -} - -export class UpdateDatasetFail implements Action { - readonly type = UPDATE_DATASET_FAIL; - constructor(public payload: Dataset) {} -} - -/* -* Drop Dataset -*/ -export class DropDataset implements Action { - readonly type = DROP_DATASET; - constructor(public payload: string) {} -} - -export class DropDatasetSuccess implements Action { - readonly type = DROP_DATASET_SUCCESS; - constructor(public payload: Dataset[]) {} -} - -export class DropDatasetFail implements Action { - readonly type = DROP_DATASET_FAIL; - constructor(public payload: Dataset) {} -} - -/* -* Exports of datasets actions -*/ -export type All = SelectDatasets | - SelectDatasetsSuccess | - SelectDatasetsFail | - CreateDataset | - CreateDatasetSuccess | - CreateDatasetFail | - UpdateDataset | - UpdateDatasetSuccess | - UpdateDatasetFail | - DropDataset | - DropDatasetSuccess | - DropDatasetFail | - GuideSelectDatasets;
