Compare commits
2 Commits
admin-host
...
identifica
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2acea08ced | ||
| 49f6c9484e |
@@ -36,7 +36,10 @@ else if (_equipment.Count > 0)
|
|||||||
<td>@e.SAPID</td>
|
<td>@e.SAPID</td>
|
||||||
<td>@e.Manufacturer / @e.Model</td>
|
<td>@e.Manufacturer / @e.Model</td>
|
||||||
<td>@e.SerialNumber</td>
|
<td>@e.SerialNumber</td>
|
||||||
<td><button class="btn btn-sm btn-outline-danger" @onclick="() => DeleteAsync(e.EquipmentRowId)">Remove</button></td>
|
<td>
|
||||||
|
<button class="btn btn-sm btn-outline-secondary me-1" @onclick="() => StartEdit(e)">Edit</button>
|
||||||
|
<button class="btn btn-sm btn-outline-danger" @onclick="() => DeleteAsync(e.EquipmentRowId)">Remove</button>
|
||||||
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
}
|
}
|
||||||
</tbody>
|
</tbody>
|
||||||
@@ -47,8 +50,8 @@ else if (_equipment.Count > 0)
|
|||||||
{
|
{
|
||||||
<div class="card mt-3">
|
<div class="card mt-3">
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<h5>New equipment</h5>
|
<h5>@(_editMode ? "Edit equipment" : "New equipment")</h5>
|
||||||
<EditForm Model="_draft" OnValidSubmit="SaveAsync" FormName="new-equipment">
|
<EditForm Model="_draft" OnValidSubmit="SaveAsync" FormName="equipment-form">
|
||||||
<DataAnnotationsValidator/>
|
<DataAnnotationsValidator/>
|
||||||
<div class="row g-3">
|
<div class="row g-3">
|
||||||
<div class="col-md-4">
|
<div class="col-md-4">
|
||||||
@@ -78,24 +81,13 @@ else if (_equipment.Count > 0)
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<h6 class="mt-4">OPC 40010 Identification</h6>
|
<IdentificationFields Equipment="_draft"/>
|
||||||
<div class="row g-3">
|
|
||||||
<div class="col-md-4"><label class="form-label">Manufacturer</label><InputText @bind-Value="_draft.Manufacturer" class="form-control"/></div>
|
|
||||||
<div class="col-md-4"><label class="form-label">Model</label><InputText @bind-Value="_draft.Model" class="form-control"/></div>
|
|
||||||
<div class="col-md-4"><label class="form-label">Serial number</label><InputText @bind-Value="_draft.SerialNumber" class="form-control"/></div>
|
|
||||||
<div class="col-md-4"><label class="form-label">Hardware rev</label><InputText @bind-Value="_draft.HardwareRevision" class="form-control"/></div>
|
|
||||||
<div class="col-md-4"><label class="form-label">Software rev</label><InputText @bind-Value="_draft.SoftwareRevision" class="form-control"/></div>
|
|
||||||
<div class="col-md-4">
|
|
||||||
<label class="form-label">Year of construction</label>
|
|
||||||
<InputNumber @bind-Value="_draft.YearOfConstruction" class="form-control"/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
@if (_error is not null) { <div class="alert alert-danger mt-3">@_error</div> }
|
@if (_error is not null) { <div class="alert alert-danger mt-3">@_error</div> }
|
||||||
|
|
||||||
<div class="mt-3">
|
<div class="mt-3">
|
||||||
<button type="submit" class="btn btn-primary btn-sm">Save</button>
|
<button type="submit" class="btn btn-primary btn-sm">Save</button>
|
||||||
<button type="button" class="btn btn-secondary btn-sm ms-2" @onclick="() => _showForm = false">Cancel</button>
|
<button type="button" class="btn btn-secondary btn-sm ms-2" @onclick="Cancel">Cancel</button>
|
||||||
</div>
|
</div>
|
||||||
</EditForm>
|
</EditForm>
|
||||||
</div>
|
</div>
|
||||||
@@ -106,6 +98,7 @@ else if (_equipment.Count > 0)
|
|||||||
[Parameter] public long GenerationId { get; set; }
|
[Parameter] public long GenerationId { get; set; }
|
||||||
private List<Equipment>? _equipment;
|
private List<Equipment>? _equipment;
|
||||||
private bool _showForm;
|
private bool _showForm;
|
||||||
|
private bool _editMode;
|
||||||
private Equipment _draft = NewBlankDraft();
|
private Equipment _draft = NewBlankDraft();
|
||||||
private string? _error;
|
private string? _error;
|
||||||
|
|
||||||
@@ -125,20 +118,68 @@ else if (_equipment.Count > 0)
|
|||||||
private void StartAdd()
|
private void StartAdd()
|
||||||
{
|
{
|
||||||
_draft = NewBlankDraft();
|
_draft = NewBlankDraft();
|
||||||
|
_editMode = false;
|
||||||
_error = null;
|
_error = null;
|
||||||
_showForm = true;
|
_showForm = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void StartEdit(Equipment row)
|
||||||
|
{
|
||||||
|
// Shallow-clone so Cancel doesn't mutate the list-displayed row with in-flight form edits.
|
||||||
|
_draft = new Equipment
|
||||||
|
{
|
||||||
|
EquipmentRowId = row.EquipmentRowId,
|
||||||
|
GenerationId = row.GenerationId,
|
||||||
|
EquipmentId = row.EquipmentId,
|
||||||
|
EquipmentUuid = row.EquipmentUuid,
|
||||||
|
DriverInstanceId = row.DriverInstanceId,
|
||||||
|
DeviceId = row.DeviceId,
|
||||||
|
UnsLineId = row.UnsLineId,
|
||||||
|
Name = row.Name,
|
||||||
|
MachineCode = row.MachineCode,
|
||||||
|
ZTag = row.ZTag,
|
||||||
|
SAPID = row.SAPID,
|
||||||
|
Manufacturer = row.Manufacturer,
|
||||||
|
Model = row.Model,
|
||||||
|
SerialNumber = row.SerialNumber,
|
||||||
|
HardwareRevision = row.HardwareRevision,
|
||||||
|
SoftwareRevision = row.SoftwareRevision,
|
||||||
|
YearOfConstruction = row.YearOfConstruction,
|
||||||
|
AssetLocation = row.AssetLocation,
|
||||||
|
ManufacturerUri = row.ManufacturerUri,
|
||||||
|
DeviceManualUri = row.DeviceManualUri,
|
||||||
|
EquipmentClassRef = row.EquipmentClassRef,
|
||||||
|
Enabled = row.Enabled,
|
||||||
|
};
|
||||||
|
_editMode = true;
|
||||||
|
_error = null;
|
||||||
|
_showForm = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Cancel()
|
||||||
|
{
|
||||||
|
_showForm = false;
|
||||||
|
_editMode = false;
|
||||||
|
}
|
||||||
|
|
||||||
private async Task SaveAsync()
|
private async Task SaveAsync()
|
||||||
{
|
{
|
||||||
_error = null;
|
_error = null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (_editMode)
|
||||||
|
{
|
||||||
|
await EquipmentSvc.UpdateAsync(_draft, CancellationToken.None);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
_draft.EquipmentUuid = Guid.NewGuid();
|
_draft.EquipmentUuid = Guid.NewGuid();
|
||||||
_draft.EquipmentId = DraftValidator.DeriveEquipmentId(_draft.EquipmentUuid);
|
_draft.EquipmentId = DraftValidator.DeriveEquipmentId(_draft.EquipmentUuid);
|
||||||
_draft.GenerationId = GenerationId;
|
_draft.GenerationId = GenerationId;
|
||||||
try
|
|
||||||
{
|
|
||||||
await EquipmentSvc.CreateAsync(GenerationId, _draft, CancellationToken.None);
|
await EquipmentSvc.CreateAsync(GenerationId, _draft, CancellationToken.None);
|
||||||
|
}
|
||||||
_showForm = false;
|
_showForm = false;
|
||||||
|
_editMode = false;
|
||||||
await ReloadAsync();
|
await ReloadAsync();
|
||||||
}
|
}
|
||||||
catch (Exception ex) { _error = ex.Message; }
|
catch (Exception ex) { _error = ex.Message; }
|
||||||
|
|||||||
@@ -0,0 +1,49 @@
|
|||||||
|
@using ZB.MOM.WW.OtOpcUa.Configuration.Entities
|
||||||
|
|
||||||
|
@* Reusable OPC 40010 Machinery Identification editor. Binds to an Equipment row and renders the
|
||||||
|
nine decision #139 fields in a consistent 3-column Bootstrap grid. Used by EquipmentTab's
|
||||||
|
create + edit forms so the same UI renders regardless of which flow opened it. *@
|
||||||
|
|
||||||
|
<h6 class="mt-4">OPC 40010 Identification</h6>
|
||||||
|
<div class="row g-3">
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label class="form-label">Manufacturer</label>
|
||||||
|
<InputText @bind-Value="Equipment!.Manufacturer" class="form-control"/>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label class="form-label">Model</label>
|
||||||
|
<InputText @bind-Value="Equipment!.Model" class="form-control"/>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label class="form-label">Serial number</label>
|
||||||
|
<InputText @bind-Value="Equipment!.SerialNumber" class="form-control"/>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label class="form-label">Hardware rev</label>
|
||||||
|
<InputText @bind-Value="Equipment!.HardwareRevision" class="form-control"/>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label class="form-label">Software rev</label>
|
||||||
|
<InputText @bind-Value="Equipment!.SoftwareRevision" class="form-control"/>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label class="form-label">Year of construction</label>
|
||||||
|
<InputNumber @bind-Value="Equipment!.YearOfConstruction" class="form-control"/>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label class="form-label">Asset location</label>
|
||||||
|
<InputText @bind-Value="Equipment!.AssetLocation" class="form-control"/>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label class="form-label">Manufacturer URI</label>
|
||||||
|
<InputText @bind-Value="Equipment!.ManufacturerUri" class="form-control" placeholder="https://…"/>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label class="form-label">Device manual URI</label>
|
||||||
|
<InputText @bind-Value="Equipment!.DeviceManualUri" class="form-control" placeholder="https://…"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@code {
|
||||||
|
[Parameter, EditorRequired] public Equipment? Equipment { get; set; }
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user