From 43766569ecd59d28824ca7fb792ad0e53bd7e0c3 Mon Sep 17 00:00:00 2001 From: thomas duval Date: Tue, 8 Jan 2019 14:18:23 +1000 Subject: [PATCH 01/28] front end modification to metabase --- app.json | 2 +- .../components/DatabaseSchedulingForm.jsx | 8 +- .../admin/datamodel/containers/FieldApp.jsx | 4 +- .../datamodel/containers/TableSettingsApp.jsx | 2 +- .../admin/people/components/GroupDetail.jsx | 6 +- .../metabase/admin/permissions/selectors.js | 4 +- .../SettingsAuthenticationOptions.jsx | 4 +- .../settings/components/SettingsSetupList.jsx | 2 +- .../components/SettingsSingleSignOnForm.jsx | 4 +- .../components/widgets/EmbeddingLegalese.jsx | 2 +- .../widgets/LdapGroupMappingsWidget.jsx | 2 +- .../src/metabase/admin/settings/selectors.js | 4 +- .../admin/tasks/containers/TasksApp.jsx | 2 +- .../metabase/auth/components/AuthScene.jsx | 516 +----------------- .../auth/components/GoogleNoAccount.jsx | 4 +- .../auth/containers/ForgotPasswordApp.jsx | 2 +- .../src/metabase/auth/containers/LoginApp.jsx | 12 +- .../src/metabase/components/BrowseApp.jsx | 13 - .../components/DatabaseDetailsForm.jsx | 6 +- frontend/src/metabase/components/LogoIcon.jsx | 8 +- .../metabase/components/SchedulePicker.jsx | 2 +- .../src/metabase/containers/Overworld.jsx | 44 -- .../src/metabase/css/components/buttons.css | 2 +- frontend/src/metabase/css/core/base.css | 2 +- frontend/src/metabase/css/core/colors.css | 4 +- frontend/src/metabase/css/core/overflow.css | 2 +- frontend/src/metabase/css/login.css | 4 + frontend/src/metabase/css/pulse.css | 2 +- frontend/src/metabase/css/query_builder.css | 1 - frontend/src/metabase/hoc/Title.jsx | 4 +- .../src/metabase/home/components/Activity.jsx | 4 +- .../metabase/home/containers/SearchApp.jsx | 2 +- .../src/metabase/lib/ace/theme-metabase.js | 2 +- frontend/src/metabase/lib/analytics.js | 40 -- frontend/src/metabase/lib/colors.js | 4 +- frontend/src/metabase/lib/core.js | 2 +- .../metabase/nav/components/ProfileLink.jsx | 46 +- .../src/metabase/nav/containers/Navbar.jsx | 25 +- .../metabase/public/components/LogoBadge.jsx | 2 +- .../public/components/widgets/SharingPane.jsx | 2 +- .../pulse/components/PulseCardPreview.jsx | 4 +- .../query_builder/components/QueryHeader.jsx | 52 -- .../questions/components/CollectionBadge.jsx | 4 +- .../databases/NoDatabasesEmptyState.jsx | 2 +- .../guide/GettingStartedGuideEditForm.jsx | 2 +- frontend/src/metabase/routes.jsx | 2 +- .../setup/containers/PostSetupApp.jsx | 2 +- .../components/LineAreaBarChart.css | 2 +- .../components/TableInteractive.jsx | 2 +- resources/frontend_client/favicon.ico | Bin 1473 -> 1150 bytes resources/frontend_client/index_template.html | 32 +- resources/frontend_client/init.html | 9 +- src/metabase/api/session.clj | 7 - src/metabase/config.clj | 4 +- src/metabase/db.clj | 12 +- src/metabase/middleware.clj | 1 + src/metabase/models/common.clj | 2 +- src/metabase/public_settings.clj | 2 +- src/metabase/routes.clj | 6 +- src/metabase/util/embed.clj | 2 +- src/metabase/util/stats.clj | 2 +- 61 files changed, 129 insertions(+), 825 deletions(-) diff --git a/app.json b/app.json index c9d6bcaf1133..df9977cdf841 100644 --- a/app.json +++ b/app.json @@ -1,5 +1,5 @@ { - "name": "Metabase", + "name": "Report Builder", "description": "Metabase report server", "keywords": [ "business intelligence", diff --git a/frontend/src/metabase/admin/databases/components/DatabaseSchedulingForm.jsx b/frontend/src/metabase/admin/databases/components/DatabaseSchedulingForm.jsx index 48e973828284..12f1bc7581d8 100644 --- a/frontend/src/metabase/admin/databases/components/DatabaseSchedulingForm.jsx +++ b/frontend/src/metabase/admin/databases/components/DatabaseSchedulingForm.jsx @@ -119,7 +119,7 @@ export default class DatabaseSchedulingForm extends Component {

- {t`To do some of its magic, Metabase needs to scan your database. We will also rescan it periodically to keep the metadata up-to-date. You can control when the periodic rescans happen below.`} + {t`To do some of its magic, Report Builder needs to scan your database. We will also rescan it periodically to keep the metadata up-to-date. You can control when the periodic rescans happen below.`}

@@ -150,13 +150,13 @@ export default class DatabaseSchedulingForm extends Component {

{t`Scanning for Filter Values`}

-

{t`Metabase can scan the values present in each +

{t`Report Builder can scan the values present in each field in this database to enable checkbox filters in dashboards and questions. This can be a somewhat resource-intensive process, particularly if you have a very large database.`}

{t`When should Metabase automatically scan and cache field values?`}

+ >{t`When should Report Builder automatically scan and cache field values?`}
  1. this.setIsFullSyncIsOnDemand(false, true)} >

    - {t`When a user adds a new filter to a dashboard or a SQL question, Metabase will + {t`When a user adds a new filter to a dashboard or a SQL question, Report Builder will scan the field(s) mapped to that filter in order to show the list of selectable values.`}

    diff --git a/frontend/src/metabase/admin/datamodel/containers/FieldApp.jsx b/frontend/src/metabase/admin/datamodel/containers/FieldApp.jsx index bba9b6dbcc91..4d327af407d0 100644 --- a/frontend/src/metabase/admin/datamodel/containers/FieldApp.jsx +++ b/frontend/src/metabase/admin/datamodel/containers/FieldApp.jsx @@ -304,7 +304,7 @@ const FieldGeneralPane = ({
    rescanFieldValues(field.id)} diff --git a/frontend/src/metabase/admin/datamodel/containers/TableSettingsApp.jsx b/frontend/src/metabase/admin/datamodel/containers/TableSettingsApp.jsx index 1f68b218404d..b4cf888117b9 100644 --- a/frontend/src/metabase/admin/datamodel/containers/TableSettingsApp.jsx +++ b/frontend/src/metabase/admin/datamodel/containers/TableSettingsApp.jsx @@ -100,7 +100,7 @@ class UpdateFieldValues extends Component {
    {t`All users belong to the ${getGroupNameLocalized( group, )} group and can't be removed from it. Setting permissions for this group is a great way to - make sure you know what new Metabase users will be able to see.`} + make sure you know what new Report Builder users will be able to see.`}

    ) : isAdminGroup(group) ? (

    - {t`This is a special group whose members can see everything in the Metabase instance, and who can access and make changes to the + {t`This is a special group whose members can see everything in the Report Builder instance, and who can access and make changes to the settings in the Admin Panel, including changing permissions! So, add people to this group with care.`}

    - {t`To make sure you don't get locked out of Metabase, there always has to be at least one user in this group.`} + {t`To make sure you don't get locked out of Report Builder, there always has to be at least one user in this group.`}

    ) : null; diff --git a/frontend/src/metabase/admin/permissions/selectors.js b/frontend/src/metabase/admin/permissions/selectors.js index 5bbd0dcab35c..8768c5deed2d 100644 --- a/frontend/src/metabase/admin/permissions/selectors.js +++ b/frontend/src/metabase/admin/permissions/selectors.js @@ -56,9 +56,9 @@ const SPECIAL_GROUP_FILTERS = [ function getTooltipForGroup(group) { if (isAdminGroup(group)) { - return t`Administrators always have the highest level of access to everything in Metabase.`; + return t`Administrators always have the highest level of access to everything in Report Builder.`; } else if (isDefaultGroup(group)) { - return t`Every Metabase user belongs to the All Users group. If you want to limit or restrict a group's access to something, make sure the All Users group has an equal or lower level of access.`; + return t`Every Report Builder user belongs to the All Users group. If you want to limit or restrict a group's access to something, make sure the All Users group has an equal or lower level of access.`; } else if (isMetaBotGroup(group)) { return t`MetaBot is Metabase's Slack bot. You can choose what it has access to here.`; } diff --git a/frontend/src/metabase/admin/settings/components/SettingsAuthenticationOptions.jsx b/frontend/src/metabase/admin/settings/components/SettingsAuthenticationOptions.jsx index b26eed85ac80..990695d2f06d 100644 --- a/frontend/src/metabase/admin/settings/components/SettingsAuthenticationOptions.jsx +++ b/frontend/src/metabase/admin/settings/components/SettingsAuthenticationOptions.jsx @@ -10,7 +10,7 @@ class SettingsAuthenticationOptions extends Component {

    {t`Sign in with Google`}

    {t`Allows users with existing Metabase accounts to login with a Google account that matches their email address in addition to their Metabase username and password.`}

    + >{t`Allows users with existing Report Builder accounts to login with a Google account that matches their email address in addition to their Report Builder username and password.`}

    {t`LDAP`}

    {t`Allows users within your LDAP directory to log in to Metabase with their LDAP credentials, and allows automatic mapping of LDAP groups to Metabase groups.`}

    + >{t`Allows users within your LDAP directory to log in to Report Builder with their LDAP credentials, and allows automatic mapping of LDAP groups to Report Builder groups.`}

    {t`Getting set up`}

    -

    {t`A few things you can do to get the most out of Metabase.`}

    +

    {t`A few things you can do to get the most out of Report Builder.`}

    {t`Sign in with Google`}

    - {t`Allows users with existing Metabase accounts to login with a Google account that matches their email address in addition to their Metabase username and password.`} + {t`Allows users with existing Report Builder accounts to login with a Google account that matches their email address in addition to their Report Builder username and password.`}

    - {jt`To allow users to sign in with Google you'll need to give Metabase a Google Developers console application client ID. It only takes a few steps and instructions on how to create a key can be found ${( + {jt`To allow users to sign in with Google you'll need to give Report Builder a Google Developers console application client ID. It only takes a few steps and instructions on how to create a key can be found ${( ( .

    - {t`In plain English, when you embed charts or dashboards from Metabase in your own application, that application isn't subject to the Affero General Public License that covers the rest of Metabase, provided you keep the Metabase logo and the "Powered by Metabase" visible on those embeds. You should, however, read the license text linked above as that is the actual license that you will be agreeing to by enabling this feature.`} + {t`In plain English, when you embed charts or dashboards from Report Builder in your own application, that application isn't subject to the Affero General Public License that covers the rest of Metabase, provided you keep the Metabase logo and the "Powered by Metabase" visible on those embeds. You should, however, read the license text linked above as that is the actual license that you will be agreeing to by enabling this feature.`}

    - {t`Mappings allow Metabase to automatically add and remove users from groups based on the membership information provided by the + {t`Mappings allow Report Builder to automatically add and remove users from groups based on the membership information provided by the directory server. Membership to the Admin group can be granted through mappings, but will not be automatically removed as a failsafe measure.`}

    diff --git a/frontend/src/metabase/admin/settings/selectors.js b/frontend/src/metabase/admin/settings/selectors.js index a76381d4929c..2026f2ba8df9 100644 --- a/frontend/src/metabase/admin/settings/selectors.js +++ b/frontend/src/metabase/admin/settings/selectors.js @@ -303,7 +303,7 @@ const SECTIONS = [ { key: "map-tile-server-url", display_name: t`Map tile server URL`, - note: t`Metabase uses OpenStreetMaps by default.`, + note: t`Report Builder uses OpenStreetMaps by default.`, type: "string", }, { @@ -378,7 +378,7 @@ const SECTIONS = [ }, { key: "enable-embedding", - display_name: t`Enable Embedding Metabase in other Applications`, + display_name: t`Enable Embedding Report Builder in other Applications`, type: "boolean", getHidden: settings => !settings["enable-embedding"], }, diff --git a/frontend/src/metabase/admin/tasks/containers/TasksApp.jsx b/frontend/src/metabase/admin/tasks/containers/TasksApp.jsx index c554ca324a7b..c0b6de6c3884 100644 --- a/frontend/src/metabase/admin/tasks/containers/TasksApp.jsx +++ b/frontend/src/metabase/admin/tasks/containers/TasksApp.jsx @@ -35,7 +35,7 @@ class TasksApp extends React.Component { -
    - - - - - - - -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - - - - - - - - - - - - - - - - - - -
    -
    - {/* 09-12-2016 */} -
    +
    ); } diff --git a/frontend/src/metabase/auth/components/GoogleNoAccount.jsx b/frontend/src/metabase/auth/components/GoogleNoAccount.jsx index 7e9219cbe64c..942130ee37cb 100644 --- a/frontend/src/metabase/auth/components/GoogleNoAccount.jsx +++ b/frontend/src/metabase/auth/components/GoogleNoAccount.jsx @@ -12,9 +12,9 @@ const GoogleNoAccount = () => (
    -

    {t`No Metabase account exists for this Google account.`}

    +

    {t`No Report Builder account exists for this Google account.`}

    - {t`You'll need an administrator to create a Metabase account before you can use Google to log in.`} + {t`You'll need an administrator to create a Report Builder account before you can use Google to log in.`}

    diff --git a/frontend/src/metabase/auth/containers/ForgotPasswordApp.jsx b/frontend/src/metabase/auth/containers/ForgotPasswordApp.jsx index ab51f7efd8df..58d7116fff88 100644 --- a/frontend/src/metabase/auth/containers/ForgotPasswordApp.jsx +++ b/frontend/src/metabase/auth/containers/ForgotPasswordApp.jsx @@ -81,7 +81,7 @@ export default class ForgotPasswordApp extends Component { this.setState({ email: e.target.value })} defaultValue={this.state.email} diff --git a/frontend/src/metabase/auth/containers/LoginApp.jsx b/frontend/src/metabase/auth/containers/LoginApp.jsx index cfbe749f8c07..3d3a4a1b178e 100644 --- a/frontend/src/metabase/auth/containers/LoginApp.jsx +++ b/frontend/src/metabase/auth/containers/LoginApp.jsx @@ -36,7 +36,9 @@ export default class LoginApp extends Component { credentials: {}, valid: false, rememberMe: true, + hidden: true }; + this.displayLogin = this.displayLogin.bind(this); } validateForm() { @@ -100,6 +102,10 @@ export default class LoginApp extends Component { }); } + displayLogin(e) { + this.setState({hidden : false}); + } + formSubmitted(e) { e.preventDefault(); @@ -115,7 +121,8 @@ export default class LoginApp extends Component { return (
    -
    +
    Please sign in to Report Builder from simPRO
    +
    @@ -125,7 +132,7 @@ export default class LoginApp extends Component { name="form" onSubmit={e => this.formSubmitted(e)} > -

    {t`Sign in to Metabase`}

    +

    {t`Administrator login`}

    {Settings.ssoEnabled() && (
    @@ -233,6 +240,7 @@ export default class LoginApp extends Component {
    +
    Admin Login
    ); } diff --git a/frontend/src/metabase/components/BrowseApp.jsx b/frontend/src/metabase/components/BrowseApp.jsx index ec3be9c40ac5..34eb74f38637 100644 --- a/frontend/src/metabase/components/BrowseApp.jsx +++ b/frontend/src/metabase/components/BrowseApp.jsx @@ -205,19 +205,6 @@ export class TableBrowser extends React.Component { )} - - - - - diff --git a/frontend/src/metabase/components/DatabaseDetailsForm.jsx b/frontend/src/metabase/components/DatabaseDetailsForm.jsx index 2ca3b246daf6..2fcfb7973b84 100644 --- a/frontend/src/metabase/components/DatabaseDetailsForm.jsx +++ b/frontend/src/metabase/components/DatabaseDetailsForm.jsx @@ -268,9 +268,9 @@ export default class DatabaseDetailsForm extends Component {

    {t`This is a large database, so let me choose when Metabase syncs and scans`}

    + >{t`This is a large database, so let me choose when Report Builder syncs and scans`}
    - {t`By default, Metabase does a lightweight hourly sync and an intensive daily scan of field values. + {t`By default, Report Builder does a lightweight hourly sync and an intensive daily scan of field values. If you have a large database, we recommend turning this on and reviewing when and how often the field value scans happen.`}
    @@ -345,7 +345,7 @@ export default class DatabaseDetailsForm extends Component { enableAPILink = (
    - {t`To use Metabase with this data you must enable API access in the Google Developers Console.`} + {t`To use Report Builder with this data you must enable API access in the Google Developers Console.`}
    {jt`${( diff --git a/frontend/src/metabase/components/LogoIcon.jsx b/frontend/src/metabase/components/LogoIcon.jsx index c551bcb248a0..b957ff443218 100644 --- a/frontend/src/metabase/components/LogoIcon.jsx +++ b/frontend/src/metabase/components/LogoIcon.jsx @@ -4,7 +4,7 @@ import cx from "classnames"; export default class LogoIcon extends Component { static defaultProps = { - size: 32, + size: 48, }; static propTypes = { @@ -19,16 +19,14 @@ export default class LogoIcon extends Component { return ( - ); } diff --git a/frontend/src/metabase/components/SchedulePicker.jsx b/frontend/src/metabase/components/SchedulePicker.jsx index 80843cbaa72d..2f2ab1eba897 100644 --- a/frontend/src/metabase/components/SchedulePicker.jsx +++ b/frontend/src/metabase/components/SchedulePicker.jsx @@ -207,7 +207,7 @@ export default class SchedulePicker extends Component { {textBeforeSendTime && (
    {textBeforeSendTime} {hour === 0 ? 12 : hour}:00{" "} - {amPm ? "PM" : "AM"} {timezone}, {t`your Metabase timezone`}. + {amPm ? "PM" : "AM"} {timezone}, {t`your Report Builder timezone`}.
    )}
    diff --git a/frontend/src/metabase/containers/Overworld.jsx b/frontend/src/metabase/containers/Overworld.jsx index f39bec7189da..07d8a094a840 100644 --- a/frontend/src/metabase/containers/Overworld.jsx +++ b/frontend/src/metabase/containers/Overworld.jsx @@ -90,40 +90,6 @@ class Overworld extends React.Component { d => d.model === "dashboard" && d.collection_position != null, ); - if (xraysEnabled && !pinnedDashboards.length > 0) { - return ( - - {({ candidates, sampleCandidates, isSample }) => { - // if there are no items to show then just hide the section - if (!candidates && !sampleCandidates) { - return null; - } - return ( - - {user.is_superuser && } - - - - {t`Try these x-rays based on your data.`} - - - - - - - - ); - }} - - ); - } - if (pinnedDashboards.length === 0) { return null; } @@ -248,16 +214,6 @@ class Overworld extends React.Component {

    {database.name}

    - - - - - diff --git a/frontend/src/metabase/css/components/buttons.css b/frontend/src/metabase/css/components/buttons.css index 68b23a44e333..23013a760583 100644 --- a/frontend/src/metabase/css/components/buttons.css +++ b/frontend/src/metabase/css/components/buttons.css @@ -13,7 +13,7 @@ cursor: pointer; text-decoration: none; font-weight: bold; - font-family: "Lato", sans-serif; + font-family: "Roboto", sans-serif; border-radius: var(--default-button-border-radius); } .Button:hover { diff --git a/frontend/src/metabase/css/core/base.css b/frontend/src/metabase/css/core/base.css index 5174d4149c1f..03c17a295a3f 100644 --- a/frontend/src/metabase/css/core/base.css +++ b/frontend/src/metabase/css/core/base.css @@ -1,5 +1,5 @@ :root { - --default-font-family: "Lato"; + --default-font-family: "Roboto"; --default-font-size: 0.875em; --default-font-color: var(--color-text-dark); --default-bg-color: var(--color-bg-light); diff --git a/frontend/src/metabase/css/core/colors.css b/frontend/src/metabase/css/core/colors.css index 1654805937d1..9786fe778b90 100644 --- a/frontend/src/metabase/css/core/colors.css +++ b/frontend/src/metabase/css/core/colors.css @@ -2,7 +2,7 @@ * NOTE: KEEP SYNCRONIZED WITH COLORS.JS */ :root { - --color-brand: #509ee3; + --color-brand: #004b8d; --color-accent1: #9cc177; --color-accent2: #a989c5; --color-accent3: #ef8c8c; @@ -23,7 +23,7 @@ --color-bg-black: #2e353b; --color-bg-dark: #93a1ab; --color-bg-medium: #edf2f5; - --color-bg-light: #f9fbfc; + --color-bg-light: #fdfdfd; --color-bg-white: #ffffff; --color-shadow: rgba(0, 0, 0, 0.08); --color-border: #d7dbde; diff --git a/frontend/src/metabase/css/core/overflow.css b/frontend/src/metabase/css/core/overflow.css index 727a2161873a..8e650e611f58 100644 --- a/frontend/src/metabase/css/core/overflow.css +++ b/frontend/src/metabase/css/core/overflow.css @@ -3,7 +3,7 @@ } .overflow-hidden { - overflow: hidden; + overflow: hidden !important; } .overflow-x-hidden { diff --git a/frontend/src/metabase/css/login.css b/frontend/src/metabase/css/login.css index 540edf16482f..a88834280a21 100644 --- a/frontend/src/metabase/css/login.css +++ b/frontend/src/metabase/css/login.css @@ -4,6 +4,10 @@ margin: 0 auto; } +.Login-hide { + visibility: hidden !important; +} + /* the login content should always sit on top of the illustration */ .Login-content { position: relative; diff --git a/frontend/src/metabase/css/pulse.css b/frontend/src/metabase/css/pulse.css index d258aebab509..cae19d03faf9 100644 --- a/frontend/src/metabase/css/pulse.css +++ b/frontend/src/metabase/css/pulse.css @@ -38,7 +38,7 @@ } .PulseListItem button { - font-family: "Lato", Helvetica, sans-serif; + font-family: "Roboto", Helvetica, sans-serif; } .PulseEditButton { diff --git a/frontend/src/metabase/css/query_builder.css b/frontend/src/metabase/css/query_builder.css index 0d3a97a1fa9d..c86c7afe6f56 100644 --- a/frontend/src/metabase/css/query_builder.css +++ b/frontend/src/metabase/css/query_builder.css @@ -285,7 +285,6 @@ } .QueryError-adminEmail:before { - content: "Admin Email"; font-size: 10px; text-align: center; text-transform: uppercase; diff --git a/frontend/src/metabase/hoc/Title.jsx b/frontend/src/metabase/hoc/Title.jsx index 2364182a0efb..7b904de28181 100644 --- a/frontend/src/metabase/hoc/Title.jsx +++ b/frontend/src/metabase/hoc/Title.jsx @@ -6,7 +6,7 @@ const componentStack = []; let SEPARATOR = " ยท "; let HIERARCHICAL = true; -let BASE_NAME = null; +let BASE_NAME = "Report Builder"; export const setSeparator = separator => (SEPARATOR = separator); export const setHierarchical = hierarchical => (HIERARCHICAL = hierarchical); @@ -25,7 +25,7 @@ const updateDocumentTitle = _.debounce(() => { let title = componentStack[i]._documentTitle; if (title) { if (BASE_NAME) { - title += SEPARATOR + BASE_NAME; + title += SEPARATOR + "Report Builder"; } if (document.title !== title) { document.title = title; diff --git a/frontend/src/metabase/home/components/Activity.jsx b/frontend/src/metabase/home/components/Activity.jsx index b86041aee782..85ff6046e784 100644 --- a/frontend/src/metabase/home/components/Activity.jsx +++ b/frontend/src/metabase/home/components/Activity.jsx @@ -81,7 +81,7 @@ export default class Activity extends Component { } else if (user) { return user.first_name; } else { - return "Metabase"; + return "Report Builder"; } } @@ -249,7 +249,7 @@ export default class Activity extends Component { break; case "install": description.userName = t`Hello World!`; - description.summary = t`Metabase is up and running.`; + description.summary = t`Report Builder is up and running.`; break; case "metric-create": if (item.model_exists) { diff --git a/frontend/src/metabase/home/containers/SearchApp.jsx b/frontend/src/metabase/home/containers/SearchApp.jsx index b32a2f33ec96..eb410ed2f4f6 100644 --- a/frontend/src/metabase/home/containers/SearchApp.jsx +++ b/frontend/src/metabase/home/containers/SearchApp.jsx @@ -48,7 +48,7 @@ export default class SearchApp extends React.Component { } diff --git a/frontend/src/metabase/lib/ace/theme-metabase.js b/frontend/src/metabase/lib/ace/theme-metabase.js index d54a51d97116..febeaecbed6a 100644 --- a/frontend/src/metabase/lib/ace/theme-metabase.js +++ b/frontend/src/metabase/lib/ace/theme-metabase.js @@ -11,7 +11,7 @@ ace.define( '\ .ace-metabase .ace_gutter {\ background: rgb(220,236,249);\ -color: #509EE3;\ +color: #004b8d;\ font-weight: bold;\ }\ .ace-metabase {\ diff --git a/frontend/src/metabase/lib/analytics.js b/frontend/src/metabase/lib/analytics.js index b22e245fd4bc..99762235ed25 100644 --- a/frontend/src/metabase/lib/analytics.js +++ b/frontend/src/metabase/lib/analytics.js @@ -9,17 +9,6 @@ import { DEBUG } from "metabase/lib/debug"; const MetabaseAnalytics = { // track a pageview (a.k.a. route change) trackPageView: function(url: string) { - if (url) { - // scrub query builder urls to remove serialized json queries from path - url = url.lastIndexOf("/q/", 0) === 0 ? "/q/" : url; - - const { tag } = MetabaseSettings.get("version"); - - // $FlowFixMe - ga("set", "dimension1", tag); - ga("set", "page", url); - ga("send", "pageview", url); - } }, // track an event @@ -29,41 +18,12 @@ const MetabaseAnalytics = { label?: ?(string | number | boolean), value?: ?number, ) { - const { tag } = MetabaseSettings.get("version"); - // category & action are required, rest are optional - if (category && action) { - // $FlowFixMe - ga("set", "dimension1", tag); - ga("send", "event", category, action, label, value); - } - if (DEBUG) { - console.log("trackEvent", { category, action, label, value }); - } }, }; export default MetabaseAnalytics; export function registerAnalyticsClickListener() { - // $FlowFixMe - document.body.addEventListener( - "click", - function(e) { - let node = e.target; - // check the target and all parent elements - while (node) { - if (node.dataset && node.dataset.metabaseEvent) { - // we expect our event to be a semicolon delimited string - const parts = node.dataset.metabaseEvent - .split(";") - .map(p => p.trim()); - MetabaseAnalytics.trackEvent(...parts); - } - node = node.parentNode; - } - }, - true, - ); } diff --git a/frontend/src/metabase/lib/colors.js b/frontend/src/metabase/lib/colors.js index aa359fa06844..1f6b24c071d8 100644 --- a/frontend/src/metabase/lib/colors.js +++ b/frontend/src/metabase/lib/colors.js @@ -14,7 +14,7 @@ export type ColorFamily = { [name: ColorName]: ColorString }; // NOTE: KEEP SYNCRONIZED WITH COLORS.CSS /* eslint-disable no-color-literals */ const colors = { - brand: "#509EE3", + brand: "#004b8d", accent1: "#9CC177", accent2: "#A989C5", accent3: "#EF8C8C", @@ -35,7 +35,7 @@ const colors = { "bg-black": "#2E353B", "bg-dark": "#93A1AB", "bg-medium": "#EDF2F5", - "bg-light": "#F9FBFC", + "bg-light": "#FDFDFD", "bg-white": "#FFFFFF", shadow: "rgba(0,0,0,0.08)", border: "#D7DBDE", diff --git a/frontend/src/metabase/lib/core.js b/frontend/src/metabase/lib/core.js index 945607ea6c25..7e46c0ad9819 100644 --- a/frontend/src/metabase/lib/core.js +++ b/frontend/src/metabase/lib/core.js @@ -257,6 +257,6 @@ export const field_visibility_types = [ { id: "sensitive", name: t`Do Not Include`, - description: t`Metabase will never retrieve this field. Use this for sensitive or irrelevant information.`, + description: t`Report Builder will never retrieve this field. Use this for sensitive or irrelevant information.`, }, ]; diff --git a/frontend/src/metabase/nav/components/ProfileLink.jsx b/frontend/src/metabase/nav/components/ProfileLink.jsx index 40e29bff3bea..9170d52c282e 100644 --- a/frontend/src/metabase/nav/components/ProfileLink.jsx +++ b/frontend/src/metabase/nav/components/ProfileLink.jsx @@ -39,12 +39,14 @@ export default class ProfileLink extends Component { const admin = this.props.user.is_superuser; const adminContext = this.props.context === "admin"; return [ - { - title: t`Account settings`, - icon: null, - link: Urls.accountSettings(), - event: `Navbar;Profile Dropdown;Edit Profile`, - }, + ...(admin && [ + { + title: t`Account settings`, + icon: null, + link: Urls.accountSettings(), + event: `Navbar;Profile Dropdown;Edit Profile`, + }, + ]), ...(admin && [ { title: adminContext ? t`Exit admin` : t`Admin`, @@ -72,18 +74,14 @@ export default class ProfileLink extends Component { externalLink: true, event: `Navbar;Profile Dropdown;About ${tag}`, }, - { - title: t`About Metabase`, - icon: null, - action: () => this.openModal("about"), - event: `Navbar;Profile Dropdown;About ${tag}`, - }, - { - title: t`Sign out`, - icon: null, - link: "auth/logout", - event: `Navbar;Profile Dropdown;Logout`, - }, + ...(admin && [ + { + title: t`Sign out`, + icon: null, + link: "auth/logout", + event: `Navbar;Profile Dropdown;Logout`, + }, + ]), ]; }; @@ -104,7 +102,7 @@ export default class ProfileLink extends Component {

    - {t`Thanks for using`} Metabase! + {t`Thanks for using`} Report Builder!

    @@ -124,16 +122,6 @@ export default class ProfileLink extends Component { )}

    -
    - - Metabase{" "} - {t`is a Trademark of`} Metabase, Inc - - {t`and is built with care in San Francisco, CA`} -
    ) : modalOpen === "logs" ? ( diff --git a/frontend/src/metabase/nav/containers/Navbar.jsx b/frontend/src/metabase/nav/containers/Navbar.jsx index fa618569dabe..68982c809026 100644 --- a/frontend/src/metabase/nav/containers/Navbar.jsx +++ b/frontend/src/metabase/nav/containers/Navbar.jsx @@ -68,6 +68,7 @@ const SearchWrapper = Flex.extend` align-items: center; color: white; transition: background 300ms ease-in; + margin-left: 20px; &:hover { background-color: ${ActiveSearchColor}; } @@ -192,7 +193,7 @@ export default class Navbar extends Component {
    - {t`Metabase Admin`} + {t`Report Builder Admin`}
      @@ -312,30 +313,8 @@ export default class Navbar extends Component { action: () => this.setModal(MODAL_NEW_DASHBOARD), event: `NavBar;New Dashboard Click;`, }, - { - title: t`New pulse`, - icon: `pulse`, - link: Urls.newPulse(), - event: `NavBar;New Pulse Click;`, - }, ]} /> - {hasDataAccess && ( - - - - - - - - )} - - - - - - - {this.renderModal()} diff --git a/frontend/src/metabase/public/components/LogoBadge.jsx b/frontend/src/metabase/public/components/LogoBadge.jsx index 83eaa83e9455..f8f3a16e2347 100644 --- a/frontend/src/metabase/public/components/LogoBadge.jsx +++ b/frontend/src/metabase/public/components/LogoBadge.jsx @@ -19,7 +19,7 @@ const LogoBadge = ({ dark }: Props) => ( Powered by{" "} - Metabase + Report Builder diff --git a/frontend/src/metabase/public/components/widgets/SharingPane.jsx b/frontend/src/metabase/public/components/widgets/SharingPane.jsx index a588b9a312af..0bfa5b9c1262 100644 --- a/frontend/src/metabase/public/components/widgets/SharingPane.jsx +++ b/frontend/src/metabase/public/components/widgets/SharingPane.jsx @@ -115,7 +115,7 @@ export default class SharingPane extends Component {

    {t`Public link`}

    -
    {t`Share this ${resourceType} with people who don't have a Metabase account using the URL below:`}
    +
    {t`Share this ${resourceType} with people who don't have a Report Builder account using the URL below:`}
    {extensions && extensions.length > 0 && ( diff --git a/frontend/src/metabase/pulse/components/PulseCardPreview.jsx b/frontend/src/metabase/pulse/components/PulseCardPreview.jsx index 2b2c34987626..d1a5b28ac821 100644 --- a/frontend/src/metabase/pulse/components/PulseCardPreview.jsx +++ b/frontend/src/metabase/pulse/components/PulseCardPreview.jsx @@ -151,7 +151,7 @@ const RenderedPulseCardPreview = ({ href, children }) => ( ( - - - - , - ]); - - if ( - !isEditing && - card && - question.alertType(visualizationSettings) !== null - ) { - const createAlertItem = { - title: t`Get alerts about this`, - icon: "alert", - action: () => this.setState({ modal: "create-alert" }), - }; - const createAlertAfterSavingQuestionItem = { - title: t`Get alerts about this`, - icon: "alert", - action: () => this.setState({ modal: "save-question-before-alert" }), - }; - - const updateAlertItem = { - title: t`Alerts are on`, - icon: "alert", - content: (toggleMenu, setMenuFreeze) => ( - - ), - }; - - buttonSections.push([ -
    - 0 - ? updateAlertItem - : isNew ? createAlertAfterSavingQuestionItem : createAlertItem, - ]} - /> -
    , - ]); - } return ( -
    +

    {object.name} -

    +
    ); diff --git a/frontend/src/metabase/reference/databases/NoDatabasesEmptyState.jsx b/frontend/src/metabase/reference/databases/NoDatabasesEmptyState.jsx index 7579339a7ccb..2205603b0798 100644 --- a/frontend/src/metabase/reference/databases/NoDatabasesEmptyState.jsx +++ b/frontend/src/metabase/reference/databases/NoDatabasesEmptyState.jsx @@ -5,7 +5,7 @@ import AdminAwareEmptyState from "metabase/components/AdminAwareEmptyState"; const NoDatabasesEmptyState = user => (

    - {t`Help new Metabase users find their way around.`} + {t`Help new Report Builder users find their way around.`}

    {t`The Getting Started guide highlights the dashboard, metrics, segments, and tables that matter most, and informs your users of important things they should know before digging into the data.`} diff --git a/frontend/src/metabase/routes.jsx b/frontend/src/metabase/routes.jsx index 943d0c0db178..529a8a05d39b 100644 --- a/frontend/src/metabase/routes.jsx +++ b/frontend/src/metabase/routes.jsx @@ -151,7 +151,7 @@ const IsNotAuthenticated = MetabaseIsSetup( ); export const getRoutes = store => ( - + {/* SETUP */} )} diff --git a/frontend/src/metabase/visualizations/components/LineAreaBarChart.css b/frontend/src/metabase/visualizations/components/LineAreaBarChart.css index 565ac9af0c68..3cb4a9f5b20f 100644 --- a/frontend/src/metabase/visualizations/components/LineAreaBarChart.css +++ b/frontend/src/metabase/visualizations/components/LineAreaBarChart.css @@ -17,7 +17,7 @@ .LineAreaBarChart .dc-chart .axis text { font-size: 12px; - font-family: "Lato", sans-serif; + font-family: "Roboto", sans-serif; font-weight: 900; } diff --git a/frontend/src/metabase/visualizations/components/TableInteractive.jsx b/frontend/src/metabase/visualizations/components/TableInteractive.jsx index 4b0aef0f2afd..053bc651e6e5 100644 --- a/frontend/src/metabase/visualizations/components/TableInteractive.jsx +++ b/frontend/src/metabase/visualizations/components/TableInteractive.jsx @@ -648,7 +648,7 @@ export default class TableInteractive extends Component { position: "absolute", overflow: "hidden", }} - className="TableInteractive-header scroll-hide-all" + className="TableInteractive-header scroll-hide-all overflow-hidden" width={width || 0} height={HEADER_HEIGHT} rowCount={1} diff --git a/resources/frontend_client/favicon.ico b/resources/frontend_client/favicon.ico index 4c9bf6b68804ccf0919e7c007bfc71304068ed7c..c861779f7e1154f6fd25182a35c9190d4157087d 100644 GIT binary patch literal 1150 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 diff --git a/resources/frontend_client/index_template.html b/resources/frontend_client/index_template.html index a84923167818..9ebd190dbf69 100644 --- a/resources/frontend_client/index_template.html +++ b/resources/frontend_client/index_template.html @@ -9,10 +9,24 @@ {{{embed_code}}} - Metabase + Report Builder + + + - - diff --git a/resources/frontend_client/init.html b/resources/frontend_client/init.html index 5526fb2fd2af..019ac1bc4fa2 100644 --- a/resources/frontend_client/init.html +++ b/resources/frontend_client/init.html @@ -2,7 +2,7 @@ - Metabase + Report Builder