Line 25: |
Line 25: |
| async function controller_render(){ | | async function controller_render(){ |
| console.log("this function is done by the current page controller for now"); | | console.log("this function is done by the current page controller for now"); |
| + | notify_porting(); |
| } | | } |
| | | |
Line 36: |
Line 37: |
| // Get concerns relation :: Parts of this must be moved upstream, MAIN should know that this is the data the renderer will need and provide it | | // Get concerns relation :: Parts of this must be moved upstream, MAIN should know that this is the data the renderer will need and provide it |
| | | |
− | var concern_origin = WikibaseProcessor.checkentity( { this_concerns: [ WBEStructure['concernsRelation'], WBEStructure['IDPropLoc'], WBEStructure['IDName'] ] } )['this_concerns'][0]; | + | var concern_origin = WikibaseProcessor.checkentity( { this_concerns: [ WBEStructure['concernsRelation'], WBEStructure['IDPropLoc'], WBEStructure['qIDPropName'] ] } )['this_concerns'][0]; |
| | | |
| // Get defval for entity :: Parts of this must be moved upstream, MAIN should know that this is the data the renderer will need and provide it | | // Get defval for entity :: Parts of this must be moved upstream, MAIN should know that this is the data the renderer will need and provide it |
Line 103: |
Line 104: |
| var ifel = document.getElementsByClassName('pduimark'); | | var ifel = document.getElementsByClassName('pduimark'); |
| while( ifel[0] ) { | | while( ifel[0] ) { |
− | ifel[0].parentNode.removeChild(ifel[0]);
| + | ifel[0].parentNode.removeChild(ifel[0]); |
| }; | | }; |
| }; | | }; |
| + | |
| + | function notify_porting() { |
| + | |
| + | mw.loader.using( 'oojs-ui-core' ).done( function () { |
| + | |
| + | var button_import = new OO.ui.SelectFileWidget( { label: "Import Personal Data", classes: [ 'pduimark' ] } ), |
| + | |
| + | button_export = new OO.ui.ButtonWidget( { label: "Export Personal Data", classes: [ 'pduimark' ] } ); |
| + | |
| + | button_import.on( 'change', function (event) { |
| + | |
| + | if (window.webkitURL != null) { |
| + | console.log("loading file on webkit") |
| + | } else { |
| + | console.log("loading file non webkit") |
| + | } |
| + | |
| + | console.log( event ); |
| + | var input_object = event; |
| + | readFileContent( input_object ).then( function(content) { |
| + | var data = WikibaseProcessor.rxjson(content); |
| + | indexedDBobject.EnqueuePDIO('import record', data); |
| + | }); |
| + | }); |
| + | |
| + | button_export.on( 'click', function () { |
| + | |
| + | var get_record = indexedDBobject.EnqueuePDIO('get record'); |
| + | |
| + | get_record.then( function(result) { |
| + | console.log("happening"); |
| + | if ( result === undefined ) { window.alert("No local data to export") } else { |
| + | |
| + | var filename_tosaveas = "pdiolocalexport_" + result.name.user + "_" + Date.now() + '.json'; |
| + | |
| + | delete result.id; |
| + | delete result.name.user; |
| + | |
| + | var export_to_text = JSON.stringify(result); |
| + | var textFileAsBlob = new Blob([export_to_text], {type:'text/plain'}); |
| + | var downloadLink = document.createElement("a"); |
| + | downloadLink.download = filename_tosaveas; |
| + | if (window.webkitURL != null) |
| + | { |
| + | // Chrome allows the link to be clicked |
| + | // without actually adding it to the DOM. |
| + | downloadLink.href = window.webkitURL.createObjectURL(textFileAsBlob); |
| + | } |
| + | else |
| + | { |
| + | // Firefox requires the link to be added to the DOM |
| + | // before it can be clicked. |
| + | downloadLink.href = window.URL.createObjectURL(textFileAsBlob); |
| + | downloadLink.style.display = "none"; |
| + | document.body.appendChild(downloadLink); |
| + | } |
| + | |
| + | downloadLink.click(); |
| + | |
| + | } |
| + | |
| + | }); |
| + | |
| + | }); |
| + | |
| + | mw.notify( $( button_import.$element ), { autoHide: false } ); |
| + | mw.notify( $( button_export.$element ), { autoHide: false } ); |
| + | }); |
| + | } |
| + | |
| + | function readFileContent(file) { |
| + | const reader = new FileReader() |
| + | return new Promise((resolve, reject) => { |
| + | reader.onload = event => resolve(event.target.result) |
| + | reader.onerror = error => reject(error) |
| + | reader.readAsText(file) |
| + | }) |
| + | } |
| | | |
| } | | } |