mirror of
https://github.com/apache/superset.git
synced 2026-04-11 12:26:05 +00:00
* bumping the js libs * New linting rules * More linting * More * Done linting * npm >=4.5.0 * Bumping node * Tweaking the build * Fixing the damn build * Fixing the apps
89 lines
2.4 KiB
JavaScript
89 lines
2.4 KiB
JavaScript
/* global notify */
|
|
/* eslint global-require: 0 */
|
|
import $ from 'jquery';
|
|
|
|
const d3 = window.d3 || require('d3');
|
|
|
|
export const EARTH_CIRCUMFERENCE_KM = 40075.16;
|
|
export const LUMINANCE_RED_WEIGHT = 0.2126;
|
|
export const LUMINANCE_GREEN_WEIGHT = 0.7152;
|
|
export const LUMINANCE_BLUE_WEIGHT = 0.0722;
|
|
export const MILES_PER_KM = 1.60934;
|
|
export const DEFAULT_LONGITUDE = -122.405293;
|
|
export const DEFAULT_LATITUDE = 37.772123;
|
|
export const DEFAULT_ZOOM = 11;
|
|
|
|
export function kmToPixels(kilometers, latitude, zoomLevel) {
|
|
// Algorithm from: http://wiki.openstreetmap.org/wiki/Zoom_levels
|
|
const latitudeRad = latitude * (Math.PI / 180);
|
|
// Seems like the zoomLevel is off by one
|
|
const kmPerPixel = EARTH_CIRCUMFERENCE_KM * Math.cos(latitudeRad) / Math.pow(2, zoomLevel + 9);
|
|
return d3.round(kilometers / kmPerPixel, 2);
|
|
}
|
|
|
|
export function isNumeric(num) {
|
|
return !isNaN(parseFloat(num)) && isFinite(num);
|
|
}
|
|
|
|
export function rgbLuminance(r, g, b) {
|
|
// Formula: https://en.wikipedia.org/wiki/Relative_luminance
|
|
return (LUMINANCE_RED_WEIGHT * r) + (LUMINANCE_GREEN_WEIGHT * g) + (LUMINANCE_BLUE_WEIGHT * b);
|
|
}
|
|
|
|
export function getParamFromQuery(query, param) {
|
|
const vars = query.split('&');
|
|
for (let i = 0; i < vars.length; i += 1) {
|
|
const pair = vars[i].split('=');
|
|
if (decodeURIComponent(pair[0]) === param) {
|
|
return decodeURIComponent(pair[1]);
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
|
|
export function storeQuery(query, callback) {
|
|
$.ajax({
|
|
type: 'POST',
|
|
url: '/kv/store/',
|
|
async: false,
|
|
data: {
|
|
data: JSON.stringify(query),
|
|
},
|
|
success: (data) => {
|
|
const baseUrl = window.location.origin + window.location.pathname;
|
|
const url = `${baseUrl}?id=${JSON.parse(data).id}`;
|
|
callback(url);
|
|
},
|
|
});
|
|
}
|
|
|
|
export function getParamsFromUrl() {
|
|
const hash = window.location.search;
|
|
const params = hash.split('?')[1].split('&');
|
|
const newParams = {};
|
|
params.forEach((p) => {
|
|
const value = p.split('=')[1].replace(/\+/g, ' ');
|
|
const key = p.split('=')[0];
|
|
newParams[key] = value;
|
|
});
|
|
return newParams;
|
|
}
|
|
|
|
export function getShortUrl(longUrl, callback) {
|
|
$.ajax({
|
|
type: 'POST',
|
|
url: '/r/shortner/',
|
|
async: false,
|
|
data: {
|
|
data: '/' + longUrl,
|
|
},
|
|
success: (data) => {
|
|
callback(data);
|
|
},
|
|
error: () => {
|
|
notify.error('Error getting the short URL');
|
|
callback(longUrl);
|
|
},
|
|
});
|
|
}
|