Beispiel #1
0
def _validate_teilnehmer(runde_id: Union[None, str], geber_id: Union[None, str],
                         teilnehmer_ids: List[str]) -> Union[html.Div, None]:
    m = []
    if runde_id is None:
        m.append(f'Bitte wählen Sie eine Runde.')
    if geber_id is None:
        m.append(f'Bitte wählen einen Geber.')
    if None in teilnehmer_ids:
        m.append(f'Bitte wählen Sie vier Teilnehmer.')
    teilnehmer_ids_without_none = [int(t) for t in teilnehmer_ids if t is not None]
    if len(teilnehmer_ids_without_none) != len(set(teilnehmer_ids_without_none)):
        m.append(f'Bitte wählen Sie eindeutige Teilnehmer.')
    teilnehmer_ids_without_none_and_geberhand = [int(t) for t in teilnehmer_ids[:-1] if t is not None]
    if geber_id is not None and int(geber_id) in teilnehmer_ids_without_none_and_geberhand:
        m.append(f'Bitte positionieren Sie den Geber eindeutig auf die Geberhand.')
    if len(m) == 0:
        return None
    return html.Div([wrap_empty_dbc_row(), wrap_alert(m)])
Beispiel #2
0
def wrap_spielen_layout():
    teilnehmers_options = [{
        'label': f'{s.name}',
        'value': f'{s.id}'
    } for s in get_teilnehmer()]
    einzelspiel_id = get_latest_einzelspiel_id()
    runde_id = get_runde_id_by_einzelspiel_id(einzelspiel_id)
    einzelspiel = get_einzelspiele_by_einzelspiel_ids([einzelspiel_id])
    geber_id = einzelspiel[0].ausspieler_id if len(einzelspiel) == 1 else None
    ausspieler_id = einzelspiel[0].mittelhand_id if len(
        einzelspiel) == 1 else None
    mittelhand_id = einzelspiel[0].hinterhand_id if len(
        einzelspiel) == 1 else None
    hinterhand_id = einzelspiel[0].geberhand_id if len(
        einzelspiel) == 1 else None
    if len(einzelspiel
           ) == 1 and einzelspiel[0].geber_id != einzelspiel[0].geberhand_id:
        geberhand_id = einzelspiel[0].geber_id
    elif len(einzelspiel
             ) == 1 and einzelspiel[0].geber_id == einzelspiel[0].geberhand_id:
        geberhand_id = einzelspiel[0].ausspieler_id
    else:
        geberhand_id = None
    return html.Div([
        html.Div([
            dbc.Modal([
                dbc.ModalHeader(id='rufspiel_stats_modal_header'),
                dbc.ModalBody(html.Div(id='rufspiel_stats_modal_body')),
                dbc.ModalFooter(
                    html.Div(id='rufspiel_stats_modal_close_button')),
            ],
                      id='rufspiel_spielstand_modal',
                      size='xl',
                      scrollable=True),
            dbc.Modal([
                dbc.ModalHeader(id='solo_stats_modal_header'),
                dbc.ModalBody(html.Div(id='solo_stats_modal_body')),
                dbc.ModalFooter(html.Div(id='solo_stats_modal_close_button')),
            ],
                      id='solo_spielstand_modal',
                      size='xl',
                      scrollable=True),
            dbc.Modal([
                dbc.ModalHeader(id='hochzeit_stats_modal_header'),
                dbc.ModalBody(html.Div(id='hochzeit_stats_modal_body')),
                dbc.ModalFooter(
                    html.Div(id='hochzeit_stats_modal_close_button')),
            ],
                      id='hochzeit_spielstand_modal',
                      size='xl',
                      scrollable=True),
            dbc.Modal([
                dbc.ModalHeader(id='ramsch_stats_modal_header'),
                dbc.ModalBody(html.Div(id='ramsch_stats_modal_body')),
                dbc.ModalFooter(
                    html.Div(id='ramsch_stats_modal_close_button')),
            ],
                      id='ramsch_spielstand_modal',
                      size='xl',
                      scrollable=True),
        ]),
        dbc.Container([
            wrap_empty_dbc_row(),
            dbc.Row([
                dbc.Col([
                    dbc.Row([dbc.Col([html.Div(html.H4('Spielen'))])],
                            justify='start'),
                    dbc.Row([
                        dbc.Col([
                            wrap_select_div(
                                form_text='Runde',
                                id='runde_id',
                                options=[{
                                    'label':
                                    f'{r.datum.strftime("%d. %b %Y")} - {r.name} - '
                                    f'{r.ort}',
                                    'value':
                                    f'{r.id}'
                                } for r in get_runden()],
                                value=runde_id),
                        ],
                                xl=12,
                                xs=12)
                    ]),
                    wrap_empty_dbc_row(),
                    dbc.Row([
                        dbc.Col([
                            wrap_select_div(form_text='Geber',
                                            id='geber_id',
                                            options=teilnehmers_options,
                                            value=geber_id),
                        ],
                                xl=10,
                                xs=10)
                    ]),
                    wrap_empty_dbc_row(),
                    dbc.Row([
                        dbc.Col([
                            wrap_select_div(form_text='Ausspieler',
                                            id='ausspieler_id',
                                            options=teilnehmers_options,
                                            value=ausspieler_id),
                        ],
                                xl=10,
                                xs=10),
                        dbc.Col([
                            wrap_checklist_div(form_text='Gelegt',
                                               id='gelegt_ausspieler_id',
                                               options=[{
                                                   'label': '',
                                                   'value': 1
                                               }],
                                               value=[]),
                        ],
                                xl=2,
                                xs=2)
                    ]),
                    dbc.Row([
                        dbc.Col([
                            wrap_select_div(form_text='Mittelhand',
                                            id='mittelhand_id',
                                            options=teilnehmers_options,
                                            value=mittelhand_id),
                        ],
                                xl=10,
                                xs=10),
                        dbc.Col([
                            wrap_checklist_div(form_text='Gelegt',
                                               id='gelegt_mittelhand_id',
                                               options=[{
                                                   'label': '',
                                                   'value': 1
                                               }],
                                               value=[]),
                        ],
                                xl=2,
                                xs=2)
                    ]),
                    dbc.Row([
                        dbc.Col([
                            wrap_select_div(form_text='Hinterhand',
                                            id='hinterhand_id',
                                            options=teilnehmers_options,
                                            value=hinterhand_id),
                        ],
                                xl=10,
                                xs=10),
                        dbc.Col([
                            wrap_checklist_div(form_text='Gelegt',
                                               id='gelegt_hinterhand_id',
                                               options=[{
                                                   'label': '',
                                                   'value': 1
                                               }],
                                               value=[]),
                        ],
                                xl=2,
                                xs=2)
                    ]),
                    dbc.Row([
                        dbc.Col([
                            wrap_select_div(form_text='Geberhand',
                                            id='geberhand_id',
                                            options=teilnehmers_options,
                                            value=geberhand_id),
                        ],
                                xl=10,
                                xs=10),
                        dbc.Col([
                            wrap_checklist_div(form_text='Gelegt',
                                               id='gelegt_geberhand_id',
                                               options=[{
                                                   'label': '',
                                                   'value': 1
                                               }],
                                               value=[]),
                        ],
                                xl=2,
                                xs=2)
                    ]),
                ],
                        xs=12,
                        xl=4),
                # ]),
                # wrap_empty_dbc_row(),
                # dbc.Row([
                dbc.Col([
                    html.Div([
                        dbc.Tabs([
                            dbc.Tab(tab_id='rufspiel_tab', label='Rufspiel'),
                            dbc.Tab(tab_id='solo_tab', label='Solo'),
                            dbc.Tab(tab_id='hochzeit_tab', label='Hochzeit'),
                            dbc.Tab(tab_id='ramsch_tab', label='Ramsch')
                        ],
                                 id='tabs',
                                 active_tab='rufspiel_tab'),
                        html.Div(id='tab_content')
                    ])
                ],
                        xs=12,
                        xl=8)
            ]),
            wrap_footer_row()
        ]),
    ])
