feat: restrict advanced system settings

master
tayttt 3 days ago
parent d45ef0148c
commit 66371f591a

@ -312,7 +312,6 @@ namespace Txgy.EWS.Client.Common
Require(config.Database?.Tables?.PostWaveDataTable, "database.tables.postWaveDataTable"); Require(config.Database?.Tables?.PostWaveDataTable, "database.tables.postWaveDataTable");
Require(config.Database?.Tables?.PostFocalmechanismTable, "database.tables.postFocalmechanismTable"); Require(config.Database?.Tables?.PostFocalmechanismTable, "database.tables.postFocalmechanismTable");
GetConnectionStringFromConfig(config, "TencetnMySQL"); GetConnectionStringFromConfig(config, "TencetnMySQL");
GetConnectionStringFromConfig(config, "NasMySQL");
DateTime.Parse(config.Report.DailyReportStartTime); DateTime.Parse(config.Report.DailyReportStartTime);
} }

@ -15,6 +15,7 @@ namespace Txgy.EWS.Client.MainModule.ViewModels
public class TreeMenuViewModel : BindableBase public class TreeMenuViewModel : BindableBase
{ {
private const string SystemSettingsTargetView = "SystemSettingsView"; private const string SystemSettingsTargetView = "SystemSettingsView";
private const string AdvancedSystemSettingsTargetView = "SystemSettingsAdvanced";
public List<MenuItemModel> Menus { get; set; } = new List<MenuItemModel>(); public List<MenuItemModel> Menus { get; set; } = new List<MenuItemModel>();
@ -45,6 +46,11 @@ namespace Txgy.EWS.Client.MainModule.ViewModels
{ {
foreach (var item in sub) foreach (var item in sub)
{ {
if (string.Equals(item.TargetView, AdvancedSystemSettingsTargetView, StringComparison.OrdinalIgnoreCase))
{
continue;
}
MenuItemModel mm = new MenuItemModel(_regionManager) MenuItemModel mm = new MenuItemModel(_regionManager)
{ {
MenuHeader = item.MenuHeader, MenuHeader = item.MenuHeader,

@ -211,6 +211,8 @@
VerticalAlignment="Center" VerticalAlignment="Center"
d:Text="10000" d:Text="10000"
FontSize="18" FontSize="18"
FontWeight="Bold"
Foreground="Blue"
Text="{Binding ReceivedEventCount}" /> Text="{Binding ReceivedEventCount}" />
</StackPanel> </StackPanel>
<StackPanel Margin="10,0,0,0" Orientation="Horizontal"> <StackPanel Margin="10,0,0,0" Orientation="Horizontal">
@ -222,6 +224,8 @@
VerticalAlignment="Center" VerticalAlignment="Center"
d:Text="10000" d:Text="10000"
FontSize="18" FontSize="18"
FontWeight="Bold"
Foreground="Blue"
Text="{Binding AlarmedEventCount}" /> Text="{Binding AlarmedEventCount}" />
</StackPanel> </StackPanel>
<StackPanel Margin="10,0,0,0" Orientation="Horizontal"> <StackPanel Margin="10,0,0,0" Orientation="Horizontal">
@ -232,7 +236,9 @@
<TextBlock <TextBlock
VerticalAlignment="Center" VerticalAlignment="Center"
d:Text="24小时" d:Text="24小时"
FontSize="14" FontSize="18"
FontWeight="Bold"
Foreground="Blue"
Text="{Binding Path=(comm:GlobalConfig.DataLookbackHours), StringFormat={}{0:0.##}小时}" /> Text="{Binding Path=(comm:GlobalConfig.DataLookbackHours), StringFormat={}{0:0.##}小时}" />
</StackPanel> </StackPanel>
</StackPanel> </StackPanel>

@ -25,8 +25,7 @@
}, },
"database": { "database": {
"connections": { "connections": {
"TencetnMySQL": "Data Source=bj-cdb-q64mbxr6.sql.tencentcdb.com;Port=60027;Database=yuwu2026;User=yuwudba;Password=Yw123456;SslMode = none;", "TencetnMySQL": "Data Source=bj-cdb-q64mbxr6.sql.tencentcdb.com;Port=60027;Database=yuwu2026;User=yuwudba;Password=Yw123456;SslMode = none;"
"NasMySQL": "Data Source=tayfx.work;Port=60027;Database=YuwuN1100;User=yuwudba;Password=Yw123456;SslMode = none;"
}, },
"tables": { "tables": {
"realtimeResultTable": "realtimeeventresult", "realtimeResultTable": "realtimeeventresult",

@ -4,15 +4,26 @@ using Prism.Mvvm;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Globalization; using System.Globalization;
using System.Linq;
using System.Windows;
using System.Windows.Input; using System.Windows.Input;
using System.Windows.Media; using System.Windows.Media;
using Txgy.EWS.Client.Common; using Txgy.EWS.Client.Common;
using Txgy.EWS.Client.Common.MessageEvents; using Txgy.EWS.Client.Common.MessageEvents;
using Txgy.EWS.Client.Entity;
namespace Txgy.EWS.Client.SysModule.ViewModels namespace Txgy.EWS.Client.SysModule.ViewModels
{ {
public class SystemSettingsViewModel : BindableBase public class SystemSettingsViewModel : BindableBase
{ {
private const string AdvancedSettingsTargetView = "SystemSettingsAdvanced";
private static readonly string[] AdvancedSettingsFallbackTargetViews =
{
"MenuManagementView",
"RoleManagementView",
"UserManagementView"
};
private readonly IEventAggregator _eventAggregator; private readonly IEventAggregator _eventAggregator;
private string _statusMessage; private string _statusMessage;
private Brush _statusBrush = Brushes.Gray; private Brush _statusBrush = Brushes.Gray;
@ -20,6 +31,7 @@ namespace Txgy.EWS.Client.SysModule.ViewModels
public SystemSettingsViewModel(IEventAggregator eventAggregator) public SystemSettingsViewModel(IEventAggregator eventAggregator)
{ {
_eventAggregator = eventAggregator; _eventAggregator = eventAggregator;
CanEditAdvancedSettings = HasAdvancedSettingsPermission();
ReloadFromConfig(); ReloadFromConfig();
} }
@ -37,6 +49,9 @@ namespace Txgy.EWS.Client.SysModule.ViewModels
set => SetProperty(ref _statusBrush, value); set => SetProperty(ref _statusBrush, value);
} }
public bool CanEditAdvancedSettings { get; }
public Visibility AdvancedSettingsVisibility => CanEditAdvancedSettings ? Visibility.Visible : Visibility.Collapsed;
public string ApiDomain { get; set; } public string ApiDomain { get; set; }
public string AlarmSetting { get; set; } public string AlarmSetting { get; set; }
public string AlarmLevelConfig { get; set; } public string AlarmLevelConfig { get; set; }
@ -56,7 +71,6 @@ namespace Txgy.EWS.Client.SysModule.ViewModels
public string DataLookbackHours { get; set; } public string DataLookbackHours { get; set; }
public string DataCacheTimeLenMins { get; set; } public string DataCacheTimeLenMins { get; set; }
public string TencentMySql { get; set; } public string TencentMySql { get; set; }
public string NasMySql { get; set; }
public string RealtimeResultTable { get; set; } public string RealtimeResultTable { get; set; }
public string RealtimeWaveDataTable { get; set; } public string RealtimeWaveDataTable { get; set; }
public string RealtimeFocalmechanismTable { get; set; } public string RealtimeFocalmechanismTable { get; set; }
@ -96,7 +110,7 @@ namespace Txgy.EWS.Client.SysModule.ViewModels
try try
{ {
var previousConfig = BusinessConfigManager.Current; var previousConfig = BusinessConfigManager.Current;
var config = BuildConfig(); var config = BuildConfig(previousConfig);
var savedConfig = BusinessConfigManager.Save(config); var savedConfig = BusinessConfigManager.Save(config);
var shouldReloadWarningData = ShouldReloadWarningData(previousConfig, savedConfig); var shouldReloadWarningData = ShouldReloadWarningData(previousConfig, savedConfig);
GlobalConfig.ApplyBusinessConfig(savedConfig); GlobalConfig.ApplyBusinessConfig(savedConfig);
@ -145,7 +159,6 @@ namespace Txgy.EWS.Client.SysModule.ViewModels
DataLookbackHours = config.Runtime.DataLookbackHours.ToString("0.##", CultureInfo.InvariantCulture); DataLookbackHours = config.Runtime.DataLookbackHours.ToString("0.##", CultureInfo.InvariantCulture);
DataCacheTimeLenMins = config.Runtime.DataCacheTimeLenMins.ToString(CultureInfo.InvariantCulture); DataCacheTimeLenMins = config.Runtime.DataCacheTimeLenMins.ToString(CultureInfo.InvariantCulture);
TencentMySql = GetConnection(config, "TencetnMySQL"); TencentMySql = GetConnection(config, "TencetnMySQL");
NasMySql = GetConnection(config, "NasMySQL");
RealtimeResultTable = config.Database.Tables.RealtimeResultTable; RealtimeResultTable = config.Database.Tables.RealtimeResultTable;
RealtimeWaveDataTable = config.Database.Tables.RealtimeWaveDataTable; RealtimeWaveDataTable = config.Database.Tables.RealtimeWaveDataTable;
RealtimeFocalmechanismTable = config.Database.Tables.RealtimeFocalmechanismTable; RealtimeFocalmechanismTable = config.Database.Tables.RealtimeFocalmechanismTable;
@ -166,19 +179,18 @@ namespace Txgy.EWS.Client.SysModule.ViewModels
RaiseAllSettingPropertiesChanged(); RaiseAllSettingPropertiesChanged();
} }
private BusinessConfig BuildConfig() private BusinessConfig BuildConfig(BusinessConfig currentConfig)
{ {
DateTime.Parse(Require(DailyReportStartTime, "日报起始时间")); DateTime.Parse(Require(DailyReportStartTime, "日报起始时间"));
var dataLookbackHours = ParseDouble(DataLookbackHours, "数据回看时长"); var dataLookbackHours = ParseDouble(DataLookbackHours, "数据回看时长");
DataCacheTimeLenMins = ((int)Math.Round(dataLookbackHours * 60.0)).ToString(CultureInfo.InvariantCulture); DataCacheTimeLenMins = ((int)Math.Round(dataLookbackHours * 60.0)).ToString(CultureInfo.InvariantCulture);
var endpointSettings = BuildEndpointSettings(currentConfig);
var databaseSettings = BuildDatabaseSettings(currentConfig);
return new BusinessConfig return new BusinessConfig
{ {
Endpoints = new EndpointSettings Endpoints = endpointSettings,
{
ApiDomain = Require(ApiDomain, "API 域名")
},
Paths = new PathSettings Paths = new PathSettings
{ {
AlarmSetting = Require(AlarmSetting, "报警配置"), AlarmSetting = Require(AlarmSetting, "报警配置"),
@ -190,35 +202,19 @@ namespace Txgy.EWS.Client.SysModule.ViewModels
DwgJsonSetting = Require(DwgJsonSetting, "DWG 图层配置"), DwgJsonSetting = Require(DwgJsonSetting, "DWG 图层配置"),
WavesMseedFilePath = Require(WavesMseedFilePath, "Mseed 缓存目录"), WavesMseedFilePath = Require(WavesMseedFilePath, "Mseed 缓存目录"),
WavesTxtFilePath = Require(WavesTxtFilePath, "Txt 缓存目录"), WavesTxtFilePath = Require(WavesTxtFilePath, "Txt 缓存目录"),
LocalSqLiteDb = Require(LocalSqLiteDb, "本地 SQLite"), LocalSqLiteDb = CanEditAdvancedSettings ? Require(LocalSqLiteDb, "本地 SQLite") : currentConfig.Paths.LocalSqLiteDb,
DwgSettings = EmptyToNull(DwgSettings), DwgSettings = EmptyToNull(DwgSettings),
CadSettingsFileName = EmptyToNull(CadSettingsFileName) CadSettingsFileName = EmptyToNull(CadSettingsFileName)
}, },
Runtime = new RuntimeSettings Runtime = new RuntimeSettings
{ {
IsDesign = IsDesign, IsDesign = CanEditAdvancedSettings ? IsDesign : currentConfig.Runtime.IsDesign,
IsRealtime = IsRealtime, IsRealtime = CanEditAdvancedSettings ? IsRealtime : currentConfig.Runtime.IsRealtime,
RefreshInterval = ParseInt(RefreshInterval, "刷新间隔"), RefreshInterval = ParseInt(RefreshInterval, "刷新间隔"),
DataLookbackHours = dataLookbackHours, DataLookbackHours = dataLookbackHours,
DataCacheTimeLenMins = ParseInt(DataCacheTimeLenMins, "数据缓存时长") DataCacheTimeLenMins = ParseInt(DataCacheTimeLenMins, "数据缓存时长")
}, },
Database = new DatabaseSettings Database = databaseSettings,
{
Connections = new Dictionary<string, string>
{
{ "TencetnMySQL", Require(TencentMySql, "腾讯 MySQL") },
{ "NasMySQL", Require(NasMySql, "NAS MySQL") }
},
Tables = new TableSettings
{
RealtimeResultTable = Require(RealtimeResultTable, "实时结果表"),
RealtimeWaveDataTable = Require(RealtimeWaveDataTable, "实时波形表"),
RealtimeFocalmechanismTable = Require(RealtimeFocalmechanismTable, "实时震源机制表"),
PostResultTable = Require(PostResultTable, "后处理结果表"),
PostWaveDataTable = Require(PostWaveDataTable, "后处理波形表"),
PostFocalmechanismTable = Require(PostFocalmechanismTable, "后处理震源机制表")
}
},
Branding = new BrandingSettings Branding = new BrandingSettings
{ {
CommpanyName = Require(CommpanyName, "公司名称"), CommpanyName = Require(CommpanyName, "公司名称"),
@ -242,6 +238,59 @@ namespace Txgy.EWS.Client.SysModule.ViewModels
}; };
} }
private EndpointSettings BuildEndpointSettings(BusinessConfig currentConfig)
{
return new EndpointSettings
{
ApiDomain = CanEditAdvancedSettings ? Require(ApiDomain, "API 域名") : currentConfig.Endpoints.ApiDomain
};
}
private DatabaseSettings BuildDatabaseSettings(BusinessConfig currentConfig)
{
if (!CanEditAdvancedSettings)
{
return new DatabaseSettings
{
Connections = new Dictionary<string, string>
{
{ "TencetnMySQL", GetConnection(currentConfig, "TencetnMySQL") }
},
Tables = CopyTableSettings(currentConfig.Database.Tables)
};
}
return new DatabaseSettings
{
Connections = new Dictionary<string, string>
{
{ "TencetnMySQL", Require(TencentMySql, "腾讯 MySQL") }
},
Tables = new TableSettings
{
RealtimeResultTable = Require(RealtimeResultTable, "实时结果表"),
RealtimeWaveDataTable = Require(RealtimeWaveDataTable, "实时波形表"),
RealtimeFocalmechanismTable = Require(RealtimeFocalmechanismTable, "实时震源机制表"),
PostResultTable = Require(PostResultTable, "后处理结果表"),
PostWaveDataTable = Require(PostWaveDataTable, "后处理波形表"),
PostFocalmechanismTable = Require(PostFocalmechanismTable, "后处理震源机制表")
}
};
}
private TableSettings CopyTableSettings(TableSettings source)
{
return new TableSettings
{
RealtimeResultTable = source.RealtimeResultTable,
RealtimeWaveDataTable = source.RealtimeWaveDataTable,
RealtimeFocalmechanismTable = source.RealtimeFocalmechanismTable,
PostResultTable = source.PostResultTable,
PostWaveDataTable = source.PostWaveDataTable,
PostFocalmechanismTable = source.PostFocalmechanismTable
};
}
private string GetConnection(BusinessConfig config, string name) private string GetConnection(BusinessConfig config, string name)
{ {
if (config.Database.Connections != null && config.Database.Connections.TryGetValue(name, out var value)) if (config.Database.Connections != null && config.Database.Connections.TryGetValue(name, out var value))
@ -252,6 +301,23 @@ namespace Txgy.EWS.Client.SysModule.ViewModels
return string.Empty; return string.Empty;
} }
private bool HasAdvancedSettingsPermission()
{
var menus = GlobalData.CurrentUserInfo?.Menus;
if (menus == null)
{
return false;
}
return ContainsTargetView(menus, AdvancedSettingsTargetView) ||
AdvancedSettingsFallbackTargetViews.Any(targetView => ContainsTargetView(menus, targetView));
}
private bool ContainsTargetView(IEnumerable<MenuEntity> menus, string targetView)
{
return menus.Any(menu => string.Equals(menu.TargetView, targetView, StringComparison.OrdinalIgnoreCase));
}
private string Require(string value, string name) private string Require(string value, string name)
{ {
if (string.IsNullOrWhiteSpace(value)) if (string.IsNullOrWhiteSpace(value))
@ -314,7 +380,6 @@ namespace Txgy.EWS.Client.SysModule.ViewModels
RaisePropertyChanged(nameof(DataLookbackHours)); RaisePropertyChanged(nameof(DataLookbackHours));
RaisePropertyChanged(nameof(DataCacheTimeLenMins)); RaisePropertyChanged(nameof(DataCacheTimeLenMins));
RaisePropertyChanged(nameof(TencentMySql)); RaisePropertyChanged(nameof(TencentMySql));
RaisePropertyChanged(nameof(NasMySql));
RaisePropertyChanged(nameof(RealtimeResultTable)); RaisePropertyChanged(nameof(RealtimeResultTable));
RaisePropertyChanged(nameof(RealtimeWaveDataTable)); RaisePropertyChanged(nameof(RealtimeWaveDataTable));
RaisePropertyChanged(nameof(RealtimeFocalmechanismTable)); RaisePropertyChanged(nameof(RealtimeFocalmechanismTable));

@ -60,18 +60,7 @@
<ScrollViewer Grid.Row="1" VerticalScrollBarVisibility="Auto"> <ScrollViewer Grid.Row="1" VerticalScrollBarVisibility="Auto">
<StackPanel> <StackPanel>
<GroupBox Header="接口" Style="{StaticResource SettingGroupStyle}"> <GroupBox Header="常用参数" Style="{StaticResource SettingGroupStyle}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="170"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBlock Text="API 域名" Style="{StaticResource SettingLabelStyle}"/>
<TextBox Grid.Column="1" Text="{Binding ApiDomain, UpdateSourceTrigger=PropertyChanged}" Style="{StaticResource SettingTextBoxStyle}"/>
</Grid>
</GroupBox>
<GroupBox Header="运行参数" Style="{StaticResource SettingGroupStyle}">
<Grid> <Grid>
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
<ColumnDefinition Width="170"/> <ColumnDefinition Width="170"/>
@ -82,20 +71,14 @@
<Grid.RowDefinitions> <Grid.RowDefinitions>
<RowDefinition/> <RowDefinition/>
<RowDefinition/> <RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions> </Grid.RowDefinitions>
<TextBlock Text="设计模式" Style="{StaticResource SettingLabelStyle}"/> <TextBlock Text="刷新间隔(秒)" Style="{StaticResource SettingLabelStyle}"/>
<CheckBox Grid.Column="1" IsChecked="{Binding IsDesign}" Style="{StaticResource SettingCheckBoxStyle}"/> <TextBox Grid.Column="1" Text="{Binding RefreshInterval, UpdateSourceTrigger=PropertyChanged}" Style="{StaticResource SettingTextBoxStyle}"/>
<TextBlock Grid.Column="2" Text="实时模式" Style="{StaticResource SettingLabelStyle}"/> <TextBlock Grid.Column="2" Text="数据时长(小时)" Style="{StaticResource SettingLabelStyle}"/>
<CheckBox Grid.Column="3" IsChecked="{Binding IsRealtime}" Style="{StaticResource SettingCheckBoxStyle}"/> <TextBox Grid.Column="3" Text="{Binding DataLookbackHours, UpdateSourceTrigger=PropertyChanged}" Style="{StaticResource SettingTextBoxStyle}"/>
<TextBlock Grid.Row="1" Text="刷新间隔(秒)" Style="{StaticResource SettingLabelStyle}"/> <TextBlock Grid.Row="1" Grid.Column="2" Text="数据缓存时长(分钟)" Style="{StaticResource SettingLabelStyle}" Visibility="Collapsed"/>
<TextBox Grid.Row="1" Grid.Column="1" Text="{Binding RefreshInterval, UpdateSourceTrigger=PropertyChanged}" Style="{StaticResource SettingTextBoxStyle}"/> <TextBox Grid.Row="1" Grid.Column="3" Text="{Binding DataCacheTimeLenMins, UpdateSourceTrigger=PropertyChanged}" Style="{StaticResource SettingTextBoxStyle}" Visibility="Collapsed"/>
<TextBlock Grid.Row="1" Grid.Column="2" Text="数据回看时长(小时)" Style="{StaticResource SettingLabelStyle}"/>
<TextBox Grid.Row="1" Grid.Column="3" Text="{Binding DataLookbackHours, UpdateSourceTrigger=PropertyChanged}" Style="{StaticResource SettingTextBoxStyle}"/>
<TextBlock Grid.Row="2" Grid.Column="2" Text="数据缓存时长(分钟)" Style="{StaticResource SettingLabelStyle}" Visibility="Collapsed"/>
<TextBox Grid.Row="2" Grid.Column="3" Text="{Binding DataCacheTimeLenMins, UpdateSourceTrigger=PropertyChanged}" Style="{StaticResource SettingTextBoxStyle}" Visibility="Collapsed"/>
</Grid> </Grid>
</GroupBox> </GroupBox>
@ -137,8 +120,6 @@
<TextBlock Grid.Row="4" Text="Txt 缓存目录" Style="{StaticResource SettingLabelStyle}"/> <TextBlock Grid.Row="4" Text="Txt 缓存目录" Style="{StaticResource SettingLabelStyle}"/>
<TextBox Grid.Row="4" Grid.Column="1" Text="{Binding WavesTxtFilePath, UpdateSourceTrigger=PropertyChanged}" Style="{StaticResource SettingTextBoxStyle}"/> <TextBox Grid.Row="4" Grid.Column="1" Text="{Binding WavesTxtFilePath, UpdateSourceTrigger=PropertyChanged}" Style="{StaticResource SettingTextBoxStyle}"/>
<TextBlock Grid.Row="4" Grid.Column="2" Text="本地 SQLite" Style="{StaticResource SettingLabelStyle}"/>
<TextBox Grid.Row="4" Grid.Column="3" Text="{Binding LocalSqLiteDb, UpdateSourceTrigger=PropertyChanged}" Style="{StaticResource SettingTextBoxStyle}"/>
<TextBlock Grid.Row="5" Text="DWG 显示设置" Style="{StaticResource SettingLabelStyle}"/> <TextBlock Grid.Row="5" Text="DWG 显示设置" Style="{StaticResource SettingLabelStyle}"/>
<TextBox Grid.Row="5" Grid.Column="1" Text="{Binding DwgSettings, UpdateSourceTrigger=PropertyChanged}" Style="{StaticResource SettingTextBoxStyle}"/> <TextBox Grid.Row="5" Grid.Column="1" Text="{Binding DwgSettings, UpdateSourceTrigger=PropertyChanged}" Style="{StaticResource SettingTextBoxStyle}"/>
@ -147,15 +128,38 @@
</Grid> </Grid>
</GroupBox> </GroupBox>
<GroupBox Header="数据库" Style="{StaticResource SettingGroupStyle}"> <GroupBox Header="高级设置" Style="{StaticResource SettingGroupStyle}" Visibility="{Binding AdvancedSettingsVisibility}">
<Grid> <Grid>
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
<ColumnDefinition Width="170"/> <ColumnDefinition Width="170"/>
<ColumnDefinition/> <ColumnDefinition/>
<ColumnDefinition Width="170"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<Grid.RowDefinitions> <Grid.RowDefinitions>
<RowDefinition/> <RowDefinition/>
<RowDefinition/> <RowDefinition/>
</Grid.RowDefinitions>
<TextBlock Text="API 域名" Style="{StaticResource SettingLabelStyle}"/>
<TextBox Grid.Column="1" Text="{Binding ApiDomain, UpdateSourceTrigger=PropertyChanged}" Style="{StaticResource SettingTextBoxStyle}"/>
<TextBlock Grid.Column="2" Text="本地 SQLite" Style="{StaticResource SettingLabelStyle}"/>
<TextBox Grid.Column="3" Text="{Binding LocalSqLiteDb, UpdateSourceTrigger=PropertyChanged}" Style="{StaticResource SettingTextBoxStyle}"/>
<TextBlock Grid.Row="1" Text="设计模式" Style="{StaticResource SettingLabelStyle}"/>
<CheckBox Grid.Row="1" Grid.Column="1" IsChecked="{Binding IsDesign}" Style="{StaticResource SettingCheckBoxStyle}"/>
<TextBlock Grid.Row="1" Grid.Column="2" Text="实时模式" Style="{StaticResource SettingLabelStyle}"/>
<CheckBox Grid.Row="1" Grid.Column="3" IsChecked="{Binding IsRealtime}" Style="{StaticResource SettingCheckBoxStyle}"/>
</Grid>
</GroupBox>
<GroupBox Header="数据库" Style="{StaticResource SettingGroupStyle}" Visibility="{Binding AdvancedSettingsVisibility}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="170"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/> <RowDefinition/>
<RowDefinition/> <RowDefinition/>
<RowDefinition/> <RowDefinition/>
@ -165,20 +169,18 @@
</Grid.RowDefinitions> </Grid.RowDefinitions>
<TextBlock Text="腾讯 MySQL" Style="{StaticResource SettingLabelStyle}"/> <TextBlock Text="腾讯 MySQL" Style="{StaticResource SettingLabelStyle}"/>
<TextBox Grid.Column="1" Text="{Binding TencentMySql, UpdateSourceTrigger=PropertyChanged}" Style="{StaticResource SettingTextBoxStyle}"/> <TextBox Grid.Column="1" Text="{Binding TencentMySql, UpdateSourceTrigger=PropertyChanged}" Style="{StaticResource SettingTextBoxStyle}"/>
<TextBlock Grid.Row="1" Text="NAS MySQL" Style="{StaticResource SettingLabelStyle}"/> <TextBlock Grid.Row="1" Text="实时结果表" Style="{StaticResource SettingLabelStyle}"/>
<TextBox Grid.Row="1" Grid.Column="1" Text="{Binding NasMySql, UpdateSourceTrigger=PropertyChanged}" Style="{StaticResource SettingTextBoxStyle}"/> <TextBox Grid.Row="1" Grid.Column="1" Text="{Binding RealtimeResultTable, UpdateSourceTrigger=PropertyChanged}" Style="{StaticResource SettingTextBoxStyle}"/>
<TextBlock Grid.Row="2" Text="实时结果表" Style="{StaticResource SettingLabelStyle}"/> <TextBlock Grid.Row="2" Text="实时波形表" Style="{StaticResource SettingLabelStyle}"/>
<TextBox Grid.Row="2" Grid.Column="1" Text="{Binding RealtimeResultTable, UpdateSourceTrigger=PropertyChanged}" Style="{StaticResource SettingTextBoxStyle}"/> <TextBox Grid.Row="2" Grid.Column="1" Text="{Binding RealtimeWaveDataTable, UpdateSourceTrigger=PropertyChanged}" Style="{StaticResource SettingTextBoxStyle}"/>
<TextBlock Grid.Row="3" Text="实时波形表" Style="{StaticResource SettingLabelStyle}"/> <TextBlock Grid.Row="3" Text="实时震源机制表" Style="{StaticResource SettingLabelStyle}"/>
<TextBox Grid.Row="3" Grid.Column="1" Text="{Binding RealtimeWaveDataTable, UpdateSourceTrigger=PropertyChanged}" Style="{StaticResource SettingTextBoxStyle}"/> <TextBox Grid.Row="3" Grid.Column="1" Text="{Binding RealtimeFocalmechanismTable, UpdateSourceTrigger=PropertyChanged}" Style="{StaticResource SettingTextBoxStyle}"/>
<TextBlock Grid.Row="4" Text="实时震源机制表" Style="{StaticResource SettingLabelStyle}"/> <TextBlock Grid.Row="4" Text="后处理结果表" Style="{StaticResource SettingLabelStyle}"/>
<TextBox Grid.Row="4" Grid.Column="1" Text="{Binding RealtimeFocalmechanismTable, UpdateSourceTrigger=PropertyChanged}" Style="{StaticResource SettingTextBoxStyle}"/> <TextBox Grid.Row="4" Grid.Column="1" Text="{Binding PostResultTable, UpdateSourceTrigger=PropertyChanged}" Style="{StaticResource SettingTextBoxStyle}"/>
<TextBlock Grid.Row="5" Text="后处理结果表" Style="{StaticResource SettingLabelStyle}"/> <TextBlock Grid.Row="5" Text="后处理波形表" Style="{StaticResource SettingLabelStyle}"/>
<TextBox Grid.Row="5" Grid.Column="1" Text="{Binding PostResultTable, UpdateSourceTrigger=PropertyChanged}" Style="{StaticResource SettingTextBoxStyle}"/> <TextBox Grid.Row="5" Grid.Column="1" Text="{Binding PostWaveDataTable, UpdateSourceTrigger=PropertyChanged}" Style="{StaticResource SettingTextBoxStyle}"/>
<TextBlock Grid.Row="6" Text="后处理波形表" Style="{StaticResource SettingLabelStyle}"/> <TextBlock Grid.Row="6" Text="后处理震源机制表" Style="{StaticResource SettingLabelStyle}"/>
<TextBox Grid.Row="6" Grid.Column="1" Text="{Binding PostWaveDataTable, UpdateSourceTrigger=PropertyChanged}" Style="{StaticResource SettingTextBoxStyle}"/> <TextBox Grid.Row="6" Grid.Column="1" Text="{Binding PostFocalmechanismTable, UpdateSourceTrigger=PropertyChanged}" Style="{StaticResource SettingTextBoxStyle}"/>
<TextBlock Grid.Row="7" Text="后处理震源机制表" Style="{StaticResource SettingLabelStyle}"/>
<TextBox Grid.Row="7" Grid.Column="1" Text="{Binding PostFocalmechanismTable, UpdateSourceTrigger=PropertyChanged}" Style="{StaticResource SettingTextBoxStyle}"/>
</Grid> </Grid>
</GroupBox> </GroupBox>

Loading…
Cancel
Save