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() {
function notify_porting() {
−
−
var button_import = new OO.ui.ButtonWidget( { label: "Import local personal data from file", classes: [ 'pduimark' ] } ),
−
button_export = new OO.ui.ButtonWidget( { label: "Export local personal data to file ", classes: [ 'pduimark' ] } );
+
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 , button_export.$element ) );
+
});
+
});
+
+
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)
+
})
}
}
}
}