Beispiel #3
0
def wrap_teilnehmer_anlegen_layout():
    current = pathlib.Path(__file__).name.split('.')[0]
    return html.Div([
        dcc.Store(id='create_teilnehmer_modal_open_n_clicks',
                  data={'n_clicks': 0}),
        dcc.Store(id='create_teilnehmer_modal_close_n_clicks',
                  data={'n_clicks': 0}),
        dbc.Modal([
            dbc.ModalHeader(id='create_teilnehmer_modal_header'),
            dbc.ModalBody(html.Div(id='create_teilnehmer_modal_body')),
            dbc.ModalFooter([
                dbc.Button('Schließen',
                           id='create_teilnehmer_modal_close',
                           color='primary',
                           block=True),
                dbc.Button('Schließen',
                           id='create_teilnehmer_modal_close_reload',
                           color='primary',
                           block=True,
                           href=f'/{current}',
                           external_link=True)
            ]),
        ],
                  id='create_teilnehmer_modal',
                  size='xl',
                  scrollable=True),
        dbc.Container([
            wrap_empty_dbc_row(),
            dbc.Row([dbc.Col([html.Div(html.H5('Teilnehmer anlegen'))])],
                    justify='start'),
            dbc.Row([
                dbc.Col([
                    dbc.FormGroup([
                        dbc.FormText('Vorname des neuen Teilnehmers'),
                        dbc.Input(id='teilnehmer_new_vorname',
                                  placeholder='',
                                  maxLength=20),
                    ])
                ],
                        xl=6,
                        xs=12),
            ]),
            dbc.Row([
                dbc.Col([
                    dbc.FormGroup([
                        dbc.FormText('Nachname des neuen Teilnehmers'),
                        dbc.Input(id='teilnehmer_new_nachname',
                                  placeholder='',
                                  maxLength=20),
                    ])
                ],
                        xl=6,
                        xs=12),
            ]),
            dbc.Row([
                dbc.Col([
                    dbc.FormGroup([
                        dbc.Button('Neuen Teilnehmer erstellen',
                                   id='create_teilnehmer_modal_open',
                                   color='primary',
                                   block=True),
                    ])
                ],
                        xl=6,
                        xs=12)
            ]),
            wrap_footer_row()
        ]),
    ])
