diff --git a/app/static/index.html b/app/static/index.html index bf61a00..e3224ac 100644 --- a/app/static/index.html +++ b/app/static/index.html @@ -830,6 +830,178 @@ background-color: var(--pf-global--success-color--100); color: white; } + + /* Smart Recommendations Gallery Styles */ + .gallery-container { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(350px, 1fr)); + gap: 20px; + padding: 20px; + } + + .service-card { + background: var(--pf-global--BackgroundColor--100); + border: 1px solid var(--pf-global--BorderColor--200); + border-radius: 8px; + padding: 20px; + transition: all 0.2s ease; + position: relative; + height: 100%; + display: flex; + flex-direction: column; + } + + .service-card:hover { + border-color: var(--pf-global--primary-color--100); + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); + transform: translateY(-2px); + } + + .service-card.selected { + border-color: var(--pf-global--primary-color--100); + background: var(--pf-global--primary-color--50); + } + + .service-card-header { + display: flex; + align-items: center; + margin-bottom: 16px; + } + + .service-card-icon { + width: 48px; + height: 48px; + background: var(--pf-global--primary-color--100); + border-radius: 8px; + display: flex; + align-items: center; + justify-content: center; + margin-right: 16px; + color: white; + font-size: 20px; + } + + .service-card-title { + font-size: 18px; + font-weight: 600; + color: var(--pf-global--Color--100); + margin: 0; + flex: 1; + } + + .service-card-checkbox { + margin-left: auto; + } + + .service-card-body { + flex: 1; + margin-bottom: 16px; + } + + .service-card-description { + color: var(--pf-global--Color--200); + margin-bottom: 12px; + line-height: 1.5; + } + + .service-card-meta { + display: flex; + gap: 12px; + margin-bottom: 16px; + } + + .service-card-meta-item { + display: flex; + align-items: center; + gap: 4px; + font-size: 12px; + color: var(--pf-global--Color--300); + } + + .service-card-priority { + padding: 4px 8px; + border-radius: 12px; + font-size: 11px; + font-weight: 500; + } + + .priority-high { + background: var(--pf-global--danger-color--100); + color: white; + } + + .priority-medium { + background: var(--pf-global--warning-color--100); + color: var(--pf-global--Color--100); + } + + .priority-low { + background: var(--pf-global--success-color--100); + color: white; + } + + .service-card-footer { + display: flex; + gap: 8px; + flex-wrap: wrap; + margin-top: auto; + } + + .service-card-footer .openshift-button { + font-size: 12px; + padding: 8px 16px; + flex: 1; + min-width: 120px; + } + + /* Bulk Select Styles */ + .bulk-select-toolbar { + background: var(--pf-global--BackgroundColor--200); + border-bottom: 1px solid var(--pf-global--BorderColor--200); + } + + .pf-v6-c-dropdown__menu { + background: var(--pf-global--BackgroundColor--100); + border: 1px solid var(--pf-global--BorderColor--200); + border-radius: 4px; + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); + z-index: 1000; + } + + .pf-v6-c-dropdown__menu-item { + padding: 8px 16px; + color: var(--pf-global--Color--100); + cursor: pointer; + transition: background-color 0.2s ease; + } + + .pf-v6-c-dropdown__menu-item:hover { + background: var(--pf-global--BackgroundColor--200); + } + + .pf-v6-c-dropdown__toggle { + background: var(--pf-global--BackgroundColor--100); + border: 1px solid var(--pf-global--BorderColor--200); + color: var(--pf-global--Color--100); + padding: 8px 16px; + border-radius: 4px; + cursor: pointer; + display: flex; + align-items: center; + gap: 8px; + } + + .pf-v6-c-dropdown__toggle:hover { + border-color: var(--pf-global--primary-color--100); + } + + .pf-v6-c-dropdown__toggle-icon { + transition: transform 0.2s ease; + } + + .pf-v6-c-dropdown__toggle[aria-expanded="true"] .pf-v6-c-dropdown__toggle-icon { + transform: rotate(180deg); + }
@@ -1044,24 +1216,79 @@AI-powered recommendations for resource optimization and VPA activation
-No smart recommendations found for the current cluster state.
- + `; + updateBulkSelectUI(); return; } - const recommendationsHtml = data.recommendations.map(rec => ` -${rec.description}
- - ${rec.workload_list && rec.workload_list.length > 0 ? ` -${rec.description}
+ + +