RandomSec/extensions/wikidata/module/scripts/dialogs/import-schema-dialog.js
2018-11-01 18:30:24 +00:00

65 lines
1.9 KiB
JavaScript

var ImportSchemaDialog = {};
ImportSchemaDialog.launch = function() {
var self = this;
var frame = $(DOM.loadHTML("wikidata", "scripts/dialogs/import-schema-dialog.html"));
var elmts = this._elmts = DOM.bind(frame);
this._elmts.dialogHeader.text($.i18n._('import-wikibase-schema')["dialog-header"]);
this._elmts.fileLabel.html($.i18n._('import-wikibase-schema')["file-label"]);
this._elmts.schemaLabel.text($.i18n._('import-wikibase-schema')["schema-label"]);
this._elmts.cancelButton.text($.i18n._('core-project')["cancel"]);
this._elmts.importButton.text($.i18n._('import-wikibase-schema')["import"]);
this._level = DialogSystem.showDialog(frame);
var dismiss = function() {
DialogSystem.dismissUntil(self._level - 1);
};
frame.find('.cancel-button').click(function() {
dismiss();
});
elmts.fileInput.on("change", function(evt) {
var file = evt.target.files[0];
var freader = new FileReader();
freader.onload = function(evt) {
elmts.schemaTextarea.val(evt.target.result);
elmts.schemaTextarea.hide();
elmts.schemaLabel.hide();
}
freader.readAsText(file);
});
elmts.importButton.click(function() {
var schema = null;
try {
schema = JSON.parse(elmts.schemaTextarea.val());
} catch(e) {
elmts.invalidSchema.text($.i18n._('import-wikibase-schema')["invalid-schema"]);
return;
}
Refine.postProcess(
"wikidata",
"save-wikibase-schema",
{},
{ schema: JSON.stringify(schema) },
{},
{
onDone: function() {
theProject.overlayModels.wikibaseSchema = schema;
SchemaAlignmentDialog._discardChanges();
dismiss();
},
onError: function(e) {
elmts.invalidSchema.text($.i18n._('import-wikibase-schema')["invalid-schema"]);
},
}
);
});
};