mirror of
https://github.com/SyncrowIOT/web.git
synced 2026-10-26 23:07:58 +00:00
Compare commits
4
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c508d016c2 | ||
|
|
64a29681de | ||
|
|
06b320a75d | ||
|
|
a15b5439f0 |
Binary file not shown.
|
After Width: | Height: | Size: 40 KiB |
@@ -63,7 +63,8 @@ class _DynamicTableState extends State<DynamicTable> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool _compareListOfLists(List<List<dynamic>> oldList, List<List<dynamic>> newList) {
|
bool _compareListOfLists(
|
||||||
|
List<List<dynamic>> oldList, List<List<dynamic>> newList) {
|
||||||
// Check if the old and new lists are the same
|
// Check if the old and new lists are the same
|
||||||
if (oldList.length != newList.length) return false;
|
if (oldList.length != newList.length) return false;
|
||||||
|
|
||||||
@@ -132,46 +133,60 @@ class _DynamicTableState extends State<DynamicTable> {
|
|||||||
children: [
|
children: [
|
||||||
if (widget.withCheckBox) _buildSelectAllCheckbox(),
|
if (widget.withCheckBox) _buildSelectAllCheckbox(),
|
||||||
...List.generate(widget.headers.length, (index) {
|
...List.generate(widget.headers.length, (index) {
|
||||||
return _buildTableHeaderCell(widget.headers[index], index);
|
return _buildTableHeaderCell(
|
||||||
|
widget.headers[index], index);
|
||||||
})
|
})
|
||||||
//...widget.headers.map((header) => _buildTableHeaderCell(header)),
|
//...widget.headers.map((header) => _buildTableHeaderCell(header)),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
widget.isEmpty
|
widget.isEmpty
|
||||||
? Column(
|
? SizedBox(
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
height: widget.size.height * 0.5,
|
||||||
children: [
|
width: widget.size.width,
|
||||||
Row(
|
child: Column(
|
||||||
crossAxisAlignment: CrossAxisAlignment.center,
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
children: [
|
||||||
children: [
|
Row(
|
||||||
Column(
|
crossAxisAlignment: CrossAxisAlignment.center,
|
||||||
children: [
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
SvgPicture.asset(Assets.emptyTable),
|
children: [
|
||||||
const SizedBox(
|
Column(
|
||||||
height: 15,
|
children: [
|
||||||
),
|
SvgPicture.asset(Assets.emptyTable),
|
||||||
Text(
|
const SizedBox(
|
||||||
widget.tableName == 'AccessManagement' ? 'No Password ' : 'No Devices',
|
height: 15,
|
||||||
style: Theme.of(context)
|
),
|
||||||
.textTheme
|
Text(
|
||||||
.bodySmall!
|
widget.tableName == 'AccessManagement'
|
||||||
.copyWith(color: ColorsManager.grayColor),
|
? 'No Password '
|
||||||
)
|
: 'No Devices',
|
||||||
],
|
style: Theme.of(context)
|
||||||
),
|
.textTheme
|
||||||
],
|
.bodySmall!
|
||||||
),
|
.copyWith(
|
||||||
],
|
color:
|
||||||
|
ColorsManager.grayColor),
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
)
|
)
|
||||||
: Column(
|
: Column(
|
||||||
children: List.generate(widget.data.length, (index) {
|
children:
|
||||||
|
List.generate(widget.data.length, (index) {
|
||||||
final row = widget.data[index];
|
final row = widget.data[index];
|
||||||
return Row(
|
return Row(
|
||||||
children: [
|
children: [
|
||||||
if (widget.withCheckBox) _buildRowCheckbox(index, widget.size.height * 0.08),
|
if (widget.withCheckBox)
|
||||||
...row.map((cell) => _buildTableCell(cell.toString(), widget.size.height * 0.08)),
|
_buildRowCheckbox(
|
||||||
|
index, widget.size.height * 0.08),
|
||||||
|
...row.map((cell) => _buildTableCell(
|
||||||
|
cell.toString(),
|
||||||
|
widget.size.height * 0.08)),
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
}),
|
}),
|
||||||
@@ -196,7 +211,9 @@ class _DynamicTableState extends State<DynamicTable> {
|
|||||||
),
|
),
|
||||||
child: Checkbox(
|
child: Checkbox(
|
||||||
value: _selectAll,
|
value: _selectAll,
|
||||||
onChanged: widget.withSelectAll && widget.data.isNotEmpty ? _toggleSelectAll : null,
|
onChanged: widget.withSelectAll && widget.data.isNotEmpty
|
||||||
|
? _toggleSelectAll
|
||||||
|
: null,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -238,7 +255,9 @@ class _DynamicTableState extends State<DynamicTable> {
|
|||||||
constraints: const BoxConstraints.expand(height: 40),
|
constraints: const BoxConstraints.expand(height: 40),
|
||||||
alignment: Alignment.centerLeft,
|
alignment: Alignment.centerLeft,
|
||||||
child: Padding(
|
child: Padding(
|
||||||
padding: EdgeInsets.symmetric(horizontal: index == widget.headers.length - 1 ? 12 : 8.0, vertical: 4),
|
padding: EdgeInsets.symmetric(
|
||||||
|
horizontal: index == widget.headers.length - 1 ? 12 : 8.0,
|
||||||
|
vertical: 4),
|
||||||
child: Text(
|
child: Text(
|
||||||
title,
|
title,
|
||||||
style: context.textTheme.titleSmall!.copyWith(
|
style: context.textTheme.titleSmall!.copyWith(
|
||||||
|
|||||||
@@ -97,7 +97,8 @@ class DeviceControlDialog extends StatelessWidget with RouteControlsBasedCode {
|
|||||||
children: [
|
children: [
|
||||||
_buildInfoRow('Space Name:',
|
_buildInfoRow('Space Name:',
|
||||||
device.spaces?.firstOrNull?.spaceName ?? 'N/A'),
|
device.spaces?.firstOrNull?.spaceName ?? 'N/A'),
|
||||||
_buildInfoRow('Room:', device.subspace?.subspaceName ?? 'N/A'),
|
_buildInfoRow(
|
||||||
|
'Sub space:', device.subspace?.subspaceName ?? 'N/A'),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
TableRow(
|
TableRow(
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ class Assets {
|
|||||||
Assets._();
|
Assets._();
|
||||||
static const String background = "assets/images/Background.png";
|
static const String background = "assets/images/Background.png";
|
||||||
static const String webBackground = "assets/images/web_Background.svg";
|
static const String webBackground = "assets/images/web_Background.svg";
|
||||||
|
static const String webBackgroundPng = "assets/images/web_Background.png";
|
||||||
static const String blackLogo = "assets/images/black-logo.png";
|
static const String blackLogo = "assets/images/black-logo.png";
|
||||||
static const String logo = "assets/images/Logo.svg";
|
static const String logo = "assets/images/Logo.svg";
|
||||||
static const String logoHorizontal = "assets/images/logo_horizontal.png";
|
static const String logoHorizontal = "assets/images/logo_horizontal.png";
|
||||||
|
|||||||
@@ -41,13 +41,24 @@ class _UserDropdownMenuState extends State<UserDropdownMenu> {
|
|||||||
_isDropdownOpen = false;
|
_isDropdownOpen = false;
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
child: Transform.rotate(
|
child: Row(
|
||||||
angle: _isDropdownOpen ? -1.5708 : 1.5708,
|
children: [
|
||||||
child: const Icon(
|
const SizedBox(width: 12),
|
||||||
Icons.arrow_forward_ios,
|
if (widget.user != null)
|
||||||
color: Colors.white,
|
Text(
|
||||||
size: 16,
|
'${widget.user!.firstName} ${widget.user!.lastName}',
|
||||||
),
|
style: Theme.of(context).textTheme.bodyLarge,
|
||||||
|
),
|
||||||
|
const SizedBox(width: 12),
|
||||||
|
Transform.rotate(
|
||||||
|
angle: _isDropdownOpen ? -1.5708 : 1.5708,
|
||||||
|
child: const Icon(
|
||||||
|
Icons.arrow_forward_ios,
|
||||||
|
color: Colors.white,
|
||||||
|
size: 16,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -92,13 +92,6 @@ class DesktopAppBar extends StatelessWidget {
|
|||||||
if (rightBody != null) rightBody!,
|
if (rightBody != null) rightBody!,
|
||||||
const SizedBox(width: 24),
|
const SizedBox(width: 24),
|
||||||
_UserAvatar(),
|
_UserAvatar(),
|
||||||
const SizedBox(width: 12),
|
|
||||||
if (user != null)
|
|
||||||
Text(
|
|
||||||
'${user.firstName} ${user.lastName}',
|
|
||||||
style: Theme.of(context).textTheme.bodyLarge,
|
|
||||||
),
|
|
||||||
const SizedBox(width: 12),
|
|
||||||
UserDropdownMenu(user: user),
|
UserDropdownMenu(user: user),
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
@@ -146,14 +139,6 @@ class TabletAppBar extends StatelessWidget {
|
|||||||
if (rightBody != null) rightBody!,
|
if (rightBody != null) rightBody!,
|
||||||
const SizedBox(width: 16),
|
const SizedBox(width: 16),
|
||||||
_UserAvatar(),
|
_UserAvatar(),
|
||||||
if (user != null) ...[
|
|
||||||
const SizedBox(width: 8),
|
|
||||||
Text(
|
|
||||||
'${user.firstName} ${user.lastName}',
|
|
||||||
style:
|
|
||||||
Theme.of(context).textTheme.bodyLarge?.copyWith(fontSize: 14),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
UserDropdownMenu(user: user),
|
UserDropdownMenu(user: user),
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
@@ -215,14 +200,6 @@ class MobileAppBar extends StatelessWidget {
|
|||||||
return Row(
|
return Row(
|
||||||
children: [
|
children: [
|
||||||
_UserAvatar(),
|
_UserAvatar(),
|
||||||
if (user != null) ...[
|
|
||||||
const SizedBox(width: 8),
|
|
||||||
Text(
|
|
||||||
'${user.firstName} ${user.lastName}',
|
|
||||||
style:
|
|
||||||
Theme.of(context).textTheme.bodyLarge?.copyWith(fontSize: 14),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
UserDropdownMenu(user: user),
|
UserDropdownMenu(user: user),
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_svg/svg.dart';
|
|
||||||
import 'package:syncrow_web/utils/constants/assets.dart';
|
import 'package:syncrow_web/utils/constants/assets.dart';
|
||||||
import 'package:syncrow_web/utils/helpers/responsice_layout_helper/responsive_layout_helper.dart';
|
import 'package:syncrow_web/utils/helpers/responsice_layout_helper/responsive_layout_helper.dart';
|
||||||
import 'package:syncrow_web/web_layout/web_app_bar.dart';
|
import 'package:syncrow_web/web_layout/web_app_bar.dart';
|
||||||
|
|
||||||
import 'menu_sidebar.dart';
|
import 'menu_sidebar.dart';
|
||||||
|
|
||||||
class WebScaffold extends StatelessWidget with HelperResponsiveLayout {
|
class WebScaffold extends StatelessWidget with HelperResponsiveLayout {
|
||||||
@@ -28,14 +28,11 @@ class WebScaffold extends StatelessWidget with HelperResponsiveLayout {
|
|||||||
SizedBox(
|
SizedBox(
|
||||||
width: MediaQuery.sizeOf(context).width,
|
width: MediaQuery.sizeOf(context).width,
|
||||||
height: MediaQuery.sizeOf(context).height,
|
height: MediaQuery.sizeOf(context).height,
|
||||||
child: SvgPicture.asset(
|
child: Image.asset(
|
||||||
Assets.webBackground,
|
Assets.webBackgroundPng,
|
||||||
fit: BoxFit.cover,
|
fit: BoxFit.cover,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
Container(
|
|
||||||
color: Colors.white.withOpacity(0.7),
|
|
||||||
),
|
|
||||||
Column(
|
Column(
|
||||||
crossAxisAlignment: CrossAxisAlignment.stretch,
|
crossAxisAlignment: CrossAxisAlignment.stretch,
|
||||||
children: [
|
children: [
|
||||||
|
|||||||
Reference in New Issue
Block a user