Beispiel #4
0
def wrap_statistiken_layout():
    teilnehmers_options = [{'label': f'{s.name}', 'value': f'{s.id}'} for s in get_teilnehmer()]
    einzelspiel_id = get_latest_einzelspiel_id()
    runde_id = get_runde_id_by_einzelspiel_id(einzelspiel_id)
    einzelspiel = get_einzelspiele_by_einzelspiel_ids([einzelspiel_id])
    geber_id = einzelspiel[0].ausspieler_id if len(einzelspiel) == 1 else None
    ausspieler_id = einzelspiel[0].mittelhand_id if len(einzelspiel) == 1 else None
    mittelhand_id = einzelspiel[0].hinterhand_id if len(einzelspiel) == 1 else None
    hinterhand_id = einzelspiel[0].geberhand_id if len(einzelspiel) == 1 else None
    if len(einzelspiel) == 1 and einzelspiel[0].geber_id != einzelspiel[0].geberhand_id:
        geberhand_id = einzelspiel[0].geber_id
    elif len(einzelspiel) == 1 and einzelspiel[0].geber_id == einzelspiel[0].geberhand_id:
        geberhand_id = einzelspiel[0].ausspieler_id
    else:
        geberhand_id = None
    return html.Div([
        html.Div([
            dcc.Store(id='stats_teilnehmer_modal_open_n_clicks', data={'n_clicks': 0}),
            dcc.Store(id='stats_teilnehmer_modal_close_n_clicks', data={'n_clicks': 0}),
            dcc.Store(id='stats_runden_modal_open_n_clicks', data={'n_clicks': 0}),
            dcc.Store(id='stats_runden_modal_close_n_clicks', data={'n_clicks': 0}),
            dcc.Store(id='stats_all_modal_open_n_clicks', data={'n_clicks': 0}),
            dcc.Store(id='stats_all_modal_close_n_clicks', data={'n_clicks': 0}),
            dbc.Modal([
                dbc.ModalHeader(id='stats_teilnehmer_modal_header'),
                dbc.ModalBody(html.Div(id='stats_teilnehmer_modal_body')),
                dbc.ModalFooter(
                    dbc.Button('Schließen', id='stats_teilnehmer_modal_close', color='primary', block=True)
                ), ], id='stats_teilnehmer_modal', size='xl', scrollable=True),
            dbc.Modal([
                dbc.ModalHeader(id='stats_runden_modal_header'),
                dbc.ModalBody(html.Div(id='stats_runden_modal_body')),
                dbc.ModalFooter(
                    dbc.Button('Schließen', id='stats_runden_modal_close', color='primary', block=True)
                ), ], id='stats_runden_modal', size='xl', scrollable=True),
            dbc.Modal([
                dbc.ModalHeader(id='stats_all_modal_header'),
                dbc.ModalBody(html.Div(id='stats_all_modal_body')),
                dbc.ModalFooter(
                    dbc.Button('Schließen', id='stats_all_modal_close', color='primary', block=True)
                ), ], id='stats_all_modal', size='xl', scrollable=True),
        ]),
        dbc.Container([
            wrap_empty_dbc_row(),
            dbc.Row([
                wrap_dbc_col([
                    html.Div(
                        dbc.Row([
                            dbc.Col([
                                html.Div(html.H4('Statistiken'))
                            ])], justify='start'),
                    ),
                    dbc.Row([
                        dbc.Col([
                            wrap_dash_dropdown_div(form_text='Teilnehmer wählen', id='selected_teilnehmer_ids',
                                                   options=teilnehmers_options,
                                                   value=list({geber_id, ausspieler_id, mittelhand_id, hinterhand_id,
                                                               geberhand_id})),
                        ], xl=6, xs=12),
                    ]),
                    dbc.Row([
                        dbc.Col([
                            dbc.Button('Statistiken gewählter Teilnehmer anzeigen',
                                       id='stats_teilnehmer_modal_open',
                                       color='primary', block=True),
                        ], xl=6, xs=12),
                    ]),
                    html.Br(),
                    dbc.Row([
                        dbc.Col([
                            wrap_dash_dropdown_div(form_text='Runden wählen', id='selected_runden_ids',
                                                   options=[{'label': f'{r.datum.strftime("%d. %b %Y")} - {r.name} - '
                                                                      f'{r.ort}',
                                                             'value': f'{r.id}'} for r in get_runden()],
                                                   value=[runde_id]),
                        ], xl=6, xs=12),
                    ]),
                    html.Div(
                        dbc.Row([
                            dbc.Col([
                                dbc.Button('Statistiken gewählter Runden anzeigen',
                                           id='stats_runden_modal_open',
                                           color='primary', block=True),
                            ], xl=6, xs=12),
                        ])),
                    html.Br(),
                    html.Br(),
                    html.Div(
                        dbc.Row([
                            dbc.Col([
                                dbc.Button('Alle Statistiken anzeigen',
                                           id='stats_all_modal_open',
                                           color='primary', block=True),
                            ], xl=6, xs=12),
                        ])),
                ]),
            ]),
            wrap_footer_row()
        ]),
    ])
