From 15cc3cc2867cc9cd23a6a4b5ded3014a749c54b7 Mon Sep 17 00:00:00 2001 From: Edgar Mueller Date: Thu, 7 Jul 2016 10:18:02 +0200 Subject: [PATCH 1/4] Moved JSON schema declarations to jsonforms.ts --- src/components/form/form-directive.ts | 2 +- .../renderers/controls/abstract-control.ts | 5 ++-- .../controls/array/array-directive.ts | 2 +- .../renderers/controls/enum/enum-directive.ts | 2 +- .../masterdetail/masterdetail-directives.ts | 2 +- .../pathresolver/jsonforms-pathresolver.ts | 1 + src/components/services/services.ts | 2 +- src/jsonforms.ts | 27 +++++++++++++++++++ typings/jsonschema.d.ts | 25 ----------------- 9 files changed, 36 insertions(+), 32 deletions(-) delete mode 100644 typings/jsonschema.d.ts diff --git a/src/components/form/form-directive.ts b/src/components/form/form-directive.ts index ebbc5ef38..fa0c960e3 100644 --- a/src/components/form/form-directive.ts +++ b/src/components/form/form-directive.ts @@ -15,7 +15,7 @@ import {IDataProvider} from '../services/data/data-service'; import {RuleService} from '../services/rule/rule-service'; import {DefaultDataProvider} from '../services/data/data-services'; import {RendererService} from '../renderers/renderer-service'; -import {IUISchemaElement} from '../../jsonforms'; +import {IUISchemaElement, SchemaElement} from '../../jsonforms'; export class FormController { diff --git a/src/components/renderers/controls/abstract-control.ts b/src/components/renderers/controls/abstract-control.ts index d9599881e..0af566f5b 100644 --- a/src/components/renderers/controls/abstract-control.ts +++ b/src/components/renderers/controls/abstract-control.ts @@ -4,8 +4,9 @@ import {RendererTester, NOT_FITTING} from '../renderer-service'; import {Services, ServiceId, IValidationService, ISchemaProvider} from '../../services/services'; import {IRuleService, IRuleServiceCallBack} from '../../services/rule/rule-service'; import {IDataProvider} from '../../services/data/data-service'; -import {IControlObject, IRule, IWithLabel, ILabelObject, IUISchemaElement} - from '../../../jsonforms'; +import { + IControlObject, IRule, IWithLabel, ILabelObject, IUISchemaElement, SchemaElement +} from '../../../jsonforms'; export abstract class AbstractControl implements IRuleServiceCallBack { diff --git a/src/components/renderers/controls/array/array-directive.ts b/src/components/renderers/controls/array/array-directive.ts index 6bc60cecf..c7c08f1dc 100644 --- a/src/components/renderers/controls/array/array-directive.ts +++ b/src/components/renderers/controls/array/array-directive.ts @@ -4,7 +4,7 @@ import {IPathResolver} from '../../../services/pathresolver/jsonforms-pathresolv import {PathUtil} from '../../../services/pathutil'; import {IUISchemaGenerator} from '../../../generators/generators'; import {AbstractControl, ControlRendererTester} from '../abstract-control'; -import {IUISchemaElement, IGroup} from '../../../../jsonforms'; +import {IUISchemaElement, IGroup, SchemaArray} from '../../../../jsonforms'; class ArrayReadOnlyDirective implements ng.IDirective { restrict = 'E'; diff --git a/src/components/renderers/controls/enum/enum-directive.ts b/src/components/renderers/controls/enum/enum-directive.ts index 4db2343d4..b0ecda50d 100644 --- a/src/components/renderers/controls/enum/enum-directive.ts +++ b/src/components/renderers/controls/enum/enum-directive.ts @@ -1,7 +1,7 @@ import {RendererTester, NOT_FITTING} from '../../renderer-service'; import {IPathResolver} from '../../../services/pathresolver/jsonforms-pathresolver'; import {AbstractControl} from '../abstract-control'; -import {IUISchemaElement} from '../../../../jsonforms'; +import {IUISchemaElement, SchemaElement} from '../../../../jsonforms'; class EnumDirective implements ng.IDirective { restrict = 'E'; diff --git a/src/components/renderers/layouts/masterdetail/masterdetail-directives.ts b/src/components/renderers/layouts/masterdetail/masterdetail-directives.ts index 32ff1d7da..4d3f26326 100644 --- a/src/components/renderers/layouts/masterdetail/masterdetail-directives.ts +++ b/src/components/renderers/layouts/masterdetail/masterdetail-directives.ts @@ -1,7 +1,7 @@ import {RendererTester, NOT_FITTING} from '../../renderer-service'; import {IPathResolver} from '../../../services/pathresolver/jsonforms-pathresolver'; import {AbstractControl} from '../../controls/abstract-control'; -import {IUISchemaElement} from '../../../../jsonforms'; +import {IUISchemaElement, SchemaElement} from '../../../../jsonforms'; class MasterDetailDirective implements ng.IDirective { restrict = 'E'; templateUrl = 'masterdetail.html'; diff --git a/src/components/services/pathresolver/jsonforms-pathresolver.ts b/src/components/services/pathresolver/jsonforms-pathresolver.ts index 59734b69d..5e3155b77 100644 --- a/src/components/services/pathresolver/jsonforms-pathresolver.ts +++ b/src/components/services/pathresolver/jsonforms-pathresolver.ts @@ -1,5 +1,6 @@ import {PathUtil} from '../pathutil'; +import {SchemaElement} from "../../../jsonforms"; export interface IPathResolver { toInstancePath(schemaPath: string): string; diff --git a/src/components/services/services.ts b/src/components/services/services.ts index f30425c59..118b9f5ab 100644 --- a/src/components/services/services.ts +++ b/src/components/services/services.ts @@ -1,6 +1,6 @@ import {PathResolver} from './pathresolver/jsonforms-pathresolver'; -import {IUISchemaElement} from '../../jsonforms'; +import {IUISchemaElement, SchemaElement} from '../../jsonforms'; // TODO: replace let tv4 = require('tv4'); diff --git a/src/jsonforms.ts b/src/jsonforms.ts index 685ea3208..f64b946b6 100644 --- a/src/jsonforms.ts +++ b/src/jsonforms.ts @@ -66,3 +66,30 @@ export interface JsonFormsScope extends IScope { schema: any; uiSchema: any; } + +export interface SchemaElement{ + type?: string; + enum?: SchemaElement[] +} + +export interface SchemaObject extends SchemaElement{ + //TODO: specify properties + properties?: any; + additionalProperties?: any; + required?: StringArray; +} + +export interface SchemaArray extends SchemaElement{ + //TODO: specify items + items?: any; +} + +export interface SchemaString extends SchemaElement { + format?: string +} + +// Array type +export interface StringArray{ + [index: number]: string; +} +export {AbstractControl, ControlRendererTester} from './components/renderers/controls/abstract-control' \ No newline at end of file diff --git a/typings/jsonschema.d.ts b/typings/jsonschema.d.ts deleted file mode 100644 index 27e01e4bb..000000000 --- a/typings/jsonschema.d.ts +++ /dev/null @@ -1,25 +0,0 @@ -interface SchemaElement{ - type?: string; -enum?: SchemaElement[] -} - -interface SchemaObject extends SchemaElement{ - //TODO: specify properties - properties?: any; - additionalProperties?: any; - required?: StringArray; -} - -interface SchemaArray extends SchemaElement{ - //TODO: specify items - items?: any; -} - -interface SchemaString extends SchemaElement { - format?: string -} - -// Array type -interface StringArray{ - [index: number]: string; -} \ No newline at end of file From 16ce4150a841d4c4dfe69990e6dce52eb362a49a Mon Sep 17 00:00:00 2001 From: Edgar Mueller Date: Thu, 7 Jul 2016 10:23:14 +0200 Subject: [PATCH 2/4] Configured typings in package.json and make templates inline --- .gitignore | 3 + package.json | 4 +- .../controls/boolean/boolean-directive.ts | 11 +++- src/bootstrap/controls/boolean/boolean.html | 8 --- .../controls/bootstrap-controls-directive.ts | 13 +++- src/bootstrap/controls/control.html | 10 ---- .../controls/datetime/datetime-directive.ts | 23 +++++++- .../controls/datetime/datetimeBootstrap.html | 19 ------ .../categories/categorization-directive.ts | 21 ++++++- .../layouts/categories/categorization.html | 18 ------ .../layouts/group/group-directive.ts | 14 ++++- src/bootstrap/layouts/group/group.html | 11 ---- .../horizontal/horizontal-directive.ts | 13 +++- .../layouts/horizontal/horizontal.html | 9 --- .../masterdetail/masterdetail-collection.html | 36 ----------- .../masterdetail/masterdetail-directives.ts | 59 ++++++++++++++++++- .../layouts/masterdetail/masterdetail.html | 14 ----- .../layouts/vertical/vertical-directive.ts | 11 +++- src/bootstrap/layouts/vertical/vertical.html | 7 --- src/components/form/form-directive.ts | 16 +++-- src/components/form/form.ts | 2 +- .../controls/boolean/boolean-directive.ts | 11 +++- .../renderers/controls/boolean/boolean.html | 8 --- .../renderers/controls/control.html | 10 ---- .../renderers/controls/controls-directive.ts | 13 +++- .../controls/datetime/datetime-directive.ts | 14 ++++- .../renderers/controls/datetime/datetime.html | 11 ---- .../categories/categorization-directive.ts | 18 +++++- .../layouts/categories/categorization.html | 14 ----- .../layouts/group/group-directive.ts | 13 +++- .../renderers/layouts/group/group.html | 10 ---- .../horizontal/horizontal-directive.ts | 14 ++++- .../layouts/horizontal/horizontal.html | 11 ---- .../renderers/layouts/layout-directive.ts | 3 +- src/components/renderers/layouts/layout.html | 2 - .../masterdetail/masterdetail-collection.html | 28 --------- .../masterdetail/masterdetail-directives.ts | 49 ++++++++++++++- .../layouts/masterdetail/masterdetail.html | 12 ---- .../layouts/vertical/vertical-directive.ts | 13 +++- src/index.ts | 13 ---- src/jsonforms.ts | 19 +++++- tsconfig.json | 8 ++- 42 files changed, 335 insertions(+), 281 deletions(-) delete mode 100644 src/bootstrap/controls/boolean/boolean.html delete mode 100644 src/bootstrap/controls/control.html delete mode 100644 src/bootstrap/controls/datetime/datetimeBootstrap.html delete mode 100644 src/bootstrap/layouts/categories/categorization.html delete mode 100644 src/bootstrap/layouts/group/group.html delete mode 100644 src/bootstrap/layouts/horizontal/horizontal.html delete mode 100644 src/bootstrap/layouts/masterdetail/masterdetail-collection.html delete mode 100644 src/bootstrap/layouts/masterdetail/masterdetail.html delete mode 100644 src/bootstrap/layouts/vertical/vertical.html delete mode 100644 src/components/renderers/controls/boolean/boolean.html delete mode 100644 src/components/renderers/controls/control.html delete mode 100644 src/components/renderers/controls/datetime/datetime.html delete mode 100644 src/components/renderers/layouts/categories/categorization.html delete mode 100644 src/components/renderers/layouts/group/group.html delete mode 100644 src/components/renderers/layouts/horizontal/horizontal.html delete mode 100644 src/components/renderers/layouts/layout.html delete mode 100644 src/components/renderers/layouts/masterdetail/masterdetail-collection.html delete mode 100644 src/components/renderers/layouts/masterdetail/masterdetail.html delete mode 100644 src/index.ts diff --git a/.gitignore b/.gitignore index d83b20cc6..8bea62915 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,9 @@ # generated files dist/ !dist/LICENSE +components/ +jsonforms.d.ts +jsonforms.js temp/ coverage/ reports/ diff --git a/package.json b/package.json index 52b4dbae3..b0350514b 100644 --- a/package.json +++ b/package.json @@ -6,8 +6,10 @@ "bugs": "https://github.com/eclipsesource/jsonforms/issues", "homepage": "http://github.eclipsesource.com/jsonforms/", "license": "MIT", - "main": "/", + "main": "jsonforms.js", + "typings": "jsonforms.d.ts", "scripts": { + "tsc": "tsc", "dev": "webpack --config webpack/webpack.dev.js && webpack-dev-server --config webpack/webpack.dev.js --NODE_ENV=dev --inline", "dev-bootstrap": "webpack --config webpack/webpack.dev-bootstrap.js && webpack-dev-server --config webpack/webpack.dev-bootstrap.js --NODE_ENV=dev --inline", "test": "karma start --NODE_ENV=test", diff --git a/src/bootstrap/controls/boolean/boolean-directive.ts b/src/bootstrap/controls/boolean/boolean-directive.ts index ae851c9ab..5e69b5940 100644 --- a/src/bootstrap/controls/boolean/boolean-directive.ts +++ b/src/bootstrap/controls/boolean/boolean-directive.ts @@ -1,7 +1,16 @@ +const booleanTemplate = ` + +`; + export default angular .module('jsonforms-bootstrap.renderers.controls.boolean', ['jsonforms-bootstrap.renderers.controls']) .run(['$templateCache', $templateCache => { - $templateCache.put('boolean.html', require('./boolean.html')); + $templateCache.put('boolean.html', booleanTemplate); }]) .name; diff --git a/src/bootstrap/controls/boolean/boolean.html b/src/bootstrap/controls/boolean/boolean.html deleted file mode 100644 index 098410ac6..000000000 --- a/src/bootstrap/controls/boolean/boolean.html +++ /dev/null @@ -1,8 +0,0 @@ - - - diff --git a/src/bootstrap/controls/bootstrap-controls-directive.ts b/src/bootstrap/controls/bootstrap-controls-directive.ts index 969a70980..fe7eeafbc 100644 --- a/src/bootstrap/controls/bootstrap-controls-directive.ts +++ b/src/bootstrap/controls/bootstrap-controls-directive.ts @@ -1,6 +1,17 @@ +const controlTemplate = `
+
+ +
+
+
+
+ {{alert.msg}} +
+
`; + export default angular .module('jsonforms-bootstrap.renderers.controls', ['jsonforms-bootstrap']) .run(['$templateCache', $templateCache => { - $templateCache.put('control.html', require('./control.html')); + $templateCache.put('control.html', controlTemplate); }]) .name; diff --git a/src/bootstrap/controls/control.html b/src/bootstrap/controls/control.html deleted file mode 100644 index 0fdfec4f2..000000000 --- a/src/bootstrap/controls/control.html +++ /dev/null @@ -1,10 +0,0 @@ -
-
- -
-
-
-
- {{alert.msg}} -
-
diff --git a/src/bootstrap/controls/datetime/datetime-directive.ts b/src/bootstrap/controls/datetime/datetime-directive.ts index f34818047..428387776 100644 --- a/src/bootstrap/controls/datetime/datetime-directive.ts +++ b/src/bootstrap/controls/datetime/datetime-directive.ts @@ -46,6 +46,27 @@ const DateTimeControlBootstrapRendererTester: RendererTester = function(element: } return NOT_FITTING; }; + +const datetimeTemplate = ` +
+ + + + +
+
`; + export default angular .module('jsonforms-bootstrap.renderers.controls.datetime', ['jsonforms-bootstrap.renderers.controls']) @@ -55,6 +76,6 @@ export default angular DateTimeControlBootstrapRendererTester) ]) .run(['$templateCache', $templateCache => { - $templateCache.put('datetimeBootstrap.html', require('./datetimeBootstrap.html')); + $templateCache.put('datetimeBootstrap.html', datetimeTemplate); }]) .name; diff --git a/src/bootstrap/controls/datetime/datetimeBootstrap.html b/src/bootstrap/controls/datetime/datetimeBootstrap.html deleted file mode 100644 index 4c00754ec..000000000 --- a/src/bootstrap/controls/datetime/datetimeBootstrap.html +++ /dev/null @@ -1,19 +0,0 @@ - -
- - - - -
-
diff --git a/src/bootstrap/layouts/categories/categorization-directive.ts b/src/bootstrap/layouts/categories/categorization-directive.ts index 60f2e4e9c..712ae014b 100644 --- a/src/bootstrap/layouts/categories/categorization-directive.ts +++ b/src/bootstrap/layouts/categories/categorization-directive.ts @@ -1,7 +1,26 @@ +const categorizationTemplate = ` +
+
+ + +
+ + +
+
+
+
+
+
`; + export default angular .module('jsonforms-bootstrap.renderers.layouts.categories', ['jsonforms.renderers.layouts', 'jsonforms-bootstrap']) .run(['$templateCache', $templateCache => { - $templateCache.put('categorization.html', require('./categorization.html')); + $templateCache.put('categorization.html', categorizationTemplate); }]) .name; diff --git a/src/bootstrap/layouts/categories/categorization.html b/src/bootstrap/layouts/categories/categorization.html deleted file mode 100644 index c1127d108..000000000 --- a/src/bootstrap/layouts/categories/categorization.html +++ /dev/null @@ -1,18 +0,0 @@ - -
-
- - -
- - -
-
-
-
-
-
diff --git a/src/bootstrap/layouts/group/group-directive.ts b/src/bootstrap/layouts/group/group-directive.ts index 74c7c510a..ef8cf91cb 100644 --- a/src/bootstrap/layouts/group/group-directive.ts +++ b/src/bootstrap/layouts/group/group-directive.ts @@ -1,7 +1,19 @@ +const groupTemplate = ` +
+
+ {{vm.label}} + + +
+
+
`; + export default angular .module('jsonforms-bootstrap.renderers.layouts.group', ['jsonforms.renderers.layouts', 'jsonforms-bootstrap']) .run(['$templateCache', $templateCache => { - $templateCache.put('group.html', require('./group.html')); + $templateCache.put('group.html', groupTemplate); }]) .name; diff --git a/src/bootstrap/layouts/group/group.html b/src/bootstrap/layouts/group/group.html deleted file mode 100644 index 1f033fc9a..000000000 --- a/src/bootstrap/layouts/group/group.html +++ /dev/null @@ -1,11 +0,0 @@ - -
-
- {{vm.label}} - - -
-
-
diff --git a/src/bootstrap/layouts/horizontal/horizontal-directive.ts b/src/bootstrap/layouts/horizontal/horizontal-directive.ts index 94d7d99c2..89ce28c54 100644 --- a/src/bootstrap/layouts/horizontal/horizontal-directive.ts +++ b/src/bootstrap/layouts/horizontal/horizontal-directive.ts @@ -34,6 +34,17 @@ const BootstrapHorizontalLayoutRendererTester: RendererTester = function(element } return 3; }; + +const horizontalTemplate = ` +
+
+
+ +
+
+
+
`; + export default angular .module('jsonforms-bootstrap.renderers.layouts.horizontal', ['jsonforms.renderers.layouts', 'jsonforms-bootstrap']) @@ -43,6 +54,6 @@ export default angular BootstrapHorizontalLayoutRendererTester) ]) .run(['$templateCache', $templateCache => { - $templateCache.put('horizontal.html', require('./horizontal.html')); + $templateCache.put('horizontal.html', horizontalTemplate); }]) .name; diff --git a/src/bootstrap/layouts/horizontal/horizontal.html b/src/bootstrap/layouts/horizontal/horizontal.html deleted file mode 100644 index 9a9af06d7..000000000 --- a/src/bootstrap/layouts/horizontal/horizontal.html +++ /dev/null @@ -1,9 +0,0 @@ - -
-
-
- -
-
-
-
diff --git a/src/bootstrap/layouts/masterdetail/masterdetail-collection.html b/src/bootstrap/layouts/masterdetail/masterdetail-collection.html deleted file mode 100644 index d9bf477ca..000000000 --- a/src/bootstrap/layouts/masterdetail/masterdetail-collection.html +++ /dev/null @@ -1,36 +0,0 @@ -
- - - - {{key}} - - - - - - - - - {{child.name!=undefined?child.name:child}} - - - -
- -
-
-
-
-
-
diff --git a/src/bootstrap/layouts/masterdetail/masterdetail-directives.ts b/src/bootstrap/layouts/masterdetail/masterdetail-directives.ts index 3fa44e0d4..62145d84e 100644 --- a/src/bootstrap/layouts/masterdetail/masterdetail-directives.ts +++ b/src/bootstrap/layouts/masterdetail/masterdetail-directives.ts @@ -1,11 +1,64 @@ +const masterDetailTemplate = ` +
+ +
+ + +
+ +
+ +
+
`; + +const masterDetailCollectionTemplate = ` +
+ + + + {{key}} + + + + + + + + + {{child.name!=undefined?child.name:child}} + + + +
+ +
+
+
+
+
+
`; + export default angular .module('jsonforms-bootstrap.renderers.layouts.masterdetail', ['jsonforms.renderers.layouts', 'jsonforms-bootstrap']) .run(['$templateCache', $templateCache => { - $templateCache.put('masterdetail.html', require('./masterdetail.html')); + $templateCache.put('masterdetail.html', masterDetailTemplate); }]) .run(['$templateCache', $templateCache => { - $templateCache.put('masterdetail-collection.html', - require('./masterdetail-collection.html')); + $templateCache.put('masterdetail-collection.html', masterDetailCollectionTemplate); }]) .name; diff --git a/src/bootstrap/layouts/masterdetail/masterdetail.html b/src/bootstrap/layouts/masterdetail/masterdetail.html deleted file mode 100644 index c7f0d043b..000000000 --- a/src/bootstrap/layouts/masterdetail/masterdetail.html +++ /dev/null @@ -1,14 +0,0 @@ -
- -
- - -
- -
- -
-
diff --git a/src/bootstrap/layouts/vertical/vertical-directive.ts b/src/bootstrap/layouts/vertical/vertical-directive.ts index 232d5d40e..6162fca04 100644 --- a/src/bootstrap/layouts/vertical/vertical-directive.ts +++ b/src/bootstrap/layouts/vertical/vertical-directive.ts @@ -1,7 +1,16 @@ +const verticalTemplate = ` + +
+
+ +
+
+
`; + export default angular .module('jsonforms-bootstrap.renderers.layouts.vertical', ['jsonforms.renderers.layouts', 'jsonforms-bootstrap']) .run(['$templateCache', $templateCache => { - $templateCache.put('vertical.html', require('./vertical.html')); + $templateCache.put('vertical.html', verticalTemplate); }]) .name; diff --git a/src/bootstrap/layouts/vertical/vertical.html b/src/bootstrap/layouts/vertical/vertical.html deleted file mode 100644 index 8a1244ac2..000000000 --- a/src/bootstrap/layouts/vertical/vertical.html +++ /dev/null @@ -1,7 +0,0 @@ - -
-
- -
-
-
diff --git a/src/components/form/form-directive.ts b/src/components/form/form-directive.ts index fa0c960e3..cefe4928a 100644 --- a/src/components/form/form-directive.ts +++ b/src/components/form/form-directive.ts @@ -21,7 +21,7 @@ export class FormController { static $inject = ['RendererService', 'PathResolver', 'UiSchemaRegistry', 'SchemaGenerator', '$compile', '$q', '$scope']; - + public element: any; public uiSchema: IUISchemaElement; private isInitialized = false; @@ -166,11 +166,19 @@ export interface JsonFormsDirectiveScope extends ng.IScope { data: any; } +const formTemplate = ` +
+
+
`; -export class JsonFormsDirective implements ng.IDirective { +export class JsonFormsDirective implements ng.IDirective { + static $inject = ['$templateCache']; + constructor($templateCache: ng.ITemplateCacheService) { + $templateCache.put('form.html', formTemplate); + } restrict = 'E'; - template = require('./form.html'); + templateUrl = 'form.html'; controller = FormController; controllerAs = 'vm'; // we can't use bindToController because we want watchers @@ -219,7 +227,7 @@ export interface JsonFormsInnerDirectiveScope extends ng.IScope { export class JsonFormsInnerDirective implements ng.IDirective { restrict = 'E'; - template = require('./form.html'); + templateUrl = 'form.html'; controller = InnerFormController; controllerAs = 'vm'; bindToController = { diff --git a/src/components/form/form.ts b/src/components/form/form.ts index d3afb71e1..387cef351 100644 --- a/src/components/form/form.ts +++ b/src/components/form/form.ts @@ -62,6 +62,6 @@ export default angular masterDetailDirectives, ]) - .directive('jsonforms', () => new JsonFormsDirective()) + .directive('jsonforms', ['$templateCache', ($templateCache) => new JsonFormsDirective($templateCache)]) .directive('jsonformsInner', () => new JsonFormsInnerDirective()) .name; diff --git a/src/components/renderers/controls/boolean/boolean-directive.ts b/src/components/renderers/controls/boolean/boolean-directive.ts index 8005d9570..173ee7f1c 100644 --- a/src/components/renderers/controls/boolean/boolean-directive.ts +++ b/src/components/renderers/controls/boolean/boolean-directive.ts @@ -17,6 +17,15 @@ class BooleanController extends AbstractControl { } } +const booleanTemplate = ` + +`; + export default angular .module('jsonforms.renderers.controls.boolean', ['jsonforms.renderers.controls']) .directive('booleanControl', () => new BooleanDirective()) @@ -24,6 +33,6 @@ export default angular RendererService.register('boolean-control', ControlRendererTester('boolean', 1)) ]) .run(['$templateCache', $templateCache => { - $templateCache.put('boolean.html', require('./boolean.html')); + $templateCache.put('boolean.html', booleanTemplate); }]) .name; diff --git a/src/components/renderers/controls/boolean/boolean.html b/src/components/renderers/controls/boolean/boolean.html deleted file mode 100644 index 098410ac6..000000000 --- a/src/components/renderers/controls/boolean/boolean.html +++ /dev/null @@ -1,8 +0,0 @@ - - - diff --git a/src/components/renderers/controls/control.html b/src/components/renderers/controls/control.html deleted file mode 100644 index 1ba807d1f..000000000 --- a/src/components/renderers/controls/control.html +++ /dev/null @@ -1,10 +0,0 @@ -
-
- -
-
-
-
- {{alert.msg}} -
-
diff --git a/src/components/renderers/controls/controls-directive.ts b/src/components/renderers/controls/controls-directive.ts index 952b756a3..6ace90eb5 100644 --- a/src/components/renderers/controls/controls-directive.ts +++ b/src/components/renderers/controls/controls-directive.ts @@ -1,3 +1,14 @@ +const controlTemplate = `
+
+ +
+
+
+
+ {{alert.msg}} +
+
`; + class ControlDirective implements ng.IDirective { restrict = 'E'; transclude = true; @@ -8,6 +19,6 @@ export default angular .module('jsonforms.renderers.controls', ['jsonforms.renderers']) .directive('jsonformsControl', () => new ControlDirective) .run(['$templateCache', $templateCache => { - $templateCache.put('control.html', require('./control.html')); + $templateCache.put('control.html', controlTemplate); }]) .name; diff --git a/src/components/renderers/controls/datetime/datetime-directive.ts b/src/components/renderers/controls/datetime/datetime-directive.ts index 37e957f71..e2d32161d 100644 --- a/src/components/renderers/controls/datetime/datetime-directive.ts +++ b/src/components/renderers/controls/datetime/datetime-directive.ts @@ -50,6 +50,18 @@ const DateTimeControlRendererTester: RendererTester = function(element: IUISchem return NOT_FITTING; }; +const datetimeTemplate = ` + +`; + export default angular .module('jsonforms.renderers.controls.datetime', ['jsonforms.renderers.controls']) .directive('datetimeControl', () => new DateTimeDirective()) @@ -57,6 +69,6 @@ export default angular RendererService.register('datetime-control', DateTimeControlRendererTester) ]) .run(['$templateCache', $templateCache => { - $templateCache.put('datetime.html', require('./datetime.html')); + $templateCache.put('datetime.html', datetimeTemplate); }]) .name; diff --git a/src/components/renderers/controls/datetime/datetime.html b/src/components/renderers/controls/datetime/datetime.html deleted file mode 100644 index 66e2fadc8..000000000 --- a/src/components/renderers/controls/datetime/datetime.html +++ /dev/null @@ -1,11 +0,0 @@ - - - diff --git a/src/components/renderers/layouts/categories/categorization-directive.ts b/src/components/renderers/layouts/categories/categorization-directive.ts index c95f6f58e..e49f46e34 100644 --- a/src/components/renderers/layouts/categories/categorization-directive.ts +++ b/src/components/renderers/layouts/categories/categorization-directive.ts @@ -21,6 +21,22 @@ class CategorizationController extends AbstractLayout { this.selectedCategory = category; } } + +const categorizationTemplate = ` +
+
+
    +
  • + {{category.label}} +
  • +
+
+
+ +
+
+
`; + const CategorizationLayoutRendererTester: RendererTester = function(element: IUISchemaElement, dataSchema: any, dataObject: any, @@ -37,6 +53,6 @@ export default angular RendererService.register('categorization', CategorizationLayoutRendererTester) ]) .run(['$templateCache', $templateCache => { - $templateCache.put('categorization.html', require('./categorization.html')); + $templateCache.put('categorization.html', categorizationTemplate); }]) .name; diff --git a/src/components/renderers/layouts/categories/categorization.html b/src/components/renderers/layouts/categories/categorization.html deleted file mode 100644 index 601f4558c..000000000 --- a/src/components/renderers/layouts/categories/categorization.html +++ /dev/null @@ -1,14 +0,0 @@ - -
-
-
    -
  • - {{category.label}} -
  • -
-
-
- -
-
-
diff --git a/src/components/renderers/layouts/group/group-directive.ts b/src/components/renderers/layouts/group/group-directive.ts index be30162cf..38fa2c372 100644 --- a/src/components/renderers/layouts/group/group-directive.ts +++ b/src/components/renderers/layouts/group/group-directive.ts @@ -29,6 +29,17 @@ const GroupLayoutRendererTester: RendererTester = function(element: IUISchemaEle return 2; }; +const groupTemplate = ` +
+
+ {{vm.label}} + + +
+
+
`; + export default angular .module('jsonforms.renderers.layouts.group', ['jsonforms.renderers.layouts']) .directive('grouplayout', () => new GroupDirective()) @@ -36,6 +47,6 @@ export default angular RendererService.register('grouplayout', GroupLayoutRendererTester) ]) .run(['$templateCache', $templateCache => { - $templateCache.put('group.html', require('./group.html')); + $templateCache.put('group.html', groupTemplate); }]) .name; diff --git a/src/components/renderers/layouts/group/group.html b/src/components/renderers/layouts/group/group.html deleted file mode 100644 index e9c4e393c..000000000 --- a/src/components/renderers/layouts/group/group.html +++ /dev/null @@ -1,10 +0,0 @@ - -
-
- {{vm.label}} - - -
-
-
diff --git a/src/components/renderers/layouts/horizontal/horizontal-directive.ts b/src/components/renderers/layouts/horizontal/horizontal-directive.ts index 469f0ca02..19acf716b 100644 --- a/src/components/renderers/layouts/horizontal/horizontal-directive.ts +++ b/src/components/renderers/layouts/horizontal/horizontal-directive.ts @@ -43,6 +43,18 @@ const HorizontalLayoutRendererTester: RendererTester = function(element: IUISche return 2; }; +const horizontalTemplate = ` +
+
+
+
+ +
+
+
+
+
`; + export default angular .module('jsonforms.renderers.layouts.horizontal', ['jsonforms.renderers.layouts']) .directive('horizontallayout', () => new HorizontalDirective()) @@ -50,6 +62,6 @@ export default angular RendererService.register('horizontallayout', HorizontalLayoutRendererTester) ]) .run(['$templateCache', $templateCache => { - $templateCache.put('horizontal.html', require('./horizontal.html')); + $templateCache.put('horizontal.html', horizontalTemplate); }]) .name; diff --git a/src/components/renderers/layouts/horizontal/horizontal.html b/src/components/renderers/layouts/horizontal/horizontal.html deleted file mode 100644 index 23678374f..000000000 --- a/src/components/renderers/layouts/horizontal/horizontal.html +++ /dev/null @@ -1,11 +0,0 @@ - -
-
-
-
- -
-
-
-
-
diff --git a/src/components/renderers/layouts/layout-directive.ts b/src/components/renderers/layouts/layout-directive.ts index a01f80101..d7b86c283 100644 --- a/src/components/renderers/layouts/layout-directive.ts +++ b/src/components/renderers/layouts/layout-directive.ts @@ -1,3 +1,4 @@ +const layoutTemplate = `
`; export default angular .module('jsonforms.renderers.layouts', ['jsonforms.renderers']) @@ -9,6 +10,6 @@ export default angular }; }) .run(['$templateCache', $templateCache => { - $templateCache.put('layout.html', require('./layout.html')); + $templateCache.put('layout.html', layoutTemplate); }]) .name; diff --git a/src/components/renderers/layouts/layout.html b/src/components/renderers/layouts/layout.html deleted file mode 100644 index ecf9a99b6..000000000 --- a/src/components/renderers/layouts/layout.html +++ /dev/null @@ -1,2 +0,0 @@ -
-
diff --git a/src/components/renderers/layouts/masterdetail/masterdetail-collection.html b/src/components/renderers/layouts/masterdetail/masterdetail-collection.html deleted file mode 100644 index ffed9e493..000000000 --- a/src/components/renderers/layouts/masterdetail/masterdetail-collection.html +++ /dev/null @@ -1,28 +0,0 @@ -
-
    -
  • -
    - {{key}} - - -
    -
      -
    • -
      - - {{child.name!=undefined?child.name:child}} - - -
      -
      - -
      -
    • -
    -
  • -
-
diff --git a/src/components/renderers/layouts/masterdetail/masterdetail-directives.ts b/src/components/renderers/layouts/masterdetail/masterdetail-directives.ts index 4d3f26326..59b1a86b8 100644 --- a/src/components/renderers/layouts/masterdetail/masterdetail-directives.ts +++ b/src/components/renderers/layouts/masterdetail/masterdetail-directives.ts @@ -117,6 +117,50 @@ class MasterDetailMember implements angular.IDirective { } } +const masterDetailTemplate = ` +
+ +
+ + +
+ +
+ +
+
`; + +const masterDetailCollectionTemplate = ` +
+
    +
  • +
    + {{key}} + + +
    +
      +
    • +
      + + {{child.name!=undefined?child.name:child}} + + +
      +
      + +
      +
    • +
    +
  • +
+
`; + export default angular .module('jsonforms.renderers.layouts.masterdetail', ['jsonforms.renderers.layouts']) .directive('masterDetail', () => new MasterDetailDirective()) @@ -124,11 +168,10 @@ export default angular RendererService.register('master-detail', MasterDetailControlRendererTester) ]) .run(['$templateCache', $templateCache => { - $templateCache.put('masterdetail.html', require('./masterdetail.html')); + $templateCache.put('masterdetail.html', masterDetailTemplate); }]) .run(['$templateCache', $templateCache => { - $templateCache.put('masterdetail-collection.html', - require('./masterdetail-collection.html')); + $templateCache.put('masterdetail-collection.html', masterDetailCollectionTemplate); }]) .directive('jsonformsMasterdetailCollection', () => new MasterDetailCollectionDirective()) .directive('jsonformsMasterdetailMember', () => new MasterDetailMember()) diff --git a/src/components/renderers/layouts/masterdetail/masterdetail.html b/src/components/renderers/layouts/masterdetail/masterdetail.html deleted file mode 100644 index a724fb758..000000000 --- a/src/components/renderers/layouts/masterdetail/masterdetail.html +++ /dev/null @@ -1,12 +0,0 @@ -
- -
- - -
- -
- -
-
diff --git a/src/components/renderers/layouts/vertical/vertical-directive.ts b/src/components/renderers/layouts/vertical/vertical-directive.ts index 1e377ca20..d6dc6177a 100644 --- a/src/components/renderers/layouts/vertical/vertical-directive.ts +++ b/src/components/renderers/layouts/vertical/vertical-directive.ts @@ -27,6 +27,17 @@ const VerticalLayoutRendererTester: RendererTester = function(element: IUISchema return 2; }; +const verticalTemplate = ` + +
+
+
+ +
+
+
+
`; + export default angular .module('jsonforms.renderers.layouts.vertical', ['jsonforms.renderers.layouts']) .directive('verticallayout', () => new VerticalDirective()) @@ -34,6 +45,6 @@ export default angular RendererService.register('verticallayout', VerticalLayoutRendererTester) ]) .run(['$templateCache', $templateCache => { - $templateCache.put('vertical.html', require('./vertical.html')); + $templateCache.put('vertical.html', verticalTemplate); }]) .name; diff --git a/src/index.ts b/src/index.ts deleted file mode 100644 index 2c86941ad..000000000 --- a/src/index.ts +++ /dev/null @@ -1,13 +0,0 @@ -import 'angular'; -import form from './components/form/form'; -import capitalize from './components/ng-services/capitalize/capitalize.filter'; -import pathResolver from './components/ng-services/pathresolver/pathresolver-service'; - -require('angular-ui-validate'); - -export default angular.module('jsonforms', [ - 'ui.validate', - form, - capitalize, - pathResolver -]).name; diff --git a/src/jsonforms.ts b/src/jsonforms.ts index f64b946b6..1c3a30f00 100644 --- a/src/jsonforms.ts +++ b/src/jsonforms.ts @@ -1,4 +1,20 @@ +import 'angular'; +import form from './components/form/form'; +import capitalize from './components/ng-services/capitalize/capitalize.filter'; +import pathResolver from './components/ng-services/pathresolver/pathresolver-service'; + +require('angular-ui-validate'); + +export default angular.module('jsonforms', [ + 'ui.validate', + form, + capitalize, + pathResolver +]).name; + + + import IScope = angular.IScope; export interface IRule { effect: RuleEffect; @@ -92,4 +108,5 @@ export interface SchemaString extends SchemaElement { export interface StringArray{ [index: number]: string; } -export {AbstractControl, ControlRendererTester} from './components/renderers/controls/abstract-control' \ No newline at end of file +export {AbstractControl, ControlRendererTester} from './components/renderers/controls/abstract-control' +export {IPathResolver} from './components/services/pathresolver/jsonforms-pathresolver'; diff --git a/tsconfig.json b/tsconfig.json index 3e04bf01f..b13b43cbe 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -7,10 +7,14 @@ "declaration":true, "module": "commonjs", "experimentalDecorators": true, - "outDir": "dist" + "outDir": "." }, + "files": [ + "./src/jsonforms.ts", + "./typings/main.d.ts", + "./src/declarations.d.ts" + ], "exclude": [ - "out", "node_modules", "dist", "dev", From 631ee57a1e719a5f44231734ff6b47ae546a2e05 Mon Sep 17 00:00:00 2001 From: Edgar Mueller Date: Thu, 7 Jul 2016 19:28:07 +0200 Subject: [PATCH 3/4] Take Eugen's feedback into account --- .../controls/datetime/datetime-directive.ts | 2 +- src/components/form/form-directive.ts | 15 +++-- src/components/form/form.ts | 7 +-- .../generators/jsonforms-uischemagenerator.ts | 2 +- .../uischemaregistry-service.ts | 2 +- .../renderers/controls/abstract-control.ts | 5 +- .../controls/array/array-directive.ts | 3 +- .../controls/datetime/datetime-directive.ts | 2 +- .../renderers/controls/enum/enum-directive.ts | 3 +- .../controls/reference/reference-directive.ts | 2 +- .../controls/string/string-directive.ts | 3 +- .../renderers/extras/label/label-directive.ts | 3 +- .../renderers/layouts/abstract-layout.ts | 2 +- .../categories/categorization-directive.ts | 2 +- .../layouts/group/group-directive.ts | 3 +- .../horizontal/horizontal-directive.ts | 3 +- .../masterdetail/masterdetail-directives.ts | 4 +- .../layouts/vertical/vertical-directive.ts | 2 +- .../renderers/norenderer-directive.ts | 3 +- src/components/renderers/renderer-service.ts | 2 +- .../pathresolver/jsonforms-pathresolver.ts | 2 +- src/components/services/rule/rule-service.ts | 3 +- src/components/services/services.ts | 4 +- src/index.ts | 26 +++++++++ src/jsonschema.ts | 25 +++++++++ src/{jsonforms.ts => uischema.ts} | 56 ++----------------- tsconfig.json | 2 +- 27 files changed, 103 insertions(+), 85 deletions(-) create mode 100644 src/index.ts create mode 100644 src/jsonschema.ts rename src/{jsonforms.ts => uischema.ts} (50%) diff --git a/src/bootstrap/controls/datetime/datetime-directive.ts b/src/bootstrap/controls/datetime/datetime-directive.ts index 428387776..b4645cab8 100644 --- a/src/bootstrap/controls/datetime/datetime-directive.ts +++ b/src/bootstrap/controls/datetime/datetime-directive.ts @@ -1,8 +1,8 @@ import {RendererTester, NOT_FITTING} from '../../../components/renderers/renderer-service'; -import {IUISchemaElement} from '../../../jsonforms'; import {IPathResolver} from '../../../components/services/pathresolver/jsonforms-pathresolver'; import {DateTimeController, DateTimeControllerScope} from '../../../components/renderers/controls/datetime/datetime-directive'; +import {IUISchemaElement} from "../../../../uischema"; class DateTimeDirective implements ng.IDirective { restrict = 'E'; diff --git a/src/components/form/form-directive.ts b/src/components/form/form-directive.ts index cefe4928a..9da2a6117 100644 --- a/src/components/form/form-directive.ts +++ b/src/components/form/form-directive.ts @@ -15,7 +15,8 @@ import {IDataProvider} from '../services/data/data-service'; import {RuleService} from '../services/rule/rule-service'; import {DefaultDataProvider} from '../services/data/data-services'; import {RendererService} from '../renderers/renderer-service'; -import {IUISchemaElement, SchemaElement} from '../../jsonforms'; +import {IUISchemaElement} from '../../uischema'; +import {SchemaElement} from '../../jsonschema'; export class FormController { @@ -173,10 +174,6 @@ const formTemplate = ` export class JsonFormsDirective implements ng.IDirective { - static $inject = ['$templateCache']; - constructor($templateCache: ng.ITemplateCacheService) { - $templateCache.put('form.html', formTemplate); - } restrict = 'E'; templateUrl = 'form.html'; controller = FormController; @@ -239,3 +236,11 @@ export class JsonFormsInnerDirective implements ng.IDirective { ctrl.init(); } } + +export default angular.module("jsonforms.form.directives", ["jsonforms.form"]) + .directive('jsonforms', () => new JsonFormsDirective()) + .directive('jsonformsInner', () => new JsonFormsInnerDirective()) + .run(['$templateCache', ($templateCache: ng.ITemplateCacheService) => + $templateCache.put('form.html', formTemplate)] + ) + .name; \ No newline at end of file diff --git a/src/components/form/form.ts b/src/components/form/form.ts index 387cef351..a7d391c90 100644 --- a/src/components/form/form.ts +++ b/src/components/form/form.ts @@ -27,11 +27,10 @@ import arrayControlDirective from '../renderers/controls/array/array-directive'; import referenceControlDirective from '../renderers/controls/reference/reference-directive'; import datetimeControlDirective from '../renderers/controls/datetime/datetime-directive'; import enumControlDirective from '../renderers/controls/enum/enum-directive'; +import formsDirective from '../form/form-directive'; import norendererDirective from '../renderers/norenderer-directive'; -import {JsonFormsDirective, JsonFormsInnerDirective} from './form-directive'; - export default angular .module('jsonforms.form', [ rendererService, @@ -41,6 +40,8 @@ export default angular uiSchemaGenerator, schemaGenerator, + formsDirective, + controlDirective, layoutDirective, norendererDirective, @@ -62,6 +63,4 @@ export default angular masterDetailDirectives, ]) - .directive('jsonforms', ['$templateCache', ($templateCache) => new JsonFormsDirective($templateCache)]) - .directive('jsonformsInner', () => new JsonFormsInnerDirective()) .name; diff --git a/src/components/generators/jsonforms-uischemagenerator.ts b/src/components/generators/jsonforms-uischemagenerator.ts index 73314f483..62df8035e 100644 --- a/src/components/generators/jsonforms-uischemagenerator.ts +++ b/src/components/generators/jsonforms-uischemagenerator.ts @@ -2,7 +2,7 @@ import {IUISchemaGenerator} from './generators'; import {PathUtil} from '../services/pathutil'; -import {IUISchemaElement, IControlObject, ILayout} from '../../jsonforms'; +import {IUISchemaElement, IControlObject, ILayout} from '../../uischema'; export class UISchemaGenerator implements IUISchemaGenerator { diff --git a/src/components/ng-services/uischemaregistry/uischemaregistry-service.ts b/src/components/ng-services/uischemaregistry/uischemaregistry-service.ts index 1f4ceb2ba..4a54b2d41 100644 --- a/src/components/ng-services/uischemaregistry/uischemaregistry-service.ts +++ b/src/components/ng-services/uischemaregistry/uischemaregistry-service.ts @@ -1,4 +1,4 @@ -import {IUISchemaElement} from '../../../jsonforms'; +import {IUISchemaElement} from '../../../uischema'; import {IUISchemaGenerator} from '../../generators/generators'; export interface UiSchemaRegistry { diff --git a/src/components/renderers/controls/abstract-control.ts b/src/components/renderers/controls/abstract-control.ts index 0af566f5b..c86f775a0 100644 --- a/src/components/renderers/controls/abstract-control.ts +++ b/src/components/renderers/controls/abstract-control.ts @@ -4,9 +4,8 @@ import {RendererTester, NOT_FITTING} from '../renderer-service'; import {Services, ServiceId, IValidationService, ISchemaProvider} from '../../services/services'; import {IRuleService, IRuleServiceCallBack} from '../../services/rule/rule-service'; import {IDataProvider} from '../../services/data/data-service'; -import { - IControlObject, IRule, IWithLabel, ILabelObject, IUISchemaElement, SchemaElement -} from '../../../jsonforms'; +import {IRule, IControlObject, IWithLabel, ILabelObject, IUISchemaElement} from "../../../uischema"; +import {SchemaElement} from "../../../jsonschema"; export abstract class AbstractControl implements IRuleServiceCallBack { diff --git a/src/components/renderers/controls/array/array-directive.ts b/src/components/renderers/controls/array/array-directive.ts index c7c08f1dc..82aa0e1b4 100644 --- a/src/components/renderers/controls/array/array-directive.ts +++ b/src/components/renderers/controls/array/array-directive.ts @@ -4,7 +4,8 @@ import {IPathResolver} from '../../../services/pathresolver/jsonforms-pathresolv import {PathUtil} from '../../../services/pathutil'; import {IUISchemaGenerator} from '../../../generators/generators'; import {AbstractControl, ControlRendererTester} from '../abstract-control'; -import {IUISchemaElement, IGroup, SchemaArray} from '../../../../jsonforms'; +import {IUISchemaElement, IGroup} from '../../../../uischema'; +import {SchemaArray} from "../../../../jsonschema"; class ArrayReadOnlyDirective implements ng.IDirective { restrict = 'E'; diff --git a/src/components/renderers/controls/datetime/datetime-directive.ts b/src/components/renderers/controls/datetime/datetime-directive.ts index e2d32161d..3937171e1 100644 --- a/src/components/renderers/controls/datetime/datetime-directive.ts +++ b/src/components/renderers/controls/datetime/datetime-directive.ts @@ -1,7 +1,7 @@ import {RendererTester, NOT_FITTING} from '../../renderer-service'; import {IPathResolver} from '../../../services/pathresolver/jsonforms-pathresolver'; import {AbstractControl} from '../abstract-control'; -import {IUISchemaElement} from '../../../../jsonforms'; +import {IUISchemaElement} from "../../../../uischema"; class DateTimeDirective implements ng.IDirective { restrict = 'E'; diff --git a/src/components/renderers/controls/enum/enum-directive.ts b/src/components/renderers/controls/enum/enum-directive.ts index b0ecda50d..c3c1c9b87 100644 --- a/src/components/renderers/controls/enum/enum-directive.ts +++ b/src/components/renderers/controls/enum/enum-directive.ts @@ -1,7 +1,8 @@ import {RendererTester, NOT_FITTING} from '../../renderer-service'; import {IPathResolver} from '../../../services/pathresolver/jsonforms-pathresolver'; import {AbstractControl} from '../abstract-control'; -import {IUISchemaElement, SchemaElement} from '../../../../jsonforms'; +import {SchemaElement} from "../../../../jsonschema"; +import {IUISchemaElement} from "../../../../uischema"; class EnumDirective implements ng.IDirective { restrict = 'E'; diff --git a/src/components/renderers/controls/reference/reference-directive.ts b/src/components/renderers/controls/reference/reference-directive.ts index d6c1720d7..c14421d63 100644 --- a/src/components/renderers/controls/reference/reference-directive.ts +++ b/src/components/renderers/controls/reference/reference-directive.ts @@ -1,7 +1,7 @@ import {RendererTester, NOT_FITTING} from '../../renderer-service'; import {IPathResolver} from '../../../services/pathresolver/jsonforms-pathresolver'; import {AbstractControl} from '../abstract-control'; -import {IUISchemaElement} from '../../../../jsonforms'; +import {IUISchemaElement} from "../../../../uischema"; class ReferenceDirective implements ng.IDirective { restrict = 'E'; diff --git a/src/components/renderers/controls/string/string-directive.ts b/src/components/renderers/controls/string/string-directive.ts index e57e065b6..7ab4290fd 100644 --- a/src/components/renderers/controls/string/string-directive.ts +++ b/src/components/renderers/controls/string/string-directive.ts @@ -1,7 +1,8 @@ import {RendererTester, NOT_FITTING} from '../../renderer-service'; import {IPathResolver} from '../../../services/pathresolver/jsonforms-pathresolver'; import {AbstractControl, ControlRendererTester} from '../abstract-control'; -import {IUISchemaElement} from '../../../../jsonforms'; +import {IUISchemaElement} from "../../../../uischema"; + class StringDirective implements ng.IDirective { restrict = 'E'; diff --git a/src/components/renderers/extras/label/label-directive.ts b/src/components/renderers/extras/label/label-directive.ts index 867e9852a..099698b66 100644 --- a/src/components/renderers/extras/label/label-directive.ts +++ b/src/components/renderers/extras/label/label-directive.ts @@ -1,6 +1,7 @@ import {RendererTester, NOT_FITTING} from '../../renderer-service'; import {IPathResolver} from '../../../services/pathresolver/jsonforms-pathresolver'; -import {IUISchemaElement} from '../../../../jsonforms'; +import {IUISchemaElement} from "../../../../uischema"; + class LabelDirective implements ng.IDirective { restrict = 'E'; template = `{{vm.text}}
`; diff --git a/src/components/renderers/layouts/abstract-layout.ts b/src/components/renderers/layouts/abstract-layout.ts index 3c4b90e82..59b7e9c86 100644 --- a/src/components/renderers/layouts/abstract-layout.ts +++ b/src/components/renderers/layouts/abstract-layout.ts @@ -1,7 +1,7 @@ import {Services, ServiceId} from '../../services/services'; import {IRuleService, IRuleServiceCallBack} from '../../services/rule/rule-service'; import {IDataProvider} from '../../services/data/data-service'; -import {ILayout, IRule} from '../../../jsonforms'; +import {ILayout, IRule} from "../../../uischema"; export abstract class AbstractLayout implements IRuleServiceCallBack { diff --git a/src/components/renderers/layouts/categories/categorization-directive.ts b/src/components/renderers/layouts/categories/categorization-directive.ts index e49f46e34..10550962c 100644 --- a/src/components/renderers/layouts/categories/categorization-directive.ts +++ b/src/components/renderers/layouts/categories/categorization-directive.ts @@ -1,7 +1,7 @@ import {RendererTester, NOT_FITTING} from '../../renderer-service'; import {IPathResolver} from '../../../services/pathresolver/jsonforms-pathresolver'; import {AbstractLayout} from '../abstract-layout'; -import {IUISchemaElement} from '../../../../jsonforms'; +import {IUISchemaElement} from "../../../../uischema"; class CategorizationDirective implements ng.IDirective { restrict = 'E'; diff --git a/src/components/renderers/layouts/group/group-directive.ts b/src/components/renderers/layouts/group/group-directive.ts index 38fa2c372..acb0694bc 100644 --- a/src/components/renderers/layouts/group/group-directive.ts +++ b/src/components/renderers/layouts/group/group-directive.ts @@ -1,7 +1,8 @@ import {RendererTester, NOT_FITTING} from '../../renderer-service'; import {IPathResolver} from '../../../services/pathresolver/jsonforms-pathresolver'; import {AbstractLayout} from '../abstract-layout'; -import {IUISchemaElement} from '../../../../jsonforms'; +import {IUISchemaElement} from "../../../../uischema"; + class GroupDirective implements ng.IDirective { restrict = 'E'; templateUrl = 'group.html'; diff --git a/src/components/renderers/layouts/horizontal/horizontal-directive.ts b/src/components/renderers/layouts/horizontal/horizontal-directive.ts index 19acf716b..d56627b62 100644 --- a/src/components/renderers/layouts/horizontal/horizontal-directive.ts +++ b/src/components/renderers/layouts/horizontal/horizontal-directive.ts @@ -2,7 +2,8 @@ import {RendererTester, NOT_FITTING} from '../../renderer-service'; import {IPathResolver} from '../../../services/pathresolver/jsonforms-pathresolver'; import {AbstractLayout} from '../abstract-layout'; import {LabelObjectUtil} from '../../controls/abstract-control'; -import {IUISchemaElement} from '../../../../jsonforms'; +import {IUISchemaElement} from "../../../../uischema"; + class HorizontalDirective implements ng.IDirective { restrict = 'E'; diff --git a/src/components/renderers/layouts/masterdetail/masterdetail-directives.ts b/src/components/renderers/layouts/masterdetail/masterdetail-directives.ts index 59b1a86b8..518103b5e 100644 --- a/src/components/renderers/layouts/masterdetail/masterdetail-directives.ts +++ b/src/components/renderers/layouts/masterdetail/masterdetail-directives.ts @@ -1,7 +1,9 @@ import {RendererTester, NOT_FITTING} from '../../renderer-service'; import {IPathResolver} from '../../../services/pathresolver/jsonforms-pathresolver'; import {AbstractControl} from '../../controls/abstract-control'; -import {IUISchemaElement, SchemaElement} from '../../../../jsonforms'; +import {SchemaElement} from "../../../../jsonschema"; +import {IUISchemaElement} from "../../../../uischema"; + class MasterDetailDirective implements ng.IDirective { restrict = 'E'; templateUrl = 'masterdetail.html'; diff --git a/src/components/renderers/layouts/vertical/vertical-directive.ts b/src/components/renderers/layouts/vertical/vertical-directive.ts index d6dc6177a..e63ed3f71 100644 --- a/src/components/renderers/layouts/vertical/vertical-directive.ts +++ b/src/components/renderers/layouts/vertical/vertical-directive.ts @@ -1,7 +1,7 @@ import {RendererTester, NOT_FITTING} from '../../renderer-service'; import {IPathResolver} from '../../../services/pathresolver/jsonforms-pathresolver'; import {AbstractLayout} from '../abstract-layout'; -import {IUISchemaElement} from '../../../../jsonforms'; +import {IUISchemaElement} from "../../../../uischema"; class VerticalDirective implements ng.IDirective { restrict = 'E'; diff --git a/src/components/renderers/norenderer-directive.ts b/src/components/renderers/norenderer-directive.ts index 0755252ed..3d33a2fc9 100644 --- a/src/components/renderers/norenderer-directive.ts +++ b/src/components/renderers/norenderer-directive.ts @@ -1,4 +1,5 @@ -import {IUISchemaElement} from '../../jsonforms'; +import {IUISchemaElement} from "../../uischema"; + class NoRendererDirective implements ng.IDirective { restrict = 'E'; template = ` diff --git a/src/components/renderers/renderer-service.ts b/src/components/renderers/renderer-service.ts index c60cacab6..22b9e7da9 100644 --- a/src/components/renderers/renderer-service.ts +++ b/src/components/renderers/renderer-service.ts @@ -1,5 +1,5 @@ import {IPathResolver} from '../services/pathresolver/jsonforms-pathresolver'; -import {IUISchemaElement} from '../../jsonforms'; +import {IUISchemaElement} from "../../uischema"; export interface RendererService { register(directiveName: string, tester: RendererTester): void; diff --git a/src/components/services/pathresolver/jsonforms-pathresolver.ts b/src/components/services/pathresolver/jsonforms-pathresolver.ts index 5e3155b77..bb6b5b049 100644 --- a/src/components/services/pathresolver/jsonforms-pathresolver.ts +++ b/src/components/services/pathresolver/jsonforms-pathresolver.ts @@ -1,6 +1,6 @@ import {PathUtil} from '../pathutil'; -import {SchemaElement} from "../../../jsonforms"; +import {SchemaElement} from "../../../jsonschema"; export interface IPathResolver { toInstancePath(schemaPath: string): string; diff --git a/src/components/services/rule/rule-service.ts b/src/components/services/rule/rule-service.ts index b8ecf3c41..f058ba910 100644 --- a/src/components/services/rule/rule-service.ts +++ b/src/components/services/rule/rule-service.ts @@ -1,7 +1,8 @@ import {ServiceId} from '../services'; import {IService} from '../services'; import {IPathResolver} from '../pathresolver/jsonforms-pathresolver'; -import {IRule, ILeafCondition, RuleEffect} from '../../../jsonforms'; +import {IRule, ILeafCondition, RuleEffect} from "../../../uischema"; + export interface IRuleService extends IService { addRuleTrack(ruleServiceCallback: IRuleServiceCallBack): void; diff --git a/src/components/services/services.ts b/src/components/services/services.ts index 118b9f5ab..5aa754468 100644 --- a/src/components/services/services.ts +++ b/src/components/services/services.ts @@ -1,6 +1,8 @@ import {PathResolver} from './pathresolver/jsonforms-pathresolver'; -import {IUISchemaElement, SchemaElement} from '../../jsonforms'; +import {SchemaElement} from "../../jsonschema"; +import {IUISchemaElement} from "../../uischema"; + // TODO: replace let tv4 = require('tv4'); diff --git a/src/index.ts b/src/index.ts new file mode 100644 index 000000000..e91cd1f00 --- /dev/null +++ b/src/index.ts @@ -0,0 +1,26 @@ + +import 'angular'; +import form from './components/form/form'; +import capitalize from './components/ng-services/capitalize/capitalize.filter'; +import pathResolver from './components/ng-services/pathresolver/pathresolver-service'; + +require('angular-ui-validate'); + +export default angular.module('jsonforms', [ + 'ui.validate', + form, + capitalize, + pathResolver +]).name; + +export interface JsonFormsScope extends angular.IScope { + data: any; + schema: any; + uiSchema: any; +} + +export * from './uischema'; +export * from './jsonschema'; + +export {AbstractControl, ControlRendererTester} from './components/renderers/controls/abstract-control' +export {IPathResolver} from './components/services/pathresolver/jsonforms-pathresolver'; diff --git a/src/jsonschema.ts b/src/jsonschema.ts new file mode 100644 index 000000000..5d6b3dda5 --- /dev/null +++ b/src/jsonschema.ts @@ -0,0 +1,25 @@ +export interface SchemaElement{ + type?: string; + enum?: SchemaElement[] +} + +export interface SchemaObject extends SchemaElement{ + //TODO: specify properties + properties?: any; + additionalProperties?: any; + required?: StringArray; +} + +export interface SchemaArray extends SchemaElement{ + //TODO: specify items + items?: any; +} + +export interface SchemaString extends SchemaElement { + format?: string +} + +// Array type +export interface StringArray{ + [index: number]: string; +} \ No newline at end of file diff --git a/src/jsonforms.ts b/src/uischema.ts similarity index 50% rename from src/jsonforms.ts rename to src/uischema.ts index 1c3a30f00..d71daedaf 100644 --- a/src/jsonforms.ts +++ b/src/uischema.ts @@ -1,34 +1,19 @@ - -import 'angular'; -import form from './components/form/form'; -import capitalize from './components/ng-services/capitalize/capitalize.filter'; -import pathResolver from './components/ng-services/pathresolver/pathresolver-service'; - -require('angular-ui-validate'); - -export default angular.module('jsonforms', [ - 'ui.validate', - form, - capitalize, - pathResolver -]).name; - - - -import IScope = angular.IScope; export interface IRule { effect: RuleEffect; condition: ICondition; } + export enum RuleEffect { HIDE = 'HIDE', SHOW = 'SHOW', ENABLE = 'ENABLE', DISABLE = 'DISABLE' } + export interface ICondition { type: string; // nice to have } + export interface ILeafCondition extends ICondition { scope: { $ref: string; @@ -76,37 +61,4 @@ export interface IArrayControlObject extends IControlObject { export interface IColumnControlObject extends IControlObject { -} -export interface JsonFormsScope extends IScope { - data: any; - schema: any; - uiSchema: any; -} - -export interface SchemaElement{ - type?: string; - enum?: SchemaElement[] -} - -export interface SchemaObject extends SchemaElement{ - //TODO: specify properties - properties?: any; - additionalProperties?: any; - required?: StringArray; -} - -export interface SchemaArray extends SchemaElement{ - //TODO: specify items - items?: any; -} - -export interface SchemaString extends SchemaElement { - format?: string -} - -// Array type -export interface StringArray{ - [index: number]: string; -} -export {AbstractControl, ControlRendererTester} from './components/renderers/controls/abstract-control' -export {IPathResolver} from './components/services/pathresolver/jsonforms-pathresolver'; +} \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index b13b43cbe..52760a94f 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -10,7 +10,7 @@ "outDir": "." }, "files": [ - "./src/jsonforms.ts", + "./src/index.ts", "./typings/main.d.ts", "./src/declarations.d.ts" ], From 9d694e99f10d5a530640adea3eb4a995a9403c85 Mon Sep 17 00:00:00 2001 From: Edgar Mueller Date: Fri, 8 Jul 2016 11:26:23 +0200 Subject: [PATCH 4/4] Remove TSLint warnings --- src/components/form/form-directive.ts | 20 ++++----- .../renderers/controls/abstract-control.ts | 4 +- .../controls/array/array-directive.ts | 2 +- .../controls/datetime/datetime-directive.ts | 2 +- .../renderers/controls/enum/enum-directive.ts | 4 +- .../controls/reference/reference-directive.ts | 2 +- .../controls/string/string-directive.ts | 2 +- .../renderers/extras/label/label-directive.ts | 2 +- .../renderers/layouts/abstract-layout.ts | 2 +- .../categories/categorization-directive.ts | 15 +++++-- .../layouts/categories/categorization.spec.ts | 4 +- .../layouts/group/group-directive.ts | 2 +- .../horizontal/horizontal-directive.ts | 2 +- .../renderers/layouts/layout-directive.ts | 3 +- .../masterdetail/masterdetail-directives.ts | 45 +++++++++++++------ .../layouts/vertical/vertical-directive.ts | 2 +- .../renderers/norenderer-directive.ts | 2 +- src/components/renderers/renderer-service.ts | 2 +- .../pathresolver/jsonforms-pathresolver.ts | 2 +- src/components/services/rule/rule-service.ts | 2 +- src/components/services/services.ts | 5 +-- src/index.ts | 3 +- src/jsonschema.ts | 18 ++++---- src/uischema.ts | 2 +- 24 files changed, 88 insertions(+), 61 deletions(-) diff --git a/src/components/form/form-directive.ts b/src/components/form/form-directive.ts index 9da2a6117..2378d97ea 100644 --- a/src/components/form/form-directive.ts +++ b/src/components/form/form-directive.ts @@ -22,12 +22,19 @@ export class FormController { static $inject = ['RendererService', 'PathResolver', 'UiSchemaRegistry', 'SchemaGenerator', '$compile', '$q', '$scope']; - public element: any; public uiSchema: IUISchemaElement; private isInitialized = false; private childScope: ng.IScope; + private static isDataProvider(testMe: any): testMe is IDataProvider { + return testMe !== undefined && testMe.hasOwnProperty('fetchData'); + } + + private static isUiSchemaProvider(testMe: any): testMe is IUiSchemaProvider { + return testMe !== undefined && testMe.hasOwnProperty('fetchUiSchema'); + } + constructor( private rendererService: RendererService, private PathResolver: IPathResolver, @@ -38,13 +45,6 @@ export class FormController { private scope: JsonFormsDirectiveScope ) { } - private static isDataProvider(testMe: any): testMe is IDataProvider { - return testMe !== undefined && testMe.hasOwnProperty('fetchData'); - } - - private static isUiSchemaProvider(testMe: any): testMe is IUiSchemaProvider { - return testMe !== undefined && testMe.hasOwnProperty('fetchUiSchema'); - } public init() { if (this.isInitialized) { @@ -237,10 +237,10 @@ export class JsonFormsInnerDirective implements ng.IDirective { } } -export default angular.module("jsonforms.form.directives", ["jsonforms.form"]) +export default angular.module('jsonforms.form.directives', ['jsonforms.form']) .directive('jsonforms', () => new JsonFormsDirective()) .directive('jsonformsInner', () => new JsonFormsInnerDirective()) .run(['$templateCache', ($templateCache: ng.ITemplateCacheService) => $templateCache.put('form.html', formTemplate)] ) - .name; \ No newline at end of file + .name; diff --git a/src/components/renderers/controls/abstract-control.ts b/src/components/renderers/controls/abstract-control.ts index c86f775a0..a5374239b 100644 --- a/src/components/renderers/controls/abstract-control.ts +++ b/src/components/renderers/controls/abstract-control.ts @@ -4,8 +4,8 @@ import {RendererTester, NOT_FITTING} from '../renderer-service'; import {Services, ServiceId, IValidationService, ISchemaProvider} from '../../services/services'; import {IRuleService, IRuleServiceCallBack} from '../../services/rule/rule-service'; import {IDataProvider} from '../../services/data/data-service'; -import {IRule, IControlObject, IWithLabel, ILabelObject, IUISchemaElement} from "../../../uischema"; -import {SchemaElement} from "../../../jsonschema"; +import {IRule, IControlObject, IWithLabel, ILabelObject, IUISchemaElement} from '../../../uischema'; +import {SchemaElement} from '../../../jsonschema'; export abstract class AbstractControl implements IRuleServiceCallBack { diff --git a/src/components/renderers/controls/array/array-directive.ts b/src/components/renderers/controls/array/array-directive.ts index 82aa0e1b4..9657495c1 100644 --- a/src/components/renderers/controls/array/array-directive.ts +++ b/src/components/renderers/controls/array/array-directive.ts @@ -5,7 +5,7 @@ import {PathUtil} from '../../../services/pathutil'; import {IUISchemaGenerator} from '../../../generators/generators'; import {AbstractControl, ControlRendererTester} from '../abstract-control'; import {IUISchemaElement, IGroup} from '../../../../uischema'; -import {SchemaArray} from "../../../../jsonschema"; +import {SchemaArray} from '../../../../jsonschema'; class ArrayReadOnlyDirective implements ng.IDirective { restrict = 'E'; diff --git a/src/components/renderers/controls/datetime/datetime-directive.ts b/src/components/renderers/controls/datetime/datetime-directive.ts index 3937171e1..f0450b4ca 100644 --- a/src/components/renderers/controls/datetime/datetime-directive.ts +++ b/src/components/renderers/controls/datetime/datetime-directive.ts @@ -1,7 +1,7 @@ import {RendererTester, NOT_FITTING} from '../../renderer-service'; import {IPathResolver} from '../../../services/pathresolver/jsonforms-pathresolver'; import {AbstractControl} from '../abstract-control'; -import {IUISchemaElement} from "../../../../uischema"; +import {IUISchemaElement} from '../../../../uischema'; class DateTimeDirective implements ng.IDirective { restrict = 'E'; diff --git a/src/components/renderers/controls/enum/enum-directive.ts b/src/components/renderers/controls/enum/enum-directive.ts index c3c1c9b87..e1d03695c 100644 --- a/src/components/renderers/controls/enum/enum-directive.ts +++ b/src/components/renderers/controls/enum/enum-directive.ts @@ -1,8 +1,8 @@ import {RendererTester, NOT_FITTING} from '../../renderer-service'; import {IPathResolver} from '../../../services/pathresolver/jsonforms-pathresolver'; import {AbstractControl} from '../abstract-control'; -import {SchemaElement} from "../../../../jsonschema"; -import {IUISchemaElement} from "../../../../uischema"; +import {SchemaElement} from '../../../../jsonschema'; +import {IUISchemaElement} from '../../../../uischema'; class EnumDirective implements ng.IDirective { restrict = 'E'; diff --git a/src/components/renderers/controls/reference/reference-directive.ts b/src/components/renderers/controls/reference/reference-directive.ts index c14421d63..5b54f16c2 100644 --- a/src/components/renderers/controls/reference/reference-directive.ts +++ b/src/components/renderers/controls/reference/reference-directive.ts @@ -1,7 +1,7 @@ import {RendererTester, NOT_FITTING} from '../../renderer-service'; import {IPathResolver} from '../../../services/pathresolver/jsonforms-pathresolver'; import {AbstractControl} from '../abstract-control'; -import {IUISchemaElement} from "../../../../uischema"; +import {IUISchemaElement} from '../../../../uischema'; class ReferenceDirective implements ng.IDirective { restrict = 'E'; diff --git a/src/components/renderers/controls/string/string-directive.ts b/src/components/renderers/controls/string/string-directive.ts index 7ab4290fd..c5663eb92 100644 --- a/src/components/renderers/controls/string/string-directive.ts +++ b/src/components/renderers/controls/string/string-directive.ts @@ -1,7 +1,7 @@ import {RendererTester, NOT_FITTING} from '../../renderer-service'; import {IPathResolver} from '../../../services/pathresolver/jsonforms-pathresolver'; import {AbstractControl, ControlRendererTester} from '../abstract-control'; -import {IUISchemaElement} from "../../../../uischema"; +import {IUISchemaElement} from '../../../../uischema'; class StringDirective implements ng.IDirective { diff --git a/src/components/renderers/extras/label/label-directive.ts b/src/components/renderers/extras/label/label-directive.ts index 099698b66..a36a6de6c 100644 --- a/src/components/renderers/extras/label/label-directive.ts +++ b/src/components/renderers/extras/label/label-directive.ts @@ -1,6 +1,6 @@ import {RendererTester, NOT_FITTING} from '../../renderer-service'; import {IPathResolver} from '../../../services/pathresolver/jsonforms-pathresolver'; -import {IUISchemaElement} from "../../../../uischema"; +import {IUISchemaElement} from '../../../../uischema'; class LabelDirective implements ng.IDirective { restrict = 'E'; diff --git a/src/components/renderers/layouts/abstract-layout.ts b/src/components/renderers/layouts/abstract-layout.ts index 59b7e9c86..738dc6171 100644 --- a/src/components/renderers/layouts/abstract-layout.ts +++ b/src/components/renderers/layouts/abstract-layout.ts @@ -1,7 +1,7 @@ import {Services, ServiceId} from '../../services/services'; import {IRuleService, IRuleServiceCallBack} from '../../services/rule/rule-service'; import {IDataProvider} from '../../services/data/data-service'; -import {ILayout, IRule} from "../../../uischema"; +import {ILayout, IRule} from '../../../uischema'; export abstract class AbstractLayout implements IRuleServiceCallBack { diff --git a/src/components/renderers/layouts/categories/categorization-directive.ts b/src/components/renderers/layouts/categories/categorization-directive.ts index 10550962c..42b1c8539 100644 --- a/src/components/renderers/layouts/categories/categorization-directive.ts +++ b/src/components/renderers/layouts/categories/categorization-directive.ts @@ -1,7 +1,7 @@ import {RendererTester, NOT_FITTING} from '../../renderer-service'; import {IPathResolver} from '../../../services/pathresolver/jsonforms-pathresolver'; import {AbstractLayout} from '../abstract-layout'; -import {IUISchemaElement} from "../../../../uischema"; +import {IUISchemaElement} from '../../../../uischema'; class CategorizationDirective implements ng.IDirective { restrict = 'E'; @@ -26,13 +26,20 @@ const categorizationTemplate = `
    -
  • - {{category.label}} +
  • + + {{category.label}} +
- + +
`; diff --git a/src/components/renderers/layouts/categories/categorization.spec.ts b/src/components/renderers/layouts/categories/categorization.spec.ts index 9aa8382e2..737fd3428 100644 --- a/src/components/renderers/layouts/categories/categorization.spec.ts +++ b/src/components/renderers/layouts/categories/categorization.spec.ts @@ -52,7 +52,7 @@ describe('Categorization', () => { scope.data = { 'name': 'John Doe '}; let el = $compile('')(scope); scope.$digest(); - expect(el.html()).toContain('>Tab1'); - expect(el.html()).toContain('>MyTab2'); + expect(el.html()).toMatch(/>\s*Tab1\s*<\/span>/); + expect(el.html()).toMatch(/>\s*MyTab2\s*<\/span>/); })); }); diff --git a/src/components/renderers/layouts/group/group-directive.ts b/src/components/renderers/layouts/group/group-directive.ts index acb0694bc..2116114e6 100644 --- a/src/components/renderers/layouts/group/group-directive.ts +++ b/src/components/renderers/layouts/group/group-directive.ts @@ -1,7 +1,7 @@ import {RendererTester, NOT_FITTING} from '../../renderer-service'; import {IPathResolver} from '../../../services/pathresolver/jsonforms-pathresolver'; import {AbstractLayout} from '../abstract-layout'; -import {IUISchemaElement} from "../../../../uischema"; +import {IUISchemaElement} from '../../../../uischema'; class GroupDirective implements ng.IDirective { restrict = 'E'; diff --git a/src/components/renderers/layouts/horizontal/horizontal-directive.ts b/src/components/renderers/layouts/horizontal/horizontal-directive.ts index d56627b62..498e12ded 100644 --- a/src/components/renderers/layouts/horizontal/horizontal-directive.ts +++ b/src/components/renderers/layouts/horizontal/horizontal-directive.ts @@ -2,7 +2,7 @@ import {RendererTester, NOT_FITTING} from '../../renderer-service'; import {IPathResolver} from '../../../services/pathresolver/jsonforms-pathresolver'; import {AbstractLayout} from '../abstract-layout'; import {LabelObjectUtil} from '../../controls/abstract-control'; -import {IUISchemaElement} from "../../../../uischema"; +import {IUISchemaElement} from '../../../../uischema'; class HorizontalDirective implements ng.IDirective { diff --git a/src/components/renderers/layouts/layout-directive.ts b/src/components/renderers/layouts/layout-directive.ts index d7b86c283..24197d474 100644 --- a/src/components/renderers/layouts/layout-directive.ts +++ b/src/components/renderers/layouts/layout-directive.ts @@ -1,4 +1,5 @@ -const layoutTemplate = `
`; +const layoutTemplate = `
+
`; export default angular .module('jsonforms.renderers.layouts', ['jsonforms.renderers']) diff --git a/src/components/renderers/layouts/masterdetail/masterdetail-directives.ts b/src/components/renderers/layouts/masterdetail/masterdetail-directives.ts index 518103b5e..3b4f41f3c 100644 --- a/src/components/renderers/layouts/masterdetail/masterdetail-directives.ts +++ b/src/components/renderers/layouts/masterdetail/masterdetail-directives.ts @@ -1,8 +1,8 @@ import {RendererTester, NOT_FITTING} from '../../renderer-service'; import {IPathResolver} from '../../../services/pathresolver/jsonforms-pathresolver'; import {AbstractControl} from '../../controls/abstract-control'; -import {SchemaElement} from "../../../../jsonschema"; -import {IUISchemaElement} from "../../../../uischema"; +import {SchemaElement} from '../../../../jsonschema'; +import {IUISchemaElement} from '../../../../uischema'; class MasterDetailDirective implements ng.IDirective { restrict = 'E'; @@ -129,33 +129,52 @@ const masterDetailTemplate = `
- +
`; const masterDetailCollectionTemplate = `
    -
  • +
  • {{key}} + ng-class="{ + 'chevron-down': vm.attribute_open[$index], + 'chevron-right': !vm.attribute_open[$index] + }" + ng-show="!vm.isEmptyInstance(vm.instance,key)" + ng-click="vm.attribute_open[$index]=!vm.attribute_open[$index]">
    -
      -
    • +
        +
      • - + {{child.name!=undefined?child.name:child}} + ng-class="{ + 'chevron-down': vm.object_open[$index], + 'chevron-right': !vm.object_open[$index] + }" + ng-if="vm.hasKeys(value.items)" + ng-click="vm.object_open[$index]=!vm.object_open[$index]">
        -
        - +
        + +
      diff --git a/src/components/renderers/layouts/vertical/vertical-directive.ts b/src/components/renderers/layouts/vertical/vertical-directive.ts index e63ed3f71..66806ab1e 100644 --- a/src/components/renderers/layouts/vertical/vertical-directive.ts +++ b/src/components/renderers/layouts/vertical/vertical-directive.ts @@ -1,7 +1,7 @@ import {RendererTester, NOT_FITTING} from '../../renderer-service'; import {IPathResolver} from '../../../services/pathresolver/jsonforms-pathresolver'; import {AbstractLayout} from '../abstract-layout'; -import {IUISchemaElement} from "../../../../uischema"; +import {IUISchemaElement} from '../../../../uischema'; class VerticalDirective implements ng.IDirective { restrict = 'E'; diff --git a/src/components/renderers/norenderer-directive.ts b/src/components/renderers/norenderer-directive.ts index 3d33a2fc9..9e2ebe438 100644 --- a/src/components/renderers/norenderer-directive.ts +++ b/src/components/renderers/norenderer-directive.ts @@ -1,4 +1,4 @@ -import {IUISchemaElement} from "../../uischema"; +import {IUISchemaElement} from '../../uischema'; class NoRendererDirective implements ng.IDirective { restrict = 'E'; diff --git a/src/components/renderers/renderer-service.ts b/src/components/renderers/renderer-service.ts index 22b9e7da9..8d46e83cc 100644 --- a/src/components/renderers/renderer-service.ts +++ b/src/components/renderers/renderer-service.ts @@ -1,5 +1,5 @@ import {IPathResolver} from '../services/pathresolver/jsonforms-pathresolver'; -import {IUISchemaElement} from "../../uischema"; +import {IUISchemaElement} from '../../uischema'; export interface RendererService { register(directiveName: string, tester: RendererTester): void; diff --git a/src/components/services/pathresolver/jsonforms-pathresolver.ts b/src/components/services/pathresolver/jsonforms-pathresolver.ts index bb6b5b049..5f3b19331 100644 --- a/src/components/services/pathresolver/jsonforms-pathresolver.ts +++ b/src/components/services/pathresolver/jsonforms-pathresolver.ts @@ -1,6 +1,6 @@ import {PathUtil} from '../pathutil'; -import {SchemaElement} from "../../../jsonschema"; +import {SchemaElement} from '../../../jsonschema'; export interface IPathResolver { toInstancePath(schemaPath: string): string; diff --git a/src/components/services/rule/rule-service.ts b/src/components/services/rule/rule-service.ts index f058ba910..5d2b301d5 100644 --- a/src/components/services/rule/rule-service.ts +++ b/src/components/services/rule/rule-service.ts @@ -1,7 +1,7 @@ import {ServiceId} from '../services'; import {IService} from '../services'; import {IPathResolver} from '../pathresolver/jsonforms-pathresolver'; -import {IRule, ILeafCondition, RuleEffect} from "../../../uischema"; +import {IRule, ILeafCondition, RuleEffect} from '../../../uischema'; export interface IRuleService extends IService { diff --git a/src/components/services/services.ts b/src/components/services/services.ts index 5aa754468..ef89ff1f0 100644 --- a/src/components/services/services.ts +++ b/src/components/services/services.ts @@ -1,7 +1,6 @@ - import {PathResolver} from './pathresolver/jsonforms-pathresolver'; -import {SchemaElement} from "../../jsonschema"; -import {IUISchemaElement} from "../../uischema"; +import {SchemaElement} from '../../jsonschema'; +import {IUISchemaElement} from '../../uischema'; // TODO: replace let tv4 = require('tv4'); diff --git a/src/index.ts b/src/index.ts index e91cd1f00..57f7033fe 100644 --- a/src/index.ts +++ b/src/index.ts @@ -22,5 +22,6 @@ export interface JsonFormsScope extends angular.IScope { export * from './uischema'; export * from './jsonschema'; -export {AbstractControl, ControlRendererTester} from './components/renderers/controls/abstract-control' +export {AbstractControl, ControlRendererTester} + from './components/renderers/controls/abstract-control' export {IPathResolver} from './components/services/pathresolver/jsonforms-pathresolver'; diff --git a/src/jsonschema.ts b/src/jsonschema.ts index 5d6b3dda5..ebfaaaecc 100644 --- a/src/jsonschema.ts +++ b/src/jsonschema.ts @@ -1,25 +1,25 @@ -export interface SchemaElement{ +export interface SchemaElement { type?: string; - enum?: SchemaElement[] + enum?: SchemaElement[]; } -export interface SchemaObject extends SchemaElement{ - //TODO: specify properties +export interface SchemaObject extends SchemaElement { + // TODO: specify properties properties?: any; additionalProperties?: any; required?: StringArray; } -export interface SchemaArray extends SchemaElement{ - //TODO: specify items +export interface SchemaArray extends SchemaElement { + // TODO: specify items items?: any; } export interface SchemaString extends SchemaElement { - format?: string + format?: string; } // Array type -export interface StringArray{ +export interface StringArray { [index: number]: string; -} \ No newline at end of file +} diff --git a/src/uischema.ts b/src/uischema.ts index d71daedaf..6adc01556 100644 --- a/src/uischema.ts +++ b/src/uischema.ts @@ -61,4 +61,4 @@ export interface IArrayControlObject extends IControlObject { export interface IColumnControlObject extends IControlObject { -} \ No newline at end of file +}