$ show ioBroker/ioBroker.vis
ioBroker.vis is a visualization adapter for the ioBroker smart home platform, providing a web-based dashboard editor and runtime. It renders interactive views composed of widgets that bind to ioBroker data points (states/objects) via a real-time socket.io connection. The architecture is monolithic: a single-page application served by an ioBroker adapter, with all editor and runtime logic bundled in global JavaScript files using jQuery, CanJS, jQuery UI, and a homebrewed binding DSL. The widget system supports inline transformations (math, date formatting, JSON extraction) and extensibility via external widget sets. Development of this version has been officially stopped in favor of the rewritten vis-2 adapter, and the repository only receives critical fixes. The codebase exhibits significant technical drift due to outdated dependencies (jQuery 1.x, deprecated AppCache, IE8 polyfills), a monolithic design with tight coupling, and a license inconsistency (CC BY-NC in source files versus MIT in package.json). It is functional but should not be used for new projects.
The LLM identified 3 files worth highlighting for reuse:
Implements the format string binding engine used across all widgets. Functions `extractBinding()` and `formatBinding()` parse and evaluate tokens like `{oid;operation;...}` with support for arithmetic, date formatting, array access, and eval. This mini-language is isolated, well-documented in comments, and could be extracted as a standalone library for any IoT dashboard that needs lightweight data transformation binding.
A table widget that renders JSON data with dynamic columns, row selection, detail pane, and event streaming. It uses the binding engine to link table data to ioBroker states. The pattern is generic and could be repurposed for any project needing a configurable, state-bound table UI component with minimal adaptation.
A self-contained jQuery plugin providing a file browser dialog with upload, download, rename, delete, and directory operations. It communicates with the backend via a generic `servConn` object and supports configurable filters and modes (open/save/show). This is a reusable UI component that could be adapted for any web application requiring in-browser file management.