--- a/server/src/assets/js/mtdc-tracking-worker.js Mon Jul 25 18:24:58 2016 +0200
+++ b/server/src/assets/js/mtdc-tracking-worker.js Wed Jul 27 15:26:23 2016 +0200
@@ -12,7 +12,17 @@
var Mtdc = root.Mtdc;
- Mtdc.TrackingWorker = function(renkan, trackingUrl, trackingCloseUrl, registration, debounceDelay = 1000) {
+ Mtdc.TrackingWorker = function(renkan, opts){
+
+ var options = _.defaults(opts, {
+ debounceDelay: 1000,
+ trackingUriTemplates: {
+ 'renkan': 'urn:mtdc:renkan:renkan:${renkan_id}',
+ 'node': 'urn:mtdc:renkan:node:${renkan_id}:${node_id}',
+ 'edge': 'urn:mtdc:renkan:edge:${renkan_id}:${edge_id}',
+ 'view': 'urn:mtdc:renkan:view:${renkan_id}:${view_id}'
+ }
+ });
function _sendTrackingInfo() {
var trackingMessages = this.trackingMessages;
@@ -37,8 +47,8 @@
trackingMessages: [],
currentUser: renkan.current_user,
renkan: renkan,
- trackingUrl: trackingUrl,
- trackingCloseUrl: trackingCloseUrl,
+ trackingUrl: options.trackingUrl,
+ trackingCloseUrl: options.trackingCloseUrl,
getUUID4 : function() {
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
var r = Math.random() * 16 | 0,
@@ -47,9 +57,10 @@
});
},
_init: function() {
- this.sendTrackingInfo = _.debounce(_.bind(_sendTrackingInfo, this), debounceDelay);
+ this.sendTrackingInfo = _.debounce(_.bind(_sendTrackingInfo, this), options.debounceDelay);
this.csrftoken = Cookies.get('csrftoken');
- this.registration = registration ? registration : this.getUUID4();
+ this.registration = options.registration ? options.registration : this.getUUID4();
+ this.trackingUriTemplates = _.mapValues(options.trackingUriTemplates, _.template);
return this;
},
_pushTrackingMessage: function(msg) {
@@ -81,7 +92,12 @@
close: {
id: 'http://activitystrea.ms/schema/1.0/close',
display: { 'fr-FR': 'a fermé'}
+ },
+ search: {
+ id: 'http://activitystrea.ms/schema/1.0/search',
+ display: { 'fr-FR': 'a cherché'}
}
+
}[verb];
return {
actor: {
@@ -105,8 +121,11 @@
timestamp: timestamp.toISOString()
};
},
- _getObjectUrn: function(objectType, objectId) {
- return 'urn:mtdc:renkan:'+ objectType + ':' + objectId;
+ _getObjectUri: function(objectType, objectId) {
+ var template = this.trackingUriTemplates[objectType];
+ var templateParams = {'renkan_id': this.renkan.project.get('id')};
+ templateParams[objectType+'_id'] = objectId;
+ return template(templateParams);
},
_sendNodeMsg: function(verb, nodeData, changedData, previousData) {
this._sendObjectMsg('node', 'http://www.w3.org/ns/activitystreams#Node', verb, nodeData, changedData, previousData);
@@ -122,7 +141,7 @@
var msg = this._getBaseMsg(verb);
msg.object = _.merge(msg.object, {
- id: this._getObjectUrn(objectType, objData._id), //TODO full url ???
+ id: this._getObjectUri(objectType, objData._id), //TODO full url ???
definition: {
name: {
'fr-FR': objData.title
@@ -182,6 +201,23 @@
updateView: function(viewData, changedData, previousData) {
this._sendViewMsg('update', viewData, changedData, previousData);
},
+ searchProject: function(searchData) {
+ var msg = this._getBaseMsg('search');
+
+ msg.object = _.merge(msg.object, {
+ id: this._getObjectUri('renkan', this.renkan.project.get('id')),
+ definition: {
+ name: {
+ 'fr-FR': this.renkan.project.get('title')
+ },
+ type: 'http://www.w3.org/ns/activitystreams#Renkan',
+ extensions: {
+ 'http://www.w3.org/ns/activitystreams#Data': searchData
+ }
+ }
+ });
+ this._pushTrackingMessage(msg);
+ },
closeProject: function() {
this.flushTrackingInfo();
$.ajax({