draft booking scheduler page

This commit is contained in:
mr
2024-11-13 08:12:37 +01:00
parent 1ca77b6611
commit 062042b590
15 changed files with 288 additions and 72 deletions

View File

@@ -298,16 +298,21 @@ class HoverMenuState extends State<HoverMenu> {
}
}
var node = FocusNode();
class FlowChartState<T extends FlowData> extends State<FlowChart> {
var node = FocusNode();
bool isCtrl = false;
@override
void initState() {
node.requestFocus();
super.initState();
}
@override
void dispose() {
node.requestFocus();
super.dispose();
}
@override
Widget build(BuildContext context) {
if (!widget.dashboard.isOpened && widget.onDashboardAlertOpened != null ) {
@@ -331,7 +336,7 @@ class FlowChartState<T extends FlowData> extends State<FlowChart> {
} else {
widget.dashboard.isOpened = true;
}
/// get dashboard position after first frame is drawn
/// get dashboard positi(event is KeyDownEvent || event is KeyRepeatEvent) &&on after first frame is drawn
WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
if (mounted) {
final object = context.findRenderObject() as RenderBox?;
@@ -348,41 +353,18 @@ class FlowChartState<T extends FlowData> extends State<FlowChart> {
if (kIsWeb) BrowserContextMenu.disableContextMenu();
return KeyboardListener(
focusNode: node,
autofocus: true,
onKeyEvent: (event) {
bool change = false;
/*if ((event is KeyDownEvent || event is KeyRepeatEvent) && event.logicalKey == LogicalKeyboardKey.arrowUp) {
change = true;
for (var el in widget.dashboard.elements) {
if (el.isSelected) {
el.position = Offset(el.position.dx, el.position.dy - 10);
}
}
if (event.logicalKey == LogicalKeyboardKey.controlLeft) {
isCtrl = event is KeyDownEvent || event is KeyRepeatEvent;
}
if ((event is KeyDownEvent || event is KeyRepeatEvent) && event.logicalKey == LogicalKeyboardKey.arrowDown) {
change = true;
for (var el in widget.dashboard.elements) {
if (el.isSelected) {
el.position = Offset(el.position.dx, el.position.dy + 10);
}
}
if (event is KeyDownEvent || event.logicalKey == LogicalKeyboardKey.keyZ && isCtrl) {
widget.dashboard.back();
}
if ((event is KeyDownEvent || event is KeyRepeatEvent) && event.logicalKey == LogicalKeyboardKey.arrowLeft) {
change = true;
for (var el in widget.dashboard.elements) {
if (el.isSelected) {
el.position = Offset(el.position.dx - 10, el.position.dy);
}
}
if (event is KeyDownEvent || event.logicalKey == LogicalKeyboardKey.keyY && isCtrl) {
widget.dashboard.forward();
}
if ((event is KeyDownEvent || event is KeyRepeatEvent) && event.logicalKey == LogicalKeyboardKey.arrowRight) {
change = true;
for (var el in widget.dashboard.elements) {
if (el.isSelected) {
el.position = Offset(el.position.dx + 10, el.position.dy);
}
}
}*/
if (event is KeyDownEvent && event.logicalKey == LogicalKeyboardKey.add) {
change = true;
for (var el in widget.dashboard.elementSelected) {
@@ -413,6 +395,7 @@ class FlowChartState<T extends FlowData> extends State<FlowChart> {
if (change) {
DrawingArrow.instance.notifyListeners();
widget.dashboard.chartKey.currentState?.setState(() { });
node.requestFocus();
}
},
child: ClipRect(
@@ -455,7 +438,6 @@ class FlowChartState<T extends FlowData> extends State<FlowChart> {
String newID = const Uuid().v4();
double ratio = 1;
if (e.getWidth() != null && e.getHeight() != null) {
print("${e.getWidth()} ${e.getHeight()}");
var h = e.getHeight()! < e.getWidth()! ? e.getHeight()! + 20 : e.getHeight()!;
var w = e.getWidth()! < e.getHeight()! ? e.getWidth()! + 20 : e.getWidth()!;
ratio = (h / w);

View File

@@ -147,6 +147,12 @@ class ElementWidgetState<T extends FlowData> extends State<ElementWidget> {
secondaryTapDownPos = details.globalPosition,
onTap: () {
setState(() {
if (!(widget.dashboard.flutterChartKey.currentState?.isCtrl ?? true)) {
for (var element in widget.dashboard.elements) {
element.isSelected = false;
element.dashboard.chartKey.currentState?. setState(() { });
}
}
widget.element.isSelected = !widget.element.isSelected;
for (var sel in widget.dashboard.arrows) { sel.isSelected = false; }
widget.dashboard.selectedMenuKey.currentState?. setState(() { });