[SSE mobile] debug of deployment

This commit is contained in:
Maxim Kadushkin 2017-01-13 18:35:56 +03:00
parent e608f0e838
commit 37ee56347c
4 changed files with 658 additions and 73 deletions

View file

@ -0,0 +1,257 @@
/*
*
* (c) Copyright Ascensio System Limited 2010-2016
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
/**
* app.js
*
* Created by Maxim Kadushkin on 1/13/2017
* Copyright (c) 2016 Ascensio System SIA. All rights reserved.
*
*/
'use strict';
var reqerr;
require.config({
baseUrl: '../../',
paths: {
jquery : '../vendor/jquery/jquery',
underscore : '../vendor/underscore/underscore',
backbone : '../vendor/backbone/backbone',
framework7 : '../vendor/framework7/js/framework7',
text : '../vendor/requirejs-text/text',
xregexp : '../vendor/xregexp/xregexp-all-min',
sockjs : '../vendor/sockjs/sockjs.min',
jszip : '../vendor/jszip/jszip.min',
jsziputils : '../vendor/jszip-utils/jszip-utils.min',
jsrsasign : '../vendor/jsrsasign/jsrsasign-latest-all-min',
allfonts : '../../sdkjs/common/AllFonts',
sdk : '../../sdkjs/cell/sdk-all-min',
api : 'api/documents/api',
core : 'common/main/lib/core/application',
extendes : 'common/mobile/utils/extendes',
notification : 'common/main/lib/core/NotificationCenter',
analytics : 'common/Analytics',
gateway : 'common/Gateway',
locale : 'common/locale',
irregularstack : 'common/IrregularStack',
sharedsettings : 'common/mobile/utils/SharedSettings'
},
shim: {
framework7: {
exports: 'Framework7'
},
underscore: {
exports: '_'
},
sdk: {
deps: [
'jquery',
'underscore',
'allfonts',
'xregexp',
'sockjs',
'jszip',
'jsziputils',
'jsrsasign'
]
},
backbone: {
deps: [
'underscore',
'jquery'
],
exports: 'Backbone'
},
core: {
deps: [
'backbone',
'notification',
'irregularstack',
'sharedsettings'
]
}
}
});
require([
'backbone',
'framework7',
'core',
'underscore',
'extendes',
'sdk',
'api',
'analytics',
'gateway',
'locale'
], function (Backbone, Framework7) {
Backbone.history.start();
/**
* Application instance with SSE namespace defined
*/
var app = new Backbone.Application({
nameSpace: 'SSE',
autoCreate: false,
controllers : [
'Editor',
'Toolbar',
'Search',
'CellEditor',
'Main',
'DocumentHolder'
,'Statusbar'
,'Settings'
,'EditContainer'
,'EditCell'
,'EditText'
,'EditImage'
,'EditShape'
,'EditChart'
,'EditHyperlink'
,'AddContainer'
,'AddChart'
,'AddFunction'
,'AddShape'
,'AddOther'
,'AddLink'
]
});
Common.Locale.apply();
var device = Framework7.prototype.device;
var loadPlatformCss = function (filename, opt){
var fileref = document.createElement('link');
fileref.setAttribute('rel', 'stylesheet');
fileref.setAttribute('type', 'text/css');
fileref.setAttribute('href', filename);
if (typeof fileref != 'undefined') {
document.getElementsByTagName("head")[0].appendChild(fileref);
}
};
//Store Framework7 initialized instance for easy access
window.uiApp = new Framework7({
// Default title for modals
modalTitle: 'ONLYOFFICE',
// Enable tap hold events
tapHold: true,
// If it is webapp, we can enable hash navigation:
// pushState: false,
// If Android
material: device.android,
// Hide and show indicator during ajax requests
onAjaxStart: function (xhr) {
uiApp.showIndicator();
},
onAjaxComplete: function (xhr) {
uiApp.hideIndicator();
}
});
//Export DOM7 to local variable to make it easy accessable
window.$$ = Dom7;
//Load platform styles
loadPlatformCss('resources/css/app-' + (device.android ? 'material' : 'ios') + '.css');
require([
'common/main/lib/util/LocalStorage',
'common/main/lib/util/utils',
'spreadsheeteditor/mobile/app/controller/Editor',
'spreadsheeteditor/mobile/app/controller/Toolbar',
'spreadsheeteditor/mobile/app/controller/Search',
'spreadsheeteditor/mobile/app/controller/Main',
'spreadsheeteditor/mobile/app/controller/DocumentHolder'
,'spreadsheeteditor/mobile/app/controller/CellEditor'
,'spreadsheeteditor/mobile/app/controller/Statusbar'
,'spreadsheeteditor/mobile/app/controller/Settings'
,'spreadsheeteditor/mobile/app/controller/edit/EditContainer'
,'spreadsheeteditor/mobile/app/controller/edit/EditCell'
,'spreadsheeteditor/mobile/app/controller/edit/EditText'
,'spreadsheeteditor/mobile/app/controller/edit/EditImage'
,'spreadsheeteditor/mobile/app/controller/edit/EditShape'
,'spreadsheeteditor/mobile/app/controller/edit/EditChart'
,'spreadsheeteditor/mobile/app/controller/edit/EditHyperlink'
,'spreadsheeteditor/mobile/app/controller/add/AddContainer'
,'spreadsheeteditor/mobile/app/controller/add/AddChart'
,'spreadsheeteditor/mobile/app/controller/add/AddFunction'
,'spreadsheeteditor/mobile/app/controller/add/AddShape'
,'spreadsheeteditor/mobile/app/controller/add/AddOther'
,'spreadsheeteditor/mobile/app/controller/add/AddLink'
], function() {
app.start();
});
}, function(err) {
if (err.requireType == 'timeout' && !reqerr) {
var getUrlParams = function() {
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;
};
var encodeUrlParam = function(str) {
return str.replace(/&/g, '&')
.replace(/"/g, '"')
.replace(/'/g, ''')
.replace(/</g, '&lt;')
.replace(/>/g, '&gt;');
};
var lang = (getUrlParams()["lang"] || 'en').split("-")[0];
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.';
window.alert(reqerr);
window.location.reload();
}
});

View file

@ -0,0 +1,242 @@
<!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 Spreadsheet Editor</title>
<link rel="stylesheet" type="text/css" href="../../../../sdkjs/cell/css/main-mobile.css"/>
<link href="http://fonts.googleapis.com/css?family=Roboto:400,300,500,700" rel="stylesheet" type="text/css">
<style type="text/css">
.loadmask {
position: absolute;
left: 0;
top: 0;
height: 100%;
width: 100%;
overflow: hidden;
border: none;
background-color: #f4f4f4;
z-index: 100;
}
.loader-page {
width: 100%;
height: 170px;
bottom: 42%;
position: absolute;
text-align: center;
line-height: 10px;
}
.loader-logo {
max-height: 160px;
margin-bottom: 10px;
}
.loader-page-romb {
width: 40px;
display: inline-block;
}
.loader-page-text {
width: 100%;
bottom: 42%;
position: absolute;
text-align: center;
color: #888;
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
line-height: 20px;
}
.loader-page-text-loading {
font-size: 14px;
}
.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;
-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 {
z-index: 3;
background: #55bce6;
-webkit-animation-name: blue;
-moz-animation-name: blue;
-ms-animation-name: blue;
-o-animation-name: blue;
animation-name: blue;
}
#red {
z-index:1;
background: #de7a59;
-webkit-animation-name: red;
-moz-animation-name: red;
-ms-animation-name: red;
-o-animation-name: red;
animation-name: red;
}
#green {
z-index: 2;
background: #a1cb5c;
-webkit-animation-name: green;
-moz-animation-name: green;
-ms-animation-name: green;
-o-animation-name: green;
animation-name: green;
}
@-webkit-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; }
}
@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>
</head>
<body>
<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, '&amp;')
.replace(/"/g, '&quot;')
.replace(/'/g, '&#39;')
.replace(/</g, '&lt;')
.replace(/>/g, '&gt;');
}
var params = getUrlParams(),
lang = (params["lang"] || 'en').split("-")[0],
customer = params["customer"] ? ('<div class="loader-page-text-customer">' + encodeUrlParam(params["customer"]) + '</div>') : '',
margin = (customer !== '') ? 50 : 20,
loading = 'Loading...',
logo = params["logo"] ? ((params["logo"] !== 'none') ? ('<img src="' + encodeUrlParam(params["logo"]) + '" class="loader-logo" />') : '') : null;
if ( lang == 'de') loading = 'Ladevorgang...';
else if ( lang == 'es') loading = 'Cargando...';
else if ( lang == 'fr') loading = 'Chargement en cours...';
else if ( lang == 'it') loading = 'Caricamento in corso...';
else if ( lang == 'pt') loading = 'Carregando...';
else if ( lang == 'ru') loading = 'Загрузка...';
else if ( lang == 'sl') loading = 'Nalaganje...';
else if ( lang == 'tr') loading = 'Yükleniyor...';
document.write(
'<div id="loading-mask" class="loadmask">' +
'<div class="loader-page" style="margin-bottom: ' + margin + 'px;' + ((logo!==null) ? 'height: auto;' : '') + '">' +
((logo!==null) ? logo :
'<div class="loader-page-romb">' +
'<div class="romb" id="blue"></div>' +
'<div class="romb" id="green"></div>' +
'<div class="romb" id="red"></div>' +
'</div>') +
'</div>' +
'<div class="loader-page-text">' + customer +
'<div class="loader-page-text-loading">' + loading + '</div>' +
'</div>' +
'</div>');
</script>
<div id="viewport"></div>
<script data-main="app" src="../../../vendor/requirejs/require.js"></script>
</body>
</html>

View file

@ -3,6 +3,14 @@ module.exports = function(grunt) {
defaultConfig,
packageFile;
var copyright = '/*\n' +
' * Copyright (c) Ascensio System SIA <%= grunt.template.today("yyyy") %>. All rights reserved\n' +
' *\n' +
' * <%= pkg.homepage %> \n' +
' *\n' +
' * Version: ' + process.env['PRODUCT_VERSION'] + ' (build:' + process.env['BUILD_NUMBER'] + ')\n' +
' */\n';
grunt.loadNpmTasks('grunt-contrib-clean');
grunt.loadNpmTasks('grunt-contrib-copy');
@ -176,13 +184,7 @@ module.exports = function(grunt) {
concat: {
options: {
stripBanners: true,
banner: '/*\n' +
' * Copyright (c) Ascensio System SIA <%= grunt.template.today("yyyy") %>. All rights reserved\n' +
' *\n' +
' * <%= pkg.homepage %> \n' +
' *\n' +
' * Version: ' + process.env['PRODUCT_VERSION'] + ' (build:' + process.env['BUILD_NUMBER'] + ')\n' +
' */\n'
banner: copyright
},
dist: {
src: [packageFile['main']['js']['requirejs']['options']['out']],
@ -224,7 +226,7 @@ module.exports = function(grunt) {
force: true
},
'deploy': packageFile['mobile']['clean']['deploy'],
'template-backup': packageFile['mobile']['clean']['template-backup'],
'template-backup': packageFile.mobile.copy['template-backup'][0].dest
},
requirejs: {
@ -233,19 +235,14 @@ module.exports = function(grunt) {
}
},
uglify: {
concat: {
options: {
banner: '/*\n' +
' * Copyright (c) Ascensio System SIA <%= grunt.template.today("yyyy") %>. All rights reserved\n' +
' *\n' +
' * <%= pkg.homepage %>\n' +
' *\n' +
' * Version: <%= pkg.version %> (build:<%= pkg.build %>)\n' +
' */\n'
stripBanners: true,
banner: copyright
},
build: {
src: packageFile['mobile']['js']['src'],
dest: packageFile['mobile']['js']['dist']
dist: {
src: packageFile.mobile.js.requirejs.options.out,
dest: packageFile.mobile.js.requirejs.options.out
}
},
@ -302,13 +299,7 @@ module.exports = function(grunt) {
uglify: {
options: {
banner: '/*\n' +
' * Copyright (c) Ascensio System SIA <%= grunt.template.today("yyyy") %>. All rights reserved\n' +
' *\n' +
' * <%= pkg.homepage %>\n' +
' *\n' +
' * Version: <%= pkg.version %> (build:<%= pkg.build %>)\n' +
' */\n'
banner: copyright
},
build: {
src: packageFile['embed']['js']['src'],
@ -362,7 +353,7 @@ module.exports = function(grunt) {
grunt.registerTask('deploy-requirejs', ['requirejs-init', 'clean', 'uglify']);
grunt.registerTask('deploy-app-main', ['main-app-init', 'clean', 'imagemin', 'less', 'requirejs', 'concat', 'copy', 'replace:writeVersion']);
grunt.registerTask('deploy-app-mobile', ['mobile-app-init', 'clean:deploy', 'cssmin:styles', 'copy:template-backup', 'htmlmin', 'requirejs', 'copy:template-restore', 'clean:template-backup', 'copy:localization', 'copy:index-page', 'copy:images-app']);
grunt.registerTask('deploy-app-mobile', ['mobile-app-init', 'clean:deploy', 'cssmin:styles', 'copy:template-backup', 'htmlmin', 'requirejs', 'concat', 'copy:template-restore', 'clean:template-backup', 'copy:localization', 'copy:index-page', 'copy:images-app']);
grunt.registerTask('deploy-app-embed', ['embed-app-init', 'clean:prebuild', 'uglify', 'less', 'copy', 'clean:postbuild']);

View file

@ -1,7 +1,7 @@
{
"name": "spreadsheeteditor",
"version": "4.7.0",
"build": 878,
"build": 879,
"homepage": "http://www.onlyoffice.com",
"private": true,
"sdk": {
@ -237,55 +237,150 @@
}
},
"mobile": {
"clean": [
"clean": {
"deploy": [
"../deploy/web-apps/apps/spreadsheeteditor/mobile"
],
]
},
"js": {
"src": [
"../apps/common/Gateway.js",
"../apps/common/Analytics.js",
"../apps/common/mobile/loader.js",
"../apps/spreadsheeteditor/mobile/app/model/Worksheet.js",
"../apps/spreadsheeteditor/mobile/app/store/Worksheets.js",
"../apps/spreadsheeteditor/mobile/app/view/OpenCsvPanel.js",
"../apps/spreadsheeteditor/mobile/app/view/WorksheetList.js",
"../apps/spreadsheeteditor/mobile/app/view/Main.js",
"../apps/spreadsheeteditor/mobile/app/view/phone/toolbar/Search.js",
"../apps/spreadsheeteditor/mobile/app/view/phone/toolbar/View.js",
"../apps/spreadsheeteditor/mobile/app/view/phone/Main.js",
"../apps/spreadsheeteditor/mobile/app/view/tablet/toolbar/Search.js",
"../apps/spreadsheeteditor/mobile/app/view/tablet/toolbar/View.js",
"../apps/spreadsheeteditor/mobile/app/view/tablet/Main.js",
"../apps/spreadsheeteditor/mobile/app/controller/ApiEvents.js",
"../apps/spreadsheeteditor/mobile/app/controller/Document.js",
"../apps/spreadsheeteditor/mobile/app/controller/Search.js",
"../apps/spreadsheeteditor/mobile/app/controller/WorksheetList.js",
"../apps/spreadsheeteditor/mobile/app/controller/Main.js",
"../apps/spreadsheeteditor/mobile/app/controller/phone/Main.js",
"../apps/spreadsheeteditor/mobile/app/controller/tablet/Main.js",
"../apps/spreadsheeteditor/mobile/app/controller/toolbar/View.js",
"../apps/spreadsheeteditor/mobile/app/profile/Phone.js",
"../apps/spreadsheeteditor/mobile/app/profile/Tablet.js",
"../apps/common/locale.js",
"../apps/spreadsheeteditor/mobile/app.js"
],
"dist": "../deploy/web-apps/apps/spreadsheeteditor/mobile/app-all.js"
"requirejs": {
"options": {
"name": "../apps/spreadsheeteditor/mobile/app.js",
"out": "../deploy/web-apps/apps/spreadsheeteditor/mobile/app.js",
"baseUrl": "../apps/",
"inlineText": true,
"findNestedDependencies": true,
"preserveLicenseComments": false,
"optimizeAllPluginResources": true,
"paths": {
"jquery": "../vendor/jquery/jquery",
"underscore": "../vendor/underscore/underscore",
"backbone": "../vendor/backbone/backbone",
"framework7": "../vendor/framework7/js/framework7",
"text": "../vendor/requirejs-text/text",
"xregexp": "empty:",
"sockjs": "empty:",
"jszip": "empty:",
"jszip-utils": "empty:",
"jsrsasign": "empty:",
"coapisettings": "empty:",
"allfonts": "empty:",
"sdk": "empty:",
"api": "empty:",
"core": "common/main/lib/core/application",
"extendes": "common/mobile/utils/extendes",
"notification": "common/main/lib/core/NotificationCenter",
"localstorage": "common/main/lib/util/LocalStorage",
"analytics": "common/Analytics",
"gateway": "common/Gateway",
"locale": "common/locale",
"irregularstack": "common/IrregularStack",
"sharedsettings": "common/mobile/utils/SharedSettings"
},
"css": {
"normal": {
"src": [
"../apps/spreadsheeteditor/mobile/resources/css/application-normal.css"
],
"dist": "../deploy/web-apps/apps/spreadsheeteditor/mobile/resources/css/application-normal.css"
"shim": {
"framework7": {
"exports": "Framework7"
},
"retina": {
"src": [
"../apps/spreadsheeteditor/mobile/resources/css/application-retina.css"
"underscore": {
"exports": "_"
},
"backbone": {
"deps": [
"underscore",
"jquery"
],
"dist": "../deploy/web-apps/apps/spreadsheeteditor/mobile/resources/css/application-retina.css"
"exports": "Backbone"
},
"notification": {
"deps": [
"backbone"
]
},
"core": {
"deps": [
"backbone",
"notification",
"irregularstack",
"sharedsettings"
]
},
"extendes": {
"deps": [
"underscore",
"jquery",
"framework7"
]
},
"sdk": {
"deps": [
"jquery",
"underscore",
"coapisettings",
"allfonts",
"xregexp",
"sockjs",
"jszip",
"jszip-utils",
"jsrsasign"
]
},
"gateway": {
"deps": [
"jquery"
]
},
"analytics": {
"deps": [
"jquery"
]
}
}
}
}
},
"css": {
"ios": {
"src": [
"../apps/spreadsheeteditor/mobile/resources/css/app-ios.css"
],
"dist": "../deploy/web-apps/apps/spreadsheeteditor/mobile/resources/css/app-ios.css"
},
"material": {
"src": [
"../apps/spreadsheeteditor/mobile/resources/css/app-material.css"
],
"dist": "../deploy/web-apps/apps/spreadsheeteditor/mobile/resources/css/app-material.css"
}
},
"htmlmin": {
"templates": [
{
"expand": true,
"cwd": "../apps/spreadsheeteditor/mobile/app/template/",
"src": "*.template",
"dest": "../apps/spreadsheeteditor/mobile/app/template/"
}
]
},
"copy": {
"template-backup": [
{
"expand": true,
"cwd": "../apps/spreadsheeteditor/mobile/app/template/",
"src": "*.template",
"dest": "../apps/spreadsheeteditor/mobile/app/template/backup/",
"filter": "isFile"
}
],
"template-restore": [
{
"expand": true,
"cwd": "../apps/spreadsheeteditor/mobile/app/template/backup/",
"src": "*.template",
"dest": "../apps/spreadsheeteditor/mobile/app/template/",
"filter": "isFile"
}
],
"index-page": {
"../deploy/web-apps/apps/spreadsheeteditor/mobile/index.html": "../apps/spreadsheeteditor/mobile/index.html.deploy"
},