Skip to content

Commit cc0b4d9

Browse files
committed
fix blazor slug generator;
1 parent f89c398 commit cc0b4d9

8 files changed

Lines changed: 185 additions & 39 deletions

File tree

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
1-
using ReactiveUI;
2-
3-
namespace CodeWF.Desktop.ViewModels
1+
namespace CodeWF.Desktop.ViewModels
42
{
5-
public class ViewModelBase : ReactiveObject
3+
public class ViewModelBase : ReactiveObject
64
{
75
}
86
}

src/CodeWF.Web/CodeWF.Web/CodeWF.Web.csproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@
1010
<PackageReference Include="Masa.Blazor" Version="1.3.*" />
1111
</ItemGroup>
1212

13+
<ItemGroup>
14+
<ProjectReference Include="..\..\CodeWF.Core\CodeWF.Core\CodeWF.Core.csproj" />
15+
</ItemGroup>
16+
1317
<ItemGroup>
1418
<Content Update="wwwroot\i18n\config\languageConfig.json">
1519
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
Lines changed: 146 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,147 @@
1-
@page "/toolbox/translationslug"
1+
@page "/tools/slug-generator"
2+
@using CodeWF.Core
3+
@inject ITranslationService TranslationService
4+
@inject IPopupService PopupService
25

3-
<h1>别名生成器</h1>
6+
<MCard
7+
Outlined
8+
Elevation="2"
9+
Width="500">
10+
<MListItem>
11+
<MListItemContent>
12+
<MListItemTitle Class="text-h5 mb-1">
13+
别名生成器
14+
</MListItemTitle>
15+
</MListItemContent>
16+
</MListItem>
17+
<MRow Class="mx-2">
18+
<MButton class="ma-2 white--text"
19+
Color="blue-grey"
20+
OnClick="HandleChineseToEnglishAsync">
21+
中译英
22+
</MButton>
23+
<MButton class="ma-2 white--text"
24+
Color="blue-grey"
25+
OnClick="HandleEnglishToChineseAsync">
26+
英译中
27+
</MButton>
28+
<MButton class="ma-2 white--text"
29+
Color="blue-grey"
30+
OnClick="HandleEnglishToUrlSlugAsync">
31+
英转URL
32+
</MButton>
33+
34+
<MButton class="ma-2"
35+
Color="info"
36+
OnClick="HandleChineseToUrlSlugAsync">
37+
<LoaderContent>
38+
<span class="custom-loader">
39+
<MIcon>mdi-cached</MIcon>
40+
</span>
41+
</LoaderContent>
42+
<ChildContent>
43+
中转URL
44+
</ChildContent>
45+
</MButton>
46+
</MRow>
47+
<MRow Class="mx-2">
48+
<MTextarea Label="请输入中文"
49+
AutoGrow
50+
Outlined
51+
@bind-Value="Chinese"
52+
Rows="3"
53+
RowHeight="25"
54+
Shaped
55+
Class="mx-2">
56+
</MTextarea>
57+
58+
</MRow>
59+
<MRow Class="mx-2">
60+
<MTextarea Label="翻译后的英文标题或输入英文"
61+
AutoGrow
62+
Outlined
63+
@bind-Value="English"
64+
Rows="3"
65+
RowHeight="25"
66+
Shaped
67+
Class="mx-2">
68+
</MTextarea>
69+
70+
</MRow>
71+
<MRow Class="mx-2">
72+
<MTextarea Label="转换后URL别名"
73+
AutoGrow
74+
Outlined
75+
@bind-Value="Slug"
76+
Rows="3"
77+
RowHeight="25"
78+
Shaped
79+
Class="mx-2">
80+
</MTextarea>
81+
</MRow>
82+
</MCard>
83+
84+
@code
85+
{
86+
/// <summary>
87+
/// 中文标题
88+
/// </summary>
89+
public string? Chinese { get; set; }
90+
91+
92+
/// <summary>
93+
/// 英文标题
94+
/// </summary>
95+
public string? English { get; set; }
96+
97+
98+
/// <summary>
99+
/// 别名
100+
/// </summary>
101+
public string? Slug { get; set; }
102+
103+
public async Task HandleChineseToEnglishAsync()
104+
{
105+
try
106+
{
107+
English = await TranslationService!.ChineseToEnglishAsync(Chinese);
108+
}
109+
catch (Exception ex)
110+
{
111+
English = ex.Message;
112+
await PopupService.EnqueueSnackbarAsync($"中译英异常,请联系作者:{ex.Message}");
113+
}
114+
}
115+
116+
public async Task HandleEnglishToChineseAsync()
117+
{
118+
try
119+
{
120+
Chinese = await TranslationService!.EnglishToChineseAsync(English);
121+
}
122+
catch (Exception ex)
123+
{
124+
Chinese = ex.Message;
125+
await PopupService.EnqueueSnackbarAsync($"英译中异常,请联系作者:{ex.Message}");
126+
}
127+
}
128+
129+
public async Task HandleEnglishToUrlSlugAsync()
130+
{
131+
try
132+
{
133+
Slug = TranslationService!.EnglishToUrlSlug(English);
134+
}
135+
catch (Exception ex)
136+
{
137+
Slug = ex.Message;
138+
await PopupService.EnqueueSnackbarAsync($"英转URL别名异常,请联系作者:{ex.Message}");
139+
}
140+
}
141+
142+
public async Task HandleChineseToUrlSlugAsync()
143+
{
144+
await HandleChineseToEnglishAsync();
145+
await HandleEnglishToUrlSlugAsync();
146+
}
147+
}
Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using CodeWF.Web.Data;
1+
using CodeWF.Core;
22

