mirror of
https://github.com/bunkerity/bunkerweb
synced 2026-05-24 09:28:37 +00:00
fix unmatch component and update formats
This commit is contained in:
parent
074af0814f
commit
98793612d1
28 changed files with 119 additions and 97 deletions
|
|
@ -22,7 +22,7 @@ def bans_tabs():
|
|||
buttons=[
|
||||
button_widget(
|
||||
text="bans_tab_list",
|
||||
display=["main", 1],
|
||||
display=["main", 0],
|
||||
size="tab",
|
||||
color="info",
|
||||
iconColor="white",
|
||||
|
|
@ -31,7 +31,7 @@ def bans_tabs():
|
|||
button_widget(
|
||||
text="bans_tab_add",
|
||||
color="success",
|
||||
display=["main", 2],
|
||||
display=["main", 1],
|
||||
size="tab",
|
||||
iconColor="white",
|
||||
iconName="plus",
|
||||
|
|
@ -182,15 +182,21 @@ def bans_filters(reasons: Optional[list] = None, remains: Optional[list] = None)
|
|||
return filters
|
||||
|
||||
|
||||
def fallback_message(msg: str, display: Optional[list] = None) -> dict:
|
||||
|
||||
return {
|
||||
"type": "void",
|
||||
"display": display if display else [],
|
||||
"widgets": [
|
||||
unmatch_widget(text=msg),
|
||||
],
|
||||
}
|
||||
|
||||
|
||||
def bans_list(bans: Optional[list] = None, reasons: Optional[list] = None, remains: Optional[list] = None) -> dict:
|
||||
|
||||
if bans is None or len(bans) == 0:
|
||||
return {
|
||||
"type": "card",
|
||||
"gridLayoutClass": "transparent",
|
||||
"widgets": [
|
||||
unmatch_widget(text="bans_not_found"),
|
||||
],
|
||||
}
|
||||
return fallback_message(msg="bans_not_found", display=["main", 0])
|
||||
|
||||
actions_table_list = [
|
||||
# Need to create a script on Page.vue level to add a row on click
|
||||
|
|
@ -228,7 +234,7 @@ def bans_list(bans: Optional[list] = None, reasons: Optional[list] = None, remai
|
|||
|
||||
return {
|
||||
"type": "card",
|
||||
"display": ["main", 1],
|
||||
"display": ["main", 0],
|
||||
"widgets": [
|
||||
title_widget("bans_list_title"), # keep it (a18n)
|
||||
subtitle_widget("bans_list_subtitle"), # keep it (a18n)
|
||||
|
|
@ -375,7 +381,7 @@ def bans_add() -> dict:
|
|||
|
||||
return {
|
||||
"type": "card",
|
||||
"display": ["main", 2],
|
||||
"display": ["main", 1],
|
||||
"widgets": [
|
||||
title_widget("bans_add_title"), # keep it (a18n)
|
||||
subtitle_widget("bans_add_subtitle"), # keep it (a18n)
|
||||
|
|
|
|||
|
|
@ -424,7 +424,7 @@ def configs_tabs():
|
|||
|
||||
def fallback_message(msg: str):
|
||||
return {
|
||||
"type": "card",
|
||||
"type": "void",
|
||||
"gridLayoutClass": "transparent",
|
||||
"widgets": [
|
||||
unmatch_widget(text=msg),
|
||||
|
|
@ -435,10 +435,10 @@ def fallback_message(msg: str):
|
|||
def configs_builder(configs: Optional[list] = None, config_types: Optional[list] = None, services: Optional[list] = None) -> list:
|
||||
|
||||
if config_types is None or len(config_types) == 0:
|
||||
return fallback_message("configs_missing_types")
|
||||
return [fallback_message(msg="configs_missing_types")]
|
||||
|
||||
if services is None or len(services) == 0:
|
||||
return fallback_message("configs_missing_services")
|
||||
return [fallback_message(msg="configs_missing_services")]
|
||||
|
||||
configs_items = []
|
||||
configs_form = []
|
||||
|
|
@ -460,7 +460,7 @@ def configs_builder(configs: Optional[list] = None, config_types: Optional[list]
|
|||
if config is None or len(configs) == 0:
|
||||
return [
|
||||
# Tabs is button group with display value and a size tab inside a tabs container
|
||||
user_management_tabs(),
|
||||
configs_tabs(),
|
||||
fallback_message("user_management_users_not_found"),
|
||||
] + configs_form
|
||||
|
||||
|
|
@ -482,16 +482,20 @@ def configs_builder(configs: Optional[list] = None, config_types: Optional[list]
|
|||
)
|
||||
configs_form.append(
|
||||
config_form(
|
||||
username=user.get("username"),
|
||||
role=user.get("role"),
|
||||
roles=roles_form,
|
||||
config_types=config_types,
|
||||
services=services,
|
||||
is_global=config.get("is_global", ""),
|
||||
filename=config.get("filename", ""),
|
||||
config_type=config.get("type", ""),
|
||||
config_value=config.get("value", ""),
|
||||
config_services=config.get("config_services", []),
|
||||
display_index=display_index,
|
||||
)
|
||||
)
|
||||
|
||||
return [
|
||||
# Tabs is button group with display value and a size tab inside a tabs container
|
||||
user_management_tabs(),
|
||||
configs_tabs(),
|
||||
{
|
||||
"type": "card",
|
||||
"maxWidthScreen": "3xl",
|
||||
|
|
|
|||
|
|
@ -255,7 +255,7 @@ def instance_item(
|
|||
iconColor="white",
|
||||
attrs={
|
||||
"data-submit-form": f"""{{ "instance_hostname" : "{hostname}" }}""",
|
||||
"data-submit-endpoint": "/delete",
|
||||
"data-submit-endpoint": f"/{hostname}",
|
||||
"data-submit-method": "DELETE",
|
||||
},
|
||||
),
|
||||
|
|
@ -285,7 +285,7 @@ def instances_new_form() -> dict:
|
|||
return {
|
||||
"type": "card",
|
||||
"maxWidthScreen": "md",
|
||||
"display": ["main", 2],
|
||||
"display": ["main", 1],
|
||||
"widgets": [
|
||||
title_widget(
|
||||
title="instances_create_title", # keep it (a18n)
|
||||
|
|
@ -363,7 +363,7 @@ def instances_tabs():
|
|||
buttons=[
|
||||
button_widget(
|
||||
text="instances_tab_list",
|
||||
display=["main", 1],
|
||||
display=["main", 0],
|
||||
size="tab",
|
||||
color="info",
|
||||
iconColor="white",
|
||||
|
|
@ -372,7 +372,7 @@ def instances_tabs():
|
|||
button_widget(
|
||||
text="instances_tab_add",
|
||||
color="success",
|
||||
display=["main", 2],
|
||||
display=["main", 1],
|
||||
size="tab",
|
||||
iconColor="white",
|
||||
iconName="plus",
|
||||
|
|
@ -383,15 +383,21 @@ def instances_tabs():
|
|||
}
|
||||
|
||||
|
||||
def fallback_message(msg: str, display: Optional[list] = None) -> dict:
|
||||
|
||||
return {
|
||||
"type": "void",
|
||||
"display": display if display else [],
|
||||
"widgets": [
|
||||
unmatch_widget(text=msg),
|
||||
],
|
||||
}
|
||||
|
||||
|
||||
def instances_list(instances: Optional[list] = None, types: Optional[list] = None, methods: Optional[list] = None, healths: Optional[list] = None) -> dict:
|
||||
|
||||
if instances is None or len(instances) == 0:
|
||||
return {
|
||||
"type": "card",
|
||||
"gridLayoutClass": "transparent",
|
||||
"widgets": [
|
||||
unmatch_widget(text="instances_not_found"),
|
||||
],
|
||||
}
|
||||
return fallback_message(msg="instances_not_found", display=["main", 0])
|
||||
|
||||
items = []
|
||||
|
||||
|
|
@ -410,7 +416,7 @@ def instances_list(instances: Optional[list] = None, types: Optional[list] = Non
|
|||
|
||||
return {
|
||||
"type": "card",
|
||||
"display": ["main", 1],
|
||||
"display": ["main", 0],
|
||||
"widgets": [
|
||||
title_widget(
|
||||
title="instances_list_title", # keep it (a18n)
|
||||
|
|
|
|||
|
|
@ -170,18 +170,23 @@ def report_item(id: int, date: int, ip: str, country: str, method: str, url: str
|
|||
}
|
||||
|
||||
|
||||
def fallback_message(msg: str, display: Optional[list] = None) -> dict:
|
||||
|
||||
return {
|
||||
"type": "void",
|
||||
"display": display if display else [],
|
||||
"widgets": [
|
||||
unmatch_widget(text=msg),
|
||||
],
|
||||
}
|
||||
|
||||
|
||||
def reports_builder(
|
||||
reports: list, reasons: Optional[list] = None, countries: Optional[list] = None, methods: Optional[list] = None, codes: Optional[list] = None
|
||||
) -> str:
|
||||
|
||||
if reports is None or len(reports) == 0:
|
||||
return {
|
||||
"type": "card",
|
||||
"gridLayoutClass": "transparent",
|
||||
"widgets": [
|
||||
unmatch_widget(text="reports_not_found"),
|
||||
],
|
||||
}
|
||||
return [fallback_message("reports_not_found")]
|
||||
|
||||
reports_items = [report_item(**report, id=index) for index, report in enumerate(reports)]
|
||||
return [
|
||||
|
|
|
|||
|
|
@ -384,10 +384,11 @@ def user_management_tabs():
|
|||
}
|
||||
|
||||
|
||||
def fallback_message(msg: str):
|
||||
def fallback_message(msg: str, display: Optional[list] = None) -> dict:
|
||||
|
||||
return {
|
||||
"type": "card",
|
||||
"gridLayoutClass": "transparent",
|
||||
"type": "void",
|
||||
"display": display if display else [],
|
||||
"widgets": [
|
||||
unmatch_widget(text=msg),
|
||||
],
|
||||
|
|
@ -399,7 +400,7 @@ def user_management_builder(
|
|||
) -> list:
|
||||
|
||||
if roles is None or len(roles) == 0 or roles_form is None or len(roles_form) == 0:
|
||||
return fallback_message("user_management_missing_roles")
|
||||
return [fallback_message("user_management_missing_roles")]
|
||||
|
||||
users_items = []
|
||||
users_forms = []
|
||||
|
|
@ -409,7 +410,7 @@ def user_management_builder(
|
|||
return [
|
||||
# Tabs is button group with display value and a size tab inside a tabs container
|
||||
user_management_tabs(),
|
||||
fallback_message("user_management_users_not_found"),
|
||||
fallback_message(msg="user_management_users_not_found", display=["main", 0]),
|
||||
] + users_forms
|
||||
|
||||
# Start adding the new config form
|
||||
|
|
|
|||
|
|
@ -46,6 +46,6 @@ methods = list(methods)
|
|||
codes = list(codes)
|
||||
reasons = list(reasons)
|
||||
|
||||
builder = reports_builder(reports, reasons, countries, methods, codes)
|
||||
builder = reports_builder(reports=reports, reasons=reasons, countries=countries, methods=methods, codes=codes)
|
||||
|
||||
save_builder(page_name="reports", output=builder, script_name="reports")
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ import ButtonGroup from "@components/Widget/ButtonGroup.vue";
|
|||
import Regular from "@components/Form/Regular.vue";
|
||||
import Title from "@components/Widget/Title.vue";
|
||||
import Subtitle from "@components/Widget/Subtitle.vue";
|
||||
import MessageUnmatch from "@components/Message/Unmatch.vue";
|
||||
import Unmatch from "@components/Message/Unmatch.vue";
|
||||
import { useEqualStr } from "@utils/global.js";
|
||||
|
||||
/**
|
||||
|
|
@ -60,8 +60,8 @@ const props = defineProps({
|
|||
v-if="useEqualStr(widget.type, 'Subtitle')"
|
||||
v-bind="widget.data"
|
||||
/>
|
||||
<MessageUnmatch
|
||||
v-if="useEqualStr(widget.type, 'MessageUnmatch')"
|
||||
<Unmatch
|
||||
v-if="useEqualStr(widget.type, 'Unmatch')"
|
||||
v-bind="widget.data"
|
||||
/>
|
||||
<Tabulator
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ import ButtonGroup from "@components/Widget/ButtonGroup.vue";
|
|||
import Regular from "@components/Form/Regular.vue";
|
||||
import Title from "@components/Widget/Title.vue";
|
||||
import Subtitle from "@components/Widget/Subtitle.vue";
|
||||
import MessageUnmatch from "@components/Message/Unmatch.vue";
|
||||
import Unmatch from "@components/Message/Unmatch.vue";
|
||||
import { useEqualStr } from "@utils/global.js";
|
||||
|
||||
/**
|
||||
|
|
@ -60,8 +60,8 @@ const props = defineProps({
|
|||
v-if="useEqualStr(widget.type, 'Subtitle')"
|
||||
v-bind="widget.data"
|
||||
/>
|
||||
<MessageUnmatch
|
||||
v-if="useEqualStr(widget.type, 'MessageUnmatch')"
|
||||
<Unmatch
|
||||
v-if="useEqualStr(widget.type, 'Unmatch')"
|
||||
v-bind="widget.data"
|
||||
/>
|
||||
<Tabulator
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ import ButtonGroup from "@components/Widget/ButtonGroup.vue";
|
|||
import Regular from "@components/Form/Regular.vue";
|
||||
import Title from "@components/Widget/Title.vue";
|
||||
import Subtitle from "@components/Widget/Subtitle.vue";
|
||||
import MessageUnmatch from "@components/Message/Unmatch.vue";
|
||||
import Unmatch from "@components/Message/Unmatch.vue";
|
||||
import { useEqualStr } from "@utils/global.js";
|
||||
|
||||
/**
|
||||
|
|
@ -71,8 +71,8 @@ const props = defineProps({
|
|||
v-if="useEqualStr(widget.type, 'Subtitle')"
|
||||
v-bind="widget.data"
|
||||
/>
|
||||
<MessageUnmatch
|
||||
v-if="useEqualStr(widget.type, 'MessageUnmatch')"
|
||||
<Unmatch
|
||||
v-if="useEqualStr(widget.type, 'Unmatch')"
|
||||
v-bind="widget.data"
|
||||
/>
|
||||
<Tabulator
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import Grid from "@components/Widget/Grid.vue";
|
|||
import GridLayout from "@components/Widget/GridLayout.vue";
|
||||
import Title from "@components/Widget/Title.vue";
|
||||
import Fields from "@components/Form/Fields.vue";
|
||||
import MessageUnmatch from "@components/Message/Unmatch.vue";
|
||||
import Unmatch from "@components/Message/Unmatch.vue";
|
||||
import { useEqualStr } from "@utils/global.js";
|
||||
|
||||
/**
|
||||
|
|
@ -39,8 +39,8 @@ const props = defineProps({
|
|||
<Grid>
|
||||
<!-- widget element -->
|
||||
<template v-for="(widget, index) in container.widgets" :key="index">
|
||||
<MessageUnmatch
|
||||
v-if="useEqualStr(widget.type, 'MessageUnmatch')"
|
||||
<Unmatch
|
||||
v-if="useEqualStr(widget.type, 'Unmatch')"
|
||||
v-bind="widget.data"
|
||||
/>
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
import Grid from "@components/Widget/Grid.vue";
|
||||
import GridLayout from "@components/Widget/GridLayout.vue";
|
||||
import Tabulator from "@components/Widget/Tabulator.vue";
|
||||
import MessageUnmatch from "@components/Message/Unmatch.vue";
|
||||
import Unmatch from "@components/Message/Unmatch.vue";
|
||||
import Title from "@components/Widget/Title.vue";
|
||||
import Subtitle from "@components/Widget/Subtitle.vue";
|
||||
import { useEqualStr } from "@utils/global.js";
|
||||
|
|
@ -58,8 +58,8 @@ const props = defineProps({
|
|||
v-if="useEqualStr(widget.type, 'Subtitle')"
|
||||
v-bind="widget.data"
|
||||
/>
|
||||
<MessageUnmatch
|
||||
v-if="useEqualStr(widget.type, 'MessageUnmatch')"
|
||||
<Unmatch
|
||||
v-if="useEqualStr(widget.type, 'Unmatch')"
|
||||
v-bind="widget.data"
|
||||
/>
|
||||
<Tabulator
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ import ButtonGroup from "@components/Widget/ButtonGroup.vue";
|
|||
import Regular from "@components/Form/Regular.vue";
|
||||
import Title from "@components/Widget/Title.vue";
|
||||
import Subtitle from "@components/Widget/Subtitle.vue";
|
||||
import MessageUnmatch from "@components/Message/Unmatch.vue";
|
||||
import Unmatch from "@components/Message/Unmatch.vue";
|
||||
import { useEqualStr } from "@utils/global.js";
|
||||
|
||||
/**
|
||||
|
|
@ -60,8 +60,8 @@ const props = defineProps({
|
|||
v-if="useEqualStr(widget.type, 'Subtitle')"
|
||||
v-bind="widget.data"
|
||||
/>
|
||||
<MessageUnmatch
|
||||
v-if="useEqualStr(widget.type, 'MessageUnmatch')"
|
||||
<Unmatch
|
||||
v-if="useEqualStr(widget.type, 'Unmatch')"
|
||||
v-bind="widget.data"
|
||||
/>
|
||||
<Tabulator
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<script setup>
|
||||
import { defineProps, reactive, onMounted, onUnmounted, computed } from "vue";
|
||||
import MessageUnmatch from "@components/Message/Unmatch.vue";
|
||||
import Unmatch from "@components/Message/Unmatch.vue";
|
||||
import Container from "@components/Widget/Container.vue";
|
||||
import Fields from "@components/Form/Fields.vue";
|
||||
import Title from "@components/Widget/Title.vue";
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ import Subtitle from "@components/Widget/Subtitle.vue";
|
|||
import ButtonGroup from "@components/Widget/ButtonGroup.vue";
|
||||
import Text from "@components/Widget/Text.vue";
|
||||
import GroupMultiple from "@components/Forms/Group/Multiple.vue";
|
||||
import MessageUnmatch from "@components/Message/Unmatch.vue";
|
||||
import Unmatch from "@components/Message/Unmatch.vue";
|
||||
import { v4 as uuidv4 } from "uuid";
|
||||
import { useCheckPluginsValidity } from "@utils/global.js";
|
||||
import { useEasyForm } from "@store/form.js";
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import PopoverGroup from "@components/Widget/PopoverGroup.vue";
|
|||
import Text from "@components/Widget/Text.vue";
|
||||
import Filter from "@components/Widget/Filter.vue";
|
||||
import Grid from "@components/Widget/Grid.vue";
|
||||
import MessageUnmatch from "@components/Message/Unmatch.vue";
|
||||
import Unmatch from "@components/Message/Unmatch.vue";
|
||||
/**
|
||||
* @name List/Details.vue
|
||||
* @description This component is a list of items separate on two columns : one for the title, and other for a list of popovers related to the plugin (type, link...)
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
<script setup>
|
||||
import { onMounted, reactive, ref } from "vue";
|
||||
import Icons from "@components/Widget/Icons.vue";
|
||||
import Text from "@components/Widget/Text.vue";
|
||||
|
||||
/**
|
||||
|
|
@ -11,6 +12,8 @@ import Text from "@components/Widget/Text.vue";
|
|||
* text: "dashboard_no_match",
|
||||
* }
|
||||
* @param {String} text - The text to display
|
||||
* @param {String} [iconName="search"] - The icon to display
|
||||
* @param {String} [iconColor=""] - The color of the icon
|
||||
* @param {String} [unmatchClass=""] - The class to apply to the message. If not provided, the class will be based on the parent component.
|
||||
*/
|
||||
|
||||
|
|
@ -19,6 +22,16 @@ const props = defineProps({
|
|||
type: String,
|
||||
required: false,
|
||||
},
|
||||
iconName: {
|
||||
type: String,
|
||||
required: false,
|
||||
default: "search",
|
||||
},
|
||||
iconColor: {
|
||||
type: String,
|
||||
required: false,
|
||||
default: "",
|
||||
},
|
||||
unmatchClass: {
|
||||
type: String,
|
||||
required: false,
|
||||
|
|
@ -35,19 +48,12 @@ const msgEl = ref(null);
|
|||
|
||||
onMounted(() => {
|
||||
msg.text = props.text || msg.text;
|
||||
msg.class =
|
||||
props.unmatchClass || msgEl.value.closest("[data-is]")
|
||||
? `msg-unmatch-${msgEl.value
|
||||
.closest("[data-is]")
|
||||
.getAttribute("data-is")}`
|
||||
: "msg-unmatch-base";
|
||||
});
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="msg-container" ref="msgEl">
|
||||
<div data-is="unmatch" :class="[msg.class]">
|
||||
<Text :icon="{ iconName: 'search' }" :text="msg.text" />
|
||||
</div>
|
||||
<div data-is="unmatch" class="msg-container" ref="msgEl">
|
||||
<Icons v-bind="{ iconName: props.iconName, color: props.iconColor }" />
|
||||
<Text :text="msg.text" />
|
||||
</div>
|
||||
</template>
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ import Text from "@components/Widget/Text.vue";
|
|||
import Subtitle from "@components/Widget/Subtitle.vue";
|
||||
import Button from "@components/Widget/Button.vue";
|
||||
import ButtonGroup from "@components/Widget/ButtonGroup.vue";
|
||||
import MessageUnmatch from "@components/Message/Unmatch.vue";
|
||||
import Unmatch from "@components/Message/Unmatch.vue";
|
||||
import Table from "@components/Widget/Table.vue";
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<script setup>
|
||||
import { reactive, computed, ref, onMounted, watch } from "vue";
|
||||
import { v4 as uuidv4 } from "uuid";
|
||||
import MessageUnmatch from "@components/Message/Unmatch.vue";
|
||||
import Unmatch from "@components/Message/Unmatch.vue";
|
||||
import Container from "@components/Widget/Container.vue";
|
||||
import Cell from "@components/Widget/Cell.vue";
|
||||
import Filter from "@components/Widget/Filter.vue";
|
||||
|
|
|
|||
|
|
@ -74,12 +74,9 @@ const textIconEl = ref(null);
|
|||
onMounted(() => {
|
||||
// Check if next sibling is a
|
||||
const renderEl = textEl.value || textIconEl.value || null;
|
||||
const isVoid = renderEl?.closest('[data-is="void"]') ? "void" : "";
|
||||
text.class =
|
||||
props.textClass || renderEl.closest("[data-is]")
|
||||
? `text-${
|
||||
isVoid || renderEl.closest("[data-is]").getAttribute("data-is")
|
||||
}`
|
||||
? `text-${renderEl.closest("[data-is]").getAttribute("data-is")}`
|
||||
: "text-card";
|
||||
});
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ import { useDisplayStore } from "@store/global.js";
|
|||
|
||||
// Set default store
|
||||
const displayStore = useDisplayStore();
|
||||
displayStore.setDisplay("main", 1);
|
||||
displayStore.setDisplay("main", 0);
|
||||
|
||||
const bans = reactive({
|
||||
builder: "",
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -20,7 +20,7 @@
|
|||
></div>
|
||||
<div
|
||||
class="hidden"
|
||||
data-server-builder='eyJ0eXBlIjogImNhcmQiLCAiZ3JpZExheW91dENsYXNzIjogInRyYW5zcGFyZW50IiwgIndpZGdldHMiOiBbeyJ0eXBlIjogIlVubWF0Y2giLCAiZGF0YSI6IHsidGV4dCI6ICJjb25maWdzX21pc3Npbmdfc2VydmljZXMifX1dfQ=='
|
||||
data-server-builder='W3sidHlwZSI6ICJ2b2lkIiwgImdyaWRMYXlvdXRDbGFzcyI6ICJ0cmFuc3BhcmVudCIsICJ3aWRnZXRzIjogW3sidHlwZSI6ICJVbm1hdGNoIiwgImRhdGEiOiB7InRleHQiOiAiY29uZmlnc19taXNzaW5nX3NlcnZpY2VzIn19XX1d'
|
||||
></div>
|
||||
<div id="app"></div>
|
||||
<script type="module" src="configs.js"></script>
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ import { useDisplayStore } from "@store/global.js";
|
|||
|
||||
// Set default store
|
||||
const displayStore = useDisplayStore();
|
||||
displayStore.setDisplay("main", 1);
|
||||
displayStore.setDisplay("main", 0);
|
||||
|
||||
const instances = reactive({
|
||||
builder: "",
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -20,7 +20,7 @@
|
|||
></div>
|
||||
<div
|
||||
class="hidden"
|
||||
data-server-builder='W3sidHlwZSI6ICJjYXJkIiwgIndpZGdldHMiOiBbeyJ0eXBlIjogIlRpdGxlIiwgImRhdGEiOiB7InRpdGxlIjogInJlcG9ydHNfdGl0bGUifX0sIHsidHlwZSI6ICJTdWJ0aXRsZSIsICJkYXRhIjogeyJzdWJ0aXRsZSI6ICJyZXBvcnRzX3N1YnRpdGxlIn19LCB7InR5cGUiOiAiVGFidWxhdG9yIiwgImRhdGEiOiB7ImlkIjogInRhYmxlLWNvcmUtcGx1Z2lucyIsICJjb2x1bW5zIjogW3sidGl0bGUiOiAiRGF0ZSIsICJmaWVsZCI6ICJkYXRlIiwgImZvcm1hdHRlciI6ICJmaWVsZHMiLCAibWluV2lkdGgiOiAyNTB9LCB7InRpdGxlIjogIklQIiwgImZpZWxkIjogImlwIiwgImZvcm1hdHRlciI6ICJ0ZXh0In0sIHsidGl0bGUiOiAiQ291bnRyeSIsICJmaWVsZCI6ICJjb3VudHJ5IiwgImZvcm1hdHRlciI6ICJ0ZXh0In0sIHsidGl0bGUiOiAiU2VydmVyIG5hbWUiLCAiZmllbGQiOiAic2VydmVyX25hbWUiLCAiZm9ybWF0dGVyIjogInRleHQifSwgeyJ0aXRsZSI6ICJNZXRob2QiLCAiZmllbGQiOiAibWV0aG9kIiwgImZvcm1hdHRlciI6ICJ0ZXh0In0sIHsidGl0bGUiOiAiVVJMIiwgImZpZWxkIjogInVybCIsICJmb3JtYXR0ZXIiOiAidGV4dCJ9LCB7InRpdGxlIjogIkNvZGUiLCAiZmllbGQiOiAiY29kZSIsICJmb3JtYXR0ZXIiOiAidGV4dCJ9LCB7InRpdGxlIjogIlVzZXIgYWdlbnQiLCAiZmllbGQiOiAidXNlcl9hZ2VudCIsICJmb3JtYXR0ZXIiOiAidGV4dCJ9LCB7InRpdGxlIjogIlJlYXNvbiIsICJmaWVsZCI6ICJyZWFzb24iLCAiZm9ybWF0dGVyIjogInRleHQifSwgeyJ0aXRsZSI6ICJEYXRhIiwgImZpZWxkIjogImRhdGEiLCAiZm9ybWF0dGVyIjogInRleHQifV0sICJpdGVtcyI6IFt7ImRhdGUiOiB7InNldHRpbmciOiB7ImxhYmVsIjogInJlcG9ydHNfZGF0ZSIsICJuYW1lIjogImRhdGVwaWNrZXItZGF0ZS0wIiwgImlkIjogImRhdGVwaWNrZXItZGF0ZS0wIiwgInZhbHVlIjogMTcyMzQ5MTczOTk1NCwgImhpZGVMYWJlbCI6IHRydWUsICJkaXNhYmxlZCI6IHRydWUsICJpbnBUeXBlIjogImRhdGVwaWNrZXIifX0sICJzZXJ2ZXJfbmFtZSI6IHsidGV4dCI6ICJsb2NhbGhvc3QifSwgImlwIjogeyJ0ZXh0IjogIjEyNy4wLjAuMSJ9LCAiY291bnRyeSI6IHsidGV4dCI6ICJFTiJ9LCAibWV0aG9kIjogeyJ0ZXh0IjogIlBPU1QifSwgInVybCI6IHsidGV4dCI6ICIvYWRtaW4ifSwgImNvZGUiOiB7InRleHQiOiAiNDAwIn0sICJ1c2VyX2FnZW50IjogeyJ0ZXh0IjogIk1vemlsbGEvNS4wIn0sICJyZWFzb24iOiB7InRleHQiOiAiYW50aWJvdCJ9LCAiZGF0YSI6IHsidGV4dCI6ICJsb3JlIGlwc3VtIGFkIHZpdGFtIGFldGVybmFtIn19LCB7ImRhdGUiOiB7InNldHRpbmciOiB7ImxhYmVsIjogInJlcG9ydHNfZGF0ZSIsICJuYW1lIjogImRhdGVwaWNrZXItZGF0ZS0xIiwgImlkIjogImRhdGVwaWNrZXItZGF0ZS0xIiwgInZhbHVlIjogMTcyMzQ5MTczODAwMCwgImhpZGVMYWJlbCI6IHRydWUsICJkaXNhYmxlZCI6IHRydWUsICJpbnBUeXBlIjogImRhdGVwaWNrZXIifX0sICJzZXJ2ZXJfbmFtZSI6IHsidGV4dCI6ICJsb2NhbGhvc3QifSwgImlwIjogeyJ0ZXh0IjogIjEyNy4wLjAuMiJ9LCAiY291bnRyeSI6IHsidGV4dCI6ICJFTiJ9LCAibWV0aG9kIjogeyJ0ZXh0IjogIkdFVCJ9LCAidXJsIjogeyJ0ZXh0IjogIi9ldGM/In0sICJjb2RlIjogeyJ0ZXh0IjogIjMwMCJ9LCAidXNlcl9hZ2VudCI6IHsidGV4dCI6ICJNb3ppbGxhLzAuMSJ9LCAicmVhc29uIjogeyJ0ZXh0IjogInVua25vd24ifSwgImRhdGEiOiB7InRleHQiOiAiIn19XSwgImZpbHRlcnMiOiBbeyJ0eXBlIjogImxpa2UiLCAiZmllbGRzIjogWyJpcCIsICJ1cmwiLCAidXNlcl9hZ2VudCIsICJkYXRhIl0sICJzZXR0aW5nIjogeyJpZCI6ICJpbnB1dC1zZWFyY2gtbWlzYyIsICJuYW1lIjogImlucHV0LXNlYXJjaC1taXNjIiwgImxhYmVsIjogInJlcG9ydHNfc2VhcmNoX21pc2MiLCAicGxhY2Vob2xkZXIiOiAicmVwb3J0c19zZWFyY2hfbWlzY19wbGFjZWhvbGRlciIsICJ2YWx1ZSI6ICIiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJjb2x1bW5zIjogeyJwYyI6IDMsICJ0YWJsZXQiOiA0LCAibW9iaWxlIjogMTJ9LCAiZmllbGRTaXplIjogInNtIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogInJlcG9ydHNfc2VhcmNoX21pc2NfZGVzYyJ9XX19LCB7InR5cGUiOiAiPSIsICJmaWVsZHMiOiBbInJlYXNvbiJdLCAic2V0dGluZyI6IHsiaWQiOiAic2VsZWN0LXJlYXNvbiIsICJuYW1lIjogInNlbGVjdC1yZWFzb24iLCAibGFiZWwiOiAicmVwb3J0c19zZWxlY3RfcmVhc29uIiwgInZhbHVlIjogImFsbCIsICJ2YWx1ZXMiOiBbImFsbCIsICJ1bmtub3duIiwgImFudGlib3QiXSwgImlucFR5cGUiOiAic2VsZWN0IiwgIm9ubHlEb3duIjogdHJ1ZSwgImNvbHVtbnMiOiB7InBjIjogMywgInRhYmxldCI6IDQsICJtb2JpbGUiOiAxMn0sICJmaWVsZFNpemUiOiAic20iLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAicmVwb3J0c19zZWxlY3RfcmVhc29uX2Rlc2MifV19fSwgeyJ0eXBlIjogIj0iLCAiZmllbGRzIjogWyJtZXRob2QiXSwgInNldHRpbmciOiB7ImlkIjogInNlbGVjdC1tZXRob2QiLCAibmFtZSI6ICJzZWxlY3QtbWV0aG9kIiwgImxhYmVsIjogInJlcG9ydHNfc2VsZWN0X21ldGhvZCIsICJ2YWx1ZSI6ICJhbGwiLCAidmFsdWVzIjogWyJhbGwiLCAiUE9TVCIsICJHRVQiXSwgImlucFR5cGUiOiAic2VsZWN0IiwgIm9ubHlEb3duIjogdHJ1ZSwgImNvbHVtbnMiOiB7InBjIjogMywgInRhYmxldCI6IDQsICJtb2JpbGUiOiAxMn0sICJmaWVsZFNpemUiOiAic20iLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAicmVwb3J0c19zZWxlY3RfbWV0aG9kX2Rlc2MifV19fSwgeyJ0eXBlIjogIj0iLCAiZmllbGRzIjogWyJjb2RlIl0sICJzZXR0aW5nIjogeyJpZCI6ICJzZWxlY3QtY29kZSIsICJuYW1lIjogInNlbGVjdC1jb2RlIiwgImxhYmVsIjogInJlcG9ydHNfc2VsZWN0X2NvZGUiLCAidmFsdWUiOiAiYWxsIiwgInZhbHVlcyI6IFsiYWxsIiwgIjQwMCIsICIzMDAiXSwgImlucFR5cGUiOiAic2VsZWN0IiwgIm9ubHlEb3duIjogdHJ1ZSwgImNvbHVtbnMiOiB7InBjIjogMywgInRhYmxldCI6IDQsICJtb2JpbGUiOiAxMn0sICJmaWVsZFNpemUiOiAic20iLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAicmVwb3J0c19zZWxlY3RfY29kZV9kZXNjIn1dfX1dfX1dfV0='
|
||||
data-server-builder='W3sidHlwZSI6ICJjYXJkIiwgIndpZGdldHMiOiBbeyJ0eXBlIjogIlRpdGxlIiwgImRhdGEiOiB7InRpdGxlIjogInJlcG9ydHNfdGl0bGUifX0sIHsidHlwZSI6ICJTdWJ0aXRsZSIsICJkYXRhIjogeyJzdWJ0aXRsZSI6ICJyZXBvcnRzX3N1YnRpdGxlIn19LCB7InR5cGUiOiAiVGFidWxhdG9yIiwgImRhdGEiOiB7ImlkIjogInRhYmxlLWNvcmUtcGx1Z2lucyIsICJjb2x1bW5zIjogW3sidGl0bGUiOiAiRGF0ZSIsICJmaWVsZCI6ICJkYXRlIiwgImZvcm1hdHRlciI6ICJmaWVsZHMiLCAibWluV2lkdGgiOiAyNTB9LCB7InRpdGxlIjogIklQIiwgImZpZWxkIjogImlwIiwgImZvcm1hdHRlciI6ICJ0ZXh0In0sIHsidGl0bGUiOiAiQ291bnRyeSIsICJmaWVsZCI6ICJjb3VudHJ5IiwgImZvcm1hdHRlciI6ICJ0ZXh0In0sIHsidGl0bGUiOiAiU2VydmVyIG5hbWUiLCAiZmllbGQiOiAic2VydmVyX25hbWUiLCAiZm9ybWF0dGVyIjogInRleHQifSwgeyJ0aXRsZSI6ICJNZXRob2QiLCAiZmllbGQiOiAibWV0aG9kIiwgImZvcm1hdHRlciI6ICJ0ZXh0In0sIHsidGl0bGUiOiAiVVJMIiwgImZpZWxkIjogInVybCIsICJmb3JtYXR0ZXIiOiAidGV4dCJ9LCB7InRpdGxlIjogIkNvZGUiLCAiZmllbGQiOiAiY29kZSIsICJmb3JtYXR0ZXIiOiAidGV4dCJ9LCB7InRpdGxlIjogIlVzZXIgYWdlbnQiLCAiZmllbGQiOiAidXNlcl9hZ2VudCIsICJmb3JtYXR0ZXIiOiAidGV4dCJ9LCB7InRpdGxlIjogIlJlYXNvbiIsICJmaWVsZCI6ICJyZWFzb24iLCAiZm9ybWF0dGVyIjogInRleHQifSwgeyJ0aXRsZSI6ICJEYXRhIiwgImZpZWxkIjogImRhdGEiLCAiZm9ybWF0dGVyIjogInRleHQifV0sICJpdGVtcyI6IFt7ImRhdGUiOiB7InNldHRpbmciOiB7ImxhYmVsIjogInJlcG9ydHNfZGF0ZSIsICJuYW1lIjogImRhdGVwaWNrZXItZGF0ZS0wIiwgImlkIjogImRhdGVwaWNrZXItZGF0ZS0wIiwgInZhbHVlIjogMTcyMzQ5MTczOTk1NCwgImhpZGVMYWJlbCI6IHRydWUsICJkaXNhYmxlZCI6IHRydWUsICJpbnBUeXBlIjogImRhdGVwaWNrZXIifX0sICJzZXJ2ZXJfbmFtZSI6IHsidGV4dCI6ICJsb2NhbGhvc3QifSwgImlwIjogeyJ0ZXh0IjogIjEyNy4wLjAuMSJ9LCAiY291bnRyeSI6IHsidGV4dCI6ICJFTiJ9LCAibWV0aG9kIjogeyJ0ZXh0IjogIlBPU1QifSwgInVybCI6IHsidGV4dCI6ICIvYWRtaW4ifSwgImNvZGUiOiB7InRleHQiOiAiNDAwIn0sICJ1c2VyX2FnZW50IjogeyJ0ZXh0IjogIk1vemlsbGEvNS4wIn0sICJyZWFzb24iOiB7InRleHQiOiAiYW50aWJvdCJ9LCAiZGF0YSI6IHsidGV4dCI6ICJsb3JlIGlwc3VtIGFkIHZpdGFtIGFldGVybmFtIn19LCB7ImRhdGUiOiB7InNldHRpbmciOiB7ImxhYmVsIjogInJlcG9ydHNfZGF0ZSIsICJuYW1lIjogImRhdGVwaWNrZXItZGF0ZS0xIiwgImlkIjogImRhdGVwaWNrZXItZGF0ZS0xIiwgInZhbHVlIjogMTcyMzQ5MTczODAwMCwgImhpZGVMYWJlbCI6IHRydWUsICJkaXNhYmxlZCI6IHRydWUsICJpbnBUeXBlIjogImRhdGVwaWNrZXIifX0sICJzZXJ2ZXJfbmFtZSI6IHsidGV4dCI6ICJsb2NhbGhvc3QifSwgImlwIjogeyJ0ZXh0IjogIjEyNy4wLjAuMiJ9LCAiY291bnRyeSI6IHsidGV4dCI6ICJFTiJ9LCAibWV0aG9kIjogeyJ0ZXh0IjogIkdFVCJ9LCAidXJsIjogeyJ0ZXh0IjogIi9ldGM/In0sICJjb2RlIjogeyJ0ZXh0IjogIjMwMCJ9LCAidXNlcl9hZ2VudCI6IHsidGV4dCI6ICJNb3ppbGxhLzAuMSJ9LCAicmVhc29uIjogeyJ0ZXh0IjogInVua25vd24ifSwgImRhdGEiOiB7InRleHQiOiAiIn19XSwgImZpbHRlcnMiOiBbeyJ0eXBlIjogImxpa2UiLCAiZmllbGRzIjogWyJpcCIsICJ1cmwiLCAidXNlcl9hZ2VudCIsICJkYXRhIl0sICJzZXR0aW5nIjogeyJpZCI6ICJpbnB1dC1zZWFyY2gtbWlzYyIsICJuYW1lIjogImlucHV0LXNlYXJjaC1taXNjIiwgImxhYmVsIjogInJlcG9ydHNfc2VhcmNoX21pc2MiLCAicGxhY2Vob2xkZXIiOiAicmVwb3J0c19zZWFyY2hfbWlzY19wbGFjZWhvbGRlciIsICJ2YWx1ZSI6ICIiLCAiaW5wVHlwZSI6ICJpbnB1dCIsICJjb2x1bW5zIjogeyJwYyI6IDMsICJ0YWJsZXQiOiA0LCAibW9iaWxlIjogMTJ9LCAiZmllbGRTaXplIjogInNtIiwgInBvcG92ZXJzIjogW3siaWNvbk5hbWUiOiAiaW5mbyIsICJ0ZXh0IjogInJlcG9ydHNfc2VhcmNoX21pc2NfZGVzYyJ9XX19LCB7InR5cGUiOiAiPSIsICJmaWVsZHMiOiBbInJlYXNvbiJdLCAic2V0dGluZyI6IHsiaWQiOiAic2VsZWN0LXJlYXNvbiIsICJuYW1lIjogInNlbGVjdC1yZWFzb24iLCAibGFiZWwiOiAicmVwb3J0c19zZWxlY3RfcmVhc29uIiwgInZhbHVlIjogImFsbCIsICJ2YWx1ZXMiOiBbImFsbCIsICJhbnRpYm90IiwgInVua25vd24iXSwgImlucFR5cGUiOiAic2VsZWN0IiwgIm9ubHlEb3duIjogdHJ1ZSwgImNvbHVtbnMiOiB7InBjIjogMywgInRhYmxldCI6IDQsICJtb2JpbGUiOiAxMn0sICJmaWVsZFNpemUiOiAic20iLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAicmVwb3J0c19zZWxlY3RfcmVhc29uX2Rlc2MifV19fSwgeyJ0eXBlIjogIj0iLCAiZmllbGRzIjogWyJtZXRob2QiXSwgInNldHRpbmciOiB7ImlkIjogInNlbGVjdC1tZXRob2QiLCAibmFtZSI6ICJzZWxlY3QtbWV0aG9kIiwgImxhYmVsIjogInJlcG9ydHNfc2VsZWN0X21ldGhvZCIsICJ2YWx1ZSI6ICJhbGwiLCAidmFsdWVzIjogWyJhbGwiLCAiR0VUIiwgIlBPU1QiXSwgImlucFR5cGUiOiAic2VsZWN0IiwgIm9ubHlEb3duIjogdHJ1ZSwgImNvbHVtbnMiOiB7InBjIjogMywgInRhYmxldCI6IDQsICJtb2JpbGUiOiAxMn0sICJmaWVsZFNpemUiOiAic20iLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAicmVwb3J0c19zZWxlY3RfbWV0aG9kX2Rlc2MifV19fSwgeyJ0eXBlIjogIj0iLCAiZmllbGRzIjogWyJjb2RlIl0sICJzZXR0aW5nIjogeyJpZCI6ICJzZWxlY3QtY29kZSIsICJuYW1lIjogInNlbGVjdC1jb2RlIiwgImxhYmVsIjogInJlcG9ydHNfc2VsZWN0X2NvZGUiLCAidmFsdWUiOiAiYWxsIiwgInZhbHVlcyI6IFsiYWxsIiwgIjMwMCIsICI0MDAiXSwgImlucFR5cGUiOiAic2VsZWN0IiwgIm9ubHlEb3duIjogdHJ1ZSwgImNvbHVtbnMiOiB7InBjIjogMywgInRhYmxldCI6IDQsICJtb2JpbGUiOiAxMn0sICJmaWVsZFNpemUiOiAic20iLCAicG9wb3ZlcnMiOiBbeyJpY29uTmFtZSI6ICJpbmZvIiwgInRleHQiOiAicmVwb3J0c19zZWxlY3RfY29kZV9kZXNjIn1dfX1dfX1dfV0='
|
||||
></div>
|
||||
<div id="app"></div>
|
||||
<script type="module" src="reports.js"></script>
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -621,7 +621,7 @@ body {
|
|||
|
||||
/* MESSAGE */
|
||||
.msg-container {
|
||||
@apply col-span-12 w-full;
|
||||
@apply col-span-12 w-full py-4 flex justify-center items-center;
|
||||
}
|
||||
|
||||
.msg-unmatch-card {
|
||||
|
|
@ -1184,11 +1184,7 @@ body {
|
|||
}
|
||||
|
||||
.text-unmatch {
|
||||
@apply col-span-12 text-lg mb-0 font-bold dark:text-gray-300 break-word;
|
||||
}
|
||||
|
||||
.text-void {
|
||||
@apply col-span-12 text-lg mb-0 font-bold text-gray-300 break-word;
|
||||
@apply col-span-12 text-lg mb-0 mx-3 font-bold dark:text-gray-300 break-word;
|
||||
}
|
||||
|
||||
.text-table-content {
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
Loading…
Reference in a new issue