Filter by panel ID

This commit is contained in:
rxdn 2021-09-01 18:58:12 +01:00
parent 9d23c3ef39
commit 4d42043732
8 changed files with 69 additions and 22 deletions

3
.gitmodules vendored Normal file
View File

@ -0,0 +1,3 @@
[submodule "locale"]
path = locale
url = https://github.com/TicketsBot/locale.git

View File

@ -11,6 +11,7 @@ type wrappedQueryOptions struct {
Id int `json:"id,string"`
Username string `json:"username"`
UserId uint64 `json:"user_id,string"`
PanelId int `json:"panel_id"`
Page int `json:"page"`
}
@ -43,6 +44,7 @@ func (o *wrappedQueryOptions) toQueryOptions(guildId uint64) (database.TicketQue
GuildId: guildId,
UserIds: userIds,
Open: utils.BoolPtr(false),
PanelId: o.PanelId,
Order: database.OrderTypeDescending,
Limit: pageLimit,
Offset: offset,

View File

@ -15,7 +15,7 @@ import (
"github.com/TicketsBot/archiverclient"
"github.com/TicketsBot/common/chatrelay"
"github.com/TicketsBot/common/premium"
"github.com/TicketsBot/worker/bot/i18n"
"github.com/TicketsBot/worker/i18n"
"github.com/apex/log"
"github.com/rxdn/gdl/rest/request"
"math/rand"
@ -40,9 +40,8 @@ func main() {
utils.ArchiverClient = archiverclient.NewArchiverClientWithTimeout(config.Conf.Bot.ObjectStore, time.Second*15, []byte(config.Conf.Bot.AesKey))
utils.LoadEmoji()
if err := i18n.LoadMessages(database.Client); err != nil {
panic(err)
}
i18n.LoadMessages()
if config.Conf.Bot.ProxyUrl != "" {
request.RegisterHook(utils.ProxyHook)

View File

@ -58,7 +58,7 @@ export default {
browser: true,
dedupe: ['svelte']
}),
commonjs(),
commonjs({ sourceMap: false }),
babel({
babelHelpers: 'bundled',
extensions: ['.js', '.mjs', '.html', '.svelte'],

View File

@ -1,10 +1,8 @@
<label class="form-label">{label}</label>
<div class="multiselect-super">
<Select placeholder="Select..." items={panels} optionIdentifier="panel_id" getOptionLabel={labelMapper}
getSelectionLabel={labelMapper} bind:selectedValue={panelsRaw}
on:select={update} isMulti={true}/>
getSelectionLabel={labelMapper} bind:selectedValue={selectedRaw}
on:select={update} on:clear={handleClear} {isMulti} />
</div>
<script>
@ -13,24 +11,48 @@
export let label;
export let panels = [];
export let selected = [];
export let selected;
export let isMulti = true;
let panelsRaw = [];
let selectedRaw;
function labelMapper(panel) {
return panel.title;
return panel.title || "";
}
function update() {
if (panelsRaw === undefined) {
panelsRaw = [];
if (selectedRaw === undefined) {
selectedRaw = [];
}
selected = panelsRaw.map((panel) => panel.panel_id);
if (isMulti) {
selected = selectedRaw.map((panel) => panel.panel_id);
} else {
if (selectedRaw) {
selected = selectedRaw.panel_id;
} else {
selected = undefined;
}
}
}
function handleClear() {
if (isMulti) {
selected = [];
} else {
selected = undefined;
}
}
function applyOverrides() {
panelsRaw = panels.filter((p) => selected.includes(p.panel_id));
if (isMulti) {
selected = [];
selectedRaw = panels.filter((p) => selected.includes(p.panel_id));
} else {
if (selectedRaw) {
selectedRaw = selectedRaw.panel_id;
}
}
}
onMount(() => {

View File

@ -1,6 +1,6 @@
<div class="content">
<div class="col">
<Card footer="{false}" dropdown="{true}" ref="filter-card">
<Card footer={false} ref="filter-card">
<span slot="title">
<i class="fas fa-filter"></i>
Filter Logs
@ -9,14 +9,18 @@
<div slot="body" class="body-wrapper">
<form class="form-wrapper" on:submit|preventDefault={filter}>
<div class="row">
<Input col3=true label="Ticket ID" placeholder="Ticket ID"
<Input col4=true label="Ticket ID" placeholder="Ticket ID"
on:input={handleInputTicketId} bind:value={filterSettings.ticketId}/>
<Input col3=true label="Username" placeholder="Username" on:input={handleInputUsername}
<Input col4=true label="Username" placeholder="Username" on:input={handleInputUsername}
bind:value={filterSettings.username}/>
<Input col3=true label="User ID" placeholder="User ID" on:input={handleInputUserId}
<Input col4=true label="User ID" placeholder="User ID" on:input={handleInputUserId}
bind:value={filterSettings.userId}/>
<div class="col-4">
<PanelDropdown label="Panel" isMulti={false} bind:panels bind:selected={selectedPanel} />
</div>
</div>
<div class="row centre">
<Button icon="fas fa-search">Filter</Button>
@ -90,6 +94,7 @@
import {API_URL} from "../js/constants";
import {setDefaultHeaders} from '../includes/Auth.svelte'
import {Navigate} from 'svelte-router-spa'
import PanelDropdown from "../components/PanelDropdown.svelte";
setDefaultHeaders();
@ -99,6 +104,9 @@
let filterSettings = {};
let transcripts = [];
let panels = [];
let selectedPanel;
const pageLimit = 15;
let page = 1;
@ -146,6 +154,7 @@
id: filterSettings.ticketId,
username: filterSettings.username,
user_id: filterSettings.userId,
panel_id: selectedPanel,
page: page,
};
}
@ -156,6 +165,16 @@
page = 1;
}
async function loadPanels() {
const res = await axios.get(`${API_URL}/api/${guildId}/panels`);
if (res.status !== 200) {
notifyError(res.data.error);
return;
}
panels = res.data;
}
async function loadData(paginationSettings) {
const res = await axios.post(`${API_URL}/api/${guildId}/transcripts`, paginationSettings);
if (res.status !== 200) {
@ -172,6 +191,7 @@
})
withLoadingScreen(async () => {
await loadPanels();
await loadData({})
})
</script>

4
go.mod
View File

@ -6,8 +6,8 @@ require (
github.com/BurntSushi/toml v0.3.1
github.com/TicketsBot/archiverclient v0.0.0-20210220155137-a562b2f1bbbb
github.com/TicketsBot/common v0.0.0-20210727134627-35eb7ed03a44
github.com/TicketsBot/database v0.0.0-20210816195201-90c765ca95c8
github.com/TicketsBot/worker v0.0.0-20210830140323-d24e405daad7
github.com/TicketsBot/database v0.0.0-20210901165354-a7e41939592c
github.com/TicketsBot/worker v0.0.0-20210831230124-0f73f4a70602
github.com/apex/log v1.1.2
github.com/boj/redistore v0.0.0-20180917114910-cd5dcc76aeff // indirect
github.com/gin-contrib/static v0.0.0-20191128031702-f81c604d8ac2

1
locale Submodule

@ -0,0 +1 @@
Subproject commit ce006c345e84acdffd369878dc16b45048f5a92b