def get_comment_collapse(system):
    return html.Div(children=[
        button(
            'Opmerking toevoegen',
            'toggle_comment_' + system,
            backgroundcolor=site_colors['indigo'],
        ),
        html.Br(),
        dbc.Collapse(dbc.Card([
            dbc.Textarea(
                id='textarea_comment_' + system,
                className='mb-3',
                placeholder="Vul je opmerking in",
            ),
            button('Opmerking opslaan',
                   'commit_comment_' + system,
                   backgroundcolor=site_colors['indigo'])
        ],
                              body=True,
                              style={
                                  'backgroundColor': site_colors['grey20'],
                              }),
                     id='collapse_comment_' + system)
    ],
                    style={
                        "textAlign": "left",
                    })
예제 #2
0
def diff_update_graph_dropdown(dates):
    marks = get_marks_diff_dateselection()

    dates = [find_group_key(marks, dates[0]), find_group_key(marks, dates[1])]
    fig_total = diff_update_graph(dates)

    button_download = html.A(button("Download de verschillen in Excel",
                                    backgroundcolor=site_colors['indigo']),
                             href='/download?type=diff&old={}&new={}&'.format(
                                 dates[0],
                                 dates[1],
                             ))

    return [fig_total, button_download]
예제 #3
0
def update_cp_fase(con_dropdown_value):
    if con_dropdown_value != '':
        return html.A(id='download',
                      href='/download?type=hFwmotkaNo&value={}'.format(
                          con_dropdown_value),
                      children=html.A(
                          button(
                              children='Download {}opdracht {}'.format(
                                  SOURCETAG, con_dropdown_value),
                              _id='con-download-button',
                              backgroundcolor=site_colors['indigo'],
                          )))
    else:
        return html.P("")
def status_download_button(selected_cells, fm_all, fm_filter, intake_value,
                           hist):
    if fm_all is None:
        raise PreventUpdate
    if fm_filter is None:
        raise PreventUpdate

    if hist:
        fm = fm_filter
    else:
        fm = fm_all

    if selected_cells[0]['row'] == 1000:
        return html.P()

    _, _, df_ = get_status_df(intake_value, selected_cells, fm)

    if (df_.iloc[selected_cells[0]['row'], selected_cells[0]['column']]) == 0:
        return [html.P()]

    button_download = html.A(
        button("Download bovenstaande status check in Excel",
               backgroundcolor=site_colors['indigo']),
        href='/download?type=status&intake={}&cells={}&hist={}'.format(
            intake_value, selected_cells, hist))

    return html.Div(
        [
            html.Div(button_download),
        ],
        style={
            'margin-left': '20%',
            'margin-right': '20%',
            'margin-top': '1%',
            'margin-bottom': '1%',
            'padding': '1%',
            'backgroundColor': site_colors['grey20'],
            'border-style': 'solid solid solid solid',
            'border-color': '#BEBEBE',
            'border-width': '1px',
            "text-align": "center",
        },
    )
