You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@asterixdb.apache.org by mb...@apache.org on 2018/08/15 02:27:28 UTC

[02/11] asterixdb git commit: [NO ISSUE] Asterixdb-dashboard baseline:

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/3e5815a7/asterixdb/asterix-dashboard/src/node/src/app/shared/effects/datatype.effects.ts
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-dashboard/src/node/src/app/shared/effects/datatype.effects.ts b/asterixdb/asterix-dashboard/src/node/src/app/shared/effects/datatype.effects.ts
index 4fa187f..5e06f89 100755
--- a/asterixdb/asterix-dashboard/src/node/src/app/shared/effects/datatype.effects.ts
+++ b/asterixdb/asterix-dashboard/src/node/src/app/shared/effects/datatype.effects.ts
@@ -13,51 +13,46 @@ limitations under the License.
 */
 import { Injectable } from '@angular/core';
 import { Effect, Actions } from '@ngrx/effects';
-import { Observable } from 'rxjs/Observable';
-import { of } from 'rxjs/observable/of';
+import { Observable ,  of } from 'rxjs';
 import * as datatypeActions from '../actions/datatype.actions';
 import { SQLService } from '../services/async-query.service';
-import 'rxjs/add/operator/map';
-import 'rxjs/add/operator/switchMap';
-import 'rxjs/add/operator/catch';
 
 export type Action = datatypeActions.All
 
 @Injectable()
 export class DatatypeEffects {
   constructor(private actions: Actions,
-      private sqlService: SQLService) {}
+        private sqlService: SQLService) {}
 
-  /* Effect to load a collection of all Datatypes from AsterixDB
-  */
-  @Effect()
-  selectDatatypes$: Observable<Action> = this.actions
-    .ofType(datatypeActions.SELECT_DATATYPES)
-    .switchMap(query => {
-        return this.sqlService.selectDatatypes()
-           .map(datatype => new datatypeActions.SelectDatatypesSuccess(datatype))
-           .catch(err => of(new datatypeActions.SelectDatatypesFail(err)));
-  });
+    /* Effect to load a collection of all Datatypes from AsterixDB */
+    @Effect()
+    selectDatatypes$: Observable<Action> = this.actions
+        .ofType(datatypeActions.SELECT_DATATYPES)
+        .switchMap(query => {
+            return this.sqlService.selectDatatypes()
+                .map(datatype => new datatypeActions.SelectDatatypesSuccess(datatype))
+                .catch(err => of(new datatypeActions.SelectDatatypesFail(err)));
+    });
 
-  /* Effect to create a Datatype from AsterixDB
-  */
-  @Effect()
-  createDatatypes$: Observable<Action> = this.actions
-    .ofType(datatypeActions.CREATE_DATATYPE)
-    .switchMap(datatype => {
-        return this.sqlService.createDatatype((datatype as any).payload)
-           .map(datatype => new datatypeActions.CreateDatatypeSuccess(datatype))
-           .catch(err => of(new datatypeActions.CreateDatatypeFail(err)));
-  });
+    /* Effect to create a Datatype from AsterixDB
+    */
+    @Effect()
+    createDatatypes$: Observable<Action> = this.actions
+        .ofType(datatypeActions.CREATE_DATATYPE)
+        .switchMap(datatype => {
+            return this.sqlService.createDatatype((datatype as any).payload)
+                .map(datatype => new datatypeActions.CreateDatatypeSuccess(datatype))
+                .catch(err => of(new datatypeActions.CreateDatatypeFail(err)));
+    });
 
-  /* Effect to drop a Datatype from AsterixDB
-  */
-  @Effect()
-  dropDatatypes$: Observable<Action> = this.actions
-    .ofType(datatypeActions.DROP_DATATYPE)
-    .switchMap(datatype => {
-        return this.sqlService.dropDatatype((datatype as any).payload)
-           .map(datatype => new datatypeActions.DropDatatypeSuccess(datatype))
-           .catch(err => of(new datatypeActions.DropDatatypeFail(err)));
-  });
-}
+    /* Effect to drop a Datatype from AsterixDB
+    */
+    @Effect()
+    dropDatatypes$: Observable<Action> = this.actions
+        .ofType(datatypeActions.DROP_DATATYPE)
+        .switchMap(datatype => {
+            return this.sqlService.dropDatatype((datatype as any).payload)
+                .map(datatype => new datatypeActions.DropDatatypeSuccess(datatype))
+                .catch(err => of(new datatypeActions.DropDatatypeFail(err)));
+    });
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/3e5815a7/asterixdb/asterix-dashboard/src/node/src/app/shared/effects/dataverse.effects.ts
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-dashboard/src/node/src/app/shared/effects/dataverse.effects.ts b/asterixdb/asterix-dashboard/src/node/src/app/shared/effects/dataverse.effects.ts
index d917420..e8e86af 100755
--- a/asterixdb/asterix-dashboard/src/node/src/app/shared/effects/dataverse.effects.ts
+++ b/asterixdb/asterix-dashboard/src/node/src/app/shared/effects/dataverse.effects.ts
@@ -13,30 +13,32 @@ limitations under the License.
 */
 import { Injectable } from '@angular/core';
 import { Effect, Actions } from '@ngrx/effects';
-import { Observable } from 'rxjs/Observable';
-import { of } from 'rxjs/observable/of';
+import { Observable ,  of } from 'rxjs';
 import * as dataverseActions from '../actions/dataverse.actions';
 import { SQLService } from '../services/async-query.service';
-import 'rxjs/add/operator/map';
-import 'rxjs/add/operator/switchMap';
-import 'rxjs/add/operator/catch';
 
 export type Action = dataverseActions.All
 
 @Injectable()
 export class DataverseEffects {
-  constructor(private actions: Actions,
-      private sqlService: SQLService) {}
+  constructor(private actions: Actions, private sqlService: SQLService) {}
 
-  /* Effect to load a collection of all Dataverses from AsterixDB
-  */
-  @Effect()
+    /* Effect to set the default Dataverse */
+    @Effect()
+    setDefaultDataverse$: Observable<Action> = this.actions
+        .ofType(dataverseActions.SET_DEFAULT_DATAVERSE)
+        .switchMap(query => {
+            return new Observable().map(dataverse => new dataverseActions.SetDefaultDataverse('Default'))
+    });
+
+    /* Effect to load a collection of all Dataverses from AsterixDB */
+    @Effect()
     selectDataverses$: Observable<Action> = this.actions
         .ofType(dataverseActions.SELECT_DATAVERSES)
         .switchMap(query => {
             return this.sqlService.selectDataverses()
-            .map(dataverse => new dataverseActions.SelectDataversesSuccess(dataverse))
-            .catch(err => of(new dataverseActions.SelectDataversesFail(err)));
+                .map(dataverse => new dataverseActions.SelectDataversesSuccess(dataverse))
+                .catch(err => of(new dataverseActions.SelectDataversesFail(err)));
     });
 
     /* Effect to create Dataverse from AsterixDB
@@ -46,8 +48,8 @@ export class DataverseEffects {
         .ofType(dataverseActions.CREATE_DATAVERSE)
         .switchMap(dataverseName => {
             return this.sqlService.createDataverse((dataverseName as any).payload)
-            .map(dataverse => new dataverseActions.CreateDataverseSuccess(dataverse))
-            .catch(err => of(new dataverseActions.CreateDataverseFail(err)));
+                .map(dataverse => new dataverseActions.CreateDataverseSuccess(dataverse))
+                .catch(err => of(new dataverseActions.CreateDataverseFail(err)));
     });
 
     /* Effect to drop a Dataverse from AsterixDB
@@ -57,7 +59,7 @@ export class DataverseEffects {
         .ofType(dataverseActions.DROP_DATAVERSE)
         .switchMap(dataverseName => {
             return this.sqlService.dropDataverse((dataverseName as any).payload)
-            .map(dataverse => new dataverseActions.DropDataverseSuccess(dataverse))
-            .catch(err => of(new dataverseActions.DropDataverseFail(err)));
+                .map(dataverse => new dataverseActions.DropDataverseSuccess(dataverse))
+                .catch(err => of(new dataverseActions.DropDataverseFail(err)));
     });
 }

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/3e5815a7/asterixdb/asterix-dashboard/src/node/src/app/shared/effects/index.effects.ts
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-dashboard/src/node/src/app/shared/effects/index.effects.ts b/asterixdb/asterix-dashboard/src/node/src/app/shared/effects/index.effects.ts
index 8491392..a1c0b07 100755
--- a/asterixdb/asterix-dashboard/src/node/src/app/shared/effects/index.effects.ts
+++ b/asterixdb/asterix-dashboard/src/node/src/app/shared/effects/index.effects.ts
@@ -13,51 +13,46 @@ limitations under the License.
 */
 import { Injectable } from '@angular/core';
 import { Effect, Actions } from '@ngrx/effects';
-import { Observable } from 'rxjs/Observable';
-import { of } from 'rxjs/observable/of';
+import { Observable ,  of } from 'rxjs';
 import * as indexActions from '../actions/index.actions';
 import { SQLService } from '../services/async-query.service';
-import 'rxjs/add/operator/map';
-import 'rxjs/add/operator/switchMap';
-import 'rxjs/add/operator/catch';
 
 export type Action = indexActions.All
 
 @Injectable()
 export class IndexEffects {
   constructor(private actions: Actions,
-      private sqlService: SQLService) {}
+        private sqlService: SQLService) {}
 
-  /* Effect to load a collection of all Index from AsterixDB
-  */
-  @Effect()
-  selectIndexes$: Observable<Action> = this.actions
-    .ofType(indexActions.SELECT_INDEXES)
-    .switchMap(query => {
-        return this.sqlService.selectIndexes()
-           .map(index => new indexActions.SelectIndexesSuccess(index))
-           .catch(err => of(new indexActions.SelectIndexesFail(err)));
-  });
+    /* Effect to load a collection of all Index from AsterixDB */
+    @Effect()
+    selectIndexes$: Observable<Action> = this.actions
+        .ofType(indexActions.SELECT_INDEXES)
+        .switchMap(query => {
+            return this.sqlService.selectIndexes()
+                .map(index => new indexActions.SelectIndexesSuccess(index))
+                .catch(err => of(new indexActions.SelectIndexesFail(err)));
+    });
 
-  /* Effect to create a Index
-  */
-  @Effect()
-  createIndexes$: Observable<Action> = this.actions
-    .ofType(indexActions.CREATE_INDEX)
-    .switchMap(index => {
-        return this.sqlService.createIndex((index as any).payload)
-           .map(index => new indexActions.CreateIndexSuccess(index))
-           .catch(err => of(new indexActions.CreateIndexFail(err)));
-  });
+    /* Effect to create a Index
+    */
+    @Effect()
+    createIndexes$: Observable<Action> = this.actions
+        .ofType(indexActions.CREATE_INDEX)
+        .switchMap(index => {
+            return this.sqlService.createIndex((index as any).payload)
+                .map(index => new indexActions.CreateIndexSuccess(index))
+                .catch(err => of(new indexActions.CreateIndexFail(err)));
+    });
 
-  /* Effect to drop a Index
-  */
-  @Effect()
-  dropIndexes$: Observable<Action> = this.actions
-    .ofType(indexActions.DROP_INDEX)
-    .switchMap(index => {
-        return this.sqlService.dropIndex((index as any).payload)
-           .map(index => new indexActions.DropIndexSuccess(index))
-           .catch(err => of(new indexActions.DropIndexFail(err)));
-  });
+    /* Effect to drop a Index
+    */
+    @Effect()
+    dropIndexes$: Observable<Action> = this.actions
+        .ofType(indexActions.DROP_INDEX)
+        .switchMap(index => {
+            return this.sqlService.dropIndex((index as any).payload)
+                .map(index => new indexActions.DropIndexSuccess(index))
+                .catch(err => of(new indexActions.DropIndexFail(err)));
+    });
 }

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/3e5815a7/asterixdb/asterix-dashboard/src/node/src/app/shared/effects/metadata.effects.ts
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-dashboard/src/node/src/app/shared/effects/metadata.effects.ts b/asterixdb/asterix-dashboard/src/node/src/app/shared/effects/metadata.effects.ts
deleted file mode 100755
index ddcdb27..0000000
--- a/asterixdb/asterix-dashboard/src/node/src/app/shared/effects/metadata.effects.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 { Injectable } from '@angular/core';
-import { Action } from '@ngrx/store';
-import { Effect, Actions } from '@ngrx/effects';
-import { Observable } from 'rxjs/Observable';
-import { of } from 'rxjs/observable/of';
-import { MetadataService } from '../services/async-metadata.service';
-import * as metadataActions from '../actions/metadata.actions';
-import 'rxjs/add/operator/map';
-import 'rxjs/add/operator/switchMap';
-import 'rxjs/add/operator/catch';
-
-export type Action = metadataActions.All
-
-@Injectable()
-export class MetadataEffects {
-  constructor(private actions: Actions,
-      private metadataService: MetadataService) {}
-
-  /* Effect to update and retrieve the Metadata Tree
-  */
-  @Effect()
-  calculateDBTree$: Observable<Action> = this.actions
-    .ofType(metadataActions.UPDATE_METADATA_TREE)
-    .switchMap(() => {
-        return this.metadataService.getMetadataTree()
-          .map(tree => new metadataActions.UpdateMetadataTreeSuccess(tree))
-    });
-}

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/3e5815a7/asterixdb/asterix-dashboard/src/node/src/app/shared/effects/query.effects.ts
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-dashboard/src/node/src/app/shared/effects/query.effects.ts b/asterixdb/asterix-dashboard/src/node/src/app/shared/effects/query.effects.ts
index cb78255..0d209cd1 100755
--- a/asterixdb/asterix-dashboard/src/node/src/app/shared/effects/query.effects.ts
+++ b/asterixdb/asterix-dashboard/src/node/src/app/shared/effects/query.effects.ts
@@ -13,41 +13,36 @@ limitations under the License.
 */
 import { Injectable } from '@angular/core';
 import { Action } from '@ngrx/store';
