Author: szabyg
Date: Fri Apr 19 12:43:42 2013
New Revision: 1469808
URL: http://svn.apache.org/r1469808
Log:
Minor bug fix for STANBOL-981
Modified:
stanbol/trunk/demos/webvie/src/main/resources/META-INF/resources/static/enhancervie/lib/annotate.js
Modified:
stanbol/trunk/demos/webvie/src/main/resources/META-INF/resources/static/enhancervie/lib/annotate.js
URL:
http://svn.apache.org/viewvc/stanbol/trunk/demos/webvie/src/main/resources/META-INF/resources/static/enhancervie/lib/annotate.js?rev=1469808&r1=1469807&r2=1469808&view=diff
==============================================================================
---
stanbol/trunk/demos/webvie/src/main/resources/META-INF/resources/static/enhancervie/lib/annotate.js
(original)
+++
stanbol/trunk/demos/webvie/src/main/resources/META-INF/resources/static/enhancervie/lib/annotate.js
Fri Apr 19 12:43:42 2013
@@ -1,5 +1,4 @@
-// Generated by CoffeeScript 1.3.3
-
+// Generated by CoffeeScript 1.6.2
/* Annotate - a text enhancement interaction jQuery UI widget
# (c) 2011 Szaby Gruenwald, IKS Consortium
# Annotate may be freely distributed under the MIT license
@@ -43,7 +42,6 @@
}
EntityCache = (function() {
-
function EntityCache(opts) {
this.vie = opts.vie;
this.logger = opts.logger;
@@ -51,12 +49,14 @@
EntityCache.prototype._entities = function() {
var _ref1;
+
return (_ref1 = window.entityCache) != null ? _ref1 : window.entityCache
= {};
};
EntityCache.prototype.get = function(uri, scope, success, error) {
var cache,
_this = this;
+
uri = uri.replace(/^<|>$/g, "");
if (this._entities()[uri] && this._entities()[uri].status === "done") {
if (typeof success === "function") {
@@ -77,6 +77,7 @@
}).using('stanbol').execute().success(function(entityArr) {
return _.defer(function() {
var cacheEntry, entity;
+
cacheEntry = _this._entities()[uri];
entity = _.detect(entityArr, function(e) {
if (e.getSubject() === ("<" + uri + ">")) {
@@ -95,6 +96,7 @@
}).fail(function(e) {
return _.defer(function() {
var cacheEntry;
+
_this.logger.error("couldn't load " + uri);
cacheEntry = _this._entities()[uri];
cacheEntry.status = "error";
@@ -121,6 +123,7 @@
uriSuffix = function(uri) {
var res;
+
res = uri.substring(uri.lastIndexOf("#") + 1);
return res.substring(res.lastIndexOf("/") + 1);
};
@@ -142,6 +145,7 @@
property: "skos:broader",
makeLabel: function(propertyValueArr) {
var labels;
+
labels = _(propertyValueArr).map(function(termUri) {
return termUri.replace(/<.*[\/#](.*)>/, "$1").replace(/_/g,
" ");
});
@@ -151,6 +155,7 @@
property: "dcterms:subject",
makeLabel: function(propertyValueArr) {
var labels;
+
labels = _(propertyValueArr).map(function(termUri) {
return termUri.replace(/<.*[\/#](.*)>/, "$1").replace(/_/g,
" ");
});
@@ -196,6 +201,7 @@
},
_create: function() {
var widget;
+
widget = this;
this._logger = this.options.debug ? console : {
info: function() {},
@@ -228,6 +234,7 @@
enable: function() {
var checkerFn,
_this = this;
+
if (this.options.continuousChecking) {
checkerFn = delayThrottle(function() {
return _this._checkForChanges();
@@ -240,6 +247,7 @@
},
_checkForChanges: function() {
var el, hash, _i, _len, _ref1, _results;
+
_ref1 = this._findElementsToAnalyze();
_results = [];
for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
@@ -267,6 +275,7 @@
_analyze: function(el) {
var hash,
_this = this;
+
hash = this._elementHash(el);
return this.options.vie.analyze({
element: jQuery(el)
@@ -288,8 +297,10 @@
},
_applyEnhancements: function(el, enhancements) {
var _this = this;
+
return _.defer(function() {
var entAnn, entityAnnotations, textAnn, textAnnotations, textAnns, _i,
_j, _len, _len1, _ref1;
+
entityAnnotations = Stanbol.getEntityAnnotations(enhancements);
for (_i = 0, _len = entityAnnotations.length; _i < _len; _i++) {
entAnn = entityAnnotations[_i];
@@ -331,6 +342,7 @@
},
disable: function() {
var el, _i, _len, _ref1;
+
_ref1 = this._findElementsToAnalyze();
for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
el = _ref1[_i];
@@ -353,12 +365,14 @@
},
acceptAll: function(reportCallback) {
var report;
+
report = {
updated: [],
accepted: 0
};
$(':IKS-annotationSelector', this.element).each(function() {
var res;
+
if ($(this).data().annotationSelector) {
res = $(this).annotationSelector('acceptBestCandidate');
if (res) {
@@ -372,8 +386,10 @@
_listNonblockElements: function(el) {
var isDevidable, res,
_this = this;
+
isDevidable = function(el) {
var child, sum, _i, _len, _ref1;
+
sum = "";
_ref1 = jQuery(el).children();
for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
@@ -395,6 +411,7 @@
_processTextEnhancement: function(textEnh, parentEl) {
var eEnh, eEnhUri, el, options, sType, type, widget, _i, _j, _len,
_len1, _ref1,
_this = this;
+
if (!textEnh.getSelectedText()) {
this._logger.warn("textEnh", textEnh, "doesn't have selected-text!");
return;
@@ -435,11 +452,13 @@
},
_filterByType: function(textAnnotations) {
var _this = this;
+
if (!this.options.typeFilter) {
return textAnnotations;
}
return _.filter(textAnnotations, function(ta) {
var type, _i, _len, _ref1, _ref2;
+
if (_ref1 = _this.options.typeFilter, __indexOf.call(ta.getType(),
_ref1) >= 0) {
return true;
}
@@ -454,11 +473,13 @@
},
_getOrCreateDomElement: function(element, text, options) {
var domEl, len, nearest, nearestPosition, newElement, occurrences, pos,
start, textContentOf, textToCut;
+
if (options == null) {
options = {};
}
occurrences = function(str, s) {
var last, next, res, _results;
+
res = [];
last = 0;
_results = [];
@@ -474,6 +495,7 @@
};
nearestPosition = function(str, s, ind) {
var arr, d0, d1, i0, i1;
+
arr = occurrences(str, s);
i1 = nearest(arr, ind);
if (arr.length === 1) {
@@ -505,6 +527,7 @@
while (textContentOf(domEl).indexOf(text) !== -1 && domEl.nodeName !==
'#text') {
domEl = _(domEl.childNodes).detect(function(el) {
var p;
+
p = textContentOf(el).lastIndexOf(text);
if (p >= start - pos) {
return true;
@@ -535,6 +558,7 @@
String.prototype.hashCode = function() {
var char, hash, i;
+
hash = 0;
if (this.length === 0) {
return hash;
@@ -551,6 +575,7 @@
delayThrottle = function(cb, timeout) {
var resFn, timeoutHandler;
+
timeoutHandler = null;
return resFn = function() {
if (timeoutHandler) {
@@ -601,6 +626,7 @@
},
_create: function() {
var _this = this;
+
this._logger = this.options.debug ? console : {
info: function() {},
warn: function() {},
@@ -619,6 +645,7 @@
_initTooltip: function() {
var widget,
_this = this;
+
widget = this;
this._logger.info("init tooltip for", this.element);
if (this.options.showTooltip) {
@@ -634,6 +661,7 @@
},
content: function(response) {
var uri;
+
uri = _this.element.attr("resource");
_this._logger.info("tooltip uri:", uri);
return widget._createPreview(uri);
@@ -643,6 +671,7 @@
},
_createPreview: function(uri) {
var depictionUrl, descr, html, picSize;
+
html = "";
picSize = 100;
depictionUrl = this._getDepiction(this.entity, picSize);
@@ -661,11 +690,13 @@
_loadEntity: function(callback) {
var uri,
_this = this;
+
uri = this.element.attr('resource');
return this.vie.load({
entity: uri
}).using("stanbol").execute().success(function(res) {
var loadedEntity;
+
loadedEntity = _(res).detect(function(e) {
return e.getSubject().replace(/^<|>$/g, '') === uri;
});
@@ -676,11 +707,13 @@
},
_getUserLang: function() {
var navigatorLanguage;
+
navigatorLanguage = window.navigator.language ||
window.navigator.userLanguage;
return navigatorLanguage.split("-")[0];
},
_getDepiction: function(entity, picSize) {
var depictionUrl, field, fieldValue, preferredFields;
+
preferredFields = this.options.depictionProperties;
field = _(preferredFields).detect(function(field) {
if (entity.get(field)) {
@@ -693,18 +726,23 @@
if (uri.indexOf("thumb") !== -1) {
return true;
}
- }).replace(/[0-9]{2..3}px/, "" + picSize + "px");
+ });
+ if (depictionUrl) {
+ depictionUrl = depictionUrl.replace(/[0-9]{2..3}px/, "" + picSize +
"px");
+ }
return depictionUrl;
}
},
_getLabel: function(entity) {
var preferredFields, preferredLanguages;
+
preferredFields = this.options.labelProperties;
preferredLanguages = [this._getUserLang(),
this.options.fallbackLanguage];
return VIE.Util.getPreferredLangForPreferredProperty(entity,
preferredFields, preferredLanguages);
},
_getDescription: function(entity) {
var preferredFields, preferredLanguages;
+
preferredFields = this.options.descriptionProperties;
preferredLanguages = [this._getUserLang(),
this.options.fallbackLanguage];
return VIE.Util.getPreferredLangForPreferredProperty(entity,
preferredFields, preferredLanguages);
@@ -749,6 +787,7 @@
},
_create: function() {
var _this = this;
+
this.enableEditing();
this._logger = this.options.debug ? console : {
info: function() {},
@@ -763,6 +802,7 @@
};
return this.options.cache.get(this.linkedEntity.uri, this,
function(cachedEntity) {
var navigatorLanguage, userLang;
+
navigatorLanguage = window.navigator.language ||
window.navigator.userLanguage;
userLang = navigatorLanguage.split("-")[0];
return _this.linkedEntity.label =
VIE.Util.getPreferredLangForPreferredProperty(cachedEntity, ["skos:prefLabel",
"rdfs:label"], [userLang, "en"]);
@@ -771,6 +811,7 @@
},
enableEditing: function() {
var _this = this;
+
return this.element.click(function(e) {
_this._logger.log("click", e, e.isDefaultPrevented());
if (_this.dialog || !_this.dialog) {
@@ -811,6 +852,7 @@
},
remove: function(event) {
var el;
+
el = this.element.parent();
this._logger.info("destroy tooltip");
if (this.element.data().tooltip) {
@@ -848,6 +890,7 @@
},
annotate: function(entityEnhancement, options) {
var entityClass, entityHtml, entityType, entityUri, newElement, rel,
sType, type, ui, _i, _len, _ref1, _ref2;
+
entityUri = entityEnhancement.getUri();
entityType = entityEnhancement.getTextEnhancement().getType() || "";
entityHtml = this.element.html();
@@ -893,6 +936,7 @@
},
select: function(ui) {
var e;
+
e = new jQuery.Event("select");
e.ui = ui;
this._trigger('select', e, ui);
@@ -900,6 +944,7 @@
},
acceptBestCandidate: function() {
var eEnhancements;
+
eEnhancements = this._getEntityEnhancements();
if (!eEnhancements.length) {
return;
@@ -919,6 +964,7 @@
},
close: function() {
var _ref1;
+
if ((_ref1 = this.dialog) != null) {
if (typeof _ref1.close === "function") {
_ref1.close();
@@ -929,6 +975,7 @@
_initTooltip: function() {
var widget,
_this = this;
+
widget = this;
if (this.options.showTooltip) {
this._logger.info("init tooltip for", this.element);
@@ -944,6 +991,7 @@
},
content: function(response) {
var uri;
+
uri = _this.element.attr("resource");
_this._logger.info("tooltip uri:", uri);
widget._createPreview(uri, response);
@@ -954,6 +1002,7 @@
},
_getEntityEnhancements: function() {
var eEnhancements, enhancement, textEnh, _i, _j, _len, _len1, _ref1,
_ref2, _tempUris;
+
eEnhancements = [];
_ref1 = this.textEnhancements;
for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
@@ -967,6 +1016,7 @@
_tempUris = [];
eEnhancements = _(eEnhancements).filter(function(eEnh) {
var uri;
+
uri = eEnh.getUri();
if (_.indexOf(_tempUris, uri) === -1) {
_tempUris.push(uri);
@@ -982,6 +1032,7 @@
_typeLabels: function(types) {
var allKnownPrefixes, knownMapping, knownPrefixes,
_this = this;
+
knownMapping = this.options.getTypes();
allKnownPrefixes = _(knownMapping).map(function(x) {
return x.uri;
@@ -989,6 +1040,7 @@
knownPrefixes = _.intersection(allKnownPrefixes, types);
return _(knownPrefixes).map(function(key) {
var foundPrefix;
+
foundPrefix = _(knownMapping).detect(function(x) {
return x.uri === key;
});
@@ -997,6 +1049,7 @@
},
_sourceLabel: function(src) {
var sourceObj, sources;
+
if (!src) {
this._logger.warn("No source");
}
@@ -1016,6 +1069,7 @@
_createDialog: function() {
var dialogEl, label, widget,
_this = this;
+
label = this.element.text();
jQuery(".annotateselector-dialog-content").dialog("destroy").remove();
dialogEl = $("<div class='annotateselector-dialog-content'><span
class='entity-link'></span></div>").attr("tabIndex",
-1).addClass().keydown(function(event) {
@@ -1060,6 +1114,7 @@
},
_setButtons: function() {
var _this = this;
+
return this.dialog.element.dialog('option', 'buttons', {
rem: {
text: this.isAnnotated() ? 'Remove' : 'Decline',
@@ -1075,6 +1130,7 @@
},
_updateTitle: function() {
var title;
+
if (this.dialog) {
if (this.isAnnotated()) {
title = "" + this.linkedEntity.label + " <small>@ " +
(this._sourceLabel(this.linkedEntity.uri)) + "</small>";
@@ -1087,6 +1143,7 @@
_createMenu: function() {
var selectHandler, ul, widget,
_this = this;
+
widget = this;
ul = $('<ul
class="suggestion-menu"></ul>').appendTo(this.dialog.element);
this._renderMenu(ul, this.entityEnhancements);
@@ -1118,6 +1175,7 @@
},
content: function(response) {
var uri;
+
uri = jQuery(this).attr("entityuri");
widget._createPreview(uri, response);
return "loading...";
@@ -1129,8 +1187,10 @@
_createPreview: function(uri, response) {
var fail, success,
_this = this;
+
success = function(cacheEntity) {
var depictionUrl, descr, html, picSize;
+
html = "";
picSize = 100;
depictionUrl = _this._getDepiction(cacheEntity, picSize);
@@ -1157,11 +1217,13 @@
},
_getUserLang: function() {
var navigatorLanguage;
+
navigatorLanguage = window.navigator.language ||
window.navigator.userLanguage;
return navigatorLanguage.split("-")[0];
},
_getDepiction: function(entity, picSize) {
var depictionUrl, field, fieldValue, preferredFields;
+
preferredFields = this.options.depictionProperties;
field = _(preferredFields).detect(function(field) {
if (entity.get(field)) {
@@ -1174,24 +1236,30 @@
if (uri.indexOf("thumb") !== -1) {
return true;
}
- }).replace(/[0-9]{2..3}px/, "" + picSize + "px");
+ });
+ if (depictionUrl) {
+ depictionUrl = depictionUrl.replace(/[0-9]{2..3}px/, "" + picSize +
"px");
+ }
return depictionUrl;
}
},
_getLabel: function(entity) {
var preferredFields, preferredLanguages;
+
preferredFields = this.options.labelProperties;
preferredLanguages = [this._getUserLang(),
this.options.fallbackLanguage];
return VIE.Util.getPreferredLangForPreferredProperty(entity,
preferredFields, preferredLanguages);
},
_getDescription: function(entity) {
var preferredFields, preferredLanguages;
+
preferredFields = this.options.descriptionProperties;
preferredLanguages = [this._getUserLang(),
this.options.fallbackLanguage];
return VIE.Util.getPreferredLangForPreferredProperty(entity,
preferredFields, preferredLanguages);
},
_renderMenu: function(ul, entityEnhancements) {
var enhancement, _i, _len;
+
entityEnhancements = _(entityEnhancements).sortBy(function(ee) {
return -1 * ee.getConfidence();
});
@@ -1203,6 +1271,7 @@
},
_renderItem: function(ul, eEnhancement) {
var active, item, label, source, type;
+
label = eEnhancement.getLabel().replace(/^\"|\"$/g, "");
type = this._typeLabels(eEnhancement.getTypes()).toString() || "Other";
source = this._sourceLabel(eEnhancement.getUri());
@@ -1212,6 +1281,7 @@
_createSearchbox: function() {
var sugg, widget,
_this = this;
+
this.searchEntryField = $('<span style="background: fff;"><label
for="search">Search:</label> <input id="search"
class="search"></span>').appendTo(this.dialog.element);
sugg = this.textEnhancements[0];
widget = this;
@@ -1220,6 +1290,7 @@
urifield: jQuery("#urifield"),
select: function(e, ui) {
var item;
+
item = ui.item;
item.getUri = function() {
return this.key;
@@ -1245,6 +1316,7 @@
if (!this.entityEnhancements.length && !this.isAnnotated()) {
setTimeout(function() {
var label;
+
label = _this.element.html();
_this.searchbox.val(label);
return _this.searchbox.autocomplete("search", label);
@@ -1261,6 +1333,7 @@
},
_cloneCopyEvent1_6: function(src, dest) {
var curData, events, i, internalKey, l, oldData, type;
+
if (dest.nodeType !== 1 || !jQuery.hasData(src)) {
return;
}
@@ -1287,6 +1360,7 @@
},
_cloneCopyEvent1_7: function(src, dest) {
var curData, events, i, l, oldData, type;
+
if (dest.nodeType !== 1 || !jQuery.hasData(src)) {
return;
}
@@ -1318,11 +1392,13 @@
Stanbol.getTextAnnotations = function(enhList) {
var res;
+
res = _(enhList).filter(function(e) {
return e.isof("<" + ns.enhancer + "TextAnnotation>");
});
res = _(res).sortBy(function(e) {
var conf;
+
if (e.get("enhancer:confidence")) {
conf = Number(e.get("enhancer:confidence"));
}
@@ -1340,7 +1416,6 @@
};
Stanbol.TextEnhancement = (function() {
-
function TextEnhancement(enhancement, enhList) {
this._enhancement = enhancement;
this._enhList = enhList;
@@ -1349,6 +1424,7 @@
TextEnhancement.prototype.getSelectedText = function() {
var res;
+
res = this._vals("enhancer:selected-text");
if (typeof res === "string") {
return res;
@@ -1365,6 +1441,7 @@
TextEnhancement.prototype.getEntityEnhancements = function() {
var rawList,
_this = this;
+
rawList = this._enhancement.get("entityAnnotation");
if (!rawList) {
return [];
@@ -1393,6 +1470,7 @@
TextEnhancement.prototype.getOrigText = function() {
var ciUri;
+
ciUri = this._vals("enhancer:extracted-from");
return
this._enhList[ciUri]["http://www.semanticdesktop.org/ontologies/2007/01/19/nie#plainTextContent"][0].value;
};
@@ -1403,6 +1481,7 @@
TextEnhancement.prototype._uriTrim = function(uriRef) {
var bbColl, mod;
+
if (!uriRef) {
return [];
}
@@ -1410,6 +1489,7 @@
bbColl = uriRef;
return (function() {
var _i, _len, _ref1, _results;
+
_ref1 = bbColl.models;
_results = [];
for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
@@ -1431,12 +1511,10 @@
})();
Stanbol.EntityEnhancement = (function() {
-
function EntityEnhancement(ee, textEnh) {
this._enhancement = ee;
this._textEnhancement = textEnh;
this;
-
}
EntityEnhancement.prototype.getLabel = function() {
@@ -1461,6 +1539,7 @@
EntityEnhancement.prototype._vals = function(key) {
var res;
+
res = this._enhancement.get(key);
if (!res) {
return [];
@@ -1474,6 +1553,7 @@
EntityEnhancement.prototype._uriTrim = function(uriRef) {
var bbColl, mod;
+
if (!uriRef) {
return [];
}
@@ -1481,6 +1561,7 @@
bbColl = uriRef;
return (function() {
var _i, _len, _ref1, _results;
+
_ref1 = bbColl.models;
_results = [];
for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
@@ -1523,6 +1604,7 @@
property: "skos:broader",
makeLabel: function(propertyValueArr) {
var labels;
+
labels = _(propertyValueArr).map(function(termUri) {
return termUri.replace(/<.*[\/#](.*)>/, "$1").replace(/_/g,
" ");
});
@@ -1532,6 +1614,7 @@
property: "dcterms:subject",
makeLabel: function(propertyValueArr) {
var labels;
+
labels = _(propertyValueArr).map(function(termUri) {
return termUri.replace(/<.*[\/#](.*)>/, "$1").replace(/_/g,
" ");
});
@@ -1573,6 +1656,7 @@
source: function(req, resp) {
var mergedEntityList, properties, success, waitingfor,
_this = this;
+
this._logger.info("req:", req);
properties = _.flatten([this.options.labelProperties,
this.options.descriptionProperties, this.options.depictionProperties]);
properties = _(properties).map(function(prop) {
@@ -1587,6 +1671,7 @@
success = function(entityList) {
return _.defer(function() {
var limit, res;
+
waitingfor--;
_this._logger.info("resp:", _(entityList).map(function(ent) {
return ent.id;
@@ -1602,6 +1687,7 @@
if (waitingfor === 0) {
mergedEntityList = _.sortBy(mergedEntityList, function(e) {
var s;
+
s =
e.get('<http://stanbol.apache.org/ontology/entityhub/query#score>');
if (typeof s === "object") {
s = _.max(s);
@@ -1610,6 +1696,7 @@
});
_this._logger.info(_(mergedEntityList).map(function(e) {
var s, uri;
+
uri = e.getSubject();
s =
e.get('<http://stanbol.apache.org/ontology/entityhub/query#score>');
return "" + uri + ": " + s;
@@ -1667,6 +1754,7 @@
_instantiateAutocomplete: function() {
var widget,
_this = this;
+
widget = this;
return this.element.autocomplete({
source: function(req, resp) {
@@ -1674,10 +1762,12 @@
},
open: function(e, ui) {
var _this = this;
+
widget._logger.info("autocomplete.open", e, ui);
if (widget.options.showTooltip) {
return $('.ui-menu-item',
$(this).data().autocomplete.menu.activeMenu).each(function() {
var item, uri;
+
item = $(this).data()["item.autocomplete"] ||
$(this).data()["uiAutocompleteItem"] || $(this).data()["ui-autocomplete-item"];
uri = item.getUri();
return $(this).entitypreview({
@@ -1714,12 +1804,14 @@
},
_getLabel: function(entity) {
var preferredFields, preferredLanguages;
+
preferredFields = this.options.labelProperties;
preferredLanguages = [this._getUserLang(),
this.options.fallbackLanguage];
return VIE.Util.getPreferredLangForPreferredProperty(entity,
preferredFields, preferredLanguages);
},
_sourceLabel: function(src) {
var sourceObj, sources;
+
if (!src) {
this._logger.warn("No source");
}