var cdb = null;
function login( no_ui ){
var username = $('#db_username').val();
var password = $('#db_password').val();
var base_url = $('#db_base_url').val();
cdb = new CouchDB_CRUD_SDK( username, password, base_url );
cdb.readAllDbs().then( function( r ){
if( r && r.status ){
var dbs = r.result;
//.console.log( {dbs} );
if( dbs.length >= 0 ){
$('#nav-bar').css( 'display', 'none' );
if( !no_ui ){
var dbs_list = '
'
+ '| '
+ ''
+ ''
+ ' |
';
for( var i = 0; i < dbs.length; i ++ ){
dbs_list += '| ' + dbs[i] + ' |
';
}
dbs_list += '
';
$('#dbs_list').html( dbs_list );
}
}
}else{
if( !no_ui ){
$('#dbs_list').html( '' );
}
}
});
}
function reload_db(){
$('#dbs_list').html( '' );
$('#docs_list').html( '' );
login();
}
async function create_db(){
var dbname = prompt( '新たに追加するデータベース名を入力してください', '' );
if( dbname ){
var r = await cdb.createDb( dbname ); //. { ok: true }
if( r && r.status ){
reload_db();
}
}
}
async function delete_db( db ){
if( confirm( 'データベース: '+ db + 'を本当に削除しますか?' ) ){
var r = await cdb.deleteDb( db ); //. { ok: true }
if( r && r.status ){
reload_db();
}
}
}
async function create_doc( db ){
var sample_json = { name: 'name' };
var textarea_html = JSON.stringify( sample_json, null, 2 );
$('#editModalLabel').html( db + ' - createDoc' );
$('#editModal_textarea').html( textarea_html );
$('#editModal').modal();
}
async function get_docs( db ){
$('.dbname').removeClass( 'selected' );
$('.dbname-' + db).addClass( 'selected' );
var r = await cdb.readAllDocs( db );
if( r && r.status ){
var docs = r.result;
var docs_list = ''
+ ''
+ ''
+ '| _id | '
+ ''
+ ''
+ ''
+ ' | '
+ '
'
+ ''
+ '';
for( var i = 0; i < docs.length; i ++ ){
docs_list += ''
+ '| ' + docs[i]._id + ' | '
+ ''
+ ''
+ ''
+ ''
+ ' | '
+ '
';
//console.log( docs[i] );
}
docs_list += '
';
$('#docs_list').html( docs_list );
//. #14
$('#docs_table').DataTable({
language: {
url: 'https://cdn.datatables.net/plug-ins/9dcbecd42ad/i18n/Japanese.json' //. always https
},
columnDefs: [{
targets: [ 1 ],
orderable: false,
searchable: false
}]
});
}
}
async function get_doc( db, doc_id ){
var r = await cdb.readDoc( db, doc_id );
if( r && r.status ){
var doc = r.result;
var body = ''
+ cdb.sanitize( JSON.stringify( doc, null, 2 ) )
+ '';
$('#docModalLabel').html( db + ' - ' + doc_id + ' - readDoc' );
$('#docmodal-body').html( body );
$('#docModal').modal();
}
}
async function edit_doc( db, doc_id ){
var r = await cdb.readDoc( db, doc_id );
if( r && r.status ){
var doc = r.result;
var textarea_html = JSON.stringify( doc, null, 2 );
$('#editModalLabel').html( db + ' - ' + doc._id + ' - updateDoc' );
$('#editModal_textarea').html( textarea_html );
$('#editModal').modal();
}
}
async function delete_doc( db, doc_id, doc_rev ){
if( confirm( 'データベース: ' + db + ' から _id = ' + doc_id + ', _rev = ' + doc_rev + ' のドキュメントを本当に削除しますか?' ) ){
var r = await cdb.deleteDoc( db, doc_id, doc_rev ); //. { ok: true }
get_docs( db );
}
}
$(function(){
});
//. 編集モーダルを閉じた時
function save_doc(){
var modal_label = $('#editModalLabel').html();
var doc_json = JSON.parse( $('#editModal_textarea').val() );
var tmp = modal_label.split( ' - ' );
if( tmp.length == 2 && tmp[1] == "createDoc" ){
cdb.createDoc( tmp[0], doc_json ).then( function( r ){
$('#editModal').modal( 'hide' );
get_docs( tmp[0] );
});
}else if( tmp.length == 3 && tmp[2] == "updateDoc" ){
cdb.updateDoc( tmp[0], tmp[1], doc_json ).then( function( r ){
$('#editModal').modal( 'hide' );
get_docs( tmp[0] );
});
}
}