From 0c8b89b737e2d4a4ac29eccc97946413a079bffd Mon Sep 17 00:00:00 2001 From: Johannes Vedder Date: Fri, 30 Jun 2023 16:43:00 +0200 Subject: [PATCH] style: dashboard study rows pin and tags improvement --- .../lib/common_views/standard_table.dart | 9 +-- .../lib/features/dashboard/studies_table.dart | 62 ++++++++++++------- 2 files changed, 46 insertions(+), 25 deletions(-) diff --git a/designer_v2/lib/common_views/standard_table.dart b/designer_v2/lib/common_views/standard_table.dart index 7b0ed77af..7205e0f85 100644 --- a/designer_v2/lib/common_views/standard_table.dart +++ b/designer_v2/lib/common_views/standard_table.dart @@ -51,7 +51,7 @@ class StandardTable extends StatefulWidget { this.dataRowBuilder, this.cellSpacing = 10.0, this.rowSpacing = 9.0, - this.minRowHeight = 50.0, + this.minRowHeight = 60.0, this.showTableHeader = true, this.tableWrapper, this.leadingWidget, @@ -302,14 +302,15 @@ class _StandardTableState extends State> { final List headerCells = []; for (var i = 0; i < columns.length; i++) { - final isLeadingTrailing = i == 0 || i == columns.length - 1; + final isLeading = i == 0; + final isTrailing = i == columns.length - 1; headerCells.add(MouseEventsRegion( builder: (context, state) { return Padding( padding: EdgeInsets.fromLTRB( - (isLeadingTrailing) ? 2 * widget.cellSpacing : widget.cellSpacing, + (isLeading || isTrailing) ? 2 * widget.cellSpacing : widget.cellSpacing, widget.cellSpacing, - (isLeadingTrailing) ? 2 * widget.cellSpacing : widget.cellSpacing, + (isLeading || isTrailing) ? 2 * widget.cellSpacing : widget.cellSpacing, widget.cellSpacing), child: Row( children: [ diff --git a/designer_v2/lib/features/dashboard/studies_table.dart b/designer_v2/lib/features/dashboard/studies_table.dart index 3cd5db9fb..307f8179f 100644 --- a/designer_v2/lib/features/dashboard/studies_table.dart +++ b/designer_v2/lib/features/dashboard/studies_table.dart @@ -124,36 +124,56 @@ class StudiesTable extends StatelessWidget { return (value > 0) ? null : ThemeConfig.bodyTextBackground(theme); } - Icon pinIcon(IconData iconData) { + Icon icon(IconData iconData) { return Icon( iconData, color: Colors.grey, - size: 20, + size: 25, ); } + Widget getRespectivePinIcon(Set state) { + final bool contains = pinnedStudies.contains(item.id); + final bool hovers = state.contains(MaterialState.hovered); + switch (hovers) { + case true: + return contains ? icon(MdiIcons.pinOff) : icon(MdiIcons.pin); + case false: + return contains ? icon(MdiIcons.pin) : const SizedBox.shrink(); + default: + return const SizedBox.shrink(); + } + } + return [ - pinnedStudies.contains(item.id) - ? MouseEventsRegion( - onTap: () => dashboardProvider.pinOffStudy(item.id), - builder: (context, mouseEventState) => - mouseEventState.contains(MaterialState.hovered) ? pinIcon(MdiIcons.pinOff) : pinIcon(MdiIcons.pin), - ) - : const SizedBox.shrink(), - Column(children: [ - Text(item.title ?? '[Missing study title]'), - Wrap( - spacing: 8.0, - children: List.generate( - item.studyTags.length, (index) { - return studybadge.Badge( - label: item.studyTags.elementAt(index).name, - type: studybadge.BadgeType.outlineFill, - icon: null, + MouseEventsRegion( + onTap: () => pinnedStudies.contains(item.id) ? dashboardProvider.pinOffStudy(item.id) : dashboardProvider.pinStudy(item.id), + builder: (context, mouseEventState) { + return SizedBox.expand( + child: Container( + child: getRespectivePinIcon(mouseEventState), + ), ); - }), + }, ), - ], + item.studyTags.isEmpty ? Text(item.title ?? '[Missing study title]') : + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text(item.title ?? '[Missing study title]'), + const SizedBox(height: 8.0), + Wrap( + spacing: 8.0, + children: List.generate( + item.studyTags.length, (index) { + return studybadge.Badge( + label: item.studyTags.elementAt(index).name, + type: studybadge.BadgeType.outlineFill, + icon: null, + ); + }), + ), + ] ), StudyStatusBadge( status: item.status,