Beispiel #5
0
def wrap_letztes_spiel_loeschen_layout():
    current = pathlib.Path(__file__).name.split('.')[0]
    einzelspiel_id = get_latest_einzelspiel_id()
    if einzelspiel_id is not None:
        einzelspiel = get_einzelspiele_by_einzelspiel_ids([einzelspiel_id])[0]
        runde = get_runde_by_id(einzelspiel.runde_id)
        df = get_latest_result()
        dict = {
            entry['teilnehmer_id']: entry['punkte']
            for entry in df.to_dict(orient='records')
        }
        tt = f"{einzelspiel.created_on.strftime('%d.%m.%Y')} - {einzelspiel.created_on.strftime('%H:%M:%S')}"
        return html.Div([
            dcc.Store(id='delete_einzelspiel_modal_open_n_clicks',
                      data={'n_clicks': 0}),
            dcc.Store(id='delete_einzelspiel_modal_close_n_clicks',
                      data={'n_clicks': 0}),
            dcc.Store(id='delete_einzelspiel_einzelspiel_id',
                      data={'id': einzelspiel_id}),
            dbc.Modal([
                dbc.ModalHeader(id='delete_einzelspiel_modal_header'),
                dbc.ModalBody(html.Div(id='delete_einzelspiel_modal_body')),
                dbc.ModalFooter([
                    dbc.Button('Schließen',
                               id='delete_einzelspiel_modal_close',
                               color='primary',
                               block=True),
                    dbc.Button('Schließen',
                               id='delete_einzelspiel_modal_close_reload',
                               color='primary',
                               block=True,
                               href=f'/{current}',
                               external_link=True)
                ]),
            ],
                      id='delete_einzelspiel_modal',
                      size='xl',
                      scrollable=True),
            dbc.Container([
                wrap_empty_dbc_row(),
                dbc.Row([
                    dbc.Col([
                        dbc.ListGroup([
                            dbc.ListGroupItem(f'{runde.name}'),
                            dbc.ListGroupItem(tt),
                            dbc.ListGroupItem(
                                f'{einzelspiel.spielart.capitalize()}'),
                        ])
                    ],
                            xl=6,
                            xs=12),
                ]),
                wrap_empty_dbc_row(),
                Presenter.get_result_message(dict, row_wise=True),
                wrap_empty_dbc_row(),
                dbc.Row([
                    dbc.Col([
                        dbc.FormGroup([
                            dbc.Button('Spiel löschen',
                                       id='delete_einzelspiel_modal_open',
                                       color='primary',
                                       block=True),
                        ])
                    ],
                            xl=6,
                            xs=12)
                ]),
                wrap_footer_row()
            ]),
        ])
    else:
        return html.Div([
            dbc.Container([
                wrap_empty_dbc_row(),
                wrap_alert(['Bisher wurden keine Spiele gespielt.']),
                wrap_footer_row()
            ])
        ])
