123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- var crfRoleSelector={};
- crfRoleSelector.init=
- function(cb=null){
- let that=this;
- let action=function(){that.afterScripts(cb);};
- LABKEY.requiresScript(["crf/crfHTML.js"],action);
- }
- crfRoleSelector.afterScripts=
- function(cb=null){
- if (cb) cb();
- }
- crfRoleSelector.set=
- function(setup){
- this.setup=setup;
- }
- crfRoleSelector.print=
- function(msg){
- console.log(msg);
- }
- crfRoleSelector.makePortal=
- function(cb=null){
- //cb is a callback function that gets executed on select change
- let fName='[crfRoleSelector::makePortal]';
- let userId=LABKEY.Security.currentUser.id;
- let userRoles=['crfEditor','crfMonitor','crfSponsor','crfManager'];
- //let siteRows=this.setup.getRows('siteData');
- //find possible matches between user and sites
- let options=new Object();
- let siteMap=this.setup.getEntryMap('siteData:siteNumber');
- let userMap=this.setup.getEntryMap('users:UserId');
- for (let i=0;i<userRoles.length;i++){
- let listName=userRoles[i]+'s';
- let listRows=this.setup.getRows(listName);
- for (let j=0;j<listRows.length;j++){
- if (listRows[j]['User']!=userId) continue;
- let siteNumber=listRows[j]['Site'];
- let siteRow=siteMap[siteNumber];
- options[userRoles[i]+':'+siteNumber]=userRoles[i]+' for '+siteRow['siteName'];
- }
- }
- for (let opt in options){
- this.print(fName+' ['+opt+'] '+options[opt]);
- }
- let table=crfHTML.createTable('formDiv');
- let row=table.insertRow();
- let cell=row.insertCell();
- this.roleSelect=crfHTML.createSelect(options,null,cell);
- row=table.insertRow();
- cell=row.insertCell();
- this.roleLabel=crfHTML.createTextNode('Please select option',null,cell);
- let that=this;
- this.roleSelect.onchange=function(){that.onChange(cb);}
- }
- crfRoleSelector.onChange=
- function(cb=null){
- crfHTML.setTextNode(this.roleLabel,this.roleSelect.value);
- if (cb) cb();
- }
- crfRoleSelector.getRoleAndSite=
- function(){
- if (this.roleSelect.selectedIndex==0)
- return null;
- return this.roleSelect.value;
- }
- crfRoleSelector.setRoleAndSite=
- function(roleAndSite,cb=null){
- if (!roleAndSite) return;
- this.roleSelect.value=roleAndSite;
- if (cb) cb();
- }
-
|