forked from clay/er-top
1
0
Fork 0
er-top/src/views/behavior/dice-er-scroll.js

181 lines
5.6 KiB
JavaScript

/**
* @author: clay
* @data: 2021/5/14 23:20
* @email: clay@hchyun.com
* @description: node
*/
// import utils from '../utils'
const isInBBox = (point, bbox) => {
const {
x,
y
} = point;
const {
minX,
minY,
maxX,
maxY
} = bbox;
return x < maxX && x > minX && y > minY && y < maxY;
};
export default {
name: 'dice-er-scroll',
options: {
getDefaultCfg() {
return {
multiple: true,
};
},
getEvents() {
return {
itemHeight: 50,
wheel: "scroll",
click: "click",
"node:mousemove": "moves",
};
},
scroll(e) {
console.log(454)
e.preventDefault();
const {
graph
} = this;
const nodes = graph.getNodes().filter((n) => {
const bbox = n.getBBox();
return isInBBox(graph.getPointByClient(e.clientX, e.clientY), bbox);
});
if (nodes) {
nodes.forEach((node) => {
const model = node.getModel();
if (model.attrs.length < 9) {
return;
}
const idx = model.startIndex || 0;
let startX = model.startX || 0.5;
let startIndex = idx + e.deltaY * 0.02;
startX -= e.deltaX;
if (startIndex < 0) {
startIndex = 0;
}
if (startX > 0) {
startX = 0;
}
if (startIndex > model.attrs.length - 1) {
startIndex = model.attrs.length - 1;
}
graph.update(node, {
startIndex,
startX,
});
});
}
},
click(e) {
try {
console.log(e.shape.get("name"))
const {
graph
} = this;
const {
// eslint-disable-next-line no-unused-vars
y
} = e;
const item = e.item;
const shape = e.shape;
if (!item) {
return;
}
// eslint-disable-next-line no-unused-vars
const model = item.getModel();
if (shape.get("name") === "collapse") {
graph.updateItem(item, {
collapsed: true,
size: [300, 50],
});
setTimeout(() => graph.layout(), 100);
} else if (shape.get("name") === "expand") {
graph.updateItem(item, {
collapsed: false,
size: [300, 500],
});
setTimeout(() => graph.layout(), 100);
}
}catch (ee){
console.log(ee)
}
},
moves(e) {
try {
// console.log(eventName);
// const {
// graph
// } = this;
const name = e.shape.get("name");
const item = e.item;
// if (name ==="marker-shape"){
//
// utils.anchor.setState("hover",true,e.shape)
// this.graph.updateItem(item,{
// stroke:"#0d1a26",
// style: {
// background: {
// fill: '#ffffff',
// stroke: '#000000',
// padding: [2, 2, 2, 2],
// radius: 2,
// },
// },
// labelCfg: {
// style: {
// fill: '#fff',
// fontSize: 12,
// },
// },
//
// })
// console.log(789);
// }else if(name ==="markerBg-shape"){
//
// console.log(456);
// let steat = this.graph.update(item,{
// stroke:"#0d1a26",
// style: {
// background: {
// fill: '#ffffff',
// stroke: '#000000',
// padding: [2, 2, 2, 2],
// radius: 2,
// },
// },
// labelCfg: {
// style: {
// fill: '#fff',
// fontSize: 12,
// },
// },
// })
// console.log(steat)
// }
if (name && name.startsWith("item")) {
this.graph.updateItem(item, {
selectedIndex: Number(name.split("-")[1]),
});
} else {
this.graph.updateItem(item, {
selectedIndex: NaN,
});
}
}catch (ee){
console.log(ee)
}
},
}
}