1- {% comment %}
2- User base currency (EUR, USD, etc.)
3- {% endcomment %}
4- {% assign base = trmnl .plugin_settings .custom_fields_values .base_currency | upcase %}
5-
6- {% comment %}
7- User metal unit (troy_ounce, grams)
8- {% endcomment %}
9- {% assign metal_unit = trmnl .plugin_settings .custom_fields_values .metal_unit %}
10-
11- {% comment %}
12- Currency symbol mapping
13- {% endcomment %}
14- {% if base == "USD" %}
15- {% assign currency_symbol = "$" %}
16- {% elsif base == "EUR" %}
17- {% assign currency_symbol = "€" %}
18- {% elsif base == "GBP" %}
19- {% assign currency_symbol = "£" %}
20- {% elsif base == "JPY" or base == "CNY" %}
21- {% assign currency_symbol = "¥" %}
22- {% elsif base == "UAH" %}
23- {% assign currency_symbol = "₴" %}
24- {% elsif base == "INR" %}
25- {% assign currency_symbol = "₹" %}
26- {% elsif base == "ILS" %}
27- {% assign currency_symbol = "₪" %}
28- {% elsif base == "KRW" %}
29- {% assign currency_symbol = "₩" %}
30- {% elsif base == "VND" %}
31- {% assign currency_symbol = "₫" %}
32- {% elsif base == "PHP" %}
33- {% assign currency_symbol = "₱" %}
34- {% elsif base == "RUB" %}
35- {% assign currency_symbol = "₽" %}
36- {% else %}
37- {% assign currency_symbol = "" %}
38- {% endif %}
39-
40- {% comment %}
41- Fetch rates
42- {% endcomment %}
43- {% assign forex = IDX_0 %}
44- {% assign metals = IDX_1 %}
45- {% assign crypto = IDX_2 %}
46- {% assign stocks = IDX_3 %}
47-
48- {% comment %}
49- Collect all symbols from different asset types
50- {% endcomment %}
51- {% assign all_symbols = "" | split: "" %}
52-
53- {% comment %}
54- Process fiat assets
55- {% endcomment %}
56- {% assign fiat_assets_string = trmnl .plugin_settings .custom_fields_values .fiat_assets %}
57- {% assign fiat_assets = fiat_assets_string | split: ',' %}
58-
59- {% for symbol in fiat_assets %}
60- {% assign symbol = symbol | strip %}
61- {% if symbol != "" %}
62- {% assign symbol_with_type = symbol | append: ":forex" %}
63- {% assign temp_array = symbol_with_type | split: "|" %}
64- {% assign all_symbols = temp_array | concat: all_symbols %}
65- {% endif %}
66- {% endfor %}
67-
68- {% comment %}
69- Process metal assets
70- {% endcomment %}
71- {% assign metal_assets_string = trmnl .plugin_settings .custom_fields_values .metal_assets %}
72- {% assign metal_assets = metal_assets_string | split: ',' %}
73-
74- {% for symbol in metal_assets %}
75- {% assign symbol = symbol | strip %}
76- {% if symbol != "" %}
77- {% assign symbol_with_type = symbol | append: ":metal" %}
78- {% assign temp_array = symbol_with_type | split: "|" %}
79- {% assign all_symbols = temp_array | concat: all_symbols %}
80- {% endif %}
81- {% endfor %}
82-
83- {% comment %}
84- Process crypto assets
85- {% endcomment %}
86- {% assign crypto_assets_string = trmnl .plugin_settings .custom_fields_values .crypto_assets %}
87- {% assign crypto_assets = crypto_assets_string | split: ',' %}
88-
89- {% for symbol in crypto_assets %}
90- {% assign symbol = symbol | strip %}
91- {% if symbol != "" %}
92- {% assign symbol_with_type = symbol | append: ":crypto" %}
93- {% assign temp_array = symbol_with_type | split: "|" %}
94- {% assign all_symbols = temp_array | concat: all_symbols %}
95- {% endif %}
96- {% endfor %}
97-
98- {% comment %}
99- Process stock assets
100- {% endcomment %}
101- {% assign stock_assets_string = trmnl .plugin_settings .custom_fields_values .stock_assets %}
102- {% assign stock_assets = stock_assets_string | split: ',' %}
103-
104- {% for symbol in stock_assets %}
105- {% assign symbol = symbol | strip %}
106- {% if symbol != "" %}
107- {% assign symbol_with_type = symbol | append: ":stock" %}
108- {% assign temp_array = symbol_with_type | split: "|" %}
109- {% assign all_symbols = temp_array | concat: all_symbols %}
110- {% endif %}
111- {% endfor %}
112-
113- {%- comment -%} Build sortable_str with entries separated by a unique token {%- endcomment -%}
114- {% assign sortable_str = "" %}
115-
116- {% for symbol_with_type in all_symbols %}
117- {% assign parts = symbol_with_type | split: ":" %}
118- {% assign symbol = parts [0] %}
119- {% assign type = parts [1] %}
120- {% assign price = 0 %}
121-
122- {% case type %}
123- {% when "forex" %}
124- {% if forex .rates [symbol] %}
125- {% assign price = 1 | divided_by: forex .rates [symbol] %}
126- {% endif %}
127- {% when "metal" %}
128- {% if metals .rates [symbol] %}
129- {% assign price = 1 | divided_by: metals .rates [symbol] %}
130- {% if metal_unit == "troy_ounce" %}
131- {% assign price = price | times: 31.1034768 %}
132- {% endif %}
133- {% endif %}
134- {% when "crypto" %}
135- {% if crypto .rates [symbol] %}
136- {% assign price = 1 | divided_by: crypto .rates [symbol] %}
137- {% endif %}
138- {% when "stock" %}
139- {% if stocks .rates [symbol] %}
140- {% assign price = 1 | divided_by: stocks .rates [symbol] %}
141- {% endif %}
142- {% endcase %}
143-
144- {%- comment -%} zero-pad numeric value (multiply to preserve decimals) {%- endcomment -%}
145- {% assign padded_num = price | times: 1000000 | round %}
146- {% assign padded = padded_num | prepend: "000000000000" | slice: -12 , 12 %}
147-
148- {%- comment -%} entry format: padded|SYMBOL|TYPE|RAWPRICE {%- endcomment -%}
149- {% assign entry = padded | append: "|" | append: symbol | append: "|" | append: type | append: "|" | append: price %}
150-
151- {%- comment -%} append to sortable_str using a separator that won't appear in data {%- endcomment -%}
152- {% if sortable_str == "" %}
153- {% assign sortable_str = entry %}
154- {% else %}
155- {% assign sortable_str = sortable_str | append: "§§§" | append: entry %}
156- {% endif %}
157- {% endfor %}
158-
159- {%- comment -%} turn into a real array and sort by padded prefix (lexicographic), then reverse for DESC {%- endcomment -%}
160- {% assign sortable = sortable_str | split: "§§§" %}
161- {% assign sortable = sortable | sort %}
162- {% assign sortable = sortable | reverse %}
163-
1641{% comment %}
1652Determine grid layout based on number of symbols
1663{% endcomment %}
@@ -179,7 +16,6 @@ Determine grid layout based on number of symbols
17916 {% assign grid_class = "grid grid--cols-2" %}
18017 {% assign symbol_count = 12 %}
18118{% endif %}
182-
18319<div class =" layout layout--col gap--space-between" >
18420
18521 {% if symbol_count == 0 %}
@@ -194,7 +30,7 @@ Determine grid layout based on number of symbols
19430 </div >
19531
19632 {% else %}
197- <div class =" {{ grid_class }}" >
33+ <div class =" {{ grid_class }}" data-overflow = " true " >
19834 {% for entry in sortable %}
19935 {% assign parts = entry | split: "|" %}
20036 {% assign symbol = parts [1] %}
0 commit comments