Skip to content

Commit 897332d

Browse files
authored
Merge pull request #104 from iceljc/features/refine-chat-window
Features/refine chat window
2 parents 99c3f6c + 86a1bc0 commit 897332d

File tree

5 files changed

+73
-42
lines changed

5 files changed

+73
-42
lines changed

src/lib/scss/custom/pages/_chat.scss

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -364,15 +364,15 @@
364364
background-color: black;
365365

366366
.log-close-btn {
367-
margin-top: 1.5rem;
368-
margin-bottom: 10px;
367+
margin-top: 1.2rem;
369368
position: sticky;
370369
display: flex;
371370
justify-content: space-between;
371+
height: 7vh;
372372
}
373373

374374
.state-log-section {
375-
height: 92vh;
375+
height: 90vh;
376376
}
377377

378378
.content-log-list {
@@ -390,7 +390,6 @@
390390

391391
.queue-change-log-list {
392392
width: 100%;
393-
height: 5vh;
394393
}
395394

396395
.log-list {
@@ -470,7 +469,7 @@
470469

471470
.log-content {
472471
text-align: center;
473-
font-size: 17px;
472+
font-size: 14px;
474473
margin-top: 2px;
475474
margin-bottom: 2px;
476475
}

src/routes/chat/[agentId]/[conversationId]/chat-box.svelte

Lines changed: 36 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,8 @@
6666
/** @type {import('$types').UserModel} */
6767
export let currentUser;
6868
69-
// @ts-ignore
70-
let scrollbar;
69+
/** @type {any[]} */
70+
let scrollbars = [];
7171
let microphoneIcon = "microphone-off";
7272
7373
/** @type {import('$types').ChatResponseModel?} */
@@ -121,8 +121,12 @@
121121
signalr.onConversationMessageDeleted = onConversationMessageDeleted;
122122
await signalr.start(params.conversationId);
123123
124-
const scrollElement = document.querySelector('.chat-scrollbar');
125-
scrollbar = OverlayScrollbars(scrollElement, options);
124+
const scrollbarElements = [
125+
document.querySelector('.chat-scrollbar')
126+
].filter(Boolean);
127+
scrollbarElements.forEach(elem => {
128+
scrollbars = [ ...scrollbars, OverlayScrollbars(elem, options) ];
129+
});
126130
refresh();
127131
});
128132
@@ -210,10 +214,13 @@
210214
groupedDialogs = groupDialogs(dialogs);
211215
await tick();
212216
213-
setTimeout(() => {
214-
const { viewport } = scrollbar.elements();
215-
viewport.scrollTo({ top: viewport.scrollHeight, behavior: 'smooth' }); // set scroll offset
216-
}, 200);
217+
// @ts-ignore
218+
scrollbars.forEach(scrollbar => {
219+
setTimeout(() => {
220+
const { viewport } = scrollbar.elements();
221+
viewport.scrollTo({ top: viewport.scrollHeight, behavior: 'smooth' });
222+
}, 200);
223+
});
217224
}
218225
219226
/** @param {import('$types').ChatResponseModel[]} dialogs */
@@ -451,13 +458,14 @@
451458
});
452459
} else {
453460
window.parent.postMessage({ action: "close" }, "*");
454-
}
461+
}
455462
}
456463
457464
function toggleContentLog() {
458465
isLoadContentLog = !isLoadContentLog;
459466
if (!isLoadContentLog) {
460467
contentLogs = [];
468+
agentQueueChangeLogs = [];
461469
isContentLogClosed = true;
462470
} else {
463471
isContentLogClosed = false;
@@ -472,6 +480,7 @@
472480
isLoadStateLog = !isLoadStateLog;
473481
if (!isLoadStateLog) {
474482
stateLogs = [];
483+
stateChangeLogs = [];
475484
isStateLogClosed = true;
476485
} else {
477486
isStateLogClosed = false;
@@ -518,7 +527,6 @@
518527
title: 'Are you sure?',
519528
text: "You won't be able to revert this!",
520529
icon: 'warning',
521-
customClass: 'custom-modal',
522530
showCancelButton: true,
523531
confirmButtonText: 'Yes, delete it!',
524532
cancelButtonText: 'No'
@@ -533,15 +541,24 @@
533541
534542
/**
535543
* @param {any} e
536-
* @param {string} messageText
544+
* @param {import('$types').ChatResponseModel} message
537545
*/
538-
function copyMessage(e, messageText) {
546+
function resendMessage(e, message) {
539547
e.preventDefault();
540-
if (!!!text) {
541-
text += messageText;
542-
} else {
543-
text += ' ' + messageText;
544-
}
548+
// @ts-ignore
549+
Swal.fire({
550+
title: 'Are you sure?',
551+
text: "Send this message again!",
552+
icon: 'warning',
553+
showCancelButton: true,
554+
confirmButtonText: 'Yes, go ahead!',
555+
cancelButtonText: 'No'
556+
// @ts-ignore
557+
}).then(async (result) => {
558+
if (result.value) {
559+
sendChatMessage(message?.text, { truncateMsgId: message?.message_id });
560+
}
561+
});
545562
}
546563
547564
/**
@@ -850,12 +867,12 @@
850867
</div>
851868
{#if !isLite}
852869
<Dropdown>
853-
<DropdownToggle class="dropdown-toggle" tag="span" color="">
870+
<DropdownToggle class="dropdown-toggle" tag="span" disabled={isSendingMsg || isThinking}>
854871
<i class="bx bx-dots-vertical-rounded" />
855872
</DropdownToggle>
856873
<DropdownMenu class="dropdown-menu-end">
857874
<DropdownItem on:click={(e) => editMessage(e, message)}>Edit</DropdownItem>
858-
<DropdownItem on:click={(e) => copyMessage(e, message.text)}>Copy</DropdownItem>
875+
<DropdownItem on:click={(e) => resendMessage(e, message)}>Resend</DropdownItem>
859876
<DropdownItem on:click={(e) => deleteMessage(e, message.message_id)}>Delete</DropdownItem>
860877
</DropdownMenu>
861878
</Dropdown>

src/routes/chat/[agentId]/[conversationId]/contentLogs/agent-queue-change-element.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,6 @@
77

88
<div class="log-element queue-change-container">
99
<div class="log-content queue-change-content">
10-
<span class="text-warning">{data?.log}</span>
10+
<span class="text-danger">{data?.log}</span>
1111
</div>
1212
</div>

src/routes/chat/[agentId]/[conversationId]/stateLogs/state-change-element.svelte

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,26 @@
11
<script>
2-
32
/** @type {any} */
43
export let data;
54
65
/** @type {string} */
76
let beforeActiveRoundText = '';
87
let afterActiveRoundText = '';
8+
let beforeDataValue = '';
9+
let afterDataValue = '';
10+
const defaultValue = '-';
911
1012
$: {
13+
beforeDataValue = buildDataValue(data?.before_value);
14+
afterDataValue = buildDataValue(data?.after_value);
1115
beforeActiveRoundText = buildActiveRoundText(data?.before_value, data?.before_active_rounds);
1216
afterActiveRoundText = buildActiveRoundText(data?.after_value, data?.after_active_rounds);
1317
}
1418
19+
/** @param {any} value */
20+
function buildDataValue(value) {
21+
return value || defaultValue;
22+
}
23+
1524
/**
1625
* @param {any} value
1726
* @param {any} activeRounds
@@ -33,14 +42,15 @@
3342
}
3443
</script>
3544
45+
{#if beforeDataValue != defaultValue || afterDataValue != defaultValue}
3646
<div class="log-element state-change-container">
3747
<div class="log-meta state-key">
3848
<div><b>{`${data?.name}`}</b></div>
3949
</div>
4050
<div class="log-content state-value-container">
4151
<div class="state-value">
4252
<div class="value">
43-
{`${data?.before_value || 'unknown'}`}
53+
{beforeDataValue}
4454
</div>
4555
{#if !!beforeActiveRoundText}
4656
<div class="active-rounds">
@@ -50,7 +60,7 @@
5060
</div>
5161
<div class="state-value text-warning">
5262
<div class="value">
53-
{`${data?.after_value || 'unknown'}`}
63+
{afterDataValue}
5464
</div>
5565
{#if !!afterActiveRoundText}
5666
<div class="active-rounds">
@@ -60,3 +70,4 @@
6070
</div>
6171
</div>
6272
</div>
73+
{/if}

src/routes/chat/[agentId]/[conversationId]/stateLogs/state-log.svelte

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -80,20 +80,24 @@
8080
<div class="chat-log">
8181
<div class="card mb-0 log-background" style="height: 100%;">
8282
<div class="log-close-btn padding-side">
83-
<button
84-
type="button"
85-
class="btn btn-sm btn-secondary btn-rounded chat-send waves-effect waves-light"
86-
on:click={() => closeWindow()}
87-
>
88-
<i class="mdi mdi-window-close"></i>
89-
</button>
90-
<button
91-
type="button"
92-
class="btn btn-sm btn-secondary btn-rounded chat-send waves-effect waves-light"
93-
on:click={() => handleCleanScreen()}
94-
>
95-
<i class="bx bx-trash"></i>
96-
</button>
83+
<div>
84+
<button
85+
type="button"
86+
class="btn btn-sm btn-secondary btn-rounded chat-send waves-effect waves-light"
87+
on:click={() => closeWindow()}
88+
>
89+
<i class="mdi mdi-window-close"></i>
90+
</button>
91+
</div>
92+
<div>
93+
<button
94+
type="button"
95+
class="btn btn-sm btn-secondary btn-rounded chat-send waves-effect waves-light"
96+
on:click={() => handleCleanScreen()}
97+
>
98+
<i class="bx bx-trash"></i>
99+
</button>
100+
</div>
97101
</div>
98102
<div class="state-log-section">
99103
<Splitpanes horizontal>

0 commit comments

Comments
 (0)