fixed teams

This commit is contained in:
ValueOn AG 2026-05-12 17:49:44 +02:00
parent a6b37ed684
commit ccb2798170
5 changed files with 15 additions and 17 deletions

View file

@ -254,35 +254,30 @@
padding: 0.75rem 1rem; padding: 0.75rem 1rem;
border-bottom: 1px solid var(--border-color, #e0e0e0); border-bottom: 1px solid var(--border-color, #e0e0e0);
background: var(--bg-primary, #fff); background: var(--bg-primary, #fff);
overflow: visible;
} }
/* Toolbar: context (load + name) is fluid with ellipsis; actions stay right-aligned. */ /* Toolbar: context (load + name) is fluid with ellipsis; actions wrap below on narrow viewports. */
.canvasHeaderRow { .canvasHeaderRow {
display: grid; display: flex;
grid-template-columns: minmax(0, 1fr) auto; flex-wrap: wrap;
gap: 0.75rem; gap: 0.5rem 0.75rem;
align-items: center; align-items: center;
width: 100%; width: 100%;
} }
@media (max-width: 900px) {
.canvasHeaderRow {
grid-template-columns: 1fr;
}
}
.canvasHeaderContext { .canvasHeaderContext {
display: flex; display: flex;
align-items: center; align-items: center;
gap: 0.5rem; gap: 0.5rem;
min-width: 0; min-width: 0;
flex: 1; flex: 1 1 auto;
} }
/* Closed <select> width must not follow the longest option label. */ /* Closed <select> width must not follow the longest option label. */
.canvasHeaderWorkflowSelect { .canvasHeaderWorkflowSelect {
flex: 0 0 auto; flex: 0 1 12.5rem;
width: 12.5rem; min-width: 8rem;
max-width: 100%; max-width: 100%;
padding: 0.4rem 0.5rem; padding: 0.4rem 0.5rem;
min-height: 2rem; min-height: 2rem;
@ -347,6 +342,7 @@
background: var(--bg-secondary, #f8f9fa); background: var(--bg-secondary, #f8f9fa);
flex: 0 1 auto; flex: 0 1 auto;
max-width: 100%; max-width: 100%;
margin-left: auto;
} }
/* .retryButton sets margin-top for legacy error stacks — not wanted in the toolbar. */ /* .retryButton sets margin-top for legacy error stacks — not wanted in the toolbar. */
@ -366,6 +362,8 @@
@media (max-width: 900px) { @media (max-width: 900px) {
.canvasHeaderActionPanel { .canvasHeaderActionPanel {
justify-content: flex-start; justify-content: flex-start;
margin-left: 0;
flex-basis: 100%;
} }
} }

View file

@ -60,7 +60,7 @@ export const RagRunningBadge: React.FC = () => {
<div key={job.jobId} className={styles.jobRow}> <div key={job.jobId} className={styles.jobRow}>
<span className={styles.jobLabel}>{job.connectionLabel || job.jobType}</span> <span className={styles.jobLabel}>{job.connectionLabel || job.jobType}</span>
<span className={styles.jobProgress}> <span className={styles.jobProgress}>
{job.progress != null ? `${Math.round(job.progress * 100)}%` : '...'} {job.progress != null ? `${Math.round(job.progress)}%` : '...'}
</span> </span>
</div> </div>
))} ))}

View file

@ -212,7 +212,7 @@ export const RagInventoryPage: React.FC = () => {
{conn.runningJobs.length > 0 && ( {conn.runningJobs.length > 0 && (
<div className={styles.jobBanner}> <div className={styles.jobBanner}>
<FaSync className={styles.spinIcon} /> <FaSync className={styles.spinIcon} />
<span>{conn.runningJobs[0].progressMessage || `${Math.round(conn.runningJobs[0].progress * 100)}%`}</span> <span>{conn.runningJobs[0].progressMessage || `${Math.round(conn.runningJobs[0].progress)}%`}</span>
<button className={styles.stopBtn} onClick={() => _handleStop(conn.id)} title={t('Indexierung stoppen')}> <button className={styles.stopBtn} onClick={() => _handleStop(conn.id)} title={t('Indexierung stoppen')}>
<FaStop size={12} /> {t('Stop')} <FaStop size={12} /> {t('Stop')}
</button> </button>

View file

@ -261,7 +261,7 @@ export const TeamsbotDashboardView: React.FC = () => {
<button type="button" className={styles.viewButton} onClick={() => navigate(_sessionPath(session.id))}> <button type="button" className={styles.viewButton} onClick={() => navigate(_sessionPath(session.id))}>
{t('Live ansehen')} {t('Live ansehen')}
</button> </button>
{['active', 'joining', 'pending'].includes(session.status) && ( {!['ended', 'error', 'leaving'].includes(session.status) && (
<button type="button" className={styles.stopButton} onClick={() => _handleStopSession(session.id)}> <button type="button" className={styles.stopButton} onClick={() => _handleStopSession(session.id)}>
{t('Stoppen')} {t('Stoppen')}
</button> </button>

View file

@ -838,7 +838,7 @@ export const TeamsbotSessionView: React.FC = () => {
{isLive && <span className={styles.liveBadge}>LIVE</span>} {isLive && <span className={styles.liveBadge}>LIVE</span>}
</div> </div>
<div className={styles.sessionControls}> <div className={styles.sessionControls}>
{['active', 'joining', 'pending'].includes(session.status) && ( {!['ended', 'error', 'leaving'].includes(session.status) && (
<button className={styles.stopButton} onClick={_handleStop}>{t('Sitzung beenden')}</button> <button className={styles.stopButton} onClick={_handleStop}>{t('Sitzung beenden')}</button>
)} )}
</div> </div>