Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
erp5
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kasra Jamshidi
erp5
Commits
f0fc59b2
Commit
f0fc59b2
authored
Jul 29, 2016
by
Romain Courteaud
🐙
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[erp5_web_renderjs_ui] Update jio.js to 3.12.0
parent
5cf3d2e6
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
122 additions
and
148 deletions
+122
-148
bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_jio_js.js
...enderjs_ui/PathTemplateItem/web_page_module/rjs_jio_js.js
+120
-146
bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_jio_js.xml
...nderjs_ui/PathTemplateItem/web_page_module/rjs_jio_js.xml
+2
-2
No files found.
bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_jio_js.js
View file @
f0fc59b2
...
...
@@ -7458,11 +7458,17 @@ return new Parser;
};
}(window, moment));
;/*global window, RSVP, Blob, XMLHttpRequest, QueryFactory, Query, atob,
FileReader, ArrayBuffer, Uint8Array */
FileReader, ArrayBuffer, Uint8Array
, navigator
*/
(function (window, RSVP, Blob, QueryFactory, Query, atob,
FileReader
,
ArrayBuffer
,
Uint8Array
)
{
FileReader, ArrayBuffer, Uint8Array
, navigator
) {
"use strict";
if (window.openDatabase === undefined) {
window.openDatabase = function () {
throw new Error('WebSQL is not supported by ' + navigator.userAgent);
};
}
var util = {},
jIO;
...
...
@@ -7569,6 +7575,38 @@ return new Parser;
}
util.readBlobAsDataURL = readBlobAsDataURL;
function stringify(obj) {
// Implement a stable JSON.stringify
// Object's keys are alphabetically ordered
var key,
key_list,
i,
value,
result_list;
if (obj.constructor === Object) {
key_list = Object.keys(obj).sort();
result_list = [];
for (i = 0; i < key_list.length; i += 1) {
key = key_list[i];
value = stringify(obj[key]);
if (value !== undefined) {
result_list.push(stringify(key) + ':' + value);
}
}
return '{' + result_list.join(',') + '}';
}
if (obj.constructor === Array) {
result_list = [];
for (i = 0; i < obj.length; i += 1) {
result_list.push(stringify(obj[i]));
}
return '[' + result_list.join(',') + ']';
}
return JSON.stringify(obj);
}
util.stringify = stringify;
// https://gist.github.com/davoclavo/4424731
function dataURItoBlob(dataURI) {
// convert base64 to raw binary data held in a string
...
...
@@ -7931,7 +7969,7 @@ return new Parser;
window.jIO = jIO;
}(window, RSVP, Blob, QueryFactory, Query, atob,
FileReader
,
ArrayBuffer
,
Uint8Array
));
FileReader, ArrayBuffer, Uint8Array
, navigator
));
;/*
* Rusha, a JavaScript implementation of the Secure Hash Algorithm, SHA-1,
* as defined in FIPS PUB 180-1, tuned for high performance with large inputs.
...
...
@@ -8158,7 +8196,7 @@ return new Parser;
var ceilHeapSize = function (v) {
// The asm.js spec says:
// The heap object's byteLength must be either
// 2^n for n in [12, 24) or 2^24 * n for n
≥
1.
// 2^n for n in [12, 24) or 2^24 * n for n
≥
1.
// Also, byteLengths smaller than 2^16 are deprecated.
var p;
// If v is smaller than 2^16, the smallest possible solution
...
...
@@ -8370,7 +8408,7 @@ return new Parser;
/*jslint nomen: true*/
/*global jIO, RSVP, Rusha*/
(
function
(
jIO
,
RSVP
,
Rusha
)
{
(function (jIO, RSVP, Rusha
, stringify
) {
"use strict";
var rusha = new Rusha(),
...
...
@@ -8397,9 +8435,9 @@ return new Parser;
this._remote_sub_storage = jIO.createJIO(spec.remote_sub_storage);
this._signature_hash = "_replicate_" + generateHash(
JSON
.
stringify
(
spec
.
local_sub_storage
)
+
JSON
.
stringify
(
spec
.
remote_sub_storage
)
+
JSON
.
stringify
(
this
.
_query_options
)
stringify(spec.local_sub_storage) +
stringify(spec.remote_sub_storage) +
stringify(this._query_options)
);
this._signature_sub_storage = jIO.createJIO({
type: "document",
...
...
@@ -8540,90 +8578,6 @@ return new Parser;
});
}
function
checkLocalCreation
(
queue
,
source
,
destination
,
id
,
options
,
getMethod
)
{
var
remote_doc
;
queue
.
push
(
function
()
{
return
destination
.
get
(
id
);
})
.
push
(
function
(
doc
)
{
remote_doc
=
doc
;
},
function
(
error
)
{
if
((
error
instanceof
jIO
.
util
.
jIOError
)
&&
(
error
.
status_code
===
404
))
{
// This document was never synced.
// Push it to the remote storage and store sync information
return
;
}
throw
error
;
})
.
push
(
function
()
{
// This document was never synced.
// Push it to the remote storage and store sync information
return
getMethod
(
id
);
})
.
push
(
function
(
doc
)
{
var
local_hash
=
generateHash
(
JSON
.
stringify
(
doc
)),
remote_hash
;
if
(
remote_doc
===
undefined
)
{
return
propagateModification
(
source
,
destination
,
doc
,
local_hash
,
id
,
options
);
}
remote_hash
=
generateHash
(
JSON
.
stringify
(
remote_doc
));
if
(
local_hash
===
remote_hash
)
{
// Same document
return
context
.
_signature_sub_storage
.
put
(
id
,
{
"
hash
"
:
local_hash
})
.
push
(
function
()
{
skip_document_dict
[
id
]
=
null
;
});
}
if
(
options
.
conflict_ignore
===
true
)
{
return
;
}
if
(
options
.
conflict_force
===
true
)
{
return
propagateModification
(
source
,
destination
,
doc
,
local_hash
,
id
,
options
);
}
// Already exists on destination
throw
new
jIO
.
util
.
jIOError
(
"
Conflict on '
"
+
id
+
"
':
"
+
JSON
.
stringify
(
doc
)
+
"
!==
"
+
JSON
.
stringify
(
remote_doc
),
409
);
});
}
function
checkBulkLocalCreation
(
queue
,
source
,
destination
,
id_list
,
options
)
{
queue
.
push
(
function
()
{
return
source
.
bulk
(
id_list
);
})
.
push
(
function
(
result_list
)
{
var
i
,
sub_queue
=
new
RSVP
.
Queue
();
function
getResult
(
j
)
{
return
function
(
id
)
{
if
(
id
!==
id_list
[
j
].
parameter_list
[
0
])
{
throw
new
Error
(
"
Does not access expected ID
"
+
id
);
}
return
result_list
[
j
];
};
}
for
(
i
=
0
;
i
<
result_list
.
length
;
i
+=
1
)
{
checkLocalCreation
(
sub_queue
,
source
,
destination
,
id_list
[
i
].
parameter_list
[
0
],
options
,
getResult
(
i
));
}
return
sub_queue
;
});
}
function checkLocalDeletion(queue, destination, id, source) {
var status_hash;
queue
...
...
@@ -8634,7 +8588,7 @@ return new Parser;
status_hash = result.hash;
return destination.get(id)
.push(function (doc) {
var
remote_hash
=
generateHash
(
JSON
.
stringify
(
doc
));
var remote_hash = generateHash(stringify(doc));
if (remote_hash === status_hash) {
return destination.remove(id)
.push(function () {
...
...
@@ -8663,24 +8617,37 @@ return new Parser;
function checkSignatureDifference(queue, source, destination, id,
conflict_force, conflict_ignore,
getMethod
)
{
is_creation, is_modification,
getMethod, options) {
queue
.push(function () {
return
RSVP
.
all
([
getMethod
(
id
),
context
.
_signature_sub_storage
.
get
(
id
)
]);
// Optimisation to save a get call to signature storage
if (is_creation === true) {
return RSVP.all([
getMethod(id),
{hash: undefined}
]);
}
if (is_modification === true) {
return RSVP.all([
getMethod(id),
context._signature_sub_storage.get(id)
]);
}
throw new jIO.util.jIOError("Unexpected call of"
+ " checkSignatureDifference",
409);
})
.push(function (result_list) {
var doc = result_list[0],
local_hash
=
generateHash
(
JSON
.
stringify
(
doc
)),
local_hash = generateHash(stringify(doc)),
status_hash = result_list[1].hash;
if (local_hash !== status_hash) {
// Local modifications
return destination.get(id)
.push(function (remote_doc) {
var
remote_hash
=
generateHash
(
JSON
.
stringify
(
remote_doc
));
var remote_hash = generateHash(stringify(remote_doc));
if (remote_hash !== status_hash) {
// Modifications on both sides
if (local_hash === remote_hash) {
...
...
@@ -8697,19 +8664,29 @@ return new Parser;
}
if (conflict_force !== true) {
throw new jIO.util.jIOError("Conflict on '" + id + "': " +
JSON
.
stringify
(
doc
)
+
"
!==
"
+
JSON
.
stringify
(
remote_doc
),
stringify(doc) + " !== " +
stringify(remote_doc),
409);
}
}
return propagateModification(source, destination, doc,
local_hash, id);
}, function (error) {
var use_post;
if ((error instanceof jIO.util.jIOError) &&
(error.status_code === 404)) {
// Document has been deleted remotely
if (is_creation) {
// Remote document does not exists, create it following
// provided options
use_post = options.use_post;
} else {
// Remote document has been erased, put it to save
// modification
use_post = false;
}
return propagateModification(source, destination, doc,
local_hash
,
id
);
local_hash, id,
{use_post: use_post});
}
throw error;
});
...
...
@@ -8718,6 +8695,7 @@ return new Parser;
}
function checkBulkSignatureDifference(queue, source, destination, id_list,
document_status_list, options,
conflict_force, conflict_ignore) {
queue
.push(function () {
...
...
@@ -8740,7 +8718,9 @@ return new Parser;
checkSignatureDifference(sub_queue, source, destination,
id_list[i].parameter_list[0],
conflict_force, conflict_ignore,
getResult
(
i
));
document_status_list[i].is_creation,
document_status_list[i].is_modification,
getResult(i), options);
}
return sub_queue;
});
...
...
@@ -8761,9 +8741,11 @@ return new Parser;
.push(function (result_list) {
var i,
local_dict = {},
new
_list
=
[],
change
_list
=
[],
document
_list = [],
document_status
_list = [],
signature_dict = {},
is_modification,
is_creation,
key;
for (i = 0; i < result_list[0].data.total_rows; i += 1) {
if (!skip_document_dict.hasOwnProperty(
...
...
@@ -8779,54 +8761,46 @@ return new Parser;
signature_dict[result_list[1].data.rows[i].id] = i;
}
}
if
(
options
.
check_creation
===
true
)
{
for
(
key
in
local_dict
)
{
if
(
local_dict
.
hasOwnProperty
(
key
))
{
if
(
!
signature_dict
.
hasOwnProperty
(
key
))
{
if
(
options
.
use_bulk_get
===
true
)
{
new_list
.
push
({
method
:
"
get
"
,
parameter_list
:
[
key
]
});
}
else
{
checkLocalCreation
(
queue
,
source
,
destination
,
key
,
options
,
source
.
get
.
bind
(
source
));
}
for (key in local_dict) {
if (local_dict.hasOwnProperty(key)) {
is_modification = signature_dict.hasOwnProperty(key)
&& options.check_modification;
is_creation = !signature_dict.hasOwnProperty(key)
&& options.check_creation;
if (is_modification === true || is_creation === true) {
if (options.use_bulk_get === true) {
document_list.push({
method: "get",
parameter_list: [key]
});
document_status_list.push({
is_creation: is_creation,
is_modification: is_modification
});
} else {
checkSignatureDifference(queue, source, destination, key,
options.conflict_force,
options.conflict_ignore,
is_creation, is_modification,
source.get.bind(source),
options);
}
}
}
if
((
options
.
use_bulk_get
===
true
)
&&
(
new_list
.
length
!==
0
))
{
checkBulkLocalCreation
(
queue
,
source
,
destination
,
new_list
,
options
);
}
}
for
(
key
in
signature_dict
)
{
if
(
signature_dict
.
hasOwnProperty
(
key
))
{
if
(
local_dict
.
hasOwnProperty
(
key
))
{
if
(
options
.
check_modification
===
true
)
{
if
(
options
.
use_bulk_get
===
true
)
{
change_list
.
push
({
method
:
"
get
"
,
parameter_list
:
[
key
]
});
}
else
{
checkSignatureDifference
(
queue
,
source
,
destination
,
key
,
options
.
conflict_force
,
options
.
conflict_ignore
,
source
.
get
.
bind
(
source
));
}
}
}
else
{
if
(
options
.
check_deletion
===
true
)
{
if (options.check_deletion === true) {
for (key in signature_dict) {
if (signature_dict.hasOwnProperty(key)) {
if (!local_dict.hasOwnProperty(key)) {
checkLocalDeletion(queue, destination, key, source);
}
}
}
}
if
((
options
.
use_bulk_get
===
true
)
&&
(
change
_list
.
length
!==
0
))
{
if ((options.use_bulk_get === true) && (
document
_list.length !== 0)) {
checkBulkSignatureDifference(queue, source, destination,
change_list
,
document_list, document_status_list,
options,
options.conflict_force,
options.conflict_ignore);
}
...
...
@@ -8921,7 +8895,7 @@ return new Parser;
jIO.addStorage('replicate', ReplicateStorage);
}(
jIO
,
RSVP
,
Rusha
));
}(jIO, RSVP, Rusha
, jIO.util.stringify
));
;/*
* Copyright 2015, Nexedi SA
* Released under the LGPL license.
...
...
bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_jio_js.xml
View file @
f0fc59b2
...
...
@@ -236,7 +236,7 @@
</item>
<item>
<key>
<string>
serial
</string>
</key>
<value>
<string>
95
1.35286.47701.22630
</string>
</value>
<value>
<string>
95
2.21277.40593.7202
</string>
</value>
</item>
<item>
<key>
<string>
state
</string>
</key>
...
...
@@ -254,7 +254,7 @@
</tuple>
<state>
<tuple>
<float>
146
6697567.97
</float>
<float>
146
9783617.68
</float>
<string>
UTC
</string>
</tuple>
</state>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment