2 votes

Existe-t-il un moyen de rendre les nœuds glissants/vers un autre nœud parent ou enfant pour réorganiser les nœuds dans d3.js ?

En cherchant des contrôles d'organigramme hiérarchique, je suis tombé sur un post sur la façon d'orienter les nœuds dans d3.js, et je me demandais s'il existait des contrôles d'organigramme hiérarchique. 1) un moyen d'éditer les enfants de l'arbre et de les faire glisser. 2) comment exporter l'arbre édité.

1voto

Alex Reynolds Points 45039

Pour répondre à votre deuxième question, il est possible de récupérer le contenu du nœud parent de votre SVG (disons que votre SVG est contenu dans un nœud avec l'id my_svg_container ), et le reconditionner comme un "vrai" fichier SVG qui peut être ouvert dans un éditeur compatible SVG comme Inkscape ou Illustrator :

var rawSvg = $('#my_svg_container').outerHTML();
var result = '<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" version="1.1">' + rawSvg + '</svg>';

T outerHTML() fonction :

jQuery.fn.outerHTML = function() {
    return jQuery('<div />').append(this.eq(0).clone()).html();
};

Utilisez ensuite un formulaire web caché pour POST que result à un script CGI qui l'imprime au navigateur web demandeur sous forme de fichier. Le formulaire est déclenché lorsqu'un bouton est cliqué ou qu'un autre événement se produit qui est défini pour déclencher le formulaire. Le navigateur demande alors à l'utilisateur d'enregistrer le fichier dans le système de fichiers local.

Si un exemple de formulaire contient les champs svg_data y svg_fn qui contiennent le SVG result et un nom de fichier de votre choix, un script Perl très basique pourrait ressembler à quelque chose comme :

#!/usr/bin/perl

use strict;
use warnings;
use CGI;
use CGI::Pretty qw/:standard/;

my $val = param('svg_data');
my $fn = param('svg_fn');

print "Content-Type: application/x-gzip\n";
print "Content-Disposition: attachment; filename=$fn\n";
print "Content-Description: File to download\n\n";
print $val;

Vous pouvez ajouter un code de validation des données pour vous assurer que vous imprimez bien un fichier SVG et pas autre chose.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X