[SSE mobile] added statusbar
This commit is contained in:
parent
c30d6056f9
commit
5e9e647973
|
@ -1,249 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no, minimal-ui">
|
|
||||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
|
||||||
<meta name="apple-mobile-web-app-status-bar-style" content="black">
|
|
||||||
<meta name="mobile-web-app-capable" content="yes">
|
|
||||||
|
|
||||||
<title>ONLYOFFICE Spreadsheets</title>
|
|
||||||
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../../../sdkjs/cell/css/main-mobile.css"/>
|
|
||||||
<link href="https://fonts.googleapis.com/css?family=Roboto:400,300,500,700" rel="stylesheet" type="text/css">
|
|
||||||
<!-- App styles -->
|
|
||||||
|
|
||||||
<!-- splash -->
|
|
||||||
|
|
||||||
<style type="text/css">
|
|
||||||
|
|
||||||
.loadmask {
|
|
||||||
position: absolute;
|
|
||||||
left: 0;
|
|
||||||
top: 0;
|
|
||||||
height: 100%;
|
|
||||||
width: 100%;
|
|
||||||
overflow: hidden;
|
|
||||||
border: none;
|
|
||||||
background-color: #f4f4f4;
|
|
||||||
z-index: 10000;
|
|
||||||
}
|
|
||||||
.loadmask > .brendpanel {
|
|
||||||
width: 100%;
|
|
||||||
position: absolute;
|
|
||||||
height: 68px;
|
|
||||||
background-color: #e2e2e2;
|
|
||||||
opacity: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.loadmask > .brendpanel.visible {
|
|
||||||
opacity: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
.loadmask > .brendpanel.android {
|
|
||||||
height: 80px;
|
|
||||||
background: #40865c;
|
|
||||||
}
|
|
||||||
|
|
||||||
.loadmask > .brendpanel > div {
|
|
||||||
display: flex;
|
|
||||||
align-items: flex-start;
|
|
||||||
height: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.loadmask > .brendpanel .loading-logo {
|
|
||||||
max-width: 200px;
|
|
||||||
height: 20px;
|
|
||||||
margin: 0 auto;
|
|
||||||
margin-top: 12px;
|
|
||||||
line-height: 14px;
|
|
||||||
opacity: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.loadmask > .brendpanel .loading-logo > img {
|
|
||||||
display: inline-block;
|
|
||||||
max-width: 100px;
|
|
||||||
max-height: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.loadmask > .brendpanel .circle {
|
|
||||||
vertical-align: middle;
|
|
||||||
width: 28px;
|
|
||||||
height: 28px;
|
|
||||||
border-radius: 14px;
|
|
||||||
margin: 0 16px;
|
|
||||||
margin-bottom: 10px;
|
|
||||||
align-self: flex-end;
|
|
||||||
background: rgba(255, 255, 255, 0.3);
|
|
||||||
}
|
|
||||||
|
|
||||||
.loadmask > .brendpanel.android .circle {
|
|
||||||
margin-bottom: 12px;
|
|
||||||
background: rgba(255, 255, 255, 0.2);
|
|
||||||
}
|
|
||||||
|
|
||||||
.loadmask > .placeholder {
|
|
||||||
background: #fbfbfb;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
font-size: 0;
|
|
||||||
border: 1px solid #dfdfdf;
|
|
||||||
white-space: nowrap;
|
|
||||||
padding-top: 67px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.loadmask > .placeholder.android {
|
|
||||||
padding-top: 79px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.loadmask > .placeholder > .columns {
|
|
||||||
width: 100%;
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
.loadmask > .placeholder > .columns:first-child {
|
|
||||||
position: absolute;
|
|
||||||
background: linear-gradient(#f1f1f1 19px, #d5d5d5 20px) 0 0;
|
|
||||||
background-size: 20px 20px;
|
|
||||||
width: 25px;
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes flickerAnimation {
|
|
||||||
0% { opacity:1; }
|
|
||||||
50% { opacity:0.3; }
|
|
||||||
100% { opacity:1; }
|
|
||||||
}
|
|
||||||
@-o-keyframes flickerAnimation{
|
|
||||||
0% { opacity:1; }
|
|
||||||
50% { opacity:0.3; }
|
|
||||||
100% { opacity:1; }
|
|
||||||
}
|
|
||||||
@-moz-keyframes flickerAnimation{
|
|
||||||
0% { opacity:1; }
|
|
||||||
50% { opacity:0.3; }
|
|
||||||
100% { opacity:1; }
|
|
||||||
}
|
|
||||||
@-webkit-keyframes flickerAnimation{
|
|
||||||
0% { opacity:1; }
|
|
||||||
50% { opacity:0.3; }
|
|
||||||
100% { opacity:1; }
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div id="loading-mask" class="loadmask">
|
|
||||||
<div class="brendpanel">
|
|
||||||
<div>
|
|
||||||
<div class="circle"></div>
|
|
||||||
<div class="loading-logo">
|
|
||||||
</div>
|
|
||||||
<div class="circle"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="placeholder">
|
|
||||||
<div class="columns"></div>
|
|
||||||
<div class="columns"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<script type="text/javascript">
|
|
||||||
function getUrlParams() {
|
|
||||||
var e,
|
|
||||||
a = /\+/g, // Regex for replacing addition symbol with a space
|
|
||||||
r = /([^&=]+)=?([^&]*)/g,
|
|
||||||
d = function (s) { return decodeURIComponent(s.replace(a, " ")); },
|
|
||||||
q = window.location.search.substring(1),
|
|
||||||
urlParams = {};
|
|
||||||
|
|
||||||
while (e = r.exec(q))
|
|
||||||
urlParams[d(e[1])] = d(e[2]);
|
|
||||||
|
|
||||||
return urlParams;
|
|
||||||
}
|
|
||||||
|
|
||||||
function encodeUrlParam(str) {
|
|
||||||
return str.replace(/&/g, '&')
|
|
||||||
.replace(/"/g, '"')
|
|
||||||
.replace(/'/g, ''')
|
|
||||||
.replace(/</g, '<')
|
|
||||||
.replace(/>/g, '>');
|
|
||||||
}
|
|
||||||
|
|
||||||
var params = getUrlParams(),
|
|
||||||
lang = (params["lang"] || 'en').split(/[\-\_]/)[0],
|
|
||||||
logo = /*params["headerlogo"] ? encodeUrlParam(params["headerlogo"]) : */null;
|
|
||||||
var logoOO = null;
|
|
||||||
if (!logo) {
|
|
||||||
logoOO = /Android/.test(navigator.userAgent) ? "../../common/mobile/resources/img/header/header-logo-android.png" : "../../common/mobile/resources/img/header/header-logo-ios.png";
|
|
||||||
}
|
|
||||||
|
|
||||||
window.frameEditorId = params["frameEditorId"];
|
|
||||||
window.parentOrigin = params["parentOrigin"];
|
|
||||||
|
|
||||||
var brendpanel = document.getElementsByClassName('brendpanel')[0];
|
|
||||||
if (brendpanel) {
|
|
||||||
if (/Android/.test(navigator.userAgent)) {
|
|
||||||
brendpanel.classList.add('android');
|
|
||||||
}
|
|
||||||
brendpanel.classList.add('visible');
|
|
||||||
var elem = document.querySelector('.loading-logo');
|
|
||||||
if (elem) {
|
|
||||||
logo && (elem.innerHTML = '<img src=' + logo + '>');
|
|
||||||
logoOO && (elem.innerHTML = '<img src=' + logoOO + '>');
|
|
||||||
elem.style.opacity = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
var placeholder = document.getElementsByClassName('placeholder')[0];
|
|
||||||
if (placeholder && /Android/.test(navigator.userAgent)) {
|
|
||||||
placeholder.classList.add('android');
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<script type="text/javascript" src="../../../vendor/jquery/jquery.min.js"></script>
|
|
||||||
<script type="text/javascript" src="../../../vendor/xregexp/xregexp-all-min.js"></script>
|
|
||||||
|
|
||||||
<script type="text/javascript" src="../../../../sdkjs/develop/sdkjs/cell/scripts.js"></script>
|
|
||||||
<script>
|
|
||||||
var ua = navigator.userAgent;
|
|
||||||
|
|
||||||
if (/Sailfish/.test(ua) || /Jolla/.test(ua)) {
|
|
||||||
document.write('<script type="text/javascript" src="../../../vendor/iscroll/iscroll.min.js"><\/script>');
|
|
||||||
|
|
||||||
if (!/Android/.test(ua)) {
|
|
||||||
var ua = navigator.userAgent + ';Android 5.0;';
|
|
||||||
Object.defineProperty(navigator, 'userAgent', {
|
|
||||||
get: function () { return ua; }
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
window.sdk_scripts.forEach(function(item){
|
|
||||||
document.write('<script type="text/javascript" src="' + item + '"><\/script>');
|
|
||||||
});
|
|
||||||
|
|
||||||
window.requireTimeourError = function(){
|
|
||||||
var reqerr;
|
|
||||||
|
|
||||||
if ( lang == 'de') reqerr = 'Die Verbindung ist zu langsam, einige Komponenten konnten nicht geladen werden. Aktualisieren Sie bitte die Seite.';
|
|
||||||
else if ( lang == 'es') reqerr = 'La conexión es muy lenta, algunos de los componentes no han podido cargar. Por favor recargue la página.';
|
|
||||||
else if ( lang == 'fr') reqerr = 'La connexion est trop lente, certains des composants n\'ons pas pu être chargé. Veuillez recharger la page.';
|
|
||||||
else if ( lang == 'ru') reqerr = 'Слишком медленное соединение, не удается загрузить некоторые компоненты. Пожалуйста, обновите страницу.';
|
|
||||||
else reqerr = 'The connection is too slow, some of the components could not be loaded. Please reload the page.';
|
|
||||||
|
|
||||||
return reqerr;
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
<!-- application -->
|
|
||||||
<script data-main="app-dev" src="../../../vendor/requirejs/require.js"></script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
|
||||||
|
import React from 'react';
|
||||||
|
import StatusbarView from '../view/Statusbar';
|
||||||
|
|
||||||
|
const Statusbar = props => {
|
||||||
|
return <StatusbarView />
|
||||||
|
};
|
||||||
|
|
||||||
|
export default Statusbar;
|
|
@ -10,7 +10,15 @@
|
||||||
@import './app-ios.less';
|
@import './app-ios.less';
|
||||||
@import './icons-ios.less';
|
@import './icons-ios.less';
|
||||||
@import './icons-material.less';
|
@import './icons-material.less';
|
||||||
@import "./icons-common.less";
|
@import './icons-common.less';
|
||||||
|
|
||||||
|
.page[data-name='home'] {
|
||||||
|
.page-content {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: stretch;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
:root {
|
:root {
|
||||||
--f7-popover-width: 360px;
|
--f7-popover-width: 360px;
|
||||||
|
|
|
@ -5,6 +5,7 @@ import { Page, View, Navbar, NavLeft, NavRight, Link, Icon } from 'framework7-re
|
||||||
import Settings from '../view/settings/Settings';
|
import Settings from '../view/settings/Settings';
|
||||||
import CollaborationView from '../../../../common/mobile/lib/view/Collaboration.jsx'
|
import CollaborationView from '../../../../common/mobile/lib/view/Collaboration.jsx'
|
||||||
import CellEditor from '../controller/CellEditor';
|
import CellEditor from '../controller/CellEditor';
|
||||||
|
import Statusbar from '../controller/StatusBar'
|
||||||
|
|
||||||
export default class MainPage extends Component {
|
export default class MainPage extends Component {
|
||||||
constructor(props) {
|
constructor(props) {
|
||||||
|
@ -62,6 +63,7 @@ export default class MainPage extends Component {
|
||||||
!this.state.collaborationVisible ? null :
|
!this.state.collaborationVisible ? null :
|
||||||
<CollaborationView onclosed={this.handleOptionsViewClosed.bind(this, 'coauth')} />
|
<CollaborationView onclosed={this.handleOptionsViewClosed.bind(this, 'coauth')} />
|
||||||
}
|
}
|
||||||
|
<Statusbar />
|
||||||
</Page>
|
</Page>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,8 +1,17 @@
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { View } from 'framework7-react';
|
import { View, Toolbar, Link } from 'framework7-react';
|
||||||
|
|
||||||
|
const viewStyle = {
|
||||||
|
height: 30
|
||||||
|
};
|
||||||
|
|
||||||
const StatusbarView = props => {
|
const StatusbarView = props => {
|
||||||
return <div id="idx-statusbar" />;
|
return <View id="idx-statusbar" style={viewStyle}>
|
||||||
|
<Toolbar tabbar bottom>
|
||||||
|
<Link>Sheet 1</Link>
|
||||||
|
<Link>Sheet 2</Link>
|
||||||
|
</Toolbar>
|
||||||
|
</View>;
|
||||||
};
|
};
|
||||||
|
|
||||||
export default StatusbarView;
|
export default StatusbarView;
|
||||||
|
|
Loading…
Reference in a new issue