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 のインストールと設定のチュートリアル

推薦する

Angular構造ディレクティブモジュールとスタイルの詳細な説明

目次1. 構造指示モジュールforRoot()を書く3. スタイルの定義ドラッグ時の順序を調整するに...

Javascriptジェネレータの紹介と使用

ジェネレータとは何ですか?ジェネレーターは関数内で実行されるコードです。値を返した後、一時停止し、呼...

Angular の 12 の典型的な問題について簡単に説明します

目次1. Angular 2 アプリケーションのライフサイクル フックとは何ですか? 2. Angu...

MySQL で絵文字表現を挿入できない理由と解決策

失敗のシナリオMySQL データベースに絵文字表現を挿入するために JDBC を呼び出すと、例外ja...

リンクされた画像をダウンロードしてアップロードするJavaScriptの実装

写真をアップロードするので、まずはダウンロード可能な画像リソースかどうかを判断する必要があります。正...

MySQL データベース インデックスの面接の質問 (基本的なプログラマー スキル)

目次導入インデックスの原則1. データページ2. ページディレクトリ3. インデックス原則分析要約す...

Node.js で Bash スクリプトを書くための究極のソリューション

目次序文zxライブラリ$`コマンド` CD()フェッチ()質問()寝る()スローしない()チョークフ...

Nginx を使用して DoNetCore を Alibaba Cloud にデプロイする方法

基本的な環境設定まずはご自身でドメイン名とサーバーを購入してくださいクラウドサーバーECSに基づいて...

JavaScript でよく使われるいくつかの文字列メソッドの概要 (初心者必読)

JavaScriptでよく使われるいくつかの文字列メソッド文字列は読み取り専用データです。よく使用...

Nginx に lua-nginx-module モジュールをインストールする方法

ngx_lua_module は、lua パーサーを nginx に埋め込み、lua 言語で記述され...

Vue フロントエンドと Django バックエンドを使用して、一定期間内のデータをクエリする方法

序文開発プロセスでは、すべてのデータではなく特定の期間内のデータをクエリするなど、クエリのフィルタリ...

浮遊する雲のアニメーションを実現するCSS3

操作効果 html <ヘッド> <メタ文字セット='UTF-8'&...

MySQL統計テーブルのサイズを説明する例

各データベース内の各テーブルのサイズをカウントすることは、データ ガバナンスの最も単純な要件の 1 ...

Vueでデータを読み取るためにこれを悪用しないでください

目次序文1. これを使用してデータ内のデータを読み取るプロセス2. Dep.target はいつ存在...

MySQLのREDOログとUNDOログの詳細な説明

MySQL ログ システムで最も重要なログは、REDO ログとアーカイブ ログです。後者は MySQ...