Skip to content

Commit

Permalink
Merge cd74e70 into 9a95309
Browse files Browse the repository at this point in the history
  • Loading branch information
eneufeld committed Jun 23, 2016
2 parents 9a95309 + cd74e70 commit 77fb054
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 14 deletions.
38 changes: 28 additions & 10 deletions src/components/renderers/renderer-service.spec.ts
Original file line number Diff line number Diff line change
@@ -1,30 +1,48 @@
import "angular"
import "angular-mocks"

import 'angular';
import 'angular-mocks';
import '../../index';
import IRootScopeService = angular.IRootScopeService;
import ICompileService = angular.ICompileService;

describe("Renderer service", () => {
describe('Renderer service', () => {


beforeEach(angular.mock.module('jsonforms.form'));

xit("should support remote references",
it('should support remote references',
angular.mock.inject(($rootScope: IRootScopeService, $compile: ICompileService) => {

let scope = $rootScope.$new();
// empty schema
scope['schema'] = {};
scope['uiSchema'] = {
"type": "Control",
"scope": {
"$ref": "http://json-schema.org/geo#/latitude"
'type': 'Control',
'scope': {
'$ref': 'http://json-schema.org/geo#/latitude'
}
};
scope['data'] = { "latitude": 42 };
scope['data'] = { 'latitude': 42 };
let el = $compile('<jsonforms schema="schema" ui-schema="uiSchema" data="data"/>')(scope);
scope.$digest();
let input = angular.element(el[0].getElementsByClassName('jsf-control-number'));
expect(input).toBeDefined();
}));
});

it('should add comment to dom on unknown renderer',
angular.mock.inject(($rootScope: IRootScopeService, $compile: ICompileService) => {

let scope = $rootScope.$new();
// empty schema
scope['schema'] = {};
scope['uiSchema'] = {
'type': 'UNKNOWN_CONTROL',
'scope': {
'$ref': 'http://json-schema.org/geo#/latitude'
}
};
scope['data'] = { 'latitude': 42 };
let el = $compile('<jsonforms schema="schema" ui-schema="uiSchema" data="data"/>')(scope);
scope.$digest();
expect(el.html()).toContain('<!-- No Renderer for UNKNOWN_CONTROL. -->');
}));
});
12 changes: 8 additions & 4 deletions src/components/renderers/renderer-service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,14 @@ class RendererServiceImpl implements RendererService {
this.renderer.push({directiveName: directiveName, tester: tester});
}
getBestComponent(element: IUISchemaElement, dataSchema: any, dataObject: any): string {
let bestRenderer = _.maxBy(this.renderer, renderer =>
renderer.tester(element, dataSchema, dataObject, this.pathResolver)
);

let bestRenderer = _.maxBy(this.renderer, renderer => {
let result = renderer.tester(element, dataSchema, dataObject, this.pathResolver);
return result === NOT_FITTING ? null : result;
});
if (bestRenderer == null) {
return '<!-- No Renderer for ' + element.type + '. -->'
+ '<!-- Full element:' + JSON.stringify(element) + '. -->';
}
let bestDirective = bestRenderer.directiveName;
return `<${bestDirective}></${bestDirective}>`;
}
Expand Down

0 comments on commit 77fb054

Please sign in to comment.