react-diagram シリアル化 Json 解釈 ケース分析

react-diagram シリアル化 Json 解釈 ケース分析

このドキュメントの目的はreact-diagramフレームワーク モデルの Json シリアル化を説明することです。ドキュメントが不足しているため、試行錯誤を繰り返しながらテストすることしかできません。

シリアル化ケース 1: 空のキャンバス

ここに画像の説明を挿入

{
  "id": "27",
  "オフセットX": 0,
  "オフセットY": 0,
  「ズーム」: 100,
  "グリッドサイズ": 0,
  「レイヤー」: [
    {
      "id": "28",
      "タイプ": "ダイアグラムリンク",
      "isSvg": 真、
      「変換済み」:true、
      「モデル」: {
        
      }
    },
    {
      "id": "30",
      "type": "ダイアグラムノード",
      "isSvg": 偽、
      「変換済み」:true、
      「モデル」: {
        
      }
    }
  ]
}

グラフィック表示

ここに画像の説明を挿入

シリアル化ケース2: 単一ノード

ここに画像の説明を挿入

{
  "id": "27",
  "オフセットX": 0,
  "オフセットY": 0,
  「ズーム」: 100,
  "グリッドサイズ": 0,
  「レイヤー」: [
    {
      "id": "28",
      "タイプ": "ダイアグラムリンク",
      "isSvg": 真、
      「変換済み」:true、
      「モデル」: {
        
      }
    },
    {
      "id": "30",
      "type": "ダイアグラムノード",
      "isSvg": 偽、
      「変換済み」:true、
      「モデル」: {
        "64": {
          "id": "64",
          "タイプ": "デフォルト",
          "x": 187.0056915283203,
          "y": 219.91477584838867,
          「ポート」: [
            {
              "id": "65",
              "タイプ": "デフォルト",
              "x": ヌル、
              "y": ヌル、
              "名前": "アウト",
              「配置」:「右」、
              "親ノード": "64",
              「リンク」: [
                
              ]、
              「in」:偽、
              "ラベル": "アウト"
            }
          ]、
          "名前": "ノード 1",
          "色": "rgb(0,192,255)",
          "ポート順序": [
            
          ]、
          "ポート出力順序": [
            「65」
          ]
        }
      }
    }
  ]
}

グラフィック表示

ここに画像の説明を挿入

シリアル化ケース 3: 1 つの入力ノードと 1 つの出力ノード

ここに画像の説明を挿入

{
  "id": "27",
  "オフセットX": 0,
  "オフセットY": 0,
  「ズーム」: 100,
  "グリッドサイズ": 0,
  「レイヤー」: [
    {
      "id": "28",
      "タイプ": "ダイアグラムリンク",
      "isSvg": 真、
      「変換済み」:true、
      「モデル」: {
        
      }
    },
    {
      "id": "30",
      "type": "ダイアグラムノード",
      "isSvg": 偽、
      「変換済み」:true、
      「モデル」: {
        "64": {
          "id": "64",
          "タイプ": "デフォルト",
          "x": 187.0056915283203,
          "y": 219.91477584838867,
          「ポート」: [
            {
              "id": "65",
              "タイプ": "デフォルト",
              "x": 230.6392059326172,
              "y": 248.57954025268555,
              "名前": "アウト",
              「配置」:「右」、
              "親ノード": "64",
              「リンク」: [
                
              ]、
              「in」:偽、
              "ラベル": "アウト"
            }
          ]、
          "名前": "ノード 1",
          "色": "rgb(0,192,255)",
          "ポート順序": [
            
          ]、
          "ポート出力順序": [
            「65」
          ]
        },
        "69": {
          "id": "69",
          "タイプ": "デフォルト",
          "x": 420.0056915283203,
          "y": 244.91477584838867,
          「ポート」: [
            {
              "id": "70",
              "タイプ": "デフォルト",
              "x": ヌル、
              "y": ヌル、
              "名前": "中",
              "配置": "左",
              "親ノード": "69",
              「リンク」: [
                
              ]、
              「in」:真、
              "ラベル": "中"
            }
          ]、
          "名前": "ノード2",
          "色": "rgb(192,255,0)",
          "ポート順序": [
            「70」
          ]、
          "ポート出力順序": [
            
          ]
        }
      }
    }
  ]
}

