Add FaceRecognition
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 10s

This commit is contained in:
2026-07-22 18:30:31 +03:00
parent 88d9b6861b
commit 081f368aa0
7 changed files with 1006 additions and 2 deletions
+4 -1
View File
@@ -29,7 +29,10 @@
<BarDropdownItem To="/setting/add_objects">Добавить объект</BarDropdownItem>
</BarDropdownMenu>
<BarDropdownMenu>
<BarDropdownItem To="/simple-datagrid">Simple DataGrid</BarDropdownItem>
<BarDropdownItem To="/setting/add_types">Добавить тип</BarDropdownItem>
</BarDropdownMenu>
<BarDropdownMenu>
<BarDropdownItem To="/setting/add_devs">Добавить устройство</BarDropdownItem>
</BarDropdownMenu>
</BarDropdown>
</BarItem>
+40 -1
View File
@@ -6,6 +6,36 @@
{
<p>Название: @_obj.NameObject</p>
<p>Количество устройств: @_devs.Count</p>
<Row>
<Dropdown>
<DropdownToggle Color="Color.Primary">
Тип устройства
</DropdownToggle>
<DropdownMenu>
@foreach (var item in AllPubData.ListDeviceTypeItems)
{
<DropdownItem Clicked="@(() => ChangeType(item.Id))">@item.Name</DropdownItem>
}
</DropdownMenu>
</Dropdown>
</Row>
<Row>
<Column ColumnSize="ColumnSize.Is2">
<ListGroup>
<ListGroupItem Color="Color.Dark">Dark</ListGroupItem>
<ListGroupItem Color="Color.Dark">Dark</ListGroupItem>
<ListGroupItem Color="Color.Dark">Dark</ListGroupItem>
<ListGroupItem Color="Color.Dark">Dark</ListGroupItem>
<ListGroupItem Color="Color.Dark">Dark</ListGroupItem>
<ListGroupItem Color="Color.Dark">Dark</ListGroupItem>
<ListGroupItem Color="Color.Dark">Dark</ListGroupItem>
<ListGroupItem Color="Color.Dark">Dark</ListGroupItem>
</ListGroup>
</Column>
</Row>
}
else
{
@@ -15,13 +45,22 @@ else
@code {
[Parameter]
public Guid Id { get; set; }
//public Guid IdType { get; set; }
private DeviceTypeItems? _SelectedType;
private ObjectItems? _obj;
private List<DeviceItems> _devs = new();
private List<DeviceItems> _show_devs = new();
protected override void OnInitialized()
{
_obj = AllPubData.ListObjectItems.FirstOrDefault(o => o.Id == Id);
_devs = AllPubData.ListDeviceItems.Where(d => d.DeviceObject == Id).ToList();
}
private void ChangeType(Guid id)
{
_SelectedType = AllPubData.ListDeviceTypeItems.First(t => t.Id == id);
_show_devs = _devs.Where(d => d.DeviceType == id).ToList();
}
}
@@ -0,0 +1,181 @@
@page "/setting/add_devs"
@using Visor.Models
@* @inject HttpClient Http *@
<LoadingIndicator Visible="@isLoading" FullScreen />
<Row Width="Width.Max100">
<Column ColumnSize="ColumnSize.Is10"></Column>
<Column ColumnSize="ColumnSize.Is2">
<Button Color="Color.Primary" Clicked="@ShowAddObjetc">
<Icon Name="IconName.Add" />
</Button>
<Button Color="Color.Primary" Clicked="@ShowAddObjetc">
<Icon Name="IconName.FileUpload" />
</Button>
<Button Color="Color.Primary" Outline Clicked="@ShowDelObjetc">
<Icon Name="IconName.Delete" />
</Button>
</Column>
</Row>
<Divider />
<Div>
@if (isLoading || listObjects is null)
{
<Paragraph>@MessagePages</Paragraph>
}
else if (listObjects != null && listObjects.Any())
{
<Table>
<TableHeader>
<TableRow>
<TableHeaderCell>Название</TableHeaderCell>
<TableHeaderCell>Описание</TableHeaderCell>
</TableRow>
</TableHeader>
<TableBody>
@foreach (var item in listObjects)
{
<TableRow>
<TableRowCell>@item.NameObject</TableRowCell>
<TableRowCell>@item.DescriptionObject</TableRowCell>
</TableRow>
}
</TableBody>
</Table>
}
else
{
<Alert Color="Color.Warning">@MessagePages</Alert>
<Paragraph>@MessagePages</Paragraph>
}
</Div>
@code {
private List<ObjectItems>? listObjects = AllPubData.ListObjectItems;
private Modal modalAdd;
private Modal modalDel;
private Guid select_id { get; set; }
private int id_object { get; set; }
private string name_object { get; set; }
private string decript_object { get; set; }
private HttpClient Http = AllPubData.http;
private string? MessagePages;
bool isLoading = true;
protected override async Task OnInitializedAsync()
{
listObjects = AllPubData.ListObjectItems;
if (listObjects.Count == 0)
MessagePages = "Нет данных";
isLoading = false;
}
private Task ShowAddObjetc()
{
id_object = listObjects.Count;
return modalAdd.Show();
}
private async Task AddObject()
{
var obj = new ObjectItems()
{
NameObject = name_object,
DescriptionObject = decript_object
};
var post = await Http.PostAsJsonAsync("api/Object/AddObject", obj);
if (post.IsSuccessStatusCode)
{
listObjects.Add(obj);
await modalAdd.Hide();
//await AllPubData.ReloadObject();
}
}
private Task ShowDelObjetc() => modalDel.Show();
private async Task DelObject()
{
var del = await Http.DeleteAsync($"api/Object/DelObject?id={select_id}");
if (del.IsSuccessStatusCode)
{
listObjects.Remove(listObjects.Where(i => i.Id == select_id).First());
await HideDelModal();
}
}
private Task HideAddModal() => modalAdd.Hide();
private Task HideDelModal() => modalDel.Hide();
}
<Modal @ref="modalAdd" Centered>
<ModalContent>
<ModalHeader>
<ModalTitle>Добавить объект</ModalTitle>
</ModalHeader>
<ModalBody>
@* <Addons>
<Addon AddonType="AddonType.Start">
<AddonLabel>Id</AddonLabel>
</Addon>
<Addon AddonType="AddonType.Body">
<NumericInput Disabled Placeholder="Номер объекта" @bind-Value="@id_object" />
</Addon>
</Addons> *@
<Addons>
<Addon AddonType="AddonType.Start">
<AddonLabel>Name</AddonLabel>
</Addon>
<Addon AddonType="AddonType.Body">
<TextInput @bind-Value="@name_object" Placeholder="Имя объекта" />
</Addon>
</Addons>
<Addons>
<Addon AddonType="AddonType.Start">
<AddonLabel>Описание</AddonLabel>
</Addon>
<Addon AddonType="AddonType.Body">
<TextInput Placeholder="Дополнительная информация" @bind-Value="@decript_object" />
</Addon>
</Addons>
<ModalFooter>
<Button Color="Color.Secondary" Clicked="@HideAddModal">Close</Button>
<Button Color="Color.Primary" Clicked="@AddObject">Добавить</Button>
</ModalFooter>
</ModalBody>
</ModalContent>
</Modal>
<Modal @ref="modalDel" Centered>
<ModalContent>
<ModalHeader>
<ModalTitle>Удалить объект</ModalTitle>
</ModalHeader>
<ModalBody>
<Addons>
<Addon AddonType="AddonType.Start">
<AddonLabel>Id</AddonLabel>
</Addon>
<Addon AddonType="AddonType.Body">
<Select @bind-Value="@select_id">
<SelectItem Value="9999">Объект</SelectItem>
@foreach (var item in listObjects)
{
<SelectItem Value="@item.Id">@item.NameObject</SelectItem>
}
</Select>
</Addon>
</Addons>
<ModalFooter>
<Button Color="Color.Secondary" Clicked="@HideDelModal">Close</Button>
<Button Color="Color.Primary" Clicked="@DelObject">Удалить</Button>
</ModalFooter>
</ModalBody>
</ModalContent>
</Modal>
@@ -0,0 +1,179 @@
@page "/setting/add_types"
@using Visor.Models
@* @inject HttpClient Http *@
<LoadingIndicator Visible="@isLoading" FullScreen />
<Row Width="Width.Max100">
<Column ColumnSize="ColumnSize.Is10"></Column>
<Column ColumnSize="ColumnSize.Is2">
<Button Color="Color.Primary" Clicked="@ShowAddObjetc">
<Icon Name="IconName.Add" />
</Button>
<Button Color="Color.Primary" Outline Clicked="@ShowDelObjetc">
<Icon Name="IconName.Delete" />
</Button>
</Column>
</Row>
<Divider />
<Div>
@if (isLoading || listObjects is null)
{
<Paragraph>@MessagePages</Paragraph>
}
else if (listObjects != null && listObjects.Any())
{
<Table>
<TableHeader>
<TableRow>
<TableHeaderCell>Название</TableHeaderCell>
<TableHeaderCell>Описание</TableHeaderCell>
</TableRow>
</TableHeader>
<TableBody>
@foreach (var item in listObjects)
{
<TableRow>
<TableRowCell>@item.NameObject</TableRowCell>
<TableRowCell>@item.DescriptionObject</TableRowCell>
</TableRow>
}
</TableBody>
</Table>
}
else
{
<Alert Color="Color.Warning">@MessagePages</Alert>
<Paragraph>@MessagePages</Paragraph>
}
</Div>
@code {
private List<ObjectItems>? listObjects = AllPubData.ListObjectItems;
private Modal modalAdd;
private Modal modalDel;
private Guid select_id { get; set; }
private int id_object { get; set; }
private string name_object { get; set; }
private string decript_object { get; set; }
private HttpClient Http = AllPubData.http;
private string? MessagePages;
bool isLoading = true;
protected override async Task OnInitializedAsync()
{
await AllPubData.GetObjects();
listObjects = AllPubData.ListObjectItems;
if (listObjects.Count == 0)
MessagePages = "Нет данных";
isLoading = false;
}
private Task ShowAddObjetc()
{
id_object = listObjects.Count;
return modalAdd.Show();
}
private async Task AddObject()
{
var obj = new ObjectItems()
{
NameObject = name_object,
DescriptionObject = decript_object
};
var post = await Http.PostAsJsonAsync("api/Object/AddObject", obj);
if (post.IsSuccessStatusCode)
{
listObjects.Add(obj);
await modalAdd.Hide();
//await AllPubData.ReloadObject();
}
}
private Task ShowDelObjetc() => modalDel.Show();
private async Task DelObject()
{
var del = await Http.DeleteAsync($"api/Object/DelObject?id={select_id}");
if (del.IsSuccessStatusCode)
{
listObjects.Remove(listObjects.Where(i => i.Id == select_id).First());
await HideDelModal();
}
}
private Task HideAddModal() => modalAdd.Hide();
private Task HideDelModal() => modalDel.Hide();
}
<Modal @ref="modalAdd" Centered>
<ModalContent>
<ModalHeader>
<ModalTitle>Добавить объект</ModalTitle>
</ModalHeader>
<ModalBody>
@* <Addons>
<Addon AddonType="AddonType.Start">
<AddonLabel>Id</AddonLabel>
</Addon>
<Addon AddonType="AddonType.Body">
<NumericInput Disabled Placeholder="Номер объекта" @bind-Value="@id_object" />
</Addon>
</Addons> *@
<Addons>
<Addon AddonType="AddonType.Start">
<AddonLabel>Name</AddonLabel>
</Addon>
<Addon AddonType="AddonType.Body">
<TextInput @bind-Value="@name_object" Placeholder="Имя объекта" />
</Addon>
</Addons>
<Addons>
<Addon AddonType="AddonType.Start">
<AddonLabel>Описание</AddonLabel>
</Addon>
<Addon AddonType="AddonType.Body">
<TextInput Placeholder="Дополнительная информация" @bind-Value="@decript_object" />
</Addon>
</Addons>
<ModalFooter>
<Button Color="Color.Secondary" Clicked="@HideAddModal">Close</Button>
<Button Color="Color.Primary" Clicked="@AddObject">Добавить</Button>
</ModalFooter>
</ModalBody>
</ModalContent>
</Modal>
<Modal @ref="modalDel" Centered>
<ModalContent>
<ModalHeader>
<ModalTitle>Удалить объект</ModalTitle>
</ModalHeader>
<ModalBody>
<Addons>
<Addon AddonType="AddonType.Start">
<AddonLabel>Id</AddonLabel>
</Addon>
<Addon AddonType="AddonType.Body">
<Select @bind-Value="@select_id">
<SelectItem Value="9999">Объект</SelectItem>
@foreach (var item in listObjects)
{
<SelectItem Value="@item.Id">@item.NameObject</SelectItem>
}
</Select>
</Addon>
</Addons>
<ModalFooter>
<Button Color="Color.Secondary" Clicked="@HideDelModal">Close</Button>
<Button Color="Color.Primary" Clicked="@DelObject">Удалить</Button>
</ModalFooter>
</ModalBody>
</ModalContent>
</Modal>