diff -r 7e5704d95f41 -r 2ec47574a371 server/src/assets/js/mtdc-tracking-worker.js --- 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({