グラフィック表示

ここに画像の説明を挿入

シリアル化の例 4: 入力ノード、出力ノード、接続

ここに画像の説明を挿入

{
  "id": "27",
  "オフセットX": 0,
  "オフセットY": 0,
  「ズーム」: 100,
  "グリッドサイズ": 0,
  「レイヤー」: [
    {
      "id": "28",
      "タイプ": "ダイアグラムリンク",
      "isSvg": 真、
      「変換済み」:true、
      「モデル」: {
        "36": {
          "id": "36",
          "タイプ": "デフォルト",
          "ソース": "32",
          "ソースポート": "33",
          "ターゲット": "34",
          "ターゲットポート": "35",
          「ポイント」: [
            {
              "id": "37",
              "タイプ": "ポイント",
              "x": 0,
              "y": 0
            },
            {
              "id": "38",
              "タイプ": "ポイント",
              "x": 0,
              "y": 0
            }
          ]、
          「ラベル」: [
            
          ]、
          「幅」: 2,
          "色": "グレー",
          「曲線美」: 50,
          "選択された色": "rgb(0,192,255)"
        }
      }
    },
    {
      "id": "30",
      "type": "ダイアグラムノード",
      "isSvg": 偽、
      「変換済み」:true、
      「モデル」: {
        "32": {
          "id": "32",
          "タイプ": "デフォルト",
          "x": 100,
          "y": 100,
          「ポート」: [
            {
              "id": "33",
              "タイプ": "デフォルト",
              "x": 100,
              "y": 100,
              "名前": "アウト",
              「配置」:「右」、
              "親ノード": "32",
              「リンク」: [
                「36」
              ]、
              「in」:偽、
              "ラベル": "アウト"
            }
          ]、
          "名前": "ノード 1",
          "色": "rgb(0,192,255)",
          "ポート順序": [
            
          ]、
          "ポート出力順序": [
            「33」
          ]
        },
        "34": {
          "id": "34",
          "タイプ": "デフォルト",
          "x": 400,
          "y": 100,
          「ポート」: [
            {
              "id": "35",
              "タイプ": "デフォルト",
              "x": 400,
              "y": 100,
              "名前": "中",
              「配置」:「左」、
              "親ノード": "34",
              「リンク」: [
                「36」
              ]、
              「in」:真、
              "ラベル": "中"
            }
          ]、
          "名前": "ノード2",
          "色": "rgb(192,255,0)",
          "ポート順序": [
            「35」
          ]、
          "ポート出力順序": [
            
          ]
        }
      }
    }
  ]
}

グラフィック表示

ここに画像の説明を挿入

推測と分析

1. ルートディレクトリ

まず、ルート ディレクトリには 5 つのパラメーターがあります。

id : このパラメータは常に 27 です。その意味は不明であり、あまり注意を払う必要はありません。

offsetX : これは観測中心の X 軸からの距離を参照します。

offsetY : 観測中心と Y 軸間の距離を示します。

zoom : 拡大の度合いを表します。

gridSize : 画像内のグリッドのサイズを示します。

2.0レイヤー[0]

  • このLayer 、内部に 2 つの変数を持つ配列です。上記の変更とtypeの説明を見ると、1 つは連線で、もう 1 つは節點であることがわかります。
  • まず連線に注目しましょう:

id :不明。

type : タイプを参照します。

isSvg : SVG タイプかどうかは関数が不明です。

transformed : 移動可能かどうかを参照します。

model : 下記に別途説明

2.1. モデル(図表リンク)

ここに画像の説明を挿入

id :不明。 type : タイプを参照します。

source : 接続のソースノード ID を参照します。

sourcePort : 接続の送信元ポート ID を参照します。

target : 接続のターゲットノード ID を参照します。

targetPort : 接続ターゲットポート ID を参照します。

width : 幅を指します。

color : 色を指します。

curvyness : 曲率を指します。

selectedColor : 選択された色。

2.1.1. ポイント

ここに画像の説明を挿入

id : ID を参照します。

type : タイプを参照します。以下省略。

2.2. レイヤー[1]

ここに画像の説明を挿入

id :省略。

