dynamicweb/static/filer/js/focal_point.js
rscnt bb68c32ba5 new static files.
Signed-off-by: rscnt <rascnt@gmail.com>
2015-06-08 23:26:27 -06:00

86 lines
No EOL
2 KiB
JavaScript

(function($) {
$(function(){
var PAPER_WIDTH, PAPER_HEIGTH;
var paper, ratio;
var isDrag = false;
var dragger = function (e) {
this.dx = e.clientX;
this.dy = e.clientY;
isDrag = this;
this.animate({"fill-opacity": .3, "fill": "#fffccc"}, 500);
};
document.onmousemove = function (e) {
e = e || window.event;
if (isDrag) {
isDrag.translate(e.clientX - isDrag.dx, e.clientY - isDrag.dy);
paper.safari();
isDrag.dx = e.clientX;
isDrag.dy = e.clientY;
}
};
document.onmouseup = function (e) {
if (isDrag) {
isDrag.animate({"fill-opacity": .2, "fill": "#fff"}, 500);
if (isDrag.type == "circle") {
updatePosition(isDrag.attrs.cx, isDrag.attrs.cy);
}
}
isDrag = false;
};
var focalPoint;
function add(x, y) {
if (isNaN(x)) {
x = PAPER_WIDTH / 2;
y = PAPER_HEIGTH / 2;
}
var el = paper.circle(x, y, 15);
el.attr("fill", "#fff");
el.attr("fill-opacity", .2);
el.attr("stroke", "#c00");
el.attr('stroke-width', 2);
el.mousedown(dragger);
el.node.style.cursor = "move";
focalPoint = el;
}
function remove(id){
focalPoint.remove();
focalPoint = null;
}
function updatePosition(x, y) {
$("#id_subject_location").val(x === undefined ? '' : parseInt(parseInt(x)*ratio) + ',' + parseInt(parseInt(y)*ratio) );
}
$('#image_container img').load(function(){
PAPER_WIDTH = $('#image_container img').width();
PAPER_HEIGTH = $('#image_container img').height();
$('#image_container').height(PAPER_HEIGTH + 'px');
// interface
ratio = parseFloat($('#image_container img').attr('rel'));
paper = Raphael(document.getElementById("paper"), PAPER_WIDTH, PAPER_HEIGTH);
// read location from form
var location = $("#id_subject_location").val();
var x, y;
if (location){
x = parseInt(parseInt(location.split(',')[0])/ratio);
y = parseInt(parseInt(location.split(',')[1])/ratio);
}
add(x, y);
});
});
})(django.jQuery);