예제 #5
0
def get_body():
    uitleg_upload = html.Div(
        html.A([
            button('Uitleg upload', 'uitleg_upload_button',
                   site_colors['cyan']),
            dbc.Collapse(
                dbc.Card(
                    dbc.CardBody("""
                        In de tabel hiernaast is voor alle objecten binnen een \
                        Connect opdracht het Bouwplannummer weergegeven.
                        In de kolom 'con_opdrachtid' staat het opdrachtnummer aangegeven, \
                        in 'con_objectid' het objectnummer.
                        De kolom 'cpnr_extracted' geeft aan welk ChangePoint nummer er is \
                        bepaald uit het veld 'Bouwplannummer' van Connect.
                        De kolom 'cpnr_corrected' geeft aan welk ChangePoint nummer er op dit moment wordt gebruikt in \
                        het bepalen van de projectstructuur.

                        Het kan zijn dat er een onjuist bouwplannummer aan een Connect object is verbonden.
                        Deze kun je wijzigen door het juiste bouwplannummer up te loaden.
                        De Connect order kun je downloaden met de knop 'Download Connect opdracht xxx'.
                        De excel die wordt gedownload kun je aanpassen.
                        Alleen aanpassingen in de gele kolom ('cpnr_corrected') worden opgenomen in de database.
                        Als je je aanpassingen hebt gemaakt, \
                        sla je het bestand op en load je het up via de knop 'Upload correctie Connect'.
                        """),
                    style={'background-color': site_colors['grey20']},
                ),
                id="uitleg_upload",
            )
        ]))

    # queries
    q_conids = sa.select([czHierarchy.parentKindKey]).\
        where(czHierarchy.parentKind == 'con_opdrachtid').\
        where(czHierarchy.versionEnd.is_(None)).distinct()
    with Connection('r', 'read_conids') as session:
        con_ids_dropdown = [r for r, in session.execute(q_conids)]

    # Objects
    button_upload = dcc.Upload(
        id='con_upload',
        multiple=False,
        children=html.Div([html.A('Drag and drop or click here.')],
                          style={
                              'textAlign': 'center',
                          }),
        style={
            'width': '90%',
            'padding': '10px',
            'borderWidth': '1px',
            'borderStyle': 'dashed',
            'borderRadius': '5px',
            'textAlign': 'center',
            'margin': '10px',
        },
    )

    con_dropdown = dcc.Dropdown(
        id='con_dropdown',
        options=[{
            'label': i,
            'value': i
        } for i in con_ids_dropdown],
        value='',
        style={
            'width': '90%',
            'margin': '8px'
        },
    )

    tab_con = html.Div([
        # html.Br(),
        html.Div(id='upload_alert_el'),
        dbc.Row([
            dbc.Col([
                html.Div(
                    [
                        html.P(""),
                        html.H4(
                            'Selecteer een {}opdrachtnummer:'.format(
                                SOURCETAG),
                            className='lead',
                        ),
                        con_dropdown,
                        html.A(id='con_downloadlink'),
                    ],
                    style=styles['box'],
                ),
                html.Div(
                    children=[
                        html.Br(),
                        button_upload,
                        html.Br(),
                        uitleg_upload,
                    ],
                    style=styles['box'],
                ),
            ],
                    width={
                        "size": 3,
                        "order": 1
                    }),
            dbc.Col(
                [
                    html.Div(id='con_table', style=styles['table_page']),
                ],
                width={
                    "size": 8,
                    "order": 2
                },
            ),
        ])
    ])

    return tab_con
