Added local file information view

This commit is contained in:
Thorsten Sommer 2025-01-23 09:42:30 +01:00
parent 094daedee1
commit e9b6bd8e67
Signed by: tsommer
GPG Key ID: 371BBA77A02C0108
6 changed files with 161 additions and 11 deletions

View File

@ -1,4 +1,3 @@
@using AIStudio.Settings
@using AIStudio.Settings.DataModel @using AIStudio.Settings.DataModel
@inherits SettingsPanelBase @inherits SettingsPanelBase
@ -37,12 +36,7 @@
<MudTd>@this.GetEmbeddingName(context)</MudTd> <MudTd>@this.GetEmbeddingName(context)</MudTd>
<MudTd Style="text-align: left;"> <MudTd Style="text-align: left;">
@if (context is IERIDataSource) <MudIconButton Variant="Variant.Filled" Color="Color.Info" Icon="@Icons.Material.Filled.Info" Class="ma-2" OnClick="() => this.ShowInformation(context)"/>
{
@* <MudButton Variant="Variant.Filled" Color="Color.Info" StartIcon="@Icons.Material.Filled.Info" Class="ma-2" OnClick="() => this.ShowInformation(context)"> *@
@* Show Information *@
@* </MudButton> *@
}
<MudButton Variant="Variant.Filled" Color="Color.Info" StartIcon="@Icons.Material.Filled.Edit" Class="ma-2" OnClick="() => this.EditDataSource(context)"> <MudButton Variant="Variant.Filled" Color="Color.Info" StartIcon="@Icons.Material.Filled.Edit" Class="ma-2" OnClick="() => this.EditDataSource(context)">
Edit Edit
</MudButton> </MudButton>

View File

@ -216,10 +216,19 @@ public partial class SettingsPanelDataSources : SettingsPanelBase
} }
} }
private Task ShowInformation(IDataSource dataSource) private async Task ShowInformation(IDataSource dataSource)
{ {
#warning Implement the information dialog for ERI data sources. switch (dataSource)
return Task.CompletedTask; {
case DataSourceLocalFile localFile:
var localFileDialogParameters = new DialogParameters<DataSourceLocalFileInfoDialog>
{
{ x => x.DataSource, localFile },
};
await this.DialogService.ShowAsync<DataSourceLocalFileInfoDialog>("Local File Data Source Information", localFileDialogParameters, DialogOptions.FULLSCREEN);
break;
}
} }
private async Task UpdateDataSources() private async Task UpdateDataSources()

View File

