-use std::time::Duration;
+use std::{sync::LazyLock, time::Duration};
pub const FILE_CONF: &str = "conf.ron";
pub const DB_DIRECTORY: &str = "data";
pub const MAX_DB_CONNECTION: u32 = 1; // To avoid database lock.
-pub const LANGUAGES: [(&str, &str); 2] = [("Français", "fr"), ("English", "en")];
+pub static LANGUAGES: LazyLock<[(&str, &str); 2]> = LazyLock::new(|| {
+ let mut langs = [("Français", "fr"), ("English", "en")];
+ langs.sort();
+ langs
+});
user: Some(user),
recipes,
recipe,
- languages: consts::LANGUAGES,
+ languages: *consts::LANGUAGES,
}
.into_response())
} else {
<option value="3" {%+ call is_difficulty(common::ron_api::Difficulty::Hard) %}>Hard</option>
</select>
+ <!--
+ * Event on 'input':
+ * Trim left
+ * for all w in "<word> ":
+ * Call recipe/add_tags with all w
+ * Add all w to tag list (DOM)
+ * Event on 'click' on del tag button:
+ * Call recipe/rm_tags
+ * Remove the tag to the html list (DOM)
+ * 'enter' key to add the current tag
+ -->
+ <div id="widget-tags">
+ <label for="input-tags" >Tags</label>
+ <div class="tags"></div>
+ <input
+ id="input-tags"
+ type="text"
+ value="" />
+ </div>
+
<label for="select-language">Language</label>
<select id="select-language">
{% for lang in languages %}
.forget();
}
+ // Tags.
+ {
+
+ }
+
// Language.
{
let language: HtmlSelectElement = by_id("select-language");