Browse Source

Merge remote-tracking branch 'origin/main' into feature/enable-strict-null-checks-in-ui

pull/6264/head
Kenrick Tandrian 1 week ago
parent
commit
427c46c9f5
  1. 18
      CHANGELOG.md
  2. 43
      apps/api/src/assets/cryptocurrencies/cryptocurrencies.json
  3. 7
      apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
  4. 20
      apps/client/src/locales/messages.ca.xlf
  5. 20
      apps/client/src/locales/messages.de.xlf
  6. 28
      apps/client/src/locales/messages.es.xlf
  7. 20
      apps/client/src/locales/messages.fr.xlf
  8. 20
      apps/client/src/locales/messages.it.xlf
  9. 20
      apps/client/src/locales/messages.ko.xlf
  10. 20
      apps/client/src/locales/messages.nl.xlf
  11. 20
      apps/client/src/locales/messages.pl.xlf
  12. 20
      apps/client/src/locales/messages.pt.xlf
  13. 20
      apps/client/src/locales/messages.tr.xlf
  14. 20
      apps/client/src/locales/messages.uk.xlf
  15. 19
      apps/client/src/locales/messages.xlf
  16. 20
      apps/client/src/locales/messages.zh.xlf
  17. 5
      libs/common/src/lib/config.ts
  18. 10
      libs/ui/src/lib/account-balances/account-balances.component.html
  19. 68
      libs/ui/src/lib/account-balances/account-balances.component.ts
  20. 8
      libs/ui/src/lib/activities-filter/activities-filter.component.html
  21. 83
      libs/ui/src/lib/activities-filter/activities-filter.component.ts
  22. 4
      package-lock.json
  23. 2
      package.json

18
CHANGELOG.md

@ -5,6 +5,24 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## 2.241.0 - 2026-02-21
### Changed
- Improved the usability of the portfolio summary tab on the home page in the _Presenter View_
- Refreshed the cryptocurrencies list
- Improved the language localization for German (`de`)
- Improved the language localization for Spanish (`es`)
### Fixed
- Fixed an issue with `balanceInBaseCurrency` of the accounts in the value redaction interceptor for the impersonation mode
- Fixed an issue with `comment` of the accounts in the value redaction interceptor for the impersonation mode
- Fixed an issue with `dividendInBaseCurrency` of the accounts in the value redaction interceptor for the impersonation mode
- Fixed an issue with `dividendInBaseCurrency` of the accounts in the value redaction interceptor for the impersonation mode
- Fixed an issue with `interestInBaseCurrency` of the accounts in the value redaction interceptor for the impersonation mode
- Fixed an issue with `value` of the accounts in the value redaction interceptor for the impersonation mode
## 2.240.0 - 2026-02-18
### Added

43
apps/api/src/assets/cryptocurrencies/cryptocurrencies.json

