better roadmap ui (#963)

* ага

* вопросы?

* финалочка

* 2

* последний мув
This commit is contained in:
Babaev 2024-12-29 21:53:22 +06:00 committed by GitHub
parent 580ff8f537
commit ec084fb5b0
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 219 additions and 50 deletions

View file

@ -163,6 +163,7 @@ namespace Content.Client.Stylesheets
public const string StyleClassCrossButtonRed = "CrossButtonRed";
public const string StyleClassButtonColorRed = "ButtonColorRed";
public const string StyleClassButtonColorGreen = "ButtonColorGreen";
public const string StyleClassNoStyle = "NoStyle"; // Sunrise-Edit
public static readonly Color ChatBackgroundColor = Color.FromHex("#25252ADD");
@ -1722,7 +1723,19 @@ namespace Content.Client.Stylesheets
new[]
{
new StyleProperty(TextureButton.StylePropertyTexture, resCache.GetTexture("/Textures/Interface/Bwoink/un_pinned.png"))
})
}),
// Sunrise-Edit
Element<Button>().Class(StyleClassNoStyle)
.Prop(Button.StylePropertyStyleBox, new StyleBoxFlat
{
BackgroundColor = Color.Transparent,
ContentMarginLeftOverride = 15,
ContentMarginRightOverride = 15,
ContentMarginTopOverride = 12,
ContentMarginBottomOverride = 12
}),
// Sunrise-Edit
}).ToList());
}
}

View file

@ -1,8 +1,109 @@
<Control xmlns="https://spacestation14.io">
<ScrollContainer>
<Control xmlns="https://spacestation14.io"
xmlns:controls="clr-namespace:Content.Client.UserInterface.Controls"
xmlns:gfx="clr-namespace:Robust.Client.Graphics;assembly=Robust.Client">
<PanelContainer>
<PanelContainer.PanelOverride>
<gfx:StyleBoxFlat
BackgroundColor="#1b1a1f"
ContentMarginLeftOverride="10"
ContentMarginRightOverride="10"/>
</PanelContainer.PanelOverride>
<BoxContainer Orientation="Vertical">
<RichTextLabel Name="Header" Access="Public" Margin="0 15 0 10" />
<BoxContainer Name="Versions" Access="Public" Orientation="Horizontal"/>
<RichTextLabel Name="Header"
Access="Public"
StyleClasses="LabelBigger"
Margin="0 15 0 10" />
<PanelContainer MinHeight="1">
<PanelContainer.PanelOverride>
<gfx:StyleBoxFlat BackgroundColor="#ffffff"/>
</PanelContainer.PanelOverride>
</PanelContainer>
<BoxContainer Orientation="Horizontal"
HorizontalExpand="True"
VerticalExpand="True"
Margin="0 10 0 10"
SeparationOverride="0">
<!-- 2024 Column -->
<BoxContainer Name="Column2024"
Access="Public"
Orientation="Vertical"
HorizontalExpand="True"
VerticalExpand="True"
Margin="0 0 10 0">
<Label Text="2024"
StyleClasses="LabelHeadingBigger"
HorizontalAlignment="Center"
HorizontalExpand="True"
FontColorOverride="#ffffff"
Margin="0 0 0 10"/>
<ScrollContainer VerticalExpand="True"
HScrollEnabled="False"
MinHeight="400">
<BoxContainer Name="Items2024"
Access="Public"
Orientation="Vertical"
Margin="0 0 10 0"/>
</ScrollContainer>
</BoxContainer>
<PanelContainer MinWidth="1" Margin="0 0 10 0" VerticalExpand="True">
<PanelContainer.PanelOverride>
<gfx:StyleBoxFlat
BackgroundColor="#2a292f"/>
</PanelContainer.PanelOverride>
</PanelContainer>
<!-- 2025 Column -->
<BoxContainer Name="Column2025"
Access="Public"
Orientation="Vertical"
HorizontalExpand="True"
VerticalExpand="True"
Margin="0 0 10 0">
<Label Text="2025"
StyleClasses="LabelHeadingBigger"
HorizontalAlignment="Center"
HorizontalExpand="True"
FontColorOverride="#ffffff"
Margin="0 0 0 10"/>
<ScrollContainer VerticalExpand="True"
HScrollEnabled="False"
MinHeight="400">
<BoxContainer Name="Items2025"
Access="Public"
Orientation="Vertical"
Margin="0 0 10 0"/>
</ScrollContainer>
</BoxContainer>
<PanelContainer MinWidth="1" Margin="0 0 10 0" VerticalExpand="True">
<PanelContainer.PanelOverride>
<gfx:StyleBoxFlat
BackgroundColor="#2a292f"/>
</PanelContainer.PanelOverride>
</PanelContainer>
<!-- 2026 Column -->
<BoxContainer Name="Column2026"
Access="Public"
Orientation="Vertical"
HorizontalExpand="True"
VerticalExpand="True">
<Label Text="2026"
StyleClasses="LabelHeadingBigger"
HorizontalAlignment="Center"
HorizontalExpand="True"
FontColorOverride="#ffffff"
Margin="0 0 0 10"/>
<ScrollContainer VerticalExpand="True"
HScrollEnabled="False"
MinHeight="400">
<BoxContainer Name="Items2026"
Access="Public"
Orientation="Vertical"/>
</ScrollContainer>
</BoxContainer>
</BoxContainer>
</BoxContainer>
</ScrollContainer>
</PanelContainer>
</Control>

