Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions lib/pages/addshift/addshift_dialog.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import 'package:flutter/material.dart';
import 'package:shiftend/models/models.dart';
import 'package:shiftend/util/formatters.dart';

class AddShiftDialog extends StatelessWidget {
const AddShiftDialog({this.requestedShift});
final Shift requestedShift;
@override
Widget build(BuildContext context) {
return AlertDialog(
title: const Text('シフトの追加'),
content: Column(
children: <Widget>[
ListTile(
title: Text(requestedShift.member.user.name),
subtitle: Text(requestedShift.member.role),
),
Text(fullDateToJa(requestedShift.start)),
Text(fullDateToJa(requestedShift.end)),
],
),
);
}
}
20 changes: 14 additions & 6 deletions lib/pages/addshift/addshift_item.dart
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:shiftend/models/models.dart';
import 'package:shiftend/pages/addshift/addshift_dialog.dart';

class AddShiftItem extends StatelessWidget {
const AddShiftItem({this.member});
const AddShiftItem({this.requestedShift});

final Member member;
final Shift requestedShift;

@override
Widget build(BuildContext context) {
Expand All @@ -17,7 +18,14 @@ class AddShiftItem extends StatelessWidget {
color: Colors.grey[50],
padding: const EdgeInsets.all(0),
onPressed: () => {
Navigator.of(context).pop(),
Navigator.push<AddShiftDialog>(
context,
MaterialPageRoute(
builder: (BuildContext _) => AddShiftDialog(
requestedShift: requestedShift,
),
),
),
},
child: Container(
child: ListTile(
Expand All @@ -33,12 +41,12 @@ class AddShiftItem extends StatelessWidget {
shape: BoxShape.circle,
image: DecorationImage(
fit: BoxFit.fill,
image: NetworkImage(member.user.iconUrl),
image: NetworkImage(requestedShift.member.user.iconUrl),
),
),
),
title: Text(member.user.name),
subtitle: Text(member.role),
title: Text(requestedShift.member.user.name),
subtitle: Text(requestedShift.member.role),
),
),
),
Expand Down
36 changes: 25 additions & 11 deletions lib/pages/addshift/addshift_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,20 @@ import 'package:flutter/material.dart';
import 'package:shiftend/models/member/member.dart';
import 'package:shiftend/models/shift/shift.dart';
import 'package:shiftend/models/user/user.dart';
import 'package:shiftend/pages/addshift/shift_item.dart';
import 'package:shiftend/repositories/interfaces/user_repository_interface.dart';
import 'package:shiftend/repositories/mocks/user_repository_mock.dart';
import 'package:shiftend/util/logger.dart';

import 'addshift_item.dart';

class AddShiftPage extends StatelessWidget {
AddShiftPage(
{Key key,
@required this.shiftlist,
@required this.requestShiftlist,
@required this.memberslist})
: super(key: key);
AddShiftPage({
Key key,
@required this.shiftlist,
@required this.requestShiftlist,
@required this.memberslist,
}) : super(key: key);

final UserRepositoryInterface userRepository = UserRepositoryMock();
final List<Shift> shiftlist;
Expand All @@ -25,6 +26,9 @@ class AddShiftPage extends StatelessWidget {
Widget build(BuildContext context) {
final List<Widget> editedlist = [];
logger..info(memberslist)..info(shiftlist);
// TODO: 選択している日付をどこからか持ってくる.
// FIXME: requestShiftlistが空の場合エラーする
final today = requestShiftlist.first.start;
final noShiftMembers = memberslist
.where((member) => !shiftlist
.map((shift) => shift.member.user.id)
Expand All @@ -35,20 +39,30 @@ class AddShiftPage extends StatelessWidget {
editedlist.add(const Text('シフト入ってる人'));
if (shiftlist != null) {
shiftlist.forEach((shift) {
editedlist.add(AddShiftItem(member: shift.member));
editedlist.add(ShiftItem(shift: shift));
});
}
editedlist.add(const Text('シフト希望'));
if (requestShiftlist != null) {
requestShiftlist.forEach((requestedShift) {
editedlist.add(AddShiftItem(member: requestedShift.member));
editedlist.add(AddShiftItem(requestedShift: requestedShift));
});
}
editedlist.add(const Text('シフトなし'));
if (noShiftMembers != null) {
noShiftMembers.forEach((noShiftlist) {
editedlist.add(AddShiftItem(member: noShiftlist));
});
noShiftMembers.forEach(
(noShiftlist) {
editedlist.add(
AddShiftItem(
requestedShift: Shift(
member: noShiftlist,
start: today,
end: today,
),
),
);
},
);
}

return Scaffold(
Expand Down
48 changes: 48 additions & 0 deletions lib/pages/addshift/shift_item.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:shiftend/models/models.dart';

class ShiftItem extends StatelessWidget {
const ShiftItem({this.shift});

final Shift shift;

@override
Widget build(BuildContext context) {
return Column(
children: <Widget>[
FlatButton(
materialTapTargetSize: MaterialTapTargetSize.shrinkWrap,
shape: const RoundedRectangleBorder(),
color: Colors.grey[50],
padding: const EdgeInsets.all(0),
onPressed: () => {
Navigator.of(context).pop(),
},
child: Container(
child: ListTile(
dense: true,
trailing: const Text(
'削除する',
style: TextStyle(color: Colors.green),
),
leading: Container(
height: 50,
width: 50,
decoration: BoxDecoration(
shape: BoxShape.circle,
image: DecorationImage(
fit: BoxFit.fill,
image: NetworkImage(shift.member.user.iconUrl),
),
),
),
title: Text(shift.member.user.name),
subtitle: Text(shift.member.role),
),
),
),
],
);
}
}