module.exports = function () { return cdb.createVis(document.createElement('div'), { bounds: [[24.206889622398023, -84.0234375], [76.9206135182968, 169.1015625]], datasource: { maps_api_template: 'fake_maps_api_template', user_name: 'pepe' }, options: { scrollwheel: false }, layers: [{ type: 'torque', maps_api_template: 'fake_maps_api_template', options: { cartocss: 'hello', source: 'a0' } }], analyses: [{ id: 'a0', type: 'source', params: { query: 'SELECT * FROM foo;' } }] }); };
$(function() { cdb.init(function() { cdb.templates.namespace = 'cartodb/'; var confirmation = new MainView({ userCreationId: user_creation_id, username: user_name, customHosted: is_custom_install, userURL: user_url }); }); });
_initViews: function () { this._map = cdb.createVis( this.$('.js-map'), this._visModel.vizjsonURL(), { legends: false, vector: false, authToken: this._configModel.get('auth_tokens'), mapzenApiKey: this._configModel.get('mapzenApiKey') } ); },
module.exports = function () { return cdb.createVis(document.createElement('div'), { bounds: [[24.206889622398023, -84.0234375], [76.9206135182968, 169.1015625]], datasource: { maps_api_template: 'fake_maps_api_template', user_name: 'pepe' }, layers: [{ type: 'torque', maps_api_template: 'fake_maps_api_template' }] }); };
$(function() { cdb.init(function() { cdb.templates.namespace = 'cartodb/'; cdb.config.set(window.config); // import config if (cdb.config.isOrganizationUrl()) { cdb.config.set('url_prefix', cdb.config.organizationUrl()); } var userUrls = new UserUrlsModel({ upgrade_url: upgrade_url }, { config: cdb.config }); var router = new Router(); var user = new cdb.admin.User(user_data); // Main view var dashboard = new MainView({ el: document.body, user: user, config: config, router: router, userUrls: userUrls }); window.dashboard = dashboard; // History Backbone.history.start({ pushState: true, root: cdb.config.prefixUrl() + '/' }); if (window.mixpanel && window.mixpanel_token) { new cdb.admin.Mixpanel({ user: user_data, token: window.mixpanel_token }); sendUsageToMixpanel(window.mixpanel, user, window.isFirstTimeViewingDashboard, window.isJustLoggedIn); }; }); });
_createVisMap: function(createVis) { return cdb.createVis(this.el, createVis.url, _.defaults(createVis.opts, { title: false, header: false, description: false, search: false, layer_selector: false, text: false, image: false, shareable: false, annotation: false, zoom: false, cartodb_logo: false, scrollwheel: false, mobile_layout: true, slides_controller: false, legends: false, time_slider: false, loader: false, no_cdn: false })); },
module.exports = function(opts) { var map = cdb.createVis(opts.el, { 'version': '0.1.0', 'title': 'default', 'scrollwheel': opts.scrollwheel !== undefined ? opts.scrollwheel : false, 'zoom': 6, center: [40.7127837, -74.0059413], // NY layers: [{ 'options': _.defaults({ urlTemplate: opts.baselayer.url }, opts.baselayer, { 'order': 0, 'visible': true, 'read_only': true }), 'order': 0, 'tooltip': null, 'type': 'tiled' }] }); return map; };
createDefaultVis: function () { return cdb.createVis(document.createElement('div'), { bounds: [[24.206889622398023, -84.0234375], [76.9206135182968, 169.1015625]], datasource: { maps_api_template: 'asd', user_name: 'pepe' }, layers: [ { id: 'layer1', type: 'cartodb', name: 'Layer Name', options: { source: 'a0', cartocss: '#layer { polygon-fill: #CDCDCD; }' } }, { id: 'layer2', type: 'torque', name: 'Torque Layer', options: { source: 'a0', cartocss: '#layer { polygon-fill: #CDCDCD; }' } } ], analyses: [ { id: 'a0', type: 'source', params: { query: 'SELECT * FROM akhenaton.bad_boys_de_marseille;' } } ] }); }
$(function() { cdb.init(function() { cdb.templates.namespace = 'cartodb/'; cdb.config.set('url_prefix', user_data.base_url); cdb.config.set('default_fallback_basemap', window.default_fallback_basemap); // TODO: This is still necessary implicitly, for the Backbone.sync method to work (set in app.js) // once that case is removed we could skip cdb.config completely. cdb.config.set(window.config); // import config var currentUser = new cdb.admin.User(window.user_data); if (currentUser.featureEnabled('active_record_vis_endpoint')) { applyPatchNewVisualizationUrl(); } if (currentUser.featureEnabled('active_record_geocoding_endpoint')) { applyPatchNewGeocodingUrls(); } if (currentUser.featureEnabled('active_record_table_vis_endpoint')) { applyPatchNewTableUrls(); } if (currentUser.featureEnabled('active_record_layers_endpoint')) { applyPatchNewLayerUrls(); } if (currentUser.featureEnabled('active_record_synchronization_endpoint')) { applyPatchNewSynchronizationUrls(); } if (currentUser.featureEnabled('active_record_import_endpoint')) { applyPatchNewImportUrl(); } if (currentUser.featureEnabled('active_record_asset_endpoint')) { applyPatchNewAssetUrl(); } if (currentUser.featureEnabled('active_record_imports_service_endpoint')) { applyPatchNewImportsServiceUrl(); } cdb.config.set('user', currentUser); var router = new Router({ dashboardUrl: currentUser.viewUrl().dashboard() }); // Why not have only one collection? var collection = new cdb.admin.Visualizations(); var dashboard = new MainView({ el: document.body, collection: collection, user: currentUser, config: window.config, router: router }); window.dashboard = dashboard; router.enableAfterMainView(); // TODO: remove mixpanel if (window.mixpanel && window.mixpanel_token) { new cdb.admin.Mixpanel({ user: window.user_data, token: window.mixpanel_token }); sendUsageToMixpanel(window.mixpanel, currentUser, window.isFirstTimeViewingDashboard, window.isJustLoggedIn); } var metrics = new cdb.admin.Metrics(); // Event tracking "Visited Dashboard" cdb.god.trigger('metrics', 'visited_dashboard', { email: window.user_data.email, data: null }); if (window.isJustLoggedIn) { // Event tracking "Logged in" cdb.god.trigger('metrics', 'logged_in', { email: window.user_data.email, data: null }); } if (window.isFirstTimeViewingDashboard) { // Event tracking "Visited Dashboard for the first time" cdb.god.trigger('metrics', 'visited_dashboard_first_time', { email: window.user_data.email, data: null }); } cdb.god.bind('openPrivacyDialog', function(vis) { if (vis.isOwnedByUser(currentUser)) { var dialog = new ChangePrivacyDialog({ vis: vis, user: currentUser, enter_to_confirm: true, clean_on_hide: true }); dialog.appendToBody(); } }); cdb.god.bind('openCreateDialog', function(d) { var createModel; d = d || {}; if (d.type === 'dataset') { createModel = new CreateDatasetModel({}, { user: currentUser }); } else { createModel = new CreateMapModel({}, _.extend({ user: currentUser }, d)); } var createDialog = new CreateDialog({ model: createModel, user: currentUser, clean_on_hide: true }); createModel.bind('datasetCreated', function(tableMetadata) { if (router.model.isDatasets()) { var vis = new cdb.admin.Visualization({ type: 'table' }); vis.permission.owner = currentUser; vis.set('table', tableMetadata.toJSON()); window.location = vis.viewUrl(currentUser).edit(); } else { var vis = new cdb.admin.Visualization({ name: DEFAULT_VIS_NAME }); vis.save({ tables: [ tableMetadata.get('id') ] },{ success: function(m) { window.location = vis.viewUrl().edit(); }, error: function(e) { createDialog.close(); collection.trigger('error'); } }); } }, this); createDialog.appendToBody(); createModel.viewsReady(); }); }); // In the merge modal in the editor the user is given an option to watch the create-map-tutorials, so if the URL // contains the expected querystring open it if (/open-create-map-tutorials/.test(window.location.search)) { cdb.god.trigger('openCreateDialog'); } });
$(function() { // No attributions and no links in this map (at least from cartodb) cartodb.config.set({ cartodb_attributions: "", cartodb_logo_link: "" }); $.extend( $.easing, { easeInQuad: function (x, t, b, c, d) { return c*(t/=d)*t + b; } }); cdb.init(function() { cdb.templates.namespace = 'cartodb/'; $(document.body).bind('click', function() { cdb.god.trigger('closeDialogs'); }); var authenticatedUser = new cdb.open.AuthenticatedUser(); authenticatedUser.bind('change', function() { if (authenticatedUser.get('username')) { var user = new cdb.admin.User(authenticatedUser.attributes); var userSettingsView = new UserSettingsView({ el: $('.js-user-settings'), model: user }); userSettingsView.render(); if (user.get('username') === window.owner_username) { // Show "Edit in CartoDB" button if logged user // is the map owner ;) $('.js-editMap').addClass('is-visible'); } $('.js-login').hide(); $('.js-learn').hide(); } }); // Vis likes $('.js-likes').each(function() { var likeModel = cdb.admin.Like.newByVisData({ likeable: false, vis_id: $(this).data('vis-id'), likes: $(this).data('likes-count') }); authenticatedUser.bind('change', function() { if (authenticatedUser.get('username')) { likeModel.bind('loadModelCompleted', function() { likeModel.set('likeable', true); }); likeModel.fetch(); } }); var likeView = new LikeView({ el: this, model: likeModel }); likeView.render(); }); // More user vis cards $('.MapCard').each(function() { var vizjson = $(this).data('vizjson-url'); var zoom = $(this).data('zoom'); if (vizjson) { var mapCardPreview = new MapCardPreview({ el: $(this).find('.js-header'), zoom: zoom, vizjson: vizjson }); mapCardPreview.load(); } }); // Check if device is a mobile var mobileDevice = /Android|webOS|iPad|iPhone|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent); // Window view var public_window = new PublicMapWindow({ el: window, user_name: user_name, owner_username: owner_username, vis_id: vis_id, vis_name: vis_name, vizdata: vizdata, config: config, map_options: map_options, isMobileDevice: mobileDevice, belong_organization: belong_organization }); authenticatedUser.fetch(); }); });
$(function() { cdb.init(function() { cdb.templates.namespace = 'cartodb/'; cdb.config.set('url_prefix', user_data.base_url); cdb.config.set(window.config); // import config $(document.body).bind('click', function () { cdb.god.trigger('closeDialogs'); }); var currentUser = new cdb.admin.User(window.user_data); var headerView = new HeaderView({ el: $('#header'), //pre-rendered in DOM by Rails app model: currentUser, viewModel: new HeaderViewModel(), localStorage: new LocalStorage() }); headerView.render(); var upgradeMessage = new UpgradeMessage({ model: currentUser }); $('.Header').after(upgradeMessage.render().el); var supportView = new SupportView({ el: $('#support-banner'), user: currentUser }); supportView.render(); $('.js-regenerateApiKey').bind('click', function(ev) { if (ev) ev.preventDefault(); var username = user_data.username; var action = (user_data.organization ? '/u/' + username : '') + '/your_apps/api_key/regenerate'; var authenticity_token = $('[name=authenticity_token][value]').get(0).value; var dlg = new RegenerateKeysDialog({ type: 'api', scope: 'user', form_action: action, authenticity_token: authenticity_token }); dlg.appendToBody(); }); $('.js-regenerateOauth').bind('click', function(ev) { if (ev) ev.preventDefault(); var username = user_data.username; var action = (user_data.organization ? '/u/' + username : '') + '/your_apps/oauth/regenerate'; var authenticity_token = $('[name=authenticity_token][value]').get(0).value; var dlg = new RegenerateKeysDialog({ type: 'oauth', scope: 'user', form_action: action, authenticity_token: authenticity_token, method: 'delete' }); dlg.appendToBody(); }); $('.js-copy-value').each(function() { // Copy if (!$.browser.mozilla && !($.browser.msie && $.browser.version<9)) { $(this).zclip({ path: cdb.config.get('assets_url') + "/flash/ZeroClipboard.swf", copy: function(){ return $(this).parent().find(".js-input").val(); } }); } // Tooltip var tooltip = new cdb.common.TipsyTooltip({ el: $(this), title: function() { return $(this).data('title'); } }); }); }); });
$(function() { cdb.init(function() { cdb.templates.namespace = 'cartodb/'; cdb.config.set('url_prefix', user_data.base_url); cdb.config.set(window.config); // import config $(document.body).bind('click', function () { cdb.god.trigger('closeDialogs'); }); var currentUser = window.currentUser = new cdb.admin.User( _.extend( window.user_data, { can_change_email: can_change_email, logged_with_google: false, google_enabled: false } ) ); var headerView = new HeaderView({ el: $('#header'), //pre-rendered in DOM by Rails app model: currentUser, viewModel: new HeaderViewModel(), localStorage: new LocalStorage() }); headerView.render(); var supportView = new SupportView({ el: $('#support-banner'), user: currentUser }); supportView.render(); var upgradeMessage = new UpgradeMessage({ model: currentUser }); $('.Header').after(upgradeMessage.render().el); // Avatar if (this.$('.js-avatarSelector').length > 0) { var avatarSelector = new AvatarSelector({ el: this.$('.js-avatarSelector'), renderModel: new cdb.core.Model({ name: currentUser.get('name') || currentUser.get('username'), avatar_url: currentUser.get('avatar_url'), id: currentUser.get('id') }) }); avatarSelector.render(); } // User deletion if (this.$('.js-deleteAccount').length > 0 && window.authenticity_token) { this.$('.js-deleteAccount').click(function(ev) { if (ev) { ev.preventDefault(); } new DeleteAccount({ authenticityToken: window.authenticity_token, clean_on_hide: true }).appendToBody(); }) } // Google + behaviour! // If iframe is not present, we can't do anything if (window.iframe_src) { var googlePlus = new GooglePlus({ model: currentUser, iframeSrc: iframe_src }); googlePlus.hide(); this.$('.Form-footer').before(googlePlus.render().el); } }); });
$(function() { cdb.init(function() { cdb.templates.namespace = 'cartodb/'; cdb.config.set(window.config); cdb.config.set('url_prefix', window.base_url); var scrollableHeader = new ScrollableHeader({ el: $('.js-Navmenu'), anchorPoint: 350 }); var userTourView = new UserTourView({ el: $('.js-user-tour'), }); var userIndustriesView = new UserIndustriesView({ el: $('.js-user-industries'), }); var userResourcesView = new UserResourcesView({ el: $('.js-user-resources'), }); $(document.body).bind('click', function() { cdb.god.trigger('closeDialogs'); }); var authenticatedUser = new cdb.open.AuthenticatedUser(); authenticatedUser.bind('change', function() { if (authenticatedUser.get('username')) { var user = new cdb.admin.User(authenticatedUser.attributes); var userSettingsView = new UserSettingsView({ el: $('.js-user-settings'), model: user }); userSettingsView.render(); $('.js-login').hide(); $('.js-learn').show(); } }); var favMapView = new FavMapView(window.favMapViewAttrs); favMapView.render(); var userInfoView = new UserInfoView({ el: $('.js-user-info') }); userInfoView.render(); var paginationView = new PaginationView({ el: '.js-content-footer', model: new PaginationModel(window.paginationModelAttrs) }); paginationView.render(); $('.MapCard').each(function() { var visId = $(this).data('visId'); if (visId) { var mapCardPreview = new MapCardPreview({ el: $(this).find('.js-header'), height: 220, visId: $(this).data('visId'), username: $(this).data('visOwnerName'), mapsApiHost: cdb.config.getMapsApiHost() }); mapCardPreview.load(); } }); $('.js-likes').each(function() { var likeModel = cdb.admin.Like.newByVisData({ url: !cdb.config.get('url_prefix') ? $(this).attr('href') : '' , likeable: false, show_count: $(this).data('show-count') || false, show_label: $(this).data('show-label') || false, vis_id: $(this).data('vis-id'), likes: $(this).data('likes-count') }); authenticatedUser.bind('change', function() { if (authenticatedUser.get('username')) { likeModel.bind('loadModelCompleted', function() { likeModel.set('likeable', true); }); likeModel.fetch(); } }); var likeView = new LikeView({ el: this, model: likeModel }); likeView.render(); }); authenticatedUser.fetch(); }); });
$(function() { cdb.init(function() { cdb.templates.namespace = 'cartodb/'; cdb.config.set('url_prefix', user_data.base_url); cdb.config.set(window.config); // import config $(document.body).bind('click', function () { cdb.god.trigger('closeDialogs'); }); var currentUser = new cdb.admin.User(window.user_data); if (window.organization_user_data) { var organizationUser = new cdb.admin.User(window.organization_user_data); } var headerView = new HeaderView({ el: $('#header'), //pre-rendered in DOM by Rails app model: currentUser, currentUserUrl: currentUser.viewUrl(), viewModel: new HeaderViewModel(), localStorage: new LocalStorage() }); headerView.render(); var supportView = new SupportView({ el: $('#support-banner'), user: currentUser }); supportView.render(); // File input style if (this.$(':file').length > 0) { var self = this; this.$(":file").filestyle({ buttonText: "Choose avatar" }); this.$(":file").bind('change', function() { self.$('.form-control').show(); self.$('.btn').hide(); }); } // Tooltips $('[data-title]').each(function(i,el) { new cdb.common.TipsyTooltip({ el: el, title: function() { return $(this).attr('data-title'); } }) }); // Progress quota bar? if (this.$('.js-quota').length > 0 && organization_data && this.$('#user_quota').length > 0) { new QuotaProgressBar( _.extend( organization_data, { el: this.$('.js-quota'), userQuota: assigned_user_quota, userUsedQuota: used_user_quota, userName: currentUser.get('username'), input: this.$('#user_quota') } ) ) } // User deletion if (this.$('.js-deleteAccount').length > 0 && window.authenticity_token) { this.$('.js-deleteAccount').click(function(ev) { if (ev) { ev.preventDefault(); } new DeleteAccount({ organizationUser: organizationUser, authenticityToken: window.authenticity_token, clean_on_hide: true }).appendToBody(); }) } }); });
var createDashboard = function (selector, vizJSON, opts, callback) { var dashboardEl = document.querySelector(selector); if (!dashboardEl) throw new Error('no element found with selector ' + selector); // Default options opts = opts || {}; opts.renderMenu = _.isBoolean(opts.renderMenu) ? opts.renderMenu : true; var widgets = new WidgetsCollection(); var coords = JSON.parse(vizJSON.center); var model = new cdb.core.Model({ title: vizJSON.title, description: vizJSON.description, updatedAt: vizJSON.updated_at, userName: vizJSON.user.fullname, userProfileURL: vizJSON.user.profile_url, userAvatarURL: vizJSON.user.avatar_url, renderMenu: opts.renderMenu, initialPosition: { center: coords, zoom: vizJSON.zoom } }); var dashboardView = new DashboardView({ el: dashboardEl, widgets: widgets, model: model }); var stateFromURL = opts.state || URLHelper.getStateFromCurrentURL(); if (!_.isEmpty(stateFromURL.map)) { vizJSON.center = stateFromURL.map.center; vizJSON.bounds = null; vizJSON.zoom = stateFromURL.map.zoom; } var vis = cdb.createVis(dashboardView.$('#map'), vizJSON, _.extend(opts, { skipMapInstantiation: true })); vis.once('load', function (vis) { if (!_.isEmpty(stateFromURL.map)) { vis.map.setView(stateFromURL.map.center, stateFromURL.map.zoom); } var widgetsState = stateFromURL.widgets || {}; // Create widgets var widgetsService = new WidgetsService(widgets, vis.dataviews); var widgetModelsMap = { list: widgetsService.createListModel.bind(widgetsService), formula: widgetsService.createFormulaModel.bind(widgetsService), histogram: widgetsService.createHistogramModel.bind(widgetsService), 'time-series': widgetsService.createTimeSeriesModel.bind(widgetsService), category: widgetsService.createCategoryModel.bind(widgetsService) }; vizJSON.widgets.forEach(function (d) { // Flatten the data structure given in vizJSON, the widgetsService will use whatever it needs and ignore the rest var attrs = _.extend({}, d, d.options); var newWidgetModel = widgetModelsMap[d.type]; var state = widgetsState[d.id]; if (_.isFunction(newWidgetModel)) { // Find the Layer that the Widget should be created for. var layer; if (d.layer_id) { layer = vis.map.layers.get(d.layer_id); } else if (Number.isInteger(d.layerIndex)) { // TODO Since namedmap doesn't have ids we need to map in another way, here using index // should we solve this in another way? layer = vis.map.layers.at(d.layerIndex); } newWidgetModel(attrs, layer, state); } else { cdb.log.error('No widget found for type ' + d.type); } }); dashboardView.render(); if (widgets.size() > 0) { vis.centerMapToOrigin(); } vis.instantiateMap({ success: function () { callback && callback(null, { dashboardView: dashboardView, widgets: widgetsService, vis: vis }); }, error: function () { var error = new Error('Map instantiation failed'); console.log(error); callback && callback(error, { dashboardView: dashboardView, widgets: widgetsService, vis: vis }); } }); }); };
$(function() { cdb.init(function() { cdb.templates.namespace = 'cartodb/'; $(document.body).bind('click', function() { cdb.god.trigger('closeDialogs'); }); var authenticatedUser = new cdb.open.AuthenticatedUser(); authenticatedUser.bind('change', function() { if (authenticatedUser.get('username')) { var user = new cdb.admin.User(authenticatedUser.attributes); var userSettingsView = new UserSettingsView({ el: $('.js-user-settings'), model: user }); userSettingsView.render(); var userDashboardUrl = user.viewUrl().dashboard(); $('.UserAvatar-img').wrap($('<a>',{ href: userDashboardUrl })); $('.js-login').hide(); $('.js-learn').show(); } }); var favMapView = new FavMapView(window.favMapViewAttrs); favMapView.render(); var userInfoView = new UserInfoView({ el: $('.js-user-info') }); userInfoView.render(); var paginationView = new PaginationView({ el: '.js-content-footer', model: new PaginationModel(window.paginationModelAttrs) }); paginationView.render(); $('.MapCard').each(function() { var vizjson = $(this).data('vizjson-url'); var zoom = $(this).data('zoom'); if (vizjson) { var mapCardPreview = new MapCardPreview({ el: $(this).find('.js-header'), zoom: zoom, vizjson: vizjson }); mapCardPreview.load(); } }); $('.js-likes').each(function() { var likeModel = cdb.admin.Like.newByVisData({ likeable: false, vis_id: $(this).data('vis-id'), likes: $(this).data('likes-count') }); authenticatedUser.bind('change', function() { if (authenticatedUser.get('username')) { likeModel.bind('loadModelCompleted', function() { likeModel.set('likeable', true); }); likeModel.fetch(); } }); var likeView = new LikeView({ el: this, model: likeModel }); likeView.render(); }); authenticatedUser.fetch(); }); });