View file

@ -32,26 +32,24 @@ namespace Content.Client._Sunrise.Roadmap
{
var msg = new FormattedMessage();
var headerLocale = Loc.GetString("ui-roadmap-header");
msg.AddMarkupOrThrow($"[font size=24]{headerLocale} [bold]{roadmapVersions.Fork}[/bold][/font]");
msg.AddMarkupOrThrow($"[font size=24][bold]{headerLocale} {roadmapVersions.Fork}[/bold][/font]");
Header.SetMessage(msg);
foreach (var roadmapVersion in roadmapVersions.Versions)
Items2024.RemoveAllChildren();
Items2025.RemoveAllChildren();
Items2026.RemoveAllChildren();
foreach (var version in roadmapVersions.Versions)
{
var version = new BoxContainer()
var targetColumn = version.Key switch
{
Orientation = BoxContainer.LayoutOrientation.Vertical,
Margin = new Thickness(0, 0, 20, 0),
HorizontalExpand = true,
"2024" => Items2024,
"2025" => Items2025,
"2026" => Items2026,
_ => Items2024
};
var versionHeader = new RoadmapVersionHeader()
{
Text = roadmapVersion.Value.Name,
};
version.AddChild(versionHeader);
foreach (var goal in roadmapVersion.Value.Goals)
foreach (var goal in version.Value.Goals)
{
var roadmapItem = new RoadmapItem()
{
@ -60,10 +58,8 @@ namespace Content.Client._Sunrise.Roadmap
ItemState = goal.Value.State,
};
version.AddChild(roadmapItem);
targetColumn.AddChild(roadmapItem);
}
Versions.AddChild(version);
}
}
}

View file

@ -2,20 +2,56 @@
xmlns="https://spacestation14.io"
xmlns:gfx="clr-namespace:Robust.Client.Graphics;assembly=Robust.Client"
xmlns:roadmap="clr-namespace:Content.Client._Sunrise.Roadmap"
Margin="0 0 0 10"
MaxWidth="275">
<BoxContainer Orientation="Horizontal" SeparationOverride="0">
<BoxContainer Orientation="Vertical" HorizontalExpand="True">
<Button Name="HeaderButton" Access="Public" StyleClasses="OpenBoth" />
<BoxContainer Name="ContentsContainer" Access="Public" Orientation="Vertical" Visible="False">
<RichTextLabel Name="Contents" Access="Public" RectClipContent="True" />
<Label Name="StateText" Access="Public" HorizontalAlignment="Right" Align="Right" Margin="0 0 5 0" />
xmlns:controls="clr-namespace:Content.Client.UserInterface.Controls"
Margin="0 0 0 5">
<PanelContainer>
<PanelContainer.PanelOverride>
<gfx:StyleBoxFlat
BackgroundColor="#232228"
BorderColor="#2a292f"
BorderThickness="1"
ContentMarginLeftOverride="10"
ContentMarginRightOverride="10"
ContentMarginTopOverride="5"
ContentMarginBottomOverride="5"/>
</PanelContainer.PanelOverride>
<BoxContainer Orientation="Horizontal" SeparationOverride="0">
<BoxContainer Orientation="Vertical" HorizontalExpand="True">
<Button Name="HeaderButton"
Access="Public"
MinHeight="35"
StyleClasses="NoStyle">
<BoxContainer Orientation="Horizontal">
<Label Name="HeaderLabel"
StyleClasses="LabelSubText"
HorizontalExpand="True"/>
<Label Name="StateText"
Access="Public"
StyleClasses="LabelSubText"
Margin="10 0 0 0"/>
</BoxContainer>
</Button>
<BoxContainer Name="ContentsContainer"
Access="Public"
Orientation="Vertical"
Visible="False"
Margin="0 5 0 0">
<RichTextLabel Name="Contents"
Access="Public"
RectClipContent="True"
StyleClasses="LabelSubText"
Margin="0 5"/>
</BoxContainer>
</BoxContainer>
<PanelContainer Name="StateColor"
Access="Public"
VerticalExpand="True"
MinWidth="3"
MaxWidth="3">
<PanelContainer.PanelOverride>
<gfx:StyleBoxFlat />
</PanelContainer.PanelOverride>
</PanelContainer>
</BoxContainer>
<PanelContainer Name="StateColor" Access="Public" VerticalExpand="True" MinWidth="5" MaxWidth="5">
<PanelContainer.PanelOverride>
<gfx:StyleBoxFlat />
</PanelContainer.PanelOverride>
</PanelContainer>
</BoxContainer>
</PanelContainer>
</roadmap:RoadmapItem>

