File: import-schema-dialog.js

package info (click to toggle)
openrefine 3.9.5-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 44,440 kB
  • sloc: javascript: 106,758; java: 91,946; xml: 6,634; sh: 614; makefile: 78; python: 71; sql: 59
file content (73 lines) | stat: -rw-r--r-- 2,260 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
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-buttons/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').on('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.on('click',function() {
    var schema = null;
    try {
       schema = JSON.parse(elmts.schemaTextarea.val());

       // If Wikibase related information is not included in the schema,
       // fall back to Wikidata.
       if (!schema.siteIri || !schema.mediaWikiApiEndpoint) {
         schema.siteIri = WikidataManifestV1_0.wikibase.site_iri;
         schema.mediaWikiApiEndpoint = WikidataManifestV1_0.mediawiki.api;
       }
    } 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;
            if (SchemaAlignment._isSetUp) {
            	SchemaAlignment._discardChanges();
            }
            dismiss();
        },
        onError: function(e) {
            elmts.invalidSchema.text($.i18n('import-wikibase-schema/invalid-schema'));
        },
        }
    );
  });
};