FSN#36112 Workflowschermen nieuwe stijl

svn path=/Website/trunk/; revision=28975
This commit is contained in:
Jos Groot Lipman
2016-04-17 17:22:26 +00:00
parent 125b7f282c
commit 5ed64263c6
7 changed files with 253 additions and 100 deletions

View File

@@ -1,78 +0,0 @@
<% /*
$Revision$
$Id$
File: model_mld_workflow.inc
Description: Vanuit CodeCharge gegenereerd model voor mld_workflow
Context:
Notes:
*/
%>
<%
function model_mld_workflow()
{
this.table = "mld_workflowstep";
this.primary = "mld_workflowstep_key";
this.records_name = "mld_workflowsteps";
this.record_name = "mld_workflowstep";
this.autfunction = "WEB_MLDMGT";
this.record_title = L("mld_workflow");
this.records_title = L("mld_workflow_m");
this.fields = {
"id": {
"dbs": "mld_workflowstep_key",
"label": "Key",
"typ": "key",
"required": true,
"filter": "exact",
"seq": "mld_s_mld_workflowstep_key",
"readonly": true
},
"start": {
"dbs": "mld_workflowstep_start_key",
"label": L("mld_workflowstep_start"),
"typ": "key"
},
"stdmelding": {
"dbs": "mld_stdmelding_key",
"label": L("mld_stdmelding_key"),
"typ": "key",
"foreign": {
"tbl": "(select m.mld_stdmelding_key"
+ " , d.ins_discipline_omschrijving || '/' || m.mld_stdmelding_omschrijving stdmelding_omschr"
+ " from mld_stdmelding m"
+ " , mld_v_aanwezigdiscipline d"
+ " where m.mld_ins_discipline_key = d.ins_discipline_key"
+ " order by d.ins_discipline_omschrijving asc"
+ " , m.mld_stdmelding_omschrijving asc)",
"key": "mld_stdmelding_key",
"desc": "stdmelding_omschr"
},
"filter": "exact",
"LOVinit": ""
},
"name": {
"dbs": "mld_workflowstep_omschrijving",
"label": L("mld_workflowstep_omschr"),
"typ": "varchar"
},
"jointype": {
"dbs": "mld_workflowstep_jointype",
"label": L("mld_workflowstep_jointype"),
"typ": "number"
}
};
this.REST_GET = generic_REST_GET(this);
this.REST_POST = generic_REST_POST(this);
this.REST_PUT = generic_REST_PUT(this);
this.REST_DELETE = generic_REST_DELETE(this);
}
%>

View File

