.
+-->
+@inherits BaseLocalizedComponent
+
+@inject IStringLocalizer
_validationMessageLocalizer
+
+@if (ValidationResult.Status == ValidationStatus.Error)
+{
+
+ @foreach (var message in ValidationResult.ValidationMessages)
+ {
+ @message.GetMessageLocalized(_validationMessageLocalizer)
+ }
+
+}
+
+@code {
+ [EditorRequired]
+ [Parameter]
+ public ValidationResult ValidationResult { get; set; }
+}
diff --git a/AudioCuesheetEditor/Shared/ViewModes/ViewModeImport.razor b/AudioCuesheetEditor/Shared/ViewModes/ViewModeImport.razor
index 8cd09948..da6f1522 100644
--- a/AudioCuesheetEditor/Shared/ViewModes/ViewModeImport.razor
+++ b/AudioCuesheetEditor/Shared/ViewModes/ViewModeImport.razor
@@ -24,7 +24,7 @@ along with Foobar. If not, see
@if (IsAnalyzed == false)
{
-
+
@@ -40,9 +40,9 @@ else
OnClick="ImportData" />
-
+
-
+
@@ -53,8 +53,8 @@ else
}
@code {
- string? importText;
- Boolean fapMenuOpened = false;
+ string? _importText;
+ Boolean _fapMenuOpened = false;
public Boolean IsAnalyzed
{
@@ -77,8 +77,8 @@ else
void ImportTextChanged(string? newImportText)
{
- importText = newImportText;
- _importManager.ImportData(importText);
+ _importText = newImportText;
+ _importManager.ImportData(_importText);
}
async Task Analyze()
@@ -125,7 +125,7 @@ else
{
if (_sessionStateContainer.Importfile?.FileType == ImportFileType.Textfile)
{
- importText = _sessionStateContainer.Importfile.FileContent;
+ _importText = _sessionStateContainer.Importfile.FileContent;
StateHasChanged();
}
});
diff --git a/AudioCuesheetEditor/_Imports.razor b/AudioCuesheetEditor/_Imports.razor
index 41555c08..d815267e 100644
--- a/AudioCuesheetEditor/_Imports.razor
+++ b/AudioCuesheetEditor/_Imports.razor
@@ -22,6 +22,7 @@
@using AudioCuesheetEditor.Shared.Audio
@using AudioCuesheetEditor.Shared.Record
@using AudioCuesheetEditor.Shared.Export
+@using AudioCuesheetEditor.Shared.Validation
@using AudioCuesheetEditor.Model.AudioCuesheet
@using AudioCuesheetEditor.Model.IO
@using AudioCuesheetEditor.Model.IO.Export
diff --git a/AudioCuesheetEditor/wwwroot/scripts/library.js b/AudioCuesheetEditor/wwwroot/scripts/library.js
index 1e376797..364ddfc9 100644
--- a/AudioCuesheetEditor/wwwroot/scripts/library.js
+++ b/AudioCuesheetEditor/wwwroot/scripts/library.js
@@ -1,36 +1,22 @@
window.addEventListener('beforeunload', beforeunload);
-window._audioObjectURLCache = {};
-window.getObjectURLFromMudFileUpload = function (inputOrFieldId) {
- if (window._audioObjectURLCache[inputOrFieldId]) {
- return window._audioObjectURLCache[inputOrFieldId];
- }
+window.getObjectURLFromMudFileUpload = function (fileInputId) {
- let inputElem = inputOrFieldId;
- if (typeof inputOrFieldId === "string") {
- inputElem = document.getElementById(inputOrFieldId) ||
- document.querySelector(`input[identifier="${inputOrFieldId}"]`) ||
- document.querySelector(`input[id="${inputOrFieldId}"]`);
- }
+ const inputElem = document.getElementById(fileInputId) ||
+ document.querySelector(`input[identifier="${fileInputId}"]`) ||
+ document.querySelector(`input[id="${fileInputId}"]`);
const files = inputElem.files;
for (let i = 0; i < files.length; i++) {
- const f = files[i];
- if (f && f.type && f.type.startsWith("audio/")) {
- const newObjectURL = URL.createObjectURL(f);
- window._audioObjectURLCache[inputOrFieldId] = newObjectURL;
- return newObjectURL;
+ const file = files[i];
+ if (file && file.type && file.type.startsWith("audio/")) {
+ return URL.createObjectURL(file);
}
}
return null;
};
window.revokeAudioObjectURL = function (objectUrl) {
- Object.keys(window._audioObjectURLCache).forEach(key => {
- if (window._audioObjectURLCache[key] === objectUrl) {
- delete window._audioObjectURLCache[key];
- }
- });
URL.revokeObjectURL(objectUrl);
};