PHP Classes

File: vendors/jqvmap/src/JQVMap.js

Recommend this page to a friend!
  Classes of Jorge Castro   Gentelella BladeOne   vendors/jqvmap/src/JQVMap.js   Download  
File: vendors/jqvmap/src/JQVMap.js
Role: Auxiliary data
Content type: text/plain
Description: Auxiliary data
Class: Gentelella BladeOne
Render templates using Bootstrap for presentation
Author: By
Last change:
Date: 3 years ago
Size: 6,462 bytes
 

Contents

Class file image Download
var JQVMap = function (params) { params = params || {}; var map = this; var mapData = JQVMap.maps[params.map]; var mapPins; if( !mapData){ throw new Error('Invalid "' + params.map + '" map parameter. Please make sure you have loaded this map file in your HTML.'); } this.selectedRegions = []; this.multiSelectRegion = params.multiSelectRegion; this.container = params.container; this.defaultWidth = mapData.width; this.defaultHeight = mapData.height; this.color = params.color; this.selectedColor = params.selectedColor; this.hoverColor = params.hoverColor; this.hoverColors = params.hoverColors; this.hoverOpacity = params.hoverOpacity; this.setBackgroundColor(params.backgroundColor); this.width = params.container.width(); this.height = params.container.height(); this.resize(); jQuery(window).resize(function () { var newWidth = params.container.width(); var newHeight = params.container.height(); if(newWidth && newHeight){ map.width = newWidth; map.height = newHeight; map.resize(); map.canvas.setSize(map.width, map.height); map.applyTransform(); var resizeEvent = jQuery.Event('resize.jqvmap'); jQuery(params.container).trigger(resizeEvent, [newWidth, newHeight]); if(mapPins){ jQuery('.jqvmap-pin').remove(); map.pinHandlers = false; map.placePins(mapPins.pins, mapPins.mode); } } }); this.canvas = new VectorCanvas(this.width, this.height, params); params.container.append(this.canvas.canvas); this.makeDraggable(); this.rootGroup = this.canvas.createGroup(true); this.index = JQVMap.mapIndex; this.label = jQuery('<div/>').addClass('jqvmap-label').appendTo(jQuery('body')).hide(); if (params.enableZoom) { jQuery('<div/>').addClass('jqvmap-zoomin').text('+').appendTo(params.container); jQuery('<div/>').addClass('jqvmap-zoomout').html('&#x2212;').appendTo(params.container); } map.countries = []; for (var key in mapData.paths) { var path = this.canvas.createPath({ path: mapData.paths[key].path }); path.setFill(this.color); path.id = map.getCountryId(key); map.countries[key] = path; if (this.canvas.mode === 'svg') { path.setAttribute('class', 'jqvmap-region'); } else { jQuery(path).addClass('jqvmap-region'); } jQuery(this.rootGroup).append(path); } jQuery(params.container).delegate(this.canvas.mode === 'svg' ? 'path' : 'shape', 'mouseover mouseout', function (e) { var containerPath = e.target, code = e.target.id.split('_').pop(), labelShowEvent = jQuery.Event('labelShow.jqvmap'), regionMouseOverEvent = jQuery.Event('regionMouseOver.jqvmap'); code = code.toLowerCase(); if (e.type === 'mouseover') { jQuery(params.container).trigger(regionMouseOverEvent, [code, mapData.paths[code].name]); if (!regionMouseOverEvent.isDefaultPrevented()) { map.highlight(code, containerPath); } if (params.showTooltip) { map.label.text(mapData.paths[code].name); jQuery(params.container).trigger(labelShowEvent, [map.label, code]); if (!labelShowEvent.isDefaultPrevented()) { map.label.show(); map.labelWidth = map.label.width(); map.labelHeight = map.label.height(); } } } else { map.unhighlight(code, containerPath); map.label.hide(); jQuery(params.container).trigger('regionMouseOut.jqvmap', [code, mapData.paths[code].name]); } }); jQuery(params.container).delegate(this.canvas.mode === 'svg' ? 'path' : 'shape', 'click', function (regionClickEvent) { var targetPath = regionClickEvent.target; var code = regionClickEvent.target.id.split('_').pop(); var mapClickEvent = jQuery.Event('regionClick.jqvmap'); code = code.toLowerCase(); jQuery(params.container).trigger(mapClickEvent, [code, mapData.paths[code].name]); if ( !params.multiSelectRegion && !mapClickEvent.isDefaultPrevented()) { for (var keyPath in mapData.paths) { map.countries[keyPath].currentFillColor = map.countries[keyPath].getOriginalFill(); map.countries[keyPath].setFill(map.countries[keyPath].getOriginalFill()); } } if ( !mapClickEvent.isDefaultPrevented()) { if (map.isSelected(code)) { map.deselect(code, targetPath); } else { map.select(code, targetPath); } } }); if (params.showTooltip) { params.container.mousemove(function (e) { if (map.label.is(':visible')) { var left = e.pageX - 15 - map.labelWidth; var top = e.pageY - 15 - map.labelHeight; if(left < 0) { left = e.pageX + 15; } if(top < 0) { top = e.pageY + 15; } map.label.css({ left: left, top: top }); } }); } this.setColors(params.colors); this.canvas.canvas.appendChild(this.rootGroup); this.applyTransform(); this.colorScale = new ColorScale(params.scaleColors, params.normalizeFunction, params.valueMin, params.valueMax); if (params.values) { this.values = params.values; this.setValues(params.values); } if (params.selectedRegions) { if (params.selectedRegions instanceof Array) { for(var k in params.selectedRegions) { this.select(params.selectedRegions[k].toLowerCase()); } } else { this.select(params.selectedRegions.toLowerCase()); } } this.bindZoomButtons(); if(params.pins) { mapPins = { pins: params.pins, mode: params.pinMode }; this.pinHandlers = false; this.placePins(params.pins, params.pinMode); } if(params.showLabels){ this.pinHandlers = false; var pins = {}; for (key in map.countries){ if (typeof map.countries[key] !== 'function') { if( !params.pins || !params.pins[key] ){ pins[key] = key.toUpperCase(); } } } mapPins = { pins: pins, mode: 'content' }; this.placePins(pins, 'content'); } JQVMap.mapIndex++; }; JQVMap.prototype = { transX: 0, transY: 0, scale: 1, baseTransX: 0, baseTransY: 0, baseScale: 1, width: 0, height: 0, countries: {}, countriesColors: {}, countriesData: {}, zoomStep: 1.4, zoomMaxStep: 4, zoomCurStep: 1 }; JQVMap.xlink = 'http://www.w3.org/1999/xlink'; JQVMap.mapIndex = 1; JQVMap.maps = {};