-import { Effect, Actions } from '@ngrx/effects';
-import { Observable } from 'rxjs/Observable';
-import { of } from 'rxjs/observable/of';
+import { Actions, Effect, ofType } from '@ngrx/effects';
+import { Observable ,  of } from 'rxjs';
 import { SQLService } from '../services/async-query.service';
 import * as sqlQueryActions from '../actions/query.actions';
-import 'rxjs/add/operator/map';
-import 'rxjs/add/operator/switchMap';
-import 'rxjs/add/operator/catch';
 
 export type Action = sqlQueryActions.All
 
 @Injectable()
 export class SQLQueryEffects {
   constructor(private actions: Actions,
-      private sqlService: SQLService) {}
+        private sqlService: SQLService) {}
 
-  /* Effect to Execute an SQL++ Query against the AsterixDB
-  */
-  @Effect()
-  executeQuery$: Observable<Action> = this.actions
-    .ofType(sqlQueryActions.EXECUTE_QUERY)
-    .switchMap(query => {
-        return this.sqlService.executeSQLQuery((query as any).payload)
-           .map(sqlQueryResult => new sqlQueryActions.ExecuteQuerySuccess(sqlQueryResult))
-           .catch(sqlQueryError => of(new sqlQueryActions.ExecuteQueryFail(sqlQueryError)));
-  });
+    /* Effect to Execute an SQL++ Query against the AsterixDB */
+    @Effect()
+    executeQuery$: Observable<Action> = this.actions
+        .ofType(sqlQueryActions.EXECUTE_QUERY)
+        .switchMap(query => {
+            return this.sqlService.executeSQLQuery((query as any).payload.queryString)
+                .map(sqlQueryResult => new sqlQueryActions.ExecuteQuerySuccess(sqlQueryResult))
+                .catch(sqlQueryError => of(new sqlQueryActions.ExecuteQueryFail(sqlQueryError)));
+    });
 
-  /* Effect to Execute an SQL++ Metadata Query against the AsterixDB
-  */
-  @Effect()
-  executeMetadataQuery$: Observable<Action> = this.actions
-    .ofType(sqlQueryActions.EXECUTE_METADATA_QUERY)
-    .switchMap(query => {
-        return this.sqlService.executeSQLQuery((query as any).payload)
-           .map(sqlMetadataQueryResult => new sqlQueryActions.ExecuteMetadataQuerySuccess(sqlMetadataQueryResult))
-           .catch(sqlMetadataQueryError => of(new sqlQueryActions.ExecuteMetadataQueryFail(sqlMetadataQueryError)));
-  });
-}
+    /* Effect to Execute an SQL++ Metadata Query against the AsterixDB
+    */
+    @Effect()
+    executeMetadataQuery$: Observable<Action> = this.actions
+        .ofType(sqlQueryActions.EXECUTE_METADATA_QUERY)
+        .switchMap(query => {
+            return this.sqlService.executeSQLQuery((query as any).payload)
+                .map(sqlMetadataQueryResult => new sqlQueryActions.ExecuteMetadataQuerySuccess(sqlMetadataQueryResult))
+                .catch(sqlMetadataQueryError => of(new sqlQueryActions.ExecuteMetadataQueryFail(sqlMetadataQueryError)));
+    });
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/3e5815a7/asterixdb/asterix-dashboard/src/node/src/app/shared/models/asterixDB.model.ts
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-dashboard/src/node/src/app/shared/models/asterixDB.model.ts b/asterixdb/asterix-dashboard/src/node/src/app/shared/models/asterixDB.model.ts
deleted file mode 100755
index bbdabe2..0000000
--- a/asterixdb/asterix-dashboard/src/node/src/app/shared/models/asterixDB.model.ts
+++ /dev/null
@@ -1,112 +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.
-*/
-/*
-* Interfaces representing AsterixDB data model structures.
-*/
-
-export interface Dataverse {
-  dataFormat: string;
-  dataverseName: string;
-  pendingOp: string;
-  timeStamp: string;
-};
-
-export interface ResultsM {
-  dataFormat: string;
-  dataverseName: string;
-  pendingOp: string;
-  timeStamp: string;
-};
-
-export interface Dataset {
-  compactionPolicy: string;
-  compactionPolicyProperties: CompactionPolicyProperties[];
-  datasetId: string;
-  datasetName: string;
-  datasetType:string;
-  datatypeDataverseName: string;
-  datatypeName: string;
-  dataverseName: string;
-  groupName:string;
-  hints: string[];
-  internalDetails: InternalDetails;
-  pendingOp: string;
-  timestamp: string;
-};
-
-export interface CompactionPolicyProperties {
-  name: string;
-  value: string;
-};
-
-export interface InternalDetails {
-  autogenerated: string;
-  fileStructure: string;
-  partitioningKey: string;
-  partitioningStrategy: string;
-  primaryKey: string[];
-};
-
-// Message format coming back from AsterixDB REST API
-export interface AsterixDBQueryMessage {
-  metrics: Metrics;
-  requestId: string;
-  results: any[];
-  signature: string;
-  status: string;
-};
-
-export interface Metrics {
-  elapsedTime: string;
-  executionTime: string;
-  resultCount: string;
-  resultSize: string;
-};
-
-// Datatype Data Model comming from AsterixDB REST API
-export interface Datatype {
-  datatypeName: string;
-  dataverseName: string;
-  derived: DatatypeDerived;
-  timeStamp: string;
-};
-
-export interface DatatypeDerived {
-  isAnonymous: boolean;
-  record: DatatypeDerivedRecord;
-  tag: string;
-};
-
-export interface DatatypeDerivedRecord {
-  Fields: DatatypeDerivedRecordField[];
-  isOpen: boolean;
-};
-
-export interface DatatypeDerivedRecordField {
-  fieldName: string;
-  fieldType: "string";
-  isNullable: boolean;
-}
-
-// Index Data Model comming from AsterixDB REST API
-export interface Index {
-  dataverseName: string;
-  datasetName: string;
-  indexName: string;
-  indexStructure: string;
-  searchKey: string[];
-  isPrimary: boolean;
-  timestamp: string;
-  pendingOp: string;
-};

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/3e5815a7/asterixdb/asterix-dashboard/src/node/src/app/shared/pipes/keys.pipe.ts
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-dashboard/src/node/src/app/shared/pipes/keys.pipe.ts b/asterixdb/asterix-dashboard/src/node/src/app/shared/pipes/keys.pipe.ts
deleted file mode 100755
index 77cac5a..0000000
--- a/asterixdb/asterix-dashboard/src/node/src/app/shared/pipes/keys.pipe.ts
+++ /dev/null
@@ -1,25 +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 { PipeTransform, Pipe } from '@angular/core';
-
-@Pipe({name: 'keys'})
-export class KeysPipe implements PipeTransform {
-  transform(value, args:string[]) : any {
-    let keys = [];
-    for (let key in value) {
-      keys.push(key);
-    }
-    return keys;
-  }
-}

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/3e5815a7/asterixdb/asterix-dashboard/src/node/src/app/shared/pipes/objectArrayType.pipe.ts
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-dashboard/src/node/src/app/shared/pipes/objectArrayType.pipe.ts b/asterixdb/asterix-dashboard/src/node/src/app/shared/pipes/objectArrayType.pipe.ts
deleted file mode 100755
index 220b53c..0000000
--- a/asterixdb/asterix-dashboard/src/node/src/app/shared/pipes/objectArrayType.pipe.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.
-*/
-// Detecting if an object is an array
-import { PipeTransform, Pipe } from '@angular/core';
-
-@Pipe({name: 'isObjectArray'})
-export class ObjectArrayTypePipe implements PipeTransform {
-  transform(value, args:string[]) : any {
-		return value && (value.constructor.toString().indexOf("Array") != -1)
-					&& value[0] && (value[0].constructor.toString().indexOf("Object") != -1);
-  }
-}

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/3e5815a7/asterixdb/asterix-dashboard/src/node/src/app/shared/pipes/objectType.pipe.ts
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-dashboard/src/node/src/app/shared/pipes/objectType.pipe.ts b/asterixdb/asterix-dashboard/src/node/src/app/shared/pipes/objectType.pipe.ts
deleted file mode 100755
index 5b8f795..0000000
--- a/asterixdb/asterix-dashboard/src/node/src/app/shared/pipes/objectType.pipe.ts
+++ /dev/null
@@ -1,21 +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 { PipeTransform, Pipe } from '@angular/core';
-
-@Pipe({name: 'isObject'})
-export class ObjectTypePipe implements PipeTransform {
-  transform(value, args:string[]) : any {
-		return value && (value.constructor.toString().indexOf("Object") != -1);
-  }
-}

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/3e5815a7/asterixdb/asterix-dashboard/src/node/src/app/shared/reducers/app.reducer.ts
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-dashboard/src/node/src/app/shared/reducers/app.reducer.ts b/asterixdb/asterix-dashboard/src/node/src/app/shared/reducers/app.reducer.ts
index 01c65ac..c656ef8 100755
--- a/asterixdb/asterix-dashboard/src/node/src/app/shared/reducers/app.reducer.ts
+++ b/asterixdb/asterix-dashboard/src/node/src/app/shared/reducers/app.reducer.ts
@@ -11,7 +11,6 @@ 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 { AsterixDBQueryMessage } from '../models/asterixDB.model';
 import * as appActions from '../actions/app.actions';
 
 export type Action = appActions.All;
