| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- #!/usr/bin/env python3
- """Prepare the Chrome-style suggestions screenshot."""
- import time
- from selenium.webdriver.common.by import By
- from selenium.webdriver.support.ui import WebDriverWait
- def _wait_for_body_attr(driver, attr, timeout=15):
- WebDriverWait(driver, timeout).until(
- lambda d: bool(d.find_element(By.TAG_NAME, "body").get_attribute(attr))
- )
- def _open_form(driver):
- _wait_for_body_attr(driver, "loaded-dashboard")
- action = driver.find_element(
- By.CSS_SELECTOR, '[title="Restart Docker Container"]'
- )
- action.click()
- _wait_for_body_attr(driver, "loaded-argument-form")
- driver.execute_script(
- """
- const form = document.getElementById('argument-popup');
- if (form) {
- form.style.margin = '2rem auto';
- form.style.maxWidth = '520px';
- }
- """
- )
- def run(driver):
- _open_form(driver)
- driver.execute_script(
- """
- const input = document.getElementById('container');
- input.focus();
- input.value = '';
- document.getElementById('doc-suggestions-overlay')?.remove();
- const rect = input.getBoundingClientRect();
- const menu = document.createElement('div');
- menu.id = 'doc-suggestions-overlay';
- menu.style.position = 'fixed';
- menu.style.left = `${rect.left}px`;
- menu.style.top = `${rect.bottom + 2}px`;
- menu.style.width = `${rect.width}px`;
- menu.style.background = '#fff';
- menu.style.border = '1px solid #888';
- menu.style.boxShadow = '0 2px 6px rgba(0, 0, 0, 0.2)';
- menu.style.font = '13px sans-serif';
- menu.style.zIndex = '9999';
- const items = [
- ['firewall-controller', 'Firewall Controller'],
- ['graefik', ''],
- ['grafana', ''],
- ['plex', ''],
- ['wifi-controller', 'WiFi Controller'],
- ];
- for (const [value, label] of items) {
- const row = document.createElement('div');
- row.style.padding = '4px 8px';
- row.style.lineHeight = '1.3';
- const valueEl = document.createElement('div');
- valueEl.textContent = value;
- valueEl.style.fontWeight = label ? '600' : '400';
- row.appendChild(valueEl);
- if (label) {
- const labelEl = document.createElement('div');
- labelEl.textContent = label;
- labelEl.style.color = '#666';
- labelEl.style.fontSize = '12px';
- row.appendChild(labelEl);
- }
- menu.appendChild(row);
- }
- document.body.appendChild(menu);
- """
- )
- time.sleep(0.2)
|