StructV2/demo/Layouter/Array.js

76 lines
1.7 KiB
JavaScript
Raw Normal View History

2021-07-31 16:43:01 +00:00
2021-10-29 07:46:18 +00:00
SV.registerLayout('Array', {
2021-07-31 16:43:01 +00:00
sourcesPreprocess(sources) {
const firstElement = sources[0];
if (firstElement.external) {
2021-07-31 16:43:01 +00:00
firstElement.headExternal = firstElement.external;
delete firstElement.external;
}
return sources;
},
defineLeakRule(nodes) {
return [];
},
2021-07-31 16:43:01 +00:00
defineOptions() {
return {
node: {
2021-07-31 16:43:01 +00:00
default: {
type: 'array-node',
2021-08-30 15:57:05 +00:00
label: '[id]',
2021-07-31 16:43:01 +00:00
size: [60, 30],
labelOptions: {
style: { fontSize: 20 }
},
2021-07-31 16:43:01 +00:00
style: {
stroke: '#333',
fill: '#95e1d3'
}
}
},
marker: {
headExternal: {
type: 'pointer',
anchor: 3,
style: {
fill: '#f08a5d'
}
},
external: {
type: 'pointer',
anchor: 0,
style: {
fill: '#f08a5d'
}
}
},
indexLabel: {
index: { position: 'bottom' },
indexRight: { position: 'right' }
},
behavior: {
dragNode: false
2021-07-31 16:43:01 +00:00
}
};
},
layout(elements) {
let arr = elements;
for (let i = 0; i < arr.length; i++) {
2021-07-31 16:43:01 +00:00
let width = arr[i].get('size')[0];
if (i > 0) {
2021-07-31 16:43:01 +00:00
arr[i].set('x', arr[i - 1].get('x') + width);
}
}
}
});
2021-07-31 16:43:01 +00:00