chore: improve code

This commit is contained in:
Denis Evers 2023-04-30 13:34:26 +08:00
parent a0348d2d53
commit da3c995f96
6 changed files with 215 additions and 3 deletions

3
.gitmodules vendored Normal file
View File

@ -0,0 +1,3 @@
[submodule "themes/tailbliss"]
path = themes/tailbliss
url = git@github.com:nusserstudios/tailbliss.git

0
.hugo_build.lock Normal file
View File

View File

@ -1,3 +1,60 @@
baseURL = 'http://example.org/'
languageCode = 'en-us'
title = 'My New Hugo Site'
baseURL = "http://localhost:1313/"
title = "EngineCodeSolutions"
theme = "tailbliss"
languageCode = "en-us"
DefaultContentLanguage = "en"
enableEmoji = true
enableGitInfo = false
enableRobotsTXT = true
canonifyURLs = true
paginate = 9
darkmode_js = ["assets/js/darkmode.js"]
enableInlineShortcodes = true
[params]
author = "Denis Evers"
authorimage = "../assets/images/global/author.webp"
github = "https://github.com/denis-ev"
#og_image = "/images/tailbliss-cover.png"
sitename = "EngineCodeSolutions"
#twitter = "@nusserstudios"
description = "EngineCodeSolutions is for Mechanics to find solutions for error codes"
[markup]
[markup.goldmark]
[markup.goldmark.renderer]
unsafe = true
#[taxonomies]
#category = "Categories"
#tag = "Tags"
[privacy]
[privacy.disqus]
disable = false
[privacy.googleAnalytics]
anonymizeIP = true
disable = false
respectDoNotTrack = false
useSessionStorage = false
[privacy.instagram]
disable = false
simple = false
[privacy.twitter]
disable = false
enableDNT = false
simple = false
[privacy.vimeo]
disable = false
enableDNT = false
simple = false
[privacy.youtube]
disable = false
privacyEnhanced = true
[module]
[module.hugoVersion]
extended = true
min = "0.104.0"

54
content/diesel.md Normal file
View File

@ -0,0 +1,54 @@
---
title: "Engine Code Solutions"
date: 2023-04-30T08:37:50+08:00
draft: false
---
<script src="/js/chatgpt.js" defer></script>
<div class="w-full max-w-md mx-auto mt-8">
<form id="error-code-form" class="bg-black shadow-md rounded px-8 pt-6 pb-8 mb-4">
<div class="mb-4">
<label class="block text-sm font-bold mb-2" for="engine-code">
Engine Code:
</label>
<input color="black" class="shadow border rounded w-full py-2 px-3 leading-tight focus:outline-none focus:shadow-outline" type="text" id="engine-code" name="engine-code" required>
</div>
<div class="mb-6">
<label class="block text-sm font-bold mb-2" for="motor-brand">
Motor Brand:
</label>
<input class="shadow appearance-none border rounded w-full py-2 px-3 leading-tight focus:outline-none focus:shadow-outline" type="text" id="motor-brand" name="motor-brand" required>
</div>
<div class="mb-6">
<label for="model">Model:</label>
<select class="shadow appearance-none border rounded w-full py-2 px-3 text-black leading-tight focus:outline-none focus:shadow-outline" id="model" name="model" required>
</select>
</div>
<div class="mb-6">
<p id="error-message" class="appearance-none rounded w-full py-2 px-3 text-black leading-tight hidden"></p>
<label for="api-key">OpenAI API Key:</label>
<input class="shadow appearance-none border rounded w-full py-2 px-3 leading-tight focus:outline-none focus:shadow-outline" type="text" id="api-key" name="api-key" required>
</div>
<div id="submit" class="flex items-center justify-between hidden">
<button class="font-bold py-2 px-4 rounded focus:outline-none focus:shadow-outline" type="submit">
Submit
</button>
</div>
<div id="fetch-models-button" class="flex items-center justify-between">
<button class="font-bold py-2 px-4 rounded focus:outline-none focus:shadow-outline" type="button">Fetch Models</button>
</div>
<div id="loading" class="flex items-center justify-between hidden">
Loading...
</div>
</form>
</div>
<div id="result" class="w-full max-w-md mx-auto mt-4 px-4 py-2 text-lg font-semibold">
</div>
<style>
#error-code-form input, select{
color: black;
}
</style>

Binary file not shown.

After

Width:  |  Height:  |  Size: 658 B

98
static/js/chatgpt.js Normal file
View File

@ -0,0 +1,98 @@
async function fetchModelsAndPopulateSelect() {
const apiKey = document.getElementById("api-key").value;
const errorMessageElement = document.getElementById("error-message");
// Clear the error message
errorMessageElement.innerText = "";
errorMessageElement.classList.add("hidden");
// Check if the API key is empty
if (!apiKey) {
errorMessageElement.innerText = "Please provide an OpenAI API key.";
errorMessageElement.classList.remove("hidden");
return false;
}
try {
const response = await fetch("https://api.openai.com/v1/models", {
method: "GET",
headers: {
"Authorization": `Bearer ${apiKey}`
},
});
if (!response.ok) {
const errorData = await response.json();
throw new Error(`API error: ${response.status} ${response.statusText} - ${errorData.error}`);
}
const data = await response.json();
const selectElement = document.getElementById("model");
// Filter the main models
const mainModels = data.data.filter(model => {
return model.id.includes("gpt");
});
// Remove models ending with numbers
const filteredModels = mainModels.filter(model => {
return !/\d$/.test(model.id);
});
// Sort models alphabetically
filteredModels.sort((a, b) => a.id.localeCompare(b.id));
// Move the GPT model to the beginning of the array
const gptIndex = filteredModels.findIndex(model => model.id.includes("gpt"));
if (gptIndex !== -1) {
const gptModel = filteredModels.splice(gptIndex, 1)[0];
filteredModels.unshift(gptModel);
}
filteredModels.forEach(model => {
const optionElement = document.createElement("option");
optionElement.value = model.id;
optionElement.textContent = model.id;
selectElement.appendChild(optionElement);
});
return true;
} catch (error) {
console.error(error);
errorMessageElement.innerText = "An error occurred. Please check the console for more information.";
errorMessageElement.classList.remove("hidden");
return false;
}
}
document.getElementById("fetch-models-button").addEventListener("click", async function () {
const apiKey = document.getElementById("api-key").value;
const modelsFetchSuccessful = await fetchModelsAndPopulateSelect(apiKey);
if (modelsFetchSuccessful) {
document.getElementById("fetch-models-button").classList.add("hidden");
document.getElementById("submit").classList.remove("hidden");
}
});
document.getElementById("error-code-form").addEventListener("submit", async function (event) {
event.preventDefault();
const engineCode = document.getElementById("engine-code").value;
const motorBrand = document.getElementById("motor-brand").value;
const apiKey = document.getElementById("api-key").value;
const model = document.getElementById("model").value;
// Show the loading element
document.getElementById("loading").classList.remove("hidden");
document.getElementById("submit").classList.add("hidden");
const result = await getErrorFix(apiKey, engineCode, motorBrand, model);
// Hide the loading element
document.getElementById("loading").classList.add("hidden");
document.getElementById("submit").classList.remove("hidden");
document.getElementById("result").innerText = result;
});