Gitlab CSE Unil

Commit cc7e1ac3 authored by Julien Furrer's avatar Julien Furrer
Browse files

màj versions optimisées

parent 6421a769
This diff is collapsed.
This diff is collapsed.
...@@ -19525,6 +19525,7 @@ function ($, _, paper, Signal, config, Users, tools) { ...@@ -19525,6 +19525,7 @@ function ($, _, paper, Signal, config, Users, tools) {
   
define('adim/io',[ define('adim/io',[
"jquery", "jquery",
"underscore",
"paper", "paper",
"signals", "signals",
   
...@@ -19532,7 +19533,7 @@ define('adim/io',[ ...@@ -19532,7 +19533,7 @@ define('adim/io',[
"adim/config", "adim/config",
"adim/view" "adim/view"
], ],
function ($, paper, Signal, Config, view) { function ($, _, paper, Signal, Config, view) {
// ----- Locale variables ----------------------------- // ----- Locale variables -----------------------------
   
// var user = config.user.name; // var user = config.user.name;
...@@ -19545,7 +19546,9 @@ function ($, paper, Signal, Config, view) { ...@@ -19545,7 +19546,9 @@ function ($, paper, Signal, Config, view) {
loadingError: new Signal(), loadingError: new Signal(),
annotationAdded: new Signal(), annotationAdded: new Signal(),
annotationSaved: new Signal(), annotationSaved: new Signal(),
annotationRemoved: new Signal() annotationRemoved: new Signal(),
annotationsSavedStatusChanged: new Signal()
}; };
   
var _autoSave = false; var _autoSave = false;
...@@ -19583,7 +19586,29 @@ function ($, paper, Signal, Config, view) { ...@@ -19583,7 +19586,29 @@ function ($, paper, Signal, Config, view) {
url += annotId + '/'; url += annotId + '/';
} }
   
$.ajax({ return $.ajax({
url: url,
type: method,
dataType: 'json',
data: annotJson
})
.done(function(data, status, jqXHR) {
if (jqXHR.status === 201) {
_events.annotationAdded.dispatch(data);
}
else if (jqXHR.status === 200) {
_events.annotationSaved.dispatch(data);
}
})
.fail(function(jqXHR) {
_events.loadingError.dispatch({
msg: "Erreur lors de l'enregistrement d'une annotation",
jqXHR: jqXHR
});
});
/* $.ajax({
url: url, url: url,
type: method, type: method,
dataType: 'json', dataType: 'json',
...@@ -19601,7 +19626,7 @@ function ($, paper, Signal, Config, view) { ...@@ -19601,7 +19626,7 @@ function ($, paper, Signal, Config, view) {
msg: "Erreur lors de l'enregistrement d'une annotation" msg: "Erreur lors de l'enregistrement d'une annotation"
}); });
} }
}); });*/
   
} }
   
...@@ -19623,8 +19648,17 @@ function ($, paper, Signal, Config, view) { ...@@ -19623,8 +19648,17 @@ function ($, paper, Signal, Config, view) {
   
   
function _saveAnnotations(annotations) { function _saveAnnotations(annotations) {
var savedStates = [], nbAnnot = annotations.length;
function updateStates(state, a) {
savedStates.push(state);
if (savedStates.length === nbAnnot) {
_events.annotationsSavedStatusChanged.dispatch({status:_.every(savedStates) ? 'saved' : 'error'});
}
}
for (var a = 0, annot; annot = annotations[a]; a++) { for (var a = 0, annot; annot = annotations[a]; a++) {
_saveAnnotation(annot.id, annot.itemStr, annot.prop, annot.index); _saveAnnotation(annot.id, annot.itemStr, annot.prop, annot.index)
.done((function(a){ return function(){ updateStates(true, a); } })(annot.id))
.fail((function(a){ return function(){ updateStates(false, a); } })(annot.id));
} }
} }
   
...@@ -19732,7 +19766,7 @@ function ($, paper, Signal, Config, view) { ...@@ -19732,7 +19766,7 @@ function ($, paper, Signal, Config, view) {
saveAnnotations : function(items, force) { saveAnnotations : function(items, force) {
if (!_autoSave && !force) if (!_autoSave && !force)
return false; return false;
_events.annotationsSavedStatusChanged.dispatch({status:'dirty'});
var annotations = view.getAnnotationsSerialized(items); var annotations = view.getAnnotationsSerialized(items);
_saveAnnotations(annotations); _saveAnnotations(annotations);
return true; return true;
...@@ -23602,6 +23636,7 @@ function($, _, Signal, paper, config, view, io, tools, attributes, Users, export ...@@ -23602,6 +23636,7 @@ function($, _, Signal, paper, config, view, io, tools, attributes, Users, export
}); });
})(); })();
   
// //
// Annotable Event handler // Annotable Event handler
// ------------------------ // ------------------------
...@@ -23623,6 +23658,58 @@ function($, _, Signal, paper, config, view, io, tools, attributes, Users, export ...@@ -23623,6 +23658,58 @@ function($, _, Signal, paper, config, view, io, tools, attributes, Users, export
}); });
   
   
//
// Annotations Staved Status feedback
// ----------------------------------
(function(mainNavBar){
var tooltipOpts = {
placement: 'bottom',
delay: { "show": 750, "hide": 50 }
},
statErrEl = mainNavBar.find(".annot-stat.annot-stat-error"),
errPopAck = -1, errPopTimeout = 5000, errPopShown = false;
mainNavBar.find(".annot-saved-status").find("[data-toggle=tooltip]").tooltip(tooltipOpts);
io.events.annotationsSavedStatusChanged.add(function(data){
$(".annot-saved-status")
.removeClass("stat-saved stat-dirty stat-error")
.addClass("stat-" + (data.status || 'error') );
if (data.status === 'error') {
if ((Date.now() - errPopAck) > errPopTimeout) {
if (! errPopShown) {
statErrEl
.popover({trigger: 'manual'})
.on('shown.bs.popover', function () {
statErrEl.tooltip('destroy');
mainNavBar.find(".annot-saved-status").find('.popover')
.on('click', function (){ statErrEl.popover('destroy') });
errPopShown = true;
})
.on('hidden.bs.popover', function () {
statErrEl
.tooltip(tooltipOpts)
.off('click');
errPopAck = Date.now();
errPopShown = false;
})
.popover('show')
;
}
}
else {
errPopAck = Date.now();
}
} else if (data.status === 'saved') {
errPopAck = -1;
}
});
})(_mainNavBar);
// Export: attach handlers to buttons // Export: attach handlers to buttons
$("#btn-export-image-png").on('click', function(evt) { evt.preventDefault(); _export('png'); }); $("#btn-export-image-png").on('click', function(evt) { evt.preventDefault(); _export('png'); });
$("#btn-export-image-svg").on('click', function(evt) { evt.preventDefault(); _export('svg'); }); $("#btn-export-image-svg").on('click', function(evt) { evt.preventDefault(); _export('svg'); });
...@@ -27447,9 +27534,9 @@ function($){ ...@@ -27447,9 +27534,9 @@ function($){
!function(a){function b(b){if("string"==typeof b.data&&(b.data={keys:b.data}),b.data&&b.data.keys&&"string"==typeof b.data.keys){var c=b.handler,d=b.data.keys.toLowerCase().split(" ");b.handler=function(b){if(this===b.target||!(/textarea|select/i.test(b.target.nodeName)||a.hotkeys.options.filterTextInputs&&a.inArray(b.target.type,a.hotkeys.textAcceptingInputTypes)>-1)){var e="keypress"!==b.type&&a.hotkeys.specialKeys[b.which],f=String.fromCharCode(b.which).toLowerCase(),g="",h={};a.each(["alt","ctrl","shift"],function(a,c){b[c+"Key"]&&e!==c&&(g+=c+"+")}),b.metaKey&&!b.ctrlKey&&"meta"!==e&&(g+="meta+"),b.metaKey&&"meta"!==e&&g.indexOf("alt+ctrl+shift+")>-1&&(g=g.replace("alt+ctrl+shift+","hyper+")),e?h[g+e]=!0:(h[g+f]=!0,h[g+a.hotkeys.shiftNums[f]]=!0,"shift+"===g&&(h[a.hotkeys.shiftNums[f]]=!0));for(var i=0,j=d.length;j>i;i++)if(h[d[i]])return c.apply(this,arguments)}}}}a.hotkeys={version:"0.8",specialKeys:{8:"backspace",9:"tab",10:"return",13:"return",16:"shift",17:"ctrl",18:"alt",19:"pause",20:"capslock",27:"esc",32:"space",33:"pageup",34:"pagedown",35:"end",36:"home",37:"left",38:"up",39:"right",40:"down",45:"insert",46:"del",59:";",61:"=",96:"0",97:"1",98:"2",99:"3",100:"4",101:"5",102:"6",103:"7",104:"8",105:"9",106:"*",107:"+",109:"-",110:".",111:"/",112:"f1",113:"f2",114:"f3",115:"f4",116:"f5",117:"f6",118:"f7",119:"f8",120:"f9",121:"f10",122:"f11",123:"f12",144:"numlock",145:"scroll",173:"-",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"},shiftNums:{"`":"~",1:"!",2:"@",3:"#",4:"$",5:"%",6:"^",7:"&",8:"*",9:"(",0:")","-":"_","=":"+",";":": ","'":'"',",":"<",".":">","/":"?","\\":"|"},textAcceptingInputTypes:["text","password","number","email","url","range","date","month","week","time","datetime","datetime-local","search","color","tel"],options:{filterTextInputs:!0}},a.each(["keydown","keyup","keypress"],function(){a.event.special[this]={add:b}})}(jQuery||this.jQuery||window.jQuery); !function(a){function b(b){if("string"==typeof b.data&&(b.data={keys:b.data}),b.data&&b.data.keys&&"string"==typeof b.data.keys){var c=b.handler,d=b.data.keys.toLowerCase().split(" ");b.handler=function(b){if(this===b.target||!(/textarea|select/i.test(b.target.nodeName)||a.hotkeys.options.filterTextInputs&&a.inArray(b.target.type,a.hotkeys.textAcceptingInputTypes)>-1)){var e="keypress"!==b.type&&a.hotkeys.specialKeys[b.which],f=String.fromCharCode(b.which).toLowerCase(),g="",h={};a.each(["alt","ctrl","shift"],function(a,c){b[c+"Key"]&&e!==c&&(g+=c+"+")}),b.metaKey&&!b.ctrlKey&&"meta"!==e&&(g+="meta+"),b.metaKey&&"meta"!==e&&g.indexOf("alt+ctrl+shift+")>-1&&(g=g.replace("alt+ctrl+shift+","hyper+")),e?h[g+e]=!0:(h[g+f]=!0,h[g+a.hotkeys.shiftNums[f]]=!0,"shift+"===g&&(h[a.hotkeys.shiftNums[f]]=!0));for(var i=0,j=d.length;j>i;i++)if(h[d[i]])return c.apply(this,arguments)}}}}a.hotkeys={version:"0.8",specialKeys:{8:"backspace",9:"tab",10:"return",13:"return",16:"shift",17:"ctrl",18:"alt",19:"pause",20:"capslock",27:"esc",32:"space",33:"pageup",34:"pagedown",35:"end",36:"home",37:"left",38:"up",39:"right",40:"down",45:"insert",46:"del",59:";",61:"=",96:"0",97:"1",98:"2",99:"3",100:"4",101:"5",102:"6",103:"7",104:"8",105:"9",106:"*",107:"+",109:"-",110:".",111:"/",112:"f1",113:"f2",114:"f3",115:"f4",116:"f5",117:"f6",118:"f7",119:"f8",120:"f9",121:"f10",122:"f11",123:"f12",144:"numlock",145:"scroll",173:"-",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"},shiftNums:{"`":"~",1:"!",2:"@",3:"#",4:"$",5:"%",6:"^",7:"&",8:"*",9:"(",0:")","-":"_","=":"+",";":": ","'":'"',",":"<",".":">","/":"?","\\":"|"},textAcceptingInputTypes:["text","password","number","email","url","range","date","month","week","time","datetime","datetime-local","search","color","tel"],options:{filterTextInputs:!0}},a.each(["keydown","keyup","keypress"],function(){a.event.special[this]={add:b}})}(jQuery||this.jQuery||window.jQuery);
define("jquery.hotkeys", ["jquery"], function(){}); define("jquery.hotkeys", ["jquery"], function(){});
   
/*! AdIm - v0.0.0 - 2015-11-12 - Copyright (C) 2015 Université de Lausanne - see licence */ /*! AdIm - v0.0.0 - 2016-01-05 - Copyright (C) 2016 Université de Lausanne - see licence */
define('env/shortcuts',["jquery","paper","signals","adim/config","adim/view","adim/tools","adim/ui","jquery.hotkeys"],function(a,b,c,d,e,f){function g(b){var c=a("#inputGroupSize");return function(){var a=parseInt(c.val(),10)+b;return a>0&&c.val(a).change(),!1}}var h,i=function(){return function(){return!1}},j={"backspace del":[{event:"keydown",ctxt:"edit",fn:function(){return e.removeSelectedItems(),!1}},{event:"keydown",ctxt:"review",fn:i()}],space:[{event:"keydown",ctxt:"edit review",fn:function(){return h||(h=f.getActiveTool(),f.activateTool("pan")),!1}},{event:"keyup",ctxt:"edit review",fn:function(){return h&&(f.activateTool(h),h=null),!1}}],"1 2 3":{ctxt:"edit",fn:function(c){return b.project.selectedItems.length>0&&a("#confidence-input").val([c.key]).change().siblings("[data-value]").trigger("mouseleave"),!1}},a:[{event:"keydown",ctxt:"edit",fn:function(){return f.activateTool("select"),!1}}],"ctrl+a meta+a":[{event:"keydown",ctxt:"edit",fn:function(){return b.project.activeLayer.children.map(function(a){a.selected=!0}),!1}},{event:"keydown",ctxt:"review",fn:i()}],c:[{event:"keydown",ctxt:"edit",fn:function(){return a("#tool-concordantstr").is(":disabled")?!1:(f.activateTool("concordantstr"),!1)}},{event:"keydown",ctxt:"analysis",fn:function(){var b=a("#checkShowConcordance");return b.val([b.is(":checked")?"off":"on"]).change(),!1}}],d:[{event:"keydown",ctxt:"edit",fn:function(){return a("#tool-discordantstr").is(":disabled")?!1:(f.activateTool("discordantstr"),!1)}},{event:"keydown",ctxt:"analysis",fn:function(){var b=a("#checkShowDiscordance");return b.val([b.is(":checked")?"off":"on"]).change(),!1}}],"shift+d shift+c":{ctxt:"edit review",fn:function(){a("#annotation-display-container").find("[data-type-name='concordantstr,discordantstr']").click()}},"e b":[{event:"keydown",ctxt:"edit",fn:function(){return a("#tool-fieldedges").is(":disabled")?!1:(f.activateTool("fieldedges"),!1)}}],"shift+e":{ctxt:"edit review",fn:function(){a("#annotation-display-container").find("[data-type-name='fieldedges']").click()}},f:[{event:"keydown",ctxt:"edit",fn:function(){return f.activateTool("arrow"),!1}}],"shift+i":{ctxt:"edit review",fn:function(){a("#annotation-display-container").find("[data-type-name='image']").click()}},n:[{event:"keydown",ctxt:"analysis",fn:function(){var b=a("#checkShowConfidence");return b.val([b.is(":checked")?"off":"on"]).change(),!1}}],t:[{event:"keydown",ctxt:"edit",fn:function(){return f.activateTool("text"),!1}}],z:[{event:"keydown",ctxt:"edit",fn:function(){return a("#tool-cmsarea").is(":disabled")?!1:(f.activateTool("cmsarea"),!1)}}],"shift+z":{ctxt:"edit review",fn:function(){a("#annotation-display-container").find("[data-type-name='cmsarea']").click()}},up:[{event:"keydown",ctxt:"analysis",fn:g(1)}],down:[{event:"keydown",ctxt:"analysis",fn:g(-1)}]};return j}); define('env/shortcuts',["jquery","paper","signals","adim/config","adim/view","adim/tools","adim/ui","jquery.hotkeys"],function(a,b,c,d,e,f){function g(b){var c=a("#inputGroupSize");return function(){var a=parseInt(c.val(),10)+b;return a>0&&c.val(a).change(),!1}}var h,i=function(){return function(){return!1}},j={"backspace del":[{event:"keydown",ctxt:"edit",fn:function(){return e.removeSelectedItems(),!1}},{event:"keydown",ctxt:"review",fn:i()}],space:[{event:"keydown",ctxt:"edit review",fn:function(){return h||(h=f.getActiveTool(),f.activateTool("pan")),!1}},{event:"keyup",ctxt:"edit review",fn:function(){return h&&(f.activateTool(h),h=null),!1}}],"1 2 3":{ctxt:"edit",fn:function(c){return b.project.selectedItems.length>0&&a("#confidence-input").val([c.key]).change().siblings("[data-value]").trigger("mouseleave"),!1}},a:[{event:"keydown",ctxt:"edit",fn:function(){return f.activateTool("select"),!1}}],"ctrl+a meta+a":[{event:"keydown",ctxt:"edit",fn:function(){return b.project.activeLayer.children.map(function(a){a.selected=!0}),!1}},{event:"keydown",ctxt:"review",fn:i()}],c:[{event:"keydown",ctxt:"edit",fn:function(){return a("#tool-concordantstr").is(":disabled")?!1:(f.activateTool("concordantstr"),!1)}},{event:"keydown",ctxt:"analysis",fn:function(){var b=a("#checkShowConcordance");return b.val([b.is(":checked")?"off":"on"]).change(),!1}}],d:[{event:"keydown",ctxt:"edit",fn:function(){return a("#tool-discordantstr").is(":disabled")?!1:(f.activateTool("discordantstr"),!1)}},{event:"keydown",ctxt:"analysis",fn:function(){var b=a("#checkShowDiscordance");return b.val([b.is(":checked")?"off":"on"]).change(),!1}}],"shift+d shift+c":{ctxt:"edit review",fn:function(){a("#annotation-display-container").find("[data-type-name='concordantstr,discordantstr']").click()}},"e b":[{event:"keydown",ctxt:"edit",fn:function(){return a("#tool-fieldedges").is(":disabled")?!1:(f.activateTool("fieldedges"),!1)}}],"shift+e":{ctxt:"edit review",fn:function(){a("#annotation-display-container").find("[data-type-name='fieldedges']").click()}},f:[{event:"keydown",ctxt:"edit",fn:function(){return f.activateTool("arrow"),!1}}],"shift+i":{ctxt:"edit review",fn:function(){a("#annotation-display-container").find("[data-type-name='image']").click()}},n:[{event:"keydown",ctxt:"analysis",fn:function(){var b=a("#checkShowConfidence");return b.val([b.is(":checked")?"off":"on"]).change(),!1}}],t:[{event:"keydown",ctxt:"edit",fn:function(){return f.activateTool("text"),!1}}],z:[{event:"keydown",ctxt:"edit",fn:function(){return a("#tool-cmsarea").is(":disabled")?!1:(f.activateTool("cmsarea"),!1)}}],"shift+z":{ctxt:"edit review",fn:function(){a("#annotation-display-container").find("[data-type-name='cmsarea']").click()}},up:[{event:"keydown",ctxt:"analysis",fn:g(1)}],down:[{event:"keydown",ctxt:"analysis",fn:g(-1)}]};return j});
/*! AdIm - v0.0.0 - 2015-11-12 - Copyright (C) 2015 Université de Lausanne - see licence */ /*! AdIm - v0.0.0 - 2016-01-05 - Copyright (C) 2016 Université de Lausanne - see licence */
define('env/env',["jquery","underscore","paper","signals","adim/config","adim/view","adim/attributes","adim/io","adim/tools","adim/ui","env/shortcuts"],function(a,b,c,d,e,f,g,h,i,j,k){function l(){function a(a){if(!(a&&["cmsarea","concordantstr"].indexOf(a.data.type)<0)&&(b||(b=f.getOrCreateUserLayer(e.user.id,e.user.full_name)),b)){var d,g,h,i,k=b.children.filter(function(a){return a.data.type&&"cmsarea"===a.data.type}),l=b.children.filter(function(a){return a.data.type&&"concordantstr"===a.data.type}),m=c.project.getSelectedItems(),n=1===m.length&&"cmsarea"===m[0].data.type?m[0]:null,o=n?n.data.prop.nbConcordances:null,p=l.length;for(h=0;d=k[h];h++){for(g=0,i=0;p>i;i++)g+=Math.round(d.getIntersections(l[i]).length/2);d.data.prop.nbConcordances=g}null!==o&&n.data.prop.nbConcordances!==o&&j.displayProperties(n)}}console.info("_initSignalRouting from env/cimaf");var b;i.events.annotationAdded.add(function(b){a(b)},this,100),i.events.annotationChanged.add(function(b){a(1===b.length?b[0]:void 0)},this,100),h.events.annotableLoaded.add(function(a){var b=i.tools.concordantstr,c=i.tools.discordantstr,d=i.tools.cmsarea,e=a.envparam&&a.envparam.cimaf_cut_pos,g=a.envparam&&a.envparam.cimaf_cut_margin;f.events.imageLoaded.add(function(a){e=e||a.raster.scaling.x*a.raster.width/2,g=g||25,b.listeners.onCutPositionChanged(e),b.listeners.onCutMarginChanged(g),c.listeners.onCutPositionChanged(e),d.listeners.onCutPositionChanged(e),d.listeners.onSetAreaWidth(2*g)})},100)}function m(){a(".adim-display-type-selector").find("button").on("click",function(b){var c=a(this),d=!c.hasClass("active"),e=c.data("typeName");b.metaKey?"image"!==e&&f.selectItemsByType(e):(c.toggleClass("active",d),"image"===e?g.setImageOpacity(d?100:0,!0):(f.toggleItemsByType(c.data("typeName"),d),j.enableTool(e,d)))})}return{name:"cimaf",shortcuts:k,initSignalRouting:l,initUI:m}}); define('env/env',["jquery","underscore","paper","signals","adim/config","adim/view","adim/attributes","adim/io","adim/tools","adim/ui","env/shortcuts"],function(a,b,c,d,e,f,g,h,i,j,k){function l(){function a(a){if(!(a&&["cmsarea","concordantstr"].indexOf(a.data.type)<0)&&(b||(b=f.getOrCreateUserLayer(e.user.id,e.user.full_name)),b)){var d,g,h,i,k=b.children.filter(function(a){return a.data.type&&"cmsarea"===a.data.type}),l=b.children.filter(function(a){return a.data.type&&"concordantstr"===a.data.type}),m=c.project.getSelectedItems(),n=1===m.length&&"cmsarea"===m[0].data.type?m[0]:null,o=n?n.data.prop.nbConcordances:null,p=l.length;for(h=0;d=k[h];h++){for(g=0,i=0;p>i;i++)g+=Math.round(d.getIntersections(l[i]).length/2);d.data.prop.nbConcordances=g}null!==o&&n.data.prop.nbConcordances!==o&&j.displayProperties(n)}}console.info("_initSignalRouting from env/cimaf");var b;i.events.annotationAdded.add(function(b){a(b)},this,100),i.events.annotationChanged.add(function(b){a(1===b.length?b[0]:void 0)},this,100),h.events.annotableLoaded.add(function(a){var b=i.tools.concordantstr,c=i.tools.discordantstr,d=i.tools.cmsarea,e=a.envparam&&a.envparam.cimaf_cut_pos,g=a.envparam&&a.envparam.cimaf_cut_margin;f.events.imageLoaded.add(function(a){e=e||a.raster.scaling.x*a.raster.width/2,g=g||25,b.listeners.onCutPositionChanged(e),b.listeners.onCutMarginChanged(g),c.listeners.onCutPositionChanged(e),d.listeners.onCutPositionChanged(e),d.listeners.onSetAreaWidth(2*g)})},100)}function m(){a(".adim-display-type-selector").find("button").on("click",function(b){var c=a(this),d=!c.hasClass("active"),e=c.data("typeName");b.metaKey?"image"!==e&&f.selectItemsByType(e):(c.toggleClass("active",d),"image"===e?g.setImageOpacity(d?100:0,!0):(f.toggleItemsByType(c.data("typeName"),d),j.enableTool(e,d)))})}return{name:"cimaf",shortcuts:k,initSignalRouting:l,initUI:m}});
/** /**
* Copyright (C) 2014 Université de Lausanne, RISET, * Copyright (C) 2014 Université de Lausanne, RISET,
...@@ -27610,6 +27697,14 @@ function ($, paper, Signal, config, view, io, tools, attributes, ui, Users, them ...@@ -27610,6 +27697,14 @@ function ($, paper, Signal, config, view, io, tools, attributes, ui, Users, them
sendThumbnail(); sendThumbnail();
} }
}); });
io.events.annotationsSavedStatusChanged.add(function(data){
console.log("save state", data.status);
});
io.events.loadingError.add(function(options){
console.error("io::loadingError", options);
});
} }
   
initSignalRouting(); initSignalRouting();
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment