Skip to content

Commit 58de0a5

Browse files
committed
feat: 增加 HikVision 组件
1 parent fa5e369 commit 58de0a5

5 files changed

Lines changed: 290 additions & 68 deletions

File tree

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
@namespace BootstrapBlazor.Components
2+
@inherits BootstrapModuleComponentBase
3+
4+
<div @attributes="AdditionalAttributes" class="@ClassString" id="@Id">
5+
<div id="@PreviewId" class="bb-hik-preview" style="width: 500px; height: 300px;"></div>
6+
<div class="bb-hik-controls">
7+
<button class="btn btn-primary bb-hik-login">
8+
<span>登录</span>
9+
</button>
10+
<button class="btn btn-primary bb-hik-logout">
11+
<span>退出</span>
12+
</button>
13+
<button class="btn btn-primary bb-hik-start">
14+
<span>开始预览</span>
15+
</button>
16+
<button class="btn btn-primary bb-hik-stop">
17+
<span>停止预览</span>
18+
</button>
19+
</div>
20+
</div>
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
// Copyright (c) BootstrapBlazor & Argo Zhang (argo@live.ca). All rights reserved.
2+
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
3+
// Website: https://www.blazor.zone or https://argozhang.github.io/
4+
5+
namespace BootstrapBlazor.Components;
6+
7+
/// <summary>
8+
/// 海康威视网络摄像机组件
9+
/// </summary>
10+
[JSModuleAutoLoader("./_content/BootstrapBlazor.HikVision/Components/HikVision.razor.js")]
11+
public partial class HikVision
12+
{
13+
private string PreviewId => $"{Id}_preview";
14+
15+
private string? ClassString => CssBuilder.Default("bb-hik")
16+
.AddClassFromAttributes(AdditionalAttributes)
17+
.Build();
18+
}
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
import { init as initVision, login, logout, startRealPlay, stopRealPlay, dispose as disposeVision } from '../hikvision.js';
2+
import EventHandler from '../../BootstrapBlazor/modules/event-handler.js';
3+
4+
export async function init(id) {
5+
const el = document.getElementById(id);
6+
if (el === null) {
7+
return;
8+
}
9+
10+
const previewId = `${id}_preview`;
11+
await initVision(previewId);
12+
13+
const controls = el.querySelector('.bb-hik-controls');
14+
if (controls) {
15+
EventHandler.on(controls, 'click', '.bb-hik-login', async e => {
16+
console.log('login');
17+
await login(previewId, '47.121.113.151', 9980, 'admin', 'vhbn8888', 1)
18+
});
19+
EventHandler.on(controls, 'click', '.bb-hik-logout', e => {
20+
console.log('logout');
21+
logout(previewId);
22+
});
23+
EventHandler.on(controls, 'click', '.bb-hik-start', e => {
24+
console.log('start');
25+
startRealPlay(previewId);
26+
});
27+
EventHandler.on(controls, 'click', '.bb-hik-stop', e => {
28+
console.log('stop');
29+
stopRealPlay(previewId);
30+
});
31+
}
32+
}
33+
34+
export function dispose(id) {
35+
const el = document.getElementById(id);
36+
if (el !== null) {
37+
const controls = el.querySelector('.bb-hik-controls');
38+
if (controls) {
39+
EventHandler.off(controls, 'click');
40+
}
41+
}
42+
43+
const previewId = `${id}_preview`;
44+
disposeVision(previewId);
45+
}

0 commit comments

Comments
 (0)