2018-09-28 10:15:25 +03:00
|
|
|
part of 'main.dart';
|
|
|
|
|
|
|
|
class UIBuilder {
|
|
|
|
EntityCollection _entities;
|
|
|
|
Map<String, View> _views;
|
2018-09-28 11:18:37 +03:00
|
|
|
static List badgeDomains = ["alarm_control_panel", "binary_sensor", "device_tracker", "updater", "sun", "timer", "sensor"];
|
2018-09-28 10:15:25 +03:00
|
|
|
|
|
|
|
bool get isEmpty => _views.length == 0;
|
|
|
|
Map<String, View> get views => _views ?? {};
|
|
|
|
|
|
|
|
UIBuilder() {
|
|
|
|
_views = {};
|
|
|
|
}
|
|
|
|
|
2018-09-28 11:18:37 +03:00
|
|
|
static bool isBadge(String domain) {
|
|
|
|
return badgeDomains.contains(domain);
|
|
|
|
}
|
|
|
|
|
2018-09-28 10:15:25 +03:00
|
|
|
void build(EntityCollection entitiesCollection) {
|
|
|
|
_entities = entitiesCollection;
|
|
|
|
_views.clear();
|
|
|
|
_createViewsContainers(entitiesCollection.viewList);
|
|
|
|
}
|
|
|
|
|
|
|
|
void _createViewsContainers(List<String> viewsList) {
|
|
|
|
int counter = 0;
|
|
|
|
viewsList.forEach((viewId) {
|
|
|
|
counter += 1;
|
|
|
|
_views[viewId] = View(viewId, counter);
|
|
|
|
});
|
|
|
|
//TODO merge this two func into one
|
|
|
|
_createViews();
|
|
|
|
}
|
|
|
|
|
|
|
|
void _createViews() {
|
|
|
|
TheLogger.log("Debug","Gethering views");
|
|
|
|
_views.forEach((viewId, view) { //Each view
|
|
|
|
try {
|
|
|
|
Entity viewGroupEntity = _entities.get(viewId);
|
|
|
|
viewGroupEntity.childEntities.forEach((
|
|
|
|
entityId) { //Each entity or group in view
|
|
|
|
if (_entities.isExist(entityId)) {
|
2018-09-28 11:18:37 +03:00
|
|
|
view.add(_entities.get(entityId));
|
2018-09-28 10:15:25 +03:00
|
|
|
} else {
|
|
|
|
TheLogger.log("Warning", "Unknown entity inside view: $entityId");
|
|
|
|
}
|
|
|
|
});
|
|
|
|
} catch (error) {
|
|
|
|
TheLogger.log("Error","Error parsing view: $viewId");
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|