type : タイプを参照します。

: ? isSvgなぜこれが間違っているのでしょうか?

transformed : 省略。

2.2.1 モデル(ダイアグラムノード)

ここに画像の説明を挿入

前四個は省略。

ports : 後ほど別途説明します。

name : 表示名。

color : 表示色

portsInOrder : を表す

ノードIn 、上記のtargetの番号に対応します。

portsOutOrder : を表す

上記のsource番号に対応するOutノード。

2.2.2. ポート

ここに画像の説明を挿入

前四個は省略。

name : 出力ノード

alignment : 正しい方向。

parentNode : 要素が接続されているノードを表します。

links : それに接続された線を表します。

in : 入力があるかどうか。

label : ラベル。

3. その他のケーススタディ

3.1. 出力インターフェースの追加

ここに画像の説明を挿入

出力ポートを追加するだけで、その ID を out の位置に追加することを忘れないでください。

3.2. 入力インターフェースの追加

以上が react-diagram serialization Json 解釈の事例分析の詳細です。 react-diagram serialization Json の詳細については、123WORDPRESS.COM の他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • JavaScript による JSON の解析とシリアル化の例の分析
  • Jackson エンティティの json への変換が NULL または空であり、シリアル化に参加しません (例の説明)
  • JS は JSON シリアル化とデシリアル化関数の例を実装します
  • jQueryはフォーム要素をJSONオブジェクトにシリアル化するメソッドを実装します

<<:  Linux ドメイン ネーム サービス DNS 設定方法

>>:  MySQL 8.0.12 のインストールと設定のチュートリアル

推薦する

Docker 構成コンテナの場所とヒントのまとめ

Docker の使用に関するヒント1. 停止したDockerコンテナをすべてクリーンアップする停止し...

HTML特殊文字の徹底分析

HTML徹底解析(14)特殊文字 ■ よく使われる特殊文字 HTMLタグを知っていれば、特殊文字の使...

JSはじゃんけんゲームを実装します

この記事の例では、じゃんけんゲームを実装するためのJSの具体的なコードを参考までに共有しています。具...

JavaScript のデシェイクとスロットリングの例

目次安定スロットル: 手ぶれ防止: 一定時間内に最後のタスクのみを実行します。スロットル: 一定期間...

jQuery キャンバスで画像検証コード例を描画する

この記事では、jQuery Canvasの描画画像検証コードの具体的なコードを例として紹介します。具...

MySQLでよく使われる演算子と関数の概要

まずデータ テーブルを作成しましょう。 使用テスト; テーブル「従業員」を作成します( emp_no...

Docker で Tomcat を使用して Web アプリケーションを迅速にデプロイする方法の例

Docker の基本的な操作を学習した後、コンテナにいくつかの基本的なアプリケーションをデプロイして...

nginxはdockerコンテナ内に設定ファイルを自動的に生成します

企業が Docker 自動デプロイメントを構築する場合、Docker の実行時にコンテナ内の設定ファ...

docker compose サービスの起動順序を制御する方法

まとめDocker-compose は複数の Docker コンテナ サービスを簡単に組み合わせるこ...

Ubuntu 18.04 で apt-get ソースを変更する方法

apt-get を使用してインストールすると、非常に遅くなります。国内のソースを変更すると、この問題...

よく使われる Docker コマンドと例の概要と分析

目次1. コンテナライフサイクル管理(1)ドッカー実行(2)スタート/ストップ/リスタート(3)ドッ...

H5 WeChatパブリックアカウント認証を実装するための簡単な手順

序文昨日、h5 WeChat認証の実装が必要なプロジェクトがありました。したがって、この機能を完了す...

Dockerコンテナシェルスクリプトの実行ステータスを監視する方法

シナリオ会社のプロジェクトはDockerでデプロイされています。原因不明ですが、コンテナが時々停止し...

MySQL 制約の超詳細な説明

目次MySQL 制約操作1. 非ヌル制約2. ユニーク制約3. 主キー制約4. 外部キー制約5. カ...

WeChatミニプログラムで検索キーワードを強調表示するサンプルコード

1. はじめにプロジェクトで要件に遭遇したら、データを検索してキーワードを強調表示します。要件を受け...