@@ -365,4 +411,48 @@
}
_actionInProgress = false;
}
+
+ // Create instance form
+ private bool _showCreateForm;
+ private string _createName = string.Empty;
+ private int _createTemplateId;
+ private int _createSiteId;
+ private string? _createError;
+
+ private void ShowCreateForm()
+ {
+ _createName = string.Empty;
+ _createTemplateId = 0;
+ _createSiteId = 0;
+ _createError = null;
+ _showCreateForm = true;
+ }
+
+ private async Task CreateInstance()
+ {
+ _createError = null;
+ if (string.IsNullOrWhiteSpace(_createName)) { _createError = "Instance name is required."; return; }
+ if (_createTemplateId == 0) { _createError = "Select a template."; return; }
+ if (_createSiteId == 0) { _createError = "Select a site."; return; }
+
+ try
+ {
+ var result = await InstanceService.CreateInstanceAsync(
+ _createName.Trim(), _createTemplateId, _createSiteId, null, "system");
+ if (result.IsSuccess)
+ {
+ _showCreateForm = false;
+ _toast.ShowSuccess($"Instance '{_createName}' created.");
+ await LoadDataAsync();
+ }
+ else
+ {
+ _createError = result.Error;
+ }
+ }
+ catch (Exception ex)
+ {
+ _createError = $"Create failed: {ex.Message}";
+ }
+ }
}
diff --git a/src/ScadaLink.CentralUI/Components/Pages/Login.razor b/src/ScadaLink.CentralUI/Components/Pages/Login.razor
index 4e30c6f..774c8fe 100644
--- a/src/ScadaLink.CentralUI/Components/Pages/Login.razor
+++ b/src/ScadaLink.CentralUI/Components/Pages/Login.razor
@@ -12,7 +12,7 @@