def get_body():
    uitleg_upload = html.Div(
        html.A([
            button('Uitleg', 'uitleg_upload_button', site_colors['cyan']),
            dbc.Collapse(
                dbc.Card(
                    dbc.CardBody([
                        html.P(cardbody1),
                        html.P(cardbody2),
                        html.P(cardbody3),
                        html.P(cardbody4),
                        html.P(cardbody5),
                        html.P(''),
                        html.P(cardbody6),
                        html.P(cardbody7),
                        html.P(cardbody8),
                        html.P(cardbody9),
                        html.P(cardbody10),
                        html.Header(cardbodyheader),
                        html.P(cardbody11),
                    ]),
                    style={'background-color': site_colors['grey20']},
                ),
                id="uitleg_upload",
            )
        ]))

    download_uitleg = html.A(
        button(
            "Download uitgebreide uitleg",
            backgroundcolor=site_colors['indigo'],
        ),
        href='/download?type=pdf_status&value=explain',
    )

    choose_cpnr_radio = dbc.FormGroup([
        dbc.RadioItems(
            options=radio_item_options,
            value=True,
            id='historie',
            style={'display': 'none'},
        ),
    ], )

    dropdown_status_vs = dcc.Dropdown(
        id='dropdown_status_vs',
        options=[{
            'label': i.replace('_', ' '),
            'value': i
        } for i in intake_options],
        multi=False,
        value=intake_options[0],
        style={
            'width': '90%',
            'margin': '8px'
        },
    )

    # Returned tab_connect
    intake_page = html.Div([
        html.Div(uitleg_upload, ),
        html.Div(download_uitleg, ),
        html.Div(choose_cpnr_radio, ),
        html.Div(
            [
                html.P(""),
                html.H4('Selecteer een status check optie:', className='lead'),
                dropdown_status_vs,
            ],
            style=styles['box'],
        ),
        html.Div(
            dbc.Row([
                dbc.Col(
                    html.Div(
                        dash_table.DataTable(
                            id='dash_datatable',
                            style_table={'overflowX': 'auto'},
                            style_header=table_styles['header'],
                            style_cell=table_styles['cell']['action'],
                            selected_cells=[{
                                'row': 1000,
                                'column': 1000
                            }],
                            active_cell=None,
                        ),
                        # style=styles['table_page'],
                        className='six columns',
                    ), ),
                dbc.Col(
                    html.Div(
                        dcc.Graph(id='status_graph',
                                  style=styles['graph_page']),
                        className='six columns',
                    ), ),
            ]),
            style=styles['page']),
        html.Div(
            id='status_table_ext',
            style=styles['table_page'],
        ),
        html.Div(id='status_download_button', ),
        dcc.Store(id='memory-output1'),
        dcc.Store(id='memory-output2'),
    ])

    return intake_page
def get_state_button(system):
    return button(
        "Bevestig status",
        'button_status_' + system,
        backgroundcolor=site_colors['indigo'],
    )
def get_body():
    jumbotron = html.Div(
        [
            dbc.Collapse(
                id="collapse1",
                is_open=False,
            ),
            html.Div(html.Img(src=app.get_asset_url(config.image),
                              style={
                                  'width': '320px',
                                  'align': 'right',
                              }),
                     className='display-3'),
            html.P(
                "Applicatie voor het onderhouden van de projectstructuur",
                style={
                    'color': site_colors['indigo'],
                },
                className="lead",
            ),
            html.Hr(className="my-2"),
            dbc.Row([
                dbc.Col([
                    html.P(""),
                    html.P(""),
                    html.P(""),
                    html.H5("Werkwijze"),
                    html.P(""),
                    html.P(""),
                    html.P(""),
                    html.P("Onder het tabblad 'Projectstructuur - problemen' \
                            kan worden gefilterd op problemen in de projectstructuur.",
                           className="lead"),
                    html.
                    P("""Na de selectie van een probleem komen orders, bouwplannumers en/of projecten naar voren die \
                            vervolgens opgezocht kunnen worden
                        onder het tabblad 'Projectstructuur op project'.""",
                      className="lead"),
                    html.
                    P("Op deze pagina staat de uitleg van het probleem en de actie die ondernomen moet worden.",
                      className='lead'),
                    html.
                    P("Omvat de actie een aanpassing van het bouwplannummer in Connect, "
                      +
                      "dan kan dit worden aangepast op het tabblad 'Connect - Objectniveau'.",
                      className="lead"),
                    html.A(button(
                        "Klik hier om te beginnen",
                        backgroundcolor=site_colors['indigo'],
                    ),
                           href='/apps/datamanagement_problems/'),
                    html.P(""),
                    html.A(button(
                        "Download uitgebreide uitleg",
                        backgroundcolor=site_colors['indigo'],
                    ),
                           href='/download?type=pdf&value=explain'),
                    html.P(""),
                    html.A(
                        button(
                            "Reload data dashboard",
                            _id='reload_button',
                            backgroundcolor=site_colors['indigo'],
                        ))
                ]),
                dbc.Col([html.Div(update_cleanheid_tabel())]),
            ]),
        ],
        style={
            'margin-left': '5%',
            'margin-right': '5%',
            'margin-top': '2%',
            'margin-bottom': '2%',
            'backgroundColor': site_colors['grey20'],
            'border-style': 'solid solid solid solid',
            'border-color': '#BEBEBE',
            'border-width': '1px',
            'padding': '20px',
        },
    )
    return jumbotron
