Below given is the code
$(go.Panel, “Table”,
//{ defaultRowSeparatorStroke: “black” },
$(go.RowColumnDefinition, { row: 0, separatorStroke: “black” }),
$(go.RowColumnDefinition, { row: 1, separatorStroke: “black” }),
$(go.RowColumnDefinition, { row: 3, separatorStroke: “black” }),
// header
$(go.TextBlock,
{
row: 0, columnSpan: 2, margin:3, textAlign: “center”,stretch: go.GraphObject.Fill
},
new go.Binding(“text”, “name”).makeTwoWay(),
new go.Binding(“background”, “color”),
new go.Binding(“font”, “font”),
new go.Binding(“editable”, “editable”,function(val:any) { return val; })
),
// properties
$(go.TextBlock, “Properties”,
{ row: 1, font: “italic 10pt sans-serif” },
new go.Binding(“visible”, “visible”, function(v:any) { return !v; }).ofObject(“PROPERTIES”)
),
$(go.Panel, “Vertical”,
{ name: “PROPERTIES”,visible:false,columnSpan: 2,margin: 8},
new go.Binding(“itemArray”, “properties”),
{
row: 1, margin: 8, stretch: go.GraphObject.Fill,
defaultAlignment: go.Spot.Left, background: “lightyellow”,
itemTemplate: propertyTemplate
}
),
$(“PanelExpanderButton”, “PROPERTIES”,
{ row: 1, column: 1, alignment: go.Spot.TopRight, visible: false },
new go.Binding(“visible”, “properties”, function(arr:any) { console.log(“Panel Exp”);return arr.length > 0; })
),
$(go.Panel, “Horizontal”,
{ row: 2,columnSpan: 2},
$(“Button”,
{ row: 2,columnSpan: 2},
{
click: function(e:any, obj:any) {
let type = obj.part.data.key;
let propData:any[] = [];
console.log(obj.part.data)
console.log("Add new prop = "+type)
propData = obj.part.data.properties;
console.log(propData)
let emptyData = {name:null,type:null,text:null};
if(!_this.typeProperiesMap.has(type)){
var propData1 = propData.slice();
_this.typeProperiesMap.set(type,propData1);
}
_this.classDiagram.startTransaction(“add prop item”);
_this.classDiagram.model.addArrayItem(obj.part.data.properties, emptyData);
_this.classDiagram.model.setDataProperty(obj.part.data.properties,“name”,“Test”);
_this.classDiagram.commitTransaction(“add prop item”);
}
},
$(go.TextBlock, “Add”)
),