146 lines
3.1 KiB
Plaintext
146 lines
3.1 KiB
Plaintext
// Data objects for Tera template integration
|
|
// This script defines complex objects that can be accessed from Tera templates
|
|
|
|
// Create a products catalog object
|
|
fn create_products() {
|
|
let products = [
|
|
#{
|
|
id: 1,
|
|
name: "Laptop",
|
|
price: 1299.99,
|
|
features: [
|
|
"16GB RAM",
|
|
"512GB SSD",
|
|
"Intel i7 processor"
|
|
],
|
|
available: true
|
|
},
|
|
#{
|
|
id: 2,
|
|
name: "Smartphone",
|
|
price: 899.99,
|
|
features: [
|
|
"6.7 inch display",
|
|
"128GB storage",
|
|
"12MP camera"
|
|
],
|
|
available: true
|
|
},
|
|
#{
|
|
id: 3,
|
|
name: "Tablet",
|
|
price: 499.99,
|
|
features: [
|
|
"10.9 inch display",
|
|
"64GB storage",
|
|
"A14 chip"
|
|
],
|
|
available: false
|
|
},
|
|
#{
|
|
id: 4,
|
|
name: "Headphones",
|
|
price: 249.99,
|
|
features: [
|
|
"Noise cancellation",
|
|
"Wireless",
|
|
"20h battery life"
|
|
],
|
|
available: true
|
|
}
|
|
];
|
|
|
|
products
|
|
}
|
|
|
|
// Get all products
|
|
fn get_products() {
|
|
create_products()
|
|
}
|
|
|
|
// Get available products only
|
|
fn get_available_products() {
|
|
let all_products = create_products();
|
|
let available = [];
|
|
|
|
for product in all_products {
|
|
if product.available {
|
|
available.push(product);
|
|
}
|
|
}
|
|
|
|
available
|
|
}
|
|
|
|
// Get a specific product by ID
|
|
fn get_product_by_id(id) {
|
|
let products = create_products();
|
|
|
|
// Convert ID to integer to ensure type compatibility
|
|
let search_id = id.to_int();
|
|
|
|
for product in products {
|
|
if product.id == search_id {
|
|
return product;
|
|
}
|
|
}
|
|
|
|
#{} // Return empty object if not found
|
|
}
|
|
|
|
// Calculate total price of all products
|
|
fn calculate_total_price() {
|
|
let products = create_products();
|
|
let total = 0.0;
|
|
|
|
for product in products {
|
|
total += product.price;
|
|
}
|
|
|
|
total
|
|
}
|
|
|
|
// Format price with currency symbol
|
|
fn format_price(price) {
|
|
"$" + price.to_string()
|
|
}
|
|
|
|
// Get all product features as a flattened array
|
|
fn get_all_features() {
|
|
let products = create_products();
|
|
let all_features = [];
|
|
|
|
for product in products {
|
|
for feature in product.features {
|
|
all_features.push(feature);
|
|
}
|
|
}
|
|
|
|
all_features
|
|
}
|
|
|
|
// Get a user object
|
|
fn get_user() {
|
|
#{
|
|
name: "John Doe",
|
|
email: "john@example.com",
|
|
role: "admin",
|
|
settings: #{
|
|
theme: "dark",
|
|
notifications: true,
|
|
language: "en"
|
|
},
|
|
orders: [
|
|
#{
|
|
id: "ORD-001",
|
|
date: "2025-03-25",
|
|
total: 1299.99
|
|
},
|
|
#{
|
|
id: "ORD-002",
|
|
date: "2025-04-01",
|
|
total: 249.99
|
|
}
|
|
]
|
|
}
|
|
} |