Envoyer un tableau par execute_script

salut tout le monde
voila mon souci en gros, j’ai créer ce petit programme afin de récupérer tous les sous dossiers de la bibliothèque afin que je puisse les mettre dans une liste déroulante ou dans un tableau en utilisant une formulaire html, sauf que mon programme du coté javascript ne reçoit pas tous les éléments du tableau récupéré en ruby, et surtout que les éléments du tableau sont variables:
alors la question comment je dois faire pour que la fonction du coté javascript détecte tous les éléments et les récupérer tous
`` rubis
@dossbib = Sketchup.find_support_file “library”,""
Dir.chdir @dossbib
k= Dir.entries @dossbib
arr1=
k.each do |el|
@arr1.push el
end
@ldb=
@arr1.drop(2).each { |a|@ldb.push File.basename(a)}’
dlg_html.execute_script(" send (#{@ldb})")
‘’ `

maintenant du coté javascript

`` javascript

function send(@ldb)
{
alert(@ldb) // give only first element of array
}

``
merci d’avance

post or PM your entire script…

attacher ou PM l’ensemble de votre script …

it is very hard to see what you need when the code is badly formatted…

il est très difficile de voir ce dont vous avez besoin lorsque le code est mal format

john

1 Like

salut tout le monde , j’espère que c’est bien claire ainsi


function send(fromRuby)
{
alert(fromRuby) // js doesn't know what @idb means...
}

// 'send' may be a protected word?

john

merci au fait , la function javascript reçoit seulement le premier élément du tableau @ldb, la fonction ne recoit pas l’ensemble des élément du tableau
arr1= [ ] et ` @ldb =[ ] sont deux tableaux

`` `
@dossbib = Sketchup.find_support_file “bibliothèque”, “”

Dir.chdir @dossbib
k = Dir.entries @dossbib
arr1 = [ ]
k.each do | el |
@ arr1.push el
end
@ ldb = [ ]
@ arr1.drop (2) .each {|a|@ldb.push File.basename (a)} ’
dlg_html.execute_script (“send (# { @ldb })”)
‘’ `

play…

dialog = UI::HtmlDialog.new(
{
  :dialog_title => "Dialog Example",
  :preferences_key => "com.sample.plugin",
  :width => 600,
  :height => 400,
  :style => UI::HtmlDialog::STYLE_DIALOG
})
dialog.center
dialog.set_html("
<script>
  function fromRuby(msg) {
    // array to string
    let all = msg.toString();
    alert(all);
  }
  sketchup.from_js()
</script>
")
dialog.show

lib = Sketchup.find_support_file( 'Materials' )

arr1 = Dir.entries(lib) 

@ldb = arr1.drop(3).map{|a|File.basename(a)} 

dialog.add_action_callback('from_js') {
  dialog.execute_script ("fromRuby(#{ @ldb })")
}
1 Like

salut john
ce que vous avez fait est bien mais du coté de javascript je reçois une chaine de caractère , j’ai essayé un code et ça l’air de marché mais il reste un hic , c’est presque la même chose que vous mais j’ai ajouté sous la fonction javascript
`` `var reg = new RegExp("[ ,;]+",“g”)

var tab = s.split(reg);``
pour reconstruire le tableau avec les mêmes éléments , sauf que les éléments apparaissent avec les guillemets …

without your full html and javascript code, it is very difficult to suggest anything…

john

1 Like

Thank you john