From f1aad2545e87503f263ed2f54186fce0e6c034fe Mon Sep 17 00:00:00 2001 From: Levko Kravets Date: Thu, 15 Feb 2018 21:48:15 +0200 Subject: [PATCH] redesign of all pages that are rendered by backend code --- client/app/assets/images/google_login.png | Bin 18254 -> 0 bytes client/app/assets/images/google_logo.svg | 1 + client/app/assets/less/server.less | 90 +++++++++++++++ redash/templates/error.html | 16 ++- redash/templates/forgot.html | 34 +++--- redash/templates/invite.html | 59 +++++----- redash/templates/layouts/signed_out.html | 45 +++----- redash/templates/login.html | 131 +++++++++------------- redash/templates/reset.html | 11 +- redash/templates/setup.html | 84 +++++++------- webpack.config.js | 12 +- 11 files changed, 282 insertions(+), 201 deletions(-) delete mode 100644 client/app/assets/images/google_login.png create mode 100644 client/app/assets/images/google_logo.svg create mode 100644 client/app/assets/less/server.less diff --git a/client/app/assets/images/google_login.png b/client/app/assets/images/google_login.png deleted file mode 100644 index df2360695841a9df280f93d38ceda50c3d12c8f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18254 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 \ No newline at end of file diff --git a/client/app/assets/less/server.less b/client/app/assets/less/server.less new file mode 100644 index 00000000..92b9d631 --- /dev/null +++ b/client/app/assets/less/server.less @@ -0,0 +1,90 @@ +/** LESS Plugins **/ +@import 'inc/less-plugins/for'; + +/** Load Main Bootstrap LESS files **/ +@import '~bootstrap/less/bootstrap'; +@import '~material-design-iconic-font/dist/css/material-design-iconic-font.css'; + +@import 'inc/variables'; +@import 'inc/mixins'; +@import 'inc/font'; +@import 'inc/print'; + +@import 'inc/bootstrap-overrides'; +@import 'inc/base'; +@import 'inc/generics'; +@import 'inc/form'; +@import 'inc/button'; +@import 'inc/404'; +@import 'inc/ie-warning'; +@import 'inc/flex'; + +@import 'redash/redash-newstyle'; + +@default-spacing: 26px; + +html, body { + height: 100%; + margin: 0; + padding: 0; + background: #F6F8F9; +} + +.m-t-default { + margin-top: @default-spacing !important; +} +.m-b-default { + margin-bottom: @default-spacing !important; +} +.m-l-default { + margin-left: @default-spacing !important; +} +.m-r-default { + margin-right: @default-spacing !important; +} + +hr { + border-top-width: 2px; + margin: @default-spacing 0; +} + +.tiled { + padding: @default-spacing; +} + +.header { + margin-top: -100px; + + img { + height: 40px; + } +} + +.fixed-width-page { + width: 500px; +} + +.login-button { + display: flex; + align-items: center; + justify-content: center; + margin: 20px 0; + + &:first-of-type { + margin-top: 0; + } + &:last-of-type { + margin-bottom: 0; + } + + img { + height: 25px; + margin-right: 5px; + } + + &:before { + content: ""; + display: inline-block; + height: 25px; + } +} diff --git a/redash/templates/error.html b/redash/templates/error.html index 113da14c..5d163bdd 100644 --- a/redash/templates/error.html +++ b/redash/templates/error.html @@ -1,8 +1,16 @@ {% extends "layouts/signed_out.html" %} +{% block title %}Error :-({% endblock %} + {% block content %} -

Error :-(

-

- {{ error_message }} -

+
+
+
+ +
+
+

{{ error_message }}

+
+
+
{% endblock %} diff --git a/redash/templates/forgot.html b/redash/templates/forgot.html index e6003afb..508782f4 100644 --- a/redash/templates/forgot.html +++ b/redash/templates/forgot.html @@ -1,21 +1,21 @@ {% extends "layouts/signed_out.html" %} {% block title %}Password Reset{% endblock %} {% block content %} -{% if submitted %} -

Password Reset

-
-

- If we found an account associated with that email address, you will find an email from us in your inbox shortly. -

-{% else %} -

Password Reset

-
-
-
- - -
- -
-{% endif %} +
+
+ {% if submitted %} +
+ If we found an account associated with that email address, you will find an email from us in your inbox shortly. +
+ {% else %} +
+
+ + +
+ +
+ {% endif %} +
+
{% endblock %} diff --git a/redash/templates/invite.html b/redash/templates/invite.html index 83991282..c00dfbaa 100644 --- a/redash/templates/invite.html +++ b/redash/templates/invite.html @@ -1,36 +1,39 @@ {% extends "layouts/signed_out.html" %} -{% block content %} +{% block title %}Welcome to Redash!{% endblock %} + +{% block content %} +
+
+
+ {% if google_auth_url %} + To create your account, please choose a password or login with your Google account ({{ user.email }}). + {% else %} + To create your account, please choose a password. + {% endif %} +
+ {% with messages = get_flashed_messages() %} + {% if messages %} + {% for message in messages %} + + {% endfor %} + {% endif %} + {% endwith %} -

Welcome to Redash!

-

{% if google_auth_url %} - To create your account, please choose a password or login with your Google account ({{ user.email }}). - {% else %} - To create your account, please choose a password. + +


{% endif %} -

-{% with messages = get_flashed_messages() %} -{% if messages %} -{% for message in messages %} - -{% endfor %} -{% endif %} -{% endwith %} -{% if google_auth_url %} -
- -
- -{% endif %} -
-
+ +
-
- - +
+ + +
+
{% endblock %} diff --git a/redash/templates/layouts/signed_out.html b/redash/templates/layouts/signed_out.html index b25919b8..281aacc8 100644 --- a/redash/templates/layouts/signed_out.html +++ b/redash/templates/layouts/signed_out.html @@ -1,42 +1,31 @@ - - - - + - {% block title %}{% endblock %} - - + {% block title %}{% endblock %} + + - - + - - - + + + - + -
-
-
- -
-
- -
-
-
- {% block content %} - {% endblock %} -
+
+
+
+
+

{{ self.title() }}

+ {% block content %}{% endblock %}
-{% block scripts %} -{% endblock %} + +{% block scripts %}{% endblock %} {% include '_includes/signed_out_tail.html' %} diff --git a/redash/templates/login.html b/redash/templates/login.html index f4ead36d..00fd7627 100644 --- a/redash/templates/login.html +++ b/redash/templates/login.html @@ -1,79 +1,60 @@ {% extends "layouts/signed_out.html" %} -{% block title %}Login | Redash{% endblock %} + +{% block title %}Login to Redash{% endblock %} + {% block content %} - {% with messages = get_flashed_messages() %} - {% if messages %} - {% for message in messages %} - - {% endfor %} - {% endif %} - {% endwith %} - {% if show_google_openid %} -
- +
+
+ {% with messages = get_flashed_messages() %} + {% if messages %} + {% for message in messages %} + + {% endfor %} + {% endif %} + {% endwith %} + + {% if show_google_openid %} + + {% endif %} + + {% if show_saml_login %} + + {% endif %} + + {% if show_remote_user_login %} + + {% endif %} + + {% if show_ldap_login %} + + {% endif %} + + {% if show_google_openid or show_saml_login or show_remote_user_login or show_ldap_login %} +
+ {% endif %} + +
+ +
+ + +
+
+ + +
+ + +
+ + {% if not hide_forgot_password %} + + {% endif %}
- - - {% endif %} - - {% if show_saml_login %} - - - - {% endif %} - - {% if show_remote_user_login %} - - - - {% endif %} - - {% if show_ldap_login %} - - - - {% endif %} - -
-
- - -
-
- - -
-
- -
- - -
- - {% if not hide_forgot_password %} -
- I forgot my password - {% endif %} +
{% endblock %} diff --git a/redash/templates/reset.html b/redash/templates/reset.html index c10634fa..fc8c19da 100644 --- a/redash/templates/reset.html +++ b/redash/templates/reset.html @@ -1,15 +1,14 @@ {% extends "layouts/signed_out.html" %} {% block title %}Password Reset{% endblock %} + {% block content %} -

Password Reset

-
-
-
+
+
{% with messages = get_flashed_messages() %} {% if messages %} {% for message in messages %} - + {% endfor %} {% endif %} {% endwith %} @@ -18,7 +17,7 @@
- +
diff --git a/redash/templates/setup.html b/redash/templates/setup.html index b490f3e1..82351440 100644 --- a/redash/templates/setup.html +++ b/redash/templates/setup.html @@ -3,62 +3,64 @@ {% block title %}Redash Initial Setup{% endblock %} {% macro render_field_errors(field) -%} - {% if field.errors %} - {% for e in field.errors %} -

{{ e }}

- {% endfor %} - {% endif %} + {% if field.errors %} + {% for e in field.errors %} +

{{ e }}

+ {% endfor %} + {% endif %} {%- endmacro %} {% macro render_field(field, help_block=None) -%} -
- {{ field.label() }} - {{ field(class='form-control') }} - {% if help_block %} -

{{ help_block }}

- {% endif %} - {{ render_field_errors(field) }} -
+
+ {{ field.label() }} + {{ field(class='form-control') }} + {% if help_block %} +

{{ help_block }}

+ {% endif %} + {{ render_field_errors(field) }} +
{%- endmacro %} {% block content %} -

- Welcome to Redash!
Before you can use your instance, you need to do a quick setup. -

+
+
+

Welcome to Redash!

+
Before you can use your instance, you need to do a quick setup.
{% with messages = get_flashed_messages() %} - {% if messages %} - {% for message in messages %} - - {% endfor %} - {% endif %} + {% if messages %} + {% for message in messages %} + + {% endfor %} + {% endif %} {% endwith %}
-

Admin User

- {{ render_field(form.name) }} - {{ render_field(form.email) }} - {{ render_field(form.password) }} +

Admin User

+ {{ render_field(form.name) }} + {{ render_field(form.email) }} + {{ render_field(form.password) }} -
- -
+
+ +
-
- -
+
+ +
-

General

+

General

- {{ render_field(form.org_name, help_block="Used in email notifications and the UI.") }} + {{ render_field(form.org_name, help_block="Used in email notifications and the UI.") }} - +
+
+
{% endblock %} - diff --git a/webpack.config.js b/webpack.config.js index 717c1127..a9a36f76 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -13,7 +13,13 @@ const redashBackend = process.env.REDASH_BACKEND || 'http://localhost:5000'; const config = { entry: { - app: ['./client/app/index.js', './client/app/assets/less/main.less'], + app: [ + './client/app/index.js', + './client/app/assets/less/main.less', + ], + server: [ + './client/app/assets/less/server.less', + ], }, output: { path: path.join(__dirname, 'client', 'dist'), @@ -54,13 +60,15 @@ const config = { new HtmlWebpackPlugin({ template: './client/app/index.html', filename: 'index.html', + excludeChunks: ['server'], }), new HtmlWebpackPlugin({ template: './client/app/multi_org.html', filename: 'multi_org.html', + excludeChunks: ['server'], }), new ExtractTextPlugin({ - filename: 'styles.[chunkhash].css', + filename: '[name].[chunkhash].css', }), new ManifestPlugin({ fileName: 'asset-manifest.json'