예제 #9
0
def get_body():
    uitleg_cp = [
        button(SOURCETAG, 'uitleg_upload_st1_button', site_colors['cyan']),
        dbc.Collapse(
            dbc.Card(
                dbc.CardBody(cardbody_cp),
                style={'background-color': site_colors['grey20']},
            ),
            id='uitleg_upload_st1',
        ),
    ]

    uitleg_upload_gcloud = html.Div(
        html.A([
            button('Uitleg upload', 'uitleg_upload_gcloud_button',
                   site_colors['cyan']),
            dbc.Collapse(
                dbc.Card(
                    dbc.CardBody([
                        dbc.Row(
                            html.Div("""
                            Op deze pagina kunnen bronbestanden voor ChangePoint worden geüpload.
                            Deze bestanden worden opgenomen in het dashboard.
                            De data wordt verwerkt door de Operational Datahub en daardoor \
                                zal de dataverwerking een paar minuutjes duren.
                            Na een bevestiging dat de upload is geslaagd kun je deze pagina verlaten.

                            Bij het uploaden worden een aantal kolommen verwacht.
                            Als deze kolommen niet voorkomen in de upload, wordt het bestand niet geaccepteerd.
                            """)),
                        dbc.Row([
                            dbc.Col(html.Div(uitleg_cp)),
                        ])
                    ]),
                    style={'background-color': site_colors['grey20']},
                ),
                id='uitleg_upload_gcloud',
            )
        ]), )

    gcloud_upload = dcc.Upload(
        id='gcloud_upload',
        multiple=True,
        children=html.Div([html.A('Drag and drop or click here.')],
                          style={
                              'textAlign': 'center',
                          }),
        style={
            'width': '90%',
            'padding': '10px',
            'borderWidth': '1px',
            'borderStyle': 'dashed',
            'borderRadius': '5px',
            'textAlign': 'center',
            'margin': '10px',
        },
    )

    upload = html.Div(children=[
        html.Div(id='upload_alert_gloud'),
        html.Div(
            children=[
                html.Br(),
                gcloud_upload,
                html.Br(),
                uitleg_upload_gcloud,
            ],
            style=styles['box'],
        ),
    ], )

    return upload
