mirror of https://github.com/D4-project/d4-core
chg; [Analyzer Queue UI] add queue creator template + bug fix
parent
4d55d601a1
commit
10430135d1
|
@ -10,6 +10,7 @@ import redis
|
|||
|
||||
sys.path.append(os.path.join(os.environ['D4_HOME'], 'lib/'))
|
||||
import ConfigLoader
|
||||
import d4_type
|
||||
|
||||
### Config ###
|
||||
config_loader = ConfigLoader.ConfigLoader()
|
||||
|
@ -31,29 +32,32 @@ def is_valid_uuid_v4(uuid_v4):
|
|||
except:
|
||||
return False
|
||||
|
||||
def sanitize_uuid(uuid_v4):
|
||||
def sanitize_uuid(uuid_v4, not_exist=False):
|
||||
if not is_valid_uuid_v4(uuid_v4):
|
||||
uuid_v4 = str(uuid.uuid4())
|
||||
if not_exist:
|
||||
if exist_queue(uuid_v4):
|
||||
uuid_v4 = str(uuid.uuid4())
|
||||
return uuid_v4
|
||||
|
||||
def sanitize_queue_type(format_type):
|
||||
try:
|
||||
format_type = int(format_type)
|
||||
except:
|
||||
format_type = 1
|
||||
if format_type == 2:
|
||||
format_type = 254
|
||||
return format_type
|
||||
|
||||
def exist_queue(queue_uuid):
|
||||
return r_serv_metadata.exists('analyzer:{}'.format(queue_uuid))
|
||||
|
||||
def get_all_queues(r_list=None):
|
||||
res = r_serv_metadata.smembers('all_analyzer_queues')
|
||||
if r_list:
|
||||
return list(res)
|
||||
return res
|
||||
|
||||
def get_all_queues_standard_format(r_list=None):
|
||||
res = r_serv_metadata.smembers('all_analyzer_queues')
|
||||
if r_list:
|
||||
return list(res)
|
||||
return res
|
||||
|
||||
def get_all_queues_standard_extended_format(r_list=None):
|
||||
res = r_serv_metadata.smembers('all_analyzer_queues')
|
||||
if r_list:
|
||||
return list(res)
|
||||
return res
|
||||
|
||||
def get_all_queues_by_type(format_type, r_list=None):
|
||||
'''
|
||||
Get all analyzer Queues by type
|
||||
|
@ -72,12 +76,24 @@ def get_all_queues_by_type(format_type, r_list=None):
|
|||
return list(res)
|
||||
return res
|
||||
|
||||
def get_all_queues_by_extended_type(extended_type, r_list=None):
|
||||
res = r_serv_metadata.smembers('analyzer:254:{}'.format(extended_type))
|
||||
if r_list:
|
||||
return list(res)
|
||||
return res
|
||||
|
||||
def get_all_queues_group_by_type(format_type, r_list=None):
|
||||
res = r_serv_metadata.smembers('analyzer_uuid_group:{}'.format(format_type))
|
||||
if r_list:
|
||||
return list(res)
|
||||
return res
|
||||
|
||||
def get_all_queues_group_by_extended_type(extended_type, r_list=None):
|
||||
res = r_serv_metadata.smembers('analyzer_uuid_group:254:{}'.format(extended_type))
|
||||
if r_list:
|
||||
return list(res)
|
||||
return res
|
||||
|
||||
def get_all_queues_by_sensor_group(format_type, sensor_uuid, r_list=None):
|
||||
print('sensor:queues:{}:{}'.format(format_type, sensor_uuid))
|
||||
res = r_serv_metadata.smembers('sensor:queues:{}:{}'.format(format_type, sensor_uuid))
|
||||
|
@ -106,7 +122,24 @@ def get_queue_max_size(queue_uuid):
|
|||
max_size = LIST_DEFAULT_SIZE
|
||||
return max_size
|
||||
|
||||
def get_queue_metadata(queue_uuid, format_type=None, f_date='str_date'):
|
||||
def get_queue_size(queue_uuid, format_type, extended_type=None):
|
||||
if format_type==254:
|
||||
if not extended_type:
|
||||
extended_type = get_queue_extended_type(queue_uuid)
|
||||
length = r_serv_analyzer.llen('analyzer:{}:{}'.format(extended_type, queue_uuid))
|
||||
else:
|
||||
length = r_serv_analyzer.llen('analyzer:{}:{}'.format(format_type, queue_uuid))
|
||||
if length is None:
|
||||
length = 0
|
||||
return length
|
||||
|
||||
def get_queue_format_type(queue_uuid):
|
||||
return r_serv_metadata.hget('analyzer:{}'.format(queue_uuid), 'type')
|
||||
|
||||
def get_queue_extended_type(queue_uuid):
|
||||
return r_serv_metadata.hget('analyzer:{}'.format(queue_uuid), 'metatype')
|
||||
|
||||
def get_queue_metadata(queue_uuid, format_type=None, extended_type=None, f_date='str_date', force_is_group_queue=False):
|
||||
dict_queue_meta = {}
|
||||
dict_queue_meta['uuid'] = queue_uuid
|
||||
dict_queue_meta['size_limit'] = get_queue_max_size(queue_uuid)
|
||||
|
@ -116,10 +149,21 @@ def get_queue_metadata(queue_uuid, format_type=None, f_date='str_date'):
|
|||
if dict_queue_meta['description'] is None:
|
||||
dict_queue_meta['description'] = ''
|
||||
|
||||
if format_type:
|
||||
dict_queue_meta['length'] = r_serv_analyzer.llen('analyzer:{}:{}'.format(format_type, queue_uuid))
|
||||
if dict_queue_meta['length'] is None:
|
||||
dict_queue_meta['length'] = 0
|
||||
if not format_type:
|
||||
format_type = get_queue_format_type(queue_uuid)
|
||||
dict_queue_meta['format_type'] = format_type
|
||||
if format_type==254:
|
||||
if not extended_type:
|
||||
extended_type = get_queue_extended_type(queue_uuid)
|
||||
dict_queue_meta['extended_type'] = extended_type
|
||||
|
||||
dict_queue_meta['length'] = get_queue_size(queue_uuid, format_type, extended_type=extended_type)
|
||||
|
||||
if force_is_group_queue:
|
||||
dict_queue_meta['is_group_queue'] = True
|
||||
else:
|
||||
dict_queue_meta['is_group_queue'] = False
|
||||
|
||||
return dict_queue_meta
|
||||
|
||||
def edit_queue_description(queue_uuid, description):
|
||||
|
@ -138,7 +182,15 @@ def edit_queue_max_size(queue_uuid, max_size):
|
|||
# create queu by type or by group of uuid
|
||||
# # TODO: add size limit
|
||||
def create_queues(format_type, queue_uuid=None, l_uuid=[], queue_type='list', metatype_name=None, description=None):
|
||||
queue_uuid = sanitize_uuid(queue_uuid)
|
||||
if not d4_type.is_accepted_format_type(format_type):
|
||||
return {'error': 'Invalid type'}
|
||||
|
||||
ormat_type = sanitize_queue_type(format_type)
|
||||
|
||||
if format_type == 254 and not d4_type.is_accepted_extended_type(metatype_name):
|
||||
return {'error': 'Invalid extended type'}
|
||||
|
||||
queue_uuid = sanitize_uuid(queue_uuid, not_exist=True)
|
||||
r_serv_metadata.hset('analyzer:{}'.format(queue_uuid), 'type', format_type)
|
||||
edit_queue_description(queue_uuid, description)
|
||||
|
||||
|
@ -151,6 +203,7 @@ def create_queues(format_type, queue_uuid=None, l_uuid=[], queue_type='list', me
|
|||
if format_type == 254:
|
||||
# TODO: check metatype_name
|
||||
r_serv_metadata.sadd('{}:{}:{}'.format(analyzer_key_name, format_type, metatype_name), queue_uuid)
|
||||
r_serv_metadata.hset('analyzer:{}'.format(queue_uuid), 'metatype', metatype_name)
|
||||
else:
|
||||
r_serv_metadata.sadd('{}:{}'.format(analyzer_key_name, format_type), queue_uuid)
|
||||
|
||||
|
@ -193,9 +246,23 @@ def flush_queue(queue_uuid, format_type):
|
|||
r_serv_analyzer.delete('analyzer:{}:{}'.format(format_type, queue_uuid))
|
||||
|
||||
def remove_queues(queue_uuid, format_type, metatype_name=None):
|
||||
try:
|
||||
format_type = int(format_type)
|
||||
except:
|
||||
print('error: Invalid format type')
|
||||
return {'error': 'Invalid format type'}
|
||||
|
||||
if not is_valid_uuid_v4(queue_uuid):
|
||||
print('error: Invalid uuid')
|
||||
return {'error': 'Invalid uuid'}
|
||||
|
||||
if not exist_queue(queue_uuid):
|
||||
print('error: unknow queue uuid')
|
||||
return {'error': 'unknow queue uuid'}
|
||||
|
||||
if format_type==254 and not metatype_name:
|
||||
metatype_name = get_queue_extended_type(queue_uuid)
|
||||
|
||||
# delete metadata
|
||||
r_serv_metadata.delete('analyzer:{}'.format(queue_uuid))
|
||||
|
||||
|
@ -212,7 +279,6 @@ def remove_queues(queue_uuid, format_type, metatype_name=None):
|
|||
analyzer_key_name = 'analyzer'
|
||||
|
||||
if format_type == 254:
|
||||
# TODO: check metatype_name
|
||||
r_serv_metadata.srem('{}:{}:{}'.format(analyzer_key_name, format_type, metatype_name), queue_uuid)
|
||||
else:
|
||||
r_serv_metadata.srem('{}:{}'.format(analyzer_key_name, format_type), queue_uuid)
|
||||
|
|
|
@ -0,0 +1,42 @@
|
|||
#!/usr/bin/env python3
|
||||
# -*-coding:UTF-8 -*
|
||||
|
||||
import os
|
||||
import sys
|
||||
import datetime
|
||||
import time
|
||||
import uuid
|
||||
import redis
|
||||
|
||||
sys.path.append(os.path.join(os.environ['D4_HOME'], 'lib/'))
|
||||
import ConfigLoader
|
||||
|
||||
### Config ###
|
||||
config_loader = ConfigLoader.ConfigLoader()
|
||||
r_serv_metadata = config_loader.get_redis_conn("Redis_METADATA")
|
||||
config_loader = None
|
||||
### ###
|
||||
|
||||
def get_all_accepted_format_type(r_list=False):
|
||||
res = r_serv_metadata.smembers('server:accepted_type')
|
||||
if r_list:
|
||||
if res:
|
||||
return list(res)
|
||||
else:
|
||||
return []
|
||||
return res
|
||||
|
||||
def get_all_accepted_extended_type(r_list=False):
|
||||
res = r_serv_metadata.smembers('server:accepted_extended_type')
|
||||
if r_list:
|
||||
if res:
|
||||
return list(res)
|
||||
else:
|
||||
return []
|
||||
return res
|
||||
|
||||
def is_accepted_format_type(format_type):
|
||||
return r_serv_metadata.sismember('server:accepted_type', format_type)
|
||||
|
||||
def is_accepted_extended_type(extended_type):
|
||||
return r_serv_metadata.sismember('server:accepted_extended_type', extended_type)
|
|
@ -34,6 +34,7 @@ import Analyzer_Queue
|
|||
# Import Blueprint
|
||||
from blueprints.restApi import restApi
|
||||
from blueprints.settings import settings
|
||||
from blueprints.analyzer_queue import analyzer_queue
|
||||
|
||||
baseUrl = ''
|
||||
if baseUrl != '':
|
||||
|
@ -107,6 +108,7 @@ login_manager.init_app(app)
|
|||
# ========= BLUEPRINT =========#
|
||||
app.register_blueprint(restApi)
|
||||
app.register_blueprint(settings)
|
||||
app.register_blueprint(analyzer_queue)
|
||||
# ========= =========#
|
||||
|
||||
# ========= LOGIN MANAGER ========
|
||||
|
@ -516,53 +518,29 @@ def server_management():
|
|||
description = 'Please update your web server'
|
||||
|
||||
list_analyzer_uuid = []
|
||||
for analyzer_uuid in redis_server_metadata.smembers('analyzer:{}'.format(type)):
|
||||
size_limit = redis_server_metadata.hget('analyzer:{}'.format(analyzer_uuid), 'max_size')
|
||||
if size_limit is None:
|
||||
size_limit = analyzer_list_max_default_size
|
||||
last_updated = redis_server_metadata.hget('analyzer:{}'.format(analyzer_uuid), 'last_updated')
|
||||
if last_updated is None:
|
||||
last_updated = 'Never'
|
||||
else:
|
||||
last_updated = datetime.datetime.fromtimestamp(float(last_updated)).strftime('%Y-%m-%d %H:%M:%S')
|
||||
description_analyzer = redis_server_metadata.hget('analyzer:{}'.format(analyzer_uuid), 'description')
|
||||
if description_analyzer is None:
|
||||
description_analyzer = ''
|
||||
len_queue = redis_server_analyzer.llen('analyzer:{}:{}'.format(type, analyzer_uuid))
|
||||
if len_queue is None:
|
||||
len_queue = 0
|
||||
list_analyzer_uuid.append({'uuid': analyzer_uuid, 'description': description_analyzer, 'size_limit': size_limit,'last_updated': last_updated, 'length': len_queue})
|
||||
for analyzer_uuid in Analyzer_Queue.get_all_queues_by_type(type):
|
||||
list_analyzer_uuid.append(Analyzer_Queue.get_queue_metadata(analyzer_uuid, format_type=type))
|
||||
|
||||
for analyzer_uuid in Analyzer_Queue.get_all_queues_group_by_type(type):
|
||||
list_analyzer_uuid.append(Analyzer_Queue.get_queue_metadata(analyzer_uuid, type))
|
||||
list_analyzer_uuid.append(Analyzer_Queue.get_queue_metadata(analyzer_uuid, format_type=type, force_is_group_queue=True))
|
||||
|
||||
list_accepted_types.append({"id": int(type), "description": description, 'list_analyzer_uuid': list_analyzer_uuid})
|
||||
|
||||
list_accepted_extended_types = []
|
||||
l_queue_extended_type = []
|
||||
for extended_type in redis_server_metadata.smembers('server:accepted_extended_type'):
|
||||
list_accepted_extended_types.append({"name": extended_type, 'list_analyzer_uuid': []})
|
||||
|
||||
list_analyzer_uuid = []
|
||||
for analyzer_uuid in redis_server_metadata.smembers('analyzer:254:{}'.format(extended_type)):
|
||||
size_limit = redis_server_metadata.hget('analyzer:{}'.format(analyzer_uuid), 'max_size')
|
||||
if size_limit is None:
|
||||
size_limit = analyzer_list_max_default_size
|
||||
last_updated = redis_server_metadata.hget('analyzer:{}'.format(analyzer_uuid), 'last_updated')
|
||||
if last_updated is None:
|
||||
last_updated = 'Never'
|
||||
else:
|
||||
last_updated = datetime.datetime.fromtimestamp(float(last_updated)).strftime('%Y-%m-%d %H:%M:%S')
|
||||
description_analyzer = redis_server_metadata.hget('analyzer:{}'.format(analyzer_uuid), 'description')
|
||||
if description_analyzer is None:
|
||||
description_analyzer = ''
|
||||
len_queue = redis_server_analyzer.llen('analyzer:{}:{}'.format(extended_type, analyzer_uuid))
|
||||
if len_queue is None:
|
||||
len_queue = 0
|
||||
list_analyzer_uuid.append({'uuid': analyzer_uuid, 'description': description_analyzer, 'size_limit': size_limit,'last_updated': last_updated, 'length': len_queue})
|
||||
for extended_queue_uuid in Analyzer_Queue.get_all_queues_by_extended_type(extended_type):
|
||||
l_queue_extended_type.append(Analyzer_Queue.get_queue_metadata(extended_queue_uuid, format_type=254, extended_type=extended_type))
|
||||
|
||||
for extended_queue_uuid in Analyzer_Queue.get_all_queues_group_by_extended_type(extended_type):
|
||||
l_queue_extended_type.append(Analyzer_Queue.get_queue_metadata(extended_queue_uuid, format_type=254, extended_type=extended_type, force_is_group_queue=True))
|
||||
|
||||
list_accepted_extended_types.append({"name": extended_type, 'list_analyzer_uuid': list_analyzer_uuid})
|
||||
|
||||
return render_template("server_management.html", list_accepted_types=list_accepted_types, list_accepted_extended_types=list_accepted_extended_types,
|
||||
server_mode=server_mode,
|
||||
l_queue_extended_type=l_queue_extended_type,
|
||||
nb_sensors_registered=nb_sensors_registered, nb_sensors_pending=nb_sensors_pending,
|
||||
default_analyzer_max_line_len=default_analyzer_max_line_len,
|
||||
blacklisted_ip=blacklisted_ip, unblacklisted_ip=unblacklisted_ip,
|
||||
|
@ -788,30 +766,6 @@ def uuid_change_description():
|
|||
else:
|
||||
return jsonify({'error':'invalid uuid'}), 400
|
||||
|
||||
# # TODO: check analyser uuid dont exist
|
||||
@app.route('/add_new_analyzer')
|
||||
@login_required
|
||||
@login_user_basic
|
||||
def add_new_analyzer():
|
||||
format_type = request.args.get('type')
|
||||
user = request.args.get('redirect')
|
||||
metatype_name = request.args.get('metatype_name')
|
||||
analyzer_description = request.args.get('analyzer_description')
|
||||
analyzer_uuid = request.args.get('analyzer_uuid')
|
||||
if is_valid_uuid_v4(analyzer_uuid):
|
||||
try:
|
||||
format_type = int(format_type)
|
||||
if format_type < 0:
|
||||
return 'type, Invalid Integer'
|
||||
except:
|
||||
return 'type, Invalid Integer'
|
||||
|
||||
Analyzer_Queue.create_queues(format_type, queue_uuid=analyzer_uuid, l_uuid=[], queue_type='list', metatype_name=metatype_name, description=analyzer_description)
|
||||
if user:
|
||||
return redirect(url_for('server_management'))
|
||||
else:
|
||||
return 'Invalid uuid'
|
||||
|
||||
@app.route('/empty_analyzer_queue')
|
||||
@login_required
|
||||
@login_user_basic
|
||||
|
|
|
@ -0,0 +1,81 @@
|
|||
#!/usr/bin/env python3
|
||||
# -*-coding:UTF-8 -*
|
||||
|
||||
'''
|
||||
Flask functions and routes for the rest api
|
||||
'''
|
||||
|
||||
import os
|
||||
import re
|
||||
import sys
|
||||
import redis
|
||||
|
||||
sys.path.append(os.path.join(os.environ['D4_HOME'], 'lib'))
|
||||
import ConfigLoader
|
||||
import Analyzer_Queue
|
||||
|
||||
from flask import Flask, render_template, jsonify, request, Blueprint, redirect, url_for, Response
|
||||
from flask_login import login_required, current_user
|
||||
|
||||
from Role_Manager import login_admin, login_user_basic
|
||||
from Role_Manager import create_user_db, edit_user_db, delete_user_db, check_password_strength, generate_new_token, gen_password, get_all_role
|
||||
|
||||
# ============ BLUEPRINT ============
|
||||
|
||||
analyzer_queue = Blueprint('analyzer_queue', __name__, template_folder='templates')
|
||||
|
||||
# ============ VARIABLES ============
|
||||
|
||||
### Config ###
|
||||
config_loader = ConfigLoader.ConfigLoader()
|
||||
r_serv_metadata = config_loader.get_redis_conn("Redis_METADATA")
|
||||
r_serv_db = config_loader.get_redis_conn("Redis_SERV")
|
||||
config_loader = None
|
||||
### ###
|
||||
|
||||
# ============ FUNCTIONS ============
|
||||
|
||||
|
||||
# ============= ROUTES ==============
|
||||
|
||||
@analyzer_queue.route("/analyzer_queue/create_queue", methods=['GET'])
|
||||
@login_required
|
||||
@login_user_basic
|
||||
def create_analyzer_queue():
|
||||
return render_template("analyzer_queue/queue_creator.html")
|
||||
|
||||
@analyzer_queue.route("/analyzer_queue/create_queue_post", methods=['POST'])
|
||||
@login_required
|
||||
@login_user_basic
|
||||
def create_analyzer_queue_post():
|
||||
l_queue_meta = ['analyzer_type', 'analyzer_metatype', 'description', 'analyzer_uuid']
|
||||
queue_type = request.form.get("analyzer_type")
|
||||
queue_metatype = request.form.get("analyzer_metatype")
|
||||
queue_description = request.form.get("description")
|
||||
queue_uuid = request.form.get("analyzer_uuid")
|
||||
|
||||
queue_type = Analyzer_Queue.sanitize_queue_type(queue_type)
|
||||
|
||||
# unpack uuid group
|
||||
l_uuid = set()
|
||||
l_invalid_uuid = set()
|
||||
for obj_tuple in list(request.form):
|
||||
if obj_tuple not in l_queue_meta:
|
||||
sensor_uuid = request.form.get(obj_tuple)
|
||||
if Analyzer_Queue.is_valid_uuid_v4(sensor_uuid):
|
||||
l_uuid.add(sensor_uuid)
|
||||
else:
|
||||
if sensor_uuid:
|
||||
l_invalid_uuid.add(sensor_uuid)
|
||||
|
||||
l_uuid = list(l_uuid)
|
||||
l_invalid_uuid = list(l_invalid_uuid)
|
||||
if l_invalid_uuid:
|
||||
return render_template("analyzer_queue/queue_creator.html", queue_uuid=queue_uuid, queue_type=queue_type, metatype_name=queue_metatype,
|
||||
description=queue_description, l_uuid=l_uuid, l_invalid_uuid=l_invalid_uuid)
|
||||
|
||||
res = Analyzer_Queue.create_queues(queue_type, queue_uuid=queue_uuid, l_uuid=l_uuid, metatype_name=queue_metatype, description=queue_description)
|
||||
if isinstance(res,dict):
|
||||
return jsonify(res)
|
||||
if res:
|
||||
return redirect(url_for('server_management', _anchor=res))
|
|
@ -0,0 +1,7 @@
|
|||
<div class="input-group mb-1">
|
||||
<input type="text" class="form-control col-10 {%if error%}is-invalid{%else%}is-valid{%endif%}" name="{{sensor_uuid}}" value="{{sensor_uuid}}">
|
||||
<span class="btn btn-danger input-group-addon delete-field col-2"><i class="fa fa-trash"></i></span>
|
||||
<div class="invalid-feedback">
|
||||
Please provide a valid UUID v4.
|
||||
</div>
|
||||
</div>
|
|
@ -0,0 +1,158 @@
|
|||
<!DOCTYPE html>
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<title>D4-Project</title>
|
||||
<link rel="icon" href="{{ url_for('static', filename='img/d4-logo.png')}}">
|
||||
<!-- Core CSS -->
|
||||
<link href="{{ url_for('static', filename='css/bootstrap.min.css') }}" rel="stylesheet">
|
||||
<link href="{{ url_for('static', filename='font-awesome/css/font-awesome.css') }}" rel="stylesheet">
|
||||
<link href="{{ url_for('static', filename='css/dataTables.bootstrap.min.css') }}" rel="stylesheet">
|
||||
|
||||
<!-- JS -->
|
||||
<script src="{{ url_for('static', filename='js/jquery.js')}}"></script>
|
||||
<script src="{{ url_for('static', filename='js/popper.min.js')}}"></script>
|
||||
<script src="{{ url_for('static', filename='js/bootstrap.min.js')}}"></script>
|
||||
<script src="{{ url_for('static', filename='js/jquery.dataTables.min.js')}}"></script>
|
||||
<script src="{{ url_for('static', filename='js/dataTables.bootstrap.min.js')}}"></script>
|
||||
|
||||
<style>
|
||||
.popover{
|
||||
max-width: 100%;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
{% include 'navbar.html' %}
|
||||
|
||||
|
||||
|
||||
<div class="card mb-3 mt-1">
|
||||
<div class="card-header text-white bg-dark">
|
||||
<h5 class="card-title">Create Analyzer Queue</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
|
||||
<form action="{{ url_for('analyzer_queue.create_analyzer_queue_post') }}" method="post" enctype=multipart/form-data onsubmit="submitPaste()">
|
||||
|
||||
<div class="form-group mb-4">
|
||||
<label for="analyzer_type"><b>Analyzer Type</b></label>
|
||||
<input class="form-control col-md-4" type="number" name="analyzer_type" id="analyzer_type" value="{%if queue_type%}{{queue_type}}{%else%}1{%endif%}" min="1" max="254" required>
|
||||
<input class="form-control" type="text" name="analyzer_metatype" id="analyzer_metatype_name" placeholder="Meta Type Name" {%if metatype_name%}value="{{metatype_name}}"{%endif%}>
|
||||
</div>
|
||||
|
||||
<div class="input-group my-2">
|
||||
<div class="input-group-prepend">
|
||||
<button class="btn btn-outline-secondary" type="button" onclick="generate_new_uuid();"><i class="fa fa-random"></i></button>
|
||||
</div>
|
||||
<input class="form-control col-md-4" type="text" name="analyzer_uuid" id="analyzer_uuid" {%if queue_uuid%}value="{{queue_uuid}}"{%endif%} required placeholder="Analyzer uuid - (Optional)">
|
||||
</div>
|
||||
|
||||
<div class="form-group my-2">
|
||||
<input class="form-control" type="text" name="description" id="analyzer_description" {%if description%}value="{{description}}"{%endif%} required placeholder="Description - (Optional)">
|
||||
</div>
|
||||
|
||||
<div id="container-id-to-import">
|
||||
|
||||
<p>Create Queue by Group of UUID</p>
|
||||
|
||||
<div for="first_sensor_uuid"><b>Sensor UUID</b></div>
|
||||
|
||||
<div class="form-horizontal">
|
||||
<div class="form-body">
|
||||
<div class="form-group">
|
||||
<div class="fields">
|
||||
|
||||
{% if l_uuid %}
|
||||
{% for sensor_uuid in l_uuid %}
|
||||
{% with sensor_uuid=sensor_uuid, error=False%}
|
||||
{% include 'analyzer_queue/block_add_sensor_to_group_block.html' %}
|
||||
{% endwith %}
|
||||
{% endfor %}
|
||||
<br>
|
||||
{% endif %}
|
||||
{% if l_invalid_uuid %}
|
||||
{% for sensor_uuid in l_invalid_uuid %}
|
||||
{% with sensor_uuid=sensor_uuid, error=True%}
|
||||
{% include 'analyzer_queue/block_add_sensor_to_group_block.html' %}
|
||||
{% endwith %}
|
||||
{% endfor %}
|
||||
<br>
|
||||
{% endif %}
|
||||
<div class="input-group mb-1">
|
||||
<input type="text" class="form-control col-10" name="first_sensor_uuid" id="first_sensor_uuid">
|
||||
<span class="btn btn-info input-group-addon add-field col-2"><i class="fa fa-plus"></i></span>
|
||||
</div>
|
||||
<span class="help-block" hidden>Export Objects</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<button class="btn btn-info" type="submit">Create Queue</button>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
{% include 'navfooter.html' %}
|
||||
</body>
|
||||
|
||||
<script>
|
||||
$(document).ready(function(){
|
||||
$("#nav-sensor").addClass("active");
|
||||
{%if queue_type!=2 and queue_type!=254%}
|
||||
$('#analyzer_metatype_name').hide();
|
||||
{%endif%}
|
||||
});
|
||||
|
||||
|
||||
var input_part_1 = '<div class="input-group mb-1"><input type="text" class="form-control col-10" name="'
|
||||
var input_part_2 = '"></div>'
|
||||
var minusButton = '<span class="btn btn-danger input-group-addon delete-field col-2"><i class="fa fa-trash"></i></span>'
|
||||
|
||||
$('.add-field').click(function() {
|
||||
var new_uuid = uuidv4();
|
||||
var template = input_part_1 + new_uuid + input_part_2;
|
||||
var temp = $(template).insertBefore('.help-block');
|
||||
temp.append(minusButton);
|
||||
});
|
||||
|
||||
$('.fields').on('click', '.delete-field', function(){
|
||||
console.log($(this).parent());
|
||||
$(this).parent().remove();
|
||||
//$.get( "#")
|
||||
});
|
||||
|
||||
function uuidv4() {
|
||||
return ([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g, c =>
|
||||
(c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)
|
||||
);
|
||||
}
|
||||
|
||||
$('#analyzer_type').on('input', function() {
|
||||
if ($('#analyzer_type').val() == 2 || $('#analyzer_type').val() == 254){
|
||||
$('#analyzer_metatype_name').show()
|
||||
} else {
|
||||
$('#analyzer_metatype_name').hide()
|
||||
}
|
||||
});
|
||||
|
||||
function generate_new_uuid(){
|
||||
$.getJSON( "{{url_for('generate_uuid')}}", function( data ) {
|
||||
console.log(data['uuid'])
|
||||
$( "#analyzer_uuid" ).val(data['uuid']);
|
||||
});
|
||||
}
|
||||
|
||||
</script>
|
|
@ -231,11 +231,12 @@
|
|||
<div class="card-body text-dark">
|
||||
|
||||
<div class="row">
|
||||
<div class="col-xl-8">
|
||||
<div class="col-xl-10">
|
||||
<table class="table table-striped table-bordered table-hover" id="myTable_1">
|
||||
<thead class="thead-dark">
|
||||
<tr>
|
||||
<th>Type</th>
|
||||
<th>Group</th>
|
||||
<th style="max-width: 800px;">uuid</th>
|
||||
<th style="max-width: 800px;">last updated</th>
|
||||
<th style="max-width: 800px;">Change max size limit</th>
|
||||
|
@ -246,8 +247,13 @@
|
|||
{% for type in list_accepted_types %}
|
||||
{% if type['list_analyzer_uuid'] %}
|
||||
{% for analyzer in type['list_analyzer_uuid'] %}
|
||||
<tr>
|
||||
<tr id="{{analyzer['uuid']}}">
|
||||
<td>{{type['id']}}</td>
|
||||
{%if analyzer['is_group_queue']%}
|
||||
<td class="text-center"><i class="fa fa-group"></i></td>
|
||||
{%else%}
|
||||
<td></td>
|
||||
{%endif%}
|
||||
<td>
|
||||
<div class="d-flex">
|
||||
{{analyzer['uuid']}}
|
||||
|
@ -284,6 +290,7 @@
|
|||
<thead class="thead-dark">
|
||||
<tr>
|
||||
<th>Type Name</th>
|
||||
<th>Group</th>
|
||||
<th style="max-width: 800px;">uuid</th>
|
||||
<th style="max-width: 800px;">last updated</th>
|
||||
<th style="max-width: 800px;">Change max size limit</th>
|
||||
|
@ -291,60 +298,49 @@
|
|||
</tr>
|
||||
</thead>
|
||||
<tbody id="analyzer_accepted_extended_types_tbody">
|
||||
{% for type in list_accepted_extended_types %}
|
||||
{% if type['list_analyzer_uuid'] %}
|
||||
{% for analyzer in type['list_analyzer_uuid'] %}
|
||||
<tr>
|
||||
<td>{{type['name']}}</td>
|
||||
<td>
|
||||
<div class="d-flex">
|
||||
{{analyzer['uuid']}}
|
||||
<a href="{{ url_for('remove_analyzer') }}?redirect=1&type=254&metatype_name={{type['name']}}&analyzer_uuid={{analyzer['uuid']}}" class="ml-auto">
|
||||
<button type="button" class="btn btn-outline-danger px-2 py-0"><i class="fa fa-trash"></i></button>
|
||||
</a>
|
||||
</div>
|
||||
{%if analyzer['description']%}
|
||||
<div class="text-info"><small>{{analyzer['description']}}</small></div>
|
||||
{%endif%}
|
||||
</td>
|
||||
<td>{{analyzer['last_updated']}}</td>
|
||||
<td>
|
||||
<div class="d-xl-flex justify-content-xl-center">
|
||||
<input class="form-control mr-lg-1" style="max-width: 100px;" type="number" id="max_size_analyzer_{{analyzer['uuid']}}" value="{{analyzer['size_limit']}}" min="0" required="">
|
||||
<button type="button" class="btn btn-outline-secondary" onclick="window.location.href ='{{ url_for('analyzer_change_max_size') }}?analyzer_uuid={{analyzer['uuid']}}&redirect=0&max_size_analyzer='+$('#max_size_analyzer_{{analyzer['uuid']}}').val();">Change Max Size</button>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<a href="{{ url_for('empty_analyzer_queue') }}?redirect=1&type=254&metatype_name={{type['name']}}&analyzer_uuid={{analyzer['uuid']}}">
|
||||
<button type="button" class="btn btn-outline-danger"><i class="fa fa-eraser"></i></button>
|
||||
</a>
|
||||
<button type="button" class="btn btn-outline-info ml-xl-3" onclick="get_analyser_sample('{{type['name']}}', '{{analyzer['uuid']}}');"><i class="fa fa-database"></i> {{analyzer['length']}}</button>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% for dict_queue in l_queue_extended_type %}
|
||||
<tr>
|
||||
<td>{{dict_queue['extended_type']}}</td>
|
||||
{%if dict_queue['is_group_queue']%}
|
||||
<td class="text-center"><i class="fa fa-group"></i></td>
|
||||
{%else%}
|
||||
<td></td>
|
||||
{%endif%}
|
||||
<td>
|
||||
<div class="d-flex">
|
||||
{{dict_queue['uuid']}}
|
||||
<a href="{{ url_for('remove_analyzer') }}?redirect=1&type=254&metatype_name={{dict_queue['extended_type']}}&analyzer_uuid={{dict_queue['uuid']}}" class="ml-auto">
|
||||
<button type="button" class="btn btn-outline-danger px-2 py-0"><i class="fa fa-trash"></i></button>
|
||||
</a>
|
||||
</div>
|
||||
{%if dict_queue['description']%}
|
||||
<div class="text-info"><small>{{dict_queue['description']}}</small></div>
|
||||
{%endif%}
|
||||
</td>
|
||||
<td>{{dict_queue['last_updated']}}</td>
|
||||
<td>
|
||||
<div class="d-xl-flex justify-content-xl-center">
|
||||
<input class="form-control mr-lg-1" style="max-width: 100px;" type="number" id="max_size_analyzer_{{dict_queue['uuid']}}" value="{{dict_queue['size_limit']}}" min="0" required="">
|
||||
<button type="button" class="btn btn-outline-secondary" onclick="window.location.href ='{{ url_for('analyzer_change_max_size') }}?analyzer_uuid={{dict_queue['uuid']}}&redirect=0&max_size_analyzer='+$('#max_size_analyzer_{{dict_queue['uuid']}}').val();">Change Max Size</button>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<a href="{{ url_for('empty_analyzer_queue') }}?redirect=1&type=254&metatype_name={{dict_queue['extended_type']}}&analyzer_uuid={{dict_queue['uuid']}}">
|
||||
<button type="button" class="btn btn-outline-danger"><i class="fa fa-eraser"></i></button>
|
||||
</a>
|
||||
<button type="button" class="btn btn-outline-info ml-xl-3" onclick="get_analyser_sample('{{dict_queue['extended_type']}}', '{{dict_queue['uuid']}}');"><i class="fa fa-database"></i> {{dict_queue['length']}}</button>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="col-xl-4">
|
||||
<div class="card border-dark mt-3" style="max-width: 18rem;">
|
||||
<div class="card-body text-dark">
|
||||
<h5 class="card-title">Add New Analyzer Queue</h5>
|
||||
<input class="form-control" type="number" id="analyzer_type" value="1" min="1" max="254" required>
|
||||
<input class="form-control" type="text" id="analyzer_metatype_name" placeholder="Meta Type Name">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<button class="btn btn-outline-secondary" type="button" onclick="generate_new_uuid();"><i class="fa fa-random"></i></button>
|
||||
</div>
|
||||
<input class="form-control" type="text" id="analyzer_uuid" required placeholder="Analyzer uuid">
|
||||
</div>
|
||||
<input class="form-control" type="text" id="analyzer_description" required placeholder="Optional Description">
|
||||
<button type="button" class="btn btn-outline-primary mt-1" onclick="window.location.href ='{{ url_for('add_new_analyzer') }}?redirect=1&type='+$('#analyzer_type').val()+'&analyzer_uuid='+$('#analyzer_uuid').val()+'&metatype_name='+$('#analyzer_metatype_name').val()+'&analyzer_description='+$('#analyzer_description').val();">Add New Analyzer</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xl-2">
|
||||
<a href="{{ url_for('analyzer_queue.create_analyzer_queue') }}" class="ml-auto">
|
||||
<button type="button" class="btn btn-primary"><i class="fa fa-plus"></i> Add New Analyzer Queue</button>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -430,7 +426,7 @@ if (tbody.children().length == 0) {
|
|||
}
|
||||
|
||||
$('#accepted_type').on('input', function() {
|
||||
if ($('#accepted_type').val() == 254){
|
||||
if ($('#analyzer_type').val() == 2 || $('#accepted_type').val() == 254){
|
||||
$('#extended_type_name').show()
|
||||
} else {
|
||||
$('#extended_type_name').hide()
|
||||
|
@ -438,7 +434,7 @@ $('#accepted_type').on('input', function() {
|
|||
});
|
||||
|
||||
$('#analyzer_type').on('input', function() {
|
||||
if ($('#analyzer_type').val() == 254){
|
||||
if ($('#analyzer_type').val() == 2 || $('#analyzer_type').val() == 254){
|
||||
$('#analyzer_metatype_name').show()
|
||||
} else {
|
||||
$('#analyzer_metatype_name').hide()
|
||||
|
|
Loading…
Reference in New Issue