added download from excel and zip in frontend

This commit is contained in:
verboomp
2026-02-23 16:19:57 +01:00
parent e0c6a7db5a
commit 746294d640
15 changed files with 221 additions and 90 deletions

View File

@@ -7,6 +7,7 @@ import 'package:fotodocumentation/dto/picture_dto.dart';
import 'package:fotodocumentation/l10n/app_localizations.dart';
import 'package:fotodocumentation/pages/ui_utils/component/customer_back_button.dart';
import 'package:fotodocumentation/pages/foto/customer/foto_picture_fullscreen_dialog.dart';
import 'package:fotodocumentation/pages/ui_utils/component/evaluation_circle.dart';
import 'package:fotodocumentation/pages/ui_utils/component/general_error_widget.dart';
import 'package:fotodocumentation/pages/ui_utils/component/page_header_widget.dart';
import 'package:fotodocumentation/pages/ui_utils/component/waiting_widget.dart';
@@ -306,25 +307,28 @@ class _FotoPictureWidgetState extends State<FotoPictureWidget> {
Row(
mainAxisSize: MainAxisSize.min,
children: [
_evaluationCircle(
key: const Key("evaluation_good"),
EvaluationCircleWidget(
buttonKey: const Key("evaluation_good"),
color: _generalStyle.evaluationGoodColor,
value: 1,
selected: dto.evaluation == 1,
doUpdate: (circle) => _actionUpdateEvaluation(circle.value),
),
const SizedBox(width: 12),
_evaluationCircle(
key: const Key("evaluation_middle"),
EvaluationCircleWidget(
buttonKey: const Key("evaluation_middle"),
color: _generalStyle.evaluationMiddleColor,
value: 2,
selected: dto.evaluation == 2,
doUpdate: (circle) => _actionUpdateEvaluation(circle.value),
),
const SizedBox(width: 12),
_evaluationCircle(
key: const Key("evaluation_bad"),
EvaluationCircleWidget(
buttonKey: const Key("evaluation_bad"),
color: _generalStyle.evaluationBadColor,
value: 3,
selected: dto.evaluation == 3,
doUpdate: (circle) => _actionUpdateEvaluation(circle.value),
),
],
),
@@ -334,28 +338,6 @@ class _FotoPictureWidgetState extends State<FotoPictureWidget> {
);
}
Widget _evaluationCircle({
required Key key,
required Color color,
required int value,
required bool selected,
}) {
return InkWell(
key: key,
onTap: () async => _actionUpdateEvaluation(value),
customBorder: const CircleBorder(),
child: Container(
width: 24,
height: 24,
decoration: BoxDecoration(
color: color,
shape: BoxShape.circle,
border: selected ? Border.all(color: _generalStyle.secondaryWidgetBackgroundColor, width: 3) : null,
),
),
);
}
// Bottom navigation buttons
Widget _bottomNavigationWidget(List<PictureDto> pictures, PictureDto selectedPicture) {
pictures.sort((a, b) => a.pictureDate.compareTo(b.pictureDate));