Draw2d: Как экспортировать этикетки с json - PullRequest
0 голосов
/ 10 января 2020

Я использую draw2d, jquery, jsp и java.

Я пытаюсь экспортировать svg и сохранить его в файл. Для экспорта я использую этот код:

function loadEmptyCanvas(){
    canvas.getCommandStack().addEventListener(function(e){
                  if(e.isPostChangeEvent()){
                      displayJSON(canvas);
                  }
              });
    var jsonData=new Object();
            var writer = new draw2d.io.json.Writer();
            writer.marshal(canvas,function(json){
                   $("#json").text(JSON.stringify(json, null, 2));
                    alert(jsonData);
                    var url = "SVGServlet";
                    $.ajax({
                        type : "POST",
                        url : url,
                        data: {jsonData:JSON.stringify(json, null, 2)},
                        success : function(data) {
                            //successfully saved
                        }
                          }
                    });   
                });
}
 function displayJSON(canvas){
        var writer = new draw2d.io.json.Writer();
        writer.marshal(canvas,function(json){
            $("#json").text(JSON.stringify(json, null, 2));
        });

Как в этом ответе: { ссылка }

Я получаю экспорт и все, но он не завершен.

Например: я добавляю метки к своим фигурам и соединениям с помощью встроенных функций:

this.label = new draw2d.shape.basic.Label({
                            text: "some text",
                            fontColor: "#0d0d0d",
                            stroke: 0
                          });
 this.add(this.label, new draw2d.layout.locator.CenterLocator());
                          var show = function() {
                              this.setVisible(true);
                          };

После экспорта я получаю что-то вроде этого:

{
    "type": "someRect",
    "id": "488b32a0-891a-1501-11eb-cc1a2e0a5f2d",
    "x": 561.3000030517578,
    "y": 152.63333129882812,
    "width": 50,
    "height": 50,
    "alpha": 1,
    "angle": 0,
    "userData": {},
    "cssClass": "someRect",
    "ports": [
      {
        "type": "draw2d.InputPort",
        "id": "2cc349c0-f1be-af72-0cb7-133cfe3eb9db",
        "width": 10,
        "height": 10,
        "alpha": 1,
        "angle": 0,
        "userData": {},
        "cssClass": "draw2d_InputPort",
        "bgColor": "#4F6870",
        "color": "#1B1B1B",
        "stroke": 1,
        "dasharray": null,
        "maxFanOut": 9007199254740991,
        "name": "input0",
        "port": "draw2d.InputPort",
        "locator": "draw2d.layout.locator.InputPortLocator"
      },
      {
        "type": "draw2d.OutputPort",
        "id": "0504a043-a3d7-4a25-4991-db072f093387",
        "width": 10,
        "height": 10,
        "alpha": 1,
        "angle": 0,
        "userData": {},
        "cssClass": "draw2d_OutputPort",
        "bgColor": "#FF9900",
        "color": "#1B1B1B",
        "stroke": 1,
        "dasharray": null,
        "maxFanOut": 9007199254740991,
        "name": "output0",
        "port": "draw2d.OutputPort",
        "locator": "draw2d.layout.locator.OutputPortLocator"
      }
    ],
    "bgColor": "#FF9E42",
    "color": "#000000",
    "stroke": 1,
    "radius": 0,
    "dasharray": null,
    "vertices": [
      {
        "x": 586.3000030517578,
        "y": 152.63333129882812
      },
      {
        "x": 611.3000030517578,
        "y": 177.63333129882812
      },
      {
        "x": 586.3000030517578,
        "y": 202.63333129882812
      },
      {
        "x": 561.3000030517578,
        "y": 177.63333129882812
      }
    ]
  }

Но этот прямоугольник имеет метку и должен включать следующий код:

"labels": [
      {
        "type": "draw2d.shape.basic.Label",
        "id": "2d6ec69b-cd3c-f36b-7384-fdb2325e9081",
        "x": -35.599998474121094,
        "y": 52,
        "width": 84.25,
        "height": 21,
        "alpha": 1,
        "angle": 0,
        "userData": {},
        "cssClass": "draw2d_shape_basic_Label",
        "ports": [],
        "bgColor": "none",
        "color": "#1B1B1B",
        "stroke": 1,
        "radius": 0,
        "dasharray": null,
        "text": "some text",
        "outlineStroke": 0,
        "outlineColor": "none",
        "fontSize": 14,
        "fontColor": "#080808",
        "fontFamily": null,
        "locator": "draw2d.layout.locator.CenterLocator"
      }
    ]

Я не уверен, что это так, потому что я не создал пользовательский класс меток, но я не думаю, что он должен быть необходимо.

...