@@ -2,23 +2,31 @@ use crate::components::{demon_dropdown, player_selection_dropdown};
22use maud:: { html, Markup , Render } ;
33use pointercrate_core:: { localization:: tr, trp} ;
44use pointercrate_core_pages:: trp_html;
5- use pointercrate_demonlist:: { config, demon:: Demon } ;
5+ use pointercrate_demonlist:: { config, demon:: Demon , player :: DatabasePlayer } ;
66
7- pub struct RecordSubmitter < ' a > {
7+ pub struct RecordSubmitter < ' d , ' p > {
88 initially_visible : bool ,
9- demons : & ' a [ Demon ] ,
9+ demons : & ' d [ Demon ] ,
10+ initial_demon : Option < i16 > ,
11+ initial_holder : Option < & ' p DatabasePlayer > ,
1012}
1113
12- impl < ' a > RecordSubmitter < ' a > {
13- pub fn new ( visible : bool , demons : & ' a [ Demon ] ) -> RecordSubmitter < ' a > {
14+ impl < ' d , ' p > RecordSubmitter < ' d , ' p > {
15+ /// * `visible` - Show the record submitter.
16+ /// * `demons` - The Demonlist.
17+ /// * `holder` - Player to preselect as the record holder. `None` to not preselect a player.
18+ /// * `demon` - Position of the demon in the demonlist to preselect. `None` to not preselect a demon.
19+ pub fn new ( visible : bool , demons : & ' d [ Demon ] , holder : Option < & ' p DatabasePlayer > , demon : Option < i16 > ) -> RecordSubmitter < ' d , ' p > {
1420 RecordSubmitter {
1521 initially_visible : visible,
1622 demons,
23+ initial_demon : demon,
24+ initial_holder : holder,
1725 }
1826 }
1927}
2028
21- impl Render for RecordSubmitter < ' _ > {
29+ impl Render for RecordSubmitter < ' _ , ' _ > {
2230 fn render ( & self ) -> Markup {
2331 html ! {
2432 section. panel. fade. closable #submitter style=( if !self . initially_visible { "display:none" } else { "" } ) {
@@ -36,7 +44,7 @@ impl Render for RecordSubmitter<'_> {
3644 ( trp!( "record-submission.demon-info" , "list-size" = config:: extended_list_size( ) ) )
3745 }
3846 span. form-input data-type = "dropdown" {
39- ( demon_dropdown( "id_demon" , self . demons. iter( ) . filter( |demon| demon. base. position <= config:: extended_list_size( ) ) ) )
47+ ( demon_dropdown( "id_demon" , self . demons. iter( ) . filter( |demon| demon. base. position <= config:: extended_list_size( ) ) , self . initial_demon ) )
4048 p. error { }
4149 }
4250 h3 {
@@ -46,7 +54,7 @@ impl Render for RecordSubmitter<'_> {
4654 ( tr( "record-submission.holder-info" ) )
4755 }
4856 span. form-input. flex. col data-type = "dropdown" {
49- ( player_selection_dropdown( "id_player" , "/api/v1/players/" , "name" , "player" ) )
57+ ( player_selection_dropdown( "id_player" , "/api/v1/players/" , "name" , "player" , self . initial_holder ) )
5058 p. error { }
5159 }
5260 h3 {
0 commit comments