forked from lthn/blockchain
Merge branch 'develop' into develop_mobile
This commit is contained in:
commit
e65d2ab333
132 changed files with 2148 additions and 1091 deletions
2
.gitmodules
vendored
2
.gitmodules
vendored
|
|
@ -1,6 +1,6 @@
|
|||
[submodule "contrib/miniupnp"]
|
||||
path = contrib/miniupnp
|
||||
url = https://github.com/miniupnp/miniupnp
|
||||
[submodule "contrib\\db\\libmdbx"]
|
||||
[submodule "contrib/db/libmdbx"]
|
||||
path = contrib/db/libmdbx
|
||||
url = https://github.com/leo-yuriev/libmdbx.git
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ Be sure to properly clone the repository:
|
|||
|--|--|--|--|
|
||||
| gcc (Linux) | 5.4.0 | 7.2.0 | 8.3.0 |
|
||||
| llvm/clang (Linux) | UNKNOWN | 7.0.1 | 8.0.0 |
|
||||
| [MSVC](https://visualstudio.microsoft.com/downloads/) (Windows) | 2015 (14.0 update 1) | 2015 (14.0 update 3) | 2017 (15.5.7) |
|
||||
| [MSVC](https://visualstudio.microsoft.com/downloads/) (Windows) | 2015 (14.0 update 1) | 2017 (15.5.7) | 2019 |
|
||||
| [XCode](https://developer.apple.com/downloads/) (macOS) | 7.3.1 | 9.2 | 9.2 |
|
||||
| [CMake](https://cmake.org/download/) | 2.8.6 | 3.15.5 | 3.15.5 |
|
||||
| [Boost](https://www.boost.org/users/download/) | 1.56 | 1.68 | 1.68 |
|
||||
|
|
|
|||
|
|
@ -132,8 +132,10 @@ extern int cacheflush(char *addr, int nbytes, int cache);
|
|||
|
||||
#ifdef _WIN32
|
||||
typedef int64_t off64_t;
|
||||
#else
|
||||
#elif __APPLE__
|
||||
typedef off_t off64_t;
|
||||
#else
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
|
|
|||
75
snap/snapcraft.yaml
Normal file
75
snap/snapcraft.yaml
Normal file
|
|
@ -0,0 +1,75 @@
|
|||
name: zano
|
||||
base: core18
|
||||
adopt-info: zano
|
||||
summary: "Zano coin: official wallet. Secure. Scalable. Easy to Use."
|
||||
description: |
|
||||
Zano is a scalable and secure coin, designed for use in e-commerce.
|
||||
The technology behind our blockchain provides reliability, security,
|
||||
and flexibility a perfect option for P2P transactions.
|
||||
More info: http://zano.org
|
||||
grade: stable
|
||||
confinement: strict
|
||||
|
||||
architectures:
|
||||
- build-on: amd64
|
||||
- build-on: i386
|
||||
|
||||
parts:
|
||||
zano:
|
||||
source: https://github.com/hyle-team/zano.git
|
||||
plugin: cmake
|
||||
override-pull: |
|
||||
snapcraftctl pull
|
||||
snapcraftctl set-version "$(git describe)"
|
||||
configflags:
|
||||
- -DBUILD_GUI=TRUE
|
||||
override-build: |
|
||||
snapcraftctl build
|
||||
mkdir -p $SNAPCRAFT_PART_INSTALL/opt/Zano
|
||||
cp $SNAPCRAFT_PART_BUILD/src/Zano $SNAPCRAFT_PART_INSTALL/opt/Zano/
|
||||
cp $SNAPCRAFT_PART_BUILD/src/simplewallet $SNAPCRAFT_PART_INSTALL/opt/Zano/
|
||||
cp $SNAPCRAFT_PART_BUILD/src/zanod $SNAPCRAFT_PART_INSTALL/opt/Zano/
|
||||
rsync -a $SNAPCRAFT_PART_SRC/src/gui/qt-daemon/html $SNAPCRAFT_PART_INSTALL/opt/Zano --exclude less --exclude package.json --exclude gulpfile.js
|
||||
build-packages:
|
||||
- make
|
||||
- g++
|
||||
- libboost-all-dev
|
||||
- qtwebengine5-dev
|
||||
- rsync
|
||||
build-attributes: [keep-execstack]
|
||||
stage-packages:
|
||||
- libboost-system1.65.1
|
||||
- libboost-filesystem1.65.1
|
||||
- libboost-thread1.65.1
|
||||
- libboost-date-time1.65.1
|
||||
- libboost-chrono1.65.1
|
||||
- libboost-regex1.65.1
|
||||
- libboost-serialization1.65.1
|
||||
- libboost-program-options1.65.1
|
||||
- libboost-locale1.65.1
|
||||
|
||||
apps:
|
||||
zano:
|
||||
command: opt/Zano/Zano --data-dir $SNAP_USER_COMMON
|
||||
extensions:
|
||||
- kde-neon
|
||||
plugs:
|
||||
- network
|
||||
- home
|
||||
- desktop
|
||||
- opengl #for QML support
|
||||
- browser-support #for Qt WebEngine support
|
||||
- audio-playback
|
||||
- unity7 #for tray icon support
|
||||
simplewallet:
|
||||
command: opt/Zano/simplewallet
|
||||
plugs:
|
||||
- network
|
||||
- home
|
||||
zanod:
|
||||
command: opt/Zano/zanod --data-dir $SNAP_USER_COMMON
|
||||
environment:
|
||||
LC_ALL: C
|
||||
plugs:
|
||||
- network
|
||||
- network-bind
|
||||
|
|
@ -14,6 +14,7 @@ MACRO(INIT_SHARED_PCH)
|
|||
IF(MSVC)
|
||||
set_property(SOURCE "pch/stdafx.cpp" APPEND_STRING PROPERTY COMPILE_FLAGS " /Fo$(OutDir) /Z7 /Fd$(OutDir)vc$(PlatformToolsetVersion).pdb /Ycstdafx.h /Fp$(TargetDir)pch.pch")
|
||||
ELSEIF(APPLE OR CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
target_precompile_headers(pch PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/pch/stdafx.h")
|
||||
ENDIF()
|
||||
ENDIF(USE_PCH)
|
||||
|
|
@ -75,6 +76,7 @@ if(BUILD_GUI)
|
|||
else()
|
||||
file(GLOB_RECURSE QTDAEMON gui/qt-daemon/*.cpp gui/qt-daemon/*.h)
|
||||
endif()
|
||||
list(FILTER QTDAEMON EXCLUDE REGEX "node_modules")
|
||||
endif()
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -37,5 +37,5 @@
|
|||
#define API_RETURN_CODE_GENESIS_MISMATCH "GENESIS_MISMATCH"
|
||||
#define API_RETURN_CODE_DISCONNECTED "DISCONNECTED"
|
||||
#define API_RETURN_CODE_UNINITIALIZED "UNINITIALIZED"
|
||||
|
||||
|
||||
#define API_RETURN_CODE_TX_IS_TOO_BIG "TX_IS_TOO_BIG"
|
||||
#define API_RETURN_CODE_TX_REJECTED "TX_REJECTED"
|
||||
|
|
|
|||
|
|
@ -508,7 +508,7 @@ namespace currency
|
|||
END_SERIALIZE()
|
||||
};
|
||||
|
||||
struct etc_tx_uint16_t
|
||||
struct etc_tx_flags16_t
|
||||
{
|
||||
uint16_t v;
|
||||
BEGIN_SERIALIZE()
|
||||
|
|
@ -518,7 +518,7 @@ namespace currency
|
|||
|
||||
typedef boost::mpl::vector21<
|
||||
tx_service_attachment, tx_comment, tx_payer_old, tx_receiver_old, tx_derivation_hint, std::string, tx_crypto_checksum, etc_tx_time, etc_tx_details_unlock_time, etc_tx_details_expiration_time,
|
||||
etc_tx_details_flags, crypto::public_key, extra_attachment_info, extra_alias_entry_old, extra_user_data, extra_padding, etc_tx_uint16_t, etc_tx_details_unlock_time2,
|
||||
etc_tx_details_flags, crypto::public_key, extra_attachment_info, extra_alias_entry_old, extra_user_data, extra_padding, etc_tx_flags16_t, etc_tx_details_unlock_time2,
|
||||
tx_payer, tx_receiver, extra_alias_entry
|
||||
> all_payload_types;
|
||||
|
||||
|
|
@ -749,7 +749,7 @@ SET_VARIANT_TAGS(currency::extra_user_data, 19, "user_data");
|
|||
SET_VARIANT_TAGS(currency::extra_alias_entry_old, 20, "alias_entry");
|
||||
SET_VARIANT_TAGS(currency::extra_padding, 21, "extra_padding");
|
||||
SET_VARIANT_TAGS(crypto::public_key, 22, "pub_key");
|
||||
SET_VARIANT_TAGS(currency::etc_tx_uint16_t, 23, "etc_tx_uint16");
|
||||
SET_VARIANT_TAGS(currency::etc_tx_flags16_t, 23, "etc_tx_flags16");
|
||||
SET_VARIANT_TAGS(uint16_t, 24, "derive_xor");
|
||||
//txout_v
|
||||
SET_VARIANT_TAGS(currency::ref_by_id, 25, "ref_by_id");
|
||||
|
|
|
|||
|
|
@ -252,7 +252,7 @@ namespace boost
|
|||
}
|
||||
|
||||
template <class Archive>
|
||||
inline void serialize(Archive &a, currency::etc_tx_uint16_t&at, const boost::serialization::version_type ver)
|
||||
inline void serialize(Archive &a, currency::etc_tx_flags16_t&at, const boost::serialization::version_type ver)
|
||||
{
|
||||
a & at.v;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -221,7 +221,7 @@
|
|||
#define BC_OFFERS_CURRENCY_MARKET_FILENAME "market.bin"
|
||||
|
||||
|
||||
#define WALLET_FILE_SERIALIZATION_VERSION (CURRENCY_FORMATION_VERSION+67)
|
||||
#define WALLET_FILE_SERIALIZATION_VERSION (CURRENCY_FORMATION_VERSION+68)
|
||||
|
||||
|
||||
#define CURRENT_MEMPOOL_ARCHIVE_VER (CURRENCY_FORMATION_VERSION+31)
|
||||
|
|
|
|||
|
|
@ -710,6 +710,16 @@ namespace currency
|
|||
crypto::chacha_crypt(m.acc_addr, m_key);
|
||||
m_was_crypted_entries = true;
|
||||
}
|
||||
void operator()(tx_payer_old& pr)
|
||||
{
|
||||
crypto::chacha_crypt(pr.acc_addr, m_key);
|
||||
m_was_crypted_entries = true;
|
||||
}
|
||||
void operator()(tx_receiver_old& m)
|
||||
{
|
||||
crypto::chacha_crypt(m.acc_addr, m_key);
|
||||
m_was_crypted_entries = true;
|
||||
}
|
||||
void operator()(tx_service_attachment& sa)
|
||||
{
|
||||
if (sa.flags&TX_SERVICE_ATTACHMENT_DEFLATE_BODY)
|
||||
|
|
@ -772,7 +782,18 @@ namespace currency
|
|||
crypto::chacha_crypt(receiver_local.acc_addr, rkey);
|
||||
rdecrypted_att.push_back(receiver_local);
|
||||
}
|
||||
|
||||
void operator()(const tx_payer_old& pr)
|
||||
{
|
||||
tx_payer_old payer_local = pr;
|
||||
crypto::chacha_crypt(payer_local.acc_addr, rkey);
|
||||
rdecrypted_att.push_back(payer_local);
|
||||
}
|
||||
void operator()(const tx_receiver_old& pr)
|
||||
{
|
||||
tx_receiver_old receiver_local = pr;
|
||||
crypto::chacha_crypt(receiver_local.acc_addr, rkey);
|
||||
rdecrypted_att.push_back(receiver_local);
|
||||
}
|
||||
template<typename attachment_t>
|
||||
void operator()(const attachment_t& att)
|
||||
{
|
||||
|
|
@ -1049,6 +1070,11 @@ namespace currency
|
|||
add_tx_pub_key_to_extra(tx, txkey.pub);
|
||||
one_time_secret_key = txkey.sec;
|
||||
|
||||
//add flags
|
||||
etc_tx_flags16_t e = AUTO_VAL_INIT(e);
|
||||
//todo: add some flags here
|
||||
update_or_add_field_to_extra(tx.extra, e);
|
||||
|
||||
//include offers if need
|
||||
tx.attachment = attachments;
|
||||
encrypt_attachments(tx, sender_account_keys, crypt_destination_addr, txkey);
|
||||
|
|
@ -2316,18 +2342,15 @@ namespace currency
|
|||
|
||||
return true;
|
||||
}
|
||||
bool operator()(const etc_tx_uint16_t& dh)
|
||||
bool operator()(const etc_tx_flags16_t& dh)
|
||||
{
|
||||
tv.type = "XOR";
|
||||
tv.type = "FLAGS16";
|
||||
tv.short_view = epee::string_tools::pod_to_hex(dh);
|
||||
tv.datails_view = epee::string_tools::pod_to_hex(dh);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
|
||||
//------------------------------------------------------------------
|
||||
template<class t_container>
|
||||
bool fill_tx_rpc_payload_items(std::vector<tx_extra_rpc_entry>& target_vector, const t_container& tc)
|
||||
|
|
|
|||
|
|
@ -433,8 +433,7 @@ namespace currency
|
|||
ai.m_alias = ard.alias;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
//---------------------------------------------------------------
|
||||
template<class extra_t>
|
||||
extra_t& get_or_add_field_to_extra(std::vector<extra_v>& extra)
|
||||
{
|
||||
|
|
@ -446,6 +445,7 @@ namespace currency
|
|||
extra.push_back(extra_t());
|
||||
return boost::get<extra_t>(extra.back());
|
||||
}
|
||||
//---------------------------------------------------------------
|
||||
template<class variant_t, class variant_type_t>
|
||||
void update_or_add_field_to_extra(std::vector<variant_t>& variant_container, const variant_type_t& v)
|
||||
{
|
||||
|
|
@ -459,7 +459,22 @@ namespace currency
|
|||
}
|
||||
variant_container.push_back(v);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------
|
||||
template<class variant_type_t, class variant_t>
|
||||
void remove_field_of_type_from_extra(std::vector<variant_t>& variant_container)
|
||||
{
|
||||
for (size_t i = 0; i != variant_container.size();)
|
||||
{
|
||||
if (variant_container[i].type() == typeid(variant_type_t))
|
||||
{
|
||||
variant_container.erase(variant_container.begin()+i);
|
||||
}
|
||||
else
|
||||
{
|
||||
i++;
|
||||
}
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------
|
||||
template<typename t_container>
|
||||
bool get_payment_id_from_tx(const t_container& att, std::string& payment_id)
|
||||
|
|
|
|||
|
|
@ -734,15 +734,8 @@ QString MainWindow::is_remnotenode_mode_preconfigured()
|
|||
QString MainWindow::start_backend(const QString& params)
|
||||
{
|
||||
TRY_ENTRY();
|
||||
view::start_backend_params sbp = AUTO_VAL_INIT(sbp);
|
||||
view::api_response ar = AUTO_VAL_INIT(ar);
|
||||
|
||||
if (!epee::serialization::load_t_from_json(sbp, params.toStdString()))
|
||||
{
|
||||
ar.error_code = API_RETURN_CODE_BAD_ARG;
|
||||
return MAKE_RESPONSE(ar);
|
||||
}
|
||||
|
||||
bool r = m_backend.start();
|
||||
if (!r)
|
||||
{
|
||||
|
|
@ -758,13 +751,18 @@ bool MainWindow::update_wallet_status(const view::wallet_status_info& wsi)
|
|||
{
|
||||
TRY_ENTRY();
|
||||
m_wallet_states->operator [](wsi.wallet_id) = wsi.wallet_state;
|
||||
|
||||
std::string json_str_pub;
|
||||
epee::serialization::store_t_to_json(static_cast<const view::wallet_status_info_base&>(wsi), json_str_pub, 0, epee::serialization::eol_lf);
|
||||
LOG_PRINT_L0(get_wallet_log_prefix(wsi.wallet_id) + "SENDING SIGNAL -> [update_wallet_status]:" << std::endl << json_str_pub);
|
||||
|
||||
std::string json_str;
|
||||
epee::serialization::store_t_to_json(wsi, json_str, 0, epee::serialization::eol_lf);
|
||||
LOG_PRINT_L0(get_wallet_log_prefix(wsi.wallet_id) + "SENDING SIGNAL -> [update_wallet_status]:" << std::endl << json_str );
|
||||
QMetaObject::invokeMethod(this, "update_wallet_status", Qt::QueuedConnection, Q_ARG(QString, json_str.c_str()));
|
||||
return true;
|
||||
CATCH_ENTRY2(false);
|
||||
}
|
||||
|
||||
bool MainWindow::set_options(const view::gui_options& opt)
|
||||
{
|
||||
TRY_ENTRY();
|
||||
|
|
@ -826,6 +824,11 @@ bool MainWindow::money_transfer(const view::transfer_event_info& tei)
|
|||
//don't show unconfirmed tx
|
||||
if (tei.ti.height == 0)
|
||||
return true;
|
||||
if (tei.is_wallet_in_sync_process)
|
||||
{
|
||||
//don't show notification if it long sync process(mmight cause system freeze)
|
||||
return true;
|
||||
}
|
||||
|
||||
auto amount_str = currency::print_money(tei.ti.amount);
|
||||
std::string title, msg;
|
||||
|
|
@ -915,6 +918,15 @@ QString MainWindow::get_os_version()
|
|||
CATCH_ENTRY2(API_RETURN_CODE_INTERNAL_ERROR);
|
||||
}
|
||||
|
||||
QString MainWindow::get_network_type()
|
||||
{
|
||||
#if defined(TESTNET)
|
||||
return "testnet";
|
||||
#else
|
||||
return "mainnet";
|
||||
#endif
|
||||
}
|
||||
|
||||
QString MainWindow::get_alias_coast(const QString& param)
|
||||
{
|
||||
TRY_ENTRY();
|
||||
|
|
@ -941,9 +953,12 @@ QString MainWindow::set_localization_strings(const QString param)
|
|||
else
|
||||
{
|
||||
m_localization = lr.strings;
|
||||
m_quit_action->setText(QString().fromUtf8(m_localization[localization_id_quit].c_str()));
|
||||
m_restore_action->setText(QString().fromUtf8(m_localization[localization_id_tray_menu_show].c_str()));
|
||||
m_minimize_action->setText(QString().fromUtf8(m_localization[localization_id_tray_menu_minimize].c_str()));
|
||||
if(m_quit_action)
|
||||
m_quit_action->setText(QString::fromStdString(m_localization[localization_id_quit]));
|
||||
if(m_restore_action)
|
||||
m_restore_action->setText(QString::fromStdString(m_localization[localization_id_tray_menu_show]));
|
||||
if(m_minimize_action)
|
||||
m_minimize_action->setText(QString::fromStdString(m_localization[localization_id_tray_menu_minimize]));
|
||||
resp.error_code = API_RETURN_CODE_OK;
|
||||
LOG_PRINT_L0("New localization set, language title: " << lr.language_title << ", strings " << lr.strings.size());
|
||||
}
|
||||
|
|
@ -1651,7 +1666,7 @@ QString MainWindow::open_wallet(const QString& param)
|
|||
//return que_call2<view::open_wallet_request>("open_wallet", param, [this](const view::open_wallet_request& owd, view::api_response& ar){
|
||||
PREPARE_ARG_FROM_JSON(view::open_wallet_request, owd);
|
||||
PREPARE_RESPONSE(view::open_wallet_response, ar);
|
||||
ar.error_code = m_backend.open_wallet(epee::string_encoding::utf8_to_wstring(owd.path), owd.pass, owd.txs_to_return, ar.response_data);
|
||||
ar.error_code = m_backend.open_wallet(epee::string_encoding::utf8_to_wstring(owd.path), owd.pass, owd.txs_to_return, ar.response_data, owd.exclude_mining_txs);
|
||||
return MAKE_RESPONSE(ar);
|
||||
CATCH_ENTRY_FAIL_API_RESPONCE();
|
||||
}
|
||||
|
|
@ -1795,7 +1810,7 @@ QString MainWindow::get_recent_transfers(const QString& param)
|
|||
LOG_API_TIMING();
|
||||
PREPARE_ARG_FROM_JSON(view::get_recent_transfers_request, a);
|
||||
PREPARE_RESPONSE(view::transfers_array, ar);
|
||||
ar.error_code = m_backend.get_recent_transfers(a.wallet_id, a.offset, a.count, ar.response_data);
|
||||
ar.error_code = m_backend.get_recent_transfers(a.wallet_id, a.offset, a.count, ar.response_data, a.exclude_mining_txs);
|
||||
return MAKE_RESPONSE(ar);
|
||||
CATCH_ENTRY_FAIL_API_RESPONCE();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -91,6 +91,7 @@ public:
|
|||
|
||||
QString get_version();
|
||||
QString get_os_version();
|
||||
QString get_network_type();
|
||||
QString transfer(const QString& json_transfer_object);
|
||||
QString have_secure_app_data();
|
||||
QString drop_secure_app_data();
|
||||
|
|
|
|||
|
|
@ -147,6 +147,12 @@
|
|||
"TIME3": "1 hour",
|
||||
"TIME4": "Never"
|
||||
},
|
||||
"SCALE": {
|
||||
"75": "75% scale",
|
||||
"100": "100% scale",
|
||||
"125": "125% scale",
|
||||
"150": "150% scale"
|
||||
},
|
||||
"MASTER_PASSWORD": {
|
||||
"TITLE": "Update master password",
|
||||
"OLD": "Old password",
|
||||
|
|
@ -194,7 +200,7 @@
|
|||
"ASSIGN_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias",
|
||||
"PLACEHOLDER": " Enter alias",
|
||||
"TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”."
|
||||
},
|
||||
"COMMENT": {
|
||||
|
|
@ -206,7 +212,7 @@
|
|||
"BUTTON_ASSIGN": "Assign",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_WRONG": "Alias has wrong name",
|
||||
"NAME_WRONG": "Invalid name: allowed symbols \"0-9\", \"a-z\", \"-\", \".\"",
|
||||
"NAME_LENGTH": "The alias must be 6-25 characters long",
|
||||
"NAME_EXISTS": "Alias name already exists",
|
||||
"NO_MONEY": "You do not have enough funds to assign this alias",
|
||||
|
|
|
|||
|
|
@ -147,6 +147,12 @@
|
|||
"TIME3": "1 hour",
|
||||
"TIME4": "Never"
|
||||
},
|
||||
"SCALE": {
|
||||
"75": "75% scale",
|
||||
"100": "100% scale",
|
||||
"125": "125% scale",
|
||||
"150": "150% scale"
|
||||
},
|
||||
"MASTER_PASSWORD": {
|
||||
"TITLE": "Update master password",
|
||||
"OLD": "Old password",
|
||||
|
|
@ -194,7 +200,7 @@
|
|||
"ASSIGN_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias",
|
||||
"PLACEHOLDER": " Enter alias",
|
||||
"TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”."
|
||||
},
|
||||
"COMMENT": {
|
||||
|
|
@ -206,7 +212,7 @@
|
|||
"BUTTON_ASSIGN": "Assign",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_WRONG": "Alias has wrong name",
|
||||
"NAME_WRONG": "Invalid name: allowed symbols \"0-9\", \"a-z\", \"-\", \".\"",
|
||||
"NAME_LENGTH": "The alias must be 6-25 characters long",
|
||||
"NAME_EXISTS": "Alias name already exists",
|
||||
"NO_MONEY": "You do not have enough funds to assign this alias",
|
||||
|
|
|
|||
|
|
@ -147,6 +147,12 @@
|
|||
"TIME3": "1 hour",
|
||||
"TIME4": "Never"
|
||||
},
|
||||
"SCALE": {
|
||||
"75": "75% scale",
|
||||
"100": "100% scale",
|
||||
"125": "125% scale",
|
||||
"150": "150% scale"
|
||||
},
|
||||
"MASTER_PASSWORD": {
|
||||
"TITLE": "Update master password",
|
||||
"OLD": "Old password",
|
||||
|
|
@ -194,7 +200,7 @@
|
|||
"ASSIGN_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias",
|
||||
"PLACEHOLDER": " Enter alias",
|
||||
"TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”."
|
||||
},
|
||||
"COMMENT": {
|
||||
|
|
@ -206,7 +212,7 @@
|
|||
"BUTTON_ASSIGN": "Assign",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_WRONG": "Alias has wrong name",
|
||||
"NAME_WRONG": "Invalid name: allowed symbols \"0-9\", \"a-z\", \"-\", \".\"",
|
||||
"NAME_LENGTH": "The alias must be 6-25 characters long",
|
||||
"NAME_EXISTS": "Alias name already exists",
|
||||
"NO_MONEY": "You do not have enough funds to assign this alias",
|
||||
|
|
|
|||
|
|
@ -147,6 +147,12 @@
|
|||
"TIME3": "1 hour",
|
||||
"TIME4": "Never"
|
||||
},
|
||||
"SCALE": {
|
||||
"75": "75% scale",
|
||||
"100": "100% scale",
|
||||
"125": "125% scale",
|
||||
"150": "150% scale"
|
||||
},
|
||||
"MASTER_PASSWORD": {
|
||||
"TITLE": "Update master password",
|
||||
"OLD": "Old password",
|
||||
|
|
@ -194,7 +200,7 @@
|
|||
"ASSIGN_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias",
|
||||
"PLACEHOLDER": " Enter alias",
|
||||
"TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”."
|
||||
},
|
||||
"COMMENT": {
|
||||
|
|
@ -206,7 +212,7 @@
|
|||
"BUTTON_ASSIGN": "Assign",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_WRONG": "Alias has wrong name",
|
||||
"NAME_WRONG": "Invalid name: allowed symbols \"0-9\", \"a-z\", \"-\", \".\"",
|
||||
"NAME_LENGTH": "The alias must be 6-25 characters long",
|
||||
"NAME_EXISTS": "Alias name already exists",
|
||||
"NO_MONEY": "You do not have enough funds to assign this alias",
|
||||
|
|
|
|||
|
|
@ -147,6 +147,12 @@
|
|||
"TIME3": "1 hour",
|
||||
"TIME4": "Never"
|
||||
},
|
||||
"SCALE": {
|
||||
"75": "75% scale",
|
||||
"100": "100% scale",
|
||||
"125": "125% scale",
|
||||
"150": "150% scale"
|
||||
},
|
||||
"MASTER_PASSWORD": {
|
||||
"TITLE": "Update master password",
|
||||
"OLD": "Old password",
|
||||
|
|
@ -194,7 +200,7 @@
|
|||
"ASSIGN_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias",
|
||||
"PLACEHOLDER": " Enter alias",
|
||||
"TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”."
|
||||
},
|
||||
"COMMENT": {
|
||||
|
|
@ -206,7 +212,7 @@
|
|||
"BUTTON_ASSIGN": "Assign",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_WRONG": "Alias has wrong name",
|
||||
"NAME_WRONG": "Invalid name: allowed symbols \"0-9\", \"a-z\", \"-\", \".\"",
|
||||
"NAME_LENGTH": "The alias must be 6-25 characters long",
|
||||
"NAME_EXISTS": "Alias name already exists",
|
||||
"NO_MONEY": "You do not have enough funds to assign this alias",
|
||||
|
|
|
|||
|
|
@ -147,6 +147,12 @@
|
|||
"TIME3": "1 Stunde",
|
||||
"TIME4": "Nie"
|
||||
},
|
||||
"SCALE": {
|
||||
"75": "75% Rahmen",
|
||||
"100": "100% Rahmen",
|
||||
"125": "125% Rahmen",
|
||||
"150": "150% Rahmen"
|
||||
},
|
||||
"MASTER_PASSWORD": {
|
||||
"TITLE": "Master-Passwort aktualisieren",
|
||||
"OLD": "Altes Passwort",
|
||||
|
|
@ -194,7 +200,7 @@
|
|||
"ASSIGN_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Alias eingeben",
|
||||
"PLACEHOLDER": " Alias eingeben",
|
||||
"TOOLTIP": "Ein Alias ist eine verkürzte Form Ihres Kontos. Ein Alias kann nur lateinische Buchstaben, Zahlen und die Zeichen „.“ und “-” enthalten. Es muss mit “@” beginnen."
|
||||
},
|
||||
"COMMENT": {
|
||||
|
|
@ -206,7 +212,7 @@
|
|||
"BUTTON_ASSIGN": "Zuweisen",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name ist erforderlich",
|
||||
"NAME_WRONG": "Alias hat einen falschen Namen",
|
||||
"NAME_WRONG": "Ungültiger Name: zulässige Symbole \"0-9\", \"a-z\", \"-\", \".\"",
|
||||
"NAME_LENGTH": "Der Alias muss 6-25 Zeichen lang sein",
|
||||
"NAME_EXISTS": "Alias-Name existiert bereits",
|
||||
"NO_MONEY": "Du hast nicht genug Geldmittel, um diesen Alias zuzuweisen",
|
||||
|
|
|
|||
|
|
@ -147,6 +147,12 @@
|
|||
"TIME3": "1 hour",
|
||||
"TIME4": "Never"
|
||||
},
|
||||
"SCALE": {
|
||||
"75": "75% scale",
|
||||
"100": "100% scale",
|
||||
"125": "125% scale",
|
||||
"150": "150% scale"
|
||||
},
|
||||
"MASTER_PASSWORD": {
|
||||
"TITLE": "Update master password",
|
||||
"OLD": "Old password",
|
||||
|
|
@ -194,7 +200,7 @@
|
|||
"ASSIGN_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias",
|
||||
"PLACEHOLDER": " Enter alias",
|
||||
"TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”."
|
||||
},
|
||||
"COMMENT": {
|
||||
|
|
|
|||
|
|
@ -223,7 +223,7 @@
|
|||
"ASSIGN_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias",
|
||||
"PLACEHOLDER": " Enter alias",
|
||||
"TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”."
|
||||
},
|
||||
"COMMENT": {
|
||||
|
|
@ -235,7 +235,7 @@
|
|||
"BUTTON_ASSIGN": "Assign",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_WRONG": "Alias has wrong name",
|
||||
"NAME_WRONG": "Invalid name: allowed symbols \"0-9\", \"a-z\", \"-\", \".\"",
|
||||
"NAME_LENGTH": "The alias must be 6-25 characters long",
|
||||
"NAME_EXISTS": "Alias name already exists",
|
||||
"NO_MONEY": "You do not have enough funds to assign this alias",
|
||||
|
|
|
|||
|
|
@ -147,6 +147,12 @@
|
|||
"TIME3": "1 hour",
|
||||
"TIME4": "Never"
|
||||
},
|
||||
"SCALE": {
|
||||
"75": "75% scale",
|
||||
"100": "100% scale",
|
||||
"125": "125% scale",
|
||||
"150": "150% scale"
|
||||
},
|
||||
"MASTER_PASSWORD": {
|
||||
"TITLE": "Update master password",
|
||||
"OLD": "Old password",
|
||||
|
|
@ -194,7 +200,7 @@
|
|||
"ASSIGN_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias",
|
||||
"PLACEHOLDER": " Enter alias",
|
||||
"TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”."
|
||||
},
|
||||
"COMMENT": {
|
||||
|
|
@ -206,7 +212,7 @@
|
|||
"BUTTON_ASSIGN": "Assign",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_WRONG": "Alias has wrong name",
|
||||
"NAME_WRONG": "Nombre no válido: símbolos permitidos \"0-9\", \"a-z\", \"-\", \".\"",
|
||||
"NAME_LENGTH": "The alias must be 6-25 characters long",
|
||||
"NAME_EXISTS": "Alias name already exists",
|
||||
"NO_MONEY": "You do not have enough funds to assign this alias",
|
||||
|
|
|
|||
|
|
@ -147,6 +147,12 @@
|
|||
"TIME3": "1 hour",
|
||||
"TIME4": "Never"
|
||||
},
|
||||
"SCALE": {
|
||||
"75": "75% scale",
|
||||
"100": "100% scale",
|
||||
"125": "125% scale",
|
||||
"150": "150% scale"
|
||||
},
|
||||
"MASTER_PASSWORD": {
|
||||
"TITLE": "Update master password",
|
||||
"OLD": "Old password",
|
||||
|
|
@ -194,7 +200,7 @@
|
|||
"ASSIGN_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias",
|
||||
"PLACEHOLDER": " Enter alias",
|
||||
"TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”."
|
||||
},
|
||||
"COMMENT": {
|
||||
|
|
@ -206,7 +212,7 @@
|
|||
"BUTTON_ASSIGN": "Assign",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_WRONG": "Alias has wrong name",
|
||||
"NAME_WRONG": "Invalid name: allowed symbols \"0-9\", \"a-z\", \"-\", \".\"",
|
||||
"NAME_LENGTH": "The alias must be 6-25 characters long",
|
||||
"NAME_EXISTS": "Alias name already exists",
|
||||
"NO_MONEY": "You do not have enough funds to assign this alias",
|
||||
|
|
|
|||
|
|
@ -147,6 +147,12 @@
|
|||
"TIME3": "1 heure",
|
||||
"TIME4": "Jamais"
|
||||
},
|
||||
"SCALE": {
|
||||
"75": "75% échelle",
|
||||
"100": "100% échelle",
|
||||
"125": "125% échelle",
|
||||
"150": "150% échelle"
|
||||
},
|
||||
"MASTER_PASSWORD": {
|
||||
"TITLE": "Mettre à jour le mot de passe principal",
|
||||
"OLD": "Ancien mot de passe",
|
||||
|
|
@ -194,7 +200,7 @@
|
|||
"ASSIGN_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Entrer l'alias",
|
||||
"PLACEHOLDER": " Entrer l'alias",
|
||||
"TOOLTIP": "Un alias est une forme abréviée pour votre compte. Un alias ne peut inclure que des lettres, des chiffres et des caractères latins « » et « - ». Il doit commencer par « @ »."
|
||||
},
|
||||
"COMMENT": {
|
||||
|
|
@ -206,7 +212,7 @@
|
|||
"BUTTON_ASSIGN": "Assigner",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Le nom est requis",
|
||||
"NAME_WRONG": "L'alias a un nom incorrect",
|
||||
"NAME_WRONG": "Nom invalide: symboles autorisés \"0-9\", \"a-z\", \"-\", \".\"",
|
||||
"NAME_LENGTH": "L'alias doit contenir 6-25 caractères",
|
||||
"NAME_EXISTS": "Alias déjà existant",
|
||||
"NO_MONEY": "Vous n'avez pas assez de fonds pour assigner cet alias",
|
||||
|
|
|
|||
|
|
@ -147,6 +147,12 @@
|
|||
"TIME3": "1 hour",
|
||||
"TIME4": "Never"
|
||||
},
|
||||
"SCALE": {
|
||||
"75": "75% scale",
|
||||
"100": "100% scale",
|
||||
"125": "125% scale",
|
||||
"150": "150% scale"
|
||||
},
|
||||
"MASTER_PASSWORD": {
|
||||
"TITLE": "Update master password",
|
||||
"OLD": "Old password",
|
||||
|
|
@ -194,7 +200,7 @@
|
|||
"ASSIGN_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias",
|
||||
"PLACEHOLDER": " Enter alias",
|
||||
"TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”."
|
||||
},
|
||||
"COMMENT": {
|
||||
|
|
@ -206,7 +212,7 @@
|
|||
"BUTTON_ASSIGN": "Assign",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_WRONG": "Alias has wrong name",
|
||||
"NAME_WRONG": "Invalid name: allowed symbols \"0-9\", \"a-z\", \"-\", \".\"",
|
||||
"NAME_LENGTH": "The alias must be 6-25 characters long",
|
||||
"NAME_EXISTS": "Alias name already exists",
|
||||
"NO_MONEY": "You do not have enough funds to assign this alias",
|
||||
|
|
|
|||
|
|
@ -147,6 +147,12 @@
|
|||
"TIME3": "1 hour",
|
||||
"TIME4": "Never"
|
||||
},
|
||||
"SCALE": {
|
||||
"75": "75% scale",
|
||||
"100": "100% scale",
|
||||
"125": "125% scale",
|
||||
"150": "150% scale"
|
||||
},
|
||||
"MASTER_PASSWORD": {
|
||||
"TITLE": "Update master password",
|
||||
"OLD": "Old password",
|
||||
|
|
@ -194,7 +200,7 @@
|
|||
"ASSIGN_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias",
|
||||
"PLACEHOLDER": " Enter alias",
|
||||
"TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”."
|
||||
},
|
||||
"COMMENT": {
|
||||
|
|
@ -206,7 +212,7 @@
|
|||
"BUTTON_ASSIGN": "Assign",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_WRONG": "Alias has wrong name",
|
||||
"NAME_WRONG": "Invalid name: allowed symbols \"0-9\", \"a-z\", \"-\", \".\"",
|
||||
"NAME_LENGTH": "The alias must be 6-25 characters long",
|
||||
"NAME_EXISTS": "Alias name already exists",
|
||||
"NO_MONEY": "You do not have enough funds to assign this alias",
|
||||
|
|
|
|||
|
|
@ -147,6 +147,12 @@
|
|||
"TIME3": "1 ora",
|
||||
"TIME4": "Mai"
|
||||
},
|
||||
"SCALE": {
|
||||
"75": "75% scala",
|
||||
"100": "100% scala",
|
||||
"125": "125% scala",
|
||||
"150": "150% scala"
|
||||
},
|
||||
"MASTER_PASSWORD": {
|
||||
"TITLE": "Aggiorna password principale",
|
||||
"OLD": "Vecchia password",
|
||||
|
|
@ -194,7 +200,7 @@
|
|||
"ASSIGN_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Inserisci alias",
|
||||
"PLACEHOLDER": " Inserisci alias",
|
||||
"TOOLTIP": "Un alias è un modulo abbreviato o il tuo account. Un alias può solo includere lettere latine, numeri e caratteri “.” e “-”. Deve iniziare con “@”."
|
||||
},
|
||||
"COMMENT": {
|
||||
|
|
@ -206,7 +212,7 @@
|
|||
"BUTTON_ASSIGN": "Assegna",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Il nome è richiesto",
|
||||
"NAME_WRONG": "L'Alias ha un nome errato",
|
||||
"NAME_WRONG": "Nome Ungültiger: zulässige Symbole \"0-9\", \"a-z\", \"-\", \".\"",
|
||||
"NAME_LENGTH": "L'alias deve essere lungo 6-25 caratteri",
|
||||
"NAME_EXISTS": "Il nome dell'alias esiste già",
|
||||
"NO_MONEY": "Non hai fondi sufficienti per assegnare questo alias",
|
||||
|
|
|
|||
|
|
@ -147,6 +147,7 @@
|
|||
"TIME3": "1 hour",
|
||||
"TIME4": "Never"
|
||||
},
|
||||
|
||||
"MASTER_PASSWORD": {
|
||||
"TITLE": "Update master password",
|
||||
"OLD": "Old password",
|
||||
|
|
@ -194,7 +195,7 @@
|
|||
"ASSIGN_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias",
|
||||
"PLACEHOLDER": " Enter alias",
|
||||
"TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”."
|
||||
},
|
||||
"COMMENT": {
|
||||
|
|
@ -206,7 +207,7 @@
|
|||
"BUTTON_ASSIGN": "Assign",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_WRONG": "Alias has wrong name",
|
||||
"NAME_WRONG": "Invalid name: allowed symbols \"0-9\", \"a-z\", \"-\", \".\"",
|
||||
"NAME_LENGTH": "The alias must be 6-25 characters long",
|
||||
"NAME_EXISTS": "Alias name already exists",
|
||||
"NO_MONEY": "You do not have enough funds to assign this alias",
|
||||
|
|
|
|||
|
|
@ -147,6 +147,12 @@
|
|||
"TIME3": "1 hour",
|
||||
"TIME4": "Never"
|
||||
},
|
||||
"SCALE": {
|
||||
"75": "75% scale",
|
||||
"100": "100% scale",
|
||||
"125": "125% scale",
|
||||
"150": "150% scale"
|
||||
},
|
||||
"MASTER_PASSWORD": {
|
||||
"TITLE": "Update master password",
|
||||
"OLD": "Old password",
|
||||
|
|
@ -194,7 +200,7 @@
|
|||
"ASSIGN_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias",
|
||||
"PLACEHOLDER": " Enter alias",
|
||||
"TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”."
|
||||
},
|
||||
"COMMENT": {
|
||||
|
|
@ -206,7 +212,7 @@
|
|||
"BUTTON_ASSIGN": "Assign",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_WRONG": "Alias has wrong name",
|
||||
"NAME_WRONG": "Invalid name: allowed symbols \"0-9\", \"a-z\", \"-\", \".\"",
|
||||
"NAME_LENGTH": "The alias must be 6-25 characters long",
|
||||
"NAME_EXISTS": "Alias name already exists",
|
||||
"NO_MONEY": "You do not have enough funds to assign this alias",
|
||||
|
|
|
|||
|
|
@ -147,6 +147,12 @@
|
|||
"TIME3": "1 hour",
|
||||
"TIME4": "Never"
|
||||
},
|
||||
"SCALE": {
|
||||
"75": "75% scale",
|
||||
"100": "100% scale",
|
||||
"125": "125% scale",
|
||||
"150": "150% scale"
|
||||
},
|
||||
"MASTER_PASSWORD": {
|
||||
"TITLE": "Update master password",
|
||||
"OLD": "Old password",
|
||||
|
|
@ -194,7 +200,7 @@
|
|||
"ASSIGN_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias",
|
||||
"PLACEHOLDER": " Enter alias",
|
||||
"TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”."
|
||||
},
|
||||
"COMMENT": {
|
||||
|
|
@ -206,7 +212,7 @@
|
|||
"BUTTON_ASSIGN": "Assign",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_WRONG": "Alias has wrong name",
|
||||
"NAME_WRONG": "Invalid name: allowed symbols \"0-9\", \"a-z\", \"-\", \".\"",
|
||||
"NAME_LENGTH": "The alias must be 6-25 characters long",
|
||||
"NAME_EXISTS": "Alias name already exists",
|
||||
"NO_MONEY": "You do not have enough funds to assign this alias",
|
||||
|
|
|
|||
|
|
@ -147,6 +147,12 @@
|
|||
"TIME3": "1 hour",
|
||||
"TIME4": "Never"
|
||||
},
|
||||
"SCALE": {
|
||||
"75": "75% scale",
|
||||
"100": "100% scale",
|
||||
"125": "125% scale",
|
||||
"150": "150% scale"
|
||||
},
|
||||
"MASTER_PASSWORD": {
|
||||
"TITLE": "Update master password",
|
||||
"OLD": "Old password",
|
||||
|
|
@ -194,7 +200,7 @@
|
|||
"ASSIGN_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias",
|
||||
"PLACEHOLDER": " Enter alias",
|
||||
"TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”."
|
||||
},
|
||||
"COMMENT": {
|
||||
|
|
@ -206,7 +212,7 @@
|
|||
"BUTTON_ASSIGN": "Assign",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_WRONG": "Alias has wrong name",
|
||||
"NAME_WRONG": "Invalid name: allowed symbols \"0-9\", \"a-z\", \"-\", \".\"",
|
||||
"NAME_LENGTH": "The alias must be 6-25 characters long",
|
||||
"NAME_EXISTS": "Alias name already exists",
|
||||
"NO_MONEY": "You do not have enough funds to assign this alias",
|
||||
|
|
|
|||
|
|
@ -147,6 +147,12 @@
|
|||
"TIME3": "1 hour",
|
||||
"TIME4": "Never"
|
||||
},
|
||||
"SCALE": {
|
||||
"75": "75% scale",
|
||||
"100": "100% scale",
|
||||
"125": "125% scale",
|
||||
"150": "150% scale"
|
||||
},
|
||||
"MASTER_PASSWORD": {
|
||||
"TITLE": "Update master password",
|
||||
"OLD": "Old password",
|
||||
|
|
@ -194,7 +200,7 @@
|
|||
"ASSIGN_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias",
|
||||
"PLACEHOLDER": " Enter alias",
|
||||
"TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”."
|
||||
},
|
||||
"COMMENT": {
|
||||
|
|
@ -206,7 +212,7 @@
|
|||
"BUTTON_ASSIGN": "Assign",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_WRONG": "Alias has wrong name",
|
||||
"NAME_WRONG": "Invalid name: allowed symbols \"0-9\", \"a-z\", \"-\", \".\"",
|
||||
"NAME_LENGTH": "The alias must be 6-25 characters long",
|
||||
"NAME_EXISTS": "Alias name already exists",
|
||||
"NO_MONEY": "You do not have enough funds to assign this alias",
|
||||
|
|
|
|||
|
|
@ -147,6 +147,12 @@
|
|||
"TIME3": "1 hora",
|
||||
"TIME4": "Nunca"
|
||||
},
|
||||
"SCALE": {
|
||||
"75": "75% escala",
|
||||
"100": "100% escala",
|
||||
"125": "125% escala",
|
||||
"150": "150% escala"
|
||||
},
|
||||
"MASTER_PASSWORD": {
|
||||
"TITLE": "Atualizar password mestra",
|
||||
"OLD": "Antiga password",
|
||||
|
|
@ -194,7 +200,7 @@
|
|||
"ASSIGN_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Introduzir alias",
|
||||
"PLACEHOLDER": " Introduzir alias",
|
||||
"TOOLTIP": "Um alias é uma forma abreviada da sua conta. Um alias só pode incluir letras, números e caracteres latinos “.” e “-”. Deve começar com “@”."
|
||||
},
|
||||
"COMMENT": {
|
||||
|
|
@ -206,7 +212,7 @@
|
|||
"BUTTON_ASSIGN": "Atribuir",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Nome é necessário",
|
||||
"NAME_WRONG": "Alias tem nome errado",
|
||||
"NAME_WRONG": "Nome inválido: símbolos permitidos \"0-9\", \"a-z\", \"-\", \".\"",
|
||||
"NAME_LENGTH": "O alias deve ter entre 6 e 25 caracteres",
|
||||
"NAME_EXISTS": "Nome de alias já existe",
|
||||
"NO_MONEY": "Não tem fundos suficientes para atribuir esse alias",
|
||||
|
|
|
|||
|
|
@ -147,6 +147,12 @@
|
|||
"TIME3": "1 hour",
|
||||
"TIME4": "Never"
|
||||
},
|
||||
"SCALE": {
|
||||
"75": "75% scale",
|
||||
"100": "100% scale",
|
||||
"125": "125% scale",
|
||||
"150": "150% scale"
|
||||
},
|
||||
"MASTER_PASSWORD": {
|
||||
"TITLE": "Update master password",
|
||||
"OLD": "Old password",
|
||||
|
|
@ -194,7 +200,7 @@
|
|||
"ASSIGN_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias",
|
||||
"PLACEHOLDER": " Enter alias",
|
||||
"TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”."
|
||||
},
|
||||
"COMMENT": {
|
||||
|
|
@ -206,7 +212,7 @@
|
|||
"BUTTON_ASSIGN": "Assign",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_WRONG": "Alias has wrong name",
|
||||
"NAME_WRONG": "Invalid name: allowed symbols \"0-9\", \"a-z\", \"-\", \".\"",
|
||||
"NAME_LENGTH": "The alias must be 6-25 characters long",
|
||||
"NAME_EXISTS": "Alias name already exists",
|
||||
"NO_MONEY": "You do not have enough funds to assign this alias",
|
||||
|
|
|
|||
|
|
@ -147,6 +147,12 @@
|
|||
"TIME3": "1 hour",
|
||||
"TIME4": "Never"
|
||||
},
|
||||
"SCALE": {
|
||||
"75": "75% scale",
|
||||
"100": "100% scale",
|
||||
"125": "125% scale",
|
||||
"150": "150% scale"
|
||||
},
|
||||
"MASTER_PASSWORD": {
|
||||
"TITLE": "Update master password",
|
||||
"OLD": "Old password",
|
||||
|
|
@ -194,7 +200,7 @@
|
|||
"ASSIGN_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias",
|
||||
"PLACEHOLDER": " Enter alias",
|
||||
"TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”."
|
||||
},
|
||||
"COMMENT": {
|
||||
|
|
@ -206,7 +212,7 @@
|
|||
"BUTTON_ASSIGN": "Assign",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_WRONG": "Alias has wrong name",
|
||||
"NAME_WRONG": "Invalid name: allowed symbols \"0-9\", \"a-z\", \"-\", \".\"",
|
||||
"NAME_LENGTH": "The alias must be 6-25 characters long",
|
||||
"NAME_EXISTS": "Alias name already exists",
|
||||
"NO_MONEY": "You do not have enough funds to assign this alias",
|
||||
|
|
|
|||
|
|
@ -147,6 +147,12 @@
|
|||
"TIME3": "1 hour",
|
||||
"TIME4": "Never"
|
||||
},
|
||||
"SCALE": {
|
||||
"75": "75% scale",
|
||||
"100": "100% scale",
|
||||
"125": "125% scale",
|
||||
"150": "150% scale"
|
||||
},
|
||||
"MASTER_PASSWORD": {
|
||||
"TITLE": "Update master password",
|
||||
"OLD": "Old password",
|
||||
|
|
@ -194,7 +200,7 @@
|
|||
"ASSIGN_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias",
|
||||
"PLACEHOLDER": " Enter alias",
|
||||
"TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”."
|
||||
},
|
||||
"COMMENT": {
|
||||
|
|
@ -206,7 +212,7 @@
|
|||
"BUTTON_ASSIGN": "Assign",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_WRONG": "Alias has wrong name",
|
||||
"NAME_WRONG": "Invalid name: allowed symbols \"0-9\", \"a-z\", \"-\", \".\"",
|
||||
"NAME_LENGTH": "The alias must be 6-25 characters long",
|
||||
"NAME_EXISTS": "Alias name already exists",
|
||||
"NO_MONEY": "You do not have enough funds to assign this alias",
|
||||
|
|
|
|||
|
|
@ -147,6 +147,12 @@
|
|||
"TIME3": "1 hour",
|
||||
"TIME4": "Never"
|
||||
},
|
||||
"SCALE": {
|
||||
"75": "75% scale",
|
||||
"100": "100% scale",
|
||||
"125": "125% scale",
|
||||
"150": "150% scale"
|
||||
},
|
||||
"MASTER_PASSWORD": {
|
||||
"TITLE": "Update master password",
|
||||
"OLD": "Old password",
|
||||
|
|
@ -194,7 +200,7 @@
|
|||
"ASSIGN_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias",
|
||||
"PLACEHOLDER": " Enter alias",
|
||||
"TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”."
|
||||
},
|
||||
"COMMENT": {
|
||||
|
|
@ -206,7 +212,7 @@
|
|||
"BUTTON_ASSIGN": "Assign",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_WRONG": "Alias has wrong name",
|
||||
"NAME_WRONG": "Invalid name: allowed symbols \"0-9\", \"a-z\", \"-\", \".\"",
|
||||
"NAME_LENGTH": "The alias must be 6-25 characters long",
|
||||
"NAME_EXISTS": "Alias name already exists",
|
||||
"NO_MONEY": "You do not have enough funds to assign this alias",
|
||||
|
|
|
|||
|
|
@ -147,6 +147,12 @@
|
|||
"TIME3": "1 hour",
|
||||
"TIME4": "Never"
|
||||
},
|
||||
"SCALE": {
|
||||
"75": "75% scale",
|
||||
"100": "100% scale",
|
||||
"125": "125% scale",
|
||||
"150": "150% scale"
|
||||
},
|
||||
"MASTER_PASSWORD": {
|
||||
"TITLE": "Update master password",
|
||||
"OLD": "Old password",
|
||||
|
|
@ -194,7 +200,7 @@
|
|||
"ASSIGN_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias",
|
||||
"PLACEHOLDER": " Enter alias",
|
||||
"TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”."
|
||||
},
|
||||
"COMMENT": {
|
||||
|
|
@ -206,7 +212,7 @@
|
|||
"BUTTON_ASSIGN": "Assign",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_WRONG": "Alias has wrong name",
|
||||
"NAME_WRONG": "Invalid name: allowed symbols \"0-9\", \"a-z\", \"-\", \".\"",
|
||||
"NAME_LENGTH": "The alias must be 6-25 characters long",
|
||||
"NAME_EXISTS": "Alias name already exists",
|
||||
"NO_MONEY": "You do not have enough funds to assign this alias",
|
||||
|
|
|
|||
|
|
@ -147,6 +147,12 @@
|
|||
"TIME3": "1 hour",
|
||||
"TIME4": "Never"
|
||||
},
|
||||
"SCALE": {
|
||||
"75": "75% scale",
|
||||
"100": "100% scale",
|
||||
"125": "125% scale",
|
||||
"150": "150% scale"
|
||||
},
|
||||
"MASTER_PASSWORD": {
|
||||
"TITLE": "Update master password",
|
||||
"OLD": "Old password",
|
||||
|
|
@ -194,7 +200,7 @@
|
|||
"ASSIGN_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias",
|
||||
"PLACEHOLDER": " Enter alias",
|
||||
"TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”."
|
||||
},
|
||||
"COMMENT": {
|
||||
|
|
@ -206,7 +212,7 @@
|
|||
"BUTTON_ASSIGN": "Assign",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_WRONG": "Alias has wrong name",
|
||||
"NAME_WRONG": "Invalid name: allowed symbols \"0-9\", \"a-z\", \"-\", \".\"",
|
||||
"NAME_LENGTH": "The alias must be 6-25 characters long",
|
||||
"NAME_EXISTS": "Alias name already exists",
|
||||
"NO_MONEY": "You do not have enough funds to assign this alias",
|
||||
|
|
|
|||
|
|
@ -147,6 +147,12 @@
|
|||
"TIME3": "1 hour",
|
||||
"TIME4": "Never"
|
||||
},
|
||||
"SCALE": {
|
||||
"75": "75% scale",
|
||||
"100": "100% scale",
|
||||
"125": "125% scale",
|
||||
"150": "150% scale"
|
||||
},
|
||||
"MASTER_PASSWORD": {
|
||||
"TITLE": "Update master password",
|
||||
"OLD": "Old password",
|
||||
|
|
@ -194,7 +200,7 @@
|
|||
"ASSIGN_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias",
|
||||
"PLACEHOLDER": " Enter alias",
|
||||
"TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”."
|
||||
},
|
||||
"COMMENT": {
|
||||
|
|
@ -206,7 +212,7 @@
|
|||
"BUTTON_ASSIGN": "Assign",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_WRONG": "Alias has wrong name",
|
||||
"NAME_WRONG": "Invalid name: allowed symbols \"0-9\", \"a-z\", \"-\", \".\"",
|
||||
"NAME_LENGTH": "The alias must be 6-25 characters long",
|
||||
"NAME_EXISTS": "Alias name already exists",
|
||||
"NO_MONEY": "You do not have enough funds to assign this alias",
|
||||
|
|
|
|||
|
|
@ -147,6 +147,12 @@
|
|||
"TIME3": "1 hour",
|
||||
"TIME4": "Never"
|
||||
},
|
||||
"SCALE": {
|
||||
"75": "75% scale",
|
||||
"100": "100% scale",
|
||||
"125": "125% scale",
|
||||
"150": "150% scale"
|
||||
},
|
||||
"MASTER_PASSWORD": {
|
||||
"TITLE": "Update master password",
|
||||
"OLD": "Old password",
|
||||
|
|
@ -194,7 +200,7 @@
|
|||
"ASSIGN_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias",
|
||||
"PLACEHOLDER": " Enter alias",
|
||||
"TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”."
|
||||
},
|
||||
"COMMENT": {
|
||||
|
|
@ -206,7 +212,7 @@
|
|||
"BUTTON_ASSIGN": "Assign",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_WRONG": "Alias has wrong name",
|
||||
"NAME_WRONG": "Invalid name: allowed symbols \"0-9\", \"a-z\", \"-\", \".\"",
|
||||
"NAME_LENGTH": "The alias must be 6-25 characters long",
|
||||
"NAME_EXISTS": "Alias name already exists",
|
||||
"NO_MONEY": "You do not have enough funds to assign this alias",
|
||||
|
|
|
|||
|
|
@ -188,133 +188,4 @@ app-sidebar {
|
|||
}
|
||||
}
|
||||
|
||||
.sidebar-synchronization-status {
|
||||
|
||||
@include themify($themes) {
|
||||
color: themed(optionalTextColor);
|
||||
}
|
||||
|
||||
.status-container {
|
||||
|
||||
.offline:before {
|
||||
|
||||
@include themify($themes) {
|
||||
background-color: themed(offlineColor);
|
||||
}
|
||||
}
|
||||
|
||||
.online:before {
|
||||
|
||||
@include themify($themes) {
|
||||
background-color: themed(onlineColor);
|
||||
}
|
||||
}
|
||||
|
||||
.progress-bar-container {
|
||||
|
||||
.syncing {
|
||||
|
||||
.progress-bar {
|
||||
|
||||
@include themify($themes) {
|
||||
background-color: themed(progressBarBackgroundColor);
|
||||
}
|
||||
|
||||
.fill {
|
||||
|
||||
@include themify($themes) {
|
||||
background-color: themed(progressBarFullBackgroundColor);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&.downloading {
|
||||
|
||||
.progress-bar {
|
||||
|
||||
@include themify($themes) {
|
||||
background-color: themed(progressBarBackgroundColor);
|
||||
}
|
||||
|
||||
.fill {
|
||||
|
||||
@include themify($themes) {
|
||||
background-color: themed(blueTextColor);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.loading {
|
||||
|
||||
@include themify($themes) {
|
||||
background-color: themed(progressBarFullBackgroundColor);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.update-container {
|
||||
|
||||
.standard {
|
||||
|
||||
@include themify($themes) {
|
||||
color: themed(blueTextColor);
|
||||
}
|
||||
}
|
||||
|
||||
.important {
|
||||
|
||||
@include themify($themes) {
|
||||
color: themed(orangeTextColor);
|
||||
}
|
||||
}
|
||||
|
||||
.critical {
|
||||
|
||||
@include themify($themes) {
|
||||
color: themed(redTextColor);
|
||||
}
|
||||
}
|
||||
|
||||
.time {
|
||||
|
||||
@include themify($themes) {
|
||||
color: themed(orangeTextColor);
|
||||
}
|
||||
}
|
||||
|
||||
.icon {
|
||||
|
||||
&.standard {
|
||||
|
||||
@include themify($themes) {
|
||||
background-color: themed(blueTextColor);
|
||||
}
|
||||
}
|
||||
|
||||
&.important {
|
||||
|
||||
@include themify($themes) {
|
||||
background-color: themed(orangeTextColor);
|
||||
}
|
||||
}
|
||||
|
||||
&.critical {
|
||||
|
||||
@include themify($themes) {
|
||||
background-color: themed(redTextColor);
|
||||
}
|
||||
}
|
||||
|
||||
&.time {
|
||||
|
||||
@include themify($themes) {
|
||||
background-color: themed(orangeTextColor);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
232
src/gui/qt-daemon/html/assets/scss/layout/_status.scss
Normal file
232
src/gui/qt-daemon/html/assets/scss/layout/_status.scss
Normal file
|
|
@ -0,0 +1,232 @@
|
|||
.synchronization-status {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: flex-start;
|
||||
flex: 0 0 7rem;
|
||||
font-size: 1.3rem;
|
||||
@include themify($themes) {
|
||||
color: themed(optionalTextColor);
|
||||
}
|
||||
|
||||
.status-container {
|
||||
position: relative;
|
||||
flex-grow: 1;
|
||||
text-align: left;
|
||||
|
||||
.offline, .online {
|
||||
position: relative;
|
||||
display: block;
|
||||
line-height: 1.2rem;
|
||||
padding-left: 2.2rem;
|
||||
|
||||
&:before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
border-radius: 50%;
|
||||
width: 1.2rem;
|
||||
height: 1.2rem;
|
||||
}
|
||||
}
|
||||
|
||||
.offline:before {
|
||||
|
||||
@include themify($themes) {
|
||||
background-color: themed(offlineColor);
|
||||
}
|
||||
}
|
||||
|
||||
.online:before {
|
||||
|
||||
@include themify($themes) {
|
||||
background-color: themed(onlineColor);
|
||||
}
|
||||
}
|
||||
|
||||
.syncing, .loading {
|
||||
line-height: 5rem;
|
||||
}
|
||||
|
||||
.progress-bar-container {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
height: 0.7rem;
|
||||
width: 100%;
|
||||
|
||||
.syncing {
|
||||
display: flex;
|
||||
|
||||
.progress-bar {
|
||||
flex: 1 0 auto;
|
||||
@include themify($themes) {
|
||||
background-color: themed(progressBarBackgroundColor);
|
||||
}
|
||||
.fill {
|
||||
height: 100%;
|
||||
@include themify($themes) {
|
||||
background-color: themed(progressBarFullBackgroundColor);
|
||||
}
|
||||
}
|
||||
}
|
||||
&.downloading {
|
||||
|
||||
.progress-bar {
|
||||
|
||||
@include themify($themes) {
|
||||
background-color: themed(progressBarBackgroundColor);
|
||||
}
|
||||
|
||||
.fill {
|
||||
|
||||
@include themify($themes) {
|
||||
background-color: themed(blueTextColor);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.progress-percent {
|
||||
flex: 0 0 auto;
|
||||
font-size: 1.3rem;
|
||||
line-height: 0.7rem;
|
||||
padding-left: 0.7rem;
|
||||
}
|
||||
}
|
||||
|
||||
.loading {
|
||||
@include themify($themes) {
|
||||
background-color: themed(progressBarFullBackgroundColor);
|
||||
}
|
||||
animation: move 5s linear infinite;
|
||||
background-image:
|
||||
-webkit-gradient(
|
||||
linear, 0 0, 100% 100%,
|
||||
color-stop(.125, rgba(0, 0, 0, .15)), color-stop(.125, transparent),
|
||||
color-stop(.250, transparent), color-stop(.250, rgba(0, 0, 0, .10)),
|
||||
color-stop(.375, rgba(0, 0, 0, .10)), color-stop(.375, transparent),
|
||||
color-stop(.500, transparent), color-stop(.500, rgba(0, 0, 0, .15)),
|
||||
color-stop(.625, rgba(0, 0, 0, .15)), color-stop(.625, transparent),
|
||||
color-stop(.750, transparent), color-stop(.750, rgba(0, 0, 0, .10)),
|
||||
color-stop(.875, rgba(0, 0, 0, .10)), color-stop(.875, transparent),
|
||||
to(transparent)
|
||||
),
|
||||
-webkit-gradient(
|
||||
linear, 0 100%, 100% 0,
|
||||
color-stop(.125, rgba(0, 0, 0, .30)), color-stop(.125, transparent),
|
||||
color-stop(.250, transparent), color-stop(.250, rgba(0, 0, 0, .25)),
|
||||
color-stop(.375, rgba(0, 0, 0, .25)), color-stop(.375, transparent),
|
||||
color-stop(.500, transparent), color-stop(.500, rgba(0, 0, 0, .30)),
|
||||
color-stop(.625, rgba(0, 0, 0, .30)), color-stop(.625, transparent),
|
||||
color-stop(.750, transparent), color-stop(.750, rgba(0, 0, 0, .25)),
|
||||
color-stop(.875, rgba(0, 0, 0, .25)), color-stop(.875, transparent),
|
||||
to(transparent)
|
||||
);
|
||||
background-size: 7rem 7rem;
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.update-container {
|
||||
display: flex;
|
||||
flex-grow: 1;
|
||||
margin-left: 1rem;
|
||||
text-align: right;
|
||||
|
||||
.update-text {
|
||||
flex: 1 1 auto;
|
||||
font-size: 1.2rem;
|
||||
line-height: 1.8rem;
|
||||
text-align: left;
|
||||
|
||||
&.time {
|
||||
font-size: 1.1rem;
|
||||
}
|
||||
}
|
||||
|
||||
.icon {
|
||||
flex: 1 0 auto;
|
||||
margin: 0.3rem 0 0 0.6rem;
|
||||
width: 1.2rem;
|
||||
height: 1.2rem;
|
||||
|
||||
&.update {
|
||||
mask: url(./assets/icons/update.svg) no-repeat center;
|
||||
}
|
||||
|
||||
&.time {
|
||||
mask: url(./assets/icons/time.svg) no-repeat center;
|
||||
}
|
||||
}
|
||||
|
||||
.standard {
|
||||
|
||||
@include themify($themes) {
|
||||
color: themed(blueTextColor);
|
||||
}
|
||||
}
|
||||
|
||||
.important {
|
||||
|
||||
@include themify($themes) {
|
||||
color: themed(orangeTextColor);
|
||||
}
|
||||
}
|
||||
|
||||
.critical {
|
||||
|
||||
@include themify($themes) {
|
||||
color: themed(redTextColor);
|
||||
}
|
||||
}
|
||||
|
||||
.time {
|
||||
|
||||
@include themify($themes) {
|
||||
color: themed(orangeTextColor);
|
||||
}
|
||||
}
|
||||
|
||||
.icon {
|
||||
|
||||
&.standard {
|
||||
|
||||
@include themify($themes) {
|
||||
background-color: themed(blueTextColor);
|
||||
}
|
||||
}
|
||||
|
||||
&.important {
|
||||
|
||||
@include themify($themes) {
|
||||
background-color: themed(orangeTextColor);
|
||||
}
|
||||
}
|
||||
|
||||
&.critical {
|
||||
|
||||
@include themify($themes) {
|
||||
background-color: themed(redTextColor);
|
||||
}
|
||||
}
|
||||
|
||||
&.time {
|
||||
|
||||
@include themify($themes) {
|
||||
background-color: themed(orangeTextColor);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes move {
|
||||
0% {
|
||||
background-position: 100% -7rem;
|
||||
}
|
||||
100% {
|
||||
background-position: 100% 7rem;
|
||||
}
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -5800,8 +5800,8 @@ __webpack_require__.r(__webpack_exports__);
|
|||
/*! no static exports found */
|
||||
/***/ (function(module, exports, __webpack_require__) {
|
||||
|
||||
__webpack_require__(/*! /var/www/zano-project/zano/src/gui/qt-daemon/html_source/src/polyfills.ts */"./src/polyfills.ts");
|
||||
module.exports = __webpack_require__(/*! /var/www/zano-project/zano/src/gui/qt-daemon/html_source/node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/jit-polyfills.js */"./node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/jit-polyfills.js");
|
||||
__webpack_require__(/*! /home/user/zano_tmp/src/gui/qt-daemon/html_source/src/polyfills.ts */"./src/polyfills.ts");
|
||||
module.exports = __webpack_require__(/*! /home/user/zano_tmp/src/gui/qt-daemon/html_source/node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/jit-polyfills.js */"./node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/jit-polyfills.js");
|
||||
|
||||
|
||||
/***/ })
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -95334,7 +95334,7 @@ if (true) {
|
|||
/***/ (function(module, exports, __webpack_require__) {
|
||||
|
||||
var __WEBPACK_AMD_DEFINE_RESULT__;/*
|
||||
Highcharts JS v7.2.1 (2019-10-31)
|
||||
Highcharts JS v7.2.2 (2020-08-24)
|
||||
|
||||
(c) 2009-2018 Torstein Honsi
|
||||
|
||||
|
|
@ -95342,7 +95342,7 @@ var __WEBPACK_AMD_DEFINE_RESULT__;/*
|
|||
*/
|
||||
(function(P,M){ true&&module.exports?(M["default"]=M,module.exports=P.document?M(P):M): true?!(__WEBPACK_AMD_DEFINE_RESULT__ = (function(){return M(P)}).call(exports, __webpack_require__, exports, module),
|
||||
__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)):(undefined)})("undefined"!==typeof window?window:this,function(P){function M(c,f,F,G){c.hasOwnProperty(f)||(c[f]=G.apply(null,F))}var I={};M(I,"parts/Globals.js",[],function(){var c="undefined"!==typeof P?P:"undefined"!==typeof window?window:{},f=c.document,
|
||||
F=c.navigator&&c.navigator.userAgent||"",G=f&&f.createElementNS&&!!f.createElementNS("http://www.w3.org/2000/svg","svg").createSVGRect,z=/(edge|msie|trident)/i.test(F)&&!c.opera,B=-1!==F.indexOf("Firefox"),t=-1!==F.indexOf("Chrome"),v=B&&4>parseInt(F.split("Firefox/")[1],10);return{product:"Highcharts",version:"7.2.1",deg2rad:2*Math.PI/360,doc:f,hasBidiBug:v,hasTouch:!!c.TouchEvent,isMS:z,isWebKit:-1!==F.indexOf("AppleWebKit"),isFirefox:B,isChrome:t,isSafari:!t&&-1!==F.indexOf("Safari"),isTouchDevice:/(Mobile|Android|Windows Phone)/.test(F),
|
||||
F=c.navigator&&c.navigator.userAgent||"",G=f&&f.createElementNS&&!!f.createElementNS("http://www.w3.org/2000/svg","svg").createSVGRect,z=/(edge|msie|trident)/i.test(F)&&!c.opera,B=-1!==F.indexOf("Firefox"),t=-1!==F.indexOf("Chrome"),v=B&&4>parseInt(F.split("Firefox/")[1],10);return{product:"Highcharts",version:"7.2.2",deg2rad:2*Math.PI/360,doc:f,hasBidiBug:v,hasTouch:!!c.TouchEvent,isMS:z,isWebKit:-1!==F.indexOf("AppleWebKit"),isFirefox:B,isChrome:t,isSafari:!t&&-1!==F.indexOf("Safari"),isTouchDevice:/(Mobile|Android|Windows Phone)/.test(F),
|
||||
SVG_NS:"http://www.w3.org/2000/svg",chartCount:0,seriesTypes:{},symbolSizes:{},svg:G,win:c,marginNames:["plotTop","marginRight","marginBottom","plotLeft"],noop:function(){},charts:[],dateFormats:{}}});M(I,"parts/Utilities.js",[I["parts/Globals.js"]],function(c){function f(a,d){return parseInt(a,d||10)}function F(a){return"string"===typeof a}function G(a){a=Object.prototype.toString.call(a);return"[object Array]"===a||"[object Array Iterator]"===a}function z(a,d){return!!a&&"object"===typeof a&&(!d||
|
||||
!G(a))}function B(a){return z(a)&&"number"===typeof a.nodeType}function t(a){var d=a&&a.constructor;return!(!z(a,!0)||B(a)||!d||!d.name||"Object"===d.name)}function v(a){return"number"===typeof a&&!isNaN(a)&&Infinity>a&&-Infinity<a}function C(a){return"undefined"!==typeof a&&null!==a}function H(a,d,e){var b;F(d)?C(e)?a.setAttribute(d,e):a&&a.getAttribute&&((b=a.getAttribute(d))||"class"!==d||(b=a.getAttribute(d+"Name"))):n(d,function(d,e){a.setAttribute(e,d)});return b}function y(a,d){var e;a||(a=
|
||||
{});for(e in d)a[e]=d[e];return a}function h(){for(var a=arguments,d=a.length,e=0;e<d;e++){var b=a[e];if("undefined"!==typeof b&&null!==b)return b}}function n(a,d,e){for(var b in a)Object.hasOwnProperty.call(a,b)&&d.call(e||a[b],a[b],b,a)}c.timers=[];var q=c.charts,g=c.doc,b=c.win;c.error=function(a,d,e,l){var g=v(a),h=g?"Highcharts error #"+a+": www.highcharts.com/errors/"+a+"/":a.toString(),p=function(){if(d)throw Error(h);b.console&&console.log(h)};if("undefined"!==typeof l){var u="";g&&(h+="?");
|
||||
|
|
@ -95403,7 +95403,7 @@ a.firstChild.removeChild(this.textPathWrapper.element);delete b.textPathWrapper}
|
|||
w.removeAttribute("data-z-index");this[b]=a;if(D){(a=this.zIndex)&&e&&(e.handleZ=!0);b=m.childNodes;for(l=b.length-1;0<=l&&!k;l--){e=b[l];D=e.getAttribute("data-z-index");var g=!G(D);if(e!==w)if(0>a&&g&&!d&&!l)m.insertBefore(w,b[l]),k=!0;else if(q(D)<=a||g&&(!G(a)||0<=a))m.insertBefore(w,b[l+1]||null),k=!0}k||(m.insertBefore(w,b[d?3:0]||null),k=!0)}return k},_defaultSetter:function(a,b,d){d.setAttribute(b,a)}});O.prototype.yGetter=O.prototype.xGetter;O.prototype.translateXSetter=O.prototype.translateYSetter=
|
||||
O.prototype.rotationSetter=O.prototype.verticalAlignSetter=O.prototype.rotationOriginXSetter=O.prototype.rotationOriginYSetter=O.prototype.scaleXSetter=O.prototype.scaleYSetter=O.prototype.matrixSetter=function(a,b){this[b]=a;this.doTransform=!0};O.prototype["stroke-widthSetter"]=O.prototype.strokeSetter=function(a,b,d){this[b]=a;this.stroke&&this["stroke-width"]?(O.prototype.fillSetter.call(this,this.stroke,"stroke",d),d.setAttribute("stroke-width",this["stroke-width"]),this.hasStroke=!0):"stroke-width"===
|
||||
b&&0===a&&this.hasStroke?(d.removeAttribute("stroke"),this.hasStroke=!1):this.renderer.styledMode&&this["stroke-width"]&&(d.setAttribute("stroke-width",this["stroke-width"]),this.hasStroke=!0)};f=c.SVGRenderer=function(){this.init.apply(this,arguments)};t(f.prototype,{Element:O,SVG_NS:U,init:function(a,d,e,m,w,g,r){var D=this.createElement("svg").attr({version:"1.1","class":"highcharts-root"});r||D.css(this.getStyle(m));m=D.element;a.appendChild(m);F(a,"dir","ltr");-1===a.innerHTML.indexOf("xmlns")&&
|
||||
F(m,"xmlns",this.SVG_NS);this.isSVG=!0;this.box=m;this.boxWrapper=D;this.alignedObjects=[];this.url=(k||x)&&p.getElementsByTagName("base").length?Q.location.href.split("#")[0].replace(/<[^>]*>/g,"").replace(/([\('\)])/g,"\\$1").replace(/ /g,"%20"):"";this.createElement("desc").add().element.appendChild(p.createTextNode("Created with Highcharts 7.2.1"));this.defs=this.createElement("defs").add();this.allowHTML=g;this.forExport=w;this.styledMode=r;this.gradients={};this.cache={};this.cacheKeys=[];this.imgCount=
|
||||
F(m,"xmlns",this.SVG_NS);this.isSVG=!0;this.box=m;this.boxWrapper=D;this.alignedObjects=[];this.url=(k||x)&&p.getElementsByTagName("base").length?Q.location.href.split("#")[0].replace(/<[^>]*>/g,"").replace(/([\('\)])/g,"\\$1").replace(/ /g,"%20"):"";this.createElement("desc").add().element.appendChild(p.createTextNode("Created with Highcharts 7.2.2"));this.defs=this.createElement("defs").add();this.allowHTML=g;this.forExport=w;this.styledMode=r;this.gradients={};this.cache={};this.cacheKeys=[];this.imgCount=
|
||||
0;this.setSize(d,e,!1);var c;k&&a.getBoundingClientRect&&(d=function(){l(a,{left:0,top:0});c=a.getBoundingClientRect();l(a,{left:Math.ceil(c.left)-c.left+"px",top:Math.ceil(c.top)-c.top+"px"})},d(),this.unSubPixelFix=b(Q,"resize",d))},definition:function(a){function b(a,e){var m;g(a).forEach(function(a){var w=d.createElement(a.tagName),k={};h(a,function(a,b){"tagName"!==b&&"children"!==b&&"textContent"!==b&&(k[b]=a)});w.attr(k);w.add(e||d.defs);a.textContent&&w.element.appendChild(p.createTextNode(a.textContent));
|
||||
b(a.children||[],w);m=w});return m}var d=this;return b(a)},getStyle:function(a){return this.style=t({fontFamily:'"Lucida Grande", "Lucida Sans Unicode", Arial, Helvetica, sans-serif',fontSize:"12px"},a)},setStyle:function(a){this.boxWrapper.css(this.getStyle(a))},isHidden:function(){return!this.boxWrapper.getBBox().width},destroy:function(){var a=this.defs;this.box=null;this.boxWrapper=this.boxWrapper.destroy();z(this.gradients||{});this.gradients=null;a&&(this.defs=a.destroy());this.unSubPixelFix&&
|
||||
this.unSubPixelFix();return this.alignedObjects=null},createElement:function(a){var b=new this.Element;b.init(this,a);return b},draw:w,getRadialAttr:function(a,b){return{cx:a[0]-a[2]/2+b.cx*a[2],cy:a[1]-a[2]/2+b.cy*a[2],r:b.r*a[2]}},truncate:function(a,b,d,e,m,w,k){var l=this,D=a.rotation,g,r=e?1:0,c=(d||e).length,x=c,J=[],K=function(a){b.firstChild&&b.removeChild(b.firstChild);a&&b.appendChild(p.createTextNode(a))},N=function(w,D){D=D||w;if(void 0===J[D])if(b.getSubStringLength)try{J[D]=m+b.getSubStringLength(0,
|
||||
|
|
@ -95411,43 +95411,43 @@ e?D+1:D)}catch(ba){""}else l.getSpanWidth&&(K(k(d||e,w)),J[D]=m+l.getSpanWidth(a
|
|||
w=-1!==m.indexOf("<"),k=b.childNodes,D,g=F(b,"x"),r=a.styles,c=a.textWidth,x=r&&r.lineHeight,K=r&&r.textOutline,A=r&&"ellipsis"===r.textOverflow,u=r&&"nowrap"===r.whiteSpace,L=r&&r.fontSize,E,f=k.length;r=c&&!a.added&&this.box;var S=function(a){var m;d.styledMode||(m=/(px|em)$/.test(a&&a.style.fontSize)?a.style.fontSize:L||d.style.fontSize||12);return x?q(x):d.fontMetrics(m,a.getAttribute("style")?a:b).h},v=function(a,b){h(d.escapes,function(d,m){b&&-1!==b.indexOf(d)||(a=a.toString().replace(new RegExp(d,
|
||||
"g"),m))});return a},O=function(a,b){var d=a.indexOf("<");a=a.substring(d,a.indexOf(">")-d);d=a.indexOf(b+"=");if(-1!==d&&(d=d+b.length+1,b=a.charAt(d),'"'===b||"'"===b))return a=a.substring(d+1),a.substring(0,a.indexOf(b))},Q=/<br.*?>/g;var t=[m,A,u,x,K,L,c].join();if(t!==a.textCache){for(a.textCache=t;f--;)b.removeChild(k[f]);w||K||A||c||-1!==m.indexOf(" ")&&(!u||Q.test(m))?(r&&r.appendChild(b),w?(m=d.styledMode?m.replace(/<(b|strong)>/g,'<span class="highcharts-strong">').replace(/<(i|em)>/g,'<span class="highcharts-emphasized">'):
|
||||
m.replace(/<(b|strong)>/g,'<span style="font-weight:bold">').replace(/<(i|em)>/g,'<span style="font-style:italic">'),m=m.replace(/<a/g,"<span").replace(/<\/(b|strong|i|em|a)>/g,"</span>").split(Q)):m=[m],m=m.filter(function(a){return""!==a}),m.forEach(function(m,w){var k=0,r=0;m=m.replace(/^\s+|\s+$/g,"").replace(/<span/g,"|||<span").replace(/<\/span>/g,"</span>|||");var x=m.split("|||");x.forEach(function(m){if(""!==m||1===x.length){var K={},N=p.createElementNS(d.SVG_NS,"tspan"),h,n;(h=O(m,"class"))&&
|
||||
F(N,"class",h);if(h=O(m,"style"))h=h.replace(/(;| |^)color([ :])/,"$1fill$2"),F(N,"style",h);(n=O(m,"href"))&&!e&&(F(N,"onclick",'location.href="'+n+'"'),F(N,"class","highcharts-anchor"),d.styledMode||l(N,{cursor:"pointer"}));m=v(m.replace(/<[a-zA-Z\/](.|\n)*?>/g,"")||" ");if(" "!==m){N.appendChild(p.createTextNode(m));k?K.dx=0:w&&null!==g&&(K.x=g);F(N,K);b.appendChild(N);!k&&E&&(!J&&e&&l(N,{display:"block"}),F(N,"dy",S(N)));if(c){var T=m.replace(/([^\^])-/g,"$1- ").split(" ");K=!u&&(1<x.length||
|
||||
w||1<T.length);n=0;var f=S(N);if(A)D=d.truncate(a,N,m,void 0,0,Math.max(0,c-parseInt(L||12,10)),function(a,b){return a.substring(0,b)+"\u2026"});else if(K)for(;T.length;)T.length&&!u&&0<n&&(N=p.createElementNS(U,"tspan"),F(N,{dy:f,x:g}),h&&F(N,"style",h),N.appendChild(p.createTextNode(T.join(" ").replace(/- /g,"-"))),b.appendChild(N)),d.truncate(a,N,null,T,0===n?r:0,c,function(a,b){return T.slice(0,b).join(" ").replace(/- /g,"-")}),r=a.actualWidth,n++}k++}}});E=E||b.childNodes.length}),A&&D&&a.attr("title",
|
||||
v(a.textStr,["<",">"])),r&&r.removeChild(b),K&&a.applyTextOutline&&a.applyTextOutline(K)):b.appendChild(p.createTextNode(v(m)))}},getContrast:function(a){a=e(a).rgba;a[0]*=1;a[1]*=1.2;a[2]*=.5;return 459<a[0]+a[1]+a[2]?"#000000":"#FFFFFF"},button:function(a,d,m,e,w,k,l,g,c,x){var D=this.label(a,d,m,c,null,null,x,null,"button"),p=0,K=this.styledMode;D.attr(A({padding:8,r:2},w));if(!K){w=A({fill:"#f7f7f7",stroke:"#cccccc","stroke-width":1,style:{color:"#333333",cursor:"pointer",fontWeight:"normal"}},
|
||||
w);var J=w.style;delete w.style;k=A(w,{fill:"#e6e6e6"},k);var N=k.style;delete k.style;l=A(w,{fill:"#e6ebf5",style:{color:"#000000",fontWeight:"bold"}},l);var h=l.style;delete l.style;g=A(w,{style:{color:"#cccccc"}},g);var u=g.style;delete g.style}b(D.element,r?"mouseover":"mouseenter",function(){3!==p&&D.setState(1)});b(D.element,r?"mouseout":"mouseleave",function(){3!==p&&D.setState(p)});D.setState=function(a){1!==a&&(D.state=p=a);D.removeClass(/highcharts-button-(normal|hover|pressed|disabled)/).addClass("highcharts-button-"+
|
||||
["normal","hover","pressed","disabled"][a||0]);K||D.attr([w,k,l,g][a||0]).css([J,N,h,u][a||0])};K||D.attr(w).css(t({cursor:"default"},J));return D.on("click",function(a){3!==p&&e.call(D,a)})},crispLine:function(a,b){a[1]===a[4]&&(a[1]=a[4]=Math.round(a[1])-b%2/2);a[2]===a[5]&&(a[2]=a[5]=Math.round(a[2])+b%2/2);return a},path:function(a){var b=this.styledMode?{}:{fill:"none"};v(a)?b.d=a:H(a)&&t(b,a);return this.createElement("path").attr(b)},circle:function(a,b,d){a=H(a)?a:void 0===a?{}:{x:a,y:b,r:d};
|
||||
b=this.createElement("circle");b.xSetter=b.ySetter=function(a,b,d){d.setAttribute("c"+b,a)};return b.attr(a)},arc:function(a,b,d,m,e,w){H(a)?(m=a,b=m.y,d=m.r,a=m.x):m={innerR:m,start:e,end:w};a=this.symbol("arc",a,b,d,d,m);a.r=d;return a},rect:function(a,b,d,m,e,w){e=H(a)?a.r:e;var k=this.createElement("rect");a=H(a)?a:void 0===a?{}:{x:a,y:b,width:Math.max(d,0),height:Math.max(m,0)};this.styledMode||(void 0!==w&&(a.strokeWidth=w,a=k.crisp(a)),a.fill="none");e&&(a.r=e);k.rSetter=function(a,b,d){k.r=
|
||||
a;F(d,{rx:a,ry:a})};k.rGetter=function(){return k.r};return k.attr(a)},setSize:function(a,b,d){var m=this.alignedObjects,e=m.length;this.width=a;this.height=b;for(this.boxWrapper.animate({width:a,height:b},{step:function(){this.attr({viewBox:"0 0 "+this.attr("width")+" "+this.attr("height")})},duration:n(d,!0)?void 0:0});e--;)m[e].align()},g:function(a){var b=this.createElement("g");return a?b.attr({"class":"highcharts-"+a}):b},image:function(a,d,m,e,w,k){var l={preserveAspectRatio:"none"},g=function(a,
|
||||
b){a.setAttributeNS?a.setAttributeNS("http://www.w3.org/1999/xlink","href",b):a.setAttribute("hc-svg-href",b)},r=function(b){g(c.element,a);k.call(c,b)};1<arguments.length&&t(l,{x:d,y:m,width:e,height:w});var c=this.createElement("image").attr(l);k?(g(c.element,"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="),l=new Q.Image,b(l,"load",r),l.src=a,l.complete&&r({})):g(c.element,a);return c},symbol:function(a,b,m,e,w,k){var g=this,r=/^url\((.*?)\)$/,c=r.test(a),D=!c&&(this.symbols[a]?
|
||||
a:"circle"),x=D&&this.symbols[D],K=G(b)&&x&&x.call(this.symbols,Math.round(b),Math.round(m),e,w,k);if(x){var J=this.path(K);g.styledMode||J.attr("fill","none");t(J,{symbolName:D,x:b,y:m,width:e,height:w});k&&t(J,k)}else if(c){var A=a.match(r)[1];J=this.image(A);J.imgwidth=n(S[A]&&S[A].width,k&&k.width);J.imgheight=n(S[A]&&S[A].height,k&&k.height);var h=function(){J.attr({width:J.width,height:J.height})};["width","height"].forEach(function(a){J[a+"Setter"]=function(a,b){var d={},m=this["img"+b],e=
|
||||
"width"===b?"translateX":"translateY";this[b]=a;G(m)&&(k&&"within"===k.backgroundSize&&this.width&&this.height&&(m=Math.round(m*Math.min(this.width/this.imgwidth,this.height/this.imgheight))),this.element&&this.element.setAttribute(b,m),this.alignByTranslate||(d[e]=((this[b]||0)-m)/2,this.attr(d)))}});G(b)&&J.attr({x:b,y:m});J.isImg=!0;G(J.imgwidth)&&G(J.imgheight)?h():(J.attr({width:0,height:0}),L("img",{onload:function(){var a=d[g.chartIndex];0===this.width&&(l(this,{position:"absolute",top:"-999em"}),
|
||||
p.body.appendChild(this));S[A]={width:this.width,height:this.height};J.imgwidth=this.width;J.imgheight=this.height;J.element&&h();this.parentNode&&this.parentNode.removeChild(this);g.imgCount--;if(!g.imgCount&&a&&a.onload)a.onload()},src:A}),this.imgCount++)}return J},symbols:{circle:function(a,b,d,m){return this.arc(a+d/2,b+m/2,d/2,m/2,{start:.5*Math.PI,end:2.5*Math.PI,open:!1})},square:function(a,b,d,m){return["M",a,b,"L",a+d,b,a+d,b+m,a,b+m,"Z"]},triangle:function(a,b,d,m){return["M",a+d/2,b,"L",
|
||||
a+d,b+m,a,b+m,"Z"]},"triangle-down":function(a,b,d,m){return["M",a,b,"L",a+d,b,a+d/2,b+m,"Z"]},diamond:function(a,b,d,m){return["M",a+d/2,b,"L",a+d,b+m/2,a+d/2,b+m,a,b+m/2,"Z"]},arc:function(a,b,d,m,e){var w=e.start,k=e.r||d,l=e.r||m||d,g=e.end-.001;d=e.innerR;m=n(e.open,.001>Math.abs(e.end-e.start-2*Math.PI));var r=Math.cos(w),c=Math.sin(w),x=Math.cos(g);g=Math.sin(g);w=.001>e.end-w-Math.PI?0:1;e=["M",a+k*r,b+l*c,"A",k,l,0,w,n(e.clockwise,1),a+k*x,b+l*g];G(d)&&e.push(m?"M":"L",a+d*x,b+d*g,"A",d,
|
||||
d,0,w,0,a+d*r,b+d*c);e.push(m?"":"Z");return e},callout:function(a,b,d,m,e){var w=Math.min(e&&e.r||0,d,m),k=w+6,l=e&&e.anchorX;e=e&&e.anchorY;var g=["M",a+w,b,"L",a+d-w,b,"C",a+d,b,a+d,b,a+d,b+w,"L",a+d,b+m-w,"C",a+d,b+m,a+d,b+m,a+d-w,b+m,"L",a+w,b+m,"C",a,b+m,a,b+m,a,b+m-w,"L",a,b+w,"C",a,b,a,b,a+w,b];l&&l>d?e>b+k&&e<b+m-k?g.splice(13,3,"L",a+d,e-6,a+d+6,e,a+d,e+6,a+d,b+m-w):g.splice(13,3,"L",a+d,m/2,l,e,a+d,m/2,a+d,b+m-w):l&&0>l?e>b+k&&e<b+m-k?g.splice(33,3,"L",a,e+6,a-6,e,a,e-6,a,b+w):g.splice(33,
|
||||
3,"L",a,m/2,l,e,a,m/2,a,b+w):e&&e>m&&l>a+k&&l<a+d-k?g.splice(23,3,"L",l+6,b+m,l,b+m+6,l-6,b+m,a+w,b+m):e&&0>e&&l>a+k&&l<a+d-k&&g.splice(3,3,"L",l-6,b,l,b-6,l+6,b,d-w,b);return g}},clipRect:function(a,b,d,m){var e=c.uniqueKey()+"-",w=this.createElement("clipPath").attr({id:e}).add(this.defs);a=this.rect(a,b,d,m,0).add(w);a.id=e;a.clipPath=w;a.count=0;return a},text:function(a,b,d,m){var e={};if(m&&(this.allowHTML||!this.forExport))return this.html(a,b,d);e.x=Math.round(b||0);d&&(e.y=Math.round(d));
|
||||
G(a)&&(e.text=a);a=this.createElement("text").attr(e);m||(a.xSetter=function(a,b,d){var m=d.getElementsByTagName("tspan"),e=d.getAttribute(b),w;for(w=0;w<m.length;w++){var k=m[w];k.getAttribute(b)===e&&k.setAttribute(b,a)}d.setAttribute(b,a)});return a},fontMetrics:function(a,b){a=!this.styledMode&&/px/.test(a)||!Q.getComputedStyle?a||b&&b.style&&b.style.fontSize||this.style&&this.style.fontSize:b&&O.prototype.getStyle.call(b,"font-size");a=/px/.test(a)?q(a):12;b=24>a?a+3:Math.round(1.2*a);return{h:b,
|
||||
b:Math.round(.8*b),f:a}},rotCorr:function(a,b,d){var m=a;b&&d&&(m=Math.max(m*Math.cos(b*E),4));return{x:-a/3*Math.sin(b*E),y:m}},label:function(a,b,d,e,w,k,l,g,r){var c=this,x=c.styledMode,J=c.g("button"!==r&&"label"),p=J.text=c.text("",0,0,l).attr({zIndex:1}),K,h,D=0,u=3,L=0,n,N,E,U,f,q={},T,S,v=/^url\((.*?)\)$/.test(e),Q=x||v,y=function(){return x?K.strokeWidth()%2/2:(T?parseInt(T,10):0)%2/2};r&&J.addClass("highcharts-"+r);var R=function(){var a=p.element.style,b={};h=(void 0===n||void 0===N||f)&&
|
||||
G(p.textStr)&&p.getBBox();J.width=(n||h.width||0)+2*u+L;J.height=(N||h.height||0)+2*u;S=u+Math.min(c.fontMetrics(a&&a.fontSize,p).b,h?h.height:Infinity);Q&&(K||(J.box=K=c.symbols[e]||v?c.symbol(e):c.rect(),K.addClass(("button"===r?"":"highcharts-label-box")+(r?" highcharts-"+r+"-box":"")),K.add(J),a=y(),b.x=a,b.y=(g?-S:0)+a),b.width=Math.round(J.width),b.height=Math.round(J.height),K.attr(t(b,q)),q={})};var B=function(){var a=L+u;var b=g?0:S;G(n)&&h&&("center"===f||"right"===f)&&(a+={center:.5,right:1}[f]*
|
||||
(n-h.width));if(a!==p.x||b!==p.y)p.attr("x",a),p.hasBoxWidthChanged&&(h=p.getBBox(!0),R()),void 0!==b&&p.attr("y",b);p.x=a;p.y=b};var V=function(a,b){K?K.attr(a,b):q[a]=b};J.onAdd=function(){p.add(J);J.attr({text:a||0===a?a:"",x:b,y:d});K&&G(w)&&J.attr({anchorX:w,anchorY:k})};J.widthSetter=function(a){n=C(a)?a:null};J.heightSetter=function(a){N=a};J["text-alignSetter"]=function(a){f=a};J.paddingSetter=function(a){G(a)&&a!==u&&(u=J.padding=a,B())};J.paddingLeftSetter=function(a){G(a)&&a!==L&&(L=a,
|
||||
B())};J.alignSetter=function(a){a={left:0,center:.5,right:1}[a];a!==D&&(D=a,h&&J.attr({x:E}))};J.textSetter=function(a){void 0!==a&&p.attr({text:a});R();B()};J["stroke-widthSetter"]=function(a,b){a&&(Q=!0);T=this["stroke-width"]=a;V(b,a)};x?J.rSetter=function(a,b){V(b,a)}:J.strokeSetter=J.fillSetter=J.rSetter=function(a,b){"r"!==b&&("fill"===b&&a&&(Q=!0),J[b]=a);V(b,a)};J.anchorXSetter=function(a,b){w=J.anchorX=a;V(b,Math.round(a)-y()-E)};J.anchorYSetter=function(a,b){k=J.anchorY=a;V(b,a-U)};J.xSetter=
|
||||
function(a){J.x=a;D&&(a-=D*((n||h.width)+2*u),J["forceAnimate:x"]=!0);E=Math.round(a);J.attr("translateX",E)};J.ySetter=function(a){U=J.y=Math.round(a);J.attr("translateY",U)};var H=J.css;l={css:function(a){if(a){var b={};a=A(a);J.textProps.forEach(function(d){void 0!==a[d]&&(b[d]=a[d],delete a[d])});p.css(b);"width"in b&&R();"fontSize"in b&&(R(),B())}return H.call(J,a)},getBBox:function(){return{width:h.width+2*u,height:h.height+2*u,x:h.x-u,y:h.y-u}},destroy:function(){m(J.element,"mouseenter");
|
||||
m(J.element,"mouseleave");p&&(p=p.destroy());K&&(K=K.destroy());O.prototype.destroy.call(J);J=c=R=B=V=null}};x||(l.shadow=function(a){a&&(R(),K&&K.shadow(a));return J});return t(J,l)}});c.Renderer=f});M(I,"parts/Html.js",[I["parts/Globals.js"],I["parts/Utilities.js"]],function(c,f){var F=f.attr,G=f.defined,z=f.extend,B=f.pick,t=f.pInt,v=c.createElement,C=c.css,H=c.isFirefox,y=c.isMS,h=c.isWebKit,n=c.SVGElement;f=c.SVGRenderer;var q=c.win;z(n.prototype,{htmlCss:function(g){var b="SPAN"===this.element.tagName&&
|
||||
g&&"width"in g,a=B(b&&g.width,void 0);if(b){delete g.width;this.textWidth=a;var d=!0}g&&"ellipsis"===g.textOverflow&&(g.whiteSpace="nowrap",g.overflow="hidden");this.styles=z(this.styles,g);C(this.element,g);d&&this.htmlUpdateTransform();return this},htmlGetBBox:function(){var g=this.element;return{x:g.offsetLeft,y:g.offsetTop,width:g.offsetWidth,height:g.offsetHeight}},htmlUpdateTransform:function(){if(this.added){var g=this.renderer,b=this.element,a=this.translateX||0,d=this.translateY||0,e=this.x||
|
||||
0,l=this.y||0,c=this.textAlign||"left",h={left:0,center:.5,right:1}[c],p=this.styles,u=p&&p.whiteSpace;C(b,{marginLeft:a,marginTop:d});!g.styledMode&&this.shadows&&this.shadows.forEach(function(b){C(b,{marginLeft:a+1,marginTop:d+1})});this.inverted&&[].forEach.call(b.childNodes,function(a){g.invertChild(a,b)});if("SPAN"===b.tagName){p=this.rotation;var k=this.textWidth&&t(this.textWidth),r=[p,c,b.innerHTML,this.textWidth,this.textAlign].join(),x;(x=k!==this.oldTextWidth)&&!(x=k>this.oldTextWidth)&&
|
||||
((x=this.textPxLength)||(C(b,{width:"",whiteSpace:u||"nowrap"}),x=b.offsetWidth),x=x>k);x&&(/[ \-]/.test(b.textContent||b.innerText)||"ellipsis"===b.style.textOverflow)?(C(b,{width:k+"px",display:"block",whiteSpace:u||"normal"}),this.oldTextWidth=k,this.hasBoxWidthChanged=!0):this.hasBoxWidthChanged=!1;r!==this.cTT&&(u=g.fontMetrics(b.style.fontSize,b).b,!G(p)||p===(this.oldRotation||0)&&c===this.oldAlign||this.setSpanRotation(p,h,u),this.getSpanCorrection(!G(p)&&this.textPxLength||b.offsetWidth,
|
||||
u,h,p,c));C(b,{left:e+(this.xCorr||0)+"px",top:l+(this.yCorr||0)+"px"});this.cTT=r;this.oldRotation=p;this.oldAlign=c}}else this.alignOnAdd=!0},setSpanRotation:function(g,b,a){var d={},e=this.renderer.getTransformKey();d[e]=d.transform="rotate("+g+"deg)";d[e+(H?"Origin":"-origin")]=d.transformOrigin=100*b+"% "+a+"px";C(this.element,d)},getSpanCorrection:function(g,b,a){this.xCorr=-g*a;this.yCorr=-b}});z(f.prototype,{getTransformKey:function(){return y&&!/Edge/.test(q.navigator.userAgent)?"-ms-transform":
|
||||
h?"-webkit-transform":H?"MozTransform":q.opera?"-o-transform":""},html:function(g,b,a){var d=this.createElement("span"),e=d.element,l=d.renderer,c=l.isSVG,h=function(a,b){["opacity","visibility"].forEach(function(d){a[d+"Setter"]=function(e,k,l){var w=a.div?a.div.style:b;n.prototype[d+"Setter"].call(this,e,k,l);w&&(w[k]=e)}});a.addedSetters=!0};d.textSetter=function(a){a!==e.innerHTML&&(delete this.bBox,delete this.oldTextWidth);this.textStr=a;e.innerHTML=B(a,"");d.doTransform=!0};c&&h(d,d.element.style);
|
||||
d.xSetter=d.ySetter=d.alignSetter=d.rotationSetter=function(a,b){"align"===b&&(b="textAlign");d[b]=a;d.doTransform=!0};d.afterSetters=function(){this.doTransform&&(this.htmlUpdateTransform(),this.doTransform=!1)};d.attr({text:g,x:Math.round(b),y:Math.round(a)}).css({position:"absolute"});l.styledMode||d.css({fontFamily:this.style.fontFamily,fontSize:this.style.fontSize});e.style.whiteSpace="nowrap";d.css=d.htmlCss;c&&(d.add=function(a){var b=l.box.parentNode,k=[];if(this.parentGroup=a){var g=a.div;
|
||||
if(!g){for(;a;)k.push(a),a=a.parentGroup;k.reverse().forEach(function(a){function e(b,d){a[d]=b;"translateX"===d?m.left=b+"px":m.top=b+"px";a.doTransform=!0}var w=F(a.element,"class");g=a.div=a.div||v("div",w?{className:w}:void 0,{position:"absolute",left:(a.translateX||0)+"px",top:(a.translateY||0)+"px",display:a.display,opacity:a.opacity,pointerEvents:a.styles&&a.styles.pointerEvents},g||b);var m=g.style;z(a,{classSetter:function(a){return function(b){this.element.setAttribute("class",b);a.className=
|
||||
b}}(g),on:function(){k[0].div&&d.on.apply({element:k[0].div},arguments);return a},translateXSetter:e,translateYSetter:e});a.addedSetters||h(a)})}}else g=b;g.appendChild(e);d.added=!0;d.alignOnAdd&&d.htmlUpdateTransform();return d});return d}})});M(I,"parts/Time.js",[I["parts/Globals.js"],I["parts/Utilities.js"]],function(c,f){var F=f.defined,G=f.extend,z=f.isObject,B=f.objectEach,t=f.pick,v=f.splat,C=c.merge,H=c.timeUnits,y=c.win;c.Time=function(c){this.update(c,!1)};c.Time.prototype={defaultOptions:{Date:void 0,
|
||||
getTimezoneOffset:void 0,timezone:void 0,timezoneOffset:0,useUTC:!0},update:function(c){var h=t(c&&c.useUTC,!0),f=this;this.options=c=C(!0,this.options||{},c);this.Date=c.Date||y.Date||Date;this.timezoneOffset=(this.useUTC=h)&&c.timezoneOffset;this.getTimezoneOffset=this.timezoneOffsetFunction();(this.variableTimezone=!(h&&!c.getTimezoneOffset&&!c.timezone))||this.timezoneOffset?(this.get=function(g,b){var a=b.getTime(),d=a-f.getTimezoneOffset(b);b.setTime(d);g=b["getUTC"+g]();b.setTime(a);return g},
|
||||
this.set=function(g,b,a){if("Milliseconds"===g||"Seconds"===g||"Minutes"===g&&0===b.getTimezoneOffset()%60)b["set"+g](a);else{var d=f.getTimezoneOffset(b);d=b.getTime()-d;b.setTime(d);b["setUTC"+g](a);g=f.getTimezoneOffset(b);d=b.getTime()+g;b.setTime(d)}}):h?(this.get=function(g,b){return b["getUTC"+g]()},this.set=function(g,b,a){return b["setUTC"+g](a)}):(this.get=function(g,b){return b["get"+g]()},this.set=function(g,b,a){return b["set"+g](a)})},makeTime:function(h,n,f,g,b,a){if(this.useUTC){var d=
|
||||
this.Date.UTC.apply(0,arguments);var e=this.getTimezoneOffset(d);d+=e;var l=this.getTimezoneOffset(d);e!==l?d+=l-e:e-36E5!==this.getTimezoneOffset(d-36E5)||c.isSafari||(d-=36E5)}else d=(new this.Date(h,n,t(f,1),t(g,0),t(b,0),t(a,0))).getTime();return d},timezoneOffsetFunction:function(){var h=this,n=this.options,f=y.moment;if(!this.useUTC)return function(g){return 6E4*(new Date(g)).getTimezoneOffset()};if(n.timezone){if(f)return function(g){return 6E4*-f.tz(g,n.timezone).utcOffset()};c.error(25)}return this.useUTC&&
|
||||
n.getTimezoneOffset?function(g){return 6E4*n.getTimezoneOffset(g)}:function(){return 6E4*(h.timezoneOffset||0)}},dateFormat:function(h,n,f){if(!F(n)||isNaN(n))return c.defaultOptions.lang.invalidDate||"";h=t(h,"%Y-%m-%d %H:%M:%S");var g=this,b=new this.Date(n),a=this.get("Hours",b),d=this.get("Day",b),e=this.get("Date",b),l=this.get("Month",b),L=this.get("FullYear",b),E=c.defaultOptions.lang,p=E.weekdays,u=E.shortWeekdays,k=c.pad;b=G({a:u?u[d]:p[d].substr(0,3),A:p[d],d:k(e),e:k(e,2," "),w:d,b:E.shortMonths[l],
|
||||
B:E.months[l],m:k(l+1),o:l+1,y:L.toString().substr(2,2),Y:L,H:k(a),k:a,I:k(a%12||12),l:a%12||12,M:k(g.get("Minutes",b)),p:12>a?"AM":"PM",P:12>a?"am":"pm",S:k(b.getSeconds()),L:k(Math.floor(n%1E3),3)},c.dateFormats);B(b,function(a,b){for(;-1!==h.indexOf("%"+b);)h=h.replace("%"+b,"function"===typeof a?a.call(g,n):a)});return f?h.substr(0,1).toUpperCase()+h.substr(1):h},resolveDTLFormat:function(c){return z(c,!0)?c:(c=v(c),{main:c[0],from:c[1],to:c[2]})},getTimeTicks:function(c,n,f,g){var b=this,a=[],
|
||||
d={};var e=new b.Date(n);var l=c.unitRange,h=c.count||1,E;g=t(g,1);if(F(n)){b.set("Milliseconds",e,l>=H.second?0:h*Math.floor(b.get("Milliseconds",e)/h));l>=H.second&&b.set("Seconds",e,l>=H.minute?0:h*Math.floor(b.get("Seconds",e)/h));l>=H.minute&&b.set("Minutes",e,l>=H.hour?0:h*Math.floor(b.get("Minutes",e)/h));l>=H.hour&&b.set("Hours",e,l>=H.day?0:h*Math.floor(b.get("Hours",e)/h));l>=H.day&&b.set("Date",e,l>=H.month?1:Math.max(1,h*Math.floor(b.get("Date",e)/h)));if(l>=H.month){b.set("Month",e,l>=
|
||||
H.year?0:h*Math.floor(b.get("Month",e)/h));var p=b.get("FullYear",e)}l>=H.year&&b.set("FullYear",e,p-p%h);l===H.week&&(p=b.get("Day",e),b.set("Date",e,b.get("Date",e)-p+g+(p<g?-7:0)));p=b.get("FullYear",e);g=b.get("Month",e);var u=b.get("Date",e),k=b.get("Hours",e);n=e.getTime();b.variableTimezone&&(E=f-n>4*H.month||b.getTimezoneOffset(n)!==b.getTimezoneOffset(f));n=e.getTime();for(e=1;n<f;)a.push(n),n=l===H.year?b.makeTime(p+e*h,0):l===H.month?b.makeTime(p,g+e*h):!E||l!==H.day&&l!==H.week?E&&l===
|
||||
H.hour&&1<h?b.makeTime(p,g,u,k+e*h):n+l*h:b.makeTime(p,g,u+e*h*(l===H.day?1:7)),e++;a.push(n);l<=H.hour&&1E4>a.length&&a.forEach(function(a){0===a%18E5&&"000000000"===b.dateFormat("%H%M%S%L",a)&&(d[a]="day")})}a.info=G(c,{higherRanks:d,totalRange:l*h});return a}}});M(I,"parts/Options.js",[I["parts/Globals.js"]],function(c){var f=c.color,F=c.merge;c.defaultOptions={colors:"#7cb5ec #434348 #90ed7d #f7a35c #8085e9 #f15c80 #e4d354 #2b908f #f45b5b #91e8e1".split(" "),symbols:["circle","diamond","square",
|
||||
F(N,"class",h);if(h=O(m,"style"))h=h.replace(/(;| |^)color([ :])/,"$1fill$2"),F(N,"style",h);if((n=O(m,"href"))&&!e&&-1===n.split(":")[0].toLowerCase().indexOf("javascript")){var T=p.createElementNS(d.SVG_NS,"a");F(T,"href",n);F(N,"class","highcharts-anchor");T.appendChild(N);d.styledMode||l(N,{cursor:"pointer"})}m=v(m.replace(/<[a-zA-Z\/](.|\n)*?>/g,"")||" ");if(" "!==m){N.appendChild(p.createTextNode(m));k?K.dx=0:w&&null!==g&&(K.x=g);F(N,K);b.appendChild(T||N);!k&&E&&(!J&&e&&l(N,{display:"block"}),
|
||||
F(N,"dy",S(N)));if(c){var f=m.replace(/([^\^])-/g,"$1- ").split(" ");K=!u&&(1<x.length||w||1<f.length);T=0;n=S(N);if(A)D=d.truncate(a,N,m,void 0,0,Math.max(0,c-parseInt(L||12,10)),function(a,b){return a.substring(0,b)+"\u2026"});else if(K)for(;f.length;)f.length&&!u&&0<T&&(N=p.createElementNS(U,"tspan"),F(N,{dy:n,x:g}),h&&F(N,"style",h),N.appendChild(p.createTextNode(f.join(" ").replace(/- /g,"-"))),b.appendChild(N)),d.truncate(a,N,null,f,0===T?r:0,c,function(a,b){return f.slice(0,b).join(" ").replace(/- /g,
|
||||
"-")}),r=a.actualWidth,T++}k++}}});E=E||b.childNodes.length}),A&&D&&a.attr("title",v(a.textStr,["<",">"])),r&&r.removeChild(b),K&&a.applyTextOutline&&a.applyTextOutline(K)):b.appendChild(p.createTextNode(v(m)))}},getContrast:function(a){a=e(a).rgba;a[0]*=1;a[1]*=1.2;a[2]*=.5;return 459<a[0]+a[1]+a[2]?"#000000":"#FFFFFF"},button:function(a,d,m,e,w,k,l,g,c,x){var D=this.label(a,d,m,c,null,null,x,null,"button"),p=0,K=this.styledMode;D.attr(A({padding:8,r:2},w));if(!K){w=A({fill:"#f7f7f7",stroke:"#cccccc",
|
||||
"stroke-width":1,style:{color:"#333333",cursor:"pointer",fontWeight:"normal"}},w);var J=w.style;delete w.style;k=A(w,{fill:"#e6e6e6"},k);var N=k.style;delete k.style;l=A(w,{fill:"#e6ebf5",style:{color:"#000000",fontWeight:"bold"}},l);var h=l.style;delete l.style;g=A(w,{style:{color:"#cccccc"}},g);var u=g.style;delete g.style}b(D.element,r?"mouseover":"mouseenter",function(){3!==p&&D.setState(1)});b(D.element,r?"mouseout":"mouseleave",function(){3!==p&&D.setState(p)});D.setState=function(a){1!==a&&
|
||||
(D.state=p=a);D.removeClass(/highcharts-button-(normal|hover|pressed|disabled)/).addClass("highcharts-button-"+["normal","hover","pressed","disabled"][a||0]);K||D.attr([w,k,l,g][a||0]).css([J,N,h,u][a||0])};K||D.attr(w).css(t({cursor:"default"},J));return D.on("click",function(a){3!==p&&e.call(D,a)})},crispLine:function(a,b){a[1]===a[4]&&(a[1]=a[4]=Math.round(a[1])-b%2/2);a[2]===a[5]&&(a[2]=a[5]=Math.round(a[2])+b%2/2);return a},path:function(a){var b=this.styledMode?{}:{fill:"none"};v(a)?b.d=a:H(a)&&
|
||||
t(b,a);return this.createElement("path").attr(b)},circle:function(a,b,d){a=H(a)?a:void 0===a?{}:{x:a,y:b,r:d};b=this.createElement("circle");b.xSetter=b.ySetter=function(a,b,d){d.setAttribute("c"+b,a)};return b.attr(a)},arc:function(a,b,d,m,e,w){H(a)?(m=a,b=m.y,d=m.r,a=m.x):m={innerR:m,start:e,end:w};a=this.symbol("arc",a,b,d,d,m);a.r=d;return a},rect:function(a,b,d,m,e,w){e=H(a)?a.r:e;var k=this.createElement("rect");a=H(a)?a:void 0===a?{}:{x:a,y:b,width:Math.max(d,0),height:Math.max(m,0)};this.styledMode||
|
||||
(void 0!==w&&(a.strokeWidth=w,a=k.crisp(a)),a.fill="none");e&&(a.r=e);k.rSetter=function(a,b,d){k.r=a;F(d,{rx:a,ry:a})};k.rGetter=function(){return k.r};return k.attr(a)},setSize:function(a,b,d){var m=this.alignedObjects,e=m.length;this.width=a;this.height=b;for(this.boxWrapper.animate({width:a,height:b},{step:function(){this.attr({viewBox:"0 0 "+this.attr("width")+" "+this.attr("height")})},duration:n(d,!0)?void 0:0});e--;)m[e].align()},g:function(a){var b=this.createElement("g");return a?b.attr({"class":"highcharts-"+
|
||||
a}):b},image:function(a,d,m,e,w,k){var l={preserveAspectRatio:"none"},g=function(a,b){a.setAttributeNS?a.setAttributeNS("http://www.w3.org/1999/xlink","href",b):a.setAttribute("hc-svg-href",b)},r=function(b){g(c.element,a);k.call(c,b)};1<arguments.length&&t(l,{x:d,y:m,width:e,height:w});var c=this.createElement("image").attr(l);k?(g(c.element,"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="),l=new Q.Image,b(l,"load",r),l.src=a,l.complete&&r({})):g(c.element,a);return c},
|
||||
symbol:function(a,b,m,e,w,k){var g=this,r=/^url\((.*?)\)$/,c=r.test(a),D=!c&&(this.symbols[a]?a:"circle"),x=D&&this.symbols[D],K=G(b)&&x&&x.call(this.symbols,Math.round(b),Math.round(m),e,w,k);if(x){var J=this.path(K);g.styledMode||J.attr("fill","none");t(J,{symbolName:D,x:b,y:m,width:e,height:w});k&&t(J,k)}else if(c){var A=a.match(r)[1];J=this.image(A);J.imgwidth=n(S[A]&&S[A].width,k&&k.width);J.imgheight=n(S[A]&&S[A].height,k&&k.height);var h=function(){J.attr({width:J.width,height:J.height})};
|
||||
["width","height"].forEach(function(a){J[a+"Setter"]=function(a,b){var d={},m=this["img"+b],e="width"===b?"translateX":"translateY";this[b]=a;G(m)&&(k&&"within"===k.backgroundSize&&this.width&&this.height&&(m=Math.round(m*Math.min(this.width/this.imgwidth,this.height/this.imgheight))),this.element&&this.element.setAttribute(b,m),this.alignByTranslate||(d[e]=((this[b]||0)-m)/2,this.attr(d)))}});G(b)&&J.attr({x:b,y:m});J.isImg=!0;G(J.imgwidth)&&G(J.imgheight)?h():(J.attr({width:0,height:0}),L("img",
|
||||
{onload:function(){var a=d[g.chartIndex];0===this.width&&(l(this,{position:"absolute",top:"-999em"}),p.body.appendChild(this));S[A]={width:this.width,height:this.height};J.imgwidth=this.width;J.imgheight=this.height;J.element&&h();this.parentNode&&this.parentNode.removeChild(this);g.imgCount--;if(!g.imgCount&&a&&a.onload)a.onload()},src:A}),this.imgCount++)}return J},symbols:{circle:function(a,b,d,m){return this.arc(a+d/2,b+m/2,d/2,m/2,{start:.5*Math.PI,end:2.5*Math.PI,open:!1})},square:function(a,
|
||||
b,d,m){return["M",a,b,"L",a+d,b,a+d,b+m,a,b+m,"Z"]},triangle:function(a,b,d,m){return["M",a+d/2,b,"L",a+d,b+m,a,b+m,"Z"]},"triangle-down":function(a,b,d,m){return["M",a,b,"L",a+d,b,a+d/2,b+m,"Z"]},diamond:function(a,b,d,m){return["M",a+d/2,b,"L",a+d,b+m/2,a+d/2,b+m,a,b+m/2,"Z"]},arc:function(a,b,d,m,e){var w=e.start,k=e.r||d,l=e.r||m||d,g=e.end-.001;d=e.innerR;m=n(e.open,.001>Math.abs(e.end-e.start-2*Math.PI));var r=Math.cos(w),c=Math.sin(w),x=Math.cos(g);g=Math.sin(g);w=.001>e.end-w-Math.PI?0:1;
|
||||
e=["M",a+k*r,b+l*c,"A",k,l,0,w,n(e.clockwise,1),a+k*x,b+l*g];G(d)&&e.push(m?"M":"L",a+d*x,b+d*g,"A",d,d,0,w,0,a+d*r,b+d*c);e.push(m?"":"Z");return e},callout:function(a,b,d,m,e){var w=Math.min(e&&e.r||0,d,m),k=w+6,l=e&&e.anchorX;e=e&&e.anchorY;var g=["M",a+w,b,"L",a+d-w,b,"C",a+d,b,a+d,b,a+d,b+w,"L",a+d,b+m-w,"C",a+d,b+m,a+d,b+m,a+d-w,b+m,"L",a+w,b+m,"C",a,b+m,a,b+m,a,b+m-w,"L",a,b+w,"C",a,b,a,b,a+w,b];l&&l>d?e>b+k&&e<b+m-k?g.splice(13,3,"L",a+d,e-6,a+d+6,e,a+d,e+6,a+d,b+m-w):g.splice(13,3,"L",a+
|
||||
d,m/2,l,e,a+d,m/2,a+d,b+m-w):l&&0>l?e>b+k&&e<b+m-k?g.splice(33,3,"L",a,e+6,a-6,e,a,e-6,a,b+w):g.splice(33,3,"L",a,m/2,l,e,a,m/2,a,b+w):e&&e>m&&l>a+k&&l<a+d-k?g.splice(23,3,"L",l+6,b+m,l,b+m+6,l-6,b+m,a+w,b+m):e&&0>e&&l>a+k&&l<a+d-k&&g.splice(3,3,"L",l-6,b,l,b-6,l+6,b,d-w,b);return g}},clipRect:function(a,b,d,m){var e=c.uniqueKey()+"-",w=this.createElement("clipPath").attr({id:e}).add(this.defs);a=this.rect(a,b,d,m,0).add(w);a.id=e;a.clipPath=w;a.count=0;return a},text:function(a,b,d,m){var e={};if(m&&
|
||||
(this.allowHTML||!this.forExport))return this.html(a,b,d);e.x=Math.round(b||0);d&&(e.y=Math.round(d));G(a)&&(e.text=a);a=this.createElement("text").attr(e);m||(a.xSetter=function(a,b,d){var m=d.getElementsByTagName("tspan"),e=d.getAttribute(b),w;for(w=0;w<m.length;w++){var k=m[w];k.getAttribute(b)===e&&k.setAttribute(b,a)}d.setAttribute(b,a)});return a},fontMetrics:function(a,b){a=!this.styledMode&&/px/.test(a)||!Q.getComputedStyle?a||b&&b.style&&b.style.fontSize||this.style&&this.style.fontSize:
|
||||
b&&O.prototype.getStyle.call(b,"font-size");a=/px/.test(a)?q(a):12;b=24>a?a+3:Math.round(1.2*a);return{h:b,b:Math.round(.8*b),f:a}},rotCorr:function(a,b,d){var m=a;b&&d&&(m=Math.max(m*Math.cos(b*E),4));return{x:-a/3*Math.sin(b*E),y:m}},label:function(a,b,d,e,w,k,l,g,r){var c=this,x=c.styledMode,J=c.g("button"!==r&&"label"),p=J.text=c.text("",0,0,l).attr({zIndex:1}),K,h,D=0,u=3,L=0,n,N,E,U,f,q={},T,S,v=/^url\((.*?)\)$/.test(e),Q=x||v,y=function(){return x?K.strokeWidth()%2/2:(T?parseInt(T,10):0)%2/
|
||||
2};r&&J.addClass("highcharts-"+r);var R=function(){var a=p.element.style,b={};h=(void 0===n||void 0===N||f)&&G(p.textStr)&&p.getBBox();J.width=(n||h.width||0)+2*u+L;J.height=(N||h.height||0)+2*u;S=u+Math.min(c.fontMetrics(a&&a.fontSize,p).b,h?h.height:Infinity);Q&&(K||(J.box=K=c.symbols[e]||v?c.symbol(e):c.rect(),K.addClass(("button"===r?"":"highcharts-label-box")+(r?" highcharts-"+r+"-box":"")),K.add(J),a=y(),b.x=a,b.y=(g?-S:0)+a),b.width=Math.round(J.width),b.height=Math.round(J.height),K.attr(t(b,
|
||||
q)),q={})};var B=function(){var a=L+u;var b=g?0:S;G(n)&&h&&("center"===f||"right"===f)&&(a+={center:.5,right:1}[f]*(n-h.width));if(a!==p.x||b!==p.y)p.attr("x",a),p.hasBoxWidthChanged&&(h=p.getBBox(!0),R()),void 0!==b&&p.attr("y",b);p.x=a;p.y=b};var V=function(a,b){K?K.attr(a,b):q[a]=b};J.onAdd=function(){p.add(J);J.attr({text:a||0===a?a:"",x:b,y:d});K&&G(w)&&J.attr({anchorX:w,anchorY:k})};J.widthSetter=function(a){n=C(a)?a:null};J.heightSetter=function(a){N=a};J["text-alignSetter"]=function(a){f=
|
||||
a};J.paddingSetter=function(a){G(a)&&a!==u&&(u=J.padding=a,B())};J.paddingLeftSetter=function(a){G(a)&&a!==L&&(L=a,B())};J.alignSetter=function(a){a={left:0,center:.5,right:1}[a];a!==D&&(D=a,h&&J.attr({x:E}))};J.textSetter=function(a){void 0!==a&&p.attr({text:a});R();B()};J["stroke-widthSetter"]=function(a,b){a&&(Q=!0);T=this["stroke-width"]=a;V(b,a)};x?J.rSetter=function(a,b){V(b,a)}:J.strokeSetter=J.fillSetter=J.rSetter=function(a,b){"r"!==b&&("fill"===b&&a&&(Q=!0),J[b]=a);V(b,a)};J.anchorXSetter=
|
||||
function(a,b){w=J.anchorX=a;V(b,Math.round(a)-y()-E)};J.anchorYSetter=function(a,b){k=J.anchorY=a;V(b,a-U)};J.xSetter=function(a){J.x=a;D&&(a-=D*((n||h.width)+2*u),J["forceAnimate:x"]=!0);E=Math.round(a);J.attr("translateX",E)};J.ySetter=function(a){U=J.y=Math.round(a);J.attr("translateY",U)};var H=J.css;l={css:function(a){if(a){var b={};a=A(a);J.textProps.forEach(function(d){void 0!==a[d]&&(b[d]=a[d],delete a[d])});p.css(b);"width"in b&&R();"fontSize"in b&&(R(),B())}return H.call(J,a)},getBBox:function(){return{width:h.width+
|
||||
2*u,height:h.height+2*u,x:h.x-u,y:h.y-u}},destroy:function(){m(J.element,"mouseenter");m(J.element,"mouseleave");p&&(p=p.destroy());K&&(K=K.destroy());O.prototype.destroy.call(J);J=c=R=B=V=null}};x||(l.shadow=function(a){a&&(R(),K&&K.shadow(a));return J});return t(J,l)}});c.Renderer=f});M(I,"parts/Html.js",[I["parts/Globals.js"],I["parts/Utilities.js"]],function(c,f){var F=f.attr,G=f.defined,z=f.extend,B=f.pick,t=f.pInt,v=c.createElement,C=c.css,H=c.isFirefox,y=c.isMS,h=c.isWebKit,n=c.SVGElement;
|
||||
f=c.SVGRenderer;var q=c.win;z(n.prototype,{htmlCss:function(g){var b="SPAN"===this.element.tagName&&g&&"width"in g,a=B(b&&g.width,void 0);if(b){delete g.width;this.textWidth=a;var d=!0}g&&"ellipsis"===g.textOverflow&&(g.whiteSpace="nowrap",g.overflow="hidden");this.styles=z(this.styles,g);C(this.element,g);d&&this.htmlUpdateTransform();return this},htmlGetBBox:function(){var g=this.element;return{x:g.offsetLeft,y:g.offsetTop,width:g.offsetWidth,height:g.offsetHeight}},htmlUpdateTransform:function(){if(this.added){var g=
|
||||
this.renderer,b=this.element,a=this.translateX||0,d=this.translateY||0,e=this.x||0,l=this.y||0,c=this.textAlign||"left",h={left:0,center:.5,right:1}[c],p=this.styles,u=p&&p.whiteSpace;C(b,{marginLeft:a,marginTop:d});!g.styledMode&&this.shadows&&this.shadows.forEach(function(b){C(b,{marginLeft:a+1,marginTop:d+1})});this.inverted&&[].forEach.call(b.childNodes,function(a){g.invertChild(a,b)});if("SPAN"===b.tagName){p=this.rotation;var k=this.textWidth&&t(this.textWidth),r=[p,c,b.innerHTML,this.textWidth,
|
||||
this.textAlign].join(),x;(x=k!==this.oldTextWidth)&&!(x=k>this.oldTextWidth)&&((x=this.textPxLength)||(C(b,{width:"",whiteSpace:u||"nowrap"}),x=b.offsetWidth),x=x>k);x&&(/[ \-]/.test(b.textContent||b.innerText)||"ellipsis"===b.style.textOverflow)?(C(b,{width:k+"px",display:"block",whiteSpace:u||"normal"}),this.oldTextWidth=k,this.hasBoxWidthChanged=!0):this.hasBoxWidthChanged=!1;r!==this.cTT&&(u=g.fontMetrics(b.style.fontSize,b).b,!G(p)||p===(this.oldRotation||0)&&c===this.oldAlign||this.setSpanRotation(p,
|
||||
h,u),this.getSpanCorrection(!G(p)&&this.textPxLength||b.offsetWidth,u,h,p,c));C(b,{left:e+(this.xCorr||0)+"px",top:l+(this.yCorr||0)+"px"});this.cTT=r;this.oldRotation=p;this.oldAlign=c}}else this.alignOnAdd=!0},setSpanRotation:function(g,b,a){var d={},e=this.renderer.getTransformKey();d[e]=d.transform="rotate("+g+"deg)";d[e+(H?"Origin":"-origin")]=d.transformOrigin=100*b+"% "+a+"px";C(this.element,d)},getSpanCorrection:function(g,b,a){this.xCorr=-g*a;this.yCorr=-b}});z(f.prototype,{getTransformKey:function(){return y&&
|
||||
!/Edge/.test(q.navigator.userAgent)?"-ms-transform":h?"-webkit-transform":H?"MozTransform":q.opera?"-o-transform":""},html:function(g,b,a){var d=this.createElement("span"),e=d.element,l=d.renderer,c=l.isSVG,h=function(a,b){["opacity","visibility"].forEach(function(d){a[d+"Setter"]=function(e,k,l){var w=a.div?a.div.style:b;n.prototype[d+"Setter"].call(this,e,k,l);w&&(w[k]=e)}});a.addedSetters=!0};d.textSetter=function(a){a!==e.innerHTML&&(delete this.bBox,delete this.oldTextWidth);this.textStr=a;e.innerHTML=
|
||||
B(a,"");d.doTransform=!0};c&&h(d,d.element.style);d.xSetter=d.ySetter=d.alignSetter=d.rotationSetter=function(a,b){"align"===b&&(b="textAlign");d[b]=a;d.doTransform=!0};d.afterSetters=function(){this.doTransform&&(this.htmlUpdateTransform(),this.doTransform=!1)};d.attr({text:g,x:Math.round(b),y:Math.round(a)}).css({position:"absolute"});l.styledMode||d.css({fontFamily:this.style.fontFamily,fontSize:this.style.fontSize});e.style.whiteSpace="nowrap";d.css=d.htmlCss;c&&(d.add=function(a){var b=l.box.parentNode,
|
||||
k=[];if(this.parentGroup=a){var g=a.div;if(!g){for(;a;)k.push(a),a=a.parentGroup;k.reverse().forEach(function(a){function e(b,d){a[d]=b;"translateX"===d?m.left=b+"px":m.top=b+"px";a.doTransform=!0}var w=F(a.element,"class");g=a.div=a.div||v("div",w?{className:w}:void 0,{position:"absolute",left:(a.translateX||0)+"px",top:(a.translateY||0)+"px",display:a.display,opacity:a.opacity,pointerEvents:a.styles&&a.styles.pointerEvents},g||b);var m=g.style;z(a,{classSetter:function(a){return function(b){this.element.setAttribute("class",
|
||||
b);a.className=b}}(g),on:function(){k[0].div&&d.on.apply({element:k[0].div},arguments);return a},translateXSetter:e,translateYSetter:e});a.addedSetters||h(a)})}}else g=b;g.appendChild(e);d.added=!0;d.alignOnAdd&&d.htmlUpdateTransform();return d});return d}})});M(I,"parts/Time.js",[I["parts/Globals.js"],I["parts/Utilities.js"]],function(c,f){var F=f.defined,G=f.extend,z=f.isObject,B=f.objectEach,t=f.pick,v=f.splat,C=c.merge,H=c.timeUnits,y=c.win;c.Time=function(c){this.update(c,!1)};c.Time.prototype=
|
||||
{defaultOptions:{Date:void 0,getTimezoneOffset:void 0,timezone:void 0,timezoneOffset:0,useUTC:!0},update:function(c){var h=t(c&&c.useUTC,!0),f=this;this.options=c=C(!0,this.options||{},c);this.Date=c.Date||y.Date||Date;this.timezoneOffset=(this.useUTC=h)&&c.timezoneOffset;this.getTimezoneOffset=this.timezoneOffsetFunction();(this.variableTimezone=!(h&&!c.getTimezoneOffset&&!c.timezone))||this.timezoneOffset?(this.get=function(g,b){var a=b.getTime(),d=a-f.getTimezoneOffset(b);b.setTime(d);g=b["getUTC"+
|
||||
g]();b.setTime(a);return g},this.set=function(g,b,a){if("Milliseconds"===g||"Seconds"===g||"Minutes"===g&&0===b.getTimezoneOffset()%60)b["set"+g](a);else{var d=f.getTimezoneOffset(b);d=b.getTime()-d;b.setTime(d);b["setUTC"+g](a);g=f.getTimezoneOffset(b);d=b.getTime()+g;b.setTime(d)}}):h?(this.get=function(g,b){return b["getUTC"+g]()},this.set=function(g,b,a){return b["setUTC"+g](a)}):(this.get=function(g,b){return b["get"+g]()},this.set=function(g,b,a){return b["set"+g](a)})},makeTime:function(h,
|
||||
n,f,g,b,a){if(this.useUTC){var d=this.Date.UTC.apply(0,arguments);var e=this.getTimezoneOffset(d);d+=e;var l=this.getTimezoneOffset(d);e!==l?d+=l-e:e-36E5!==this.getTimezoneOffset(d-36E5)||c.isSafari||(d-=36E5)}else d=(new this.Date(h,n,t(f,1),t(g,0),t(b,0),t(a,0))).getTime();return d},timezoneOffsetFunction:function(){var h=this,n=this.options,f=y.moment;if(!this.useUTC)return function(g){return 6E4*(new Date(g)).getTimezoneOffset()};if(n.timezone){if(f)return function(g){return 6E4*-f.tz(g,n.timezone).utcOffset()};
|
||||
c.error(25)}return this.useUTC&&n.getTimezoneOffset?function(g){return 6E4*n.getTimezoneOffset(g)}:function(){return 6E4*(h.timezoneOffset||0)}},dateFormat:function(h,n,f){if(!F(n)||isNaN(n))return c.defaultOptions.lang.invalidDate||"";h=t(h,"%Y-%m-%d %H:%M:%S");var g=this,b=new this.Date(n),a=this.get("Hours",b),d=this.get("Day",b),e=this.get("Date",b),l=this.get("Month",b),L=this.get("FullYear",b),E=c.defaultOptions.lang,p=E.weekdays,u=E.shortWeekdays,k=c.pad;b=G({a:u?u[d]:p[d].substr(0,3),A:p[d],
|
||||
d:k(e),e:k(e,2," "),w:d,b:E.shortMonths[l],B:E.months[l],m:k(l+1),o:l+1,y:L.toString().substr(2,2),Y:L,H:k(a),k:a,I:k(a%12||12),l:a%12||12,M:k(g.get("Minutes",b)),p:12>a?"AM":"PM",P:12>a?"am":"pm",S:k(b.getSeconds()),L:k(Math.floor(n%1E3),3)},c.dateFormats);B(b,function(a,b){for(;-1!==h.indexOf("%"+b);)h=h.replace("%"+b,"function"===typeof a?a.call(g,n):a)});return f?h.substr(0,1).toUpperCase()+h.substr(1):h},resolveDTLFormat:function(c){return z(c,!0)?c:(c=v(c),{main:c[0],from:c[1],to:c[2]})},getTimeTicks:function(c,
|
||||
n,f,g){var b=this,a=[],d={};var e=new b.Date(n);var l=c.unitRange,h=c.count||1,E;g=t(g,1);if(F(n)){b.set("Milliseconds",e,l>=H.second?0:h*Math.floor(b.get("Milliseconds",e)/h));l>=H.second&&b.set("Seconds",e,l>=H.minute?0:h*Math.floor(b.get("Seconds",e)/h));l>=H.minute&&b.set("Minutes",e,l>=H.hour?0:h*Math.floor(b.get("Minutes",e)/h));l>=H.hour&&b.set("Hours",e,l>=H.day?0:h*Math.floor(b.get("Hours",e)/h));l>=H.day&&b.set("Date",e,l>=H.month?1:Math.max(1,h*Math.floor(b.get("Date",e)/h)));if(l>=H.month){b.set("Month",
|
||||
e,l>=H.year?0:h*Math.floor(b.get("Month",e)/h));var p=b.get("FullYear",e)}l>=H.year&&b.set("FullYear",e,p-p%h);l===H.week&&(p=b.get("Day",e),b.set("Date",e,b.get("Date",e)-p+g+(p<g?-7:0)));p=b.get("FullYear",e);g=b.get("Month",e);var u=b.get("Date",e),k=b.get("Hours",e);n=e.getTime();b.variableTimezone&&(E=f-n>4*H.month||b.getTimezoneOffset(n)!==b.getTimezoneOffset(f));n=e.getTime();for(e=1;n<f;)a.push(n),n=l===H.year?b.makeTime(p+e*h,0):l===H.month?b.makeTime(p,g+e*h):!E||l!==H.day&&l!==H.week?E&&
|
||||
l===H.hour&&1<h?b.makeTime(p,g,u,k+e*h):n+l*h:b.makeTime(p,g,u+e*h*(l===H.day?1:7)),e++;a.push(n);l<=H.hour&&1E4>a.length&&a.forEach(function(a){0===a%18E5&&"000000000"===b.dateFormat("%H%M%S%L",a)&&(d[a]="day")})}a.info=G(c,{higherRanks:d,totalRange:l*h});return a}}});M(I,"parts/Options.js",[I["parts/Globals.js"]],function(c){var f=c.color,F=c.merge;c.defaultOptions={colors:"#7cb5ec #434348 #90ed7d #f7a35c #8085e9 #f15c80 #e4d354 #2b908f #f45b5b #91e8e1".split(" "),symbols:["circle","diamond","square",
|
||||
"triangle","triangle-down"],lang:{loading:"Loading...",months:"January February March April May June July August September October November December".split(" "),shortMonths:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),weekdays:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),decimalPoint:".",numericSymbols:"kMGTPE".split(""),resetZoom:"Reset zoom",resetZoomTitle:"Reset zoom level 1:1",thousandsSep:" "},global:{},time:c.Time.prototype.defaultOptions,chart:{styledMode:!1,
|
||||
borderRadius:0,colorCount:10,defaultSeriesType:"line",ignoreHiddenSeries:!0,spacing:[10,10,15,10],resetZoomButton:{theme:{zIndex:6},position:{align:"right",x:-10,y:10}},width:null,height:null,borderColor:"#335cad",backgroundColor:"#ffffff",plotBorderColor:"#cccccc"},title:{text:"Chart title",align:"center",margin:15,widthAdjust:-44},subtitle:{text:"",align:"center",widthAdjust:-44},caption:{margin:15,text:"",align:"left",verticalAlign:"bottom"},plotOptions:{},labels:{style:{position:"absolute",color:"#333333"}},
|
||||
legend:{enabled:!0,align:"center",alignColumns:!0,layout:"horizontal",labelFormatter:function(){return this.name},borderColor:"#999999",borderRadius:0,navigation:{activeColor:"#003399",inactiveColor:"#cccccc"},itemStyle:{color:"#333333",cursor:"pointer",fontSize:"12px",fontWeight:"bold",textOverflow:"ellipsis"},itemHoverStyle:{color:"#000000"},itemHiddenStyle:{color:"#cccccc"},shadow:!1,itemCheckboxStyle:{position:"absolute",width:"13px",height:"13px"},squareSymbol:!0,symbolPadding:5,verticalAlign:"bottom",
|
||||
|
|
@ -95476,19 +95476,19 @@ u(e[this.coll],a));L(this,"afterSetOptions",{userOptions:a})},defaultLabelFormat
|
|||
d,-1)+r[x]);void 0===h&&(h=1E4<=Math.abs(b)?c.numberFormat(b,-1):c.numberFormat(b,-1,void 0,""));return h},getSeriesExtremes:function(){var a=this,b=a.chart,d;L(this,"getSeriesExtremes",null,function(){a.hasVisibleSeries=!1;a.dataMin=a.dataMax=a.threshold=null;a.softThreshold=!a.isXAxis;a.buildStacks&&a.buildStacks();a.series.forEach(function(m){if(m.visible||!b.options.chart.ignoreHiddenSeries){var e=m.options,w=e.threshold;a.hasVisibleSeries=!0;a.positiveValuesOnly&&0>=w&&(w=null);if(a.isXAxis){if(e=
|
||||
m.xData,e.length){d=m.getXExtremes(e);var k=d.min;var c=d.max;C(k)||k instanceof Date||(e=e.filter(C),d=m.getXExtremes(e),k=d.min,c=d.max);e.length&&(a.dataMin=Math.min(h(a.dataMin,k),k),a.dataMax=Math.max(h(a.dataMax,c),c))}}else if(m.getExtremes(),c=m.dataMax,k=m.dataMin,z(k)&&z(c)&&(a.dataMin=Math.min(h(a.dataMin,k),k),a.dataMax=Math.max(h(a.dataMax,c),c)),z(w)&&(a.threshold=w),!e.softThreshold||a.positiveValuesOnly)a.softThreshold=!1}})});L(this,"afterGetSeriesExtremes")},translate:function(a,
|
||||
b,d,e,k,c){var m=this.linkedParent||this,w=1,l=0,g=e?m.oldTransA:m.transA;e=e?m.oldMin:m.min;var r=m.minPixelPadding;k=(m.isOrdinal||m.isBroken||m.isLog&&k)&&m.lin2val;g||(g=m.transA);d&&(w*=-1,l=m.len);m.reversed&&(w*=-1,l-=w*(m.sector||m.len));b?(a=(a*w+l-r)/g+e,k&&(a=m.lin2val(a))):(k&&(a=m.val2lin(a)),a=C(e)?w*(a-e)*g+l+w*r+(C(c)?g*c:0):void 0);return a},toPixels:function(a,b){return this.translate(a,!1,!this.horiz,null,!0)+(b?0:this.pos)},toValue:function(a,b){return this.translate(a-(b?0:this.pos),
|
||||
!0,!this.horiz,null,!0)},getPlotLinePath:function(a){var b=this,d=b.chart,e=b.left,w=b.top,k=a.old,c=a.value,l=a.translatedValue,g=a.lineWidth,r=a.force,x,p,A,u,n=k&&d.oldChartHeight||d.chartHeight,f=k&&d.oldChartWidth||d.chartWidth,E,q=b.transB,v=function(a,b,d){if("pass"!==r&&a<b||a>d)r?a=Math.min(Math.max(b,a),d):E=!0;return a};a={value:c,lineWidth:g,old:k,force:r,acrossPanes:a.acrossPanes,translatedValue:l};L(this,"getPlotLinePath",a,function(a){l=h(l,b.translate(c,null,null,k));l=Math.min(Math.max(-1E5,
|
||||
l),1E5);x=A=Math.round(l+q);p=u=Math.round(n-l-q);C(l)?b.horiz?(p=w,u=n-b.bottom,x=A=v(x,e,e+b.width)):(x=e,A=f-b.right,p=u=v(p,w,w+b.height)):(E=!0,r=!1);a.path=E&&!r?null:d.renderer.crispLine(["M",x,p,"L",A,u],g||1)});return a.path},getLinearTickPositions:function(a,b,e){var m=d(Math.floor(b/a)*a);e=d(Math.ceil(e/a)*a);var w=[],k;d(m+a)===m&&(k=20);if(this.single)return[b];for(b=m;b<=e;){w.push(b);b=d(b+a,k);if(b===c)break;var c=b}return w},getMinorTickInterval:function(){var a=this.options;return!0===
|
||||
!0,!this.horiz,null,!0)},getPlotLinePath:function(a){var b=this,d=b.chart,e=b.left,w=b.top,k=a.old,c=a.value,l=a.translatedValue,g=a.lineWidth,r=a.force,x,p,A,u,f=k&&d.oldChartHeight||d.chartHeight,n=k&&d.oldChartWidth||d.chartWidth,E,q=b.transB,v=function(a,b,d){if("pass"!==r&&a<b||a>d)r?a=Math.min(Math.max(b,a),d):E=!0;return a};a={value:c,lineWidth:g,old:k,force:r,acrossPanes:a.acrossPanes,translatedValue:l};L(this,"getPlotLinePath",a,function(a){l=h(l,b.translate(c,null,null,k));l=Math.min(Math.max(-1E5,
|
||||
l),1E5);x=A=Math.round(l+q);p=u=Math.round(f-l-q);C(l)?b.horiz?(p=w,u=f-b.bottom,x=A=v(x,e,e+b.width)):(x=e,A=n-b.right,p=u=v(p,w,w+b.height)):(E=!0,r=!1);a.path=E&&!r?null:d.renderer.crispLine(["M",x,p,"L",A,u],g||1)});return a.path},getLinearTickPositions:function(a,b,e){var m=d(Math.floor(b/a)*a);e=d(Math.ceil(e/a)*a);var w=[],k;d(m+a)===m&&(k=20);if(this.single)return[b];for(b=m;b<=e;){w.push(b);b=d(b+a,k);if(b===c)break;var c=b}return w},getMinorTickInterval:function(){var a=this.options;return!0===
|
||||
a.minorTicks?h(a.minorTickInterval,"auto"):!1===a.minorTicks?null:a.minorTickInterval},getMinorTickPositions:function(){var a=this,b=a.options,d=a.tickPositions,e=a.minorTickInterval,k=[],c=a.pointRangePadding||0,l=a.min-c;c=a.max+c;var g=c-l;if(g&&g/e<a.len/3)if(a.isLog)this.paddedTicks.forEach(function(b,d,m){d&&k.push.apply(k,a.getLogTickPositions(e,m[d-1],m[d],!0))});else if(a.isDatetimeAxis&&"auto"===this.getMinorTickInterval())k=k.concat(a.getTimeTicks(a.normalizeTimeTickInterval(e),l,c,b.startOfWeek));
|
||||
else for(b=l+(d[0]-l)%e;b<=c&&b!==k[0];b+=e)k.push(b);0!==k.length&&a.trimTicks(k);return k},adjustForMinRange:function(){var a=this.options,b=this.min,d=this.max,e,k,c,l,g;this.isXAxis&&void 0===this.minRange&&!this.isLog&&(z(a.min)||z(a.max)?this.minRange=null:(this.series.forEach(function(a){l=a.xData;for(k=g=a.xIncrement?1:l.length-1;0<k;k--)if(c=l[k]-l[k-1],void 0===e||c<e)e=c}),this.minRange=Math.min(5*e,this.dataMax-this.dataMin)));if(d-b<this.minRange){var r=this.dataMax-this.dataMin>=this.minRange;
|
||||
var x=this.minRange;var p=(x-d+b)/2;p=[b-p,h(a.min,b-p)];r&&(p[2]=this.isLog?this.log2lin(this.dataMin):this.dataMin);b=F(p);d=[b+x,h(a.max,b+x)];r&&(d[2]=this.isLog?this.log2lin(this.dataMax):this.dataMax);d=G(d);d-b<x&&(p[0]=d-x,p[1]=h(a.min,d-x),b=F(p))}this.min=b;this.max=d},getClosest:function(){var a;this.categories?a=1:this.series.forEach(function(b){var d=b.closestPointRange,m=b.visible||!b.chart.options.chart.ignoreHiddenSeries;!b.noSharedTooltip&&z(d)&&m&&(a=z(a)?Math.min(a,d):d)});return a},
|
||||
nameToX:function(a){var b=v(this.categories),d=b?this.categories:this.names,e=a.options.x;a.series.requireSorting=!1;z(e)||(e=!1===this.options.uniqueNames?a.series.autoIncrement():b?d.indexOf(a.name):h(d.keys[a.name],-1));if(-1===e){if(!b)var k=d.length}else k=e;void 0!==k&&(this.names[k]=a.name,this.names.keys[a.name]=k);return k},updateNames:function(){var a=this,b=this.names;0<b.length&&(Object.keys(b.keys).forEach(function(a){delete b.keys[a]}),b.length=0,this.minRange=this.userMinRange,(this.series||
|
||||
[]).forEach(function(b){b.xIncrement=null;if(!b.points||b.isDirtyData)a.max=Math.max(a.max,b.xData.length-1),b.processData(),b.generatePoints();b.data.forEach(function(d,e){if(d&&d.options&&void 0!==d.name){var m=a.nameToX(d);void 0!==m&&m!==d.x&&(d.x=m,b.xData[e]=m)}})}))},setAxisTranslation:function(a){var b=this,d=b.max-b.min,e=b.axisPointRange||0,k=0,w=0,c=b.linkedParent,l=!!b.categories,g=b.transA,r=b.isXAxis;if(r||l||e){var p=b.getClosest();c?(k=c.minPointOffset,w=c.pointRangePadding):b.series.forEach(function(a){var d=
|
||||
l?1:r?h(a.options.pointRange,p,0):b.axisPointRange||0,m=a.options.pointPlacement;e=Math.max(e,d);if(!b.single||l)a=x.xrange&&a instanceof x.xrange?!r:r,k=Math.max(k,a&&H(m)?0:d/2),w=Math.max(w,a&&"on"===m?0:d)});c=b.ordinalSlope&&p?b.ordinalSlope/p:1;b.minPointOffset=k*=c;b.pointRangePadding=w*=c;b.pointRange=Math.min(e,b.single&&l?1:d);r&&(b.closestPointRange=p)}a&&(b.oldTransA=g);b.translationSlope=b.transA=g=b.staticScale||b.len/(d+w||1);b.transB=b.horiz?b.left:b.bottom;b.minPixelPadding=g*k;L(this,
|
||||
"afterSetAxisTranslation")},minFromRange:function(){return this.max-this.range},setTickInterval:function(a){var b=this,e=b.chart,w=b.options,l=b.isLog,g=b.isDatetimeAxis,r=b.isXAxis,x=b.isLinked,A=w.maxPadding,u=w.minPadding,n=w.tickInterval,f=w.tickPixelInterval,E=b.categories,q=C(b.threshold)?b.threshold:null,v=b.softThreshold;g||E||x||this.getTickAmount();var t=h(b.userMin,w.min);var y=h(b.userMax,w.max);if(x){b.linkedParent=e[b.coll][w.linkedTo];var B=b.linkedParent.getExtremes();b.min=h(B.min,
|
||||
"afterSetAxisTranslation")},minFromRange:function(){return this.max-this.range},setTickInterval:function(a){var b=this,e=b.chart,w=b.options,l=b.isLog,g=b.isDatetimeAxis,r=b.isXAxis,x=b.isLinked,A=w.maxPadding,u=w.minPadding,f=w.tickInterval,n=w.tickPixelInterval,E=b.categories,q=C(b.threshold)?b.threshold:null,v=b.softThreshold;g||E||x||this.getTickAmount();var t=h(b.userMin,w.min);var y=h(b.userMax,w.max);if(x){b.linkedParent=e[b.coll][w.linkedTo];var B=b.linkedParent.getExtremes();b.min=h(B.min,
|
||||
B.dataMin);b.max=h(B.max,B.dataMax);w.type!==b.linkedParent.options.type&&c.error(11,1,e)}else{if(!v&&z(q))if(b.dataMin>=q)B=q,u=0;else if(b.dataMax<=q){var H=q;A=0}b.min=h(t,B,b.dataMin);b.max=h(y,H,b.dataMax)}l&&(b.positiveValuesOnly&&!a&&0>=Math.min(b.min,h(b.dataMin,b.min))&&c.error(10,1,e),b.min=d(b.log2lin(b.min),16),b.max=d(b.log2lin(b.max),16));b.range&&z(b.max)&&(b.userMin=b.min=t=Math.max(b.dataMin,b.minFromRange()),b.userMax=y=b.max,b.range=null);L(b,"foundExtremes");b.beforePadding&&b.beforePadding();
|
||||
b.adjustForMinRange();!(E||b.axisPointRange||b.usePercentage||x)&&z(b.min)&&z(b.max)&&(e=b.max-b.min)&&(!z(t)&&u&&(b.min-=e*u),!z(y)&&A&&(b.max+=e*A));C(w.softMin)&&!C(b.userMin)&&w.softMin<b.min&&(b.min=t=w.softMin);C(w.softMax)&&!C(b.userMax)&&w.softMax>b.max&&(b.max=y=w.softMax);C(w.floor)&&(b.min=Math.min(Math.max(b.min,w.floor),Number.MAX_VALUE));C(w.ceiling)&&(b.max=Math.max(Math.min(b.max,w.ceiling),h(b.userMax,-Number.MAX_VALUE)));v&&z(b.dataMin)&&(q=q||0,!z(t)&&b.min<q&&b.dataMin>=q?b.min=
|
||||
b.options.minRange?Math.min(q,b.max-b.minRange):q:!z(y)&&b.max>q&&b.dataMax<=q&&(b.max=b.options.minRange?Math.max(q,b.min+b.minRange):q));b.tickInterval=b.min===b.max||void 0===b.min||void 0===b.max?1:x&&!n&&f===b.linkedParent.options.tickPixelInterval?n=b.linkedParent.tickInterval:h(n,this.tickAmount?(b.max-b.min)/Math.max(this.tickAmount-1,1):void 0,E?1:(b.max-b.min)*f/Math.max(b.len,f));r&&!a&&b.series.forEach(function(a){a.processData(b.min!==b.oldMin||b.max!==b.oldMax)});b.setAxisTranslation(!0);
|
||||
b.beforeSetTickPositions&&b.beforeSetTickPositions();b.postProcessTickInterval&&(b.tickInterval=b.postProcessTickInterval(b.tickInterval));b.pointRange&&!n&&(b.tickInterval=Math.max(b.pointRange,b.tickInterval));a=h(w.minTickInterval,b.isDatetimeAxis&&b.closestPointRange);!n&&b.tickInterval<a&&(b.tickInterval=a);g||l||n||(b.tickInterval=k(b.tickInterval,null,p(b.tickInterval),h(w.allowDecimals,!(.5<b.tickInterval&&5>b.tickInterval&&1E3<b.max&&9999>b.max)),!!this.tickAmount));this.tickAmount||(b.tickInterval=
|
||||
b.options.minRange?Math.min(q,b.max-b.minRange):q:!z(y)&&b.max>q&&b.dataMax<=q&&(b.max=b.options.minRange?Math.max(q,b.min+b.minRange):q));b.tickInterval=b.min===b.max||void 0===b.min||void 0===b.max?1:x&&!f&&n===b.linkedParent.options.tickPixelInterval?f=b.linkedParent.tickInterval:h(f,this.tickAmount?(b.max-b.min)/Math.max(this.tickAmount-1,1):void 0,E?1:(b.max-b.min)*n/Math.max(b.len,n));r&&!a&&b.series.forEach(function(a){a.processData(b.min!==b.oldMin||b.max!==b.oldMax)});b.setAxisTranslation(!0);
|
||||
b.beforeSetTickPositions&&b.beforeSetTickPositions();b.postProcessTickInterval&&(b.tickInterval=b.postProcessTickInterval(b.tickInterval));b.pointRange&&!f&&(b.tickInterval=Math.max(b.pointRange,b.tickInterval));a=h(w.minTickInterval,b.isDatetimeAxis&&b.closestPointRange);!f&&b.tickInterval<a&&(b.tickInterval=a);g||l||f||(b.tickInterval=k(b.tickInterval,null,p(b.tickInterval),h(w.allowDecimals,!(.5<b.tickInterval&&5>b.tickInterval&&1E3<b.max&&9999>b.max)),!!this.tickAmount));this.tickAmount||(b.tickInterval=
|
||||
b.unsquish());this.setTickPositions()},setTickPositions:function(){var a=this.options,b=a.tickPositions;var d=this.getMinorTickInterval();var e=a.tickPositioner,k=a.startOnTick,l=a.endOnTick;this.tickmarkOffset=this.categories&&"between"===a.tickmarkPlacement&&1===this.tickInterval?.5:0;this.minorTickInterval="auto"===d&&this.tickInterval?this.tickInterval/5:d;this.single=this.min===this.max&&z(this.min)&&!this.tickAmount&&(parseInt(this.min,10)===this.min||!1!==a.allowDecimals);this.tickPositions=
|
||||
d=b&&b.slice();!d&&(!this.ordinalPositions&&(this.max-this.min)/this.tickInterval>Math.max(2*this.len,200)?(d=[this.min,this.max],c.error(19,!1,this.chart)):d=this.isDatetimeAxis?this.getTimeTicks(this.normalizeTimeTickInterval(this.tickInterval,a.units),this.min,this.max,a.startOfWeek,this.ordinalPositions,this.closestPointRange,!0):this.isLog?this.getLogTickPositions(this.tickInterval,this.min,this.max):this.getLinearTickPositions(this.tickInterval,this.min,this.max),d.length>this.len&&(d=[d[0],
|
||||
d.pop()],d[0]===d[1]&&(d.length=1)),this.tickPositions=d,e&&(e=e.apply(this,[this.min,this.max])))&&(this.tickPositions=d=e);this.paddedTicks=d.slice(0);this.trimTicks(d,k,l);this.isLinked||(this.single&&2>d.length&&!this.categories&&(this.min-=.5,this.max+=.5),b||e||this.adjustTickAmount());L(this,"afterSetTickPositions")},trimTicks:function(a,b,d){var e=a[0],m=a[a.length-1],k=this.minPointOffset||0;L(this,"trimTicks");if(!this.isLinked){if(b&&-Infinity!==e)this.min=e;else for(;this.min-k>a[0];)a.shift();
|
||||
|
|
@ -95500,11 +95500,11 @@ b,d,e,k){var m=this,w=m.chart;d=h(d,!0);m.series.forEach(function(a){delete a.kd
|
|||
this.displayBtn=void 0!==b||void 0!==m,this.setExtremes(b,m,!1,void 0,{trigger:"zoom"});a.zoomed=!0});return a.zoomed},setAxisSize:function(){var a=this.chart,b=this.options,d=b.offsets||[0,0,0,0],e=this.horiz,k=this.width=Math.round(c.relativeLength(h(b.width,a.plotWidth-d[3]+d[1]),a.plotWidth)),l=this.height=Math.round(c.relativeLength(h(b.height,a.plotHeight-d[0]+d[2]),a.plotHeight)),g=this.top=Math.round(c.relativeLength(h(b.top,a.plotTop+d[0]),a.plotHeight,a.plotTop));b=this.left=Math.round(c.relativeLength(h(b.left,
|
||||
a.plotLeft+d[3]),a.plotWidth,a.plotLeft));this.bottom=a.chartHeight-l-g;this.right=a.chartWidth-k-b;this.len=Math.max(e?k:l,0);this.pos=e?b:g},getExtremes:function(){var a=this.isLog;return{min:a?d(this.lin2log(this.min)):this.min,max:a?d(this.lin2log(this.max)):this.max,dataMin:this.dataMin,dataMax:this.dataMax,userMin:this.userMin,userMax:this.userMax}},getThreshold:function(a){var b=this.isLog,d=b?this.lin2log(this.min):this.min;b=b?this.lin2log(this.max):this.max;null===a||-Infinity===a?a=d:Infinity===
|
||||
a?a=b:d>a?a=d:b<a&&(a=b);return this.translate(a,0,1,0,1)},autoLabelAlign:function(a){var b=(h(a,0)-90*this.side+720)%360;a={align:"center"};L(this,"autoLabelAlign",a,function(a){15<b&&165>b?a.align="right":195<b&&345>b&&(a.align="left")});return a.align},tickSize:function(a){var b=this.options,d=b[a+"Length"],e=h(b[a+"Width"],"tick"===a&&this.isXAxis&&!this.categories?1:0);if(e&&d){"inside"===b[a+"Position"]&&(d=-d);var k=[d,e]}a={tickSize:k};L(this,"afterTickSize",a);return a.tickSize},labelMetrics:function(){var a=
|
||||
this.tickPositions&&this.tickPositions[0]||0;return this.chart.renderer.fontMetrics(this.options.labels.style&&this.options.labels.style.fontSize,this.ticks[a]&&this.ticks[a].label)},unsquish:function(){var a=this.options.labels,b=this.horiz,e=this.tickInterval,k=e,c=this.len/(((this.categories?1:0)+this.max-this.min)/e),g,r=a.rotation,x=this.labelMetrics(),p,A=Number.MAX_VALUE,u,n=this.max-this.min,f=function(a){var b=a/(c||1);b=1<b?Math.ceil(b):1;b*e>n&&Infinity!==a&&Infinity!==c&&n&&(b=Math.ceil(n/
|
||||
e));return d(b*e)};b?(u=!a.staggerLines&&!a.step&&(z(r)?[r]:c<h(a.autoRotationLimit,80)&&a.autoRotation))&&u.forEach(function(a){if(a===r||a&&-90<=a&&90>=a){p=f(Math.abs(x.h/Math.sin(l*a)));var b=p+Math.abs(a/360);b<A&&(A=b,g=a,k=p)}}):a.step||(k=f(x.h));this.autoRotation=u;this.labelRotation=h(g,r);return k},getSlotWidth:function(a){var b=this.chart,d=this.horiz,e=this.options.labels,k=Math.max(this.tickPositions.length-(this.categories?0:1),1),c=b.margin[3];return a&&a.slotWidth||d&&2>(e.step||
|
||||
this.tickPositions&&this.tickPositions[0]||0;return this.chart.renderer.fontMetrics(this.options.labels.style&&this.options.labels.style.fontSize,this.ticks[a]&&this.ticks[a].label)},unsquish:function(){var a=this.options.labels,b=this.horiz,e=this.tickInterval,k=e,c=this.len/(((this.categories?1:0)+this.max-this.min)/e),g,r=a.rotation,x=this.labelMetrics(),p,A=Number.MAX_VALUE,u,f=this.max-this.min,n=function(a){var b=a/(c||1);b=1<b?Math.ceil(b):1;b*e>f&&Infinity!==a&&Infinity!==c&&f&&(b=Math.ceil(f/
|
||||
e));return d(b*e)};b?(u=!a.staggerLines&&!a.step&&(z(r)?[r]:c<h(a.autoRotationLimit,80)&&a.autoRotation))&&u.forEach(function(a){if(a===r||a&&-90<=a&&90>=a){p=n(Math.abs(x.h/Math.sin(l*a)));var b=p+Math.abs(a/360);b<A&&(A=b,g=a,k=p)}}):a.step||(k=n(x.h));this.autoRotation=u;this.labelRotation=h(g,r);return k},getSlotWidth:function(a){var b=this.chart,d=this.horiz,e=this.options.labels,k=Math.max(this.tickPositions.length-(this.categories?0:1),1),c=b.margin[3];return a&&a.slotWidth||d&&2>(e.step||
|
||||
0)&&!e.rotation&&(this.staggerLines||1)*this.len/k||!d&&(e.style&&parseInt(e.style.width,10)||c&&c-b.spacing[3]||.33*b.chartWidth)},renderUnsquish:function(){var a=this.chart,b=a.renderer,d=this.tickPositions,e=this.ticks,k=this.options.labels,c=k&&k.style||{},l=this.horiz,g=this.getSlotWidth(),r=Math.max(1,Math.round(g-2*(k.padding||5))),x={},p=this.labelMetrics(),h=k.style&&k.style.textOverflow,A=0;H(k.rotation)||(x.rotation=k.rotation||0);d.forEach(function(a){(a=e[a])&&a.label&&a.label.textPxLength>
|
||||
A&&(A=a.label.textPxLength)});this.maxLabelLength=A;if(this.autoRotation)A>r&&A>p.h?x.rotation=this.labelRotation:this.labelRotation=0;else if(g){var u=r;if(!h){var n="clip";for(r=d.length;!l&&r--;){var f=d[r];if(f=e[f].label)f.styles&&"ellipsis"===f.styles.textOverflow?f.css({textOverflow:"clip"}):f.textPxLength>g&&f.css({width:g+"px"}),f.getBBox().height>this.len/d.length-(p.h-p.f)&&(f.specificTextOverflow="ellipsis")}}}x.rotation&&(u=A>.5*a.chartHeight?.33*a.chartHeight:A,h||(n="ellipsis"));if(this.labelAlign=
|
||||
k.align||this.autoLabelAlign(this.labelRotation))x.align=this.labelAlign;d.forEach(function(a){var b=(a=e[a])&&a.label,d=c.width,k={};b&&(b.attr(x),a.shortenLabel?a.shortenLabel():u&&!d&&"nowrap"!==c.whiteSpace&&(u<b.textPxLength||"SPAN"===b.element.tagName)?(k.width=u,h||(k.textOverflow=b.specificTextOverflow||n),b.css(k)):b.styles&&b.styles.width&&!k.width&&!d&&b.css({width:null}),delete b.specificTextOverflow,a.rotation=x.rotation)},this);this.tickRotCorr=b.rotCorr(p.b,this.labelRotation||0,0!==
|
||||
A&&(A=a.label.textPxLength)});this.maxLabelLength=A;if(this.autoRotation)A>r&&A>p.h?x.rotation=this.labelRotation:this.labelRotation=0;else if(g){var u=r;if(!h){var f="clip";for(r=d.length;!l&&r--;){var n=d[r];if(n=e[n].label)n.styles&&"ellipsis"===n.styles.textOverflow?n.css({textOverflow:"clip"}):n.textPxLength>g&&n.css({width:g+"px"}),n.getBBox().height>this.len/d.length-(p.h-p.f)&&(n.specificTextOverflow="ellipsis")}}}x.rotation&&(u=A>.5*a.chartHeight?.33*a.chartHeight:A,h||(f="ellipsis"));if(this.labelAlign=
|
||||
k.align||this.autoLabelAlign(this.labelRotation))x.align=this.labelAlign;d.forEach(function(a){var b=(a=e[a])&&a.label,d=c.width,k={};b&&(b.attr(x),a.shortenLabel?a.shortenLabel():u&&!d&&"nowrap"!==c.whiteSpace&&(u<b.textPxLength||"SPAN"===b.element.tagName)?(k.width=u,h||(k.textOverflow=b.specificTextOverflow||f),b.css(k)):b.styles&&b.styles.width&&!k.width&&!d&&b.css({width:null}),delete b.specificTextOverflow,a.rotation=x.rotation)},this);this.tickRotCorr=b.rotCorr(p.b,this.labelRotation||0,0!==
|
||||
this.side)},hasData:function(){return this.series.some(function(a){return a.hasData()})||this.options.showEmpty&&z(this.min)&&z(this.max)},addTitle:function(a){var b=this.chart.renderer,d=this.horiz,e=this.opposite,k=this.options.title,c,l=this.chart.styledMode;this.axisTitle||((c=k.textAlign)||(c=(d?{low:"left",middle:"center",high:"right"}:{low:e?"right":"left",middle:"center",high:e?"left":"right"})[k.align]),this.axisTitle=b.text(k.text,0,0,k.useHTML).attr({zIndex:7,rotation:k.rotation||0,align:c}).addClass("highcharts-axis-title"),
|
||||
l||this.axisTitle.css(u(k.style)),this.axisTitle.add(this.axisGroup),this.axisTitle.isNew=!0);l||k.style.width||this.isRadial||this.axisTitle.css({width:this.len});this.axisTitle[a?"show":"hide"](a)},generateTick:function(a){var b=this.ticks;b[a]?b[a].addLabel():b[a]=new A(this,a)},getOffset:function(){var a=this,b=a.chart,d=b.renderer,e=a.options,k=a.tickPositions,c=a.ticks,l=a.horiz,g=a.side,r=b.inverted&&!a.isZAxis?[1,0,3,2][g]:g,x,p=0,A=0,u=e.title,n=e.labels,f=0,E=b.axisOffset;b=b.clipOffset;
|
||||
var q=[-1,1,1,-1][g],v=e.className,t=a.axisParent;var C=a.hasData();a.showAxis=x=C||h(e.showEmpty,!0);a.staggerLines=a.horiz&&n.staggerLines;a.axisGroup||(a.gridGroup=d.g("grid").attr({zIndex:e.gridZIndex||1}).addClass("highcharts-"+this.coll.toLowerCase()+"-grid "+(v||"")).add(t),a.axisGroup=d.g("axis").attr({zIndex:e.zIndex||2}).addClass("highcharts-"+this.coll.toLowerCase()+" "+(v||"")).add(t),a.labelGroup=d.g("axis-labels").attr({zIndex:n.zIndex||7}).addClass("highcharts-"+a.coll.toLowerCase()+
|
||||
|
|
@ -95513,8 +95513,8 @@ p=a.axisTitle.getBBox()[l?"height":"width"];var B=u.offset;A=z(B)?0:h(u.margin,l
|
|||
q*a.offset:0);e=e.offset?0:2*Math.floor(a.axisLine.strokeWidth()/2);b[r]=Math.max(b[r],e);L(this,"afterGetOffset")},getLinePath:function(a){var b=this.chart,d=this.opposite,e=this.offset,k=this.horiz,c=this.left+(d?this.width:0)+e;e=b.chartHeight-this.bottom-(d?this.height:0)+e;d&&(a*=-1);return b.renderer.crispLine(["M",k?this.left:c,k?e:this.top,"L",k?b.chartWidth-this.right:c,k?e:b.chartHeight-this.bottom],a)},renderLine:function(){this.axisLine||(this.axisLine=this.chart.renderer.path().addClass("highcharts-axis-line").add(this.axisGroup),
|
||||
this.chart.styledMode||this.axisLine.attr({stroke:this.options.lineColor,"stroke-width":this.options.lineWidth,zIndex:7}))},getTitlePosition:function(){var a=this.horiz,b=this.left,d=this.top,e=this.len,k=this.options.title,c=a?b:d,l=this.opposite,g=this.offset,r=k.x||0,x=k.y||0,p=this.axisTitle,A=this.chart.renderer.fontMetrics(k.style&&k.style.fontSize,p);p=Math.max(p.getBBox(null,0).height-A.h-1,0);e={low:c+(a?0:e),middle:c+e/2,high:c+(a?e:0)}[k.align];b=(a?d+this.height:b)+(a?1:-1)*(l?-1:1)*this.axisTitleMargin+
|
||||
[-p,p,A.f,-p][this.side];a={x:a?e+r:b+(l?this.width:0)+g+r,y:a?b+x-(l?this.height:0)+g:e+x};L(this,"afterGetTitlePosition",{titlePosition:a});return a},renderMinorTick:function(a){var b=this.chart.hasRendered&&C(this.oldMin),d=this.minorTicks;d[a]||(d[a]=new A(this,a,"minor"));b&&d[a].isNew&&d[a].render(null,!0);d[a].render(null,!1,1)},renderTick:function(a,b){var d=this.isLinked,e=this.ticks,k=this.chart.hasRendered&&C(this.oldMin);if(!d||a>=this.min&&a<=this.max)e[a]||(e[a]=new A(this,a)),k&&e[a].isNew&&
|
||||
e[a].render(b,!0,-1),e[a].render(b)},render:function(){var a=this,d=a.chart,e=a.options,k=a.isLog,l=a.isLinked,g=a.tickPositions,r=a.axisTitle,x=a.ticks,p=a.minorTicks,h=a.alternateBands,u=e.stackLabels,n=e.alternateGridColor,f=a.tickmarkOffset,E=a.axisLine,v=a.showAxis,t=b(d.renderer.globalAnimation),B,H;a.labelEdge.length=0;a.overlap=!1;[x,p,h].forEach(function(a){y(a,function(a){a.isActive=!1})});if(a.hasData()||l)a.minorTickInterval&&!a.categories&&a.getMinorTickPositions().forEach(function(b){a.renderMinorTick(b)}),
|
||||
g.length&&(g.forEach(function(b,d){a.renderTick(b,d)}),f&&(0===a.min||a.single)&&(x[-1]||(x[-1]=new A(a,-1,null,!0)),x[-1].render(-1))),n&&g.forEach(function(b,e){H=void 0!==g[e+1]?g[e+1]+f:a.max-f;0===e%2&&b<a.max&&H<=a.max+(d.polar?-f:f)&&(h[b]||(h[b]=new c.PlotLineOrBand(a)),B=b+f,h[b].options={from:k?a.lin2log(B):B,to:k?a.lin2log(H):H,color:n},h[b].render(),h[b].isActive=!0)}),a._addedPlotLB||((e.plotLines||[]).concat(e.plotBands||[]).forEach(function(b){a.addPlotBandOrLine(b)}),a._addedPlotLB=
|
||||
e[a].render(b,!0,-1),e[a].render(b)},render:function(){var a=this,d=a.chart,e=a.options,k=a.isLog,l=a.isLinked,g=a.tickPositions,r=a.axisTitle,x=a.ticks,p=a.minorTicks,h=a.alternateBands,u=e.stackLabels,f=e.alternateGridColor,n=a.tickmarkOffset,E=a.axisLine,v=a.showAxis,t=b(d.renderer.globalAnimation),B,H;a.labelEdge.length=0;a.overlap=!1;[x,p,h].forEach(function(a){y(a,function(a){a.isActive=!1})});if(a.hasData()||l)a.minorTickInterval&&!a.categories&&a.getMinorTickPositions().forEach(function(b){a.renderMinorTick(b)}),
|
||||
g.length&&(g.forEach(function(b,d){a.renderTick(b,d)}),n&&(0===a.min||a.single)&&(x[-1]||(x[-1]=new A(a,-1,null,!0)),x[-1].render(-1))),f&&g.forEach(function(b,e){H=void 0!==g[e+1]?g[e+1]+n:a.max-n;0===e%2&&b<a.max&&H<=a.max+(d.polar?-n:n)&&(h[b]||(h[b]=new c.PlotLineOrBand(a)),B=b+n,h[b].options={from:k?a.lin2log(B):B,to:k?a.lin2log(H):H,color:f},h[b].render(),h[b].isActive=!0)}),a._addedPlotLB||((e.plotLines||[]).concat(e.plotBands||[]).forEach(function(b){a.addPlotBandOrLine(b)}),a._addedPlotLB=
|
||||
!0);[x,p,h].forEach(function(a){var b,e=[],k=t.duration;y(a,function(a,b){a.isActive||(a.render(b,!1,0),a.isActive=!1,e.push(b))});q(function(){for(b=e.length;b--;)a[e[b]]&&!a[e[b]].isActive&&(a[e[b]].destroy(),delete a[e[b]])},a!==h&&d.hasRendered&&k?k:0)});E&&(E[E.isPlaced?"animate":"attr"]({d:this.getLinePath(E.strokeWidth())}),E.isPlaced=!0,E[v?"show":"hide"](v));r&&v&&(e=a.getTitlePosition(),C(e.y)?(r[r.isNew?"attr":"animate"](e),r.isNew=!1):(r.attr("y",-9999),r.isNew=!0));u&&u.enabled&&a.renderStackTotals();
|
||||
a.isDirty=!1;L(this,"afterRender")},redraw:function(){this.visible&&(this.render(),this.plotLinesAndBands.forEach(function(a){a.render()}));this.series.forEach(function(a){a.isDirty=!0})},keepProps:"extKey hcEvents names series userMax userMin".split(" "),destroy:function(a){var b=this,d=b.stacks,e=b.plotLinesAndBands,k;L(this,"destroy",{keepEvents:a});a||r(b);y(d,function(a,b){B(a);d[b]=null});[b.ticks,b.minorTicks,b.alternateBands].forEach(function(a){B(a)});if(e)for(a=e.length;a--;)e[a].destroy();
|
||||
"stackTotalGroup axisLine axisTitle axisGroup gridGroup labelGroup cross scrollbar".split(" ").forEach(function(a){b[a]&&(b[a]=b[a].destroy())});for(k in b.plotLinesAndBandsGroups)b.plotLinesAndBandsGroups[k]=b.plotLinesAndBandsGroups[k].destroy();y(b,function(a,d){-1===b.keepProps.indexOf(d)&&delete b[d]})},drawCrosshair:function(b,d){var e,k=this.crosshair,c=h(k.snap,!0),l,g=this.cross;L(this,"drawCrosshair",{e:b,point:d});b||(b=this.cross&&this.cross.e);if(this.crosshair&&!1!==(z(d)||!c)){c?z(d)&&
|
||||
|
|
@ -95765,8 +95765,8 @@ Math.max.apply(0,h.targets))/2,h.pos=Math.min(Math.max(0,u-h.size*h.align),a-h.s
|
|||
(n.reducedLen||a)-.1*a,n.reducedLen>.1*a&&c.distribute(n,a,d),!0;e+=n[f].size;f++}))return!0});g(n,e)};n.prototype.drawDataLabels=function(){function b(a,b){var d=b.filter;return d?(b=d.operator,a=a[d.property],d=d.value,">"===b&&a>d||"<"===b&&a<d||">="===b&&a>=d||"<="===b&&a<=d||"=="===b&&a==d||"==="===b&&a===d?!0:!1):!0}function a(a,b){var d=[],c;if(B(a)&&!B(b))d=a.map(function(a){return y(a,b)});else if(B(b)&&!B(a))d=b.map(function(b){return y(a,b)});else if(B(a)||B(b))for(c=Math.max(a.length,
|
||||
b.length);c--;)d[c]=y(a[c],b[c]);else d=y(a,b);return d}var d=this,e=d.chart,f=d.options,g=f.dataLabels,h=d.points,p,n=d.hasRendered||0,k=c.animObject(f.animation).duration,r=Math.min(k,200),q=!e.renderer.forExport&&v(g.defer,0<r),A=e.renderer;g=a(a(e.options.plotOptions&&e.options.plotOptions.series&&e.options.plotOptions.series.dataLabels,e.options.plotOptions&&e.options.plotOptions[d.type]&&e.options.plotOptions[d.type].dataLabels),g);c.fireEvent(this,"drawDataLabels");if(B(g)||g.enabled||d._hasPointLabels){var w=
|
||||
d.plotGroup("dataLabelsGroup","data-labels",q&&!n?"hidden":"inherit",g.zIndex||6);q&&(w.attr({opacity:+n}),n||setTimeout(function(){var a=d.dataLabelsGroup;a&&(d.visible&&w.show(!0),a[f.animation?"animate":"attr"]({opacity:1},{duration:r}))},k-r));h.forEach(function(c){p=C(a(g,c.dlOptions||c.options&&c.options.dataLabels));p.forEach(function(a,g){var k=a.enabled&&(!c.isNull||c.dataLabelOnNull)&&b(c,a),h=c.dataLabels?c.dataLabels[g]:c.dataLabel,l=c.connectors?c.connectors[g]:c.connector,p=v(a.distance,
|
||||
c.labelDistance),m=!h;if(k){var r=c.getLabelConfig();var n=v(a[c.formatPrefix+"Format"],a.format);r=G(n)?H(n,r,e.time):(a[c.formatPrefix+"Formatter"]||a.formatter).call(r,a);n=a.style;var u=a.rotation;e.styledMode||(n.color=v(a.color,n.color,d.color,"#000000"),"contrast"===n.color&&(c.contrastColor=A.getContrast(c.color||d.color),n.color=!G(p)&&a.inside||0>p||f.stacking?c.contrastColor:"#000000"),f.cursor&&(n.cursor=f.cursor));var q={r:a.borderRadius||0,rotation:u,padding:a.padding,zIndex:1};e.styledMode||
|
||||
(q.fill=a.backgroundColor,q.stroke=a.borderColor,q["stroke-width"]=a.borderWidth);t(q,function(a,b){void 0===a&&delete q[b]})}!h||k&&G(r)?k&&G(r)&&(h?q.text=r:(c.dataLabels=c.dataLabels||[],h=c.dataLabels[g]=u?A.text(r,0,-9999).addClass("highcharts-data-label"):A.label(r,0,-9999,a.shape,null,null,a.useHTML,null,"data-label"),g||(c.dataLabel=h),h.addClass(" highcharts-data-label-color-"+c.colorIndex+" "+(a.className||"")+(a.useHTML?" highcharts-tracker":""))),h.options=a,h.attr(q),e.styledMode||h.css(n).shadow(a.shadow),
|
||||
c.labelDistance),m=!h;if(k){var n=c.getLabelConfig();var r=v(a[c.formatPrefix+"Format"],a.format);n=G(r)?H(r,n,e.time):(a[c.formatPrefix+"Formatter"]||a.formatter).call(n,a);r=a.style;var u=a.rotation;e.styledMode||(r.color=v(a.color,r.color,d.color,"#000000"),"contrast"===r.color&&(c.contrastColor=A.getContrast(c.color||d.color),r.color=!G(p)&&a.inside||0>p||f.stacking?c.contrastColor:"#000000"),f.cursor&&(r.cursor=f.cursor));var q={r:a.borderRadius||0,rotation:u,padding:a.padding,zIndex:1};e.styledMode||
|
||||
(q.fill=a.backgroundColor,q.stroke=a.borderColor,q["stroke-width"]=a.borderWidth);t(q,function(a,b){void 0===a&&delete q[b]})}!h||k&&G(n)?k&&G(n)&&(h?q.text=n:(c.dataLabels=c.dataLabels||[],h=c.dataLabels[g]=u?A.text(n,0,-9999).addClass("highcharts-data-label"):A.label(n,0,-9999,a.shape,null,null,a.useHTML,null,"data-label"),g||(c.dataLabel=h),h.addClass(" highcharts-data-label-color-"+c.colorIndex+" "+(a.className||"")+(a.useHTML?" highcharts-tracker":""))),h.options=a,h.attr(q),e.styledMode||h.css(r).shadow(a.shadow),
|
||||
h.added||h.add(w),a.textPath&&!a.useHTML&&h.setTextPath(c.getDataLabelPath&&c.getDataLabelPath(h)||c.graphic,a.textPath),d.alignDataLabel(c,h,a,null,m)):(c.dataLabel=c.dataLabel&&c.dataLabel.destroy(),c.dataLabels&&(1===c.dataLabels.length?delete c.dataLabels:delete c.dataLabels[g]),g||delete c.dataLabel,l&&(c.connector=c.connector.destroy(),c.connectors&&(1===c.connectors.length?delete c.connectors:delete c.connectors[g])))})})}c.fireEvent(this,"afterDrawDataLabels")};n.prototype.alignDataLabel=
|
||||
function(b,a,d,c,f){var e=this.chart,g=this.isCartesian&&e.inverted,h=v(b.dlBox&&b.dlBox.centerX,b.plotX,-9999),l=v(b.plotY,-9999),k=a.getBBox(),n=d.rotation,q=d.align,A=this.visible&&(b.series.forceDL||e.isInsidePlot(h,Math.round(l),g)||c&&e.isInsidePlot(h,g?c.x+1:c.y+c.height-1,g)),w="justify"===v(d.overflow,"justify");if(A){var m=e.renderer.fontMetrics(e.styledMode?void 0:d.style.fontSize,a).b;c=z({x:g?this.yAxis.len-l:h,y:Math.round(g?this.xAxis.len-h:l),width:0,height:0},c);z(d,{width:k.width,
|
||||
height:k.height});n?(w=!1,h=e.renderer.rotCorr(m,n),h={x:c.x+d.x+c.width/2+h.x,y:c.y+d.y+{top:0,middle:.5,bottom:1}[d.verticalAlign]*c.height},a[f?"attr":"animate"](h).attr({align:q}),l=(n+720)%360,l=180<l&&360>l,"left"===q?h.y-=l?k.height:0:"center"===q?(h.x-=k.width/2,h.y-=k.height/2):"right"===q&&(h.x-=k.width,h.y-=l?0:k.height),a.placed=!0,a.alignAttr=h):(a.align(d,null,c),h=a.alignAttr);w&&0<=c.height?this.justifyDataLabel(a,d,h,k,c,f):v(d.crop,!0)&&(A=e.isInsidePlot(h.x,h.y)&&e.isInsidePlot(h.x+
|
||||
|
|
@ -95794,8 +95794,8 @@ f.allItems.forEach(function(a){b!==a&&a.setState("inactive",!k)});b.setState("ho
|
|||
{browserEvent:a};b.firePointEvent?b.firePointEvent("legendItemClick",a,c):q(b,"legendItemClick",a,c)})},createCheckboxForItem:function(a){a.checkbox=H("input",{type:"checkbox",className:"highcharts-legend-checkbox",checked:a.selected,defaultChecked:a.selected},this.options.itemCheckboxStyle,this.chart.container);C(a.checkbox,"click",function(b){q(a.series||a,"checkboxClick",{checked:b.target.checked,item:a},function(){a.select()})})}});G(f.prototype,{showResetZoom:function(){function a(){b.zoomOut()}
|
||||
var b=this,c=h.lang,d=b.options.chart.resetZoomButton,e=d.theme,f=e.states,g="chart"===d.relativeTo||"spaceBox"===d.relativeTo?null:"plotBox";q(this,"beforeShowResetZoom",null,function(){b.resetZoomButton=b.renderer.button(c.resetZoom,null,null,a,e,f&&f.hover).attr({align:d.position.align,title:c.resetZoomTitle}).addClass("highcharts-reset-zoom").add().align(d.position,!1,g)});q(this,"afterShowResetZoom")},zoomOut:function(){q(this,"selection",{resetSelection:!0},this.zoom)},zoom:function(a){var b=
|
||||
this,c,d=b.pointer,e=!1,f=b.inverted?d.mouseDownX:d.mouseDownY;!a||a.resetSelection?(b.axes.forEach(function(a){c=a.zoom()}),d.initiated=!1):a.xAxis.concat(a.yAxis).forEach(function(a){var g=a.axis,k=b.inverted?g.left:g.top,h=b.inverted?k+g.width:k+g.height,l=g.isXAxis,m=!1;if(!l&&f>=k&&f<=h||l||!F(f))m=!0;d[l?"zoomX":"zoomY"]&&m&&(c=g.zoom(a.min,a.max),g.displayBtn&&(e=!0))});var g=b.resetZoomButton;e&&!g?b.showResetZoom():!e&&B(g)&&(b.resetZoomButton=g.destroy());c&&b.redraw(v(b.options.chart.animation,
|
||||
a&&a.animation,100>b.pointCount))},pan:function(a,b){var c=this,d=c.hoverPoints,e;q(this,"pan",{originalEvent:a},function(){d&&d.forEach(function(a){a.setState()});("xy"===b?[1,0]:[1]).forEach(function(b){b=c[b?"xAxis":"yAxis"][0];var d=b.horiz,f=a[d?"chartX":"chartY"];d=d?"mouseDownX":"mouseDownY";var g=c[d],k=(b.pointRange||0)/2,h=b.reversed&&!c.inverted||!b.reversed&&c.inverted?-1:1,l=b.getExtremes(),p=b.toValue(g-f,!0)+k*h;h=b.toValue(g+b.len-f,!0)-k*h;var n=h<p;g=n?h:p;p=n?p:h;h=Math.min(l.dataMin,
|
||||
k?l.min:b.toValue(b.toPixels(l.min)-b.minPixelPadding));k=Math.max(l.dataMax,k?l.max:b.toValue(b.toPixels(l.max)+b.minPixelPadding));n=h-g;0<n&&(p+=n,g=h);n=p-k;0<n&&(p=k,g-=n);b.series.length&&g!==l.min&&p!==l.max&&(b.setExtremes(g,p,!1,!1,{trigger:"pan"}),e=!0);c[d]=f});e&&c.redraw(!1);y(c.container,{cursor:"move"})})}});G(d.prototype,{select:function(a,b){var c=this,d=c.series,e=d.chart;this.selectedStaging=a=v(a,!c.selected);c.firePointEvent(a?"select":"unselect",{accumulate:b},function(){c.selected=
|
||||
a&&a.animation,100>b.pointCount))},pan:function(a,b){var c=this,d=c.hoverPoints,e;q(this,"pan",{originalEvent:a},function(){d&&d.forEach(function(a){a.setState()});("xy"===b?[1,0]:[1]).forEach(function(b){b=c[b?"xAxis":"yAxis"][0];var d=b.horiz,f=a[d?"chartX":"chartY"];d=d?"mouseDownX":"mouseDownY";var g=c[d],k=(b.pointRange||0)/2,h=b.reversed&&!c.inverted||!b.reversed&&c.inverted?-1:1,l=b.getExtremes(),n=b.toValue(g-f,!0)+k*h;h=b.toValue(g+b.len-f,!0)-k*h;var p=h<n;g=p?h:n;n=p?n:h;h=Math.min(l.dataMin,
|
||||
k?l.min:b.toValue(b.toPixels(l.min)-b.minPixelPadding));k=Math.max(l.dataMax,k?l.max:b.toValue(b.toPixels(l.max)+b.minPixelPadding));p=h-g;0<p&&(n+=p,g=h);p=n-k;0<p&&(n=k,g-=p);b.series.length&&g!==l.min&&n!==l.max&&(b.setExtremes(g,n,!1,!1,{trigger:"pan"}),e=!0);c[d]=f});e&&c.redraw(!1);y(c.container,{cursor:"move"})})}});G(d.prototype,{select:function(a,b){var c=this,d=c.series,e=d.chart;this.selectedStaging=a=v(a,!c.selected);c.firePointEvent(a?"select":"unselect",{accumulate:b},function(){c.selected=
|
||||
c.options.selected=a;d.options.data[d.data.indexOf(c)]=c.options;c.setState(a&&"select");b||e.getSelectedPoints().forEach(function(a){var b=a.series;a.selected&&a!==c&&(a.selected=a.options.selected=!1,b.options.data[b.data.indexOf(a)]=a.options,a.setState(e.hoverPoints&&b.options.inactiveOtherPoints?"inactive":""),a.firePointEvent("unselect"))})});delete this.selectedStaging},onMouseOver:function(a){var b=this.series.chart,c=b.pointer;a=a?c.normalize(a):c.getChartCoordinatesFromPoint(this,b.inverted);
|
||||
c.runPointActions(a,this)},onMouseOut:function(){var a=this.series.chart;this.firePointEvent("mouseOut");this.series.options.inactiveOtherPoints||(a.hoverPoints||[]).forEach(function(a){a.setState()});a.hoverPoints=a.hoverPoint=null},importEvents:function(){if(!this.hasImportedEvents){var b=this,d=a(b.series.options.point,b.options).events;b.events=d;t(d,function(a,d){c.isFunction(a)&&C(b,d,a)});this.hasImportedEvents=!0}},setState:function(a,b){var c=this.series,d=this.state,e=c.options.states[a||
|
||||
"normal"]||{},f=n[c.type].marker&&c.options.marker,g=f&&!1===f.enabled,h=f&&f.states&&f.states[a||"normal"]||{},l=!1===h.enabled,p=c.stateMarkerGraphic,u=this.marker||{},t=c.chart,y=c.halo,z,B=f&&c.markerAttribs;a=a||"";if(!(a===this.state&&!b||this.selected&&"select"!==a||!1===e.enabled||a&&(l||g&&!1===h.enabled)||a&&u.states&&u.states[a]&&!1===u.states[a].enabled)){this.state=a;B&&(z=c.markerAttribs(this,a));if(this.graphic){d&&this.graphic.removeClass("highcharts-point-"+d);a&&this.graphic.addClass("highcharts-point-"+
|
||||
|
|
@ -95823,7 +95823,7 @@ I["parts/Utilities.js"]],function(c,f){var F=f.extend;F(c,{arrayMax:f.arrayMax,a
|
|||
|
||||
"use strict";
|
||||
var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
|
||||
* @license Highcharts JS v7.2.1 (2019-10-31)
|
||||
* @license Highcharts JS v7.2.2 (2020-08-24)
|
||||
*
|
||||
* Exporting module
|
||||
*
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -3,6 +3,8 @@ import {Transaction} from '../../models/transaction.model';
|
|||
import {VariablesService} from '../../services/variables.service';
|
||||
import {BackendService} from '../../services/backend.service';
|
||||
import {IntToMoneyPipe} from '../../pipes/int-to-money.pipe';
|
||||
import {BLOCK_EXPLORER_TX_URL_PREFIX} from '../../../_shared/constants';
|
||||
import {BLOCK_EXPLORER_TN_TX_URL_PREFIX} from '../../../_shared/constants';
|
||||
|
||||
@Component({
|
||||
selector: 'app-transaction-details',
|
||||
|
|
@ -32,7 +34,7 @@ export class TransactionDetailsComponent implements OnInit, OnDestroy {
|
|||
}
|
||||
|
||||
openInBrowser(tr) {
|
||||
this.backendService.openUrlInBrowser('explorer.zano.org/transaction/' + tr);
|
||||
this.backendService.openUrlInBrowser((this.variablesService.testnet ? BLOCK_EXPLORER_TN_TX_URL_PREFIX : BLOCK_EXPLORER_TX_URL_PREFIX)+ tr);
|
||||
}
|
||||
|
||||
ngOnDestroy() {}
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ export class Wallet {
|
|||
tracking_hey: string;
|
||||
is_auditable: boolean;
|
||||
is_watch_only: boolean;
|
||||
exclude_mining_txs: boolean;
|
||||
alias_available: boolean;
|
||||
|
||||
alias?: object;
|
||||
|
|
@ -101,7 +102,7 @@ export class Wallet {
|
|||
|
||||
prepareHistory(items: Transaction[]): void {
|
||||
for (let i = 0; i < items.length; i++) {
|
||||
if ((items[i].tx_type === 7 && items[i].is_income) || (items[i].tx_type === 11 && items[i].is_income) || (items[i].amount.eq(0) && items[i].fee.eq(0))) {
|
||||
if ((items[i].tx_type === 7 && items[i].is_income) || (items[i].tx_type === 11 && items[i].is_income) || (items[i].amount.eq(0) && items[i].fee.eq(0) && !items[i].is_mining)) {
|
||||
let exists = false;
|
||||
for (let j = 0; j < this.excluded_history.length; j++) {
|
||||
if (this.excluded_history[j].tx_hash === items[i].tx_hash) {
|
||||
|
|
|
|||
|
|
@ -56,45 +56,38 @@ export class BackendService {
|
|||
switch (error) {
|
||||
case 'NOT_ENOUGH_MONEY':
|
||||
error_translate = 'ERRORS.NOT_ENOUGH_MONEY';
|
||||
// error_translate = 'ERRORS.NO_MONEY'; maybe that one?
|
||||
if (command === 'cancel_offer') {
|
||||
error_translate = this.translate.instant('ERRORS.NO_MONEY_REMOVE_OFFER', {
|
||||
'fee': this.variablesService.default_fee,
|
||||
'currency': this.variablesService.defaultCurrency
|
||||
});
|
||||
}
|
||||
break;
|
||||
case 'CORE_BUSY':
|
||||
if (command !== 'get_all_aliases') {
|
||||
error_translate = 'ERRORS.CORE_BUSY';
|
||||
}
|
||||
error_translate = 'ERRORS.CORE_BUSY';
|
||||
break;
|
||||
case 'BUSY':
|
||||
error_translate = 'ERRORS.DAEMON_BUSY';
|
||||
break;
|
||||
case 'OVERFLOW':
|
||||
if (command !== 'get_all_aliases') {
|
||||
error_translate = '';
|
||||
}
|
||||
break;
|
||||
case 'INTERNAL_ERROR:daemon is busy':
|
||||
error_translate = 'ERRORS.DAEMON_BUSY';
|
||||
break;
|
||||
case 'INTERNAL_ERROR:not enough money':
|
||||
case 'INTERNAL_ERROR:NOT_ENOUGH_MONEY':
|
||||
if (command === 'cancel_offer') {
|
||||
error_translate = this.translate.instant('ERRORS.NO_MONEY_REMOVE_OFFER', {
|
||||
'fee': this.variablesService.default_fee,
|
||||
'currency': this.variablesService.defaultCurrency
|
||||
});
|
||||
} else {
|
||||
error_translate = 'ERRORS.NO_MONEY';
|
||||
}
|
||||
break;
|
||||
case 'NOT_ENOUGH_OUTPUTS_FOR_MIXING':
|
||||
case 'INTERNAL_ERROR:not enough outputs to mix':
|
||||
error_translate = 'ERRORS.NOT_ENOUGH_OUTPUTS_TO_MIX';
|
||||
break;
|
||||
case 'INTERNAL_ERROR:transaction is too big':
|
||||
case 'TX_IS_TOO_BIG':
|
||||
error_translate = 'ERRORS.TRANSACTION_IS_TO_BIG';
|
||||
break;
|
||||
case 'INTERNAL_ERROR:Transfer attempt while daemon offline':
|
||||
case 'DISCONNECTED':
|
||||
error_translate = 'ERRORS.TRANSFER_ATTEMPT';
|
||||
break;
|
||||
case 'ACCESS_DENIED':
|
||||
error_translate = 'ERRORS.ACCESS_DENIED';
|
||||
break;
|
||||
case 'INTERNAL_ERROR:transaction was rejected by daemon':
|
||||
case 'TX_REJECTED':
|
||||
// if (command === 'request_alias_registration') {
|
||||
// error_translate = 'INFORMER.ALIAS_IN_REGISTER';
|
||||
// } else {
|
||||
|
|
@ -114,7 +107,6 @@ export class BackendService {
|
|||
error_translate = 'ERRORS.WALLET_WATCH_ONLY_NOT_SUPPORTED';
|
||||
break;
|
||||
case 'WRONG_PASSWORD':
|
||||
case 'WRONG_PASSWORD:invalid password':
|
||||
params = JSON.parse(params);
|
||||
if (!params.testEmpty) {
|
||||
error_translate = 'ERRORS.WRONG_PASSWORD';
|
||||
|
|
@ -163,6 +155,7 @@ export class BackendService {
|
|||
if (error.indexOf('FAILED:failed to open binary wallet file for saving') > -1 && command === 'generate_wallet') {
|
||||
error_translate = '';
|
||||
}
|
||||
|
||||
if (error_translate !== '') {
|
||||
this.modalService.prepareModal('error', error_translate);
|
||||
}
|
||||
|
|
@ -636,11 +629,12 @@ export class BackendService {
|
|||
}
|
||||
}
|
||||
|
||||
getRecentTransfers( id, offset, count, callback) {
|
||||
getRecentTransfers( id, offset, count,exclude_mining_txs, callback) {
|
||||
const params = {
|
||||
wallet_id: id,
|
||||
offset: offset,
|
||||
count: count
|
||||
count: count,
|
||||
exclude_mining_txs: exclude_mining_txs
|
||||
};
|
||||
this.runCommand('get_recent_transfers', params, callback);
|
||||
}
|
||||
|
|
@ -651,7 +645,9 @@ export class BackendService {
|
|||
|
||||
getVersion(callback) {
|
||||
this.runCommand('get_version', {}, (status, version) => {
|
||||
callback(version);
|
||||
this.runCommand('get_network_type', {}, (status, type) => {
|
||||
callback(version, type);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -54,6 +54,9 @@ export class VariablesService {
|
|||
public count = 40;
|
||||
public maxPages = 5;
|
||||
|
||||
public testnet = false;
|
||||
public networkType = ''; // testnet of mainnet
|
||||
|
||||
public wallets: Array<Wallet> = [];
|
||||
public currentWallet: Wallet;
|
||||
public selectWallet: number;
|
||||
|
|
|
|||
|
|
@ -1,3 +1,10 @@
|
|||
export const MIXIN: number = 10;
|
||||
export const AUDITABLE_WALLET_HELP_PAGE: string = 'docs.zano.org/docs/auditable-wallets';
|
||||
export const RCV_ADDR_QR_SCALE: number = 2;
|
||||
export const MIXIN: number = 10; // default mixin value
|
||||
export const RCV_ADDR_QR_SCALE: number = 2; // scale factor for QR code
|
||||
|
||||
export const AUDITABLE_WALLET_HELP_PAGE: string = 'docs.zano.org/docs/auditable-wallets';
|
||||
export const CREATE_NEW_WALLET_HELP_PAGE: string = 'docs.zano.org/docs/getting-started-1#section-create-new-wallet';
|
||||
export const LOCKED_BALANCE_HELP_PAGE: string = 'docs.zano.org/docs/locked-balance';
|
||||
export const DOWNLOADS_PAGE_URL: string = 'zano.org/downloads.html';
|
||||
|
||||
export const BLOCK_EXPLORER_TX_URL_PREFIX: string = 'explorer.zano.org/transaction/';
|
||||
export const BLOCK_EXPLORER_TN_TX_URL_PREFIX: string = 'testnet-explorer.zano.org/transaction/';
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ import { ActivatedRoute } from '@angular/router';
|
|||
export class AddContactsComponent implements OnInit, OnDestroy {
|
||||
id: number;
|
||||
queryRouting;
|
||||
isModalDialogVisible;
|
||||
addContactForm = new FormGroup({
|
||||
address: new FormControl('', [
|
||||
Validators.required,
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ import {ModalService} from './_helpers/services/modal.service';
|
|||
styleUrls: ['./app.component.scss']
|
||||
})
|
||||
export class AppComponent implements OnInit, OnDestroy {
|
||||
|
||||
|
||||
intervalUpdatePriceState;
|
||||
intervalUpdateContractsState;
|
||||
expMedTsEvent;
|
||||
|
|
@ -248,6 +248,9 @@ export class AppComponent implements OnInit, OnDestroy {
|
|||
|
||||
const wallet = this.variablesService.getWallet(wallet_id);
|
||||
if (wallet) {
|
||||
if(wallet.history.length > 40) {
|
||||
wallet.history.splice(0, 1);
|
||||
}
|
||||
this.ngZone.run(() => {
|
||||
|
||||
if (!wallet.loaded) {
|
||||
|
|
|
|||
|
|
@ -17,7 +17,9 @@
|
|||
<label for="alias-name" tooltip="{{ 'ASSIGN_ALIAS.NAME.TOOLTIP' | translate }}" placement="bottom-left" tooltipClass="table-tooltip assign-alias-tooltip" [delay]="50">
|
||||
{{ 'ASSIGN_ALIAS.NAME.LABEL' | translate }}
|
||||
</label>
|
||||
<input type="text" id="alias-name" formControlName="name" placeholder="{{ 'ASSIGN_ALIAS.NAME.PLACEHOLDER' | translate }}" (contextmenu)="variablesService.onContextMenu($event)">
|
||||
<div class="has-no-edit-symbol">
|
||||
<input type="text" id="alias-name" formControlName="name" placeholder="{{ 'ASSIGN_ALIAS.NAME.PLACEHOLDER' | translate }}" (contextmenu)="variablesService.onContextMenu($event)">
|
||||
</div>
|
||||
<div class="error-block" *ngIf="assignForm.controls['name'].invalid && (assignForm.controls['name'].dirty || assignForm.controls['name'].touched)">
|
||||
<div *ngIf="assignForm.controls['name'].errors['required']">
|
||||
{{ 'ASSIGN_ALIAS.FORM_ERRORS.NAME_REQUIRED' | translate }}
|
||||
|
|
|
|||
|
|
@ -28,3 +28,19 @@
|
|||
padding: 1rem 1.5rem;
|
||||
max-width: 46rem;
|
||||
}
|
||||
|
||||
.has-no-edit-symbol {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
input {
|
||||
padding-left: 2.35rem;
|
||||
}
|
||||
&:after {
|
||||
content: '@';
|
||||
position: absolute;
|
||||
display: inline-block;
|
||||
top: 50%;
|
||||
left: 1rem;
|
||||
transform: translateY(-50%);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ export class AssignAliasComponent implements OnInit, OnDestroy {
|
|||
private location: Location,
|
||||
private router: Router,
|
||||
private backend: BackendService,
|
||||
private variablesService: VariablesService,
|
||||
public variablesService: VariablesService,
|
||||
private modalService: ModalService,
|
||||
private moneyToInt: MoneyToIntPipe,
|
||||
private intToMoney: IntToMoneyPipe
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ export class ContactSendComponent implements OnInit, OnDestroy {
|
|||
|
||||
constructor(
|
||||
private location: Location,
|
||||
private variablesService: VariablesService,
|
||||
public variablesService: VariablesService,
|
||||
private route: ActivatedRoute
|
||||
) { }
|
||||
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ export class ContactsComponent implements OnInit {
|
|||
|
||||
constructor(
|
||||
private location: Location,
|
||||
private variablesService: VariablesService,
|
||||
public variablesService: VariablesService,
|
||||
private backend: BackendService
|
||||
) {}
|
||||
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ export class CreateWalletComponent implements OnInit {
|
|||
constructor(
|
||||
private router: Router,
|
||||
private backend: BackendService,
|
||||
private variablesService: VariablesService,
|
||||
public variablesService: VariablesService,
|
||||
private modalService: ModalService,
|
||||
private ngZone: NgZone,
|
||||
private translate: TranslateService
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ export class EditAliasComponent implements OnInit {
|
|||
private location: Location,
|
||||
private router: Router,
|
||||
private backend: BackendService,
|
||||
private variablesService: VariablesService,
|
||||
public variablesService: VariablesService,
|
||||
private modalService: ModalService,
|
||||
private ngZone: NgZone
|
||||
) {}
|
||||
|
|
|
|||
|
|
@ -43,10 +43,84 @@
|
|||
<div class="wrap-button">
|
||||
<button type="submit" class="blue-button">{{ 'LOGIN.BUTTON_NEXT' | translate }}</button>
|
||||
<button type="button" class="blue-button_reset" (click)="dropSecureAppData()">{{ 'LOGIN.BUTTON_RESET' | translate }}</button> <!--Add "Reset"-button-->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="synchronization-status" [ngStyle]="{'align-items': variablesService.daemon_state === 1 || variablesService.daemon_state === 6 ? 'flex-start' : 'center'}">
|
||||
<div class="status-container">
|
||||
<span class="offline" *ngIf="variablesService.daemon_state === 0">
|
||||
{{ 'SIDEBAR.SYNCHRONIZATION.OFFLINE' | translate }}
|
||||
</span>
|
||||
<span class="syncing" *ngIf="variablesService.daemon_state === 1">
|
||||
{{ 'SIDEBAR.SYNCHRONIZATION.SYNCING' | translate }} {{ variablesService.height_app }}{{ 'SIDEBAR.SYNCHRONIZATION.SLASH' | translate }}{{ variablesService.height_max }}
|
||||
</span>
|
||||
<span class="online" *ngIf="variablesService.daemon_state === 2">
|
||||
{{ 'SIDEBAR.SYNCHRONIZATION.ONLINE' | translate }}
|
||||
</span>
|
||||
<span class="loading" *ngIf="variablesService.daemon_state === 3">
|
||||
{{ 'SIDEBAR.SYNCHRONIZATION.LOADING' | translate }}
|
||||
</span>
|
||||
<span class="offline" *ngIf="variablesService.daemon_state === 4">
|
||||
{{ 'SIDEBAR.SYNCHRONIZATION.ERROR' | translate }}
|
||||
</span>
|
||||
<span class="online" *ngIf="variablesService.daemon_state === 5">
|
||||
{{ 'SIDEBAR.SYNCHRONIZATION.COMPLETE' | translate }}
|
||||
</span>
|
||||
<span class="syncing" *ngIf="variablesService.daemon_state === 6">
|
||||
{{ 'SIDEBAR.SYNCHRONIZATION.DOWNLOADING' | translate }} {{ variablesService.downloaded }}{{ 'SIDEBAR.SYNCHRONIZATION.SLASH' | translate }}{{ variablesService.total }}{{ 'SIDEBAR.SYNCHRONIZATION.MB' | translate }}
|
||||
</span>
|
||||
<div class="progress-bar-container" *ngIf="variablesService.daemon_state === 1 || variablesService.daemon_state === 3">
|
||||
<div class="syncing" *ngIf="variablesService.daemon_state === 1">
|
||||
<div class="progress-bar">
|
||||
<div class="fill" [style.width]="variablesService.sync.progress_value + '%'"></div>
|
||||
</div>
|
||||
<div class="progress-percent">{{ variablesService.sync.progress_value_text }}%</div>
|
||||
</div>
|
||||
<div class="loading" *ngIf="variablesService.daemon_state === 3"></div>
|
||||
</div>
|
||||
|
||||
<div class="progress-bar-container" *ngIf="variablesService.daemon_state === 6">
|
||||
<div class="syncing downloading" *ngIf="variablesService.daemon_state === 6">
|
||||
<div class="progress-bar">
|
||||
<div class="fill" [style.width]="variablesService.download.progress_value + '%'"></div>
|
||||
</div>
|
||||
<div class="progress-percent">{{ variablesService.download.progress_value_text }}%</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="update-container" *ngIf="(variablesService.daemon_state === 0 || variablesService.daemon_state === 2) && [2, 3, 4].indexOf(variablesService.last_build_displaymode) !== -1">
|
||||
<ng-container *ngIf="variablesService.last_build_displaymode === 2">
|
||||
<div class="update-text standard">
|
||||
<span [style.cursor]="'pointer'" (click)="getUpdate()">{{ 'SIDEBAR.UPDATE.STANDARD' | translate }}</span>
|
||||
</div>
|
||||
<i class="icon update standard" tooltip="{{ 'SIDEBAR.UPDATE.STANDARD_TOOLTIP' | translate }}" placement="right-bottom" tooltipClass="update-tooltip" [delay]="500"></i>
|
||||
</ng-container>
|
||||
<ng-container *ngIf="variablesService.last_build_displaymode === 3">
|
||||
<div class="update-text important">
|
||||
<span [style.cursor]="'pointer'" (click)="getUpdate()">{{ 'SIDEBAR.UPDATE.IMPORTANT' | translate }}</span>
|
||||
<br>
|
||||
<span style="font-size: 1rem">{{ 'SIDEBAR.UPDATE.IMPORTANT_HINT' | translate }}</span>
|
||||
</div>
|
||||
<i class="icon update important" tooltip="{{ 'SIDEBAR.UPDATE.IMPORTANT_TOOLTIP' | translate }}" placement="right-bottom" tooltipClass="update-tooltip important" [delay]="500"></i>
|
||||
</ng-container>
|
||||
<ng-container *ngIf="variablesService.last_build_displaymode === 4">
|
||||
<div class="update-text critical">
|
||||
<span [style.cursor]="'pointer'" (click)="getUpdate()">{{ 'SIDEBAR.UPDATE.CRITICAL' | translate }}</span>
|
||||
<br>
|
||||
<span style="font-size: 1rem">{{ 'SIDEBAR.UPDATE.IMPORTANT_HINT' | translate }}</span>
|
||||
</div>
|
||||
<i class="icon update critical" tooltip="{{ 'SIDEBAR.UPDATE.CRITICAL_TOOLTIP' | translate }}" placement="right-bottom" tooltipClass="update-tooltip critical" [delay]="500"></i>
|
||||
</ng-container>
|
||||
</div>
|
||||
<div class="update-container" *ngIf="variablesService.daemon_state === 2 && variablesService.net_time_delta_median !== 0">
|
||||
<div class="update-text time">
|
||||
<span>{{ 'SIDEBAR.UPDATE.TIME' | translate }}</span>
|
||||
</div>
|
||||
<i class="icon time" tooltip="{{ 'SIDEBAR.UPDATE.TIME_TOOLTIP' | translate }}" placement="right-bottom" tooltipClass="update-tooltip important" [delay]="500"></i>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -45,3 +45,8 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
.synchronization-status {
|
||||
position: absolute;
|
||||
bottom: 3rem;
|
||||
left: 3rem;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import {BackendService} from '../_helpers/services/backend.service';
|
|||
import {VariablesService} from '../_helpers/services/variables.service';
|
||||
import {ModalService} from '../_helpers/services/modal.service';
|
||||
import {Wallet} from '../_helpers/models/wallet.model';
|
||||
import {DOWNLOADS_PAGE_URL} from '../_shared/constants'
|
||||
|
||||
import icons from '../../assets/icons/icons.json';
|
||||
|
||||
|
|
@ -101,7 +102,7 @@ export class LoginComponent implements OnInit, OnDestroy {
|
|||
this.variablesService.startCountdown();
|
||||
}
|
||||
this.ngZone.run(() => {
|
||||
this.router.navigate(['/']);
|
||||
this.router.navigate(['/'], {queryParams: {prevUrl: 'login'}});
|
||||
});
|
||||
}
|
||||
});
|
||||
|
|
@ -186,6 +187,7 @@ export class LoginComponent implements OnInit, OnDestroy {
|
|||
new_wallet.is_auditable = open_data['wi'].is_auditable;
|
||||
new_wallet.is_watch_only = open_data['wi'].is_watch_only;
|
||||
new_wallet.currentPage = 1;
|
||||
new_wallet.exclude_mining_txs = false;
|
||||
if (open_data.recent_history && open_data.recent_history.history) {
|
||||
new_wallet.total_history_item = open_data.recent_history.total_history_items;
|
||||
new_wallet.totalPages = Math.ceil( open_data.recent_history.total_history_items / this.variablesService.count);
|
||||
|
|
@ -232,6 +234,9 @@ export class LoginComponent implements OnInit, OnDestroy {
|
|||
});
|
||||
}
|
||||
|
||||
getUpdate() {
|
||||
this.backend.openUrlInBrowser(DOWNLOADS_PAGE_URL);
|
||||
}
|
||||
|
||||
ngOnDestroy() {
|
||||
this.queryRouting.unsubscribe();
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<div class="content">
|
||||
|
||||
<div class="head" *ngIf="variablesService.wallets.length > 0">
|
||||
<div class="head" *ngIf="variablesService.wallets.length > 0 && prevUrl !== 'login'">
|
||||
<button type="button" class="back-btn" (click)="back()">
|
||||
<i class="icon back"></i>
|
||||
<span>{{ 'COMMON.BACK' | translate }}</span>
|
||||
|
|
|
|||
|
|
@ -2,8 +2,9 @@ import {Component, NgZone, OnInit} from '@angular/core';
|
|||
import {Location} from '@angular/common';
|
||||
import {BackendService} from '../_helpers/services/backend.service';
|
||||
import {VariablesService} from '../_helpers/services/variables.service';
|
||||
import {Router} from '@angular/router';
|
||||
import {ActivatedRoute, Router} from '@angular/router';
|
||||
import {TranslateService} from '@ngx-translate/core';
|
||||
import {CREATE_NEW_WALLET_HELP_PAGE} from '../_shared/constants';
|
||||
|
||||
@Component({
|
||||
selector: 'app-main',
|
||||
|
|
@ -12,17 +13,23 @@ import {TranslateService} from '@ngx-translate/core';
|
|||
})
|
||||
export class MainComponent implements OnInit {
|
||||
|
||||
public prevUrl: string = '';
|
||||
|
||||
constructor(
|
||||
private route: ActivatedRoute,
|
||||
private router: Router,
|
||||
private location: Location,
|
||||
private backend: BackendService,
|
||||
private variablesService: VariablesService,
|
||||
public variablesService: VariablesService,
|
||||
private ngZone: NgZone,
|
||||
private translate: TranslateService
|
||||
) {
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
if (this.route.snapshot.queryParams && this.route.snapshot.queryParams.prevUrl) {
|
||||
this.prevUrl = this.route.snapshot.queryParams.prevUrl;
|
||||
}
|
||||
}
|
||||
|
||||
openWallet() {
|
||||
|
|
@ -39,7 +46,7 @@ export class MainComponent implements OnInit {
|
|||
}
|
||||
|
||||
openInBrowser() {
|
||||
this.backend.openUrlInBrowser('docs.zano.org/docs/getting-started-1#section-create-new-wallet');
|
||||
this.backend.openUrlInBrowser(CREATE_NEW_WALLET_HELP_PAGE);
|
||||
}
|
||||
|
||||
back() {
|
||||
|
|
|
|||
|
|
@ -89,6 +89,7 @@ export class OpenWalletModalComponent implements OnInit {
|
|||
new_wallet.is_auditable = open_data['wi'].is_auditable;
|
||||
new_wallet.is_watch_only = open_data['wi'].is_watch_only;
|
||||
new_wallet.currentPage = 1;
|
||||
new_wallet.exclude_mining_txs = false;
|
||||
if (open_data.recent_history && open_data.recent_history.history) {
|
||||
new_wallet.total_history_item = open_data.recent_history.total_history_items;
|
||||
new_wallet.totalPages = Math.ceil( open_data.recent_history.total_history_items / this.variablesService.count);
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ export class OpenWalletComponent implements OnInit, OnDestroy {
|
|||
private route: ActivatedRoute,
|
||||
private router: Router,
|
||||
private backend: BackendService,
|
||||
private variablesService: VariablesService,
|
||||
public variablesService: VariablesService,
|
||||
private modalService: ModalService,
|
||||
private ngZone: NgZone,
|
||||
private translate: TranslateService
|
||||
|
|
@ -98,6 +98,7 @@ export class OpenWalletComponent implements OnInit, OnDestroy {
|
|||
);
|
||||
new_wallet.alias = this.backend.getWalletAlias(new_wallet.address);
|
||||
new_wallet.currentPage = 1;
|
||||
new_wallet.exclude_mining_txs = false;
|
||||
new_wallet.is_auditable = open_data['wi'].is_auditable;
|
||||
new_wallet.is_watch_only = open_data['wi'].is_watch_only;
|
||||
if (open_data.recent_history && open_data.recent_history.history) {
|
||||
|
|
|
|||
|
|
@ -2,30 +2,48 @@
|
|||
<div class="title">
|
||||
<span>{{ 'CONFIRM.TITLE' | translate }}</span>
|
||||
</div>
|
||||
<div class="content">
|
||||
<div class="message-container">
|
||||
<div class="message-block">
|
||||
<div class="message-label">{{ 'CONFIRM.MESSAGE.SEND' | translate }}</div>
|
||||
<div class="message-text">{{ +form.get('amount').value }} {{variablesService.defaultCurrency}}</div>
|
||||
</div>
|
||||
<div class="message-block">
|
||||
<div class="message-label">{{ 'CONFIRM.MESSAGE.FROM' | translate }}</div>
|
||||
<div class="message-text">{{ variablesService.currentWallet.address }}</div>
|
||||
</div>
|
||||
<div class="message-block">
|
||||
<div class="message-label">{{ 'CONFIRM.MESSAGE.TO' | translate }}</div>
|
||||
<div class="message-text">{{ form.get('address').value }}</div>
|
||||
</div>
|
||||
<ng-container *ngIf="form.get('comment').value != ''">
|
||||
<div class="message-block" *ngIf="form.get('comment').value != null">
|
||||
<div class="message-label">{{ 'CONFIRM.MESSAGE.COMMENT' | translate }}</div>
|
||||
<div class="message-text">{{ form.get('comment').value }}</div>
|
||||
<form [formGroup]="confirmForm" (ngSubmit)="confirm()">
|
||||
<div class="content">
|
||||
<div class="message-container">
|
||||
<div class="message-block">
|
||||
<div class="message-label">{{ 'CONFIRM.MESSAGE.SEND' | translate }}</div>
|
||||
<div class="message-text">{{ +form.get('amount').value }} {{variablesService.defaultCurrency}}</div>
|
||||
</div>
|
||||
</ng-container>
|
||||
<div class="message-block">
|
||||
<div class="message-label">{{ 'CONFIRM.MESSAGE.FROM' | translate }}</div>
|
||||
<div class="message-text">{{ variablesService.currentWallet.address }}</div>
|
||||
</div>
|
||||
<div class="message-block">
|
||||
<div class="message-label">{{ 'CONFIRM.MESSAGE.TO' | translate }}</div>
|
||||
<div class="message-text">{{ form.get('address').value }}</div>
|
||||
</div>
|
||||
<ng-container *ngIf="form.get('comment').value != ''">
|
||||
<div class="message-block" *ngIf="form.get('comment').value != null">
|
||||
<div class="message-label">{{ 'CONFIRM.MESSAGE.COMMENT' | translate }}</div>
|
||||
<div class="message-text">{{ form.get('comment').value }}</div>
|
||||
</div>
|
||||
</ng-container>
|
||||
<div class="message-block confirm-master-pass">
|
||||
<div class="input-block" *ngIf="variablesService.appPass">
|
||||
<label for="password">{{ 'LOGIN.MASTER_PASS' | translate }}</label>
|
||||
<input type="password" id="password" name="password" formControlName="password" autofocus (contextmenu)="variablesService.onContextMenuPasteSelect($event)"/>
|
||||
<div class="error-block" >
|
||||
<div *ngIf="(confirmForm.controls['password'].errors && confirmForm.controls['password'].errors.requiredPass)
|
||||
|| (!confirmForm.controls['password'].value && confirmForm.controls['password'].touched)">
|
||||
{{ 'LOGIN.FORM_ERRORS.PASS_REQUIRED' | translate }}
|
||||
</div>
|
||||
<div *ngIf="confirmForm.controls['password'].errors && confirmForm.controls['password'].errors.passwordNotMatch">
|
||||
{{ 'LOGIN.FORM_ERRORS.MISMATCH' | translate }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="wrapper-buttons">
|
||||
<button type="button" class="blue-button" (click)="confirm()">{{ 'CONFIRM.BUTTON_CONFIRM' | translate }}</button>
|
||||
<button type="button" class="blue-button" (click)="onClose()">{{ 'CONFIRM.BUTTON_CANCEL' | translate }}</button>
|
||||
</div>
|
||||
<div class="wrapper-buttons">
|
||||
<button type="submit" class="blue-button" (click)="confirm()">{{ 'CONFIRM.BUTTON_CONFIRM' | translate }}</button>
|
||||
<button type="button" class="blue-button" (click)="onClose()">{{ 'CONFIRM.BUTTON_CANCEL' | translate }}</button>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@
|
|||
align-items: flex-start;
|
||||
justify-content: center;
|
||||
margin: 1.4rem 3rem 6.2rem 0;
|
||||
|
||||
|
||||
.message-block {
|
||||
display: flex;
|
||||
margin-bottom: 1rem;
|
||||
|
|
@ -65,8 +65,15 @@
|
|||
width: 43.4rem;
|
||||
line-height: 2rem;
|
||||
}
|
||||
}
|
||||
|
||||
&.confirm-master-pass {
|
||||
width: 100%;
|
||||
margin: 2rem 0;
|
||||
.input-block {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import { Component, OnInit, Output, EventEmitter, Input } from '@angular/core';
|
||||
import { FormGroup } from '@angular/forms';
|
||||
import { Component, OnInit, Output, EventEmitter, Input} from '@angular/core';
|
||||
import {FormControl, FormGroup, Validators} from '@angular/forms';
|
||||
import { VariablesService } from '../_helpers/services/variables.service';
|
||||
|
||||
|
||||
|
|
@ -10,19 +10,40 @@ import { VariablesService } from '../_helpers/services/variables.service';
|
|||
})
|
||||
export class SendModalComponent implements OnInit {
|
||||
|
||||
confirmForm = new FormGroup({
|
||||
password: new FormControl('')
|
||||
});
|
||||
|
||||
@Input() form: FormGroup;
|
||||
@Output() confirmed: EventEmitter<boolean> = new EventEmitter<boolean>();
|
||||
|
||||
constructor(
|
||||
public variablesService: VariablesService
|
||||
public variablesService: VariablesService,
|
||||
) {
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
if(this.variablesService.appPass) {
|
||||
this.confirmForm.controls['password'].setValidators([Validators.required]);
|
||||
this.confirmForm.updateValueAndValidity();
|
||||
}
|
||||
}
|
||||
|
||||
confirm() {
|
||||
this.confirmed.emit(true);
|
||||
if(this.variablesService.appPass) {
|
||||
if (this.confirmForm.controls['password'].value === '') {
|
||||
this.confirmForm.controls['password'].setErrors({requiredPass: true});
|
||||
return;
|
||||
}
|
||||
this.confirmForm.controls['password'].setErrors({requiredPass: false});
|
||||
if (this.variablesService.appPass === this.confirmForm.controls['password'].value) {
|
||||
this.confirmed.emit(true);
|
||||
} else {
|
||||
this.confirmForm.controls['password'].setErrors({passwordNotMatch: true})
|
||||
}
|
||||
} else {
|
||||
this.confirmed.emit(true);
|
||||
}
|
||||
}
|
||||
|
||||
onClose() {
|
||||
|
|
|
|||
|
|
@ -122,9 +122,16 @@ export class SettingsComponent implements OnInit {
|
|||
}
|
||||
|
||||
ngOnInit() {
|
||||
this.backend.getVersion((version) => {
|
||||
this.backend.getVersion((version, type) => {
|
||||
this.ngZone.run(() => {
|
||||
this.currentBuild = version;
|
||||
this.variablesService.testnet = false;
|
||||
if (type == 'testnet')
|
||||
{
|
||||
this.currentBuild += ' TESTNET';
|
||||
this.variablesService.testnet = true;
|
||||
}
|
||||
this.variablesService.networkType = type;
|
||||
});
|
||||
});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<div class="sidebar-accounts">
|
||||
<div class="sidebar-accounts-header">
|
||||
<h3>{{ 'SIDEBAR.TITLE' | translate }}</h3><button [routerLink]="['main']">{{ 'SIDEBAR.ADD_NEW' | translate }}</button>
|
||||
<h3>{{ 'SIDEBAR.TITLE' | translate }}</h3><button (click)="goMainPage()">{{ 'SIDEBAR.ADD_NEW' | translate }}</button>
|
||||
</div>
|
||||
<div class="sidebar-accounts-list scrolled-content">
|
||||
<div class="sidebar-account" *ngFor="let wallet of variablesService.wallets" [class.active]="wallet?.wallet_id === walletActive" [routerLink]="['/wallet/' + wallet.wallet_id + '/history']">
|
||||
|
|
@ -12,7 +12,7 @@
|
|||
Watch-only
|
||||
</div>
|
||||
<div class="content auditable-watch-only" *ngIf="wallet.is_auditable && wallet.is_watch_only">
|
||||
Tracking
|
||||
Tracking
|
||||
</div>
|
||||
</div>
|
||||
<div class="close-wallet-wrapper">
|
||||
|
|
@ -28,7 +28,7 @@
|
|||
<div class="name">
|
||||
<span tooltip="{{wallet.alias['name']}}" placement="top-left" tooltipClass="table-tooltip account-tooltip" [delay]="500" [showWhenNoOverflow]="false">{{wallet.alias['name']}}</span>
|
||||
<ng-container *ngIf="wallet.alias['comment'] && wallet.alias['comment'].length">
|
||||
<i class="icon comment" tooltip="{{wallet.alias['comment']}}" placement="top" tooltipClass="table-tooltip account-tooltip" [delay]="500"></i>
|
||||
<span class="icon comment" tooltip="{{wallet.alias['comment']}}" placement="top" tooltipClass="table-tooltip account-tooltip" [delay]="500">i</span>
|
||||
</ng-container>
|
||||
</div>
|
||||
<span class="price">$ {{wallet.getMoneyEquivalent(variablesService.moneyEquivalent) | intToMoney | number : '1.2-2'}}</span>
|
||||
|
|
@ -111,7 +111,7 @@
|
|||
</div>
|
||||
</ng-template>
|
||||
</div>
|
||||
<div class="sidebar-synchronization-status" [ngStyle]="{'align-items': variablesService.daemon_state === 1 || variablesService.daemon_state === 6 ? 'flex-start' : 'center'}">
|
||||
<div class="synchronization-status" [ngStyle]="{'align-items': variablesService.daemon_state === 1 || variablesService.daemon_state === 6 ? 'flex-start' : 'center'}">
|
||||
<div class="status-container">
|
||||
<span class="offline" *ngIf="variablesService.daemon_state === 0">
|
||||
{{ 'SIDEBAR.SYNCHRONIZATION.OFFLINE' | translate }}
|
||||
|
|
|
|||
|
|
@ -169,12 +169,17 @@
|
|||
|
||||
.icon {
|
||||
margin-left: 0.5rem;
|
||||
width: 1.2rem;
|
||||
height: 1.2rem;
|
||||
|
||||
&.comment {
|
||||
mask: url(../../assets/icons/alert.svg) no-repeat center;
|
||||
}
|
||||
width: 1.3rem;
|
||||
height: 1.3rem;
|
||||
border-radius: 50%;
|
||||
color: #1a1a1a;
|
||||
font-size: 9px;
|
||||
font-weight: 700;
|
||||
line-height: 9px;
|
||||
padding-right: 1px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -300,7 +305,7 @@
|
|||
}
|
||||
}
|
||||
|
||||
.sidebar-synchronization-status {
|
||||
.synchronization-status {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: flex-start;
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import {VariablesService} from '../_helpers/services/variables.service';
|
|||
import {BackendService} from '../_helpers/services/backend.service';
|
||||
import { ModalService } from '../_helpers/services/modal.service';
|
||||
import {AUDITABLE_WALLET_HELP_PAGE} from '../_shared/constants';
|
||||
import {DOWNLOADS_PAGE_URL} from '../_shared/constants';
|
||||
|
||||
import icons from '../../assets/icons/icons.json';
|
||||
|
||||
|
|
@ -24,6 +25,8 @@ export class SidebarComponent implements OnInit, OnDestroy {
|
|||
isModalDialogVisible = false;
|
||||
closeWalletId: number;
|
||||
|
||||
menuItemHovered: boolean;
|
||||
|
||||
constructor(
|
||||
private route: ActivatedRoute,
|
||||
private router: Router,
|
||||
|
|
@ -61,6 +64,19 @@ export class SidebarComponent implements OnInit, OnDestroy {
|
|||
});
|
||||
}
|
||||
|
||||
goMainPage() {
|
||||
if (this.route.snapshot.queryParams && this.route.snapshot.queryParams.prevUrl === 'login') {
|
||||
this.ngZone.run(() => {
|
||||
this.router.navigate(['/'], {queryParams: {prevUrl: 'login'}});
|
||||
});
|
||||
} else {
|
||||
this.ngZone.run(() => {
|
||||
this.router.navigate(['/']);
|
||||
});
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
contactsRoute() {
|
||||
if (this.variablesService.appPass) {
|
||||
this.router.navigate(['/contacts']);
|
||||
|
|
@ -106,7 +122,7 @@ export class SidebarComponent implements OnInit, OnDestroy {
|
|||
}
|
||||
|
||||
getUpdate() {
|
||||
this.backend.openUrlInBrowser('zano.org/downloads.html');
|
||||
this.backend.openUrlInBrowser(DOWNLOADS_PAGE_URL);
|
||||
}
|
||||
goToAuditableWalletHelpPage(e) {
|
||||
e.preventDefault();
|
||||
|
|
|
|||
|
|
@ -91,7 +91,7 @@ export class StakingComponent implements OnInit, OnDestroy {
|
|||
|
||||
constructor(
|
||||
private route: ActivatedRoute,
|
||||
private variablesService: VariablesService,
|
||||
public variablesService: VariablesService,
|
||||
private backend: BackendService,
|
||||
private ngZone: NgZone,
|
||||
private intToMoneyPipe: IntToMoneyPipe,
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ export class TransferAliasComponent implements OnInit {
|
|||
private location: Location,
|
||||
private router: Router,
|
||||
private backend: BackendService,
|
||||
private variablesService: VariablesService,
|
||||
public variablesService: VariablesService,
|
||||
private modalService: ModalService,
|
||||
private ngZone: NgZone
|
||||
) {}
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@
|
|||
<div class="tabs">
|
||||
<div class="tabs-header">
|
||||
<ng-container *ngFor="let tab of tabs; let index = index">
|
||||
<div class="tab" [class.active]="tab.active"
|
||||
<div class="tab" [class.active]="tab.active" [ngClass]="{ 'hide': ((tab.link === '/send' || tab.link === '/contracts') && variablesService.currentWallet.is_watch_only && variablesService.currentWallet.is_auditable) }"
|
||||
[class.disabled]="((tab.link === '/send' || tab.link === '/contracts' || tab.link === '/staking') && (variablesService.daemon_state !== 2 || !variablesService.currentWallet.loaded))
|
||||
|| ((tab.link === '/send' || tab.link === '/contracts') && variablesService.currentWallet.is_watch_only && variablesService.currentWallet.is_auditable)"
|
||||
(click)="changeTab(index)" (mouseover)="itemHovered(index, true)" (mouseleave)="itemHovered(index, false)">
|
||||
|
|
@ -50,12 +50,26 @@
|
|||
</div>
|
||||
<div *ngIf="activeTab === 'history'" class="pagination-wrapper">
|
||||
<div class="pagination">
|
||||
<div>
|
||||
<button [disabled]="variablesService.currentWallet.currentPage === 1" (click)="setPage(variablesService.currentWallet.currentPage - 1)"><</button>
|
||||
<ng-container *ngFor="let page of variablesService.currentWallet.pages">
|
||||
<button [ngClass]="{ 'active': variablesService.currentWallet.currentPage === page }"
|
||||
(click)="setPage(page)">{{page}}</button>
|
||||
<ng-container *ngIf="!mining">
|
||||
<button *ngFor="let page of variablesService.currentWallet.pages" [ngClass]="{ 'active': variablesService.currentWallet.currentPage === page }"
|
||||
(click)="setPage(page)">{{page}}</button>
|
||||
</ng-container>
|
||||
<ng-container *ngIf="mining">
|
||||
<button [ngClass]="{ 'active': variablesService.currentWallet.currentPage }"
|
||||
(click)="setPage(variablesService.currentWallet.currentPage)">{{variablesService.currentWallet.currentPage}}</button>
|
||||
</ng-container>
|
||||
<button [disabled]="variablesService.currentWallet.currentPage === variablesService.currentWallet.totalPages" (click)="setPage(variablesService.currentWallet.currentPage + 1)">></button>
|
||||
</div>
|
||||
<div class="mining-transaction-switch">
|
||||
<span class="switch-text">Hide mining transactions</span>
|
||||
<div class="switch" (click)="toggleMiningTransactions(); $event.stopPropagation()">
|
||||
<span class="option" *ngIf="mining">{{ 'STAKING.SWITCH.ON' | translate }}</span>
|
||||
<span class="circle" [class.on]="mining" [class.off]="!mining"></span>
|
||||
<span class="option" *ngIf="!mining">{{ 'STAKING.SWITCH.OFF' | translate }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -160,19 +160,21 @@
|
|||
cursor: pointer;
|
||||
padding: 0 1rem;
|
||||
height: 5rem;
|
||||
|
||||
&.hide {
|
||||
display: none;
|
||||
}
|
||||
.animated {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
margin-right: 1.3rem;
|
||||
}
|
||||
|
||||
|
||||
.animated ::ng-deep svg {
|
||||
|
||||
|
||||
width: 2rem;
|
||||
height: 2rem;
|
||||
|
||||
|
||||
path, circle, polygon {
|
||||
fill: #4db1ff;
|
||||
}
|
||||
|
|
@ -239,10 +241,13 @@
|
|||
overflow-y: overlay;
|
||||
}
|
||||
|
||||
|
||||
|
||||
.pagination-wrapper {
|
||||
.pagination {
|
||||
padding: 1rem;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
button {
|
||||
margin-right: 0.5rem;
|
||||
padding: 0;
|
||||
|
|
@ -253,3 +258,37 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
.mining-transaction-switch {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
.switch-text {
|
||||
margin-right: 1rem;
|
||||
font-size: 1.3rem;
|
||||
color: #565c62;
|
||||
}
|
||||
|
||||
.switch {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
border-radius: 1rem;
|
||||
cursor: pointer;
|
||||
font-size: 1rem;
|
||||
padding: 0.5rem;
|
||||
width: 5rem;
|
||||
height: 2rem;
|
||||
|
||||
.circle {
|
||||
border-radius: 1rem;
|
||||
width: 1.2rem;
|
||||
height: 1.2rem;
|
||||
}
|
||||
|
||||
.option {
|
||||
margin: 0 0.2rem;
|
||||
line-height: 1.2rem;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import { BackendService } from '../_helpers/services/backend.service';
|
|||
import { TranslateService } from '@ngx-translate/core';
|
||||
import { IntToMoneyPipe } from '../_helpers/pipes/int-to-money.pipe';
|
||||
import { Subscription } from 'rxjs';
|
||||
import { LOCKED_BALANCE_HELP_PAGE } from '../_shared/constants';
|
||||
|
||||
import icons from '../../assets/icons/icons.json';
|
||||
import { PaginationService } from '../_helpers/services/pagination.service';
|
||||
|
|
@ -23,6 +24,7 @@ export class WalletComponent implements OnInit, OnDestroy {
|
|||
copyAnimationTimeout;
|
||||
balanceTooltip;
|
||||
activeTab = 'history';
|
||||
public mining:boolean = false;
|
||||
|
||||
public currentPage = 1;
|
||||
|
||||
|
|
@ -104,6 +106,7 @@ export class WalletComponent implements OnInit, OnDestroy {
|
|||
this.scrolledContent.nativeElement.scrollTop = 0;
|
||||
clearTimeout(this.copyAnimationTimeout);
|
||||
this.copyAnimation = false;
|
||||
this.mining = this.variablesService.currentWallet.exclude_mining_txs;
|
||||
});
|
||||
this.subRouting2 = this.router.events.subscribe(val => {
|
||||
if (val instanceof RoutesRecognized) {
|
||||
|
|
@ -175,7 +178,7 @@ export class WalletComponent implements OnInit, OnDestroy {
|
|||
link.setAttribute('class', 'link');
|
||||
link.innerHTML = this.translate.instant('WALLET.LOCKED_BALANCE_LINK');
|
||||
link.addEventListener('click', () => {
|
||||
this.openInBrowser('docs.zano.org/docs/locked-balance');
|
||||
this.openInBrowser(LOCKED_BALANCE_HELP_PAGE);
|
||||
});
|
||||
this.balanceTooltip.appendChild(link);
|
||||
return this.balanceTooltip;
|
||||
|
|
@ -194,10 +197,20 @@ export class WalletComponent implements OnInit, OnDestroy {
|
|||
return;
|
||||
}
|
||||
this.variablesService.currentWallet.currentPage = pageNumber;
|
||||
this.getRecentTransfers();
|
||||
}
|
||||
toggleMiningTransactions() {
|
||||
this.mining = !this.mining;
|
||||
this.variablesService.currentWallet.exclude_mining_txs = this.mining;
|
||||
this.variablesService.currentWallet.currentPage = 1;
|
||||
this.getRecentTransfers();
|
||||
}
|
||||
|
||||
getRecentTransfers () {
|
||||
this.backend.getRecentTransfers(
|
||||
this.walletID,
|
||||
(this.variablesService.currentWallet.currentPage - 1) * this.variablesService.count,
|
||||
this.variablesService.count, (status, data) => {
|
||||
this.variablesService.count, this.variablesService.currentWallet.exclude_mining_txs, (status, data) => {
|
||||
if (status && data.total_history_items) {
|
||||
this.variablesService.currentWallet.history.splice(0, this.variablesService.currentWallet.history.length);
|
||||
this.ngZone.run(() => {
|
||||
|
|
|
|||
|
|
@ -147,6 +147,12 @@
|
|||
"TIME3": "1 hour",
|
||||
"TIME4": "Never"
|
||||
},
|
||||
"SCALE": {
|
||||
"75": "75% scale",
|
||||
"100": "100% scale",
|
||||
"125": "125% scale",
|
||||
"150": "150% scale"
|
||||
},
|
||||
"MASTER_PASSWORD": {
|
||||
"TITLE": "Update master password",
|
||||
"OLD": "Old password",
|
||||
|
|
@ -194,7 +200,7 @@
|
|||
"ASSIGN_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias",
|
||||
"PLACEHOLDER": " Enter alias",
|
||||
"TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”."
|
||||
},
|
||||
"COMMENT": {
|
||||
|
|
@ -206,7 +212,7 @@
|
|||
"BUTTON_ASSIGN": "Assign",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_WRONG": "Alias has wrong name",
|
||||
"NAME_WRONG": "Invalid name: allowed symbols \"0-9\", \"a-z\", \"-\", \".\"",
|
||||
"NAME_LENGTH": "The alias must be 6-25 characters long",
|
||||
"NAME_EXISTS": "Alias name already exists",
|
||||
"NO_MONEY": "You do not have enough funds to assign this alias",
|
||||
|
|
|
|||
|
|
@ -147,6 +147,12 @@
|
|||
"TIME3": "1 hour",
|
||||
"TIME4": "Never"
|
||||
},
|
||||
"SCALE": {
|
||||
"75": "75% scale",
|
||||
"100": "100% scale",
|
||||
"125": "125% scale",
|
||||
"150": "150% scale"
|
||||
},
|
||||
"MASTER_PASSWORD": {
|
||||
"TITLE": "Update master password",
|
||||
"OLD": "Old password",
|
||||
|
|
@ -194,7 +200,7 @@
|
|||
"ASSIGN_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias",
|
||||
"PLACEHOLDER": " Enter alias",
|
||||
"TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”."
|
||||
},
|
||||
"COMMENT": {
|
||||
|
|
@ -206,7 +212,7 @@
|
|||
"BUTTON_ASSIGN": "Assign",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_WRONG": "Alias has wrong name",
|
||||
"NAME_WRONG": "Invalid name: allowed symbols \"0-9\", \"a-z\", \"-\", \".\"",
|
||||
"NAME_LENGTH": "The alias must be 6-25 characters long",
|
||||
"NAME_EXISTS": "Alias name already exists",
|
||||
"NO_MONEY": "You do not have enough funds to assign this alias",
|
||||
|
|
|
|||
|
|
@ -147,6 +147,12 @@
|
|||
"TIME3": "1 hour",
|
||||
"TIME4": "Never"
|
||||
},
|
||||
"SCALE": {
|
||||
"75": "75% scale",
|
||||
"100": "100% scale",
|
||||
"125": "125% scale",
|
||||
"150": "150% scale"
|
||||
},
|
||||
"MASTER_PASSWORD": {
|
||||
"TITLE": "Update master password",
|
||||
"OLD": "Old password",
|
||||
|
|
@ -194,7 +200,7 @@
|
|||
"ASSIGN_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias",
|
||||
"PLACEHOLDER": " Enter alias",
|
||||
"TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”."
|
||||
},
|
||||
"COMMENT": {
|
||||
|
|
@ -206,7 +212,7 @@
|
|||
"BUTTON_ASSIGN": "Assign",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_WRONG": "Alias has wrong name",
|
||||
"NAME_WRONG": "Invalid name: allowed symbols \"0-9\", \"a-z\", \"-\", \".\"",
|
||||
"NAME_LENGTH": "The alias must be 6-25 characters long",
|
||||
"NAME_EXISTS": "Alias name already exists",
|
||||
"NO_MONEY": "You do not have enough funds to assign this alias",
|
||||
|
|
|
|||
|
|
@ -147,6 +147,12 @@
|
|||
"TIME3": "1 hour",
|
||||
"TIME4": "Never"
|
||||
},
|
||||
"SCALE": {
|
||||
"75": "75% scale",
|
||||
"100": "100% scale",
|
||||
"125": "125% scale",
|
||||
"150": "150% scale"
|
||||
},
|
||||
"MASTER_PASSWORD": {
|
||||
"TITLE": "Update master password",
|
||||
"OLD": "Old password",
|
||||
|
|
@ -194,7 +200,7 @@
|
|||
"ASSIGN_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias",
|
||||
"PLACEHOLDER": " Enter alias",
|
||||
"TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”."
|
||||
},
|
||||
"COMMENT": {
|
||||
|
|
@ -206,7 +212,7 @@
|
|||
"BUTTON_ASSIGN": "Assign",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_WRONG": "Alias has wrong name",
|
||||
"NAME_WRONG": "Invalid name: allowed symbols \"0-9\", \"a-z\", \"-\", \".\"",
|
||||
"NAME_LENGTH": "The alias must be 6-25 characters long",
|
||||
"NAME_EXISTS": "Alias name already exists",
|
||||
"NO_MONEY": "You do not have enough funds to assign this alias",
|
||||
|
|
|
|||
|
|
@ -147,6 +147,12 @@
|
|||
"TIME3": "1 hour",
|
||||
"TIME4": "Never"
|
||||
},
|
||||
"SCALE": {
|
||||
"75": "75% scale",
|
||||
"100": "100% scale",
|
||||
"125": "125% scale",
|
||||
"150": "150% scale"
|
||||
},
|
||||
"MASTER_PASSWORD": {
|
||||
"TITLE": "Update master password",
|
||||
"OLD": "Old password",
|
||||
|
|
@ -194,7 +200,7 @@
|
|||
"ASSIGN_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias",
|
||||
"PLACEHOLDER": " Enter alias",
|
||||
"TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”."
|
||||
},
|
||||
"COMMENT": {
|
||||
|
|
@ -206,7 +212,7 @@
|
|||
"BUTTON_ASSIGN": "Assign",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_WRONG": "Alias has wrong name",
|
||||
"NAME_WRONG": "Invalid name: allowed symbols \"0-9\", \"a-z\", \"-\", \".\"",
|
||||
"NAME_LENGTH": "The alias must be 6-25 characters long",
|
||||
"NAME_EXISTS": "Alias name already exists",
|
||||
"NO_MONEY": "You do not have enough funds to assign this alias",
|
||||
|
|
|
|||
|
|
@ -147,6 +147,12 @@
|
|||
"TIME3": "1 Stunde",
|
||||
"TIME4": "Nie"
|
||||
},
|
||||
"SCALE": {
|
||||
"75": "75% Rahmen",
|
||||
"100": "100% Rahmen",
|
||||
"125": "125% Rahmen",
|
||||
"150": "150% Rahmen"
|
||||
},
|
||||
"MASTER_PASSWORD": {
|
||||
"TITLE": "Master-Passwort aktualisieren",
|
||||
"OLD": "Altes Passwort",
|
||||
|
|
@ -194,7 +200,7 @@
|
|||
"ASSIGN_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Alias eingeben",
|
||||
"PLACEHOLDER": " Alias eingeben",
|
||||
"TOOLTIP": "Ein Alias ist eine verkürzte Form Ihres Kontos. Ein Alias kann nur lateinische Buchstaben, Zahlen und die Zeichen „.“ und “-” enthalten. Es muss mit “@” beginnen."
|
||||
},
|
||||
"COMMENT": {
|
||||
|
|
@ -206,7 +212,7 @@
|
|||
"BUTTON_ASSIGN": "Zuweisen",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name ist erforderlich",
|
||||
"NAME_WRONG": "Alias hat einen falschen Namen",
|
||||
"NAME_WRONG": "Ungültiger Name: zulässige Symbole \"0-9\", \"a-z\", \"-\", \".\"",
|
||||
"NAME_LENGTH": "Der Alias muss 6-25 Zeichen lang sein",
|
||||
"NAME_EXISTS": "Alias-Name existiert bereits",
|
||||
"NO_MONEY": "Du hast nicht genug Geldmittel, um diesen Alias zuzuweisen",
|
||||
|
|
|
|||
|
|
@ -147,6 +147,12 @@
|
|||
"TIME3": "1 hour",
|
||||
"TIME4": "Never"
|
||||
},
|
||||
"SCALE": {
|
||||
"75": "75% scale",
|
||||
"100": "100% scale",
|
||||
"125": "125% scale",
|
||||
"150": "150% scale"
|
||||
},
|
||||
"MASTER_PASSWORD": {
|
||||
"TITLE": "Update master password",
|
||||
"OLD": "Old password",
|
||||
|
|
@ -194,7 +200,7 @@
|
|||
"ASSIGN_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias",
|
||||
"PLACEHOLDER": " Enter alias",
|
||||
"TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”."
|
||||
},
|
||||
"COMMENT": {
|
||||
|
|
|
|||
|
|
@ -223,7 +223,7 @@
|
|||
"ASSIGN_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias",
|
||||
"PLACEHOLDER": " Enter alias",
|
||||
"TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”."
|
||||
},
|
||||
"COMMENT": {
|
||||
|
|
@ -235,7 +235,7 @@
|
|||
"BUTTON_ASSIGN": "Assign",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_WRONG": "Alias has wrong name",
|
||||
"NAME_WRONG": "Invalid name: allowed symbols \"0-9\", \"a-z\", \"-\", \".\"",
|
||||
"NAME_LENGTH": "The alias must be 6-25 characters long",
|
||||
"NAME_EXISTS": "Alias name already exists",
|
||||
"NO_MONEY": "You do not have enough funds to assign this alias",
|
||||
|
|
|
|||
|
|
@ -147,6 +147,12 @@
|
|||
"TIME3": "1 hour",
|
||||
"TIME4": "Never"
|
||||
},
|
||||
"SCALE": {
|
||||
"75": "75% scale",
|
||||
"100": "100% scale",
|
||||
"125": "125% scale",
|
||||
"150": "150% scale"
|
||||
},
|
||||
"MASTER_PASSWORD": {
|
||||
"TITLE": "Update master password",
|
||||
"OLD": "Old password",
|
||||
|
|
@ -194,7 +200,7 @@
|
|||
"ASSIGN_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias",
|
||||
"PLACEHOLDER": " Enter alias",
|
||||
"TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”."
|
||||
},
|
||||
"COMMENT": {
|
||||
|
|
@ -206,7 +212,7 @@
|
|||
"BUTTON_ASSIGN": "Assign",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_WRONG": "Alias has wrong name",
|
||||
"NAME_WRONG": "Nombre no válido: símbolos permitidos \"0-9\", \"a-z\", \"-\", \".\"",
|
||||
"NAME_LENGTH": "The alias must be 6-25 characters long",
|
||||
"NAME_EXISTS": "Alias name already exists",
|
||||
"NO_MONEY": "You do not have enough funds to assign this alias",
|
||||
|
|
|
|||
|
|
@ -147,6 +147,12 @@
|
|||
"TIME3": "1 hour",
|
||||
"TIME4": "Never"
|
||||
},
|
||||
"SCALE": {
|
||||
"75": "75% scale",
|
||||
"100": "100% scale",
|
||||
"125": "125% scale",
|
||||
"150": "150% scale"
|
||||
},
|
||||
"MASTER_PASSWORD": {
|
||||
"TITLE": "Update master password",
|
||||
"OLD": "Old password",
|
||||
|
|
@ -194,7 +200,7 @@
|
|||
"ASSIGN_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias",
|
||||
"PLACEHOLDER": " Enter alias",
|
||||
"TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”."
|
||||
},
|
||||
"COMMENT": {
|
||||
|
|
@ -206,7 +212,7 @@
|
|||
"BUTTON_ASSIGN": "Assign",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_WRONG": "Alias has wrong name",
|
||||
"NAME_WRONG": "Invalid name: allowed symbols \"0-9\", \"a-z\", \"-\", \".\"",
|
||||
"NAME_LENGTH": "The alias must be 6-25 characters long",
|
||||
"NAME_EXISTS": "Alias name already exists",
|
||||
"NO_MONEY": "You do not have enough funds to assign this alias",
|
||||
|
|
|
|||
|
|
@ -147,6 +147,12 @@
|
|||
"TIME3": "1 heure",
|
||||
"TIME4": "Jamais"
|
||||
},
|
||||
"SCALE": {
|
||||
"75": "75% échelle",
|
||||
"100": "100% échelle",
|
||||
"125": "125% échelle",
|
||||
"150": "150% échelle"
|
||||
},
|
||||
"MASTER_PASSWORD": {
|
||||
"TITLE": "Mettre à jour le mot de passe principal",
|
||||
"OLD": "Ancien mot de passe",
|
||||
|
|
@ -194,7 +200,7 @@
|
|||
"ASSIGN_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Entrer l'alias",
|
||||
"PLACEHOLDER": " Entrer l'alias",
|
||||
"TOOLTIP": "Un alias est une forme abréviée pour votre compte. Un alias ne peut inclure que des lettres, des chiffres et des caractères latins « » et « - ». Il doit commencer par « @ »."
|
||||
},
|
||||
"COMMENT": {
|
||||
|
|
@ -206,7 +212,7 @@
|
|||
"BUTTON_ASSIGN": "Assigner",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Le nom est requis",
|
||||
"NAME_WRONG": "L'alias a un nom incorrect",
|
||||
"NAME_WRONG": "Nom invalide: symboles autorisés \"0-9\", \"a-z\", \"-\", \".\"",
|
||||
"NAME_LENGTH": "L'alias doit contenir 6-25 caractères",
|
||||
"NAME_EXISTS": "Alias déjà existant",
|
||||
"NO_MONEY": "Vous n'avez pas assez de fonds pour assigner cet alias",
|
||||
|
|
|
|||
|
|
@ -147,6 +147,12 @@
|
|||
"TIME3": "1 hour",
|
||||
"TIME4": "Never"
|
||||
},
|
||||
"SCALE": {
|
||||
"75": "75% scale",
|
||||
"100": "100% scale",
|
||||
"125": "125% scale",
|
||||
"150": "150% scale"
|
||||
},
|
||||
"MASTER_PASSWORD": {
|
||||
"TITLE": "Update master password",
|
||||
"OLD": "Old password",
|
||||
|
|
@ -194,7 +200,7 @@
|
|||
"ASSIGN_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias",
|
||||
"PLACEHOLDER": " Enter alias",
|
||||
"TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”."
|
||||
},
|
||||
"COMMENT": {
|
||||
|
|
@ -206,7 +212,7 @@
|
|||
"BUTTON_ASSIGN": "Assign",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_WRONG": "Alias has wrong name",
|
||||
"NAME_WRONG": "Invalid name: allowed symbols \"0-9\", \"a-z\", \"-\", \".\"",
|
||||
"NAME_LENGTH": "The alias must be 6-25 characters long",
|
||||
"NAME_EXISTS": "Alias name already exists",
|
||||
"NO_MONEY": "You do not have enough funds to assign this alias",
|
||||
|
|
|
|||
|
|
@ -147,6 +147,12 @@
|
|||
"TIME3": "1 hour",
|
||||
"TIME4": "Never"
|
||||
},
|
||||
"SCALE": {
|
||||
"75": "75% scale",
|
||||
"100": "100% scale",
|
||||
"125": "125% scale",
|
||||
"150": "150% scale"
|
||||
},
|
||||
"MASTER_PASSWORD": {
|
||||
"TITLE": "Update master password",
|
||||
"OLD": "Old password",
|
||||
|
|
@ -194,7 +200,7 @@
|
|||
"ASSIGN_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias",
|
||||
"PLACEHOLDER": " Enter alias",
|
||||
"TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”."
|
||||
},
|
||||
"COMMENT": {
|
||||
|
|
@ -206,7 +212,7 @@
|
|||
"BUTTON_ASSIGN": "Assign",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_WRONG": "Alias has wrong name",
|
||||
"NAME_WRONG": "Invalid name: allowed symbols \"0-9\", \"a-z\", \"-\", \".\"",
|
||||
"NAME_LENGTH": "The alias must be 6-25 characters long",
|
||||
"NAME_EXISTS": "Alias name already exists",
|
||||
"NO_MONEY": "You do not have enough funds to assign this alias",
|
||||
|
|
|
|||
|
|
@ -147,6 +147,12 @@
|
|||
"TIME3": "1 ora",
|
||||
"TIME4": "Mai"
|
||||
},
|
||||
"SCALE": {
|
||||
"75": "75% scala",
|
||||
"100": "100% scala",
|
||||
"125": "125% scala",
|
||||
"150": "150% scala"
|
||||
},
|
||||
"MASTER_PASSWORD": {
|
||||
"TITLE": "Aggiorna password principale",
|
||||
"OLD": "Vecchia password",
|
||||
|
|
@ -194,7 +200,7 @@
|
|||
"ASSIGN_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Inserisci alias",
|
||||
"PLACEHOLDER": " Inserisci alias",
|
||||
"TOOLTIP": "Un alias è un modulo abbreviato o il tuo account. Un alias può solo includere lettere latine, numeri e caratteri “.” e “-”. Deve iniziare con “@”."
|
||||
},
|
||||
"COMMENT": {
|
||||
|
|
@ -206,7 +212,7 @@
|
|||
"BUTTON_ASSIGN": "Assegna",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Il nome è richiesto",
|
||||
"NAME_WRONG": "L'Alias ha un nome errato",
|
||||
"NAME_WRONG": "Nome Ungültiger: zulässige Symbole \"0-9\", \"a-z\", \"-\", \".\"",
|
||||
"NAME_LENGTH": "L'alias deve essere lungo 6-25 caratteri",
|
||||
"NAME_EXISTS": "Il nome dell'alias esiste già",
|
||||
"NO_MONEY": "Non hai fondi sufficienti per assegnare questo alias",
|
||||
|
|
|
|||
|
|
@ -147,6 +147,7 @@
|
|||
"TIME3": "1 hour",
|
||||
"TIME4": "Never"
|
||||
},
|
||||
|
||||
"MASTER_PASSWORD": {
|
||||
"TITLE": "Update master password",
|
||||
"OLD": "Old password",
|
||||
|
|
@ -194,7 +195,7 @@
|
|||
"ASSIGN_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias",
|
||||
"PLACEHOLDER": " Enter alias",
|
||||
"TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”."
|
||||
},
|
||||
"COMMENT": {
|
||||
|
|
@ -206,7 +207,7 @@
|
|||
"BUTTON_ASSIGN": "Assign",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_WRONG": "Alias has wrong name",
|
||||
"NAME_WRONG": "Invalid name: allowed symbols \"0-9\", \"a-z\", \"-\", \".\"",
|
||||
"NAME_LENGTH": "The alias must be 6-25 characters long",
|
||||
"NAME_EXISTS": "Alias name already exists",
|
||||
"NO_MONEY": "You do not have enough funds to assign this alias",
|
||||
|
|
|
|||
|
|
@ -147,6 +147,12 @@
|
|||
"TIME3": "1 hour",
|
||||
"TIME4": "Never"
|
||||
},
|
||||
"SCALE": {
|
||||
"75": "75% scale",
|
||||
"100": "100% scale",
|
||||
"125": "125% scale",
|
||||
"150": "150% scale"
|
||||
},
|
||||
"MASTER_PASSWORD": {
|
||||
"TITLE": "Update master password",
|
||||
"OLD": "Old password",
|
||||
|
|
@ -194,7 +200,7 @@
|
|||
"ASSIGN_ALIAS": {
|
||||
"NAME": {
|
||||
"LABEL": "Alias",
|
||||
"PLACEHOLDER": "@ Enter alias",
|
||||
"PLACEHOLDER": " Enter alias",
|
||||
"TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”."
|
||||
},
|
||||
"COMMENT": {
|
||||
|
|
@ -206,7 +212,7 @@
|
|||
"BUTTON_ASSIGN": "Assign",
|
||||
"FORM_ERRORS": {
|
||||
"NAME_REQUIRED": "Name is required",
|
||||
"NAME_WRONG": "Alias has wrong name",
|
||||
"NAME_WRONG": "Invalid name: allowed symbols \"0-9\", \"a-z\", \"-\", \".\"",
|
||||
"NAME_LENGTH": "The alias must be 6-25 characters long",
|
||||
"NAME_EXISTS": "Alias name already exists",
|
||||
"NO_MONEY": "You do not have enough funds to assign this alias",
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue