Commit 460fe3fb authored by Boris Kocherov's avatar Boris Kocherov

erp5_officejs: block runing if application files synchronize

integrate text, spreadsheet, presentation router to one officejs_router
add global settings gadget configuration string
speedup replication modification_date use
parent 430f3245
......@@ -10,7 +10,7 @@
<script src="renderjs.js" type="text/javascript"></script>
<!-- custom script -->
<script src="gadget_officejs_presentation_router.js" type="text/javascript"></script>
<script src="gadget_officejs_router.js" type="text/javascript"></script>
</head>
<body>
......@@ -18,5 +18,6 @@
<script data-renderjs-configuration="parent_relative_url" type="text/x-renderjs-configuration">document_module</script>
<script data-renderjs-configuration="document_title" type="text/x-renderjs-configuration">Presentation</script>
<script data-renderjs-configuration="document_title_plural" type="text/x-renderjs-configuration">Presentations</script>
<script data-renderjs-configuration="global_setting_gadget_url" type="text/x-renderjs-configuration">https://setting-gadget.app.officejs.com</script>
</body>
</html>
\ No newline at end of file
......@@ -234,7 +234,7 @@
</item>
<item>
<key> <string>serial</string> </key>
<value> <string>953.13908.13658.50363</string> </value>
<value> <string>953.30719.44077.50978</string> </value>
</item>
<item>
<key> <string>state</string> </key>
......@@ -252,7 +252,7 @@
</tuple>
<state>
<tuple>
<float>1471734252.05</float>
<float>1472140672.24</float>
<string>UTC</string>
</tuple>
</state>
......
/*global window, rJS */
/*global window, rJS, jIO, URI, location, console, document, RSVP, loopEventListener, navigator */
/*jslint nomen: true, indent: 2, maxerr: 3*/
(function (window, rJS) {
"use strict";
var gadget_klass = rJS(window),
NAME,
MAIN_PAGE_PREFIX = "gadget_officejs_",
DEFAULT_PAGE = "document_list",
REDIRECT_TIMEOUT = 5000;
function get_jio_cache_storage(name) {
return {
type: "query",
sub_storage: {
type: "uuid",
sub_storage: {
type: "indexeddb",
database: 'officejs_' + name + '_cache_erp5'
}
}
};
}
function get_jio_replicate_storage(name, modification_date) {
var erp5_query,
sdk_name;
erp5_query = [
"ooffice/apps/common/%",
"ooffice/vendor/%",
"ooffice/sdkjs/common/%"
];
switch (name) {
case "spreadsheet":
sdk_name = "cell";
erp5_query.push("ooffice/apps/" + name + "editor/main/%");
erp5_query.push("ooffice/sdkjs/word/%");
break;
case "text":
sdk_name = "word";
erp5_query.push("ooffice/apps/documenteditor/main/%");
erp5_query.push("ooffice/sdkjs/cell/model/%");
erp5_query.push("ooffice/sdkjs/cell/utils/%");
break;
case "presentation":
sdk_name = "slide";
erp5_query.push("ooffice/apps/" + name + "editor/main/%");
erp5_query.push("ooffice/sdkjs/word/%");
erp5_query.push("ooffice/sdkjs/cell/%");
break;
}
erp5_query.push("ooffice/sdkjs/" + sdk_name + "/%");
erp5_query = erp5_query.map(function (currentValue) {
return 'url_string: "' + currentValue + '"';
}).join(' OR ');
erp5_query = erp5_query + ' OR ' + [
"ooffice/gadget_ooffice.js",
"ooffice/gadget_ooffice.html",
"ooffice/apps/require.js",
"ooffice/apps/css.js",
"ooffice/apps/underscore.js",
"ooffice/apps/backbone.js",
"ooffice/apps/bootstrap.js",
"ooffice/apps/text.js",
"ooffice/apps/xregexp-all-min.js",
"ooffice/apps/jquery.mousewheel.js"
].map(function (currentValue) {
return 'url_string: ="' + currentValue + '"';
}).join(' OR ');
erp5_query = erp5_query + ' OR ' + [
"gadget_officejs_spreadsheet_router.html",
"gadget_officejs_router.js",
"gadget_officejs_page_document_list.html",
"gadget_officejs_page_document_list.js",
"gadget_officejs_jio_" + name + "_view.html",
"gadget_officejs_jio_spreadsheet_view.js",
"gadget_officejs_page_add_document.html",
"gadget_officejs_page_add_document.js",
"gadget_erp5_editor_panel.html",
"gadget_erp5_editor_panel.js",
"URI.js",
"dygraph.js",
"gadget_erp5.css",
"gadget_global.js",
"gadget_jio.html",
"gadget_jio.js",
"gadget_translate.html",
"gadget_translate.js",
"i18next.js",
"jiodev.js",
"jquery.js",
"jquerymobile.css",
"jquerymobile.js",
"renderjs.js",
"rsvp.js",
"gadget_officejs_header.html",
"gadget_officejs_jio.html",
"gadget_officejs_page_add_text_document.html",
"gadget_officejs_page_jio_configurator.html",
"gadget_officejs_page_jio_dav_configurator.html",
"gadget_officejs_page_login.html",
"gadget_officejs_page_logout.html",
"gadget_officejs_page_share_webrtc_jio.html",
"gadget_officejs_page_sync.html",
"gadget_translation.html",
"gadget_officejs_webrtc_jio.html",
"gadget_officejs_widget_listbox.html",
"gadget_officejs_header.js",
"gadget_officejs_jio.js",
"gadget_officejs_page_add_text_document.js",
"gadget_officejs_page_jio_configurator.js",
"gadget_officejs_page_jio_dav_configurator.js",
"gadget_officejs_page_login.js",
"gadget_officejs_page_logout.js",
"gadget_officejs_page_share_webrtc_jio.js",
"gadget_officejs_page_sync.js",
"gadget_officejs_application_panel.html",
"gadget_officejs_application_panel.js",
"gadget_translation.js",
"gadget_translation_data.js",
"gadget_officejs_webrtc_jio.js",
"gadget_officejs_widget_listbox.js",
"erp5_launcher.js",
"erp5_launcher.html"
].map(function (currentValue) {
return '(reference: ="' + currentValue + '")';
}).join(' OR ');
erp5_query = "(" + erp5_query + ")";
if (modification_date) {
modification_date = ' AND modification_date:>="'
+ modification_date + '" '
} else {
modification_date = "";
}
return jIO.createJIO({
type: "replicate",
query: {
query: '(portal_type: ("Web Style", "Web Page", "Web Script")) AND ' +
erp5_query + modification_date,
limit: [0, 1234567890]
},
use_remote_post: true,
conflict_handling: 2,
check_local_modification: false,
check_local_creation: false,
check_local_deletion: false,
check_remote_modification: true,
check_remote_creation: true,
check_remote_deletion: true,
local_sub_storage: {
type: "attachasproperty",
map: {
text_content: "text_content",
data: "data"
},
sub_storage: get_jio_cache_storage(name)
},
remote_sub_storage: {
type: "erp5",
url: (new URI("hateoasnoauth"))
.absoluteTo(location.href)
.toString(),
default_view_reference: "jio_view"
}
});
}
function listenHashChange(gadget) {
function extractHashAndDispatch(evt) {
var hash = (evt.newURL || window.location.toString()).split('#')[1],
......@@ -38,7 +199,7 @@
}
var result = loopEventListener(window, 'hashchange', false,
extractHashAndDispatch),
extractHashAndDispatch),
event = document.createEvent("Event");
event.initEvent('hashchange', true, true);
event.newURL = window.location.toString();
......@@ -58,7 +219,9 @@
});
})
.declareMethod("getCommandUrlFor", function(options) {
.declareAcquiredMethod('getSetting', 'getSetting')
.declareAcquiredMethod('setSetting', 'setSetting')
.declareMethod("getCommandUrlFor", function (options) {
var prefix = '',
result,
key;
......@@ -121,13 +284,13 @@
}
return {
url: MAIN_PAGE_PREFIX + "jio_"
+ base_portal_type
+ "_" + args.page + ".html",
+ base_portal_type
+ "_" + args.page + ".html",
options: sub_options
};
});
})
.declareAcquiredMethod('jio_get', 'jio_get')
.declareAcquiredMethod('renderApplication', 'renderApplication')
.declareMethod('start', function () {
......@@ -142,6 +305,9 @@
function push(a, b) {
queue.push(function () {
if (a == "portal_type") {
NAME = b.toLowerCase();
}
return gadget.setSetting(a, b);
});
}
......@@ -159,6 +325,53 @@
.push(function () {
return gadget.props.start_deferred.promise;
})
.push(function () {
if (('serviceWorker' in navigator) && (NAME != "web page")) {
return jIO.createJIO(get_jio_cache_storage(NAME)).allDocs({
query: '',
sort_on: [
['modification_date', 'descending']
],
limit: [0, 1],
select_list: ['modification_date']
})
.push(function (data) {
var modification_date,
jio_store;
if (data.data.total_rows == 1) {
modification_date = data.data.rows[0].value.modification_date
}
jio_store = get_jio_replicate_storage(NAME);
return gadget.getSetting('jio_' + NAME + '_cache_description')
.push(function (query) {
if (jio_store.__storage._query_options.query == query) {
return get_jio_replicate_storage(NAME, modification_date).repair();
} else {
return gadget.setSetting(
'jio_' + NAME + '_cache_description', jio_store.__storage._query_options.query
)
.push(function () {
return jio_store.repair();
});
}
})
.push(function () {
navigator.serviceWorker.register('gadget_officejs_' + NAME + '_serviceworker.js')
.then(function (reg) {
// registration worked
console.log('Registration succeeded. Scope is ' + reg.scope);
})
.then(undefined, function (error) {
// registration failed
console.log('Registration failed with ' + error);
});
return {}
});
});
} else {
return {};
}
})
.push(function () {
return listenHashChange(gadget);
});
......
......@@ -230,7 +230,7 @@
</item>
<item>
<key> <string>serial</string> </key>
<value> <string>947.54085.31754.65399</string> </value>
<value> <string>953.30941.12978.18978</string> </value>
</item>
<item>
<key> <string>state</string> </key>
......@@ -248,7 +248,7 @@
</tuple>
<state>
<tuple>
<float>1450274255.9</float>
<float>1472135853.24</float>
<string>UTC</string>
</tuple>
</state>
......
......@@ -10,7 +10,7 @@
<script src="renderjs.js" type="text/javascript"></script>
<!-- custom script -->
<script src="gadget_officejs_spreadsheet_router.js" type="text/javascript"></script>
<script src="gadget_officejs_router.js" type="text/javascript"></script>
</head>
<body>
......@@ -18,5 +18,6 @@
<script data-renderjs-configuration="parent_relative_url" type="text/x-renderjs-configuration">document_module</script>
<script data-renderjs-configuration="document_title" type="text/x-renderjs-configuration">Spreadsheet</script>
<script data-renderjs-configuration="document_title_plural" type="text/x-renderjs-configuration">Spreadsheets</script>
<script data-renderjs-configuration="global_setting_gadget_url" type="text/x-renderjs-configuration">https://setting-gadget.app.officejs.com</script>
</body>
</html>
</html>
\ No newline at end of file
......@@ -220,7 +220,7 @@
</item>
<item>
<key> <string>actor</string> </key>
<value> <string>cedric.le.ninivin</string> </value>
<value> <string>zope</string> </value>
</item>
<item>
<key> <string>comment</string> </key>
......@@ -234,7 +234,7 @@
</item>
<item>
<key> <string>serial</string> </key>
<value> <string>947.15311.14919.61593</string> </value>
<value> <string>953.30717.14538.34184</string> </value>
</item>
<item>
<key> <string>state</string> </key>
......@@ -252,7 +252,7 @@
</tuple>
<state>
<tuple>
<float>1448034205.49</float>
<float>1472140702.02</float>
<string>UTC</string>
</tuple>
</state>
......
......@@ -10,7 +10,7 @@
<script src="renderjs.js" type="text/javascript"></script>
<!-- custom script -->
<script src="gadget_officejs_text_router.js" type="text/javascript"></script>
<script src="gadget_officejs_router.js" type="text/javascript"></script>
</head>
<body>
......@@ -18,5 +18,6 @@
<script data-renderjs-configuration="parent_relative_url" type="text/x-renderjs-configuration">document_module</script>
<script data-renderjs-configuration="document_title" type="text/x-renderjs-configuration">Text</script>
<script data-renderjs-configuration="document_title_plural" type="text/x-renderjs-configuration">Text documents</script>
<script data-renderjs-configuration="global_setting_gadget_url" type="text/x-renderjs-configuration">https://setting-gadget.app.officejs.com</script>
</body>
</html>
</html>
\ No newline at end of file
......@@ -240,7 +240,7 @@
</item>
<item>
<key> <string>serial</string> </key>
<value> <string>947.62778.13711.18073</string> </value>
<value> <string>953.30720.20594.2577</string> </value>
</item>
<item>
<key> <string>state</string> </key>
......@@ -258,7 +258,7 @@
</tuple>
<state>
<tuple>
<float>1450795865.64</float>
<float>1472140729.45</float>
<string>UTC</string>
</tuple>
</state>
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment