[PE mobile] [SSE mobile] Skeleton loader

This commit is contained in:
Julia Svinareva 2019-07-22 17:09:53 +03:00
parent 1bfaa3cc26
commit b0037bdd42
4 changed files with 249 additions and 292 deletions

View file

@ -133,6 +133,8 @@ define([
uiApp.params.smartSelectPickerCloseText = me.textDone; uiApp.params.smartSelectPickerCloseText = me.textDone;
uiApp.params.notificationCloseButtonText = me.textClose; uiApp.params.notificationCloseButtonText = me.textClose;
$('#editor_sdk').append('<div class="doc-placeholder"><div class="slide-h"><div class="slide-v"><div class="slide-container"><div class="line"></div><div class="line"></div></div></div></div></div>');
if (me.api){ if (me.api){
Common.Utils.Metric.setCurrentMetric(1); //pt Common.Utils.Metric.setCurrentMetric(1); //pt
@ -546,6 +548,8 @@ define([
$(document).on('contextmenu', _.bind(me.onContextMenu, me)); $(document).on('contextmenu', _.bind(me.onContextMenu, me));
Common.Gateway.documentReady(); Common.Gateway.documentReady();
$('.doc-placeholder').remove();
}, },
onLicenseChanged: function(params) { onLicenseChanged: function(params) {

View file

@ -16,172 +16,164 @@
<style type="text/css"> <style type="text/css">
.loadmask { .loadmask {
position: absolute;
left: 0; left: 0;
top: 0; top: 0;
position: absolute;
height: 100%; height: 100%;
width: 100%; width: 100%;
overflow: hidden; overflow: hidden;
border: none; border: none;
background-color: #f4f4f4; background-color: #f4f4f4;
z-index: 100; z-index: 10000;
} }
.loader-page { .loadmask {
width: 100%;
height: 100%;
}
.loadmask > .brendpanel {
width: 100%; width: 100%;
height: 170px;
bottom: 42%;
position: absolute; position: absolute;
text-align: center; height: 44px;
line-height: 10px; background-color: #e2e2e2;
opacity: 0;
} }
.loader-logo { .loadmask > .brendpanel.visible {
max-height: 160px; opacity: 1;
margin-bottom: 10px;
} }
.loader-page-romb { .loadmask > .brendpanel.android {
width: 40px; height: 56px;
background: #aa5252;
}
.loadmask > .brendpanel > div {
display: flex;
align-items: center;
height: 100%;
}
.loadmask > .brendpanel .loading-logo {
max-width: 200px;
height: 20px;
margin: 0 auto;
}
.loadmask > .brendpanel .loading-logo > i {
display: inline-block; display: inline-block;
width: 86px;
height: 20px;
background-image: url(http://192.168.3.191:8080/web-apps-pro/apps/common/main/resources/img/header/header-logo.png);
background-repeat: no-repeat;
} }
.loader-page-text { .loadmask > .brendpanel .circle {
vertical-align: middle;
width: 28px;
height: 28px;
border-radius: 14px;
margin: 4px 10px;
background: rgba(255, 255, 255, 0.2);
}
.loadmask > .placeholder {
background: rgba(255, 255, 255, 0.2);
width: 100%; width: 100%;
bottom: 42%; height: 100%;
padding-top: 56px;
}
.loadmask > .placeholder.android {
padding-top: 70px;
}
.loadmask > .placeholder .slide-h {
display: flex;
flex-direction: column;
justify-content: center;
flex-grow: 1;
width: 90%;
margin: 15px auto;
}
.loadmask > .placeholder .slide-v {
display: flex;
position: relative;
flex-direction: column;
padding-bottom: 56.1333%;
}
.loadmask > .placeholder .slide-container {
position: absolute; position: absolute;
text-align: center; height: 100%;
color: #888; width: 100%;
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; background: #fbfbfb;
line-height: 20px; border: 1px solid #dfdfdf;
display: grid;
-webkit-animation: flickerAnimation 2s infinite ease-in-out;
-moz-animation: flickerAnimation 2s infinite ease-in-out;
-o-animation: flickerAnimation 2s infinite ease-in-out;
animation: flickerAnimation 2s infinite ease-in-out;
} }
.loader-page-text-loading { .loadmask > .placeholder .slide-container > .line {
font-size: 14px; height: 40%;
} margin: auto 60px;
.loader-page-text-customer {
font-size: 16px;
margin-bottom: 5px;
}
.romb {
width: 40px;
height: 40px;
-webkit-transform: rotate(135deg) skew(20deg, 20deg);
-moz-transform: rotate(135deg) skew(20deg, 20deg);
-ms-transform: rotate(135deg) skew(20deg, 20deg);
-o-transform: rotate(135deg) skew(20deg, 20deg);
position: absolute;
background: red;
border-radius: 6px; border-radius: 6px;
-webkit-animation: movedown 3s infinite ease; background: #f5f5f5;
-moz-animation: movedown 3s infinite ease;
-ms-animation: movedown 3s infinite ease;
-o-animation: movedown 3s infinite ease;
animation: movedown 3s infinite ease;
} }
#blue { .loadmask > .placeholder .slide-container > .line:nth-child(1) {
z-index: 3; height: 50%;
background: #55bce6; margin: auto 35px;
-webkit-animation-name: blue;
-moz-animation-name: blue;
-ms-animation-name: blue;
-o-animation-name: blue;
animation-name: blue;
} }
#red { @keyframes flickerAnimation {
z-index:1; 0% { opacity:1; }
background: #de7a59; 50% { opacity:0.3; }
-webkit-animation-name: red; 100% { opacity:1; }
-moz-animation-name: red;
-ms-animation-name: red;
-o-animation-name: red;
animation-name: red;
} }
@-o-keyframes flickerAnimation{
#green { 0% { opacity:1; }
z-index: 2; 50% { opacity:0.3; }
background: #a1cb5c; 100% { opacity:1; }
-webkit-animation-name: green;
-moz-animation-name: green;
-ms-animation-name: green;
-o-animation-name: green;
animation-name: green;
} }
@-moz-keyframes flickerAnimation{
@-webkit-keyframes red { 0% { opacity:1; }
0% { top:120px; background: #de7a59; } 50% { opacity:0.3; }
10% { top:120px; background: #F2CBBF; } 100% { opacity:1; }
14% { background: #f4f4f4; top:120px; }
15% { background: #f4f4f4; top:0;}
20% { background: #E6E4E4; }
30% { background: #D2D2D2; }
40% { top:120px; }
100% { top:120px; background: #de7a59; }
} }
@-webkit-keyframes flickerAnimation{
@keyframes red { 0% { opacity:1; }
0% { top:120px; background: #de7a59; } 50% { opacity:0.3; }
10% { top:120px; background: #F2CBBF; } 100% { opacity:1; }
14% { background: #f4f4f4; top:120px; }
15% { background: #f4f4f4; top:0; }
20% { background: #E6E4E4; }
30% { background: #D2D2D2; }
40% { top:120px; }
100% { top:120px; background: #de7a59; }
}
@-webkit-keyframes green {
0% { top:110px; background: #a1cb5c; opacity:1; }
10% { top:110px; background: #CBE0AC; opacity:1; }
14% { background: #f4f4f4; top:110px; opacity:1; }
15% { background: #f4f4f4; top:0; opacity:1; }
20% { background: #f4f4f4; top:0; opacity:0; }
25% { background: #EFEFEF; top:0; opacity:1; }
30% { background:#E6E4E4; }
70% { top:110px; }
100% { top:110px; background: #a1cb5c; }
}
@keyframes green {
0% { top:110px; background: #a1cb5c; opacity:1; }
10% { top:110px; background: #CBE0AC; opacity:1; }
14% { background: #f4f4f4; top:110px; opacity:1; }
15% { background: #f4f4f4; top:0; opacity:1; }
20% { background: #f4f4f4; top:0; opacity:0; }
25% { background: #EFEFEF; top:0; opacity:1; }
30% { background:#E6E4E4; }
70% { top:110px; }
100% { top:110px; background: #a1cb5c; }
}
@-webkit-keyframes blue {
0% { top:100px; background: #55bce6; opacity:1; }
10% { top:100px; background: #BFE8F8; opacity:1; }
14% { background: #f4f4f4; top:100px; opacity:1; }
15% { background: #f4f4f4; top:0; opacity:1; }
20% { background: #f4f4f4; top:0; opacity:0; }
25% { background: #f4f4f4; top:0; opacity:0; }
45% { background: #EFEFEF; top:0; opacity:0.2; }
100% { top:100px; background: #55bce6; }
}
@keyframes blue {
0% { top:100px; background: #55bce6; opacity:1; }
10% { top:100px; background: #BFE8F8; opacity:1; }
14% { background: #f4f4f4; top:100px; opacity:1; }
15% { background: #f4f4f4; top:0; opacity:1; }
20% { background: #f4f4f4; top:0; opacity:0; }
25% { background: #fff; top:0; opacity:0; }
45% { background: #EFEFEF; top:0; opacity:0.2; }
100% { top:100px; background: #55bce6; }
} }
</style> </style>
</head> </head>
<body> <body>
<div id="loading-mask" class="loadmask">
<div class="brendpanel">
<div>
<div class="circle"></div>
<div class="loading-logo">
<i></i>
</div>
<div class="circle"></div>
</div>
</div>
<div class="placeholder">
<div class="slide-h">
<div class="slide-v">
<div class="slide-container">
<div class="line"></div>
<div class="line"></div>
</div>
</div>
</div>
</div>
</div>
<script type="text/javascript"> <script type="text/javascript">
function getUrlParams() { function getUrlParams() {
var e, var e,
@ -235,20 +227,17 @@
else if ( lang == 'vi') loading = 'Đang tải...'; else if ( lang == 'vi') loading = 'Đang tải...';
else if ( lang == 'zh') loading = '加载中...'; else if ( lang == 'zh') loading = '加载中...';
document.write( var brendpanel = document.getElementsByClassName('brendpanel')[0];
'<div id="loading-mask" class="loadmask">' + if (brendpanel) {
'<div class="loader-page" style="margin-bottom: ' + margin + 'px;' + ((logo!==null) ? 'height: auto;' : '') + '">' + if (/Android/.test(navigator.userAgent)) {
((logo!==null) ? logo : brendpanel.classList.add('android');
'<div class="loader-page-romb">' + }
'<div class="romb" id="blue"></div>' + brendpanel.classList.add('visible');
'<div class="romb" id="green"></div>' + }
'<div class="romb" id="red"></div>' + var placeholder = document.getElementsByClassName('placeholder')[0];
'</div>') + if (placeholder && /Android/.test(navigator.userAgent)) {
'</div>' + placeholder.classList.add('android');
'<div class="loader-page-text">' + customer + }
'<div class="loader-page-text-loading">' + loading + '</div>' +
'</div>' +
'</div>');
</script> </script>
<div id="viewport"></div> <div id="viewport"></div>

View file

@ -125,6 +125,8 @@ define([
'translate': translate 'translate': translate
}); });
$('#editor_sdk').append('<div class="doc-placeholder">' + '<div class="columns"></div>'.repeat(2) + '</div>');
// Localization uiApp params // Localization uiApp params
uiApp.params.modalButtonOk = me.textOK; uiApp.params.modalButtonOk = me.textOK;
uiApp.params.modalButtonCancel = me.textCancel; uiApp.params.modalButtonCancel = me.textCancel;
@ -568,6 +570,8 @@ define([
$(document).on('contextmenu', _.bind(me.onContextMenu, me)); $(document).on('contextmenu', _.bind(me.onContextMenu, me));
Common.Gateway.documentReady(); Common.Gateway.documentReady();
$('.doc-placeholder').remove();
}, },
onLicenseChanged: function(params) { onLicenseChanged: function(params) {

View file

@ -16,6 +16,7 @@
<!-- splash --> <!-- splash -->
<style type="text/css"> <style type="text/css">
.loadmask { .loadmask {
position: absolute; position: absolute;
left: 0; left: 0;
@ -25,164 +26,126 @@
overflow: hidden; overflow: hidden;
border: none; border: none;
background-color: #f4f4f4; background-color: #f4f4f4;
z-index: 100; z-index: 10000;
} }
.loadmask > .brendpanel {
.loader-page {
width: 100%; width: 100%;
height: 170px;
bottom: 42%;
position: absolute; position: absolute;
text-align: center; height: 44px;
line-height: 10px; background-color: #e2e2e2;
opacity: 0;
} }
.loader-logo { .loadmask > .brendpanel.visible {
max-height: 160px; opacity: 1;
margin-bottom: 10px;
} }
.loader-page-romb { .loadmask > .brendpanel.android {
width: 40px; height: 56px;
background: #40865c;
}
.loadmask > .brendpanel > div {
display: flex;
align-items: center;
height: 100%;
}
.loadmask > .brendpanel .loading-logo {
max-width: 200px;
height: 20px;
margin: 0 auto;
}
.loadmask > .brendpanel .loading-logo > i {
display: inline-block; display: inline-block;
width: 86px;
height: 20px;
background-image: url(http://192.168.3.191:8080/web-apps-pro/apps/common/main/resources/img/header/header-logo.png);
background-repeat: no-repeat;
} }
.loader-page-text { .loadmask > .brendpanel .circle {
vertical-align: middle;
width: 28px;
height: 28px;
border-radius: 14px;
margin: 4px 10px;
background: rgba(255, 255, 255, 0.2);
}
.loadmask > .placeholder {
background: #fbfbfb;
width: 100%; width: 100%;
bottom: 42%; height: 100%;
position: absolute; border: 1px solid #dfdfdf;
text-align: center; white-space: nowrap;
color: #888; padding-top: 43px;
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
line-height: 20px;
} }
.loader-page-text-loading { .loadmask > .placeholder.android {
font-size: 14px; padding-top: 56px;
} }
.loader-page-text-customer { .loadmask > .placeholder > .columns {
font-size: 16px; width: 100%;
margin-bottom: 5px; height: 100%;
display: inline-block;
background: linear-gradient(90deg, #d5d5d5 0px, rgba(0,0,0,0) 1px) 0 0,
linear-gradient(rgba(0,255,0,0) 19px, #d5d5d5 20px) 0 0,
linear-gradient( #f1f1f1 0px, #f1f1f1 20px) 0 0 repeat-x;
background-size: 80px 20px;
-webkit-animation: flickerAnimation 2s infinite ease-in-out;
-moz-animation: flickerAnimation 2s infinite ease-in-out;
-o-animation: flickerAnimation 2s infinite ease-in-out;
animation: flickerAnimation 2s infinite ease-in-out;
} }
.romb { .loadmask > .placeholder > .columns:first-child {
width: 40px; background: linear-gradient(#f1f1f1 19px, #d5d5d5 20px) 0 0;
height: 40px; background-size: 20px 20px;
-webkit-transform: rotate(135deg) skew(20deg, 20deg); width: 35px;
-moz-transform: rotate(135deg) skew(20deg, 20deg);
-ms-transform: rotate(135deg) skew(20deg, 20deg);
-o-transform: rotate(135deg) skew(20deg, 20deg);
position: absolute;
background: red;
border-radius: 6px;
-webkit-animation: movedown 3s infinite ease;
-moz-animation: movedown 3s infinite ease;
-ms-animation: movedown 3s infinite ease;
-o-animation: movedown 3s infinite ease;
animation: movedown 3s infinite ease;
} }
#blue { @keyframes flickerAnimation {
z-index: 3; 0% { opacity:1; }
background: #55bce6; 50% { opacity:0.3; }
-webkit-animation-name: blue; 100% { opacity:1; }
-moz-animation-name: blue;
-ms-animation-name: blue;
-o-animation-name: blue;
animation-name: blue;
} }
@-o-keyframes flickerAnimation{
#red { 0% { opacity:1; }
z-index:1; 50% { opacity:0.3; }
background: #de7a59; 100% { opacity:1; }
-webkit-animation-name: red;
-moz-animation-name: red;
-ms-animation-name: red;
-o-animation-name: red;
animation-name: red;
} }
@-moz-keyframes flickerAnimation{
#green { 0% { opacity:1; }
z-index: 2; 50% { opacity:0.3; }
background: #a1cb5c; 100% { opacity:1; }
-webkit-animation-name: green;
-moz-animation-name: green;
-ms-animation-name: green;
-o-animation-name: green;
animation-name: green;
} }
@-webkit-keyframes flickerAnimation{
@-webkit-keyframes red { 0% { opacity:1; }
0% { top:120px; background: #de7a59; } 50% { opacity:0.3; }
10% { top:120px; background: #F2CBBF; } 100% { opacity:1; }
14% { background: #f4f4f4; top:120px; }
15% { background: #f4f4f4; top:0;}
20% { background: #E6E4E4; }
30% { background: #D2D2D2; }
40% { top:120px; }
100% { top:120px; background: #de7a59; }
}
@keyframes red {
0% { top:120px; background: #de7a59; }
10% { top:120px; background: #F2CBBF; }
14% { background: #f4f4f4; top:120px; }
15% { background: #f4f4f4; top:0; }
20% { background: #E6E4E4; }
30% { background: #D2D2D2; }
40% { top:120px; }
100% { top:120px; background: #de7a59; }
}
@-webkit-keyframes green {
0% { top:110px; background: #a1cb5c; opacity:1; }
10% { top:110px; background: #CBE0AC; opacity:1; }
14% { background: #f4f4f4; top:110px; opacity:1; }
15% { background: #f4f4f4; top:0; opacity:1; }
20% { background: #f4f4f4; top:0; opacity:0; }
25% { background: #EFEFEF; top:0; opacity:1; }
30% { background:#E6E4E4; }
70% { top:110px; }
100% { top:110px; background: #a1cb5c; }
}
@keyframes green {
0% { top:110px; background: #a1cb5c; opacity:1; }
10% { top:110px; background: #CBE0AC; opacity:1; }
14% { background: #f4f4f4; top:110px; opacity:1; }
15% { background: #f4f4f4; top:0; opacity:1; }
20% { background: #f4f4f4; top:0; opacity:0; }
25% { background: #EFEFEF; top:0; opacity:1; }
30% { background:#E6E4E4; }
70% { top:110px; }
100% { top:110px; background: #a1cb5c; }
}
@-webkit-keyframes blue {
0% { top:100px; background: #55bce6; opacity:1; }
10% { top:100px; background: #BFE8F8; opacity:1; }
14% { background: #f4f4f4; top:100px; opacity:1; }
15% { background: #f4f4f4; top:0; opacity:1; }
20% { background: #f4f4f4; top:0; opacity:0; }
25% { background: #f4f4f4; top:0; opacity:0; }
45% { background: #EFEFEF; top:0; opacity:0.2; }
100% { top:100px; background: #55bce6; }
}
@keyframes blue {
0% { top:100px; background: #55bce6; opacity:1; }
10% { top:100px; background: #BFE8F8; opacity:1; }
14% { background: #f4f4f4; top:100px; opacity:1; }
15% { background: #f4f4f4; top:0; opacity:1; }
20% { background: #f4f4f4; top:0; opacity:0; }
25% { background: #fff; top:0; opacity:0; }
45% { background: #EFEFEF; top:0; opacity:0.2; }
100% { top:100px; background: #55bce6; }
} }
</style> </style>
</head> </head>
<body> <body>
<div id="loading-mask" class="loadmask">
<div class="brendpanel">
<div>
<div class="circle"></div>
<div class="loading-logo">
<i></i>
</div>
<div class="circle"></div>
</div>
</div>
<div class="placeholder">
<div class="columns"></div>
<div class="columns"></div>
</div>
</div>
<script type="text/javascript"> <script type="text/javascript">
function getUrlParams() { function getUrlParams() {
var e, var e,
@ -236,20 +199,17 @@
else if ( lang == 'vi') loading = 'Đang tải...'; else if ( lang == 'vi') loading = 'Đang tải...';
else if ( lang == 'zh') loading = '加载中...'; else if ( lang == 'zh') loading = '加载中...';
document.write( var brendpanel = document.getElementsByClassName('brendpanel')[0];
'<div id="loading-mask" class="loadmask">' + if (brendpanel) {
'<div class="loader-page" style="margin-bottom: ' + margin + 'px;' + ((logo!==null) ? 'height: auto;' : '') + '">' + if (/Android/.test(navigator.userAgent)) {
((logo!==null) ? logo : brendpanel.classList.add('android');
'<div class="loader-page-romb">' + }
'<div class="romb" id="blue"></div>' + brendpanel.classList.add('visible');
'<div class="romb" id="green"></div>' + }
'<div class="romb" id="red"></div>' + var placeholder = document.getElementsByClassName('placeholder')[0];
'</div>') + if (placeholder && /Android/.test(navigator.userAgent)) {
'</div>' + placeholder.classList.add('android');
'<div class="loader-page-text">' + customer + }
'<div class="loader-page-text-loading">' + loading + '</div>' +
'</div>' +
'</div>');
</script> </script>
<div id="viewport"></div> <div id="viewport"></div>