// prometheus-map.js // rusEFI/Prometheus project // (c) andreika, 2017 (prometheus.pcb@gmail.com) // https://github.com/andreika-git/prometheus/ $(function() { $('.map').maphilight(); $('.componentLink').mouseover(function(e) { var area = $($(this).attr("href")); area.mouseover(); }).click(function(e) { var area = $($(this).attr("href")); area.mouseover(); var re = /([0-9]+),([0-9]+)/g; var m, sumX = 0, sumY = 0, cnt = 0; while (m = re.exec(area.attr("coords"))) { sumX += parseInt(m[1]); sumY += parseInt(m[2]); cnt++; } sumX = parseInt(sumX / cnt) - $("#mapdiv").width() / 2; sumY = parseInt(sumY / cnt) - $("#mapdiv").height() / 2; $("#mapdiv").stop(); //if (!$("#mapdiv").is(':animated')) $("#mapdiv").animate({scrollLeft: sumX, scrollTop: sumY }, 500); e.preventDefault(); area.trigger("click"); }).mouseout(function(e) { $($(this).attr("href")).mouseout(); }); }); $(function(){ $("table").colResizable({liveDrag:true}); }); var clicked = false, dragged = false, clickX, clickY; $("document").ready(function(e) { //document.onselectstart = function () { return false; } $(document).mousemove(function(e) { if (clicked && (e.pageX != clickX || e.pageY != clickY)) { $("html").css('cursor', 'grabbing'); updateScrollPos(e); clickX = e.pageX; clickY = e.pageY; dragged = true; } }).mouseup(function(e) { if (clicked) { if (dragged) { $('html').css('cursor', 'auto'); e.preventDefault(); e.stopPropagation(); } else { $("#mapdiv area").trigger('click'); } clicked = false; } }).mousedown(function(e) { var targets = $(e.target).parents().andSelf(); dragged = false; if (targets.is('#mapdiv') || targets.is('#map')) { e.preventDefault(); clicked = true; clickX = e.pageX; clickY = e.pageY; return false; } }).click(function(e) { if (clicked) return false; return true; }); $(".maparea").click(function(e) { if (dragged) return false; for (var i = 0; i < components.length; i++) { if (components[i]["name"] == e.target.id) { //alert(e.target.id); $(this).data("maphilight", { alwaysOn: true }).trigger('alwaysOn.maphilight'); $('.selected').data('maphilight', { alwaysOn: false }).trigger('alwaysOn.maphilight'); $('.maparea').removeClass('selected'); $(this).addClass('selected'); var html = ""; if (components[i]["more"]) { var m = components[i]["more"]; html += ""; } html += "
"; var imgUrl = (components[i]["more"] && components[i]["more"]["img"]) ? components[i]["more"]["img"] : "https://raw.githubusercontent.com/andreika-git/prometheus/master/html/img/image_na.jpg"; html += ""; html += "
"; html += "
Designator: "+components[i]["name"]+"
"; html += "
"+components[i]["descr"]+"
"; html += "
Value: "+components[i]["value"]+"
"; html += "
Package: "+components[i]["fp"]+"
"; if (components[i]["remark"]) html += "
"+components[i]["remark"]+"
"; html += "
"; if (components[i]["part"]) { html += "
"+(components[i]["supp"])+" Number: "+components[i]["part"]+"
"; } if (m["ds"]) { html += ""; } if (m["vname"]) { html += "
Manufacturer: " + (m["vurl"] ? "" : "") + m["vname"] + (m["vurl"] ? "" : "") + "
"; } if (m["price"]) { html += "
Price: "+m["price"]+"
"; } html += "
"; $("#mapinfo").html(html); } } e.preventDefault(); return false; }); $(window).on("resize", function() { $("#mapdiv").height($(window).height() - $("#mapinfo").height() - 40); $("#maplinks").height($(window).height() - 40); }); $(window).trigger('resize'); }); var updateScrollPos = function(e) { $("html").css('cursor', 'grabbing'); $("#mapdiv").scrollTop($("#mapdiv").scrollTop() + (clickY - e.pageY)); $("#mapdiv").scrollLeft($("#mapdiv").scrollLeft() + (clickX - e.pageX)); } function putLinks(components) { var letter = "", prev = ""; for (var i = 0; i < components.length; i++) { var c = components[i]; var title = c['name']+"\n"+c['value']+"\n"+c['fp']; var area = "\""+c['name']+"\""; document.writeln(area); if (c['name'] != prev) { prev = c['name']; var value = c['value'] + ((c['more'] && c['more']['addrem']) ? " " + c['remark'] : ""); var maplinks = ""+c['name']+" (" + value + ") "; if (c['name'].substr(0, 1) != letter) { if (letter != "") $("#maplinks").append("

\n"); letter = c['name'].substr(0, 1); } $("#maplinks").append(maplinks); } } $("#maplinks").append("
"); }