@@ -0,0 +1,153 @@
<% /*
$Revision$
$Id$
File: model_mld_workflow.inc
Description: Vanuit CodeCharge gegenereerd model voor mld_workflow
Context:
Notes:
*/
%>
<!-- #include file="../api2/model_mld_workflowrule.inc" -->
<%
// model_mld_workflow is het pseudomodel van een compleet workflow*schema*
function model_mld_workflow()
{
var this_model = new model_mld_workflowstep();
delete this_model.fields.start;
delete this_model.fields.jointype;
delete this_model.fields.level;
this_model.fields.stdmelding.label = L("mld_workflowstep_start");
this_model.record_title = L("mld_workflow");
this_model.records_title = L("mld_workflow_m");
// Een include van model_mld_workflowstep met joinfield 'start_key'
// met alle meldingen in dit schema zou hier niet misstaan.
// Problemen: de start_key is bij de startmelding niet ingevuld
// model_mld_workflowstep heeft ook nog weer een include
// rules en scaffolding kan drie-die (toch?) niet aan
return this_model;
}
// model_mld_workflowstep is van een individuele step (melding) in een schema
function model_mld_workflowstep(mystart_key)
{
this.table = "mld_workflowstep";
this.primary = "mld_workflowstep_key";
this.records_name = "mld_workflowsteps";
this.record_name = "mld_workflowstep";
this.autfunction = "WEB_MLDMGT";
this.record_title = L("mld_workflowstep");
this.records_title = L("mld_workflowstep_m");
this.fields = {
"id": {
"dbs": "mld_workflowstep_key",
"label": "Key",
"typ": "key",
"required": true,
"filter": "exact",
"seq": "mld_s_mld_workflowstep_key",
"readonly": true
},
"name": {
"dbs": "mld_workflowstep_omschrijving",
"label": L("mld_workflowstep_omschr"),
"typ": "varchar",
"required": true
},
"start": {
"dbs": "mld_workflowstep_start_key",
"label": L("mld_workflowstep_start"),
"typ": "key",
"foreign": {
"tbl": "mld_workflowstep",
"key": "mld_workflowstep_key",
"desc": "mld_workflowstep_omschrijving",
"where": "mld_workflowstep_start_key IS NULL"
}
},
"stdmelding": {
"dbs": "mld_stdmelding_key",
"label": L("mld_stdmelding_key"),
"typ": "key",
"foreign": {
"tbl": "(select m.mld_stdmelding_key"
+ " , d.ins_discipline_omschrijving || '/ ' || m.mld_stdmelding_omschrijving stdmelding_omschr"
+ " from mld_stdmelding m"
+ " , mld_v_aanwezigdiscipline d"
+ " where m.mld_ins_discipline_key = d.ins_discipline_key"
+ " order by d.ins_discipline_omschrijving asc"
+ " , m.mld_stdmelding_omschrijving asc)",
"key": "mld_stdmelding_key",
"desc": "stdmelding_omschr"
},
"required": true,
"filter": "exact",
"LOVinit": ""
},
"jointype": {
"dbs": "mld_workflowstep_jointype",
"label": L("mld_workflowstep_jointype"),
"typ": "number",
"LOV": "0;AND;1;(X)OR;2;SYNC",
"required": true,
"defaultvalue": "0"
},
"level": {
"dbs": "mylevel",
"label": L("mld_workflowstep_level"),
"sql": " NVL ( TO_CHAR(1 + (SELECT ll"
+ " FROM ( SELECT MAX (LEVEL) ll, mld_workflowstep_next_key"
+ " FROM mld_workflowrule r"
+ " CONNECT BY PRIOR r.mld_workflowstep_next_key ="
+ " r.mld_workflowstep_key"
+ " GROUP BY mld_workflowstep_next_key)"
+ " WHERE mld_workflowstep_next_key = mld_workflowstep.mld_workflowstep_key)), "
+ " CASE WHEN mld_workflowstep_start_key IS NULL THEN '1 (START)' ELSE 'UNREACHABLE' END)",
"typ": "varchar"
}
};
this.includes = {
"rules": {
"model": new model_mld_workflowrule(mystart_key),
"joinfield": "prevstep",
"enable_update": true
}
};
var gparams = { GET: { } };
if (mystart_key > 0)
{
gparams.GET.wheres = [ "(mld_workflowstep_start_key = {0} OR mld_workflowstep.mld_workflowstep_key = {0})".format(mystart_key)];
delete this.fields.name;
this.fields.start.defaultvalue = mystart_key;
this.fields.start.hidden_fld = true;
this.REST_POST = function (params, jsondata) // in mld_workflowstep.asp is een pseudoveld 'prevstep' toegevoegd
{
var prevstep = jsondata.prevstep;
delete this.fields.prevstep; // die pseudokolom doen we zelf
var result = generic_REST_POST(this)(params, jsondata); // eerst gewoon opslaan
// Nu nog een mld_workflowrule record aanmaken
this.includes.rules.model.REST_POST(params, { prevstep: prevstep, nextstep: result.key});
return result;
}
}
else
{
gparams.GET.wheres = [ "mld_workflowstep_start_key IS NULL" ];
this.REST_POST = generic_REST_POST(this);
}
this.REST_GET = generic_REST_GET(this, gparams);
this.REST_PUT = generic_REST_PUT(this);
this.REST_DELETE = generic_REST_DELETE(this);
}
%>

View File

@@ -5,7 +5,7 @@
File: mld_workflow.asp
Description: fac_management aanroep van model_mld_workflow
Description: Bewerken van een workflow *schema*
Context:
@@ -14,23 +14,18 @@
%>
<!-- #include file="../scf/scaffolding.inc" -->
<!-- #include file="../mgt/mgt_tools.inc" -->
<!-- #include file="../api2/model_mld_workflow.inc" -->
<!-- #include file="../api2/model_mld_workflowstep.inc" -->
<%
var this_model = new model_mld_workflow();
this_model.hook_pre_edit = function (obj, fld)
{
%>
<script type="text/javascript">
var module = "MLD";
</script>
<%
}
scaffolding(this_model,
var scf_params =
{
"search": {
"autosearch": true
"autosearch": true,
"filters": [
"name"
]
},
"list": {
"columns": [
@@ -38,6 +33,23 @@ scaffolding(this_model,
"name",
"stdmelding"
]
},
"edit":{
"xxmodal": true
}
});
};
scf_params.wrap =
{
"no_default_frames": true,
"frames": [{ url: "mld_workflowstep.asp?mode=list&mystart={0}"
},
{ url: "workflow_graph.asp?start_key={0}"
},
{ url: "workflow_overview.asp?start_key={0}"
}]
};
scaffolding(this_model, scf_params)
%>

