Spaces:
Running
Running
Download webui/components/projects/project-edit-basic-data.html from Leon4gr45/openoperator: direct link, hf CLI and curl.
- Browser
- Download file 13.2 kB
-
https://huggingface.co/spaces/Leon4gr45/openoperator/resolve/main/webui/components/projects/project-edit-basic-data.html
- Command line
-
hf download hf://spaces/Leon4gr45/openoperator/webui/components/projects/project-edit-basic-data.html
-
curl -L -o project-edit-basic-data.html https://huggingface.co/spaces/Leon4gr45/openoperator/resolve/main/webui/components/projects/project-edit-basic-data.html
13.2 kB
| <html> | |
| <head> | |
| <title>Project basic data</title> | |
| <script type="module"> | |
| import { store } from "/components/projects/projects-store.js"; | |
| </script> | |
| </head> | |
| <body> | |
| <div x-data> | |
| <template x-if="$store.projects && $store.projects.selectedProject"> | |
| <div> | |
| <template x-if="!$store.projects.selectedProject._meta.creating"> | |
| <div class="projects-form-group"> | |
| <label class="projects-form-label">Folder name</label> | |
| <span class="projects-form-description">Project files and settings are located in | |
| <strong><span | |
| x-text="$store.projects.getSelectedAbsPath()"></span></strong></span> | |
| <div class="projects-input-with-button-wrapper"> | |
| <input class="projects-form-input projects-disabled" type="text" x-model="$store.projects.selectedProject.name" disabled> | |
| <button class="button icon-button" @click="$store.projects.browseSelected()"> | |
| <x-icon class="icon" name="folder"></x-icon> | |
| <span>Browse</span> | |
| </button> | |
| </div> | |
| </div> | |
| </template> | |
| <div class="projects-form-group"> | |
| <label class="projects-form-label">Title</label> | |
| <span class="projects-form-description">Title and description are visible to both you and the agent | |
| and can help it understand the project.</span> | |
| <input class="projects-form-input" type="text" x-model="$store.projects.selectedProject.title" | |
| placeholder="Optional title"> | |
| </div> | |
| <!-- <div class="projects-form-group"> | |
| <label class="projects-form-label">Description</label> | |
| <textarea class="projects-form-textarea" x-model="$store.projects.selectedProject.description" | |
| rows="5" placeholder="Optional description"></textarea> | |
| </div> --> | |
| <div class="projects-form-group"> | |
| <label class="projects-form-label">Color</label> | |
| <div class="projects-color-row"> | |
| <div class="projects-color-ball projects-color-none" | |
| :class="{'selected': !$store.projects.selectedProject.color}" | |
| @click="$store.projects.selectedProject.color = ''"> | |
| <span class="projects-color-x">×</span> | |
| </div> | |
| <template x-for="c in $store.projects.colors" :key="c"> | |
| <div class="projects-color-ball" :style="`background:${c}`" | |
| :class="{'selected': $store.projects.selectedProject.color === c}" | |
| @click="$store.projects.selectedProject.color = c"> | |
| </div> | |
| </template> | |
| </div> | |
| </div> | |
| <!-- Git Status Section --> | |
| <template x-if="!$store.projects.selectedProject._meta.creating && $store.projects.selectedProject.git_status?.is_git_repo"> | |
| <div class="projects-form-group git-status-section"> | |
| <label class="projects-form-label"> | |
| <x-icon class="git-icon" name="commit"></x-icon> | |
| Git Status | |
| </label> | |
| <div class="git-status-card"> | |
| <!-- Repository URL --> | |
| <template x-if="$store.projects.selectedProject.git_status.remote_url"> | |
| <div class="git-status-row"> | |
| <span class="git-status-label"> | |
| <x-icon name="link"></x-icon> | |
| Repository | |
| </span> | |
| <div class="git-status-value-with-action"> | |
| <span class="git-status-value git-url" x-text="$store.projects.selectedProject.git_status.remote_url"></span> | |
| <a class="git-action-link" :href="$store.projects.selectedProject.git_status.remote_url" target="_blank" rel="noopener noreferrer" title="Open in browser"> | |
| <x-icon name="open_in_new"></x-icon> | |
| </a> | |
| </div> | |
| </div> | |
| </template> | |
| <!-- Branch --> | |
| <div class="git-status-row"> | |
| <span class="git-status-label"> | |
| <x-icon name="fork_right"></x-icon> | |
| Branch | |
| </span> | |
| <span class="git-status-value git-branch" x-text="$store.projects.selectedProject.git_status.current_branch"></span> | |
| </div> | |
| <!-- Status --> | |
| <div class="git-status-row"> | |
| <span class="git-status-label"> | |
| <x-icon name="info"></x-icon> | |
| Status | |
| </span> | |
| <span class="git-status-value" | |
| :class="$store.projects.selectedProject.git_status.is_dirty ? 'git-dirty' : 'git-clean'"> | |
| <template x-if="!$store.projects.selectedProject.git_status.is_dirty"> | |
| <span>✓ Clean</span> | |
| </template> | |
| <template x-if="$store.projects.selectedProject.git_status.is_dirty"> | |
| <span> | |
| ● Has uncommitted changes | |
| <template x-if="$store.projects.selectedProject.git_status.untracked_count > 0"> | |
| <span x-text="'(' + $store.projects.selectedProject.git_status.untracked_count + ' untracked)'"></span> | |
| </template> | |
| </span> | |
| </template> | |
| </span> | |
| </div> | |
| <!-- Last Commit --> | |
| <template x-if="$store.projects.selectedProject.git_status.last_commit"> | |
| <div class="git-status-row"> | |
| <span class="git-status-label"> | |
| <x-icon name="history"></x-icon> | |
| Last Commit | |
| </span> | |
| <div class="git-commit-info"> | |
| <span class="git-commit-hash" x-text="$store.projects.selectedProject.git_status.last_commit.hash"></span> | |
| <span class="git-commit-message" x-text="$store.projects.selectedProject.git_status.last_commit.message"></span> | |
| <span class="git-commit-meta"> | |
| by <span x-text="$store.projects.selectedProject.git_status.last_commit.author"></span> | |
| on <span x-text="$store.projects.selectedProject.git_status.last_commit.date"></span> | |
| </span> | |
| </div> | |
| </div> | |
| </template> | |
| </div> | |
| </div> | |
| </template> | |
| </div> | |
| </template> | |
| </div> | |
| </body> | |
| <style> | |
| .project-path { | |
| font-size: 0.8em; | |
| opacity: 0.7; | |
| margin-top: 0.25em; | |
| word-break: break-all; | |
| } | |
| .projects-form-group { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 0.35em; | |
| margin-bottom: 0.8em; | |
| } | |
| .projects-form-label { | |
| font-size: 1em; | |
| font-weight: bolder; | |
| opacity: 1; | |
| margin-bottom: var(--spacing-sm); | |
| } | |
| .projects-form-description { | |
| font-size: 0.8em; | |
| margin-bottom: var(--spacing-xs); | |
| } | |
| .projects-form-input, | |
| .projects-form-textarea, | |
| .projects-form-select { | |
| background: var(--color-input); | |
| color: var(--color-text); | |
| border: 1px solid var(--color-border); | |
| border-radius: 0.375em; | |
| padding: 0.5em 0.6em; | |
| outline: none; | |
| } | |
| .projects-form-input:focus, | |
| .projects-form-textarea:focus, | |
| .projects-form-select:focus { | |
| border-color: var(--color-primary); | |
| background: var(--color-input-focus); | |
| } | |
| .projects-form-select { | |
| cursor: pointer; | |
| } | |
| .projects-color-row { | |
| display: flex; | |
| gap: 0.5em; | |
| align-items: center; | |
| flex-wrap: wrap; | |
| background: var(--color-input); | |
| border: 1px solid var(--color-border); | |
| border-radius: 0.5em; | |
| padding: 0.75em 1em; | |
| } | |
| .projects-color-ball { | |
| width: 24px; | |
| height: 24px; | |
| border-radius: 50%; | |
| /* border: 2px solid var(--color-border); */ | |
| cursor: pointer; | |
| box-shadow: none; | |
| background-clip: padding-box; | |
| transition: opacity 0.15s ease; | |
| } | |
| .projects-color-ball:hover { | |
| opacity: 0.9; | |
| } | |
| .projects-color-ball.selected { | |
| box-shadow: 0 0 0 2px var(--color-panel), 0 0 0 4px var(--color-primary); | |
| } | |
| .projects-color-none { | |
| background: repeating-linear-gradient(45deg, transparent 0 6px, rgba(127, 127, 127, 0.12) 6px 12px); | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| position: relative; | |
| } | |
| .projects-color-x { | |
| font-size: 16px; | |
| line-height: 1; | |
| color: var(--color-text); | |
| opacity: 0.7; | |
| } | |
| .projects-disabled { | |
| opacity: 0.7; | |
| } | |
| .projects-input-with-button-wrapper { | |
| display: flex; | |
| gap: 0.5em; | |
| align-items: center; | |
| } | |
| .projects-input-with-button-wrapper input { | |
| flex-grow: 1; | |
| } | |
| @media (max-width: 640px) { | |
| .projects-input-with-button-wrapper { | |
| flex-direction: column; | |
| align-items: stretch; | |
| } | |
| } | |
| /* Git Status Styles */ | |
| .git-status-section .projects-form-label { | |
| display: flex; | |
| align-items: center; | |
| gap: 0.5em; | |
| } | |
| .git-status-section .git-icon { | |
| font-size: 1.2em; | |
| color: var(--color-primary); | |
| } | |
| .git-status-card { | |
| background: var(--color-input); | |
| border: 1px solid var(--color-border); | |
| border-radius: 0.5em; | |
| padding: 0.75em 1em; | |
| } | |
| .git-status-row { | |
| display: flex; | |
| align-items: flex-start; | |
| gap: 1em; | |
| padding: 0.5em 0; | |
| border-bottom: 1px solid var(--color-border); | |
| } | |
| .git-status-row:last-child { | |
| border-bottom: none; | |
| } | |
| .git-status-label { | |
| display: flex; | |
| align-items: center; | |
| gap: 0.4em; | |
| min-width: 100px; | |
| font-size: 0.85em; | |
| color: var(--color-text-secondary, #888); | |
| } | |
| .git-status-label .material-symbols-outlined { | |
| font-size: 1.1em; | |
| } | |
| .git-status-value { | |
| flex: 1; | |
| font-size: 0.9em; | |
| word-break: break-all; | |
| } | |
| .git-status-value-with-action { | |
| flex: 1; | |
| display: flex; | |
| align-items: center; | |
| gap: 0.5em; | |
| } | |
| .git-action-link { | |
| color: var(--color-primary); | |
| opacity: 0.7; | |
| transition: opacity 0.15s; | |
| } | |
| .git-action-link:hover { | |
| opacity: 1; | |
| } | |
| .git-action-link .material-symbols-outlined { | |
| font-size: 1.1em; | |
| } | |
| .git-url { | |
| font-family: monospace; | |
| font-size: 0.85em; | |
| opacity: 0.9; | |
| } | |
| .git-branch { | |
| font-family: monospace; | |
| color: var(--color-primary); | |
| font-weight: 500; | |
| } | |
| .git-clean { | |
| color: #22c55e; | |
| } | |
| .git-dirty { | |
| color: #f59e0b; | |
| } | |
| .git-commit-info { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 0.2em; | |
| } | |
| .git-commit-hash { | |
| font-family: monospace; | |
| color: var(--color-primary); | |
| font-size: 0.9em; | |
| } | |
| .git-commit-message { | |
| font-size: 0.9em; | |
| } | |
| .git-commit-meta { | |
| font-size: 0.8em; | |
| opacity: 0.7; | |
| } | |
| </style> | |
| </html> |