This commit is contained in:
@@ -9,28 +9,16 @@ namespace Strela.Controllers;
|
|||||||
[Route("api/[controller]")]
|
[Route("api/[controller]")]
|
||||||
public class DeviceController : ControllerBase
|
public class DeviceController : ControllerBase
|
||||||
{
|
{
|
||||||
private readonly ILogger<UserController> _logger;
|
private readonly ILogger<DeviceController> _logger;
|
||||||
|
|
||||||
public DeviceController(ILogger<UserController> logger)
|
public DeviceController(ILogger<DeviceController> logger)
|
||||||
{
|
{
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
//=========================== GET =================================//
|
//=========================== GET =================================//
|
||||||
#region GET
|
#region GET
|
||||||
[HttpGet("GetTypes")]
|
|
||||||
[ProducesResponseType<List<DeviceType>>(StatusCodes.Status200OK)]
|
|
||||||
[ProducesResponseType(StatusCodes.Status204NoContent)]
|
|
||||||
public IActionResult GetList()// Получить лист типов устройств
|
|
||||||
{
|
|
||||||
using (var db = new SQLiteService())
|
|
||||||
{
|
|
||||||
var tps = db.DeviceTypes.ToList();
|
|
||||||
if (tps.Count != 0)
|
|
||||||
return Ok(tps);
|
|
||||||
else return NoContent();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
[HttpGet("GetDeviceById")]
|
[HttpGet("GetDeviceById")]
|
||||||
[ProducesResponseType<DeviceItem>(StatusCodes.Status200OK)]
|
[ProducesResponseType<DeviceItem>(StatusCodes.Status200OK)]
|
||||||
@@ -74,32 +62,12 @@ public class DeviceController : ControllerBase
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost("AddType")]
|
|
||||||
public IActionResult AddType(DeviceType d) //Добавить один тип устройства
|
|
||||||
{
|
|
||||||
using (var db = new SQLiteService())
|
|
||||||
{
|
|
||||||
db.DeviceTypes.Add(d);//.Where(u => u.Name == name).FirstOrDefault();
|
|
||||||
db.SaveChanges();
|
|
||||||
return Created();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
//========================= DELETE ====================================//
|
//========================= DELETE ====================================//
|
||||||
#region DELETE
|
#region DELETE
|
||||||
[HttpDelete("DelType")]
|
|
||||||
public IActionResult DelType(int id) //Удалить тип устройства по id
|
|
||||||
{
|
|
||||||
using (var db = new SQLiteService())
|
|
||||||
{
|
|
||||||
var deldevtype = db.DeviceTypes.Where(u => u.Id == id).FirstOrDefault();
|
|
||||||
db.DeviceTypes.Remove(deldevtype);
|
|
||||||
db.SaveChanges();
|
|
||||||
return Ok();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
[HttpDelete("DelDevice")]
|
[HttpDelete("DelDevice")]
|
||||||
public IActionResult DelDevice(int id) //Удалить устройство по id
|
public IActionResult DelDevice(int id) //Удалить устройство по id
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -0,0 +1,77 @@
|
|||||||
|
using Microsoft.AspNetCore.Http.HttpResults;
|
||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using Strela.Models;
|
||||||
|
using Strela.Services;
|
||||||
|
|
||||||
|
namespace Strela.Controllers;
|
||||||
|
|
||||||
|
[ApiController]
|
||||||
|
[Route("api/[controller]")]
|
||||||
|
public class TypeController : ControllerBase
|
||||||
|
{
|
||||||
|
private readonly ILogger<TypeController> _logger;
|
||||||
|
|
||||||
|
public TypeController(ILogger<TypeController> logger)
|
||||||
|
{
|
||||||
|
_logger = logger;
|
||||||
|
}
|
||||||
|
|
||||||
|
//=========================== GET =================================//
|
||||||
|
#region GET
|
||||||
|
[HttpGet("GetTypes")]
|
||||||
|
public IActionResult GetList()// Получить лист типов устройств
|
||||||
|
{
|
||||||
|
using (var db = new SQLiteService())
|
||||||
|
{
|
||||||
|
var tps = db.DeviceTypes.ToList();
|
||||||
|
return Ok(tps);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpGet("GetTypeById")]
|
||||||
|
[ProducesResponseType<DeviceItem>(StatusCodes.Status200OK)]
|
||||||
|
[ProducesResponseType(StatusCodes.Status204NoContent)]
|
||||||
|
public IActionResult GetById(int id) // Получить устройство по id
|
||||||
|
{
|
||||||
|
using (var db = new SQLiteService())
|
||||||
|
{
|
||||||
|
var d = db.DeviceTypes.Where(d => d.Id == id).FirstOrDefault();
|
||||||
|
if (d != null)
|
||||||
|
return Ok(d);
|
||||||
|
else return NoContent();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
//========================= POST ====================================//
|
||||||
|
#region POST
|
||||||
|
|
||||||
|
[HttpPost("AddType")]
|
||||||
|
public IActionResult AddType(DeviceType d) //Добавить один тип устройства
|
||||||
|
{
|
||||||
|
using (var db = new SQLiteService())
|
||||||
|
{
|
||||||
|
db.DeviceTypes.Add(d);//.Where(u => u.Name == name).FirstOrDefault();
|
||||||
|
db.SaveChanges();
|
||||||
|
return Created();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
//========================= DELETE ====================================//
|
||||||
|
#region DELETE
|
||||||
|
[HttpDelete("DelType")]
|
||||||
|
public IActionResult DelType(int id) //Удалить тип устройства по id
|
||||||
|
{
|
||||||
|
using (var db = new SQLiteService())
|
||||||
|
{
|
||||||
|
var deldevtype = db.DeviceTypes.Where(u => u.Id == id).FirstOrDefault();
|
||||||
|
db.DeviceTypes.Remove(deldevtype);
|
||||||
|
db.SaveChanges();
|
||||||
|
return Ok();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
{
|
{
|
||||||
public class DeviceItem
|
public class DeviceItem
|
||||||
{
|
{
|
||||||
public int Id { get; set; }
|
public Guid Id { get; set; }
|
||||||
public string? Ip { get; set; }
|
public string? Ip { get; set; }
|
||||||
public string? Mac { get; set; }
|
public string? Mac { get; set; }
|
||||||
public string? Description { get; set; }
|
public string? Description { get; set; }
|
||||||
@@ -11,7 +11,7 @@
|
|||||||
public List<DeviceItem>? ListDevices { get; set; }
|
public List<DeviceItem>? ListDevices { get; set; }
|
||||||
public DeviceType? DeviceType { get; set; }
|
public DeviceType? DeviceType { get; set; }
|
||||||
public ObjectItem? DeviceObject { get; set; }
|
public ObjectItem? DeviceObject { get; set; }
|
||||||
public int ConnectedToSwitchId { get; set; }
|
public Guid ConnectedToSwitchId { get; set; }
|
||||||
public int ConnectedToPortOnSwitch { get; set; }
|
public int ConnectedToPortOnSwitch { get; set; }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
{
|
{
|
||||||
public class DeviceType
|
public class DeviceType
|
||||||
{
|
{
|
||||||
public int Id { get; set; }
|
public Guid Id { get; set; }
|
||||||
public string Name { get; set; }
|
public string Name { get; set; }
|
||||||
public string? Description { get; set; }
|
public string? Description { get; set; }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
{
|
{
|
||||||
public class ObjectItem
|
public class ObjectItem
|
||||||
{
|
{
|
||||||
public int Id { get; set; }
|
public Guid Id { get; set; }
|
||||||
public string NameObject { get; set; } = "Unknown";
|
public string NameObject { get; set; } = "Unknown";
|
||||||
public string? DescriptionObject { get; set; } = null;
|
public string? DescriptionObject { get; set; } = null;
|
||||||
}
|
}
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,20 +1,37 @@
|
|||||||
using static System.Net.WebRequestMethods;
|
namespace Visor.Models
|
||||||
|
|
||||||
namespace Visor.Models
|
|
||||||
{
|
{
|
||||||
public class AllPubData
|
public class AllPubData
|
||||||
{
|
{
|
||||||
public static List<ObjectItems> ListObjectItems { get; set; } = new();
|
public static List<ObjectItems> ListObjectItems { get; set; } = new();
|
||||||
|
public static List<DeviceItems> ListDeviceItems { get; set; } = new();
|
||||||
|
public static List<DeviceTypeItems> ListDeviceTypeItems { get; set; } = new();
|
||||||
public static HttpClient http { get; set; } = new()
|
public static HttpClient http { get; set; } = new()
|
||||||
{
|
{
|
||||||
BaseAddress = new Uri("http://localhost:5262/")
|
BaseAddress = new Uri("http://localhost:5262/")
|
||||||
};
|
};
|
||||||
|
|
||||||
|
public static Task GetAll() => _GetAllData();
|
||||||
public static Task GetObjects() => _GetObject();
|
public static Task GetObjects() => _GetObject();
|
||||||
|
public static Task GetType() => _GetType();
|
||||||
|
public static Task GetDevice() => _GetDevice();
|
||||||
|
|
||||||
private static async Task _GetObject()
|
private static async Task _GetAllData()
|
||||||
{
|
{
|
||||||
ListObjectItems = await http.GetFromJsonAsync<List<ObjectItems>>("api/Object/GetObject");
|
var o = await _GetObject();
|
||||||
|
var t = await _GetType();
|
||||||
|
var d = await _GetDevice();
|
||||||
|
}
|
||||||
|
private static async Task<List<ObjectItems>> _GetObject()
|
||||||
|
{
|
||||||
|
return ListObjectItems = await http.GetFromJsonAsync<List<ObjectItems>>("api/Object/GetObject");
|
||||||
|
}
|
||||||
|
private static async Task<List<DeviceItems>> _GetDevice()
|
||||||
|
{
|
||||||
|
return ListDeviceItems = http.GetFromJsonAsync<List<DeviceItems>>("api/Device/GetDevices").Result.Take(100).ToList();
|
||||||
|
}
|
||||||
|
private static async Task<List<DeviceTypeItems>> _GetType()
|
||||||
|
{
|
||||||
|
return ListDeviceTypeItems = await http.GetFromJsonAsync<List<DeviceTypeItems>>("api/Type/GetTypes");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
{
|
{
|
||||||
public class DeviceItems
|
public class DeviceItems
|
||||||
{
|
{
|
||||||
public int Id { get; set; }
|
public Guid Id { get; set; }
|
||||||
public string? Ip { get; set; }
|
public string? Ip { get; set; }
|
||||||
public string? Mac { get; set; }
|
public string? Mac { get; set; }
|
||||||
public string? Description { get; set; }
|
public string? Description { get; set; }
|
||||||
@@ -11,7 +11,7 @@
|
|||||||
public List<DeviceItems>? ListDevices { get; set; }
|
public List<DeviceItems>? ListDevices { get; set; }
|
||||||
public DeviceTypeItems? DeviceType { get; set; }
|
public DeviceTypeItems? DeviceType { get; set; }
|
||||||
public ObjectItems? DeviceObject { get; set; }
|
public ObjectItems? DeviceObject { get; set; }
|
||||||
public int ConnectedToSwitchId { get; set; }
|
public Guid ConnectedToSwitchId { get; set; }
|
||||||
public int ConnectedToPortOnSwitch { get; set; }
|
public int ConnectedToPortOnSwitch { get; set; }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
{
|
{
|
||||||
public class DeviceTypeItems
|
public class DeviceTypeItems
|
||||||
{
|
{
|
||||||
public int Id { get; set; }
|
public Guid Id { get; set; }
|
||||||
public string Name { get; set; }
|
public string Name { get; set; }
|
||||||
public string? Description { get; set; } = null;
|
public string? Description { get; set; } = null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ namespace Visor.Models
|
|||||||
public class ObjectItems
|
public class ObjectItems
|
||||||
{
|
{
|
||||||
[Key]
|
[Key]
|
||||||
public int Id { get; set; }
|
public Guid Id { get; set; }
|
||||||
public string NameObject { get; set; } = "Unknown";
|
public string NameObject { get; set; } = "Unknown";
|
||||||
public string DescriptionObject { get; set; } = string.Empty;
|
public string DescriptionObject { get; set; } = string.Empty;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -56,7 +56,7 @@
|
|||||||
private Modal modalAdd;
|
private Modal modalAdd;
|
||||||
private Modal modalDel;
|
private Modal modalDel;
|
||||||
|
|
||||||
private int select_id { get; set; }
|
private Guid select_id { get; set; }
|
||||||
private int id_object { get; set; }
|
private int id_object { get; set; }
|
||||||
private string name_object { get; set; }
|
private string name_object { get; set; }
|
||||||
private string decript_object { get; set; }
|
private string decript_object { get; set; }
|
||||||
|
|||||||
@@ -1,248 +1,357 @@
|
|||||||
@page "/setting/wizard"
|
@page "/setting/wizard"
|
||||||
@using Visor.Models
|
@using Visor.Models
|
||||||
|
@using System.Text.Json
|
||||||
<h3>Wizard</h3>
|
<h3>Wizard</h3>
|
||||||
|
|
||||||
<Steps @ref="stepsRef" @bind-SelectedStep="@selectedStep" NavigationAllowed="NavigationAllowed">
|
<Toaster>
|
||||||
<Items>
|
<Toast @bind-Visible="@toastError">
|
||||||
<Step Name="1">Объекты</Step>
|
<ToastHeader>
|
||||||
<Step Name="2">Типы</Step>
|
<Strong Margin="Margin.IsAuto.FromEnd">@error_group</Strong>
|
||||||
<Step Name="3">Устройства</Step>
|
<CloseButton />
|
||||||
<Step Name="4">Итог</Step>
|
</ToastHeader>
|
||||||
</Items>
|
<ToastBody>
|
||||||
<Content>
|
@error_msg
|
||||||
<StepPanel Name="1">
|
</ToastBody>
|
||||||
<Row>
|
</Toast>
|
||||||
<Column ColumnSize="ColumnSize.Is3">
|
</Toaster>
|
||||||
<Field>
|
|
||||||
<TextInput Autofocus="true" @bind-Value="obj_name" Placeholder="Название объекта">
|
<LoadingIndicator @bind-Visible="@visible">
|
||||||
<FieldHelp>Введите название объекта. Например: VNK, SPB...</FieldHelp>
|
<Steps @ref="stepsRef" @bind-SelectedStep="@selectedStep" NavigationAllowed="NavigationAllowed">
|
||||||
</TextInput>
|
<Items>
|
||||||
</Field>
|
<Step Name="1">Объекты</Step>
|
||||||
</Column>
|
<Step Name="2">Типы</Step>
|
||||||
<Column ColumnSize="ColumnSize.Is8">
|
<Step Name="3">Устройства</Step>
|
||||||
<Field>
|
<Step Name="4">Итог</Step>
|
||||||
<TextInput @bind-Value="obj_desc" Placeholder="Описание объекта">
|
</Items>
|
||||||
<FieldHelp>Введите текстовое описание объекта</FieldHelp>
|
<Content>
|
||||||
</TextInput>
|
<StepPanel Name="1">
|
||||||
</Field>
|
<Row>
|
||||||
</Column>
|
<Column ColumnSize="ColumnSize.Is3">
|
||||||
<Column ColumnSize="ColumnSize.Is1">
|
<Card>
|
||||||
<Field>
|
<CardBody>
|
||||||
<Button Color="Color.Primary" Clicked="@AddNewObject">
|
<CardText>
|
||||||
<Icon Name="IconName.Add" />
|
<Field>
|
||||||
</Button>
|
<TextInput Autofocus="true" @bind-Value="obj_name" Placeholder="Название объекта">
|
||||||
</Field>
|
<FieldHelp>Введите название объекта. Например: VNK, SPB...</FieldHelp>
|
||||||
</Column>
|
</TextInput>
|
||||||
</Row>
|
</Field>
|
||||||
<Row>
|
<Field>
|
||||||
<Table>
|
<TextInput @bind-Value="obj_desc" Placeholder="Описание объекта">
|
||||||
<TableHeader>
|
<FieldHelp>Введите текстовое описание объекта</FieldHelp>
|
||||||
<TableRow>
|
</TextInput>
|
||||||
<TableHeaderCell>#</TableHeaderCell>
|
</Field>
|
||||||
<TableHeaderCell>Название объекта</TableHeaderCell>
|
<Field>
|
||||||
<TableHeaderCell>Описание объекта</TableHeaderCell>
|
<Button Color="Color.Primary" Clicked="@AddNewObject">
|
||||||
</TableRow>
|
<Icon Name="IconName.Add" />
|
||||||
</TableHeader>
|
</Button>
|
||||||
<TableBody>
|
</Field>
|
||||||
@foreach (var item in list_obj)
|
</CardText>
|
||||||
{
|
</CardBody>
|
||||||
<TableRow>
|
</Card>
|
||||||
<TableRowHeader>@item.Id</TableRowHeader>
|
</Column>
|
||||||
<TableRowCell>@item.NameObject</TableRowCell>
|
<Column ColumnSize="ColumnSize.Is9">
|
||||||
<TableRowCell>@item.DescriptionObject</TableRowCell>
|
<Card>
|
||||||
</TableRow>
|
<CardBody>
|
||||||
}
|
<CardText>
|
||||||
</TableBody>
|
<Table>
|
||||||
</Table>
|
<TableHeader>
|
||||||
</Row>
|
<TableRow>
|
||||||
</StepPanel>
|
<TableHeaderCell>Название объекта</TableHeaderCell>
|
||||||
<StepPanel Name="2">
|
<TableHeaderCell>Описание объекта</TableHeaderCell>
|
||||||
<Row>
|
</TableRow>
|
||||||
<Column ColumnSize="ColumnSize.Is3">
|
</TableHeader>
|
||||||
<Field>
|
<TableBody>
|
||||||
<TextInput Autofocus="true" @bind-Value="type_name" Placeholder="Название типа устройства">
|
@foreach (var item in _list_obj)
|
||||||
<FieldHelp>Введите название типа. Например: Server, Switch...</FieldHelp>
|
{
|
||||||
</TextInput>
|
<TableRow>
|
||||||
</Field>
|
<TableRowCell>@item.NameObject</TableRowCell>
|
||||||
</Column>
|
<TableRowCell>@item.DescriptionObject</TableRowCell>
|
||||||
<Column ColumnSize="ColumnSize.Is8">
|
</TableRow>
|
||||||
<Field>
|
}
|
||||||
<TextInput @bind-Value="type_desc" Placeholder="Описание типа">
|
</TableBody>
|
||||||
<FieldHelp>Введите текстовое описание типа устройства</FieldHelp>
|
</Table>
|
||||||
</TextInput>
|
</CardText>
|
||||||
</Field>
|
</CardBody>
|
||||||
</Column>
|
</Card>
|
||||||
<Column ColumnSize="ColumnSize.Is1">
|
</Column>
|
||||||
<Field>
|
</Row>
|
||||||
<Button Clicked="@AddNewType">
|
</StepPanel>
|
||||||
<Icon Name="IconName.Add" />
|
<StepPanel Name="2">
|
||||||
</Button>
|
<Row>
|
||||||
</Field>
|
<Column ColumnSize="ColumnSize.Is3">
|
||||||
</Column>
|
<Card>
|
||||||
</Row>
|
<CardBody>
|
||||||
<Row>
|
<CardText>
|
||||||
<Table>
|
<Field>
|
||||||
<TableHeader>
|
<TextInput Autofocus="true" @bind-Value="type_name" Placeholder="Название типа устройства">
|
||||||
<TableRow>
|
<FieldHelp>Введите название типа. Например: Server, Switch...</FieldHelp>
|
||||||
<TableHeaderCell>#</TableHeaderCell>
|
</TextInput>
|
||||||
<TableHeaderCell>Тип устройства</TableHeaderCell>
|
</Field>
|
||||||
<TableHeaderCell>Описание типа устройств</TableHeaderCell>
|
<Field>
|
||||||
</TableRow>
|
<TextInput @bind-Value="type_desc" Placeholder="Описание типа">
|
||||||
</TableHeader>
|
<FieldHelp>Введите текстовое описание типа устройства</FieldHelp>
|
||||||
<TableBody>
|
</TextInput>
|
||||||
@foreach (var item in list_type)
|
</Field>
|
||||||
{
|
<Field>
|
||||||
<TableRow>
|
<Button Color="Color.Primary" Clicked="@AddNewType">
|
||||||
<TableRowHeader>@item.Id</TableRowHeader>
|
<Icon Name="IconName.Add" />
|
||||||
<TableRowCell>@item.Name</TableRowCell>
|
</Button>
|
||||||
<TableRowCell>@item.Description</TableRowCell>
|
</Field>
|
||||||
</TableRow>
|
</CardText>
|
||||||
}
|
</CardBody>
|
||||||
</TableBody>
|
</Card>
|
||||||
</Table>
|
</Column>
|
||||||
</Row>
|
<Column ColumnSize="ColumnSize.Is9">
|
||||||
</StepPanel>
|
<Card>
|
||||||
<StepPanel Name="3">
|
<CardBody>
|
||||||
<Card>
|
<CardText>
|
||||||
<CardBody>
|
<Table>
|
||||||
<CardTitle Size="HeadingSize.Is2">
|
<TableHeader>
|
||||||
Добавление устройства
|
<TableRow>
|
||||||
</CardTitle>
|
<TableHeaderCell>Тип устройства</TableHeaderCell>
|
||||||
<CardText>
|
<TableHeaderCell>Описание типа устройств</TableHeaderCell>
|
||||||
<Addons Size="Size.Small">
|
</TableRow>
|
||||||
<Addon AddonType="AddonType.Start" >
|
</TableHeader>
|
||||||
<AddonLabel Width="Width.Is25">IP</AddonLabel>
|
<TableBody>
|
||||||
</Addon>
|
@foreach (var item in _list_type)
|
||||||
<Addon AddonType="AddonType.Body">
|
{
|
||||||
<InputMask Width="Width.Is50" Mask="999.999.999.999" MaskPlaceholder="X" Placeholder="Введите IP" />
|
<TableRow>
|
||||||
</Addon>
|
<TableRowCell>@item.Name</TableRowCell>
|
||||||
</Addons>
|
<TableRowCell>@item.Description</TableRowCell>
|
||||||
<Addons Size="Size.Small">
|
</TableRow>
|
||||||
<Addon AddonType="AddonType.Start">
|
}
|
||||||
<AddonLabel Width="Width.Is25">MAC</AddonLabel>
|
</TableBody>
|
||||||
</Addon>
|
</Table>
|
||||||
<Addon AddonType="AddonType.Body">
|
</CardText>
|
||||||
<InputMask Width="Width.Is50" Mask="****-****-****" MaskPlaceholder="X" Placeholder="Введите MAC" />
|
</CardBody>
|
||||||
</Addon>
|
</Card>
|
||||||
</Addons>
|
</Column>
|
||||||
<Addons Size="Size.Small">
|
</Row>
|
||||||
<Addon AddonType="AddonType.Start">
|
</StepPanel>
|
||||||
<AddonLabel Width="Width.Is25">Название</AddonLabel>
|
<StepPanel Name="3">
|
||||||
</Addon>
|
<Row>
|
||||||
<Addon AddonType="AddonType.Body">
|
<Column ColumnSize="ColumnSize.Is3">
|
||||||
<TextInput Width="Width.Is50" Placeholder="Введите название устройства" />
|
<Card>
|
||||||
</Addon>
|
<CardBody>
|
||||||
</Addons>
|
<CardTitle Size="HeadingSize.Is2">
|
||||||
<Addons Size="Size.Small">
|
Добавление устройства
|
||||||
<Addon AddonType="AddonType.Start">
|
</CardTitle>
|
||||||
<AddonLabel Width="Width.Is25">Описание</AddonLabel>
|
<CardText>
|
||||||
</Addon>
|
<Addons Size="Size.Small">
|
||||||
<Addon AddonType="AddonType.Body">
|
<Addon AddonType="AddonType.Start">
|
||||||
<TextInput Width="Width.Is50" Placeholder="Введите описание устройства"/>
|
<AddonLabel Width="Width.Is25">IP</AddonLabel>
|
||||||
</Addon>
|
</Addon>
|
||||||
</Addons>
|
<Addon AddonType="AddonType.Body">
|
||||||
<Addons Size="Size.Small">
|
<InputMask @bind-Value="dev_ip" Width="Width.Is50" Mask="999.999.999.999" MaskPlaceholder="X" Placeholder="Введите IP" />
|
||||||
<Addon AddonType="AddonType.Start">
|
</Addon>
|
||||||
<AddonLabel Width="Width.Is25">Место установки</AddonLabel>
|
</Addons>
|
||||||
</Addon>
|
<Addons Size="Size.Small">
|
||||||
<Addon AddonType="AddonType.Body">
|
<Addon AddonType="AddonType.Start">
|
||||||
<TextInput Width="Width.Is50" Placeholder="Введите где установлено устройство" />
|
<AddonLabel Width="Width.Is25">MAC</AddonLabel>
|
||||||
</Addon>
|
</Addon>
|
||||||
</Addons>
|
<Addon AddonType="AddonType.Body">
|
||||||
<Addons Size="Size.Small">
|
<InputMask @bind-Value="dev_mac" Width="Width.Is50" Mask="****-****-****" MaskPlaceholder="X" Placeholder="Введите MAC" />
|
||||||
<Addon AddonType="AddonType.Start">
|
</Addon>
|
||||||
<AddonLabel Width="Width.Is25">Тип устройства</AddonLabel>
|
</Addons>
|
||||||
</Addon>
|
<Addons Size="Size.Small">
|
||||||
<Addon AddonType="AddonType.Body">
|
<Addon AddonType="AddonType.Start">
|
||||||
<Select Width="Width.Is50" TValue="int" @bind-Value="@id_type">
|
<AddonLabel Width="Width.Is25">Название</AddonLabel>
|
||||||
<SelectItem Value="999">Тип устройства</SelectItem>
|
</Addon>
|
||||||
@foreach (var sel in list_type)
|
<Addon AddonType="AddonType.Body">
|
||||||
{
|
<TextInput @bind-Value="dev_name" Width="Width.Is50" Placeholder="Введите название устройства" />
|
||||||
<SelectItem Value="@sel.Id">@sel.Name</SelectItem>
|
</Addon>
|
||||||
}
|
</Addons>
|
||||||
</Select>
|
<Addons Size="Size.Small">
|
||||||
</Addon>
|
<Addon AddonType="AddonType.Start">
|
||||||
</Addons>
|
<AddonLabel Width="Width.Is25">Описание</AddonLabel>
|
||||||
<Addons Size="Size.Small">
|
</Addon>
|
||||||
<Addon AddonType="AddonType.Start">
|
<Addon AddonType="AddonType.Body">
|
||||||
<AddonLabel Width="Width.Is25">Объект</AddonLabel>
|
<TextInput @bind-Value="dev_desc" Width="Width.Is50" Placeholder="Введите описание устройства" />
|
||||||
</Addon>
|
</Addon>
|
||||||
<Addon AddonType="AddonType.Body">
|
</Addons>
|
||||||
<Select Width="Width.Is50" TValue="int" @bind-Value="@id_obj">
|
<Addons Size="Size.Small">
|
||||||
<SelectItem Value="999">На объекте</SelectItem>
|
<Addon AddonType="AddonType.Start">
|
||||||
@foreach (var sel in list_obj)
|
<AddonLabel Width="Width.Is25">Место установки</AddonLabel>
|
||||||
{
|
</Addon>
|
||||||
<SelectItem Value="@sel.Id">@sel.NameObject</SelectItem>
|
<Addon AddonType="AddonType.Body">
|
||||||
}
|
<TextInput @bind-Value="dev_loc" Width="Width.Is50" Placeholder="Введите где установлено устройство" />
|
||||||
</Select>
|
</Addon>
|
||||||
</Addon>
|
</Addons>
|
||||||
</Addons>
|
<Addons Size="Size.Small">
|
||||||
<Addons Size="Size.Small">
|
<Addon AddonType="AddonType.Start">
|
||||||
<Addon AddonType="AddonType.Start">
|
<AddonLabel Width="Width.Is25">Тип устройства</AddonLabel>
|
||||||
<AddonLabel Width="Width.Is25">Подключен к</AddonLabel>
|
</Addon>
|
||||||
</Addon>
|
<Addon AddonType="AddonType.Body">
|
||||||
<Addon AddonType="AddonType.Body">
|
<Select Width="Width.Is50" TValue="Guid" @bind-Value="@id_type">
|
||||||
<Select Width="Width.Is50" TValue="int" @bind-Value="@id_dev">
|
<SelectItem Value="999">Тип устройства</SelectItem>
|
||||||
<SelectItem Value="999">коммутатор</SelectItem>
|
@foreach (var sel in _list_type)
|
||||||
@foreach (var sel in list_switch)
|
{
|
||||||
{
|
<SelectItem Value="@sel.Id">@sel.Name</SelectItem>
|
||||||
<SelectItem Value="@sel.Id">@sel.Name</SelectItem>
|
}
|
||||||
}
|
</Select>
|
||||||
</Select>
|
</Addon>
|
||||||
</Addon>
|
</Addons>
|
||||||
<Addon AddonType="AddonType.End">
|
<Addons Size="Size.Small">
|
||||||
<Button Clicked="@RefreshListSwitch">
|
<Addon AddonType="AddonType.Start">
|
||||||
<Icon Name="IconName.Undo"/>
|
<AddonLabel Width="Width.Is25">Объект</AddonLabel>
|
||||||
</Button>
|
</Addon>
|
||||||
</Addon>
|
<Addon AddonType="AddonType.Body">
|
||||||
</Addons>
|
<Select Width="Width.Is50" TValue="Guid" @bind-Value="@id_obj">
|
||||||
<Addons Size="Size.Small">
|
<SelectItem Value="999">На объекте</SelectItem>
|
||||||
<Addon AddonType="AddonType.Start">
|
@foreach (var sel in _list_obj)
|
||||||
<AddonLabel Width="Width.Is25">Порт подключения</AddonLabel>
|
{
|
||||||
</Addon>
|
<SelectItem Value="@sel.Id">@sel.NameObject</SelectItem>
|
||||||
<Addon AddonType="AddonType.Body">
|
}
|
||||||
<NumericInput @bind-Value="@num_port" Min="1" Max="28" Width="Width.Is50"/>
|
</Select>
|
||||||
</Addon>
|
</Addon>
|
||||||
</Addons>
|
</Addons>
|
||||||
<Button Width="Width.Is100" Clicked="@AddNewDev">Добавить</Button>
|
<Addons Size="Size.Small">
|
||||||
</CardText>
|
<Addon AddonType="AddonType.Start">
|
||||||
</CardBody>
|
<AddonLabel Width="Width.Is25">Подключен к</AddonLabel>
|
||||||
</Card>
|
</Addon>
|
||||||
</StepPanel>
|
<Addon AddonType="AddonType.Body">
|
||||||
<StepPanel Name="4">
|
<Select Width="Width.Is50" TValue="Guid" @bind-Value="@id_dev">
|
||||||
Итог
|
<SelectItem Value="999">коммутатор</SelectItem>
|
||||||
</StepPanel>
|
@foreach (var sel in _list_switch)
|
||||||
</Content>
|
{
|
||||||
</Steps>
|
<SelectItem Value="@sel.Id">@sel.Name</SelectItem>
|
||||||
<Div Flex="Flex.JustifyContent.Center">
|
}
|
||||||
<Button Color="Color.Secondary" Margin="Margin.Is2.FromEnd" Clicked="() => stepsRef.PreviousStep()">
|
</Select>
|
||||||
Назад
|
</Addon>
|
||||||
</Button>
|
<Addon AddonType="AddonType.End">
|
||||||
<Button Color="Color.Primary" Clicked="() => stepsRef.NextStep()">
|
<Button Clicked="@RefreshListSwitch">
|
||||||
@nextButton
|
<Icon Name="IconName.Undo" />
|
||||||
</Button>
|
</Button>
|
||||||
</Div>
|
</Addon>
|
||||||
|
</Addons>
|
||||||
|
<Addons Size="Size.Small">
|
||||||
|
<Addon AddonType="AddonType.Start">
|
||||||
|
<AddonLabel Width="Width.Is25">Порт подключения</AddonLabel>
|
||||||
|
</Addon>
|
||||||
|
<Addon AddonType="AddonType.Body">
|
||||||
|
<NumericInput @bind-Value="num_port" Min="1" Max="28" Width="Width.Is50" />
|
||||||
|
</Addon>
|
||||||
|
</Addons>
|
||||||
|
<Button Width="Width.Is100" Color="Color.Dark" Clicked="@AddNewDev">Добавить</Button>
|
||||||
|
</CardText>
|
||||||
|
</CardBody>
|
||||||
|
</Card>
|
||||||
|
</Column>
|
||||||
|
<Column ColumnSize="ColumnSize.Is9">
|
||||||
|
<Card>
|
||||||
|
<CardBody>
|
||||||
|
<CardText>
|
||||||
|
<Table>
|
||||||
|
<TableHeader>
|
||||||
|
<TableRow>
|
||||||
|
<TableHeaderCell>Имя</TableHeaderCell>
|
||||||
|
<TableHeaderCell>Адрес</TableHeaderCell>
|
||||||
|
<TableHeaderCell>Тип</TableHeaderCell>
|
||||||
|
</TableRow>
|
||||||
|
</TableHeader>
|
||||||
|
<TableBody>
|
||||||
|
@foreach (var item in _list_dev)
|
||||||
|
{
|
||||||
|
<TableRow>
|
||||||
|
<TableRowCell>@item.Name</TableRowCell>
|
||||||
|
<TableRowCell>@item.Ip</TableRowCell>
|
||||||
|
<TableRowCell>@item.DeviceType.Name</TableRowCell>
|
||||||
|
</TableRow>
|
||||||
|
}
|
||||||
|
</TableBody>
|
||||||
|
</Table>
|
||||||
|
</CardText>
|
||||||
|
</CardBody>
|
||||||
|
</Card>
|
||||||
|
</Column>
|
||||||
|
</Row>
|
||||||
|
</StepPanel>
|
||||||
|
<StepPanel Name="4">
|
||||||
|
<Row>
|
||||||
|
<CardDeck>
|
||||||
|
<Card>
|
||||||
|
<CardBody>
|
||||||
|
<CardTitle TextAlignment="TextAlignment.Center">
|
||||||
|
ОБЪЕКТЫ
|
||||||
|
</CardTitle>
|
||||||
|
<CardText>
|
||||||
|
Объектов к добавлению - @_list_obj.Count
|
||||||
|
</CardText>
|
||||||
|
</CardBody>
|
||||||
|
</Card>
|
||||||
|
<Card>
|
||||||
|
<CardBody>
|
||||||
|
<CardTitle TextAlignment="TextAlignment.Center">
|
||||||
|
ТИПЫ УСТРОЙСТВ
|
||||||
|
</CardTitle>
|
||||||
|
<CardText>
|
||||||
|
Типов к добавлению - @_list_type.Count
|
||||||
|
</CardText>
|
||||||
|
</CardBody>
|
||||||
|
</Card>
|
||||||
|
<Card>
|
||||||
|
<CardBody>
|
||||||
|
<CardTitle TextAlignment="TextAlignment.Center">
|
||||||
|
УСТРОЙСТВА
|
||||||
|
</CardTitle>
|
||||||
|
<CardText>
|
||||||
|
Устройств к добавлению - @_list_dev.Count
|
||||||
|
из них коммутаторов - @_list_switch.Count
|
||||||
|
</CardText>
|
||||||
|
</CardBody>
|
||||||
|
</Card>
|
||||||
|
</CardDeck>
|
||||||
|
</Row>
|
||||||
|
</StepPanel>
|
||||||
|
</Content>
|
||||||
|
</Steps>
|
||||||
|
<Div Flex="Flex.JustifyContent.Center">
|
||||||
|
<Button Color="Color.Secondary" Margin="Margin.Is2.FromEnd" Clicked="() => stepsRef.PreviousStep()">
|
||||||
|
Назад
|
||||||
|
</Button>
|
||||||
|
<Button Color="Color.Primary" Clicked="clickSave">
|
||||||
|
@nextButton
|
||||||
|
</Button>
|
||||||
|
</Div>
|
||||||
|
</LoadingIndicator>
|
||||||
|
|
||||||
|
<Progress Visibility="@visibleProgress" Indeterminate />
|
||||||
|
|
||||||
@code {
|
@code {
|
||||||
|
bool visible, toastError = false;
|
||||||
|
|
||||||
|
Visibility visibleProgress = Visibility.Invisible;
|
||||||
|
|
||||||
private Steps stepsRef;
|
private Steps stepsRef;
|
||||||
private ObjectItems obj_item;
|
private ObjectItems obj_item;
|
||||||
private DeviceTypeItems type_item;
|
private DeviceTypeItems type_item;
|
||||||
private DeviceItems dev_item;
|
private DeviceItems dev_item;
|
||||||
|
|
||||||
private List<ObjectItems> list_obj = new();
|
private List<ObjectItems> list_obj = new(), _list_obj = new();
|
||||||
private List<DeviceTypeItems> list_type = new();
|
private List<DeviceTypeItems> list_type = new(), _list_type = new();
|
||||||
private static List<DeviceItems> list_dev = new();
|
private static List<DeviceItems> list_dev = new(), _list_dev = new();
|
||||||
private List<DeviceItems> list_switch = new();
|
private List<DeviceItems> _list_switch = new();
|
||||||
|
|
||||||
private string email, nextButton = "Далее";
|
private string email, nextButton = "Далее";
|
||||||
private string selectedStep = "1";
|
private string selectedStep = "1";
|
||||||
|
|
||||||
private int id_type, id_obj, id_dev, num_port;
|
private Guid id_type, id_obj, id_dev;
|
||||||
|
private int num_port;
|
||||||
private string obj_name, obj_desc;
|
private string obj_name, obj_desc;
|
||||||
private string type_name, type_desc;
|
private string type_name, type_desc;
|
||||||
|
private string error_msg, error_group;
|
||||||
private string dev_ip, dev_mac, dev_desc, dev_name, dev_loc;
|
private string dev_ip, dev_mac, dev_desc, dev_name, dev_loc;
|
||||||
|
|
||||||
|
protected override async Task OnInitializedAsync()
|
||||||
|
{
|
||||||
|
visible = true;
|
||||||
|
await AllPubData.GetAll();
|
||||||
|
list_type = AllPubData.ListDeviceTypeItems;
|
||||||
|
list_obj = AllPubData.ListObjectItems;
|
||||||
|
list_dev = AllPubData.ListDeviceItems;
|
||||||
|
visible = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private Task<bool> NavigationAllowed(StepNavigationContext context)
|
private Task<bool> NavigationAllowed(StepNavigationContext context)
|
||||||
{
|
{
|
||||||
@@ -265,50 +374,93 @@
|
|||||||
|
|
||||||
private void RefreshListSwitch()
|
private void RefreshListSwitch()
|
||||||
{
|
{
|
||||||
list_switch = list_dev.Where(s => s.DeviceType.Name.Contains("Switch")).ToList();
|
_list_switch = _list_dev.Where(s => s.DeviceType.Name.Contains("Switch")).ToList();
|
||||||
if (list_switch.Count == 0)
|
|
||||||
id_dev = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void AddNewObject()
|
private async void AddNewObject()
|
||||||
{
|
{
|
||||||
obj_item = new()
|
obj_item = new()
|
||||||
{
|
{
|
||||||
NameObject = obj_name,
|
Id = Guid.NewGuid(),
|
||||||
DescriptionObject = obj_desc,
|
NameObject = obj_name,
|
||||||
Id = list_obj.Count + 1
|
DescriptionObject = obj_desc,
|
||||||
};
|
};
|
||||||
list_obj.Add(obj_item);
|
_list_obj.Add(obj_item);
|
||||||
obj_name = string.Empty;
|
obj_name = string.Empty;
|
||||||
obj_desc = string.Empty;
|
obj_desc = string.Empty;
|
||||||
}
|
}
|
||||||
private void AddNewType()
|
private async void AddNewType()
|
||||||
{
|
{
|
||||||
type_item = new()
|
type_item = new()
|
||||||
{
|
{
|
||||||
|
Id = Guid.NewGuid(),
|
||||||
Name = type_name,
|
Name = type_name,
|
||||||
Description = type_desc,
|
Description = type_desc,
|
||||||
Id = list_type.Count + 1
|
|
||||||
};
|
};
|
||||||
list_type.Add(type_item);
|
_list_type.Add(type_item);
|
||||||
type_name = string.Empty;
|
type_name = string.Empty;
|
||||||
type_desc = string.Empty;
|
type_desc = string.Empty;
|
||||||
}
|
}
|
||||||
private void AddNewDev()
|
private async void AddNewDev()
|
||||||
{
|
{
|
||||||
dev_item = new()
|
dev_item = new()
|
||||||
|
{
|
||||||
|
Id = Guid.NewGuid(),
|
||||||
|
Ip = dev_ip,
|
||||||
|
Mac = dev_mac,
|
||||||
|
Description = dev_desc,
|
||||||
|
Name = dev_name,
|
||||||
|
Location = dev_loc,
|
||||||
|
DeviceType = _list_type.SingleOrDefault(t => t.Id == id_type),
|
||||||
|
DeviceObject = _list_obj.SingleOrDefault(o => o.Id == id_obj),
|
||||||
|
ConnectedToPortOnSwitch = num_port
|
||||||
|
};
|
||||||
|
_list_dev.Add(dev_item);
|
||||||
|
if (dev_item.DeviceType.Name.Contains("Switch")) _list_switch.Add(dev_item);
|
||||||
|
dev_ip = string.Empty;
|
||||||
|
dev_mac = string.Empty;
|
||||||
|
dev_desc = string.Empty;
|
||||||
|
dev_name = string.Empty;
|
||||||
|
dev_loc = string.Empty;
|
||||||
|
}
|
||||||
|
|
||||||
|
private async void clickSave()
|
||||||
|
{
|
||||||
|
if (nextButton == "Далее") stepsRef.NextStep();
|
||||||
|
else
|
||||||
|
{
|
||||||
|
visibleProgress = Visibility.Visible;
|
||||||
|
foreach (var item in _list_obj)
|
||||||
{
|
{
|
||||||
Id = list_type.Count + 1,
|
var p = await AllPubData.http.PostAsJsonAsync("api/Object/AddObject", item);
|
||||||
Ip = dev_ip,
|
if (!p.IsSuccessStatusCode)
|
||||||
Mac = dev_mac,
|
{
|
||||||
Description = dev_desc,
|
error_group = "ОБЪЕКТ";
|
||||||
Name = dev_name,
|
error_msg = $"{item.NameObject} не добавлено.\r\nСтатус код: {p.StatusCode}";
|
||||||
Location = dev_loc,
|
toastError = true;
|
||||||
DeviceType = list_type.SingleOrDefault(t => t.Id == id_type),
|
}
|
||||||
DeviceObject = list_obj.SingleOrDefault(o => o.Id == id_obj)
|
}
|
||||||
};
|
foreach (var item in _list_type)
|
||||||
list_dev.Add(dev_item);
|
{
|
||||||
type_name = string.Empty;
|
var p = await AllPubData.http.PostAsJsonAsync("api/Type/AddType", item);
|
||||||
type_desc = string.Empty;
|
if (!p.IsSuccessStatusCode)
|
||||||
|
{
|
||||||
|
error_group = "ТИП";
|
||||||
|
error_msg = $"{item.Name} не добавлено.\r\nСтатус код: {p.StatusCode}";
|
||||||
|
toastError = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
foreach (var item in _list_dev)
|
||||||
|
{
|
||||||
|
var p = await AllPubData.http.PostAsJsonAsync("api/Device/AddDevice", item);
|
||||||
|
if (!p.IsSuccessStatusCode)
|
||||||
|
{
|
||||||
|
error_group = "УСТРОЙСТВА";
|
||||||
|
error_msg = $"{item.Name} не добавлено.\r\nСтатус код: {p.StatusCode}";
|
||||||
|
toastError = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
visibleProgress = Visibility.Invisible;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user