私のアプリケーションには、JSONプロパティを介して構成された階層コンテキストがあります。
これらは、単一のJSONプロパティファイルを作成するためにオーバーレイされます。
プロパティは、親子関係に基づいて継承またはオーバーライドできます。
ユーザーは、各コンテキスト内のプロパティを表示または編集できます。
親を持つコンテキストで作業する場合、ユーザーは継承またはオーバーライドされたプロパティを表示する必要があります。
ソースプロパティは、それぞれ独自のコンテキストで、次のようになります。
// Root
{
"A": "init_a_value",
"B": {
"C": "init_c_value"
}
}
// Child of Root
{
"A": "override_a_value",
}
// Leaf of Root
{
"B": {
"D": "add_d_value"
}
}
それがすべてまとめられる(または「構成される」)と、次の統合結果が得られます。
// Leaf Composed
{
"A": "override_a_value",
"B": {
"C": "init_c_value",
"D": "add_d_value"
}
}
ユーザーが各コンテキストのプロパティを編集しているとき…
これらの要素を明確にするにはどうすればよいですか?
- 階層関係
- 継承
- オーバーライド
1つのアイデア:
実際には、次のようになります。
+----------------------------------------+
# INHERITED #
+-----+---------------+------------------+
| KEY | SOURCE | VALUE |
+-----+---------------+------------------+
| A | Child of Root | override_a_value |
| B.C | Root | init_c_value |
+-----+---------------+------------------+
+-------------------+
# EDITABLE #
+-----+-------------+
| KEY | VALUE |
+-----+-------------+
| B.D | add_d_value |
+-----+-------------+
[ + Add new property ]
また、既存のプロパティを追加することの副作用を示すために、現在のコンテキスト自体がオーバーライドする継承されたプロパティに取り消し線を引くこともできます。
このデータを表示する明確な方法はありますか?
これが実際に動作している例を誰か知っていますか?
私が見た中で最も近いものは、階層のドット表記を効果的に使用するFirefox構成です。各プロパティは「ユーザーセット」または「デフォルト」です。
「ユーザー設定」の値は、それらに注意を引くために太字になっています。
https://support.mozilla.org/en-US/kb/about-config-editor-firefox
最終的に、Sublime Textがアプリケーションの設定を表示する方法から始めました。2つのJSONパネルで、左側は読み取り専用でデフォルトを表示し、右側はカスタマイズを表示しています。私たちの場合、左側は、より高いコンテキストからの合成された継承データを示しています。残念ながら、このビューは、どのコンテキスト固有のデータが最初から取得されたかを示すことを実際にはサポートしていません。おそらく後で、特定のキーをポイントするときにホバーテキストを追加して、そのキーのコンテキストを示すことができます。
それは私が期待していたほど洗練されていませんが、初期費用が低いという利点があります。これをユーザーの前に表示して、ユーザーがそれをどのように使用しているかを確認し、さらに開発する方法をよりよく理解できます。