Annotation of ECHO_content/ECHO_draw.zpt.~1.1.1.1.~, revision 1.1
1.1 ! dwinter 1: <html>
! 2: <head>
! 3: <script type="text/javascript">
! 4: <!--
! 5:
! 6: var
! 7: Selection,
! 8: Coords,
! 9: Red,
! 10: Img,
! 11: state, p1, p2;
! 12:
! 13: function Init() {
! 14: Selection = -1;
! 15: state = 0;
! 16: Coords = new Array();
! 17: Red = new getObj("red");
! 18: Img = new getObj("overview");
! 19: installHandlers();
! 20: }
! 21:
! 22: function installHandlers() {
! 23: // event handler für Img installieren
! 24: // Img.obj.addEventListener("mousemove", onMouseMove, true);
! 25: Img.obj.addEventListener("mousedown", Click, true);
! 26: // event handler für Red installieren
! 27: // Red.obj.addEventListener("mousemove", onMouseMove, true);
! 28: Red.obj.addEventListener("mousedown", Click, true);
! 29: };
! 30:
! 31: function calcX(obj) {
! 32: if (!obj) { obj = this.obj };
! 33: var curleft = 0;
! 34: if (obj.offsetParent) {
! 35: while (obj.offsetParent) {
! 36: curleft += obj.offsetLeft;
! 37: obj = obj.offsetParent;
! 38: };
! 39: }
! 40: else if (obj.x) { curleft += obj.x; };
! 41: return curleft;
! 42: }
! 43:
! 44: function calcY(obj) {
! 45: if (!obj) { obj = this.obj };
! 46: var curtop = 0;
! 47: if (obj.offsetParent) {
! 48: while (obj.offsetParent) {
! 49: curtop += obj.offsetTop;
! 50: obj = obj.offsetParent;
! 51: };
! 52: }
! 53: else if (obj.y) { curtop += obj.y; };
! 54: return curtop;
! 55: }
! 56:
! 57: function getObj(name) {
! 58: if (document.getElementById) {
! 59: this.obj = document.getElementById(name);
! 60: this.style = document.getElementById(name).style;
! 61: }
! 62: else if (document.all) {
! 63: this.obj = document.all[name];
! 64: this.style = document.all[name].style;
! 65: }
! 66: else if (document.layers) {
! 67: this.obj = document.layers[name];
! 68: this.style = document.layers[name];
! 69: };
! 70: this.getX = calcX;
! 71: this.getY = calcY;
! 72: this.x = this.getX();
! 73: this.y = this.getY();
! 74: this.w = this.obj.offsetWidth;
! 75: this.h = this.obj.offsetHeight;
! 76: this.area = this.w * this.h;
! 77: }
! 78:
! 79: function ShowRedFrame(spot, img, fx, fy, fw, fh) {
! 80: with (spot.style) {
! 81: left = img.x + fx * img.w;
! 82: top = img.y + fy * img.h;
! 83: width = fw * img.w;
! 84: height = fh * img.h;
! 85: visibility = 'visible';
! 86: };
! 87: }
! 88:
! 89: function NoRedFrame(spot) {
! 90: with (spot.style) {
! 91: left = 0;
! 92: top = 0;
! 93: width = 0;
! 94: height = 0;
! 95: visibility = 'hidden';
! 96: };
! 97: }
! 98:
! 99:
! 100: function Point(event) {
! 101: this.pageX = parseInt(event.pageX);
! 102: this.pageY = parseInt(event.pageY);
! 103: this.x = this.pageX - parseInt(Img.x);
! 104: this.y = this.pageY - parseInt(Img.y);
! 105: return this;
! 106: }
! 107:
! 108: function DrawFrame() {
! 109: with (Red.style) {
! 110: left = Math.min(p1.x, p2.x) + Img.x;
! 111: top = Math.min(p1.y, p2.y) + Img.y;
! 112: width = Math.abs(p1.x - p2.x);
! 113: height = Math.abs(p1.y - p2.y);
! 114: visibility = 'visible';
! 115: };
! 116: }
! 117:
! 118: function CoordsStr() {
! 119: var imW = Img.w;
! 120: var imH = Img.h;
! 121: var cx = Math.min(p1.x, p2.x)/imW;
! 122: var cy = Math.min(p1.y, p2.y)/imH;
! 123: var cw = Math.abs(p1.x - p2.x)/imW;
! 124: var ch = Math.abs(p1.y - p2.y)/imH;
! 125: return (
! 126: cx.toFixed(4) + ',' +
! 127: cy.toFixed(4) + ',' +
! 128: cw.toFixed(4) + ',' +
! 129: ch.toFixed(4) );
! 130: }
! 131:
! 132: function Move(event) {
! 133: p2 = new Point(event);
! 134: DrawFrame();
! 135: }
! 136:
! 137: function Click(event) {
! 138: if (state == 0) {
! 139: state = 1;
! 140: p1 = new Point(event);
! 141: p2 = p1;
! 142: Red.obj.addEventListener("mousemove", Move, true);
! 143: Img.obj.addEventListener("mousemove", Move, true);
! 144: } else {
! 145: state = 0;
! 146: p2 = new Point(event);
! 147: Red.obj.removeEventListener("mousemove", Move, true);
! 148: Img.obj.removeEventListener("mousemove", Move, true);
! 149: }
! 150: DrawFrame();
! 151: document.form.coordstr.value = CoordsStr();
! 152: }
! 153:
! 154: function Coord(name, element, cx, cy, cw, ch) {
! 155: // berechnet aus DIGLIB Koordinaten (0.0 - 1.0) Pixel-Koordinaten relativ zum tag "element"
! 156: var OW = element.obj.offsetWidth;
! 157: var OH = element.obj.offsetHeight;
! 158: this.element = element;
! 159: this.link = new getObj(name);
! 160: this.linkname = name;
! 161: this.linkstyle = this.link.style;
! 162: this.cx = cx;
! 163: this.cy = cy;
! 164: this.cw = cw;
! 165: this.ch = ch;
! 166: this.x = cx * OW;
! 167: this.y = cy * OH;
! 168: this.w = cw * OW;
! 169: this.h = ch * OH;
! 170: this.area = this.h * this.w;
! 171: return this;
! 172: }
! 173:
! 174: function inCoords(coord, p) {
! 175: // liegt Punkt "p" im Rechteckfeld "coord"?
! 176: with (coord) {
! 177: return (
! 178: (p.x >= x) &&
! 179: (p.y >= y) &&
! 180: (p.x <= x + w) &&
! 181: (p.y <= y + h));
! 182: };
! 183: }
! 184:
! 185: function Highlight(coords, nr, high) {
! 186: // selektiert/delektiert Rechteckfeld und Link im Array "coords", Index "nr"
! 187: if (nr == -1) { NoRedFrame(Red); return };
! 188: with (coords[nr]) {
! 189: if (high) {
! 190: ShowRedFrame(Red, element, cx, cy, cw, ch);
! 191: linkstyle.backgroundColor = '#f0dfdf';
! 192: }
! 193: else { linkstyle.backgroundColor = ''; };
! 194: };
! 195: }
! 196:
! 197: function getCoords(event, element, coords) {
! 198: // "mousemove" event handler; berechnet kleinstes Rechteckfeld unter dem Mauszeiger
! 199: // setzt "Selection" als Index in das Array "coords"
! 200: var p = new Point(event, element);
! 201: var AR = element.area;
! 202: var i = 0;
! 203: Highlight(coords, Selection, undefined); // unselect last index
! 204: Selection = -1;
! 205: while (i < coords.length) {
! 206: var coord = coords[i];
! 207: if (inCoords(coord, p)) {
! 208: var ar = coord.area;
! 209: if (ar < AR) { AR = ar; Selection = i };
! 210: }
! 211: i += 1;
! 212: };
! 213: Highlight(coords, Selection, 1); // select new index
! 214: }
! 215:
! 216: function Link() {
! 217: // Datensatz des selektierten Rechteckfelds in den Browser laden
! 218: if (Selection != -1) {
! 219: window.location.href = Coords[Selection].linkname;
! 220: };
! 221: }
! 222:
! 223:
! 224: function onMouseMove(event) {
! 225: getCoords(event, Img, Coords);
! 226: }
! 227:
! 228:
! 229:
! 230:
! 231: //-->
! 232: </script>
! 233: </head>
! 234: <body onload="Init()">
! 235: <form id="form" name="form" method="post" action="ECHO_enterCoords">
! 236: <input type="text" id="coordstr" name="coordstr">
! 237: <input type="submit">
! 238: </form>
! 239: <span tal:repeat="coord python:here.coords" tal:replace="coord"/>
! 240: <img id="overview" tal:attributes="src python:here.aq_parent.overview.getId()">
! 241: <div id="red" style="position: absolute; top: 0; left: 0; width: 0; height: 0; background: url(red.gif); visibility: visible;">
! 242: </div>
! 243: </body>
! 244: </html>
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>