@@ -20,54 +19,48 @@ export type Action = appActions.All;
 ** Interfaces for app state in store/state
 */
 export interface State {
-  loading: boolean,
-  loaded: boolean,
-  success: boolean,
-  sqlQueryString: string,
-  sqlQueryResult: AsterixDBQueryMessage[],
-  sqlQueryError: AsterixDBQueryMessage[],
-  sqlMetadataQueryString: string,
-  sqlMetadataQueryResult: AsterixDBQueryMessage[],
-  sqlMetadataQueryError: AsterixDBQueryMessage[]
+    currentQueryIndex: Number;
+    sideMenuVisible: boolean;
 };
 
 const initialState: State = {
-  loading: false,
-  loaded: false,
-  success: false,
-  sqlQueryString: "",
-  sqlQueryResult: [],
-  sqlQueryError: [],
-  sqlMetadataQueryString: "",
-  sqlMetadataQueryResult: [],
-  sqlMetadataQueryError: [],
+    currentQueryIndex: 0,
+    sideMenuVisible: false,
 };
 
 /*
 ** Reducer function for app state in store/state
 */
 export function appReducer(state = initialState, action: Action) {
-  switch (action.type) {
+    switch (action.type) {
+        /*
+        * Global side navigator open/close controller
+        */
+        case appActions.APP_SIDE_MENU: {
+            return Object.assign({}, state, {
+                sideMenuVisible: action.payload
+            });
+        }
 
-    /*
-    * Change the load state to true, and clear previous results
-    * to signaling that a EXECUTE a SQL++ Query is ongoing
-    */
-    case appActions.APP_MODE_CHANGE: {
-      return Object.assign({}, state, {
-        loading: false,
-        loaded: true,
-        success: false,
-        sqlQueryString: action.payload,
-        sqlQueryResult: [],
-        sqlQueryError: []
-      });
-    }
-    
-    /*
-    * Just returns the current store/state object
-    */
-    default:
-      return state;
-  }
-}
+        /*
+        * Change the load state to true, and clear previous results
+        * to signaling that a EXECUTE a SQL++ Query is ongoing
+        */
+        case appActions.APP_MODE_CHANGE: {
+            return Object.assign({}, state, {
+            });
+        }
+
+        /*
+        * store the query currently in codemirror editor
+        */
+        case appActions.APP_QUERY_INPUT_INDEX: {
+            return Object.assign({}, state, {
+                    currentQueryIndex: action.payload
+                });
+            }
+
+        default:
+                return state;
+        }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/3e5815a7/asterixdb/asterix-dashboard/src/node/src/app/shared/reducers/dataset.reducer.ts
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-dashboard/src/node/src/app/shared/reducers/dataset.reducer.ts b/asterixdb/asterix-dashboard/src/node/src/app/shared/reducers/dataset.reducer.ts
index 25d09b9..deaceb3 100755
--- a/asterixdb/asterix-dashboard/src/node/src/app/shared/reducers/dataset.reducer.ts
+++ b/asterixdb/asterix-dashboard/src/node/src/app/shared/reducers/dataset.reducer.ts
@@ -11,7 +11,6 @@ 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 { Dataset } from '../models/asterixDB.model';
 import * as DatasetAction from '../actions/dataset.actions';
 
 export type Action = DatasetAction.All;
