{#if createOpen && activeSource} createOpen = false} onCreated={(request) => { ++loadGeneration; loading = false; requests = [request, ...requests.filter(item => item.id !== request.id)]; stateFilter = request.state; query = ""; collapsedRepositories = new Set(); errors = []; createOpen = false; selectRequest(request, true); }}/> {/if}
{#if sources.length === 0}

{de ? "Keine Integration eingerichtet" : "No integration configured"}

{de ? "Verbinde GitHub, GitLab, Gitea oder Azure DevOps, um Pull- und Merge-Requests hier zu sehen." : "Connect GitHub, GitLab, Gitea, or Azure DevOps to see pull and merge requests here."}

{:else}
8} searchPlaceholder={de ? "Repository suchen …" : "Search repository …"} emptyText={de ? "Kein passendes Repository" : "No matching repository"} ariaLabel={de ? "Repository filtern" : "Filter repository"} onChange={(value) => { repositoryFilter = value; selectedId = ""; }} > {#snippet optionIcon()}
({ value: source.id, label: source.label }))} ariaLabel={de ? "Integration auswählen" : "Select integration"} onChange={selectSource} />
{#if actionNotice}
{actionNotice}
{/if} {#if errors.length > 0}
{backendRestartRequired ? (de ? "Gitty muss neu gestartet werden, damit das Review-Backend geladen wird." : "Restart Gitty to load the Review Center backend.") : (de ? "Die ausgewählte Integration konnte nicht geladen werden." : "The selected integration could not be loaded.")}
    {#each errors as error}
  • {error.source}: {error.message}
  • {/each}
{/if}
StatusRequest{de ? "Autor" : "Author"}{de ? "Prüfer" : "Reviewers"}{de ? "Repository / Branch" : "Repository / Branch"}{de ? "Aktion" : "Action"}
{#if loading && requests.length === 0}
{de ? "Requests werden geladen …" : "Loading requests …"}
{:else if groupedRequests.length === 0}
{de ? "Keine passenden Requests" : "No matching requests"}{de ? "Passe Status oder Suche an." : "Adjust the status or search."}
{:else}
{#each groupedRequests as group (group.name)}
{#if !collapsedRepositories.has(group.name)} {#each group.items as request (request.id)}
selectRequest(request)} onkeydown={(event) => { if (event.key === "Enter") selectRequest(request); }}> {#if request.state === "merged"}{:else if request.state === "closed"}{:else if request.state === "draft"}{:else}{/if} {stateLabel(request.state)}{formatRelativeDate(request.updatedAt || request.createdAt)} #{request.number}{request.title}+{request.additions ?? "–"}/−{request.deletions ?? "–"}{#if request.changedFiles !== null}{request.changedFiles} {request.changedFiles === 1 ? (de ? "Datei geändert" : "file changed") : (de ? "Dateien geändert" : "files changed")}{:else if detailLoadingId === request.id}{de ? "Lädt …" : "Loading …"}{/if} {#if request.collaborators.length}{#each request.collaborators.slice(0, 3) as collaborator}{initials(collaborator)}{/each}{:else}{/if} {request.repositoryName}{#if request.sourceBranch && request.targetBranch}{request.sourceBranch}{request.targetBranch}{:else}{de ? "Branches werden geladen …" : "Loading branches …"}{/if} {#if actionMenuId === request.id} {#if request.state === "open" || request.state === "draft"} {#if isWaitingForResolvedStatus(request)}{:else if hasConflicts(request)}{:else}{/if} {:else if request.state === "closed"} {/if} {/if}
{/each} {/if}
{/each}
{/if}
{#if detailOpen && selected} {/if}
{/if}
{#if reviewConfirmRequest} answerReviewConfirmation(true, value, checked)} onCancel={() => answerReviewConfirmation(false)} /> {/if}