remove the old way
This commit is contained in:
parent
c3cf74f126
commit
829e3ad29b
7 changed files with 13 additions and 219 deletions
|
@ -36,12 +36,6 @@ const JIT = {
|
||||||
|
|
||||||
events: {
|
events: {
|
||||||
topicDrag: 'Metamaps:JIT:events:topicDrag',
|
topicDrag: 'Metamaps:JIT:events:topicDrag',
|
||||||
newTopic: 'Metamaps:JIT:events:newTopic',
|
|
||||||
deleteTopic: 'Metamaps:JIT:events:deleteTopic',
|
|
||||||
removeTopic: 'Metamaps:JIT:events:removeTopic',
|
|
||||||
newSynapse: 'Metamaps:JIT:events:newSynapse',
|
|
||||||
deleteSynapse: 'Metamaps:JIT:events:deleteSynapse',
|
|
||||||
removeSynapse: 'Metamaps:JIT:events:removeSynapse',
|
|
||||||
pan: 'Metamaps:JIT:events:pan',
|
pan: 'Metamaps:JIT:events:pan',
|
||||||
zoom: 'Metamaps:JIT:events:zoom',
|
zoom: 'Metamaps:JIT:events:zoom',
|
||||||
animationDone: 'Metamaps:JIT:events:animationDone'
|
animationDone: 'Metamaps:JIT:events:animationDone'
|
||||||
|
|
|
@ -12,19 +12,9 @@ module.exports = {
|
||||||
LEAVE_CALL: 'LEAVE_CALL',
|
LEAVE_CALL: 'LEAVE_CALL',
|
||||||
SEND_MAPPER_INFO: 'SEND_MAPPER_INFO',
|
SEND_MAPPER_INFO: 'SEND_MAPPER_INFO',
|
||||||
SEND_COORDS: 'SEND_COORDS',
|
SEND_COORDS: 'SEND_COORDS',
|
||||||
CREATE_MESSAGE: 'CREATE_MESSAGE',
|
|
||||||
DRAG_TOPIC: 'DRAG_TOPIC',
|
DRAG_TOPIC: 'DRAG_TOPIC',
|
||||||
CREATE_TOPIC: 'CREATE_TOPIC',
|
|
||||||
UPDATE_TOPIC: 'UPDATE_TOPIC',
|
|
||||||
REMOVE_TOPIC: 'REMOVE_TOPIC',
|
|
||||||
DELETE_TOPIC: 'DELETE_TOPIC',
|
|
||||||
CREATE_SYNAPSE: 'CREATE_SYNAPSE',
|
|
||||||
UPDATE_SYNAPSE: 'UPDATE_SYNAPSE',
|
|
||||||
REMOVE_SYNAPSE: 'REMOVE_SYNAPSE',
|
|
||||||
DELETE_SYNAPSE: 'DELETE_SYNAPSE',
|
|
||||||
UPDATE_MAP: 'UPDATE_MAP',
|
|
||||||
|
|
||||||
/* EVENTS RECEIVABLE */
|
/* EVENTS RECEIVABLE FROM NODE SERVER*/
|
||||||
JUNTO_UPDATED: 'JUNTO_UPDATED',
|
JUNTO_UPDATED: 'JUNTO_UPDATED',
|
||||||
INVITED_TO_CALL: 'INVITED_TO_CALL',
|
INVITED_TO_CALL: 'INVITED_TO_CALL',
|
||||||
INVITED_TO_JOIN: 'INVITED_TO_JOIN',
|
INVITED_TO_JOIN: 'INVITED_TO_JOIN',
|
||||||
|
@ -38,8 +28,11 @@ module.exports = {
|
||||||
MAPPER_LIST_UPDATED: 'MAPPER_LIST_UPDATED',
|
MAPPER_LIST_UPDATED: 'MAPPER_LIST_UPDATED',
|
||||||
NEW_MAPPER: 'NEW_MAPPER',
|
NEW_MAPPER: 'NEW_MAPPER',
|
||||||
LOST_MAPPER: 'LOST_MAPPER',
|
LOST_MAPPER: 'LOST_MAPPER',
|
||||||
MESSAGE_CREATED: 'MESSAGE_CREATED',
|
|
||||||
TOPIC_DRAGGED: 'TOPIC_DRAGGED',
|
TOPIC_DRAGGED: 'TOPIC_DRAGGED',
|
||||||
|
PEER_COORDS_UPDATED: 'PEER_COORDS_UPDATED',
|
||||||
|
|
||||||
|
/* EVENTS RECEIVABLE FROM RAILS SERVER THROUGH ACTIONCABLE */
|
||||||
|
MESSAGE_CREATED: 'MESSAGE_CREATED',
|
||||||
TOPIC_CREATED: 'TOPIC_CREATED',
|
TOPIC_CREATED: 'TOPIC_CREATED',
|
||||||
TOPIC_UPDATED: 'TOPIC_UPDATED',
|
TOPIC_UPDATED: 'TOPIC_UPDATED',
|
||||||
TOPIC_REMOVED: 'TOPIC_REMOVED',
|
TOPIC_REMOVED: 'TOPIC_REMOVED',
|
||||||
|
@ -48,6 +41,5 @@ module.exports = {
|
||||||
SYNAPSE_UPDATED: 'SYNAPSE_UPDATED',
|
SYNAPSE_UPDATED: 'SYNAPSE_UPDATED',
|
||||||
SYNAPSE_REMOVED: 'SYNAPSE_REMOVED',
|
SYNAPSE_REMOVED: 'SYNAPSE_REMOVED',
|
||||||
SYNAPSE_DELETED: 'SYNAPSE_DELETED',
|
SYNAPSE_DELETED: 'SYNAPSE_DELETED',
|
||||||
PEER_COORDS_UPDATED: 'PEER_COORDS_UPDATED',
|
|
||||||
MAP_UPDATED: 'MAP_UPDATED'
|
MAP_UPDATED: 'MAP_UPDATED'
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,6 +25,7 @@ import {
|
||||||
MAPPER_LEFT_CALL,
|
MAPPER_LEFT_CALL,
|
||||||
NEW_MAPPER,
|
NEW_MAPPER,
|
||||||
LOST_MAPPER,
|
LOST_MAPPER,
|
||||||
|
PEER_COORDS_UPDATED,
|
||||||
MESSAGE_CREATED,
|
MESSAGE_CREATED,
|
||||||
TOPIC_DRAGGED,
|
TOPIC_DRAGGED,
|
||||||
TOPIC_CREATED,
|
TOPIC_CREATED,
|
||||||
|
@ -35,7 +36,6 @@ import {
|
||||||
SYNAPSE_UPDATED,
|
SYNAPSE_UPDATED,
|
||||||
SYNAPSE_REMOVED,
|
SYNAPSE_REMOVED,
|
||||||
SYNAPSE_DELETED,
|
SYNAPSE_DELETED,
|
||||||
PEER_COORDS_UPDATED,
|
|
||||||
MAP_UPDATED
|
MAP_UPDATED
|
||||||
} from './events'
|
} from './events'
|
||||||
|
|
||||||
|
@ -80,17 +80,7 @@ import {
|
||||||
leaveCall,
|
leaveCall,
|
||||||
sendCoords,
|
sendCoords,
|
||||||
sendMapperInfo,
|
sendMapperInfo,
|
||||||
createMessage,
|
dragTopic
|
||||||
dragTopic,
|
|
||||||
createTopic,
|
|
||||||
updateTopic,
|
|
||||||
removeTopic,
|
|
||||||
deleteTopic,
|
|
||||||
createSynapse,
|
|
||||||
updateSynapse,
|
|
||||||
removeSynapse,
|
|
||||||
deleteSynapse,
|
|
||||||
updateMap
|
|
||||||
} from './sendable'
|
} from './sendable'
|
||||||
|
|
||||||
let Realtime = {
|
let Realtime = {
|
||||||
|
@ -292,41 +282,6 @@ let Realtime = {
|
||||||
self.dragTopic(positions)
|
self.dragTopic(positions)
|
||||||
}
|
}
|
||||||
$(document).on(JIT.events.topicDrag + '.map', dragTopic)
|
$(document).on(JIT.events.topicDrag + '.map', dragTopic)
|
||||||
|
|
||||||
var createTopic = function(event, data) {
|
|
||||||
self.createTopic(data)
|
|
||||||
}
|
|
||||||
$(document).on(JIT.events.newTopic + '.map', createTopic)
|
|
||||||
|
|
||||||
var deleteTopic = function(event, data) {
|
|
||||||
self.deleteTopic(data)
|
|
||||||
}
|
|
||||||
$(document).on(JIT.events.deleteTopic + '.map', deleteTopic)
|
|
||||||
|
|
||||||
var removeTopic = function(event, data) {
|
|
||||||
self.removeTopic(data)
|
|
||||||
}
|
|
||||||
$(document).on(JIT.events.removeTopic + '.map', removeTopic)
|
|
||||||
|
|
||||||
var createSynapse = function(event, data) {
|
|
||||||
self.createSynapse(data)
|
|
||||||
}
|
|
||||||
$(document).on(JIT.events.newSynapse + '.map', createSynapse)
|
|
||||||
|
|
||||||
var deleteSynapse = function(event, data) {
|
|
||||||
self.deleteSynapse(data)
|
|
||||||
}
|
|
||||||
$(document).on(JIT.events.deleteSynapse + '.map', deleteSynapse)
|
|
||||||
|
|
||||||
var removeSynapse = function(event, data) {
|
|
||||||
self.removeSynapse(data)
|
|
||||||
}
|
|
||||||
$(document).on(JIT.events.removeSynapse + '.map', removeSynapse)
|
|
||||||
|
|
||||||
var createMessage = function(event, data) {
|
|
||||||
self.createMessage(data)
|
|
||||||
}
|
|
||||||
$(document).on(ChatView.events.newMessage + '.map', createMessage)
|
|
||||||
},
|
},
|
||||||
countOthersInConversation: function() {
|
countOthersInConversation: function() {
|
||||||
var self = Realtime
|
var self = Realtime
|
||||||
|
@ -520,8 +475,10 @@ const subscribeToEvents = (Realtime, socket) => {
|
||||||
socket.on(PEER_COORDS_UPDATED, peerCoordsUpdated(Realtime))
|
socket.on(PEER_COORDS_UPDATED, peerCoordsUpdated(Realtime))
|
||||||
socket.on(NEW_MAPPER, newMapper(Realtime))
|
socket.on(NEW_MAPPER, newMapper(Realtime))
|
||||||
socket.on(LOST_MAPPER, lostMapper(Realtime))
|
socket.on(LOST_MAPPER, lostMapper(Realtime))
|
||||||
socket.on(MESSAGE_CREATED, messageCreated(Realtime))
|
|
||||||
socket.on(TOPIC_DRAGGED, topicDragged(Realtime))
|
socket.on(TOPIC_DRAGGED, topicDragged(Realtime))
|
||||||
|
|
||||||
|
/*
|
||||||
|
socket.on(MESSAGE_CREATED, messageCreated(Realtime))
|
||||||
socket.on(TOPIC_CREATED, topicCreated(Realtime))
|
socket.on(TOPIC_CREATED, topicCreated(Realtime))
|
||||||
socket.on(TOPIC_UPDATED, topicUpdated(Realtime))
|
socket.on(TOPIC_UPDATED, topicUpdated(Realtime))
|
||||||
socket.on(TOPIC_REMOVED, topicRemoved(Realtime))
|
socket.on(TOPIC_REMOVED, topicRemoved(Realtime))
|
||||||
|
@ -531,6 +488,7 @@ const subscribeToEvents = (Realtime, socket) => {
|
||||||
socket.on(SYNAPSE_REMOVED, synapseRemoved(Realtime))
|
socket.on(SYNAPSE_REMOVED, synapseRemoved(Realtime))
|
||||||
socket.on(SYNAPSE_DELETED, synapseDeleted(Realtime))
|
socket.on(SYNAPSE_DELETED, synapseDeleted(Realtime))
|
||||||
socket.on(MAP_UPDATED, mapUpdated(Realtime))
|
socket.on(MAP_UPDATED, mapUpdated(Realtime))
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
export default Realtime
|
export default Realtime
|
||||||
|
|
|
@ -17,17 +17,7 @@ import {
|
||||||
LEAVE_CALL,
|
LEAVE_CALL,
|
||||||
SEND_MAPPER_INFO,
|
SEND_MAPPER_INFO,
|
||||||
SEND_COORDS,
|
SEND_COORDS,
|
||||||
CREATE_MESSAGE,
|
DRAG_TOPIC
|
||||||
DRAG_TOPIC,
|
|
||||||
CREATE_TOPIC,
|
|
||||||
UPDATE_TOPIC,
|
|
||||||
REMOVE_TOPIC,
|
|
||||||
DELETE_TOPIC,
|
|
||||||
CREATE_SYNAPSE,
|
|
||||||
UPDATE_SYNAPSE,
|
|
||||||
REMOVE_SYNAPSE,
|
|
||||||
DELETE_SYNAPSE,
|
|
||||||
UPDATE_MAP
|
|
||||||
} from './events'
|
} from './events'
|
||||||
|
|
||||||
export const joinMap = self => () => {
|
export const joinMap = self => () => {
|
||||||
|
@ -175,72 +165,3 @@ export const dragTopic = self => positions => {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export const updateTopic = self => topic => {
|
|
||||||
var data = {
|
|
||||||
topicId: topic.id
|
|
||||||
}
|
|
||||||
self.socket.emit(UPDATE_TOPIC, data)
|
|
||||||
}
|
|
||||||
|
|
||||||
export const updateSynapse = self => synapse => {
|
|
||||||
var data = {
|
|
||||||
synapseId: synapse.id
|
|
||||||
}
|
|
||||||
self.socket.emit(UPDATE_SYNAPSE, data)
|
|
||||||
}
|
|
||||||
|
|
||||||
export const updateMap = self => map => {
|
|
||||||
var data = {
|
|
||||||
mapId: map.id
|
|
||||||
}
|
|
||||||
self.socket.emit(UPDATE_MAP, data)
|
|
||||||
}
|
|
||||||
|
|
||||||
export const createMessage = self => data => {
|
|
||||||
var message = data.attributes
|
|
||||||
message.mapid = Active.Map.id
|
|
||||||
self.socket.emit(CREATE_MESSAGE, message)
|
|
||||||
}
|
|
||||||
|
|
||||||
export const createTopic = self => data => {
|
|
||||||
if (Active.Map) {
|
|
||||||
data.mapperid = Active.Mapper.id
|
|
||||||
data.mapid = Active.Map.id
|
|
||||||
self.socket.emit(CREATE_TOPIC, data)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export const deleteTopic = self => data => {
|
|
||||||
if (Active.Map) {
|
|
||||||
self.socket.emit(DELETE_TOPIC, data)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export const removeTopic = self => data => {
|
|
||||||
if (Active.Map) {
|
|
||||||
data.mapid = Active.Map.id
|
|
||||||
self.socket.emit(REMOVE_TOPIC, data)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export const createSynapse = self => data => {
|
|
||||||
if (Active.Map) {
|
|
||||||
data.mapperid = Active.Mapper.id
|
|
||||||
data.mapid = Active.Map.id
|
|
||||||
self.socket.emit(CREATE_SYNAPSE, data)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export const deleteSynapse = self => data => {
|
|
||||||
if (Active.Map) {
|
|
||||||
data.mapid = Active.Map.id
|
|
||||||
self.socket.emit(DELETE_SYNAPSE, data)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export const removeSynapse = self => data => {
|
|
||||||
if (Active.Map) {
|
|
||||||
data.mapid = Active.Map.id
|
|
||||||
self.socket.emit(REMOVE_SYNAPSE, data)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -161,7 +161,6 @@ const ChatView = {
|
||||||
m.save(null, {
|
m.save(null, {
|
||||||
success: function(model, response) {
|
success: function(model, response) {
|
||||||
self.addMessages(new DataModel.MessageCollection(model), false, true)
|
self.addMessages(new DataModel.MessageCollection(model), false, true)
|
||||||
$(document).trigger(ChatView.events.newMessage, [model])
|
|
||||||
},
|
},
|
||||||
error: function(model, response) {
|
error: function(model, response) {
|
||||||
console.log('error!', response)
|
console.log('error!', response)
|
||||||
|
@ -197,7 +196,6 @@ const ChatView = {
|
||||||
* @static
|
* @static
|
||||||
*/
|
*/
|
||||||
ChatView.events = {
|
ChatView.events = {
|
||||||
newMessage: 'ChatView:newMessage',
|
|
||||||
openTray: 'ChatView:openTray',
|
openTray: 'ChatView:openTray',
|
||||||
closeTray: 'ChatView:closeTray',
|
closeTray: 'ChatView:closeTray',
|
||||||
inputFocus: 'ChatView:inputFocus',
|
inputFocus: 'ChatView:inputFocus',
|
||||||
|
|
|
@ -1,22 +1,12 @@
|
||||||
const {
|
const {
|
||||||
// server sendable, client receivable
|
// server sendable, client receivable
|
||||||
TOPIC_UPDATED,
|
|
||||||
TOPIC_DELETED,
|
|
||||||
SYNAPSE_UPDATED,
|
|
||||||
SYNAPSE_DELETED,
|
|
||||||
MAP_UPDATED,
|
|
||||||
JUNTO_UPDATED,
|
JUNTO_UPDATED,
|
||||||
|
|
||||||
// server receivable, client sendable
|
// server receivable, client sendable
|
||||||
JOIN_CALL,
|
JOIN_CALL,
|
||||||
LEAVE_CALL,
|
LEAVE_CALL,
|
||||||
JOIN_MAP,
|
JOIN_MAP,
|
||||||
LEAVE_MAP,
|
LEAVE_MAP
|
||||||
UPDATE_TOPIC,
|
|
||||||
DELETE_TOPIC,
|
|
||||||
UPDATE_SYNAPSE,
|
|
||||||
DELETE_SYNAPSE,
|
|
||||||
UPDATE_MAP
|
|
||||||
} = require('../frontend/src/Metamaps/Realtime/events')
|
} = require('../frontend/src/Metamaps/Realtime/events')
|
||||||
|
|
||||||
module.exports = function(io, store) {
|
module.exports = function(io, store) {
|
||||||
|
@ -33,25 +23,5 @@ module.exports = function(io, store) {
|
||||||
socket.on(JOIN_CALL, data => store.dispatch({ type: JOIN_CALL, payload: data }))
|
socket.on(JOIN_CALL, data => store.dispatch({ type: JOIN_CALL, payload: data }))
|
||||||
socket.on(LEAVE_CALL, () => store.dispatch({ type: LEAVE_CALL, payload: socket }))
|
socket.on(LEAVE_CALL, () => store.dispatch({ type: LEAVE_CALL, payload: socket }))
|
||||||
socket.on('disconnect', () => store.dispatch({ type: 'DISCONNECT', payload: socket }))
|
socket.on('disconnect', () => store.dispatch({ type: 'DISCONNECT', payload: socket }))
|
||||||
|
|
||||||
socket.on(UPDATE_TOPIC, function(data) {
|
|
||||||
socket.broadcast.emit(TOPIC_UPDATED, data)
|
|
||||||
})
|
|
||||||
|
|
||||||
socket.on(DELETE_TOPIC, function(data) {
|
|
||||||
socket.broadcast.emit(TOPIC_DELETED, data)
|
|
||||||
})
|
|
||||||
|
|
||||||
socket.on(UPDATE_SYNAPSE, function(data) {
|
|
||||||
socket.broadcast.emit(SYNAPSE_UPDATED, data)
|
|
||||||
})
|
|
||||||
|
|
||||||
socket.on(DELETE_SYNAPSE, function(data) {
|
|
||||||
socket.broadcast.emit(SYNAPSE_DELETED, data)
|
|
||||||
})
|
|
||||||
|
|
||||||
socket.on(UPDATE_MAP, function(data) {
|
|
||||||
socket.broadcast.emit(MAP_UPDATED, data)
|
|
||||||
})
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,24 +2,14 @@ const {
|
||||||
MAPPER_LIST_UPDATED,
|
MAPPER_LIST_UPDATED,
|
||||||
NEW_MAPPER,
|
NEW_MAPPER,
|
||||||
LOST_MAPPER,
|
LOST_MAPPER,
|
||||||
MESSAGE_CREATED,
|
|
||||||
TOPIC_DRAGGED,
|
TOPIC_DRAGGED,
|
||||||
TOPIC_CREATED,
|
|
||||||
TOPIC_REMOVED,
|
|
||||||
SYNAPSE_CREATED,
|
|
||||||
SYNAPSE_REMOVED,
|
|
||||||
PEER_COORDS_UPDATED,
|
PEER_COORDS_UPDATED,
|
||||||
|
|
||||||
JOIN_MAP,
|
JOIN_MAP,
|
||||||
LEAVE_MAP,
|
LEAVE_MAP,
|
||||||
SEND_COORDS,
|
SEND_COORDS,
|
||||||
SEND_MAPPER_INFO,
|
SEND_MAPPER_INFO,
|
||||||
CREATE_MESSAGE,
|
|
||||||
DRAG_TOPIC,
|
DRAG_TOPIC,
|
||||||
CREATE_TOPIC,
|
|
||||||
REMOVE_TOPIC,
|
|
||||||
CREATE_SYNAPSE,
|
|
||||||
REMOVE_SYNAPSE
|
|
||||||
} = require('../frontend/src/Metamaps/Realtime/events')
|
} = require('../frontend/src/Metamaps/Realtime/events')
|
||||||
|
|
||||||
const { mapRoom, userMapRoom } = require('./rooms')
|
const { mapRoom, userMapRoom } = require('./rooms')
|
||||||
|
@ -74,40 +64,11 @@ module.exports = function(io, store) {
|
||||||
socket.broadcast.in(mapRoom(data.mapid)).emit(PEER_COORDS_UPDATED, peer)
|
socket.broadcast.in(mapRoom(data.mapid)).emit(PEER_COORDS_UPDATED, peer)
|
||||||
})
|
})
|
||||||
|
|
||||||
socket.on(CREATE_MESSAGE, function(data) {
|
|
||||||
var mapId = data.mapid
|
|
||||||
delete data.mapid
|
|
||||||
socket.broadcast.in(mapRoom(mapId)).emit(MESSAGE_CREATED, data)
|
|
||||||
})
|
|
||||||
|
|
||||||
socket.on(DRAG_TOPIC, function(data) {
|
socket.on(DRAG_TOPIC, function(data) {
|
||||||
var mapId = data.mapid
|
var mapId = data.mapid
|
||||||
delete data.mapid
|
delete data.mapid
|
||||||
socket.broadcast.in(mapRoom(mapId)).emit(TOPIC_DRAGGED, data)
|
socket.broadcast.in(mapRoom(mapId)).emit(TOPIC_DRAGGED, data)
|
||||||
})
|
})
|
||||||
|
|
||||||
socket.on(CREATE_TOPIC, function(data) {
|
|
||||||
var mapId = data.mapid
|
|
||||||
delete data.mapid
|
|
||||||
socket.broadcast.in(mapRoom(mapId)).emit(TOPIC_CREATED, data)
|
|
||||||
})
|
|
||||||
|
|
||||||
socket.on(REMOVE_TOPIC, function(data) {
|
|
||||||
var mapId = data.mapid
|
|
||||||
delete data.mapid
|
|
||||||
socket.broadcast.in(mapRoom(mapId)).emit(TOPIC_REMOVED, data)
|
|
||||||
})
|
|
||||||
|
|
||||||
socket.on(CREATE_SYNAPSE, function(data) {
|
|
||||||
var mapId = data.mapid
|
|
||||||
delete data.mapid
|
|
||||||
socket.broadcast.in(mapRoom(mapId)).emit(SYNAPSE_CREATED, data)
|
|
||||||
})
|
|
||||||
|
|
||||||
socket.on(REMOVE_SYNAPSE, function(data) {
|
|
||||||
var mapId = data.mapid
|
|
||||||
delete data.mapid
|
|
||||||
socket.broadcast.in(mapRoom(mapId)).emit(SYNAPSE_REMOVED, data)
|
|
||||||
})
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue