Resolves #121 Markdown card support

This commit is contained in:
Yegor Vialov 2019-01-23 23:34:45 +02:00
parent be5ea55f6b
commit 1c8f770f10
9 changed files with 54 additions and 14 deletions

View File

@ -94,4 +94,5 @@ class CardType {
static const entityButton = "entity-button"; static const entityButton = "entity-button";
static const conditional = "conditional"; static const conditional = "conditional";
static const alarmPanel = "alarm-panel"; static const alarmPanel = "alarm-panel";
static const markdown = "markdown";
} }

View File

@ -439,7 +439,8 @@ class HomeAssistant {
showName: isThereCardOptionsInside ? rawCard["card"]['show_name'] ?? true : rawCard['show_name'] ?? true, showName: isThereCardOptionsInside ? rawCard["card"]['show_name'] ?? true : rawCard['show_name'] ?? true,
showState: isThereCardOptionsInside ? rawCard["card"]['show_state'] ?? true : rawCard['show_state'] ?? true, showState: isThereCardOptionsInside ? rawCard["card"]['show_state'] ?? true : rawCard['show_state'] ?? true,
showEmpty: rawCard['show_empty'] ?? true, showEmpty: rawCard['show_empty'] ?? true,
stateFilter: rawCard['state_filter'] ?? [] stateFilter: rawCard['state_filter'] ?? [],
content: rawCard['content']
); );
if (rawCard["cards"] != null) { if (rawCard["cards"] != null) {
card.childCards = _createLovelaceCards(rawCard["cards"]); card.childCards = _createLovelaceCards(rawCard["cards"]);

View File

@ -14,6 +14,7 @@ import 'package:http/http.dart' as http;
import 'package:flutter_colorpicker/material_picker.dart'; import 'package:flutter_colorpicker/material_picker.dart';
import 'package:charts_flutter/flutter.dart' as charts; import 'package:charts_flutter/flutter.dart' as charts;
import 'package:progress_indicators/progress_indicators.dart'; import 'package:progress_indicators/progress_indicators.dart';
import 'package:flutter_markdown/flutter_markdown.dart';
part 'entity_class/const.dart'; part 'entity_class/const.dart';
part 'entity_class/entity.class.dart'; part 'entity_class/entity.class.dart';
@ -85,7 +86,7 @@ part 'ui_widgets/card_header_widget.dart';
EventBus eventBus = new EventBus(); EventBus eventBus = new EventBus();
const String appName = "HA Client"; const String appName = "HA Client";
const appVersion = "0.3.13-82"; const appVersion = "0.3.13-83";
String homeAssistantWebHost; String homeAssistantWebHost;

View File

@ -12,6 +12,7 @@ class HACard {
bool showEmpty; bool showEmpty;
int columnsCount; int columnsCount;
List stateFilter; List stateFilter;
String content;
HACard({ HACard({
this.name, this.name,
@ -22,6 +23,7 @@ class HACard {
this.showState: true, this.showState: true,
this.stateFilter: const [], this.stateFilter: const [],
this.showEmpty: true, this.showEmpty: true,
this.content,
@required this.type @required this.type
}); });

View File

@ -11,6 +11,7 @@ class Sizes {
static const nameFontSize = 15.0; static const nameFontSize = 15.0;
static const smallFontSize = 14.0; static const smallFontSize = 14.0;
static const largeFontSize = 24.0; static const largeFontSize = 24.0;
static const mediumFontSize = 21.0;
static const inputWidth = 160.0; static const inputWidth = 160.0;
static const rowPadding = 10.0; static const rowPadding = 10.0;
} }

View File

@ -14,7 +14,7 @@ class CardHeaderWidget extends StatelessWidget {
title: Text("$name", title: Text("$name",
textAlign: TextAlign.left, textAlign: TextAlign.left,
overflow: TextOverflow.ellipsis, overflow: TextOverflow.ellipsis,
style: new TextStyle(fontWeight: FontWeight.bold, fontSize: Sizes.largeFontSize)), style: new TextStyle(fontSize: Sizes.mediumFontSize)),
); );
} else { } else {
result = new Container(width: 0.0, height: 0.0); result = new Container(width: 0.0, height: 0.0);

View File

@ -33,6 +33,10 @@ class CardWidget extends StatelessWidget {
return _buildEntityButtonCard(context); return _buildEntityButtonCard(context);
} }
case CardType.markdown: {
return _buildMarkdownCard(context);
}
case CardType.horizontalStack: { case CardType.horizontalStack: {
if (card.childCards.isNotEmpty) { if (card.childCards.isNotEmpty) {
List<Widget> children = []; List<Widget> children = [];
@ -109,6 +113,21 @@ class CardWidget extends StatelessWidget {
); );
} }
Widget _buildMarkdownCard(BuildContext context) {
if (card.content == null) {
return Container(height: 0.0, width: 0.0,);
}
List<Widget> body = [];
body.add(CardHeaderWidget(name: card.name));
body.add(MarkdownBody(data: card.content));
return Card(
child: Padding(
padding: EdgeInsets.fromLTRB(Sizes.leftWidgetPadding, Sizes.rowPadding, Sizes.rightWidgetPadding, Sizes.rowPadding),
child: new Column(mainAxisSize: MainAxisSize.min, children: body),
)
);
}
Widget _buildGlanceCard(BuildContext context) { Widget _buildGlanceCard(BuildContext context) {
List<EntityWrapper> entitiesToShow = card.getEntitiesToShow(); List<EntityWrapper> entitiesToShow = card.getEntitiesToShow();
if (entitiesToShow.isEmpty && !card.showEmpty) { if (entitiesToShow.isEmpty && !card.showEmpty) {

View File

@ -7,7 +7,7 @@ packages:
name: archive name: archive
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.0.4" version: "2.0.7"
args: args:
dependency: transitive dependency: transitive
description: description:
@ -70,7 +70,7 @@ packages:
name: convert name: convert
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.0.2" version: "2.1.1"
crypto: crypto:
dependency: transitive dependency: transitive
description: description:
@ -83,7 +83,7 @@ packages:
description: description:
path: "." path: "."
ref: HEAD ref: HEAD
resolved-ref: e26916e095244a7e5ea61315b030d298d127ed26 resolved-ref: a7ed88a4793e094a4d5d5c2d88a89e55510accde
url: "https://github.com/MarkOSullivan94/dart_config.git" url: "https://github.com/MarkOSullivan94/dart_config.git"
source: git source: git
version: "0.5.0" version: "0.5.0"
@ -93,7 +93,7 @@ packages:
name: date_format name: date_format
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.0.5" version: "1.0.6"
event_bus: event_bus:
dependency: "direct main" dependency: "direct main"
description: description:
@ -119,7 +119,7 @@ packages:
name: flutter_colorpicker name: flutter_colorpicker
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.1.0" version: "0.2.1"
flutter_launcher_icons: flutter_launcher_icons:
dependency: "direct dev" dependency: "direct dev"
description: description:
@ -127,6 +127,13 @@ packages:
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.7.0" version: "0.7.0"
flutter_markdown:
dependency: "direct main"
description:
name: flutter_markdown
url: "https://pub.dartlang.org"
source: hosted
version: "0.2.0"
flutter_test: flutter_test:
dependency: "direct dev" dependency: "direct dev"
description: flutter description: flutter
@ -138,7 +145,7 @@ packages:
name: http name: http
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.12.0" version: "0.12.0+1"
http_parser: http_parser:
dependency: transitive dependency: transitive
description: description:
@ -167,6 +174,13 @@ packages:
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.11.3+2" version: "0.11.3+2"
markdown:
dependency: transitive
description:
name: markdown
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.2"
matcher: matcher:
dependency: transitive dependency: transitive
description: description:
@ -201,7 +215,7 @@ packages:
name: petitparser name: petitparser
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.0.2" version: "2.1.0"
progress_indicators: progress_indicators:
dependency: "direct main" dependency: "direct main"
description: description:
@ -262,7 +276,7 @@ packages:
name: synchronized name: synchronized
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.5.3" version: "1.5.3+2"
term_glyph: term_glyph:
dependency: transitive dependency: transitive
description: description:
@ -290,7 +304,7 @@ packages:
name: url_launcher name: url_launcher
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "4.0.2" version: "4.1.0+1"
uuid: uuid:
dependency: transitive dependency: transitive
description: description:
@ -318,7 +332,7 @@ packages:
name: xml name: xml
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "3.2.3" version: "3.2.5"
yaml: yaml:
dependency: transitive dependency: transitive
description: description:

View File

@ -1,7 +1,7 @@
name: hass_client name: hass_client
description: Home Assistant Android Client description: Home Assistant Android Client
version: 0.3.13+82 version: 0.3.13+83
environment: environment:
sdk: ">=2.0.0-dev.68.0 <3.0.0" sdk: ">=2.0.0-dev.68.0 <3.0.0"
@ -18,6 +18,7 @@ dependencies:
date_format: any date_format: any
flutter_colorpicker: any flutter_colorpicker: any
charts_flutter: any charts_flutter: any
flutter_markdown: any
# The following adds the Cupertino Icons font to your application. # The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons. # Use with the CupertinoIcons class for iOS style icons.