UPDATE: Adds bindings to update timezone and locale

UPDATE: Update "generate locale" utility

FIX: Minor fixes to UI and proper support for locales/timezones

UPDATE: Adds "display language" setting to core
This commit is contained in:
Nicolás Hatcher
2025-11-28 21:21:19 +01:00
parent 402a13bd00
commit ffe5d1a158
109 changed files with 4783 additions and 3216 deletions

View File

@@ -40,6 +40,18 @@ pub fn quote_name(name: &str) -> String {
quote_name_ic(name)
}
/// Gets all timezones
#[wasm_bindgen(js_name = "getAllTimezones")]
pub fn get_all_timezones() -> Vec<String> {
ironcalc_base::get_all_timezones()
}
/// Gets all supported locales
#[wasm_bindgen(js_name = "getSupportedLocales")]
pub fn get_supported_locales() -> Vec<String> {
ironcalc_base::get_supported_locales()
}
#[derive(Serialize)]
struct DefinedName {
name: String,
@@ -55,13 +67,19 @@ pub struct Model {
#[wasm_bindgen]
impl Model {
#[wasm_bindgen(constructor)]
pub fn new(name: &str, locale: &str, timezone: &str) -> Result<Model, JsError> {
let model = BaseModel::new_empty(name, locale, timezone).map_err(to_js_error)?;
pub fn new(
name: &str,
locale: &str,
timezone: &str,
language_id: &str,
) -> Result<Model, JsError> {
let model =
BaseModel::new_empty(name, locale, timezone, language_id).map_err(to_js_error)?;
Ok(Model { model })
}
pub fn from_bytes(bytes: &[u8]) -> Result<Model, JsError> {
let model = BaseModel::from_bytes(bytes).map_err(to_js_error)?;
pub fn from_bytes(bytes: &[u8], language_id: &str) -> Result<Model, JsError> {
let model = BaseModel::from_bytes(bytes, language_id).map_err(to_js_error)?;
Ok(Model { model })
}
@@ -788,4 +806,44 @@ impl Model {
Err(e) => Err(to_js_error(e.to_string())),
}
}
#[wasm_bindgen(js_name = "setTimezone")]
pub fn set_timezone(&mut self, timezone: &str) -> Result<(), JsError> {
self.model
.set_timezone(timezone)
.map_err(|e| to_js_error(e.to_string()))
}
#[wasm_bindgen(js_name = "setLocale")]
pub fn set_locale(&mut self, locale: &str) -> Result<(), JsError> {
self.model
.set_locale(locale)
.map_err(|e| to_js_error(e.to_string()))
}
/// Gets the timezone of the model
#[wasm_bindgen(js_name = "getTimezone")]
pub fn get_timezone(&self) -> String {
self.model.get_timezone()
}
/// Gets the locale of the model
#[wasm_bindgen(js_name = "getLocale")]
pub fn get_locale(&self) -> String {
self.model.get_locale()
}
/// Gets the language of the model
#[wasm_bindgen(js_name = "getLanguage")]
pub fn get_language(&self) -> String {
self.model.get_language()
}
/// Sets the language of the model
#[wasm_bindgen(js_name = "setLanguage")]
pub fn set_language(&mut self, language: &str) -> Result<(), JsError> {
self.model
.set_language(language)
.map_err(|e| to_js_error(e.to_string()))
}
}