33
var builder = WebApplication.CreateBuilder(args);
44

@@ -7,27 +7,29 @@
77
builder.Services.AddServerSideBlazor();
88
builder.Services.AddMasaBlazor(builder =>
99
{
10-
builder.ConfigureTheme(theme =>
11-
{
12-
theme.Themes.Light.Primary = "#4318FF";
13-
theme.Themes.Light.Accent = "#4318FF";
14-
});
10+
builder.ConfigureTheme(theme =>
11+
{
12+
theme.Themes.Light.Primary = "#4318FF";
13+
theme.Themes.Light.Accent = "#4318FF";
14+
});
1515
}).AddI18nForServer("wwwroot/i18n");
1616

1717

18-
var basePath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) ?? throw new Exception("Get the assembly root directory exception!");
18+
var basePath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) ??
19+
throw new Exception("Get the assembly root directory exception!");
1920
builder.Services.AddNav(Path.Combine(basePath, $"wwwroot/nav/nav.json"));
2021
builder.Services.AddScoped<CookieStorage>();
2122
builder.Services.AddScoped<GlobalConfig>();
23+
builder.Services.AddSingleton<ITranslationService, TranslationService>();
2224

2325
var app = builder.Build();
2426

2527
// Configure the HTTP request pipeline.
2628
if (!app.Environment.IsDevelopment())
2729
{
28-
app.UseExceptionHandler("/Error");
29-
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
30-
app.UseHsts();
30+
app.UseExceptionHandler("/Error");
31+
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
32+
app.UseHsts();
3133
}
3234

3335
app.UseHttpsRedirection();
@@ -39,4 +41,4 @@
3941
app.MapBlazorHub();
4042
app.MapFallbackToPage("/_Host");
4143

42-
app.Run();
44+
app.Run();

src/CodeWF.Web/CodeWF.Web/Shared/Navigation.razor

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@
1313
App>
1414

1515
<div class="logo" @onclick="() => NavHelper.NavigateTo(GlobalVariables.DefaultRoute)">
16-
<img class="hover-pointer" height="49" src="/img/mainLayout/logo.svg"/>
17-
<span>码界工坊</span>
16+
<img height="49" src="/img/mainLayout/logo.svg" width="36px;" Class="hover-pointer mx-4" />
17+
<span style="font-size: 30px; font-weight: 800;">码界工坊</span>
1818
</div>
1919

2020
<MList Nav Routable Dense Class="@($"pa-0 {(GlobalConfig.ExpandOnHover ? "mini-navigation" : "")}")">

src/CodeWF.Web/CodeWF.Web/Shared/PageTabs.razor

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -7,29 +7,27 @@
77
Ripple="false"
88
HideSlider
99
SelfPatterns="@SelfPatterns">
10-
<ChildContent>
11-
@ChildContent
12-
</ChildContent>
10+
<ChildContent>
11+
@ChildContent
12+
</ChildContent>
1313
</PPageTabs>
1414

1515
@code {
1616

17-
public PPageTabs? PPageTabs { get; private set; }
17+
public PPageTabs? PPageTabs { get; private set; }
1818

19-
[Parameter]
20-
public RenderFragment? ChildContent { get; set; }
19+
[Parameter] public RenderFragment? ChildContent { get; set; }
2120

22-
[Parameter]
23-
public IEnumerable<string>? SelfPatterns { get; set; }
21+
[Parameter] public IEnumerable<string>? SelfPatterns { get; set; }
2422

25-
private TabOptions TabOptions(PageTabPathValue value)
26-
{
27-
var item = NavHelper.PageTabItems.FirstOrDefault(u => value.IsMatch(u.Href));
28-
var title = T(item?.Title);
29-
var icon = item?.Icon;
30-
var titleClass = $"mx-2 text-capitalize {(value.Selected ? "neutral--text" : "")}";
23+
private TabOptions TabOptions(PageTabPathValue value)
24+
{
25+
var item = NavHelper.PageTabItems.FirstOrDefault(u => u.Href == value.AbsolutePath); //value.IsMatch(u.Href));
26+
var title = T(item?.Title);
27+
var icon = item?.Icon;
28+
var titleClass = $"mx-2 text-capitalize {(value.Selected ? "neutral--text" : "")}";
3129

32-
return new TabOptions(title, icon, titleClass);
33-
}
30+
return new TabOptions(title, icon, titleClass);
31+
}
3432

35-
}
33+
}

src/CodeWF.Web/CodeWF.Web/wwwroot/i18n/en-US.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"$Text": "English",
33
"Home": "Home",
44
"ToolBox": "ToolBox",
5-
"TranslationSlug": "Translation Slug",
5+
"TranslationSlug": "Slug Generator",
66
"Dashboard": "Dashboard",
77
"eCommerce": "eCommerce",
88
"Analytics": "Analytics",

src/CodeWF.Web/CodeWF.Web/wwwroot/nav/nav.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"Id": 1,
44
"Title": "Home",
55
"Icon": "mdi-home-variant-outline",
6-
"Href": "home",
6+
"Href": "/",
77
"Target": "Self"
88
},
99
{
@@ -15,7 +15,7 @@
1515
"Id": 4,
1616
"Title": "TranslationSlug",
1717
"Icon": "mdi-web",
18-
"Href": "toolbox/translationslug"
18+
"Href": "/tools/slug-generator"
1919
}
2020
]
2121
}

0 commit comments

Comments
 (0)