@ -0,0 +1,97 @@
<MudDialog>
<DialogContent>
<MudStack Row="@true">
<MudTextField
T="string"
ReadOnly="@true"
Label="Data source name"
Text="@this.DataSource.Name"
Variant="Variant.Outlined"
Margin="Margin.Dense"
Adornment="Adornment.Start"
AdornmentIcon="@Icons.Material.Filled.Tag"/>
<MudTooltip Text="Copy the data source name to the clipboard">
<MudIconButton Icon="@Icons.Material.Filled.ContentCopy" OnClick="@(() => this.CopyToClipboard(this.DataSource.Name))"/>
</MudTooltip>
</MudStack>
<MudStack Row="@true">
<MudTextField
T="string"
ReadOnly="@true"
Label="File path"
Text="@this.DataSource.FilePath"
Variant="Variant.Outlined"
Margin="Margin.Dense"
Adornment="Adornment.Start"
AdornmentIcon="@Icons.Material.Filled.FolderOpen"/>
<MudTooltip Text="Copy this path to the clipboard">
<MudIconButton Icon="@Icons.Material.Filled.ContentCopy" OnClick="@(() => this.CopyToClipboard(this.DataSource.FilePath))"/>
</MudTooltip>
</MudStack>
@if (!this.IsFileAvailable)
{
<MudJustifiedText Typo="Typo.body1" Color="Color.Error" Class="mb-3">
The file chosen for the data source does not exist anymore. Please edit the data source and choose another file or correct the path.
</MudJustifiedText>
}
else
{
<MudJustifiedText Typo="Typo.body1" Color="Color.Tertiary" Class="mb-3">
The file chosen for the data source exists.
</MudJustifiedText>
}
<MudStack Row="@true">
<MudTextField
T="string"
ReadOnly="@true"
Label="Embedding name"
Text="@this.embeddingProvider.Name"
Variant="Variant.Outlined"
Margin="Margin.Dense"
Adornment="Adornment.Start"
AdornmentIcon="@Icons.Material.Filled.Layers"/>
<MudTooltip Text="Copy the embedding name to the clipboard">
<MudIconButton Icon="@Icons.Material.Filled.ContentCopy" OnClick="@(() => this.CopyToClipboard(this.embeddingProvider.Name))"/>
</MudTooltip>
</MudStack>
@if (this.IsCloudEmbedding)
{
<MudJustifiedText Typo="Typo.body1" Color="Color.Error" Class="mb-3">
The embedding runs in the cloud. All your data within the
file '@this.DataSource.FilePath' will be sent to the cloud.
</MudJustifiedText>
}
else
{
<MudJustifiedText Typo="Typo.body1" Color="Color.Tertiary" Class="mb-3">
The embedding runs locally or in your organization. Your data is not sent to the cloud.
</MudJustifiedText>
}
<MudStack Row="@true">
<MudTextField
T="string"
ReadOnly="@true"
Label="File size"
Text="@this.FileSize"
Variant="Variant.Outlined"
Margin="Margin.Dense"
Adornment="Adornment.Start"
AdornmentIcon="@Icons.Material.Filled.SquareFoot"/>
<MudTooltip Text="Copy the file size to the clipboard">
<MudIconButton Icon="@Icons.Material.Filled.ContentCopy" OnClick="@(() => this.CopyToClipboard(this.FileSize))"/>
</MudTooltip>
</MudStack>
</DialogContent>
<DialogActions>
<MudButton OnClick="@this.Close" Variant="Variant.Filled">Close</MudButton>
</DialogActions>
</MudDialog>

View File

@ -0,0 +1,48 @@
using AIStudio.Settings;
using AIStudio.Settings.DataModel;
using Microsoft.AspNetCore.Components;
namespace AIStudio.Dialogs;
public partial class DataSourceLocalFileInfoDialog : ComponentBase
{
[CascadingParameter]
private MudDialogInstance MudDialog { get; set; } = null!;
[Parameter]
public DataSourceLocalFile DataSource { get; set; }
[Inject]
private RustService RustService { get; init; } = null!;
[Inject]
private ISnackbar Snackbar { get; init; } = null!;
[Inject]
private SettingsManager SettingsManager { get; init; } = null!;
#region Overrides of ComponentBase
protected override async Task OnInitializedAsync()
{
this.embeddingProvider = this.SettingsManager.ConfigurationData.EmbeddingProviders.FirstOrDefault(x => x.Id == this.DataSource.EmbeddingId);
this.fileInfo = new FileInfo(this.DataSource.FilePath);
await base.OnInitializedAsync();
}
#endregion
private EmbeddingProvider embeddingProvider;
private FileInfo fileInfo = null!;
private bool IsCloudEmbedding => !this.embeddingProvider.IsSelfHosted;
private bool IsFileAvailable => this.fileInfo.Exists;
private string FileSize => this.fileInfo.FileSize();
private async Task CopyToClipboard(string content) => await this.RustService.CopyText2Clipboard(this.Snackbar, content);
private void Close() => this.MudDialog.Close();
}

View File

@ -210,6 +210,6 @@
"type": "Project" "type": "Project"
} }
}, },
"net8.0/osx-x64": {} "net8.0/osx-arm64": {}
} }
} }

View File

@ -0,0 +1,2 @@
# v0.9.28, build 203 (2025-0x-xx xx:xx UTC)
- Added an information view to all data sources to the data source configuration page. The data source configuration is a preview feature behind the RAG feature flag.