pragma solidity ^0.4.24; import "./ERC223TokenWidgetRenderer.sol"; import "./ERC223TokenInputsRenderer.sol"; contract ERC223TokenRenderer is Ownable { using strings for *; ERC223TokenWidgetRenderer[] adminWidgetRenderers; ERC223TokenWidgetRenderer[] userWidgetRenderers; ERC223TokenInputsRenderer public inputsRenderer; function setAdminWidgetRenderers(ERC223TokenWidgetRenderer[] _renderers) public onlyOwner { adminWidgetRenderers = _renderers; } function getAdminWidgetRendererAt(uint index) public view returns (ERC223TokenWidgetRenderer) { return adminWidgetRenderers[index]; } function numberOfAdminWidgetRenderers() public view returns (uint) { return adminWidgetRenderers.length; } function setUserWidgetRenderers(ERC223TokenWidgetRenderer[] _renderers) public onlyOwner { userWidgetRenderers = _renderers; } function getUserWidgetRendererAt(uint index) public view returns (ERC223TokenWidgetRenderer) { return userWidgetRenderers[index]; } function numberOfUserWidgetRenderers() public view returns (uint) { return userWidgetRenderers.length; } function adminWidgets(string _locale, ERC223Token _token) public view returns (string jsonObject) { return _widgets(_locale, _token, adminWidgetRenderers); } function userWidgets(string _locale, ERC223Token _token) public view returns (string jsonObject) { return _widgets(_locale, _token, userWidgetRenderers); } function setInputsRenderer(ERC223TokenInputsRenderer _renderer) onlyOwner public { inputsRenderer = _renderer; } function _widgets(string _locale, ERC223Token _token, ERC223TokenWidgetRenderer[] _widgetRenders) private view returns (string) { string memory json = "["; uint length = 0; for (uint i = 0; i < _widgetRenders.length; i++) { ERC223TokenWidgetRenderer renderer = _widgetRenders[i]; string memory widget = renderer.render(_locale, _token); if (bytes(widget).length > 0) { if (length > 0) { json = json.toSlice().concat(",".toSlice()); } json = json.toSlice().concat(widget.toSlice()); length++; } } return json.toSlice().concat("]".toSlice()); } function inputs(string _locale, ERC223Token _token) public view returns (string jsonArray) { return inputsRenderer.render(_locale, _token); } }