Initial commit

This commit is contained in:
zhongjin
2020-06-15 10:58:47 +08:00
commit 4f1dfe7564
8590 changed files with 1516878 additions and 0 deletions
@@ -0,0 +1,4 @@
export function isOrganizationAdmin (organizationData = {}, userData = {}) {
return organizationData.owner.id === userData.id ||
Boolean((organizationData.admins || []).find(u => u.id === userData.id));
}
@@ -0,0 +1,5 @@
import TableNameUtils from 'builder/helpers/table-name-utils';
export function getUnqualifiedName (originalName) {
return TableNameUtils.getUnqualifiedName(originalName);
}
@@ -0,0 +1,85 @@
import PermissionModel from 'dashboard/data/permission-model';
export function isSharedWithMe (visualizationData, models) {
return models.user.get('id') !== visualizationData.permission.owner.id;
}
export function getURL (visualizationData, models) {
const loggedUserBackboneModel = models.user;
const loggedUserId = loggedUserBackboneModel.id || loggedUserBackboneModel.get('id');
const permissionModel = new PermissionModel(
visualizationData.permission, { configModel: models.config }
);
let id = visualizationData.id;
let userUrl = permissionModel.owner.viewUrl();
const isVisualization = visualizationData.type === 'derived' || typeof visualizationData.type === 'undefined';
if (isVisualization) {
if (loggedUserBackboneModel &&
loggedUserId !== permissionModel.owner.get('id') &&
permissionModel.hasAccess(loggedUserBackboneModel)) {
userUrl = loggedUserBackboneModel.viewUrl();
id = `${permissionModel.owner.get('username')}.${id}`;
}
return userUrl.urlToPath('viz', id).get('base_url');
} else {
if (loggedUserBackboneModel && permissionModel.hasAccess(loggedUserBackboneModel)) {
userUrl = loggedUserBackboneModel.viewUrl();
}
return userUrl.urlToPath('tables', getUnquotedName(visualizationData.table.name)).get('base_url');
}
}
export function getThumbnailUrl (visualizationData, models, options) {
const protocol = isHTTPS() ? 'https' : 'http';
const cdnConfig = models.config.get('cdn_url');
const username = visualizationData.permission.owner.username || models.user.get('username');
const thumbnailOptions = {
protocol,
username,
mapsApiResource: models.config.getMapsResourceName(username),
tpl: _generateImageTemplate(visualizationData.id),
width: options.width,
height: options.height,
authTokens: _generateAuthTokensParams(visualizationData.auth_tokens)
};
if (cdnConfig) {
Object.assign(thumbnailOptions, { cdn: cdnConfig[protocol] });
}
return interpolateTemplateUrl(cdnConfig ? 'cdn' : 'regular', thumbnailOptions);
}
const interpolateTemplateUrl = function (type, options) {
if (type === 'regular') {
return `${options.protocol}://${options.mapsApiResource}/api/v1/map/static/named/${options.tpl}/${options.width}/${options.height}.png${options.authTokens}`;
}
if (type === 'cdn') {
return `${options.protocol}://${options.cdn}/${options.username}/api/v1/map/static/named/${options.tpl}/${options.width}/${options.height}.png${options.authTokens}`;
}
};
const _generateAuthTokensParams = function (authTokens) {
if (authTokens && authTokens.length > 0) {
return '?' + authTokens.map(t => `auth_token=${t}`).join('&');
}
return '';
};
const _generateImageTemplate = function (visualizationId) {
return `tpl_${visualizationId.replace(/-/g, '_')}`;
};
const isHTTPS = function () {
return location.protocol.indexOf('https') === 0;
};
const getUnquotedName = function (name = '') {
return name.replace(/"/g, '');
};