Newer
Older
EnvoyControlPlane / static / js / components / configActions.js
// static/js/components/configActions.js

export function copyToClipboard() {
    const yamlContent = document.getElementById('modal-yaml-content').textContent;
    const jsonContent = document.getElementById('modal-json-content').textContent;

    // Determine which tab is active
    const yamlActive = document.getElementById('modal-yaml-content').style.display !== 'none';
    const contentToCopy = yamlActive ? yamlContent : jsonContent;

    if (!contentToCopy || contentToCopy.trim() === '') {
        alert("No content available to copy.");
        return;
    }

    navigator.clipboard.writeText(contentToCopy).then(() => {
        const btn = document.getElementById('copy-config-button');
        const originalText = btn.textContent;
        btn.textContent = '✅ Copied!';
        setTimeout(() => {
            btn.textContent = originalText;
        }, 2000);
    }).catch(err => {
        console.error('Failed to copy: ', err);
        alert('Failed to copy to clipboard.');
    });
}

export function downloadYaml() {
    const yamlContent = document.getElementById('modal-yaml-content').textContent;
    if (!yamlContent || yamlContent.trim() === '' || yamlContent === 'Loading YAML...') {
        alert("No YAML content available to download.");
        return;
    }

    const title = document.getElementById('modal-title').textContent
        .replace(/\s+/g, '_')
        .replace(/[^\w\-]/g, '');

    const blob = new Blob([yamlContent], { type: 'text/yaml' });
    const url = URL.createObjectURL(blob);

    const a = document.createElement('a');
    a.href = url;
    a.download = title ? `${title}.yaml` : 'config.yaml';
    document.body.appendChild(a);
    a.click();
    document.body.removeChild(a);
    URL.revokeObjectURL(url);
}