| Line 1: |
Line 1: |
| | console.log('_'); | | console.log('_'); |
| | + | |
| | + | // parts of structures from the wikibase entity used for our interest |
| | | | |
| | var controller_item_id = 96, | | var controller_item_id = 96, |
| − | personal_data_id = 421,
| + | personal_data_id = 421, |
| − | interface_button_id = 487,
| + | interface_button_id = 487, |
| − | wbEStruct = {
| + | language = "en"; |
| − | subclassOfRelations: 'claims.P4', // location of P4 relations in wbEntity
| + | wbEStruct = { |
| − | defaultValRelation: 'claims.P108',
| + | subclassOfRelations: 'claims.P4', // location of P4 relations in wbEntity |
| − | instanceOfRelations: 'claims.P3',
| + | defaultValRelation: 'claims.P108', |
| − | IDPropLoc: 'mainsnak.datavalue.value', // location of ID properties in related entity | + | instanceOfRelations: 'claims.P3', |
| − | IDName: 'numeric-id', // ID property name which checked
| + | IDPropLoc: 'mainsnak.datavalue.value', // location of ID properties in related entity |
| − | qIDPropName: 'id'
| + | IDName: 'numeric-id', // ID property name which checked |
| − | },
| + | qIDPropName: 'id', |
| − | mwEStruct = {
| + | standardValue: 'labels' + '.' + language + '.' + 'value'; |
| − | wbXntity: 'config.values.wbEntity'
| + | }, |
| − | };
| + | mwEStruct = { |
| | + | wbXntity: 'config.values.wbEntity' |
| | + | }; |
| | + | |
| | + | // Take username for standard databasename format |
| | + | var PersonalDataDataBaseName = "PD.IO" + mw.user.getName() + "Database"; |
| | + | // Use username in user to get up to date version of self |
| | + | var CurrentPerson = {id: 0, name: {user: mw.user.getName(), first: "", last: ""}, age: 0}; |
| | + | |
| | + | recordAdd(PersonalDataDataBaseName, CurrentPerson); |
| | + | recordUpdate(PersonalDataDataBaseName, CurrentPerson, '', value); |
| | + | recordCheck(PersonalDataDataBaseName, CurrentPerson); |
| | + | recordDeleteFrom(PersonalDataDataBaseName, CurrentPerson, ) |
| | | | |
| | // check if we are on a page of any of the targeted Entity | | // check if we are on a page of any of the targeted Entity |
| | // more exactly, use iterateAcheckBC to check in mw.config.values.wbEntity if instanceOfRelations exist, than if yes, check if numeric id of any matches controller id | | // more exactly, use iterateAcheckBC to check in mw.config.values.wbEntity if instanceOfRelations exist, than if yes, check if numeric id of any matches controller id |
| − |
| |
| − |
| |
| | if ( iterateAcheckBC(mw, mwEStruct['wbXntity'], wbEStruct['instanceOfRelations'], wbEStruct['IDPropLoc'], wbEStruct['IDName'], controller_item_id) ) { | | if ( iterateAcheckBC(mw, mwEStruct['wbXntity'], wbEStruct['instanceOfRelations'], wbEStruct['IDPropLoc'], wbEStruct['IDName'], controller_item_id) ) { |
| − | console.log("This is a Data Controller");
| + | console.log("This is a Data Controller"); |
| − | controller_display_function();
| + | controller_display_function(); |
| | } | | } |
| | | | |
| | // use iterateAcheckBC to check in mw.config.values.wbEntity if subClassOfRelations exist, than if yes, check if numeric id of any matches personal data id | | // use iterateAcheckBC to check in mw.config.values.wbEntity if subClassOfRelations exist, than if yes, check if numeric id of any matches personal data id |
| | if ( iterateAcheckBC(mw, mwEStruct['wbXntity'], wbEStruct['subclassOfRelations'], wbEStruct['IDPropLoc'], wbEStruct['IDName'], personal_data_id) ) { | | if ( iterateAcheckBC(mw, mwEStruct['wbXntity'], wbEStruct['subclassOfRelations'], wbEStruct['IDPropLoc'], wbEStruct['IDName'], personal_data_id) ) { |
| − | console.log("This is a Personal Data Type");
| + | console.log("This is a Personal Data Type"); |
| − | input_display_function();
| + | input_display_function(); |
| | } | | } |
| | | | |
| | // use iterateAcheckBC to check in mw.config.values.wbEntity if instanceOfRelations exist, than if yes, check if numeric id of any matches interface button id | | // use iterateAcheckBC to check in mw.config.values.wbEntity if instanceOfRelations exist, than if yes, check if numeric id of any matches interface button id |
| | if ( iterateAcheckBC(mw, mwEStruct['wbXntity'], wbEStruct['instanceOfRelations'], wbEStruct['IDPropLoc'], wbEStruct['IDName'], interface_button_id) ) { | | if ( iterateAcheckBC(mw, mwEStruct['wbXntity'], wbEStruct['instanceOfRelations'], wbEStruct['IDPropLoc'], wbEStruct['IDName'], interface_button_id) ) { |
| − | console.log("This is a Data Input Interface");
| + | console.log("This is a Data Input Interface"); |
| − | data_maintenance_display();
| + | data_maintenance_display(); |
| | } | | } |
| | | | |
| | // show popup from template for controllers | | // show popup from template for controllers |
| | function controller_display_function(){ | | function controller_display_function(){ |
| − | console.log( "it's a controller" )
| + | console.log( "it's a controller" ) |
| − | var obj2 = interjson( get_Y_from_X( mw, mwEStruct['wbXntity'] ) );
| + | var obj2 = interjson( get_Y_from_X( mw, mwEStruct['wbXntity'] ) ); |
| − | var qId = obj2[wbEStruct["qIDPropName"]];
| + | var qId = dive( obj2, wbEStruct["qIDPropName"] ); |
| − | var api = new mw.Api();
| + | var api = new mw.Api(); |
| − | api.get( {
| + | api.get( { |
| − | action: 'expandtemplates',
| + | action: 'expandtemplates', |
| − | text: '{{MailtoAccess|'+qId+'}}'
| + | text: '{{MailtoAccess|'+qId+'}}' |
| − | } ).done( function ( data ) {
| + | } ).done( function ( data ) { |
| − | mw.notify( $('<a href="'+data.expandtemplates["*"]+'"> Do a SAR to this data controller!</a>') , { autoHide: false } );
| + | mw.notify( $('<a href="'+data.expandtemplates["*"]+'"> Do a SAR to this data controller!</a>') , { autoHide: false } ); |
| − | } );
| + | } ); |
| | } | | } |
| | | | |
| | // show input for personal data | | // show input for personal data |
| | function input_display_function() { | | function input_display_function() { |
| − | var obj = interjson( get_Y_from_X( mw, mwEStruct['wbXntity'] ) );
| + | var obj = interjson( get_Y_from_X( mw, mwEStruct['wbXntity'] ) ); |
| − | var string_temporary_store = get_Y_from_X ( get_Y_from_X ( get_Y_from_X( obj, wbEStruct['defaultValRelation'] ), '0'), wbEStruct['IDPropLoc'] ); | + | var string_temporary_store_1 = get_Y_from_X( obj, wbEStruct['standardValue'] ); |
| − | mw.notify( $('<input type="text" placeholder="' + string_temporary_store + '" id="place_0" />'), { autoHide: false } );
| + | var string_temporary_store_2 = get_Y_from_X ( get_Y_from_X ( get_Y_from_X( obj, wbEStruct['defaultValRelation'] ), '0'), wbEStruct['IDPropLoc'] ); |
| | + | var string_temporary_store_3 = 0; |
| | + | |
| | + | mw.notify( |
| | + | $('<input type="text" placeholder="' + string_temporary_store_2 + '" id="' + string_temporary_store_1 + '_' + 0 + '" />'), { autoHide: false } ); |
| | } | | } |
| | | | |
| | // show maintenance options for personal data | | // show maintenance options for personal data |
| | function data_maintenance_display() { | | function data_maintenance_display() { |
| − | var obj = interjson( get_Y_from_X( mw, mwEStruct['wbXntity'] ) );
| + | var obj = interjson( get_Y_from_X( mw, mwEStruct['wbXntity'] ) ); // wbEntity as json obj |
| | + | var string_temporary_store_1 = get_Y_from_X( obj, wbEStruct['standardValue'] ); // input name |
| | + | var string_temporary_store_2 = get_Y_from_X ( get_Y_from_X ( get_Y_from_X( obj, wbEStruct['defaultValRelation'] ), '0'), wbEStruct['IDPropLoc'] ); //placeholder_text |
| | + | var string_temporary_store_3 = 0; //get user value & relevant object parts here |
| | + | interface_media( PersonalDataDataBaseName, CurrentPerson, string_temporary_store_1, string_temporary_store_2, string_temporary_store_3 ); |
| | } | | } |
| | | | |
| | // repeating code patterns | | // repeating code patterns |
| | + | |
| | + | function interface_media( db /* database */, prs /* user */ , rel_A /* current value location */, rel_B /* placeholder value */, rel_C /* which attribute it is in the inddb database */ ) { |
| | + | mw.loader.using( 'oojs-ui-core' ).done( function () { |
| | + | $( function () { |
| | + | |
| | + | var person = recordCheck( db, prs ); |
| | + | // var data = interjson( get_Y_from_X( mw, mwEStruct['wbXntity'] ) ); // wbEntity as json obj |
| | + | |
| | + | var button = [], |
| | + | textInput = []; |
| | + | var ii; |
| | + | for ( var i = 0 ; i < recordcheck(db, prs, rel_C).length; i++ ) { |
| | + | ii = i + 1; |
| | + | button_save[i] = new OO.ui.ButtonWidget( { label: "Save" } ); |
| | + | button_new[i] = new OO.ui.ButtonWidget( { label: "New" } ); |
| | + | button_delete[i] = new OO.ui.ButtonWidget( { label: "Delete" } ); |
| | + | textInput[i] = new OO.ui.TextInputWidget( { |
| | + | value: check( person, rel_C + '.' + i ), |
| | + | placeholder: rel_B |
| | + | } ); |
| | + | $(textInput[i]).on("keydown",function search(e) { |
| | + | if(e.keyCode == 13) { |
| | + | recordUpdate( db, prs , rel_C + '.' + i , ($(this).val()) ); |
| | + | } |
| | + | }); |
| | + | button_new[i].on( 'click', function () { |
| | + | |
| | + | // new |
| | + | recordUpdate( db, prs, rel_C + '.' + ii , ''); |
| | + | interface_media( db, prs, rel_A, rel_B, rel_C ); |
| | + | return; |
| | + | |
| | + | } ); |
| | + | button_delete[i].on( 'click', function () { |
| | + | |
| | + | // delete |
| | + | recordDeleteFrom( db, prs, rel_C + '.' + i ); |
| | + | interface_media( db, prs, rel_A, rel_B, rel_C ); |
| | + | return; |
| | + | |
| | + | } ); |
| | + | button_save[i].on( 'click', function () { |
| | + | |
| | + | // save |
| | + | recordUpdate( db, prs, rel_C + '.' + i , textInput[i].val()) ; |
| | + | interface_media( db, prs, rel_A, rel_B, rel_C ); |
| | + | return; |
| | + | |
| | + | } ); |
| | + | $( '#mw-content-text' ).prepend( button_new[i].$element ); |
| | + | $( '#mw-content-text' ).prepend( button_delete[i].$element ); |
| | + | $( '#mw-content-text' ).prepend( button_save[i].$element ); |
| | + | $( '#mw-content-text' ).prepend( textInput[i].$element ); |
| | + | $( '#mw-content-text' ).prepend( '<br>' ); |
| | + | |
| | + | } |
| | + | |
| | + | // |
| | + | /* |
| | + | |
| | + | recordCheck(PersonalDataDataBaseName, CurrentPerson); |
| | + | |
| | + | */ |
| | + | // |
| | + | |
| | + | } ); |
| | + | } ); |
| | + | } |
| | | | |
| | // get obj.'rel_0' (gets wbEntity), check if it has 'A', iterate over 'A', get 'B' and 'C' and check if any contains 'to_check'. if yes, return true | | // get obj.'rel_0' (gets wbEntity), check if it has 'A', iterate over 'A', get 'B' and 'C' and check if any contains 'to_check'. if yes, return true |
| Line 78: |
Line 166: |
| | for( var i = 0; i < current.length; i++ ) { | | for( var i = 0; i < current.length; i++ ) { |
| | console.log("dived in "); | | console.log("dived in "); |
| − | console.log(current[i]); | + | console.log(current[i]); |
| | // check if we have controller id constructed from wbEntity | | // check if we have controller id constructed from wbEntity |
| | if ( check( current[i], rel_B ) != undefined ) { | | if ( check( current[i], rel_B ) != undefined ) { |
| Line 85: |
Line 173: |
| | console.log("mark +"); | | console.log("mark +"); |
| | future = true; | | future = true; |
| − | }; | + | }; |
| | } | | } |
| | } | | } |
| Line 94: |
Line 182: |
| | } | | } |
| | | | |
| | + | // get a.b from a and b |
| | function get_Y_from_X( obj, B ){ | | function get_Y_from_X( obj, B ){ |
| − | if ( check(obj, B) !== undefined ) {
| + | if ( check(obj, B) !== undefined ) { |
| − | console.log( "entity is defined" )
| + | console.log( "entity is defined" ) |
| − | return dive(obj, B);
| + | return dive(obj, B); |
| − | }
| + | } |
| | } | | } |
| | | | |
| − | function interjson(obj) { | + | // try to convert something into JSON |
| − | try {
| + | function interjson( obj ) { |
| − | return JSON.parse( obj )
| + | try { |
| − | } catch (e) {
| + | return JSON.parse( obj ) |
| − | // if not JSON, do silly things
| + | } catch (e) { |
| − | };
| + | // if not JSON, do silly things |
| − | | + | }; |
| | } | | } |
| | | | |
| | + | //find second argument in first argument as a boolean |
| | function check_Y_in_X(obj, to_check){ | | function check_Y_in_X(obj, to_check){ |
| − | if (obj === to_check) { return true };
| + | if (obj === to_check) { return true }; |
| | for (var i = 0; i < obj.length; i++ ){ | | for (var i = 0; i < obj.length; i++ ){ |
| − | if (obj[i] === to_check) { return true };
| + | if (obj[i] === to_check) { return true }; |
| − | }
| + | } |
| − | return false;
| + | return false; |
| | } | | } |
| | | | |
| Line 124: |
Line 214: |
| | // if a.b.c.d does not exists, it returns the substructure until the substructure exists, if d does not exist, it returns matrix.a.b.c e.g. | | // if a.b.c.d does not exists, it returns the substructure until the substructure exists, if d does not exist, it returns matrix.a.b.c e.g. |
| | function dive(array, read){ | | function dive(array, read){ |
| − | return read.split('.').reduce(indexinterpolate, array);
| + | return read.split('.').reduce(indexinterpolate, array); |
| | } | | } |
| | function check(array, read){ | | function check(array, read){ |
| − | return read.split('.').reduce(indexcheck, array);
| + | return read.split('.').reduce(indexcheck, array); |
| | } | | } |
| | | | |
| | // ADD MORE DOC | | // ADD MORE DOC |
| − | | + | // Add new record (create pddbname@record) if it does not exist. |
| − | var PersonalDataDataBaseName = "PDIO3";
| + | // If it exists, the contents of record are disregarded, and the indexeddb version is returned |
| − | var Jonathan = {id: 11345, name: {first: "Jonatha", last: "Lemmings"}, age: 32};
| |
| − | | |
| − | recordAdd(PersonalDataDataBaseName, Jonathan);
| |
| − | recordUpdate(PersonalDataDataBaseName, Jonathan, 'phone', '+313851777');
| |
| − | recordCheck(PersonalDataDataBaseName, Jonathan);
| |
| | | | |
| | function recordAdd(pddbname, record){ | | function recordAdd(pddbname, record){ |
| Line 144: |
Line 229: |
| | var db = pddb.result; | | var db = pddb.result; |
| | var store = db.createObjectStore(PersonalDataDataBaseName, {keyPath: "id"}); | | var store = db.createObjectStore(PersonalDataDataBaseName, {keyPath: "id"}); |
| | + | |
| | // shouldn't the index be the wiki.personaldata.io username? | | // shouldn't the index be the wiki.personaldata.io username? |
| − | var index = store.createIndex("NameIndex", ["name.last", "name.first"]); | + | |
| − | }; | + | var index = store.createIndex("NameIndex", ["name.user"]); |
| − | pddb.onsuccess = function() { | + | }; |
| − | var db = pddb.result;
| + | pddb.onsuccess = function() { |
| − | var tx = db.transaction(PersonalDataDataBaseName, "readwrite");
| + | var db = pddb.result; |
| − | var store = tx.objectStore(PersonalDataDataBaseName);
| + | var tx = db.transaction(PersonalDataDataBaseName, "readwrite"); |
| − | var index = store.index("NameIndex");
| + | var store = tx.objectStore(PersonalDataDataBaseName); |
| − | //||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||[ Essential recordAdd ]|||||||||||||||||||||||||||||| | + | var index = store.index("NameIndex"); |
| − | var getRecord = index.get([record.name.last, record.name.first]); | + | |
| − | getRecord.onsuccess = function() { | + | //||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||[ Essential recordAdd ]|||||||||||||||||||||||||||||| |
| − | if (getRecord.result != undefined) {
| + | |
| − | console.log("updating");
| + | // Get the original record from the db... |
| − | inp_obj = getRecord.result;
| + | var getRecord = index.get([record.name.user]); |
| − | } else {
| + | getRecord.onsuccess = function() { |
| − | inp_obj = record;
| + | if (getRecord.result != undefined) { |
| − | store.put(inp_obj);
| + | // if found, let's use that from now on |
| − | }
| + | console.log("updating"); |
| − | var sanitycheck = index.get([inp_obj.name.last, inp_obj.name.first]);
| + | inp_obj = getRecord.result; |
| − | sanitycheck.onsuccess = function() {
| + | // let's return it so that our addrecord can be used as a getter as well |
| − | console.log(sanitycheck);
| + | return inp_obj; |
| − | }
| + | } else { |
| − | } | + | // if it didn't exist, let's use the provided record to push to store |
| | + | inp_obj = record; |
| | + | store.put(inp_obj); |
| | + | } |
| | + | var sanitycheck = index.get([inp_obj.name.user]); |
| | + | sanitycheck.onsuccess = function() { |
| | + | console.log(sanitycheck); |
| | + | } |
| | + | } |
| | + | |
| | //||||||||||||||||||||||||||||||||||||||||||||| | | //||||||||||||||||||||||||||||||||||||||||||||| |
| | + | |
| | tx.oncomplete = function() { | | tx.oncomplete = function() { |
| | db.close(); | | db.close(); |
| Line 174: |
Line 270: |
| | }; | | }; |
| | | | |
| − | function recordUpdate(pddbname, record, field, value){ | + | // Update pddbname@record:field value |
| | + | // Use store copy if exists |
| | + | // If record does not exist, create it |
| | + | // Otherwise all other fields of the record object are disregarded |
| | + | function recordUpdate( pddbname, record, field, value ) { |
| | + | |
| | var pddb = window.indexedDB.open(pddbname, 3); | | var pddb = window.indexedDB.open(pddbname, 3); |
| | pddb.onupgradeneeded = function() { | | pddb.onupgradeneeded = function() { |
| | var db = pddb.result; | | var db = pddb.result; |
| | var store = db.createObjectStore(PersonalDataDataBaseName, {keyPath: "id"}); | | var store = db.createObjectStore(PersonalDataDataBaseName, {keyPath: "id"}); |
| − | var index = store.createIndex("NameIndex", ["name.last", "name.first"]); | + | var index = store.createIndex("NameIndex", ["name.user"]); |
| | }; | | }; |
| | pddb.onsuccess = function() { | | pddb.onsuccess = function() { |
| Line 187: |
Line 288: |
| | var store = tx.objectStore(PersonalDataDataBaseName); | | var store = tx.objectStore(PersonalDataDataBaseName); |
| | var index = store.index("NameIndex"); | | var index = store.index("NameIndex"); |
| | + | |
| | //||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||[ Essential recordUpdate ]|||||||||||||||||||||||||||||| | | //||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||[ Essential recordUpdate ]|||||||||||||||||||||||||||||| |
| − | var inp_obj;
| |
| − | var getRecord = index.get([record.name.last, record.name.first]);
| |
| − | getRecord.onsuccess = function() {
| |
| − | if( getRecord.result != undefined ) {
| |
| − | console.log("updating");
| |
| − | inp_obj = getRecord.result;
| |
| − | } else {
| |
| − | inp_obj = record;
| |
| − | }
| |
| | | | |
| − | inp_obj[field] = value; // => "Bob" | + | var inp_obj; |
| − | store.put(inp_obj);
| + | var getRecord = index.get([record.name.user]); |
| | + | // let's try to get the record to be updated from the store |
| | + | getRecord.onsuccess = function() { |
| | + | if( getRecord.result != undefined ) { |
| | + | // if we have it, use that copy to update on |
| | + | console.log("updating"); |
| | + | inp_obj = getRecord.result; |
| | + | } else { |
| | + | // if it does not exist in store, use the given record |
| | + | inp_obj = record; |
| | + | } |
| | + | //give the value to the field to update |
| | + | inp_obj[field] = value; // => "Bob" |
| | + | // write new version of record back to database |
| | + | store.put(inp_obj); |
| | + | |
| | + | |
| | + | // perform a sanity check if the update was successful, could be used to initiate a retry upon false |
| | + | getRecordAgain = index.get([record.name.user]); |
| | + | getRecordAgain.onsuccess = function() { |
| | + | console.log(getRecordAgain); // => "Bob" |
| | + | if ( getRecordAgain.result[field] == value ) { |
| | + | console.log("Update succeeded"); |
| | + | } else { |
| | + | console.log("Update unsuccessful"); |
| | + | } |
| | + | }; |
| | + | }; |
| | | | |
| − | getRecordAgain = index.get([record.name.last, record.name.first]);
| |
| − | getRecordAgain.onsuccess = function() {
| |
| − | console.log(getRecordAgain); // => "Bob"
| |
| − | if ( getRecordAgain.result[field] == value ) {
| |
| − | console.log("Update succeeded");
| |
| − | } else {
| |
| − | console.log("Update unsuccessful");
| |
| − | }
| |
| − | };
| |
| − | };
| |
| | //|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| | | //|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| |
| − | tx.oncomplete = function() { | + | tx.oncomplete = function() { |
| − | db.close();
| + | db.close(); |
| − | }; | + | }; |
| − | }; | + | }; |
| | }; | | }; |
| | + | |
| | | | |
| | function recordCheck(pddbname, record){ | | function recordCheck(pddbname, record){ |
| Line 223: |
Line 334: |
| | var db = pddb.result; | | var db = pddb.result; |
| | var store = db.createObjectStore(PersonalDataDataBaseName, {keyPath: "id"}); | | var store = db.createObjectStore(PersonalDataDataBaseName, {keyPath: "id"}); |
| − | var index = store.createIndex("NameIndex", ["name.last", "name.first"]); | + | var index = store.createIndex("NameIndex", ["name.user"]); |
| | }; | | }; |
| | pddb.onsuccess = function() { | | pddb.onsuccess = function() { |
| Line 230: |
Line 341: |
| | var store = tx.objectStore(PersonalDataDataBaseName); | | var store = tx.objectStore(PersonalDataDataBaseName); |
| | var index = store.index("NameIndex"); | | var index = store.index("NameIndex"); |
| | + | |
| | //||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||[ Essential recordCheck ]|||||||||||||| | | //||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||[ Essential recordCheck ]|||||||||||||| |
| − | var recordcheck = index.get([record.name.last, record.name.first]); | + | |
| − | recordcheck.onsuccess = function() { | + | var recordcheck = index.get([record.name.user]); |
| − | if ( recordcheck.result != undefined ) {
| + | recordcheck.onsuccess = function() { |
| − | console.log(recordcheck);
| + | if ( recordcheck.result != undefined ) { |
| − | } else {
| + | console.log(recordcheck); |
| − | console.log("...else undefined");
| + | return recordCheck; |
| − | }
| + | } else { |
| | + | console.log("...else undefined"); |
| | + | return undefined; |
| | + | }; |
| | + | }; |
| | + | |
| | //|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| | | //|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| |
| − | }
| + | |
| − | tx.oncomplete = function() { | + | tx.oncomplete = function() { |
| − | db.close();
| + | db.close(); |
| − | }; | + | }; |
| | + | }; |
| | }; | | }; |
| | + | |
| | + | function recordDeleteFrom(pddbname, record, field ){ |
| | + | var pddb = window.indexedDB.open(pddbname, 3); |
| | + | pddb.onupgradeneeded = function() { |
| | + | var db = pddb.result; |
| | + | var store = db.createObjectStore(PersonalDataDataBaseName, {keyPath: "id"}); |
| | + | var index = store.createIndex("NameIndex", ["name.user"]); |
| | + | }; |
| | + | pddb.onsuccess = function() { |
| | + | var db = pddb.result; |
| | + | var tx = db.transaction(PersonalDataDataBaseName, "readwrite"); |
| | + | var store = tx.objectStore(PersonalDataDataBaseName); |
| | + | var index = store.index("NameIndex"); |
| | + | |
| | + | //||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||[ Essential recordCheck ]|||||||||||||| |
| | + | |
| | + | var inp_obj; |
| | + | var recordcheck = index.get([record.name.user]); |
| | + | recordcheck.onsuccess = function() { |
| | + | if ( recordcheck.result != undefined ) { |
| | + | console.log("updating"); |
| | + | inp_obj = recordcheck.result; |
| | + | } else { |
| | + | inp_obj = record; |
| | + | } |
| | + | delete check( inp_obj, field ); // => "Bob" |
| | + | store.put(inp_obj); |
| | + | } |
| | + | |
| | + | //|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| |
| | + | |
| | + | tx.oncomplete = function() { |
| | + | db.close(); |
| | + | }; |
| | + | }; |
| | }; | | }; |