исправление бага добавления задачи

This commit is contained in:
IoT Manager
2023-10-05 18:52:49 +02:00
parent ba10b3bc55
commit 1b9adefde6
4 changed files with 182 additions and 138 deletions

View File

@@ -60,7 +60,7 @@
//****************************************************variable section**********************************************************/ //****************************************************variable section**********************************************************/
//******************************************************************************************************************************/ //******************************************************************************************************************************/
let myip = document.location.hostname; let myip = document.location.hostname;
if (devMode) myip = "192.168.1.232"; if (devMode) myip = "192.168.87.242";
//Flags //Flags
let firstDevListRequest = true; let firstDevListRequest = true;

View File

@@ -4,8 +4,9 @@ export default {
"login.pass": "Пароль", "login.pass": "Пароль",
"login.login": "Вход", "login.login": "Вход",
"profile.update": "Собрать прошивку", "profile.update": "Собрать прошивку",
ok_success: "Задача запущена", ok_success: "Задача добавлена",
err_order_exist: "Ваша задача выполняется! Cледующию задачу можно будет запустить после завершения", err_order_exist: "Ваша задача выполняется! Cледующию задачу можно будет запустить после завершения",
err_add_order: "Ошибка отправки задачи",
err_of_login: "Ошибка входа в систему", err_of_login: "Ошибка входа в систему",
err_user_not_exist: "Такой пользователь не был зарегестрирован", err_user_not_exist: "Такой пользователь не был зарегестрирован",
err_pass: "Неправильный пароль", err_pass: "Неправильный пароль",
@@ -21,8 +22,9 @@ export default {
"login.pass": "Password", "login.pass": "Password",
"login.login": "Login", "login.login": "Login",
"profile.update": "Собрать прошивку", "profile.update": "Собрать прошивку",
ok_success: "Задача запущена", ok_success: "Задача добавлена",
err_order_exist: "Ваша задача выполняется! Cледующию задачу можно будет запустить после завершения", err_order_exist: "Ваша задача выполняется! Cледующию задачу можно будет запустить после завершения",
err_add_order: "Ошибка отправки задачи",
err_of_login: "Ошибка входа в систему", err_of_login: "Ошибка входа в систему",
err_user_not_exist: "Такой пользователь не был зарегестрирован", err_user_not_exist: "Такой пользователь не был зарегестрирован",
err_pass: "Неправильный пароль", err_pass: "Неправильный пароль",

View File

@@ -8,6 +8,7 @@
export let show; export let show;
export let myProfileJson; export let myProfileJson;
export let userdata; export let userdata;
import CrossIcon from "../svg/Cross.svelte";
let errors = []; let errors = [];
let allmodeinfo = null; let allmodeinfo = null;
let userBuilds = null; let userBuilds = null;
@@ -81,7 +82,29 @@
} }
}; };
const update = async () => { const delBuild = async (ord) => {
try {
const JWT = Cookies.get("token_iotm2");
let res = await fetch("https://portal.iotmanager.org/compiler/delete/builds/" + ord.orderId, {
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${JWT}`,
},
mode: "cors",
method: "GET",
});
if (res.ok) {
await getUserBuilds();
} else {
console.log("error", res.statusText);
}
} catch (e) {
console.log("error", e);
}
};
const placeOrder = async () => {
delete myProfileJson["_id"];
const JWT = Cookies.get("token_iotm2"); const JWT = Cookies.get("token_iotm2");
try { try {
let res = await fetch("https://portal.iotmanager.org/compiler/order", { let res = await fetch("https://portal.iotmanager.org/compiler/order", {
@@ -93,7 +116,6 @@
body: JSON.stringify(myProfileJson), body: JSON.stringify(myProfileJson),
}); });
const content = await res.json(); const content = await res.json();
//console.log(content);
if (res.ok) { if (res.ok) {
errors = [{ msg: "ok_success" }]; errors = [{ msg: "ok_success" }];
await getUserBuilds(); await getUserBuilds();
@@ -161,7 +183,7 @@
{#each errors as e, i} {#each errors as e, i}
<p class="text-red-500 p-0 m-0 font-bold text-xs italic">{$t(e.msg)}</p> <p class="text-red-500 p-0 m-0 font-bold text-xs italic">{$t(e.msg)}</p>
{/each} {/each}
<button class="btn-lg mt-6" on:click={() => update()}>{$t("profile.update")}</button> <button class="btn-lg mt-4" on:click={() => placeOrder()}>{$t("profile.update")}</button>
{#if userBuilds} {#if userBuilds}
<table class="tbl mt-6 mb-0"> <table class="tbl mt-6 mb-0">
<thead class="bg-gray-100"> <thead class="bg-gray-100">
@@ -173,6 +195,8 @@
<th class="tbl-hd">Подготовка</th> <th class="tbl-hd">Подготовка</th>
<th class="tbl-hd">Сборка build</th> <th class="tbl-hd">Сборка build</th>
<th class="tbl-hd">Сборка fs</th> <th class="tbl-hd">Сборка fs</th>
<th class="tbl-hd" />
<th class="tbl-hd w-7" />
</tr> </tr>
</thead> </thead>
<tbody class="bg-white"> <tbody class="bg-white">
@@ -184,8 +208,11 @@
<td class="tbl-bdy-lg ipt-lg w-full">{new Date(build.dateAdded).toLocaleString("ru", { timeZone: "Europe/Vienna" })}</td> <td class="tbl-bdy-lg ipt-lg w-full">{new Date(build.dateAdded).toLocaleString("ru", { timeZone: "Europe/Vienna" })}</td>
{#if build.status.preparation === 0 && build.status.build === 0 && build.status.fs === 0} {#if build.status.preparation === 0 && build.status.build === 0 && build.status.fs === 0}
<td class="tbl-bdy-lg ipt-lg w-full"> <td class="tbl-bdy-lg ipt-lg w-full">
<p class="text-green-700">{"Ожидание очереди..."}</p> <p class="text-green-500 font-bold truncate">{"Ожидание очереди..."}</p>
</td> </td>
<td class="tbl-bdy-lg ipt-lg w-full" />
<td class="tbl-bdy-lg ipt-lg w-full" />
<td class="tbl-bdy-lg ipt-lg w-full" />
{:else} {:else}
<td class="tbl-bdy-lg ipt-lg w-full"> <td class="tbl-bdy-lg ipt-lg w-full">
<div onClick={() => showLog(build, "py.txt")}> <div onClick={() => showLog(build, "py.txt")}>
@@ -200,6 +227,21 @@
<td class="tbl-bdy-lg ipt-lg w-full"> <td class="tbl-bdy-lg ipt-lg w-full">
<div onClick={() => showLog(build, "fs.txt")}>{st[build.status.fs]}</div> <div onClick={() => showLog(build, "fs.txt")}>{st[build.status.fs]}</div>
</td> </td>
{#if build.status.build === 2 && build.status.preparation === 2 && build.status.fs === 2}
<td onClick={() => showLog(build, "fs.txt")} class="tbl-bdy-lg ipt-lg w-full cursor-pointer select-none bg-green-100 hover:bg-green-200">
<p class="w-fill">Установить</p>
</td>
{:else}
<td class="tbl-bdy-lg ipt-lg w-full" />
{/if}
{#if build.processed}
<td class="tbl-bdy-lg ipt-lg w-full">
<CrossIcon click={() => delBuild(build)} />
</td>
{:else}
<td class="tbl-bdy-lg ipt-lg w-full" />
{/if}
{/if} {/if}
</tr> </tr>
{/if} {/if}

View File

@@ -1,130 +1,130 @@
<script> <script>
const wifiState = { //const wifiState = {
0: "не подключено", // 0: "не подключено",
1: "нет сигнала", // 1: "нет сигнала",
2: "очень низкий", // 2: "очень низкий",
3: "низкий", // 3: "низкий",
4: "хороший", // 4: "хороший",
5: "очень хороший", // 5: "очень хороший",
6: "отличный", // 6: "отличный",
}; //};
const systemErrorsRus = { //const systemErrorsRus = {
mqtt: { // mqtt: {
e1: { // e1: {
descr: "Ошибка mqtt", // descr: "Ошибка mqtt",
color: "text-red-500", // color: "text-red-500",
txt: "Нет ответа от сервера", // txt: "Нет ответа от сервера",
cancel: false, // cancel: false,
}, // },
e2: { // e2: {
descr: "Ошибка mqtt", // descr: "Ошибка mqtt",
color: "text-red-500", // color: "text-red-500",
txt: "Соединение было разорвано", // txt: "Соединение было разорвано",
cancel: false, // cancel: false,
}, // },
e3: { // e3: {
descr: "Ошибка mqtt", // descr: "Ошибка mqtt",
color: "text-red-500", // color: "text-red-500",
txt: "Ошибка соединения. Обычно возникает когда неверно указано название сервера MQTT", // txt: "Ошибка соединения. Обычно возникает когда неверно указано название сервера MQTT",
cancel: false, // cancel: false,
}, // },
e4: { // e4: {
descr: "Ошибка mqtt", // descr: "Ошибка mqtt",
color: "text-red-500", // color: "text-red-500",
txt: "Клиент был отключен", // txt: "Клиент был отключен",
cancel: false, // cancel: false,
}, // },
e6: { // e6: {
descr: "Ошибка mqtt", // descr: "Ошибка mqtt",
color: "text-red-500", // color: "text-red-500",
txt: "Ошибка версии", // txt: "Ошибка версии",
cancel: false, // cancel: false,
}, // },
e7: { // e7: {
descr: "Ошибка mqtt", // descr: "Ошибка mqtt",
color: "text-red-500", // color: "text-red-500",
txt: "Отклонен идентификатор", // txt: "Отклонен идентификатор",
cancel: false, // cancel: false,
}, // },
e8: { // e8: {
descr: "Ошибка mqtt", // descr: "Ошибка mqtt",
color: "text-red-500", // color: "text-red-500",
txt: "Не могу установить соединение", // txt: "Не могу установить соединение",
cancel: false, // cancel: false,
}, // },
e9: { // e9: {
descr: "Ошибка mqtt", // descr: "Ошибка mqtt",
color: "text-red-500", // color: "text-red-500",
txt: "Неправильное имя пользователя/пароль", // txt: "Неправильное имя пользователя/пароль",
}, // },
e10: { // e10: {
descr: "Ошибка mqtt", // descr: "Ошибка mqtt",
color: "text-red-500", // color: "text-red-500",
txt: "Не авторизован для подключения", // txt: "Не авторизован для подключения",
cancel: false, // cancel: false,
}, // },
e11: { // e11: {
descr: "Ошибка mqtt", // descr: "Ошибка mqtt",
color: "text-red-500", // color: "text-red-500",
txt: "Название сервера пустое", // txt: "Название сервера пустое",
cancel: false, // cancel: false,
}, // },
e12: { // e12: {
descr: "Ошибка mqtt", // descr: "Ошибка mqtt",
color: "text-red-500", // color: "text-red-500",
txt: "Имя пользователя или пароль пустые", // txt: "Имя пользователя или пароль пустые",
cancel: false, // cancel: false,
}, // },
e13: { // e13: {
descr: "Mqtt", // descr: "Mqtt",
color: "text-red-500", // color: "text-red-500",
txt: "Подключение в процессе", // txt: "Подключение в процессе",
cancel: false, // cancel: false,
}, // },
}, // },
wse1: { // wse1: {
1: { // 1: {
descr: "Ошибка веб сокетов", // descr: "Ошибка веб сокетов",
color: "text-red-500", // color: "text-red-500",
txt: "Слишком много клиентов было открыто. Допускается не более четырех.", // txt: "Слишком много клиентов было открыто. Допускается не более четырех.",
cancel: true, // cancel: true,
}, // },
}, // },
jse1: { // jse1: {
1: { // 1: {
descr: "Ошибка json", // descr: "Ошибка json",
color: "text-red-500", // color: "text-red-500",
txt: "Недостаточный размер буфера библиотеки Arduino Json. Устройство может вести себя непредсказуемо. Обратитесь к разработчику.", // txt: "Недостаточный размер буфера библиотеки Arduino Json. Устройство может вести себя непредсказуемо. Обратитесь к разработчику.",
cancel: true, // cancel: true,
}, // },
}, // },
jse2: { // jse2: {
1: { // 1: {
descr: "Ошибка json", // descr: "Ошибка json",
color: "text-red-500", // color: "text-red-500",
txt: "Ошибка записи/чтения json.", // txt: "Ошибка записи/чтения json.",
cancel: true, // cancel: true,
num: true, // num: true,
}, // },
}, // },
jse3: { // jse3: {
1: { // 1: {
descr: "Ошибка json", // descr: "Ошибка json",
color: "text-red-500", // color: "text-red-500",
txt: "Ошибка чтения json файла с виджетами при отправки в mqtt", // txt: "Ошибка чтения json файла с виджетами при отправки в mqtt",
cancel: true, // cancel: true,
}, // },
}, // },
tme1: { // tme1: {
1: { // 1: {
descr: "Ошибка времени", // descr: "Ошибка времени",
color: "text-red-500", // color: "text-red-500",
txt: "Ошибка синхронизации времени с NTP сервером", // txt: "Ошибка синхронизации времени с NTP сервером",
cancel: false, // cancel: false,
}, // },
}, // },
}; //};
import Card from "../components/Card.svelte"; import Card from "../components/Card.svelte";
import Alarm from "../components/Alarm.svelte"; import Alarm from "../components/Alarm.svelte";
@@ -147,7 +147,7 @@
let reboot = false; let reboot = false;
export let cancelAlarm = (alarmKey) => {}; //export let cancelAlarm = (alarmKey) => {};
</script> </script>
{#if show} {#if show}
@@ -309,7 +309,7 @@
UPDATE_BUILD_FAILED UPDATE_BUILD_FAILED
PATH_ERROR PATH_ERROR
--> -->
<div class="flex justify-center text-xs sm:text-sm md:text-base lg:text-base xl:text-base 2xl:text-base break-words"> <!--<div class="flex justify-center text-xs sm:text-sm md:text-base lg:text-base xl:text-base 2xl:text-base break-words">
{#if errorsJson.upd === 1} {#if errorsJson.upd === 1}
<p class="text-green-500 mb-2 font-bold text-sm text-center truncate">Обновление FS в процессе...</p> <p class="text-green-500 mb-2 font-bold text-sm text-center truncate">Обновление FS в процессе...</p>
{/if} {/if}
@@ -331,9 +331,9 @@
{#if errorsJson.upd === 7} {#if errorsJson.upd === 7}
<p class="text-red-500 mb-2 font-bold text-sm text-center truncate">Ошибка пути обновления</p> <p class="text-red-500 mb-2 font-bold text-sm text-center truncate">Ошибка пути обновления</p>
{/if} {/if}
</div> </div>-->
<button class="btn-lg mb-2" on:click={() => startUpdate(false)}>{"Обновить прошивку"}</button> <button class="btn-lg mb-2" on:click={() => startUpdate(false)}>{"Обновить прошивку"}</button>
<button class="btn-lg mb-2" on:click={() => startUpdate(true)}>{"Обновить прошивку на всех устройствах"}</button> <!--<button class="btn-lg mb-2" on:click={() => startUpdate(true)}>{"Обновить прошивку на всех устройствах"}</button>-->
<button class="btn-lg" on:click={() => rebootEsp()}>{"Перезагрузить устройство"}</button> <button class="btn-lg" on:click={() => rebootEsp()}>{"Перезагрузить устройство"}</button>
</Card> </Card>
<!--SETTINGS--> <!--SETTINGS-->
@@ -492,7 +492,7 @@
</div> </div>
</div> </div>
<!--ERRORS--> <!--ERRORS-->
<div class="grd-1col1"> <!--<div class="grd-1col1">
<Card title="Системные ошибки"> <Card title="Системные ошибки">
{#each Object.entries(errorsJson) as [key, param], i} {#each Object.entries(errorsJson) as [key, param], i}
{#if key in systemErrorsRus && param in systemErrorsRus[key]} {#if key in systemErrorsRus && param in systemErrorsRus[key]}
@@ -507,7 +507,7 @@
{/if} {/if}
{/each} {/each}
</Card> </Card>
</div> </div>-->
{:else} {:else}
<Alarm title="Загрузка..." /> <Alarm title="Загрузка..." />
{/if} {/if}