add is login requied

This commit is contained in:
relaxed 2024-12-25 13:32:44 +05:00
parent 9cc85a2525
commit 5b75d45910
2 changed files with 185 additions and 62 deletions

View File

@ -113,9 +113,8 @@ WHERE id = ${current_item.id}`;
export let is_item_dialog_open = false;
export let is_dialog_item_add = false;
let is_logedin = true;
export let data_access;
let is_logedin = false;
export let is_login_requied = true;
let access_level = "";
/**
@ -135,6 +134,11 @@ WHERE id = ${current_item.id}`;
onMount(async () => {
await load_db();
is_loaded = true;
if (!is_login_requied) {
is_logedin = true;
check_access = () => true;
check_login = async () => [true, ""];
}
});
$: cur_dialog_name = is_dialog_item_add
? `Добавить в ${db_scheme[current_page].tables[current_table]}`
@ -149,12 +153,14 @@ WHERE id = ${current_item.id}`;
bind:is_view_open
check_access={(name) => check_access(access_level, name, null)}
on_logout={() => {
if (is_login_requied) {
is_logedin = false;
// @ts-ignore
access_level = "";
current_page = "Запросы";
current_table = "";
current_view = "";
}
}}
></NavBar>

View File

@ -27,7 +27,9 @@
async function load_db() {
// dev
db = await Database.load(`sqlite:${await path.resolve()}/../db/data.db`);
db = await Database.load(
`sqlite:${await path.resolve()}/../db/data.db`,
);
// db = await Database.load(`sqlite:${await path.resolve()}/db/data.db`);
@ -162,6 +164,7 @@ GROUP BY id;
let is_item_dialog_open = false;
let is_dialog_item_add = false;
let is_login_requied = false;
/**
* @param {string} access_level
@ -174,7 +177,10 @@ GROUP BY id;
if (data_access[access_level] === true) return true;
// @ts-ignore
if (Object.hasOwn(data_access[access_level], tab_name) && name === null)
if (
Object.hasOwn(data_access[access_level], tab_name) &&
name === null
)
return true;
// @ts-ignore
@ -210,10 +216,10 @@ insert into IdBuffer (id) values (${ar.join("), (")});`);
<ScreenWrap
{db}
{db_scheme}
{data_access}
{load_db}
{check_access}
{check_login}
{is_login_requied}
bind:is_item_dialog_open
bind:is_dialog_item_add
bind:current_item
@ -240,7 +246,9 @@ insert into IdBuffer (id) values (${ar.join("), (")});`);
<h1>id {current_item.id}</h1>
{/if}
<Field name={"название"}>
<TextInput bind:value={current_item.name}></TextInput>
<TextInput
bind:value={current_item.name}
></TextInput>
</Field>
<Field name={"Ингридиенты"} is_vertical={true}>
@ -250,35 +258,48 @@ insert into IdBuffer (id) values (${ar.join("), (")});`);
"select id, name from Ingredients where is_allowed = 1",
)}
on_change={async () => {
await id_buffer(current_item.ingredients_ids);
await id_buffer(
current_item.ingredients_ids,
);
const query = `
select sum(price) as value
from Ingredients
join IdBuffer on IdBuffer.id = Ingredients.id
`;
const price = await db.select(query);
current_item.price = price[0].value;
const price =
await db.select(
query,
);
current_item.price =
price[0].value;
}}
></ItemList>
</Field>
<Field name={"цена"}>
<NumberInput bind:value={current_item.price}></NumberInput>
<NumberInput
bind:value={current_item.price}
></NumberInput>
</Field>
<Field name={"разрешено"}>
<Boolean bind:value={current_item.is_allowed}></Boolean>
<Boolean
bind:value={current_item.is_allowed}
></Boolean>
</Field>
<TableCudButtons
{form}
bind:is_dialog_item_add
on_add={async () => {
const las_id = await sql_insert_short(
const las_id =
await sql_insert_short(
current_table,
cur_cols,
"returning id",
);
console.log(las_id.lastInsertId);
console.log(
las_id.lastInsertId,
);
const query = `insert into PizzasIngredientsJoin (pizza_id, ingredient_id) values
${current_item.ingredients_ids.map((el) => "(" + las_id.lastInsertId + "," + el + ")").join(",")}
@ -293,7 +314,10 @@ insert into PizzasIngredientsJoin (pizza_id, ingredient_id) values
${current_item.ingredients_ids.map((el) => "(" + current_item.id + "," + el + ")").join(",")}
`;
await db.execute(query);
await sql_update_short(current_table, cur_cols);
await sql_update_short(
current_table,
cur_cols,
);
}}
on_delete={sql_delete_short}
></TableCudButtons>
@ -316,30 +340,50 @@ ${current_item.ingredients_ids.map((el) => "(" + current_item.id + "," + el + ")
>
<Table
{is_searching}
search_query={db.select(search_query_result)}
search_query={db.select(
search_query_result,
)}
columns={["id", ...cur_cols]}
query={db.select(`select * from ${current_table}`)}
query={db.select(
`select * from ${current_table}`,
)}
let:item
let:index
>
<Tr
{index}
on_click={async () => {
const ingredients_ids = await db.select(
const ingredients_ids =
await db.select(
`select ingredient_id from PizzasIngredientsJoin where pizza_id = ${item.id}`,
);
open_item_edit(item);
current_item.ingredients_ids = ingredients_ids.map(
(/** @type {any} */ el) => el.ingredient_id,
current_item.ingredients_ids =
ingredients_ids.map(
(
/** @type {any} */ el,
) =>
el.ingredient_id,
);
}}
>
<Atd {item} names={["id", ...cur_cols]}></Atd>
<Atd
{item}
names={[
"id",
...cur_cols,
]}
></Atd>
</Tr>
</Table>
</TableButtonsWrap>
{:else if current_table === "Ingredients"}
{@const cur_cols = ["name", "price", "is_allowed", "weight"]}
{@const cur_cols = [
"name",
"price",
"is_allowed",
"weight",
]}
<Dialog
bind:is_open={is_item_dialog_open}
name={cur_dialog_name}
@ -350,18 +394,26 @@ ${current_item.ingredients_ids.map((el) => "(" + current_item.id + "," + el + ")
{/if}
<Field name={"название"}>
<TextInput bind:value={current_item.name}></TextInput>
<TextInput
bind:value={current_item.name}
></TextInput>
</Field>
<Field name={"цена"}>
<NumberInput bind:value={current_item.price}></NumberInput>
<NumberInput
bind:value={current_item.price}
></NumberInput>
</Field>
<Field name={"разрешено"}>
<Boolean bind:value={current_item.is_allowed}></Boolean>
<Boolean
bind:value={current_item.is_allowed}
></Boolean>
</Field>
<Field name={"Вес"}>
<NumberInput is_float={true} bind:value={current_item.weight}
<NumberInput
is_float={true}
bind:value={current_item.weight}
></NumberInput>
</Field>
@ -369,10 +421,16 @@ ${current_item.ingredients_ids.map((el) => "(" + current_item.id + "," + el + ")
{form}
bind:is_dialog_item_add
on_add={async () => {
await sql_insert_short(current_table, cur_cols);
await sql_insert_short(
current_table,
cur_cols,
);
}}
on_save={async () => {
await sql_update_short(current_table, cur_cols);
await sql_update_short(
current_table,
cur_cols,
);
}}
on_delete={sql_delete_short}
></TableCudButtons>
@ -396,14 +454,28 @@ ${current_item.ingredients_ids.map((el) => "(" + current_item.id + "," + el + ")
>
<Table
{is_searching}
search_query={db.select(search_query_result)}
search_query={db.select(
search_query_result,
)}
columns={["id", ...cur_cols]}
query={db.select(`select * from ${current_table}`)}
query={db.select(
`select * from ${current_table}`,
)}
let:item
let:index
>
<Tr {index} on_click={() => open_item_edit(item)}>
<Atd {item} names={["id", ...cur_cols]}></Atd>
<Tr
{index}
on_click={() =>
open_item_edit(item)}
>
<Atd
{item}
names={[
"id",
...cur_cols,
]}
></Atd>
</Tr>
</Table>
</TableButtonsWrap>
@ -419,7 +491,9 @@ ${current_item.ingredients_ids.map((el) => "(" + current_item.id + "," + el + ")
{/if}
<Field name={"дата"}>
<DateInput bind:value={current_item.date}></DateInput>
<DateInput
bind:value={current_item.date}
></DateInput>
</Field>
<Field name={"пицца"}>
@ -439,10 +513,16 @@ ${current_item.ingredients_ids.map((el) => "(" + current_item.id + "," + el + ")
{form}
bind:is_dialog_item_add
on_add={async () => {
await sql_insert_short(current_table, ["pizza_id"]);
await sql_insert_short(
current_table,
["pizza_id"],
);
}}
on_save={async () => {
await sql_update_short(current_table, cur_cols);
await sql_update_short(
current_table,
cur_cols,
);
}}
on_delete={sql_delete_short}
></TableCudButtons>
@ -464,14 +544,25 @@ ${current_item.ingredients_ids.map((el) => "(" + current_item.id + "," + el + ")
>
<Table
{is_searching}
search_query={db.select(search_query_result)}
search_query={db.select(
search_query_result,
)}
columns={["id", ...cur_cols]}
query={db.select(`select * from ${current_table}`)}
query={db.select(
`select * from ${current_table}`,
)}
let:item
let:index
>
<Tr {index} on_click={() => open_item_edit(item)}>
<Atd {item} names={["id", "date"]}></Atd>
<Tr
{index}
on_click={() =>
open_item_edit(item)}
>
<Atd
{item}
names={["id", "date"]}
></Atd>
<Td>
{#await db.select(`select name from Pizzas where id = ${item.pizza_id}`) then data}
{data[0].name}
@ -492,13 +583,17 @@ ${current_item.ingredients_ids.map((el) => "(" + current_item.id + "," + el + ")
{/if}
<Field name={"дата"}>
<DateInput bind:value={current_item.date}></DateInput>
<DateInput
bind:value={current_item.date}
></DateInput>
</Field>
<Field name={"ингидиент"}>
<Select
bind:value={current_item.ingredient_id}
query={db.select("select id, name from Ingredients")}
query={db.select(
"select id, name from Ingredients",
)}
let:vtype
>
{vtype.name}
@ -507,7 +602,9 @@ ${current_item.ingredients_ids.map((el) => "(" + current_item.id + "," + el + ")
</Field>
<Field name={"Количество"}>
<NumberInput min={-999999999} bind:value={current_item.count}
<NumberInput
min={-999999999}
bind:value={current_item.count}
></NumberInput>
</Field>
@ -515,10 +612,16 @@ ${current_item.ingredients_ids.map((el) => "(" + current_item.id + "," + el + ")
{form}
bind:is_dialog_item_add
on_add={async () => {
await sql_insert_short(current_table, cur_cols);
await sql_insert_short(
current_table,
cur_cols,
);
}}
on_save={async () => {
await sql_update_short(current_table, cur_cols);
await sql_update_short(
current_table,
cur_cols,
);
}}
on_delete={sql_delete_short}
></TableCudButtons>
@ -541,20 +644,32 @@ ${current_item.ingredients_ids.map((el) => "(" + current_item.id + "," + el + ")
>
<Table
{is_searching}
search_query={db.select(search_query_result)}
search_query={db.select(
search_query_result,
)}
columns={["id", ...cur_cols]}
query={db.select(`select * from ${current_table}`)}
query={db.select(
`select * from ${current_table}`,
)}
let:item
let:index
>
<Tr {index} on_click={() => open_item_edit(item)}>
<Atd {item} names={["id", "date"]}></Atd>
<Tr
{index}
on_click={() =>
open_item_edit(item)}
>
<Atd
{item}
names={["id", "date"]}
></Atd>
<Td>
{#await db.select(`select name from Ingredients where id = ${item.ingredient_id}`) then data}
{data[0].name}
{/await}
</Td>
<Atd {item} names={["count"]}></Atd>
<Atd {item} names={["count"]}
></Atd>
</Tr>
</Table>
</TableButtonsWrap>
@ -562,7 +677,9 @@ ${current_item.ingredients_ids.map((el) => "(" + current_item.id + "," + el + ")
{:else if is_view_open}
{#if current_view === "IngredientsLeft"}
<ViewTable
query={db.select(`select * from IngredientsLeft`)}
query={db.select(
`select * from IngredientsLeft`,
)}
columns={["id", "ингридиент", "остатки"]}
names={["id", "name", "count"]}
></ViewTable>