mirror of
https://github.com/IoTManagerProject/IoTManagerWeb.git
synced 2026-03-30 20:09:24 +03:00
исправление бага добавления задачи
This commit is contained in:
@@ -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;
|
||||||
|
|||||||
@@ -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: "Неправильный пароль",
|
||||||
|
|||||||
@@ -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}
|
||||||
|
|||||||
@@ -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}
|
||||||
|
|||||||
Reference in New Issue
Block a user