View File

@@ -0,0 +1,57 @@
<%@language = "javascript" %>
<% /*
$Revision$
$Id$
File: mld_workflow.asp
Description: Beheren van mld_workflowstep
Individuele meldingen van een workflowschema
Context: start_key is altijd bekend
Notes:
*/
%>
<!-- #include file="../scf/scaffolding.inc" -->
<!-- #include file="../mgt/mgt_tools.inc" -->
<!-- #include file="../api2/model_mld_workflowstep.inc" -->
<%
var prevstep = getQParamInt("prevstep", -1);
if (prevstep > 0)
var mystart_key = Oracle.Get("mld_workflowstep_start_key", "mld_workflowstep", prevstep);
else
var mystart_key = getQParamInt("mystart"); // De parameter zit er niet op als we in een include-model zitten
var this_model = new model_mld_workflowstep(mystart_key);
var mode = getQParam("mode", "");
if ((mode == "edit" || mode == "save") && getQParam("id", -1) < 0) // Toevoegmode. Forceer dat ook een 'vorige stap' gekozen wordt
{
this_model.fields.prevstep = this_model.includes.rules.model.fields.prevstep;
}
var scf_params =
{
"list": {
"columns": [
//"id",
"level",
"stdmelding",
"rules.nextstep"
]
},
"edit":{
"addmodal": true
},
"transit": {
"mystart": mystart_key
}
};
//xxscf_params.list.orderby = ["level", "stdmelding"];
scaffolding(this_model, scf_params)
%>

View File

@@ -100,6 +100,8 @@ function scaffolding_edit(model, scf_params)
model.hook_pre_edit(xxx_data, model.fields);
var modal = model.edit.modal || scf_params.edit && scf_params.edit.modal; // dan doen we een detailrecord altijd modal
if (key < 0 && scf_params.edit && scf_params.edit.addmodal)
modal = true;
%>
<html>
@@ -225,6 +227,9 @@ function scaffolding_edit(model, scf_params)
for (var fld in model.fields)
{
var field = model.fields[fld];
if (field.sql)
continue; // weinig aan te beweken
if (field.hidden_fld || (field.readonly && !(key > 0)))
{ // Eerst de hidden velden.
scf_RWHIDDENTR(model, fld, xxx_data[fld]);

View File

@@ -35,6 +35,7 @@ function scaffolding_list(model, scf_params)
}
var modal = model.edit.modal || scf_params.edit && scf_params.edit.modal; // dan doen we een detailrecord altijd modal
var addmodal = modal || scf_params.edit && scf_params.edit.addmodal;
FCLTHeader.Requires({js: ["jquery-ui.js"]});
if ("requires" in scf_params.list)
@@ -90,7 +91,7 @@ function scaffolding_list(model, scf_params)
function scf_add()
{
<%
if (modal) {
if (addmodal) {
%>
FcltMgr.openModalDetail("<%= scf_params.this_fullpath + "?mode=edit" + transit %>", "<%=L("lcl_add") + " " + safe.jsstring(model.record_title)%>", { callback: scf_reload });
<% } else { %>

View File

@@ -68,15 +68,18 @@ function scaffolding_wrap(model, scf_params)
if (key > 0)
{
for (var inc in model.includes)
if (!scf_params.wrap.no_default_frames)
{
var include = model.includes[inc];
if (include.joinfield && !include.joinfunction && !include.prefunc) // die is te ingewikkeld?
for (var inc in model.includes)
{
var url = scf_params.this_fullpath + "?mode=list" + transit + "&model=" + inc;
// Vanuit fac_reportx heeft fullpath geen id in zich verwerkt. Daarom nog maar een keer in de url
url += "&" + include.joinfield + "=" + key;
IFRAMER("xxxFrame", url, { FcltClose: "scfClose" } );
var include = model.includes[inc];
if (include.joinfield && !include.joinfunction && !include.prefunc) // die is te ingewikkeld?
{
var url = scf_params.this_fullpath + "?mode=list" + transit + "&model=" + inc;
// Vanuit fac_reportx heeft fullpath geen id in zich verwerkt. Daarom nog maar een keer in de url
url += "&" + include.joinfield + "=" + key;
IFRAMER("xxxFrame", url, { FcltClose: "scfClose" } );
}
}
}
if (scf_params.wrap.frames)