mirror of
https://gitlab.com/comunic/comunicmobile
synced 2025-06-19 16:25:17 +00:00
Display Forez presence
This commit is contained in:
@ -60,7 +60,7 @@ class _AuthorizedGroupPageScreenState
|
||||
|
||||
// Forez presence tab
|
||||
_GroupPageTab(
|
||||
widget: (c) => ForezPresenceSection(),
|
||||
widget: (c) => ForezPresenceSection(groupID: _group.id),
|
||||
label: tr("Presence"),
|
||||
visible: _group.isForezGroup,
|
||||
),
|
||||
|
@ -1,3 +1,10 @@
|
||||
import 'package:comunic/helpers/forez_presence_helper.dart';
|
||||
import 'package:comunic/helpers/users_helper.dart';
|
||||
import 'package:comunic/lists/forez_presences_set.dart';
|
||||
import 'package:comunic/lists/users_list.dart';
|
||||
import 'package:comunic/ui/widgets/account_image_widget.dart';
|
||||
import 'package:comunic/ui/widgets/async_screen_widget.dart';
|
||||
import 'package:comunic/ui/widgets/forez_presence_calendar_widget.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
/// Forez presence section
|
||||
@ -5,13 +12,77 @@ import 'package:flutter/material.dart';
|
||||
/// @author Pierre Hubert
|
||||
|
||||
class ForezPresenceSection extends StatefulWidget {
|
||||
final int groupID;
|
||||
|
||||
const ForezPresenceSection({
|
||||
Key key,
|
||||
@required this.groupID,
|
||||
}) : assert(groupID != null),
|
||||
super(key: key);
|
||||
|
||||
@override
|
||||
_ForezPresenceSectionState createState() => _ForezPresenceSectionState();
|
||||
}
|
||||
|
||||
class _ForezPresenceSectionState extends State<ForezPresenceSection> {
|
||||
PresenceSet _presences;
|
||||
UsersList _users;
|
||||
DateTime _currentDay = DateTime.now();
|
||||
|
||||
List<int> get _currentListOfUsers => _presences.getUsersAtDate(_currentDay);
|
||||
|
||||
Future<void> _refresh() async {
|
||||
await ForezPresenceHelper.refreshCache(widget.groupID);
|
||||
|
||||
_presences = await ForezPresenceHelper.getAll(widget.groupID);
|
||||
_users = await UsersHelper().getList(_presences.usersID);
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Container();
|
||||
return Stack(
|
||||
children: <Widget>[
|
||||
AsyncScreenWidget(
|
||||
onReload: _refresh,
|
||||
onBuild: _buildList,
|
||||
errorMessage: "Erreur lors du chargement des présences !",
|
||||
),
|
||||
Positioned(
|
||||
right: 10,
|
||||
bottom: 10,
|
||||
child: FloatingActionButton(
|
||||
backgroundColor: Colors.green,
|
||||
onPressed: () {},
|
||||
child: Icon(Icons.edit),
|
||||
),
|
||||
)
|
||||
],
|
||||
);
|
||||
}
|
||||
|
||||
Widget _buildList() {
|
||||
final currentList = _currentListOfUsers;
|
||||
return ListView.builder(
|
||||
itemCount: currentList.length + 1,
|
||||
itemBuilder: (c, i) =>
|
||||
i == 0 ? _buildCalendar() : _buildUser(currentList[i - 1]),
|
||||
);
|
||||
}
|
||||
|
||||
Widget _buildCalendar() => PresenceCalendarWidget(
|
||||
presenceSet: _presences,
|
||||
mode: CalendarDisplayMode.MULTIPLE_USERS,
|
||||
selectedDay: _currentDay,
|
||||
onDayClicked: _selectDay,
|
||||
);
|
||||
|
||||
void _selectDay(DateTime dt) => setState(() => _currentDay = dt);
|
||||
|
||||
Widget _buildUser(int userID) {
|
||||
final user = _users.getUser(userID);
|
||||
return ListTile(
|
||||
leading: AccountImageWidget(user: user),
|
||||
title: Text(user.fullName),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user