@@ -20,158 +19,158 @@ export type Action = DatasetAction.All;
 ** Interfaces for datasets in store/state
 */
 export interface State {
-  loaded: boolean,
-  loading: boolean,
-  datasets: any[],
-  createDataset: any[],
-  createDatasetError: any[],
-  createDatasetSuccess: boolean,
-  createDatasetFailed: boolean,
-  dropDataset: any[],
-  dropDatasetError: any[],
-  dropDatasetSuccess: boolean,
-  dropDatasetFailed: boolean,
-  guideSelectsDataset: string,
+    loaded: boolean,
+    loading: boolean,
+    datasets: any[],
+    createDataset: any[],
+    createDatasetError: any[],
+    createDatasetSuccess: boolean,
+    createDatasetFailed: boolean,
+    dropDataset: any[],
+    dropDatasetError: any[],
+    dropDatasetSuccess: boolean,
+    dropDatasetFailed: boolean,
+    guideSelectsDataset: string
 };
 
 const initialState: State = {
-  loaded: false,
-  loading: false,
-  datasets: [],
-  createDataset: [],
-  createDatasetError: [],
-  createDatasetSuccess: false,
-  createDatasetFailed: false,
-  dropDataset: [],
-  dropDatasetError: [],
-  dropDatasetSuccess: false,
-  dropDatasetFailed: false,
-  guideSelectsDataset: ""
+    loaded: false,
+    loading: false,
+    datasets: [],
+    createDataset: [],
+    createDatasetError: [],
+    createDatasetSuccess: false,
+    createDatasetFailed: false,
+    dropDataset: [],
+    dropDatasetError: [],
+    dropDatasetSuccess: false,
+    dropDatasetFailed: false,
+    guideSelectsDataset: ""
 };
 
 /*
 ** Reducer function for datasets in store/state
 */
 export function datasetReducer(state = initialState, action: Action) {
-  switch (action.type) {
-
-    /*
-    * Change the selected dataset state to true to signaling
-    * UI from metadata guide 
-    */
-    case DatasetAction.GUIDE_SELECT_DATASET: {
-      return Object.assign({}, state, { guideSelectsDataset: action.payload });
+    switch (action.type) {
+
+      /*
+      * Change the selected dataset state to true to signaling
+      * UI from metadata guide
+      */
+      case DatasetAction.GUIDE_SELECT_DATASET: {
+          return Object.assign({}, state, { guideSelectsDataset: action.payload });
+      }
+
+      /*
+      * Change the load state to true to signaling
+      * that a SELECT Query is ongoing
+      */
+      case DatasetAction.SELECT_DATASETS: {
+          return Object.assign({}, state, { loading: true });
+      }
+
+      /*
+      * Change the load state to false, and loaded to true to signaling
+      * that a SELECT Query is success and there is datasets available in the
+      * store
+      */
+      case DatasetAction.SELECT_DATASETS_SUCCESS: {
+          return Object.assign({}, state, {
+              loaded: true,
+              loading: false,
+              datasets: action.payload
+          })
+      }
+
+      /*
+      * Change the load state to true to signaling
+      * that a CREATE a Dataset Query is ongoing
+      */
+      case DatasetAction.CREATE_DATASET: {
+          return Object.assign({}, state, {
+              createDataset: [],
+              createDatasetError: [],
+              createDatasetSuccess: false,
+              createDatasetFailed: false
+          });
+      }
+
+      /*
+      * Change the load state to false, and loaded to true to signaling
+      * that a CREATE a Dataset Query is success and there is datasets available in the
+      * store
+      */
+      case DatasetAction.CREATE_DATASET_SUCCESS: {
+          return Object.assign({}, state, {
+              createDataset: action.payload,
+              createDatasetName: action.payload,
+              createDatasetError: [],
+              createDatasetSuccess: true,
+              createDatasetFailed: false
+          })
+      }
+
+      /*
+      * Change the load state to false, and loaded to true to signaling
+      * that a CREATE a Dataset Query is failed and there is an error message available in the
+      * store
+      */
+      case DatasetAction.CREATE_DATASET_FAIL: {
+          return Object.assign({}, state, {
+              createDataset: [],
+              createDatasetError: action.payload,
+              createDatasetSuccess: false,
+              createDatasetFailed: true
+          })
+      }
+
+      /*
+      * Change the load state to true to signaling
+      * that a DROP a Dataset Query is ongoing
+      */
+      case DatasetAction.DROP_DATASET: {
+          return Object.assign({}, state, {
+              dropDataset: [],
+              dropDatasetError: [],
+              dropDatasetName: action.payload,
+              dropDatasetSuccess: false,
+              dropDatasetFailed: false
+          });
+      }
+
+      /*
+      * Change the load state to false, and loaded to true to signaling
+      * that a DROP a Dataset Query is success and there is datasets available in the
+      * store
+      */
+      case DatasetAction.DROP_DATASET_SUCCESS: {
+          return Object.assign({}, state, {
+              dropDataset: action.payload,
+              dropDatasetError: [],
+              dropDatasetSuccess: true,
+              dropDatasetFailed: false
+          })
+      }
+
+      /*
+      * Change the load state to false, and loaded to true to signaling
+      * that a DROP a Dataset Query is failed and there is an error message available in the
+      * store
+      */
+      case DatasetAction.DROP_DATASET_FAIL: {
+          return Object.assign({}, state, {
+              dropDataset: [],
+              dropDatasetError: action.payload,
+              dropDatasetSuccess: false,
+              dropDatasetFailed: true
+          })
+      }
+
+      /*
+      * Just returns the current store/state object
+      */
+      default:
+          return state;
     }
-
-    /*
-    * Change the load state to true to signaling
-    * that a SELECT Query is ongoing
-    */
-    case DatasetAction.SELECT_DATASETS: {
-        return Object.assign({}, state, { loading: true });
-    }
-
-    /*
-    * Change the load state to false, and loaded to true to signaling
-    * that a SELECT Query is success and there is datasets available in the
-    * store
-    */
-    case DatasetAction.SELECT_DATASETS_SUCCESS: {
-      return Object.assign({}, state, {
-        loaded: true,
-        loading: false,
-        datasets: action.payload
-      })
-    }
-
-    /*
-    * Change the load state to true to signaling
-    * that a CREATE a Dataset Query is ongoing
-    */
-    case DatasetAction.CREATE_DATASET: {
-      return Object.assign({}, state, { 
-        createDataset: [],
-        createDatasetError: [],
-        createDatasetSuccess: false,
-        createDatasetFailed: false,
-      });
-    }
-
-    /*
-    * Change the load state to false, and loaded to true to signaling
-    * that a CREATE a Dataset Query is success and there is datasets available in the
-    * store
-    */
-    case DatasetAction.CREATE_DATASET_SUCCESS: {
-      return Object.assign({}, state, {
-        createDataset: action.payload,
-        createDatasetName: action.payload,        
-        createDatasetError: [],
-        createDatasetSuccess: true,
-        createDatasetFailed: false
-      })
-    }
-
-    /*
-    * Change the load state to false, and loaded to true to signaling
-    * that a CREATE a Dataset Query is failed and there is an error message available in the
-    * store
-    */
-    case DatasetAction.CREATE_DATASET_FAIL: {
-      return Object.assign({}, state, {
-        createDataset: [],
-        createDatasetError: action.payload,
-        createDatasetSuccess: false,
-        createDatasetFailed: true
-      })
-    }
-
-    /*
-    * Change the load state to true to signaling
-    * that a DROP a Dataset Query is ongoing
-    */
-    case DatasetAction.DROP_DATASET: {
-      return Object.assign({}, state, { 
-        dropDataset: [],
-        dropDatasetError: [],
-        dropDatasetName: action.payload,
-        dropDatasetSuccess: false,
-        dropDatasetFailed: false
-       });
-    }
-
-    /*
-    * Change the load state to false, and loaded to true to signaling
-    * that a DROP a Dataset Query is success and there is datasets available in the
-    * store
-    */
-    case DatasetAction.DROP_DATASET_SUCCESS: {
-      return Object.assign({}, state, {
-        dropDataset: action.payload,
-        dropDatasetError: [],
-        dropDatasetSuccess: true,
-        dropDatasetFailed: false
-      })
-    }
-
-    /*
-    * Change the load state to false, and loaded to true to signaling
-    * that a DROP a Dataset Query is failed and there is an error message available in the
-    * store
-    */
-    case DatasetAction.DROP_DATASET_FAIL: {
-      return Object.assign({}, state, {
-        dropDataset: [],
-        dropDatasetError: action.payload,
-        dropDatasetSuccess: false,
-        dropDatasetFailed: true
-      })
-    }
-
-    /*
-    * Just returns the current store/state object
-    */
-    default:
-      return state;
-  }
-}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/3e5815a7/asterixdb/asterix-dashboard/src/node/src/app/shared/reducers/datatype.reducer.ts
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-dashboard/src/node/src/app/shared/reducers/datatype.reducer.ts b/asterixdb/asterix-dashboard/src/node/src/app/shared/reducers/datatype.reducer.ts
index 1036fdb..289b889 100755
--- a/asterixdb/asterix-dashboard/src/node/src/app/shared/reducers/datatype.reducer.ts
+++ b/asterixdb/asterix-dashboard/src/node/src/app/shared/reducers/datatype.reducer.ts
@@ -11,7 +11,6 @@ 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 { Datatype } from '../models/asterixDB.model';
 import * as DatatypeAction from '../actions/datatype.actions';
 
 export type Action = DatatypeAction.All;
@@ -20,148 +19,148 @@ export type Action = DatatypeAction.All;
 ** Interfaces for datatype in store/state
 */
 export interface State {
-  loaded: boolean,
-  loading: boolean,
-  datatypes: Datatype[],
-  createDatatype: any[],
-  createDatatypeError: any[],
-  createDatatypeSuccess: boolean,
-  createDatatypeFailed: boolean,
-  dropDatatype: any[],
-  dropDatatypeError: any[],
-  dropDatatypeSuccess: boolean,
-  dropDatatypeFailed: boolean
+    loaded: boolean,
+    loading: boolean,
+    datatypes: any[],
+    createDatatype: any[],
+    createDatatypeError: any[],
+    createDatatypeSuccess: boolean,
+    createDatatypeFailed: boolean,
+    dropDatatype: any[],
+    dropDatatypeError: any[],
+    dropDatatypeSuccess: boolean,
+    dropDatatypeFailed: boolean
 };
 
 const initialState: State = {
-  loaded: false,
-  loading: false,
-  datatypes: [],
-  createDatatype: [],
-  createDatatypeError: [],
-  createDatatypeSuccess: false,
-  createDatatypeFailed: false,
-  dropDatatype: [],
-  dropDatatypeError: [],
-  dropDatatypeSuccess: false,
-  dropDatatypeFailed: false
+    loaded: false,
+    loading: false,
+    datatypes: [],
+    createDatatype: [],
+    createDatatypeError: [],
+    createDatatypeSuccess: false,
+    createDatatypeFailed: false,
+    dropDatatype: [],
+    dropDatatypeError: [],
+    dropDatatypeSuccess: false,
+    dropDatatypeFailed: false
 };
 
 /*
 ** Reducer function for datatypes in store/state
 */
 export function datatypeReducer(state = initialState, action: Action) {
-  switch (action.type) {
+    switch (action.type) {
 
-    /*
-    * Change the load state to true to signaling
-    * that a SELECT Query is ongoing
-    */
-    case DatatypeAction.SELECT_DATATYPES: {
-        return Object.assign({}, state, { loading: true });
-    }
+        /*
+        * Change the load state to true to signaling
+        * that a SELECT Query is ongoing
+        */
+        case DatatypeAction.SELECT_DATATYPES: {
+            return Object.assign({}, state, { loading: true });
+        }
 
-    /*
-    * Change the load state to false, and loaded to true to signaling
-    * that a SELECT Query is success and there is datatypes available in the
-    * store
-    */
-    case DatatypeAction.SELECT_DATATYPES_SUCCESS: {
-      return Object.assign({}, state, {
-        loaded: true,
-        loading: false,
-        datatypes: action.payload
-      })
-    }
+        /*
+        * Change the load state to false, and loaded to true to signaling
+        * that a SELECT Query is success and there is datatypes available in the
+        * store
+        */
+        case DatatypeAction.SELECT_DATATYPES_SUCCESS: {
+            return Object.assign({}, state, {
+              loaded: true,
+              loading: false,
+              datatypes: action.payload
+            })
+        }
 
-    /*
-    * Change the load state to true to signaling
-    * that a CREATE a Datatype Query is ongoing
-    */
-    case DatatypeAction.CREATE_DATATYPE: {
-      return Object.assign({}, state, { 
-        createDatatype: [],
-        createDatatypeName: action.payload,        
-        createDatatypeError: [],
-        createDatatypeSuccess: false,
-        createDatatypeFailed: false,
-      });
-    }
+        /*
+        * Change the load state to true to signaling
+        * that a CREATE a Datatype Query is ongoing
+        */
+        case DatatypeAction.CREATE_DATATYPE: {
+            return Object.assign({}, state, {
+              createDatatype: [],
+              createDatatypeName: action.payload,
+              createDatatypeError: [],
+              createDatatypeSuccess: false,
+              createDatatypeFailed: false,
+            });
+        }
 
-    /*
-    * Change the load state to false, and loaded to true to signaling
-    * that a CREATE a Datatype Query is success and there is datasets available in the
-    * store
-    */
-    case DatatypeAction.CREATE_DATATYPE_SUCCESS: {
-      return Object.assign({}, state, {
-        createDatatype: action.payload,
-        createDatatypeError: [],
-        createDatatypeSuccess: true,
-        createDatatypeFailed: false
-      })
-    }
+        /*
+        * Change the load state to false, and loaded to true to signaling
+        * that a CREATE a Datatype Query is success and there is datasets available in the
+        * store
+        */
+        case DatatypeAction.CREATE_DATATYPE_SUCCESS: {
+            return Object.assign({}, state, {
+              createDatatype: action.payload,
+              createDatatypeError: [],
+              createDatatypeSuccess: true,
+              createDatatypeFailed: false
+            })
+        }
 
-    /*
-    * Change the load state to false, and loaded to true to signaling
-    * that a CREATE a Datatype Query is failed and there is an error message available in the
-    * store
-    */
-    case DatatypeAction.CREATE_DATATYPE_FAIL: {
-      return Object.assign({}, state, {
-        createDatatype: [],
-        createDatatypeError: action.payload,
-        createDatatypeSuccess: false,
-        createDatatypeFailed: true
-      })
-    }
+        /*
+        * Change the load state to false, and loaded to true to signaling
+        * that a CREATE a Datatype Query is failed and there is an error message available in the
+        * store
+        */
+        case DatatypeAction.CREATE_DATATYPE_FAIL: {
+            return Object.assign({}, state, {
+              createDatatype: [],
+              createDatatypeError: action.payload,
+              createDatatypeSuccess: false,
+              createDatatypeFailed: true
+            })
+        }
 
-    /*
-    * Change the load state to true to signaling
-    * that a DROP a Datatype Query is ongoing
-    */
-    case DatatypeAction.DROP_DATATYPE: {
-      return Object.assign({}, state, { 
-        dropDatatype: [],
-        dropDatatypeName: action.payload,       
-        dropDatatypeError: [],
-        dropDatatypeSuccess: false,
-        dropDatatypeFailed: false
-        });
-    }
+        /*
+        * Change the load state to true to signaling
+        * that a DROP a Datatype Query is ongoing
+        */
+        case DatatypeAction.DROP_DATATYPE: {
+            return Object.assign({}, state, {
+              dropDatatype: [],
+              dropDatatypeName: action.payload,
+              dropDatatypeError: [],
+              dropDatatypeSuccess: false,
+              dropDatatypeFailed: false
+              });
+        }
 
-    /*
-    * Change the load state to false, and loaded to true to signaling
-    * that a DROP a Datatype Query is success and there is datasets available in the
-    * store
-    */
-    case DatatypeAction.DROP_DATATYPE_SUCCESS: {
-      return Object.assign({}, state, {
-        dropDatatype: action.payload,
-        dropDatatypeError: [],
-        dropDatatypeSuccess: true,
-        dropDatatypeFailed: false
-      })
-    }
+        /*
+        * Change the load state to false, and loaded to true to signaling
+        * that a DROP a Datatype Query is success and there is datasets available in the
+        * store
+        */
+        case DatatypeAction.DROP_DATATYPE_SUCCESS: {
+            return Object.assign({}, state, {
+                dropDatatype: action.payload,
+                dropDatatypeError: [],
+                dropDatatypeSuccess: true,
+                dropDatatypeFailed: false
+            })
+        }
 
-    /*
-    * Change the load state to false, and loaded to true to signaling
-    * that a DROP a Datatype Query is failed and there is an error message available in the
-    * store
-    */
-    case DatatypeAction.DROP_DATATYPE_FAIL: {
-      return Object.assign({}, state, {
-        dropDatatype: [],
-        dropDatatypeError: action.payload,
-        dropDatatypeSuccess: false,
-        dropDatatypeFailed: true
-      })
-    }
+        /*
+        * Change the load state to false, and loaded to true to signaling
+        * that a DROP a Datatype Query is failed and there is an error message available in the
+        * store
+        */
+        case DatatypeAction.DROP_DATATYPE_FAIL: {
+            return Object.assign({}, state, {
+                dropDatatype: [],
+                dropDatatypeError: action.payload,
+                dropDatatypeSuccess: false,
+                dropDatatypeFailed: true
+            })
+        }
 
-    /*
-    * Just returns the current store/state object
-    */
-    default:
-      return state;
-  }
-}
+        /*
+        * Just returns the current store/state object
+        */
+        default:
+            return state;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/3e5815a7/asterixdb/asterix-dashboard/src/node/src/app/shared/reducers/dataverse.reducer.ts
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-dashboard/src/node/src/app/shared/reducers/dataverse.reducer.ts b/asterixdb/asterix-dashboard/src/node/src/app/shared/reducers/dataverse.reducer.ts
index 7ac78ea..28f6a58 100755
--- a/asterixdb/asterix-dashboard/src/node/src/app/shared/reducers/dataverse.reducer.ts
+++ b/asterixdb/asterix-dashboard/src/node/src/app/shared/reducers/dataverse.reducer.ts
@@ -11,7 +11,6 @@ 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 { Dataverse } from '../models/asterixDB.model';
 import * as DataverseAction from '../actions/dataverse.actions';
 
 export type Action = DataverseAction.All;
@@ -20,152 +19,161 @@ export type Action = DataverseAction.All;
 ** Interfaces for dataverses in store/state
 */
 export interface State {
-  loaded: boolean,
-  loading: boolean,
-  dataverses: any[],
-  createDataverse: any[],
-  createDataverseName: string,
-  createDataverseError: any[],
-  createDataverseSuccess: boolean,
-  createDataverseFailed: boolean
-  dropDataverse: any[],
-  dropDataverseName: string;
-  dropDataverseError: any[],
-  dropDataverseSuccess: boolean,
-  dropDataverseFailed: boolean
+    loaded: boolean,
+    loading: boolean,
+    dataverses: any[],
+    createDataverse: any[],
+    createDataverseName: string,
+    createDataverseError: any[],
+    createDataverseSuccess: boolean,
+    createDataverseFailed: boolean
+    dropDataverse: any[],
+    dropDataverseName: string;
+    dropDataverseError: any[],
+    dropDataverseSuccess: boolean,
+    dropDataverseFailed: boolean,
+    defaultDataverseName: any
 };
 
 const initialState: State = {
-  loaded: false,
-  loading: false,
-  dataverses: [],
-  createDataverse: [],
-  createDataverseName: "",
-  createDataverseError: [],
-  createDataverseSuccess: false,
-  createDataverseFailed: false,
-  dropDataverse: [],
-  dropDataverseName: "",
-  dropDataverseError: [],
-  dropDataverseSuccess: false,
-  dropDataverseFailed: false
+    loaded: false,
+    loading: false,
+    dataverses: [],
+    createDataverse: [],
+    createDataverseName: "",
+    createDataverseError: [],
+    createDataverseSuccess: false,
+    createDataverseFailed: false,
+    dropDataverse: [],
+    dropDataverseName: "",
+    dropDataverseError: [],
+    dropDataverseSuccess: false,
+    dropDataverseFailed: false,
+    defaultDataverseName: 'Default'
 };
 
 /*
 ** Reducer function for dataverses in store/state
 */
 export function dataverseReducer(state = initialState, action: Action) {
-  switch (action.type) {
-
-    /*
-    * Change the load state to true to signaling
-    * that a SELECT Query is ongoing
-    */
-    case DataverseAction.SELECT_DATAVERSES: {
-        return Object.assign({}, state, { loading: true });
-    }
+    switch (action.type) {
 
-    /*
-    * Change the load state to false, and loaded to true to signaling
-    * that a SELECT Query is success and there is dataverses available in the
-    * store
-    */
-    case DataverseAction.SELECT_DATAVERSES_SUCCESS: {
-      return Object.assign({}, state, {
-        loaded: true,
-        loading: false,
-        dataverses: action.payload //  _.sortBy(_.values(action.payload), 'dataverseName')
-      })
-    }
+      /*
+      * Set the default Dataverse Name
+      */
+     case DataverseAction.SET_DEFAULT_DATAVERSE: {
+        return Object.assign({}, state, { defaultDataverseName: action.payload });
+      }
 
-    /*
-    * Change the load state to true to signaling
-    * that a CREATE a Dataset Query is ongoing
-    */
-    case DataverseAction.CREATE_DATAVERSE: {
-      return Object.assign({}, state, { 
-        createDataverse: [],
-        createDataverseName: action.payload,
-        createDataverseError: [],
-        createDataverseSuccess: false,
-        createDataverseFailed: false
-      });
-    }
+      /*
+      * Change the load state to true to signaling
+      * that a SELECT Query is ongoing
+      */
+      case DataverseAction.SELECT_DATAVERSES: {
+          return Object.assign({}, state, { loading: true });
+      }
 
-    /*
-    * Change the load state to false, and loaded to true to signaling
-    * that a CREATE a Dataverse Query is success and there is a success message available in the
-    * store
-    */
-    case DataverseAction.CREATE_DATAVERSE_SUCCESS: {
-      return Object.assign({}, state, {
-        createDataverse: action.payload,
-        createDataverseError: [],        
-        createDataverseSuccess: true,
-        createDataverseFailed: false
-      })
-    }
+      /*
+      * Change the load state to false, and loaded to true to signaling
+      * that a SELECT Query is success and there is dataverses available in the
+      * store
+      */
+      case DataverseAction.SELECT_DATAVERSES_SUCCESS: {
+          return Object.assign({}, state, {
+              loaded: true,
+              loading: false,
+              dataverses: action.payload //  _.sortBy(_.values(action.payload), 'dataverseName')
+          })
+      }
 
-    /*
-    * Change the load state to false, and loaded to true to signaling
-    * that a CREATE a Dataverse Query is failed and there is an error message available in the
-    * store
-    */
-    case DataverseAction.CREATE_DATAVERSE_FAIL: {
-      return Object.assign({}, state, {
-        createDataverse: [],
-        createDataverseError: action.payload,
-        createDataverseSuccess: false,
-        createDataverseFailed: true
-      })
-    }
+      /*
+      * Change the load state to true to signaling
+      * that a CREATE a Dataset Query is ongoing
+      */
+      case DataverseAction.CREATE_DATAVERSE: {
+          return Object.assign({}, state, {
+              createDataverse: [],
+              createDataverseName: action.payload,
+              createDataverseError: [],
+              createDataverseSuccess: false,
+              createDataverseFailed: false
+          });
+      }
 
-    /*
-    * Change the load state to true to signaling
-    * that a DROP a Dataverse Query is ongoing
-    */
-    case DataverseAction.DROP_DATAVERSE: {
-      return Object.assign({}, state, { 
-        dropDataverse: [],
-        dropDataverseName: action.payload,
-        dropDataverseError: [],
-        dropDataverseSuccess: false,
-        dropDataverseFailed: false
-      });
-    }
+      /*
+      * Change the load state to false, and loaded to true to signaling
+      * that a CREATE a Dataverse Query is success and there is a success message available in the
+      * store
+      */
+      case DataverseAction.CREATE_DATAVERSE_SUCCESS: {
+          return Object.assign({}, state, {
+              createDataverse: action.payload,
+              createDataverseError: [],
+              createDataverseSuccess: true,
+              createDataverseFailed: false
+          })
+      }
 
-    /*
-    * Change the load state to false, and loaded to true to signaling
-    * that a DROP a Dataverse Query is success and there is success message available in the
-    * store
-    */
-    case DataverseAction.DROP_DATAVERSE_SUCCESS: {
-      return Object.assign({}, state, {
-        dropDataverse: action.payload,
-        dropDataverseError: [],
-        dropDataverseSuccess: true,
-        dropDataverseFailed: false
-      })
-    }
+      /*
+      * Change the load state to false, and loaded to true to signaling
+      * that a CREATE a Dataverse Query is failed and there is an error message available in the
+      * store
+      */
+      case DataverseAction.CREATE_DATAVERSE_FAIL: {
+          return Object.assign({}, state, {
+              createDataverse: [],
+              createDataverseError: action.payload,
+              createDataverseSuccess: false,
+              createDataverseFailed: true
+          })
+      }
 
-     /*
-    * Change the load state to false, and loaded to true to signaling
-    * that a DROP a Dataverse Query is failed and there is an error message available in the
-    * store
-    */
-    case DataverseAction.DROP_DATAVERSE_FAIL: {
-      return Object.assign({}, state, {
-        dropDataverse: [],
-        dropDataverseError: action.payload,
-        dropDataverseSuccess: false,
-        dropDataverseFailed: true
-      })
-    }
+      /*
+      * Change the load state to true to signaling
+      * that a DROP a Dataverse Query is ongoing
+      */
+      case DataverseAction.DROP_DATAVERSE: {
+          return Object.assign({}, state, {
+              dropDataverse: [],
+              dropDataverseName: action.payload,
+              dropDataverseError: [],
+              dropDataverseSuccess: false,
+              dropDataverseFailed: false
+          });
+      }
+
+      /*
+      * Change the load state to false, and loaded to true to signaling
+      * that a DROP a Dataverse Query is success and there is success message available in the
+      * store
+      */
+      case DataverseAction.DROP_DATAVERSE_SUCCESS: {
+          return Object.assign({}, state, {
+              dropDataverse: action.payload,
+              dropDataverseError: [],
+              dropDataverseSuccess: true,
+              dropDataverseFailed: false
+          })
+      }
 
-    /*
-    * Just returns the current store/state object
-    */
-    default:
-      return state;
-  }
+      /*
+      * Change the load state to false, and loaded to true to signaling
+      * that a DROP a Dataverse Query is failed and there is an error message available in the
+      * store
+      */
+      case DataverseAction.DROP_DATAVERSE_FAIL: {
+          return Object.assign({}, state, {
+              dropDataverse: [],
+              dropDataverseError: action.payload,
+              dropDataverseSuccess: false,
+              dropDataverseFailed: true
+          })
+      }
+
+      /*
+      * Just returns the current store/state object
+      */
+      default:
+          return state;
+    }
 }

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/3e5815a7/asterixdb/asterix-dashboard/src/node/src/app/shared/reducers/index.reducer.ts
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-dashboard/src/node/src/app/shared/reducers/index.reducer.ts b/asterixdb/asterix-dashboard/src/node/src/app/shared/reducers/index.reducer.ts
index 792abc7..7d8dd33 100755
--- a/asterixdb/asterix-dashboard/src/node/src/app/shared/reducers/index.reducer.ts
+++ b/asterixdb/asterix-dashboard/src/node/src/app/shared/reducers/index.reducer.ts
@@ -11,7 +11,6 @@ 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 { Index } from '../models/asterixDB.model';
 import * as IndexAction from '../actions/index.actions';
 
 export type Action = IndexAction.All;
@@ -20,148 +19,147 @@ export type Action = IndexAction.All;
 ** Interfaces for indexes in store/state
 */
 export interface State {
-  loaded: boolean,
-  loading: boolean,
-  indexes: Index[],
-  createIndex: any[],
-  createIndexError: any[],
-  createIndexSuccess: boolean,
-  createIndexFailed: boolean,
-  dropIndex: any[],
-  dropIndexError: any[],
-  dropIndexSuccess: boolean,
-  dropIndexFailed: boolean
+    loaded: boolean,
+    loading: boolean,
+    indexes: any[],
+    createIndex: any[],
+    createIndexError: any[],
+    createIndexSuccess: boolean,
+    createIndexFailed: boolean,
+    dropIndex: any[],
+    dropIndexError: any[],
+    dropIndexSuccess: boolean,
+    dropIndexFailed: boolean
 };
 
 const initialState: State = {
-  loaded: false,
-  loading: false,
-  indexes: [],
-  createIndex: [],
-  createIndexError: [],
-  createIndexSuccess: false,
-  createIndexFailed: false,
-  dropIndex: [],
-  dropIndexError: [],
-  dropIndexSuccess: false,
-  dropIndexFailed: false
+    loaded: false,
+    loading: false,
+    indexes: [],
+    createIndex: [],
+    createIndexError: [],
+    createIndexSuccess: false,
+    createIndexFailed: false,
+    dropIndex: [],
+    dropIndexError: [],
+    dropIndexSuccess: false,
+    dropIndexFailed: false
 };
 
 /*
 ** Reducer function for indexes in store/state
 */
 export function indexReducer(state = initialState, action: Action) {
-  switch (action.type) {
+    switch (action.type) {
+        /*
+        * Change the load state to true to signaling
+        * that a SELECT Query is ongoing
+        */
+        case IndexAction.SELECT_INDEXES: {
+            return Object.assign({}, state, { loading: true });
+        }
 
-    /*
-    * Change the load state to true to signaling
-    * that a SELECT Query is ongoing
-    */
-    case IndexAction.SELECT_INDEXES: {
-      return Object.assign({}, state, { loading: true });
-    }
+        /*
+        * Change the load state to false, and loaded to true to signaling
+        * that a SELECT Query is success and there is indexes available in the
+        * store
+        */
+        case IndexAction.SELECT_INDEXES_SUCCESS: {
+            return Object.assign({}, state, {
+              loaded: true,
+              loading: false,
+              indexes: action.payload
+            })
+        }
 
-    /*
-    * Change the load state to false, and loaded to true to signaling
-    * that a SELECT Query is success and there is indexes available in the
-    * store
-    */
-    case IndexAction.SELECT_INDEXES_SUCCESS: {
-      return Object.assign({}, state, {
-        loaded: true,
-        loading: false,
-        indexes: action.payload
-      })
-    }
+        /*
+        * Change the load state to true to signaling
+        * that a CREATE a Index Query is ongoing
+        */
+        case IndexAction.CREATE_INDEX: {
+            return Object.assign({}, state, {
+              createIndex: [],
+              createIndexName: action.payload,
+              createIndexError: [],
+              createIndexSuccess: false,
+              createIndexFailed: false
+            });
+        }
 
-    /*
-    * Change the load state to true to signaling
-    * that a CREATE a Index Query is ongoing
-    */
-    case IndexAction.CREATE_INDEX: {
-      return Object.assign({}, state, { 
-        createIndex: [],
-        createIndexName: action.payload,       
-        createIndexError: [],
-        createIndexSuccess: false,
-        createIndexFailed: false
-      });
-    }
+        /*
+        * Change the load state to false, and loaded to true to signaling
+        * that a CREATE a Index Query is success and there is datasets available in the
+        * store
+        */
+        case IndexAction.CREATE_INDEX_SUCCESS: {
+            return Object.assign({}, state, {
+                createIndex: [],
+                createIndexError: [],
+                createIndexSuccess: true,
+                createIndexFailed: false
+            })
+        }
 
-    /*
-    * Change the load state to false, and loaded to true to signaling
-    * that a CREATE a Index Query is success and there is datasets available in the
-    * store
-    */
-    case IndexAction.CREATE_INDEX_SUCCESS: {
-      return Object.assign({}, state, {
-        createIndex: [],
-        createIndexError: [],
-        createIndexSuccess: true,
-        createIndexFailed: false
-      })
-    }
+        /*
+        * Change the load state to false, and loaded to true to signaling
+        * that a CREATE a Index Query is success and there is datasets available in the
+        * store
+        */
+        case IndexAction.CREATE_INDEX_SUCCESS: {
+            return Object.assign({}, state, {
+                createIndex: action.payload,
+                createIndexError: [],
+                createIndexSuccess: false,
+                createIndexFailed: true
+            })
+        }
 
-    /*
-    * Change the load state to false, and loaded to true to signaling
-    * that a CREATE a Index Query is success and there is datasets available in the
-    * store
-    */
-    case IndexAction.CREATE_INDEX_SUCCESS: {
-      return Object.assign({}, state, {
-        createIndex: action.payload,
-        createIndexError: [],
-        createIndexSuccess: false,
-        createIndexFailed: true
-      })
-    }
+        /*
+        * Change the load state to true to signaling
+        * that a DROP a Index Query is ongoing
+        */
+        case IndexAction.DROP_INDEX: {
+            return Object.assign({}, state, {
+              dropIndex: [],
+              dropIndexError: [],
+              dropIndexName: action.payload,
+              dropIndexSuccess: false,
+              dropIndexFailed: false
+            });
+        }
 
-    /*
-    * Change the load state to true to signaling
-    * that a DROP a Index Query is ongoing
-    */
-    case IndexAction.DROP_INDEX: {
-      return Object.assign({}, state, { 
-        dropIndex: [],
-        dropIndexError: [],
-        dropIndexName: action.payload,               
-        dropIndexSuccess: false,
-        dropIndexFailed: false 
-      });
-    }
+        /*
+        * Change the load state to false, and loaded to true to signaling
+        * that a DROP a Index Query is success and there is datasets available in the
+        * store
+        */
+        case IndexAction.DROP_INDEX_SUCCESS: {
+            return Object.assign({}, state, {
+                dropIndex: action.payload,
+                dropIndexError: [],
+                dropIndexSuccess: true,
+                dropIndexFailed: false
+            })
+        }
 
-    /*
-    * Change the load state to false, and loaded to true to signaling
-    * that a DROP a Index Query is success and there is datasets available in the
-    * store
-    */
-    case IndexAction.DROP_INDEX_SUCCESS: {
-      return Object.assign({}, state, {
-        dropIndex: action.payload,
-        dropIndexError: [],
-        dropIndexSuccess: true,
-        dropIndexFailed: false 
-      })
-    }
+        /*
+        * Change the load state to false, and loaded to true to signaling
+        * that a DROP a Index Query is failed and there is an error message available in the
+        * store
+        */
+        case IndexAction.DROP_INDEX_FAIL: {
+            return Object.assign({}, state, {
+                dropIndex: [],
+                dropIndexError: action.payload,
+                dropIndexSuccess: false,
+                dropIndexFailed: true
+            })
+        }
 
-    /*
-    * Change the load state to false, and loaded to true to signaling
-    * that a DROP a Index Query is failed and there is an error message available in the
-    * store
-    */
-    case IndexAction.DROP_INDEX_FAIL: {
-      return Object.assign({}, state, {
-        dropIndex: [],
-        dropIndexError: action.payload,
-        dropIndexSuccess: false,
-        dropIndexFailed: true 
-      })
+        /*
+        * Just returns the current store/state object
+        */
+        default:
+            return state;
     }
-
-    /*
-    * Just returns the current store/state object
-    */
-    default:
-      return state;
-  }
 }

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/3e5815a7/asterixdb/asterix-dashboard/src/node/src/app/shared/reducers/index.ts
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-dashboard/src/node/src/app/shared/reducers/index.ts b/asterixdb/asterix-dashboard/src/node/src/app/shared/reducers/index.ts
index 1965d8c..77b678c 100755
--- a/asterixdb/asterix-dashboard/src/node/src/app/shared/reducers/index.ts
+++ b/asterixdb/asterix-dashboard/src/node/src/app/shared/reducers/index.ts
@@ -11,39 +11,36 @@ 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 { ActionReducer } from '@ngrx/store';
 import * as fromDataverse from './dataverse.reducer';
 import * as fromDataset from './dataset.reducer';
 import * as fromDatatype from './datatype.reducer';
 import * as fromIndex from './index.reducer';
 import * as fromQuery from './query.reducer';
 import * as fromQueryMetadata from './query-metadata.reducer';
-import * as fromMetadata from './metadata.reducer';
 import * as fromAppState from './app.reducer';
 
 /*
 ** Global Interfaces store/state
 */
 export interface ModelState {
-  dataverse: fromDataverse.State,
-  dataset: fromDataset.State,
-  datatype: fromDatatype.State,
-  index: fromIndex.State,
-  sqlQuery: fromQuery.State,
-  sqlMetadataQuery: fromQueryMetadata.State,
-  metadata: fromMetadata.State,
-  appState: fromAppState.State,
+    dataverse: fromDataverse.State,
+    dataset: fromDataset.State,
+    datatype: fromDatatype.State,
+    index: fromIndex.State,
+    sqlQuery: fromQuery.State,
+    sqlMetadataQuery: fromQueryMetadata.State,
+    appState: fromAppState.State,
 }
 
 /*
 ** Global Reducers configuration
 */
 export const reducers = {
-  dataverse: fromDataverse.dataverseReducer,
-  dataset: fromDataset.datasetReducer,
-  datatype: fromDatatype.datatypeReducer,
-  index: fromIndex.indexReducer,
-  sqlQuery: fromQuery.sqlReducer,
-  sqlMetadataQuery: fromQueryMetadata.sqlMetadataReducer,
-  metadata: fromMetadata.metadataTreeReducer
-};
+    dataverse: fromDataverse.dataverseReducer,
+    dataset: fromDataset.datasetReducer,
+    datatype: fromDatatype.datatypeReducer,
+    index: fromIndex.indexReducer,
+    sqlQuery: fromQuery.sqlReducer,
+    sqlMetadataQuery: fromQueryMetadata.sqlMetadataReducer,
+    app: fromAppState.appReducer
+};
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/3e5815a7/asterixdb/asterix-dashboard/src/node/src/app/shared/reducers/metadata.reducer.ts
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-dashboard/src/node/src/app/shared/reducers/metadata.reducer.ts b/asterixdb/asterix-dashboard/src/node/src/app/shared/reducers/metadata.reducer.ts
deleted file mode 100755
index 52b88f2..0000000
--- a/asterixdb/asterix-dashboard/src/node/src/app/shared/reducers/metadata.reducer.ts
+++ /dev/null
@@ -1,56 +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 * as metadataTreeActions from '../actions/metadata.actions';
-
-export type Action = metadataTreeActions.All;
-
-/*
-** Interfaces for the metadata tree in store/state
-*/
-export interface State {
-  tree: any[],
-  loading: boolean,
-  loaded: boolean,
-};
-
-const initialState: State = {
-  tree: [],
-  loading: false,
-  loaded: false
-};
-
-export function metadataTreeReducer(state = initialState, action: Action) {
-  switch (action.type) {
-    case metadataTreeActions.UPDATE_METADATA_TREE: {
-      return Object.assign({}, state, {
-        tree: [],
-        loading: true,
-        loaded: false
-      });
-    }
-
-    case metadataTreeActions.UPDATE_METADATA_TREE_SUCCESS: {
-      return Object.assign({}, state, {
-        tree: [...state.tree, action.payload],
-        loading: false,
-        loaded: true
-      });
-    }
-    /*
-    * Just returns the current store/state object
-    */
-    default:
-      return state;
-  }
-}

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/3e5815a7/asterixdb/asterix-dashboard/src/node/src/app/shared/reducers/query-metadata.reducer.ts
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-dashboard/src/node/src/app/shared/reducers/query-metadata.reducer.ts b/asterixdb/asterix-dashboard/src/node/src/app/shared/reducers/query-metadata.reducer.ts
index e360e95..b8af934 100755
--- a/asterixdb/asterix-dashboard/src/node/src/app/shared/reducers/query-metadata.reducer.ts
+++ b/asterixdb/asterix-dashboard/src/node/src/app/shared/reducers/query-metadata.reducer.ts
@@ -11,7 +11,6 @@ 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 { AsterixDBQueryMessage } from '../models/asterixDB.model';
 import * as sqlQueryActions from '../actions/query.actions';
 
 export type Action = sqlQueryActions.All;
@@ -20,77 +19,77 @@ export type Action = sqlQueryActions.All;
 ** Interfaces for sql++ queries in store/state
 */
 export interface State {
-  loading: boolean,
-  loaded: boolean,
-  success: boolean,
-  sqlQueryMetadataString: string,
-  sqlQueryMetadataResult: AsterixDBQueryMessage[],
-  sqlQueryMetadataError: AsterixDBQueryMessage[]
+    loading: boolean,
+    loaded: boolean,
+    success: boolean,
+    sqlQueryMetadataString: string,
+    sqlQueryMetadataResult: any[],
+    sqlQueryMetadataError: any[]
 };
 
 const initialState: State = {
-  loading: false,
-  loaded: false,
-  success: false,
-  sqlQueryMetadataString: "",
-  sqlQueryMetadataResult: [],
-  sqlQueryMetadataError: [],
+    loading: false,
+    loaded: false,
+    success: false,
+    sqlQueryMetadataString: "",
+    sqlQueryMetadataResult: [],
+    sqlQueryMetadataError: [],
 };
 
 /*
 ** Reducer function for sql++ queries in store/state
 */
 export function sqlMetadataReducer(state = initialState, action: Action) {
-  switch (action.type) {
-    /*
-    * Change the load state to true, and clear previous results
-    * to signaling that a METADATA EXECUTE a SQL++ Query is ongoing
-    */
-    case sqlQueryActions.EXECUTE_METADATA_QUERY: {
-      return Object.assign({}, state, {
-        loading: false,
-        loaded: true,
-        success: false,
-        sqlQueryMetadataString: action.payload,
-        sqlQueryMetadataResult: [],
-        sqlQueryMetadataError: []
-      });
-    }
+    switch (action.type) {
+        /*
+        * Change the load state to true, and clear previous results
+        * to signaling that a METADATA EXECUTE a SQL++ Query is ongoing
+        */
+        case sqlQueryActions.EXECUTE_METADATA_QUERY: {
+            return Object.assign({}, state, {
+                loading: false,
+                loaded: true,
+                success: false,
+                sqlQueryMetadataString: action.payload,
+                sqlQueryMetadataResult: [],
+                sqlQueryMetadataError: []
+            });
+        }
 
-    /*
-    * Change the load state to false, and loaded to true to signaling
-    * that a  METADATA EXECUTE Query is success and there is data available in the
-    * store
-    */
-    case sqlQueryActions.EXECUTE_METADATA_QUERY_SUCCESS: {
-      return Object.assign({}, state, {
-        loading: false,
-        loaded: true,
-        success: true,
-        sqlQueryMetadataResult: action.payload,
-        sqlQueryMetadataError: []
-      })
-    }
+        /*
+        * Change the load state to false, and loaded to true to signaling
+        * that a  METADATA EXECUTE Query is success and there is data available in the
+        * store
+        */
+        case sqlQueryActions.EXECUTE_METADATA_QUERY_SUCCESS: {
+            return Object.assign({}, state, {
+                loading: false,
+                loaded: true,
+                success: true,
+                sqlQueryMetadataResult: action.payload,
+                sqlQueryMetadataError: []
+            })
+        }
 
-    /*
-    * Change the load state to false, and loaded to true to signaling
-    * that a  METADATA EXECUTE Query is failed and there is error data available in the
-    * store
-    */
-    case sqlQueryActions.EXECUTE_METADATA_QUERY_FAIL: {
-      return Object.assign({}, state, {
-        loading: false,
-        loaded: true,
-        success: false,
-        sqlQueryMetadataResult: [],
-        sqlQueryMetadataError: action.payload
-      })
-    }
+        /*
+        * Change the load state to false, and loaded to true to signaling
+        * that a  METADATA EXECUTE Query is failed and there is error data available in the
+        * store
+        */
+        case sqlQueryActions.EXECUTE_METADATA_QUERY_FAIL: {
+            return Object.assign({}, state, {
+                loading: false,
+                loaded: true,
+                success: false,
+                sqlQueryMetadataResult: [],
+                sqlQueryMetadataError: action.payload
+            })
+        }
 
-    /*
-    * Just returns the current store/state object
-    */
-    default:
-      return state;
-  }
+        /*
+        * Just returns the current store/state object
+        */
+        default:
+            return state;
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/3e5815a7/asterixdb/asterix-dashboard/src/node/src/app/shared/reducers/query.reducer.ts
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-dashboard/src/node/src/app/shared/reducers/query.reducer.ts b/asterixdb/asterix-dashboard/src/node/src/app/shared/reducers/query.reducer.ts
index 5c8ad08..8dc67a0 100755
--- a/asterixdb/asterix-dashboard/src/node/src/app/shared/reducers/query.reducer.ts
+++ b/asterixdb/asterix-dashboard/src/node/src/app/shared/reducers/query.reducer.ts
@@ -11,7 +11,6 @@ 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 { AsterixDBQueryMessage } from '../models/asterixDB.model';
 import * as sqlQueryActions from '../actions/query.actions';
 
 export type Action = sqlQueryActions.All;
@@ -20,78 +19,127 @@ export type Action = sqlQueryActions.All;
 ** Interfaces for sql++ queries in store/state
 */
 export interface State {
-  loading: boolean,
-  loaded: boolean,
-  success: boolean,
-  sqlQueryString: string,
-  sqlQueryResult: AsterixDBQueryMessage[],
-  sqlQueryError: AsterixDBQueryMessage[]
+    currentRequestId: string,
+    loadingHash: {},
+    loadedHash: {},
+    successHash:{},
+    errorHash: {},
+    sqlQueryString: string,
+    sqlQueryStringHash: {},
+    sqlQueryResultHash: {},
+    sqlQueryErrorHash: {},
+    sqlQueryPrepared: {},
+    sqlQueryMetrics: {}
 };
 
 const initialState: State = {
-  loading: false,
-  loaded: false,
-  success: false,
-  sqlQueryString: "",
-  sqlQueryResult: [],
-  sqlQueryError: []
+    currentRequestId: '',
+    loadingHash: {},
+    loadedHash: {},
+    successHash:{},
+    errorHash: {},
+    sqlQueryString: "",
+    sqlQueryStringHash: {},
+    sqlQueryResultHash: {},
+    sqlQueryErrorHash: {},
+    sqlQueryPrepared: {},
+    sqlQueryMetrics: {}
 };
 
 /*
 ** Reducer function for sql++ queries in store/state
 */
 export function sqlReducer(state = initialState, action: Action) {
-  switch (action.type) {
 
-    /*
-    * Change the load state to true, and clear previous results
-    * to signaling that a EXECUTE a SQL++ Query is ongoing
-    */
-    case sqlQueryActions.EXECUTE_QUERY: {
-      return Object.assign({}, state, {
-        loading: false,
-        loaded: true,
-        success: false,
-        sqlQueryString: action.payload,
-        sqlQueryResult: [],
-        sqlQueryError: []
-      });
-    }
+    switch (action.type) {
+        case sqlQueryActions.PREPARE_QUERY: {
+            return Object.assign({}, state, {
+                sqlQueryPrepared: { ...state.sqlQueryPrepared, [action.payload.editorId]: action.payload.queryString },
+                loadingHash: state.loadingHash,
+                errorHash: state.errorHash,
+                sqlQueryErrorHash: state.sqlQueryErrorHash,
+                sqlQueryResultHash: state.sqlQueryResultHash,
+                sqlQueryStringHash: state.sqlQueryStringHash,
+                sqlQueryMetrics: state.sqlQueryMetrics,
+                currentRequestId: state.currentRequestId
+            });
+        }
 
-    /*
-    * Change the load state to false, and loaded to true to signaling
-    * that a EXECUTE Query is success and there is data available in the
-    * store
-    */
-    case sqlQueryActions.EXECUTE_QUERY_SUCCESS: {
-      return Object.assign({}, state, {
-        loading: false,
-        loaded: true,
-        success: true,
-        sqlQueryResult: action.payload,
-        sqlQueryError: []
-      })
-    }
+        case sqlQueryActions.CLEAN_QUERY: {
+            return Object.assign({}, state, {
+                sqlQueryPrepared: { ...state.sqlQueryPrepared, [action.payload.editorId]: action.payload.queryString },
+                loadingHash: { ...state.loadingHash, [action.payload.editorId]: false },
+                loadedHash: { ...state.loadedHash, [action.payload.editorId]: false },
+                successHash: { ...state.successHash, [action.payload.editorId]: false },
+                errorHash: { ...state.errorHash, [action.payload.editorId]: false },
+                sqlQueryStringHash: { ...state.sqlQueryStringHash, [action.payload.editorId]: {} },
+                sqlQueryResultHash: { ...state.sqlQueryResultHash, [action.payload.editorId]: {} },
+                sqlQueryErrorHash: { ...state.sqlQueryErrorHash, [action.payload.editorId]: [] },
+                sqlQueryMetrics: { ...state.sqlQueryMetrics, [action.payload.editorId]: {} },
+                currentRequestId: action.payload.editorId
+            });
+        }
+
+        /*
+        * Change the load state to true, and clear previous results
+        * to signaling that a EXECUTE a SQL++ Query is ongoing
+        */
+        case sqlQueryActions.EXECUTE_QUERY: {
+            return Object.assign({}, state, {
+                currentRequestId: action.payload.requestId,
+                loadingHash: { ...state.loadingHash, [action.payload.requestId]: true },
+                loadedHash: { ...state.loadedHash, [action.payload.requestId]: false },
+                successHash: { ...state.successHash, [action.payload.requestId]: false },
+                errorHash: { ...state.errorHash, [action.payload.requestId]: false },
+                sqlQueryString: action.payload.queryString,
+                sqlQueryStringHash: { ...state.sqlQueryStringHash, [action.payload.requestId]: action.payload.queryString },
+                sqlQueryResultHash: { ...state.sqlQueryResultHash, [action.payload.requestId]: [] },
+                sqlQueryErrorHash: { ...state.sqlQueryErrorHash, [action.payload.requestId]: [] },
+                sqlQueryMetrics: { ...state.sqlQueryMetrics, [action.payload.requestId]: [] },
+               });
+        }
+
+        /*
+        * Change the load state to false, and loaded to true to signaling
+        * that a EXECUTE Query is success and there is data available in the
+        * store
+        */
+        case sqlQueryActions.EXECUTE_QUERY_SUCCESS: {
+            return Object.assign({}, state, {
+                loadingHash: { ...state.loadingHash, [state.currentRequestId]: false },
+                loadedHash: { ...state.loadedHash, [state.currentRequestId]: true },
+                successHash: { ...state.successHash, [state.currentRequestId]: true },
+                errorHash: { ...state.errorHash, [state.currentRequestId]: false },
+                sqlQueryStringHash: { ...state.sqlQueryStringHash, [state.currentRequestId]: state.sqlQueryString },
+                sqlQueryResultHash: { ...state.sqlQueryResultHash, [state.currentRequestId]: action.payload },
+                sqlQueryErrorHash: { ...state.sqlQueryErrorHash, [state.currentRequestId]: [] },
+                sqlQueryMetrics: { ...state.sqlQueryMetrics, [state.currentRequestId]: action.payload.metrics }
+            })
+        }
+
+        /*
+        * Change the load state to false, and loaded to true to signaling
+        * that a EXECUTE Query is failed and there is error data available in the
+        * store
+        */
+        case sqlQueryActions.EXECUTE_QUERY_FAIL: {
+            return Object.assign({}, state, {
+                loadingHash: { ...state.loadingHash, [state.currentRequestId]: false },
+                loadedHash: { ...state.loadedHash, [state.currentRequestId]: true },
+                successHash: { ...state.successHash, [state.currentRequestId]: false },
+                errorHash: { ...state.errorHash, [state.currentRequestId]: true },
+                sqlQueryStringHash: { ...state.sqlQueryStringHash, [state.currentRequestId]: state.sqlQueryString },
+                sqlQueryResultHash: { ...state.sqlQueryResultHash, [state.currentRequestId]: [] },
+                sqlQueryErrorHash: { ...state.sqlQueryErrorHash, [state.currentRequestId]: action.payload.errors },
+                sqlQueryMetrics: { ...state.sqlQueryMetrics, [state.currentRequestId]: [] },
+            })
+        }
 
-    /*
-    * Change the load state to false, and loaded to true to signaling
-    * that a EXECUTE Query is failed and there is error data available in the
-    * store
-    */
-    case sqlQueryActions.EXECUTE_QUERY_FAIL: {
-      return Object.assign({}, state, {
-        loading: false,
-        loaded: true,
-        success: false,
-        sqlQueryResult: [],
-        sqlQueryError: action.payload
-      })
+        /*
+        * Just returns the current store/state object
+        */
+        default: {
+            return state;
+        }
     }
-    
-    /*
-    * Just returns the current store/state object
-    */
-    default:
-      return state;
-  }
 }

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/3e5815a7/asterixdb/asterix-dashboard/src/node/src/app/shared/services/app-core.service.ts
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-dashboard/src/node/src/app/shared/services/app-core.service.ts b/asterixdb/asterix-dashboard/src/node/src/app/shared/services/app-core.service.ts
deleted file mode 100755
index ed38c26..0000000
--- a/asterixdb/asterix-dashboard/src/node/src/app/shared/services/app-core.service.ts
+++ /dev/null
@@ -1,38 +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 { Injectable } from '@angular/core';
-import { Store } from '@ngrx/store';
-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'
-
-/*
-* Main application service to initialize,
-* load, set App status and initial data, and synchronize app level functionality
-*/
-@Injectable()
-export class AppCoreService {
-	/*
-  	* Initialize and load metadata store structures
-	*/
-	constructor(private store: Store<any>) {
-		console.log('AsterixDB Web Console Core Service')
-		this.store.dispatch(new dataverseActions.SelectDataverses('-'));
-		this.store.dispatch(new datasetActions.SelectDatasets('-'));
-		this.store.dispatch(new datatypesActions.SelectDatatypes('-'));
-		this.store.dispatch(new indexesActions.SelectIndexes('-'));
-	}
-}