fn svg_select(&self, pri : &PieceRenderInstructions) -> String;
fn svg_x_ids(&self) -> VisiblePieceIdSvgIds;
fn svg_x_defs(&self, pri : &PieceRenderInstructions) -> String;
+ fn thresh_dragraise(&self, pri : &PieceRenderInstructions)
+ -> Option<Coord>;
fn describe_html(&self, face : Option<FaceId>) -> String;
}
pub fn make_defs(&self, pri : &PieceRenderInstructions) -> String {
let pr = self;
let mut defs = String::new();
- write!(defs, r##"<g id="{}">{}</g>"##,
+ let dragraise = match pr.p.thresh_dragraise(pri) {
+ Some(n) if n < 0 => panic!(),
+ Some(n) => n,
+ None => -1,
+ };
+ write!(defs, r##"<g id="{}" data-dragraise="{}">{}</g>"##,
pri.id_piece(),
+ dragraise,
pr.p.svg_piece(&pri)).unwrap();
write!(defs, r##"<g id="{}" stroke="black" fill="none">{}</g>"##,
pri.id_select(),
impl Piece for SimpleShape {
fn svg_piece(&self, pri : &PieceRenderInstructions) -> String {
- format!(r##"<use fill="{}" href="#{}" data-dragraise="{}"/>"##,
+ format!(r##"<use fill="{}" href="#{}"/>"##,
self.colours[pri.face],
- pri.id_x("base"),
- self.approx_dia / 2,
- )
+ pri.id_x("base"))
+ }
+ fn thresh_dragraise(&self, _pri : &PieceRenderInstructions)
+ -> Option<Coord> {
+ Some(self.approx_dia / 2)
}
fn svg_select(&self, pri : &PieceRenderInstructions) -> String {
format!(r##"<g transform="scale({})"><use href="#{}"/></g>"##,
function drag_mouseup(e: MouseEvent) {
console.log('mouseup', dragging);
- let ddr2 = drag_mousemove(e);
- //console.log('mouseup ...', dragging);
+ let ddr2 : number = drag_mousemove(e);
+ let piece = drag_uelem!.dataset.piece!;
+ let pelem = piece_element('piece',piece)!;
+ let dragraise = +pelem.dataset.dragraise!;
+ console.log('CHECK RAISE ', dragraise, dragraise*dragraise, ddr2);
+ if (dragraise > 0 && ddr2 >= dragraise*dragraise) {
+ api_piece(api, "raise", piece, drag_uelem!, { });
+ }
if (dragging == DRAGGING.MAYBE_UNGRAB ||
dragging == (DRAGGING.MAYBE_GRAB | DRAGGING.YES)) {
- var piece = drag_uelem!.dataset.piece!;
- var pelem = piece_element('piece',piece)!;
set_ungrab(drag_uelem!, pelem);
- api_piece(api, 'ungrab', drag_uelem!.dataset.piece!, drag_uelem!, { });
+ api_piece(api, 'ungrab', piece, drag_uelem!, { });
}
drag_cancel();
}