@page "/design/templates"
@page "/design/templates/{TemplateIdParam:int}"
@using ScadaLink.Security
@using ScadaLink.Commons.Entities.Templates
@using ScadaLink.Commons.Interfaces.Repositories
@using ScadaLink.Commons.Types.Enums
@using ScadaLink.TemplateEngine
@using ScadaLink.TemplateEngine.Validation
@using ScadaLink.TemplateEngine.Flattening
@attribute [Authorize(Policy = AuthorizationPolicies.RequireDesign)]
@inject ITemplateEngineRepository TemplateEngineRepository
@inject TemplateService TemplateService
@inject AuthenticationStateProvider AuthStateProvider
@inject NavigationManager NavigationManager
@if (_loading)
{
}
else if (_errorMessage != null)
{
@_errorMessage
}
else if (_selectedTemplate == null)
{
@* Template list view *@
Templates
@node.Template.Name
@if (node.Template.ParentTemplateId.HasValue)
{
inherits @(_templates.FirstOrDefault(t => t.Id == node.Template.ParentTemplateId)?.Name)
}
@if (!string.IsNullOrEmpty(node.Template.Description))
{
@node.Template.Description
}
@node.Template.Attributes.Count attr, @node.Template.Alarms.Count alm, @node.Template.Scripts.Count scr
@if (node.Template.Compositions.Count > 0)
{
@node.Template.Compositions.Count comp
}
No templates. Create one to get started.
}
else
{
@* Template detail/edit view *@
@_selectedTemplate.Name
@if (_selectedTemplate.ParentTemplateId.HasValue)
{
inherits @(_templates.FirstOrDefault(t => t.Id == _selectedTemplate.ParentTemplateId)?.Name)
}
@* Validation results *@
@if (_validationResult != null)
{
@if (_validationResult.Errors.Count > 0)
{
Validation Errors (@_validationResult.Errors.Count)
@foreach (var err in _validationResult.Errors)
{
- [@err.Category] @err.Message @(err.EntityName != null ? $"({err.EntityName})" : "")
}
}
@if (_validationResult.Warnings.Count > 0)
{
Warnings (@_validationResult.Warnings.Count)
@foreach (var warn in _validationResult.Warnings)
{
- [@warn.Category] @warn.Message
}
}
@if (_validationResult.Errors.Count == 0 && _validationResult.Warnings.Count == 0)
{
Validation passed with no errors or warnings.
}
}
@* Template info edit *@
@* Tabs: Attributes, Alarms, Scripts, Compositions *@
-
-
-
-
@if (_activeTab == "attributes")
{
@RenderAttributesTab()
}
else if (_activeTab == "alarms")
{
@RenderAlarmsTab()
}
else if (_activeTab == "scripts")
{
@RenderScriptsTab()
}
else if (_activeTab == "compositions")
{
@RenderCompositionsTab()
}
}
@code {
private async Task