150 lines
5.0 KiB
Plaintext
150 lines
5.0 KiB
Plaintext
maintenance:
|
|
|
|
title: List Setting MLM ;;
|
|
mlmname: UTIL_ITEMS_READONLY;;
|
|
arden: version 2;;
|
|
version: 5.00;;
|
|
institution: Eclipsys Corporation at SCH;;
|
|
author: Shawn Head Eclipsys at St Clair Ext 7468;;
|
|
specialist: ;;
|
|
date: 2012-05-24;;
|
|
validation: testing;;
|
|
|
|
library:
|
|
purpose:
|
|
Takes a list and the passed in value(s) to set all fields to correct read-only
|
|
Returns a list with the correct amount of members all set to the necessary readonly status
|
|
;;
|
|
explanation:
|
|
;;
|
|
keywords:
|
|
;;
|
|
knowledge:
|
|
type: data-driven;;
|
|
data:
|
|
( listallitems,
|
|
listselected,
|
|
listtriggeritems,
|
|
currentreadonly
|
|
|
|
|
|
) := ARGUMENT;
|
|
|
|
str_parse := mlm {{{SINGLE-QUOTE}}}UTIL_STRING_PARSE{{{SINGLE-QUOTE}}};
|
|
;;
|
|
evoke: /* Call MLM */
|
|
;;
|
|
logic:
|
|
|
|
|
|
//counts the number of items in the grid AND the number of items that should control the MLM that were passed in
|
|
ctallitems := count listallitems;
|
|
cttriggeritems := count listtriggeritems;
|
|
|
|
|
|
//builds a couple lists that will be used by the MLM to control the read only status
|
|
isitemreadonly := ();
|
|
switchro := ();
|
|
isitemselected := "no";
|
|
|
|
//if there are no items configured in the MLMGenericItemControl for specific order items then this section
|
|
//will only allow 1 item to be selected and will cause the readonly value to be set to true for all items
|
|
//EXCEPT for the item that is currently selected in the grid. If no items are selected then the readonly value
|
|
//will be set to the "isitemselected" value of NO allowing for any item to be selected again.
|
|
|
|
/* original
|
|
if listtriggeritems[1] = "" or listtriggeritems[1] is null then
|
|
for x in (1 seqto (count listselected)) do
|
|
break;
|
|
if listselected[x] = true then
|
|
switchro := switchro, false;
|
|
isitemselected := "yes";
|
|
else
|
|
switchro := switchro, true;
|
|
endif;
|
|
|
|
enddo;
|
|
break;
|
|
if isitemselected <> "yes" then
|
|
switchro := listselected;
|
|
|
|
endif;
|
|
*/
|
|
if listtriggeritems[1] = "" or listtriggeritems[1] is null then
|
|
for x in (1 seqto (count listallitems)) do
|
|
if listallitems[x] = true then
|
|
switchro := switchro, false;
|
|
isitemselected := "yes";
|
|
else
|
|
switchro := switchro, true;
|
|
endif;
|
|
|
|
enddo;
|
|
if isitemselected <> "yes" then
|
|
switchro := listallitems;
|
|
endif;
|
|
else
|
|
|
|
//if there are items configured in MLMGenericItemControl for specific order items to trigger the read-only
|
|
//option based on the required configuration then this logic will set all items that are not selected to
|
|
//read only. This will be based on the fact that only 1 item at a time should be selectable based on the
|
|
//order item list based into the MLM from MLMGenericItemControl (e.x. format would be MOG^7^order1, order2, order3^YES)
|
|
|
|
updateitempos := ();
|
|
selecteditempos := ();
|
|
isitemreadonly := currentreadonly;
|
|
isitemselected := "no";
|
|
|
|
//this for loop cycles through the trigger order items that are configured in the MLMGenericItemControl
|
|
for x in (1 seqto (count listtriggeritems)) do
|
|
//this for loop cycles through ALL items in the grid that called the MLM so it can verify if the item configured
|
|
//in the MLMGenericItemControl exists in the grid calling the MLM.
|
|
for y in (1 seqto (count listallitems)) do
|
|
//this if logic is making sure that the item in the configuration of MLMGenericItemControl matches the grid item
|
|
//added to the form. If it matches 1-to-1 then it will check to see if the item is selected.
|
|
if trim(listtriggeritems[x]) = trim(listallitems[y]) then
|
|
//if the item is selected add the item position in the list to selecteditempos for later use.
|
|
if listselected[y] = true then
|
|
isitemselected := "yes";
|
|
selecteditempos := selecteditempos, y;
|
|
//if the item is NOT selected add the item position in the list to updateitempos for later use.
|
|
else
|
|
updateitempos := updateitempos, y;
|
|
endif;
|
|
endif;
|
|
enddo;
|
|
enddo;
|
|
|
|
|
|
//now the MLM will check to see if there is an item selected in the grid. if so then it will update all the
|
|
//selected items that are configured in the MLMGenericItemControl to NOT be read only so you can still
|
|
//modify/unselect the item. It will also update all the items thAt are not selected to readonly preventing
|
|
//those items from being selected until the selected item is "de-selected".
|
|
if isitemselected = "yes" then
|
|
for x in (1 seqto (count selecteditempos)) do
|
|
isitemreadonly[updateitempos[x]] := false;
|
|
enddo;
|
|
for x in (1 seqto (count updateitempos)) do
|
|
isitemreadonly[updateitempos[x]] := true;
|
|
enddo;
|
|
else
|
|
//if there are no items selected as defined by the "isitemselected" variable then the MLM will set all items
|
|
//configured in the MLMGenericItemControl to NOT be read only allowing for any item to be selected again.
|
|
for x in (1 seqto (count updateitempos)) do
|
|
isitemreadonly[updateitempos[x]] := false;
|
|
enddo;
|
|
endif;
|
|
|
|
switchro := isitemreadonly;
|
|
endif;
|
|
|
|
conclude true;
|
|
;;
|
|
action:
|
|
|
|
return switchro;
|
|
|
|
;;
|
|
Urgency: 50;;
|
|
end:
|