Property suggest and type suggest widgets in standard recon service panel now use the service's suggest settings, including custom service URLs.
git-svn-id: http://google-refine.googlecode.com/svn/trunk@1049 7d457c2a-affb-35e4-300a-418c747d4874
This commit is contained in:
parent
0e4781cb58
commit
59fe9e35bd
@ -27,6 +27,8 @@ function init() {
|
|||||||
"externals/imgareaselect/jquery.imgareaselect.js",
|
"externals/imgareaselect/jquery.imgareaselect.js",
|
||||||
"externals/date.js",
|
"externals/date.js",
|
||||||
|
|
||||||
|
"scripts/project.js",
|
||||||
|
|
||||||
"scripts/util/misc.js",
|
"scripts/util/misc.js",
|
||||||
"scripts/util/url.js",
|
"scripts/util/url.js",
|
||||||
"scripts/util/string.js",
|
"scripts/util/string.js",
|
||||||
@ -43,7 +45,6 @@ function init() {
|
|||||||
"scripts/widgets/histogram-widget.js",
|
"scripts/widgets/histogram-widget.js",
|
||||||
"scripts/widgets/slider-widget.js",
|
"scripts/widgets/slider-widget.js",
|
||||||
|
|
||||||
"scripts/project.js",
|
|
||||||
"scripts/project/menu-bar.js",
|
"scripts/project/menu-bar.js",
|
||||||
"scripts/project/browsing-engine.js",
|
"scripts/project/browsing-engine.js",
|
||||||
"scripts/project/scripting.js",
|
"scripts/project/scripting.js",
|
||||||
|
@ -39,7 +39,7 @@ ExtendDataPreviewDialog.getAllProperties = function(typeID, onDone) {
|
|||||||
var done = false;
|
var done = false;
|
||||||
|
|
||||||
$.getJSON(
|
$.getJSON(
|
||||||
Gridworks.gridworksHelperService + "get_properties_of_type?type=" + typeID + "&callback=?",
|
Gridworks.gridworksHelperService + "/get_properties_of_type?type=" + typeID + "&callback=?",
|
||||||
null,
|
null,
|
||||||
function(data) {
|
function(data) {
|
||||||
if (done) return;
|
if (done) return;
|
||||||
@ -109,7 +109,7 @@ ExtendDataPreviewDialog.prototype._show = function(properties) {
|
|||||||
type: '/type/property'
|
type: '/type/property'
|
||||||
};
|
};
|
||||||
if ("reconConfig" in this._column && "type" in this._column.reconConfig) {
|
if ("reconConfig" in this._column && "type" in this._column.reconConfig) {
|
||||||
suggestConfig.schema = this._column.reconConfig.type.id;
|
suggestConfig.ac_param = { schema: this._column.reconConfig.type.id };
|
||||||
}
|
}
|
||||||
|
|
||||||
this._elmts.addPropertyInput.suggestP(suggestConfig).bind("fb-select", function(evt, data) {
|
this._elmts.addPropertyInput.suggestP(suggestConfig).bind("fb-select", function(evt, data) {
|
||||||
|
@ -2,7 +2,7 @@ var theProject;
|
|||||||
var ui = {};
|
var ui = {};
|
||||||
|
|
||||||
var Gridworks = {
|
var Gridworks = {
|
||||||
gridworksHelperService: "http://1-0.gridworks-helper.dfhuynh.user.dev.freebaseapps.com/"
|
gridworksHelperService: "http://6.gridworks-helper.dfhuynh.user.dev.freebaseapps.com"
|
||||||
};
|
};
|
||||||
|
|
||||||
Gridworks.reportException = function(e) {
|
Gridworks.reportException = function(e) {
|
||||||
|
@ -141,7 +141,7 @@ SchemaAlignmentDialog.UILink._getPropertiesOfType = function(typeID, targetTypeI
|
|||||||
}
|
}
|
||||||
|
|
||||||
$.getJSON(
|
$.getJSON(
|
||||||
Gridworks.gridworksHelperService + "get_properties_of_type?" + $.param(params) + "&callback=?",
|
Gridworks.gridworksHelperService + "/get_properties_of_type?" + $.param(params) + "&callback=?",
|
||||||
null,
|
null,
|
||||||
function(data) {
|
function(data) {
|
||||||
if (done) return;
|
if (done) return;
|
||||||
@ -246,7 +246,7 @@ SchemaAlignmentDialog.UILink.prototype._showPropertySuggestPopup = function(elmt
|
|||||||
} else {
|
} else {
|
||||||
var sourceTypeID = this._parentUINode.getExpectedType();
|
var sourceTypeID = this._parentUINode.getExpectedType();
|
||||||
if (sourceTypeID !== null) {
|
if (sourceTypeID !== null) {
|
||||||
suggestOptions.schema = sourceTypeID;
|
suggestOptions.ac_param = { schema: sourceTypeID };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
input.suggestP(suggestOptions).bind("fb-select", function(e, data) { commitProperty(data); });
|
input.suggestP(suggestOptions).bind("fb-select", function(e, data) { commitProperty(data); });
|
||||||
|
@ -34,10 +34,12 @@ ReconciliationManager.registerService = function(service) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
ReconciliationManager.registerStandardService = function(url, f) {
|
ReconciliationManager.registerStandardService = function(url, f) {
|
||||||
$.ajax({
|
var dismissBusy = DialogSystem.showBusy();
|
||||||
async: false,
|
|
||||||
url: url + (url.contains("?") ? "&" : "?") + "callback=?",
|
$.getJSON(
|
||||||
success: function(data) {
|
url + (url.contains("?") ? "&" : "?") + "callback=?",
|
||||||
|
null,
|
||||||
|
function(data) {
|
||||||
data.url = url;
|
data.url = url;
|
||||||
data.ui = { "handler" : "ReconStandardServicePanel" };
|
data.ui = { "handler" : "ReconStandardServicePanel" };
|
||||||
|
|
||||||
@ -49,12 +51,14 @@ ReconciliationManager.registerStandardService = function(url, f) {
|
|||||||
|
|
||||||
ReconciliationManager.save();
|
ReconciliationManager.save();
|
||||||
|
|
||||||
|
dismissBusy();
|
||||||
|
|
||||||
if (f) {
|
if (f) {
|
||||||
f(index);
|
f(index);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
dataType: "jsonp"
|
"jsonp"
|
||||||
});
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
ReconciliationManager.unregisterService = function(service, f) {
|
ReconciliationManager.unregisterService = function(service, f) {
|
||||||
|
@ -131,7 +131,7 @@ ReconStandardServicePanel.prototype._populatePanel = function() {
|
|||||||
.find('input[name="type-choice"][value=""]')
|
.find('input[name="type-choice"][value=""]')
|
||||||
.attr("checked", "true");
|
.attr("checked", "true");
|
||||||
|
|
||||||
this._panel.typeInput.focus();
|
this._elmts.typeInput.focus();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -197,16 +197,18 @@ ReconStandardServicePanel.prototype._rewirePropertySuggests = function(type) {
|
|||||||
.find('input[name="property"]')
|
.find('input[name="property"]')
|
||||||
.unbind();
|
.unbind();
|
||||||
|
|
||||||
if ("property" in this._service && "property" in this._service.suggest) {
|
if ("suggest" in this._service && "property" in this._service.suggest) {
|
||||||
var suggestOptions = $.extend({}, this._service.suggest.property);
|
var suggestOptions = $.extend({}, this._service.suggest.property);
|
||||||
if (type) {
|
if (type) {
|
||||||
suggestOptions.schema = typeof type == "string" ? type : type.id;
|
suggestOptions.ac_param = { schema: typeof type == "string" ? type : type.id };
|
||||||
}
|
}
|
||||||
inputs.suggestP(suggestOptions);
|
inputs.suggestP(suggestOptions);
|
||||||
} else if (this._isInFreebaseSchemaSpace()) {
|
} else if (this._isInFreebaseSchemaSpace()) {
|
||||||
inputs.suggestP({
|
inputs.suggestP({
|
||||||
type: '/type/property',
|
type: '/type/property',
|
||||||
schema: (type) ? (typeof type == "string" ? type : type.id) : "/common/topic"
|
ac_param: {
|
||||||
|
schema: (type) ? (typeof type == "string" ? type : type.id) : "/common/topic"
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -1,40 +1,4 @@
|
|||||||
(function() {
|
(function() {
|
||||||
var oldResponse = $.suggest.suggest.prototype.response;
|
|
||||||
var typeToIncludedTypes = {};
|
|
||||||
var resortByType = function(data, type) {
|
|
||||||
var schemaPrefixes = [ type + "/" ];
|
|
||||||
|
|
||||||
var includedTypes = typeToIncludedTypes[type];
|
|
||||||
for (var i = 0; i < includedTypes.length; i++) {
|
|
||||||
schemaPrefixes.push(includedTypes[i] + "/");
|
|
||||||
}
|
|
||||||
|
|
||||||
var results = "result" in data ? data.result : [];
|
|
||||||
var entries1 = [];
|
|
||||||
var entries2 = [];
|
|
||||||
|
|
||||||
for (var i = 0; i < results.length; i++) {
|
|
||||||
var result = results[i];
|
|
||||||
|
|
||||||
var matched = false;
|
|
||||||
for (var j = 0; j < schemaPrefixes.length; j++) {
|
|
||||||
var schemaPrefix = schemaPrefixes[j];
|
|
||||||
if (result.id.substring(0, schemaPrefix.length) == schemaPrefix) {
|
|
||||||
matched = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (matched) {
|
|
||||||
entries1.push(result);
|
|
||||||
} else {
|
|
||||||
entries2.push(result);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
data.result = entries1.concat(entries2);
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Property suggest
|
* Property suggest
|
||||||
*/
|
*/
|
||||||
@ -45,80 +9,24 @@
|
|||||||
{},
|
{},
|
||||||
$.suggest.suggest.prototype,
|
$.suggest.suggest.prototype,
|
||||||
{
|
{
|
||||||
request: function(val, start) {
|
|
||||||
if (this.ac_xhr) {
|
|
||||||
this.ac_xhr.abort();
|
|
||||||
this.ac_xhr = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
var self = this;
|
|
||||||
var o = this.options;
|
|
||||||
|
|
||||||
var data = {
|
|
||||||
query: val
|
|
||||||
};
|
|
||||||
if (start) {
|
|
||||||
data.start = start;
|
|
||||||
}
|
|
||||||
if ("schema" in o) {
|
|
||||||
data.schema = o.schema;
|
|
||||||
}
|
|
||||||
|
|
||||||
$.extend(data, o.ac_param);
|
|
||||||
|
|
||||||
var baseUrl = Gridworks.gridworksHelperService + "suggest_property";
|
|
||||||
var url = baseUrl + "?" + $.param(data),
|
|
||||||
|
|
||||||
cached = $.suggest.cache[url];
|
|
||||||
if (cached) {
|
|
||||||
this.response(cached, start ? start : -1, true);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
clearTimeout(this.request.timeout);
|
|
||||||
this.request.timeout =
|
|
||||||
setTimeout(function() {
|
|
||||||
self.ac_xhr = $.ajax({
|
|
||||||
url: baseUrl,
|
|
||||||
data: data,
|
|
||||||
beforeSend: function() {
|
|
||||||
var calls = self.input.data("request.count.suggest") || 0;
|
|
||||||
if (!calls) {
|
|
||||||
self.trackEvent(self.name, "start_session");
|
|
||||||
}
|
|
||||||
calls += 1;
|
|
||||||
self.trackEvent(self.name, "request", "count", calls);
|
|
||||||
self.input.data("request.count.suggest", calls);
|
|
||||||
},
|
|
||||||
success: function(data) {
|
|
||||||
self.response(data, start ? start : -1);
|
|
||||||
},
|
|
||||||
error: function(xhr) {
|
|
||||||
self.trackEvent(self.name, "request", "error", {url:this.url, response: xhr ? xhr.responseText : ''});
|
|
||||||
},
|
|
||||||
complete: function(xhr) {
|
|
||||||
if (xhr) {
|
|
||||||
self.trackEvent(self.name, "request", "tid", xhr.getResponseHeader("X-Metaweb-TID"));
|
|
||||||
}
|
|
||||||
},
|
|
||||||
dataType: "jsonp",
|
|
||||||
cache: true
|
|
||||||
});
|
|
||||||
}, o.xhr_delay);
|
|
||||||
},
|
|
||||||
create_item: function(data, response_data) {
|
create_item: function(data, response_data) {
|
||||||
var css = this.options.css;
|
var css = this.options.css;
|
||||||
|
|
||||||
var li = $("<li>").addClass(css.item);
|
var li = $("<li>").addClass(css.item);
|
||||||
|
|
||||||
var name = $("<div>")
|
var name = $("<div>")
|
||||||
.addClass(css.item_name)
|
.addClass(css.item_name)
|
||||||
.append(
|
.append(
|
||||||
$("<label>").append($.suggest.strongify(data.name || data.guid, response_data.prefix)));
|
$("<label>").append(
|
||||||
|
$.suggest.strongify(
|
||||||
|
data.name || data.guid, response_data.prefix
|
||||||
|
)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
data.name = name.text(); // this converts html escaped strings like "&" back to "&"
|
data.name = name.text(); // this converts html escaped strings like "&" back to "&"
|
||||||
li.append(name);
|
li.append(name);
|
||||||
|
|
||||||
name.prepend($("<div>").addClass(css.item_type).text(data.id));
|
name.prepend($("<div>").addClass(css.item_type).text(data.id));
|
||||||
|
|
||||||
return li;
|
return li;
|
||||||
@ -127,6 +35,19 @@
|
|||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
var originalSuggestP = $.suggest.suggestP;
|
||||||
|
$.suggest.suggestP = function(input, options) {
|
||||||
|
originalSuggestP.call(this, input, options);
|
||||||
|
|
||||||
|
if ("ac_param" in options) {
|
||||||
|
var ac_param = options.ac_param;
|
||||||
|
if ("schema" in ac_param) {
|
||||||
|
this.options.ac_param.schema = ac_param.schema;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
$.suggest.suggestP.prototype = originalSuggestP.prototype;
|
||||||
|
|
||||||
$.extend(
|
$.extend(
|
||||||
$.suggest.suggestP,
|
$.suggest.suggestP,
|
||||||
{
|
{
|
||||||
@ -134,6 +55,9 @@
|
|||||||
true,
|
true,
|
||||||
{},
|
{},
|
||||||
$.suggest.suggest.defaults, {
|
$.suggest.suggest.defaults, {
|
||||||
|
service_url: Gridworks.gridworksHelperService,
|
||||||
|
service_path: "/suggest_property",
|
||||||
|
flyout_service_url: "http://www.freebase.com",
|
||||||
css: { pane: "fbs-pane fbs-pane-property" }
|
css: { pane: "fbs-pane fbs-pane-property" }
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
Loading…
Reference in New Issue
Block a user