@ -421,6 +421,7 @@
"AGS": "Aegis",
"AGT": "Alaya Governance Token",
"AGURI": "Aguri-Chan",
"AGUSTO": "Agusto",
"AGV": "Astra Guild Ventures",
"AGVC": "AgaveCoin",
"AGVE": "Agave",
@ -662,6 +663,7 @@
"ALN": "Aluna",
"ALNV1": "Aluna v1",
"ALOHA": "Aloha",
"ALOKA": "ALOKA",
"ALON": "Alon",
"ALOR": "The Algorix",
"ALOT": "Dexalot",
@ -708,6 +710,7 @@
"AMADEUS": "AMADEUS",
"AMAL": "AMAL",
"AMAPT": "Amnis Finance",
"AMARA": "AMARA",
"AMATEN": "Amaten",
"AMATO": "AMATO",
"AMAZINGTEAM": "AmazingTeamDAO",
@ -1344,6 +1347,7 @@
"AZIT": "Azit",
"AZNX": "AstraZeneca xStock",
"AZR": "Azure",
"AZTEC": "AZTEC",
"AZU": "Azultec",
"AZUKI": "Azuki",
"AZUKI2": "AZUKI 2.0",
@ -1373,6 +1377,7 @@
"BABI": "Babylons",
"BABL": "Babylon Finance",
"BABY": "Babylon",
"BABY4": "Baby 4",
"BABYANDY": "Baby Andy",
"BABYASTER": "Baby Aster",
"BABYB": "Baby Bali",
@ -2342,6 +2347,7 @@
"BNPL": "BNPL Pay",
"BNR": "BiNeuro",
"BNRTX": "BnrtxCoin",
"BNRY": "Binary Coin",
"BNS": "BNS token",
"BNSAI": "bonsAI Network",
"BNSD": "BNSD Finance",
@ -2526,9 +2532,10 @@
"BOSSCOQ": "THE COQFATHER",
"BOST": "BoostCoin",
"BOSU": "Bosu Inu",
"BOT": "Bot Planet",
"BOT": "HyperBot",
"BOTC": "BotChain",
"BOTIFY": "BOTIFY",
"BOTPLANET": "Bot Planet",
"BOTS": "ArkDAO",
"BOTTO": "Botto",
"BOTX": "BOTXCOIN",
@ -3201,6 +3208,7 @@
"CATCO": "CatCoin",
"CATCOIN": "CatCoin",
"CATCOINETH": "Catcoin",
"CATCOINIO": "Catcoin",
"CATCOINOFSOL": "Cat Coin",
"CATCOINV2": "CatCoin Cash",
"CATDOG": "Cat-Dog",
@ -3583,6 +3591,7 @@
"CIC": "Crazy Internet Coin",
"CICHAIN": "CIChain",
"CIF": "Crypto Improvement Fund",
"CIFRON": "Cipher Mining (Ondo Tokenized)",
"CIG": "cig",
"CIM": "COINCOME",
"CIN": "CinderCoin",
@ -3718,6 +3727,7 @@
"CMPT": "Spatial Computing",
"CMPV2": "Caduceus Protocol",
"CMQ": "Communique",
"CMR": "U.S Critical Mineral Reserve",
"CMS": "COMSA",
"CMSN": "The Commission",
"CMT": "CyberMiles",
@ -4630,6 +4640,7 @@
"DEFIL": "DeFIL",
"DEFILAB": "Defi",
"DEFISCALE": "DeFiScale",
"DEFISSI": "DEFI.ssi",
"DEFIT": "Digital Fitness",
"DEFLA": "Defla",
"DEFLCT": "Deflect",
@ -6323,7 +6334,7 @@
"FIFTY": "FIFTYONEFIFTY",
"FIG": "FlowCom",
"FIGH": "FIGHT FIGHT FIGHT",
"FIGHT": "Fight to MAGA",
"FIGHT2MAGA": "Fight to MAGA",
"FIGHTMAGA": "FIGHT MAGA",
"FIGHTPEPE": "FIGHT PEPE",
"FIGHTRUMP": "FIGHT TRUMP",
@ -8039,6 +8050,7 @@
"HONOR": "HonorLand",
"HONX": "Honeywell xStock",
"HOODOG": "Hoodog",
"HOODON": "Robinhood Markets (Ondo Tokenized)",
"HOODRAT": "Hoodrat Coin",
"HOODX": "Robinhood xStock",
"HOOF": "Metaderby Hoof",
@ -8395,6 +8407,7 @@
"IMS": "Independent Money System",
"IMST": "Imsmart",
"IMT": "Immortal Token",
"IMU": "Immunefi",
"IMUSIFY": "imusify",
"IMVR": "ImmVRse",
"IMX": "Immutable X",
@ -8750,6 +8763,7 @@
"JFIVE": "Jonny Five",
"JFOX": "JuniperFox AI",
"JFP": "JUSTICE FOR PEANUT",
"JGGL": "JGGL Token",
"JGLP": "Jones GLP",
"JGN": "Juggernaut",
"JHH": "Jen-Hsun Huang",
@ -9891,7 +9905,7 @@
"LRN": "Loopring [NEO]",
"LRT": "LandRocker",
"LSC": "LS Coin",
"LSD": "Pontem Liquidswap",
"LSD": "LSD",
"LSDOGE": "LSDoge",
"LSETH": "Liquid Staked ETH",
"LSHARE": "LSHARE",
@ -10167,8 +10181,7 @@
"MANUSAI": "Manus AI Agent",
"MANYU": "Manyu",
"MANYUDOG": "MANYU",
"MAO": "MAO",
"MAOMEME": "Mao",
"MAO": "Mao",
"MAOW": "MAOW",
"MAP": "MAP Protocol",
"MAPC": "MapCoin",
@ -10631,6 +10644,7 @@
"MICRO": "Micro GPT",
"MICRODOGE": "MicroDoge",
"MICROMINES": "Micromines",
"MICROVISION": "MicroVisionChain",
"MIDAI": "Midway AI",
"MIDAS": "Midas",
"MIDASDOLLAR": "Midas Dollar Share",
@ -13146,6 +13160,7 @@
"PONKE": "Ponke",
"PONKEBNB": "Ponke BNB",
"PONKEI": "Chinese Ponkei the Original",
"PONTEM": "Pontem Liquidswap",
"PONYO": "Ponyo Impact",
"PONZI": "Ponzi",
"PONZIO": "Ponzio The Cat",
@ -13573,6 +13588,7 @@
"QNX": "QueenDex Coin",
"QOBI": "Qobit",
"QOM": "Shiba Predator",
"QONE": "QONE",
"QOOB": "QOOBER",
"QORA": "QoraCoin",
"QORPO": "QORPO WORLD",
@ -15153,6 +15169,7 @@
"SNAP": "SnapEx",
"SNAPCAT": "Snapcat",
"SNAPKERO": "SNAP",
"SNAPON": "Snap (Ondo Tokenized)",
"SNB": "SynchroBitcoin",
"SNC": "SunContract",
"SNCT": "SnakeCity",
@ -15380,7 +15397,7 @@
"SP8DE": "Sp8de",
"SPA": "Sperax",
"SPAC": "SPACE DOGE",
"SPACE": "MicroVisionChain",
"SPACE": "Spacecoin",
"SPACECOIN": "SpaceCoin",
"SPACED": "SPACE DRAGON",
"SPACEHAMSTER": "Space Hamster",
@ -15868,6 +15885,7 @@
"SUPERCYCLE": "Crypto SuperCycle",
"SUPERDAPP": "SuperDapp",
"SUPERF": "SUPER FLOKI",
"SUPERFL": "Superfluid",
"SUPERGROK": "SuperGrok",
"SUPEROETHB": "Super OETH",
"SUPERT": "Super Trump",
@ -16790,6 +16808,7 @@
"TSLAON": "Tesla (Ondo Tokenized)",
"TSLAX": "Tesla xStock",
"TSLT": "Tamkin",
"TSMON": "Taiwan Semiconductor Manufacturing (Ondo Tokenized)",
"TSN": "Tsunami Exchange Token",
"TSO": "Thesirion",
"TSOTCHKE": "tsotchke",
@ -17181,8 +17200,10 @@
"USDL": "Lift Dollar",
"USDM": "USDM",
"USDMA": "USD mars",
"USDN": "Neutral AI",
"USDN": "Ultimate Synthetic Delta Neutral",
"USDNEUTRAL": "Neutral AI",
"USDO": "USD Open Dollar",
"USDON": "U.S. Dollar Tokenized Currency (Ondo)",
"USDP": "Pax Dollar",
"USDPLUS": "Overnight.fi USD+",
"USDQ": "Quantoz USDQ",
@ -17456,6 +17477,7 @@
"VIDZ": "PureVidz",
"VIEW": "Viewly",
"VIG": "TheVig",
"VIGI": "Vigi",
"VIK": "VIKTAMA",
"VIKITA": "VIKITA",
"VIKKY": "VikkyToken",
@ -17513,6 +17535,7 @@
"VLC": "Volcano Uni",
"VLDY": "Validity",
"VLK": "Vulkania",
"VLR": "Velora",
"VLS": "Veles",
"VLT": "Veltor",
"VLTC": "Venus LTC",
@ -17733,6 +17756,7 @@
"WANUSDT": "wanUSDT",
"WAP": "Wet Ass Pussy",
"WAR": "WAR",
"WARD": "Warden",
"WARP": "WarpCoin",
"WARPED": "Warped Games",
"WARPIE": "Warpie",
@ -18494,6 +18518,7 @@
"XP": "Xphere",
"XPA": "XPA",
"XPARTY": "X Party",
"XPASS": "XPASS Token",
"XPAT": "Bitnation Pangea",
"XPAY": "Wallet Pay",
"XPB": "Pebble Coin",
@ -18869,8 +18894,7 @@
"ZEBU": "ZEBU",
"ZEC": "ZCash",
"ZECD": "ZCashDarkCoin",
"ZED": "ZED Token",
"ZEDCOIN": "ZedCoin",
"ZED": "ZedCoins",
"ZEDD": "ZedDex",
"ZEDTOKEN": "Zed Token",
"ZEDX": "ZEDX Сoin",
@ -19108,6 +19132,7 @@
"币安人生": "币安人生",
"恶俗企鹅": "恶俗企鹅",
"我踏马来了": "我踏马来了",
"狗屎": "狗屎",
"老子": "老子",
"雪球": "雪球",
"黑马": "黑马"

