<script>
  document.addEventListener('DOMContentLoaded', function () {
    var path = window.location.pathname;
    var pathParts = path.split('/');
    pathParts = pathParts.filter(function(part) {
      return part !== '';
    });
    var modelId = pathParts[pathParts.length - 2];
    const generateTextButtons = document.querySelectorAll('.{{widget.btn_class}}');
    generateTextButtons.forEach(function (button) {
      button.addEventListener('click', async function (event) {
        const target = event.target.getAttribute('data-target');
        const textField = document.querySelector(`[name="${target}"]`);
        const apiUrl = `{{widget.llm_req_url}}?model_id=${modelId}`;
        const originalButtonText = button.textContent;

        button.textContent = 'Loading...';
        button.disabled = true;

        try {
          const response = await fetch(apiUrl);
          if (response.ok) {
            const data = await response.json();
            textField.value = data.text;
          } else {
            console.error('Error fetching data from API:', response.status, response.statusText);
          }
        } catch (error) {
          console.error('Error fetching data from API:', error);
        } finally {
          button.textContent = originalButtonText;
          button.disabled = false;
        }
      });
    });
  });
</script>

<textarea name="{{widget.name}}"{% include "django/forms/widgets/attrs.html" %}>
{% if widget.value %}{{ widget.value }}{% endif %}</textarea>

<button type="button" class="{{widget.btn_class}}" data-target="{{widget.name}}">Generate Text</button>