This commit is contained in:
Michael Green
2024-12-28 16:19:05 +11:00
parent c170d98a68
commit 1727a62150
6 changed files with 109 additions and 83 deletions

View File

@@ -25,6 +25,7 @@ namespace gaseous_server.Classes
} }
string sql = "SELECT Platform.Id, Platform.`Name`, COUNT(Game.Id) AS GameCount FROM (SELECT DISTINCT Game.Id, view_Games_Roms.PlatformId, COUNT(view_Games_Roms.Id) AS RomCount FROM Game LEFT JOIN AgeGroup ON Game.Id = AgeGroup.GameId LEFT JOIN view_Games_Roms ON Game.Id = view_Games_Roms.GameId WHERE (" + ageRestriction_Platform + ") GROUP BY Game.Id , view_Games_Roms.PlatformId HAVING RomCount > 0) Game JOIN Platform ON Game.PlatformId = Platform.Id GROUP BY Platform.`Name`;"; string sql = "SELECT Platform.Id, Platform.`Name`, COUNT(Game.Id) AS GameCount FROM (SELECT DISTINCT Game.Id, view_Games_Roms.PlatformId, COUNT(view_Games_Roms.Id) AS RomCount FROM Game LEFT JOIN AgeGroup ON Game.Id = AgeGroup.GameId LEFT JOIN view_Games_Roms ON Game.Id = view_Games_Roms.GameId WHERE (" + ageRestriction_Platform + ") GROUP BY Game.Id , view_Games_Roms.PlatformId HAVING RomCount > 0) Game JOIN Platform ON Game.PlatformId = Platform.Id GROUP BY Platform.`Name`;";
Console.WriteLine(sql);
DataTable dbResponse = db.ExecuteCMD(sql, new Database.DatabaseMemoryCacheOptions(CacheEnabled: true, ExpirationSeconds: 300)); DataTable dbResponse = db.ExecuteCMD(sql, new Database.DatabaseMemoryCacheOptions(CacheEnabled: true, ExpirationSeconds: 300));

View File

@@ -287,8 +287,11 @@ ORDER BY Platform.`Name`;";
foreach (DataRow row in data.Rows) foreach (DataRow row in data.Rows)
{ {
HasheousClient.Models.Metadata.IGDB.Platform platform = Platforms.GetPlatform((long)row["PlatformId"]); HasheousClient.Models.Metadata.IGDB.Platform platform = Platforms.GetPlatform((long)row["PlatformId"]);
// get the user emulator configuration
PlatformMapping.UserEmulatorConfiguration? emulatorConfiguration = platformMapping.GetUserEmulator(UserId, GameId, (long)platform.Id); PlatformMapping.UserEmulatorConfiguration? emulatorConfiguration = platformMapping.GetUserEmulator(UserId, GameId, (long)platform.Id);
// if no user configuration, get the platform emulator configuration
if (emulatorConfiguration == null) if (emulatorConfiguration == null)
{ {
if (platform.Id != 0) if (platform.Id != 0)
@@ -303,7 +306,11 @@ ORDER BY Platform.`Name`;";
EnableBIOSFiles = platformMap.EnabledBIOSHashes EnableBIOSFiles = platformMap.EnabledBIOSHashes
}; };
} }
else }
}
// if still no configuration, create a blank one
if (emulatorConfiguration == null)
{ {
emulatorConfiguration = new PlatformMapping.UserEmulatorConfiguration emulatorConfiguration = new PlatformMapping.UserEmulatorConfiguration
{ {
@@ -312,8 +319,6 @@ ORDER BY Platform.`Name`;";
EnableBIOSFiles = new List<string>() EnableBIOSFiles = new List<string>()
}; };
} }
}
}
long? LastPlayedRomId = null; long? LastPlayedRomId = null;
bool? LastPlayedIsMediagroup = false; bool? LastPlayedIsMediagroup = false;

View File

