Line 2: |
Line 2: |
| // User Interface Rendering | | // User Interface Rendering |
| console.log('Interface handler loading'); | | console.log('Interface handler loading'); |
| + | |
| + | function InterfaceMediaContainer ( WikibaseProcessor, indexedDBobject ) { |
| + | |
| + | this.renderInterface = function( sqitch ) { |
| + | switch( sqitch ) { |
| + | case 'controller_id': |
| + | controller_render(); |
| + | break; |
| + | case 'personal_data_id': |
| + | pd_site_render(); |
| + | break; |
| + | case 'interface_button_id': |
| + | personal_data_edit_interface_render(); |
| + | break; |
| + | } |
| + | } |
| + | |
| + | var button_save = [], |
| + | button_remove = [], |
| + | textInput = []; |
| + | |
| + | async function controller_render(){ |
| + | console.log("this function is done by the current page controller for now"); |
| + | } |
| + | |
| + | async function pd_site_render(){ |
| + | |
| + | }; |
| + | |
| + | async function personal_data_edit_interface_render(){ |
| + | clear_render(); |
| + | |
| + | // 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]; |
| + | |
| + | // 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 |
| + | |
| + | var default_value = WikibaseProcessor.checkentity( { default_value: [ WBEStructure['defaultValRelation'], WBEStructure['IDPropLoc'] ] } )['default_value'][0]; //defal |
| + | |
| + | var get_record = indexedDBobject.EnqueuePDIO('get record'); |
| + | |
| + | get_record.then( function(result) { |
| + | |
| + | mw.loader.using( 'oojs-ui-core' ).done( function () { |
| + | |
| + | button_save = [], |
| + | button_remove = [], |
| + | textInput = []; |
| + | |
| + | var extrafield = ( result[concern_origin] != undefined ) ? Object.keys(result[concern_origin]).length : 0; |
| + | |
| + | button_save[ extrafield ] = new OO.ui.ButtonWidget( { label: "Save", classes: [ 'pduimark' ] } ); |
| + | |
| + | textInput[ extrafield ] = new OO.ui.TextInputWidget( { |
| + | placeholder: default_value, |
| + | classes: [ 'pduimark' ] |
| + | } ); |
| + | |
| + | button_save[ extrafield ].on( 'click', function () { |
| + | indexedDBobject.EnqueuePDIO('update record', concern_origin, extrafield, textInput[ extrafield ].value ); |
| + | personal_data_edit_interface_render(); |
| + | }); |
| + | |
| + | $( '#mw-content-text' ).prepend( button_save[ extrafield ].$element ); |
| + | $( '#mw-content-text' ).prepend( textInput[ extrafield ].$element ); |
| + | |
| + | if ( extrafield > 0) { |
| + | Object.keys( result[concern_origin] ).forEach( function(data) { |
| + | button_save[data] = new OO.ui.ButtonWidget( { label: "Save", classes: [ 'pduimark' ] } ); |
| + | button_remove[data] = new OO.ui.ButtonWidget( { label: "Delete", classes: [ 'pduimark' ] } ); |
| + | textInput[data] = new OO.ui.TextInputWidget( { |
| + | value: result[concern_origin][data], /// |
| + | placeholder: default_value, |
| + | classes: [ 'pduimark' ] |
| + | } ); |
| + | button_save[data].on( 'click', function () { |
| + | |
| + | indexedDBobject.EnqueuePDIO('update record', concern_origin, data, textInput[ data ].value ); |
| + | |
| + | personal_data_edit_interface_render(); |
| + | }); |
| + | |
| + | button_remove[data].on( 'click', function () { |
| + | indexedDBobject.EnqueuePDIO('remove from record', concern_origin, data ); |
| + | personal_data_edit_interface_render(); |
| + | }); |
| + | $( '#mw-content-text' ).prepend( button_remove[data].$element ); |
| + | $( '#mw-content-text' ).prepend( button_save[data].$element ); |
| + | $( '#mw-content-text' ).prepend( textInput[data].$element ); |
| + | |
| + | }); |
| + | |
| + | } |
| + | }); |
| + | }); |
| + | }; |
| + | |
| + | function clear_render() { |
| + | var ifel = document.getElementsByClassName('pduimark'); |
| + | while( ifel[0] ) { |
| + | ifel[0].parentNode.removeChild(ifel[0]); |
| + | }; |
| + | }; |
| + | |
| + | } |