триггер javascript от клика в Dash - PullRequest
0 голосов
/ 01 мая 2020

У меня запущено приложение Python Da sh, с парой обратных вызовов и красивым графиком. Далее мне нужно иметь кнопку для копирования некоторых результатов на панель управления в формате Excel (довольно точно c, да). Я предполагаю, что мне нужно реализовать функцию javascript, запускаемую кнопкой при нажатии , но я понятия не имею, как заставить приложение Python вызывать javascript. Может ли кто-нибудь помочь мне с этим? :)

как то так:

function copy_to_cliboard() {
  var copyText = document.getElementById("text_input");

  copyText.select();
  copyText.setSelectionRange(0, 99999);

  document.execCommand("copy");

  alert("Copied the text: " + copyText.value);
}

спасибо большое!

Ответы [ 2 ]

0 голосов
/ 05 мая 2020

Если кто-то сталкивается с той же проблемой, ниже мое решение.

app.clientside_callback(
    """
    function placeholder(n_clicks, data) {
        window.data_to_copy = data.data;
        var copyText = document.getElementById("text_input");
        copyText.select();
        copyText.setSelectionRange(0, 99999);
        document.execCommand("copy");
    }

    // Overwrite what is being copied to the clipboard.
    document.addEventListener('copy', function(e){
      // e.clipboardData is initially empty, but we can set it to the
      // data that we want copied onto the clipboard.
      e.clipboardData.setData('text/plain', window.data_to_copy);

      // This is necessary to prevent the current document selection from
      // being written to the clipboard.
      e.preventDefault();
    });
    """,
    [Output("copy_output", "children")],
    [Input("copy_button", "n_clicks")],
    [State("excel_output", "data")]
)
0 голосов
/ 01 мая 2020

Для этого вы должны использовать сокет, с помощью сокетов серверы могут запускать интерфейс. Уведомления Pu sh также используются для отправки сообщений на веб-интерфейс, но в вашем случае сокеты являются лучшим решением. Пожалуйста, обратитесь к следующему ответу. Надеюсь, это поможет.

{ ссылка }

...