chore: improve code
This commit is contained in:
parent
a0348d2d53
commit
da3c995f96
|
@ -0,0 +1,3 @@
|
|||
[submodule "themes/tailbliss"]
|
||||
path = themes/tailbliss
|
||||
url = git@github.com:nusserstudios/tailbliss.git
|
63
config.toml
63
config.toml
|
@ -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"
|
||||
|
|
|
@ -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 |
|
@ -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;
|
||||
});
|
Loading…
Reference in New Issue