Added date and room selection during reservation creation/edit
This commit is contained in:
parent
8fb7c32e2b
commit
61113edade
4
assets/themes/rooms_menu.tres
Normal file
4
assets/themes/rooms_menu.tres
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
[gd_resource type="Theme" format=3 uid="uid://cdor0uw5aqxkq"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
default_font_size = 72
|
@ -67,10 +67,13 @@ func _process_schedule(delta):
|
|||||||
_schedule_update_timer += delta
|
_schedule_update_timer += delta
|
||||||
|
|
||||||
func _ready():
|
func _ready():
|
||||||
|
_remove_reservations()
|
||||||
|
_initialize()
|
||||||
|
|
||||||
|
func _initialize():
|
||||||
_connect_signals()
|
_connect_signals()
|
||||||
|
|
||||||
_remove_time_slots()
|
_remove_time_slots()
|
||||||
|
|
||||||
_fill_with_slots()
|
_fill_with_slots()
|
||||||
|
|
||||||
await get_tree().create_timer(0.1, false).timeout
|
await get_tree().create_timer(0.1, false).timeout
|
||||||
@ -203,10 +206,12 @@ func _input(event):
|
|||||||
if _main.get_current_page() == Main.Pages.Board:
|
if _main.get_current_page() == Main.Pages.Board:
|
||||||
var time = _get_time_by_position(event.position)
|
var time = _get_time_by_position(event.position)
|
||||||
|
|
||||||
if _time_is_before_current_time(time):
|
if _time_is_before_current_time(time) and _selected_date_is_current():
|
||||||
return
|
return
|
||||||
|
|
||||||
var creation_page = _main.load_page(Main.Pages.ReservationCreation)
|
var creation_page = _main.load_page(Main.Pages.ReservationCreation)
|
||||||
|
creation_page.clean()
|
||||||
|
creation_page.update()
|
||||||
creation_page.set_start_time(time)
|
creation_page.set_start_time(time)
|
||||||
|
|
||||||
func _get_time_by_position(position):
|
func _get_time_by_position(position):
|
||||||
@ -229,6 +234,9 @@ func _clicked_on_timeline(pos: Vector2):
|
|||||||
pos.y < _timeline.size.y + timeline_position.y
|
pos.y < _timeline.size.y + timeline_position.y
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func _selected_date_is_current():
|
||||||
|
return _main.get_selected_date() == _main.get_current_date()
|
||||||
|
|
||||||
func _time_is_before_current_time(time):
|
func _time_is_before_current_time(time):
|
||||||
var current_time = Time.get_time_dict_from_system()
|
var current_time = Time.get_time_dict_from_system()
|
||||||
var time_in_minutes = time.hours*60 + time.minutes
|
var time_in_minutes = time.hours*60 + time.minutes
|
||||||
@ -245,7 +253,6 @@ func _on_room_button_pressed():
|
|||||||
if _rooms_menu.visible:
|
if _rooms_menu.visible:
|
||||||
_rooms_menu.hide()
|
_rooms_menu.hide()
|
||||||
else:
|
else:
|
||||||
_rooms_menu.position = _date.position
|
|
||||||
_rooms_menu.show()
|
_rooms_menu.show()
|
||||||
|
|
||||||
func _on_room_selected(idx, text):
|
func _on_room_selected(idx, text):
|
||||||
@ -259,6 +266,7 @@ func _on_room_selected(idx, text):
|
|||||||
update()
|
update()
|
||||||
|
|
||||||
func _on_date_button_pressed():
|
func _on_date_button_pressed():
|
||||||
|
_main.start_date_selection()
|
||||||
_main.load_page(Main.Pages.CalendarSetting)
|
_main.load_page(Main.Pages.CalendarSetting)
|
||||||
|
|
||||||
func _on_reservations_updated(reservations):
|
func _on_reservations_updated(reservations):
|
||||||
@ -267,5 +275,5 @@ func _on_reservations_updated(reservations):
|
|||||||
|
|
||||||
func update():
|
func update():
|
||||||
_block_board_click_for(0.25)
|
_block_board_click_for(0.25)
|
||||||
_ready()
|
_initialize()
|
||||||
_update_schedule()
|
_update_schedule()
|
||||||
|
@ -8,8 +8,9 @@ func _process(delta):
|
|||||||
_process_items_font_size()
|
_process_items_font_size()
|
||||||
|
|
||||||
func _process_items_font_size():
|
func _process_items_font_size():
|
||||||
var font_size = _items.get_theme_default_font_size()
|
var default_font_size = _items.get_theme_default_font_size()
|
||||||
var new_font_size = get_viewport_rect().size.y/35
|
var font_size = _items.get_theme_font_size("font_size")
|
||||||
|
var new_font_size = get_viewport_rect().size.y/30
|
||||||
if font_size != new_font_size:
|
if font_size != new_font_size:
|
||||||
_items.add_theme_font_size_override("font_size", new_font_size)
|
_items.add_theme_font_size_override("font_size", new_font_size)
|
||||||
|
|
||||||
@ -28,6 +29,9 @@ func clear():
|
|||||||
func select(idx):
|
func select(idx):
|
||||||
_items.select(idx)
|
_items.select(idx)
|
||||||
|
|
||||||
|
func deselect_all():
|
||||||
|
_items.deselect_all()
|
||||||
|
|
||||||
func _on_item_clicked(index, at_position, mouse_button_index):
|
func _on_item_clicked(index, at_position, mouse_button_index):
|
||||||
var text = _items.get_item_text(index)
|
var text = _items.get_item_text(index)
|
||||||
item_clicked.emit(index, text)
|
item_clicked.emit(index, text)
|
||||||
|
@ -1,7 +1,10 @@
|
|||||||
[gd_scene load_steps=3 format=3 uid="uid://bt3h3m10qx1jr"]
|
[gd_scene load_steps=4 format=3 uid="uid://bt3h3m10qx1jr"]
|
||||||
|
|
||||||
[ext_resource type="Script" path="res://scenes/board/rooms_menu.gd" id="1_5p83j"]
|
[ext_resource type="Script" path="res://scenes/board/rooms_menu.gd" id="1_5p83j"]
|
||||||
[ext_resource type="Theme" uid="uid://cmhwbyqu6nh38" path="res://assets/themes/big.tres" id="1_yypwp"]
|
[ext_resource type="Theme" uid="uid://cdor0uw5aqxkq" path="res://assets/themes/rooms_menu.tres" id="2_xsikm"]
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_36vy7"]
|
||||||
|
bg_color = Color(0.137255, 0.137255, 0.137255, 0.658824)
|
||||||
|
|
||||||
[node name="RoomsMenu" type="Control"]
|
[node name="RoomsMenu" type="Control"]
|
||||||
layout_mode = 3
|
layout_mode = 3
|
||||||
@ -10,9 +13,10 @@ script = ExtResource("1_5p83j")
|
|||||||
|
|
||||||
[node name="Items" type="ItemList" parent="."]
|
[node name="Items" type="ItemList" parent="."]
|
||||||
layout_mode = 0
|
layout_mode = 0
|
||||||
offset_right = 500.0
|
offset_right = 750.0
|
||||||
offset_bottom = 280.0
|
offset_bottom = 420.0
|
||||||
theme = ExtResource("1_yypwp")
|
theme = ExtResource("2_xsikm")
|
||||||
|
theme_override_styles/panel = SubResource("StyleBoxFlat_36vy7")
|
||||||
auto_height = true
|
auto_height = true
|
||||||
item_count = 4
|
item_count = 4
|
||||||
item_0/text = "Маркетинг"
|
item_0/text = "Маркетинг"
|
||||||
|
@ -1 +1,52 @@
|
|||||||
extends Control
|
extends Control
|
||||||
|
|
||||||
|
@onready var _main: Main = get_tree().get_current_scene()
|
||||||
|
@onready var _edit := $Edit
|
||||||
|
|
||||||
|
@export var editable : bool:
|
||||||
|
set(value):
|
||||||
|
editable = value
|
||||||
|
set_editable(value)
|
||||||
|
|
||||||
|
var _date := ""
|
||||||
|
var _date_setting_page
|
||||||
|
|
||||||
|
func _process(delta):
|
||||||
|
_process_font_size()
|
||||||
|
|
||||||
|
func _process_font_size():
|
||||||
|
var font_size = _edit.get_theme_default_font_size()
|
||||||
|
var new_font_size = get_viewport_rect().size.y/35
|
||||||
|
if font_size != new_font_size:
|
||||||
|
_edit.add_theme_font_size_override("font_size", new_font_size)
|
||||||
|
|
||||||
|
func _ready():
|
||||||
|
initialize_signals()
|
||||||
|
|
||||||
|
func initialize_signals():
|
||||||
|
_edit.focus_entered.connect(_on_click)
|
||||||
|
|
||||||
|
func _on_click():
|
||||||
|
if _main.get_current_page() == Main.Pages.CalendarSetting:
|
||||||
|
return
|
||||||
|
|
||||||
|
_date_setting_page = _main.load_page(Main.Pages.CalendarSetting)
|
||||||
|
_date_setting_page.date_selected.connect(self._on_date_is_set)
|
||||||
|
|
||||||
|
func _on_date_is_set(date: Calendar.DateObj):
|
||||||
|
_date_setting_page.date_selected.disconnect(_on_date_is_set)
|
||||||
|
set_date("%02d.%02d.%04d" % [date.day, date.month, date.year])
|
||||||
|
|
||||||
|
func set_date(date: String):
|
||||||
|
_date = date
|
||||||
|
_edit.text = get_date()
|
||||||
|
|
||||||
|
func get_date():
|
||||||
|
return _date
|
||||||
|
|
||||||
|
func set_editable(value):
|
||||||
|
_edit.editable = value
|
||||||
|
|
||||||
|
func clean():
|
||||||
|
_date = ""
|
||||||
|
_edit.text = ""
|
||||||
|
@ -3,18 +3,21 @@
|
|||||||
[ext_resource type="Script" path="res://scenes/common/calendar/calendar_edit.gd" id="1_jxhnl"]
|
[ext_resource type="Script" path="res://scenes/common/calendar/calendar_edit.gd" id="1_jxhnl"]
|
||||||
[ext_resource type="Theme" uid="uid://cmhwbyqu6nh38" path="res://assets/themes/big.tres" id="2_e6eik"]
|
[ext_resource type="Theme" uid="uid://cmhwbyqu6nh38" path="res://assets/themes/big.tres" id="2_e6eik"]
|
||||||
|
|
||||||
[node name="Calendar" type="Control"]
|
[node name="Calendar" type="VBoxContainer"]
|
||||||
layout_mode = 3
|
anchors_preset = 10
|
||||||
anchors_preset = 15
|
|
||||||
anchor_right = 1.0
|
anchor_right = 1.0
|
||||||
anchor_bottom = 1.0
|
offset_bottom = 72.0
|
||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
grow_vertical = 2
|
|
||||||
script = ExtResource("1_jxhnl")
|
script = ExtResource("1_jxhnl")
|
||||||
|
|
||||||
[node name="Button" type="Button" parent="."]
|
[node name="Button" type="Button" parent="."]
|
||||||
layout_mode = 0
|
visible = false
|
||||||
offset_right = 24.0
|
layout_mode = 2
|
||||||
offset_bottom = 31.0
|
|
||||||
theme = ExtResource("2_e6eik")
|
theme = ExtResource("2_e6eik")
|
||||||
text = "Открыть календарь"
|
text = "Открыть календарь"
|
||||||
|
|
||||||
|
[node name="Edit" type="LineEdit" parent="."]
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
theme = ExtResource("2_e6eik")
|
||||||
|
virtual_keyboard_enabled = false
|
||||||
|
@ -72,6 +72,13 @@ func update_calendar() -> void:
|
|||||||
var day_label = create_day_label(date_obj, today)
|
var day_label = create_day_label(date_obj, today)
|
||||||
_days_grid.add_child(day_label)
|
_days_grid.add_child(day_label)
|
||||||
|
|
||||||
|
_cancel_selection()
|
||||||
|
|
||||||
|
func _cancel_selection():
|
||||||
|
for day_label in _days_grid.get_children():
|
||||||
|
for selection in day_label.get_children():
|
||||||
|
selection.queue_free()
|
||||||
|
|
||||||
func create_day_label(date_obj: Calendar.DateObj, today: Calendar.DateObj) -> CalendarLabel:
|
func create_day_label(date_obj: Calendar.DateObj, today: Calendar.DateObj) -> CalendarLabel:
|
||||||
var label = CalendarLabel.new(str(date_obj.day), true)
|
var label = CalendarLabel.new(str(date_obj.day), true)
|
||||||
|
|
||||||
@ -118,7 +125,7 @@ func _on_next_month_pressed() -> void:
|
|||||||
update_calendar()
|
update_calendar()
|
||||||
|
|
||||||
func update():
|
func update():
|
||||||
pass
|
_cancel_selection()
|
||||||
|
|
||||||
class CalendarLabel:
|
class CalendarLabel:
|
||||||
extends Label
|
extends Label
|
||||||
|
@ -5,7 +5,8 @@ enum Type {
|
|||||||
Line,
|
Line,
|
||||||
Text,
|
Text,
|
||||||
Calendar,
|
Calendar,
|
||||||
Time
|
Time,
|
||||||
|
ListBox
|
||||||
}
|
}
|
||||||
|
|
||||||
@export var title : String:
|
@export var title : String:
|
||||||
@ -28,6 +29,7 @@ enum Type {
|
|||||||
@onready var _calendar = $Container/Value/Calendar
|
@onready var _calendar = $Container/Value/Calendar
|
||||||
@onready var _time = $Container/Value/Time
|
@onready var _time = $Container/Value/Time
|
||||||
@onready var _text = $Container/Value/Text
|
@onready var _text = $Container/Value/Text
|
||||||
|
@onready var _list_box = $Container/Value/ListBox
|
||||||
|
|
||||||
var _type
|
var _type
|
||||||
|
|
||||||
@ -62,12 +64,17 @@ func get_value():
|
|||||||
Type.Text:
|
Type.Text:
|
||||||
return _text.text
|
return _text.text
|
||||||
Type.Calendar:
|
Type.Calendar:
|
||||||
return ""
|
return _calendar.get_date()
|
||||||
Type.Time:
|
Type.Time:
|
||||||
return {
|
return {
|
||||||
"hours": _time.get_hours(),
|
"hours": _time.get_hours(),
|
||||||
"minutes": _time.get_minutes()
|
"minutes": _time.get_minutes()
|
||||||
}
|
}
|
||||||
|
Type.ListBox:
|
||||||
|
return {
|
||||||
|
"id": _list_box.get_id(),
|
||||||
|
"title": _list_box.get_title()
|
||||||
|
}
|
||||||
|
|
||||||
func set_value(value):
|
func set_value(value):
|
||||||
match _type:
|
match _type:
|
||||||
@ -76,9 +83,12 @@ func set_value(value):
|
|||||||
Type.Text:
|
Type.Text:
|
||||||
_text.text = value
|
_text.text = value
|
||||||
Type.Calendar:
|
Type.Calendar:
|
||||||
pass
|
_calendar.set_date(value)
|
||||||
Type.Time:
|
Type.Time:
|
||||||
_time.set_time(value.hours, value.minutes)
|
_time.set_time(value.hours, value.minutes)
|
||||||
|
Type.ListBox:
|
||||||
|
_list_box.set_id(value.id)
|
||||||
|
_list_box.set_title(value.title)
|
||||||
|
|
||||||
func set_editable(value):
|
func set_editable(value):
|
||||||
if _line == null:
|
if _line == null:
|
||||||
@ -96,6 +106,7 @@ func set_type(type):
|
|||||||
_text.visible = false
|
_text.visible = false
|
||||||
_calendar.visible = false
|
_calendar.visible = false
|
||||||
_time.visible = false
|
_time.visible = false
|
||||||
|
_list_box.visible = false
|
||||||
|
|
||||||
_type = type
|
_type = type
|
||||||
|
|
||||||
@ -108,6 +119,8 @@ func set_type(type):
|
|||||||
_calendar.visible = true
|
_calendar.visible = true
|
||||||
Type.Time:
|
Type.Time:
|
||||||
_time.visible = true
|
_time.visible = true
|
||||||
|
Type.ListBox:
|
||||||
|
_list_box.visible = true
|
||||||
|
|
||||||
func clean():
|
func clean():
|
||||||
match _type:
|
match _type:
|
||||||
@ -116,6 +129,8 @@ func clean():
|
|||||||
Type.Text:
|
Type.Text:
|
||||||
_text.text = ""
|
_text.text = ""
|
||||||
Type.Calendar:
|
Type.Calendar:
|
||||||
pass
|
_calendar.clean()
|
||||||
Type.Time:
|
Type.Time:
|
||||||
_time.clean()
|
_time.clean()
|
||||||
|
Type.ListBox:
|
||||||
|
_list_box.clean()
|
||||||
|
@ -1,10 +1,11 @@
|
|||||||
[gd_scene load_steps=6 format=3 uid="uid://d0fdiesiaajlq"]
|
[gd_scene load_steps=7 format=3 uid="uid://d0fdiesiaajlq"]
|
||||||
|
|
||||||
[ext_resource type="Script" path="res://scenes/common/edit_field.gd" id="1_sdy7t"]
|
[ext_resource type="Script" path="res://scenes/common/edit_field.gd" id="1_sdy7t"]
|
||||||
[ext_resource type="Theme" uid="uid://cmhwbyqu6nh38" path="res://assets/themes/big.tres" id="2_iq8f3"]
|
[ext_resource type="Theme" uid="uid://cmhwbyqu6nh38" path="res://assets/themes/big.tres" id="2_iq8f3"]
|
||||||
[ext_resource type="Theme" uid="uid://bbboqrxd230bp" path="res://assets/themes/edit_label_font.tres" id="3_4sp4y"]
|
[ext_resource type="Theme" uid="uid://bbboqrxd230bp" path="res://assets/themes/edit_label_font.tres" id="3_4sp4y"]
|
||||||
[ext_resource type="PackedScene" uid="uid://drdv8adk1wi8f" path="res://scenes/common/calendar/calendar_edit.tscn" id="4_hlx5p"]
|
[ext_resource type="PackedScene" uid="uid://drdv8adk1wi8f" path="res://scenes/common/calendar/calendar_edit.tscn" id="4_hlx5p"]
|
||||||
[ext_resource type="PackedScene" uid="uid://bhd0xvnvoqslr" path="res://scenes/common/time/time_edit.tscn" id="5_d0drs"]
|
[ext_resource type="PackedScene" uid="uid://bhd0xvnvoqslr" path="res://scenes/common/time/time_edit.tscn" id="5_d0drs"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://dn6skkh5c7f4s" path="res://scenes/common/list_box/list_box_edit.tscn" id="6_ovelt"]
|
||||||
|
|
||||||
[node name="EditField" type="HBoxContainer"]
|
[node name="EditField" type="HBoxContainer"]
|
||||||
anchors_preset = 10
|
anchors_preset = 10
|
||||||
@ -66,3 +67,8 @@ layout_mode = 2
|
|||||||
visible = false
|
visible = false
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 3
|
size_flags_horizontal = 3
|
||||||
|
|
||||||
|
[node name="ListBox" parent="Container/Value" instance=ExtResource("6_ovelt")]
|
||||||
|
visible = false
|
||||||
|
layout_mode = 2
|
||||||
|
editable = true
|
||||||
|
62
scenes/common/list_box/list_box_edit.gd
Normal file
62
scenes/common/list_box/list_box_edit.gd
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
extends Control
|
||||||
|
|
||||||
|
@onready var _main: Main = get_tree().get_current_scene()
|
||||||
|
@onready var _edit := $Edit
|
||||||
|
|
||||||
|
@export var editable : bool:
|
||||||
|
set(value):
|
||||||
|
editable = value
|
||||||
|
await ready
|
||||||
|
set_editable(value)
|
||||||
|
|
||||||
|
var _title := ""
|
||||||
|
var _id := ""
|
||||||
|
var _room_setting_page
|
||||||
|
|
||||||
|
func _process(delta):
|
||||||
|
_process_font_size()
|
||||||
|
|
||||||
|
func _process_font_size():
|
||||||
|
var font_size = _edit.get_theme_default_font_size()
|
||||||
|
var new_font_size = get_viewport_rect().size.y/35
|
||||||
|
if font_size != new_font_size:
|
||||||
|
_edit.add_theme_font_size_override("font_size", new_font_size)
|
||||||
|
|
||||||
|
func _ready():
|
||||||
|
initialize_signals()
|
||||||
|
|
||||||
|
func initialize_signals():
|
||||||
|
_edit.focus_entered.connect(_on_click)
|
||||||
|
|
||||||
|
func _on_click():
|
||||||
|
if _main.get_current_page() == Main.Pages.RoomSelection:
|
||||||
|
return
|
||||||
|
|
||||||
|
_room_setting_page = _main.load_page(Main.Pages.RoomSelection)
|
||||||
|
_room_setting_page.room_selected.connect(_on_room_is_set)
|
||||||
|
|
||||||
|
func _on_room_is_set(title: String, id: String):
|
||||||
|
_room_setting_page.room_selected.disconnect(_on_room_is_set)
|
||||||
|
set_title(title)
|
||||||
|
set_id(id)
|
||||||
|
|
||||||
|
func set_title(title: String):
|
||||||
|
_title = title
|
||||||
|
_edit.text = title
|
||||||
|
|
||||||
|
func get_title() -> String:
|
||||||
|
return _title
|
||||||
|
|
||||||
|
func set_id(id: String):
|
||||||
|
_id = id
|
||||||
|
|
||||||
|
func get_id() -> String:
|
||||||
|
return _id
|
||||||
|
|
||||||
|
func set_editable(value):
|
||||||
|
_edit.editable = value
|
||||||
|
|
||||||
|
func clean():
|
||||||
|
_title = ""
|
||||||
|
_id = ""
|
||||||
|
_edit.text = ""
|
17
scenes/common/list_box/list_box_edit.tscn
Normal file
17
scenes/common/list_box/list_box_edit.tscn
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
[gd_scene load_steps=3 format=3 uid="uid://dn6skkh5c7f4s"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" path="res://scenes/common/list_box/list_box_edit.gd" id="1_rb63m"]
|
||||||
|
[ext_resource type="Theme" uid="uid://cmhwbyqu6nh38" path="res://assets/themes/big.tres" id="2_ubgs8"]
|
||||||
|
|
||||||
|
[node name="ListBoxEdit" type="VBoxContainer"]
|
||||||
|
anchors_preset = 10
|
||||||
|
anchor_right = 1.0
|
||||||
|
offset_bottom = 72.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
script = ExtResource("1_rb63m")
|
||||||
|
|
||||||
|
[node name="Edit" type="LineEdit" parent="."]
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
theme = ExtResource("2_ubgs8")
|
||||||
|
virtual_keyboard_enabled = false
|
9
scenes/common/list_box/list_box_setting.tscn
Normal file
9
scenes/common/list_box/list_box_setting.tscn
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
[gd_scene format=3 uid="uid://dveqs4kjvc2jv"]
|
||||||
|
|
||||||
|
[node name="ListBox" type="Control"]
|
||||||
|
layout_mode = 3
|
||||||
|
anchors_preset = 15
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
@ -14,7 +14,7 @@ script = ExtResource("1_2wxyg")
|
|||||||
[node name="TimeEdit" type="LineEdit" parent="."]
|
[node name="TimeEdit" type="LineEdit" parent="."]
|
||||||
visible = false
|
visible = false
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
text = "15:04 "
|
text = "10:34 "
|
||||||
placeholder_text = "hh:mm (a/p)m"
|
placeholder_text = "hh:mm (a/p)m"
|
||||||
script = ExtResource("2_7d4ae")
|
script = ExtResource("2_7d4ae")
|
||||||
current_time = true
|
current_time = true
|
||||||
@ -24,8 +24,3 @@ layout_mode = 2
|
|||||||
size_flags_horizontal = 3
|
size_flags_horizontal = 3
|
||||||
theme = ExtResource("3_bpvuo")
|
theme = ExtResource("3_bpvuo")
|
||||||
virtual_keyboard_enabled = false
|
virtual_keyboard_enabled = false
|
||||||
|
|
||||||
[connection signal="mouse_entered" from="TimeEdit/Clock" to="TimeEdit/Clock" method="_on_mouse_entered"]
|
|
||||||
[connection signal="mouse_exited" from="TimeEdit/Clock" to="TimeEdit/Clock" method="_on_mouse_exited"]
|
|
||||||
[connection signal="visibility_changed" from="TimeEdit/Clock" to="TimeEdit/Clock" method="_on_visibility_changed"]
|
|
||||||
[connection signal="draw" from="TimeEdit/ManualClock" to="TimeEdit/ManualClock" method="_on_draw"]
|
|
||||||
|
@ -6,7 +6,8 @@ enum Pages {
|
|||||||
ReservationCreation,
|
ReservationCreation,
|
||||||
ReservationEdit,
|
ReservationEdit,
|
||||||
TimeSetting,
|
TimeSetting,
|
||||||
CalendarSetting
|
CalendarSetting,
|
||||||
|
RoomSelection
|
||||||
}
|
}
|
||||||
|
|
||||||
func get_current_page():
|
func get_current_page():
|
||||||
@ -38,3 +39,6 @@ func get_selected_room() -> RoomEntity:
|
|||||||
|
|
||||||
func is_current_date_selected() -> bool:
|
func is_current_date_selected() -> bool:
|
||||||
return true
|
return true
|
||||||
|
|
||||||
|
func start_date_selection() -> void:
|
||||||
|
pass
|
||||||
|
@ -32,7 +32,8 @@ enum Status {
|
|||||||
Pages.ReservationCreation: $Left/Pages/ReservationCreation,
|
Pages.ReservationCreation: $Left/Pages/ReservationCreation,
|
||||||
Pages.ReservationEdit: $Left/Pages/ReservationEdit,
|
Pages.ReservationEdit: $Left/Pages/ReservationEdit,
|
||||||
Pages.TimeSetting: $Left/Pages/TimeSetting,
|
Pages.TimeSetting: $Left/Pages/TimeSetting,
|
||||||
Pages.CalendarSetting: $Left/Pages/CalendarSetting
|
Pages.CalendarSetting: $Left/Pages/CalendarSetting,
|
||||||
|
Pages.RoomSelection: $Left/Pages/RoomSelection
|
||||||
}
|
}
|
||||||
@onready var _time_status_indent := $Left/TimeStatusContainer/Indent
|
@onready var _time_status_indent := $Left/TimeStatusContainer/Indent
|
||||||
@onready var _time_label := $Left/TimeStatusContainer/TimeLabel
|
@onready var _time_label := $Left/TimeStatusContainer/TimeLabel
|
||||||
@ -52,7 +53,7 @@ var _previous_page : Pages
|
|||||||
var _status : Status
|
var _status : Status
|
||||||
var _status_check_timer := 0.0
|
var _status_check_timer := 0.0
|
||||||
|
|
||||||
var _selected_date := _get_current_date()
|
var _selected_date := get_current_date()
|
||||||
|
|
||||||
func _ready():
|
func _ready():
|
||||||
initialize_signals()
|
initialize_signals()
|
||||||
@ -65,8 +66,6 @@ func initialize_signals():
|
|||||||
_45_min_button.pressed.connect(_on_45_min_button_pressed)
|
_45_min_button.pressed.connect(_on_45_min_button_pressed)
|
||||||
_1_hour_button.pressed.connect(_on_1_hour_button_pressed)
|
_1_hour_button.pressed.connect(_on_1_hour_button_pressed)
|
||||||
|
|
||||||
_pages[Pages.CalendarSetting].date_selected.connect(_on_date_selected)
|
|
||||||
|
|
||||||
func _process(delta):
|
func _process(delta):
|
||||||
_process_time_status_indent()
|
_process_time_status_indent()
|
||||||
_process_status(delta)
|
_process_status(delta)
|
||||||
@ -110,7 +109,7 @@ func _update_status(reservations=null):
|
|||||||
if reservations == null:
|
if reservations == null:
|
||||||
var room = get_selected_room()
|
var room = get_selected_room()
|
||||||
reservations = await _reservation_repo.list_reservations({
|
reservations = await _reservation_repo.list_reservations({
|
||||||
"date": _get_current_date(),
|
"date": get_current_date(),
|
||||||
"room_id": room.id if room else ''
|
"room_id": room.id if room else ''
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -230,6 +229,26 @@ func _create_default_reservation(minutes_of_reservation):
|
|||||||
|
|
||||||
load_page(Main.Pages.Board, true)
|
load_page(Main.Pages.Board, true)
|
||||||
|
|
||||||
|
func get_selected_date() -> String:
|
||||||
|
return _selected_date
|
||||||
|
|
||||||
|
func get_current_date() -> String:
|
||||||
|
var date = Time.get_date_dict_from_system()
|
||||||
|
return "%02d.%02d.%04d" % [date.day, date.month, date.year]
|
||||||
|
|
||||||
|
func is_current_date_selected() -> bool:
|
||||||
|
return get_selected_date() == get_current_date()
|
||||||
|
|
||||||
|
func get_selected_room() -> RoomEntity:
|
||||||
|
var room_repo = get_room_repo()
|
||||||
|
return room_repo.get_selected_room()
|
||||||
|
|
||||||
|
func hide_keyboard():
|
||||||
|
_keyboard.hide()
|
||||||
|
|
||||||
|
func start_date_selection():
|
||||||
|
_pages[Pages.CalendarSetting].date_selected.connect(_on_date_selected)
|
||||||
|
|
||||||
func _on_reservations_updated(reservations):
|
func _on_reservations_updated(reservations):
|
||||||
_update_status()
|
_update_status()
|
||||||
|
|
||||||
@ -248,23 +267,7 @@ func _on_45_min_button_pressed():
|
|||||||
func _on_1_hour_button_pressed():
|
func _on_1_hour_button_pressed():
|
||||||
_create_default_reservation(60)
|
_create_default_reservation(60)
|
||||||
|
|
||||||
func get_selected_date() -> String:
|
|
||||||
return _selected_date
|
|
||||||
|
|
||||||
func _get_current_date() -> String:
|
|
||||||
var date = Time.get_date_dict_from_system()
|
|
||||||
return "%02d.%02d.%04d" % [date.day, date.month, date.year]
|
|
||||||
|
|
||||||
func is_current_date_selected() -> bool:
|
|
||||||
return get_selected_date() == _get_current_date()
|
|
||||||
|
|
||||||
func get_selected_room() -> RoomEntity:
|
|
||||||
var room_repo = get_room_repo()
|
|
||||||
return room_repo.get_selected_room()
|
|
||||||
|
|
||||||
func hide_keyboard():
|
|
||||||
_keyboard.hide()
|
|
||||||
|
|
||||||
func _on_date_selected(date: Calendar.DateObj):
|
func _on_date_selected(date: Calendar.DateObj):
|
||||||
_selected_date = "%02d.%02d.%04d" % [date.day, date.month, date.year]
|
_selected_date = "%02d.%02d.%04d" % [date.day, date.month, date.year]
|
||||||
|
_pages[Pages.CalendarSetting].date_selected.disconnect(_on_date_selected)
|
||||||
_pages[Pages.Board].update_date()
|
_pages[Pages.Board].update_date()
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
[gd_scene load_steps=18 format=3 uid="uid://bkrvh8vjpgqot"]
|
[gd_scene load_steps=19 format=3 uid="uid://bkrvh8vjpgqot"]
|
||||||
|
|
||||||
[ext_resource type="Script" path="res://scenes/main/main_tablet.gd" id="1_fr6s5"]
|
[ext_resource type="Script" path="res://scenes/main/main_tablet.gd" id="1_fr6s5"]
|
||||||
[ext_resource type="PackedScene" uid="uid://c431r28ef5edp" path="res://scenes/board/board.tscn" id="2_n47h4"]
|
[ext_resource type="PackedScene" uid="uid://c431r28ef5edp" path="res://scenes/board/board.tscn" id="2_n47h4"]
|
||||||
@ -8,6 +8,7 @@
|
|||||||
[ext_resource type="Theme" uid="uid://byopik87nb8vv" path="res://assets/themes/status_font.tres" id="5_atujq"]
|
[ext_resource type="Theme" uid="uid://byopik87nb8vv" path="res://assets/themes/status_font.tres" id="5_atujq"]
|
||||||
[ext_resource type="PackedScene" uid="uid://bc4tcq608v5rx" path="res://scenes/common/calendar/calendar_setting.tscn" id="6_c0c0t"]
|
[ext_resource type="PackedScene" uid="uid://bc4tcq608v5rx" path="res://scenes/common/calendar/calendar_setting.tscn" id="6_c0c0t"]
|
||||||
[ext_resource type="Theme" uid="uid://yn1nbokvmv6n" path="res://assets/themes/small.tres" id="6_nde4h"]
|
[ext_resource type="Theme" uid="uid://yn1nbokvmv6n" path="res://assets/themes/small.tres" id="6_nde4h"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://dik2e02vahb3g" path="res://scenes/reservation/room_selection.tscn" id="7_7j0ww"]
|
||||||
[ext_resource type="Theme" uid="uid://b8tbd62jtmgdx" path="res://assets/themes/instant_button_font.tres" id="8_bmn8p"]
|
[ext_resource type="Theme" uid="uid://b8tbd62jtmgdx" path="res://assets/themes/instant_button_font.tres" id="8_bmn8p"]
|
||||||
[ext_resource type="Theme" uid="uid://cmhwbyqu6nh38" path="res://assets/themes/big.tres" id="9_wpf8g"]
|
[ext_resource type="Theme" uid="uid://cmhwbyqu6nh38" path="res://assets/themes/big.tres" id="9_wpf8g"]
|
||||||
[ext_resource type="Script" path="res://src/infra/repos/backend/reservation_http.gd" id="10_v7sup"]
|
[ext_resource type="Script" path="res://src/infra/repos/backend/reservation_http.gd" id="10_v7sup"]
|
||||||
@ -74,20 +75,24 @@ visible = false
|
|||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 3
|
size_flags_horizontal = 3
|
||||||
|
|
||||||
|
[node name="RoomSelection" parent="Left/Pages" instance=ExtResource("7_7j0ww")]
|
||||||
|
visible = false
|
||||||
|
layout_mode = 2
|
||||||
|
|
||||||
[node name="TimeStatusContainer" type="VBoxContainer" parent="Left"]
|
[node name="TimeStatusContainer" type="VBoxContainer" parent="Left"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 10
|
size_flags_horizontal = 10
|
||||||
size_flags_vertical = 0
|
size_flags_vertical = 0
|
||||||
|
|
||||||
[node name="Indent" type="BoxContainer" parent="Left/TimeStatusContainer"]
|
[node name="Indent" type="BoxContainer" parent="Left/TimeStatusContainer"]
|
||||||
custom_minimum_size = Vector2(0, 0.666667)
|
custom_minimum_size = Vector2(0, 195)
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_vertical = 3
|
size_flags_vertical = 3
|
||||||
|
|
||||||
[node name="TimeLabel" type="Label" parent="Left/TimeStatusContainer"]
|
[node name="TimeLabel" type="Label" parent="Left/TimeStatusContainer"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
theme = ExtResource("5_atujq")
|
theme = ExtResource("5_atujq")
|
||||||
text = "12:42"
|
text = "12:15"
|
||||||
horizontal_alignment = 1
|
horizontal_alignment = 1
|
||||||
|
|
||||||
[node name="StatusLabel" type="Label" parent="Left/TimeStatusContainer"]
|
[node name="StatusLabel" type="Label" parent="Left/TimeStatusContainer"]
|
||||||
@ -152,7 +157,7 @@ grow_vertical = 0
|
|||||||
[node name="CreateReservationButton" type="Button" parent="RightBottom"]
|
[node name="CreateReservationButton" type="Button" parent="RightBottom"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
theme = ExtResource("9_wpf8g")
|
theme = ExtResource("9_wpf8g")
|
||||||
theme_override_font_sizes/font_size = 0
|
theme_override_font_sizes/font_size = 16
|
||||||
text = " Забронировать "
|
text = " Забронировать "
|
||||||
|
|
||||||
[node name="Repos" type="Node" parent="."]
|
[node name="Repos" type="Node" parent="."]
|
||||||
|
@ -74,7 +74,6 @@ layout_mode = 2
|
|||||||
theme_override_styles/panel = SubResource("StyleBoxFlat_yafv8")
|
theme_override_styles/panel = SubResource("StyleBoxFlat_yafv8")
|
||||||
|
|
||||||
[node name="DateField" parent="." instance=ExtResource("2_qfs8j")]
|
[node name="DateField" parent="." instance=ExtResource("2_qfs8j")]
|
||||||
visible = false
|
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
title = "Дата"
|
title = "Дата"
|
||||||
type = 2
|
type = 2
|
||||||
@ -104,7 +103,7 @@ editable = false
|
|||||||
[node name="RoomField" parent="." instance=ExtResource("2_qfs8j")]
|
[node name="RoomField" parent="." instance=ExtResource("2_qfs8j")]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
title = "Комната"
|
title = "Комната"
|
||||||
editable = false
|
type = 4
|
||||||
|
|
||||||
[node name="Splitter4" type="Panel" parent="."]
|
[node name="Splitter4" type="Panel" parent="."]
|
||||||
visible = false
|
visible = false
|
||||||
|
@ -68,7 +68,6 @@ layout_mode = 2
|
|||||||
theme_override_styles/panel = SubResource("StyleBoxFlat_yafv8")
|
theme_override_styles/panel = SubResource("StyleBoxFlat_yafv8")
|
||||||
|
|
||||||
[node name="DateField" parent="." instance=ExtResource("3_lh5s8")]
|
[node name="DateField" parent="." instance=ExtResource("3_lh5s8")]
|
||||||
visible = false
|
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
title = "Дата"
|
title = "Дата"
|
||||||
type = 2
|
type = 2
|
||||||
@ -85,7 +84,6 @@ title = "Конец"
|
|||||||
type = 3
|
type = 3
|
||||||
|
|
||||||
[node name="Splitter3" type="Panel" parent="."]
|
[node name="Splitter3" type="Panel" parent="."]
|
||||||
visible = false
|
|
||||||
custom_minimum_size = Vector2(0, 5)
|
custom_minimum_size = Vector2(0, 5)
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
theme_override_styles/panel = SubResource("StyleBoxFlat_yafv8")
|
theme_override_styles/panel = SubResource("StyleBoxFlat_yafv8")
|
||||||
@ -97,10 +95,9 @@ title = "Создатель"
|
|||||||
editable = false
|
editable = false
|
||||||
|
|
||||||
[node name="RoomField" parent="." instance=ExtResource("3_lh5s8")]
|
[node name="RoomField" parent="." instance=ExtResource("3_lh5s8")]
|
||||||
visible = false
|
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
title = "Комната"
|
title = "Комната"
|
||||||
editable = false
|
type = 4
|
||||||
|
|
||||||
[node name="Splitter4" type="Panel" parent="."]
|
[node name="Splitter4" type="Panel" parent="."]
|
||||||
visible = false
|
visible = false
|
||||||
|
@ -73,16 +73,28 @@ func _on_delete_button_pressed():
|
|||||||
_delete_reservation()
|
_delete_reservation()
|
||||||
|
|
||||||
func _load_info():
|
func _load_info():
|
||||||
var repo = _main.get_reservation_repo()
|
var reservation_repo = _main.get_reservation_repo()
|
||||||
var reservation_id = repo.get_selected_reservation_id()
|
var reservation_id = reservation_repo.get_selected_reservation_id()
|
||||||
var reservation = await repo.get_reservation(reservation_id)
|
var reservation = await reservation_repo.get_reservation(reservation_id)
|
||||||
|
|
||||||
|
var room_repo = _main.get_room_repo()
|
||||||
|
var room = await room_repo.get_room(reservation.room_id)
|
||||||
|
var room_title = room.title if room != null else ""
|
||||||
|
|
||||||
_title_field.set_value(reservation.title)
|
_title_field.set_value(reservation.title)
|
||||||
_start_time_field.set_value(reservation.start_time)
|
_start_time_field.set_value(reservation.start_time)
|
||||||
_finish_time_field.set_value(reservation.finish_time)
|
_finish_time_field.set_value(reservation.finish_time)
|
||||||
|
_room_field.set_value({"title": room_title, "id": reservation.room_id})
|
||||||
|
_date_field.set_value(reservation.date)
|
||||||
|
|
||||||
func _load_room():
|
func _load_room():
|
||||||
_room_field.set_value(_main.get_selected_room().title)
|
if _room_field.get_value().title == "":
|
||||||
|
var room = _main.get_selected_room()
|
||||||
|
_room_field.set_value({"title": room.title, "id": room.id})
|
||||||
|
|
||||||
|
func _load_date():
|
||||||
|
if _date_field.get_value() == "":
|
||||||
|
_date_field.set_value(_main.get_selected_date())
|
||||||
|
|
||||||
func _get_current_room_id():
|
func _get_current_room_id():
|
||||||
var room_repo = _main.get_room_repo()
|
var room_repo = _main.get_room_repo()
|
||||||
@ -95,16 +107,16 @@ func _create_reservation():
|
|||||||
|
|
||||||
var dto = CreateReservationDTO.new()
|
var dto = CreateReservationDTO.new()
|
||||||
dto.title = _title_field.get_value()
|
dto.title = _title_field.get_value()
|
||||||
dto.date = _main.get_selected_date()
|
dto.date = _date_field.get_value()
|
||||||
dto.start_time = _start_time_field.get_value()
|
dto.start_time = _start_time_field.get_value()
|
||||||
dto.finish_time = _finish_time_field.get_value()
|
dto.finish_time = _finish_time_field.get_value()
|
||||||
dto.creator = _creator_field.get_value()
|
dto.creator = _creator_field.get_value()
|
||||||
dto.room_id = _get_current_room_id()
|
dto.room_id = _room_field.get_value().id
|
||||||
dto.description = _description_field.get_value()
|
dto.description = _description_field.get_value()
|
||||||
dto.color = randi_range(1, 3)
|
dto.color = randi_range(1, 3)
|
||||||
|
|
||||||
var repo = _main.get_reservation_repo()
|
var reservation_repo = _main.get_reservation_repo()
|
||||||
repo.create_reservation(dto)
|
reservation_repo.create_reservation(dto)
|
||||||
|
|
||||||
dto.queue_free()
|
dto.queue_free()
|
||||||
|
|
||||||
@ -121,14 +133,14 @@ func _update_reservation():
|
|||||||
dto.start_time = _start_time_field.get_value()
|
dto.start_time = _start_time_field.get_value()
|
||||||
dto.finish_time = _finish_time_field.get_value()
|
dto.finish_time = _finish_time_field.get_value()
|
||||||
dto.creator = _creator_field.get_value()
|
dto.creator = _creator_field.get_value()
|
||||||
dto.room_id = _get_current_room_id()
|
dto.room_id = _room_field.get_value().id
|
||||||
dto.description = _description_field.get_value()
|
dto.description = _description_field.get_value()
|
||||||
dto.color = randi_range(1, 3)
|
dto.color = randi_range(1, 3)
|
||||||
|
|
||||||
var repo = _main.get_reservation_repo()
|
var reservation_repo = _main.get_reservation_repo()
|
||||||
var reservation_id = repo.get_selected_reservation_id()
|
var reservation_id = reservation_repo.get_selected_reservation_id()
|
||||||
repo.change_reservation(reservation_id, dto)
|
reservation_repo.change_reservation(reservation_id, dto)
|
||||||
repo.set_selected_reservation_id(null)
|
reservation_repo.set_selected_reservation_id(null)
|
||||||
|
|
||||||
dto.queue_free()
|
dto.queue_free()
|
||||||
|
|
||||||
@ -181,7 +193,10 @@ func _time_is_correct():
|
|||||||
var start_time_in_minutes = start_time.hours*60 + start_time.minutes
|
var start_time_in_minutes = start_time.hours*60 + start_time.minutes
|
||||||
var finish_time_in_minutes = finish_time.hours*60 + finish_time.minutes
|
var finish_time_in_minutes = finish_time.hours*60 + finish_time.minutes
|
||||||
var service = _main.get_reservation_service()
|
var service = _main.get_reservation_service()
|
||||||
var is_busy = await service.is_time_busy(start_time_in_minutes, finish_time_in_minutes)
|
var selected_room_id = _room_field.get_value().id
|
||||||
|
var selected_date = _date_field.get_value()
|
||||||
|
var is_busy = await service.is_time_busy(start_time_in_minutes, finish_time_in_minutes, \
|
||||||
|
selected_room_id, selected_date)
|
||||||
|
|
||||||
if is_busy:
|
if is_busy:
|
||||||
print("The selected time slot is busy.")
|
print("The selected time slot is busy.")
|
||||||
@ -198,10 +213,13 @@ func update():
|
|||||||
|
|
||||||
if type == Types.Edit:
|
if type == Types.Edit:
|
||||||
_load_info()
|
_load_info()
|
||||||
|
else:
|
||||||
_load_room()
|
_load_room()
|
||||||
|
_load_date()
|
||||||
|
|
||||||
func clean():
|
func clean():
|
||||||
_title_field.clean()
|
_title_field.clean()
|
||||||
_start_time_field.clean()
|
_start_time_field.clean()
|
||||||
_finish_time_field.clean()
|
_finish_time_field.clean()
|
||||||
|
_date_field.clean()
|
||||||
|
_room_field.clean()
|
||||||
|
39
scenes/reservation/room_selection.gd
Normal file
39
scenes/reservation/room_selection.gd
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
extends Control
|
||||||
|
|
||||||
|
signal room_selected(title: String, id: String)
|
||||||
|
|
||||||
|
@onready var _main: Main = get_tree().get_current_scene()
|
||||||
|
@onready var _rooms_menu := $RoomsMenu
|
||||||
|
|
||||||
|
var _rooms : Array[RoomEntity] = []
|
||||||
|
|
||||||
|
func _ready():
|
||||||
|
_connect_signals()
|
||||||
|
|
||||||
|
await get_tree().create_timer(0.1, false).timeout
|
||||||
|
_load_rooms()
|
||||||
|
|
||||||
|
func _load_rooms():
|
||||||
|
var room_repo = _main.get_room_repo()
|
||||||
|
if room_repo.get_selected_room():
|
||||||
|
return
|
||||||
|
|
||||||
|
_rooms_menu.clear()
|
||||||
|
|
||||||
|
var rooms = await room_repo.list_rooms()
|
||||||
|
for room in rooms:
|
||||||
|
_rooms.append(room)
|
||||||
|
_rooms_menu.add_item(room.title)
|
||||||
|
|
||||||
|
if len(rooms) < 0:
|
||||||
|
print('Not enough rooms')
|
||||||
|
|
||||||
|
func _connect_signals():
|
||||||
|
_rooms_menu.item_clicked.connect(_on_room_selected)
|
||||||
|
|
||||||
|
func _on_room_selected(idx, text):
|
||||||
|
room_selected.emit(_rooms[idx].title, _rooms[idx].id)
|
||||||
|
_main.go_to_previous_page(true)
|
||||||
|
|
||||||
|
func update():
|
||||||
|
_rooms_menu.deselect_all()
|
15
scenes/reservation/room_selection.tscn
Normal file
15
scenes/reservation/room_selection.tscn
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
[gd_scene load_steps=3 format=3 uid="uid://dik2e02vahb3g"]
|
||||||
|
|
||||||
|
[ext_resource type="PackedScene" uid="uid://bt3h3m10qx1jr" path="res://scenes/board/rooms_menu.tscn" id="1_carpv"]
|
||||||
|
[ext_resource type="Script" path="res://scenes/reservation/room_selection.gd" id="1_wbxoa"]
|
||||||
|
|
||||||
|
[node name="RoomSelection" type="Control"]
|
||||||
|
layout_mode = 3
|
||||||
|
anchors_preset = 15
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
script = ExtResource("1_wbxoa")
|
||||||
|
|
||||||
|
[node name="RoomsMenu" parent="." instance=ExtResource("1_carpv")]
|
@ -3,13 +3,14 @@ class_name ReservationService
|
|||||||
|
|
||||||
@onready var _main: Main = get_tree().get_current_scene()
|
@onready var _main: Main = get_tree().get_current_scene()
|
||||||
|
|
||||||
func is_time_busy(new_start_time_minutes, new_finish_time_minutes):
|
func is_time_busy(new_start_time_minutes, new_finish_time_minutes, room_id=null, date=null):
|
||||||
var selected_room = _main.get_selected_room()
|
var selected_room = _main.get_selected_room()
|
||||||
|
var selected_date = _main.get_selected_date()
|
||||||
|
|
||||||
var reservation_repo = _main.get_reservation_repo()
|
var reservation_repo = _main.get_reservation_repo()
|
||||||
var reservations = await reservation_repo.list_reservations({
|
var reservations = await reservation_repo.list_reservations({
|
||||||
"date": _main.get_selected_date(),
|
"date": date if date != null else selected_date,
|
||||||
"room_id": selected_room.id
|
"room_id": room_id if room_id != null else selected_room.id
|
||||||
})
|
})
|
||||||
var selected_reservation_id = reservation_repo.get_selected_reservation_id()
|
var selected_reservation_id = reservation_repo.get_selected_reservation_id()
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@ func change_reservation(reservation_id, dto: UpdateReservationDTO):
|
|||||||
func get_reservation(reservation_id):
|
func get_reservation(reservation_id):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
func list_reservations(filters: Dictionary = {}) -> Array[ReservationEntity]:
|
func list_reservations(filters: Dictionary = {}) -> Array:
|
||||||
return []
|
return []
|
||||||
|
|
||||||
func set_selected_reservation_id(value):
|
func set_selected_reservation_id(value):
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
|
@tool
|
||||||
class_name EventHandlerWS
|
class_name EventHandlerWS
|
||||||
extends EventHandler
|
extends EventHandler
|
||||||
|
|
||||||
const BACKEND_URL = "http://192.168.0.147:5000/socket.io"
|
const BACKEND_URL = "http://89.223.87.146:5004/socket.io"
|
||||||
var _room_id: String = ""
|
var _room_id: String = ""
|
||||||
var _jwt_token: String = ""
|
var _jwt_token: String = ""
|
||||||
var _client: SocketIOClient
|
var _client: SocketIOClient
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
extends AbstractReservationRepo
|
extends AbstractReservationRepo
|
||||||
class_name ReservationRepoHTTP
|
class_name ReservationRepoHTTP
|
||||||
|
|
||||||
const BASE_URL = "http://192.168.1.178:5000"
|
const BASE_URL = "http://89.223.87.146:5004"
|
||||||
const RESERVATION_ENDPOINT = "/reservation/"
|
const RESERVATION_ENDPOINT = "/reservation/"
|
||||||
const HEALTH_ENDPOINT = "/health/"
|
const HEALTH_ENDPOINT = "/health/"
|
||||||
|
|
||||||
@ -48,7 +48,7 @@ func get_reservation(reservation_id: String) -> ReservationEntity:
|
|||||||
var result = await _http_client.request(RESERVATION_ENDPOINT + "%s" % reservation_id, HTTPClient.METHOD_GET)
|
var result = await _http_client.request(RESERVATION_ENDPOINT + "%s" % reservation_id, HTTPClient.METHOD_GET)
|
||||||
return _parse_reservation_entity(result) if result is Dictionary else null
|
return _parse_reservation_entity(result) if result is Dictionary else null
|
||||||
|
|
||||||
func list_reservations(filters: Dictionary = {}) -> Array[ReservationEntity]:
|
func list_reservations(filters: Dictionary = {}) -> Array:
|
||||||
var query = "?"
|
var query = "?"
|
||||||
for key in filters:
|
for key in filters:
|
||||||
query += "%s=%s&" % [key, filters[key]]
|
query += "%s=%s&" % [key, filters[key]]
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
|
@tool
|
||||||
extends AbstractRoomRepo
|
extends AbstractRoomRepo
|
||||||
class_name RoomRepoHTTP
|
class_name RoomRepoHTTP
|
||||||
|
|
||||||
const BASE_URL = "http://192.168.1.178:5000"
|
const BASE_URL = "http://localhost:5004"
|
||||||
|
|
||||||
signal rooms_loaded(rooms: Array[RoomEntity])
|
signal rooms_loaded(rooms: Array[RoomEntity])
|
||||||
signal request_failed(error_message: String)
|
signal request_failed(error_message: String)
|
||||||
@ -23,6 +24,15 @@ func list_rooms() -> Array[RoomEntity]:
|
|||||||
emit_signal("request_failed", "Failed to load rooms")
|
emit_signal("request_failed", "Failed to load rooms")
|
||||||
return []
|
return []
|
||||||
|
|
||||||
|
func get_room(id: String) -> RoomEntity:
|
||||||
|
var rooms = await list_rooms()
|
||||||
|
|
||||||
|
for room in rooms:
|
||||||
|
if room.id == id:
|
||||||
|
return room
|
||||||
|
|
||||||
|
return null
|
||||||
|
|
||||||
func _parse_room_list(data: Array) -> Array[RoomEntity]:
|
func _parse_room_list(data: Array) -> Array[RoomEntity]:
|
||||||
var rooms: Array[RoomEntity] = []
|
var rooms: Array[RoomEntity] = []
|
||||||
for item in data:
|
for item in data:
|
||||||
|
@ -41,7 +41,7 @@ func change_reservation(reservation_id, dto: UpdateReservationDTO):
|
|||||||
func get_reservation(reservation_id):
|
func get_reservation(reservation_id):
|
||||||
return _reservations[reservation_id]
|
return _reservations[reservation_id]
|
||||||
|
|
||||||
func list_reservations(filters: Dictionary = {}) -> Array[ReservationEntity]:
|
func list_reservations(filters: Dictionary = {}) -> Array:
|
||||||
var reservations = []
|
var reservations = []
|
||||||
|
|
||||||
for key in _reservations:
|
for key in _reservations:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user