@@ -334,7 +334,7 @@ namespace gaseous_server.Classes.Metadata
switch (propertyTypeName.ToLower()) switch (propertyTypeName.ToLower())
{ {
case "system.collections.generic.list": case "system.collections.generic.list":
var listArray = Newtonsoft.Json.JsonConvert.DeserializeObject<List<object>>(value.ToString()); var listArray = Newtonsoft.Json.JsonConvert.DeserializeObject<List<long>>(value.ToString());
property.SetValue(EndpointType, listArray); property.SetValue(EndpointType, listArray);
break; break;

View File

@@ -345,7 +345,15 @@ namespace gaseous_server.Classes
try try
{ {
MetadataSources metadataSource = (MetadataSources)Enum.Parse(typeof(MetadataSources), dr["GameIdType"].ToString()); MetadataSources metadataSource;
if (dr["GameIdType"] == DBNull.Value)
{
Logging.Log(Logging.LogType.Information, "Metadata Refresh", "(" + StatusCounter + "/" + dt.Rows.Count + "): Unable to refresh metadata for game " + dr["name"] + " (" + dr["id"] + ") - no source type specified");
}
else
{
metadataSource = (MetadataSources)Enum.Parse(typeof(MetadataSources), dr["GameIdType"].ToString());
Logging.Log(Logging.LogType.Information, "Metadata Refresh", "(" + StatusCounter + "/" + dt.Rows.Count + "): Refreshing metadata for game " + dr["name"] + " (" + dr["id"] + ") using source " + metadataSource.ToString()); Logging.Log(Logging.LogType.Information, "Metadata Refresh", "(" + StatusCounter + "/" + dt.Rows.Count + "): Refreshing metadata for game " + dr["name"] + " (" + dr["id"] + ") using source " + metadataSource.ToString());
HasheousClient.Models.Metadata.IGDB.Game game = Metadata.Games.GetGame(metadataSource, (long)dr["id"]); HasheousClient.Models.Metadata.IGDB.Game game = Metadata.Games.GetGame(metadataSource, (long)dr["id"]);
@@ -442,6 +450,7 @@ namespace gaseous_server.Classes
} }
} }
} }
}
catch (Exception ex) catch (Exception ex)
{ {
Logging.Log(Logging.LogType.Critical, "Metadata Refresh", "An error occurred while refreshing metadata for " + dr["name"], ex); Logging.Log(Logging.LogType.Critical, "Metadata Refresh", "An error occurred while refreshing metadata for " + dr["name"], ex);

View File

@@ -1901,8 +1901,9 @@ div[name="properties_profile_toc_item"]:hover {
button:not(.select2-selection__choice__remove):not(.select2-selection__clear):not(.ejs_menu_button):not(.bigbutton) { button:not(.select2-selection__choice__remove):not(.select2-selection__clear):not(.ejs_menu_button):not(.bigbutton) {
background-color: var(--button-background); background-color: var(--button-background);
background: var(--button-background-gradient);
color: var(--button-font-colour); color: var(--button-font-colour);
border-width: 1px; border-width: 0px;
border-color: var(--button-border); border-color: var(--button-border);
border-style: solid; border-style: solid;
border-radius: var(--standard-radius); border-radius: var(--standard-radius);
@@ -1918,6 +1919,7 @@ button:not(.select2-selection__choice__remove):not(.select2-selection__clear):no
button:not(.select2-selection__choice__remove):not(.select2-selection__clear):not(.ejs_menu_button):hover { button:not(.select2-selection__choice__remove):not(.select2-selection__clear):not(.ejs_menu_button):hover {
background-color: var(--button-background-hover); background-color: var(--button-background-hover);
background: var(--button-background-hover);
border-color: var(--button-border-hover); border-color: var(--button-border-hover);
color: var(--button-font-colour-hover); color: var(--button-font-colour-hover);
cursor: pointer; cursor: pointer;
@@ -1947,36 +1949,42 @@ button:not(.select2-selection__choice__remove):not(.select2-selection__clear):no
.redbutton { .redbutton {
background-color: var(--button-red-background) !important; background-color: var(--button-red-background) !important;
background: var(--button-red-background-gradient) !important;
border-color: var(--button-red-border) !important; border-color: var(--button-red-border) !important;
color: var(--button-red-font-colour) !important; color: var(--button-red-font-colour) !important;
} }
.redbutton:hover { .redbutton:hover {
background-color: var(--button-red-background-hover) !important; background-color: var(--button-red-background-hover) !important;
background: var(--button-red-background-hover) !important;
border-color: var(--button-red-border-hover) !important; border-color: var(--button-red-border-hover) !important;
color: var(--button-red-font-colour-hover) !important; color: var(--button-red-font-colour-hover) !important;
} }
.redbutton:disabled { .redbutton:disabled {
background-color: var(--button-red-background-disabled) !important; background-color: var(--button-red-background-disabled) !important;
background: var(--button-red-background-disabled) !important;
border-color: var(--button-red-border-disabled) !important; border-color: var(--button-red-border-disabled) !important;
color: var(--button-red-font-colour-disabled) !important; color: var(--button-red-font-colour-disabled) !important;
} }
.bluebutton { .bluebutton {
background-color: var(--button-blue-background) !important; background-color: var(--button-blue-background) !important;
background: var(--button-blue-background-gradient) !important;
border-color: var(--button-blue-border) !important; border-color: var(--button-blue-border) !important;
color: var(--button-blue-font-colour) !important; color: var(--button-blue-font-colour) !important;
} }
.bluebutton:hover { .bluebutton:hover {
background-color: var(--button-blue-background-hover) !important; background-color: var(--button-blue-background-hover) !important;
background: var(--button-blue-background-hover) !important;
border-color: var(--button-blue-border-hover) !important; border-color: var(--button-blue-border-hover) !important;
color: var(--button-blue-font-colour-hover) !important; color: var(--button-blue-font-colour-hover) !important;
} }
.bluebutton:disabled { .bluebutton:disabled {
background-color: var(--button-blue-background-disabled) !important; background-color: var(--button-blue-background-disabled) !important;
background: var(--button-blue-background-disabled) !important;
border-color: var(--button-blue-border-disabled) !important; border-color: var(--button-blue-border-disabled) !important;
color: var(--button-blue-font-colour-disabled) !important; color: var(--button-blue-font-colour-disabled) !important;
} }

View File

@@ -42,7 +42,8 @@
--input-font-colour: var(--page-font-colour); --input-font-colour: var(--page-font-colour);
/* button */ /* button */
--button-background: rgb(85, 85, 85); --button-background: rgb(110, 109, 109);
--button-background-gradient: linear-gradient(140deg, rgba(110, 109, 109, 1) 0%, rgba(85, 85, 85, 1) 100%);
--button-background-hover: rgb(136, 136, 136); --button-background-hover: rgb(136, 136, 136);
--button-background-disabled: var(--button-background-hover); --button-background-disabled: var(--button-background-hover);
--button-border: rgb(85, 85, 85); --button-border: rgb(85, 85, 85);
@@ -51,19 +52,21 @@
--button-font-colour: rgb(255, 255, 255); --button-font-colour: rgb(255, 255, 255);
--button-font-colour-hover: var(--button-font-colour); --button-font-colour-hover: var(--button-font-colour);
--button-font-colour-disabled: var(--button-border-hover); --button-font-colour-disabled: var(--button-border-hover);
--button-red-background: darkred; --button-red-background: rgb(139, 0, 0);
--button-red-background-hover: red; --button-red-background-gradient: linear-gradient(140deg, rgba(255, 0, 0, 1) 0%, rgba(139, 0, 0, 1) 100%);
--button-red-background-hover: rgb(255, 0, 0);
--button-red-background-disabled: rgb(85, 85, 85); --button-red-background-disabled: rgb(85, 85, 85);
--button-red-border: darkred; --button-red-border: rgb(139, 0, 0);
--button-red-border-hover: red; --button-red-border-hover: rgb(255, 0, 0);
--button-red-border-disabled: rgb(85, 85, 85); --button-red-border-disabled: rgb(85, 85, 85);
--button-red-font-colour: rgb(255, 255, 255); --button-red-font-colour: rgb(255, 255, 255);
--button-red-font-colour-hover: var(--button-red-font-colour); --button-red-font-colour-hover: var(--button-red-font-colour);
--button-red-font-colour-disabled: var(--button-red-font-colour); --button-red-font-colour-disabled: var(--button-red-font-colour);
--button-blue-background: rgb(0, 0, 170); --button-blue-background: rgb(0, 0, 170);
--button-blue-background-gradient: linear-gradient(140deg, rgba(0, 0, 255, 1) 0%, rgba(0, 0, 150, 1) 100%);
--button-blue-background-hover: rgb(0, 0, 255); --button-blue-background-hover: rgb(0, 0, 255);
--button-blue-background-disabled: rgb(85, 85, 85); --button-blue-background-disabled: rgb(85, 85, 85);
--button-blue-border: rgb(0, 0, 170); --button-blue-border: rgb(0, 0, 255);
--button-blue-border-hover: rgb(0, 0, 255); --button-blue-border-hover: rgb(0, 0, 255);
--button-blue-border-disabled: rgb(85, 85, 85); --button-blue-border-disabled: rgb(85, 85, 85);
--button-blue-font-colour: rgb(255, 255, 255); --button-blue-font-colour: rgb(255, 255, 255);