Beispiel #6
0
def wrap_runde_anlegen_layout():
    current = pathlib.Path(__file__).name.split('.')[0]
    namen = get_runden(
        dataframe=True).sort_values("name")["name"].unique().tolist()
    orte = get_runden(
        dataframe=True).sort_values("ort")["ort"].unique().tolist()
    return html.Div([
        dcc.Store(id='create_runde_modal_open_n_clicks', data={'n_clicks': 0}),
        dcc.Store(id='create_runde_modal_close_n_clicks', data={'n_clicks':
                                                                0}),
        dbc.Modal([
            dbc.ModalHeader(id='create_runde_modal_header'),
            dbc.ModalBody(html.Div(id='create_runde_modal_body')),
            dbc.ModalFooter([
                dbc.Button('Schließen',
                           id='create_runde_modal_close',
                           color='primary',
                           block=True),
                dbc.Button('Schließen',
                           id='create_runde_modal_close_reload',
                           color='primary',
                           block=True,
                           href=f'/{current}',
                           external_link=True)
            ]),
        ],
                  id='create_runde_modal',
                  size='xl',
                  scrollable=True),
        dbc.Container([
            wrap_empty_dbc_row(),
            dbc.Row([dbc.Col([html.Div(html.H5('Runde anlegen'))])],
                    justify='start'),
            html.Datalist(id='name_list',
                          children=[html.Option(value=name)
                                    for name in namen]),
            dbc.Row([
                dbc.Col([
                    dbc.FormGroup([
                        dbc.FormText('Name der neuen Runde'),
                        dbc.Input(id='runde_new_name',
                                  placeholder='',
                                  maxLength=40,
                                  list='name_list'),
                    ])
                ],
                        xl=6,
                        xs=12),
            ]),
            html.Datalist(id='ort_list',
                          children=[html.Option(value=ort) for ort in orte]),
            dbc.Row([
                dbc.Col([
                    dbc.FormGroup([
                        dbc.FormText('Ort der neuen Runde'),
                        dbc.Input(id='runde_new_ort',
                                  placeholder='',
                                  maxLength=20,
                                  list='ort_list'),
                    ])
                ],
                        xl=6,
                        xs=12),
            ]),
            dbc.Row([
                dbc.Col([
                    dbc.FormGroup([
                        dbc.FormText('Datum der neuen Runde'),
                        dbc.Input(id='runde_new_date',
                                  type='Date',
                                  value=dt.date.today()),
                    ])
                ],
                        xl=6,
                        xs=12),
            ]),
            dbc.Row([
                dbc.Col([
                    dbc.FormGroup([
                        dbc.Button('Neue Runde erstellen',
                                   id='create_runde_modal_open',
                                   color='primary',
                                   block=True),
                    ])
                ],
                        xl=6,
                        xs=12)
            ]),
            wrap_footer_row()
        ]),
    ])