PathwayMap:PathwayEditorHandler.js
$(function(){
// 必要なjsとcssのインポート
importScript('PathwayMap:PathwayEditor.js');
importStylesheet('PathwayMap:PathwayEditor.css');
// wikiの
var str = (function() {/*
<section id=view>
<section id=control align=left>
zoom:<input type=range id=zoom min=25 max=200 value=100>
</section>
</section>
*/}).toString().match(/[^]*\/\*([^]*)\*\/\}$/)[1].replace(/\n|\r/g, "");
$('#mainTxt').html(str);
// main handler, importとの時間差?のせいなのか、setTimeoutしないとmdpe_drawがないと判断される
setTimeout($.proxy(function() {
$('#base').css('width',"2900px").css('height',"2000px") ;
// zoomの設定
var mag = 1.0 ;
$('#zoom').on("input change",function() {
mag = $(this).val()/100 ;
$('#base').css("transform", "scale("+mag+")");
})
// 初期化
var b = new mdpe_draw($('#base')) ;
var data = b.parse($('#source').html());
b.setobj(data,true) ;
// boxのdrag時の処理
$(document).on("dragstart",'#base .box',function(ev){
var oe = ev.originalEvent ;
ev.originalEvent.dataTransfer.setData("text",$(this).attr('id')+"/"+oe.pageX+"/"+oe.pageY);
})
$('#base').on("dragenter dragover",function(){
return false ;
}).on("drop",function(ev){
var oe = ev.originalEvent ; var k = ev.originalEvent.dataTransfer.getData("text").split("/") ; var id = k[0] ;
var ox = (oe.pageX-k[1])/mag ; var oy = (oe.pageY-k[2])/mag ; var em = parseInt($('html').css('font-size')) ; var ex = parseInt($('#'+id).css("left")) ; var ey = parseInt($('#'+id).css("top")) ; var px = Math.floor(((ex+ox)/em+0.25)*2)/2 ; var py = Math.floor(((ey+oy)/em+0.25)*2)/2 ;
b.setpos(id,px,py) ; b.redraw(data) ;
// wiki用に改変。wikiの編集画面のtxtを直接変更する。
var wp = $('#wpTextbox1').val(); if(wp){ var wpu = wp.split(/<nowiki>/)[0]; var wpd = wp.split(/<\/nowiki>/)[1]; var tx = wp.split(/<nowiki>/)[1]; tx = tx.split(/<\/nowiki>/)[0]; var s = b.upd_text(tx) ; $('#wpTextbox1').val(wpu + "<nowiki>"+ s + "<\/nowiki>" + wpd) ; }
return false ;
});
},this),500);
});