RandomSec/extensions/freebase/module/scripts/extension.js

119 lines
3.8 KiB
JavaScript

var FreebaseExtension = { handlers: {} };
FreebaseExtension.handlers.editSchemaAlignment = function(reset) {
new SchemaAlignmentDialog(
reset ? null : theProject.overlayModels.freebaseProtograph, function(newProtograph) {});
};
FreebaseExtension.handlers.loadIntoFreebase = function() {
new FreebaseLoadingDialog();
};
FreebaseExtension.handlers.browseToDataLoad = function() {
// The form has to be created as part of the click handler. If you create it
// inside the getJSON success handler, it won't work.
var form = document.createElement("form");
$(form)
.css("display", "none")
.attr("method", "GET")
.attr("target", "dataload");
document.body.appendChild(form);
var w = window.open("about:blank", "dataload");
$.getJSON(
"/command/core/get-preference?" + $.param({ project: theProject.id, name: "freebase.load.jobID" }),
null,
function(data) {
if (data.value == null) {
alert("You have not tried to load the data in this project into Freebase yet.");
} else {
$(form).attr("action", "http://refinery.freebaseapps.com/load/" + data.value);
form.submit();
w.focus();
}
document.body.removeChild(form);
}
);
};
FreebaseExtension.handlers.importQAData = function() {
Refine.postProcess(
"freebase-extension",
"import-qa-data",
{},
{},
{ cellsChanged: true }
);
};
ExtensionBar.addExtensionMenu({
"id" : "freebase",
"label" : "Freebase",
"submenu" : [
{
"id" : "freebase/schema-alignment",
label: "Edit Schema Aligment Skeleton ...",
click: function() { FreebaseExtension.handlers.editSchemaAlignment(false); }
},
{
"id" : "freebase/reset-schema-alignment",
label: "Reset Schema Alignment Skeleton ...",
click: function() { FreebaseExtension.handlers.editSchemaAlignment(true); }
},
{},
{
"id" : "freebase/load-info-freebase",
label: "Load into Freebase ...",
click: function() { FreebaseExtension.handlers.loadIntoFreebase(); }
},
{
"id" : "freebase/browse-load",
label: "Browse to Data Load ...",
click: function() { FreebaseExtension.handlers.browseToDataLoad(); }
},
{
"id" : "freebase/import-qa-data",
label: "Import QA Data",
click: function() { FreebaseExtension.handlers.importQAData(); }
}
]
});
DataTableColumnHeaderUI.extendMenu(function(column, columnHeaderUI, menu) {
var columnIndex = Refine.columnNameToColumnIndex(column.name);
var doAddColumnFromFreebase = function() {
var o = DataTableView.sampleVisibleRows(column);
new ExtendDataPreviewDialog(
column,
columnIndex,
o.rowIndices,
function(extension) {
Refine.postProcess(
"freebase-extension",
"extend-data",
{
baseColumnName: column.name,
columnInsertIndex: columnIndex + 1
},
{
extension: JSON.stringify(extension)
},
{ rowsChanged: true, modelsChanged: true }
);
}
);
};
MenuSystem.insertAfter(
menu,
[ "core/edit-column", "core/add-column-by-fetching-urls" ],
{
id: "freebase/add-columns-from-freebase",
label: "Add Columns From Freebase ...",
click: doAddColumnFromFreebase
}
);
});