Jacek Kowalski
4 hours ago 6b9278a5d57091fce636dbb640b380cfb990db6c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
<!DOCTYPE html>
<html lang="{{ app.locale }}">
<head>
    <title>{% trans %}general_app_name{% endtrans %} - {% trans %}inventory_page_title{% endtrans %}</title>
    <meta charset="utf-8"/>
    <meta name="viewport" content="width=device-width, initial-scale=1"/>
    <link rel="stylesheet" href="{{ asset('css/spectre/spectre.min.css') }}"/>
    <link rel="stylesheet" href="{{ asset('css/inventory.css') }}"/>
</head>
<body>
<header class="navbar">
    <section class="navbar-section">
        <a href="{{ path('home') }}" class="navbar-brand mr-2">{% trans %}general_app_name{% endtrans %}</a>
        <span class="text-gray">{% trans %}inventory_page_title{% endtrans %}</span>
    </section>
    <section class="navbar-section">
        <span id="connection" class="label label-rounded"></span>
    </section>
</header>
 
<main id="inventory"
      data-books-url="{{ path('inventory_books') }}"
      data-sync-url="{{ path('inventory_sync') }}"
      data-sw-url="{{ path('inventory_service_worker') }}"
      data-scope="{{ path('inventory') }}"
      data-book-url="{{ path('book_show', {id: 0})|replace({'/0': '/{id}'}) }}"
      data-locale="{{ app.locale }}">
 
    <form id="scan-form" class="scan-form" autocomplete="off">
        <div class="input-group">
            <input id="scan-input" class="form-input input-lg" type="text" inputmode="text" autofocus
                   placeholder="{% trans %}inventory_input_placeholder{% endtrans %}"
                   aria-label="{% trans %}inventory_input_placeholder{% endtrans %}"/>
            <button class="btn btn-primary btn-lg input-group-btn">{% trans %}inventory_action_enter{% endtrans %}</button>
        </div>
        <p class="form-input-hint">{% trans %}inventory_input_hint{% endtrans %}</p>
    </form>
 
    <div class="current-location">
        <span class="text-gray">{% trans %}inventory_current_location{% endtrans %}</span>
        <strong id="location">–</strong>
    </div>
 
    <div id="message" class="toast message" hidden></div>
 
    <div class="status columns">
        <div class="column col-6 col-sm-12">
            {% trans %}inventory_books_count{% endtrans %} <strong id="books-count">0</strong>
            <small class="text-gray" id="books-date"></small>
            <button id="refresh" type="button" class="btn btn-sm">{% trans %}inventory_action_refresh{% endtrans %}</button>
        </div>
        <div class="column col-6 col-sm-12">
            {% trans %}inventory_pending_count{% endtrans %} <strong id="pending-count">0</strong>
            <small class="text-gray" id="sync-date"></small>
            <button id="sync" type="button" class="btn btn-sm btn-primary">{% trans %}inventory_action_sync{% endtrans %}</button>
        </div>
    </div>
 
    <h5>{% trans %}inventory_log_title{% endtrans %}</h5>
    <p id="log-empty" class="text-gray">{% trans %}inventory_log_empty{% endtrans %}</p>
    <table class="table table-striped log">
        <tbody id="log"></tbody>
    </table>
    <button id="clear-log" type="button" class="btn btn-link btn-sm" hidden>{% trans %}inventory_action_clear_log{% endtrans %}</button>
</main>
 
<script type="application/json" id="messages">{{ {
    location_set: 'inventory_msg_location_set'|trans,
    no_location: 'inventory_msg_no_location'|trans,
    assigned: 'inventory_msg_assigned'|trans,
    moved: 'inventory_msg_moved'|trans,
    unknown_id: 'inventory_msg_unknown_id'|trans,
    unknown_number: 'inventory_msg_unknown_number'|trans,
    ambiguous_number: 'inventory_msg_ambiguous_number'|trans,
    unrecognized: 'inventory_msg_unrecognized'|trans,
    no_books: 'inventory_msg_no_books'|trans,
    books_loaded: 'inventory_msg_books_loaded'|trans,
    books_failed: 'inventory_msg_books_failed'|trans,
    synced: 'inventory_msg_synced'|trans,
    sync_failed: 'inventory_msg_sync_failed'|trans,
    sync_rejected: 'inventory_msg_sync_rejected'|trans,
    online: 'inventory_online'|trans,
    offline: 'inventory_offline'|trans,
    never: 'inventory_never'|trans,
    status_pending: 'inventory_status_pending'|trans,
    status_saved: 'inventory_status_saved'|trans,
    status_returned: 'inventory_status_returned'|trans,
    will_return: 'inventory_msg_will_return'|trans,
    status_unknown_book: 'inventory_status_unknown_book'|trans,
    status_invalid: 'inventory_status_invalid'|trans,
    remove: 'inventory_action_remove'|trans,
    confirm_clear: 'inventory_confirm_clear'|trans,
}|json_encode(constant('JSON_PRETTY_PRINT') b-or constant('JSON_HEX_TAG') b-or constant('JSON_UNESCAPED_UNICODE'))|raw }}</script>
<script src="{{ asset('js/inventory.js') }}"></script>
</body>
</html>