{% extends "layout.html" %} {% block title %}{{ title }}{% endblock %} {% block precontent %} {% set saveLogic %} e.preventDefault(); const payload = { staff: document.querySelector("input[name='staffCheck']").checked, active: document.querySelector("input[name='activeCheck']").checked, last_name: document.querySelector("input[name='lastName']").value, first_name: document.querySelector("input[name='firstName']").value, title: document.querySelector("input[name='title']").value, supervisor_id: parseInt(document.querySelector("input[name='supervisor']").value) || null, location_id: parseInt(document.querySelector("input[name='location']").value) || null }; try { const id = document.querySelector("#userId").value; const isEdit = id && id !== "None"; const endpoint = isEdit ? `/api/user/${id}` : "/api/user"; const method = isEdit ? "PUT" : "POST"; const response = await fetch(endpoint, { method, headers: { "Content-Type": "application/json" }, body: JSON.stringify(payload) }); const result = await response.json(); if (result.success) { localStorage.setItem("toastMessage", JSON.stringify({ message: isEdit ? "User updated!" : "User created!", type: "success" })); window.location.href = `/user/${result.id}`; } else { Toast.renderToast({ message: `Error: ${result.error}`, type: "danger" }); } } catch (err) { console.error(err); } {% endset %} {% set iconBar %} {% if user.id != None %} {{ buttons.render_button( id = 'org_chart', icon = 'diagram-3', logic = "window.location.href = '" + url_for('main.user_org', id=user.id) + "';", style = 'outline-secondary' ) }} {% endif %}
{% if user.id != None %} {{ buttons.render_button( id = 'new', icon = 'plus-lg', style = 'outline-secondary rounded-start', logic = "window.location.href = '" + url_for('main.new_user') + "';" )}} {% endif %} {{ buttons.render_button( id = 'save', icon = 'floppy', logic = saveLogic, style = 'outline-primary rounded-end' ) }}
{% endset %} {{ toolbars.render_toolbar( id = 'newUser', left = breadcrumb_macro.render_breadcrumb(breadcrumbs=breadcrumbs), right = iconBar ) }} {% if not user.active %}
This user is inactive. You will not be able to make any changes to this record.
{% endif %} {% endblock %} {% block content %}
{{ dropdowns.dynamic_dropdown( id='supervisor', label='Supervisor', current_item=user.supervisor if user.supervisor else None, entry_link='user', enabled=user.active, refresh_url = url_for('ui.list_items', model_name='user'), select_url = url_for('ui.update_item', model_name='user'), record_id = user.id, field_name = 'supervisor_id' ) }}
{{ dropdowns.dynamic_dropdown( id='location', label='Location', current_item=user.location if user.location else None, enabled=user.active, refresh_url = url_for('ui.list_items', model_name='room'), select_url = url_for('ui.update_item', model_name='user'), record_id = user.id, field_name = 'location_id' ) }}
{% if inventory_rows %}
{% set id_list = inventory_rows | map(attribute='id') | list %} {% set inventory_title %} Assets {{ links.export_link( (user.identifier | lower | replace(' ', '_')) + '_user_inventory', 'inventory', {'ids': id_list} ) }} {% endset %}
{{ tables.render_table(headers=inventory_headers, rows=inventory_rows, id='assets', entry_route='inventory_item', title=inventory_title, per_page=8) }}
{% endif %} {% if worklog_rows %} {% set id_list = worklog_rows | map(attribute='id') | list %} {% set worklog_title %} Work Done {{ links.export_link( (user.identifier | lower | replace(' ', '_')) + '_user_worklog', 'worklog', {'ids': id_list} ) }} {% endset %}
{{ tables.render_table(headers=worklog_headers, rows=worklog_rows, id='worklog', entry_route='worklog_entry', title=worklog_title, per_page=8) }}
{% endif %}
{% endblock %}