Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[TEMPLATE] Template.Simple needs additional testing and improvments #257

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
143 commits
Select commit Hold shift + click to select a range
43f7326
Create draft PR for #256
PTKu Oct 10, 2023
3d5eb8f
again paths, paths and paths.... :(
PTKu Oct 11, 2023
a6473ef
again paths, paths and paths.... :(
PTKu Oct 11, 2023
e2df51a
Merge branch 'dev' into 256-_TEMPLATE_Template_Simple_needs_additiona…
PTKu Oct 11, 2023
e55be8b
messenger and logger optimization
PTKu Oct 11, 2023
63aca23
performance improvements
PTKu Oct 11, 2023
918bae4
test fix where improper context mock implementation
PTKu Oct 11, 2023
198a88b
adjust template.simple config + additions
PTKu Oct 12, 2023
36b56a7
adjust template.simple config + additions
PTKu Oct 12, 2023
0f1cf68
_axoContext
Oct 12, 2023
f90f67a
THIS._context_ in inherrited object to _context_
Oct 12, 2023
62a7ef3
THIS.GetContext() work in tasks with property _context_
Oct 12, 2023
9f285a2
seq, axotask, axoobj
Oct 13, 2023
e7b35ea
sequncer init steps
Oct 13, 2023
a6030e3
getContextUnsafe()
Oct 13, 2023
18efe1a
ignore
Oct 13, 2023
cfbbbbf
adjusts to lates AX# update
PTKu Oct 16, 2023
27ae541
cylinder init when context is nulll
Oct 16, 2023
e8976dd
task execute optimalization
Oct 16, 2023
e9a6a83
cylinder init fix
Oct 16, 2023
758808d
axo task inline
Oct 16, 2023
a037150
axo task clean up
Oct 16, 2023
232efa3
updates to AX# 0.15.0-alpha.159
PTKu Oct 16, 2023
67f967c
Merge branch '256-_TEMPLATE_Template_Simple_needs_additional_testing_…
Oct 16, 2023
58fd17d
messanger on conditition
Oct 16, 2023
771ea31
AxoCylinder optimize
Oct 16, 2023
0e1e0f6
axo task status
Oct 17, 2023
99bf9ab
fix axotask
Oct 17, 2023
8b64196
sequencer optimalization
Oct 17, 2023
d84c916
sequncer cast
Oct 17, 2023
391bf81
var for opencycle count
Oct 17, 2023
b6798a5
step inline calls
Oct 17, 2023
dd26af9
fixing axostep
Oct 17, 2023
b8c14f4
AxoCylinder initialize only with AxoObject
Oct 18, 2023
199a443
investigation for cylinder speed up
Oct 18, 2023
e0d09f6
wip for synch
PTKu Oct 18, 2023
d00be49
Merge branch '256-_TEMPLATE_Template_Simple_needs_additional_testing_…
PTKu Oct 18, 2023
d518a1c
axo dataman performance opt.
Oct 18, 2023
ed30f5b
AxoDataman - go back
Oct 18, 2023
beae7d6
axodatatman optimized just object init
Oct 18, 2023
74d6d7d
axocomponent inlining
Oct 18, 2023
dffd9c0
AxoInsight optimalization - init of objects
Oct 18, 2023
e9ec7c6
axo messanger inline optimalization
Oct 18, 2023
4e8669d
fix cylinder app
Oct 18, 2023
ce6b864
serve clean
Oct 19, 2023
8ff88a9
sets dotnet to 7.0.402
Oct 19, 2023
c406d9f
Merge branch '256-_TEMPLATE_Template_Simple_needs_additional_testing_…
Oct 19, 2023
a805dab
Merge branch '256-_TEMPLATE_Template_Simple_needs_additional_testing_…
PTKu Oct 19, 2023
e9a8a07
updates ax# packages and remover -L due to apax 2
PTKu Oct 23, 2023
22b9610
fix an issue with string interpolation in remote task
PTKu Oct 23, 2023
6b20456
[wip] improvements to messaging add new UI
PTKu Oct 23, 2023
05e81e5
nesting depth reduction in data
PTKu Oct 23, 2023
cd37bcd
nesting depth redution in inspectors
PTKu Oct 23, 2023
67284f3
template simple refactoring
PTKu Oct 23, 2023
b5b9925
various asps
PTKu Oct 23, 2023
f4b4d37
additional fixies to axomessenger
PTKu Oct 23, 2023
6ec6034
asp
PTKu Oct 23, 2023
674b207
fixes an issue in log dequeue missing await
PTKu Oct 24, 2023
06a5d0e
fix some issues with data in template.simple
Oct 24, 2023
56a5096
Merge branch '256-_TEMPLATE_Template_Simple_needs_additional_testing_…
Oct 24, 2023
8eec1d7
additional visual improvement on AxoComponent and AxoMessenger details
Oct 24, 2023
cd08838
various template.simple additions
PTKu Oct 25, 2023
82b93da
add remote data handling for starer unit
Oct 25, 2023
dc3d33e
optimalization in Digital and Analog signals
Oct 25, 2023
550f572
adds guiding feature to templates
PTKu Oct 25, 2023
c8f2f07
Merge branch '256-_TEMPLATE_Template_Simple_needs_additional_testing_…
PTKu Oct 25, 2023
3cb83b7
asp
PTKu Oct 25, 2023
e5c9f1c
Create draft PR for #262
Brano5 Oct 25, 2023
8388ec5
Add Draggable project, with all component for draggable items
Brano5 Oct 25, 2023
7ea3763
Add readme
Brano5 Oct 25, 2023
54663c2
Using mongo repo
Oct 26, 2023
b30352a
mono ref in twin, init repo on server side
Oct 26, 2023
b44b4fb
add proj ref to server app
Oct 26, 2023
6ff84c6
entityData, UnitHeader, estations
Oct 26, 2023
8e66f17
unit process data
Oct 26, 2023
345ef78
snippets
Oct 26, 2023
2ebf483
Changes in Draggable - added more customizing option. Updated readme
Brano5 Oct 26, 2023
4db7c9d
context initialize entity repository
Oct 26, 2023
fe99446
unit template razor fix
Oct 26, 2023
acc5475
template service fix
Oct 26, 2023
87501b2
repository extension
Oct 27, 2023
e1fc31d
code tour
Oct 27, 2023
6e3df63
split settings and data
Oct 27, 2023
ecd2cdf
Unit tour
Oct 27, 2023
8c0240c
added technology data on plc side
Oct 27, 2023
44634a3
try to fix tech data
Oct 27, 2023
a575ff0
fix unit template service init
Oct 27, 2023
3fdf825
fix tour
Oct 30, 2023
1c1dec6
fix template services
Oct 30, 2023
19f6266
tech settings to navigation menu
Oct 30, 2023
19fe570
technology data view
Oct 30, 2023
61475e2
starter unit technology data
Oct 30, 2023
9a93d2d
technology data in ground and auto seq
Oct 30, 2023
3718e75
fix technology data in template.simple
PTKu Oct 31, 2023
67cd45f
Rename to VisualComposer.
Brano5 Nov 2, 2023
8b84d73
synch with visual composer
PTKu Nov 2, 2023
c570020
add visual composer to template
PTKu Nov 2, 2023
f462a6c
Unit object in unit
Nov 3, 2023
89400e6
Merge remote-tracking branch 'origin/256-and-visual-composer' into 25…
Nov 3, 2023
5045de1
UnitObject as a public class
Nov 3, 2023
802547b
Components member fix in Unit
Nov 3, 2023
2d8304a
UnitTemplate - init repositories, naming
Nov 3, 2023
4a66525
Added accordion in "Show all"
Brano5 Nov 3, 2023
4a02d2b
mybrandnewapplication
PTKu Nov 3, 2023
5332dc8
Merge branch 'dev' into 256-_TEMPLATE_Template_Simple_needs_additiona…
PTKu Nov 4, 2023
5cdb502
Merge branch 'dev' into 256-_TEMPLATE_Template_Simple_needs_additiona…
PTKu Nov 6, 2023
d35674d
checks for apax.yml existence in dirs
PTKu Nov 7, 2023
11ae78c
Merge branch '256-_TEMPLATE_Template_Simple_needs_additional_testing_…
PTKu Nov 7, 2023
e35731d
updates docfx
PTKu Nov 7, 2023
ad12b0f
Do not traverse the entire tree
Brano5 Nov 8, 2023
c2fad39
Chnage buttons visualization
Brano5 Nov 8, 2023
476cc3e
WIP
Brano5 Nov 8, 2023
c5b16aa
Container want a AxoObject, not child. Change way to render items.
Brano5 Nov 8, 2023
cba4969
Persistent data exchange (#268)
kuh0005 Nov 9, 2023
dea7103
fix and docu for persistent exchange
Nov 9, 2023
aa216b1
synch with dev
PTKu Nov 10, 2023
c71e264
Merge branch '256-_TEMPLATE_Template_Simple_needs_additional_testing_…
PTKu Nov 10, 2023
fce113f
added instance of persistent data to template
Nov 10, 2023
0194a5b
Merge branch '256-_TEMPLATE_Template_Simple_needs_additional_testing_…
Nov 10, 2023
584441b
Merge branch '256-_TEMPLATE_Template_Simple_needs_additional_testing_…
PTKu Nov 10, 2023
88fbb3e
Templates.Simple brief documentation
Nov 14, 2023
c2cc096
Merge branch 'dev' into 256-_TEMPLATE_Template_Simple_needs_additiona…
Nov 15, 2023
8e8b0a0
Refactoring.
Brano5 Nov 15, 2023
d5d6034
fix axoRemoteTask test
Nov 16, 2023
f0ff813
concurrent calls for persistent exchange
Nov 16, 2023
d11df2b
testing persistent data view
Nov 16, 2023
57bd57e
persistent attribute fix
Nov 20, 2023
c9f17af
persistent exchange - only concurent usage
Nov 20, 2023
7dc6dab
Tuning steps working with persisten data in ground
Nov 20, 2023
247da85
axosimple, Ground seqnce small adjustment
Nov 21, 2023
1dfb2e1
Merge branch 'dev' into 256-_TEMPLATE_Template_Simple_needs_additiona…
PTKu Nov 21, 2023
7f2489d
Merge branch 'dev' into 256-_TEMPLATE_Template_Simple_needs_additiona…
PTKu Nov 21, 2023
80886aa
Merge branch 'dev' into 262-_NEW-FEATURE_Add_feature_for_an_easily_cu…
PTKu Nov 21, 2023
dbe09ae
asp
PTKu Nov 21, 2023
ac50c36
alings template with recent changes
PTKu Nov 22, 2023
758e771
synch with visual composer
PTKu Nov 22, 2023
d9f7559
fix Usage of persistent call in unit.st
Nov 22, 2023
2a3cae7
Merge branch '256-_TEMPLATE_Template_Simple_needs_additional_testing_…
Nov 22, 2023
f879fa0
AxOpenData, documentation with usage
Nov 22, 2023
76ba1cd
Persistent ReadFromRepository using lethargic write to Controller
Nov 23, 2023
1431293
persistent readTest needs to fix dummy connector
Nov 23, 2023
5852a0c
fixing repository issue in template
Nov 23, 2023
e4f97d3
fixing namespace Ix.Repository
Nov 23, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion docfx/framework/toc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,7 @@ items:
- name: Inspectors
href: ../inspectors/docs/index.html
- name: Timers
href: ../timers/docs/index.html
href: ../timers/docs/index.html
- name: Application Template
href: ../templates.simple/docs/index.html

3 changes: 1 addition & 2 deletions src/base/src/AXOpen.Logging/AXOpen.Logging.Serilog.csproj
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>

<PropertyGroup>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@

<ItemGroup>
<ProjectReference Include="..\..\..\data\src\AXOpen.Data.Blazor\axopen_data_blazor.csproj" />
<ProjectReference Include="..\..\..\toolbox\src\AXOpen.ToolBox\AXOpen.ToolBox.csproj" />
</ItemGroup>

</Project>
25 changes: 25 additions & 0 deletions src/base/src/AXOpen.VisualComposer/AXOpen.VisualComposer.sln
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.5.002.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AXOpen.VisualComposer", "AXOpen.VisualComposer.csproj", "{691CAEAB-2761-415E-971F-39C4F48C175F}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{691CAEAB-2761-415E-971F-39C4F48C175F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{691CAEAB-2761-415E-971F-39C4F48C175F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{691CAEAB-2761-415E-971F-39C4F48C175F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{691CAEAB-2761-415E-971F-39C4F48C175F}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {0A82BB85-D037-40A6-B4B4-0821E6B304DF}
EndGlobalSection
EndGlobal
41 changes: 41 additions & 0 deletions src/base/src/AXOpen.VisualComposer/AccordionComponent.razor
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
@using AXSharp.Connector;

<div class="accordion-item">
<div class="accordion-header">
<div class="input-group flex-nowrap">
<button class="accordion-button collapsed py-2" type="button" data-bs-toggle="collapse" data-bs-target="#@AccordionContent.HumanReadable.Replace('.', '_')" aria-expanded="false" aria-controls="@AccordionContent.HumanReadable.Replace('.', '_')">
@AccordionContent.HumanReadable
</button>
<a class="text-decoration-none text-black p-2 align-self-center" style="cursor: pointer;" @onclick="() => Parent.AddChildren(AccordionContent)"><span class="bi bi-plus-lg" aria-hidden="true" /></a>
</div>
</div>
<div id="@AccordionContent.HumanReadable.Replace('.', '_')" class="accordion-collapse collapse">
<div class="accordion-body">
<ul class="list-group">
@foreach (var item in AccordionContent.GetChildren())
{
@if (!item.GetChildren().Any())
{
<li class="list-group-item d-flex">
<p class="mb-0">@item.HumanReadable</p>
<a class="ms-auto text-decoration-none text-black" style="cursor: pointer;" @onclick="() => Parent.AddChildren(item)"><span class="bi bi-plus-lg" aria-hidden="true" /></a>
</li>
}
else
{
<AccordionComponent AccordionContent="item" Parent="@Parent" />
}
}
</ul>
</div>
</div>
</div>


@code {
[Parameter]
public ITwinObject AccordionContent { get; set; }

[Parameter]
public VisualComposerContainer Parent { get; set; }
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,11 @@
{
internal class SerializableVisualComposerItem
{
public SerializableVisualComposerItem(string id, double ratioImgX, double ratioImgY, bool show, string transform, string presentation, double width, double height, int zIndex)
public SerializableVisualComposerItem(string id, double ratioImgX, double ratioImgY, string transform, string presentation, double width, double height, int zIndex)
{
Id = id;
RatioImgX = ratioImgX;
RatioImgY = ratioImgY;
Show = show;
Transform = transform;
Presentation = presentation;
Width = width;
Expand All @@ -18,7 +17,6 @@ public SerializableVisualComposerItem(string id, double ratioImgX, double ratioI
public string Id { get; set; }
public double RatioImgX { get; set; } = 10;
public double RatioImgY { get; set; } = 10;
public bool Show { get; set; } = false;
public string Transform { get; set; } = "TopCenter";
public string Presentation { get; set; } = "Status-Display";
public double Width { get; set; } = -1;
Expand Down
10 changes: 5 additions & 5 deletions src/base/src/AXOpen.VisualComposer/Serializing/Serialize.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@

namespace AXOpen.VisualComposer.Serializing
{
internal static class Serializing
internal static class Serializing<T>
{
internal static void Serialize(string filePath, List<SerializableVisualComposerItem> serialize)
internal static void Serialize(string filePath, List<T> serialize)
{
try
{
Expand All @@ -19,17 +19,17 @@ internal static void Serialize(string filePath, List<SerializableVisualComposerI
}
}

internal static List<SerializableVisualComposerItem>? Deserialize(string filePath)
internal static List<T>? Deserialize(string filePath)
{
if (!File.Exists(filePath))
return null;

List<SerializableVisualComposerItem>? deserialize = null;
List<T>? deserialize = null;
try
{
using (FileStream fs = File.OpenRead(filePath))
{
deserialize = JsonSerializer.Deserialize<List<SerializableVisualComposerItem>>(fs);
deserialize = JsonSerializer.Deserialize<List<T>>(fs);
}
}
catch (Exception ex)
Expand Down
174 changes: 145 additions & 29 deletions src/base/src/AXOpen.VisualComposer/VisualComposerContainer.razor
Original file line number Diff line number Diff line change
@@ -1,15 +1,39 @@
<AuthorizeView Roles="Administrator">
@using AXSharp.Connector;

<AuthorizeView Roles="Administrator">
<Authorized>
<div style="position: relative; width: 100%; height: 100%;" ondragover="event.preventDefault();">
<img id="@_imgId" src="@ImgSrc" style="width: 100%; height: 100%; object-fit: cover;" />
<CascadingValue Value="@this" Name="Parent" IsFixed="true">
<CascadingValue Value="@_imgId" Name="ImgId" IsFixed="true">
@ChildContent
@foreach (VisualComposerItem child in _children)
{
<VisualComposerItem Origin="@child" />
}
</CascadingValue>
</CascadingValue>

<button type="button" class="btn btn-primary" @onclick="Save">Save</button>
<button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#showAllModal-@Id">Show all</button>
<div class="dropdown">
<a class="position-absolute dropdown-toggle text-decoration-none text-black" style="left: 97%; top: 100%; translate: -100% -50%; cursor: pointer;" data-bs-toggle="dropdown" aria-expanded="false">
<span class="bi bi-pencil-square fs-4" aria-hidden="true" />
</a>
<ul class="dropdown-menu">
<li><a class="dropdown-item" data-bs-toggle="modal" data-bs-target="#showAllModal-@Id">Show all</a></li>
<li><a class="dropdown-item" data-bs-toggle="modal" data-bs-target="#showAllPrimitivesModal-@Id">Show all primitives</a></li>
<li><a class="dropdown-item" @onclick="() => Save()">Save as default</a></li>
<li><a class="dropdown-item" data-bs-toggle="modal" data-bs-target="#saveAsModal-@Id">Save as</a></li>
<li><a class="dropdown-item" data-bs-toggle="modal" data-bs-target="#removeModal-@Id">Remove</a></li>
</ul>
</div>

<div class="position-absolute" style="left: 90%; top: 100%; translate: -100% -50%;">
<select class="form-select w-auto" @onchange="(ChangeEventArgs args) => Load(args.Value.ToString())">
@foreach (var item in GetAllFiles())
{
<option value="@item" selected="@((item == "Default") ? "selected" : null)">@item</option>
}
</select>
</div>
</div>

<div class="modal fade" id="showAllModal-@Id" tabindex="-1" aria-hidden="true">
Expand All @@ -20,34 +44,123 @@
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body justify-content-center">
<div class="row align-items-center">
<p class="col-8 text-end">Name</p>
<p class="col-4">Show</p>
<div class="row mb-2">
<div class="col-sm-10">
<input type="text" class="form-control" placeholder="Search" @bind="SearchValue">
</div>
<button type="button" class="btn btn-primary col-sm me-3" @onclick="() => Search()">Search</button>
</div>
@foreach (var child in _children)

@if (SearchValue is null || SearchResult is null)
{
<div class="row align-items-center">
<label class="form-check-label col-8 text-end" for="@(child.Id)">@child.Id</label>
<input class="form-check-input col-4 ms-1" type="checkbox" id="@(child.Id)" checked="@(child.Show ? "checked" : null)" @onclick="() => Check(child)">
@*<div class="col-2 ms-1 d-inline-block">
<input type="text" class="form-control" placeholder="Presentation" @bind="child.Presentation">
<select class="form-select" value="@child.Presentation.ToString()" @onchange="@((args) => @child.Presentation = PresentationType.FromString((string)args.Value))">
@foreach (var presentation in PresentationType.AllTypes)
{
<option data value="@presentation.ToString()">@presentation.ToString()</option>
}
</select>
</div>
<div class="col-2 ms-1 d-inline-block">
<select class="form-select" value="@child.Transform.ToString()" @onchange="@((args) => @child.Transform = TransformType.FromString((string)args.Value))">
@foreach (var transform in TransformType.AllTypes)
{
<option data value="@transform.ToString()">@transform.ToString()</option>
}
</select>
</div>*@
<div class="accordion" id="accordionExample">
@foreach (var item in AxoObject.GetChildren())
{
<AccordionComponent AccordionContent="@item" Parent="@this" />
}
</div>
}
else
{
<ul class="list-group">
@foreach (var item in SearchResult)
{
<li class="list-group-item d-flex">
<p class="mb-0">@item.HumanReadable</p>
<a class="ms-auto text-decoration-none text-black" style="cursor: pointer;" @onclick="() => AddChildren(item)"><span class="bi bi-plus-lg" aria-hidden="true" /></a>
</li>
}
</ul>
}
</div>
</div>
</div>
</div>

<div class="modal fade" id="showAllPrimitivesModal-@Id" tabindex="-1" aria-hidden="true">
<div class="modal-dialog modal-xl modal-dialog-centered modal-dialog-scrollable">
<div class="modal-content">
<div class="modal-header">
<h1 class="modal-title fs-5" id="alarmsviewTitle">All primitives</h1>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body justify-content-center">
<div class="row mb-2">
<div class="col-sm-10">
<input type="text" class="form-control" placeholder="Search" @bind="SearchValuePrimitive">
</div>
<button type="button" class="btn btn-primary col-sm me-3" @onclick="() => SearchPrimitive()">Search</button>
</div>

@if (SearchValuePrimitive is null || SearchResultPrimitive is null)
{
<ul class="list-group">
@foreach (var item in AxoObject.RetrievePrimitives())
{
<li class="list-group-item d-flex">
<p class="mb-0">@item.HumanReadable</p>
<a class="ms-auto text-decoration-none text-black" style="cursor: pointer;" @onclick="() => AddChildren(item)"><span class="bi bi-plus-lg" aria-hidden="true" /></a>
</li>
}
</ul>
}
else
{
<ul class="list-group">
@foreach (var item in SearchResultPrimitive)
{
<li class="list-group-item d-flex">
<p class="mb-0">@item.HumanReadable</p>
<a class="ms-auto text-decoration-none text-black" style="cursor: pointer;" @onclick="() => AddChildren(item)"><span class="bi bi-plus-lg" aria-hidden="true" /></a>
</li>
}
</ul>
}
</div>
</div>
</div>
</div>

<div class="modal fade" id="saveAsModal-@Id" tabindex="-1" aria-hidden="true">
<div class="modal-dialog modal-lg modal-dialog-centered modal-dialog-scrollable">
<div class="modal-content">
<div class="modal-header">
<h1 class="modal-title fs-5" id="alarmsviewTitle">Save as</h1>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body justify-content-center">
<div class="row">
<label class="col-sm-2 col-form-label">File name</label>
<div class="col-sm-10">
<input type="text" class="form-control" placeholder="File name" @bind="FileName">
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary" data-bs-dismiss="modal" @onclick="() => Save(FileName)">Save</button>
</div>
</div>
</div>
</div>

<div class="modal fade" id="removeModal-@Id" tabindex="-1" aria-hidden="true">
<div class="modal-dialog modal-lg modal-dialog-centered modal-dialog-scrollable">
<div class="modal-content">
<div class="modal-header">
<h1 class="modal-title fs-5" id="alarmsviewTitle">Remove template</h1>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body justify-content-center">
<ul class="list-group">
@foreach (var item in GetAllFiles())
{
<li class="list-group-item d-flex">
<p class="mb-0">@item</p>
<a class="ms-auto text-decoration-none text-black" style="cursor: pointer;" @onclick="() => Remove(item)"><span class="bi bi-trash fs-5" aria-hidden="true" /></a>
</li>
}
</ul>
</div>
</div>
</div>
Expand All @@ -58,7 +171,10 @@
<img id="@_imgId" src="@ImgSrc" style="width: 100%; height: 100%; object-fit: cover;" />
<CascadingValue Value="@this" Name="Parent" IsFixed="true">
<CascadingValue Value="@_imgId" Name="ImgId" IsFixed="true">
@ChildContent
@foreach (VisualComposerItem child in _children)
{
<VisualComposerItem Origin="@child" />
}
</CascadingValue>
</CascadingValue>
</div>
Expand Down
Loading