finish database query. but some codec is wrong
This commit is contained in:
parent
6fb9235b1b
commit
bb775e4b20
|
@ -218,7 +218,7 @@ BOOL envDatabase::init() {
|
|||
if (result != SQLITE_OK) return FALSE;
|
||||
|
||||
result = sqlite3_exec(db,
|
||||
"CREATE TABLE op([funcptr] INTEGER, [in1_guid] TEXT, [in2_guid] TEXT, [out_guid] TEXT, [op_guid] INTEGER, [op_name] TEXT, [op_code] INTEGER);",
|
||||
"CREATE TABLE op([funcptr] INTEGER, [in1_guid] TEXT, [in2_guid] TEXT, [out_guid] TEXT, [op_guid] TEXT, [op_name] TEXT, [op_code] INTEGER);",
|
||||
NULL, NULL, NULL);
|
||||
if (result != SQLITE_OK) return FALSE;
|
||||
result = sqlite3_exec(db,
|
||||
|
|
|
@ -22,6 +22,13 @@ def get_db():
|
|||
db = g._database = sqlite3.connect(CustomConfig.decorated_db)
|
||||
return db
|
||||
|
||||
def get_env():
|
||||
env = getattr(g, '_envDatabase', None)
|
||||
if env is None:
|
||||
env = g._envDatabase = sqlite3.connect(CustomConfig.env_db)
|
||||
env.text_factory = lambda x: x.decode(CustomConfig.database_encoding)
|
||||
return env
|
||||
|
||||
@app.teardown_appcontext
|
||||
def close_connection(exception):
|
||||
db = getattr(g, '_database', None)
|
||||
|
@ -39,14 +46,25 @@ def block_pin_decoder2(target):
|
|||
return [vab['name'], vab['type']]
|
||||
|
||||
# =============================================route
|
||||
|
||||
# =========== default
|
||||
|
||||
@app.route('/', methods=['GET'])
|
||||
def nospecHandle():
|
||||
return redirect(url_for('indexHandle'))
|
||||
|
||||
# =========== misc page
|
||||
|
||||
@app.route('/help', methods=['GET'])
|
||||
def helpMainHandle():
|
||||
return render_template("help.html")
|
||||
|
||||
@app.route('/about', methods=['GET'])
|
||||
def aboutHandle():
|
||||
return render_template("about.html", static_icon = url_for('static', filename='icon.png'))
|
||||
|
||||
# =========== help page
|
||||
|
||||
@app.route('/help/<path:scriptPath>', methods=['GET'])
|
||||
def helpHandle(scriptPath):
|
||||
if scriptPath == 'converter':
|
||||
|
@ -64,9 +82,47 @@ def helpHandle(scriptPath):
|
|||
else:
|
||||
abort(404)
|
||||
|
||||
@app.route('/about', methods=['GET'])
|
||||
def aboutHandle():
|
||||
return render_template("about.html", static_icon = url_for('static', filename='icon.png'))
|
||||
@app.route('/help/env', methods=['POST'])
|
||||
def envQueryHandle():
|
||||
basicReturn = {
|
||||
"status": False,
|
||||
"overflow": False,
|
||||
"data": []
|
||||
}
|
||||
|
||||
# check tag
|
||||
queryTag = request.form['tag'];
|
||||
if queryTag not in ss.legalEnvQueryKey:
|
||||
return basicReturn
|
||||
|
||||
cur = get_env().cursor()
|
||||
#try:
|
||||
readyData = json.loads(request.form['data'])
|
||||
fieldLength = len(readyData.keys())
|
||||
if fieldLength == 0:
|
||||
cur.execute("SELECT * FROM {}".format(queryTag))
|
||||
else:
|
||||
whereStatement = '&&'.join(map(lambda x: "([" + x + "] = ?)", readyData.keys()))
|
||||
cur.execute("SELECT * FROM {} WHERE ({})".format(queryTag, whereStatement), list(readyData.values()))
|
||||
|
||||
# iterate
|
||||
counter = 0
|
||||
for i in cur.fetchall():
|
||||
if counter == 100:
|
||||
basicReturn['overflow'] = True
|
||||
break
|
||||
basicReturn['data'].append(i)
|
||||
counter+=1
|
||||
|
||||
basicReturn['status'] = True
|
||||
#except Exception as ex:
|
||||
# basicReturn['status'] = False
|
||||
# basicReturn['overflow'] = False
|
||||
# basicReturn['data'] = []
|
||||
|
||||
return basicReturn
|
||||
|
||||
# =========== index
|
||||
|
||||
@app.route('/index', methods=['GET'])
|
||||
def indexHandle():
|
||||
|
@ -81,6 +137,8 @@ def indexHandle():
|
|||
|
||||
return render_template('index.html', scripts = data)
|
||||
|
||||
# =========== viewer
|
||||
|
||||
@app.route('/viewer/<path:scriptPath>', methods=['GET'])
|
||||
def viewerHandle(scriptPath):
|
||||
|
||||
|
@ -154,5 +212,4 @@ def moveHandle(target):
|
|||
|
||||
def run():
|
||||
app.run()
|
||||
|
||||
|
||||
|
|
@ -22,5 +22,61 @@ envDatabaseList = (
|
|||
{"name": "Message",
|
||||
"queryKey": "msg",
|
||||
"data": (("index", "0", "(Integer) Message index"),
|
||||
("name", "OnClick", "(String) Message name"))}
|
||||
("name", "OnClick", "(String) Message name"))},
|
||||
{"name": "Operation",
|
||||
"queryKey": "op",
|
||||
"data": (("funcptr", "615841344", "(Integer) Operation function memory location"),
|
||||
("in1_guid", "1910468930,-1003023558", "(String) Input parameter 1 guid"),
|
||||
("in2_guid", "-1411304621,-1568456412", "(String) Input parameter 2 guid"),
|
||||
("out_guid", "450177678,1584666912", "(String) Output parameter guid"),
|
||||
("op_guid", "869034825,898181163", "(String) Operation guid"),
|
||||
("op_name", "Addition", "(String) Operation name"),
|
||||
("op_code", "51", "(Integer) Operation code"))},
|
||||
{"name": "Parameter",
|
||||
"queryKey": "param",
|
||||
"data": (("index", "0", "(Integer) Parameter index"),
|
||||
("guid", "481363808,1100959941", "(String) Parameter guid"),
|
||||
("derived_from", "0,0", "(String) The parameter guid deriving this parameter"),
|
||||
("type_name", "None", "(String) Parameter name"),
|
||||
("default_size", "4", "(Integer) Default size"),
|
||||
("func_CreateDefault", "604002966", "(Integer) CreateDefault function memory location"),
|
||||
("func_Delete", "604003366", "(Integer) Delete function memory location"),
|
||||
("func_SaveLoad", "603996047", "(Integer) SaveLoad function memory location"),
|
||||
("func_Check", "0", "(Integer) Check function memory location"),
|
||||
("func_Copy", "604002468", "(Integer) Copy function memory location"),
|
||||
("func_String", "0", "(Integer) String function memory location"),
|
||||
("func_UICreator", "619055248", "(Integer) UICreator function memory location"),
|
||||
("creator_dll_index", "-1", "(Integer) The id of the dll defining this parameter"),
|
||||
("creator_plugin_index", "-1", "(Integer) The id of the plugin defining this parameter"),
|
||||
("dw_param", "0", "(Integer) An application reserved DWORD for placing parameter type specific data"),
|
||||
("dw_flags", "133", "(Integer) Flags specifying special settings for this parameter type"),
|
||||
("cid", "0", "(Integer) Special case for parameter types that refer to CKObjects => corresponding class ID of the object"),
|
||||
("saver_manager", "1181355948,0", "(String) Int Manager guid"))},
|
||||
{"name": "Plugin",
|
||||
"queryKey": "plugin",
|
||||
"data": (("dll_index", "18", "(Integer) Dll index"),
|
||||
("dll_name", "E:\\Virtools\\Plugins\\ImageReader.dll", "(String) Dll name"),
|
||||
("plugin_index", "2", "(Integer) Plugin index"),
|
||||
("category", "Bitmap Readers", "(String) Plugin category"),
|
||||
("active", "1", "(Integer) For manager and Render engines TRUE if a manager was created, for other plugins this value is not used"),
|
||||
("needed_by_file", "0", "(Integer) When saving a file TRUE if at least one object needs this plugin"),
|
||||
("guid", "1632248895,1132147523", "(String) Plugin guid"),
|
||||
("desc", "Windows Bitmap", "(String) Plugin description"),
|
||||
("author", "Virtools", "(String) Plugin author"),
|
||||
("summary", "Windows Bitmap", "(String) Plugin summary"),
|
||||
("version", "1", "(Integer) Plugin version"),
|
||||
("func_init", "103354496", "(Integer) Init function memory location"),
|
||||
("func_exit", "624432336", "(Integer) Exit function memory location"))},
|
||||
{"name": "Variable",
|
||||
"queryKey": "variable",
|
||||
"data": (("name", "3D XML/ExportVersion", "(String) Variable name"),
|
||||
("description", "Version of exported 3DXML", "(String) Variable description"),
|
||||
("flags", "4", "(Integer) Variable flags"),
|
||||
("type", "1", "(Integer) Variable type"),
|
||||
("representation", "enum:0= 3DXML 3.0; 1= 3DXML 4.0", "(String) The representation (ie the input format) of a variable type"),
|
||||
("data", " 3DXML 3.0", "(String) Variable data"))}
|
||||
)
|
||||
|
||||
legalEnvQueryKey = list(map(lambda x: x['queryKey'], envDatabaseList))
|
||||
|
||||
|
||||
|
|
|
@ -1,3 +1,45 @@
|
|||
function doQuery(fieldIndex, queryTag) {
|
||||
;
|
||||
// collect data
|
||||
var readyData = {};
|
||||
$("#queryTable_" + fieldIndex + " tr:not(:first-child)").each(function() {
|
||||
var isEnabled = $(this).find(":nth-child(1) input").prop("checked");
|
||||
if (!isEnabled) return;
|
||||
|
||||
var fieldName = $(this).find(":nth-child(2)").attr("queryName");
|
||||
var fieldValue = $(this).find(":nth-child(3) input").val();
|
||||
|
||||
readyData[fieldName] = fieldValue;
|
||||
});
|
||||
|
||||
var jsonData = JSON.stringify(readyData);
|
||||
|
||||
// raise post
|
||||
$.post(window.location,
|
||||
{
|
||||
tag: queryTag,
|
||||
data: jsonData
|
||||
},
|
||||
function (data, status) {
|
||||
// remove data
|
||||
$("#resultTable_" + fieldIndex + " tr:not(:first-child)").remove();
|
||||
|
||||
// check
|
||||
if (!data['status']) {
|
||||
alert("Fail to query!");
|
||||
return;
|
||||
}
|
||||
|
||||
// check overflow
|
||||
if (data['overflow']) $("#resultTableOverflow_" + fieldIndex).show();
|
||||
else $("#resultTableOverflow_" + fieldIndex).hide();
|
||||
|
||||
// insert data
|
||||
for(var i = 0; i < data['data'].length; i++) {
|
||||
$("#resultTable_" + fieldIndex).append("<tr></tr>");
|
||||
for(var j = 0; j < data['data'][i].length; j++) {
|
||||
$("#resultTable_" + fieldIndex + " tr:last-child").append("<td></td>");
|
||||
$("#resultTable_" + fieldIndex + " tr:last-child td:last-child").text(data['data'][i][j]);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
|
@ -38,7 +38,7 @@
|
|||
{% for innerItem in item.data %}
|
||||
<tr>
|
||||
<td><input type="checkbox" value="1"></input></td>
|
||||
<td>{{ innerItem[0]|e }}</td>
|
||||
<td queryName="{{ innerItem[0]|e }}">{{ innerItem[0]|e }}</td>
|
||||
<td><input type="text"></input></td>
|
||||
<td>{{ innerItem[1]|e }}</td>
|
||||
<td>{{ innerItem[2]|e }}</td>
|
||||
|
@ -48,8 +48,14 @@
|
|||
|
||||
<button style="padding: 5px;" onclick="doQuery({{ loop.index }}, "{{ item.queryKey }}");">Query</button>
|
||||
<p>Query result:</p>
|
||||
<p id="resultTableOverflow_{{ loop.index }}" style="color: red; display: none;">The count of query result is more than 100 items(Only the first 100 items will be shown). Please give more limitation.</p>
|
||||
|
||||
<table class="envOutput" cellspacing="0" cellpadding="5" style="margin: 10px;">
|
||||
<table id="resultTable_{{ loop.index }}" class="envOutput" cellspacing="0" cellpadding="5" style="margin: 10px;">
|
||||
<tr>
|
||||
{% for innerItem in item.data %}
|
||||
<td>{{ innerItem[0]|e }}</td>
|
||||
{% endfor %}
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
{% endfor %}
|
||||
|
|
Loading…
Reference in New Issue
Block a user