class Data_Meta
{
constructor( $size, $key )
{
this.$index = 0 ;
this.$size = $size??0 ;
this.$key = $key??null ;
}
}
class module_Data
{
$BANK = {} ;
$META = {} ;
$current_bank = null ;
$loading = 0 ;
Dispose()
{
}
IsReady()
{
return this.$loading == 0 ;
}
Load( $bank )
{
var $url = "?data/" + µB.CONFIG.user + "/" + µB.CONFIG.pid + "/" + $bank ;
var $ID = { 'bank':$bank, 'user':µB.CONFIG.user, 'pid':µB.CONFIG.pid };
this.$BANK[$bank] = {} ;
this.$loading ++ ;
$Core.$Modem.Direct( $url, $ID, true ) ;
}
Get( $CONFIRM, $DATA )
{
if( $CONFIRM.user == µB.CONFIG.user && $CONFIRM.pid == µB.CONFIG.pid )
{
var $bank = $CONFIRM.bank ;
this.$current_bank = $bank ;
var $first_key = null;
for( var $key in $DATA )
{ $first_key = $key;
break;
}
this.$BANK[$bank] = {};
this.$META[$bank] = new Data_Meta(0,$first_key) ;
for( var $key in $DATA )
{
var $X = $DATA[$key].split(",") ;
for( var $i in $X )
{ $X[$i] *= 1 ;
}
this.$BANK[$bank][$key] = $X;
this.$META[$bank][$key] = new Data_Meta( $X.length,null ) ;
}
this.$loading -- ;
}
}
create_data( $bank )
{
if( this.$BANK[$bank] )
{
this.$current_bank = $bank ;
}
else
{
var $key = 1 ;
this.$BANK[$bank] = {} ;
this.$META[$bank] = new Data_Meta(0,$key) ;
this.$BANK[$bank][$key] = [];
this.$META[$bank][$key] = new Data_Meta() ;
this.$current_bank = $bank ;
}
}
data_load( $bank )
{
if( this.$BANK[$bank] )
{
this.$current_bank = $bank ;
}
else
{
this.Load( $bank );
}
}
data_key( $key )
{
if( this.$META[this.$current_bank] )
{ this.$META[this.$current_bank].$key = $key ;
if( ! this.$BANK[this.$current_bank][$key] )
{
this.$BANK[this.$current_bank][$key] = [] ;
this.$META[this.$current_bank][$key] = new Data_Meta() ;
}
}
}
data_reset()
{
if( this.$current_bank )
{ var $key = this.$META[this.$current_bank].$key ;
this.$META[this.$current_bank][$key].$index = 0 ;
}
}
data_reset_to( $index )
{
if( this.$current_bank )
{ var $key = this.$META[this.$current_bank].$key ;
this.$META[this.$current_bank][$key].$index = $index*1 ;
}
}
data_read()
{
var $value = 0;
if( this.$current_bank )
{
var $bank = this.$current_bank;
var $key = this.$META[$bank].$key ;
var $index = this.$META[$bank][$key].$index ;
var $value = this.$BANK[$bank][$key][$index]??0 ;
this.$META[this.$current_bank][$key].$index ++ ;
}
return $value ;
}
data_add( ...$ITEMS )
{
if( this.$current_bank )
{
var $bank = this.$current_bank;
var $key = this.$META[$bank].$key ;
for( const $data of $ITEMS )
{
this.$BANK[$bank][$key].push($data);
this.$META[$bank][$key].$size ++ ;
}
}
}
data_size()
{
var $size = 0 ;
if( this.$current_bank )
{
var $bank = this.$current_bank;
var $key = this.$META[$bank].$key ;
$size = this.$META[$bank][$key].$size ;
}
return $size ;
}
data_flush()
{
if( this.$current_bank )
{
var $bank = this.$current_bank;
var $key = this.$META[$bank].$key ;
this.$BANK[$bank][$key] = [];
this.$META[$bank][$key] = new Data_Meta();
}
}
};