124 lines
5.0 KiB
Plaintext
124 lines
5.0 KiB
Plaintext
@page "/manage/setting/Fridge"
|
|
@using MasaBlazorApp3.Util
|
|
@using Newtonsoft.Json.Linq
|
|
@using log4net
|
|
@layout SettingLayout
|
|
<div class="main">
|
|
<div class="top-row px-4">
|
|
<RadzenButton Icon="account_circle" Style="margin-left: auto;" Click="@SaveMethod">
|
|
<ChildContent>
|
|
@myText.SaveSet
|
|
</ChildContent>
|
|
</RadzenButton>
|
|
</div>
|
|
|
|
<div class="content px-4">
|
|
<RadzenCard class="rz-my-6">
|
|
<RadzenStack Orientation="Orientation.Horizontal" AlignItems="AlignItems.Start" Wrap="FlexWrap.Wrap">
|
|
<RadzenStack Orientation="Orientation.Vertical" Gap="4px">
|
|
@myText.TemperRange
|
|
<RadzenTextBox Placeholder="2-8" Value="@temperatureRange" Change="@(args=>temperatureRange=args)"></RadzenTextBox>
|
|
</RadzenStack>
|
|
<RadzenStack Orientation="Orientation.Vertical" Gap="4px">
|
|
@myText.FridgeState
|
|
<RadzenRadioButtonList Value=@fridgeStateValue TValue="int" Change=@(args => fridgeStateValue = args)>
|
|
<Items>
|
|
<RadzenRadioButtonListItem Text="@myText.Open" Value="0" />
|
|
<RadzenRadioButtonListItem Text="@myText.Close" Value="1" />
|
|
</Items>
|
|
</RadzenRadioButtonList>
|
|
</RadzenStack>
|
|
<RadzenStack Orientation="Orientation.Vertical" Gap="4px">
|
|
@myText.AlertState
|
|
<RadzenRadioButtonList Value="@alertStateValue" TValue="int" Change="@(args=>alertStateValue=args)">
|
|
<Items>
|
|
<RadzenRadioButtonListItem Text="@myText.Open" Value="0"/>
|
|
<RadzenRadioButtonListItem Text="@myText.Close" Value="1"/>
|
|
</Items>
|
|
</RadzenRadioButtonList>
|
|
</RadzenStack>
|
|
</RadzenStack>
|
|
</RadzenCard>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
@inject Microsoft.Extensions.Options.IOptions<Pojo.Config.fridgeConfig> setting;
|
|
@inject PortUtil port;
|
|
@inject NotificationService _message
|
|
@inject Toolbelt.Blazor.I18nText.I18nText I18nText;
|
|
|
|
@code {
|
|
private I18nText.local myText = new I18nText.local();
|
|
private readonly ILog logger = LogManager.GetLogger(typeof(LoginDialog));
|
|
int fridgeStateValue = 1;
|
|
int alertStateValue = 1;
|
|
string temperatureRange = "2-8";
|
|
|
|
protected override async Task OnInitializedAsync()
|
|
{
|
|
myText = await I18nText.GetTextTableAsync<I18nText.local>(this);
|
|
fridgeStateValue = setting.Value.fridgeState;
|
|
alertStateValue = setting.Value.alertState;
|
|
temperatureRange = setting.Value.temperatureRange;
|
|
await base.OnInitializedAsync();
|
|
}
|
|
//保存
|
|
async Task SaveMethod()
|
|
{
|
|
// 获取当前工作目录
|
|
string currentDirectory = Directory.GetCurrentDirectory();
|
|
// setting.Value.fridgeState = fridgeStateValue;
|
|
// setting.Value.alertState = alertStateValue;
|
|
// setting.Value.temperatureRange = temperatureRange;
|
|
string filePath =Path.Combine(currentDirectory, "appsettings.json");
|
|
string jsonString= File.ReadAllText(filePath);
|
|
var jsonNode = JObject.Parse(jsonString);
|
|
jsonNode["fridge"]["temperatureRange"] = temperatureRange;
|
|
jsonNode["fridge"]["fridgeState"]= fridgeStateValue;
|
|
jsonNode["fridge"]["alertState"] = alertStateValue;
|
|
var options = new JsonSerializerOptions { WriteIndented = true };
|
|
File.WriteAllText(filePath, jsonNode.ToString(Newtonsoft.Json.Formatting.Indented));
|
|
if (fridgeStateValue==0)
|
|
{
|
|
await port.FridegOpen(1);
|
|
}
|
|
else
|
|
{
|
|
await port.FridgeOff(1);
|
|
}
|
|
if (alertStateValue==0)
|
|
{
|
|
await port.FridgeAlarmOn(1);
|
|
}
|
|
else
|
|
{
|
|
await port.FridgeAlarmOff(1);
|
|
}
|
|
string[] newRange = temperatureRange.Split('-');
|
|
if(newRange.Length>=2)
|
|
{
|
|
string[] range= setting.Value.temperatureRange.Split('-');
|
|
bool bMix = float.TryParse(newRange[0], out float Min);
|
|
bool bMax = float.TryParse(newRange[1], out float Max);
|
|
if (bMix && bMax)
|
|
{
|
|
if (range == null || range[0] == null||(range != null && range[0] != null && range[0] != newRange[0]))
|
|
{
|
|
//设定冰箱温度最小值
|
|
await port.FridgeMinSetting(Min, 1);
|
|
}
|
|
if (range == null || range[0] == null || (range != null && range[1] != null && range[1] != newRange[1]))
|
|
{
|
|
//设定冰箱温度最大值
|
|
await port.FridgeMaxSetting(Max, 1);
|
|
}
|
|
}
|
|
}
|
|
_message.Notify(
|
|
new NotificationMessage { Severity = NotificationSeverity.Success, Summary = "提示", Detail = $"保存成功", Duration = 4000 }
|
|
);
|
|
logger.Info($"修改冰箱设置");
|
|
}
|
|
}
|