@* //------------------------------------------------------------------------------ // 此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 // 此代码版权(除特别声明外的代码)归作者本人Diego所有 // 源代码使用协议遵循本仓库的开源协议及附加协议 // Gitee源代码仓库:https://gitee.com/diego2098/ThingsGateway // Github源代码仓库:https://github.com/kimdiego2098/ThingsGateway // 使用文档:https://diego2098.gitee.io/thingsgateway-docs/ // QQ群:605534569 //------------------------------------------------------------------------------ *@ @page "/gatewayconfig/devicevariable" @namespace ThingsGateway.Gateway.Blazor @using System.Linq.Expressions; @using BlazorComponent; @using Furion.DataValidation; @using Furion; @using Mapster; @using Masa.Blazor @using Masa.Blazor.Presets; @using System.IO; @using Microsoft.AspNetCore.Authorization; @using ThingsGateway.Admin.Blazor; @using ThingsGateway.Admin.Core; @attribute [Authorize] @inherits BaseComponentBase @inject UserResoures UserResoures @layout MainLayout @* @if (IsMobile) { @GetAppDataTable() } else { { if(_search.DeviceName!=a.FirstOrDefault()) { _search.DeviceName=a.FirstOrDefault(); await DatatableQueryAsync(); } } ) Items="_deviceGroups" ItemText="r=>r.Name" ItemChildren="r=>r.Childrens" Search="@_searchName" Activatable ItemKey=@(r=>r.Name)> @context.Item.Name @GetAppDataTable() } *@ @GetAppDataTable() @code { RenderFragment GetAppDataTable() { RenderFragment renderFragment = @ x.Name) /> x.Address) /> x.DeviceName) /> x.UploadDeviceName) /> 导出 导出全部 导出搜索项 导入 清空 @{ var data = _collectDevices.FirstOrDefault(); context.DeviceId = context.DeviceId == 0 ? data == null ? 0 : data.Id : context.DeviceId; } @GetRenderFragment(context) @GetRenderFragment(context) @switch (context.Header.Value) { case nameof(context.Item.DeviceId): @( _serviceScope.ServiceProvider.GetService().GetNameById(context.Item.DeviceId) ) break; default: @if (context.Header.CellClass?.Contains("text-truncate") == true) { @context.Value } else { @context.Value } break; } @{ switch (context.Item1.Value) { case nameof(DeviceVariable.DeviceId): @context.Item1.Text
@(_serviceScope.ServiceProvider.GetService().GetNameById(context.Item2.ToLong()))
break; default: @context.Item1.Text
@context.Item2
break; } }
; return renderFragment; } RenderFragment GetRenderFragment(VariableEditInput context) { if (!_otherMethods.ContainsKey(context.DeviceId)) { DeviceChanged(context.DeviceId); } RenderFragment renderFragment = @
基础属性设置
x.ProtectTypeEnum)) MenuProps="@(props => { props.Auto = true; props.OffsetY = true; })" ItemText=@((u) =>u.Description) ItemValue=@(u =>(ProtectTypeEnum)u.Value) HideDetails=@("auto") Height="30" Dense> x.DataTypeEnum)) MenuProps="@(props => { props.Auto = true; props.OffsetY = true; })" ItemText=@((u) =>u.Description) ItemValue=@(u =>(DataTypeEnum)u.Value) HideDetails=@("auto") Height="30" Dense> (){true,false}) Clearable Label=@(context.Description(x => x.RpcWriteEnable)) MenuProps="@(props => { props.Bottom = true; props.OffsetY = true; })" ItemText=@((u) =>u.ToString()) ItemValue=@(u =>u) HideDetails=@("auto") Height="30" Dense>
采集属性设置
x.DeviceId)) Color="primary" Items=@(_collectDevices) OnClick=@(()=>DeviceChanged(context.DeviceId)) MenuProps="@(props => { props.Bottom = true; props.OffsetY = true; })" ItemText=@((u) =>u.Name) ItemValue=@(u =>u.Id) ItemDisabled="u => !u.Enable" Clearable HideDetails=@("auto") Height="30" Dense> @if (_otherMethods.ContainsKey(context.DeviceId)) { x.OtherMethod)) Color="primary" Items=@(_otherMethods[context.DeviceId]) Clearable MenuProps="@(props => { props.Auto = true; props.OffsetY = true; })" ItemText=@((u) =>u) ItemValue=@(u =>u) HideDetails=@("auto") Height="30" Dense> }
实时报警设置
x.BoolCloseAlarmEnable)) Color="primary" Items=@(new List(){true,false}) Clearable MenuProps="@(props => { props.Bottom = true; props.OffsetY = true; })" ItemText=@((u) =>u.ToString()) ItemValue=@(u =>u) HideDetails=@("auto") Height="30" Dense> x.BoolOpenAlarmEnable)) Color="primary" Items=@(new List(){true,false}) Clearable MenuProps="@(props => { props.Bottom = true; props.OffsetY = true; })" ItemText=@((u) =>u.ToString()) ItemValue=@(u =>u) HideDetails=@("auto") Height="30" Dense> x.HHAlarmEnable)) Color="primary" Items=@(new List(){true,false}) Clearable MenuProps="@(props => { props.Bottom = true; props.OffsetY = true; })" ItemText=@((u) =>u.ToString()) ItemValue=@(u =>u) HideDetails=@("auto") Height="30" Dense> x.HAlarmEnable)) Color="primary" Items=@(new List(){true,false}) Clearable MenuProps="@(props => { props.Bottom = true; props.OffsetY = true; })" ItemText=@((u) =>u.ToString()) ItemValue=@(u =>u) HideDetails=@("auto") Height="30" Dense> x.LAlarmEnable)) Color="primary" Items=@(new List(){true,false}) Clearable MenuProps="@(props => { props.Bottom = true; props.OffsetY = true; })" ItemText=@((u) =>u.ToString()) ItemValue=@(u =>u) HideDetails=@("auto") Height="30" Dense> x.LLAlarmEnable)) Color="primary" Items=@(new List(){true,false}) Clearable MenuProps="@(props => { props.Bottom = true; props.OffsetY = true; })" ItemText=@((u) =>u.ToString()) ItemValue=@(u =>u) HideDetails=@("auto") Height="30" Dense>
上传业务相关
u.Name) ItemValue=@(u =>u.Id) HideDetails=@("auto") Height="30" Dense> { if(_choiceUploadDeviceId>0) { var data=GetDriverProperties(_uploadDevices.FirstOrDefault(a=>a.Id==_choiceUploadDeviceId).PluginName,context.VariablePropertys.ContainsKey(_choiceUploadDeviceId)?context.VariablePropertys[_choiceUploadDeviceId]:null); if(data.Count>0) { context.VariablePropertys.AddOrUpdate(_choiceUploadDeviceId,a=> data,(a,b)=>data); } else { context.VariablePropertys.AddOrUpdate(_choiceUploadDeviceId,a=> data,(a,b)=>data); } } else { await PopupService.EnqueueSnackbarAsync("需选择上传设备",AlertTypes.Warning); } } ) Color="primary"> 添加/刷新属性 @if (context.VariablePropertys != null) { @foreach (var item in context.VariablePropertys) { @{ var data=_uploadDevices.FirstOrDefault(a => a.Id == item.Key); if(data!=null) @($"{data.Name}({data.PluginName})") } { context.VariablePropertys.Remove(item.Key); } ) Color="primary"> 删除 @foreach (var property in item.Value ?? new()) { int md=3; @if (property.PropertyName.Contains("BigText")) { md=12; } @if (property.PropertyName.Contains("BigText")) { } else { } @property.Remark } } }
; return renderFragment; } }