diff --git a/schema-builder/schema-builder-ui/package.json b/schema-builder/schema-builder-ui/package.json index bfd6332c3..2f5c63ca9 100644 --- a/schema-builder/schema-builder-ui/package.json +++ b/schema-builder/schema-builder-ui/package.json @@ -25,7 +25,8 @@ "@angular/platform-browser-dynamic": "^4.0.0", "@angular/platform-server": "^4.0.0", "@angular/router": "^4.0.0", - "@types/lodash": "4.14.58", + "@types/lodash": "4.14.59", + "@types/vis": "4.17.4", "angular2-prettyjson": "2.0.5", "angular2-uuid": "1.1.1", "core-js": "2.4.1", @@ -42,9 +43,8 @@ }, "devDependencies": { "@angular/cli": "^1.0.0", - "@angular/compiler-cli": "^4.0.0", "@types/hammerjs": "2.0.34", - "@types/jasmine": "2.5.46", + "@types/jasmine": "2.5.47", "@types/node": "7.0.12", "awesome-typescript-loader": "3.1.2", "codelyzer": "3.0.0-beta.4", @@ -57,8 +57,7 @@ "karma-remap-istanbul": "0.6.0", "protractor": "5.1.1", "ts-node": "3.0.2", - "tslint": "4.5.1", - "typescript": "2.2.2", + "tslint": "5.0.0", "webdriver-manager": "12.0.4" } } diff --git a/schema-builder/schema-builder-ui/src/app/app.component.ts b/schema-builder/schema-builder-ui/src/app/app.component.ts index d180f297b..beae1b2f3 100644 --- a/schema-builder/schema-builder-ui/src/app/app.component.ts +++ b/schema-builder/schema-builder-ui/src/app/app.component.ts @@ -19,6 +19,11 @@ import { Router, ActivatedRoute } from '@angular/router'; import * as _ from 'lodash'; +export interface RouteLink { + title: string, + route: string +} + @Component({ selector: 'app-root', templateUrl: 'app.component.html', @@ -26,7 +31,7 @@ import * as _ from 'lodash'; }) export class AppComponent implements AfterViewInit { activeLinkIndex: number; - pages: Array = [ + pages: Array = [ { title: "Graph", route: "graph" }, { title: "Properties", route: "properties" }, { title: "Types", route: "types" }, diff --git a/schema-builder/schema-builder-ui/src/app/graph/edge-form/edge-form.component.ts b/schema-builder/schema-builder-ui/src/app/graph/edge-form/edge-form.component.ts index 75ff6c573..9f03ae65a 100644 --- a/schema-builder/schema-builder-ui/src/app/graph/edge-form/edge-form.component.ts +++ b/schema-builder/schema-builder-ui/src/app/graph/edge-form/edge-form.component.ts @@ -16,6 +16,9 @@ import { Component, OnInit, Input } from '@angular/core'; import { LocalStorageService } from 'ng2-webstorage'; +import { DataSet, Network, Edge } from '@types/vis'; +import { NodeEntities } from '../../shared/node-entities.interface'; +import { GraphQLType } from '../../shared/graphql-type.interface'; import { FormBuilder } from '@angular/forms'; import * as _ from 'lodash'; @@ -26,11 +29,11 @@ import * as _ from 'lodash'; providers: [FormBuilder] }) export class EdgeFormComponent implements OnInit { - _edge: any; - _edges: any; - _nodes: any; - _network: any; - _storedTypes: any; + _edge: Edge; + _edges: DataSet; + _nodes: DataSet; + _network: Network; + _storedTypes: Array; nodeOptions: any; form: any; @@ -48,7 +51,7 @@ export class EdgeFormComponent implements OnInit { get nodes() { return this._nodes; } @Input() - set selectedEdge(selectedEdge: any) { + set selectedEdge(selectedEdge: string) { this._edge = this._edges.get(selectedEdge); this.updateForm(this._edge); } diff --git a/schema-builder/schema-builder-ui/src/app/graph/entity-form/entity-form.component.ts b/schema-builder/schema-builder-ui/src/app/graph/entity-form/entity-form.component.ts index 68df1fb23..10bf51ada 100644 --- a/schema-builder/schema-builder-ui/src/app/graph/entity-form/entity-form.component.ts +++ b/schema-builder/schema-builder-ui/src/app/graph/entity-form/entity-form.component.ts @@ -17,6 +17,10 @@ import { Component, OnInit, Input } from '@angular/core'; import { LocalStorageService } from 'ng2-webstorage'; import { FormBuilder } from '@angular/forms'; +import { DataSet, Network } from '@types/vis'; +import { NodeEntities } from '../../shared/node-entities.interface'; +import { GraphQLEntity } from '../../shared/graphql-entity.interface'; +import { GraphQLType } from '../../shared/graphql-type.interface'; import { UUID } from 'angular2-uuid'; import * as _ from 'lodash'; @@ -29,10 +33,10 @@ declare var $: any; providers: [FormBuilder] }) export class EntityFormComponent implements OnInit { - _node: any; - _nodes: any; - _storedTypes: any; - entities: any; + _node: NodeEntities; + _nodes: DataSet; + _storedTypes: Array; + entities: Array; form: any; @Input() @@ -42,7 +46,7 @@ export class EntityFormComponent implements OnInit { get nodes() { return this._nodes; } @Input() - set selectedNode(selectedNode: any) { + set selectedNode(selectedNode: string) { this._node = this._nodes.get(selectedNode); this.entities = this._node.entities || []; this.updateForm(this.entities); diff --git a/schema-builder/schema-builder-ui/src/app/graph/graph.component.ts b/schema-builder/schema-builder-ui/src/app/graph/graph.component.ts index 3176e202c..e5bcb5625 100644 --- a/schema-builder/schema-builder-ui/src/app/graph/graph.component.ts +++ b/schema-builder/schema-builder-ui/src/app/graph/graph.component.ts @@ -16,23 +16,28 @@ import { Component, OnInit } from '@angular/core'; import { Observable } from 'rxjs/Observable'; +import { DataSet, Network, Node, Edge, Options } from '@types/vis'; import { LocalStorageService } from 'ng2-webstorage'; import * as _ from 'lodash'; declare var vis: any; +export interface DataContainer { + nodes: DataSet, + edges: DataSet +} + @Component({ selector: 'app-graph', templateUrl: './graph.component.html', styleUrls: ['./graph.component.css'] }) export class GraphComponent implements OnInit { - nodes: any; - edges: any; - network: any; + nodes: DataSet; + edges: DataSet; + network: Network; container: any; - events: any; - data: any; - options: any; + data: DataContainer; + options: Options; selectedNode: Observable; selectedEdge: Observable; @@ -56,7 +61,7 @@ export class GraphComponent implements OnInit { saveNodes(data, callback) { if (data.label === 'new') { - data.label = 'node ' + (Object.keys(this.nodes._data).length + 1); + data.label = 'node ' + (this.nodes.get().length + 1); } callback(data); this.storage.store('graphEdges', this.edges); @@ -68,7 +73,7 @@ export class GraphComponent implements OnInit { data.length = 200; data.arrows = 'to'; if (data.label === undefined) { - data.label = 'edge ' + (Object.keys(this.edges._data).length + 1); + data.label = 'edge ' + (this.edges.get().length + 1); } } callback(data); diff --git a/schema-builder/schema-builder-ui/src/app/graph/node-form/node-form.component.ts b/schema-builder/schema-builder-ui/src/app/graph/node-form/node-form.component.ts index 1e8943cfa..e049b8c3d 100644 --- a/schema-builder/schema-builder-ui/src/app/graph/node-form/node-form.component.ts +++ b/schema-builder/schema-builder-ui/src/app/graph/node-form/node-form.component.ts @@ -16,6 +16,8 @@ import { Component, OnInit, Input } from '@angular/core'; import { LocalStorageService } from 'ng2-webstorage'; +import { DataSet, Network } from '@types/vis'; +import { NodeEntities } from '../../shared/node-entities.interface'; import { FormBuilder } from '@angular/forms'; import * as _ from 'lodash'; declare var $: any; @@ -27,9 +29,9 @@ declare var $: any; providers: [FormBuilder] }) export class NodeFormComponent implements OnInit { - _node: any; - _nodes: any; - _network: any; + _node: NodeEntities; + _nodes: DataSet; + _network: Network; form: any; @Input() diff --git a/schema-builder/schema-builder-ui/src/app/properties/properties.component.ts b/schema-builder/schema-builder-ui/src/app/properties/properties.component.ts index 147c15e6c..4bfbe15d1 100644 --- a/schema-builder/schema-builder-ui/src/app/properties/properties.component.ts +++ b/schema-builder/schema-builder-ui/src/app/properties/properties.component.ts @@ -16,6 +16,9 @@ import { Component, OnInit } from '@angular/core'; import { LocalStorageService } from 'ng2-webstorage'; +import { DataSet, Edge } from '@types/vis'; +import { GraphQLType } from '../shared/graphql-type.interface'; +import { NodeEntities } from '../shared/node-entities.interface'; import * as _ from 'lodash'; @Component({ @@ -24,9 +27,9 @@ import * as _ from 'lodash'; styleUrls: ['./properties.component.css'] }) export class PropertiesComponent implements OnInit { - edges: any; - nodes: any; - types: any; + edges: Array; + nodes: Array; + types: Array; constructor(private storage: LocalStorageService) { } diff --git a/schema-builder/schema-builder-ui/src/app/schema/schema.component.html b/schema-builder/schema-builder-ui/src/app/schema/schema.component.html index f23170229..0ad7186f7 100644 --- a/schema-builder/schema-builder-ui/src/app/schema/schema.component.html +++ b/schema-builder/schema-builder-ui/src/app/schema/schema.component.html @@ -28,12 +28,16 @@
{{validation.message}} Unknown validation error
+
+ close + {{errorMessage}} +
-
diff --git a/schema-builder/schema-builder-ui/src/app/schema/schema.component.ts b/schema-builder/schema-builder-ui/src/app/schema/schema.component.ts index 2ba97062b..3905572ab 100644 --- a/schema-builder/schema-builder-ui/src/app/schema/schema.component.ts +++ b/schema-builder/schema-builder-ui/src/app/schema/schema.component.ts @@ -40,9 +40,9 @@ export class SchemaComponent implements OnInit { commonTypes: any; validation: any; - errorMessage: any; - errorMessageURL: any; - successURL: any; + errorMessage: string; + errorMessageURL: string; + successURL: string; edgesById: any; edgesByName: any; diff --git a/schema-builder/schema-builder-ui/src/app/shared/graphql-aggregate.interface.ts b/schema-builder/schema-builder-ui/src/app/shared/graphql-aggregate.interface.ts new file mode 100644 index 000000000..aba178360 --- /dev/null +++ b/schema-builder/schema-builder-ui/src/app/shared/graphql-aggregate.interface.ts @@ -0,0 +1,4 @@ +export interface GraphQLAggregate { + class?: string, + separator?: string +} \ No newline at end of file diff --git a/schema-builder/schema-builder-ui/src/app/shared/graphql-entity.interface.ts b/schema-builder/schema-builder-ui/src/app/shared/graphql-entity.interface.ts new file mode 100644 index 000000000..e4d040299 --- /dev/null +++ b/schema-builder/schema-builder-ui/src/app/shared/graphql-entity.interface.ts @@ -0,0 +1,8 @@ +import { GraphQLProperty } from './graphql-property.interface'; + +export interface GraphQLEntity { + id: string, + name: string, + properties?: Array, + editing?: boolean +} \ No newline at end of file diff --git a/schema-builder/schema-builder-ui/src/app/shared/graphql-property.interface.ts b/schema-builder/schema-builder-ui/src/app/shared/graphql-property.interface.ts new file mode 100644 index 000000000..fed131e6d --- /dev/null +++ b/schema-builder/schema-builder-ui/src/app/shared/graphql-property.interface.ts @@ -0,0 +1,5 @@ +export interface GraphQLProperty { + id: string, + name: string, + type: string +} \ No newline at end of file diff --git a/schema-builder/schema-builder-ui/src/app/shared/graphql-type.interface.ts b/schema-builder/schema-builder-ui/src/app/shared/graphql-type.interface.ts new file mode 100644 index 000000000..381206004 --- /dev/null +++ b/schema-builder/schema-builder-ui/src/app/shared/graphql-type.interface.ts @@ -0,0 +1,12 @@ +import { GraphQLAggregate } from './graphql-aggregate.interface'; + +export interface GraphQLType { + aggregateFunction?: GraphQLAggregate, + serialiserClass?: any, + validateFunctions?: Array, + class?: string, + index?: number, + editing?: boolean, + node?: string, + type: string +} \ No newline at end of file diff --git a/schema-builder/schema-builder-ui/src/app/shared/node-entities.interface.ts b/schema-builder/schema-builder-ui/src/app/shared/node-entities.interface.ts new file mode 100644 index 000000000..f52024aa6 --- /dev/null +++ b/schema-builder/schema-builder-ui/src/app/shared/node-entities.interface.ts @@ -0,0 +1,5 @@ +import { Node } from '@types/vis'; + +export interface NodeEntities extends Node { + entities?: Array +} \ No newline at end of file diff --git a/schema-builder/schema-builder-ui/src/app/types/type-form/type-form.component.ts b/schema-builder/schema-builder-ui/src/app/types/type-form/type-form.component.ts index 56385d639..c7fa52444 100644 --- a/schema-builder/schema-builder-ui/src/app/types/type-form/type-form.component.ts +++ b/schema-builder/schema-builder-ui/src/app/types/type-form/type-form.component.ts @@ -16,6 +16,7 @@ import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core'; import { LocalStorageService } from 'ng2-webstorage'; +import { GraphQLType } from '../../shared/graphql-type.interface'; import { GafferService } from '../../services/gaffer.service'; import * as _ from 'lodash'; @@ -26,19 +27,21 @@ import * as _ from 'lodash'; providers: [GafferService] }) export class TypeFormComponent implements OnInit { - _type: any; + _type: GraphQLType; aggregateFields: any; aggregateFieldsValid: any; aggregateFieldsDisabled: any; validationFields: any; validateFieldsValid: any; functions: any; - errorMessage: any; + errorMessage: string; @Input() set type(type: any) { this._type = type; - if (!this._type.node && this._type.aggregateFunction !== null && this._type.aggregateFunction !== undefined && this._type.aggregateFunction.class !== 'NULL') { + if (!this._type.node && this._type.aggregateFunction !== null && + this._type.aggregateFunction !== undefined && this._type.aggregateFunction !== null && + this._type.aggregateFunction.class !== 'NULL') { this.aggregateFields = _.cloneDeep(this._type.aggregateFunction); this.aggregateFields.class = undefined; this.aggregateFieldsDisabled = false; @@ -86,6 +89,7 @@ export class TypeFormComponent implements OnInit { } else { this.functions = undefined; } + this._type.aggregateFunction = {}; } changeValidations(checked: boolean, validator: any) { diff --git a/schema-builder/schema-builder-ui/src/app/types/types.component.ts b/schema-builder/schema-builder-ui/src/app/types/types.component.ts index d8bfe6306..7485b30be 100644 --- a/schema-builder/schema-builder-ui/src/app/types/types.component.ts +++ b/schema-builder/schema-builder-ui/src/app/types/types.component.ts @@ -16,6 +16,7 @@ import { Component, OnInit } from '@angular/core'; import { LocalStorageService } from 'ng2-webstorage'; +import { GraphQLType } from '../shared/graphql-type.interface'; import { GafferService } from '../services/gaffer.service'; import * as _ from 'lodash'; @@ -28,7 +29,7 @@ import * as _ from 'lodash'; }) export class TypesComponent implements OnInit { - types: Array; + types: Array; nodeTypes: Array; errorMessage: any; diff --git a/schema-builder/schema-builder-ui/tsconfig.json b/schema-builder/schema-builder-ui/tsconfig.json index cde5e3505..f38ed76f0 100644 --- a/schema-builder/schema-builder-ui/tsconfig.json +++ b/schema-builder/schema-builder-ui/tsconfig.json @@ -8,7 +8,8 @@ "emitDecoratorMetadata": true, "experimentalDecorators": true, "lib": [ - "es2016" - ] + "es6" + ], + "target": "es6" } }