mirror of
https://github.com/frosch95/K8sFileBrowser.git
synced 2026-04-11 21:08:22 +02:00
Compare commits
1 Commits
v0.0.6-alp
...
v0.0.7-alp
| Author | SHA1 | Date | |
|---|---|---|---|
| b26cc0e984 |
@@ -9,7 +9,7 @@
|
|||||||
<Configurations>Debug;Release</Configurations>
|
<Configurations>Debug;Release</Configurations>
|
||||||
<Platforms>AnyCPU</Platforms>
|
<Platforms>AnyCPU</Platforms>
|
||||||
<ApplicationIcon>Assets/app.ico</ApplicationIcon>
|
<ApplicationIcon>Assets/app.ico</ApplicationIcon>
|
||||||
<Version>0.0.3</Version>
|
<Version>0.0.7</Version>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
|
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
|
||||||
<DefineConstants>TRACE</DefineConstants>
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
|
|||||||
@@ -6,10 +6,18 @@ public class FileInformation
|
|||||||
{
|
{
|
||||||
public string Parent { get; set; } = string.Empty;
|
public string Parent { get; set; } = string.Empty;
|
||||||
public FileType Type { get; set; } = FileType.File;
|
public FileType Type { get; set; } = FileType.File;
|
||||||
public string DisplayName => Parent.Length < 2 ? Name[Parent.Length..] : Name[( Parent.Length + 1)..];
|
public string DisplayName
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (".." == Name) return "..";
|
||||||
|
return Parent.Length < 2 ? Name[Parent.Length..] : Name[(Parent.Length + 1)..];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public string Name { get; set; } = string.Empty;
|
public string Name { get; set; } = string.Empty;
|
||||||
public string Size { get; set; } = string.Empty;
|
public string Size { get; set; } = string.Empty;
|
||||||
public DateTimeOffset Date { get; set; } = DateTimeOffset.MinValue;
|
public DateTimeOffset? Date { get; set; }
|
||||||
|
|
||||||
public bool IsFile => Type == FileType.File;
|
public bool IsFile => Type == FileType.File;
|
||||||
public bool IsDirectory => Type == FileType.Directory;
|
public bool IsDirectory => Type == FileType.Directory;
|
||||||
|
|||||||
@@ -141,7 +141,7 @@ public class MainWindowViewModel : ViewModelBase
|
|||||||
this.WhenAnyValue(c => c.SelectedPod, c => c.SelectedNamespace)
|
this.WhenAnyValue(c => c.SelectedPod, c => c.SelectedNamespace)
|
||||||
.Throttle(new TimeSpan(10))
|
.Throttle(new TimeSpan(10))
|
||||||
.ObserveOn(RxApp.TaskpoolScheduler)
|
.ObserveOn(RxApp.TaskpoolScheduler)
|
||||||
.Subscribe(x => SelectedPath = "/");
|
.Subscribe(_ => SelectedPath = "/");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void RegisterReadContainers()
|
private void RegisterReadContainers()
|
||||||
@@ -170,8 +170,7 @@ public class MainWindowViewModel : ViewModelBase
|
|||||||
.Throttle(new TimeSpan(10))
|
.Throttle(new TimeSpan(10))
|
||||||
.Select(x => x.Item3 == null || x.Item2 == null || x.Item1 == null || x.Item4 == null
|
.Select(x => x.Item3 == null || x.Item2 == null || x.Item1 == null || x.Item4 == null
|
||||||
? new List<FileInformation>()
|
? new List<FileInformation>()
|
||||||
: kubernetesService.GetFiles(x.Item3!.Name, x.Item2!.Name, x.Item4!.Name,
|
: GetFileInformation(kubernetesService, x.Item1, x.Item2, x.Item3, x.Item4))
|
||||||
x.Item1))
|
|
||||||
.ObserveOn(RxApp.MainThreadScheduler)
|
.ObserveOn(RxApp.MainThreadScheduler)
|
||||||
.ToProperty(this, x => x.FileInformation);
|
.ToProperty(this, x => x.FileInformation);
|
||||||
}
|
}
|
||||||
@@ -182,7 +181,7 @@ public class MainWindowViewModel : ViewModelBase
|
|||||||
_pods = this
|
_pods = this
|
||||||
.WhenAnyValue(c => c.SelectedNamespace)
|
.WhenAnyValue(c => c.SelectedNamespace)
|
||||||
.Throttle(new TimeSpan(10))
|
.Throttle(new TimeSpan(10))
|
||||||
.SelectMany(ns => GetPodsForNamespace.Execute(ns))
|
.SelectMany(ns => GetPodsForNamespace.Execute(ns!))
|
||||||
.ObserveOn(RxApp.MainThreadScheduler)
|
.ObserveOn(RxApp.MainThreadScheduler)
|
||||||
.ToProperty(this, x => x.Pods);
|
.ToProperty(this, x => x.Pods);
|
||||||
}
|
}
|
||||||
@@ -283,7 +282,13 @@ public class MainWindowViewModel : ViewModelBase
|
|||||||
.WhenAnyValue(x => x.SelectedFile, x => x.Message.IsVisible)
|
.WhenAnyValue(x => x.SelectedFile, x => x.Message.IsVisible)
|
||||||
.Select(x => x is { Item1.Type: FileType.Directory, Item2: false });
|
.Select(x => x is { Item1.Type: FileType.Directory, Item2: false });
|
||||||
|
|
||||||
OpenCommand = ReactiveCommand.Create(() => { SelectedPath = SelectedFile != null ? SelectedFile!.Name : "/"; },
|
OpenCommand = ReactiveCommand.Create(() =>
|
||||||
|
{
|
||||||
|
if (".." == SelectedFile?.Name)
|
||||||
|
SelectedPath = SelectedFile?.Parent;
|
||||||
|
else
|
||||||
|
SelectedPath = SelectedFile != null ? SelectedFile!.Name : "/";
|
||||||
|
},
|
||||||
isDirectory, RxApp.MainThreadScheduler);
|
isDirectory, RxApp.MainThreadScheduler);
|
||||||
|
|
||||||
OpenCommand.ThrownExceptions.ObserveOn(RxApp.MainThreadScheduler)
|
OpenCommand.ThrownExceptions.ObserveOn(RxApp.MainThreadScheduler)
|
||||||
@@ -306,7 +311,7 @@ public class MainWindowViewModel : ViewModelBase
|
|||||||
{
|
{
|
||||||
ShowWorkingMessage("Switching context...");
|
ShowWorkingMessage("Switching context...");
|
||||||
Namespaces = new List<Namespace>();
|
Namespaces = new List<Namespace>();
|
||||||
kubernetesService.SwitchClusterContext(context!);
|
kubernetesService.SwitchClusterContext(context);
|
||||||
var namespaces = await kubernetesService.GetNamespacesAsync();
|
var namespaces = await kubernetesService.GetNamespacesAsync();
|
||||||
HideWorkingMessage();
|
HideWorkingMessage();
|
||||||
return namespaces;
|
return namespaces;
|
||||||
@@ -320,6 +325,30 @@ public class MainWindowViewModel : ViewModelBase
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private IList<FileInformation> GetFileInformation(IKubernetesService kubernetesService,
|
||||||
|
string path, Pod pod, Namespace nameSpace, Container container)
|
||||||
|
{
|
||||||
|
var kubernetesFileInformation = kubernetesService.GetFiles(
|
||||||
|
nameSpace.Name, pod.Name, container.Name, path);
|
||||||
|
|
||||||
|
// when the path is root, we don't want to show the parent directory
|
||||||
|
if (SelectedPath is not { Length: > 1 }) return kubernetesFileInformation;
|
||||||
|
|
||||||
|
// add the parent directory
|
||||||
|
var parent = SelectedPath[..SelectedPath.LastIndexOf('/')];
|
||||||
|
if (string.IsNullOrEmpty(parent))
|
||||||
|
{
|
||||||
|
parent = "/";
|
||||||
|
}
|
||||||
|
|
||||||
|
return kubernetesFileInformation.Prepend(new FileInformation
|
||||||
|
{
|
||||||
|
Name = "..",
|
||||||
|
Type = FileType.Directory,
|
||||||
|
Parent = parent
|
||||||
|
}).ToList();
|
||||||
|
}
|
||||||
|
|
||||||
private void ShowWorkingMessage(string message)
|
private void ShowWorkingMessage(string message)
|
||||||
{
|
{
|
||||||
Message = new Message
|
Message = new Message
|
||||||
|
|||||||
Reference in New Issue
Block a user