Still #154 default view
This commit is contained in:
parent
88cfcb4382
commit
4e955e98d8
@ -3,21 +3,21 @@ part of 'main.dart';
|
||||
class EntityCollection {
|
||||
|
||||
Map<String, Entity> _allEntities;
|
||||
Map<String, Entity> views;
|
||||
//Map<String, Entity> views;
|
||||
|
||||
bool get isEmpty => _allEntities.isEmpty;
|
||||
List<Entity> get viewEntities => _allEntities.values.where((entity) => entity.isView).toList();
|
||||
|
||||
EntityCollection() {
|
||||
_allEntities = {};
|
||||
views = {};
|
||||
//views = {};
|
||||
}
|
||||
|
||||
bool get hasDefaultView => _allEntities.keys.contains("group.default_view");
|
||||
|
||||
void parse(List rawData) {
|
||||
_allEntities.clear();
|
||||
views.clear();
|
||||
//views.clear();
|
||||
|
||||
TheLogger.log("Debug","Parsing ${rawData.length} Home Assistant entities");
|
||||
rawData.forEach((rawEntityData) {
|
||||
@ -27,9 +27,9 @@ class EntityCollection {
|
||||
if ((entity.isGroup) && (entity.childEntityIds != null)) {
|
||||
entity.childEntities = getAll(entity.childEntityIds);
|
||||
}
|
||||
if (entity.isView) {
|
||||
/*if (entity.isView) {
|
||||
views[entityId] = entity;
|
||||
}
|
||||
}*/
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -79,7 +79,6 @@ class NewViewWidgetState extends State<NewViewWidget> {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
TheLogger.log("Debug", "--Building view ${widget.view.id}");
|
||||
return RefreshIndicator(
|
||||
color: Colors.amber,
|
||||
child: ListView(
|
||||
@ -173,7 +172,6 @@ class NewCardWidget extends StatelessWidget {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
TheLogger.log("Debug", "----Building card ${card.id}");
|
||||
if ((card.linkedEntity!= null) && (card.linkedEntity.isHidden)) {
|
||||
return Container(width: 0.0, height: 0.0,);
|
||||
}
|
||||
@ -189,9 +187,6 @@ class NewCardWidget extends StatelessWidget {
|
||||
var result;
|
||||
if ((card.name != null) && (card.name.trim().length > 0)) {
|
||||
result = new ListTile(
|
||||
//leading: const Icon(Icons.device_hub),
|
||||
//subtitle: Text(".."),
|
||||
//trailing: Text("${data["state"]}"),
|
||||
title: Text("${card.name}",
|
||||
textAlign: TextAlign.left,
|
||||
overflow: TextOverflow.ellipsis,
|
||||
@ -207,7 +202,6 @@ class NewCardWidget extends StatelessWidget {
|
||||
List<Widget> result = [];
|
||||
card.entities.forEach((Entity entity) {
|
||||
if (!entity.isHidden) {
|
||||
TheLogger.log("Debug", "------entity ${entity.entityId}");
|
||||
result.add(
|
||||
Padding(
|
||||
padding: EdgeInsets.fromLTRB(0.0, 10.0, 0.0, 10.0),
|
||||
|
@ -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,8 +392,20 @@ class HomeAssistant {
|
||||
name: viewEntity.displayName
|
||||
);
|
||||
view.linkedEntity = viewEntity;
|
||||
_createView(view, viewEntity.childEntities, viewCounter);
|
||||
ui.views.add(
|
||||
view
|
||||
);
|
||||
viewCounter += 1;
|
||||
});
|
||||
|
||||
|
||||
_statesCompleter.complete();
|
||||
}
|
||||
|
||||
void _createView(HACView view, List<Entity> childEntities, int viewCounter) {
|
||||
List<HACCard> autoGeneratedCards = [];
|
||||
viewEntity.childEntities.forEach((entity) {
|
||||
childEntities.forEach((entity) {
|
||||
if (entity.isBadge) {
|
||||
view.badges.add(entity);
|
||||
TheLogger.log("Debug","----Badge: ${entity.entityId}");
|
||||
@ -411,14 +436,6 @@ class HomeAssistant {
|
||||
}
|
||||
});
|
||||
view.cards.addAll(autoGeneratedCards);
|
||||
ui.views.add(
|
||||
view
|
||||
);
|
||||
viewCounter += 1;
|
||||
});
|
||||
|
||||
|
||||
_statesCompleter.complete();
|
||||
}
|
||||
|
||||
Widget buildViews(BuildContext context) {
|
||||
|
@ -85,7 +85,7 @@ class _MainPageState extends State<MainPage> with WidgetsBindingObserver {
|
||||
String _webSocketApiEndpoint;
|
||||
String _password;
|
||||
String _authType;
|
||||
int _uiViewsCount = 0;
|
||||
//int _uiViewsCount = 0;
|
||||
String _instanceHost;
|
||||
StreamSubscription _stateSubscription;
|
||||
StreamSubscription _settingsSubscription;
|
||||
@ -155,6 +155,7 @@ class _MainPageState extends State<MainPage> with WidgetsBindingObserver {
|
||||
|
||||
_subscribe() {
|
||||
if (_stateSubscription == null) {
|
||||
//TODO Move to homeAssistant or remove
|
||||
_stateSubscription = eventBus.on<StateChangedEvent>().listen((event) {
|
||||
setState(() {
|
||||
if (event.localChange) {
|
||||
@ -203,8 +204,8 @@ class _MainPageState extends State<MainPage> with WidgetsBindingObserver {
|
||||
setState(() {
|
||||
//_instanceConfig = _homeAssistant.instanceConfig;
|
||||
_entities = _homeAssistant.entities;
|
||||
_uiViewsCount = _homeAssistant.viewsCount;
|
||||
TheLogger.log("Debug","_uiViewsCount=$_uiViewsCount");
|
||||
//_uiViewsCount = _homeAssistant.viewsCount;
|
||||
//TheLogger.log("Debug","_uiViewsCount=$_uiViewsCount");
|
||||
_isLoading = 0;
|
||||
});
|
||||
}).catchError((e) {
|
||||
@ -238,8 +239,9 @@ class _MainPageState extends State<MainPage> with WidgetsBindingObserver {
|
||||
|
||||
List<Tab> buildUIViewTabs() {
|
||||
List<Tab> result = [];
|
||||
if (!_entities.isEmpty) {
|
||||
if (!_entities.hasDefaultView) {
|
||||
if (_homeAssistant.ui.views.isNotEmpty) {
|
||||
_homeAssistant.ui.views.forEach((HACView view) {
|
||||
if (view.linkedEntity == null) {
|
||||
result.add(
|
||||
Tab(
|
||||
icon:
|
||||
@ -249,17 +251,19 @@ class _MainPageState extends State<MainPage> with WidgetsBindingObserver {
|
||||
)
|
||||
)
|
||||
);
|
||||
}
|
||||
_entities.views.forEach((viewId, groupEntity) {
|
||||
} else {
|
||||
result.add(
|
||||
Tab(
|
||||
icon: MaterialDesignIcons.createIconWidgetFromEntityData(groupEntity, 24.0, null) ??
|
||||
icon: MaterialDesignIcons.createIconWidgetFromEntityData(
|
||||
view.linkedEntity, 24.0, null) ??
|
||||
Icon(
|
||||
MaterialDesignIcons.createIconDataFromIconName("mdi:home-assistant"),
|
||||
MaterialDesignIcons.createIconDataFromIconName(
|
||||
"mdi:home-assistant"),
|
||||
size: 24.0,
|
||||
)
|
||||
)
|
||||
);
|
||||
}
|
||||
});
|
||||
}
|
||||
return result;
|
||||
@ -475,11 +479,11 @@ class _MainPageState extends State<MainPage> with WidgetsBindingObserver {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
// This method is rerun every time setState is called.
|
||||
if (_entities == null) {
|
||||
if (_homeAssistant.entities.isEmpty) {
|
||||
return _buildScaffold(true);
|
||||
} else {
|
||||
return DefaultTabController(
|
||||
length: _uiViewsCount,
|
||||
length: _homeAssistant.ui.views.length,
|
||||
child: _buildScaffold(false)
|
||||
);
|
||||
}
|
||||
|
Reference in New Issue
Block a user