7
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html

@ -184,18 +184,21 @@
[ngClass]="{
'cursor-pointer':
hasPermissionToUpdateUserSettings &&
!user?.settings?.isRestrictedView &&
user?.subscription?.type !== 'Basic'
}"
(click)="
hasPermissionToUpdateUserSettings &&
!user?.settings?.isRestrictedView &&
user?.subscription?.type !== 'Basic' &&
onEditEmergencyFund()
"
>
@if (
hasPermissionToUpdateUserSettings &&
user?.subscription?.type !== 'Basic' &&
!isLoading
!isLoading &&
!user?.settings?.isRestrictedView &&
user?.subscription?.type !== 'Basic'
) {
<ion-icon
class="mr-1 text-muted"

20
apps/client/src/locales/messages.ca.xlf

@ -895,7 +895,7 @@
<target state="translated">Filtra per...</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.component.ts</context>
<context context-type="linenumber">385</context>
<context context-type="linenumber">390</context>
</context-group>
</trans-unit>
<trans-unit id="6182733719813772142" datatype="html">
@ -935,7 +935,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html</context>
<context context-type="linenumber">44</context>
<context context-type="linenumber">40</context>
</context-group>
</trans-unit>
<trans-unit id="6130372166370766747" datatype="html">
@ -1003,7 +1003,7 @@
<target state="translated">Oooh! No s’han pogut recopilar les dades históriques.</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts</context>
<context context-type="linenumber">262</context>
<context context-type="linenumber">284</context>
</context-group>
</trans-unit>
<trans-unit id="4405333887341433096" datatype="html">
@ -1035,7 +1035,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html</context>
<context context-type="linenumber">71</context>
<context context-type="linenumber">67</context>
</context-group>
</trans-unit>
<trans-unit id="5299488188278756127" datatype="html">
@ -5924,6 +5924,14 @@
<context context-type="linenumber">27</context>
</context-group>
</trans-unit>
<trans-unit id="9218541487912911620" datatype="html">
<source>No Activities</source>
<target state="new">No Activities</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.component.ts</context>
<context context-type="linenumber">146</context>
</context-group>
</trans-unit>
<trans-unit id="9219851060664514927" datatype="html">
<source>Retirement Provision</source>
<target state="translated">Provisió de jubilació</target>
@ -6757,7 +6765,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html</context>
<context context-type="linenumber">46</context>
<context context-type="linenumber">47</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
@ -7335,7 +7343,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html</context>
<context context-type="linenumber">48</context>
<context context-type="linenumber">49</context>
</context-group>
</trans-unit>
<trans-unit id="7156797854368699223" datatype="html">

20
apps/client/src/locales/messages.de.xlf

@ -506,7 +506,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html</context>
<context context-type="linenumber">44</context>
<context context-type="linenumber">40</context>
</context-group>
</trans-unit>
<trans-unit id="8122024350760043460" datatype="html">
@ -2630,7 +2630,7 @@
<target state="translated">Filtern nach...</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.component.ts</context>
<context context-type="linenumber">385</context>
<context context-type="linenumber">390</context>
</context-group>
</trans-unit>
<trans-unit id="1965206604774400" datatype="html">
@ -3234,7 +3234,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html</context>
<context context-type="linenumber">71</context>
<context context-type="linenumber">67</context>
</context-group>
</trans-unit>
<trans-unit id="4798457301875181136" datatype="html">
@ -3357,6 +3357,14 @@
<context context-type="linenumber">22</context>
</context-group>
</trans-unit>
<trans-unit id="9218541487912911620" datatype="html">
<source>No Activities</source>
<target state="translated">Keine Aktivitäten</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.component.ts</context>
<context context-type="linenumber">146</context>
</context-group>
</trans-unit>
<trans-unit id="9219851060664514927" datatype="html">
<source>Retirement Provision</source>
<target state="translated">Altersvorsorge</target>
@ -5716,7 +5724,7 @@
<target state="translated">Ups! Die historischen Daten konnten nicht geparsed werden.</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts</context>
<context context-type="linenumber">262</context>
<context context-type="linenumber">284</context>
</context-group>
</trans-unit>
<trans-unit id="297546430113071258" datatype="html">
@ -6781,7 +6789,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html</context>
<context context-type="linenumber">46</context>
<context context-type="linenumber">47</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
@ -7359,7 +7367,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html</context>
<context context-type="linenumber">48</context>
<context context-type="linenumber">49</context>
</context-group>
</trans-unit>
<trans-unit id="7156797854368699223" datatype="html">

28
apps/client/src/locales/messages.es.xlf

@ -507,7 +507,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html</context>
<context context-type="linenumber">44</context>
<context context-type="linenumber">40</context>
</context-group>
</trans-unit>
<trans-unit id="8122024350760043460" datatype="html">
@ -2615,7 +2615,7 @@
<target state="translated">Filtrar por...</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.component.ts</context>
<context context-type="linenumber">385</context>
<context context-type="linenumber">390</context>
</context-group>
</trans-unit>
<trans-unit id="5342721262799645301" datatype="html">
@ -3219,7 +3219,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html</context>
<context context-type="linenumber">71</context>
<context context-type="linenumber">67</context>
</context-group>
</trans-unit>
<trans-unit id="4798457301875181136" datatype="html">
@ -3342,6 +3342,14 @@
<context context-type="linenumber">22</context>
</context-group>
</trans-unit>
<trans-unit id="9218541487912911620" datatype="html">
<source>No Activities</source>
<target state="new">No Activities</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.component.ts</context>
<context context-type="linenumber">146</context>
</context-group>
</trans-unit>
<trans-unit id="9219851060664514927" datatype="html">
<source>Retirement Provision</source>
<target state="translated">Provisión de jubilación</target>
@ -5693,7 +5701,7 @@
<target state="translated">¡Ups! No se pudieron analizar los datos históricos.</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts</context>
<context context-type="linenumber">262</context>
<context context-type="linenumber">284</context>
</context-group>
</trans-unit>
<trans-unit id="297546430113071258" datatype="html">
@ -6758,7 +6766,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html</context>
<context context-type="linenumber">46</context>
<context context-type="linenumber">47</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
@ -7336,7 +7344,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html</context>
<context context-type="linenumber">48</context>
<context context-type="linenumber">49</context>
</context-group>
</trans-unit>
<trans-unit id="7156797854368699223" datatype="html">
@ -7883,7 +7891,7 @@
</trans-unit>
<trans-unit id="rule.feeRatioInitialInvestment" datatype="html">
<source>Fee Ratio (legacy)</source>
<target state="new">Relación de tarifas</target>
<target state="translated">Relación de tarifas (heredado)</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/i18n/i18n-page.html</context>
<context context-type="linenumber">152</context>
@ -7907,7 +7915,7 @@
</trans-unit>
<trans-unit id="rule.feeRatioTotalInvestmentVolume" datatype="html">
<source>Fee Ratio</source>
<target state="new">Fee Ratio</target>
<target state="translated">Relación de tarifas</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/i18n/i18n-page.html</context>
<context context-type="linenumber">161</context>
@ -7915,7 +7923,7 @@
</trans-unit>
<trans-unit id="rule.feeRatioTotalInvestmentVolume.false" datatype="html">
<source>The fees do exceed ${thresholdMax}% of your total investment volume (${feeRatio}%)</source>
<target state="new">The fees do exceed ${thresholdMax}% of your total investment volume (${feeRatio}%)</target>
<target state="translated">Las tarifas superan el ${thresholdMax}% de su volumen total de inversión (${feeRatio}%)</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/i18n/i18n-page.html</context>
<context context-type="linenumber">163</context>
@ -7923,7 +7931,7 @@
</trans-unit>
<trans-unit id="rule.feeRatioTotalInvestmentVolume.true" datatype="html">
<source>The fees do not exceed ${thresholdMax}% of your total investment volume (${feeRatio}%)</source>
<target state="new">The fees do not exceed ${thresholdMax}% of your total investment volume (${feeRatio}%)</target>
<target state="translated">Las tarifas no superan el ${thresholdMax}% de su volumen total de inversión (${feeRatio}%)</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/i18n/i18n-page.html</context>
<context context-type="linenumber">167</context>

20
apps/client/src/locales/messages.fr.xlf

@ -530,7 +530,7 @@
<target state="translated">Filtrer par...</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.component.ts</context>
<context context-type="linenumber">385</context>
<context context-type="linenumber">390</context>
</context-group>
</trans-unit>
<trans-unit id="6182733719813772142" datatype="html">
@ -570,7 +570,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html</context>
<context context-type="linenumber">44</context>
<context context-type="linenumber">40</context>
</context-group>
</trans-unit>
<trans-unit id="6130372166370766747" datatype="html">
@ -2222,7 +2222,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html</context>
<context context-type="linenumber">71</context>
<context context-type="linenumber">67</context>
</context-group>
</trans-unit>
<trans-unit id="2666668717343771434" datatype="html">
@ -3341,6 +3341,14 @@
<context context-type="linenumber">22</context>
</context-group>
</trans-unit>
<trans-unit id="9218541487912911620" datatype="html">
<source>No Activities</source>
<target state="new">No Activities</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.component.ts</context>
<context context-type="linenumber">146</context>
</context-group>
</trans-unit>
<trans-unit id="9219851060664514927" datatype="html">
<source>Retirement Provision</source>
<target state="translated">Réserve pour retraite</target>
@ -5692,7 +5700,7 @@
<target state="translated">Oops! Echec du parsing des données historiques.</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts</context>
<context context-type="linenumber">262</context>
<context context-type="linenumber">284</context>
</context-group>
</trans-unit>
<trans-unit id="297546430113071258" datatype="html">
@ -6757,7 +6765,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html</context>
<context context-type="linenumber">46</context>
<context context-type="linenumber">47</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
@ -7335,7 +7343,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html</context>
<context context-type="linenumber">48</context>
<context context-type="linenumber">49</context>
</context-group>
</trans-unit>
<trans-unit id="7156797854368699223" datatype="html">

20
apps/client/src/locales/messages.it.xlf

@ -507,7 +507,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html</context>
<context context-type="linenumber">44</context>
<context context-type="linenumber">40</context>
</context-group>
</trans-unit>
<trans-unit id="8122024350760043460" datatype="html">
@ -2615,7 +2615,7 @@
<target state="translated">Filtra per...</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.component.ts</context>
<context context-type="linenumber">385</context>
<context context-type="linenumber">390</context>
</context-group>
</trans-unit>
<trans-unit id="5342721262799645301" datatype="html">
@ -3219,7 +3219,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html</context>
<context context-type="linenumber">71</context>
<context context-type="linenumber">67</context>
</context-group>
</trans-unit>
<trans-unit id="4798457301875181136" datatype="html">
@ -3342,6 +3342,14 @@
<context context-type="linenumber">22</context>
</context-group>
</trans-unit>
<trans-unit id="9218541487912911620" datatype="html">
<source>No Activities</source>
<target state="new">No Activities</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.component.ts</context>
<context context-type="linenumber">146</context>
</context-group>
</trans-unit>
<trans-unit id="9219851060664514927" datatype="html">
<source>Retirement Provision</source>
<target state="translated">Fondo pensione</target>
@ -5693,7 +5701,7 @@
<target state="translated">Ops! Impossibile elaborare i dati storici.</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts</context>
<context context-type="linenumber">262</context>
<context context-type="linenumber">284</context>
</context-group>
</trans-unit>
<trans-unit id="297546430113071258" datatype="html">
@ -6758,7 +6766,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html</context>
<context context-type="linenumber">46</context>
<context context-type="linenumber">47</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
@ -7336,7 +7344,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html</context>
<context context-type="linenumber">48</context>
<context context-type="linenumber">49</context>
</context-group>
</trans-unit>
<trans-unit id="7156797854368699223" datatype="html">

20
apps/client/src/locales/messages.ko.xlf

@ -792,7 +792,7 @@
<target state="translated">다음 기준으로 필터...</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.component.ts</context>
<context context-type="linenumber">385</context>
<context context-type="linenumber">390</context>
</context-group>
</trans-unit>
<trans-unit id="6182733719813772142" datatype="html">
@ -832,7 +832,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html</context>
<context context-type="linenumber">44</context>
<context context-type="linenumber">40</context>
</context-group>
</trans-unit>
<trans-unit id="6130372166370766747" datatype="html">
@ -884,7 +884,7 @@
<target state="translated">이런! 과거 데이터를 파싱할 수 없습니다.</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts</context>
<context context-type="linenumber">262</context>
<context context-type="linenumber">284</context>
</context-group>
</trans-unit>
<trans-unit id="1102717806459547726" datatype="html">
@ -916,7 +916,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html</context>
<context context-type="linenumber">71</context>
<context context-type="linenumber">67</context>
</context-group>
</trans-unit>
<trans-unit id="5299488188278756127" datatype="html">
@ -5376,6 +5376,14 @@
<context context-type="linenumber">27</context>
</context-group>
</trans-unit>
<trans-unit id="9218541487912911620" datatype="html">
<source>No Activities</source>
<target state="new">No Activities</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.component.ts</context>
<context context-type="linenumber">146</context>
</context-group>
</trans-unit>
<trans-unit id="9219851060664514927" datatype="html">
<source>Retirement Provision</source>
<target state="translated">퇴직금</target>
@ -6742,7 +6750,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html</context>
<context context-type="linenumber">46</context>
<context context-type="linenumber">47</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
@ -7360,7 +7368,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html</context>
<context context-type="linenumber">48</context>
<context context-type="linenumber">49</context>
</context-group>
</trans-unit>
<trans-unit id="1769610706135259386" datatype="html">

20
apps/client/src/locales/messages.nl.xlf

@ -506,7 +506,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html</context>
<context context-type="linenumber">44</context>
<context context-type="linenumber">40</context>
</context-group>
</trans-unit>
<trans-unit id="8122024350760043460" datatype="html">
@ -2614,7 +2614,7 @@
<target state="translated">Filter op...</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.component.ts</context>
<context context-type="linenumber">385</context>
<context context-type="linenumber">390</context>
</context-group>
</trans-unit>
<trans-unit id="5342721262799645301" datatype="html">
@ -3218,7 +3218,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html</context>
<context context-type="linenumber">71</context>
<context context-type="linenumber">67</context>
</context-group>
</trans-unit>
<trans-unit id="4798457301875181136" datatype="html">
@ -3341,6 +3341,14 @@
<context context-type="linenumber">22</context>
</context-group>
</trans-unit>
<trans-unit id="9218541487912911620" datatype="html">
<source>No Activities</source>
<target state="new">No Activities</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.component.ts</context>
<context context-type="linenumber">146</context>
</context-group>
</trans-unit>
<trans-unit id="9219851060664514927" datatype="html">
<source>Retirement Provision</source>
<target state="translated">Pensioen</target>
@ -5692,7 +5700,7 @@
<target state="translated">Oeps! Ophalen van historische data is mislukt.</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts</context>
<context context-type="linenumber">262</context>
<context context-type="linenumber">284</context>
</context-group>
</trans-unit>
<trans-unit id="297546430113071258" datatype="html">
@ -6757,7 +6765,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html</context>
<context context-type="linenumber">46</context>
<context context-type="linenumber">47</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
@ -7335,7 +7343,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html</context>
<context context-type="linenumber">48</context>
<context context-type="linenumber">49</context>
</context-group>
</trans-unit>
<trans-unit id="7156797854368699223" datatype="html">

20
apps/client/src/locales/messages.pl.xlf

@ -783,7 +783,7 @@
<target state="translated">Filtruj według...</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.component.ts</context>
<context context-type="linenumber">385</context>
<context context-type="linenumber">390</context>
</context-group>
</trans-unit>
<trans-unit id="6182733719813772142" datatype="html">
@ -823,7 +823,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html</context>
<context context-type="linenumber">44</context>
<context context-type="linenumber">40</context>
</context-group>
</trans-unit>
<trans-unit id="6130372166370766747" datatype="html">
@ -859,7 +859,7 @@
<target state="translated">Ups! Nie udało się sparsować danych historycznych.</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts</context>
<context context-type="linenumber">262</context>
<context context-type="linenumber">284</context>
</context-group>
</trans-unit>
<trans-unit id="1102717806459547726" datatype="html">
@ -883,7 +883,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html</context>
<context context-type="linenumber">71</context>
<context context-type="linenumber">67</context>
</context-group>
</trans-unit>
<trans-unit id="5299488188278756127" datatype="html">
@ -5307,6 +5307,14 @@
<context context-type="linenumber">27</context>
</context-group>
</trans-unit>
<trans-unit id="9218541487912911620" datatype="html">
<source>No Activities</source>
<target state="new">No Activities</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.component.ts</context>
<context context-type="linenumber">146</context>
</context-group>
</trans-unit>
<trans-unit id="9219851060664514927" datatype="html">
<source>Retirement Provision</source>
<target state="translated">Świadczenia Emerytalne</target>
@ -6757,7 +6765,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html</context>
<context context-type="linenumber">46</context>
<context context-type="linenumber">47</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
@ -7335,7 +7343,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html</context>
<context context-type="linenumber">48</context>
<context context-type="linenumber">49</context>
</context-group>
</trans-unit>
<trans-unit id="7156797854368699223" datatype="html">

20
apps/client/src/locales/messages.pt.xlf

@ -530,7 +530,7 @@
<target state="translated">Filtrar por...</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.component.ts</context>
<context context-type="linenumber">385</context>
<context context-type="linenumber">390</context>
</context-group>
</trans-unit>
<trans-unit id="6182733719813772142" datatype="html">
@ -570,7 +570,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html</context>
<context context-type="linenumber">44</context>
<context context-type="linenumber">40</context>
</context-group>
</trans-unit>
<trans-unit id="3720539089813177542" datatype="html">
@ -3174,7 +3174,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html</context>
<context context-type="linenumber">71</context>
<context context-type="linenumber">67</context>
</context-group>
</trans-unit>
<trans-unit id="7763941937414903315" datatype="html">
@ -3341,6 +3341,14 @@
<context context-type="linenumber">22</context>
</context-group>
</trans-unit>
<trans-unit id="9218541487912911620" datatype="html">
<source>No Activities</source>
<target state="new">No Activities</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.component.ts</context>
<context context-type="linenumber">146</context>
</context-group>
</trans-unit>
<trans-unit id="9219851060664514927" datatype="html">
<source>Retirement Provision</source>
<target state="translated">Provisão de Reforma</target>
@ -5692,7 +5700,7 @@
<target state="translated">Ops! Não foi possível analisar os dados históricos.</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts</context>
<context context-type="linenumber">262</context>
<context context-type="linenumber">284</context>
</context-group>
</trans-unit>
<trans-unit id="297546430113071258" datatype="html">
@ -6757,7 +6765,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html</context>
<context context-type="linenumber">46</context>
<context context-type="linenumber">47</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
@ -7335,7 +7343,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html</context>
<context context-type="linenumber">48</context>
<context context-type="linenumber">49</context>
</context-group>
</trans-unit>
<trans-unit id="7156797854368699223" datatype="html">

20
apps/client/src/locales/messages.tr.xlf

@ -739,7 +739,7 @@
<target state="translated">Filtrele...</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.component.ts</context>
<context context-type="linenumber">385</context>
<context context-type="linenumber">390</context>
</context-group>
</trans-unit>
<trans-unit id="6182733719813772142" datatype="html">
@ -779,7 +779,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html</context>
<context context-type="linenumber">44</context>
<context context-type="linenumber">40</context>
</context-group>
</trans-unit>
<trans-unit id="6130372166370766747" datatype="html">
@ -3371,7 +3371,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html</context>
<context context-type="linenumber">71</context>
<context context-type="linenumber">67</context>
</context-group>
</trans-unit>
<trans-unit id="2666668717343771434" datatype="html">
@ -5003,6 +5003,14 @@
<context context-type="linenumber">27</context>
</context-group>
</trans-unit>
<trans-unit id="9218541487912911620" datatype="html">
<source>No Activities</source>
<target state="new">No Activities</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.component.ts</context>
<context context-type="linenumber">146</context>
</context-group>
</trans-unit>
<trans-unit id="9219851060664514927" datatype="html">
<source>Retirement Provision</source>
<target state="translated">Yaşlılık Provizyonu</target>
@ -5692,7 +5700,7 @@
<target state="translated">Hay Allah! Geçmiş veriler ayrıştırılamadı.</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts</context>
<context context-type="linenumber">262</context>
<context context-type="linenumber">284</context>
</context-group>
</trans-unit>
<trans-unit id="297546430113071258" datatype="html">
@ -6757,7 +6765,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html</context>
<context context-type="linenumber">46</context>
<context context-type="linenumber">47</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
@ -7335,7 +7343,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html</context>
<context context-type="linenumber">48</context>
<context context-type="linenumber">49</context>
</context-group>
</trans-unit>
<trans-unit id="7156797854368699223" datatype="html">

20
apps/client/src/locales/messages.uk.xlf

@ -875,7 +875,7 @@
<target state="translated">Фільтрувати за...</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.component.ts</context>
<context context-type="linenumber">385</context>
<context context-type="linenumber">390</context>
</context-group>
</trans-unit>
<trans-unit id="8411428959611082933" datatype="html">
@ -931,7 +931,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html</context>
<context context-type="linenumber">44</context>
<context context-type="linenumber">40</context>
</context-group>
</trans-unit>
<trans-unit id="6130372166370766747" datatype="html">
@ -2323,7 +2323,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html</context>
<context context-type="linenumber">48</context>
<context context-type="linenumber">49</context>
</context-group>
</trans-unit>
<trans-unit id="5403336912114537863" datatype="html">
@ -4576,7 +4576,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html</context>
<context context-type="linenumber">71</context>
<context context-type="linenumber">67</context>
</context-group>
</trans-unit>
<trans-unit id="2666668717343771434" datatype="html">
@ -6419,7 +6419,7 @@
<target state="translated">Упс! Не вдалося отримати історичні дані.</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts</context>
<context context-type="linenumber">262</context>
<context context-type="linenumber">284</context>
</context-group>
</trans-unit>
<trans-unit id="8927080808898221200" datatype="html">
@ -6595,7 +6595,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html</context>
<context context-type="linenumber">46</context>
<context context-type="linenumber">47</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
@ -6774,6 +6774,14 @@
<context context-type="linenumber">27</context>
</context-group>
</trans-unit>
<trans-unit id="9218541487912911620" datatype="html">
<source>No Activities</source>
<target state="new">No Activities</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.component.ts</context>
<context context-type="linenumber">146</context>
</context-group>
</trans-unit>
<trans-unit id="9219851060664514927" datatype="html">
<source>Retirement Provision</source>
<target state="translated">Пенсійне накопичення</target>

19
apps/client/src/locales/messages.xlf

@ -740,7 +740,7 @@
<source>Filter by...</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.component.ts</context>
<context context-type="linenumber">385</context>
<context context-type="linenumber">390</context>
</context-group>
</trans-unit>
<trans-unit id="6182733719813772142" datatype="html">
@ -777,7 +777,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html</context>
<context context-type="linenumber">44</context>
<context context-type="linenumber">40</context>
</context-group>
</trans-unit>
<trans-unit id="6130372166370766747" datatype="html">
@ -823,7 +823,7 @@
<source>Oops! Could not parse historical data.</source>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts</context>
<context context-type="linenumber">262</context>
<context context-type="linenumber">284</context>
</context-group>
</trans-unit>
<trans-unit id="1102717806459547726" datatype="html">
@ -852,7 +852,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html</context>
<context context-type="linenumber">71</context>
<context context-type="linenumber">67</context>
</context-group>
</trans-unit>
<trans-unit id="5299488188278756127" datatype="html">
@ -4907,6 +4907,13 @@
<context context-type="linenumber">27</context>
</context-group>
</trans-unit>
<trans-unit id="9218541487912911620" datatype="html">
<source>No Activities</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.component.ts</context>
<context context-type="linenumber">146</context>
</context-group>
</trans-unit>
<trans-unit id="9219851060664514927" datatype="html">
<source>Retirement Provision</source>
<context-group purpose="location">
@ -6126,7 +6133,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html</context>
<context context-type="linenumber">46</context>
<context context-type="linenumber">47</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
@ -6685,7 +6692,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html</context>
<context context-type="linenumber">48</context>
<context context-type="linenumber">49</context>
</context-group>
</trans-unit>
<trans-unit id="1769610706135259386" datatype="html">

20
apps/client/src/locales/messages.zh.xlf

@ -792,7 +792,7 @@
<target state="translated">过滤...</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.component.ts</context>
<context context-type="linenumber">385</context>
<context context-type="linenumber">390</context>
</context-group>
</trans-unit>
<trans-unit id="6182733719813772142" datatype="html">
@ -832,7 +832,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html</context>
<context context-type="linenumber">44</context>
<context context-type="linenumber">40</context>
</context-group>
</trans-unit>
<trans-unit id="6130372166370766747" datatype="html">
@ -868,7 +868,7 @@
<target state="translated">哎呀!无法解析历史数据。</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts</context>
<context context-type="linenumber">262</context>
<context context-type="linenumber">284</context>
</context-group>
</trans-unit>
<trans-unit id="1102717806459547726" datatype="html">
@ -892,7 +892,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html</context>
<context context-type="linenumber">71</context>
<context context-type="linenumber">67</context>
</context-group>
</trans-unit>
<trans-unit id="5299488188278756127" datatype="html">
@ -5360,6 +5360,14 @@
<context context-type="linenumber">27</context>
</context-group>
</trans-unit>
<trans-unit id="9218541487912911620" datatype="html">
<source>No Activities</source>
<target state="new">No Activities</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.component.ts</context>
<context context-type="linenumber">146</context>
</context-group>
</trans-unit>
<trans-unit id="9219851060664514927" datatype="html">
<source>Retirement Provision</source>
<target state="translated">退休金</target>
@ -6758,7 +6766,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html</context>
<context context-type="linenumber">46</context>
<context context-type="linenumber">47</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
@ -7336,7 +7344,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html</context>
<context context-type="linenumber">48</context>
<context context-type="linenumber">49</context>
</context-group>
</trans-unit>
<trans-unit id="7156797854368699223" datatype="html">

5
libs/common/src/lib/config.ts

@ -80,6 +80,11 @@ export const DEFAULT_PROCESSOR_PORTFOLIO_SNAPSHOT_COMPUTATION_TIMEOUT = 30000;
export const DEFAULT_REDACTED_PATHS = [
'accounts[*].balance',
'accounts[*].balanceInBaseCurrency',
'accounts[*].comment',
'accounts[*].dividendInBaseCurrency',
'accounts[*].interestInBaseCurrency',
'accounts[*].value',
'accounts[*].valueInBaseCurrency',
'activities[*].account.balance',
'activities[*].account.comment',

10
libs/ui/src/lib/account-balances/account-balances.component.html

@ -12,7 +12,7 @@
<ng-container i18n>Date</ng-container>
</th>
<td *matCellDef="let element" class="px-2" mat-cell>
<gf-value [isDate]="true" [locale]="locale" [value]="element?.date" />
<gf-value [isDate]="true" [locale]="locale()" [value]="element?.date" />
</td>
<td *matFooterCellDef class="px-2" mat-footer-cell>
<mat-form-field appearance="outline" class="py-1 without-hint">
@ -37,7 +37,7 @@
<div class="d-flex justify-content-end">
<gf-value
[isCurrency]="true"
[locale]="locale"
[locale]="locale()"
[unit]="element?.account?.currency"
[value]="element?.value"
/>
@ -48,7 +48,7 @@
<mat-form-field appearance="outline" class="without-hint">
<input formControlName="balance" matInput type="number" />
<div class="ml-2" matTextSuffix>
{{ accountCurrency }}
{{ accountCurrency() }}
</div>
</mat-form-field>
</div>
@ -58,7 +58,7 @@
<ng-container matColumnDef="actions" stickyEnd>
<th *matHeaderCellDef class="px-1 text-center" mat-header-cell></th>
<td *matCellDef="let element" class="px-1 text-center" mat-cell>
@if (showActions) {
@if (showActions()) {
<button
class="mx-1 no-min-width px-2"
mat-button
@ -100,7 +100,7 @@
<tr
*matFooterRowDef="displayedColumns"
mat-footer-row
[hidden]="!showActions"
[hidden]="!showActions()"
></tr>
</table>
</form>

68
libs/ui/src/lib/account-balances/account-balances.component.ts

@ -10,12 +10,12 @@ import {
ChangeDetectionStrategy,
Component,
EventEmitter,
Input,
OnChanges,
OnDestroy,
OnInit,
Output,
ViewChild
inject,
input,
viewChild
} from '@angular/core';
import {
FormGroup,
@ -39,8 +39,7 @@ import {
ellipsisHorizontal,
trashOutline
} from 'ionicons/icons';
import { get } from 'lodash';
import { Subject } from 'rxjs';
import { get, isNil } from 'lodash';
import { GfValueComponent } from '../value';
@ -63,50 +62,44 @@ import { GfValueComponent } from '../value';
styleUrls: ['./account-balances.component.scss'],
templateUrl: './account-balances.component.html'
})
export class GfAccountBalancesComponent
implements OnChanges, OnDestroy, OnInit
{
@Input() accountBalances: AccountBalancesResponse['balances'];
@Input() accountCurrency: string;
@Input() accountId: string;
@Input() locale = getLocale();
@Input() showActions = true;
export class GfAccountBalancesComponent implements OnChanges, OnInit {
@Output() accountBalanceCreated = new EventEmitter<CreateAccountBalanceDto>();
@Output() accountBalanceDeleted = new EventEmitter<string>();
@ViewChild(MatSort) sort: MatSort;
public readonly accountBalances =
input.required<AccountBalancesResponse['balances']>();
public readonly accountCurrency = input.required<string>();
public readonly accountId = input.required<string>();
public readonly displayedColumns: string[] = ['date', 'value', 'actions'];
public readonly locale = input(getLocale());
public readonly showActions = input(true);
public readonly sort = viewChild(MatSort);
public accountBalanceForm = new FormGroup({
balance: new FormControl(0, Validators.required),
date: new FormControl(new Date(), Validators.required)
balance: new FormControl(0, (control) => Validators.required(control)),
date: new FormControl(new Date(), (control) => Validators.required(control))
});
public dataSource = new MatTableDataSource<
AccountBalancesResponse['balances'][0]
>();
public displayedColumns: string[] = ['date', 'value', 'actions'];
public Validators = Validators;
private unsubscribeSubject = new Subject<void>();
private dateAdapter = inject<DateAdapter<Date, string>>(DateAdapter);
private notificationService = inject(NotificationService);
public constructor(
private dateAdapter: DateAdapter<any>,
private notificationService: NotificationService
) {
public constructor() {
addIcons({ calendarClearOutline, ellipsisHorizontal, trashOutline });
}
public ngOnInit() {
this.dateAdapter.setLocale(this.locale);
this.dateAdapter.setLocale(this.locale());
}
public ngOnChanges() {
if (this.accountBalances) {
this.dataSource = new MatTableDataSource(this.accountBalances);
if (this.accountBalances()) {
this.dataSource = new MatTableDataSource(this.accountBalances());
this.dataSource.sort = this.sort;
this.dataSource.sort = this.sort();
this.dataSource.sortingDataAccessor = get;
}
}
@ -122,10 +115,16 @@ export class GfAccountBalancesComponent
}
public async onSubmitAccountBalance() {
const { balance, date } = this.accountBalanceForm.value;
if (isNil(balance) || !date) {
return;
}
const accountBalance: CreateAccountBalanceDto = {
accountId: this.accountId,
balance: this.accountBalanceForm.get('balance').value,
date: format(this.accountBalanceForm.get('date').value, DATE_FORMAT)
balance,
accountId: this.accountId(),
date: format(date, DATE_FORMAT)
};
try {
@ -141,9 +140,4 @@ export class GfAccountBalancesComponent
this.accountBalanceCreated.emit(accountBalance);
}
public ngOnDestroy() {
this.unsubscribeSubject.next();
this.unsubscribeSubject.complete();
}
}

8
libs/ui/src/lib/activities-filter/activities-filter.component.html

@ -10,7 +10,7 @@
[removable]="true"
(removed)="onRemoveFilter(filter)"
>
{{ filter.label | gfSymbol }}
{{ filter.label ?? '' | gfSymbol }}
<button matChipRemove>
<ion-icon name="close-outline" />
</button>
@ -23,7 +23,7 @@
[matAutocomplete]="autocomplete"
[matChipInputFor]="chipList"
[matChipInputSeparatorKeyCodes]="separatorKeysCodes"
[placeholder]="placeholder"
[placeholder]="placeholder()"
(matChipInputTokenEnd)="onAddFilter($event)"
/>
</mat-chip-grid>
@ -35,7 +35,7 @@
<mat-optgroup [label]="filterGroup.name">
@for (filter of filterGroup.filters; track filter) {
<mat-option [value]="filter.id">
{{ filter.label | gfSymbol }}
{{ filter.label ?? '' | gfSymbol }}
</mat-option>
}
</mat-optgroup>
@ -46,7 +46,7 @@
disabled
mat-icon-button
matSuffix
[ngClass]="{ 'd-none': !isLoading }"
[ngClass]="{ 'd-none': !isLoading() }"
>
<mat-spinner matSuffix [diameter]="20" />
</button>

83
libs/ui/src/lib/activities-filter/activities-filter.component.ts

@ -8,14 +8,14 @@ import {
ChangeDetectionStrategy,
Component,
ElementRef,
EventEmitter,
Input,
OnChanges,
OnDestroy,
Output,
SimpleChanges,
ViewChild
ViewChild,
input,
output
} from '@angular/core';
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import { FormControl, ReactiveFormsModule } from '@angular/forms';
import {
MatAutocomplete,
@ -30,8 +30,7 @@ import { IonIcon } from '@ionic/angular/standalone';
import { addIcons } from 'ionicons';
import { closeOutline, searchOutline } from 'ionicons/icons';
import { groupBy } from 'lodash';
import { BehaviorSubject, Observable, Subject } from 'rxjs';
import { takeUntil } from 'rxjs/operators';
import { BehaviorSubject } from 'rxjs';
import { translate } from '../i18n';
@ -53,28 +52,26 @@ import { translate } from '../i18n';
styleUrls: ['./activities-filter.component.scss'],
templateUrl: './activities-filter.component.html'
})
export class GfActivitiesFilterComponent implements OnChanges, OnDestroy {
export class GfActivitiesFilterComponent implements OnChanges {
@Input() allFilters: Filter[];
@Input() isLoading: boolean;
@Input() placeholder: string;
@Output() valueChanged = new EventEmitter<Filter[]>();
@ViewChild('autocomplete') protected matAutocomplete: MatAutocomplete;
@ViewChild('searchInput') protected searchInput: ElementRef<HTMLInputElement>;
@ViewChild('autocomplete') matAutocomplete: MatAutocomplete;
@ViewChild('searchInput') searchInput: ElementRef<HTMLInputElement>;
public readonly isLoading = input.required<boolean>();
public readonly placeholder = input.required<string>();
public readonly valueChanged = output<Filter[]>();
public filterGroups$: Subject<FilterGroup[]> = new BehaviorSubject([]);
public filters$: Subject<Filter[]> = new BehaviorSubject([]);
public filters: Observable<Filter[]> = this.filters$.asObservable();
public searchControl = new FormControl<Filter | string>(undefined);
public selectedFilters: Filter[] = [];
public separatorKeysCodes: number[] = [ENTER, COMMA];
private unsubscribeSubject = new Subject<void>();
protected readonly filterGroups$ = new BehaviorSubject<FilterGroup[]>([]);
protected readonly searchControl = new FormControl<Filter | string | null>(
null
);
protected selectedFilters: Filter[] = [];
protected readonly separatorKeysCodes: number[] = [ENTER, COMMA];
public constructor() {
this.searchControl.valueChanges
.pipe(takeUntil(this.unsubscribeSubject))
.pipe(takeUntilDestroyed())
.subscribe((filterOrSearchTerm) => {
if (filterOrSearchTerm) {
const searchTerm =
@ -97,41 +94,39 @@ export class GfActivitiesFilterComponent implements OnChanges, OnDestroy {
}
}
public onAddFilter({ input, value }: MatChipInputEvent) {
public onAddFilter({ chipInput, value }: MatChipInputEvent) {
if (value?.trim()) {
this.updateFilters();
}
// Reset the input value
if (input) {
input.value = '';
if (chipInput.inputElement) {
chipInput.inputElement.value = '';
}
this.searchControl.setValue(undefined);
this.searchControl.setValue(null);
}
public onRemoveFilter(aFilter: Filter) {
this.selectedFilters = this.selectedFilters.filter((filter) => {
return filter.id !== aFilter.id;
this.selectedFilters = this.selectedFilters.filter(({ id }) => {
return id !== aFilter.id;
});
this.updateFilters();
}
public onSelectFilter(event: MatAutocompleteSelectedEvent) {
this.selectedFilters.push(
this.allFilters.find((filter) => {
return filter.id === event.option.value;
})
);
this.updateFilters();
this.searchInput.nativeElement.value = '';
this.searchControl.setValue(undefined);
const filter = this.allFilters.find(({ id }) => {
return id === event.option.value;
});
if (filter) {
this.selectedFilters.push(filter);
}
public ngOnDestroy() {
this.unsubscribeSubject.next();
this.unsubscribeSubject.complete();
this.updateFilters();
this.searchInput.nativeElement.value = '';
this.searchControl.setValue(null);
}
private getGroupedFilters(searchTerm?: string) {
@ -139,23 +134,23 @@ export class GfActivitiesFilterComponent implements OnChanges, OnDestroy {
this.allFilters
.filter((filter) => {
// Filter selected filters
return !this.selectedFilters.some((selectedFilter) => {
return selectedFilter.id === filter.id;
return !this.selectedFilters.some(({ id }) => {
return id === filter.id;
});
})
.filter((filter) => {
if (searchTerm) {
// Filter by search term
return filter.label
.toLowerCase()
?.toLowerCase()
.includes(searchTerm.toLowerCase());
}
return filter;
})
.sort((a, b) => a.label?.localeCompare(b.label)),
(filter) => {
return filter.type;
.sort((a, b) => (a.label ?? '').localeCompare(b.label ?? '')),
({ type }) => {
return type;
}
);

4
package-lock.json

@ -1,12 +1,12 @@
{
"name": "ghostfolio",
"version": "2.240.0",
"version": "2.241.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "ghostfolio",
"version": "2.240.0",
"version": "2.241.0",
"hasInstallScript": true,
"license": "AGPL-3.0",
"dependencies": {

2
package.json

@ -1,6 +1,6 @@
{
"name": "ghostfolio",
"version": "2.240.0",
"version": "2.241.0",
"homepage": "https://ghostfol.io",
"license": "AGPL-3.0",
"repository": "https://github.com/ghostfolio/ghostfolio",

Loading…
Cancel
Save