Add custom properties at diagram level


Can i add custom properties at the diagram level?

On the Diagram or on the Model? Those are both “at the diagram level”, because they are not individual Parts such as Nodes or Links.

There is the Model.modelData property, which is a JavaScript object to which you can add as many properties as you wish. If you are depending on JSON serialization, though, you should make sure that the property values are JSON-serializable.

as an eg. i want to add an customizable property to the json data …

{ “class”: “go.GraphLinksModel”,
“linkFromPortIdProperty”: “fromPort”,
“linkToPortIdProperty”: “toPort”,
“nodeDataArray”: [
{“category”:“Comment”, “loc”:“360 -10”, “text”:“Kookie Brittle”, “key”:-13},
{“key”:-1, “category”:“Start”, “loc”:“175 0”, “text”:“Start”},
{“key”:0, “loc”:“0 77”, “text”:“Preheat oven to 375 F”},
{“key”:1, “loc”:“175 100”, “text”:“In a bowl, blend: 1 cup margarine, 1.5 teaspoon vanilla, 1 teaspoon salt”},
{“key”:2, “loc”:“175 190”, “text”:“Gradually beat in 1 cup sugar and 2 cups sifted flour”},
{“key”:3, “loc”:“175 270”, “text”:“Mix in 6 oz (1 cup) Nestle’s Semi-Sweet Chocolate Morsels”},
{“key”:4, “loc”:“175 370”, “text”:“Press evenly into ungreased 15x10x1 pan”},
{“key”:5, “loc”:“352 85”, “text”:“Finely chop 1/2 cup of your choice of nuts”},
{“key”:6, “loc”:“175 440”, “text”:“Sprinkle nuts on top”},
{“key”:7, “loc”:“175 500”, “text”:“Bake for 25 minutes and let cool”},
{“key”:8, “loc”:“175 570”, “text”:“Cut into rectangular grid”},
{“key”:-2, “category”:“End”, “loc”:“175 640”, “text”:“Enjoy!”}
“linkDataArray”: [
{“from”:1, “to”:2, “fromPort”:“B”, “toPort”:“T”},
{“from”:2, “to”:3, “fromPort”:“B”, “toPort”:“T”},
{“from”:3, “to”:4, “fromPort”:“B”, “toPort”:“T”},
{“from”:4, “to”:6, “fromPort”:“B”, “toPort”:“T”},
{“from”:6, “to”:7, “fromPort”:“B”, “toPort”:“T”},
{“from”:7, “to”:8, “fromPort”:“B”, “toPort”:“T”},
{“from”:8, “to”:-2, “fromPort”:“B”, “toPort”:“T”},
{“from”:-1, “to”:0, “fromPort”:“B”, “toPort”:“T”},
{“from”:-1, “to”:1, “fromPort”:“B”, “toPort”:“T”},
{“from”:-1, “to”:5, “fromPort”:“B”, “toPort”:“T”},
{“from”:5, “to”:4, “fromPort”:“B”, “toPort”:“T”},
{“from”:0, “to”:4, “fromPort”:“B”, “toPort”:“T”}

I suppose you could implement that yourself, but putting extra properties on the model itself is not documented. That is why I suggested that you use what is documented and supported:

You can find examples by searching the sources.