update
This commit is contained in:
parent
08f0702fcd
commit
96f8f77dc4
@ -9,8 +9,8 @@ Y({
|
|||||||
connector: {
|
connector: {
|
||||||
name: 'websockets-client',
|
name: 'websockets-client',
|
||||||
room: 'Puzzle-example2',
|
room: 'Puzzle-example2',
|
||||||
url: 'http://127.0.0.1:2345',
|
|
||||||
debug: true
|
debug: true
|
||||||
|
// url: 'http://127.0.0.1:2345'
|
||||||
},
|
},
|
||||||
sourceDir: '/bower_components',
|
sourceDir: '/bower_components',
|
||||||
share: {
|
share: {
|
||||||
|
@ -8,8 +8,8 @@ Y({
|
|||||||
connector: {
|
connector: {
|
||||||
name: 'websockets-client',
|
name: 'websockets-client',
|
||||||
room: 'Textarea-example',
|
room: 'Textarea-example',
|
||||||
url: 'http://127.0.0.1:2345',
|
|
||||||
debug: true
|
debug: true
|
||||||
|
// url: 'http://127.0.0.1:2345'
|
||||||
},
|
},
|
||||||
sourceDir: '/bower_components',
|
sourceDir: '/bower_components',
|
||||||
share: {
|
share: {
|
||||||
|
65
y.es6
65
y.es6
@ -1162,6 +1162,14 @@ module.exports = function (Y/* :any */) {
|
|||||||
id: this.os.getNextOpId()
|
id: this.os.getNextOpId()
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
create: function (id) {
|
||||||
|
return {
|
||||||
|
start: null,
|
||||||
|
end: null,
|
||||||
|
struct: "List",
|
||||||
|
id: id
|
||||||
|
}
|
||||||
|
},
|
||||||
encode: function (op) {
|
encode: function (op) {
|
||||||
return {
|
return {
|
||||||
struct: 'List',
|
struct: 'List',
|
||||||
@ -1228,6 +1236,13 @@ module.exports = function (Y/* :any */) {
|
|||||||
id: this.os.getNextOpId()
|
id: this.os.getNextOpId()
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
create: function (id) {
|
||||||
|
return {
|
||||||
|
id: id,
|
||||||
|
map: {},
|
||||||
|
struct: "Map"
|
||||||
|
}
|
||||||
|
},
|
||||||
encode: function (op) {
|
encode: function (op) {
|
||||||
return {
|
return {
|
||||||
struct: 'Map',
|
struct: 'Map',
|
||||||
@ -1363,6 +1378,14 @@ module.exports = function (Y/* :any */) {
|
|||||||
}
|
}
|
||||||
return t
|
return t
|
||||||
}
|
}
|
||||||
|
* createType (typedefinition) {
|
||||||
|
var structname = typedefinition.struct
|
||||||
|
var id = this.store.getNextOpId()
|
||||||
|
var op = Y.Struct[structname].create(id)
|
||||||
|
op.type = typedefinition.name
|
||||||
|
yield* this.applyCreatedOperations.call(this, [op])
|
||||||
|
return yield* this.getType(id)
|
||||||
|
}
|
||||||
/*
|
/*
|
||||||
Apply operations that this user created (no remote ones!)
|
Apply operations that this user created (no remote ones!)
|
||||||
* does not check for Struct.*.requiredOps()
|
* does not check for Struct.*.requiredOps()
|
||||||
@ -1373,9 +1396,11 @@ module.exports = function (Y/* :any */) {
|
|||||||
for (var i = 0; i < ops.length; i++) {
|
for (var i = 0; i < ops.length; i++) {
|
||||||
var op = ops[i]
|
var op = ops[i]
|
||||||
yield* this.store.tryExecute.call(this, op)
|
yield* this.store.tryExecute.call(this, op)
|
||||||
send.push(Y.Struct[op.struct].encode(op))
|
if (op.id == null || op.id[0] !== '_') {
|
||||||
|
send.push(Y.Struct[op.struct].encode(op))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (!this.store.y.connector.isDisconnected()) { // TODO: && !this.store.forwardAppliedOperations (but then i don't send delete ops)
|
if (!this.store.y.connector.isDisconnected() && send.length > 0) { // TODO: && !this.store.forwardAppliedOperations (but then i don't send delete ops)
|
||||||
// is connected, and this is not going to be send in addOperation
|
// is connected, and this is not going to be send in addOperation
|
||||||
this.store.y.connector.broadcast({
|
this.store.y.connector.broadcast({
|
||||||
type: 'update',
|
type: 'update',
|
||||||
@ -1829,11 +1854,12 @@ module.exports = function (Y/* :any */) {
|
|||||||
} else {
|
} else {
|
||||||
// need to generate this operation
|
// need to generate this operation
|
||||||
if (this.store._nextUserId == null) {
|
if (this.store._nextUserId == null) {
|
||||||
var typename = id[1].split('_')[0]
|
var struct = id[1].split('_')[0]
|
||||||
this.store._nextUserId = id
|
// this.store._nextUserId = id
|
||||||
yield* Y[typename].createType.call(this)
|
var op = Y.Struct[struct].create(id)
|
||||||
delete this.store._nextUserId
|
yield* this.setOperation(op)
|
||||||
return yield* this.os.find(id)
|
// delete this.store._nextUserId
|
||||||
|
return op
|
||||||
} else {
|
} else {
|
||||||
// Can only generate one operation at a time
|
// Can only generate one operation at a time
|
||||||
return null
|
return null
|
||||||
@ -2131,8 +2157,8 @@ module.exports = function (Y /* : any*/) {
|
|||||||
A wrapper for the definition of a custom type.
|
A wrapper for the definition of a custom type.
|
||||||
Every custom type must have three properties:
|
Every custom type must have three properties:
|
||||||
|
|
||||||
* createType
|
* struct
|
||||||
- Defines the model of a newly created custom type and returns the type
|
- Structname of this type
|
||||||
* initType
|
* initType
|
||||||
- Given a model, creates a custom type
|
- Given a model, creates a custom type
|
||||||
* class
|
* class
|
||||||
@ -2140,20 +2166,23 @@ module.exports = function (Y /* : any*/) {
|
|||||||
*/
|
*/
|
||||||
class CustomType { // eslint-disable-line
|
class CustomType { // eslint-disable-line
|
||||||
/* ::
|
/* ::
|
||||||
createType: any;
|
struct: any;
|
||||||
initType: any;
|
initType: any;
|
||||||
class: Function;
|
class: Function;
|
||||||
|
name: String;
|
||||||
*/
|
*/
|
||||||
constructor (def) {
|
constructor (def) {
|
||||||
if (def.createType == null ||
|
if (def.struct == null ||
|
||||||
def.initType == null ||
|
def.initType == null ||
|
||||||
def.class == null
|
def.class == null ||
|
||||||
|
def.name == null
|
||||||
) {
|
) {
|
||||||
throw new Error('Custom type was not initialized correctly!')
|
throw new Error('Custom type was not initialized correctly!')
|
||||||
}
|
}
|
||||||
this.createType = def.createType
|
this.struct = def.struct
|
||||||
this.initType = def.initType
|
this.initType = def.initType
|
||||||
this.class = def.class
|
this.class = def.class
|
||||||
|
this.name = def.name
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Y.utils.CustomType = CustomType
|
Y.utils.CustomType = CustomType
|
||||||
@ -2313,7 +2342,15 @@ class YConfig {
|
|||||||
this.db.requestTransaction(function * requestTransaction () {
|
this.db.requestTransaction(function * requestTransaction () {
|
||||||
// create shared object
|
// create shared object
|
||||||
for (var propertyname in opts.share) {
|
for (var propertyname in opts.share) {
|
||||||
share[propertyname] = yield* this.getType(['_', opts.share[propertyname] + '_' + propertyname])
|
var typename = opts.share[propertyname]
|
||||||
|
var id = ['_', Y[typename].struct + '_' + propertyname]
|
||||||
|
var op = yield* this.getOperation(id)
|
||||||
|
if (op.type !== typename) {
|
||||||
|
// not already in the db
|
||||||
|
op.type = typename
|
||||||
|
yield* this.setOperation(op)
|
||||||
|
}
|
||||||
|
share[propertyname] = yield* this.getType(id)
|
||||||
}
|
}
|
||||||
setTimeout(callback, 0)
|
setTimeout(callback, 0)
|
||||||
})
|
})
|
||||||
|
Loading…
x
Reference in New Issue
Block a user