steveyin commited on
Commit
c01d416
·
verified ·
1 Parent(s): 62f7ef2

Upload 5 files

Browse files
.vidgear/webgear/templates/index.html CHANGED
@@ -34,7 +34,7 @@
34
 
35
  <div class="container mx-auto">
36
  <div class="flex flex-col sm:flex-row flex-grow overflow-hidden">
37
- <aside class="sm:w-1/3 md:w-1/3 lg:w-1/4 w-1/3 flex-shrink flex-grow-0 p-4">
38
  <div class="sticky top-0 p-4 bg-gray-100 rounded-xl w-full">
39
  <ul class="flex sm:flex-col overflow-hidden content-center justify-between">
40
  <li class="py-2 bg-neutral-content hover:bg-indigo-300 rounded inline">
@@ -53,7 +53,7 @@
53
  </aside>
54
 
55
  <main role="main" class="w-full h-full flex-grow p-3 overflow-auto">
56
- <h1 class="text-3xl md:text-5xl mb-4 font-extrabold" id="home">Traffic Monitoring Demo</h1>
57
 
58
  <div class="stats stats-vertical lg:stats-horizontal shadow bg-gray-50 rounded-xl border my-3 w-full">
59
  <div class="stat">
@@ -78,13 +78,13 @@
78
  </div>
79
  </div>
80
 
81
- <div class="flex p-3">
82
  <div class="flex items-center me-4" id="stream-toggle-div">
83
- <label class="ms-2 text-lg font-medium text-gray-900 dark:text-gray-300">Streaming OFF</label>
84
- <input type="checkbox" class="ms-2 toggle toggle-lg toggle-primary" id="stream-toggle" name="stream_switch"
85
  hx-post="/streamswitch" hx-trigger="change" hx-ext="submitjson" hx-target="#stream-status" hx-swap-oob="innerHTML"
86
  />
87
- <label class="ms-2 text-lg font-medium text-gray-900 dark:text-gray-300">ON</label>
88
  <script>
89
  var stream_toggle = document.getElementById('stream-toggle');
