From d83a9924b8f6d553fea3d17b2a53183650591945 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Yeguas?= Date: Fri, 12 Jun 2020 17:58:36 +0200 Subject: [PATCH] DO Catalog link in new dataset [ch83967] --- .../layout/connectors/dataobservatory.svg | 63 +++++++++++++++++++ app/helpers/frontend_config_helper.rb | 1 + .../create/listing/imports_options.scss | 16 ++++- assets/stylesheets/variables/colors.scss | 1 + config/app_config.yml.sample | 3 + config/routes.rb | 3 +- .../content/imports/import-options.js | 12 ++++ .../imports-selector/import-button.tpl | 1 + .../imports-selector-model.js | 9 +++ .../imports-selector/imports-selector-view.js | 47 +++++++++----- lib/assets/javascripts/locale/en.json | 3 +- .../new-dashboard/router/routes/data.js | 18 +++--- 12 files changed, 151 insertions(+), 26 deletions(-) create mode 100644 app/assets/images/layout/connectors/dataobservatory.svg diff --git a/app/assets/images/layout/connectors/dataobservatory.svg b/app/assets/images/layout/connectors/dataobservatory.svg new file mode 100644 index 0000000000..470321921a --- /dev/null +++ b/app/assets/images/layout/connectors/dataobservatory.svg @@ -0,0 +1,63 @@ + + + + dataobservatory.6b9db5ec + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/helpers/frontend_config_helper.rb b/app/helpers/frontend_config_helper.rb index 48c881935f..236c96c840 100644 --- a/app/helpers/frontend_config_helper.rb +++ b/app/helpers/frontend_config_helper.rb @@ -39,6 +39,7 @@ module FrontendConfigHelper config[:postgres_enabled] = Cartodb.get_config(:connectors, 'postgres', 'enabled') config[:sqlserver_enabled] = Cartodb.get_config(:connectors, 'sqlserver', 'enabled') config[:hive_enabled] = Cartodb.get_config(:connectors, 'hive', 'enabled') + config[:dataobservatory_enabled] = Cartodb.get_config(:connectors, 'dataobservatory', 'enabled') config[:max_asset_file_size] = Cartodb.get_config(:assets, 'max_file_size') config[:watcher_ttl] = Cartodb.get_config(:watcher, 'ttl') || 60 config[:licenses] = Carto::License.all diff --git a/assets/stylesheets/common/create/listing/imports_options.scss b/assets/stylesheets/common/create/listing/imports_options.scss index 7026005d5b..1cb55ee602 100644 --- a/assets/stylesheets/common/create/listing/imports_options.scss +++ b/assets/stylesheets/common/create/listing/imports_options.scss @@ -178,7 +178,8 @@ $import-button-width: 174px; } &:not(.is-enterprise) .ImportButton__tag--beta, - &:not(.is-enterprise) .ImportButton__tag--soon { + &:not(.is-enterprise) .ImportButton__tag--soon, + &:not(.is-enterprise) .ImportButton__tag--new { @extend .ImportButton__tag:first-of-type; } @@ -292,8 +293,20 @@ $import-button-width: 174px; } } +.is-highlighted { + background-color: $cNavyBlue; + color: $cStructure-grayBkg; + border-color: transparent; + + .ImportButton__tag { + background-color: rgba(255, 255, 255, 0.16); + border-color: transparent; + } +} + .is-beta .ImportButton__tag--beta, .is-soon .ImportButton__tag--soon, +.is-new .ImportButton__tag--new, .is-enterprise .ImportButton__tag--enterprise { display: inline-block; } @@ -327,6 +340,7 @@ $import-button-width: 174px; @include importIcon(postgresql); @include importIcon(arcgis); @include importIcon(twitter); +@include importIcon(dataobservatory); .SelectedImport { &__header { diff --git a/assets/stylesheets/variables/colors.scss b/assets/stylesheets/variables/colors.scss index 5116ad0961..30a92bcd14 100644 --- a/assets/stylesheets/variables/colors.scss +++ b/assets/stylesheets/variables/colors.scss @@ -58,3 +58,4 @@ $cNotification: #73C86B; // CARTO colors $cLocationBlue: #1785FB; +$cNavyBlue: #2e51e8; diff --git a/config/app_config.yml.sample b/config/app_config.yml.sample index c7278816b8..38438d976c 100644 --- a/config/app_config.yml.sample +++ b/config/app_config.yml.sample @@ -764,6 +764,9 @@ defaults: &defaults bigquery: enabled: false max_rows: 1000000 + dataobservatory: + enabled: true + max_rows: 1000000 enforce_non_empty_layer_css: false dataservices: enabled: diff --git a/config/routes.rb b/config/routes.rb index 631c8d3eb2..f235777f5d 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -178,7 +178,8 @@ CartoDB::Application.routes.draw do get '(/user/:user_domain)(/u/:user_domain)/dashboard/datasets/catalog' => 'visualizations#index', as: :datasets_catalog_index get '(/user/:user_domain)(/u/:user_domain)/dashboard/datasets/catalog/:id' => 'visualizations#index', as: :ddatasets_catalog_show get '(/user/:user_domain)(/u/:user_domain)/dashboard/datasets/do-catalog' => 'visualizations#index', as: :datasets_docatalog_index - get '(/user/:user_domain)(/u/:user_domain)/dashboard/datasets/do-catalog/summary' => 'visualizations#index', as: :datasets_docatalog_summary + get '(/user/:user_domain)(/u/:user_domain)/dashboard/datasets/do-catalog/:type/:id' => 'visualizations#index', as: :datasets_docatalog_dataset_summary + get '(/user/:user_domain)(/u/:user_domain)/dashboard/datasets/do-catalog/:type/:id/data' => 'visualizations#index', as: :datasets_docatalog_dataset_data get '(/user/:user_domain)(/u/:user_domain)/dashboard/datasets/:page' => 'visualizations#index', as: :datasets_page get '(/user/:user_domain)(/u/:user_domain)/dashboard/datasets/tag/:tag' => 'visualizations#index', as: :datasets_tag get '(/user/:user_domain)(/u/:user_domain)/dashboard/datasets/tag/:tag/:page' => 'visualizations#index', as: :datasets_tag_page diff --git a/lib/assets/javascripts/builder/components/modals/add-layer/content/imports/import-options.js b/lib/assets/javascripts/builder/components/modals/add-layer/content/imports/import-options.js index 8566540c73..aa3beaf4f6 100755 --- a/lib/assets/javascripts/builder/components/modals/add-layer/content/imports/import-options.js +++ b/lib/assets/javascripts/builder/components/modals/add-layer/content/imports/import-options.js @@ -236,5 +236,17 @@ module.exports = { name: 'hive', title: 'Hive', type: 'database' + }, + DataObservatory: { + view: null, + enabled: function (config, userModel) { return config.get('dataobservatory_enabled'); }, + name: 'dataobservatory', + title: 'CARTO Data Observatory', + type: 'dataobservatory', + options: { + new: true, + highlighted: true, + link: '/dashboard/datasets/do-catalog/' + } } }; diff --git a/lib/assets/javascripts/builder/components/modals/add-layer/content/imports/imports-selector/import-button.tpl b/lib/assets/javascripts/builder/components/modals/add-layer/content/imports/imports-selector/import-button.tpl index f0947549bd..72f25710db 100755 --- a/lib/assets/javascripts/builder/components/modals/add-layer/content/imports/imports-selector/import-button.tpl +++ b/lib/assets/javascripts/builder/components/modals/add-layer/content/imports/imports-selector/import-button.tpl @@ -4,6 +4,7 @@
<%- _t('components.modals.add-layer.imports.tags.enterprise') %>
<%- _t('components.modals.add-layer.imports.tags.beta') %>
<%- _t('components.modals.add-layer.imports.tags.soon') %>
+
<%- _t('components.modals.add-layer.imports.tags.new') %>
<%= cdb.core.sanitize.html(title || name) %> diff --git a/lib/assets/javascripts/builder/components/modals/add-layer/content/imports/imports-selector/imports-selector-model.js b/lib/assets/javascripts/builder/components/modals/add-layer/content/imports/imports-selector/imports-selector-model.js index 6d6e4bc99d..a0fa11e0cd 100755 --- a/lib/assets/javascripts/builder/components/modals/add-layer/content/imports/imports-selector/imports-selector-model.js +++ b/lib/assets/javascripts/builder/components/modals/add-layer/content/imports/imports-selector/imports-selector-model.js @@ -41,6 +41,11 @@ module.exports = Backbone.Model.extend({ 'description': null, 'enabled': false }, + 'dataobservatory': { + 'name': 'CARTO Data Observatory', + 'description': null, + 'enabled': false + }, loaded: false }, @@ -137,5 +142,9 @@ module.exports = Backbone.Model.extend({ _isBigQueryImportEnabled: function () { return this.get('bigquery').enabled; + }, + + _isDataObservatoryEnabled: function () { + return this.get('dataobservatory').enabled; } }); diff --git a/lib/assets/javascripts/builder/components/modals/add-layer/content/imports/imports-selector/imports-selector-view.js b/lib/assets/javascripts/builder/components/modals/add-layer/content/imports/imports-selector/imports-selector-view.js index d436c2f22c..abca5a884d 100755 --- a/lib/assets/javascripts/builder/components/modals/add-layer/content/imports/imports-selector/imports-selector-view.js +++ b/lib/assets/javascripts/builder/components/modals/add-layer/content/imports/imports-selector/imports-selector-view.js @@ -19,7 +19,8 @@ const REQUIRED_OPTS = [ const IMPORTER_TYPES = { cloud: 'cloud', database: 'database', - other: 'other' + other: 'other', + dataobservatory: 'dataobservatory' }; /** @@ -81,6 +82,9 @@ module.exports = CoreView.extend({ this.clearSubViews(); this.$el.empty(); + this.$el.append(CategoryTitleTemplate({ title: '' })); + this._generateImportButtons(IMPORTER_TYPES.dataobservatory); + this.$el.append(CategoryTitleTemplate({ title: 'Cloud Storage' })); @@ -184,6 +188,14 @@ module.exports = CoreView.extend({ if (importConfig.options && importConfig.options.soon) { importButton.$el.addClass('is-soon'); } + + if (importConfig.options && importConfig.options.new) { + importButton.$el.addClass('is-new'); + } + + if (importConfig.options && importConfig.options.highlighted) { + importButton.$el.addClass('is-highlighted'); + } }, _onImportSelected: function (selectedImport) { @@ -192,19 +204,26 @@ module.exports = CoreView.extend({ const enabled = this.model._isImportEnabled(opts); if ((enabled || enabled === undefined)) { - const ImportView = opts.importView; - importContent = new ImportView( - _.extend( - opts, - { - userModel: this._userModel, - configModel: this._configModel, - createModel: this._createModel, - privacyModel: this._privacyModel, - guessingModel: this._guessingModel - } - ) - ); + // Import wizard view + if (opts.importView) { + const ImportView = opts.importView; + importContent = new ImportView( + _.extend( + opts, + { + userModel: this._userModel, + configModel: this._configModel, + createModel: this._createModel, + privacyModel: this._privacyModel, + guessingModel: this._guessingModel + } + ) + ); + // Link to elsewhere in dashboard + } else if (opts.link) { + window.location.pathname = opts.link; + return; + } } this.trigger('selectImport', importContent, this); diff --git a/lib/assets/javascripts/locale/en.json b/lib/assets/javascripts/locale/en.json index d4e3205217..4cdca0a08a 100644 --- a/lib/assets/javascripts/locale/en.json +++ b/lib/assets/javascripts/locale/en.json @@ -1412,7 +1412,8 @@ "tags": { "enterprise": "Enterprise", "beta": "Beta", - "soon": "Soon" + "soon": "Soon", + "new": "New" }, "request": { "other": "Request connector", diff --git a/lib/assets/javascripts/new-dashboard/router/routes/data.js b/lib/assets/javascripts/new-dashboard/router/routes/data.js index 3c0f27c083..f8355db3ed 100644 --- a/lib/assets/javascripts/new-dashboard/router/routes/data.js +++ b/lib/assets/javascripts/new-dashboard/router/routes/data.js @@ -25,6 +25,15 @@ const routes = [ title: () => 'Catalog | CARTO' } }, + { + path: 'do-catalog', + name: 'do-home', + component: DOCatalog, + meta: { + title: () => 'Data Observatory Catalog | CARTO' + }, + children: [ ...doCatalogRoutes ] + }, { path: '', component: Datasets, @@ -33,15 +42,6 @@ const routes = [ title: () => 'Data | CARTO' }, beforeEnter: datasetsBeforeEnter - }, - { - path: 'do-catalog', - name: 'do-home', - component: DOCatalog, - meta: { - title: () => 'DO Catalog | CARTO' - }, - children: [ ...doCatalogRoutes ] } ] },