diff --git a/.gitignore b/.gitignore
index 1dc29ec9b..8c2e3d3d4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -11,3 +11,4 @@ Python/app/handlers/__pycache__/
\.vscode/
backend/settings/
+/.vscode/
diff --git a/.vscode/launch.json b/.vscode/launch.json
deleted file mode 100644
index 92a2fa2e9..000000000
--- a/.vscode/launch.json
+++ /dev/null
@@ -1,70 +0,0 @@
-{
- // Use IntelliSense to learn about possible attributes.
- // Hover to view descriptions of existing attributes.
- // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
- "version": "0.2.0",
- "configurations": [
- {
- "name": "Python: Current File (Integrated Terminal)",
- "type": "python",
- "request": "launch",
- "program": "${file}",
- "console": "integratedTerminal"
- },
- {
- "name": "Python: Remote Attach",
- "type": "python",
- "request": "attach",
- "port": 5678,
- "host": "localhost",
- "pathMappings": [
- {
- "localRoot": "${workspaceFolder}",
- "remoteRoot": "."
- }
- ]
- },
- {
- "name": "Python: Module",
- "type": "python",
- "request": "launch",
- "module": "enter-your-module-name-here",
- "console": "integratedTerminal"
- },
- {
- "name": "Python: Django",
- "type": "python",
- "request": "launch",
- "program": "${workspaceFolder}/manage.py",
- "console": "integratedTerminal",
- "args": [
- "runserver",
- "--noreload",
- "--nothreading"
- ],
- "django": true
- },
- {
- "name": "Python: Flask",
- "type": "python",
- "request": "launch",
- "module": "flask",
- "env": {
- "FLASK_APP": "app.py"
- },
- "args": [
- "run",
- "--no-debugger",
- "--no-reload"
- ],
- "jinja": true
- },
- {
- "name": "Python: Current File (External Terminal)",
- "type": "python",
- "request": "launch",
- "program": "${file}",
- "console": "externalTerminal"
- }
- ]
-}
\ No newline at end of file
diff --git a/backend/Main.py b/backend/Main.py
index 02aa2c372..91ca7f4c4 100644
--- a/backend/Main.py
+++ b/backend/Main.py
@@ -1,4 +1,3 @@
-from datetime import timedelta
from networktables import NetworkTables
import tornado.ioloop
import logging
@@ -7,7 +6,6 @@ from app.classes.SettingsManager import SettingsManager
from tornado.options import options
import threading
import asyncio
-from app.handlers.SocketHandler import send_all_async
from app.handlers.CameraHander import CameraHandler
@@ -18,13 +16,10 @@ def run_server():
print(f"Serving on port {options.port}")
app.listen(options.port)
tornado.ioloop.IOLoop.current().start()
- tornado.ioloop.IOLoop.instance().add_timeout(timedelta(seconds=1),
- send_all_async)
def run():
NetworkTables.startClientTeam(team=settings_manager.general_settings.get("team_number", 1577))
- # NetworkTables.initialize("localhost")
port = 5550
for cam_name in settings_manager.usb_cameras:
CameraHandler(cam_name, port).run()
diff --git a/backend/app/classes/SettingsManager.py b/backend/app/classes/SettingsManager.py
index 75ae2182b..8a64acef2 100644
--- a/backend/app/classes/SettingsManager.py
+++ b/backend/app/classes/SettingsManager.py
@@ -2,9 +2,11 @@ import os
import json
import cv2
import cscore
+import subprocess
from cscore._cscore import VideoMode
from .Singleton import Singleton
from .Exceptions import PipelineAlreadyExistsException, NoCameraConnectedException
+from ..handlers.IPHandler import ChangeIP
class SettingsManager(metaclass=Singleton):
@@ -27,7 +29,7 @@ class SettingsManager(metaclass=Singleton):
"area": [0, 100],
"ratio": [0, 20],
"extent": [0, 100],
- "is_binary": "Normal",
+ "is_binary": 0,
"sort_mode": "Largest",
"target_group": 'Single',
"target_intersection": 'Up',
@@ -39,7 +41,8 @@ class SettingsManager(metaclass=Singleton):
"connection_type": "DHCP",
"ip": "",
"gateway": "",
- "hostname": "",
+ "netmask": "",
+ "hostname": "Chameleon-Vision",
"curr_camera": "",
"curr_pipeline": ""
}
@@ -48,6 +51,9 @@ class SettingsManager(metaclass=Singleton):
self.settings_path = os.path.join(os.getcwd(), "settings")
self.cams_path = os.path.join(self.settings_path, "cams")
self._init_general_settings()
+ ChangeIP(connection_type=self.general_settings['connection_type'], hostname=self.general_settings['hostname'],
+ ip=self.general_settings['ip'],
+ netmask=self.general_settings['netmask'], gateway=self.general_settings['gateway'])
self._init_cameras_info()
self._init_usb_cameras()
self._init_cameras()
@@ -72,13 +78,10 @@ class SettingsManager(metaclass=Singleton):
# Initiate our camera's settings
def _init_cameras(self):
for cam_name in self.usb_cameras_info:
- cam = self.usb_cameras_info[cam_name]
- if os.path.exists(os.path.join(self.cams_path, cam.name + '.json')):
-
- with open(os.path.join(self.cams_path, cam.name + '.json'), 'r') as camera:
+ if os.path.exists(os.path.join(self.cams_path, cam_name + '.json')):
+ with open(os.path.join(self.cams_path, cam_name + '.json'), 'r') as camera:
self.cams[cam_name] = json.load(camera)
-
- if len(self.cams[cam.name]["pipelines"]) == 0:
+ if len(self.cams[cam_name]["pipelines"]) == 0:
self.create_new_pipeline(cam_name=cam_name)
else:
self.create_new_cam(cam_name)
@@ -188,11 +191,12 @@ class SettingsManager(metaclass=Singleton):
def change_general_settings_values(self, dic):
for key in dic['change_general_settings_values']:
- if self.default_general_settings[key]:
+ if key in self.default_general_settings.keys():
self.general_settings[key] = dic['change_general_settings_values'][key]
- self.settings_manager.save_settings()
- #after all values has been set change settings
- self.change_general_settings()
+ self.save_settings()
+ subprocess.call(['reboot'])
+ # after all values has been set change settings
+
# Creators
@@ -255,7 +259,5 @@ class SettingsManager(metaclass=Singleton):
with open(os.path.join(self.settings_path, 'settings.json'), 'w+') as setting_file:
json.dump(self.general_settings, setting_file)
- def change_general_settings(self):
- pass
diff --git a/backend/app/handlers/CameraHander.py b/backend/app/handlers/CameraHander.py
index 8690693f4..1284f6c43 100644
--- a/backend/app/handlers/CameraHander.py
+++ b/backend/app/handlers/CameraHander.py
@@ -37,29 +37,37 @@ class CameraHandler:
pipeline = self.settings_manager.cams[self.cam_name]["pipelines"][self.settings_manager.cams_curr_pipeline[self.cam_name]]
FOV = self.settings_manager.cams[self.cam_name]["FOV"]
- def change_camera_values(pipline):
+ def change_camera_values(pipeline):
self.settings_manager.usb_cameras[self.cam_name].setBrightness(pipeline['brightness'])
self.settings_manager.usb_cameras[self.cam_name].setExposureManual(pipeline['exposure'])
self.settings_manager.usb_cameras[self.cam_name].setWhiteBalanceAuto()
def pipeline_listener(table, key, value, is_new):
asyncio.set_event_loop(asyncio.new_event_loop())
- self.settings_manager.cams_curr_pipeline[self.cam_name] = value
- change_camera_values(pipeline)
- if self.cam_name == self.settings_manager.general_settings['curr_camera']:
- self.settings_manager.general_settings['curr_pipeline'] = value
- update_settings = self.settings_manager.get_curr_pipeline()
- update_settings['curr_pipeline'] = self.settings_manager.general_settings["curr_pipeline"]
- send_all_async(update_settings)
+ if value in self.settings_manager.cams[self.cam_name]['pipelines'].keys():
+ self.settings_manager.cams_curr_pipeline[self.cam_name] = value
+ change_camera_values(pipeline)
+ if self.cam_name == self.settings_manager.general_settings['curr_camera']:
+ self.settings_manager.general_settings['curr_pipeline'] = value
+ update_settings = self.settings_manager.get_curr_pipeline()
+ update_settings['curr_pipeline'] = self.settings_manager.general_settings["curr_pipeline"]
+ send_all_async(update_settings)
+ else:
+ self.table.putString('Pipeline', self.settings_manager.cams_curr_pipeline[self.cam_name])
def mode_listener(table, key, value, is_new):
- change_camera_values({
- 'brightness': 25,
- 'exposure': 15
- })
+ if value:
+ change_camera_values({
+ 'brightness': 25,
+ 'exposure': 15
+ })
+ else:
+ change_camera_values(pipeline)
#setting up network table
self.table = NetworkTables.getTable("/Chameleon-Vision/" + self.cam_name)
+ #init values for pipeline and driver mode
self.table.putString('Pipeline', self.settings_manager.cams_curr_pipeline[self.cam_name])
+ self.table.putBoolean('Driver_Mode', False)
self.table.addEntryListenerEx(pipeline_listener, key="Pipeline",
flags=networktables.NetworkTablesInstance.NotifyFlags.UPDATE)
self.table.addEntryListenerEx(mode_listener, key="Driver_Mode",
@@ -101,8 +109,8 @@ class CameraHandler:
# send the point using network tables
self.table.putNumber('pitch', self.nt_data['pitch'])
self.table.putNumber('yaw', self.nt_data['yaw'])
- self.table.putNumber('fps', self.nt_data['fps'])
- self.table.putNumber('time_stamp', self.time_stamp)
+ self.table.putNumber('time_stamp', self.nt_data['time_stamp'])
+ self.table.putNumber('fps', self.nt_data['fps'])
# if the selected camera in ui is this cam send the point to the ui
except:
pass
@@ -132,11 +140,13 @@ class CameraHandler:
#sending and reciving data from opencv sub process
pipeline = self.settings_manager.cams[self.cam_name]["pipelines"][
self.settings_manager.cams_curr_pipeline[self.cam_name]]
+
socket.send_json(dict(
- pipeline=pipeline
+ pipeline=pipeline,
+ driver_mode= self.table.getBoolean('Driver_Mode', False)
), zmq.SNDMORE)
- socket.send_pyobj(self.image)
+ socket.send_pyobj((self.time_stamp,self.image))
self.p_image = socket.recv_pyobj()
self.nt_data = socket.recv_json()
@@ -174,49 +184,62 @@ class CameraHandler:
while True:
obj = socket.recv_json()
- image = socket.recv_pyobj()
- curr_pipeline = obj["pipeline"]
+ curr_pipeline = obj['pipeline']
+ driver_mode = obj['driver_mode']
+ time_stamp, image = socket.recv_pyobj()
if curr_pipeline['orientation'] == "Inverted":
M = cv2.getRotationMatrix2D((width / 2, height / 2), 180, 1)
image = cv2.warpAffine(image, M, (width, height))
- hsv_image = self.vision_handler._hsv_threshold(curr_pipeline["hue"],
- curr_pipeline["saturation"], curr_pipeline["value"],
- image, curr_pipeline["erode"], curr_pipeline["dilate"])
- # if table.getBoolean("Driver_Mode", False):
- contours = self.vision_handler.find_contours(hsv_image)
- filtered_contours = filter_contours.filter_contours(input_contours=contours, area=curr_pipeline['area'],
- ratio=curr_pipeline['ratio'],
- extent=curr_pipeline['extent'],
- sort_mode=curr_pipeline['sort_mode'], cam_area=cam_area,
- target_grouping=curr_pipeline['target_group'],
- target_intersection=
- curr_pipeline['target_intersection'])
- final_contour = self.vision_handler.output_contour(filtered_contours)
- try:
- center = final_contour[0]
- center_x = (center[1] - curr_pipeline['B']) / curr_pipeline["M"]
- center_y = (center[0] * curr_pipeline["M"]) + curr_pipeline["B"]
- pitch = self.vision_handler.calculate_pitch(pixel_y=center[1], center_y=center_y, v_focal_length=V_FOCAL_LENGTH)
- yaw = self.vision_handler.calculate_yaw(pixel_x=center[0], center_x=center_x, h_focal_length=H_FOCAL_LENGTH)
- valid = True
- except IndexError:
+ if not driver_mode:
+ hsv_image = self.vision_handler._hsv_threshold(curr_pipeline["hue"],
+ curr_pipeline["saturation"], curr_pipeline["value"],
+ image, curr_pipeline["erode"], curr_pipeline["dilate"])
+ # if table.getBoolean("Driver_Mode", False):
+ contours = self.vision_handler.find_contours(hsv_image)
+ filtered_contours = filter_contours.filter_contours(input_contours=contours, area=curr_pipeline['area'],
+ ratio=curr_pipeline['ratio'],
+ extent=curr_pipeline['extent'],
+ sort_mode=curr_pipeline['sort_mode'], cam_area=cam_area,
+ target_grouping=curr_pipeline['target_group'],
+ target_intersection=
+ curr_pipeline['target_intersection'])
+
+ final_contour = self.vision_handler.output_contour(filtered_contours)
+
+ try:
+ center = final_contour[0]
+ center_x = (center[1] - curr_pipeline['B']) / curr_pipeline["M"]
+ center_y = (center[0] * curr_pipeline["M"]) + curr_pipeline["B"]
+ pitch = self.vision_handler.calculate_pitch(pixel_y=center[1], center_y=center_y, v_focal_length=V_FOCAL_LENGTH)
+ yaw = self.vision_handler.calculate_yaw(pixel_x=center[0], center_x=center_x, h_focal_length=H_FOCAL_LENGTH)
+ valid = True
+ except IndexError:
+ center = None
+ pitch = None
+ yaw = None
+ valid = False
+
+ if curr_pipeline['is_binary']:
+ draw_image = hsv_image
+ else:
+ draw_image = image
+
+ res = self.vision_handler.draw_image(input_image=draw_image, contour=final_contour)
+ else:
+ res = image
center = None
pitch = None
yaw = None
valid = False
- if curr_pipeline['is_binary']:
- draw_image = hsv_image
- else:
- draw_image = image
- res = self.vision_handler.draw_image(input_image=draw_image, contour=final_contour)
socket.send_pyobj(res)
socket.send_json(dict(
pitch=pitch,
yaw=yaw,
valid=valid,
raw_point=center,
- fps=fps
+ fps=fps,
+ time_stamp=time_stamp
))
counter += 1
if (time.time() - start_time) > x:
diff --git a/backend/app/handlers/IPHandler.py b/backend/app/handlers/IPHandler.py
new file mode 100644
index 000000000..8d41f111b
--- /dev/null
+++ b/backend/app/handlers/IPHandler.py
@@ -0,0 +1,45 @@
+import subprocess
+import netifaces
+
+
+class ChangeIP:
+ def __init__(self, connection_type, ip, netmask, gateway, hostname):
+
+ adapter = self.find_adapter()
+ self.shutdown_adapter(adapter)
+
+ if connection_type == "DHCP":
+ self.change_to_dhcp(adapter=adapter)
+ elif connection_type == "Static":
+ self.change_to_static(adapter=adapter, ip=ip, netmask=netmask, gateway=gateway)
+
+ self.change_hostname(hostname=hostname)
+ self.start_adapter(adapter)
+
+ @staticmethod
+ def change_to_dhcp(adapter):
+ subprocess.call(['dhclient',"-r", adapter])
+
+ @staticmethod
+ def change_to_static(adapter, ip, netmask, gateway):
+ subprocess.call(['ifconfig', adapter, ip, 'netmask', netmask])
+ subprocess.call(['route', 'add', 'default', 'gw', gateway, adapter])
+
+ @staticmethod
+ def shutdown_adapter(adapter):
+ subprocess.call(['ifconfig', adapter, 'down'])
+ @staticmethod
+ def start_adapter(adapter):
+ subprocess.call(['ifconfig', adapter, 'up'])
+
+ @staticmethod
+ def find_adapter():
+ for i_name in netifaces.interfaces():
+ interface = netifaces.ifaddresses(i_name)[netifaces.AF_INET][0]
+ address = interface['addr'].split('.')[0]
+ if address == "10":
+ return str(i_name)
+
+ @staticmethod
+ def change_hostname(hostname):
+ subprocess.call(['hostnamectl', 'set-hostname', hostname])
diff --git a/backend/app/handlers/SocketHandler.py b/backend/app/handlers/SocketHandler.py
index b6f54d136..df6d48a69 100644
--- a/backend/app/handlers/SocketHandler.py
+++ b/backend/app/handlers/SocketHandler.py
@@ -48,8 +48,8 @@ class ChameleonWebSocket(tornado.websocket.WebSocketHandler):
for key in message_dic:
self.actions.get(key, self.actions["change_pipeline_values"])(message_dic)
print(message)
- except:
- print("crash " + message)
+ except Exception as e:
+ print("crash " + e)
def on_close(self):
self.settings_manager.save_settings()
diff --git a/backend/app/handlers/VisionHandler.py b/backend/app/handlers/VisionHandler.py
index b669c0177..7af59ebb5 100644
--- a/backend/app/handlers/VisionHandler.py
+++ b/backend/app/handlers/VisionHandler.py
@@ -10,17 +10,14 @@ class VisionHandler():
def _hsv_threshold(self, hue: list, saturation: list, value: list, img: numpy.ndarray, is_erode: bool,
is_dilate: bool):
- blur = cv2.blur(img, (3, 3))
- hsv = cv2.cvtColor(blur, cv2.COLOR_BGR2HSV)
- lower = numpy.array([hue[0], saturation[0], value[0]])
- upper = numpy.array([hue[1], saturation[1], value[1]])
- thresh = cv2.inRange(hsv, lower, upper)
+ hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
+ thresh = cv2.inRange(hsv, (hue[0], saturation[0], value[0]), (hue[1], saturation[1], value[1]))
erode_img = cv2.erode(thresh, kernel=self.kernel, iterations=is_erode)
dilate_img = cv2.dilate(erode_img, kernel=self.kernel, iterations=is_dilate)
return dilate_img
def find_contours(self, binary_img: numpy.ndarray):
- _, contours, _ = cv2.findContours(binary_img, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
+ _, contours, _ = cv2.findContours(binary_img, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_TC89_L1)
return contours
class Filter_Contours:
diff --git a/backend/app/site/favicon.ico b/backend/app/site/favicon.ico
index c7b9a43c8..bc877aaad 100644
Binary files a/backend/app/site/favicon.ico and b/backend/app/site/favicon.ico differ
diff --git a/backend/app/site/index.html b/backend/app/site/index.html
index 331ceb380..2a000f9bf 100644
--- a/backend/app/site/index.html
+++ b/backend/app/site/index.html
@@ -1 +1 @@
-
Chameleon Vision We're sorry but Chameleon Vision doesn't work properly without JavaScript enabled. Please enable it to continue.
\ No newline at end of file
+Chameleon Vision We're sorry but Chameleon Vision doesn't work properly without JavaScript enabled. Please enable it to continue.
\ No newline at end of file
diff --git a/backend/app/site/js/app.10bc1021.js b/backend/app/site/js/app.10bc1021.js
new file mode 100644
index 000000000..21f371c2f
--- /dev/null
+++ b/backend/app/site/js/app.10bc1021.js
@@ -0,0 +1,2 @@
+(function(t){function e(e){for(var s,r,o=e[0],l=e[1],u=e[2],p=0,m=[];p\n \n \n {{title.charAt(0).toUpperCase() + title.slice(1)}} : \n \n \n \n {{item}} \n \n \n
\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ch-select.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ch-select.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ch-select.vue?vue&type=template&id=c9ee7642&\"\nimport script from \"./ch-select.vue?vue&type=script&lang=js&\"\nexport * from \"./ch-select.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ch-select.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports"," \n \n
\n \n \n \n \n \n \n \n Vision \n \n Input \n Threshold \n Contours \n Output \n \n \n \n \n Settings \n \n System \n Cameras \n \n \n \n \n \n \n
\n
\n \n\n\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=69465486&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Layout',{attrs:{\"id\":\"main-layout\"}},[_c('Header',{attrs:{\"id\":\"main-header\"}},[_c('Row',{attrs:{\"type\":\"flex\",\"justify\":\"start\",\"align\":\"middle\",\"gutter\":10}},[_c('Col',{attrs:{\"span\":\"12\"}},[_c('chselect',{attrs:{\"title\":\"camera\",\"list\":_vm.cameraList,\"Xkey\":\"curr_camera\"}})],1),_c('Col',{attrs:{\"span\":\"12\"}},[_c('chselect',{attrs:{\"title\":\"pipline\",\"list\":_vm.pipelineList,\"Xkey\":\"curr_pipeline\"}})],1)],1)],1),_c('Content',{attrs:{\"id\":\"main-content\"}},[_c('row',{attrs:{\"type\":\"flex\",\"justify\":\"start\",\"align\":\"top\",\"gutter\":5}},[_c('Col',{attrs:{\"span\":\"12\"}},[_c('router-view')],1),_c('Col',{attrs:{\"span\":\"12\"}},[_c('Tabs',{attrs:{\"animated\":false},on:{\"on-click\":_vm.handleImage},model:{value:(_vm.isBinary),callback:function ($$v) {_vm.isBinary=$$v},expression:\"isBinary\"}},[_c('TabPane',{attrs:{\"label\":\"Normal\"}}),_c('TabPane',{attrs:{\"label\":\"Threshold\"}})],1),_c('img',{staticClass:\"imageSize\",attrs:{\"src\":_vm.steamAdress}}),_c('h4',{staticClass:\"pointText\"},[_vm._v(_vm._s(_vm.point))])],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n \n \n \n \n \n \n \n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n {{point}} \n \n \n
\n \n \n \n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Vision.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Vision.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Vision.vue?vue&type=template&id=2db2bf31&\"\nimport script from \"./Vision.vue?vue&type=script&lang=js&\"\nexport * from \"./Vision.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Vision.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Layout',{attrs:{\"id\":\"main-layout\"}},[_c('Content',{attrs:{\"id\":\"main-content\"}},[_c('router-view')],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n \n \n \n \n \n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Settings.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Settings.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Settings.vue?vue&type=template&id=033196b2&scoped=true&\"\nimport script from \"./Settings.vue?vue&type=script&lang=js&\"\nexport * from \"./Settings.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"033196b2\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"InputTab\"}},[_c('chslider',{staticClass:\"spacing\",attrs:{\"title\":\"exposure\",\"Xkey\":\"exposure\"}}),_c('chslider',{staticClass:\"spacing\",attrs:{\"title\":\"Brightness\",\"Xkey\":\"brightness\"}}),_c('chselect',{staticClass:\"spacing\",attrs:{\"title\":\"Orientation\",\"Xkey\":\"orientation\",\"list\":['Normal','Inverted']}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('row',{attrs:{\"type\":\"flex\",\"justify\":\"start\",\"align\":\"middle\",\"gutter\":1}},[_c('Col',{attrs:{\"span\":\"4\"}},[_c('h4',[_vm._v(_vm._s(_vm.title.charAt(0).toUpperCase() + _vm.title.slice(1))+\" :\")])]),_c('Col',{staticStyle:{\"text-align\":\"left\"},attrs:{\"span\":\"4\"}},[_c('InputNumber',{staticStyle:{\"align-self\":\"flex-start\"},attrs:{\"size\":\"small\"},model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}})],1),_c('Col',{attrs:{\"span\":\"14\"}},[_c('Slider',{on:{\"on-input\":_vm.handleInput},model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n \n \n {{title.charAt(0).toUpperCase() + title.slice(1)}} : \n \n \n \n \n \n \n \n
\n \n\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ch-slider.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ch-slider.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ch-slider.vue?vue&type=template&id=7e5a6bfa&\"\nimport script from \"./ch-slider.vue?vue&type=script&lang=js&\"\nexport * from \"./ch-slider.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ch-slider.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Row',{attrs:{\"type\":\"flex\",\"justify\":\"start\",\"align\":\"middle\",\"gutter\":1}},[_c('Col',{attrs:{\"span\":\"4\"}},[_c('h4',[_vm._v(_vm._s(_vm.title.charAt(0).toUpperCase() + _vm.title.slice(1))+\" :\")])]),_c('Col',{attrs:{\"span\":\"4\"}},[_c('i-select',{attrs:{\"size\":\"small\"},on:{\"on-change\":_vm.handleInput},model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}},_vm._l((_vm.list),function(item,index){return _c('i-option',{key:index,attrs:{\"value\":index}},[_vm._v(_vm._s(item))])}),1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n \n {{title.charAt(0).toUpperCase() + title.slice(1)}} : \n \n \n \n {{item}} \n \n \n
\n \n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ch-IndexSelect.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ch-IndexSelect.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ch-IndexSelect.vue?vue&type=template&id=2c264cc6&\"\nimport script from \"./ch-IndexSelect.vue?vue&type=script&lang=js&\"\nexport * from \"./ch-IndexSelect.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ch-IndexSelect.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n \n \n \n \n
\n \n \n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InputTab.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InputTab.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./InputTab.vue?vue&type=template&id=285b7205&scoped=true&\"\nimport script from \"./InputTab.vue?vue&type=script&lang=js&\"\nexport * from \"./InputTab.vue?vue&type=script&lang=js&\"\nimport style0 from \"./InputTab.vue?vue&type=style&index=0&id=285b7205&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"285b7205\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"Threshold\"}},[_c('chrange',{staticClass:\"spacing\",attrs:{\"title\":\"Hue\",\"Xkey\":\"hue\",\"maximum\":180}}),_c('chrange',{staticClass:\"spacing\",attrs:{\"title\":\"Saturation\",\"Xkey\":\"saturation\",\"maximum\":255}}),_c('chrange',{staticClass:\"spacing\",attrs:{\"title\":\"Value\",\"Xkey\":\"value\",\"maximum\":255}}),_c('chswitch',{staticClass:\"spacing\",attrs:{\"title\":\"Erode\",\"Xkey\":\"erode\"}}),_c('chswitch',{staticClass:\"spacing\",attrs:{\"title\":\"Dilate\",\"Xkey\":\"dilate\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('row',{attrs:{\"type\":\"flex\",\"justify\":\"start\",\"align\":\"middle\",\"gutter\":1}},[_c('Col',{attrs:{\"span\":\"4\"}},[_c('h4',[_vm._v(_vm._s(_vm.title.charAt(0).toUpperCase() + _vm.title.slice(1))+\" :\")])]),_c('Col',{staticStyle:{\"text-align\":\"left\"},attrs:{\"span\":\"4\"}},[_c('InputNumber',{staticStyle:{\"align-self\":\"flex-start\"},attrs:{\"size\":\"small\",\"step\":_vm.steps},model:{value:(_vm.value[0]),callback:function ($$v) {_vm.$set(_vm.value, 0, $$v)},expression:\"value[0]\"}})],1),_c('Col',{attrs:{\"span\":\"10\"}},[_c('Slider',{attrs:{\"range\":\"\",\"step\":_vm.steps,\"max\":_vm.maximum},on:{\"on-input\":_vm.handleInput},model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}})],1),_c('Col',{staticStyle:{\"text-align\":\"right\"},attrs:{\"span\":\"4\"}},[_c('InputNumber',{staticStyle:{\"align-self\":\"flex-end\"},attrs:{\"size\":\"small\",\"step\":_vm.steps,\"max\":_vm.maximum},model:{value:(_vm.value[1]),callback:function ($$v) {_vm.$set(_vm.value, 1, $$v)},expression:\"value[1]\"}})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n \n \n {{title.charAt(0).toUpperCase() + title.slice(1)}} : \n \n \n \n \n \n \n \n \n \n \n
\n \n\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ch-range.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ch-range.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ch-range.vue?vue&type=template&id=a3c890c4&\"\nimport script from \"./ch-range.vue?vue&type=script&lang=js&\"\nexport * from \"./ch-range.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ch-range.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Row',{attrs:{\"type\":\"flex\",\"justify\":\"start\",\"align\":\"middle\",\"gutter\":1}},[_c('Col',{attrs:{\"span\":\"4\"}},[_c('h4',[_vm._v(_vm._s(_vm.title.charAt(0).toUpperCase() + _vm.title.slice(1))+\" :\")])]),_c('Col',{staticStyle:{\"text-align\":\"left\"},attrs:{\"span\":\"4\"}},[_c('i-switch',{staticStyle:{\"align-self\":\"flex-start\"},on:{\"on-change\":_vm.handleInput},model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n \n {{title.charAt(0).toUpperCase() + title.slice(1)}} : \n \n \n \n \n
\n \n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ch-switch.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ch-switch.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ch-switch.vue?vue&type=template&id=182635d8&scoped=true&\"\nimport script from \"./ch-switch.vue?vue&type=script&lang=js&\"\nexport * from \"./ch-switch.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"182635d8\",\n null\n \n)\n\nexport default component.exports","\n \n \n \n \n \n \n
\n \n \n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ThresholdTab.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ThresholdTab.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ThresholdTab.vue?vue&type=template&id=267dfb50&scoped=true&\"\nimport script from \"./ThresholdTab.vue?vue&type=script&lang=js&\"\nexport * from \"./ThresholdTab.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ThresholdTab.vue?vue&type=style&index=0&id=267dfb50&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"267dfb50\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"SystemTab\"}},[_c('div',[_c('row',{attrs:{\"type\":\"flex\",\"justify\":\"start\",\"align\":\"middle\",\"gutter\":10}},[_c('Col',{attrs:{\"span\":\"6\"}},[_c('h4',[_vm._v(\"Team Number:\")])]),_c('col',{attrs:{\"span\":\"4\"}}),_c('InputNumber',{attrs:{\"min\":0,\"size\":\"small\"},model:{value:(_vm.team_number),callback:function ($$v) {_vm.team_number=$$v},expression:\"team_number\"}})],1)],1),_c('Divider',{staticClass:\"divdiv\",attrs:{\"orientation\":\"left\"}},[_vm._v(\"Networking\")]),_c('div',[_c('RadioGroup',{staticStyle:{\"display\":\"flex\"},model:{value:(_vm.connection_type),callback:function ($$v) {_vm.connection_type=$$v},expression:\"connection_type\"}},[_c('Radio',{attrs:{\"label\":\"DHCP\"}}),_c('Radio',{attrs:{\"label\":\"Static\"}})],1),_c('div',{staticClass:\"ipSettings\"},[_c('row',{staticClass:\"spacing\",attrs:{\"type\":\"flex\",\"justify\":\"start\",\"align\":\"middle\"}},[_c('Col',{attrs:{\"span\":\"4\"}},[_c('h4',[_vm._v(\"IP:\")])]),_c('Col',{attrs:{\"span\":\"10\"}},[_c('Input',{attrs:{\"size\":\"small\",\"disabled\":_vm.isConnection},model:{value:(_vm.ip),callback:function ($$v) {_vm.ip=$$v},expression:\"ip\"}})],1)],1),_c('row',{staticClass:\"spacing\",attrs:{\"type\":\"flex\",\"justify\":\"start\",\"align\":\"middle\"}},[_c('Col',{attrs:{\"span\":\"4\"}},[_c('h4',[_vm._v(\"Netmask:\")])]),_c('Col',{attrs:{\"span\":\"10\"}},[_c('Input',{attrs:{\"size\":\"small\",\"disabled\":_vm.isConnection},model:{value:(_vm.netmask),callback:function ($$v) {_vm.netmask=$$v},expression:\"netmask\"}})],1)],1),_c('row',{staticClass:\"spacing\",attrs:{\"type\":\"flex\",\"justify\":\"start\",\"align\":\"middle\"}},[_c('Col',{attrs:{\"span\":\"4\"}},[_c('h4',[_vm._v(\"Gateway:\")])]),_c('Col',{attrs:{\"span\":\"10\"}},[_c('Input',{attrs:{\"size\":\"small\",\"disabled\":_vm.isConnection},model:{value:(_vm.gateway),callback:function ($$v) {_vm.gateway=$$v},expression:\"gateway\"}})],1)],1),_c('row',{staticClass:\"spacing\",attrs:{\"type\":\"flex\",\"justify\":\"start\",\"align\":\"middle\"}},[_c('Col',{attrs:{\"span\":\"4\"}},[_c('h4',[_vm._v(\"Hostname:\")])]),_c('Col',{attrs:{\"span\":\"10\"}},[_c('Input',{attrs:{\"size\":\"small\"},model:{value:(_vm.hostname),callback:function ($$v) {_vm.hostname=$$v},expression:\"hostname\"}},[_c('span',{attrs:{\"slot\":\"prepend\"},slot:\"prepend\"},[_vm._v(\"http://Chameleon-Vision-\")]),_c('span',{attrs:{\"slot\":\"append\"},slot:\"append\"},[_vm._v(\".local\")])])],1)],1)],1),_c('Divider',{staticClass:\"divdiv\",attrs:{\"orientation\":\"left\"}}),_c('row',{staticStyle:{\"margin-top\":\"20px\"},attrs:{\"type\":\"flex\",\"justify\":\"start\",\"align\":\"middle\"}},[_c('Button',{attrs:{\"type\":\"primary\",\"size\":\"small\"},on:{\"click\":_vm.socketSendAll}},[_vm._v(\"Save Changes and Restart\")])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"InputNumber\"}},[_c('row',{attrs:{\"type\":\"flex\",\"justify\":\"start\",\"align\":\"middle\",\"gutter\":10}},[_c('Col',{attrs:{\"span\":\"6\"}},[_c('h4',[_vm._v(_vm._s(_vm.title))])]),_c('col',{attrs:{\"span\":\"4\"}}),_c('InputNumber',{attrs:{\"min\":0,\"size\":\"small\"},on:{\"on-change\":_vm.handleInput},model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n \n \n {{title}} \n \n \n \n \n
\n
\n \n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ch-inputNumber.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ch-inputNumber.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ch-inputNumber.vue?vue&type=template&id=672703df&scoped=true&\"\nimport script from \"./ch-inputNumber.vue?vue&type=script&lang=js&\"\nexport * from \"./ch-inputNumber.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"672703df\",\n null\n \n)\n\nexport default component.exports","\n \n
\n \n \n Team Number: \n \n \n \n \n
\n
\n
Networking \n
\n
\n \n\n \n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SystemTab.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SystemTab.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SystemTab.vue?vue&type=template&id=175c3e50&\"\nimport script from \"./SystemTab.vue?vue&type=script&lang=js&\"\nexport * from \"./SystemTab.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SystemTab.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"spacing\",attrs:{\"id\":\"cameraTab\"}},[_c('chselect',{attrs:{\"title\":\"select camera\",\"list\":_vm.cameraList,\"Xkey\":\"curr_camera\"}}),_c('Row',{staticClass:\"spacing\",attrs:{\"type\":\"flex\",\"justify\":\"start\",\"align\":\"middle\",\"gutter\":1}},[_c('Col',{attrs:{\"span\":\"4\"}},[_c('h4',[_vm._v(\"Resolution:\")])]),_c('Col',{attrs:{\"span\":\"4\"}},[_c('i-select',{attrs:{\"size\":\"small\"},model:{value:(_vm.resolution),callback:function ($$v) {_vm.resolution=$$v},expression:\"resolution\"}},_vm._l((_vm.resolutionList),function(item,index){return _c('i-option',{key:index,attrs:{\"value\":index}},[_vm._v(_vm._s(item))])}),1)],1)],1),_c('Row',{staticClass:\"spacing\",attrs:{\"type\":\"flex\",\"justify\":\"start\",\"align\":\"middle\",\"gutter\":1}},[_c('Col',{attrs:{\"span\":\"4\"}},[_c('h4',[_vm._v(\"Diagonal FOV:\")])]),_c('Col',{attrs:{\"span\":\"4\"}},[_c('InputNumber',{attrs:{\"min\":0,\"size\":\"small\"},model:{value:(_vm.FOV),callback:function ($$v) {_vm.FOV=$$v},expression:\"FOV\"}})],1)],1),_c('Button',{staticClass:\"buttonClass spacing\",attrs:{\"type\":\"primary\",\"size\":\"small\"},on:{\"click\":_vm.socketSendAll}},[_vm._v(\"Save settings to current camera\")]),_c('h4',{staticClass:\"spacing\"},[_vm._v(\"Please Restart the computer Manually after saving all cameras\")])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n \n\n \n \n Resolution: \n \n \n \n {{item}} \n \n \n
\n\n \n \n Diagonal FOV: \n \n \n \n \n
\n \n Save settings to current camera \n
Please Restart the computer Manually after saving all cameras \n \n \n \n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CameraTab.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CameraTab.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CameraTab.vue?vue&type=template&id=4d25b2ea&scoped=true&\"\nimport script from \"./CameraTab.vue?vue&type=script&lang=js&\"\nexport * from \"./CameraTab.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CameraTab.vue?vue&type=style&index=0&id=4d25b2ea&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4d25b2ea\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"ContourTab\"}},[_c('chrange',{staticClass:\"spacing\",attrs:{\"title\":\"Area\",\"Xkey\":\"area\"}}),_c('chrange',{staticClass:\"spacing\",attrs:{\"title\":\"Ratio (W/H)\",\"Xkey\":\"ratio\",\"steps\":0.1}}),_c('chrange',{staticClass:\"spacing\",attrs:{\"title\":\"Extent\",\"Xkey\":\"extent\"}}),_c('chselect',{staticClass:\"spacing\",attrs:{\"title\":\"Target Group\",\"Xkey\":\"target_group\",\"list\":['Single','Dual','Triple','Quadruple','Quintuple']}}),_c('chselect',{staticClass:\"spacing\",attrs:{\"title\":\"Target Intersaction\",\"Xkey\":\"target_intersection\",\"list\":['Up','Down','Left','Right','Parallel'],\"isDisabled\":_vm.isSingle}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n \n \n \n \n \n
\n \n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./contourTab.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./contourTab.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./contourTab.vue?vue&type=template&id=90fe5fa0&scoped=true&\"\nimport script from \"./contourTab.vue?vue&type=script&lang=js&\"\nexport * from \"./contourTab.vue?vue&type=script&lang=js&\"\nimport style0 from \"./contourTab.vue?vue&type=style&index=0&id=90fe5fa0&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"90fe5fa0\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"OutputTab\"}},[_c('chselect',{staticClass:\"spacing\",attrs:{\"title\":\"Sort Mode\",\"Xkey\":\"sort_mode\",\"list\":['Largest','Smallest','Highest','Lowest','Rightmost','Leftmost','Closest']}}),_c('Row',{staticClass:\"spacing\",attrs:{\"type\":\"flex\",\"justify\":\"start\",\"align\":\"middle\",\"gutter\":10}},[_c('col'),_c('Button',{attrs:{\"type\":\"primary\",\"size\":\"small\"},on:{\"click\":_vm.takePointA}},[_vm._v(\"Take Point A\")]),_c('col',{staticStyle:{\"margin-left\":\"10px\"}}),_c('Button',{attrs:{\"type\":\"primary\",\"size\":\"small\"},on:{\"click\":_vm.takePointB}},[_vm._v(\"Take Point B\")])],1),_c('Row',{staticClass:\"spacing\",attrs:{\"type\":\"flex\",\"align\":\"middle\",\"gutter\":10}},[_c('col'),_c('Button',{attrs:{\"type\":\"warning\",\"size\":\"small\"},on:{\"click\":_vm.clearPoints}},[_vm._v(\"Clear All Points\")])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n \n \n \n Take Point A \n \n \n Take Point B \n \n
\n \n \n Clear All Points \n \n
\n
\n \n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./outputTab.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./outputTab.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./outputTab.vue?vue&type=template&id=1abc7610&scoped=true&\"\nimport script from \"./outputTab.vue?vue&type=script&lang=js&\"\nexport * from \"./outputTab.vue?vue&type=script&lang=js&\"\nimport style0 from \"./outputTab.vue?vue&type=style&index=0&id=1abc7610&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1abc7610\",\n null\n \n)\n\nexport default component.exports","import VueRouter from \"vue-router\";\nimport Vision from \"./components/Vision.vue\"\nimport Setting from \"./components/Settings.vue\"\nimport Input from \"./components/InputTab.vue\";\nimport Threshold from \"./components/ThresholdTab.vue\";\nimport System from \"./components/SystemTab.vue\";\nimport Camera from \"./components/CameraTab.vue\";\nimport Contours from \"./components/contourTab.vue\";\nimport Output from './components/outputTab.vue'\n\nconst routes = [\n { path: '/', redirect: '/vision/input'},\n { path: '/vision', component: Vision, children: [\n { path: 'input', component: Input },\n { path: 'threshold', component: Threshold },\n { path: 'contours', component: Contours },\n { path: 'output', component: Output },\n ]},\n { path: '/settings', component: Setting, children: [\n { path: 'system', component: System },\n { path: 'camera', component: Camera }\n ]}\n]\n\nconst router = new VueRouter({\n routes\n})\n\nexport default router;","import Vue from 'vue'\nimport Vuex from 'vuex'\n\nVue.use(Vuex);\nconst set = key => (state,val) =>{\n state[key] = val\n};\nexport const store = new Vuex.Store({\n\n state:{\n //header\n curr_camera:\"\",\n curr_pipeline:\"\",\n cameraList:[],\n pipelineList:[],\n //input\n exposure:54,\n brightness:0,\n orientation:0,\n resolution:0,\n resolutionList:[],\n FOV:0,\n //threshold\n hue:[0,10],\n saturation:[0,10],\n value:[0,10],\n erode: false,\n dilate: false,\n //contours\n area:[0,100],\n ratio:[0,20],\n extent:[0,100],\n sort_mode:'Largest', \n target_group:'Single', \n target_intersection:'Up',\n //Settings\n team_number:0,\n connection_type:\"DHCP\",\n ip:\"\",\n gateway:\"\",\n netmask:\"\",\n hostname:\"\",\n //live info\n port:1181,\n is_binary:0,\n //points\n raw_point:[],\n point:{}\n\n },\n mutations:{\n curr_camera (state,value){\n state['curr_camera'] = value;\n state['pipeline'] = \"0\";\n },\n curr_pipeline: set('curr_pipeline'),\n brightness: set('brightness'),\n exposure: set('exposure'),\n orientation:set('orientation'),\n resolution: set('resolution'),\n hue: set('hue'),\n saturation: set('saturation'),\n value: set('value'),\n erode: set('erode'),\n dilate: set('dilate'),\n area: set('area'),\n ratio: set('ratio'),\n extent: set('extent'),\n team_number: set('team_number'),\n connection_type: set('connection_type'),\n ip: set('ip'),\n netmask: set('netmask'),\n gateway : set('gateway'),\n hostname : set('hostname'),\n is_binary: set('is_binary'),\n cameraList : set('cameraList'),\n pipelineList: set('piplineList'),\n sort_mode: set('sort_mode'),\n target_group:set('target_group'),\n target_intersection:set('target_intersection'),\n FOV:set('FOV'),\n port:set('port'),\n raw_point:set('raw_point'),\n point:set('point')\n },\n getters:{\n curr_camera: state => state.curr_camera,\n curr_pipeline: state => state.curr_pipeline,\n brightness: state => state.brightness,\n exposure: state => state.exposure,\n orientation: state => state.orientation,\n resolution: state => state.resolution,\n hue: state => state.hue,\n saturation: state => state.saturation,\n value: state => state.value,\n erode: state => state.dilate,\n dilate: state => state.dilate,\n area: state =>state.area,\n ratio: state =>state.ratio,\n extent: state =>state.extent,\n team_number: state => state.teamValue,\n connection_type: state => state.connectionType,\n ip: state => state.ip,\n netmask: state => state.netmask,\n gateway: state => state.gateway,\n hostname: state => state.hostName,\n is_binary: state => state.is_binary,\n cameraList: state => state.cameraList,\n pipelineList: state => state.pipelineList,\n sort_mode: state => state.sort_mode,\n target_group: state => state.target_group,\n target_intersection: state => state.target_intersection,\n FOV: state => state.FOV,\n port: state => state.port,\n raw_point:state => state.raw_point,\n point: state => state.point\n\n },\n});","import Vue from 'vue'\nimport App from './App.vue'\nimport VueRouter from 'vue-router'\nimport iView from 'iview';\nimport router from \"./routes\";\nimport '../theme/index.less';\nimport VueNativeSock from 'vue-native-websocket';\nimport locale from 'iview/dist/locale/en-US';\nimport {store} from './store'\n\nVue.use(VueRouter);\nVue.use(iView , { locale });\nVue.use(VueNativeSock,'ws://'+location.hostname+':8888/websocket',{format:'JSON'});\nVue.config.productionTip = false\n\nnew Vue({\n router,\n store,\n render: h => h(App)\n}).$mount('#app')\n","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CameraTab.vue?vue&type=style&index=0&id=4d25b2ea&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CameraTab.vue?vue&type=style&index=0&id=4d25b2ea&scoped=true&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./outputTab.vue?vue&type=style&index=0&id=1abc7610&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./outputTab.vue?vue&type=style&index=0&id=1abc7610&scoped=true&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./contourTab.vue?vue&type=style&index=0&id=90fe5fa0&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./contourTab.vue?vue&type=style&index=0&id=90fe5fa0&scoped=true&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ch-IndexSelect.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ch-IndexSelect.vue?vue&type=style&index=0&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ch-select.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ch-select.vue?vue&type=style&index=0&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ch-slider.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ch-slider.vue?vue&type=style&index=0&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ch-range.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ch-range.vue?vue&type=style&index=0&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ThresholdTab.vue?vue&type=style&index=0&id=267dfb50&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ThresholdTab.vue?vue&type=style&index=0&id=267dfb50&scoped=true&lang=css&\""],"sourceRoot":""}
\ No newline at end of file
diff --git a/backend/app/site/js/app.5bd5cd15.js b/backend/app/site/js/app.5bd5cd15.js
new file mode 100644
index 000000000..7f7ab3c39
--- /dev/null
+++ b/backend/app/site/js/app.5bd5cd15.js
@@ -0,0 +1,2 @@
+(function(t){function e(e){for(var s,r,o=e[0],l=e[1],u=e[2],p=0,m=[];p\n \n \n {{title.charAt(0).toUpperCase() + title.slice(1)}} : \n \n \n \n {{item}} \n \n \n
\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ch-select.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ch-select.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ch-select.vue?vue&type=template&id=c9ee7642&\"\nimport script from \"./ch-select.vue?vue&type=script&lang=js&\"\nexport * from \"./ch-select.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ch-select.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports"," \n \n
\n \n \n \n \n \n \n \n Vision \n \n Input \n Threshold \n Contours \n Output \n \n \n \n \n Settings \n \n System \n Cameras \n \n \n \n \n \n \n
\n
\n \n\n\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=69465486&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Layout',{attrs:{\"id\":\"main-layout\"}},[_c('Header',{attrs:{\"id\":\"main-header\"}},[_c('Row',{attrs:{\"type\":\"flex\",\"justify\":\"start\",\"align\":\"middle\",\"gutter\":10}},[_c('Col',{attrs:{\"span\":\"12\"}},[_c('chselect',{attrs:{\"title\":\"camera\",\"list\":_vm.cameraList,\"Xkey\":\"curr_camera\"}})],1),_c('Col',{attrs:{\"span\":\"12\"}},[_c('chselect',{attrs:{\"title\":\"pipline\",\"list\":_vm.pipelineList,\"Xkey\":\"curr_pipeline\"}})],1)],1)],1),_c('Content',{attrs:{\"id\":\"main-content\"}},[_c('row',{attrs:{\"type\":\"flex\",\"justify\":\"start\",\"align\":\"top\",\"gutter\":5}},[_c('Col',{attrs:{\"span\":\"12\"}},[_c('router-view')],1),_c('Col',{attrs:{\"span\":\"12\"}},[_c('Tabs',{attrs:{\"animated\":false},on:{\"on-click\":_vm.handleImage},model:{value:(_vm.isBinary),callback:function ($$v) {_vm.isBinary=$$v},expression:\"isBinary\"}},[_c('TabPane',{attrs:{\"label\":\"Normal\"}}),_c('TabPane',{attrs:{\"label\":\"Threshold\"}})],1),_c('img',{staticClass:\"imageSize\",attrs:{\"src\":_vm.steamAdress}}),_c('h4',{staticClass:\"pointText\"},[_vm._v(_vm._s(_vm.point))])],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n \n \n \n \n \n \n \n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n {{point}} \n \n \n
\n \n \n \n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Vision.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Vision.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Vision.vue?vue&type=template&id=2db2bf31&\"\nimport script from \"./Vision.vue?vue&type=script&lang=js&\"\nexport * from \"./Vision.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Vision.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Layout',{attrs:{\"id\":\"main-layout\"}},[_c('Content',{attrs:{\"id\":\"main-content\"}},[_c('router-view')],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n \n \n \n \n \n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Settings.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Settings.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Settings.vue?vue&type=template&id=033196b2&scoped=true&\"\nimport script from \"./Settings.vue?vue&type=script&lang=js&\"\nexport * from \"./Settings.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"033196b2\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"InputTab\"}},[_c('chslider',{staticClass:\"spacing\",attrs:{\"title\":\"exposure\",\"Xkey\":\"exposure\"}}),_c('chslider',{staticClass:\"spacing\",attrs:{\"title\":\"Brightness\",\"Xkey\":\"brightness\"}}),_c('chselect',{staticClass:\"spacing\",attrs:{\"title\":\"Orientation\",\"Xkey\":\"orientation\",\"list\":['Normal','Inverted']}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('row',{attrs:{\"type\":\"flex\",\"justify\":\"start\",\"align\":\"middle\",\"gutter\":1}},[_c('Col',{attrs:{\"span\":\"4\"}},[_c('h4',[_vm._v(_vm._s(_vm.title.charAt(0).toUpperCase() + _vm.title.slice(1))+\" :\")])]),_c('Col',{staticStyle:{\"text-align\":\"left\"},attrs:{\"span\":\"4\"}},[_c('InputNumber',{staticStyle:{\"align-self\":\"flex-start\"},attrs:{\"size\":\"small\"},model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}})],1),_c('Col',{attrs:{\"span\":\"14\"}},[_c('Slider',{on:{\"on-input\":_vm.handleInput},model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n \n \n {{title.charAt(0).toUpperCase() + title.slice(1)}} : \n \n \n \n \n \n \n \n
\n \n\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ch-slider.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ch-slider.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ch-slider.vue?vue&type=template&id=7e5a6bfa&\"\nimport script from \"./ch-slider.vue?vue&type=script&lang=js&\"\nexport * from \"./ch-slider.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ch-slider.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Row',{attrs:{\"type\":\"flex\",\"justify\":\"start\",\"align\":\"middle\",\"gutter\":1}},[_c('Col',{attrs:{\"span\":\"4\"}},[_c('h4',[_vm._v(_vm._s(_vm.title.charAt(0).toUpperCase() + _vm.title.slice(1))+\" :\")])]),_c('Col',{attrs:{\"span\":\"4\"}},[_c('i-select',{attrs:{\"size\":\"small\"},on:{\"on-change\":_vm.handleInput},model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}},_vm._l((_vm.list),function(item,index){return _c('i-option',{key:index,attrs:{\"value\":index}},[_vm._v(_vm._s(item))])}),1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n \n {{title.charAt(0).toUpperCase() + title.slice(1)}} : \n \n \n \n {{item}} \n \n \n
\n \n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ch-IndexSelect.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ch-IndexSelect.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ch-IndexSelect.vue?vue&type=template&id=2c264cc6&\"\nimport script from \"./ch-IndexSelect.vue?vue&type=script&lang=js&\"\nexport * from \"./ch-IndexSelect.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ch-IndexSelect.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n \n \n \n \n
\n \n \n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InputTab.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InputTab.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./InputTab.vue?vue&type=template&id=285b7205&scoped=true&\"\nimport script from \"./InputTab.vue?vue&type=script&lang=js&\"\nexport * from \"./InputTab.vue?vue&type=script&lang=js&\"\nimport style0 from \"./InputTab.vue?vue&type=style&index=0&id=285b7205&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"285b7205\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"Threshold\"}},[_c('chrange',{staticClass:\"spacing\",attrs:{\"title\":\"Hue\",\"Xkey\":\"hue\",\"maximum\":180}}),_c('chrange',{staticClass:\"spacing\",attrs:{\"title\":\"Saturation\",\"Xkey\":\"saturation\",\"maximum\":255}}),_c('chrange',{staticClass:\"spacing\",attrs:{\"title\":\"Value\",\"Xkey\":\"value\",\"maximum\":255}}),_c('chswitch',{staticClass:\"spacing\",attrs:{\"title\":\"Erode\",\"Xkey\":\"erode\"}}),_c('chswitch',{staticClass:\"spacing\",attrs:{\"title\":\"Dilate\",\"Xkey\":\"dilate\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('row',{attrs:{\"type\":\"flex\",\"justify\":\"start\",\"align\":\"middle\",\"gutter\":1}},[_c('Col',{attrs:{\"span\":\"4\"}},[_c('h4',[_vm._v(_vm._s(_vm.title.charAt(0).toUpperCase() + _vm.title.slice(1))+\" :\")])]),_c('Col',{staticStyle:{\"text-align\":\"left\"},attrs:{\"span\":\"4\"}},[_c('InputNumber',{staticStyle:{\"align-self\":\"flex-start\"},attrs:{\"size\":\"small\",\"step\":_vm.steps},model:{value:(_vm.value[0]),callback:function ($$v) {_vm.$set(_vm.value, 0, $$v)},expression:\"value[0]\"}})],1),_c('Col',{attrs:{\"span\":\"10\"}},[_c('Slider',{attrs:{\"range\":\"\",\"step\":_vm.steps,\"max\":_vm.maximum},on:{\"on-input\":_vm.handleInput},model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}})],1),_c('Col',{staticStyle:{\"text-align\":\"right\"},attrs:{\"span\":\"4\"}},[_c('InputNumber',{staticStyle:{\"align-self\":\"flex-end\"},attrs:{\"size\":\"small\",\"step\":_vm.steps,\"max\":_vm.maximum},model:{value:(_vm.value[1]),callback:function ($$v) {_vm.$set(_vm.value, 1, $$v)},expression:\"value[1]\"}})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n \n \n {{title.charAt(0).toUpperCase() + title.slice(1)}} : \n \n \n \n \n \n \n \n \n \n \n
\n \n\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ch-range.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ch-range.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ch-range.vue?vue&type=template&id=a3c890c4&\"\nimport script from \"./ch-range.vue?vue&type=script&lang=js&\"\nexport * from \"./ch-range.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ch-range.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Row',{attrs:{\"type\":\"flex\",\"justify\":\"start\",\"align\":\"middle\",\"gutter\":1}},[_c('Col',{attrs:{\"span\":\"4\"}},[_c('h4',[_vm._v(_vm._s(_vm.title.charAt(0).toUpperCase() + _vm.title.slice(1))+\" :\")])]),_c('Col',{staticStyle:{\"text-align\":\"left\"},attrs:{\"span\":\"4\"}},[_c('i-switch',{staticStyle:{\"align-self\":\"flex-start\"},on:{\"on-change\":_vm.handleInput},model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n \n {{title.charAt(0).toUpperCase() + title.slice(1)}} : \n \n \n \n \n
\n \n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ch-switch.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ch-switch.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ch-switch.vue?vue&type=template&id=182635d8&scoped=true&\"\nimport script from \"./ch-switch.vue?vue&type=script&lang=js&\"\nexport * from \"./ch-switch.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"182635d8\",\n null\n \n)\n\nexport default component.exports","\n \n \n \n \n \n \n
\n \n \n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ThresholdTab.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ThresholdTab.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ThresholdTab.vue?vue&type=template&id=267dfb50&scoped=true&\"\nimport script from \"./ThresholdTab.vue?vue&type=script&lang=js&\"\nexport * from \"./ThresholdTab.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ThresholdTab.vue?vue&type=style&index=0&id=267dfb50&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"267dfb50\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"SystemTab\"}},[_c('div',[_c('row',{attrs:{\"type\":\"flex\",\"justify\":\"start\",\"align\":\"middle\",\"gutter\":10}},[_c('Col',{attrs:{\"span\":\"6\"}},[_c('h4',[_vm._v(\"Team Number:\")])]),_c('col',{attrs:{\"span\":\"4\"}}),_c('InputNumber',{attrs:{\"min\":0,\"size\":\"small\"},model:{value:(_vm.team_number),callback:function ($$v) {_vm.team_number=$$v},expression:\"team_number\"}})],1)],1),_c('Divider',{staticClass:\"divdiv\",attrs:{\"orientation\":\"left\"}},[_vm._v(\"Networking\")]),_c('div',[_c('RadioGroup',{staticStyle:{\"display\":\"flex\"},model:{value:(_vm.connection_type),callback:function ($$v) {_vm.connection_type=$$v},expression:\"connection_type\"}},[_c('Radio',{attrs:{\"label\":\"DHCP\"}}),_c('Radio',{attrs:{\"label\":\"Static\"}})],1),_c('div',{staticClass:\"ipSettings\"},[_c('row',{staticClass:\"spacing\",attrs:{\"type\":\"flex\",\"justify\":\"start\",\"align\":\"middle\"}},[_c('Col',{attrs:{\"span\":\"4\"}},[_c('h4',[_vm._v(\"IP:\")])]),_c('Col',{attrs:{\"span\":\"10\"}},[_c('Input',{attrs:{\"size\":\"small\",\"disabled\":_vm.isConnection},model:{value:(_vm.ip),callback:function ($$v) {_vm.ip=$$v},expression:\"ip\"}})],1)],1),_c('row',{staticClass:\"spacing\",attrs:{\"type\":\"flex\",\"justify\":\"start\",\"align\":\"middle\"}},[_c('Col',{attrs:{\"span\":\"4\"}},[_c('h4',[_vm._v(\"Netmask:\")])]),_c('Col',{attrs:{\"span\":\"10\"}},[_c('Input',{attrs:{\"size\":\"small\",\"disabled\":_vm.isConnection},model:{value:(_vm.netmask),callback:function ($$v) {_vm.netmask=$$v},expression:\"netmask\"}})],1)],1),_c('row',{staticClass:\"spacing\",attrs:{\"type\":\"flex\",\"justify\":\"start\",\"align\":\"middle\"}},[_c('Col',{attrs:{\"span\":\"4\"}},[_c('h4',[_vm._v(\"Gateway:\")])]),_c('Col',{attrs:{\"span\":\"10\"}},[_c('Input',{attrs:{\"size\":\"small\",\"disabled\":_vm.isConnection},model:{value:(_vm.gateway),callback:function ($$v) {_vm.gateway=$$v},expression:\"gateway\"}})],1)],1),_c('row',{staticClass:\"spacing\",attrs:{\"type\":\"flex\",\"justify\":\"start\",\"align\":\"middle\"}},[_c('Col',{attrs:{\"span\":\"4\"}},[_c('h4',[_vm._v(\"Hostname:\")])]),_c('Col',{attrs:{\"span\":\"10\"}},[_c('Input',{attrs:{\"size\":\"small\"},model:{value:(_vm.hostname),callback:function ($$v) {_vm.hostname=$$v},expression:\"hostname\"}},[_c('span',{attrs:{\"slot\":\"prepend\"},slot:\"prepend\"},[_vm._v(\"http://Chameleon-Vision-\")]),_c('span',{attrs:{\"slot\":\"append\"},slot:\"append\"},[_vm._v(\".local\")])])],1)],1)],1),_c('Divider',{staticClass:\"divdiv\",attrs:{\"orientation\":\"left\"}}),_c('row',{staticStyle:{\"margin-top\":\"20px\"},attrs:{\"type\":\"flex\",\"justify\":\"start\",\"align\":\"middle\"}},[_c('Button',{attrs:{\"type\":\"primary\",\"size\":\"small\"},on:{\"click\":_vm.socketSendAll}},[_vm._v(\"Save Changes and Restart\")])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"InputNumber\"}},[_c('row',{attrs:{\"type\":\"flex\",\"justify\":\"start\",\"align\":\"middle\",\"gutter\":10}},[_c('Col',{attrs:{\"span\":\"6\"}},[_c('h4',[_vm._v(_vm._s(_vm.title))])]),_c('col',{attrs:{\"span\":\"4\"}}),_c('InputNumber',{attrs:{\"min\":0,\"size\":\"small\"},on:{\"on-change\":_vm.handleInput},model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n \n \n {{title}} \n \n \n \n \n
\n
\n \n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ch-inputNumber.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ch-inputNumber.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ch-inputNumber.vue?vue&type=template&id=672703df&scoped=true&\"\nimport script from \"./ch-inputNumber.vue?vue&type=script&lang=js&\"\nexport * from \"./ch-inputNumber.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"672703df\",\n null\n \n)\n\nexport default component.exports","\n \n
\n \n \n Team Number: \n \n \n \n \n
\n
\n
Networking \n
\n
\n \n\n \n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SystemTab.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SystemTab.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SystemTab.vue?vue&type=template&id=25a6e22e&\"\nimport script from \"./SystemTab.vue?vue&type=script&lang=js&\"\nexport * from \"./SystemTab.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SystemTab.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"spacing\",attrs:{\"id\":\"cameraTab\"}},[_c('chselect',{attrs:{\"title\":\"select camera\",\"list\":_vm.cameraList,\"Xkey\":\"curr_camera\"}}),_c('Row',{staticClass:\"spacing\",attrs:{\"type\":\"flex\",\"justify\":\"start\",\"align\":\"middle\",\"gutter\":1}},[_c('Col',{attrs:{\"span\":\"4\"}},[_c('h4',[_vm._v(\"Resolution:\")])]),_c('Col',{attrs:{\"span\":\"4\"}},[_c('i-select',{attrs:{\"size\":\"small\"},model:{value:(_vm.resolution),callback:function ($$v) {_vm.resolution=$$v},expression:\"resolution\"}},_vm._l((_vm.resolutionList),function(item,index){return _c('i-option',{key:index,attrs:{\"value\":index}},[_vm._v(_vm._s(item))])}),1)],1)],1),_c('Row',{staticClass:\"spacing\",attrs:{\"type\":\"flex\",\"justify\":\"start\",\"align\":\"middle\",\"gutter\":1}},[_c('Col',{attrs:{\"span\":\"4\"}},[_c('h4',[_vm._v(\"Diagonal FOV:\")])]),_c('Col',{attrs:{\"span\":\"4\"}},[_c('InputNumber',{attrs:{\"min\":0,\"size\":\"small\"},model:{value:(_vm.FOV),callback:function ($$v) {_vm.FOV=$$v},expression:\"FOV\"}})],1)],1),_c('Button',{staticClass:\"buttonClass spacing\",attrs:{\"type\":\"primary\",\"size\":\"small\"},on:{\"click\":_vm.socketSendAll}},[_vm._v(\"Save settings to current camera\")]),_c('h4',{staticClass:\"spacing\"},[_vm._v(\"Please Restart the computer Manually after saving all cameras\")])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n \n\n \n \n Resolution: \n \n \n \n {{item}} \n \n \n
\n\n \n \n Diagonal FOV: \n \n \n \n \n
\n \n Save settings to current camera \n
Please Restart the computer Manually after saving all cameras \n \n \n \n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CameraTab.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CameraTab.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CameraTab.vue?vue&type=template&id=4d25b2ea&scoped=true&\"\nimport script from \"./CameraTab.vue?vue&type=script&lang=js&\"\nexport * from \"./CameraTab.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CameraTab.vue?vue&type=style&index=0&id=4d25b2ea&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4d25b2ea\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"ContourTab\"}},[_c('chrange',{staticClass:\"spacing\",attrs:{\"title\":\"Area\",\"Xkey\":\"area\"}}),_c('chrange',{staticClass:\"spacing\",attrs:{\"title\":\"Ratio (W/H)\",\"Xkey\":\"ratio\",\"steps\":0.1}}),_c('chrange',{staticClass:\"spacing\",attrs:{\"title\":\"Extent\",\"Xkey\":\"extent\"}}),_c('chselect',{staticClass:\"spacing\",attrs:{\"title\":\"Target Group\",\"Xkey\":\"target_group\",\"list\":['Single','Dual','Triple','Quadruple','Quintuple']}}),_c('chselect',{staticClass:\"spacing\",attrs:{\"title\":\"Target Intersaction\",\"Xkey\":\"target_intersection\",\"list\":['Up','Down','Left','Right','Parallel'],\"isDisabled\":_vm.isSingle}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n \n \n \n \n \n
\n \n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./contourTab.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./contourTab.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./contourTab.vue?vue&type=template&id=90fe5fa0&scoped=true&\"\nimport script from \"./contourTab.vue?vue&type=script&lang=js&\"\nexport * from \"./contourTab.vue?vue&type=script&lang=js&\"\nimport style0 from \"./contourTab.vue?vue&type=style&index=0&id=90fe5fa0&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"90fe5fa0\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"OutputTab\"}},[_c('chselect',{staticClass:\"spacing\",attrs:{\"title\":\"Sort Mode\",\"Xkey\":\"sort_mode\",\"list\":['Largest','Smallest','Highest','Lowest','Rightmost','Leftmost','Closest']}}),_c('Row',{staticClass:\"spacing\",attrs:{\"type\":\"flex\",\"justify\":\"start\",\"align\":\"middle\",\"gutter\":10}},[_c('col'),_c('Button',{attrs:{\"type\":\"primary\",\"size\":\"small\"},on:{\"click\":_vm.takePointA}},[_vm._v(\"Take Point A\")]),_c('col',{staticStyle:{\"margin-left\":\"10px\"}}),_c('Button',{attrs:{\"type\":\"primary\",\"size\":\"small\"},on:{\"click\":_vm.takePointB}},[_vm._v(\"Take Point B\")])],1),_c('Row',{staticClass:\"spacing\",attrs:{\"type\":\"flex\",\"align\":\"middle\",\"gutter\":10}},[_c('col'),_c('Button',{attrs:{\"type\":\"warning\",\"size\":\"small\"},on:{\"click\":_vm.clearPoints}},[_vm._v(\"Clear All Points\")])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n \n \n \n Take Point A \n \n \n Take Point B \n \n
\n \n \n Clear All Points \n \n
\n
\n \n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./outputTab.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./outputTab.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./outputTab.vue?vue&type=template&id=1abc7610&scoped=true&\"\nimport script from \"./outputTab.vue?vue&type=script&lang=js&\"\nexport * from \"./outputTab.vue?vue&type=script&lang=js&\"\nimport style0 from \"./outputTab.vue?vue&type=style&index=0&id=1abc7610&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1abc7610\",\n null\n \n)\n\nexport default component.exports","import VueRouter from \"vue-router\";\nimport Vision from \"./components/Vision.vue\"\nimport Setting from \"./components/Settings.vue\"\nimport Input from \"./components/InputTab.vue\";\nimport Threshold from \"./components/ThresholdTab.vue\";\nimport System from \"./components/SystemTab.vue\";\nimport Camera from \"./components/CameraTab.vue\";\nimport Contours from \"./components/contourTab.vue\";\nimport Output from './components/outputTab.vue'\n\nconst routes = [\n { path: '/', redirect: '/vision/input'},\n { path: '/vision', component: Vision, children: [\n { path: 'input', component: Input },\n { path: 'threshold', component: Threshold },\n { path: 'contours', component: Contours },\n { path: 'output', component: Output },\n ]},\n { path: '/settings', component: Setting, children: [\n { path: 'system', component: System },\n { path: 'camera', component: Camera }\n ]}\n]\n\nconst router = new VueRouter({\n routes\n})\n\nexport default router;","import Vue from 'vue'\nimport Vuex from 'vuex'\n\nVue.use(Vuex);\nconst set = key => (state,val) =>{\n state[key] = val\n};\nexport const store = new Vuex.Store({\n\n state:{\n //header\n curr_camera:\"\",\n curr_pipeline:\"\",\n cameraList:[],\n pipelineList:[],\n //input\n exposure:54,\n brightness:0,\n orientation:0,\n resolution:0,\n resolutionList:[],\n FOV:0,\n //threshold\n hue:[0,10],\n saturation:[0,10],\n value:[0,10],\n erode: false,\n dilate: false,\n //contours\n area:[0,100],\n ratio:[0,20],\n extent:[0,100],\n sort_mode:'Largest', \n target_group:'Single', \n target_intersection:'Up',\n //Settings\n team_number:0,\n connection_type:\"DHCP\",\n ip:\"\",\n gateWay:\"\",\n netmask:\"\",\n hostname:\"\",\n //live info\n port:1181,\n is_binary:0,\n //points\n raw_point:[],\n point:{}\n\n },\n mutations:{\n curr_camera (state,value){\n state['curr_camera'] = value;\n state['pipeline'] = \"0\";\n },\n curr_pipeline: set('curr_pipeline'),\n brightness: set('brightness'),\n exposure: set('exposure'),\n orientation:set('orientation'),\n resolution: set('resolution'),\n hue: set('hue'),\n saturation: set('saturation'),\n value: set('value'),\n erode: set('erode'),\n dilate: set('dilate'),\n area: set('area'),\n ratio: set('ratio'),\n extent: set('extent'),\n team_number: set('team_number'),\n connection_type: set('connection_type'),\n ip: set('ip'),\n netmask: set('netmask'),\n gateWay : set('gateway'),\n hostname : set('hostname'),\n is_binary: set('is_binary'),\n cameraList : set('cameraList'),\n pipelineList: set('piplineList'),\n sort_mode: set('sort_mode'),\n target_group:set('target_group'),\n target_intersection:set('target_intersection'),\n FOV:set('FOV'),\n port:set('port'),\n raw_point:set('raw_point'),\n point:set('point')\n },\n getters:{\n curr_camera: state => state.curr_camera,\n curr_pipeline: state => state.curr_pipeline,\n brightness: state => state.brightness,\n exposure: state => state.exposure,\n orientation: state => state.orientation,\n resolution: state => state.resolution,\n hue: state => state.hue,\n saturation: state => state.saturation,\n value: state => state.value,\n erode: state => state.dilate,\n dilate: state => state.dilate,\n area: state =>state.area,\n ratio: state =>state.ratio,\n extent: state =>state.extent,\n team_number: state => state.teamValue,\n connection_type: state => state.connectionType,\n ip: state => state.ip,\n netmask: state => state.netmask,\n gateWay: state => state.gateWay,\n hostname: state => state.hostName,\n is_binary: state => state.is_binary,\n cameraList: state => state.cameraList,\n pipelineList: state => state.pipelineList,\n sort_mode: state => state.sort_mode,\n target_group: state => state.target_group,\n target_intersection: state => state.target_intersection,\n FOV: state => state.FOV,\n port: state => state.port,\n raw_point:state => state.raw_point,\n point: state => state.point\n\n },\n});","import Vue from 'vue'\nimport App from './App.vue'\nimport VueRouter from 'vue-router'\nimport iView from 'iview';\nimport router from \"./routes\";\nimport '../theme/index.less';\nimport VueNativeSock from 'vue-native-websocket';\nimport locale from 'iview/dist/locale/en-US';\nimport {store} from './store'\n\nVue.use(VueRouter);\nVue.use(iView , { locale });\nVue.use(VueNativeSock,'ws://'+location.hostname+':8888/websocket',{format:'JSON'});\nVue.config.productionTip = false\n\nnew Vue({\n router,\n store,\n render: h => h(App)\n}).$mount('#app')\n","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CameraTab.vue?vue&type=style&index=0&id=4d25b2ea&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CameraTab.vue?vue&type=style&index=0&id=4d25b2ea&scoped=true&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./outputTab.vue?vue&type=style&index=0&id=1abc7610&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./outputTab.vue?vue&type=style&index=0&id=1abc7610&scoped=true&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./contourTab.vue?vue&type=style&index=0&id=90fe5fa0&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./contourTab.vue?vue&type=style&index=0&id=90fe5fa0&scoped=true&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ch-IndexSelect.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ch-IndexSelect.vue?vue&type=style&index=0&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ch-select.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ch-select.vue?vue&type=style&index=0&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ch-slider.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ch-slider.vue?vue&type=style&index=0&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ch-range.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ch-range.vue?vue&type=style&index=0&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ThresholdTab.vue?vue&type=style&index=0&id=267dfb50&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ThresholdTab.vue?vue&type=style&index=0&id=267dfb50&scoped=true&lang=css&\""],"sourceRoot":""}
\ No newline at end of file
diff --git a/backend/app/site/js/app.894d02a9.js b/backend/app/site/js/app.894d02a9.js
new file mode 100644
index 000000000..bb58211ac
--- /dev/null
+++ b/backend/app/site/js/app.894d02a9.js
@@ -0,0 +1,2 @@
+(function(t){function e(e){for(var s,r,o=e[0],l=e[1],u=e[2],p=0,m=[];p\n \n \n {{title.charAt(0).toUpperCase() + title.slice(1)}} : \n \n \n \n {{item}} \n \n \n
\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ch-select.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ch-select.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ch-select.vue?vue&type=template&id=c9ee7642&\"\nimport script from \"./ch-select.vue?vue&type=script&lang=js&\"\nexport * from \"./ch-select.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ch-select.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports"," \n \n
\n \n \n \n \n \n \n \n Vision \n \n Input \n Threshold \n Contours \n Output \n \n \n \n \n Settings \n \n System \n Cameras \n \n \n \n \n \n \n
\n
\n \n\n\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=69465486&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Layout',{attrs:{\"id\":\"main-layout\"}},[_c('Header',{attrs:{\"id\":\"main-header\"}},[_c('Row',{attrs:{\"type\":\"flex\",\"justify\":\"start\",\"align\":\"middle\",\"gutter\":10}},[_c('Col',{attrs:{\"span\":\"12\"}},[_c('chselect',{attrs:{\"title\":\"camera\",\"list\":_vm.cameraList,\"Xkey\":\"curr_camera\"}})],1),_c('Col',{attrs:{\"span\":\"12\"}},[_c('chselect',{attrs:{\"title\":\"pipline\",\"list\":_vm.pipelineList,\"Xkey\":\"curr_pipeline\"}})],1)],1)],1),_c('Content',{attrs:{\"id\":\"main-content\"}},[_c('row',{attrs:{\"type\":\"flex\",\"justify\":\"start\",\"align\":\"top\",\"gutter\":5}},[_c('Col',{attrs:{\"span\":\"12\"}},[_c('router-view')],1),_c('Col',{attrs:{\"span\":\"12\"}},[_c('Tabs',{attrs:{\"animated\":false},on:{\"on-click\":_vm.handleImage},model:{value:(_vm.isBinary),callback:function ($$v) {_vm.isBinary=$$v},expression:\"isBinary\"}},[_c('TabPane',{attrs:{\"label\":\"Normal\"}}),_c('TabPane',{attrs:{\"label\":\"Threshold\"}})],1),_c('img',{staticClass:\"imageSize\",attrs:{\"src\":_vm.steamAdress}}),_c('h4',{staticClass:\"pointText\"},[_vm._v(_vm._s(_vm.point))])],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n \n \n \n \n \n \n \n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n {{point}} \n \n \n
\n \n \n \n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Vision.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Vision.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Vision.vue?vue&type=template&id=2db2bf31&\"\nimport script from \"./Vision.vue?vue&type=script&lang=js&\"\nexport * from \"./Vision.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Vision.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Layout',{attrs:{\"id\":\"main-layout\"}},[_c('Content',{attrs:{\"id\":\"main-content\"}},[_c('router-view')],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n \n \n \n \n \n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Settings.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Settings.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Settings.vue?vue&type=template&id=033196b2&scoped=true&\"\nimport script from \"./Settings.vue?vue&type=script&lang=js&\"\nexport * from \"./Settings.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"033196b2\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"InputTab\"}},[_c('chslider',{staticClass:\"spacing\",attrs:{\"title\":\"exposure\",\"Xkey\":\"exposure\"}}),_c('chslider',{staticClass:\"spacing\",attrs:{\"title\":\"Brightness\",\"Xkey\":\"brightness\"}}),_c('chselect',{staticClass:\"spacing\",attrs:{\"title\":\"Orientation\",\"Xkey\":\"orientation\",\"list\":['Normal','Inverted']}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('row',{attrs:{\"type\":\"flex\",\"justify\":\"start\",\"align\":\"middle\",\"gutter\":1}},[_c('Col',{attrs:{\"span\":\"4\"}},[_c('h4',[_vm._v(_vm._s(_vm.title.charAt(0).toUpperCase() + _vm.title.slice(1))+\" :\")])]),_c('Col',{staticStyle:{\"text-align\":\"left\"},attrs:{\"span\":\"4\"}},[_c('InputNumber',{staticStyle:{\"align-self\":\"flex-start\"},attrs:{\"size\":\"small\"},model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}})],1),_c('Col',{attrs:{\"span\":\"14\"}},[_c('Slider',{on:{\"on-input\":_vm.handleInput},model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n \n \n {{title.charAt(0).toUpperCase() + title.slice(1)}} : \n \n \n \n \n \n \n \n
\n \n\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ch-slider.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ch-slider.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ch-slider.vue?vue&type=template&id=7e5a6bfa&\"\nimport script from \"./ch-slider.vue?vue&type=script&lang=js&\"\nexport * from \"./ch-slider.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ch-slider.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Row',{attrs:{\"type\":\"flex\",\"justify\":\"start\",\"align\":\"middle\",\"gutter\":1}},[_c('Col',{attrs:{\"span\":\"4\"}},[_c('h4',[_vm._v(_vm._s(_vm.title.charAt(0).toUpperCase() + _vm.title.slice(1))+\" :\")])]),_c('Col',{attrs:{\"span\":\"4\"}},[_c('i-select',{attrs:{\"size\":\"small\"},on:{\"on-change\":_vm.handleInput},model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}},_vm._l((_vm.list),function(item,index){return _c('i-option',{key:index,attrs:{\"value\":index}},[_vm._v(_vm._s(item))])}),1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n \n {{title.charAt(0).toUpperCase() + title.slice(1)}} : \n \n \n \n {{item}} \n \n \n
\n \n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ch-IndexSelect.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ch-IndexSelect.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ch-IndexSelect.vue?vue&type=template&id=2c264cc6&\"\nimport script from \"./ch-IndexSelect.vue?vue&type=script&lang=js&\"\nexport * from \"./ch-IndexSelect.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ch-IndexSelect.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n \n \n \n \n
\n \n \n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InputTab.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InputTab.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./InputTab.vue?vue&type=template&id=285b7205&scoped=true&\"\nimport script from \"./InputTab.vue?vue&type=script&lang=js&\"\nexport * from \"./InputTab.vue?vue&type=script&lang=js&\"\nimport style0 from \"./InputTab.vue?vue&type=style&index=0&id=285b7205&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"285b7205\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"Threshold\"}},[_c('chrange',{staticClass:\"spacing\",attrs:{\"title\":\"Hue\",\"Xkey\":\"hue\",\"maximum\":180}}),_c('chrange',{staticClass:\"spacing\",attrs:{\"title\":\"Saturation\",\"Xkey\":\"saturation\",\"maximum\":255}}),_c('chrange',{staticClass:\"spacing\",attrs:{\"title\":\"Value\",\"Xkey\":\"value\",\"maximum\":255}}),_c('chswitch',{staticClass:\"spacing\",attrs:{\"title\":\"Erode\",\"Xkey\":\"erode\"}}),_c('chswitch',{staticClass:\"spacing\",attrs:{\"title\":\"Dilate\",\"Xkey\":\"dilate\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('row',{attrs:{\"type\":\"flex\",\"justify\":\"start\",\"align\":\"middle\",\"gutter\":1}},[_c('Col',{attrs:{\"span\":\"4\"}},[_c('h4',[_vm._v(_vm._s(_vm.title.charAt(0).toUpperCase() + _vm.title.slice(1))+\" :\")])]),_c('Col',{staticStyle:{\"text-align\":\"left\"},attrs:{\"span\":\"4\"}},[_c('InputNumber',{staticStyle:{\"align-self\":\"flex-start\"},attrs:{\"size\":\"small\",\"step\":_vm.steps},model:{value:(_vm.value[0]),callback:function ($$v) {_vm.$set(_vm.value, 0, $$v)},expression:\"value[0]\"}})],1),_c('Col',{attrs:{\"span\":\"10\"}},[_c('Slider',{attrs:{\"range\":\"\",\"step\":_vm.steps,\"max\":_vm.maximum},on:{\"on-input\":_vm.handleInput},model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}})],1),_c('Col',{staticStyle:{\"text-align\":\"right\"},attrs:{\"span\":\"4\"}},[_c('InputNumber',{staticStyle:{\"align-self\":\"flex-end\"},attrs:{\"size\":\"small\",\"step\":_vm.steps,\"max\":_vm.maximum},model:{value:(_vm.value[1]),callback:function ($$v) {_vm.$set(_vm.value, 1, $$v)},expression:\"value[1]\"}})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n \n \n {{title.charAt(0).toUpperCase() + title.slice(1)}} : \n \n \n \n \n \n \n \n \n \n \n
\n \n\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ch-range.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ch-range.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ch-range.vue?vue&type=template&id=a3c890c4&\"\nimport script from \"./ch-range.vue?vue&type=script&lang=js&\"\nexport * from \"./ch-range.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ch-range.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Row',{attrs:{\"type\":\"flex\",\"justify\":\"start\",\"align\":\"middle\",\"gutter\":1}},[_c('Col',{attrs:{\"span\":\"4\"}},[_c('h4',[_vm._v(_vm._s(_vm.title.charAt(0).toUpperCase() + _vm.title.slice(1))+\" :\")])]),_c('Col',{staticStyle:{\"text-align\":\"left\"},attrs:{\"span\":\"4\"}},[_c('i-switch',{staticStyle:{\"align-self\":\"flex-start\"},on:{\"on-change\":_vm.handleInput},model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n \n {{title.charAt(0).toUpperCase() + title.slice(1)}} : \n \n \n \n \n
\n \n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ch-switch.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ch-switch.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ch-switch.vue?vue&type=template&id=182635d8&scoped=true&\"\nimport script from \"./ch-switch.vue?vue&type=script&lang=js&\"\nexport * from \"./ch-switch.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"182635d8\",\n null\n \n)\n\nexport default component.exports","\n \n \n \n \n \n \n
\n \n \n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ThresholdTab.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ThresholdTab.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ThresholdTab.vue?vue&type=template&id=267dfb50&scoped=true&\"\nimport script from \"./ThresholdTab.vue?vue&type=script&lang=js&\"\nexport * from \"./ThresholdTab.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ThresholdTab.vue?vue&type=style&index=0&id=267dfb50&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"267dfb50\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"SystemTab\"}},[_c('div',[_c('row',{attrs:{\"type\":\"flex\",\"justify\":\"start\",\"align\":\"middle\",\"gutter\":10}},[_c('Col',{attrs:{\"span\":\"6\"}},[_c('h4',[_vm._v(\"Team Number:\")])]),_c('col',{attrs:{\"span\":\"4\"}}),_c('InputNumber',{attrs:{\"min\":0,\"size\":\"small\"},model:{value:(_vm.team_number),callback:function ($$v) {_vm.team_number=$$v},expression:\"team_number\"}})],1)],1),_c('Divider',{staticClass:\"divdiv\",attrs:{\"orientation\":\"left\"}},[_vm._v(\"Networking\")]),_c('div',[_c('RadioGroup',{staticStyle:{\"display\":\"flex\"},model:{value:(_vm.connection_type),callback:function ($$v) {_vm.connection_type=$$v},expression:\"connection_type\"}},[_c('Radio',{attrs:{\"label\":\"DHCP\"}}),_c('Radio',{attrs:{\"label\":\"Static\"}})],1),_c('div',{staticClass:\"ipSettings\"},[_c('row',{staticClass:\"spacing\",attrs:{\"type\":\"flex\",\"justify\":\"start\",\"align\":\"middle\"}},[_c('Col',{attrs:{\"span\":\"4\"}},[_c('h4',[_vm._v(\"IP:\")])]),_c('Col',{attrs:{\"span\":\"10\"}},[_c('Input',{attrs:{\"size\":\"small\",\"disabled\":_vm.isConnection},model:{value:(_vm.ip),callback:function ($$v) {_vm.ip=$$v},expression:\"ip\"}})],1)],1),_c('row',{staticClass:\"spacing\",attrs:{\"type\":\"flex\",\"justify\":\"start\",\"align\":\"middle\"}},[_c('Col',{attrs:{\"span\":\"4\"}},[_c('h4',[_vm._v(\"Netmask:\")])]),_c('Col',{attrs:{\"span\":\"10\"}},[_c('Input',{attrs:{\"size\":\"small\",\"disabled\":_vm.isConnection},model:{value:(_vm.netmask),callback:function ($$v) {_vm.netmask=$$v},expression:\"netmask\"}})],1)],1),_c('row',{staticClass:\"spacing\",attrs:{\"type\":\"flex\",\"justify\":\"start\",\"align\":\"middle\"}},[_c('Col',{attrs:{\"span\":\"4\"}},[_c('h4',[_vm._v(\"Gateway:\")])]),_c('Col',{attrs:{\"span\":\"10\"}},[_c('Input',{attrs:{\"size\":\"small\",\"disabled\":_vm.isConnection},model:{value:(_vm.gateway),callback:function ($$v) {_vm.gateway=$$v},expression:\"gateway\"}})],1)],1),_c('row',{staticClass:\"spacing\",attrs:{\"type\":\"flex\",\"justify\":\"start\",\"align\":\"middle\"}},[_c('Col',{attrs:{\"span\":\"4\"}},[_c('h4',[_vm._v(\"Hostname:\")])]),_c('Col',{attrs:{\"span\":\"10\"}},[_c('Input',{attrs:{\"size\":\"small\"},model:{value:(_vm.hostname),callback:function ($$v) {_vm.hostname=$$v},expression:\"hostname\"}},[_c('span',{attrs:{\"slot\":\"append\"},slot:\"append\"},[_vm._v(\".local\")])])],1)],1)],1),_c('Divider',{staticClass:\"divdiv\",attrs:{\"orientation\":\"left\"}}),_c('row',{staticStyle:{\"margin-top\":\"20px\"},attrs:{\"type\":\"flex\",\"justify\":\"start\",\"align\":\"middle\"}},[_c('Button',{attrs:{\"type\":\"primary\",\"size\":\"small\"},on:{\"click\":_vm.socketSendAll}},[_vm._v(\"Save Changes and Restart\")])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"InputNumber\"}},[_c('row',{attrs:{\"type\":\"flex\",\"justify\":\"start\",\"align\":\"middle\",\"gutter\":10}},[_c('Col',{attrs:{\"span\":\"6\"}},[_c('h4',[_vm._v(_vm._s(_vm.title))])]),_c('col',{attrs:{\"span\":\"4\"}}),_c('InputNumber',{attrs:{\"min\":0,\"size\":\"small\"},on:{\"on-change\":_vm.handleInput},model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n \n \n {{title}} \n \n \n \n \n
\n
\n \n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ch-inputNumber.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ch-inputNumber.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ch-inputNumber.vue?vue&type=template&id=672703df&scoped=true&\"\nimport script from \"./ch-inputNumber.vue?vue&type=script&lang=js&\"\nexport * from \"./ch-inputNumber.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"672703df\",\n null\n \n)\n\nexport default component.exports","\n \n
\n \n \n Team Number: \n \n \n \n \n
\n
\n
Networking \n
\n
\n \n\n \n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SystemTab.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SystemTab.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SystemTab.vue?vue&type=template&id=bf05131c&\"\nimport script from \"./SystemTab.vue?vue&type=script&lang=js&\"\nexport * from \"./SystemTab.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SystemTab.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"spacing\",attrs:{\"id\":\"cameraTab\"}},[_c('chselect',{attrs:{\"title\":\"select camera\",\"list\":_vm.cameraList,\"Xkey\":\"curr_camera\"}}),_c('Row',{staticClass:\"spacing\",attrs:{\"type\":\"flex\",\"justify\":\"start\",\"align\":\"middle\",\"gutter\":1}},[_c('Col',{attrs:{\"span\":\"4\"}},[_c('h4',[_vm._v(\"Resolution:\")])]),_c('Col',{attrs:{\"span\":\"4\"}},[_c('i-select',{attrs:{\"size\":\"small\"},model:{value:(_vm.resolution),callback:function ($$v) {_vm.resolution=$$v},expression:\"resolution\"}},_vm._l((_vm.resolutionList),function(item,index){return _c('i-option',{key:index,attrs:{\"value\":index}},[_vm._v(_vm._s(item))])}),1)],1)],1),_c('Row',{staticClass:\"spacing\",attrs:{\"type\":\"flex\",\"justify\":\"start\",\"align\":\"middle\",\"gutter\":1}},[_c('Col',{attrs:{\"span\":\"4\"}},[_c('h4',[_vm._v(\"Diagonal FOV:\")])]),_c('Col',{attrs:{\"span\":\"4\"}},[_c('InputNumber',{attrs:{\"min\":0,\"size\":\"small\"},model:{value:(_vm.FOV),callback:function ($$v) {_vm.FOV=$$v},expression:\"FOV\"}})],1)],1),_c('Button',{staticClass:\"buttonClass spacing\",attrs:{\"type\":\"primary\",\"size\":\"small\"},on:{\"click\":_vm.socketSendAll}},[_vm._v(\"Save settings to current camera\")]),_c('h4',{staticClass:\"spacing\"},[_vm._v(\"Please Restart the computer Manually after saving all cameras\")])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n \n\n \n \n Resolution: \n \n \n \n {{item}} \n \n \n
\n\n \n \n Diagonal FOV: \n \n \n \n \n
\n \n Save settings to current camera \n
Please Restart the computer Manually after saving all cameras \n \n \n \n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CameraTab.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CameraTab.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CameraTab.vue?vue&type=template&id=4d25b2ea&scoped=true&\"\nimport script from \"./CameraTab.vue?vue&type=script&lang=js&\"\nexport * from \"./CameraTab.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CameraTab.vue?vue&type=style&index=0&id=4d25b2ea&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4d25b2ea\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"ContourTab\"}},[_c('chrange',{staticClass:\"spacing\",attrs:{\"title\":\"Area\",\"Xkey\":\"area\"}}),_c('chrange',{staticClass:\"spacing\",attrs:{\"title\":\"Ratio (W/H)\",\"Xkey\":\"ratio\",\"steps\":0.1}}),_c('chrange',{staticClass:\"spacing\",attrs:{\"title\":\"Extent\",\"Xkey\":\"extent\"}}),_c('chselect',{staticClass:\"spacing\",attrs:{\"title\":\"Target Group\",\"Xkey\":\"target_group\",\"list\":['Single','Dual','Triple','Quadruple','Quintuple']}}),_c('chselect',{staticClass:\"spacing\",attrs:{\"title\":\"Target Intersaction\",\"Xkey\":\"target_intersection\",\"list\":['Up','Down','Left','Right','Parallel'],\"isDisabled\":_vm.isSingle}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n \n \n \n \n \n
\n \n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./contourTab.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./contourTab.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./contourTab.vue?vue&type=template&id=90fe5fa0&scoped=true&\"\nimport script from \"./contourTab.vue?vue&type=script&lang=js&\"\nexport * from \"./contourTab.vue?vue&type=script&lang=js&\"\nimport style0 from \"./contourTab.vue?vue&type=style&index=0&id=90fe5fa0&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"90fe5fa0\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"OutputTab\"}},[_c('chselect',{staticClass:\"spacing\",attrs:{\"title\":\"Sort Mode\",\"Xkey\":\"sort_mode\",\"list\":['Largest','Smallest','Highest','Lowest','Rightmost','Leftmost','Closest']}}),_c('Row',{staticClass:\"spacing\",attrs:{\"type\":\"flex\",\"justify\":\"start\",\"align\":\"middle\",\"gutter\":10}},[_c('col'),_c('Button',{attrs:{\"type\":\"primary\",\"size\":\"small\"},on:{\"click\":_vm.takePointA}},[_vm._v(\"Take Point A\")]),_c('col',{staticStyle:{\"margin-left\":\"10px\"}}),_c('Button',{attrs:{\"type\":\"primary\",\"size\":\"small\"},on:{\"click\":_vm.takePointB}},[_vm._v(\"Take Point B\")])],1),_c('Row',{staticClass:\"spacing\",attrs:{\"type\":\"flex\",\"align\":\"middle\",\"gutter\":10}},[_c('col'),_c('Button',{attrs:{\"type\":\"warning\",\"size\":\"small\"},on:{\"click\":_vm.clearPoints}},[_vm._v(\"Clear All Points\")])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n \n \n \n Take Point A \n \n \n Take Point B \n \n
\n \n \n Clear All Points \n \n
\n
\n \n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./outputTab.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./outputTab.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./outputTab.vue?vue&type=template&id=1abc7610&scoped=true&\"\nimport script from \"./outputTab.vue?vue&type=script&lang=js&\"\nexport * from \"./outputTab.vue?vue&type=script&lang=js&\"\nimport style0 from \"./outputTab.vue?vue&type=style&index=0&id=1abc7610&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1abc7610\",\n null\n \n)\n\nexport default component.exports","import VueRouter from \"vue-router\";\nimport Vision from \"./components/Vision.vue\"\nimport Setting from \"./components/Settings.vue\"\nimport Input from \"./components/InputTab.vue\";\nimport Threshold from \"./components/ThresholdTab.vue\";\nimport System from \"./components/SystemTab.vue\";\nimport Camera from \"./components/CameraTab.vue\";\nimport Contours from \"./components/contourTab.vue\";\nimport Output from './components/outputTab.vue'\n\nconst routes = [\n { path: '/', redirect: '/vision/input'},\n { path: '/vision', component: Vision, children: [\n { path: 'input', component: Input },\n { path: 'threshold', component: Threshold },\n { path: 'contours', component: Contours },\n { path: 'output', component: Output },\n ]},\n { path: '/settings', component: Setting, children: [\n { path: 'system', component: System },\n { path: 'camera', component: Camera }\n ]}\n]\n\nconst router = new VueRouter({\n routes\n})\n\nexport default router;","import Vue from 'vue'\nimport Vuex from 'vuex'\n\nVue.use(Vuex);\nconst set = key => (state,val) =>{\n state[key] = val\n};\nexport const store = new Vuex.Store({\n\n state:{\n //header\n curr_camera:\"\",\n curr_pipeline:\"\",\n cameraList:[],\n pipelineList:[],\n //input\n exposure:54,\n brightness:0,\n orientation:0,\n resolution:0,\n resolutionList:[],\n FOV:0,\n //threshold\n hue:[0,10],\n saturation:[0,10],\n value:[0,10],\n erode: false,\n dilate: false,\n //contours\n area:[0,100],\n ratio:[0,20],\n extent:[0,100],\n sort_mode:'Largest', \n target_group:'Single', \n target_intersection:'Up',\n //Settings\n team_number:0,\n connection_type:\"DHCP\",\n ip:\"\",\n gateway:\"\",\n netmask:\"\",\n hostname:\"\",\n //live info\n port:1181,\n is_binary:0,\n //points\n raw_point:[],\n point:{}\n\n },\n mutations:{\n curr_camera (state,value){\n state['curr_camera'] = value;\n state['pipeline'] = \"0\";\n },\n curr_pipeline: set('curr_pipeline'),\n brightness: set('brightness'),\n exposure: set('exposure'),\n orientation:set('orientation'),\n resolution: set('resolution'),\n hue: set('hue'),\n saturation: set('saturation'),\n value: set('value'),\n erode: set('erode'),\n dilate: set('dilate'),\n area: set('area'),\n ratio: set('ratio'),\n extent: set('extent'),\n team_number: set('team_number'),\n connection_type: set('connection_type'),\n ip: set('ip'),\n netmask: set('netmask'),\n gateway : set('gateway'),\n hostname : set('hostname'),\n is_binary: set('is_binary'),\n cameraList : set('cameraList'),\n pipelineList: set('piplineList'),\n sort_mode: set('sort_mode'),\n target_group:set('target_group'),\n target_intersection:set('target_intersection'),\n FOV:set('FOV'),\n port:set('port'),\n raw_point:set('raw_point'),\n point:set('point')\n },\n getters:{\n curr_camera: state => state.curr_camera,\n curr_pipeline: state => state.curr_pipeline,\n brightness: state => state.brightness,\n exposure: state => state.exposure,\n orientation: state => state.orientation,\n resolution: state => state.resolution,\n hue: state => state.hue,\n saturation: state => state.saturation,\n value: state => state.value,\n erode: state => state.dilate,\n dilate: state => state.dilate,\n area: state =>state.area,\n ratio: state =>state.ratio,\n extent: state =>state.extent,\n team_number: state => state.teamValue,\n connection_type: state => state.connectionType,\n ip: state => state.ip,\n netmask: state => state.netmask,\n gateway: state => state.gateway,\n hostname: state => state.hostName,\n is_binary: state => state.is_binary,\n cameraList: state => state.cameraList,\n pipelineList: state => state.pipelineList,\n sort_mode: state => state.sort_mode,\n target_group: state => state.target_group,\n target_intersection: state => state.target_intersection,\n FOV: state => state.FOV,\n port: state => state.port,\n raw_point:state => state.raw_point,\n point: state => state.point\n\n },\n});","import Vue from 'vue'\nimport App from './App.vue'\nimport VueRouter from 'vue-router'\nimport iView from 'iview';\nimport router from \"./routes\";\nimport '../theme/index.less';\nimport VueNativeSock from 'vue-native-websocket';\nimport locale from 'iview/dist/locale/en-US';\nimport {store} from './store'\n\nVue.use(VueRouter);\nVue.use(iView , { locale });\nVue.use(VueNativeSock,'ws://'+location.hostname+':8888/websocket',{format:'JSON'});\nVue.config.productionTip = false\n\nnew Vue({\n router,\n store,\n render: h => h(App)\n}).$mount('#app')\n","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CameraTab.vue?vue&type=style&index=0&id=4d25b2ea&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CameraTab.vue?vue&type=style&index=0&id=4d25b2ea&scoped=true&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./outputTab.vue?vue&type=style&index=0&id=1abc7610&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./outputTab.vue?vue&type=style&index=0&id=1abc7610&scoped=true&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./contourTab.vue?vue&type=style&index=0&id=90fe5fa0&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./contourTab.vue?vue&type=style&index=0&id=90fe5fa0&scoped=true&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ch-IndexSelect.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ch-IndexSelect.vue?vue&type=style&index=0&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ch-select.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ch-select.vue?vue&type=style&index=0&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ch-slider.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ch-slider.vue?vue&type=style&index=0&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ch-range.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ch-range.vue?vue&type=style&index=0&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ThresholdTab.vue?vue&type=style&index=0&id=267dfb50&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ThresholdTab.vue?vue&type=style&index=0&id=267dfb50&scoped=true&lang=css&\""],"sourceRoot":""}
\ No newline at end of file
diff --git a/backend/requirement.txt b/backend/requirement.txt
index 47a0882ef..84e5a9010 100644
--- a/backend/requirement.txt
+++ b/backend/requirement.txt
@@ -1,3 +1,4 @@
tornado
pyzmq
-robotpy-cscore
\ No newline at end of file
+robotpy-cscore
+netifaces
\ No newline at end of file
diff --git a/backend/settings/cams/USB Camera-B4.09.24.1.json b/backend/settings/cams/USB Camera-B4.09.24.1.json
deleted file mode 100644
index 91187d8b0..000000000
--- a/backend/settings/cams/USB Camera-B4.09.24.1.json
+++ /dev/null
@@ -1 +0,0 @@
-{"pipelines": {"pipeline0": {"exposure": 50, "brightness": 15, "orientation": "Normal", "hue": [0, 100], "saturation": [0, 100], "value": [0, 100], "erode": false, "dilate": true, "area": [0, 100], "ratio": [0, 20], "extent": [0, 100], "is_binary": 0, "sort_mode": "Largest", "target_group": "Single", "target_intersection": "Up", "M": 1, "B": 0}, "pipeline1": {"exposure": 50, "brightness": 50, "orientation": "Normal", "hue": [0, 100], "saturation": [0, 100], "value": [0, 100], "erode": false, "dilate": false, "area": [0, 100], "ratio": [0, 20], "extent": [0, 100], "is_binary": 0, "sort_mode": "Largest", "target_group": "Single", "target_intersection": "Up", "M": 1, "B": 0}, "pipeline2": {"exposure": 50, "brightness": 50, "orientation": "Normal", "hue": [0, 100], "saturation": [0, 100], "value": [0, 100], "erode": false, "dilate": false, "area": [0, 100], "ratio": [0, 20], "extent": [0, 100], "is_binary": "Normal", "sort_mode": "Largest", "target_group": "Single", "target_intersection": "Up", "M": 1, "B": 0}, "pipeline3": {"exposure": 50, "brightness": 50, "orientation": "Normal", "hue": [0, 100], "saturation": [0, 100], "value": [0, 100], "erode": false, "dilate": false, "area": [0, 100], "ratio": [0, 20], "extent": [0, 100], "is_binary": "Normal", "sort_mode": "Largest", "target_group": "Single", "target_intersection": "Up", "M": 1, "B": 0}, "pipeline4": {"exposure": 50, "brightness": 50, "orientation": "Normal", "hue": [0, 100], "saturation": [0, 100], "value": [0, 100], "erode": false, "dilate": false, "area": [0, 100], "ratio": [0, 20], "extent": [0, 100], "is_binary": "Normal", "sort_mode": "Largest", "target_group": "Single", "target_intersection": "Up", "M": 1, "B": 0}, "pipeline5": {"exposure": 50, "brightness": 50, "orientation": "Normal", "hue": [0, 100], "saturation": [0, 100], "value": [0, 100], "erode": false, "dilate": false, "area": [0, 100], "ratio": [0, 20], "extent": [0, 100], "is_binary": "Normal", "sort_mode": "Largest", "target_group": "Single", "target_intersection": "Up", "M": 1, "B": 0}, "pipeline6": {"exposure": 50, "brightness": 50, "orientation": "Normal", "hue": [0, 100], "saturation": [0, 100], "value": [0, 100], "erode": false, "dilate": false, "area": [0, 100], "ratio": [0, 20], "extent": [0, 100], "is_binary": "Normal", "sort_mode": "Largest", "target_group": "Single", "target_intersection": "Up", "M": 1, "B": 0}, "pipeline7": {"exposure": 50, "brightness": 50, "orientation": "Normal", "hue": [0, 100], "saturation": [0, 100], "value": [0, 100], "erode": false, "dilate": false, "area": [0, 100], "ratio": [0, 20], "extent": [0, 100], "is_binary": "Normal", "sort_mode": "Largest", "target_group": "Single", "target_intersection": "Up", "M": 1, "B": 0}, "pipeline8": {"exposure": 50, "brightness": 50, "orientation": "Normal", "hue": [0, 100], "saturation": [0, 100], "value": [0, 100], "erode": false, "dilate": false, "area": [0, 100], "ratio": [0, 20], "extent": [0, 100], "is_binary": "Normal", "sort_mode": "Largest", "target_group": "Single", "target_intersection": "Up", "M": 1, "B": 0}, "pipeline9": {"exposure": 50, "brightness": 50, "orientation": "Normal", "hue": [0, 100], "saturation": [0, 100], "value": [0, 100], "erode": false, "dilate": false, "area": [0, 100], "ratio": [0, 20], "extent": [0, 100], "is_binary": 0, "sort_mode": "Largest", "target_group": "Single", "target_intersection": "Up", "M": 1, "B": 0}}, "path": "/dev/v4l/by-path/pci-0000:02:03.0-usb-0:1:1.0-video-index0", "video_mode": {"fps": 187, "width": 320, "height": 240, "pixel_format": "kYUYV"}, "resolution": 0, "FOV": 60.8}
\ No newline at end of file
diff --git a/backend/settings/cams/USB2.0 PC CAMERA.json b/backend/settings/cams/USB2.0 PC CAMERA.json
deleted file mode 100644
index c26acf48d..000000000
--- a/backend/settings/cams/USB2.0 PC CAMERA.json
+++ /dev/null
@@ -1 +0,0 @@
-{"pipelines": {"pipeline0": {"exposure": 50, "brightness": 50, "orientation": "Normal", "hue": [0, 100], "saturation": [0, 100], "value": [0, 100], "erode": false, "dilate": false, "area": [0, 100], "ratio": [0, 20], "extent": [0, 100], "is_binary": "Normal", "sort_mode": "Largest", "target_group": "Single", "target_intersection": "Up"}}, "path": "/dev/v4l/by-path/pci-0000:02:03.0-usb-0:2:1.0-video-index0", "video_mode": {"fps": 30, "width": 640, "height": 480, "pixel_format": "kYUYV"}, "resolution": 0, "FOV": 60.8}
\ No newline at end of file
diff --git a/backend/settings/settings.json b/backend/settings/settings.json
deleted file mode 100644
index 4768b240f..000000000
--- a/backend/settings/settings.json
+++ /dev/null
@@ -1 +0,0 @@
-{"team_number": 1567, "connection_type": "DHCP", "ip": "", "gateway": "", "hostname": "Chameleon-Vision", "curr_camera": "USB Camera-B4.09.24.1", "curr_pipeline": "pipeline0"}
\ No newline at end of file
diff --git a/chameleon-client/public/favicon.ico b/chameleon-client/public/favicon.ico
old mode 100644
new mode 100755
index c7b9a43c8..bc877aaad
Binary files a/chameleon-client/public/favicon.ico and b/chameleon-client/public/favicon.ico differ
diff --git a/chameleon-client/src/assets/logo.png b/chameleon-client/src/assets/logo.png
old mode 100644
new mode 100755
index f3d2503fc..5520ffde3
Binary files a/chameleon-client/src/assets/logo.png and b/chameleon-client/src/assets/logo.png differ
diff --git a/chameleon-client/src/components/SystemTab.vue b/chameleon-client/src/components/SystemTab.vue
index c08ed1918..d5cfda58f 100644
--- a/chameleon-client/src/components/SystemTab.vue
+++ b/chameleon-client/src/components/SystemTab.vue
@@ -25,6 +25,14 @@
+
+
+ Netmask:
+
+
+
+
+
Gateway:
@@ -39,7 +47,6 @@
- http://Chameleon-Vision
.local
@@ -74,6 +81,7 @@
'team_number':this.team_number,
'connection_type':this.connection_type,
'ip':this.ip,
+ 'netmask':this.netmask,
'gateway':this.gateway,
'hostname':this.hostname}});
}
@@ -103,6 +111,14 @@
this.$store.commit('ip',value);
}
},
+ netmask:{
+ get: function(){
+ return this.$store.state.netmask;
+ },
+ set: function(value){
+ this.$store.commit('netmask',value);
+ }
+ },
gateway:{
get: function(){
return this.$store.state.gateway;
@@ -120,7 +136,7 @@
}
},
isConnection: function(){
- if(this.connectionType == "DHCP"){
+ if(this.connection_type == "DHCP"){
return true
} else{
return false
diff --git a/chameleon-client/src/store.js b/chameleon-client/src/store.js
index e42e35de3..d6682463e 100644
--- a/chameleon-client/src/store.js
+++ b/chameleon-client/src/store.js
@@ -30,14 +30,15 @@ export const store = new Vuex.Store({
area:[0,100],
ratio:[0,20],
extent:[0,100],
- sort_mode:'Largest', //
- target_group:'Single', //
- target_intersection:'Up', //
+ sort_mode:'Largest',
+ target_group:'Single',
+ target_intersection:'Up',
//Settings
team_number:0,
connection_type:"DHCP",
- ip:0,
- gateWay:0,
+ ip:"",
+ gateway:"",
+ netmask:"",
hostname:"",
//live info
port:1181,
@@ -68,7 +69,8 @@ export const store = new Vuex.Store({
team_number: set('team_number'),
connection_type: set('connection_type'),
ip: set('ip'),
- gateWay : set('gateway'),
+ netmask: set('netmask'),
+ gateway : set('gateway'),
hostname : set('hostname'),
is_binary: set('is_binary'),
cameraList : set('cameraList'),
@@ -99,7 +101,8 @@ export const store = new Vuex.Store({
team_number: state => state.teamValue,
connection_type: state => state.connectionType,
ip: state => state.ip,
- gateWay: state => state.gateWay,
+ netmask: state => state.netmask,
+ gateway: state => state.gateway,
hostname: state => state.hostName,
is_binary: state => state.is_binary,
cameraList: state => state.cameraList,