FSN#38916 FACFAC Superuser alle tabellen kunnen bekijken

svn path=/Website/trunk/; revision=32239
This commit is contained in:
Jos Groot Lipman
2017-01-05 21:40:24 +00:00
parent 251ea3c3f8
commit 602b3c4551
5 changed files with 44 additions and 11 deletions

View File

@@ -91,9 +91,11 @@ function model_generic(table, autfunction)
+ " ORDER BY column_id";
var oRs = Oracle.Execute(sql);
var hasName = false;
model.nrfields = 0;
var seq = _findseq(model.primary);
while (!oRs.eof)
{
model.nrfields++;
var field = { dbs: oRs.Fields("column_name").Value,
label: oRs.Fields("column_name").Value,
typ: "varchar"
@@ -114,20 +116,38 @@ function model_generic(table, autfunction)
if (field.dbs.match(/_key$/))
{
field.typ = 'key';
if (field.dbs != model.primary &&
foreignKeyTable(field.dbs.replace(/_key$/,""))) // TODO ipv. de replace echt foreign-key constraint controleren
if (field.dbs != model.primary)
{
field.foreign = field.dbs.replace(/_key$/,"");
field.label = field.foreign + "(_key)"; // indicatie dat het foreign is
field.filter = "exact";
var ftable = field.dbs.replace(/_key$/,"");// TODO ipv. de replace echt foreign-key constraint controleren
var sql = "SELECT table_name, num_rows"
+ " FROM user_tables"
+ " WHERE table_name = " + safe.quoted_sql_upper(ftable)
+ " OR table_name = " + safe.quoted_sql_upper(ftable.substr(4)); // mld_alg_locatie_key bijv.
var oRs2 = Oracle.Execute(sql);
if (!oRs2.Eof)
{
ftable = oRs2("table_name").Value.toLowerCase();
field.num_rows = oRs2("num_rows").Value;
field.foreign = { tbl: ftable, key: field.dbs, desc: field.dbs };
field.infoPointer = { Url: "appl/mgt/mgt_generic.asp?mode=show&table=" + ftable + "&id=" };
}
oRs2.Close();
if (foreignKeyTable(ftable))
{
field.foreign = ftable;
field.label = field.label.replace(/_key$/, "(_key)"); // indicatie dat het foreign is
field.filter = "exact";
}
}
}
break;
case "DATE":
field.typ = 'datetime';
if (field.dbs == table.toLowerCase() + "_datum" ||
field.dbs == table.toLowerCase() + "_van" ||
field.dbs == table.toLowerCase() + "_aanmaak")
if (field.dbs == model.table + "_datum" ||
field.dbs == model.table + "_van" ||
field.dbs == model.table + "_aanmaak")
field.filter = "range";
break;
case "VARCHAR2":

View File

@@ -21,7 +21,8 @@ function model_user_tables()
this.record_name = "Table";
this.autfunction = "WEB_FACFAC";
this.fields = { "id" : { dbs: "table_name", typ: "varchar", label: "Table" },
this.fields = { "id" : { dbs: "table_name", typ: "varchar", label: "key" },
"name" : { dbs: "table_name", typ: "varchar", label: "Table" }, // dubbel voor filtering
"rows" : { dbs: "num_rows", typ: "number", label: "Estimated rows" },
"analyzed" : { dbs: "last_analyzed", typ: "datetime", label: "Last analyzed" }
};

View File

@@ -29,6 +29,9 @@
if ("estimated_rows" in model && model.estimated_rows < S("qp_maxrows"))
params.search = { autosearch: true };
if (model.nrfields > 10)
params.multicolumn = true;
model.REST_GET = generic_REST_GET(model);
// geforceerd readonly
model.REST_POST = null;

View File

@@ -24,7 +24,7 @@
"search": {
autosearch: true,
"filters": [
//"id" werkt niet goed?
"name"
]
},

View File

@@ -177,6 +177,11 @@ function scf_ROFIELDTR(model, fld, val, key, params)
title = "Size: {0} bytes".format(txt["size"]);
if ("content_url" in txt) // Plaatjes en zo
infoPointer = { Url: txt["content_url"], NewWindow: true };
else if ("infoPointer" in field)
{
infoPointer = field.infoPointer;
infoPointer.Url += txt.id;
}
else if ("foreign" in field)
{ // Probeer een infopointer te gokken
var guesses = [field.foreign.modelname, field.foreign.tbl, field.dbs.replace(/\_key$/, "")]
@@ -275,6 +280,10 @@ function scf_RWFIELDTR(model, fld, val, key, params)
return scf_ROFIELDTR(model, fld, val);
}
// we doen automatische listboxen maar vanuit model_generic kan dat te gortig worden
if (field.foreign && params.search && "num_rows" in field && field.num_rows > 1000) /* of S("qp_maxrows") */
field.foreign = null;
if (field.foreign)
{
if (typeof field.foreign == 'function')
@@ -479,7 +488,7 @@ function scf_RWFIELDTR(model, fld, val, key, params)
required: true,
autosize: field.autosize
});
else if (field.typ == "date")
else if (field.typ == "date" || (field.typ == "datetime" && params.search))
FCLTcalendar(fld, { label : field.label,
datum : val,
timeField: false,