From cae3aae5e2209458c2e085ccbe28aa03d0793067 Mon Sep 17 00:00:00 2001 From: Alexander Tsybulsky Date: Sat, 4 Jul 2020 13:47:14 +0300 Subject: [PATCH] CSS and logo fixes (#3578) * css cleanups * orange logo * Revert "orange logo" This reverts commit b9aa45bbd08d338fb2144ae3edc7db485088a600. * update font * css improvements * remove logo png * re-layout page title and footer Co-authored-by: Lars Hvam --- src/ui/zabapgit_css_common.w3mi.data.css | 54 ++++++----- .../zabapgit_css_theme_default.w3mi.data.css | 3 +- src/ui/zabapgit_icon_font.w3mi.data.woff | Bin 3568 -> 4772 bytes src/ui/zabapgit_icon_font_css.w3mi.data.css | 59 ++++++------ src/ui/zabapgit_icon_font_css.w3mi.xml | 2 +- src/ui/zcl_abapgit_gui_page.clas.abap | 43 +++++---- src/ui/zcl_abapgit_ui_factory.clas.abap | 84 ------------------ 7 files changed, 90 insertions(+), 155 deletions(-) diff --git a/src/ui/zabapgit_css_common.w3mi.data.css b/src/ui/zabapgit_css_common.w3mi.data.css index 87fb03df4..8efd6a82d 100644 --- a/src/ui/zabapgit_css_common.w3mi.data.css +++ b/src/ui/zabapgit_css_common.w3mi.data.css @@ -78,13 +78,6 @@ div.panel { border-radius: 3px; } -#debug-output { - text-align: right; - padding-right: 0.5em; - font-style: italic; - font-size: small; -} - div.dummydiv { padding: 0.5em 1em; text-align: center; @@ -95,34 +88,49 @@ a.close-btn { } /* STRUCTURE DIVS, HEADER & FOOTER */ -#abapGitLogo { outline: none; } - div#header { padding: 0.5em 0.5em; border-bottom: 3px double; } -div#header td:not(.logo) { padding-top: 11px; } /* align with logo H */ -div#header td.logo { width: 164px; } -div#header td:not(.logo) { padding-top: 11px; } /* align with logo H */ +div#header > div { display: inline-block } -div#header span.page_title { - font-weight: normal; - font-size: 18pt; - padding-left: 0.4em; +.logo .icon { display: inline-block } +.logo .icon:before { width: auto } + +/* official logo colors, not vars, redefine in themes directly*/ +.logo .icon.icon-git-alt { color: #f03c2e } +.logo .icon.icon-abapgit { + color: #362701; + vertical-align: bottom; } -div#toc { padding: 0.5em 1em; } -div#toc .favorites a { opacity: 0.5; } -div#toc .favorites:hover a { opacity: 1; } +div#header .logo { font-size: x-large } +div#header .page-title { font-size: x-large } +div#header span.spacer { + display: inline-block; + padding-right: 0.25em; + padding-left: 0.25em; +} +div#footer .logo { font-size: large } div#footer { padding: 0.5em 1em; border-top: 3px double; - text-align: center; } -div#footer span.version { - display: block; - margin-top: 0.3em; +div#footer .version { + margin-top: 0.5em; + font-size: small; +} + +#debug-output { + text-align: right; + padding-right: 0.5em; + font-size: smaller; + font-family: monospace; +} +#debug-output p { + margin-top: 0em; + margin-bottom: 0em; } /* ERROR LOG */ diff --git a/src/ui/zabapgit_css_theme_default.w3mi.data.css b/src/ui/zabapgit_css_theme_default.w3mi.data.css index 4a3cc7d8e..049b05430 100644 --- a/src/ui/zabapgit_css_theme_default.w3mi.data.css +++ b/src/ui/zabapgit_css_theme_default.w3mi.data.css @@ -17,6 +17,7 @@ --theme-greyscale-light: #ccc; --theme-greyscale-lighter: lightgrey; --theme-linkhint-background: lightgreen; + --theme-debug-color: #aaa; } /* GLOBALS */ @@ -62,7 +63,7 @@ div.panel.success { color: #589a58 !important; background-color: #c5eac5; } -#debug-output { color: var(--theme-primary-font-color-reduced); } +#debug-output { color: var(--theme-debug-color); } div.dummydiv { background-color: var(--theme-container-background-color); } /* STRUCTURE DIVS, HEADER & FOOTER */ diff --git a/src/ui/zabapgit_icon_font.w3mi.data.woff b/src/ui/zabapgit_icon_font.w3mi.data.woff index b36876a5a5245c4c593f4c6e235c33eec1e85737..f4385c886f0daa0fe2cc2800c9b037efa2022a88 100644 GIT binary patch delta 4364 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 G0001ohdDw3 delta 3154 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 diff --git a/src/ui/zabapgit_icon_font_css.w3mi.data.css b/src/ui/zabapgit_icon_font_css.w3mi.data.css index 2fb07f2f4..7633c964a 100644 --- a/src/ui/zabapgit_icon_font_css.w3mi.data.css +++ b/src/ui/zabapgit_icon_font_css.w3mi.data.css @@ -27,30 +27,35 @@ .icon.large { font-size: 200%; } -.icon-arrow-circle-up:before { content: "\f101"; } -.icon-bars:before { content: "\f102"; } -.icon-bolt:before { content: "\f103"; } -.icon-box:before { content: "\f104"; } -.icon-briefcase:before { content: "\f105"; } -.icon-check:before { content: "\f106"; } -.icon-chevron-down:before { content: "\f107"; } -.icon-chevron-left:before { content: "\f108"; } -.icon-chevron-right:before { content: "\f109"; } -.icon-chevron-up:before { content: "\f10a"; } -.icon-cloud-upload-alt:before { content: "\f10b"; } -.icon-code-branch:before { content: "\f10c"; } -.icon-code-commit:before { content: "\f10d"; } -.icon-cog:before { content: "\f10e"; } -.icon-exclamation-circle:before { content: "\f10f"; } -.icon-exclamation-triangle:before { content: "\f110"; } -.icon-file-alt:before { content: "\f111"; } -.icon-file-code:before { content: "\f112"; } -.icon-file-image:before { content: "\f113"; } -.icon-file:before { content: "\f114"; } -.icon-fire-alt:before { content: "\f115"; } -.icon-folder:before { content: "\f116"; } -.icon-lock:before { content: "\f117"; } -.icon-plug:before { content: "\f118"; } -.icon-sliders-h:before { content: "\f119"; } -.icon-snowflake:before { content: "\f11a"; } -.icon-star:before { content: "\f11b"; } +.icon-abapgit:before { content: "\f101"; } +.icon-abaplint:before { content: "\f102"; } +.icon-arrow-circle-up:before { content: "\f103"; } +.icon-bars:before { content: "\f104"; } +.icon-bolt:before { content: "\f105"; } +.icon-box:before { content: "\f106"; } +.icon-briefcase:before { content: "\f107"; } +.icon-check:before { content: "\f108"; } +.icon-chevron-down:before { content: "\f109"; } +.icon-chevron-left:before { content: "\f10a"; } +.icon-chevron-right:before { content: "\f10b"; } +.icon-chevron-up:before { content: "\f10c"; } +.icon-cloud-upload-alt:before { content: "\f10d"; } +.icon-code-branch:before { content: "\f10e"; } +.icon-code-commit:before { content: "\f10f"; } +.icon-cog:before { content: "\f110"; } +.icon-exclamation-circle:before { content: "\f111"; } +.icon-exclamation-triangle:before { content: "\f112"; } +.icon-file-alt:before { content: "\f113"; } +.icon-file-code:before { content: "\f114"; } +.icon-file-image:before { content: "\f115"; } +.icon-file:before { content: "\f116"; } +.icon-fire-alt:before { content: "\f117"; } +.icon-folder:before { content: "\f118"; } +.icon-git-alt:before { content: "\f119"; } +.icon-lock:before { content: "\f11a"; } +.icon-plug:before { content: "\f11b"; } +.icon-question-circle-solid:before { content: "\f11c"; } +.icon-sliders-h:before { content: "\f11d"; } +.icon-snowflake:before { content: "\f11e"; } +.icon-star:before { content: "\f11f"; } +.icon-tools-solid:before { content: "\f120"; } diff --git a/src/ui/zabapgit_icon_font_css.w3mi.xml b/src/ui/zabapgit_icon_font_css.w3mi.xml index f8b4a21d5..217708e8c 100644 --- a/src/ui/zabapgit_icon_font_css.w3mi.xml +++ b/src/ui/zabapgit_icon_font_css.w3mi.xml @@ -21,7 +21,7 @@ MI ZABAPGIT_ICON_FONT_CSS mimetype - text/plain + text/css diff --git a/src/ui/zcl_abapgit_gui_page.clas.abap b/src/ui/zcl_abapgit_gui_page.clas.abap index d0e9087f9..495d390c8 100644 --- a/src/ui/zcl_abapgit_gui_page.clas.abap +++ b/src/ui/zcl_abapgit_gui_page.clas.abap @@ -83,7 +83,7 @@ ENDCLASS. -CLASS zcl_abapgit_gui_page IMPLEMENTATION. +CLASS ZCL_ABAPGIT_GUI_PAGE IMPLEMENTATION. METHOD constructor. @@ -98,19 +98,23 @@ CLASS zcl_abapgit_gui_page IMPLEMENTATION. CREATE OBJECT ri_html TYPE zcl_abapgit_html. - ri_html->add( '' ). ENDMETHOD. @@ -253,21 +257,22 @@ CLASS zcl_abapgit_gui_page IMPLEMENTATION. CREATE OBJECT ri_html TYPE zcl_abapgit_html. - ri_html->add( '' ). "#EC NOTEXT + ri_html->add( '' ). ENDMETHOD. diff --git a/src/ui/zcl_abapgit_ui_factory.clas.abap b/src/ui/zcl_abapgit_ui_factory.clas.abap index 84cebdba0..f2c26233c 100644 --- a/src/ui/zcl_abapgit_ui_factory.clas.abap +++ b/src/ui/zcl_abapgit_ui_factory.clas.abap @@ -191,89 +191,5 @@ CLASS ZCL_ABAPGIT_UI_FACTORY IMPLEMENTATION. iv_mime_name = 'ZABAPGIT_ICON_FONT' iv_base64 = lo_buf->join_and_flush( ) ). - " see https://github.com/larshp/abapGit/issues/201 for source SVG - ro_asset_man->register_asset( - iv_url = 'img/logo' - iv_type = 'image/png' - iv_base64 = - 'iVBORw0KGgoAAAANSUhEUgAAAKMAAAAoCAYAAACSG0qbAAAABHNCSVQICAgIfAhkiAAA' - && 'AAlwSFlzAAAEJQAABCUBprHeCQAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9y' - && 'Z5vuPBoAAA8VSURBVHic7Zx7cJzVeYef31nJAtvYko1JjM3FYHlXimwZkLWyLEMcwIGQ' - && 'cEkDJWmTltLStGkoDCkzwBAuCemUlksDNCkhJTTTljJpZhIuBQxxAWPvyuYiW7UkG8Il' - && 'UByIsS1sLEu75+0fu5JXu9/etAJz0TOzM/rOec85765+37m+3yczY8w0NU3qrwv9npfa' - && 'Hfx02pPPd469sgk+7misYnyjpWXy5IOG7kd8ZjjNjEtr13TdOm7eTfCxwo2lUJAQASRu' - && '2dnRfMn4uDbBx42yxZhPiMNMCHKCsVK2GGuqqqoQUwrZTAhygrFQshjfaGmZ/M7yxQtm' - && 'xGL9/qDqzwLxQvYTgpygXEoS4/DQ7LE1O05atLBu1YZdE4KcYLwpupoOmCO+5Z2dXPfE' - && 'xk07Tm2ZroGhBwX1wAygKqiOiVX2Rw9Jam/gyH0wuGGzvTEudRYSY4HFyogghxN2n7Sw' - && 'IendvcCioLoOtCCXNeqohOf0oDwPq9f3Wt/77dOHlWhYzUj/BRybTnrGEnZO5wv2m0rq' - && 'DezJoOiqeZbzegzpk6TVPPWJTT39y5svMogF1ZcesjlQgkwYp4F+EJQXwv4E+MiLUZJa' - && 'F7AIcRq4hWZ2mMRhQD/oZcErXv7FScaja3rt/wpU9E/sFyLACQq57wB/XIl/gWIstn2T' - && 'xpHVre7ZW71p8sFDeQscSEHKu3pTBadNH2Lq61VT57iwNazLgaNSqYaUaWXLDZCJIbBo' - && 'g3tK2A2xHns0oMrm3CRrqdTPnAVMiUIEmLlz2XGLMxNmH7YrifFcoUIHalHj8f8p6UfA' - && 'O+932weStno1zghps6Q7GBFiUYRxopkeaZ2vIwLyfxtQ4vV8lbWHNScacf+T/vwqn90o' - && 'MZYhRADJ+bv725vmj6Q8tHWffPKUD6IgO/tsfawneRHYd97Pdg8kSyJaZiGtBY4pYPYO' - && 'kH84C0Cyv8tKSiK7OZ99EpYAJ2V8AhkRY5lCHGaxhaq+BLCzY/EXd5y0aOG0td1vf1AF' - && 'CWCw7/1u80DQEtahQvcB03MyjQfM7Hwnmxfv9dPivX5SssqOwuzPSqk71mN3ymw5ZtdK' - && 'dmVIdly8xx7JZ29yy0qptwrGLMRRCA6T1w93nLTo5Lq13Zv625tOMRd6DLF4v0lWmQO8' - && 'qPko45y7TWaHZyUnwa6M99mN2fYbuu1V4K5oxF1B4Z4UgFifrQHWFLNbvkh1QheV5DNN' - && 'TZMqFWIGs5zX48M95PTqGa3TZ4erzbvj8/WUErf0L2++uNyGJLn2Js1oDeuYlkbNbmlR' - && 'deXup2hq0qS2es2VlHMDFaOlRdXL5uuwlnodG23QTEljCkbJV3d7WHOK+dXWqHqZnZeb' - && 'Y1fGe3OFOArRU5GTGbSHNWdwUL8Epo1qIQ9V/bXu3HES4jCznNfjb7e1zZ8Ri/UD1MLz' - && 'u05s/huMx4IKGNy4+8Tj/2Pqk8++Vaji86TQqxEuNNM5rWGtSCaokSDkgd0QjbidoPvN' - && '+5s7t9jz5TgdbdBMvLsG2cop6FgLUdUaZk804jYKuyrWa6vzlT2+XrOqQnxd6KwQOj5R' - && 'hULpL9Yaxkcj7g3QT6zK397ZbdtGtbtAZ+B0U3adkt0c67E7OyI6fFDuSpktC6HGpJjU' - && 'GmZ3NOI2mdnVnX32eHZZ7903hGXfBG8mp3J7sd/B0DPCTgUmBf9O7lmMybk56or3Jn8f' - && 'oLVB7Q5dZ9Iy4OBsw2jYbUUk96fwQrzHf955iBZzsDA+aL9k1owZ20fNzaY/tfFXwK48' - && 'ldQkSZ5YqJXmZk15JaJfmOmfgdOAmgCzWrCvyum5aIO+Uor3AIbOx7QV2TeBMPu3vKYA' - && 'Sw091hbWt4PKRhu0oDqkmND1wAnk3vkOmAN2lRLa2hrWMVm5Tek2R3286YzWiK4eQltk' - && '9g1gMfsFMhVYKunR1obQddk+SXZqwLe8acMGe7fYb9HZk7wm3utrBmpsqiXsyClHMHK6' - && '0hLWoRjHBfmLbP9K3bPYjFPIFWLaQeZnlZ8H4JyFflrMwcK4wG63v3/ycZnXOzqalxE0' - && 'mU7x9rvvVv93oVZqBtzNGGeU7Jbp9pZGzS7ReiVQVyDfmXRda4PaA9p5mBLmWGmmSron' - && 'M0FytUGGgjPTAi8UIeVk9u1og5YOJ0QbNBOjIac+Y22JPgLQ1WV7Ol+w36xebYnhtGpj' - && 'FjBYTj3l4KY9/dx6My4d74pN/Ki/Y9HpSG5HR/Nyh/1DHtO9OM6dvWFDwbtWslOykt6U' - && 's5VWZbOFnQtsyMqvc56Ty3T7NeBhLGAfDZDpe5nX6V5uXpbZ43K2NGQ2V9glwLas/I62' - && 'hfrE8EWsJ3mFsGYs+OQqze+A1cBLgbmma4f/9AmOJGBe5vKVLYN1W6wnOWSHmdkVhexM' - && 'PG6yC0x2AbmjoQ3njdh4uwrSw1Htmq5bd3Y0I3FLpQ5n0GTSQ7s6Fva70RPYTPbi+Pz0' - && 'J7ryboRC+m5PnRfsJjVEAfp5bLNflTb52dKIBj36RWY5ZyX2WCLukvbX67ZYHFLHZtGw' - && '+1fD/jDL8qQljWpav9m6Uw3wKYzXgUNJTxsk+0Fssw0L6x+j4dCx6eF/BEtwDBkbx7Fe' - && '29gWCa0yrC2rvXXO26WZfrWG3V2kji8zWbm0QUev67GX5ZgZ8A0H121hXIIZNrxou9oW' - && '6m4b4m/z2aTP+fsAohF3PaNHROvssZ8ElRs5DnyPBAkovxDFF4oJESDeY9tJD4Ur5umg' - && 'PSFm1Uy23Zk2SaM7e43p5Y4uxUMzu2f4H56+tuZmff2gfTqHrGEy5DkW6Abo7LH7gfsB' - && '2uo1LQGzBmoYFSwg57vNcjqqo4F1JXh2S7Zfx83TZZNqdD6MXkQkU369jONgcmfxe83M' - && 'B7XQEdEhg1B0HzDk2ZHpy3vBqLPpMQhyi/f2AIA3WyPZG6KkeVpKiE925awEi7H6JRsA' - && 'cqJDfIi9oayfW8ZB5dY/TFeX7YlGQg+RmgJkcnSQfWyr9QP92enmGcgeNCvx67mXbGdb' - && 'xD1hjI5AklJ+ydgTUGz6iiZNXd09+gYGGIRlQgXn6wDesZYSRFsJOYES5QjSw7fqnu7q' - && 'Bqh7uqu7f3nzdw3uKFJszEIcpqVRs12SRuAYiTrJ1YXMzSGgS6iQnHmWyQWe70pySz/F' - && 'MZagMWnMlaiTuTqTTih7s7IIHm1T1ncVI37l3BAAA4McAYF7iAvG17uxExi1U6Igd9XN' - && 'Dj+UmZA8qPrf3MDQbeSPIN8Ldub0JzeWLcT2I3Swn8JFhr4VQnMze5uKnv0ugOHfUXa3' - && 'ZhySedkR0eGDuMtbw/rTZCI1pA9PF0yWf4e3MnJ7YKXm0pOr6H03QRIIZeYnUj1njhid' - && '8aaRscKX/VGWSRLsCjnK2rcdC3njGUsQ5PSdv92yqJaMk5WBoRMpJsSnNgZufBdCkmsN' - && '60FgRbllK8PNzOlttT/qpz2sOUnpeWGHvq9ewcyc28/7XQCru213NOL+l6wgZ0kXAjnD' - && 'cazP7gXuTdu41rCyxbgr3mt/P16+F6LgUVXtmq5bC237yNsNu5YtPBZgx4kLFznZ1XlM' - && 'BzB/1liECBAN801yhfiq0HflbKXz1ojZ4qCylSBsbm6q/93wX0n0Q1Ir6UzWYXaZyZaF' - && 'qqxeZn813n4ZlhPWJWXMo00P5OTDF5c0qmm8fRlPip6bFhHk6Ti3ddfy5i3OXBemJQE2' - && 'A5g/c/qaTasC8krC0KdzE+3qWG/y6thmW7Vui/UkQ7w51vqDaGnRZFInPdlshNQ2C8oJ' - && 'h0oqaefF++zmzh5bu7bbXrBxjp88bp5qgZzNdyfWD/9t+B+TO4GW8/p+R0SHcGBxLWEF' - && 'jiQlHeIXEaRIPZAVRMVCTDcQCUh8LfOyaqjgCcr+YpY7NRFa2VY/egsqtNtdw8ie5gjJ' - && 'oUTqicjofOYA2f/YgcR03s5MMBF4wlIa7rMr5mnUyru6xl0LZAeFvDG3l83DF5199muk' - && 'oJO1FUMoviSi8Nh9Kg+Ru7qvUvCqPO+cMZsxbPsM4HXW9KcrEyKApTa7s9BVSyLaF3Ik' - && 'SbLSQros18RyInkkV2u5q+6zLaS+aCT0oJl/QVI78IWcsvDos1vtLYCE551QKNuCKW63' - && '+157g36cMOYI9yWhC3K+j4KDEHKxC9+t0altDaFHwL/kvVZIBJw761/uM5/MTJlU7S/Z' - && 'N6hTBNlhZA0OPReNuGdM6nL4jR4G5ZnRusAtKmVHwg1Slcxe11nODZJKh1fJ6kwM3dQa' - && 'VgOw3omjkGuL9/o/L/vFTzs7mi8pQZBpIT4f9PxE2bRFQncY9pdjKDoExDH7ebzPbgFo' - && 'bQjdng48KBfvzZau77ORN61FI66PsW2N7ARiZnZTZ589BtAWCV1v5J1zF+JNVdui2CbL' - && 'OcJsq1ejD2lVgCDL4e14r58J0N6k+cmEu0HYIssdrbxgnaGeeG9yJEg32hC6GbOix81y' - && 'trTsWLtiixpgQNLZ4yVEgCT++xSP0H7C0N1ZadVAh6SR3kRm2WfJO0H/XqTuQcn+IlOI' - && 'AFjRVaZhus3g2az0WuA0wcIi5QP3DDNIIPtakBABYltts7AO4OEi9eTFYGCksSRzwM4L' - && 'ECKAM1gG9tVR5UP+RkqZN5s7a0yBnwUEOSDp7GlPPp83BH0srO+1PmQrDIIen9wOdnln' - && 'n31G5n9ZtDLL6ck2x3uTf6DUee8rASX6vNnyWI/dmZ0R77O7LNXLBkWy9CE7Pd6XvNih' - && 'QkEQeZHZl9PBFtsDstebtyWFwv0B4r32UrzXn+6xDtBdwIslNL0N+JnMvravxiraFO/s' - && 'tm0y+xzQlcfkddCNCe/vGfP7GQH6lzdfbHAjqSCBHZK+PN5CzESSlixgnhMLzXAeXp+3' - && 'hWfuM0sWL10abQv1CdtHixzvmtiYPhcvSFOTJk1NEPEQkWdPUry4oc96y2o3YJiWs5Wx' - && 'zbYq83THHHu9Y1N2kG45tDRqdsgzxxuznKPOGbsTsN2M7d6zfXhePJ5Ici1h6mUcAcw0' - && '8Zo5fp35NoqKxAjwTrRhZmLSpPY9ySmPzV27dm+lTn9cKSTGA+XT+03Jq+l8HBLv2Q7c' - && 'X9K+ygQTFGDcHhaaoGJyouDNV7JH+eGj4mF6gspoC+tzJt1ObsT4MDsF2zxs886+Ml5v' - && '/PogUvEwPUGFiE+SX4gAtQa1gkhV7onQR4oJMR5oxC6stDeghd7Dh6E+CPw/HL4vVO2f' - && 'cpUAAAAASUVORK5CYII=' ). ENDMETHOD. ENDCLASS.