Finished Extension and Server
This commit is contained in:
parent
873462ec5e
commit
12b7fc6553
13 changed files with 151 additions and 55 deletions
|
|
@ -42,7 +42,6 @@ function updateHorseButton() {
|
||||||
console.error("Failed to get horse basic data:", basicDataResponse ? basicDataResponse.message : "No response");
|
console.error("Failed to get horse basic data:", basicDataResponse ? basicDataResponse.message : "No response");
|
||||||
return; // Beende die Kette
|
return; // Beende die Kette
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log("Horse data received:", basicDataResponse.data);
|
console.log("Horse data received:", basicDataResponse.data);
|
||||||
const horseData = basicDataResponse.data;
|
const horseData = basicDataResponse.data;
|
||||||
|
|
||||||
|
|
@ -58,7 +57,6 @@ function updateHorseButton() {
|
||||||
return setBaseDataHorseAPI(horseData.id, horseData)
|
return setBaseDataHorseAPI(horseData.id, horseData)
|
||||||
.then(() => {
|
.then(() => {
|
||||||
console.log("Base data updated in API for horse ID:", horseData.id);
|
console.log("Base data updated in API for horse ID:", horseData.id);
|
||||||
|
|
||||||
// Schritt 2: Aktuelle Horse-Daten holen (abhängig vom aktiven Tab)
|
// Schritt 2: Aktuelle Horse-Daten holen (abhängig vom aktiven Tab)
|
||||||
return sendMessageAsync(activeTabId, { action: "getHorseCurrentData", data: { id: horseData.id } })
|
return sendMessageAsync(activeTabId, { action: "getHorseCurrentData", data: { id: horseData.id } })
|
||||||
.then((currentDataResponse) => {
|
.then((currentDataResponse) => {
|
||||||
|
|
|
||||||
|
|
@ -23,9 +23,10 @@ chrome.runtime.onMessage.addListener(async (request, sender, sendResponse) => {
|
||||||
name: (document.title.replace(/ - Horse Reality.*$/, '') || "Unknown").trim(),
|
name: (document.title.replace(/ - Horse Reality.*$/, '') || "Unknown").trim(),
|
||||||
gender: genderEl.alt || "Unknown",
|
gender: genderEl.alt || "Unknown",
|
||||||
breed: breedEl.innerText || "Unknown",
|
breed: breedEl.innerText || "Unknown",
|
||||||
link: window.location.href || ""
|
link: window.location.href || "",
|
||||||
|
lastDrawnDate: Date.now()
|
||||||
};
|
};
|
||||||
|
updateSingleLoadStateUI("Basic", true, false);
|
||||||
console.log("Horse data gathered:", horseData);
|
console.log("Horse data gathered:", horseData);
|
||||||
sendResponse({ success: true, data: horseData });
|
sendResponse({ success: true, data: horseData });
|
||||||
|
|
||||||
|
|
@ -60,7 +61,7 @@ chrome.runtime.onMessage.addListener(async (request, sender, sendResponse) => {
|
||||||
console.error("Error in Summary tab:", error);
|
console.error("Error in Summary tab:", error);
|
||||||
sendResponse({ success: false, message: error.message });
|
sendResponse({ success: false, message: error.message });
|
||||||
}
|
}
|
||||||
|
updateSingleLoadStateUI("Summary", true, false);
|
||||||
} else if (selectedTab === "Training") {
|
} else if (selectedTab === "Training") {
|
||||||
const trainingEl8 = document.querySelector('.top:nth-child(8)');
|
const trainingEl8 = document.querySelector('.top:nth-child(8)');
|
||||||
const trainingEl6 = document.querySelector('.top:nth-child(6)');
|
const trainingEl6 = document.querySelector('.top:nth-child(6)');
|
||||||
|
|
@ -83,7 +84,7 @@ chrome.runtime.onMessage.addListener(async (request, sender, sendResponse) => {
|
||||||
console.error("Error in Training tab:", error);
|
console.error("Error in Training tab:", error);
|
||||||
sendResponse({ success: false, message: error.message });
|
sendResponse({ success: false, message: error.message });
|
||||||
}
|
}
|
||||||
|
updateSingleLoadStateUI("Training", true);
|
||||||
} else if (selectedTab === "Genetics") {
|
} else if (selectedTab === "Genetics") {
|
||||||
try {
|
try {
|
||||||
const gpDiv = Array.from(document.querySelectorAll('.top div')).find(el => el.innerText.includes('GP'));
|
const gpDiv = Array.from(document.querySelectorAll('.top div')).find(el => el.innerText.includes('GP'));
|
||||||
|
|
@ -162,7 +163,7 @@ chrome.runtime.onMessage.addListener(async (request, sender, sendResponse) => {
|
||||||
console.error("Error while processing Genetics tab:", error);
|
console.error("Error while processing Genetics tab:", error);
|
||||||
sendResponse({ success: false, message: error.message });
|
sendResponse({ success: false, message: error.message });
|
||||||
}
|
}
|
||||||
|
updateSingleLoadStateUI("Genetics", true, false);
|
||||||
} else if (selectedTab === "Achievements") {
|
} else if (selectedTab === "Achievements") {
|
||||||
const geneticStatsEls = document.querySelectorAll('.genetic_stats');
|
const geneticStatsEls = document.querySelectorAll('.genetic_stats');
|
||||||
if (!geneticStatsEls || geneticStatsEls.length === 0) {
|
if (!geneticStatsEls || geneticStatsEls.length === 0) {
|
||||||
|
|
@ -257,7 +258,7 @@ chrome.runtime.onMessage.addListener(async (request, sender, sendResponse) => {
|
||||||
console.error("Error in Achievements tab:", error);
|
console.error("Error in Achievements tab:", error);
|
||||||
sendResponse({ success: false, message: error.message });
|
sendResponse({ success: false, message: error.message });
|
||||||
}
|
}
|
||||||
|
updateSingleLoadStateUI("Achievements", true, true);
|
||||||
} else if (selectedTab === "Health") {
|
} else if (selectedTab === "Health") {
|
||||||
const healthEl = document.querySelector("#tab_health2 p");
|
const healthEl = document.querySelector("#tab_health2 p");
|
||||||
if (!healthEl) {
|
if (!healthEl) {
|
||||||
|
|
@ -285,7 +286,7 @@ chrome.runtime.onMessage.addListener(async (request, sender, sendResponse) => {
|
||||||
console.error("Error in Health tab:", error);
|
console.error("Error in Health tab:", error);
|
||||||
sendResponse({ success: false, message: error.message });
|
sendResponse({ success: false, message: error.message });
|
||||||
}
|
}
|
||||||
|
updateSingleLoadStateUI("Health", true, false);
|
||||||
} else {
|
} else {
|
||||||
console.error("Unknown or no tab selected.");
|
console.error("Unknown or no tab selected.");
|
||||||
sendResponse({ success: false, message: "Unknown or no tab selected." });
|
sendResponse({ success: false, message: "Unknown or no tab selected." });
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,11 @@
|
||||||
|
const rows = [
|
||||||
|
{ label: 'Basic', emojiId: 'emojiBasic', emoji: '❌' },
|
||||||
|
{ label: 'Summary', emojiId: 'emojiSummary', emoji: '❌' },
|
||||||
|
{ label: 'Training', emojiId: 'emojiTraining', emoji: '❌' },
|
||||||
|
{ label: 'Genetics', emojiId: 'emojiGenetics', emoji: '❌' },
|
||||||
|
{ label: 'Achievements', emojiId: 'emojiAchievements', emoji: '❌' },
|
||||||
|
{ label: 'Health', emojiId: 'emojiHealth', emoji: '❌' },
|
||||||
|
];
|
||||||
// Warten, bis das DOM vollständig geladen ist
|
// Warten, bis das DOM vollständig geladen ist
|
||||||
document.addEventListener("DOMContentLoaded", function () {
|
document.addEventListener("DOMContentLoaded", function () {
|
||||||
// Suche nach dem Element mit der Klasse 'horse_banner'
|
// Suche nach dem Element mit der Klasse 'horse_banner'
|
||||||
|
|
@ -54,17 +62,6 @@ document.addEventListener("DOMContentLoaded", function () {
|
||||||
width: '100%',
|
width: '100%',
|
||||||
gap: '12px' // Abstand zwischen den Zeilen
|
gap: '12px' // Abstand zwischen den Zeilen
|
||||||
});
|
});
|
||||||
|
|
||||||
// Beschriftungen und Emoji-Elemente
|
|
||||||
const rows = [
|
|
||||||
{ label: 'Basic', emojiId: 'emojiBasic', emoji: '❌' },
|
|
||||||
{ label: 'Summary', emojiId: 'emojiSummary', emoji: '❌' },
|
|
||||||
{ label: 'Training', emojiId: 'emojiTraining', emoji: '❌' },
|
|
||||||
{ label: 'Genetics', emojiId: 'emojiGenetics', emoji: '❌' },
|
|
||||||
{ label: 'Achievements', emojiId: 'emojiAchievements', emoji: '❌' },
|
|
||||||
{ label: 'Health', emojiId: 'emojiHealth', emoji: '❌' },
|
|
||||||
];
|
|
||||||
|
|
||||||
// Erstelle Zeilen für jede Beschriftung
|
// Erstelle Zeilen für jede Beschriftung
|
||||||
rows.forEach(row => {
|
rows.forEach(row => {
|
||||||
const rowDiv = document.createElement('div');
|
const rowDiv = document.createElement('div');
|
||||||
|
|
@ -155,5 +152,56 @@ document.addEventListener("DOMContentLoaded", function () {
|
||||||
div.appendChild(legendTitle);
|
div.appendChild(legendTitle);
|
||||||
div.appendChild(legend);
|
div.appendChild(legend);
|
||||||
banner.appendChild(div);
|
banner.appendChild(div);
|
||||||
|
|
||||||
|
const horseId = document.querySelector('.right:nth-child(2)').innerText.replace('#', '');
|
||||||
|
updateLoadStateUI(horseId);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
async function updateLoadStateUI(horseId) {
|
||||||
|
const loadState = await getHorseLoadStateAPIAsync(horseId);
|
||||||
|
if (!loadState) {
|
||||||
|
console.error("Failed to retrieve load state.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Mappe die LoadState-Werte auf die UI-Emojis
|
||||||
|
const loadStateMapping = {
|
||||||
|
Basic: loadState.BasicInfoLoaded ? (loadState.BasicInfoNeedsRefresh ? '🔄' : '✅') : '❌',
|
||||||
|
Summary: loadState.SummaryLoaded ? (loadState.SummaryNeedsRefresh ? '🔄' : '✅') : '❌',
|
||||||
|
Training: loadState.TrainingLoaded ? (loadState.TrainingNeedsRefresh ? '🔄' : '✅') : '❌',
|
||||||
|
Genetics: loadState.GeneticsLoaded ? (loadState.GeneticsNeedsRefresh ? '🔄' : '✅') : '❌',
|
||||||
|
Achievements: loadState.AchievementsLoaded ? (loadState.AchievementsNeedsRefresh ? '🔄' : '☑️') : '❌',
|
||||||
|
Health: loadState.HealthLoaded ? (loadState.HealthNeedsRefresh ? '🔄' : '✅') : '❌',
|
||||||
|
};
|
||||||
|
|
||||||
|
// Aktualisiere die Rows in der UI
|
||||||
|
rows.forEach(row => {
|
||||||
|
const emojiElement = document.getElementById(row.emojiId);
|
||||||
|
if (emojiElement && loadStateMapping[row.label]) {
|
||||||
|
emojiElement.textContent = loadStateMapping[row.label]; // Setze das Emoji basierend auf dem Ladezustand
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function updateSingleLoadStateUI(loadStateKey, isLoaded, needsRefresh) {
|
||||||
|
// Mappe das LoadState-Schlüssel auf das Emoji
|
||||||
|
const loadStateMapping = {
|
||||||
|
true: needsRefresh ? '✅' : '☑️', // Geladen, aber möglicherweise veraltet
|
||||||
|
false: '❌' // Nicht geladen
|
||||||
|
};
|
||||||
|
|
||||||
|
// Suche die passende Row basierend auf dem Schlüssel
|
||||||
|
const row = rows.find(row => row.label === loadStateKey);
|
||||||
|
if (!row) {
|
||||||
|
console.error(`Row for ${loadStateKey} not found.`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Aktualisiere das Emoji in der UI
|
||||||
|
const emojiElement = document.getElementById(row.emojiId);
|
||||||
|
if (emojiElement) {
|
||||||
|
emojiElement.textContent = loadStateMapping[isLoaded]; // Setze das Emoji entsprechend des Status
|
||||||
|
} else {
|
||||||
|
console.error(`Emoji element for ${loadStateKey} not found.`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -2,14 +2,14 @@
|
||||||
"Version": 1,
|
"Version": 1,
|
||||||
"WorkspaceRootPath": "Z:\\[01] Kribitz Development\\[02] Projekte\\HR-Collector\\HRServer-Exporter\\",
|
"WorkspaceRootPath": "Z:\\[01] Kribitz Development\\[02] Projekte\\HR-Collector\\HRServer-Exporter\\",
|
||||||
"Documents": [
|
"Documents": [
|
||||||
{
|
|
||||||
"AbsoluteMoniker": "D:0:0:{86A245AC-2CD6-4303-97B9-8463B6B6B8D6}|HRServer\\HRServer.csproj|z:\\[01] kribitz development\\[02] projekte\\hr-collector\\hrserver-exporter\\hrserver\\controllers\\horsecontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
|
||||||
"RelativeMoniker": "D:0:0:{86A245AC-2CD6-4303-97B9-8463B6B6B8D6}|HRServer\\HRServer.csproj|solutionrelative:hrserver\\controllers\\horsecontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"AbsoluteMoniker": "D:0:0:{86A245AC-2CD6-4303-97B9-8463B6B6B8D6}|HRServer\\HRServer.csproj|z:\\[01] kribitz development\\[02] projekte\\hr-collector\\hrserver-exporter\\hrserver\\models\\horse.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
"AbsoluteMoniker": "D:0:0:{86A245AC-2CD6-4303-97B9-8463B6B6B8D6}|HRServer\\HRServer.csproj|z:\\[01] kribitz development\\[02] projekte\\hr-collector\\hrserver-exporter\\hrserver\\models\\horse.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||||
"RelativeMoniker": "D:0:0:{86A245AC-2CD6-4303-97B9-8463B6B6B8D6}|HRServer\\HRServer.csproj|solutionrelative:hrserver\\models\\horse.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
"RelativeMoniker": "D:0:0:{86A245AC-2CD6-4303-97B9-8463B6B6B8D6}|HRServer\\HRServer.csproj|solutionrelative:hrserver\\models\\horse.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"AbsoluteMoniker": "D:0:0:{86A245AC-2CD6-4303-97B9-8463B6B6B8D6}|HRServer\\HRServer.csproj|z:\\[01] kribitz development\\[02] projekte\\hr-collector\\hrserver-exporter\\hrserver\\controllers\\horsecontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||||
|
"RelativeMoniker": "D:0:0:{86A245AC-2CD6-4303-97B9-8463B6B6B8D6}|HRServer\\HRServer.csproj|solutionrelative:hrserver\\controllers\\horsecontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"AbsoluteMoniker": "D:0:0:{86A245AC-2CD6-4303-97B9-8463B6B6B8D6}|HRServer\\HRServer.csproj|z:\\[01] kribitz development\\[02] projekte\\hr-collector\\hrserver-exporter\\hrserver\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
"AbsoluteMoniker": "D:0:0:{86A245AC-2CD6-4303-97B9-8463B6B6B8D6}|HRServer\\HRServer.csproj|z:\\[01] kribitz development\\[02] projekte\\hr-collector\\hrserver-exporter\\hrserver\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||||
"RelativeMoniker": "D:0:0:{86A245AC-2CD6-4303-97B9-8463B6B6B8D6}|HRServer\\HRServer.csproj|solutionrelative:hrserver\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
"RelativeMoniker": "D:0:0:{86A245AC-2CD6-4303-97B9-8463B6B6B8D6}|HRServer\\HRServer.csproj|solutionrelative:hrserver\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||||
|
|
@ -26,7 +26,7 @@
|
||||||
"DocumentGroups": [
|
"DocumentGroups": [
|
||||||
{
|
{
|
||||||
"DockedWidth": 200,
|
"DockedWidth": 200,
|
||||||
"SelectedChildIndex": 4,
|
"SelectedChildIndex": 1,
|
||||||
"Children": [
|
"Children": [
|
||||||
{
|
{
|
||||||
"$type": "Bookmark",
|
"$type": "Bookmark",
|
||||||
|
|
@ -34,13 +34,13 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"$type": "Document",
|
"$type": "Document",
|
||||||
"DocumentIndex": 1,
|
"DocumentIndex": 0,
|
||||||
"Title": "Horse.cs",
|
"Title": "Horse.cs",
|
||||||
"DocumentMoniker": "Z:\\[01] Kribitz Development\\[02] Projekte\\HR-Collector\\HRServer-Exporter\\HRServer\\Models\\Horse.cs",
|
"DocumentMoniker": "Z:\\[01] Kribitz Development\\[02] Projekte\\HR-Collector\\HRServer-Exporter\\HRServer\\Models\\Horse.cs",
|
||||||
"RelativeDocumentMoniker": "HRServer\\Models\\Horse.cs",
|
"RelativeDocumentMoniker": "HRServer\\Models\\Horse.cs",
|
||||||
"ToolTip": "Z:\\[01] Kribitz Development\\[02] Projekte\\HR-Collector\\HRServer-Exporter\\HRServer\\Models\\Horse.cs",
|
"ToolTip": "Z:\\[01] Kribitz Development\\[02] Projekte\\HR-Collector\\HRServer-Exporter\\HRServer\\Models\\Horse.cs",
|
||||||
"RelativeToolTip": "HRServer\\Models\\Horse.cs",
|
"RelativeToolTip": "HRServer\\Models\\Horse.cs",
|
||||||
"ViewState": "AgIAALkAAAAAAAAAAAAmwMgAAAA0AAAAAAAAAA==",
|
"ViewState": "AgIAALUAAAAAAAAAAAAwwL4AAAAAAAAAAAAAAA==",
|
||||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||||
"WhenOpened": "2024-12-07T17:50:21.836Z",
|
"WhenOpened": "2024-12-07T17:50:21.836Z",
|
||||||
"EditorCaption": ""
|
"EditorCaption": ""
|
||||||
|
|
@ -73,7 +73,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"$type": "Document",
|
"$type": "Document",
|
||||||
"DocumentIndex": 0,
|
"DocumentIndex": 1,
|
||||||
"Title": "HorseController.cs",
|
"Title": "HorseController.cs",
|
||||||
"DocumentMoniker": "Z:\\[01] Kribitz Development\\[02] Projekte\\HR-Collector\\HRServer-Exporter\\HRServer\\Controllers\\HorseController.cs",
|
"DocumentMoniker": "Z:\\[01] Kribitz Development\\[02] Projekte\\HR-Collector\\HRServer-Exporter\\HRServer\\Controllers\\HorseController.cs",
|
||||||
"RelativeDocumentMoniker": "HRServer\\Controllers\\HorseController.cs",
|
"RelativeDocumentMoniker": "HRServer\\Controllers\\HorseController.cs",
|
||||||
|
|
|
||||||
|
|
@ -2,14 +2,14 @@
|
||||||
"Version": 1,
|
"Version": 1,
|
||||||
"WorkspaceRootPath": "Z:\\[01] Kribitz Development\\[02] Projekte\\HR-Collector\\HRServer-Exporter\\",
|
"WorkspaceRootPath": "Z:\\[01] Kribitz Development\\[02] Projekte\\HR-Collector\\HRServer-Exporter\\",
|
||||||
"Documents": [
|
"Documents": [
|
||||||
{
|
|
||||||
"AbsoluteMoniker": "D:0:0:{86A245AC-2CD6-4303-97B9-8463B6B6B8D6}|HRServer\\HRServer.csproj|z:\\[01] kribitz development\\[02] projekte\\hr-collector\\hrserver-exporter\\hrserver\\models\\horse.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
|
||||||
"RelativeMoniker": "D:0:0:{86A245AC-2CD6-4303-97B9-8463B6B6B8D6}|HRServer\\HRServer.csproj|solutionrelative:hrserver\\models\\horse.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"AbsoluteMoniker": "D:0:0:{86A245AC-2CD6-4303-97B9-8463B6B6B8D6}|HRServer\\HRServer.csproj|z:\\[01] kribitz development\\[02] projekte\\hr-collector\\hrserver-exporter\\hrserver\\controllers\\horsecontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
"AbsoluteMoniker": "D:0:0:{86A245AC-2CD6-4303-97B9-8463B6B6B8D6}|HRServer\\HRServer.csproj|z:\\[01] kribitz development\\[02] projekte\\hr-collector\\hrserver-exporter\\hrserver\\controllers\\horsecontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||||
"RelativeMoniker": "D:0:0:{86A245AC-2CD6-4303-97B9-8463B6B6B8D6}|HRServer\\HRServer.csproj|solutionrelative:hrserver\\controllers\\horsecontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
"RelativeMoniker": "D:0:0:{86A245AC-2CD6-4303-97B9-8463B6B6B8D6}|HRServer\\HRServer.csproj|solutionrelative:hrserver\\controllers\\horsecontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"AbsoluteMoniker": "D:0:0:{86A245AC-2CD6-4303-97B9-8463B6B6B8D6}|HRServer\\HRServer.csproj|z:\\[01] kribitz development\\[02] projekte\\hr-collector\\hrserver-exporter\\hrserver\\models\\horse.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||||
|
"RelativeMoniker": "D:0:0:{86A245AC-2CD6-4303-97B9-8463B6B6B8D6}|HRServer\\HRServer.csproj|solutionrelative:hrserver\\models\\horse.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"AbsoluteMoniker": "D:0:0:{86A245AC-2CD6-4303-97B9-8463B6B6B8D6}|HRServer\\HRServer.csproj|z:\\[01] kribitz development\\[02] projekte\\hr-collector\\hrserver-exporter\\hrserver\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
"AbsoluteMoniker": "D:0:0:{86A245AC-2CD6-4303-97B9-8463B6B6B8D6}|HRServer\\HRServer.csproj|z:\\[01] kribitz development\\[02] projekte\\hr-collector\\hrserver-exporter\\hrserver\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||||
"RelativeMoniker": "D:0:0:{86A245AC-2CD6-4303-97B9-8463B6B6B8D6}|HRServer\\HRServer.csproj|solutionrelative:hrserver\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
"RelativeMoniker": "D:0:0:{86A245AC-2CD6-4303-97B9-8463B6B6B8D6}|HRServer\\HRServer.csproj|solutionrelative:hrserver\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||||
|
|
@ -26,7 +26,7 @@
|
||||||
"DocumentGroups": [
|
"DocumentGroups": [
|
||||||
{
|
{
|
||||||
"DockedWidth": 200,
|
"DockedWidth": 200,
|
||||||
"SelectedChildIndex": 1,
|
"SelectedChildIndex": 4,
|
||||||
"Children": [
|
"Children": [
|
||||||
{
|
{
|
||||||
"$type": "Bookmark",
|
"$type": "Bookmark",
|
||||||
|
|
@ -34,13 +34,13 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"$type": "Document",
|
"$type": "Document",
|
||||||
"DocumentIndex": 0,
|
"DocumentIndex": 1,
|
||||||
"Title": "Horse.cs",
|
"Title": "Horse.cs",
|
||||||
"DocumentMoniker": "Z:\\[01] Kribitz Development\\[02] Projekte\\HR-Collector\\HRServer-Exporter\\HRServer\\Models\\Horse.cs",
|
"DocumentMoniker": "Z:\\[01] Kribitz Development\\[02] Projekte\\HR-Collector\\HRServer-Exporter\\HRServer\\Models\\Horse.cs",
|
||||||
"RelativeDocumentMoniker": "HRServer\\Models\\Horse.cs",
|
"RelativeDocumentMoniker": "HRServer\\Models\\Horse.cs",
|
||||||
"ToolTip": "Z:\\[01] Kribitz Development\\[02] Projekte\\HR-Collector\\HRServer-Exporter\\HRServer\\Models\\Horse.cs",
|
"ToolTip": "Z:\\[01] Kribitz Development\\[02] Projekte\\HR-Collector\\HRServer-Exporter\\HRServer\\Models\\Horse.cs",
|
||||||
"RelativeToolTip": "HRServer\\Models\\Horse.cs",
|
"RelativeToolTip": "HRServer\\Models\\Horse.cs",
|
||||||
"ViewState": "AgIAALUAAAAAAAAAAAAwwL4AAAAAAAAAAAAAAA==",
|
"ViewState": "AgIAALoAAAAAAAAAAAAcwMcAAAAjAAAAAAAAAA==",
|
||||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||||
"WhenOpened": "2024-12-07T17:50:21.836Z",
|
"WhenOpened": "2024-12-07T17:50:21.836Z",
|
||||||
"EditorCaption": ""
|
"EditorCaption": ""
|
||||||
|
|
@ -73,13 +73,13 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"$type": "Document",
|
"$type": "Document",
|
||||||
"DocumentIndex": 1,
|
"DocumentIndex": 0,
|
||||||
"Title": "HorseController.cs",
|
"Title": "HorseController.cs",
|
||||||
"DocumentMoniker": "Z:\\[01] Kribitz Development\\[02] Projekte\\HR-Collector\\HRServer-Exporter\\HRServer\\Controllers\\HorseController.cs",
|
"DocumentMoniker": "Z:\\[01] Kribitz Development\\[02] Projekte\\HR-Collector\\HRServer-Exporter\\HRServer\\Controllers\\HorseController.cs",
|
||||||
"RelativeDocumentMoniker": "HRServer\\Controllers\\HorseController.cs",
|
"RelativeDocumentMoniker": "HRServer\\Controllers\\HorseController.cs",
|
||||||
"ToolTip": "Z:\\[01] Kribitz Development\\[02] Projekte\\HR-Collector\\HRServer-Exporter\\HRServer\\Controllers\\HorseController.cs",
|
"ToolTip": "Z:\\[01] Kribitz Development\\[02] Projekte\\HR-Collector\\HRServer-Exporter\\HRServer\\Controllers\\HorseController.cs",
|
||||||
"RelativeToolTip": "HRServer\\Controllers\\HorseController.cs",
|
"RelativeToolTip": "HRServer\\Controllers\\HorseController.cs",
|
||||||
"ViewState": "AgIAADgAAAAAAAAAAAAcwEAAAABOAAAAAAAAAA==",
|
"ViewState": "AgIAABUAAAAAAAAAAAAowC4AAAAJAAAAAAAAAA==",
|
||||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||||
"WhenOpened": "2024-12-07T13:05:14.341Z",
|
"WhenOpened": "2024-12-07T13:05:14.341Z",
|
||||||
"EditorCaption": ""
|
"EditorCaption": ""
|
||||||
|
|
|
||||||
|
|
@ -27,6 +27,7 @@ namespace HRServer.Controllers
|
||||||
horse = new Horse { Id = (ulong)id };
|
horse = new Horse { Id = (ulong)id };
|
||||||
HorseFactory.AddOrUpdateHorse(horse);
|
HorseFactory.AddOrUpdateHorse(horse);
|
||||||
}
|
}
|
||||||
|
HorseFactory.SaveHorsesToFile();
|
||||||
return Ok(horse);
|
return Ok(horse);
|
||||||
}
|
}
|
||||||
[HttpGet("/api/getHorse/{id}/LoadState")]
|
[HttpGet("/api/getHorse/{id}/LoadState")]
|
||||||
|
|
@ -41,8 +42,12 @@ namespace HRServer.Controllers
|
||||||
horse = new Horse { Id = (ulong)id };
|
horse = new Horse { Id = (ulong)id };
|
||||||
HorseFactory.AddOrUpdateHorse(horse);
|
HorseFactory.AddOrUpdateHorse(horse);
|
||||||
}
|
}
|
||||||
|
if (horse.LastDrawnDate.AddDays(1) < DateTime.Now)
|
||||||
|
{
|
||||||
|
horse.LoadState.AchievementsNeedsRefresh = true;
|
||||||
|
}
|
||||||
// Gib den Ladezustand des Pferdes zurück
|
// Gib den Ladezustand des Pferdes zurück
|
||||||
|
HorseFactory.SaveHorsesToFile();
|
||||||
return Ok(horse.LoadState);
|
return Ok(horse.LoadState);
|
||||||
}
|
}
|
||||||
[HttpPost("/api/updateHorse/{id}/BasicData")]
|
[HttpPost("/api/updateHorse/{id}/BasicData")]
|
||||||
|
|
@ -59,6 +64,7 @@ namespace HRServer.Controllers
|
||||||
localHorse.HorseName = localHorse.HorseName;
|
localHorse.HorseName = localHorse.HorseName;
|
||||||
localHorse.Gender = localHorse.Gender;
|
localHorse.Gender = localHorse.Gender;
|
||||||
localHorse.Link = localHorse.Link;
|
localHorse.Link = localHorse.Link;
|
||||||
|
HorseFactory.SaveHorsesToFile();
|
||||||
return Ok(localHorse);
|
return Ok(localHorse);
|
||||||
}
|
}
|
||||||
[HttpPost("/api/updateHorse/{id}/Pedigree")]
|
[HttpPost("/api/updateHorse/{id}/Pedigree")]
|
||||||
|
|
@ -71,6 +77,7 @@ namespace HRServer.Controllers
|
||||||
HorseFactory.AddOrUpdateHorse(localHorse);
|
HorseFactory.AddOrUpdateHorse(localHorse);
|
||||||
}
|
}
|
||||||
localHorse.Summary = websiteHorseSummary;
|
localHorse.Summary = websiteHorseSummary;
|
||||||
|
HorseFactory.SaveHorsesToFile();
|
||||||
return Ok(localHorse);
|
return Ok(localHorse);
|
||||||
}
|
}
|
||||||
[HttpPost("/api/updateHorse/{id}/Training")]
|
[HttpPost("/api/updateHorse/{id}/Training")]
|
||||||
|
|
@ -83,6 +90,7 @@ namespace HRServer.Controllers
|
||||||
HorseFactory.AddOrUpdateHorse(localHorse);
|
HorseFactory.AddOrUpdateHorse(localHorse);
|
||||||
}
|
}
|
||||||
localHorse.Training = websiteHorseTraining;
|
localHorse.Training = websiteHorseTraining;
|
||||||
|
HorseFactory.SaveHorsesToFile();
|
||||||
return Ok(localHorse);
|
return Ok(localHorse);
|
||||||
}
|
}
|
||||||
[HttpPost("/api/updateHorse/{id}/Health")]
|
[HttpPost("/api/updateHorse/{id}/Health")]
|
||||||
|
|
@ -95,6 +103,7 @@ namespace HRServer.Controllers
|
||||||
HorseFactory.AddOrUpdateHorse(localHorse);
|
HorseFactory.AddOrUpdateHorse(localHorse);
|
||||||
}
|
}
|
||||||
localHorse.Health = websiteHorseHealth;
|
localHorse.Health = websiteHorseHealth;
|
||||||
|
HorseFactory.SaveHorsesToFile();
|
||||||
return Ok(localHorse);
|
return Ok(localHorse);
|
||||||
}
|
}
|
||||||
[HttpPost("/api/updateHorse/{id}/Genetics")]
|
[HttpPost("/api/updateHorse/{id}/Genetics")]
|
||||||
|
|
@ -107,6 +116,7 @@ namespace HRServer.Controllers
|
||||||
HorseFactory.AddOrUpdateHorse(localHorse);
|
HorseFactory.AddOrUpdateHorse(localHorse);
|
||||||
}
|
}
|
||||||
localHorse.Genetics = websiteHorseGenetics;
|
localHorse.Genetics = websiteHorseGenetics;
|
||||||
|
HorseFactory.SaveHorsesToFile();
|
||||||
return Ok(localHorse);
|
return Ok(localHorse);
|
||||||
}
|
}
|
||||||
[HttpPost("/api/updateHorse/{id}/Achievements")]
|
[HttpPost("/api/updateHorse/{id}/Achievements")]
|
||||||
|
|
@ -118,7 +128,24 @@ namespace HRServer.Controllers
|
||||||
localHorse = new Horse { Id = (ulong)id };
|
localHorse = new Horse { Id = (ulong)id };
|
||||||
HorseFactory.AddOrUpdateHorse(localHorse);
|
HorseFactory.AddOrUpdateHorse(localHorse);
|
||||||
}
|
}
|
||||||
|
if (websiteHorseAchievements.MaxShowResult < localHorse.Achievements.MaxShowResult)
|
||||||
|
{
|
||||||
|
websiteHorseAchievements.MaxShowResult = localHorse.Achievements.MaxShowResult;
|
||||||
|
}
|
||||||
|
if (websiteHorseAchievements.MinShowResult > localHorse.Achievements.MinShowResult)
|
||||||
|
{
|
||||||
|
websiteHorseAchievements.MinShowResult = localHorse.Achievements.MinShowResult;
|
||||||
|
}
|
||||||
|
if (websiteHorseAchievements.MaxCompetitionResult < localHorse.Achievements.MaxCompetitionResult)
|
||||||
|
{
|
||||||
|
websiteHorseAchievements.MaxCompetitionResult = localHorse.Achievements.MaxCompetitionResult;
|
||||||
|
}
|
||||||
|
if (websiteHorseAchievements.MinCompetitionResult > localHorse.Achievements.MinCompetitionResult)
|
||||||
|
{
|
||||||
|
websiteHorseAchievements.MinCompetitionResult = localHorse.Achievements.MinCompetitionResult;
|
||||||
|
}
|
||||||
localHorse.Achievements = websiteHorseAchievements;
|
localHorse.Achievements = websiteHorseAchievements;
|
||||||
|
HorseFactory.SaveHorsesToFile();
|
||||||
return Ok(localHorse);
|
return Ok(localHorse);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,13 @@
|
||||||
using System.Text.Json.Serialization;
|
using System.Text.Json;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
|
|
||||||
namespace HRServer.Models
|
namespace HRServer.Models
|
||||||
{
|
{
|
||||||
public static class HorseFactory
|
public static class HorseFactory
|
||||||
{
|
{
|
||||||
|
public static string HorseDataPath = "horses.json";
|
||||||
// Thread-safe Dictionary
|
// Thread-safe Dictionary
|
||||||
private static readonly Dictionary<ulong, Horse> Horses = new();
|
private static Dictionary<ulong, Horse> Horses = new();
|
||||||
public static Horse? GetHorse(ulong id)
|
public static Horse? GetHorse(ulong id)
|
||||||
{
|
{
|
||||||
return Horses.TryGetValue(id, out var horse) ? horse : null;
|
return Horses.TryGetValue(id, out var horse) ? horse : null;
|
||||||
|
|
@ -17,11 +19,23 @@ namespace HRServer.Models
|
||||||
|
|
||||||
Horses[horse.Id.Value] = horse;
|
Horses[horse.Id.Value] = horse;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IReadOnlyDictionary<ulong, Horse> GetAllHorses()
|
public static IReadOnlyDictionary<ulong, Horse> GetAllHorses()
|
||||||
{
|
{
|
||||||
return Horses;
|
return Horses;
|
||||||
}
|
}
|
||||||
|
public static void SaveHorsesToFile()
|
||||||
|
{
|
||||||
|
var json = JsonSerializer.Serialize(Horses);
|
||||||
|
File.WriteAllText(HorseDataPath, json);
|
||||||
|
}
|
||||||
|
public static void LoadHorsesFromFile()
|
||||||
|
{
|
||||||
|
if (!File.Exists(HorseDataPath))
|
||||||
|
return;
|
||||||
|
|
||||||
|
var json = File.ReadAllText(HorseDataPath);
|
||||||
|
Horses = JsonSerializer.Deserialize<Dictionary<ulong, Horse>>(json);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public class Horse
|
public class Horse
|
||||||
|
|
@ -39,6 +53,8 @@ namespace HRServer.Models
|
||||||
private string _breed = string.Empty;
|
private string _breed = string.Empty;
|
||||||
[JsonPropertyName("link")]
|
[JsonPropertyName("link")]
|
||||||
private string _link = string.Empty;
|
private string _link = string.Empty;
|
||||||
|
[JsonPropertyName("lastDrawnDate")]
|
||||||
|
private DateTime _lastDrawnDate = DateTime.Now;
|
||||||
|
|
||||||
public ulong? Id
|
public ulong? Id
|
||||||
{
|
{
|
||||||
|
|
@ -56,7 +72,6 @@ namespace HRServer.Models
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
_age = value;
|
_age = value;
|
||||||
LoadState.BasicInfoLoaded = true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -66,7 +81,6 @@ namespace HRServer.Models
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
_horseName = value;
|
_horseName = value;
|
||||||
LoadState.BasicInfoLoaded = true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -76,7 +90,6 @@ namespace HRServer.Models
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
_gender = value;
|
_gender = value;
|
||||||
LoadState.BasicInfoLoaded = true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -86,7 +99,6 @@ namespace HRServer.Models
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
_breed = value;
|
_breed = value;
|
||||||
LoadState.BasicInfoLoaded = true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -96,10 +108,16 @@ namespace HRServer.Models
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
_link = value;
|
_link = value;
|
||||||
LoadState.BasicInfoLoaded = true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
public DateTime LastDrawnDate
|
||||||
|
{
|
||||||
|
get => _lastDrawnDate;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_lastDrawnDate = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
private HorseSummary _summary = new();
|
private HorseSummary _summary = new();
|
||||||
public HorseSummary Summary
|
public HorseSummary Summary
|
||||||
{
|
{
|
||||||
|
|
@ -177,11 +195,17 @@ namespace HRServer.Models
|
||||||
public class DataLoadState
|
public class DataLoadState
|
||||||
{
|
{
|
||||||
public bool BasicInfoLoaded { get; set; } = false;
|
public bool BasicInfoLoaded { get; set; } = false;
|
||||||
|
public bool BasicInfoNeedsRefresh { get; set; } = false;
|
||||||
public bool SummaryLoaded { get; set; } = false;
|
public bool SummaryLoaded { get; set; } = false;
|
||||||
|
public bool SummaryNeedsRefresh { get; set; } = false;
|
||||||
public bool TrainingLoaded { get; set; } = false;
|
public bool TrainingLoaded { get; set; } = false;
|
||||||
|
public bool TrainingNeedsRefresh { get; set; } = false;
|
||||||
public bool GeneticsLoaded { get; set; } = false;
|
public bool GeneticsLoaded { get; set; } = false;
|
||||||
|
public bool GeneticsNeedsRefresh { get; set; } = false;
|
||||||
public bool AchievementsLoaded { get; set; } = false;
|
public bool AchievementsLoaded { get; set; } = false;
|
||||||
|
public bool AchievementsNeedsRefresh { get; set; } = false;
|
||||||
public bool HealthLoaded { get; set; } = false;
|
public bool HealthLoaded { get; set; } = false;
|
||||||
|
public bool HealthNeedsRefresh { get; set; } = false;
|
||||||
|
|
||||||
public bool IsAllDataLoaded()
|
public bool IsAllDataLoaded()
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,6 @@ namespace HRServer
|
||||||
.AllowAnyHeader();
|
.AllowAnyHeader();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
// Swagger / OpenAPI hinzufügen
|
// Swagger / OpenAPI hinzufügen
|
||||||
builder.Services.AddEndpointsApiExplorer();
|
builder.Services.AddEndpointsApiExplorer();
|
||||||
builder.Services.AddSwaggerGen();
|
builder.Services.AddSwaggerGen();
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,9 @@
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
// <auto-generated>
|
// <auto-generated>
|
||||||
// Dieser Code wurde von einem Tool generiert.
|
// This code was generated by a tool.
|
||||||
// Laufzeitversion:4.0.30319.42000
|
|
||||||
//
|
//
|
||||||
// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
|
// Changes to this file may cause incorrect behavior and will be lost if
|
||||||
// der Code erneut generiert wird.
|
// the code is regenerated.
|
||||||
// </auto-generated>
|
// </auto-generated>
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
@ -14,10 +13,10 @@ using System.Reflection;
|
||||||
[assembly: System.Reflection.AssemblyCompanyAttribute("HRServer")]
|
[assembly: System.Reflection.AssemblyCompanyAttribute("HRServer")]
|
||||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
||||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+f8946138c755861a4827dbd051bc0effcd5fa403")]
|
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+873462ec5e25b2e7c3913d7df0174ce76ef00881")]
|
||||||
[assembly: System.Reflection.AssemblyProductAttribute("HRServer")]
|
[assembly: System.Reflection.AssemblyProductAttribute("HRServer")]
|
||||||
[assembly: System.Reflection.AssemblyTitleAttribute("HRServer")]
|
[assembly: System.Reflection.AssemblyTitleAttribute("HRServer")]
|
||||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||||
|
|
||||||
// Von der MSBuild WriteCodeFragment-Klasse generiert.
|
// Generated by the MSBuild WriteCodeFragment class.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1 +1 @@
|
||||||
a2b444c9f69ba9a33722561291338238415e557705df53ec577027e812238c0f
|
2b9e6b04546558b8be5da9680e2e9462db49f3d3bd846c47b3601708d788771a
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue