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(); } } };