diff --git a/main.cpp b/main.cpp index 520f6ac..3a3db9a 100644 --- a/main.cpp +++ b/main.cpp @@ -37,45 +37,14 @@ int main() { return 1; } - - // get the current blockchain height. Just to check if it reads ok. - uint64_t height = core_storage->get_current_blockchain_height() - 1; - - fmt::print("\n\n" - "Top block height : {:d}\n", height); - - - xmreg::page xmrblocks; - - std::string view = xmrblocks.index(); - - mstch::map context { - {"height", fmt::format("{:d}", height)}, - {"blocks", mstch::array()} - }; - - size_t no_of_last_blocks {50}; - - mstch::array& blocks = boost::get(context["blocks"]); - - for (size_t i = height; i > height - no_of_last_blocks; --i) - { - //cryptonote::block blk; - //core_storage.get_block_by_hash(block_id, blk); - - crypto::hash blk_hash = core_storage->get_block_id_by_height(i); - blocks.push_back(mstch::map { - {"height", to_string(i)}, - {"hash" , fmt::format("{:s}", blk_hash)} - }); - } + xmreg::page xmrblocks(&mcore, core_storage); crow::SimpleApp app; CROW_ROUTE(app, "/") ([&]() { - return mstch::render(view, context); + return xmrblocks.index(); }); app.port(8080).multithreaded().run(); diff --git a/src/page.h b/src/page.h index 86f6c29..34aca0b 100644 --- a/src/page.h +++ b/src/page.h @@ -7,34 +7,93 @@ -#include "../ext/minicsv.h" +#include "mstch/mstch.hpp" +#include "../ext/format.h" + + + #include "monero_headers.h" + +#include "MicroCore.h" #include "tools.h" -#define TMPL_DIR "./templates" -#define TMPL_INDEX TMPL_DIR "/index.html" +#define TMPL_DIR "./templates" +#define TMPL_INDEX TMPL_DIR "/index.html" +#define TMPL_HEADER TMPL_DIR "/header.html" +#define TMPL_FOOTER TMPL_DIR "/footer.html" #define READ_TMPL(tmpl_path) xmreg::read(tmpl_path) namespace xmreg { + using namespace cryptonote; + using namespace crypto; + using namespace std; class page { + + MicroCore* mcore; + Blockchain* core_storage; + public: + page(MicroCore* _mcore, Blockchain* _core_storage) + : mcore {_mcore}, core_storage {_core_storage} + { + + } + string index() { + // get the current blockchain height. Just to check if it reads ok. + uint64_t height = core_storage->get_current_blockchain_height() - 1; + + mstch::map context { + {"height", fmt::format("{:d}", height)}, + {"blocks", mstch::array()} + }; + + size_t no_of_last_blocks {50}; + + mstch::array& blocks = boost::get(context["blocks"]); + + for (size_t i = height; i > height - no_of_last_blocks; --i) + { + block blk; + + mcore->get_block_by_height(i, blk); + + crypto::hash blk_hash = core_storage->get_block_id_by_height(i); + + blocks.push_back(mstch::map { + {"height" , to_string(i)}, + {"timestamp" , xmreg::timestamp_to_str(blk.timestamp)}, + {"hash" , fmt::format("{:s}", blk_hash)}, + {"notx" , fmt::format("{:d}", blk.tx_hashes.size())} + }); + } + + std::string view = READ_TMPL(TMPL_INDEX); - return view; + string full_page = get_full_page(view); + + return mstch::render(view, context); } private: + string + get_full_page(string& middle) + { + return READ_TMPL(TMPL_HEADER) + + middle + + READ_TMPL(TMPL_FOOTER); + } }; } diff --git a/src/templates/footer.html b/src/templates/footer.html new file mode 100644 index 0000000..17c7245 --- /dev/null +++ b/src/templates/footer.html @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/templates/header.html b/src/templates/header.html new file mode 100644 index 0000000..306a76f --- /dev/null +++ b/src/templates/header.html @@ -0,0 +1,8 @@ + + + + + Monero blocks + + +
\ No newline at end of file diff --git a/src/templates/index.html b/src/templates/index.html index 03b5e94..7f12675 100644 --- a/src/templates/index.html +++ b/src/templates/index.html @@ -1,21 +1,19 @@ - - - - - Monero blocks - - -
-

Detailed Monero blockchain explorer

+ +

Hidden Monero blockchain explorer

Current height: {{height}}

    - {{#blocks}} -
  • {{height}}: {{hash}}
  • - {{/blocks}} + + {{#blocks}} + + + + + + + {{/blocks}} +
    {{height}}{{timestamp}}{{hash}}{{notx}}
    +
-
- - \ No newline at end of file