Still #154 default view

This commit is contained in:
Yegor Vialov
2018-10-25 00:54:20 +03:00
parent 88cfcb4382
commit 4e955e98d8
4 changed files with 82 additions and 67 deletions

View File

@ -38,7 +38,7 @@ 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;
//int get viewsCount => entities.views.length ?? 0;
HomeAssistant() {
entities = EntityCollection();
@ -371,6 +371,19 @@ class HomeAssistant {
ui = GroupBasedUI();
int viewCounter = 0;
//TODO add default_view
if (!entities.hasDefaultView) {
TheLogger.log("Debug","--Default view");
HACView view = HACView(
count: viewCounter,
id: "group.default_view",
name: "Home"
);
_createView(view, entities.filterEntitiesForDefaultView(), viewCounter);
ui.views.add(
view
);
viewCounter+=1;
}
entities.viewEntities.forEach((viewEntity) {
TheLogger.log("Debug","--View: ${viewEntity.entityId}");
HACView view = HACView(
@ -379,38 +392,7 @@ class HomeAssistant {
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);
_createView(view, viewEntity.childEntities, viewCounter);
ui.views.add(
view
);
@ -421,6 +403,41 @@ class HomeAssistant {
_statesCompleter.complete();
}
void _createView(HACView view, List<Entity> childEntities, int viewCounter) {
List<HACCard> autoGeneratedCards = [];
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);
}
Widget buildViews(BuildContext context) {
//return _viewBuilder.buildWidget(context);
return ui.build(context);