View file

@ -21,10 +21,10 @@ public sealed partial class RoadmapItem : Control
var panel = (StyleBoxFlat) StateColor.PanelOverride!;
panel.BackgroundColor = _itemState switch
{
RoadmapItemState.Planned => Color.Red,
RoadmapItemState.InProgress => Color.FromHex("#20C9FF"),
RoadmapItemState.Partial => Color.Yellow,
RoadmapItemState.Complete => Color.Green,
RoadmapItemState.Planned => Color.FromHex("#e74c3c"),
RoadmapItemState.InProgress => Color.FromHex("#3498db"),
RoadmapItemState.Partial => Color.FromHex("#f1c40f"),
RoadmapItemState.Complete => Color.FromHex("#2ecc71"),
_ => Color.Transparent
};
@ -42,8 +42,8 @@ public sealed partial class RoadmapItem : Control
public string? HeaderText
{
get => HeaderButton.Text;
set => HeaderButton.Text = value;
get => HeaderLabel.Text;
set => HeaderLabel.Text = value;
}
public string? Text

View file

@ -4,7 +4,10 @@
xmlns:cc="clr-namespace:Content.Client.Administration.UI.CustomControls"
Orientation="Horizontal"
Margin="0 0 0 15">
<cc:HSeparator Color="#4972A1" HorizontalExpand="True" MaxHeight="2" />
<Label Name="Version" Access="Public" Margin="5 0" />
<cc:HSeparator Color="#4972A1" HorizontalExpand="True" MaxHeight="2" />
<Label Name="Version"
Access="Public"
StyleClasses="LabelHeadingBigger"
HorizontalAlignment="Center"
HorizontalExpand="True"
Margin="0 10" />
</controls:RoadmapVersionHeader>

View file

@ -1,9 +1,26 @@
<roadmap:RoadmapWindow
xmlns="https://spacestation14.io"
xmlns:roadmap="clr-namespace:Content.Client._Sunrise.Roadmap"
MinSize="900 800"
xmlns:gfx="clr-namespace:Robust.Client.Graphics;assembly=Robust.Client"
xmlns:controls="clr-namespace:Content.Client.UserInterface.Controls"
MinSize="1200 800"
MaxSize="1200 800"
SetSize="1200 800"
Resizable="False"
Title="{Loc ui-roadmap}">
<ScrollContainer VerticalExpand="True" HScrollEnabled="False" HorizontalExpand="True" MinWidth="300">
<roadmap:Roadmap Name="RoadmapBody" Access="Public" />
</ScrollContainer>
<PanelContainer>
<PanelContainer.PanelOverride>
<gfx:StyleBoxFlat
BackgroundColor="#1a1a1f"/>
</PanelContainer.PanelOverride>
<BoxContainer Orientation="Vertical">
<ScrollContainer VerticalExpand="True"
HScrollEnabled="False"
HorizontalExpand="True"
MinWidth="300"
Margin="10">
<roadmap:Roadmap Name="RoadmapBody" Access="Public" />
</ScrollContainer>
</BoxContainer>
</PanelContainer>
</roadmap:RoadmapWindow>

View file

@ -21,6 +21,9 @@ public sealed partial class RoadmapGroup
[DataField]
public string Name { get; set; } = string.Empty;
[DataField]
public int Year { get; set; } = 2024;
[DataField]
public Dictionary<string, RoadmapGoal> Goals = new();
}