90
  stream_toggle.onchange = function() {
@@ -97,7 +97,9 @@
97
  var tracking_status = document.getElementById('tracking-status');
98
  tracking_status.innerHTML = "off"
99
  if (this.checked == true) {
100
- setTimeout(() => {tracking_toggle.disabled = !this.checked}, 2500);
 
 
101
  } else {
102
  tracking_toggle.disabled = !this.checked;
103
  }
@@ -105,22 +107,56 @@
105
  </script>
106
  </div>
107
  <div class="flex items-center me-4" id="tracking-toggle-div">
108
- <label class="ms-2 text-lg font-medium text-gray-900 dark:text-gray-300">Tracking OFF</label>
109
- <input type="checkbox" class="ms-2 toggle toggle-lg toggle-secondary" id="tracking-toggle" name="tracking_switch" disabled
110
  hx-post="/trackingswitch" hx-trigger="change" hx-ext="submitjson" hx-target="#tracking-status" hx-swap-oob="innerHTML"
111
  />
112
- <label class="ms-2 text-lg font-medium text-gray-900 dark:text-gray-300">ON</label>
113
  </div>
114
  </div>
115
 
116
- <div>
117
- <iframe class="w-full h-full aspect-video" src="/video1"> </iframe>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
118
  </div>
 
119
  </main>
120
  </div>
121
  </div>
122
 
123
- <footer class="bg-indigo-800 mt-auto">
124
  <div class="px-4 py-3 text-white mx-auto">
125
  <h1 class="text-2xl hidden sm:block mb-2">Acknowledgement</h1>
126
  <div class="flex">
@@ -137,9 +173,9 @@
137
  <a href="https://tailwindcss.com/" target="_blank" class="text-xs uppercase tracking-wider">Tailwind CSS</a>
138
  <a href="https://htmx.org/" target="_blank" class="text-xs uppercase tracking-wider">HTMX</a>
139
  </div>
140
- </div>
141
- <div class="text-right text-xs py-2">
142
- <a href="">&copy;2024 Fresh Consulting, Inc.</a>
143
  </div>
144
  </div>
145
  </footer>
 
34
 
35
  <div class="container mx-auto">
36
  <div class="flex flex-col sm:flex-row flex-grow overflow-hidden">
37
+ <aside class="w-1/3 sm:w-1/3 md:w-1/3 lg:w-1/4 flex-shrink flex-grow-0 p-4">
38
  <div class="sticky top-0 p-4 bg-gray-100 rounded-xl w-full">
39
  <ul class="flex sm:flex-col overflow-hidden content-center justify-between">
40
  <li class="py-2 bg-neutral-content hover:bg-indigo-300 rounded inline">
 
53
  </aside>
54
 
55
  <main role="main" class="w-full h-full flex-grow p-3 overflow-auto">
56
+ <h1 class="text-2xl md:text-3xl mb-1 font-extrabold" id="home">Traffic Monitoring Demo</h1>
57
 
58
  <div class="stats stats-vertical lg:stats-horizontal shadow bg-gray-50 rounded-xl border my-3 w-full">
59
  <div class="stat">
 
78
  </div>
79
  </div>
80
 
81
+ <div class="flex p-4">
82
  <div class="flex items-center me-4" id="stream-toggle-div">
83
+ <label class="ms-2 text-md font-medium text-gray-900 dark:text-gray-300">Streaming OFF</label>
84
+ <input type="checkbox" class="ms-2 toggle toggle-md toggle-primary" id="stream-toggle" name="stream_switch"
85
  hx-post="/streamswitch" hx-trigger="change" hx-ext="submitjson" hx-target="#stream-status" hx-swap-oob="innerHTML"
86
  />
87
+ <label class="ms-2 text-md font-medium text-gray-900 dark:text-gray-300">ON</label>
88
  <script>
89
  var stream_toggle = document.getElementById('stream-toggle');
90
  stream_toggle.onchange = function() {
 
97
  var tracking_status = document.getElementById('tracking-status');
98
  tracking_status.innerHTML = "off"
99
  if (this.checked == true) {
100
+ setTimeout(() => {
101
+ tracking_toggle.disabled = !this.checked;
102
+ }, 3000);
103
  } else {
104
  tracking_toggle.disabled = !this.checked;
105
  }
 
107
  </script>
108
  </div>
109
  <div class="flex items-center me-4" id="tracking-toggle-div">
110
+ <label class="ms-2 text-md font-medium text-gray-900 dark:text-gray-300">Tracking OFF</label>
111
+ <input type="checkbox" class="ms-2 toggle toggle-md toggle-secondary" id="tracking-toggle" name="tracking_switch" disabled
112
  hx-post="/trackingswitch" hx-trigger="change" hx-ext="submitjson" hx-target="#tracking-status" hx-swap-oob="innerHTML"
113
  />
114
+ <label class="ms-2 text-md font-medium text-gray-900 dark:text-gray-300">ON</label>
115
  </div>
116
  </div>
117
 
118
+ <div class="grid grid-cols-12 gap-2">
119
+ <div class="col-start-1 col-end-10">
120
+ <iframe class="w-full h-full aspect-video" src="/video"> </iframe>
121
+ </div>
122
+ <div class="col-start-10 col-end-13 top-0 bg-gray-100 rounded-xl">
123
+ <ul class="flex sm:flex-col overflow-hidden content-center justify-between">
124
+ <li id="objects" hx-get="/objects" hx-target="this" hx-swap="innerHTML" hx-trigger="load"></li>
125
+ </ul>
126
+ </div>
127
+ </div>
128
+
129
+ <div class="grid grid-cols-12 gap-2">
130
+ <div class="col-start-1 col-end-3">
131
+ <label for="roi-height" class="ms-2 text-sm font-medium text-gray-900 dark:text-gray-300">Set ROI Height</label>
132
+ </div>
133
+ <div class="col-start-3 col-end-9">
134
+ <input type="range" class="transparent h-[4px] w-full cursor-pointer appearance-none border-transparent bg-neutral-200 dark:bg-neutral-600"
135
+ id="roi-height" name="roi_height"
136
+ min="120" max="600" step="120"
137
+ hx-ext="submitjson"
138
+ hx-post="/setroi"
139
+ hx-target="#set-roi-ack"
140
+ hx-swap="innerHTML"
141
+ />
142
+ <ul class="flex justify-between w-full px-[10px]">
143
+ <li class="flex justify-center relative"><span class="absolute">lowest</span></li>
144
+ <li class="flex justify-center relative"><span class="absolute">25%</span></li>
145
+ <li class="flex justify-center relative"><span class="absolute">50%</span></li>
146
+ <li class="flex justify-center relative"><span class="absolute">75%</span></li>
147
+ <li class="flex justify-center relative"><span class="absolute">highest</span></li>
148
+ </ul>
149
+ </div>
150
+ <div class="col-start-10 col-end-13">
151
+ <label id="set-roi-ack" class="text-sm font-semibold text-red-900"></label>
152
+ </div>
153
  </div>
154
+
155
  </main>
156
  </div>
157
  </div>
158
 
159
+ <footer class="bg-indigo-800 mt-auto sticky bottom-0">
160
  <div class="px-4 py-3 text-white mx-auto">
161
  <h1 class="text-2xl hidden sm:block mb-2">Acknowledgement</h1>
162
  <div class="flex">
 
173
  <a href="https://tailwindcss.com/" target="_blank" class="text-xs uppercase tracking-wider">Tailwind CSS</a>
174
  <a href="https://htmx.org/" target="_blank" class="text-xs uppercase tracking-wider">HTMX</a>
175
  </div>
176
+ <div class="text-right text-xs py-2">
177
+ <a href="https://www.freshconsulting.com">&copy;2024 Fresh Consulting, Inc.</a>
178
+ </div>
179
  </div>
180
  </div>
181
  </footer>
.vidgear/webgear/templates/partials/camera_streams.html CHANGED
@@ -29,18 +29,18 @@
29
  <label class="w-full font-semibold text-gray-900 dark:text-white">Or, select a stream:</label>
30
  </div>
31
  <div class="collapse-content">
32
- <form class="form-control" id="select_camera" hx-post="/seturl" hx-ext="submitjson" hx-target="#stream-info">
33
  {% for row in table %}
34
  {% if row.selected == true %}
35
- <li class="w-full border-b border-gray-200 rounded-t-lg dark:border-gray-600 flex items-center ps-3 space-x-2 inline">
36
  <input type="radio" class="w-2 h-2 radio checked:bg-red-500" id={{ row.name }} name="cam_url" value={{ row.value }} checked>
37
- <label for={{ row.name }} class="badge badge-neutral" size='md'> <a href={{ row.value }} target="_blank" rel="noopener noreferrer" class="text-wrap">
38
  {{ row.name }}</a> </label>
39
  </li>
40
  {% else %}
41
- <li class="w-full border-b border-gray-200 rounded-t-lg dark:border-gray-600 flex items-center ps-3 space-x-2 inline">
42
  <input type="radio" class="w-2 h-2 radio checked:bg-red-500" id={{ row.name }} name="cam_url" value={{ row.value }}>
43
- <label for={{ row.name }} class="badge badge-neutral size='md'"> <a href={{ row.value }} target="_blank" rel="noopener noreferrer" class="text-wrap">
44
  {{ row.name }}</a> </label>
45
  </li>
46
  {% endif %}
 
29
  <label class="w-full font-semibold text-gray-900 dark:text-white">Or, select a stream:</label>
30
  </div>
31
  <div class="collapse-content">
32
+ <form class="form-control flex-grow" id="select_camera" hx-post="/seturl" hx-ext="submitjson" hx-target="#stream-info">
33
  {% for row in table %}
34
  {% if row.selected == true %}
35
+ <li class="w-full border-b border-gray-200 rounded-t-lg dark:border-gray-600 flex items-center items-stretch ps-3 space-x-2 inline">
36
  <input type="radio" class="w-2 h-2 radio checked:bg-red-500" id={{ row.name }} name="cam_url" value={{ row.value }} checked>
37
+ <label for={{ row.name }} class="badge badge-neutral flex-grow" size='lg'> <a href={{ row.value }} target="_blank" rel="noopener noreferrer" class="text-wrap text-sm">
38
  {{ row.name }}</a> </label>
39
  </li>
40
  {% else %}
41
+ <li class="w-full border-b border-gray-200 rounded-t-lg dark:border-gray-600 flex items-center items-stretch ps-3 space-x-2 inline">
42
  <input type="radio" class="w-2 h-2 radio checked:bg-red-500" id={{ row.name }} name="cam_url" value={{ row.value }}>
43
+ <label for={{ row.name }} class="badge badge-neutral flex-grow" size='lg'> <a href={{ row.value }} target="_blank" rel="noopener noreferrer" class="text-wrap text-sm">
44
  {{ row.name }}</a> </label>
45
  </li>
46
  {% endif %}
.vidgear/webgear/templates/partials/object_list.html ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div class="p-3" id="object-selection-form">
2
+ <div class="collapse collapse-open bg-base-200">
3
+ <div class="collapse-content">
4
+ <div>
5
+ <form id="object-list-form">
6
+ {% for row in table %}
7
+ {% if row.selected == true %}
8
+ <li class="w-full h-auto border-b border-gray-200 rounded-t-lg dark:border-gray-600 flex items-center ps-3 space-x-2 inline">
9
+ <input type="checkbox" class="w-2 h-2 checkbox" id={{ row.name }} name="object_id" value={{ row.value }} checked>
10
+ <label for={{ row.name }} class="badge badge-neutral flex-grow text-wrap text-sm" size="lg">{{ row.name }}</a> </label>
11
+ </li>
12
+ {% else %}
13
+ <li class="w-full h-auto border-b border-gray-200 rounded-t-lg dark:border-gray-600 flex items-center ps-3 space-x-2 inline">
14
+ <input type="checkbox" class="w-2 h-2 checkbox" id={{ row.name }} name="object_id" value={{ row.value }}>
15
+ <label for={{ row.name }} class="badge badge-neutral flex-grow text-wrap text-sm" size="lg">{{ row.name }}</label>
16
+ </li>
17
+ {% endif %}
18
+ {% endfor %}
19
+ <button class="btn btn-sm btn-block btn-neutral mt-2"
20
+ hx-ext="submitjson"
21
+ hx-post="/selectobjects"
22
+ hx-target="#select-obj-ack"
23
+ hx-swap="innerHTML"
24
+ _="on click toggle @disabled until htmx:afterOnLoad"
25
+ type="submit">Select Object Types</button>
26
+ </form>
27
+ <label id="select-obj-ack" class="font-semibold text-red-900"></label>
28
+ </div>
29
+ </div>
30
+ </div>
31
+ </div>