def get_body():
    # TABBLAD CP
    uitleg_cp = html.Div(
        html.A([
            button('Uitleg {}'.format(SOURCETAG),
                   'uitleg_{}_button'.format(SOURCETAG), site_colors['cyan']),
            dbc.Collapse(
                dbc.Card(
                    dbc.CardBody("""
                        In de bovenstaande lijst kun je alle beschikbare ChangePoint \
                        bouwplannummers van aannemer veranderen.
                        Er zijn drie smaken: Connect-Z Utrecht, Connect-Z Montfoort of Others.
                        Klik op 'veranderen' om de verandering op te slaan.
                        """),
                    style={'background-color': site_colors['grey20']},
                ),
                id="uitleg_{}".format(SOURCETAG),
            )
        ]))

    # Objects
    cp_dropdown1 = dcc.Dropdown(
        id='cp_dropdown1',
        style={
            'width': '90%',
            'margin': '8px'
        },
    )

    choose_cpnr_radio = dbc.FormGroup([
        dbc.Label('{} Nieuwbouw orders:'.format(SOURCETAG)),
        dbc.RadioItems(
            options=[
                {
                    'label': 'alle',
                    'value': 'all'
                },
                {
                    'label': 'zonder contractor',
                    'value': 'empty'
                },
            ],
            value='all',
            id='choose_cpnr',
        ),
    ])

    contractor_dropdown = dcc.Dropdown(
        id='contractor_dropdown',
        style={
            'width': '90%',
            'margin': '8px'
        },
    )

    plaats_invul = dcc.Input(
        id='plaats_invul',
        placeholder='Vul een plaatsnaam in',
        type='text',
        value='',
        style={
            'width': '90%',
            'margin': '8px'
        },
    )

    contractor_button = button('Verander', 'contractor_button',
                               site_colors['indigo'])

    # Returned tab_connect
    tab_cp = html.Div([
        dbc.Row([
            dbc.Col([
                html.Div(
                    [
                        html.P(''),
                        html.H4(
                            'Selecteer een {} bouwplannummer:'.format(
                                SOURCETAG),
                            className='lead',
                        ),
                        cp_dropdown1,
                        choose_cpnr_radio,
                    ],
                    style=styles['box'],
                ),
                html.Div(
                    children=[
                        html.Br(),
                        dbc.Row(
                            [
                                dbc.Col([
                                    html.Div(
                                        html.H5(
                                            'Aannemer:',
                                            className='lead',
                                            style={'textAlign': 'center'},
                                        ), ),
                                    html.Div(contractor_dropdown,
                                             style={'textAlign': 'center'}),
                                    html.Div(
                                        html.H5(
                                            'Plaatsnaam:',
                                            className='lead',
                                            style={'textAlign': 'center'},
                                        ), ),
                                    html.Div(plaats_invul),
                                    html.Div(contractor_button,
                                             style={'textAlign': 'center'}),
                                    html.Div(uitleg_cp,
                                             style={'textAlign': 'center'}),
                                ]),
                            ],
                            style=styles['page'],
                        ),
                    ],
                    style=styles['box'],
                ),
            ],
                    width={
                        "size": 3,
                        "order": 1
                    }),
            dbc.Col(
                [html.Div(id='cp_content', style=styles['table_page'])],
                width={
                    "size": 8,
                    "order": 2
                },
            ),
        ])
    ])

    return tab_cp
def update_problem_table(pr_dropdown_values, category_values, status):
    with Connection('r', 'read overview: update_problem_table') as session:
        overview = read(session, 'projectstructure')

    col_order = ['ln_id', 'bpnr', 'con_opdrachtid', 'categorie',
                 'Projectstructuur constateringen', 'koppeling']
    overview = overview[col_order]
    dataframe = get_problem_table(
        overview, pr_dropdown_values, category_values, status)

    table_data = {
        'columns':
            [{"name": i, "id": i} for i in dataframe.columns],
        'data':
            dataframe.to_dict("rows"),
        }

    table_user = get_table_explain(dataframe),

    counter = [
        dbc.Row(
            [
             dbc.Col(
                html.Div(
                    html.P('''
                        {}/{} combinaties |
                        {}/{} afgerond |
                        {}/{} LNnummers |
                        {}/{} CPnummers |
                        {}/{} Connect Opdrachten
                    '''.format(
                        len(dataframe), len(overview),
                        len(dataframe[dataframe['bewerkingsstatus'].str.startswith('Afgerond')]), len(dataframe),
                        len(set(dataframe['ln_id']) - set([''])), len(set(overview['ln_id']) - set([''])),
                        len(set(dataframe['bpnr']) - set([''])), len(set(overview['bpnr']) - set([''])),
                        len(set(dataframe['con_opdrachtid']) - set([''])),
                        len(set(overview['con_opdrachtid']) - set([''])),
                        ),
                        # className="lead",
                    ),
                    style={
                        'textAlign': 'center',
                        'margin-top': '1.5%',
                    },
                ),
                width={'size': 10, 'order': 1}
             ),
             dbc.Col(
                html.Div(
                    html.A(
                        button("Download", backgroundcolor=site_colors['indigo']),
                        href='/download?type=problem&category={}&problems={}&'.format(
                            '|'.join(category_values),
                            '|'.join(pr_dropdown_values),
                        ),
                    ),
                    style={
                        'textAlign': 'center',
                        },
                ),
                width={'size': 2, 'order': 10}
                ),
            ]
        ),
    ]

    return table_data, table_user, counter