mirror of
https://github.com/abapGit/abapGit.git
synced 2025-04-30 20:03:20 +08:00
Merge pull request #467 from sbcgua/master
External files for css and js
This commit is contained in:
commit
1cf4018f13
|
@ -69,6 +69,7 @@ INCLUDE zabapgit_background.
|
|||
INCLUDE zabapgit_transport.
|
||||
|
||||
INCLUDE zabapgit_services. " All services here
|
||||
INCLUDE zabapgit_gui_asset_manager.
|
||||
INCLUDE zabapgit_gui_pages. " All GUI pages here
|
||||
INCLUDE zabapgit_gui_pages_userexit IF FOUND.
|
||||
INCLUDE zabapgit_gui_router.
|
||||
|
|
584
src/zabapgit_css_common.w3mi.data.css
Normal file
584
src/zabapgit_css_common.w3mi.data.css
Normal file
|
@ -0,0 +1,584 @@
|
|||
/*
|
||||
* ABAPGIT COMMON CSS
|
||||
*/
|
||||
|
||||
/* GLOBALS */
|
||||
|
||||
body {
|
||||
font-family: Arial,Helvetica,sans-serif;
|
||||
font-size: 12pt;
|
||||
background: #E8E8E8;
|
||||
}
|
||||
|
||||
a, a:visited {
|
||||
color: #4078c0;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a:hover, a:active {
|
||||
cursor: pointer;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
img { border: 0px; vertical-align: middle; }
|
||||
table { border-collapse: collapse; }
|
||||
pre { display: inline; }
|
||||
|
||||
form input, textarea, select {
|
||||
border: 1px solid #DDD;
|
||||
padding: 3px 6px;
|
||||
}
|
||||
|
||||
form input:focus, textarea:focus {
|
||||
border: 1px solid #8cadd9;
|
||||
}
|
||||
|
||||
/* MODIFIERS */
|
||||
.grey { color: lightgrey !important; }
|
||||
.emphasis { font-weight: bold !important; }
|
||||
.attention { color: red !important; }
|
||||
.crossout { text-decoration: line-through !important; }
|
||||
.right { text-align:right; }
|
||||
.paddings { padding: 0.5em 0.5em; }
|
||||
.pad-sides { padding: 0 0.3em; }
|
||||
.pad4px { padding: 4px; }
|
||||
|
||||
/* STRUCTURE DIVS, HEADER & FOOTER */
|
||||
td.headpad { padding-top: 11px; }
|
||||
td.logo { width: 164px; }
|
||||
|
||||
div#header {
|
||||
padding: 0.5em 0.5em;
|
||||
border-bottom: 3px double lightgrey;
|
||||
}
|
||||
|
||||
div#toc {
|
||||
padding: 0.5em 1em;
|
||||
background-color: #f2f2f2;
|
||||
}
|
||||
|
||||
div#toc div.toc_grid {
|
||||
margin: -0.3em 0em;
|
||||
}
|
||||
|
||||
div#toc div.toc_grid a {
|
||||
color: #ccc;
|
||||
}
|
||||
|
||||
div#toc:hover div.toc_grid a {
|
||||
color: #4078c0;
|
||||
}
|
||||
|
||||
div#toc div.toc_row {
|
||||
margin: 0.3em 0em;
|
||||
}
|
||||
|
||||
div#footer {
|
||||
padding: 0.5em 1em;
|
||||
border-top: 3px double lightgrey;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
div.dummydiv {
|
||||
background-color: #f2f2f2;
|
||||
padding: 0.5em 1em;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
span.version {
|
||||
display: block;
|
||||
color: grey;
|
||||
margin-top: 0.3em;
|
||||
}
|
||||
|
||||
span.page_title {
|
||||
font-weight: normal;
|
||||
font-size: 18pt;
|
||||
color: #bbb;
|
||||
padding-left: 0.4em;
|
||||
}
|
||||
|
||||
/* MENU */
|
||||
div.menu { display: inline; }
|
||||
div.menu .menu_end { border-right: 0px !important; }
|
||||
div.menu a {
|
||||
padding-left: 0.5em;
|
||||
padding-right: 0.5em;
|
||||
border-right: 1px solid lightgrey;
|
||||
font-size: 12pt;
|
||||
}
|
||||
div.menu_vertical { display: inline; }
|
||||
div.menu_vertical a {
|
||||
display: block;
|
||||
font-size: 12pt;
|
||||
}
|
||||
|
||||
/*DROP DOWN*/
|
||||
.dropdown {
|
||||
position: relative;
|
||||
display: inline;
|
||||
}
|
||||
.dropdown_angle {
|
||||
position: absolute !important;
|
||||
right: -4px;
|
||||
top: -1px;
|
||||
}
|
||||
.dropbtn_angle {
|
||||
width: 0;
|
||||
height: 0;
|
||||
border-left: 7px solid transparent;
|
||||
border-right: 7px solid transparent;
|
||||
border-bottom: 7px solid #4078c0;
|
||||
transform: rotate(45deg);
|
||||
-ms-transform: rotate(45deg);
|
||||
}
|
||||
.dropdown_content {
|
||||
display: none;
|
||||
z-index: 1;
|
||||
position: absolute;
|
||||
right: -12px;
|
||||
top: 1em;
|
||||
padding: 6px 10px 10px 10px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
.dropdown div.minizone {
|
||||
display: none;
|
||||
z-index: 1;
|
||||
position: absolute;
|
||||
padding: 0px;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
bottom: 0px;
|
||||
left: -16px;
|
||||
}
|
||||
.dropdown_angle .dropdown_content {
|
||||
top: -1px;
|
||||
}
|
||||
.dropdown:hover .dropdown_content { display: block; }
|
||||
.dropdown:hover .minizone { display: block; }
|
||||
.dropdown_content a {
|
||||
padding: 0.2em;
|
||||
background-color: #f9f9f9;
|
||||
text-decoration: none;
|
||||
display: block;
|
||||
border: none !important;
|
||||
}
|
||||
.dropdown_content div.box {
|
||||
border-bottom: 1px solid #C0C0C0;
|
||||
border-right: 1px solid #C0C0C0;
|
||||
background-color: #f9f9f9;
|
||||
padding: 2px;
|
||||
}
|
||||
.dropdown_content td { text-align: left; padding: 2px; }
|
||||
.dropdown_content td a { padding: 0em 0.2em; }
|
||||
.dropdown_content td.icon { padding: 0 3px 0 6px; }
|
||||
.dropdown_content a:hover { background-color: #f1f1f1 }
|
||||
.dropdown:hover .dropbtn { color: #79a0d2; }
|
||||
|
||||
/* REPOSITORY */
|
||||
div.repo {
|
||||
margin-top: 3px;
|
||||
background-color: #f2f2f2;
|
||||
padding: 0.5em 1em 0.5em 1em;
|
||||
}
|
||||
.repo_name span.name {
|
||||
font-weight: bold;
|
||||
color: #333;
|
||||
font-size: 14pt;
|
||||
}
|
||||
.repo_name span.url {
|
||||
color: #ccc;
|
||||
font-size: 12pt;
|
||||
margin-left: 0.5em;
|
||||
}
|
||||
.repo_name img {
|
||||
vertical-align: baseline;
|
||||
margin: 0 5px 0 5px;
|
||||
}
|
||||
.repo_attr {
|
||||
color: grey;
|
||||
font-size: 12pt;
|
||||
}
|
||||
.repo_attr span {
|
||||
margin-left: 0.2em;
|
||||
margin-right: 0.5em;
|
||||
}
|
||||
.repo_attr span.bg_marker {
|
||||
border: 1px solid #d2d2d2;
|
||||
border-radius: 3px;
|
||||
background: #d8d8d8;
|
||||
color: #fff;
|
||||
font-size: 8pt;
|
||||
padding: 4px 2px 3px 2px;
|
||||
}
|
||||
.repo_attr span.branch {
|
||||
padding: 2px 4px;
|
||||
border: 1px solid #d9d9d9;
|
||||
border-radius: 4px;
|
||||
background-color: #e2e2e2;
|
||||
}
|
||||
.repo_attr span.branch_head {
|
||||
border-color: #d8dff3;
|
||||
background-color: #eceff9;
|
||||
}
|
||||
.repo_attr span.branch_branch {
|
||||
border-color: #e7d9b1;
|
||||
background-color: #f8f0d8;
|
||||
}
|
||||
|
||||
/* MISC AND REFACTOR */
|
||||
.hidden-submit {
|
||||
border: 0 none;
|
||||
height: 0;
|
||||
width: 0;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
#debug-output {
|
||||
text-align: right;
|
||||
padding-right: 0.5em;
|
||||
color: #ccc;
|
||||
font-style: italic;
|
||||
font-size: small;
|
||||
}
|
||||
|
||||
/* REPOSITORY TABLE*/
|
||||
div.repo_container {
|
||||
position: relative;
|
||||
}
|
||||
.repo_tab {
|
||||
border: 1px solid #DDD;
|
||||
border-radius: 3px;
|
||||
background: #fff;
|
||||
margin-top: 0.5em;
|
||||
}
|
||||
.repo_tab td {
|
||||
border-top: 1px solid #eee;
|
||||
vertical-align: middle;
|
||||
color: #333;
|
||||
padding-top: 2px;
|
||||
padding-bottom: 2px;
|
||||
}
|
||||
.repo_tab td.icon {
|
||||
width: 32px;
|
||||
text-align: center;
|
||||
}
|
||||
.repo_tab td.type {
|
||||
width: 3em;
|
||||
}
|
||||
.repo_tab td.object {
|
||||
padding-left: 0.5em;
|
||||
}
|
||||
.repo_tab td.files {
|
||||
padding-left: 0.5em;
|
||||
}
|
||||
.repo_tab td.cmd {
|
||||
text-align: right;
|
||||
padding-left: 0.5em;
|
||||
padding-right: 0.7em;
|
||||
}
|
||||
.repo_tab tr.unsupported { color: lightgrey; }
|
||||
.repo_tab tr.modified { background: #fbf7e9; }
|
||||
.repo_tab tr:first-child td { border-top: 0px; }
|
||||
.repo_tab td.current_dir { color: #ccc; }
|
||||
.repo_tab td.cmd span.state-block {
|
||||
margin-left: 1em;
|
||||
font-family: Consolas, Lucida Console, Courier, monospace;
|
||||
font-size: x-small;
|
||||
vertical-align: 13%;
|
||||
display: inline-block;
|
||||
text-align: center;
|
||||
}
|
||||
.repo_tab td.cmd span.state-block span {
|
||||
display: inline-block;
|
||||
padding: 0px 2px;
|
||||
border: 1px solid #000;
|
||||
}
|
||||
.repo_tab td.cmd span.state-block span.added {
|
||||
background-color: #69ad74;
|
||||
border-color: #579e64;
|
||||
color: white;
|
||||
}
|
||||
.repo_tab td.cmd span.state-block span.changed {
|
||||
background-color: #e0c150;
|
||||
border-color: #d4af25;
|
||||
color: white;
|
||||
}
|
||||
.repo_tab td.cmd span.state-block span.mixed {
|
||||
background-color: #e0c150;
|
||||
border-color: #579e64;
|
||||
color: #69ad74;
|
||||
}
|
||||
.repo_tab td.cmd span.state-block span.deleted {
|
||||
background-color: #c76861;
|
||||
border-color: #b8605a;
|
||||
color: white;
|
||||
}
|
||||
.repo_tab td.cmd span.state-block span.none {
|
||||
background-color: #e8e8e8;
|
||||
border-color: #dbdbdb;
|
||||
color: #c8c8c8;
|
||||
}
|
||||
|
||||
/* STAGE */
|
||||
.stage_tab {
|
||||
border: 1px solid #DDD;
|
||||
background: #fff;
|
||||
margin-top: 0.2em;
|
||||
}
|
||||
.stage_tab td {
|
||||
border-top: 1px solid #eee;
|
||||
color: #333;
|
||||
vertical-align: middle;
|
||||
padding: 2px 0.5em;
|
||||
}
|
||||
.stage_tab th {
|
||||
color: #BBB;
|
||||
font-size: 10pt;
|
||||
text-align: left;
|
||||
font-weight: normal;
|
||||
background-color: #edf2f9;
|
||||
padding: 4px 0.5em;
|
||||
}
|
||||
.stage_tab td.status {
|
||||
width: 2em;
|
||||
text-align: center;
|
||||
}
|
||||
.stage_tab tbody tr:first-child td { padding-top: 0.5em; }
|
||||
.stage_tab tbody tr:last-child td { padding-bottom: 0.5em; }
|
||||
.stage_tab td.cmd a { padding: 0px 4px; }
|
||||
|
||||
/* STAGE */
|
||||
.stage_tab td.method {
|
||||
color: #ccc;
|
||||
}
|
||||
.stage_tab tr.firstrow td { border-top: 0px; }
|
||||
.stage_tab tr.title td {
|
||||
color: #BBB;
|
||||
font-size: 10pt;
|
||||
background-color: #edf2f9;
|
||||
padding: 4px 0.5em;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/* COMMIT */
|
||||
div.form_div {
|
||||
margin: 0.5em 0em;
|
||||
background-color: #F8F8F8;
|
||||
padding: 1em 1em;
|
||||
}
|
||||
|
||||
div.form_div td.field_name {
|
||||
color: #BBB;
|
||||
padding-right: 1em;
|
||||
}
|
||||
|
||||
/* SETTINGS STYLES */
|
||||
div.settings_container {
|
||||
padding: 0.5em;
|
||||
font-size: 10pt;
|
||||
color: #444;
|
||||
background-color: #f2f2f2;
|
||||
}
|
||||
|
||||
/* DIFF */
|
||||
div.diff {
|
||||
background-color: #f2f2f2;
|
||||
padding: 0.7em
|
||||
}
|
||||
div.diff_head {
|
||||
padding-bottom: 0.7em;
|
||||
}
|
||||
span.diff_name {
|
||||
padding-left: 0.5em;
|
||||
color: grey;
|
||||
}
|
||||
span.diff_name strong {
|
||||
color: #333;
|
||||
}
|
||||
span.diff_banner {
|
||||
border-style: solid;
|
||||
border-width: 1px;
|
||||
border-radius: 3px;
|
||||
padding-left: 0.3em;
|
||||
padding-right: 0.3em;
|
||||
}
|
||||
.diff_ins {
|
||||
border-color: #7bea7b;
|
||||
background-color: #d3f8d3;
|
||||
}
|
||||
.diff_del {
|
||||
border-color: #ff667d;
|
||||
background-color: #ffccd4;
|
||||
}
|
||||
.diff_upd {
|
||||
border-color: #dada00;
|
||||
background-color: #ffffcc;
|
||||
}
|
||||
div.diff_content {
|
||||
background: #fff;
|
||||
border-top: 1px solid #DDD;
|
||||
border-bottom: 1px solid #DDD;
|
||||
}
|
||||
div.diff_head span.state-block {
|
||||
margin-left: 0.5em;
|
||||
font-family: Consolas, Lucida Console, Courier, monospace;
|
||||
display: inline-block;
|
||||
text-align: center;
|
||||
}
|
||||
div.diff_head span.state-block span {
|
||||
display: inline-block;
|
||||
padding: 0px 4px;
|
||||
border: 1px solid #000;
|
||||
}
|
||||
div.diff_head span.state-block span.added {
|
||||
background-color: #69ad74;
|
||||
border-color: #579e64;
|
||||
color: white;
|
||||
}
|
||||
div.diff_head span.state-block span.changed {
|
||||
background-color: #e0c150;
|
||||
border-color: #d4af25;
|
||||
color: white;
|
||||
}
|
||||
div.diff_head span.state-block span.mixed {
|
||||
background-color: #e0c150;
|
||||
border-color: #579e64;
|
||||
color: #69ad74;
|
||||
}
|
||||
div.diff_head span.state-block span.deleted {
|
||||
background-color: #c76861;
|
||||
border-color: #b8605a;
|
||||
color: white;
|
||||
}
|
||||
div.diff_head span.state-block span.none {
|
||||
background-color: #e8e8e8;
|
||||
border-color: #dbdbdb;
|
||||
color: #c8c8c8;
|
||||
}
|
||||
|
||||
/* DIFF TABLE */
|
||||
table.diff_tab {
|
||||
font-family: Consolas, Courier, monospace;
|
||||
font-size: 10pt;
|
||||
}
|
||||
table.diff_tab td,th {
|
||||
color: #444;
|
||||
padding-left: 0.5em;
|
||||
padding-right: 0.5em;
|
||||
}
|
||||
table.diff_tab th {
|
||||
text-align: left;
|
||||
font-weight: normal;
|
||||
padding-top: 3px;
|
||||
padding-bottom: 3px;
|
||||
}
|
||||
table.diff_tab thead.header th {
|
||||
color: #EEE;
|
||||
background-color: #BBB;
|
||||
text-align: left;
|
||||
font-weight: bold;
|
||||
padding-left: 0.5em;
|
||||
font-size: 9pt;
|
||||
}
|
||||
table.diff_tab thead.nav_line {
|
||||
background-color: #edf2f9;
|
||||
}
|
||||
table.diff_tab thead.nav_line th {
|
||||
color: #bbb;
|
||||
}
|
||||
table.diff_tab td.num, th.num {
|
||||
text-align: right;
|
||||
color: #ccc;
|
||||
border-left: 1px solid #eee;
|
||||
border-right: 1px solid #eee;
|
||||
}
|
||||
table.diff_tab code {
|
||||
font-family: inherit;
|
||||
white-space: pre;
|
||||
}
|
||||
table.diff_tab tbody tr:first-child td { padding-top: 0.5em; }
|
||||
table.diff_tab tbody tr:last-child td { padding-bottom: 0.5em; }
|
||||
|
||||
/* DEBUG INFO STYLES */
|
||||
div.debug_container {
|
||||
padding: 0.5em;
|
||||
font-size: 10pt;
|
||||
color: #444;
|
||||
font-family: Consolas, Courier, monospace;
|
||||
}
|
||||
div.debug_container p {
|
||||
margin: 0px;
|
||||
}
|
||||
|
||||
/* DB ENTRIES */
|
||||
div.db_list {
|
||||
background-color: #f2f2f2;
|
||||
padding: 0.5em;
|
||||
}
|
||||
table.db_tab pre {
|
||||
display: inline-block;
|
||||
overflow: hidden;
|
||||
word-wrap:break-word;
|
||||
white-space: pre-wrap;
|
||||
margin: 0px;
|
||||
width: 30em;
|
||||
}
|
||||
table.db_tab tr.firstrow td { padding-top: 0.5em; }
|
||||
table.db_tab th {
|
||||
text-align: left;
|
||||
color: #888;
|
||||
padding: 0.5em;
|
||||
border-bottom: 1px #ddd solid;
|
||||
}
|
||||
table.db_tab td {
|
||||
color: #333;
|
||||
padding: 0.5em;
|
||||
vertical-align: top;
|
||||
}
|
||||
table.db_tab td.data {
|
||||
color: #888;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
/* DB ENTRY DISPLAY */
|
||||
div.db_entry {
|
||||
background-color: #f2f2f2;
|
||||
padding: 0.5em;
|
||||
}
|
||||
div.db_entry pre {
|
||||
display: block;
|
||||
overflow: hidden;
|
||||
word-wrap:break-word;
|
||||
white-space: pre-wrap;
|
||||
background-color: #eaeaea;
|
||||
padding: 0.5em;
|
||||
margin: 0.5em 0em;
|
||||
width: 50em;
|
||||
}
|
||||
div.db_entry table.toolbar {
|
||||
width: 50em;
|
||||
}
|
||||
table.tag {
|
||||
display: inline-block;
|
||||
border: 1px #b3c1cc solid;
|
||||
background-color: #eee;
|
||||
border-radius: 3px;
|
||||
margin-right: 0.5em;
|
||||
}
|
||||
table.tag td { padding: 0.2em 0.5em; }
|
||||
table.tag td.label { background-color: #b3c1cc; }
|
||||
|
||||
/* DB ENTRY DISPLAY */
|
||||
div.db_entry textarea { margin: 0.5em 0em; }
|
||||
table.tag {
|
||||
display: inline-block;
|
||||
border: 1px #b3c1cc solid;
|
||||
background-color: #eee;
|
||||
border-radius: 3px;
|
||||
margin-right: 0.5em;
|
||||
}
|
||||
table.tag td { padding: 0.2em 0.5em; }
|
||||
table.tag td.label { background-color: #b3c1cc; }
|
41
src/zabapgit_css_common.w3mi.xml
Normal file
41
src/zabapgit_css_common.w3mi.xml
Normal file
|
@ -0,0 +1,41 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_W3MI" serializer_version="v2.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<NAME>ZABAPGIT_CSS_COMMON</NAME>
|
||||
<TEXT>AbapGit common styles</TEXT>
|
||||
<PARAMS>
|
||||
<WWWPARAMS>
|
||||
<RELID>MI</RELID>
|
||||
<OBJID>ZABAPGIT_CSS_COMMON</OBJID>
|
||||
<NAME>fileextension</NAME>
|
||||
<VALUE>.css</VALUE>
|
||||
</WWWPARAMS>
|
||||
<WWWPARAMS>
|
||||
<RELID>MI</RELID>
|
||||
<OBJID>ZABAPGIT_CSS_COMMON</OBJID>
|
||||
<NAME>filename</NAME>
|
||||
<VALUE>common.css</VALUE>
|
||||
</WWWPARAMS>
|
||||
<WWWPARAMS>
|
||||
<RELID>MI</RELID>
|
||||
<OBJID>ZABAPGIT_CSS_COMMON</OBJID>
|
||||
<NAME>filesize</NAME>
|
||||
<VALUE>12136</VALUE>
|
||||
</WWWPARAMS>
|
||||
<WWWPARAMS>
|
||||
<RELID>MI</RELID>
|
||||
<OBJID>ZABAPGIT_CSS_COMMON</OBJID>
|
||||
<NAME>mimetype</NAME>
|
||||
<VALUE>text/css</VALUE>
|
||||
</WWWPARAMS>
|
||||
<WWWPARAMS>
|
||||
<RELID>MI</RELID>
|
||||
<OBJID>ZABAPGIT_CSS_COMMON</OBJID>
|
||||
<NAME>version</NAME>
|
||||
<VALUE/>
|
||||
</WWWPARAMS>
|
||||
</PARAMS>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
|
@ -55,7 +55,8 @@ TYPES: BEGIN OF ty_metadata,
|
|||
|
||||
TYPES: BEGIN OF ty_web_asset,
|
||||
url TYPE w3url,
|
||||
content TYPE string,
|
||||
base64 TYPE string,
|
||||
content TYPE xstring,
|
||||
END OF ty_web_asset.
|
||||
TYPES tt_web_assets TYPE STANDARD TABLE OF ty_web_asset WITH DEFAULT KEY.
|
||||
|
||||
|
|
|
@ -29,8 +29,8 @@ CLASS lcl_gui DEFINITION FINAL CREATE PRIVATE FRIENDS lcl_app.
|
|||
|
||||
DATA: mi_cur_page TYPE REF TO lif_gui_page,
|
||||
mt_stack TYPE STANDARD TABLE OF ty_page_stack,
|
||||
mt_assets TYPE tt_w3urls,
|
||||
mo_router TYPE REF TO lcl_gui_router,
|
||||
mo_asset_man TYPE REF TO lcl_gui_asset_manager,
|
||||
mo_html_viewer TYPE REF TO cl_gui_html_viewer.
|
||||
|
||||
METHODS constructor
|
||||
|
@ -39,12 +39,16 @@ CLASS lcl_gui DEFINITION FINAL CREATE PRIVATE FRIENDS lcl_app.
|
|||
METHODS startup
|
||||
RAISING lcx_exception.
|
||||
|
||||
METHODS cache_image
|
||||
IMPORTING iv_url TYPE w3url
|
||||
iv_base64 TYPE string.
|
||||
|
||||
METHODS cache_html
|
||||
IMPORTING iv_html TYPE string
|
||||
IMPORTING iv_text TYPE string
|
||||
RETURNING VALUE(rv_url) TYPE w3url.
|
||||
|
||||
METHODS cache_asset
|
||||
IMPORTING iv_text TYPE string OPTIONAL
|
||||
iv_xdata TYPE xstring OPTIONAL
|
||||
iv_url TYPE w3url OPTIONAL
|
||||
iv_type TYPE c
|
||||
iv_subtype TYPE c
|
||||
RETURNING VALUE(rv_url) TYPE w3url.
|
||||
|
||||
METHODS render
|
||||
|
@ -182,9 +186,7 @@ CLASS lcl_gui IMPLEMENTATION.
|
|||
|
||||
METHOD call_page.
|
||||
|
||||
DATA: lt_assets TYPE tt_web_assets,
|
||||
ls_stack TYPE ty_page_stack.
|
||||
FIELD-SYMBOLS <ls_asset> LIKE LINE OF lt_assets.
|
||||
DATA: ls_stack TYPE ty_page_stack.
|
||||
|
||||
IF iv_replacing = abap_false AND NOT mi_cur_page IS INITIAL.
|
||||
ls_stack-page = mi_cur_page.
|
||||
|
@ -192,16 +194,6 @@ CLASS lcl_gui IMPLEMENTATION.
|
|||
APPEND ls_stack TO mt_stack.
|
||||
ENDIF.
|
||||
|
||||
lt_assets = ii_page->get_assets( ).
|
||||
IF lines( lt_assets ) > 0.
|
||||
LOOP AT lt_assets ASSIGNING <ls_asset>.
|
||||
READ TABLE mt_assets TRANSPORTING NO FIELDS WITH KEY table_line = <ls_asset>-url.
|
||||
CHECK sy-subrc IS NOT INITIAL.
|
||||
APPEND <ls_asset>-url TO mt_assets.
|
||||
cache_image( iv_url = <ls_asset>-url iv_base64 = <ls_asset>-content ).
|
||||
ENDLOOP.
|
||||
ENDIF.
|
||||
|
||||
mi_cur_page = ii_page.
|
||||
render( ).
|
||||
|
||||
|
@ -216,20 +208,43 @@ CLASS lcl_gui IMPLEMENTATION.
|
|||
METHOD startup.
|
||||
|
||||
DATA: lt_events TYPE cntl_simple_events,
|
||||
ls_event LIKE LINE OF lt_events.
|
||||
ls_event LIKE LINE OF lt_events,
|
||||
lt_assets TYPE tt_web_assets.
|
||||
|
||||
FIELD-SYMBOLS <ls_asset> LIKE LINE OF lt_assets.
|
||||
|
||||
CREATE OBJECT mo_router.
|
||||
CREATE OBJECT mo_asset_man.
|
||||
CREATE OBJECT mo_html_viewer
|
||||
EXPORTING
|
||||
query_table_disabled = abap_true
|
||||
parent = cl_gui_container=>screen0.
|
||||
|
||||
CLEAR ls_event.
|
||||
cache_asset( iv_xdata = mo_asset_man->get_asset( 'css_common' )
|
||||
iv_url = 'css/common.css'
|
||||
iv_type = 'text'
|
||||
iv_subtype = 'css' ).
|
||||
|
||||
cache_asset( iv_xdata = mo_asset_man->get_asset( 'js_common' )
|
||||
iv_url = 'js/common.js'
|
||||
iv_type = 'text'
|
||||
iv_subtype = 'javascript' ).
|
||||
|
||||
lt_assets = mo_asset_man->get_images( ).
|
||||
IF lines( lt_assets ) > 0.
|
||||
LOOP AT lt_assets ASSIGNING <ls_asset>.
|
||||
cache_asset( iv_xdata = <ls_asset>-content
|
||||
iv_url = <ls_asset>-url
|
||||
iv_type = 'image'
|
||||
iv_subtype = 'png' ).
|
||||
ENDLOOP.
|
||||
ENDIF.
|
||||
|
||||
ls_event-eventid = mo_html_viewer->m_id_sapevent.
|
||||
ls_event-appl_event = abap_true.
|
||||
APPEND ls_event TO lt_events.
|
||||
mo_html_viewer->set_registered_events( lt_events ).
|
||||
|
||||
mo_html_viewer->set_registered_events( lt_events ).
|
||||
SET HANDLER me->on_event FOR mo_html_viewer.
|
||||
|
||||
ENDMETHOD. "startup
|
||||
|
@ -246,57 +261,59 @@ CLASS lcl_gui IMPLEMENTATION.
|
|||
|
||||
METHOD cache_html.
|
||||
|
||||
DATA: lt_data TYPE TABLE OF text200.
|
||||
|
||||
CALL FUNCTION 'SCMS_STRING_TO_FTEXT'
|
||||
EXPORTING
|
||||
text = iv_html
|
||||
TABLES
|
||||
ftext_tab = lt_data.
|
||||
|
||||
mo_html_viewer->load_data(
|
||||
IMPORTING
|
||||
assigned_url = rv_url
|
||||
CHANGING
|
||||
data_table = lt_data ).
|
||||
rv_url = cache_asset( iv_text = iv_text
|
||||
iv_type = 'text'
|
||||
iv_subtype = 'html' ).
|
||||
|
||||
ENDMETHOD. "cache_html
|
||||
|
||||
METHOD cache_image.
|
||||
METHOD cache_asset.
|
||||
|
||||
DATA lv_xtmp TYPE xstring.
|
||||
DATA lv_size TYPE int4.
|
||||
DATA lt_xdata TYPE TABLE OF w3_mime. " RAW255
|
||||
DATA: lv_xstr TYPE xstring,
|
||||
lt_xdata TYPE TABLE OF w3_mime, " RAW255
|
||||
lv_size TYPE int4.
|
||||
|
||||
CALL FUNCTION 'SSFC_BASE64_DECODE'
|
||||
ASSERT iv_text IS SUPPLIED OR iv_xdata IS SUPPLIED.
|
||||
|
||||
IF iv_text IS SUPPLIED. " String input
|
||||
|
||||
CALL FUNCTION 'SCMS_STRING_TO_XSTRING'
|
||||
EXPORTING
|
||||
b64data = iv_base64
|
||||
text = iv_text
|
||||
IMPORTING
|
||||
bindata = lv_xtmp
|
||||
buffer = lv_xstr
|
||||
EXCEPTIONS
|
||||
OTHERS = 1.
|
||||
ASSERT sy-subrc = 0.
|
||||
|
||||
ASSERT sy-subrc = 0. " Image data error
|
||||
ELSE. " Raw input
|
||||
lv_xstr = iv_xdata.
|
||||
ENDIF.
|
||||
|
||||
CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
|
||||
EXPORTING
|
||||
buffer = lv_xtmp
|
||||
buffer = lv_xstr
|
||||
IMPORTING
|
||||
output_length = lv_size
|
||||
TABLES
|
||||
binary_tab = lt_xdata.
|
||||
|
||||
mo_html_viewer->load_data(
|
||||
EXPORTING type = 'image'
|
||||
subtype = 'png'
|
||||
EXPORTING
|
||||
type = iv_type
|
||||
subtype = iv_subtype
|
||||
size = lv_size
|
||||
url = iv_url
|
||||
CHANGING data_table = lt_xdata
|
||||
EXCEPTIONS OTHERS = 1 ) ##NO_TEXT.
|
||||
IMPORTING
|
||||
assigned_url = rv_url
|
||||
CHANGING
|
||||
data_table = lt_xdata
|
||||
EXCEPTIONS
|
||||
OTHERS = 1 ) ##NO_TEXT.
|
||||
|
||||
ASSERT sy-subrc = 0. " Image data error
|
||||
|
||||
ENDMETHOD. "cache_image
|
||||
ENDMETHOD. " cache_asset.
|
||||
|
||||
METHOD get_current_page_name.
|
||||
IF mi_cur_page IS BOUND.
|
||||
|
|
414
src/zabapgit_gui_asset_manager.prog.abap
Normal file
414
src/zabapgit_gui_asset_manager.prog.abap
Normal file
|
@ -0,0 +1,414 @@
|
|||
*&---------------------------------------------------------------------*
|
||||
*& Include ZABAPGIT_GUI_ASSET_MANAGER
|
||||
*&---------------------------------------------------------------------*
|
||||
|
||||
CLASS lcl_gui_asset_manager DEFINITION FINAL CREATE PRIVATE FRIENDS lcl_gui.
|
||||
PUBLIC SECTION.
|
||||
|
||||
METHODS get_asset
|
||||
IMPORTING iv_asset_name TYPE string
|
||||
RETURNING VALUE(rv_data) TYPE xstring
|
||||
RAISING lcx_exception.
|
||||
|
||||
METHODS get_images
|
||||
RETURNING VALUE(rt_images) TYPE tt_web_assets.
|
||||
|
||||
PRIVATE SECTION.
|
||||
|
||||
METHODS get_inline_asset
|
||||
IMPORTING iv_asset_name TYPE string
|
||||
RETURNING VALUE(rv_data) TYPE xstring
|
||||
RAISING lcx_exception.
|
||||
|
||||
METHODS get_mime_asset
|
||||
IMPORTING iv_asset_name TYPE c
|
||||
RETURNING VALUE(rv_data) TYPE xstring
|
||||
RAISING lcx_exception.
|
||||
|
||||
METHODS get_inline_images
|
||||
RETURNING VALUE(rt_images) TYPE tt_web_assets.
|
||||
|
||||
ENDCLASS. "lcl_gui_asset_manager
|
||||
|
||||
CLASS lcl_gui_asset_manager IMPLEMENTATION.
|
||||
|
||||
METHOD get_asset.
|
||||
|
||||
DATA: lv_asset_name TYPE string,
|
||||
lv_mime_name TYPE wwwdatatab-objid.
|
||||
|
||||
lv_asset_name = to_upper( iv_asset_name ).
|
||||
|
||||
CASE lv_asset_name.
|
||||
WHEN 'CSS_COMMON'.
|
||||
lv_mime_name = 'ZABAPGIT_CSS_COMMON'.
|
||||
WHEN 'JS_COMMON'.
|
||||
lv_mime_name = 'ZABAPGIT_JS_COMMON'.
|
||||
WHEN OTHERS.
|
||||
lcx_exception=>raise( |Improper resource name: { iv_asset_name }| ).
|
||||
ENDCASE.
|
||||
|
||||
rv_data = get_mime_asset( lv_mime_name ).
|
||||
IF rv_data IS INITIAL. " Fallback to inline asset
|
||||
rv_data = get_inline_asset( lv_asset_name ).
|
||||
ENDIF.
|
||||
|
||||
IF rv_data IS INITIAL.
|
||||
lcx_exception=>raise( |Failed to get GUI resource: { iv_asset_name }| ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD. " get_asset.
|
||||
|
||||
METHOD get_mime_asset.
|
||||
|
||||
DATA: ls_key TYPE wwwdatatab,
|
||||
lv_size_c TYPE wwwparams-value,
|
||||
lv_size TYPE i,
|
||||
lt_w3mime TYPE STANDARD TABLE OF w3mime.
|
||||
|
||||
ls_key-relid = 'MI'.
|
||||
ls_key-objid = iv_asset_name.
|
||||
|
||||
" Get exact file size
|
||||
CALL FUNCTION 'WWWPARAMS_READ'
|
||||
EXPORTING
|
||||
relid = ls_key-relid
|
||||
objid = ls_key-objid
|
||||
name = 'filesize'
|
||||
IMPORTING
|
||||
value = lv_size_c
|
||||
EXCEPTIONS
|
||||
entry_not_exists = 1.
|
||||
|
||||
IF sy-subrc IS NOT INITIAL.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
lv_size = lv_size_c.
|
||||
|
||||
" Get binary data
|
||||
CALL FUNCTION 'WWWDATA_IMPORT'
|
||||
EXPORTING
|
||||
key = ls_key
|
||||
TABLES
|
||||
mime = lt_w3mime
|
||||
EXCEPTIONS
|
||||
wrong_object_type = 1
|
||||
import_error = 2.
|
||||
|
||||
IF sy-subrc IS NOT INITIAL.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
CALL FUNCTION 'SCMS_BINARY_TO_XSTRING'
|
||||
EXPORTING
|
||||
input_length = lv_size
|
||||
IMPORTING
|
||||
buffer = rv_data
|
||||
TABLES
|
||||
binary_tab = lt_w3mime
|
||||
EXCEPTIONS
|
||||
failed = 1.
|
||||
|
||||
IF sy-subrc IS NOT INITIAL.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD. " get_mime_asset.
|
||||
|
||||
METHOD get_images.
|
||||
|
||||
FIELD-SYMBOLS <image> LIKE LINE OF rt_images.
|
||||
|
||||
rt_images = get_inline_images( ).
|
||||
|
||||
" Convert to xstring
|
||||
LOOP AT rt_images ASSIGNING <image>.
|
||||
CALL FUNCTION 'SSFC_BASE64_DECODE'
|
||||
EXPORTING
|
||||
b64data = <image>-base64
|
||||
IMPORTING
|
||||
bindata = <image>-content
|
||||
EXCEPTIONS
|
||||
OTHERS = 1.
|
||||
ASSERT sy-subrc = 0. " Image data error
|
||||
ENDLOOP.
|
||||
|
||||
ENDMETHOD. " get_images.
|
||||
|
||||
DEFINE _inline.
|
||||
APPEND &1 TO lt_data.
|
||||
END-OF-DEFINITION.
|
||||
|
||||
METHOD get_inline_asset.
|
||||
|
||||
DATA: lt_data TYPE ty_string_tt,
|
||||
lv_str TYPE string.
|
||||
|
||||
CASE iv_asset_name.
|
||||
WHEN 'CSS_COMMON'.
|
||||
" @@abapmerge include zabapgit_css_common.w3mi.data.css > _inline '$$'.
|
||||
WHEN 'JS_COMMON'.
|
||||
" @@abapmerge include zabapgit_js_common.w3mi.data.js > _inline '$$'.
|
||||
WHEN OTHERS.
|
||||
lcx_exception=>raise( |No inline resource: { iv_asset_name }| ).
|
||||
ENDCASE.
|
||||
|
||||
CONCATENATE LINES OF lt_data INTO lv_str SEPARATED BY gc_newline.
|
||||
|
||||
CALL FUNCTION 'SCMS_STRING_TO_XSTRING'
|
||||
EXPORTING
|
||||
text = lv_str
|
||||
IMPORTING
|
||||
buffer = rv_data
|
||||
EXCEPTIONS
|
||||
OTHERS = 1.
|
||||
ASSERT sy-subrc = 0.
|
||||
|
||||
ENDMETHOD. " get_inline_asset.
|
||||
|
||||
METHOD get_inline_images.
|
||||
|
||||
DATA ls_image TYPE ty_web_asset.
|
||||
|
||||
* see https://github.com/larshp/abapGit/issues/201 for source SVG
|
||||
ls_image-url = 'img/logo' ##NO_TEXT.
|
||||
ls_image-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='.
|
||||
APPEND ls_image TO rt_images.
|
||||
|
||||
* http://fa2png.io/r/octicons/
|
||||
* colour: #808080
|
||||
* size: 16
|
||||
* https://www.base64-image.de/ can be used to convert images to base64
|
||||
|
||||
ls_image-url = 'img/sync' ##NO_TEXT.
|
||||
ls_image-base64 =
|
||||
'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAA6ElEQVQYGY3BIWuUAQAG'
|
||||
&& '4Pc7N72xsbGBYNE8tYpVZKDZX2CcYLEZ9yQxOQSz3D/YmkUsVovRQ2SYNJnlkFfH7VZu'
|
||||
&& 'wefJgrGHXnjrpQeu5B93smCwr6qqqp54433mDI5Ucds1u577o+p35hyoqe2cMThWVatJ'
|
||||
&& '7KiZrZxz18SJqqtJPFXPssRgw0oSH9WNXMCQU76qzSxx2cxxTlk3yhKb6mcSQy7kvjpM'
|
||||
&& 'Ylt98tpjN3POyFTdSuKSqppayxkjE/Uhc36p+m7PhhXr7vmmfhhnzpHPJqqqquqdcRY8'
|
||||
&& 'spq47sAXMyde2c3/+wvX7Y18BexhBwAAAABJRU5ErkJggg=='.
|
||||
APPEND ls_image TO rt_images.
|
||||
|
||||
ls_image-url = 'img/toc' ##NO_TEXT.
|
||||
ls_image-base64 =
|
||||
'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAFVBMVEUAAACAgICAgICA'
|
||||
&& 'gICAgICAgICAgIAO39T0AAAABnRSTlMABBCRlMXJzV0oAAAAN0lEQVQIW2NgwABuaWlB'
|
||||
&& 'YWlpDgwJDAxiAgxACshgYwAz0tLY2NISSBWBMYAmg4ADyBZhARCJAQBBchGypGCbQgAA'
|
||||
&& 'AABJRU5ErkJggg=='.
|
||||
APPEND ls_image TO rt_images.
|
||||
|
||||
ls_image-url = 'img/repo_online' ##NO_TEXT.
|
||||
ls_image-base64 =
|
||||
'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAApVBMVEUAAABQbJxQbJxQ'
|
||||
&& 'bJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQ'
|
||||
&& 'bJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQ'
|
||||
&& 'bJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQ'
|
||||
&& 'bJz+TJ01AAAANnRSTlMAAQIDBAcJCgwSFBocHygqMTM1NkRHSU1QUWFiZGlweHuDiImL'
|
||||
&& 'lZiio6a5vsfT3uTo6e3x9fsxY2JuAAAAgUlEQVQYGXXB6RaBUBSA0e+IEuIiMs9zhlDn'
|
||||
&& '/R/NZWmt/LA3f1RcoaB50SydCbn20wjedkPu3sKSpMGH21PhLdZ0BATZ+cCXtxtDHGLV'
|
||||
&& 'pgFW9QqJj2U0wvJvMF+5jiNGI3HK9dMQSouH6sRoFGoWd8l1dEDRWlWPQsFS98KPvvDH'
|
||||
&& 'C3HLClrWc70ZAAAAAElFTkSuQmCC'.
|
||||
APPEND ls_image TO rt_images.
|
||||
|
||||
ls_image-url = 'img/repo_offline' ##NO_TEXT.
|
||||
ls_image-base64 =
|
||||
'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAVFBMVEUAAACAgICAgICA'
|
||||
&& 'gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA'
|
||||
&& 'gICAgICAgICAgICAgICAgICAgICAgICuaWnmAAAAG3RSTlMAAgQFBgsQFxweIiMtN3yI'
|
||||
&& 'nqOvt9Hp6/Hz9fktMNR/AAAAXElEQVQYV5WO2xJAMAxES1q3ugfF/v9/0qLyyL4k58xk'
|
||||
&& 'J0p9D7N5oeqZgSwy7fDZnHNdEE1gWK116tksl7hPimGFFPWYl7MU0zksRCl8TStKg1AJ'
|
||||
&& '0XNC8Zm4/c0BUVQHi0llOUYAAAAASUVORK5CYII='.
|
||||
APPEND ls_image TO rt_images.
|
||||
|
||||
ls_image-url = 'img/pkg' ##NO_TEXT.
|
||||
ls_image-base64 =
|
||||
'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAA30lEQVQoU43OIUuDcRSF'
|
||||
&& '8fvqhuB0mFwaKLbVBVdkX0GTFss+wYL2H4rJIIgyQQSzZcUPoGHZ9CKCmAwTMS8Y/ga3'
|
||||
&& 'BWVjT7hwOQ+HEzEbMhU7jrTd69q2KhtFRU2nrvS927dm3pyqPXcuNRVD7sxiRIQlDSc+'
|
||||
&& 'PGjZUFDWkYekLfdoV2XYua4rSZ61pZBkEUq2XPty41XuXJIiZGNhPDVZiFCYIMSor+Db'
|
||||
&& '7RQhYnQnCsNvNmGgPFFYMQh1PU9aqrLxyGUNx/p66r9mUc2hFx3JhU9vDtQU4y9KGjaV'
|
||||
&& '/gXT+AGZVIinhU2EAwAAAABJRU5ErkJggg=='.
|
||||
APPEND ls_image TO rt_images.
|
||||
|
||||
ls_image-url = 'img/branch' ##NO_TEXT.
|
||||
ls_image-base64 =
|
||||
'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAqFBMVEUAAACAgICAgICA'
|
||||
&& 'gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA'
|
||||
&& 'gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA'
|
||||
&& 'gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA'
|
||||
&& 'gICAgID/OyosAAAAN3RSTlMAAQIDBAYICQ8TFRweJScoKSo3Oj1FRk1dYWJjZmhzdIaJ'
|
||||
&& 'j5GVm6CwsrS5vsHDyszV19ne7/X583teZAAAAIFJREFUGFdVytkagVAYheFvFzJlnqc0'
|
||||
&& 'EEoR+u//zhxI7dbZ9z4LMJ1op9DmjpntdXiBigHbLiAYqukBVr63+YGRSazgCY/iEooP'
|
||||
&& 'xKZxr0EnSbo14B1Rg4msKzj150fJrQpERPLBv7mIfNxlq+zRbZsu0JYpGlcdwjY9Twfr'
|
||||
&& 'nAbNsr6IKQxJI/U5CgAAAABJRU5ErkJggg=='.
|
||||
APPEND ls_image TO rt_images.
|
||||
|
||||
ls_image-url = 'img/link' ##NO_TEXT.
|
||||
ls_image-base64 =
|
||||
'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAXVBMVEUAAACAgICAgICA'
|
||||
&& 'gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA'
|
||||
&& 'gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVwFMKAAAAHnRSTlMAAwQFBgcK'
|
||||
&& 'FR4gIiMmP0JHSm+RmKDByM/R09rg+/0jN/q+AAAAX0lEQVQYV43Nxw6AIBAE0FGw916Z'
|
||||
&& '//9MRQ0S4sG5bPZlCxqSCyBGXgFUJKUA4A8PUOKONzuQOxOZIjcLkrMvxGQg3skSCFYL'
|
||||
&& 'Kl1Ds5LWz+33yyf4rQOSf6CjnV6rHeAA87gJtKzI8ocAAAAASUVORK5CYII='.
|
||||
APPEND ls_image TO rt_images.
|
||||
|
||||
ls_image-url = 'img/code' ##NO_TEXT.
|
||||
ls_image-base64 =
|
||||
'iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOBAMAAADtZjDiAAAAElBMVEUAAACAgICAgICA'
|
||||
&& 'gICAgICAgIC07w1vAAAABXRSTlMABECUxcOwZQcAAAA1SURBVAhbY2AODQ0NEWBgYGVg'
|
||||
&& 'YGByhNAMKgIMrKyhAQxMDhA+QwCCZgVqIIUP1Q+yJzTUAAAfUAq+Os55uAAAAABJRU5E'
|
||||
&& 'rkJggg=='.
|
||||
APPEND ls_image TO rt_images.
|
||||
|
||||
ls_image-url = 'img/bin' ##NO_TEXT.
|
||||
ls_image-base64 =
|
||||
'iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOBAMAAADtZjDiAAAAElBMVEUAAACAgICAgICA'
|
||||
&& 'gICAgICAgIC07w1vAAAABXRSTlMABECUxcOwZQcAAABBSURBVAhbXcqxDYAwAMRAK8h9'
|
||||
&& 'hmAARoANvuD3X4UCiojqZMlsbe8JAuN6ZZ9ozThRCVmsJe9H0HwdXf19W9v2eAA6Fws2'
|
||||
&& 'RotPsQAAAABJRU5ErkJggg=='.
|
||||
APPEND ls_image TO rt_images.
|
||||
|
||||
ls_image-url = 'img/obj' ##NO_TEXT.
|
||||
ls_image-base64 =
|
||||
'iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOBAMAAADtZjDiAAAAIVBMVEUAAACAgICAgICA'
|
||||
&& 'gICAgICAgICAgICAgICAgICAgICAgIDcWqnoAAAACnRSTlMABD1AZI+RlcPFIaFe1gAA'
|
||||
&& 'AEVJREFUCFtjYF+1atVKAQYGLgYGBuaJEJrBUgBCM0+A0AwLgLQIgyOIZmwCSgNptgAG'
|
||||
&& '1gQQfzKDhgCSPFw9Kg2yZ9WqAgBWJBENLk6V3AAAAABJRU5ErkJggg=='.
|
||||
APPEND ls_image TO rt_images.
|
||||
|
||||
ls_image-url = 'img/lock' ##NO_TEXT.
|
||||
ls_image-base64 =
|
||||
'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAOVBMVEUAAACIiIiIiIiI'
|
||||
&& 'iIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIjNaTNB'
|
||||
&& 'AAAAEnRSTlMABgdBVXt8iYuRsNXZ3uDi6Pmu6tfUAAAASUlEQVQYV63KSxJAQBAE0TQ0'
|
||||
&& 'Znym1f0PayE0QdjJ5asCgGTu1hClqjppvaRXB60swBeA2QNUAIq+ICvKx367nqAn/P8Y'
|
||||
&& 't2jg3Q5rgASaF3KNRwAAAABJRU5ErkJggg=='.
|
||||
APPEND ls_image TO rt_images.
|
||||
|
||||
ls_image-url = 'img/dir' ##NO_TEXT.
|
||||
ls_image-base64 =
|
||||
'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAASFBMVEUAAABmksxmksxm'
|
||||
&& 'ksxmksxmksxmksxmksxmksxmksxmksxmksxmksxmksxmksxmksxmksxmksxmksxmksxm'
|
||||
&& 'ksxmksxmksxmksxMwQo8AAAAF3RSTlMABhIYIy1fZmhpe3+IiYuMkZvD7e/x93sipD4A'
|
||||
&& 'AAA+SURBVBhXY2BABzwiokAgzAYXEGdiBAIWIYQAPzcQCApzgwEXM4M4KuBDFxAYKAEx'
|
||||
&& 'VAFeBlYOTiTAzoThewD5hBAcnWM4gwAAAABJRU5ErkJggg=='.
|
||||
APPEND ls_image TO rt_images.
|
||||
|
||||
ls_image-url = 'img/burger' ##NO_TEXT.
|
||||
ls_image-base64 =
|
||||
'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAHlBMVEUAAABtktltktlt'
|
||||
&& 'ktltktltktltktltktltktltktk7ccVDAAAACXRSTlMAFDBLY2SFoPGv/DFMAAAAJ0lE'
|
||||
&& 'QVQIW2NggIHKmWAwmaETwpjGoBoKBo4MmIAkxXApuGK4dgwAAJa5IzLs+gRBAAAAAElF'
|
||||
&& 'TkSuQmCC'.
|
||||
APPEND ls_image TO rt_images.
|
||||
|
||||
ls_image-url = 'img/star' ##NO_TEXT.
|
||||
ls_image-base64 =
|
||||
'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAilBMVEUAAABejclejcle'
|
||||
&& 'jclejclejclejclejclejclejclejclejclejclejclejclejclejclejclejclejcle'
|
||||
&& 'jclejclejclejclejclejclejclejclejclejclejclejclejclejclejclejclejcle'
|
||||
&& 'jclejclejclejclejclejclejclejclejcn2yvsVAAAALXRSTlMAAQIFBwkKCw0QERUY'
|
||||
&& 'HB4jLzEzNjg7PVdYYmRvd3mDm52eub7R0+Tr8fX3+/16wo8zAAAAcElEQVQYGW3BBxKC'
|
||||
&& 'MABFwYcQETv2hg1UVP79ryeTZBxw3MWL+JGltBgVtGRSSoORVOAE8Xi5zVU7rWfDCOaV'
|
||||
&& 'Gu59mLz0dTPUBg95eYjVK2VdOzjBW9YZL5FT4i2k5+YoKcY5VPsQkoumOLsu1mjFHx8o'
|
||||
&& 'ahA3YV7OfwAAAABJRU5ErkJggg=='.
|
||||
APPEND ls_image TO rt_images.
|
||||
|
||||
ls_image-url = 'img/star-grey' ##NO_TEXT.
|
||||
ls_image-base64 =
|
||||
'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAilBMVEUAAADQ0NDQ0NDQ'
|
||||
&& '0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ'
|
||||
&& '0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ'
|
||||
&& '0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NC2QdifAAAALXRSTlMAAQIFBwkKCw0QERUY'
|
||||
&& 'HB4jLzEzNjg7PVdYYmRvd3mDm52eub7R0+Tr8fX3+/16wo8zAAAAcElEQVQYGW3BBxKC'
|
||||
&& 'MABFwYcQETv2hg1UVP79ryeTZBxw3MWL+JGltBgVtGRSSoORVOAE8Xi5zVU7rWfDCOaV'
|
||||
&& 'Gu59mLz0dTPUBg95eYjVK2VdOzjBW9YZL5FT4i2k5+YoKcY5VPsQkoumOLsu1mjFHx8o'
|
||||
&& 'ahA3YV7OfwAAAABJRU5ErkJggg=='.
|
||||
APPEND ls_image TO rt_images.
|
||||
|
||||
|
||||
ENDMETHOD. " get_inline_images.
|
||||
|
||||
ENDCLASS. "lcl_gui_asset_manager
|
48
src/zabapgit_gui_asset_manager.prog.xml
Normal file
48
src/zabapgit_gui_asset_manager.prog.xml
Normal file
|
@ -0,0 +1,48 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_PROG" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<PROGDIR>
|
||||
<NAME>ZABAPGIT_GUI_ASSET_MANAGER</NAME>
|
||||
<STATE>A</STATE>
|
||||
<SQLX/>
|
||||
<EDTX/>
|
||||
<VARCL>X</VARCL>
|
||||
<DBAPL/>
|
||||
<DBNA/>
|
||||
<CLAS/>
|
||||
<TYPE/>
|
||||
<OCCURS/>
|
||||
<SUBC>I</SUBC>
|
||||
<APPL/>
|
||||
<SECU/>
|
||||
<CNAM/>
|
||||
<CDAT>0000-00-00</CDAT>
|
||||
<UNAM/>
|
||||
<UDAT>0000-00-00</UDAT>
|
||||
<VERN/>
|
||||
<LEVL/>
|
||||
<RSTAT/>
|
||||
<RMAND/>
|
||||
<RLOAD>E</RLOAD>
|
||||
<FIXPT/>
|
||||
<SSET/>
|
||||
<SDATE>0000-00-00</SDATE>
|
||||
<STIME/>
|
||||
<IDATE>0000-00-00</IDATE>
|
||||
<ITIME/>
|
||||
<LDBNAME/>
|
||||
<UCCHECK>X</UCCHECK>
|
||||
</PROGDIR>
|
||||
<TPOOL>
|
||||
<item>
|
||||
<ID>R</ID>
|
||||
<KEY/>
|
||||
<ENTRY>Include ZABAPGIT_GUI_ASSET_MANAGER</ENTRY>
|
||||
<LENGTH>34</LENGTH>
|
||||
<SPLIT/>
|
||||
</item>
|
||||
</TPOOL>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
208
src/zabapgit_js_common.w3mi.data.js
Normal file
208
src/zabapgit_js_common.w3mi.data.js
Normal file
|
@ -0,0 +1,208 @@
|
|||
/**********************************************************
|
||||
* ABAPGIT JS function library
|
||||
**********************************************************/
|
||||
|
||||
/**********************************************************
|
||||
* Polyfills
|
||||
**********************************************************/
|
||||
|
||||
// Bind polyfill (for IE7), taken from https://developer.mozilla.org/
|
||||
if (!Function.prototype.bind) {
|
||||
Function.prototype.bind = function(oThis) {
|
||||
if (typeof this !== "function") {
|
||||
throw new TypeError("Function.prototype.bind - subject is not callable");
|
||||
}
|
||||
|
||||
var aArgs = Array.prototype.slice.call(arguments, 1),
|
||||
fToBind = this,
|
||||
fNOP = function() {},
|
||||
fBound = function() {
|
||||
return fToBind.apply(this instanceof fNOP
|
||||
? this
|
||||
: oThis,
|
||||
aArgs.concat(Array.prototype.slice.call(arguments)));
|
||||
};
|
||||
|
||||
if (this.prototype) {
|
||||
fNOP.prototype = this.prototype;
|
||||
}
|
||||
fBound.prototype = new fNOP();
|
||||
|
||||
return fBound;
|
||||
};
|
||||
}
|
||||
|
||||
/**********************************************************
|
||||
* Common functions
|
||||
**********************************************************/
|
||||
|
||||
// Output text to the debug div
|
||||
function debugOutput(text, dstID) {
|
||||
var stdout = document.getElementById(dstID || "debug-output");
|
||||
var wrapped = "<p>" + text + "</p>";
|
||||
stdout.innerHTML = stdout.innerHTML + wrapped;
|
||||
}
|
||||
|
||||
// Create hidden form and submit with sapevent
|
||||
function submitSapeventForm(params, action) {
|
||||
var form = document.createElement("form");
|
||||
form.setAttribute("method", "post");
|
||||
form.setAttribute("action", "sapevent:" + action);
|
||||
|
||||
for(var key in params) {
|
||||
var hiddenField = document.createElement("input");
|
||||
hiddenField.setAttribute("type", "hidden");
|
||||
hiddenField.setAttribute("name", key);
|
||||
hiddenField.setAttribute("value", params[key]);
|
||||
form.appendChild(hiddenField);
|
||||
}
|
||||
|
||||
document.body.appendChild(form);
|
||||
form.submit();
|
||||
}
|
||||
|
||||
// Set focus to a control
|
||||
function setInitialFocus(id) {
|
||||
document.getElementById(id).focus();
|
||||
}
|
||||
|
||||
// Submit an existing form
|
||||
function submitFormById(id) {
|
||||
document.getElementById(id).submit();
|
||||
}
|
||||
|
||||
/**********************************************************
|
||||
* STAGE PAGE Logic
|
||||
**********************************************************/
|
||||
|
||||
// Stage helper constructor
|
||||
function StageHelper(params) {
|
||||
this.pageSeed = params.seed;
|
||||
this.tabId = params.stageTabId;
|
||||
this.formAction = params.formAction;
|
||||
this.commitNodeId = params.commitNodeId;
|
||||
this.commitAllNodeId = params.commitAllNodeId;
|
||||
this.choiseCount = 0;
|
||||
this.setHook();
|
||||
}
|
||||
|
||||
// Hook global click listener on table, load/unload actions
|
||||
StageHelper.prototype.setHook = function() {
|
||||
var stageTab = document.getElementById(this.tabId);
|
||||
|
||||
if (stageTab.addEventListener) {
|
||||
stageTab.addEventListener("click", this.onEvent.bind(this));
|
||||
} else {
|
||||
stageTab.attachEvent("onclick", this.onEvent.bind(this));
|
||||
}
|
||||
|
||||
window.onbeforeunload = this.onPageUnload.bind(this);
|
||||
window.onload = this.onPageLoad.bind(this);
|
||||
}
|
||||
|
||||
// Store table state on leaving the page
|
||||
StageHelper.prototype.onPageUnload = function() {
|
||||
var data = this.collectData();
|
||||
window.sessionStorage.setItem(this.pageSeed, JSON.stringify(data));
|
||||
}
|
||||
|
||||
// Re-store table state on entering the page
|
||||
StageHelper.prototype.onPageLoad = function() {
|
||||
var data = JSON.parse(window.sessionStorage.getItem(this.pageSeed));
|
||||
var stage = document.getElementById(this.tabId);
|
||||
|
||||
for (var i = stage.rows.length - 1; i >= 0; i--) {
|
||||
var tr = stage.rows[i];
|
||||
if (tr.parentNode.tagName == "THEAD") continue;
|
||||
var context = tr.parentNode.className;
|
||||
var cmd = data[tr.cells[1].innerText];
|
||||
if (!cmd) continue;
|
||||
|
||||
this.formatTR(tr, cmd, context);
|
||||
this.choiseCount += (this.countChoiceImpact(cmd) > 0) ? 1 : 0;
|
||||
}
|
||||
|
||||
this.updateMenu();
|
||||
}
|
||||
|
||||
// Event handler, change status
|
||||
StageHelper.prototype.onEvent = function (event) {
|
||||
if (!event.target) {
|
||||
if (event.srcElement) { event.target = event.srcElement; }
|
||||
else { return; }
|
||||
}
|
||||
|
||||
if (event.target.tagName != "A") return;
|
||||
|
||||
var td = event.target.parentNode;
|
||||
if (!td || td.tagName != "TD" || td.className != "cmd") return;
|
||||
|
||||
var cmd = event.target.innerText;
|
||||
var tr = td.parentNode;
|
||||
var context = tr.parentNode.className;
|
||||
|
||||
switch (cmd) {
|
||||
case "add": cmd = "A"; break;
|
||||
case "remove": cmd = "R"; break;
|
||||
case "ignore": cmd = "I"; break;
|
||||
case "reset": cmd = "?"; break;
|
||||
}
|
||||
|
||||
this.formatTR(tr, cmd, context);
|
||||
this.choiseCount += this.countChoiceImpact(cmd);
|
||||
this.updateMenu();
|
||||
}
|
||||
|
||||
// Update action counter -> affects menu update after
|
||||
StageHelper.prototype.countChoiceImpact = function (cmd) {
|
||||
if ("ARI".indexOf(cmd) > -1) { return 1; }
|
||||
else if ("?".indexOf(cmd) > -1) { return -1; }
|
||||
else { alert("Unknown command"); }
|
||||
}
|
||||
|
||||
// Re-format table line
|
||||
StageHelper.prototype.formatTR = function (tr, cmd, context) {
|
||||
var cmdReset = "<a>reset</a>";
|
||||
var cmdLocal = "<a>add</a>";
|
||||
var cmdRemote = "<a>ignore</a><a>remove</a>";
|
||||
|
||||
tr.cells[0].innerText = cmd;
|
||||
if (cmd == "?") {
|
||||
tr.cells[0].style.color = "#CCC"; //grey
|
||||
tr.cells[2].innerHTML = (context == "local") ? cmdLocal : cmdRemote;
|
||||
} else {
|
||||
tr.cells[0].style.color = "";
|
||||
tr.cells[2].innerHTML = cmdReset;
|
||||
}
|
||||
}
|
||||
|
||||
// Update menu items visibility
|
||||
StageHelper.prototype.updateMenu = function () {
|
||||
if (this.choiseCount > 0) {
|
||||
document.getElementById(this.commitNodeId).style.display = "inline";
|
||||
document.getElementById(this.commitAllNodeId).style.display = "none";
|
||||
} else {
|
||||
document.getElementById(this.commitNodeId).style.display = "none";
|
||||
document.getElementById(this.commitAllNodeId).style.display = "inline";
|
||||
}
|
||||
}
|
||||
|
||||
// Submin stage state to the server
|
||||
StageHelper.prototype.submit = function () {
|
||||
var data = this.collectData();
|
||||
submitSapeventForm(data, this.formAction);
|
||||
}
|
||||
|
||||
// Extract data from the table
|
||||
StageHelper.prototype.collectData = function () {
|
||||
var stage = document.getElementById(this.tabId);
|
||||
var data = {};
|
||||
|
||||
for (var i = 0; i < stage.rows.length; i++) {
|
||||
var row = stage.rows[i];
|
||||
if (row.parentNode.tagName == "THEAD") continue;
|
||||
data[row.cells[1].innerText] = row.cells[0].innerText;
|
||||
}
|
||||
|
||||
return data;
|
||||
}
|
41
src/zabapgit_js_common.w3mi.xml
Normal file
41
src/zabapgit_js_common.w3mi.xml
Normal file
|
@ -0,0 +1,41 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_W3MI" serializer_version="v2.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<NAME>ZABAPGIT_JS_COMMON</NAME>
|
||||
<TEXT>Abapgit common JS library</TEXT>
|
||||
<PARAMS>
|
||||
<WWWPARAMS>
|
||||
<RELID>MI</RELID>
|
||||
<OBJID>ZABAPGIT_JS_COMMON</OBJID>
|
||||
<NAME>fileextension</NAME>
|
||||
<VALUE>.js</VALUE>
|
||||
</WWWPARAMS>
|
||||
<WWWPARAMS>
|
||||
<RELID>MI</RELID>
|
||||
<OBJID>ZABAPGIT_JS_COMMON</OBJID>
|
||||
<NAME>filename</NAME>
|
||||
<VALUE>common.js</VALUE>
|
||||
</WWWPARAMS>
|
||||
<WWWPARAMS>
|
||||
<RELID>MI</RELID>
|
||||
<OBJID>ZABAPGIT_JS_COMMON</OBJID>
|
||||
<NAME>filesize</NAME>
|
||||
<VALUE>6500</VALUE>
|
||||
</WWWPARAMS>
|
||||
<WWWPARAMS>
|
||||
<RELID>MI</RELID>
|
||||
<OBJID>ZABAPGIT_JS_COMMON</OBJID>
|
||||
<NAME>mimetype</NAME>
|
||||
<VALUE>text/javascript</VALUE>
|
||||
</WWWPARAMS>
|
||||
<WWWPARAMS>
|
||||
<RELID>MI</RELID>
|
||||
<OBJID>ZABAPGIT_JS_COMMON</OBJID>
|
||||
<NAME>version</NAME>
|
||||
<VALUE/>
|
||||
</WWWPARAMS>
|
||||
</PARAMS>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
|
@ -34,7 +34,16 @@ CLASS lcl_object_w3super DEFINITION INHERITING FROM lcl_objects_super ABSTRACT.
|
|||
RAISING lcx_exception.
|
||||
|
||||
METHODS patch_size
|
||||
IMPORTING iv_size TYPE i
|
||||
IMPORTING iv_size TYPE i OPTIONAL " Overwrite if given
|
||||
EXPORTING ev_size TYPE i " Return size as integer
|
||||
CHANGING ct_params TYPE ty_wwwparams_tt " Param table to patch
|
||||
RAISING lcx_exception.
|
||||
|
||||
METHODS patch_filename
|
||||
CHANGING ct_params TYPE ty_wwwparams_tt
|
||||
RAISING lcx_exception.
|
||||
|
||||
METHODS clear_version
|
||||
CHANGING ct_params TYPE ty_wwwparams_tt
|
||||
RAISING lcx_exception.
|
||||
|
||||
|
@ -97,7 +106,6 @@ CLASS lcl_object_w3super IMPLEMENTATION.
|
|||
DATA lt_w3html TYPE STANDARD TABLE OF w3html.
|
||||
DATA lt_w3params TYPE STANDARD TABLE OF wwwparams.
|
||||
DATA lv_xstring TYPE xstring.
|
||||
DATA ls_wwwparam LIKE LINE OF lt_w3params.
|
||||
DATA lv_size TYPE int4.
|
||||
|
||||
SELECT SINGLE * INTO CORRESPONDING FIELDS OF ms_key
|
||||
|
@ -137,12 +145,15 @@ CLASS lcl_object_w3super IMPLEMENTATION.
|
|||
lcx_exception=>raise( 'Cannot read W3xx data' ).
|
||||
ENDIF.
|
||||
|
||||
READ TABLE lt_w3params INTO ls_wwwparam WITH KEY name = 'filesize' ##NO_TEXT.
|
||||
IF sy-subrc IS NOT INITIAL.
|
||||
lcx_exception=>raise( 'Cannot read W3xx filesize' ).
|
||||
ENDIF.
|
||||
" Condense size string + get size to local integer
|
||||
patch_size( IMPORTING ev_size = lv_size
|
||||
CHANGING ct_params = lt_w3params ).
|
||||
|
||||
lv_size = ls_wwwparam-value.
|
||||
" Remove file path (for security concerns)
|
||||
patch_filename( CHANGING ct_params = lt_w3params ).
|
||||
|
||||
" Clear version
|
||||
clear_version( CHANGING ct_params = lt_w3params ).
|
||||
|
||||
CASE ms_key-relid.
|
||||
WHEN 'MI'.
|
||||
|
@ -214,10 +225,8 @@ CLASS lcl_object_w3super IMPLEMENTATION.
|
|||
iv_ext = get_ext( lt_w3params ) ).
|
||||
WHEN OTHERS.
|
||||
lcx_exception=>raise( 'W3xx: Unknown serializer version' ).
|
||||
|
||||
ENDCASE.
|
||||
|
||||
|
||||
CASE ms_key-relid.
|
||||
WHEN 'MI'.
|
||||
CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
|
||||
|
@ -382,11 +391,45 @@ CLASS lcl_object_w3super IMPLEMENTATION.
|
|||
lcx_exception=>raise( |W3xx: Cannot find file size for { ms_key-objid }| ).
|
||||
ENDIF.
|
||||
|
||||
IF iv_size IS NOT INITIAL.
|
||||
<param>-value = iv_size.
|
||||
SHIFT <param>-value LEFT DELETING LEADING space.
|
||||
ENDIF.
|
||||
CONDENSE <param>-value.
|
||||
|
||||
ev_size = <param>-value.
|
||||
|
||||
ENDMETHOD. " patch_size.
|
||||
|
||||
METHOD patch_filename.
|
||||
|
||||
FIELD-SYMBOLS <param> LIKE LINE OF ct_params.
|
||||
|
||||
READ TABLE ct_params ASSIGNING <param> WITH KEY name = 'filename'.
|
||||
|
||||
IF sy-subrc > 0.
|
||||
lcx_exception=>raise( |W3xx: Cannot find file name for { ms_key-objid }| ).
|
||||
ENDIF.
|
||||
|
||||
" Remove path
|
||||
<param>-value = lcl_path=>get_filename_from_syspath( |{ <param>-value }| ).
|
||||
|
||||
ENDMETHOD. " patch_filename.
|
||||
|
||||
METHOD clear_version.
|
||||
|
||||
FIELD-SYMBOLS <param> LIKE LINE OF ct_params.
|
||||
|
||||
READ TABLE ct_params ASSIGNING <param> WITH KEY name = 'version'.
|
||||
|
||||
IF sy-subrc > 0.
|
||||
lcx_exception=>raise( |W3xx: Cannot find version for { ms_key-objid }| ).
|
||||
ENDIF.
|
||||
|
||||
" Clear version
|
||||
CLEAR <param>-value.
|
||||
|
||||
ENDMETHOD. " clear_version.
|
||||
|
||||
METHOD lif_object~compare_to_remote_version.
|
||||
CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result.
|
||||
ENDMETHOD.
|
||||
|
|
|
@ -20,9 +20,6 @@ INTERFACE lif_gui_page.
|
|||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper
|
||||
RAISING lcx_exception.
|
||||
|
||||
METHODS get_assets
|
||||
RETURNING VALUE(rt_assets) TYPE tt_web_assets.
|
||||
|
||||
ENDINTERFACE.
|
||||
|
||||
CLASS lcl_gui_page_super DEFINITION ABSTRACT.
|
||||
|
@ -72,9 +69,6 @@ CLASS lcl_gui_page_super DEFINITION ABSTRACT.
|
|||
IMPORTING iv_url TYPE string
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
|
||||
|
||||
PRIVATE SECTION.
|
||||
METHODS styles RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
CLASS lcl_gui_page_super IMPLEMENTATION.
|
||||
|
@ -227,15 +221,9 @@ CLASS lcl_gui_page_super IMPLEMENTATION.
|
|||
ro_html->add( '<html>' ). "#EC NOTEXT
|
||||
ro_html->add( '<head>' ). "#EC NOTEXT
|
||||
ro_html->add( '<title>abapGit</title>' ). "#EC NOTEXT
|
||||
ro_html->add( styles( ) ).
|
||||
|
||||
IF io_include_style IS BOUND.
|
||||
ro_html->add( '<style type="text/css">' ). "#EC NOTEXT
|
||||
ro_html->add( io_include_style ).
|
||||
ro_html->add( '</style>' ). "#EC NOTEXT
|
||||
ENDIF.
|
||||
|
||||
ro_html->add( '<link rel="stylesheet" type="text/css" href="css/common.css">' ).
|
||||
ro_html->add( '<meta http-equiv="content-type" content="text/html; charset=utf-8">' ). "#EC NOTEXT
|
||||
ro_html->add( '<script type="text/javascript" src="js/common.js"></script>' ). "#EC NOTEXT
|
||||
ro_html->add( '</head>' ). "#EC NOTEXT
|
||||
ro_html->add( '<body>' ). "#EC NOTEXT
|
||||
|
||||
|
@ -277,39 +265,14 @@ CLASS lcl_gui_page_super IMPLEMENTATION.
|
|||
ro_html->add( '<img src="img/logo" >' ). "#EC NOTEXT
|
||||
ro_html->add( '<table width="100%"><tr><td width="40%"></td><td>' ). "#EC NOTEXT
|
||||
ro_html->add( |<span class="version">{ gc_abap_version }</span>| ). "#EC NOTEXT
|
||||
ro_html->add( '</td><td id="stdout" width="40%"></td></tr></table>' ). "#EC NOTEXT
|
||||
ro_html->add( '</td><td id="debug-output" width="40%"></td></tr></table>' ). "#EC NOTEXT
|
||||
ro_html->add( '</div>' ). "#EC NOTEXT
|
||||
ro_html->add( '</body>' ). "#EC NOTEXT
|
||||
|
||||
" Common JS routines
|
||||
_add '<script type="text/javascript">' . "#EC NOTEXT
|
||||
|
||||
_add 'function debugOutput(text, dstID) {'. "#EC NOTEXT
|
||||
_add ' var stdout = document.getElementById(dstID || "stdout");'. "#EC NOTEXT
|
||||
_add ' var wrapped = "<p>" + text + "</p>";'. "#EC NOTEXT
|
||||
_add ' stdout.innerHTML = stdout.innerHTML + wrapped;'. "#EC NOTEXT
|
||||
_add '}'. "#EC NOTEXT
|
||||
|
||||
_add 'function submitForm(params, action) {'. "#EC NOTEXT
|
||||
_add ' var form = document.createElement("form"); '. "#EC NOTEXT
|
||||
_add ' form.setAttribute("method", "post"); '. "#EC NOTEXT
|
||||
_add ' form.setAttribute("action", "sapevent:" + action); '. "#EC NOTEXT
|
||||
_add ' for(var key in params) {'. "#EC NOTEXT
|
||||
_add ' var hiddenField = document.createElement("input"); '. "#EC NOTEXT
|
||||
_add ' hiddenField.setAttribute("type", "hidden"); '. "#EC NOTEXT
|
||||
_add ' hiddenField.setAttribute("name", key); '. "#EC NOTEXT
|
||||
_add ' hiddenField.setAttribute("value", params[key]); '. "#EC NOTEXT
|
||||
_add ' form.appendChild(hiddenField); '. "#EC NOTEXT
|
||||
_add ' }'. "#EC NOTEXT
|
||||
_add ' document.body.appendChild(form); '. "#EC NOTEXT
|
||||
_add ' form.submit(); '. "#EC NOTEXT
|
||||
_add '}'. "#EC NOTEXT
|
||||
|
||||
_add '</script>'. "#EC NOTEXT
|
||||
|
||||
IF io_include_script IS BOUND.
|
||||
ro_html->add( '<script type="text/javascript">' ).
|
||||
ro_html->add( io_include_script ).
|
||||
ro_html->add( 'debugOutput("js: OK");' ).
|
||||
ro_html->add( '</script>' ).
|
||||
ENDIF.
|
||||
|
||||
|
@ -338,348 +301,6 @@ CLASS lcl_gui_page_super IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD styles.
|
||||
|
||||
CREATE OBJECT ro_html.
|
||||
|
||||
_add '<style type="text/css">'.
|
||||
|
||||
" Global styles
|
||||
_add '/* GLOBALS */'.
|
||||
_add 'body {'.
|
||||
_add ' font-family: Arial,Helvetica,sans-serif;'.
|
||||
_add ' font-size: 12pt;'.
|
||||
_add ' background: #E8E8E8;'.
|
||||
_add '}'.
|
||||
_add 'a, a:visited {'.
|
||||
_add ' color: #4078c0;'.
|
||||
_add ' text-decoration: none;'.
|
||||
_add '}'.
|
||||
_add 'a:hover, a:active {'.
|
||||
_add ' cursor: pointer;'.
|
||||
_add ' text-decoration: underline;'.
|
||||
_add '}'.
|
||||
_add 'img { border: 0px; vertical-align: middle; }'.
|
||||
_add 'table { border-collapse: collapse; }'.
|
||||
_add 'pre { display: inline; }'.
|
||||
|
||||
_add 'form input, textarea, select {'.
|
||||
_add ' border: 1px solid #DDD;'.
|
||||
_add ' padding: 3px 6px;'.
|
||||
_add '}'.
|
||||
_add 'form input:focus, textarea:focus {'.
|
||||
_add ' border: 1px solid #8cadd9;'.
|
||||
_add '}'.
|
||||
|
||||
" Modifiers
|
||||
_add '/* MODIFIERS */'.
|
||||
_add '.grey { color: lightgrey !important; }'.
|
||||
_add '.emphasis { font-weight: bold !important; }'.
|
||||
_add '.attention { color: red !important; }'.
|
||||
_add '.crossout { text-decoration: line-through !important; }'.
|
||||
_add '.right { text-align:right; }'.
|
||||
_add '.paddings { padding: 0.5em 0.5em; }'.
|
||||
_add '.pad-sides { padding: 0 0.3em; }'.
|
||||
_add '.pad4px { padding: 4px; }'.
|
||||
|
||||
" Structure div styles: header, footer, toc
|
||||
_add '/* STRUCTURE DIVS, HEADER & FOOTER */'.
|
||||
_add 'td.headpad { padding-top: 11px; }'.
|
||||
_add 'td.logo { width: 164px; }'.
|
||||
_add 'div#header {'.
|
||||
_add ' padding: 0.5em 0.5em;'.
|
||||
_add ' border-bottom: 3px double lightgrey;'.
|
||||
_add '}'.
|
||||
_add 'div#toc {'.
|
||||
_add ' padding: 0.5em 1em;'.
|
||||
_add ' background-color: #f2f2f2;'.
|
||||
_add '}'.
|
||||
_add 'div#toc div.toc_grid {'.
|
||||
_add ' margin: -0.3em 0em;'.
|
||||
_add '}'.
|
||||
_add 'div#toc div.toc_grid a {'.
|
||||
_add ' color: #ccc;'.
|
||||
_add '}'.
|
||||
_add 'div#toc:hover div.toc_grid a {'.
|
||||
_add ' color: #4078c0;'.
|
||||
_add '}'.
|
||||
_add 'div#toc div.toc_row {'.
|
||||
_add ' margin: 0.3em 0em;'.
|
||||
_add '}'.
|
||||
_add 'div#footer {'.
|
||||
_add ' padding: 0.5em 1em;'.
|
||||
_add ' border-top: 3px double lightgrey;'.
|
||||
_add ' text-align: center;'.
|
||||
_add '}'.
|
||||
_add 'div.dummydiv {'.
|
||||
_add ' background-color: #f2f2f2;'.
|
||||
_add ' padding: 0.5em 1em;'.
|
||||
_add ' text-align: center;'.
|
||||
_add '}'.
|
||||
_add 'span.version {'.
|
||||
_add ' display: block;'.
|
||||
_add ' color: grey;'.
|
||||
_add ' margin-top: 0.3em;'.
|
||||
_add '}'.
|
||||
_add 'span.page_title {'.
|
||||
_add ' font-weight: normal;'.
|
||||
_add ' font-size: 18pt;'.
|
||||
_add ' color: #bbb;'.
|
||||
_add ' padding-left: 0.4em;'.
|
||||
_add '}'.
|
||||
|
||||
" Menu styles
|
||||
_add '/* MENU */'.
|
||||
_add 'div.menu { display: inline; }'.
|
||||
_add 'div.menu .menu_end { border-right: 0px !important; }'.
|
||||
_add 'div.menu a {'.
|
||||
_add ' padding-left: 0.5em;'.
|
||||
_add ' padding-right: 0.5em;'.
|
||||
_add ' border-right: 1px solid lightgrey;'.
|
||||
_add ' font-size: 12pt;'.
|
||||
_add '}'.
|
||||
_add 'div.menu_vertical { display: inline; }'.
|
||||
_add 'div.menu_vertical a {'.
|
||||
_add ' display: block; '.
|
||||
_add ' font-size: 12pt;'.
|
||||
_add '}'.
|
||||
|
||||
" Dropdown styles :mechanics
|
||||
_add '/*DROP DOWN*/'.
|
||||
_add '.dropdown {'.
|
||||
_add ' position: relative;'.
|
||||
_add ' display: inline;'.
|
||||
_add '}'.
|
||||
_add '.dropdown_angle {'.
|
||||
_add ' position: absolute !important;'.
|
||||
_add ' right: -4px;'.
|
||||
_add ' top: -1px;'.
|
||||
_add '}'.
|
||||
_add '.dropbtn_angle {'.
|
||||
_add ' width: 0;'.
|
||||
_add ' height: 0;'.
|
||||
_add ' border-left: 7px solid transparent;'.
|
||||
_add ' border-right: 7px solid transparent;'.
|
||||
_add ' border-bottom: 7px solid #4078c0;'.
|
||||
_add ' transform: rotate(45deg);'.
|
||||
_add ' -ms-transform: rotate(45deg);'.
|
||||
_add '}'.
|
||||
_add '.dropdown_content {'.
|
||||
_add ' display: none;'.
|
||||
_add ' z-index: 1;'.
|
||||
_add ' position: absolute;'.
|
||||
_add ' right: -12px;'.
|
||||
_add ' top: 1em;'.
|
||||
_add ' padding: 6px 10px 10px 10px;'.
|
||||
_add ' white-space: nowrap;'.
|
||||
_add '}'.
|
||||
_add '.dropdown div.minizone {'.
|
||||
_add ' display: none;'.
|
||||
_add ' z-index: 1;'.
|
||||
_add ' position: absolute;'.
|
||||
_add ' padding: 0px;'.
|
||||
_add ' width: 16px;'.
|
||||
_add ' height: 16px;'.
|
||||
_add ' bottom: 0px;'.
|
||||
_add ' left: -16px;'.
|
||||
_add '}'.
|
||||
_add '.dropdown_angle .dropdown_content {'.
|
||||
_add ' top: -1px;'.
|
||||
_add '}'.
|
||||
|
||||
_add '.dropdown:hover .dropdown_content { display: block; }'.
|
||||
_add '.dropdown:hover .minizone { display: block; }'.
|
||||
|
||||
" Dropdown styles :styling
|
||||
_add '.dropdown_content a {'.
|
||||
_add ' padding: 0.2em;'.
|
||||
_add ' background-color: #f9f9f9;'.
|
||||
_add ' text-decoration: none;'.
|
||||
_add ' display: block;'.
|
||||
_add ' border: none !important;'.
|
||||
_add '}'.
|
||||
|
||||
|
||||
_add '.dropdown_content div.box {'.
|
||||
_add ' border-bottom: 1px solid #C0C0C0;'.
|
||||
_add ' border-right: 1px solid #C0C0C0;'.
|
||||
_add ' background-color: #f9f9f9;'.
|
||||
_add ' padding: 2px;'.
|
||||
_add '}'.
|
||||
|
||||
_add '.dropdown_content td { text-align: left; padding: 2px; }'. " TODO refactor
|
||||
_add '.dropdown_content td a { padding: 0em 0.2em; }'. " TODO refactor
|
||||
_add '.dropdown_content td.icon { padding: 0 3px 0 6px; }'. " TODO refactor
|
||||
|
||||
_add '.dropdown_content a:hover { background-color: #f1f1f1 }'.
|
||||
_add '.dropdown:hover .dropbtn { color: #79a0d2; }'.
|
||||
|
||||
" REPOSITORY
|
||||
_add '/* REPOSITORY */'.
|
||||
_add 'div.repo {'.
|
||||
_add ' margin-top: 3px;'.
|
||||
_add ' background-color: #f2f2f2;'.
|
||||
_add ' padding: 0.5em 1em 0.5em 1em;'.
|
||||
_add '}'.
|
||||
_add '.repo_name span.name {'.
|
||||
_add ' font-weight: bold;'.
|
||||
_add ' color: #333;'.
|
||||
_add ' font-size: 14pt;'.
|
||||
_add '}'.
|
||||
_add '.repo_name span.url {'.
|
||||
_add ' color: #ccc;'.
|
||||
_add ' font-size: 12pt;'.
|
||||
_add ' margin-left: 0.5em;'.
|
||||
_add '}'.
|
||||
_add '.repo_name img {'.
|
||||
_add ' vertical-align: baseline;'.
|
||||
_add ' margin: 0 5px 0 5px;'.
|
||||
_add '}'.
|
||||
_add '.repo_attr {'.
|
||||
_add ' color: grey;'.
|
||||
_add ' font-size: 12pt;'.
|
||||
_add '}'.
|
||||
_add '.repo_attr span {'.
|
||||
_add ' margin-left: 0.2em;'.
|
||||
_add ' margin-right: 0.5em;'.
|
||||
_add '}'.
|
||||
_add '.repo_attr span.bg_marker {'.
|
||||
_add ' border: 1px solid #d2d2d2;'.
|
||||
_add ' border-radius: 3px;'.
|
||||
_add ' background: #d8d8d8;'.
|
||||
_add ' color: #fff;'.
|
||||
_add ' font-size: 8pt;'.
|
||||
_add ' padding: 4px 2px 3px 2px;'.
|
||||
_add '}'.
|
||||
|
||||
" Branch tag design
|
||||
_add '.repo_attr span.branch {'.
|
||||
_add ' padding: 2px 4px;'.
|
||||
_add ' border: 1px solid #d9d9d9;'.
|
||||
_add ' border-radius: 4px;'.
|
||||
_add ' background-color: #e2e2e2;'.
|
||||
_add '}'.
|
||||
_add '.repo_attr span.branch_head {'.
|
||||
_add ' border-color: #d8dff3;'.
|
||||
_add ' background-color: #eceff9;'.
|
||||
_add '}'.
|
||||
_add '.repo_attr span.branch_branch {'.
|
||||
_add ' border-color: #e7d9b1;'.
|
||||
_add ' background-color: #f8f0d8;'.
|
||||
_add '}'.
|
||||
|
||||
" Other and outdated (?) styles
|
||||
_add '/* MISC AND REFACTOR */'.
|
||||
_add '.hidden-submit {'.
|
||||
_add ' border: 0 none;'.
|
||||
_add ' height: 0;'.
|
||||
_add ' width: 0;'.
|
||||
_add ' padding: 0;'.
|
||||
_add ' margin: 0;'.
|
||||
_add ' overflow: hidden;'.
|
||||
_add '}'.
|
||||
_add '#stdout {'.
|
||||
_add ' text-align: right;'.
|
||||
_add ' padding-right: 0.5em;'.
|
||||
_add ' color: #ccc;'.
|
||||
_add ' font-style: italic;'.
|
||||
_add ' font-size: small;'.
|
||||
_add '}'.
|
||||
|
||||
_add '</style>'.
|
||||
|
||||
ENDMETHOD. "common styles
|
||||
|
||||
METHOD lif_gui_page~get_assets. " Common images here
|
||||
|
||||
DATA ls_image TYPE ty_web_asset.
|
||||
|
||||
* see https://github.com/larshp/abapGit/issues/201 for source SVG
|
||||
ls_image-url = 'img/logo' ##NO_TEXT.
|
||||
ls_image-content =
|
||||
'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='.
|
||||
APPEND ls_image TO rt_assets.
|
||||
|
||||
ENDMETHOD. "lif_gui_page~get_assets
|
||||
|
||||
METHOD lif_gui_page~on_event.
|
||||
ev_state = gc_event_state-not_handled.
|
||||
ENDMETHOD. "lif_gui_page~on_event
|
||||
|
|
|
@ -32,8 +32,6 @@ CLASS lcl_gui_page_commit DEFINITION FINAL INHERITING FROM lcl_gui_page_super.
|
|||
render_form
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper
|
||||
RAISING lcx_exception,
|
||||
styles
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper,
|
||||
scripts
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
|
||||
|
||||
|
@ -74,7 +72,7 @@ CLASS lcl_gui_page_commit IMPLEMENTATION.
|
|||
|
||||
CREATE OBJECT ro_html.
|
||||
|
||||
ro_html->add( header( io_include_style = styles( ) ) ).
|
||||
ro_html->add( header( ) ).
|
||||
ro_html->add( title( 'COMMIT' ) ).
|
||||
|
||||
ro_html->add( '<div class="repo">' ).
|
||||
|
@ -200,7 +198,7 @@ CLASS lcl_gui_page_commit IMPLEMENTATION.
|
|||
CREATE OBJECT ro_html.
|
||||
CREATE OBJECT lo_toolbar.
|
||||
|
||||
lo_toolbar->add( iv_act = 'submitCommit();'
|
||||
lo_toolbar->add( iv_act = 'submitFormById(''commit_form'');'
|
||||
iv_txt = 'Commit'
|
||||
iv_typ = gc_action_type-onclick
|
||||
iv_opt = gc_html_opt-emphas ) ##NO_TEXT.
|
||||
|
@ -215,58 +213,10 @@ CLASS lcl_gui_page_commit IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD. "render_menu
|
||||
|
||||
METHOD styles.
|
||||
|
||||
CREATE OBJECT ro_html.
|
||||
|
||||
_add '/* STAGE */'.
|
||||
_add '.stage_tab {'.
|
||||
_add ' border: 1px solid #DDD;'.
|
||||
_add ' background: #fff;'.
|
||||
_add ' margin-top: 0.2em;'.
|
||||
_add '}'.
|
||||
_add '.stage_tab td {'.
|
||||
_add ' border-top: 1px solid #eee;'.
|
||||
_add ' color: #333;'.
|
||||
_add ' vertical-align: middle;'.
|
||||
_add ' padding: 2px 0.5em;'.
|
||||
_add '}'.
|
||||
_add '.stage_tab td.method {'.
|
||||
_add ' color: #ccc;'.
|
||||
_add '}'.
|
||||
_add '.stage_tab tr.firstrow td { border-top: 0px; } '.
|
||||
_add '.stage_tab tr.title td {'.
|
||||
_add ' color: #BBB;'.
|
||||
_add ' font-size: 10pt;'.
|
||||
_add ' background-color: #edf2f9;'.
|
||||
_add ' padding: 4px 0.5em;'.
|
||||
_add ' text-align: center;'.
|
||||
_add '}'.
|
||||
|
||||
_add '/* COMMIT */'.
|
||||
_add 'div.form_div {'.
|
||||
_add ' margin: 0.5em 0em;'.
|
||||
_add ' background-color: #F8F8F8;'.
|
||||
_add ' padding: 1em 1em;'.
|
||||
_add '}'.
|
||||
_add 'div.form_div td.field_name {'.
|
||||
_add ' color: #BBB;'.
|
||||
_add ' padding-right: 1em;'.
|
||||
_add '}'.
|
||||
|
||||
ENDMETHOD. "styles
|
||||
|
||||
METHOD scripts.
|
||||
|
||||
CREATE OBJECT ro_html.
|
||||
|
||||
_add 'function setInitialFocus() {'.
|
||||
_add ' document.getElementById("commit_msg").focus();'.
|
||||
_add '}'.
|
||||
_add 'function submitCommit() {'.
|
||||
_add ' document.getElementById("commit_form").submit();'.
|
||||
_add '}'.
|
||||
_add 'setInitialFocus();'.
|
||||
_add 'setInitialFocus("commit_msg");'.
|
||||
|
||||
ENDMETHOD. "scripts
|
||||
|
||||
|
|
|
@ -13,9 +13,6 @@ CLASS lcl_gui_page_db_display DEFINITION FINAL INHERITING FROM lcl_gui_page_supe
|
|||
PRIVATE SECTION.
|
||||
DATA: ms_key TYPE lcl_persistence_db=>ty_content.
|
||||
|
||||
METHODS styles
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
CLASS lcl_gui_page_db_display IMPLEMENTATION.
|
||||
|
@ -47,7 +44,7 @@ CLASS lcl_gui_page_db_display IMPLEMENTATION.
|
|||
format = cl_abap_format=>e_html_attr ).
|
||||
|
||||
CREATE OBJECT ro_html.
|
||||
ro_html->add( header( io_include_style = styles( ) ) ).
|
||||
ro_html->add( header( ) ).
|
||||
ro_html->add( title( 'CONFIG DISPLAY' ) ).
|
||||
|
||||
ro_html->add( '<div class="db_entry">' ).
|
||||
|
@ -69,43 +66,6 @@ CLASS lcl_gui_page_db_display IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD styles.
|
||||
|
||||
CREATE OBJECT ro_html.
|
||||
|
||||
_add '/* DB ENTRY DISPLAY */'.
|
||||
_add 'div.db_entry {'.
|
||||
_add ' background-color: #f2f2f2;'.
|
||||
_add ' padding: 0.5em;'.
|
||||
_add '}'.
|
||||
|
||||
_add 'div.db_entry pre {'.
|
||||
_add ' display: block;'.
|
||||
_add ' overflow: hidden;'.
|
||||
_add ' word-wrap:break-word;'.
|
||||
_add ' white-space: pre-wrap;'.
|
||||
_add ' background-color: #eaeaea;'.
|
||||
_add ' padding: 0.5em;'.
|
||||
_add ' margin: 0.5em 0em;'.
|
||||
_add ' width: 50em;'.
|
||||
_add '}'.
|
||||
|
||||
_add 'div.db_entry table.toolbar {'.
|
||||
_add ' width: 50em;'.
|
||||
_add '}'.
|
||||
|
||||
_add 'table.tag {'.
|
||||
_add ' display: inline-block;'.
|
||||
_add ' border: 1px #b3c1cc solid;'.
|
||||
_add ' background-color: #eee;'.
|
||||
_add ' border-radius: 3px;'.
|
||||
_add ' margin-right: 0.5em; '.
|
||||
_add '}'.
|
||||
_add 'table.tag td { padding: 0.2em 0.5em; }'.
|
||||
_add 'table.tag td.label { background-color: #b3c1cc; }'.
|
||||
|
||||
ENDMETHOD. "styles
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
CLASS lcl_gui_page_db_edit DEFINITION FINAL INHERITING FROM lcl_gui_page_super.
|
||||
|
@ -119,12 +79,6 @@ CLASS lcl_gui_page_db_edit DEFINITION FINAL INHERITING FROM lcl_gui_page_super.
|
|||
PRIVATE SECTION.
|
||||
DATA: ms_key TYPE lcl_persistence_db=>ty_content.
|
||||
|
||||
METHODS styles
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
|
||||
|
||||
METHODS scripts
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
CLASS lcl_gui_page_db_edit IMPLEMENTATION.
|
||||
|
@ -158,7 +112,7 @@ CLASS lcl_gui_page_db_edit IMPLEMENTATION.
|
|||
CREATE OBJECT ro_html.
|
||||
CREATE OBJECT lo_toolbar.
|
||||
|
||||
ro_html->add( header( io_include_style = styles( ) ) ).
|
||||
ro_html->add( header( ) ).
|
||||
ro_html->add( title( 'CONFIG EDIT' ) ).
|
||||
|
||||
ro_html->add( '<div class="db_entry">' ).
|
||||
|
@ -178,7 +132,7 @@ CLASS lcl_gui_page_db_edit IMPLEMENTATION.
|
|||
ro_html->add( '</form>' ).
|
||||
|
||||
" Menu
|
||||
lo_toolbar->add( iv_act = 'submitDBForm();'
|
||||
lo_toolbar->add( iv_act = 'submitFormById(''db_form'');'
|
||||
iv_txt = 'Save'
|
||||
iv_typ = gc_action_type-onclick
|
||||
iv_opt = gc_html_opt-emphas ) ##NO_TEXT.
|
||||
|
@ -189,42 +143,10 @@ CLASS lcl_gui_page_db_edit IMPLEMENTATION.
|
|||
|
||||
ro_html->add( '</div>' ). "db_entry
|
||||
|
||||
ro_html->add( footer( io_include_script = scripts( ) ) ).
|
||||
ro_html->add( footer( ) ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD styles.
|
||||
|
||||
CREATE OBJECT ro_html.
|
||||
|
||||
_add '/* DB ENTRY DISPLAY */'.
|
||||
_add 'div.db_entry {'.
|
||||
_add ' background-color: #f2f2f2;'.
|
||||
_add ' padding: 0.5em;'.
|
||||
_add '}'.
|
||||
_add 'div.db_entry textarea { margin: 0.5em 0em; }'.
|
||||
_add 'table.tag {'.
|
||||
_add ' display: inline-block;'.
|
||||
_add ' border: 1px #b3c1cc solid;'.
|
||||
_add ' background-color: #eee;'.
|
||||
_add ' border-radius: 3px;'.
|
||||
_add ' margin-right: 0.5em; '.
|
||||
_add '}'.
|
||||
_add 'table.tag td { padding: 0.2em 0.5em; }'.
|
||||
_add 'table.tag td.label { background-color: #b3c1cc; }'.
|
||||
|
||||
ENDMETHOD. "styles
|
||||
|
||||
METHOD scripts.
|
||||
|
||||
CREATE OBJECT ro_html.
|
||||
|
||||
_add 'function submitDBForm() {'.
|
||||
_add ' document.getElementById("db_form").submit();'.
|
||||
_add '}'.
|
||||
|
||||
ENDMETHOD. "scripts
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
CLASS lcl_gui_page_db DEFINITION FINAL INHERITING FROM lcl_gui_page_super.
|
||||
|
@ -233,8 +155,6 @@ CLASS lcl_gui_page_db DEFINITION FINAL INHERITING FROM lcl_gui_page_super.
|
|||
METHODS lif_gui_page~render REDEFINITION.
|
||||
|
||||
PRIVATE SECTION.
|
||||
METHODS styles
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
|
||||
METHODS explain_content
|
||||
IMPORTING is_data TYPE lcl_persistence_db=>ty_content
|
||||
RETURNING VALUE(rv_text) TYPE string
|
||||
|
@ -259,7 +179,7 @@ CLASS lcl_gui_page_db IMPLEMENTATION.
|
|||
|
||||
CREATE OBJECT ro_html.
|
||||
|
||||
ro_html->add( header( io_include_style = styles( ) ) ).
|
||||
ro_html->add( header( ) ).
|
||||
ro_html->add( title( 'DATABASE PERSISTENCY' ) ).
|
||||
|
||||
ro_html->add( '<div class="db_list">' ).
|
||||
|
@ -350,40 +270,4 @@ CLASS lcl_gui_page_db IMPLEMENTATION.
|
|||
ENDCASE.
|
||||
ENDMETHOD. "explain_content
|
||||
|
||||
METHOD styles.
|
||||
|
||||
CREATE OBJECT ro_html.
|
||||
|
||||
_add '/* DB ENTRIES */'.
|
||||
_add 'div.db_list {'.
|
||||
_add ' background-color: #f2f2f2;'.
|
||||
_add ' padding: 0.5em;'.
|
||||
_add '}'.
|
||||
_add 'table.db_tab pre {'.
|
||||
_add ' display: inline-block;'.
|
||||
_add ' overflow: hidden;'.
|
||||
_add ' word-wrap:break-word;'.
|
||||
_add ' white-space: pre-wrap;'.
|
||||
_add ' margin: 0px;'.
|
||||
_add ' width: 30em;'.
|
||||
_add '}'.
|
||||
_add 'table.db_tab tr.firstrow td { padding-top: 0.5em; }'.
|
||||
_add 'table.db_tab th {'.
|
||||
_add ' text-align: left;'.
|
||||
_add ' color: #888;'.
|
||||
_add ' padding: 0.5em;'.
|
||||
_add ' border-bottom: 1px #ddd solid;'.
|
||||
_add '}'.
|
||||
_add 'table.db_tab td {'.
|
||||
_add ' color: #333;'.
|
||||
_add ' padding: 0.5em;'.
|
||||
_add ' vertical-align: top;'.
|
||||
_add '}'.
|
||||
_add 'table.db_tab td.data {'.
|
||||
_add ' color: #888;'.
|
||||
_add ' font-style: italic;'.
|
||||
_add '}'.
|
||||
|
||||
ENDMETHOD. "styles
|
||||
|
||||
ENDCLASS.
|
|
@ -6,8 +6,6 @@ CLASS lcl_gui_page_debuginfo DEFINITION FINAL INHERITING FROM lcl_gui_page_super
|
|||
PUBLIC SECTION.
|
||||
METHODS lif_gui_page~render REDEFINITION.
|
||||
|
||||
METHODS styles
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
|
||||
METHODS scripts
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
|
||||
|
||||
|
@ -25,7 +23,7 @@ CLASS lcl_gui_page_debuginfo IMPLEMENTATION.
|
|||
|
||||
CREATE OBJECT ro_html.
|
||||
|
||||
ro_html->add( header( io_include_style = styles( ) ) ).
|
||||
ro_html->add( header( ) ).
|
||||
ro_html->add( title( 'DEBUG INFO' ) ).
|
||||
|
||||
ro_html->add( '<div id="debug_info" class="debug_container">' ).
|
||||
|
@ -89,23 +87,6 @@ CLASS lcl_gui_page_debuginfo IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD. " render_supported_object_types
|
||||
|
||||
METHOD styles.
|
||||
|
||||
CREATE OBJECT ro_html.
|
||||
|
||||
_add '/* DEBUG INFO STYLES */'.
|
||||
_add 'div.debug_container {'.
|
||||
_add ' padding: 0.5em;'.
|
||||
_add ' font-size: 10pt;'.
|
||||
_add ' color: #444;'.
|
||||
_add ' font-family: Consolas, Courier, monospace;'.
|
||||
_add '}'.
|
||||
_add 'div.debug_container p {'.
|
||||
_add ' margin: 0px;'.
|
||||
_add '}'.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD scripts.
|
||||
|
||||
CREATE OBJECT ro_html.
|
||||
|
|
|
@ -33,7 +33,6 @@ CLASS lcl_gui_page_diff DEFINITION FINAL INHERITING FROM lcl_gui_page_super.
|
|||
PRIVATE SECTION.
|
||||
DATA: mt_diff_files TYPE tt_file_diff.
|
||||
|
||||
METHODS styles RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
|
||||
METHODS render_diff
|
||||
IMPORTING is_diff TYPE ty_file_diff
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
|
||||
|
@ -175,133 +174,6 @@ CLASS lcl_gui_page_diff IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD. "append_diff
|
||||
|
||||
METHOD styles.
|
||||
|
||||
CREATE OBJECT ro_html.
|
||||
|
||||
_add '/* DIFF */'. "#EC NOTEXT
|
||||
_add 'div.diff {'. "#EC NOTEXT
|
||||
_add ' background-color: #f2f2f2;'. "#EC NOTEXT
|
||||
_add ' padding: 0.7em '. "#EC NOTEXT
|
||||
_add '}'. "#EC NOTEXT
|
||||
_add 'div.diff_head {'. "#EC NOTEXT
|
||||
_add ' padding-bottom: 0.7em;'. "#EC NOTEXT
|
||||
_add '}'. "#EC NOTEXT
|
||||
_add 'span.diff_name {'. "#EC NOTEXT
|
||||
_add ' padding-left: 0.5em;'. "#EC NOTEXT
|
||||
_add ' color: grey;'. "#EC NOTEXT
|
||||
_add '}'. "#EC NOTEXT
|
||||
_add 'span.diff_name strong {'. "#EC NOTEXT
|
||||
_add ' color: #333;'. "#EC NOTEXT
|
||||
_add '}'. "#EC NOTEXT
|
||||
_add 'span.diff_banner {'. "#EC NOTEXT
|
||||
_add ' border-style: solid;'. "#EC NOTEXT
|
||||
_add ' border-width: 1px;'. "#EC NOTEXT
|
||||
_add ' border-radius: 3px;'. "#EC NOTEXT
|
||||
_add ' padding-left: 0.3em;'. "#EC NOTEXT
|
||||
_add ' padding-right: 0.3em;'. "#EC NOTEXT
|
||||
_add '}'. "#EC NOTEXT
|
||||
_add '.diff_ins {'. "#EC NOTEXT
|
||||
_add ' border-color: #7bea7b;'. "#EC NOTEXT
|
||||
_add ' background-color: #d3f8d3;'. "#EC NOTEXT
|
||||
_add '}'. "#EC NOTEXT
|
||||
_add '.diff_del {'. "#EC NOTEXT
|
||||
_add ' border-color: #ff667d;'. "#EC NOTEXT
|
||||
_add ' background-color: #ffccd4;'. "#EC NOTEXT
|
||||
_add '}'. "#EC NOTEXT
|
||||
_add '.diff_upd {'. "#EC NOTEXT
|
||||
_add ' border-color: #dada00;'. "#EC NOTEXT
|
||||
_add ' background-color: #ffffcc;'. "#EC NOTEXT
|
||||
_add '}'. "#EC NOTEXT
|
||||
_add 'div.diff_content {'. "#EC NOTEXT
|
||||
_add ' background: #fff;'. "#EC NOTEXT
|
||||
_add ' border-top: 1px solid #DDD;'. "#EC NOTEXT
|
||||
_add ' border-bottom: 1px solid #DDD;'. "#EC NOTEXT
|
||||
_add '}'. "#EC NOTEXT
|
||||
|
||||
_add 'div.diff_head span.state-block {'.
|
||||
_add ' margin-left: 0.5em;'.
|
||||
_add ' font-family: Consolas, Lucida Console, Courier, monospace;'.
|
||||
_add ' display: inline-block;'.
|
||||
_add ' text-align: center;'.
|
||||
_add '}'.
|
||||
_add 'div.diff_head span.state-block span {'.
|
||||
_add ' display: inline-block;'.
|
||||
_add ' padding: 0px 4px;'.
|
||||
_add ' border: 1px solid #000;'.
|
||||
_add '}'.
|
||||
_add 'div.diff_head span.state-block span.added {'.
|
||||
_add ' background-color: #69ad74; '.
|
||||
_add ' border-color: #579e64;'.
|
||||
_add ' color: white;'.
|
||||
_add '}'.
|
||||
_add 'div.diff_head span.state-block span.changed {'.
|
||||
_add ' background-color: #e0c150;'.
|
||||
_add ' border-color: #d4af25;'.
|
||||
_add ' color: white;'.
|
||||
_add '}'.
|
||||
_add 'div.diff_head span.state-block span.mixed {'.
|
||||
_add ' background-color: #e0c150;'.
|
||||
_add ' border-color: #579e64;'.
|
||||
_add ' color: #69ad74;'.
|
||||
_add '}'.
|
||||
_add 'div.diff_head span.state-block span.deleted {'.
|
||||
_add ' background-color: #c76861;'.
|
||||
_add ' border-color: #b8605a;'.
|
||||
_add ' color: white;'.
|
||||
_add '}'.
|
||||
_add 'div.diff_head span.state-block span.none {'.
|
||||
_add ' background-color: #e8e8e8;'.
|
||||
_add ' border-color: #dbdbdb;'.
|
||||
_add ' color: #c8c8c8;'.
|
||||
_add '}'.
|
||||
|
||||
" Table part
|
||||
_add '/* DIFF TABLE */'. "#EC NOTEXT
|
||||
_add 'table.diff_tab {'. "#EC NOTEXT
|
||||
_add ' font-family: Consolas, Courier, monospace;'. "#EC NOTEXT
|
||||
_add ' font-size: 10pt;'. "#EC NOTEXT
|
||||
_add '}'. "#EC NOTEXT
|
||||
_add 'table.diff_tab td,th {'. "#EC NOTEXT
|
||||
_add ' color: #444;'. "#EC NOTEXT
|
||||
_add ' padding-left: 0.5em;'. "#EC NOTEXT
|
||||
_add ' padding-right: 0.5em;'. "#EC NOTEXT
|
||||
_add '}'. "#EC NOTEXT
|
||||
_add 'table.diff_tab th {'. "#EC NOTEXT
|
||||
_add ' text-align: left;'. "#EC NOTEXT
|
||||
_add ' font-weight: normal;'. "#EC NOTEXT
|
||||
_add ' padding-top: 3px;'. "#EC NOTEXT
|
||||
_add ' padding-bottom: 3px;'. "#EC NOTEXT
|
||||
_add '}'. "#EC NOTEXT
|
||||
_add 'table.diff_tab thead.header th {'. "#EC NOTEXT
|
||||
_add ' color: #EEE;'. "#EC NOTEXT
|
||||
_add ' background-color: #BBB;'. "#EC NOTEXT
|
||||
_add ' text-align: left;'. "#EC NOTEXT
|
||||
_add ' font-weight: bold;'. "#EC NOTEXT
|
||||
_add ' padding-left: 0.5em;'. "#EC NOTEXT
|
||||
_add ' font-size: 9pt;'. "#EC NOTEXT
|
||||
_add '}'. "#EC NOTEXT
|
||||
_add 'table.diff_tab thead.nav_line {'. "#EC NOTEXT
|
||||
_add ' background-color: #edf2f9;'. "#EC NOTEXT
|
||||
_add '}'. "#EC NOTEXT
|
||||
_add 'table.diff_tab thead.nav_line th {'. "#EC NOTEXT
|
||||
_add ' color: #bbb;'. "#EC NOTEXT
|
||||
_add '}'. "#EC NOTEXT
|
||||
_add 'table.diff_tab td.num, th.num {'. "#EC NOTEXT
|
||||
_add ' text-align: right;'. "#EC NOTEXT
|
||||
_add ' color: #ccc;'. "#EC NOTEXT
|
||||
_add ' border-left: 1px solid #eee;'. "#EC NOTEXT
|
||||
_add ' border-right: 1px solid #eee;'. "#EC NOTEXT
|
||||
_add '}'. "#EC NOTEXT
|
||||
_add 'table.diff_tab code {'. "#EC NOTEXT
|
||||
_add ' font-family: inherit;'. "#EC NOTEXT
|
||||
_add ' white-space: pre;'. "#EC NOTEXT
|
||||
_add '}'. "#EC NOTEXT
|
||||
_add 'table.diff_tab tbody tr:first-child td { padding-top: 0.5em; }'.
|
||||
_add 'table.diff_tab tbody tr:last-child td { padding-bottom: 0.5em; }'.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD render_diff_head.
|
||||
DATA: lo_html TYPE REF TO lcl_html_helper,
|
||||
ls_stats TYPE lcl_diff=>ty_count.
|
||||
|
@ -467,7 +339,7 @@ CLASS lcl_gui_page_diff IMPLEMENTATION.
|
|||
|
||||
CREATE OBJECT ro_html.
|
||||
|
||||
ro_html->add( header( io_include_style = styles( ) ) ).
|
||||
ro_html->add( header( ) ).
|
||||
ro_html->add( title( 'DIFF' ) ).
|
||||
|
||||
LOOP AT mt_diff_files INTO ls_diff_file.
|
||||
|
|
|
@ -9,8 +9,7 @@ CLASS lcl_gui_page_main DEFINITION FINAL INHERITING FROM lcl_gui_page_super.
|
|||
constructor
|
||||
RAISING lcx_exception,
|
||||
lif_gui_page~render REDEFINITION,
|
||||
lif_gui_page~on_event REDEFINITION,
|
||||
lif_gui_page~get_assets REDEFINITION.
|
||||
lif_gui_page~on_event REDEFINITION.
|
||||
|
||||
PRIVATE SECTION.
|
||||
CONSTANTS: BEGIN OF c_actions,
|
||||
|
@ -24,8 +23,6 @@ CLASS lcl_gui_page_main DEFINITION FINAL INHERITING FROM lcl_gui_page_super.
|
|||
METHODS:
|
||||
test_changed_by
|
||||
RAISING lcx_exception,
|
||||
styles
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper,
|
||||
retrieve_active_repo
|
||||
RAISING lcx_exception,
|
||||
render_toc
|
||||
|
@ -125,7 +122,7 @@ CLASS lcl_gui_page_main IMPLEMENTATION.
|
|||
|
||||
CREATE OBJECT ro_html.
|
||||
|
||||
ro_html->add( header( io_include_style = styles( ) ) ).
|
||||
ro_html->add( header( ) ).
|
||||
ro_html->add( title( iv_title = 'HOME'
|
||||
io_menu = build_main_menu( ) ) ).
|
||||
|
||||
|
@ -338,255 +335,4 @@ CLASS lcl_gui_page_main IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD. "render_repo
|
||||
|
||||
**********************************************************************
|
||||
* ASSETS, STYLES, SCRIPTS
|
||||
**********************************************************************
|
||||
|
||||
METHOD styles.
|
||||
|
||||
CREATE OBJECT ro_html.
|
||||
|
||||
_add '/* REPOSITORY TABLE*/'.
|
||||
_add 'div.repo_container {'.
|
||||
_add ' position: relative;'.
|
||||
_add '}'.
|
||||
_add '.repo_tab {'.
|
||||
_add ' border: 1px solid #DDD;'.
|
||||
_add ' border-radius: 3px;'.
|
||||
_add ' background: #fff;'.
|
||||
_add ' margin-top: 0.5em;'.
|
||||
_add '}'.
|
||||
_add '.repo_tab td {'.
|
||||
_add ' border-top: 1px solid #eee;'.
|
||||
_add ' vertical-align: middle;'.
|
||||
_add ' color: #333;'.
|
||||
_add ' padding-top: 2px;'.
|
||||
_add ' padding-bottom: 2px;'.
|
||||
_add '}'.
|
||||
_add '.repo_tab td.icon {'.
|
||||
_add ' width: 32px;'.
|
||||
_add ' text-align: center;'.
|
||||
_add '}'.
|
||||
_add '.repo_tab td.type {'.
|
||||
_add ' width: 3em;'.
|
||||
_add '}'.
|
||||
_add '.repo_tab td.object {'.
|
||||
_add ' padding-left: 0.5em;'.
|
||||
_add '}'.
|
||||
_add '.repo_tab td.files {'.
|
||||
_add ' padding-left: 0.5em;'.
|
||||
_add '}'.
|
||||
_add '.repo_tab td.cmd {'.
|
||||
_add ' text-align: right;'.
|
||||
_add ' padding-left: 0.5em;'.
|
||||
_add ' padding-right: 0.7em;'.
|
||||
_add '}'.
|
||||
_add '.repo_tab tr.unsupported { color: lightgrey; }'.
|
||||
_add '.repo_tab tr.modified { background: #fbf7e9; }'.
|
||||
_add '.repo_tab tr:first-child td { border-top: 0px; }'.
|
||||
_add '.repo_tab td.current_dir { color: #ccc; }'.
|
||||
|
||||
" States
|
||||
_add '.repo_tab td.cmd span.state-block {'.
|
||||
_add ' margin-left: 1em;'.
|
||||
_add ' font-family: Consolas, Lucida Console, Courier, monospace;'.
|
||||
_add ' font-size: x-small;'.
|
||||
_add ' vertical-align: 13%;'.
|
||||
_add ' display: inline-block;'.
|
||||
_add ' text-align: center;'.
|
||||
_add '}'.
|
||||
_add '.repo_tab td.cmd span.state-block span {'.
|
||||
_add ' display: inline-block;'.
|
||||
_add ' padding: 0px 2px;'.
|
||||
_add ' border: 1px solid #000;'.
|
||||
_add '}'.
|
||||
|
||||
_add '.repo_tab td.cmd span.state-block span.added {'.
|
||||
_add ' background-color: #69ad74; '.
|
||||
_add ' border-color: #579e64;'.
|
||||
_add ' color: white;'.
|
||||
_add '}'.
|
||||
_add '.repo_tab td.cmd span.state-block span.changed {'.
|
||||
_add ' background-color: #e0c150;'.
|
||||
_add ' border-color: #d4af25;'.
|
||||
_add ' color: white;'.
|
||||
_add '}'.
|
||||
_add '.repo_tab td.cmd span.state-block span.mixed {'.
|
||||
_add ' background-color: #e0c150;'.
|
||||
_add ' border-color: #579e64;'.
|
||||
_add ' color: #69ad74;'.
|
||||
_add '}'.
|
||||
_add '.repo_tab td.cmd span.state-block span.deleted {'.
|
||||
_add ' background-color: #c76861;'.
|
||||
_add ' border-color: #b8605a;'.
|
||||
_add ' color: white;'.
|
||||
_add '}'.
|
||||
_add '.repo_tab td.cmd span.state-block span.none {'.
|
||||
_add ' background-color: #e8e8e8;'.
|
||||
_add ' border-color: #dbdbdb;'.
|
||||
_add ' color: #c8c8c8;'.
|
||||
_add '}'.
|
||||
|
||||
ENDMETHOD. "styles
|
||||
|
||||
METHOD lif_gui_page~get_assets.
|
||||
* http://fa2png.io/r/octicons/
|
||||
* colour: #808080
|
||||
* size: 16
|
||||
* https://www.base64-image.de/ can be used to convert images to base64
|
||||
|
||||
DATA ls_image TYPE ty_web_asset.
|
||||
|
||||
rt_assets = super->lif_gui_page~get_assets( ).
|
||||
|
||||
ls_image-url = 'img/sync' ##NO_TEXT.
|
||||
ls_image-content =
|
||||
'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAA6ElEQVQYGY3BIWuUAQAG'
|
||||
&& '4Pc7N72xsbGBYNE8tYpVZKDZX2CcYLEZ9yQxOQSz3D/YmkUsVovRQ2SYNJnlkFfH7VZu'
|
||||
&& 'wefJgrGHXnjrpQeu5B93smCwr6qqqp54433mDI5Ucds1u577o+p35hyoqe2cMThWVatJ'
|
||||
&& '7KiZrZxz18SJqqtJPFXPssRgw0oSH9WNXMCQU76qzSxx2cxxTlk3yhKb6mcSQy7kvjpM'
|
||||
&& 'Ylt98tpjN3POyFTdSuKSqppayxkjE/Uhc36p+m7PhhXr7vmmfhhnzpHPJqqqquqdcRY8'
|
||||
&& 'spq47sAXMyde2c3/+wvX7Y18BexhBwAAAABJRU5ErkJggg=='.
|
||||
APPEND ls_image TO rt_assets.
|
||||
|
||||
ls_image-url = 'img/toc' ##NO_TEXT.
|
||||
ls_image-content =
|
||||
'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAFVBMVEUAAACAgICAgICA'
|
||||
&& 'gICAgICAgICAgIAO39T0AAAABnRSTlMABBCRlMXJzV0oAAAAN0lEQVQIW2NgwABuaWlB'
|
||||
&& 'YWlpDgwJDAxiAgxACshgYwAz0tLY2NISSBWBMYAmg4ADyBZhARCJAQBBchGypGCbQgAA'
|
||||
&& 'AABJRU5ErkJggg=='.
|
||||
APPEND ls_image TO rt_assets.
|
||||
|
||||
ls_image-url = 'img/repo_online' ##NO_TEXT.
|
||||
ls_image-content =
|
||||
'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAApVBMVEUAAABQbJxQbJxQ'
|
||||
&& 'bJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQ'
|
||||
&& 'bJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQ'
|
||||
&& 'bJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQ'
|
||||
&& 'bJz+TJ01AAAANnRSTlMAAQIDBAcJCgwSFBocHygqMTM1NkRHSU1QUWFiZGlweHuDiImL'
|
||||
&& 'lZiio6a5vsfT3uTo6e3x9fsxY2JuAAAAgUlEQVQYGXXB6RaBUBSA0e+IEuIiMs9zhlDn'
|
||||
&& '/R/NZWmt/LA3f1RcoaB50SydCbn20wjedkPu3sKSpMGH21PhLdZ0BATZ+cCXtxtDHGLV'
|
||||
&& 'pgFW9QqJj2U0wvJvMF+5jiNGI3HK9dMQSouH6sRoFGoWd8l1dEDRWlWPQsFS98KPvvDH'
|
||||
&& 'C3HLClrWc70ZAAAAAElFTkSuQmCC'.
|
||||
APPEND ls_image TO rt_assets.
|
||||
|
||||
ls_image-url = 'img/repo_offline' ##NO_TEXT.
|
||||
ls_image-content =
|
||||
'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAVFBMVEUAAACAgICAgICA'
|
||||
&& 'gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA'
|
||||
&& 'gICAgICAgICAgICAgICAgICAgICAgICuaWnmAAAAG3RSTlMAAgQFBgsQFxweIiMtN3yI'
|
||||
&& 'nqOvt9Hp6/Hz9fktMNR/AAAAXElEQVQYV5WO2xJAMAxES1q3ugfF/v9/0qLyyL4k58xk'
|
||||
&& 'J0p9D7N5oeqZgSwy7fDZnHNdEE1gWK116tksl7hPimGFFPWYl7MU0zksRCl8TStKg1AJ'
|
||||
&& '0XNC8Zm4/c0BUVQHi0llOUYAAAAASUVORK5CYII='.
|
||||
APPEND ls_image TO rt_assets.
|
||||
|
||||
ls_image-url = 'img/pkg' ##NO_TEXT.
|
||||
ls_image-content =
|
||||
'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAA30lEQVQoU43OIUuDcRSF'
|
||||
&& '8fvqhuB0mFwaKLbVBVdkX0GTFss+wYL2H4rJIIgyQQSzZcUPoGHZ9CKCmAwTMS8Y/ga3'
|
||||
&& 'BWVjT7hwOQ+HEzEbMhU7jrTd69q2KhtFRU2nrvS927dm3pyqPXcuNRVD7sxiRIQlDSc+'
|
||||
&& 'PGjZUFDWkYekLfdoV2XYua4rSZ61pZBkEUq2XPty41XuXJIiZGNhPDVZiFCYIMSor+Db'
|
||||
&& '7RQhYnQnCsNvNmGgPFFYMQh1PU9aqrLxyGUNx/p66r9mUc2hFx3JhU9vDtQU4y9KGjaV'
|
||||
&& '/gXT+AGZVIinhU2EAwAAAABJRU5ErkJggg=='.
|
||||
APPEND ls_image TO rt_assets.
|
||||
|
||||
ls_image-url = 'img/branch' ##NO_TEXT.
|
||||
ls_image-content =
|
||||
'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAqFBMVEUAAACAgICAgICA'
|
||||
&& 'gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA'
|
||||
&& 'gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA'
|
||||
&& 'gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA'
|
||||
&& 'gICAgID/OyosAAAAN3RSTlMAAQIDBAYICQ8TFRweJScoKSo3Oj1FRk1dYWJjZmhzdIaJ'
|
||||
&& 'j5GVm6CwsrS5vsHDyszV19ne7/X583teZAAAAIFJREFUGFdVytkagVAYheFvFzJlnqc0'
|
||||
&& 'EEoR+u//zhxI7dbZ9z4LMJ1op9DmjpntdXiBigHbLiAYqukBVr63+YGRSazgCY/iEooP'
|
||||
&& 'xKZxr0EnSbo14B1Rg4msKzj150fJrQpERPLBv7mIfNxlq+zRbZsu0JYpGlcdwjY9Twfr'
|
||||
&& 'nAbNsr6IKQxJI/U5CgAAAABJRU5ErkJggg=='.
|
||||
APPEND ls_image TO rt_assets.
|
||||
|
||||
ls_image-url = 'img/link' ##NO_TEXT.
|
||||
ls_image-content =
|
||||
'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAXVBMVEUAAACAgICAgICA'
|
||||
&& 'gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA'
|
||||
&& 'gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVwFMKAAAAHnRSTlMAAwQFBgcK'
|
||||
&& 'FR4gIiMmP0JHSm+RmKDByM/R09rg+/0jN/q+AAAAX0lEQVQYV43Nxw6AIBAE0FGw916Z'
|
||||
&& '//9MRQ0S4sG5bPZlCxqSCyBGXgFUJKUA4A8PUOKONzuQOxOZIjcLkrMvxGQg3skSCFYL'
|
||||
&& 'Kl1Ds5LWz+33yyf4rQOSf6CjnV6rHeAA87gJtKzI8ocAAAAASUVORK5CYII='.
|
||||
APPEND ls_image TO rt_assets.
|
||||
|
||||
ls_image-url = 'img/code' ##NO_TEXT.
|
||||
ls_image-content =
|
||||
'iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOBAMAAADtZjDiAAAAElBMVEUAAACAgICAgICA'
|
||||
&& 'gICAgICAgIC07w1vAAAABXRSTlMABECUxcOwZQcAAAA1SURBVAhbY2AODQ0NEWBgYGVg'
|
||||
&& 'YGByhNAMKgIMrKyhAQxMDhA+QwCCZgVqIIUP1Q+yJzTUAAAfUAq+Os55uAAAAABJRU5E'
|
||||
&& 'rkJggg=='.
|
||||
APPEND ls_image TO rt_assets.
|
||||
|
||||
ls_image-url = 'img/bin' ##NO_TEXT.
|
||||
ls_image-content =
|
||||
'iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOBAMAAADtZjDiAAAAElBMVEUAAACAgICAgICA'
|
||||
&& 'gICAgICAgIC07w1vAAAABXRSTlMABECUxcOwZQcAAABBSURBVAhbXcqxDYAwAMRAK8h9'
|
||||
&& 'hmAARoANvuD3X4UCiojqZMlsbe8JAuN6ZZ9ozThRCVmsJe9H0HwdXf19W9v2eAA6Fws2'
|
||||
&& 'RotPsQAAAABJRU5ErkJggg=='.
|
||||
APPEND ls_image TO rt_assets.
|
||||
|
||||
ls_image-url = 'img/obj' ##NO_TEXT.
|
||||
ls_image-content =
|
||||
'iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOBAMAAADtZjDiAAAAIVBMVEUAAACAgICAgICA'
|
||||
&& 'gICAgICAgICAgICAgICAgICAgICAgIDcWqnoAAAACnRSTlMABD1AZI+RlcPFIaFe1gAA'
|
||||
&& 'AEVJREFUCFtjYF+1atVKAQYGLgYGBuaJEJrBUgBCM0+A0AwLgLQIgyOIZmwCSgNptgAG'
|
||||
&& '1gQQfzKDhgCSPFw9Kg2yZ9WqAgBWJBENLk6V3AAAAABJRU5ErkJggg=='.
|
||||
APPEND ls_image TO rt_assets.
|
||||
|
||||
ls_image-url = 'img/lock' ##NO_TEXT.
|
||||
ls_image-content =
|
||||
'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAOVBMVEUAAACIiIiIiIiI'
|
||||
&& 'iIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIjNaTNB'
|
||||
&& 'AAAAEnRSTlMABgdBVXt8iYuRsNXZ3uDi6Pmu6tfUAAAASUlEQVQYV63KSxJAQBAE0TQ0'
|
||||
&& 'Znym1f0PayE0QdjJ5asCgGTu1hClqjppvaRXB60swBeA2QNUAIq+ICvKx367nqAn/P8Y'
|
||||
&& 't2jg3Q5rgASaF3KNRwAAAABJRU5ErkJggg=='.
|
||||
APPEND ls_image TO rt_assets.
|
||||
|
||||
ls_image-url = 'img/dir' ##NO_TEXT.
|
||||
ls_image-content =
|
||||
'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAASFBMVEUAAABmksxmksxm'
|
||||
&& 'ksxmksxmksxmksxmksxmksxmksxmksxmksxmksxmksxmksxmksxmksxmksxmksxmksxm'
|
||||
&& 'ksxmksxmksxmksxMwQo8AAAAF3RSTlMABhIYIy1fZmhpe3+IiYuMkZvD7e/x93sipD4A'
|
||||
&& 'AAA+SURBVBhXY2BABzwiokAgzAYXEGdiBAIWIYQAPzcQCApzgwEXM4M4KuBDFxAYKAEx'
|
||||
&& 'VAFeBlYOTiTAzoThewD5hBAcnWM4gwAAAABJRU5ErkJggg=='.
|
||||
APPEND ls_image TO rt_assets.
|
||||
|
||||
ls_image-url = 'img/burger' ##NO_TEXT.
|
||||
ls_image-content =
|
||||
'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAHlBMVEUAAABtktltktlt'
|
||||
&& 'ktltktltktltktltktltktltktk7ccVDAAAACXRSTlMAFDBLY2SFoPGv/DFMAAAAJ0lE'
|
||||
&& 'QVQIW2NggIHKmWAwmaETwpjGoBoKBo4MmIAkxXApuGK4dgwAAJa5IzLs+gRBAAAAAElF'
|
||||
&& 'TkSuQmCC'.
|
||||
APPEND ls_image TO rt_assets.
|
||||
|
||||
ls_image-url = 'img/star' ##NO_TEXT.
|
||||
ls_image-content =
|
||||
'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAilBMVEUAAABejclejcle'
|
||||
&& 'jclejclejclejclejclejclejclejclejclejclejclejclejclejclejclejclejcle'
|
||||
&& 'jclejclejclejclejclejclejclejclejclejclejclejclejclejclejclejclejcle'
|
||||
&& 'jclejclejclejclejclejclejclejclejcn2yvsVAAAALXRSTlMAAQIFBwkKCw0QERUY'
|
||||
&& 'HB4jLzEzNjg7PVdYYmRvd3mDm52eub7R0+Tr8fX3+/16wo8zAAAAcElEQVQYGW3BBxKC'
|
||||
&& 'MABFwYcQETv2hg1UVP79ryeTZBxw3MWL+JGltBgVtGRSSoORVOAE8Xi5zVU7rWfDCOaV'
|
||||
&& 'Gu59mLz0dTPUBg95eYjVK2VdOzjBW9YZL5FT4i2k5+YoKcY5VPsQkoumOLsu1mjFHx8o'
|
||||
&& 'ahA3YV7OfwAAAABJRU5ErkJggg=='.
|
||||
APPEND ls_image TO rt_assets.
|
||||
|
||||
ls_image-url = 'img/star-grey' ##NO_TEXT.
|
||||
ls_image-content =
|
||||
'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAilBMVEUAAADQ0NDQ0NDQ'
|
||||
&& '0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ'
|
||||
&& '0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ'
|
||||
&& '0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NC2QdifAAAALXRSTlMAAQIFBwkKCw0QERUY'
|
||||
&& 'HB4jLzEzNjg7PVdYYmRvd3mDm52eub7R0+Tr8fX3+/16wo8zAAAAcElEQVQYGW3BBxKC'
|
||||
&& 'MABFwYcQETv2hg1UVP79ryeTZBxw3MWL+JGltBgVtGRSSoORVOAE8Xi5zVU7rWfDCOaV'
|
||||
&& 'Gu59mLz0dTPUBg95eYjVK2VdOzjBW9YZL5FT4i2k5+YoKcY5VPsQkoumOLsu1mjFHx8o'
|
||||
&& 'ahA3YV7OfwAAAABJRU5ErkJggg=='.
|
||||
APPEND ls_image TO rt_assets.
|
||||
|
||||
ENDMETHOD. "get_assets
|
||||
|
||||
ENDCLASS.
|
|
@ -11,8 +11,6 @@ CLASS lcl_gui_page_settings DEFINITION FINAL INHERITING FROM lcl_gui_page_super.
|
|||
save_settings TYPE string VALUE 'save_settings',
|
||||
END OF c_action.
|
||||
PRIVATE SECTION.
|
||||
METHODS styles
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
|
||||
METHODS render_proxy
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
|
||||
METHODS render_development_internals
|
||||
|
@ -46,7 +44,7 @@ CLASS lcl_gui_page_settings IMPLEMENTATION.
|
|||
|
||||
read_settings( ).
|
||||
|
||||
ro_html->add( header( io_include_style = styles( ) ) ).
|
||||
ro_html->add( header( ) ).
|
||||
ro_html->add( title( 'Settings' ) ).
|
||||
|
||||
ro_html->add( render_form_begin( ) ).
|
||||
|
@ -56,18 +54,6 @@ CLASS lcl_gui_page_settings IMPLEMENTATION.
|
|||
ro_html->add( render_form_end( ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD styles.
|
||||
CREATE OBJECT ro_html.
|
||||
|
||||
_add '/* settings STYLES */'.
|
||||
_add 'div.settings_container {'.
|
||||
_add ' padding: 0.5em;'.
|
||||
_add ' font-size: 10pt;'.
|
||||
_add ' color: #444;'.
|
||||
_add ' background-color: #f2f2f2;'.
|
||||
_add '}'.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD render_proxy.
|
||||
CREATE OBJECT ro_html.
|
||||
ro_html->add( |<h2>Proxy</h2>| ).
|
||||
|
|
|
@ -32,8 +32,6 @@ CLASS lcl_gui_page_stage DEFINITION FINAL INHERITING FROM lcl_gui_page_super.
|
|||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper,
|
||||
render_menu
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper,
|
||||
styles
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper,
|
||||
scripts
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
|
||||
|
||||
|
@ -217,7 +215,7 @@ CLASS lcl_gui_page_stage IMPLEMENTATION.
|
|||
|
||||
CREATE OBJECT ro_html.
|
||||
|
||||
ro_html->add( header( io_include_style = styles( ) ) ).
|
||||
ro_html->add( header( ) ).
|
||||
ro_html->add( title( 'STAGE' ) ).
|
||||
|
||||
ro_html->add( '<div class="repo">' ).
|
||||
|
@ -235,7 +233,7 @@ CLASS lcl_gui_page_stage IMPLEMENTATION.
|
|||
CREATE OBJECT ro_html.
|
||||
|
||||
ro_html->add( '<div class="paddings">' ).
|
||||
ro_html->add_anchor( iv_act = |commit('{ c_action-stage_commit }');|
|
||||
ro_html->add_anchor( iv_act = 'gHelper.submit();'
|
||||
iv_typ = gc_action_type-onclick
|
||||
iv_id = 'act_commit'
|
||||
iv_style = 'display: none'
|
||||
|
@ -248,152 +246,18 @@ CLASS lcl_gui_page_stage IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD. "render_menu
|
||||
|
||||
METHOD styles.
|
||||
|
||||
CREATE OBJECT ro_html.
|
||||
|
||||
_add '/* STAGE */'.
|
||||
_add '.stage_tab {'.
|
||||
_add ' border: 1px solid #DDD;'.
|
||||
_add ' background: #fff;'.
|
||||
_add ' margin-top: 0.2em;'.
|
||||
_add '}'.
|
||||
_add '.stage_tab td {'.
|
||||
_add ' border-top: 1px solid #eee;'.
|
||||
_add ' color: #333;'.
|
||||
_add ' vertical-align: middle;'.
|
||||
_add ' padding: 2px 0.5em;'.
|
||||
_add '}'.
|
||||
_add '.stage_tab th {'.
|
||||
_add ' color: #BBB;'.
|
||||
_add ' font-size: 10pt;'.
|
||||
_add ' text-align: left;'.
|
||||
_add ' font-weight: normal;'.
|
||||
_add ' background-color: #edf2f9;'.
|
||||
_add ' padding: 4px 0.5em;'.
|
||||
_add '}'.
|
||||
_add '.stage_tab td.status {'.
|
||||
_add ' width: 2em;'.
|
||||
_add ' text-align: center;'.
|
||||
_add '}'.
|
||||
_add '.stage_tab tbody tr:first-child td { padding-top: 0.5em; }'.
|
||||
_add '.stage_tab tbody tr:last-child td { padding-bottom: 0.5em; }'.
|
||||
_add '.stage_tab td.cmd a { padding: 0px 4px; }'.
|
||||
|
||||
ENDMETHOD. "styles
|
||||
|
||||
METHOD scripts.
|
||||
|
||||
CREATE OBJECT ro_html.
|
||||
|
||||
" Globals & initialization
|
||||
ro_html->add( |var gPageID = "stage{ mv_ts }";| ).
|
||||
_add 'var gChoiceCount = 0;'.
|
||||
_add 'setHook();'.
|
||||
|
||||
" Hook global click listener on table, global action counter
|
||||
_add 'function setHook() {'.
|
||||
_add ' var stageTab = document.getElementById("stage_tab");'.
|
||||
_add ' if (stageTab.addEventListener) {'.
|
||||
_add ' stageTab.addEventListener("click", onEvent);'.
|
||||
_add ' } else {'.
|
||||
_add ' stageTab.attachEvent("onclick", onEvent);'. " <IE9 crutch
|
||||
_add ' }'.
|
||||
_add ' window.onbeforeunload = onPageUnload;'.
|
||||
_add ' window.onload = onPageLoad;'.
|
||||
_add '}'.
|
||||
|
||||
" Store table state on leaving the page
|
||||
_add 'function onPageUnload() {'.
|
||||
_add ' var data = collectData();'.
|
||||
_add ' window.sessionStorage.setItem(gPageID, JSON.stringify(data));'.
|
||||
_add '}'.
|
||||
|
||||
" Re-store table state on entering the page
|
||||
_add 'function onPageLoad() {'.
|
||||
_add ' var data = JSON.parse(window.sessionStorage.getItem(gPageID));'.
|
||||
_add ' var stage = document.getElementById("stage_tab");'.
|
||||
_add ' for (var i = stage.rows.length - 1; i >= 0; i--) {'.
|
||||
_add ' var tr = stage.rows[i];'.
|
||||
_add ' if (tr.parentNode.tagName == "THEAD") continue;'.
|
||||
_add ' var context = tr.parentNode.className;'.
|
||||
_add ' var cmd = data[tr.cells[1].innerText];'.
|
||||
_add ' if (!cmd) continue;'.
|
||||
_add ' formatTR(tr, cmd, context);'.
|
||||
_add ' if (countChoiceImpact(cmd) > 0) gChoiceCount++;'.
|
||||
_add ' }'.
|
||||
_add ' updateMenu();'.
|
||||
_add '}'.
|
||||
|
||||
" Event handler, change status
|
||||
_add 'function onEvent(event) {'.
|
||||
_add ' if (!event.target) {'. " <IE9 crutch
|
||||
_add ' if (event.srcElement) event.target = event.srcElement;'.
|
||||
_add ' else return;'.
|
||||
_add ' }'.
|
||||
_add ' if (event.target.tagName != "A") return;'.
|
||||
_add ' var td = event.target.parentNode;'.
|
||||
_add ' if (!td || td.tagName != "TD" || td.className != "cmd") return;'.
|
||||
_add ' var cmd = event.target.innerText;'.
|
||||
_add ' var tr = td.parentNode;'.
|
||||
_add ' var context = tr.parentNode.className;'.
|
||||
_add ' switch (cmd) {'.
|
||||
_add ' case "add": cmd = "A"; break;'.
|
||||
_add ' case "remove": cmd = "R"; break;'.
|
||||
_add ' case "ignore": cmd = "I"; break;'.
|
||||
_add ' case "reset": cmd = "?"; break;'.
|
||||
_add ' }'.
|
||||
_add ' formatTR(tr, cmd, context);'.
|
||||
_add ' gChoiceCount += countChoiceImpact(cmd);'.
|
||||
_add ' updateMenu();'.
|
||||
_add '}'.
|
||||
|
||||
" Update action counter -> affects menu update after
|
||||
_add 'function countChoiceImpact(cmd) {'.
|
||||
_add ' if ("ARI".indexOf(cmd) > -1) return 1;'.
|
||||
_add ' else if ("?".indexOf(cmd) > -1) return -1;'.
|
||||
_add ' else alert("Unknown command");'.
|
||||
_add '}'.
|
||||
|
||||
" Re-format table line
|
||||
_add 'function formatTR(tr, cmd, context) {'.
|
||||
_add ' var cmdReset = "<a>reset</a>"; '.
|
||||
_add ' var cmdLocal = "<a>add</a>"; '.
|
||||
_add ' var cmdRemote = "<a>ignore</a><a>remove</a>";'.
|
||||
_add ' tr.cells[0].innerText = cmd;'.
|
||||
_add ' tr.cells[0].style.color = (cmd == "?")?"#CCC":"";'.
|
||||
_add ' tr.cells[2].innerHTML = (cmd != "?")?cmdReset'.
|
||||
_add ' :(context == "local")?cmdLocal:cmdRemote;'.
|
||||
_add '}'.
|
||||
|
||||
" Update menu items visibility
|
||||
_add 'function updateMenu() {'.
|
||||
_add ' if (gChoiceCount > 0) {'.
|
||||
_add ' document.getElementById("act_commit").style.display = "inline";'.
|
||||
_add ' document.getElementById("act_commit_all").style.display = "none";'.
|
||||
_add ' } else {'.
|
||||
_add ' document.getElementById("act_commit").style.display = "none";'.
|
||||
_add ' document.getElementById("act_commit_all").style.display = "inline";'.
|
||||
_add ' }'.
|
||||
_add '}'.
|
||||
|
||||
" Commit change to the server
|
||||
_add 'function commit(action) {'.
|
||||
_add ' var data = collectData();'.
|
||||
_add ' submitForm(data, action);'.
|
||||
_add '}'.
|
||||
|
||||
" Extract data from the table
|
||||
_add 'function collectData() {'.
|
||||
_add ' var stage = document.getElementById("stage_tab");'.
|
||||
_add ' var data = {};'.
|
||||
_add ' for (var i = stage.rows.length - 1; i >= 0; i--) {'.
|
||||
_add ' var row = stage.rows[i];'.
|
||||
_add ' if (row.parentNode.tagName == "THEAD") continue;'.
|
||||
_add ' data[row.cells[1].innerText] = row.cells[0].innerText;'.
|
||||
_add ' }'.
|
||||
_add ' return data; '.
|
||||
_add '}'.
|
||||
ro_html->add( 'var gStageParams = {' ).
|
||||
ro_html->add( | seed: "stage{ mv_ts }",| ).
|
||||
ro_html->add( ' stageTabId: "stage_tab",' ).
|
||||
ro_html->add( ' formAction: "stage_commit",' ).
|
||||
ro_html->add( ' commitNodeId: "act_commit",' ).
|
||||
ro_html->add( ' commitAllNodeId: "act_commit_all"' ).
|
||||
ro_html->add( '}' ).
|
||||
ro_html->add( 'var gHelper = new StageHelper(gStageParams);' ).
|
||||
|
||||
ENDMETHOD. "scripts
|
||||
|
||||
|
|
|
@ -1676,6 +1676,7 @@ CLASS ltcl_path DEFINITION
|
|||
METHODS split_file_location FOR TESTING.
|
||||
METHODS is_subdir FOR TESTING.
|
||||
METHODS change_dir FOR TESTING.
|
||||
METHODS get_filename_from_syspath FOR TESTING.
|
||||
|
||||
ENDCLASS. "ltcl_path
|
||||
|
||||
|
@ -1794,6 +1795,30 @@ CLASS ltcl_path IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD get_filename_from_syspath.
|
||||
|
||||
DATA lv_filename TYPE string.
|
||||
|
||||
lv_filename = lcl_path=>get_filename_from_syspath( 'file.txt' ).
|
||||
assert_equals( act = lv_filename exp = 'file.txt' ).
|
||||
|
||||
lv_filename = lcl_path=>get_filename_from_syspath( 'c:\dir\file.txt' ).
|
||||
assert_equals( act = lv_filename exp = 'file.txt' ).
|
||||
|
||||
lv_filename = lcl_path=>get_filename_from_syspath( 'c:\file.txt' ).
|
||||
assert_equals( act = lv_filename exp = 'file.txt' ).
|
||||
|
||||
lv_filename = lcl_path=>get_filename_from_syspath( '/dir/file.txt' ).
|
||||
assert_equals( act = lv_filename exp = 'file.txt' ).
|
||||
|
||||
lv_filename = lcl_path=>get_filename_from_syspath( '/file.txt' ).
|
||||
assert_equals( act = lv_filename exp = 'file.txt' ).
|
||||
|
||||
lv_filename = lcl_path=>get_filename_from_syspath( '\\server$\file.txt' ).
|
||||
assert_equals( act = lv_filename exp = 'file.txt' ).
|
||||
|
||||
ENDMETHOD. " get_filename_from_syspath.
|
||||
|
||||
ENDCLASS. "ltcl_path
|
||||
|
||||
CLASS ltcl_file_status DEFINITION
|
||||
|
|
|
@ -360,6 +360,10 @@ CLASS lcl_path DEFINITION FINAL.
|
|||
iv_cd TYPE string
|
||||
RETURNING VALUE(rv_path) TYPE string.
|
||||
|
||||
CLASS-METHODS get_filename_from_syspath
|
||||
IMPORTING iv_path TYPE string
|
||||
RETURNING VALUE(rv_filename) TYPE string.
|
||||
|
||||
ENDCLASS. "lcl_path
|
||||
|
||||
CLASS lcl_path IMPLEMENTATION.
|
||||
|
@ -434,6 +438,15 @@ CLASS lcl_path IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD. "change_dir
|
||||
|
||||
METHOD get_filename_from_syspath.
|
||||
|
||||
" filename | c:\filename | /dir/filename | \\server\filename
|
||||
FIND FIRST OCCURRENCE OF REGEX '^(?:/(?:.+/)*|(?:\w:|\\)\\(?:.+\\)*)?([^\\/]+)$'
|
||||
IN iv_path
|
||||
SUBMATCHES rv_filename.
|
||||
|
||||
ENDMETHOD. " get_filename_from_syspath.
|
||||
|
||||
ENDCLASS. "lcl_path
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
|
|
Loading…
Reference in New Issue
Block a user