Resolves #154 UI building refactoring
This commit is contained in:
@ -14,8 +14,8 @@ class HomeAssistant {
|
||||
int _subscriptionMessageId = 0;
|
||||
int _configMessageId = 0;
|
||||
int _userInfoMessageId = 0;
|
||||
EntityCollection _entities;
|
||||
ViewBuilder _viewBuilder;
|
||||
EntityCollection entities;
|
||||
GroupBasedUI ui;
|
||||
Map _instanceConfig = {};
|
||||
String _userName;
|
||||
|
||||
@ -38,12 +38,10 @@ class HomeAssistant {
|
||||
String get locationName => _instanceConfig["location_name"] ?? "";
|
||||
String get userName => _userName ?? locationName;
|
||||
String get userAvatarText => userName.length > 0 ? userName[0] : "";
|
||||
int get viewsCount => _entities.views.length ?? 0;
|
||||
|
||||
EntityCollection get entities => _entities;
|
||||
int get viewsCount => entities.views.length ?? 0;
|
||||
|
||||
HomeAssistant() {
|
||||
_entities = EntityCollection();
|
||||
entities = EntityCollection();
|
||||
_messageQueue = SendMessageQueue(messageExpirationTime);
|
||||
}
|
||||
|
||||
@ -314,7 +312,7 @@ class HomeAssistant {
|
||||
void _handleEntityStateChange(Map eventData) {
|
||||
//TheLogger.log("Debug", "New state for ${eventData['entity_id']}");
|
||||
Map data = Map.from(eventData);
|
||||
_entities.updateState(data);
|
||||
entities.updateState(data);
|
||||
eventBus.fire(new StateChangedEvent(data["entity_id"], null, false));
|
||||
}
|
||||
|
||||
@ -367,13 +365,65 @@ class HomeAssistant {
|
||||
_statesCompleter.completeError({"errorCode": 3, "errorMessage": response["error"]["message"]});
|
||||
return;
|
||||
}
|
||||
_entities.parse(response["result"]);
|
||||
_viewBuilder = ViewBuilder(entityCollection: _entities);
|
||||
entities.parse(response["result"]);
|
||||
|
||||
|
||||
ui = GroupBasedUI();
|
||||
int viewCounter = 0;
|
||||
//TODO add default_view
|
||||
entities.viewEntities.forEach((viewEntity) {
|
||||
TheLogger.log("Debug","--View: ${viewEntity.entityId}");
|
||||
HACView view = HACView(
|
||||
count: viewCounter,
|
||||
id: viewEntity.entityId,
|
||||
name: viewEntity.displayName
|
||||
);
|
||||
view.linkedEntity = viewEntity;
|
||||
List<HACCard> autoGeneratedCards = [];
|
||||
viewEntity.childEntities.forEach((entity) {
|
||||
if (entity.isBadge) {
|
||||
view.badges.add(entity);
|
||||
TheLogger.log("Debug","----Badge: ${entity.entityId}");
|
||||
} else {
|
||||
if (!entity.isGroup) {
|
||||
String groupIdToAdd = "${entity.domain}.${entity.domain}$viewCounter";
|
||||
if (autoGeneratedCards.every((HACCard card) => card.id != groupIdToAdd )) {
|
||||
HACCard card = HACCard(
|
||||
id: groupIdToAdd,
|
||||
name: entity.domain
|
||||
);
|
||||
TheLogger.log("Debug","----Creating card: $groupIdToAdd");
|
||||
card.entities.add(entity);
|
||||
autoGeneratedCards.add(card);
|
||||
} else {
|
||||
autoGeneratedCards.firstWhere((card) => card.id == groupIdToAdd).entities.add(entity);
|
||||
}
|
||||
} else {
|
||||
TheLogger.log("Debug","----Card: ${entity.entityId}");
|
||||
HACCard card = HACCard(
|
||||
name: entity.displayName,
|
||||
id: entity.entityId,
|
||||
linkedEntity: entity
|
||||
);
|
||||
card.entities.addAll(entity.childEntities);
|
||||
view.cards.add(card);
|
||||
}
|
||||
}
|
||||
});
|
||||
view.cards.addAll(autoGeneratedCards);
|
||||
ui.views.add(
|
||||
view
|
||||
);
|
||||
viewCounter += 1;
|
||||
});
|
||||
|
||||
|
||||
_statesCompleter.complete();
|
||||
}
|
||||
|
||||
Widget buildViews(BuildContext context) {
|
||||
return _viewBuilder.buildWidget(context);
|
||||
//return _viewBuilder.buildWidget(context);
|
||||
return ui.build(context);
|
||||
}
|
||||
|
||||
Future<List> getHistory(String entityId) async {
|
||||
|
Reference in New Issue
Block a user