Wow, looks cool!
As for the meter arrows, here is the explanation of how it works:
index.html
There are some data attributes for meter divs:
data-min-angle: angle in degress for the arrow for data-min value (0 = vertical)
data-max-angle: angle in degress for the arrow for data-max value
data-min: minimal possible value (in JSON response)
data-max: maximum possible value (in JSON response)
data-prev: internal usage only
style.less
transform-origin: defines the central point of your analog meter, i.e. pivot point (calculation starts from the top-left point of your arrow)
transform rotate: defines the angle of the arrow (0 = vertical, negative = left, positive = right); initial value is not important, it will be changed automatically by the app (it is just useful to have it in CSS for debugging)
left,top: left and top point of the top-left corner of the arrow (when it is in vertical position)
width,height: width and height of the arrow
To make it a bit more comprehensible I drew a diagram to explain speedometer values:
left: 571px;
top: 121px;
width: 10px;
height: 110px;
transform: rotate(-114deg);
transform-origin: 50% 440px;
data-min="0" (0 km/h)
data-max="140" (140 km/h max, if values goes further - it will stay on 140 anyway)
data-min-angle="-114" (-114 degrees for 0 km/h value)
data-max-angle="+114" (+114 degrees for 140 km/h value)
[ external image ]
Also, please note that your background is a little bit skewed, and the gauge assumes linear arrow moving. So the final arrow may shift for a couple of pixels no matter what values you set in CSS.