mirror of
https://github.com/MindWorkAI/AI-Studio.git
synced 2025-07-28 01:22:56 +00:00
replaced strings with i18n fallbacks and finalized sse handling
This commit is contained in:
parent
32b43bbd04
commit
2c646aa2f0
@ -1648,6 +1648,18 @@ UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::PROFILESELECTION::T918741365"] = "You can
|
|||||||
-- Provider
|
-- Provider
|
||||||
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::PROVIDERSELECTION::T900237532"] = "Provider"
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::PROVIDERSELECTION::T900237532"] = "Provider"
|
||||||
|
|
||||||
|
-- Images are not supported yet
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::READFILECONTENT::T298062956"] = "Images are not supported yet"
|
||||||
|
|
||||||
|
-- Use file content as input
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::READFILECONTENT::T3499386973"] = "Use file content as input"
|
||||||
|
|
||||||
|
-- Select file to read its content
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::READFILECONTENT::T354817589"] = "Select file to read its content"
|
||||||
|
|
||||||
|
-- Executables are not allowed
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::READFILECONTENT::T4167762413"] = "Executables are not allowed"
|
||||||
|
|
||||||
-- Use PDF content as input
|
-- Use PDF content as input
|
||||||
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::READPDFCONTENT::T2849276709"] = "Use PDF content as input"
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::READPDFCONTENT::T2849276709"] = "Use PDF content as input"
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
@inherits MSGComponentBase
|
@inherits MSGComponentBase
|
||||||
<MudButton StartIcon="@Icons.Material.Filled.Description" OnClick="async () => await this.SelectFile()" Variant="Variant.Filled" Class="mb-3">
|
<MudButton StartIcon="@Icons.Material.Filled.Description" OnClick="async () => await this.SelectFile()" Variant="Variant.Filled" Class="mb-3">
|
||||||
Use PDF content as input"
|
@T("Use file content as input")
|
||||||
</MudButton>
|
</MudButton>
|
@ -18,7 +18,7 @@ public partial class ReadFileContent : MSGComponentBase
|
|||||||
|
|
||||||
private async Task SelectFile()
|
private async Task SelectFile()
|
||||||
{
|
{
|
||||||
var selectedFile = await this.RustService.SelectFile("Select Text file");
|
var selectedFile = await this.RustService.SelectFile(T("Select file to read its content"));
|
||||||
if (selectedFile.UserCancelled)
|
if (selectedFile.UserCancelled)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@ -29,13 +29,13 @@ public partial class ReadFileContent : MSGComponentBase
|
|||||||
|
|
||||||
if (Array.Exists(FileTypeFilter.Executables.FilterExtensions, x => x.Equals(ext, StringComparison.OrdinalIgnoreCase)))
|
if (Array.Exists(FileTypeFilter.Executables.FilterExtensions, x => x.Equals(ext, StringComparison.OrdinalIgnoreCase)))
|
||||||
{
|
{
|
||||||
await MessageBus.INSTANCE.SendError(new(@Icons.Material.Filled.AppBlocking, "Executables are not allowed"));
|
await MessageBus.INSTANCE.SendError(new(Icons.Material.Filled.AppBlocking, T("Executables are not allowed")));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Array.Exists(FileTypeFilter.AllImages.FilterExtensions, x => x.Equals(ext, StringComparison.OrdinalIgnoreCase)))
|
if (Array.Exists(FileTypeFilter.AllImages.FilterExtensions, x => x.Equals(ext, StringComparison.OrdinalIgnoreCase)))
|
||||||
{
|
{
|
||||||
await MessageBus.INSTANCE.SendWarning(new(@Icons.Material.Filled.ImageNotSupported, "Images are not supported yet"));
|
await MessageBus.INSTANCE.SendWarning(new(Icons.Material.Filled.ImageNotSupported, T("Images are not supported yet")));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1650,6 +1650,12 @@ UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::PROFILESELECTION::T918741365"] = "You can
|
|||||||
-- Provider
|
-- Provider
|
||||||
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::PROVIDERSELECTION::T900237532"] = "Provider"
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::PROVIDERSELECTION::T900237532"] = "Provider"
|
||||||
|
|
||||||
|
-- Use PDF content as input
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::READFILECONTENT::T2849276709"] = "Use PDF content as input"
|
||||||
|
|
||||||
|
-- Executables are not allowed
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::READFILECONTENT::T4167762413"] = "Executables are not allowed"
|
||||||
|
|
||||||
-- Use PDF content as input
|
-- Use PDF content as input
|
||||||
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::READPDFCONTENT::T2849276709"] = "Use PDF content as input"
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::READPDFCONTENT::T2849276709"] = "Use PDF content as input"
|
||||||
|
|
||||||
@ -5481,6 +5487,9 @@ UI_TEXT_CONTENT["AISTUDIO::TOOLS::RAG::RAGPROCESSES::AISRCSELWITHRETCTXVAL::T304
|
|||||||
-- AI-based data source selection with AI retrieval context validation
|
-- AI-based data source selection with AI retrieval context validation
|
||||||
UI_TEXT_CONTENT["AISTUDIO::TOOLS::RAG::RAGPROCESSES::AISRCSELWITHRETCTXVAL::T3775725978"] = "AI-based data source selection with AI retrieval context validation"
|
UI_TEXT_CONTENT["AISTUDIO::TOOLS::RAG::RAGPROCESSES::AISRCSELWITHRETCTXVAL::T3775725978"] = "AI-based data source selection with AI retrieval context validation"
|
||||||
|
|
||||||
|
-- Executable Files
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::TOOLS::RUST::FILETYPEFILTER::T2217313358"] = "Executable Files"
|
||||||
|
|
||||||
-- PDF Files
|
-- PDF Files
|
||||||
UI_TEXT_CONTENT["AISTUDIO::TOOLS::RUST::FILETYPEFILTER::T3108466742"] = "PDF Files"
|
UI_TEXT_CONTENT["AISTUDIO::TOOLS::RUST::FILETYPEFILTER::T3108466742"] = "PDF Files"
|
||||||
|
|
||||||
|
@ -53,7 +53,7 @@ public sealed partial class RustService
|
|||||||
eventCount++;
|
eventCount++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (JsonException) { resultBuilder.AppendLine(); }
|
catch (JsonException) { resultBuilder.Append(string.Empty); }
|
||||||
|
|
||||||
}
|
}
|
||||||
var result = resultBuilder.ToString();
|
var result = resultBuilder.ToString();
|
||||||
|
@ -7,6 +7,7 @@ namespace AIStudio.Tools;
|
|||||||
public static class SseHandler
|
public static class SseHandler
|
||||||
{
|
{
|
||||||
private static readonly ConcurrentDictionary<string, List<PptxImageData>> PPTX_IMAGES = new();
|
private static readonly ConcurrentDictionary<string, List<PptxImageData>> PPTX_IMAGES = new();
|
||||||
|
private static int CURRENT_SLIDE_NUMBER;
|
||||||
|
|
||||||
public static async Task<string> ProcessEventAsync(SseEvent? sseEvent, bool extractImages = true)
|
public static async Task<string> ProcessEventAsync(SseEvent? sseEvent, bool extractImages = true)
|
||||||
{
|
{
|
||||||
@ -25,14 +26,14 @@ public static class SseHandler
|
|||||||
|
|
||||||
case PdfMetadata pdfMetadata:
|
case PdfMetadata pdfMetadata:
|
||||||
var pageNumber = pdfMetadata.Pdf?.PageNumber ?? 0;
|
var pageNumber = pdfMetadata.Pdf?.PageNumber ?? 0;
|
||||||
result.AppendLine($"[Page {pageNumber}]:\n{sseEvent.Content}");
|
result.AppendLine($"# Page {pageNumber}\n{sseEvent.Content}");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SpreadsheetMetadata spreadsheetMetadata:
|
case SpreadsheetMetadata spreadsheetMetadata:
|
||||||
var sheetName = spreadsheetMetadata.Spreadsheet?.SheetName;
|
var sheetName = spreadsheetMetadata.Spreadsheet?.SheetName;
|
||||||
var rowNumber = spreadsheetMetadata.Spreadsheet?.RowNumber;
|
var rowNumber = spreadsheetMetadata.Spreadsheet?.RowNumber;
|
||||||
|
|
||||||
if (rowNumber == 1) { result.AppendLine($"\n{sheetName}:"); }
|
if (rowNumber == 1) { result.AppendLine($"\n# {sheetName}"); }
|
||||||
|
|
||||||
result.AppendLine($"{sseEvent.Content}");
|
result.AppendLine($"{sseEvent.Content}");
|
||||||
break;
|
break;
|
||||||
@ -48,13 +49,17 @@ public static class SseHandler
|
|||||||
case PresentationMetadata presentationMetadata:
|
case PresentationMetadata presentationMetadata:
|
||||||
var slideNumber = presentationMetadata.Presentation?.SlideNumber ?? 0;
|
var slideNumber = presentationMetadata.Presentation?.SlideNumber ?? 0;
|
||||||
var image = presentationMetadata.Presentation?.Image ?? null;
|
var image = presentationMetadata.Presentation?.Image ?? null;
|
||||||
result.AppendLine($"{sseEvent.Content}");
|
|
||||||
|
if (slideNumber != CURRENT_SLIDE_NUMBER) { result.AppendLine($"# Slide {slideNumber}"); }
|
||||||
|
result.Append($"{sseEvent.Content}");
|
||||||
|
|
||||||
if (image != null)
|
if (image != null)
|
||||||
{
|
{
|
||||||
var isEnd = ProcessImageSegment(image);
|
var isEnd = ProcessImageSegment(image);
|
||||||
if (isEnd && extractImages) { result.AppendLine(BuildImage(image.Id!)); }
|
if (isEnd && extractImages) { result.AppendLine(BuildImage(image.Id!)); }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CURRENT_SLIDE_NUMBER = slideNumber;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@ -64,11 +69,11 @@ public static class SseHandler
|
|||||||
}
|
}
|
||||||
else if (!string.IsNullOrEmpty(sseEvent.Content))
|
else if (!string.IsNullOrEmpty(sseEvent.Content))
|
||||||
{
|
{
|
||||||
result.AppendLine(sseEvent.Content);
|
result.Append(sseEvent.Content);
|
||||||
}
|
}
|
||||||
else if (string.IsNullOrEmpty(sseEvent.Content))
|
else if (string.IsNullOrEmpty(sseEvent.Content))
|
||||||
{
|
{
|
||||||
result.AppendLine();
|
result.Append(string.Empty);
|
||||||
}
|
}
|
||||||
|
|
||||||
await Task.CompletedTask;
|
await Task.CompletedTask;
|
||||||
|
Loading…
Reference in New Issue
Block a user