Refactor code structure for improved readability and maintainability
This commit is contained in:
253
DaireApplication/Views/UserController/RecipeEdit.axaml.cs
Normal file
253
DaireApplication/Views/UserController/RecipeEdit.axaml.cs
Normal file
@@ -0,0 +1,253 @@
|
||||
using Avalonia;
|
||||
using Avalonia.Controls;
|
||||
using Avalonia.Input;
|
||||
using Avalonia.Interactivity;
|
||||
using Avalonia.Markup.Xaml;
|
||||
using Avalonia.Media;
|
||||
using AvaloniaApplication1.DataBase;
|
||||
using DaireApplication.Views;
|
||||
using System;
|
||||
|
||||
namespace DaireApplication;
|
||||
|
||||
public partial class RecipeEdit : UserControl
|
||||
{
|
||||
Button controllButton = new Button();
|
||||
private MainWindow? _mainWindow;
|
||||
private UserTable? _currentUser;
|
||||
private RecipeTable? _recipeTable;
|
||||
|
||||
|
||||
public RecipeEdit()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
public RecipeEdit(MainWindow mainWindow, UserTable currentUser,RecipeTable recipeTable)
|
||||
{
|
||||
_currentUser = currentUser;
|
||||
_mainWindow = mainWindow;
|
||||
_recipeTable=recipeTable;
|
||||
InitializeComponent();
|
||||
setDefaultSettings();
|
||||
}
|
||||
|
||||
string oldNumber = "";
|
||||
private void OnKeyClick(object? sender, RoutedEventArgs e)
|
||||
{
|
||||
if (sender is Button button)
|
||||
{
|
||||
|
||||
var StackPanel = controllButton.Content as StackPanel;
|
||||
var Label = StackPanel.Children;
|
||||
if (Label[1] is TextBlock targetText)
|
||||
{
|
||||
//number += button.Content?.ToString();
|
||||
targetText.Text += button.Content ;
|
||||
}
|
||||
// Append the button's content to the input box
|
||||
//InputTextBox.Text += button.Content?.ToString();
|
||||
}
|
||||
|
||||
}
|
||||
private void OnBackClick(object? sender, RoutedEventArgs e)
|
||||
{
|
||||
var StackPanel = controllButton.Content as StackPanel;
|
||||
var Label = StackPanel.Children;
|
||||
if (Label[1] is TextBlock targetText)
|
||||
{
|
||||
if (!string.IsNullOrEmpty(targetText.Text))
|
||||
{
|
||||
// Remove the last character from the text box
|
||||
targetText.Text = targetText.Text.Remove(targetText.Text.Length -1, 1);
|
||||
//number = number.Remove(number.Length - 1);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
private void EnterClick(object? sender, RoutedEventArgs e)
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
RecipeTable recipe = new RecipeTable
|
||||
{
|
||||
Id = _recipeTable.Id,
|
||||
Name = _recipeTable.Name,
|
||||
TankTemp = _recipeTable.TankTemp,
|
||||
FountainTemp = _recipeTable.FountainTemp,
|
||||
Mixer = _recipeTable.Mixer ?? false,
|
||||
Fountain = _recipeTable.Fountain ?? false,
|
||||
MoldHeater = _recipeTable.MoldHeater ?? false,
|
||||
Vibration = _recipeTable.Vibration ?? false,
|
||||
VibHeater = _recipeTable.VibHeater ?? false,
|
||||
Pedal = _recipeTable.Pedal ?? false,
|
||||
PedalOnTime = _recipeTable.PedalOnTime,
|
||||
PedalOffTime = _recipeTable.PedalOffTime,
|
||||
HeatingGoal = _recipeTable.HeatingGoal,
|
||||
CoolingGoal = _recipeTable.CoolingGoal,
|
||||
PouringGoal = _recipeTable.PouringGoal
|
||||
};
|
||||
|
||||
var heatingStackPanel = heatingBtn.Content as StackPanel;
|
||||
var heatingText = (heatingStackPanel?.Children[1] as TextBlock)?.Text;
|
||||
|
||||
var coolingStackPanel = coolingBtn.Content as StackPanel;
|
||||
var coolingText = (coolingStackPanel?.Children[1] as TextBlock)?.Text;
|
||||
|
||||
var stackPanel = controllButton.Content as StackPanel;
|
||||
var label = stackPanel?.Children;
|
||||
var targetText = label?[1] as TextBlock;
|
||||
var activeTxt = label?[0] as TextBlock;
|
||||
|
||||
if (activeTxt == null || targetText == null)
|
||||
return;
|
||||
|
||||
switch (activeTxt.Text)
|
||||
{
|
||||
case "HEATING:":
|
||||
if (!string.IsNullOrEmpty(targetText.Text) && int.TryParse(targetText.Text, out int heatingValue))
|
||||
{
|
||||
if (heatingValue > 60)
|
||||
{
|
||||
tempErrorMsg.Text = "Heating Temperature must be lower than 60 <20>C";
|
||||
return;
|
||||
}
|
||||
else if (heatingValue < 40)
|
||||
{
|
||||
tempErrorMsg.Text = "Heating Temperature must be greater than 40 <20>C";
|
||||
return;
|
||||
}
|
||||
|
||||
recipe.HeatingGoal = heatingValue;
|
||||
}
|
||||
break;
|
||||
|
||||
case "POURING:":
|
||||
if (!string.IsNullOrEmpty(targetText.Text) && int.TryParse(targetText.Text, out int pouringValue))
|
||||
{
|
||||
if (string.IsNullOrEmpty(heatingText) || string.IsNullOrEmpty(coolingText))
|
||||
{
|
||||
tempErrorMsg.Text = "Enter heating and cooling temperature first";
|
||||
return;
|
||||
}
|
||||
|
||||
if (!int.TryParse(heatingText, out int heatingTemp) || !int.TryParse(coolingText, out int coolingTemp))
|
||||
{
|
||||
tempErrorMsg.Text = "Invalid temperature values";
|
||||
return;
|
||||
}
|
||||
|
||||
if (pouringValue > heatingTemp)
|
||||
{
|
||||
tempErrorMsg.Text = $"Pouring Temperature must be lower than Heating Temperature ({heatingTemp}<7D>C)";
|
||||
return;
|
||||
}
|
||||
else if (pouringValue < coolingTemp)
|
||||
{
|
||||
tempErrorMsg.Text = $"Pouring Temperature must be greater than Cooling Temperature ({coolingTemp}<7D>C)";
|
||||
return;
|
||||
}
|
||||
|
||||
recipe.PouringGoal = pouringValue;
|
||||
}
|
||||
break;
|
||||
|
||||
case "COOLING:":
|
||||
if (!string.IsNullOrEmpty(targetText.Text) && int.TryParse(targetText.Text, out int coolingValue))
|
||||
{
|
||||
if (coolingValue > 40)
|
||||
{
|
||||
tempErrorMsg.Text = "Cooling Temperature must be lower than 40 <20>C";
|
||||
return;
|
||||
}
|
||||
else if (coolingValue < 20)
|
||||
{
|
||||
tempErrorMsg.Text = "Cooling Temperature must be greater than 20 <20>C";
|
||||
return;
|
||||
}
|
||||
|
||||
recipe.CoolingGoal = coolingValue;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
_recipeTable.UpdateRecipe(recipe);
|
||||
tempErrorMsg.Text = "";
|
||||
heatingBtn.IsEnabled = true;
|
||||
coolingBtn.IsEnabled = true;
|
||||
pouringBtn.IsEnabled = true;
|
||||
PopupOverlay.IsVisible = false;
|
||||
setDefaultSettings();
|
||||
}
|
||||
|
||||
|
||||
private void showPopUp(object? sender, RoutedEventArgs e)
|
||||
{
|
||||
if (sender is Button button)
|
||||
{
|
||||
heatingBtn.IsEnabled = false;
|
||||
coolingBtn.IsEnabled = false;
|
||||
pouringBtn.IsEnabled = false;
|
||||
button.IsEnabled = true;
|
||||
var StackPanel = button.Content as StackPanel;
|
||||
var Label = StackPanel.Children;
|
||||
if (Label[1] is TextBlock targetText)
|
||||
{
|
||||
oldNumber = targetText.Text;
|
||||
}
|
||||
controllButton = button;
|
||||
PopupOverlay.IsVisible = true;
|
||||
}
|
||||
|
||||
}
|
||||
private void OnPopupOverlayPointerPressed(object sender, PointerPressedEventArgs e)
|
||||
{
|
||||
// Close the popup when clicking outside of it
|
||||
//controllButton.Foreground = Avalonia.Media.Brushes.Black;
|
||||
var StackPanel = controllButton.Content as StackPanel;
|
||||
var Label = StackPanel.Children;
|
||||
if (Label[1] is TextBlock targetText)
|
||||
{
|
||||
//number += button.Content?.ToString();
|
||||
targetText.Text = oldNumber;
|
||||
}
|
||||
tempErrorMsg.Text = "";
|
||||
heatingBtn.IsEnabled = true;
|
||||
coolingBtn.IsEnabled = true;
|
||||
pouringBtn.IsEnabled = true;
|
||||
|
||||
PopupOverlay.IsVisible = false;
|
||||
}
|
||||
|
||||
private void setDefaultSettings()
|
||||
{
|
||||
//set Values
|
||||
_recipeTable = _recipeTable.ReadRecipesById(_recipeTable.Id.ToString());
|
||||
heatingValue.Text = _recipeTable?.HeatingGoal == 0 ? "" : _recipeTable?.HeatingGoal.ToString();
|
||||
coolingValue.Text = _recipeTable?.CoolingGoal == 0 ? "" : _recipeTable?.CoolingGoal.ToString();
|
||||
pouringValue.Text = _recipeTable?.PouringGoal == 0 ? "" : _recipeTable?.PouringGoal.ToString();
|
||||
|
||||
//Set Track Up
|
||||
_mainWindow.HomeTrack.IsVisible = true;
|
||||
//_mainWindow.HomePolygon.Stroke = Avalonia.Media.Brushes.Black;
|
||||
_mainWindow.RecipePanelTrack.IsVisible = true;
|
||||
_mainWindow.RecipePanelPolygon.Stroke = Avalonia.Media.Brushes.Black;
|
||||
_mainWindow.RecipeEditTrack.IsVisible = true;
|
||||
_mainWindow.RecipeEditPolygon.Stroke = Brush.Parse("#A4275D");
|
||||
_mainWindow.RunInterfaceTrack.IsVisible = false;
|
||||
_mainWindow.RecipeSelTrack.IsVisible = false;
|
||||
_mainWindow.SettingTrack.IsVisible = false;
|
||||
_mainWindow.DiagnosticsTrack.IsVisible = false;
|
||||
|
||||
_mainWindow.TitleBtn.IsVisible = true;
|
||||
_mainWindow.Title.Text = _recipeTable.Name;
|
||||
|
||||
//Set Footer
|
||||
_mainWindow.footerMsg.Text = "Select the tempereture to edit it";
|
||||
_mainWindow.footer.Background = Avalonia.Media.Brushes.WhiteSmoke;
|
||||
_mainWindow.footerMsg.Foreground = Brush.Parse("#A4275D");
|
||||
_mainWindow.footerDate.Text = DateTime.Now.ToString("dd/MM/yyyy");
|
||||
_mainWindow.footerTime.Text = DateTime.Now.ToString("hh:mm tt");
|
||||
_mainWindow.footerDateContainer.IsVisible = true;
|
||||
_mainWindow.footerStartBtn.IsVisible = false;
|
||||
_mainWindow.adminBtns.IsVisible = false;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user