Read values from popup window using Java script

Hello Experts,

I have a form where I have a hyperlink to open one report where user can select the radio button from the report to use the owner.
Here is the screen shot:
Form popup

Now if i want to read the values using the JS script then how to do it ?
LVL 17
Swadhin Ray Asked:
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

x
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Swadhin Ray Author Commented:
It would be great if any example can be used using the console option in chorme.
0
Julian HansenCommented:
Now if i want to read the values using the JS script then how to do it ?
What values are we talking about - can you elaborate - it is not clear what your question is.
0
Swadhin Ray Author Commented:
Say for example the ID column. First col in the report
0
Big Business Goals? Which KPIs Will Help You

The most successful MSPs rely on metrics – known as key performance indicators (KPIs) – for making informed decisions that help their businesses thrive, rather than just survive. This eBook provides an overview of the most important KPIs used by top MSPs.

Julian HansenCommented:
Please give me a use case I am not understanding the requirement here.

Where do you want the script that reads the values to run - for instance?

If I read your screenshots correctly then the report opens in a new window which makes its values inaccessible to script in the opening window.

Please can you describe exactly what you want to achieve so we don't have to guess.
0
Swadhin Ray Author Commented:
I have a read only field called action owner on the parent from , so when I read the value of the ID I should populate it by reading it from the report.
0
Julian HansenCommented:
Please can you confirm that target form and source report are in different browser windows.

If that is the case you cannot read the selected value from the report using code in the first window. You can add code to the report to push the value to the parent - but this implies you need to modify the report window code.
0
Swadhin Ray Author Commented:
Yes it is in different browser windows.
0
Julian HansenCommented:
Ok I am going to try one last time to get some information here then I am going to have to call it a day.

Do you have access to the report window code?
0
Swadhin Ray Author Commented:
Yes I do have the access to the report code.
0
Julian HansenCommented:
Can we see it.
0
Swadhin Ray Author Commented:
My parent form has two fields RISK_ASSESSMENT_ID .

I have my form and report as below:

Report and form

Here is the code for my report template :

<html>
<head>
<title>@title@</title>
<meta http-equiv="Expires" content="0">
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="Content-Type" content="text/html; charset=@CHARACTER_SET@">
<LINK REL="stylesheet" TYPE="text/css" HREF="@WEBROOT@/gui_styles.css"/>
<LINK REL="stylesheet" TYPE="text/css" HREF="@WEBROOT@/commonui_new.css"/>

 
@%'report/include/reports_include_style_section.htmp'@

</head>
@reqNotFromZaplet(
<body @ENABLE_JS(onload="javascript:onLoadBehaviors()")@ bgcolor="#ffffff" text="#000000" link="#000099" vlink="#000099" alink="#000099" >
)@
@reqFromZaplet(
<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#000099" alink="#000099">
)@
<SCRIPT src="@WEBROOT@/calenderfunctions.js" language="Javascript">
</SCRIPT>
<SCRIPT src="@WEBROOT@/generic.js" language="Javascript">
</SCRIPT>
<SCRIPT src="@WEBROOT@/reportFunctions.js" language="Javascript">
</SCRIPT>
<SCRIPT src="@WEBROOT@/ext/GridSummary.js" language="Javascript">
</SCRIPT>


<script language = "javascript" >
		
var contextParams= {};

</script>

<script language = "javascript" >
var recPerPage ;


Ext.onReady(function(){
	
	Ext.QuickTips.init();
    
    

var ppop = null;
var report_id = '@REPORT_ID@';


var parReqDisplay = '@PARAMETERS_FOR_REQ_DISP@';
var parReq = '@.PARAMETERS_FOR_REQ@';
var rtSortColSeq='@RUNTIME_SORT_COL_SEQ@';
var rtSortDir='@RUNTIME_SORT_DIR@';
var srchCond='@SEARCH_COND@';
var numRows='@NUM_ROWS@';
var baseparams = {
"REPORT_ID":"@REPORT_ID@",
"METRIC_ID":"@METRIC_ID@",
"INSTANCE_ID":"@INSTANCE_ID@",
"INSTANCE_ID_2":"@INSTANCE_ID_2@",
"REP_MODE":"@REP_MODE@",
'ENTERPRISE_ID':'@ENTERPRISE_ID@',
"REPORT_NAME":"@REPORT_NAME@"
};

var baseparams2 = {
'PARAMETERS_FOR_REQ':'@.PARAMETERS_FOR_REQ@',
'RUNTIME_SORT_COL_SEQ':'@RUNTIME_SORT_COL_SEQ@',
'SEARCH_COND': '@SEARCH_COND@',
'RUNTIME_SORT_DIR':'@RUNTIME_SORT_DIR@'
};

var toolparams = Ext.apply({}, baseparams);

var filterparams = Ext.apply({},baseparams);

Ext.apply(filterparams, {
"metricid":"@metricid@",
"STARTING_INSTANCE_ID":"@STARTING_INSTANCE_ID@",
"OFFSET_INSTANCE_ID":"@OFFSET_INSTANCE_ID@",
"REP_ACTION":"@REP_ACTION@",
"RELATED_MODE":"@RELATED_MODE@",
"DISPLAY_SET_NUM":"@DISPLAY_SET_NUME@",
"NAME_OF_SUBMIT_TARGET":"@NAME_OF_SUBMIT_TARGET@",
"CORRECTIVE_ACTION_ID":"@CORRECTIVE_ACTION_ID@",
"ACTION_TYPE_ID":"@ACTION_TYPE_ID@",
"REPORT_TYPE":"@REPORT_TYPE@",
"OUTPUT_WINDOW":"@OUTPUT_WINDOW@",
"wrapper":"@wrapper@",
"PARAMS_CODE":"@PARAMS_CODE@",
"CURRENT_FORM":"@CURRENT_FORM@",
"METRIC_ID_REF":"@METRIC_ID_REF@",
"INSTANCE_ID_REF":"@INSTANCE_ID_REF@",
"HISTORY_DATE1":"@HISTORY_DATE1@",
"HISTORY_DATE2":"@HISTORY_DATE2@",
"HISTORY_DATE_ERR":"@HISTORY_DATE_ERR@",
"ERR_MSG":"@ERR_MSG@",
"templ":"@templatename@",
"REPORT_LAYOUT":"@REPORT_LAYOUT@",
"errorHidden":"@ERR_MSG@",
"output":"@output@",
"copyright_needed":"@copyright_needed@",submit_x:16});

	recPerPage = @RECORDS_PER_PAGE@;
	var flag=0;

@CONTEXT_SENSITIVE_FUNC(
    contextParams= Ext.apply({}, baseparams);

    Ext.apply(contextParams, {
        'PARAMETERS_FOR_REQ':'@.PARAMETERS_FOR_REQ@',
        'SELSTR':'@SELSTR@',
        'METRIC_VIEW':'@METRIC_VIEW@',
        'wrapper':'@wrapper@',
        'OUTPUT_WINDOW':'@OUTPUT_WINDOW@',
        'output':'@output@',
        'copyright_needed':'@copyright_needed@'
    });
)@



@%'report/include/reports_include_common_grid.xhtmp'@    

@%'report/include/reports_include_filter_section_grid.xhtmp'@



    function summaryrenderer(v, params, data) {
           if(store.reader.summaryData)
            var summary = store.reader.summaryData[params.id];
            if(summary) {
                v= summary.desc + ' ' + summary.value;
            }
            return v? v  : '';
    }

    function colRenderer(val, meta, record, rowIndex, colIndex, store) {
	try
    {
        var x =all_data[rowIndex].length;
    }
    catch(e)
    { 
       all_data[rowIndex]=new Array();
    }
	all_data[rowIndex][colIndex]= val;
	    val = val || '';
        var rv = val.split('_$$');
        if(rv.length >1) {
            val = rv[1];
            if(meta) {
                meta.attr= 'style="'+ rv[0]+ '"';
            }
        }
       
        try {
        
        }catch(e) {}
      
        

        return val;

    }

        var gridColumnModel = new Ext.grid.ColumnModel([
@HEADER_INFO(@HEADER_ROW[0](@HROW({header: '@USER_NAME@',sortable:@SORT_LINK{@""(false)@@(true)@}@, renderer:colRenderer,summaryRenderer: summaryrenderer, dataIndex:'@DATA_COL_SEQ@',width:@COL_WIDTH@,align:'@ALIGN_HDG@'}
)@)@@HEADER_ROW[1..](@HROW(,{header: '@USER_NAME@',sortable:@SORT_LINK{@""(false)@@(true)@}@, renderer:colRenderer, summaryRenderer: summaryrenderer, dataIndex:'@DATA_COL_SEQ@',width:@COL_WIDTH@,align:'@ALIGN_HDG@'})@
)@
)@ ]);


       
    var recordModel= [
    @HEADER_INFO(@HEADER_ROW[0](@HROW({name:'@DATA_COL_SEQ@',mapping:'col@DATA_COL_SEQ@'})@)@
    @HEADER_ROW[1..](@HROW(,{name:'@DATA_COL_SEQ@',mapping:'col@DATA_COL_SEQ@'})@)@
    )@ ];

	
	var report_name = decodeHtmlContent("@#REPORT_NAME@");	
	if(report_name == '@rptCoreObjectsForScope1@' || report_name == '@rptCoreObjectsForScope5@')
		report_name = '@rptAuditableEntities@';
	else if(report_name == '@rptOrgsForAE@')
		report_name = '@rptOrganizations@';
	else if(report_name == '@rptRisksForAE@' || report_name == '@rptRisksForOrg@')
		report_name = '@rptRisks@';
	else if(report_name == '@rptAEsForOrg@')
		report_name = '@rptAuditableEntities@';
	else
		report_name = decodeHtmlContent("@#REPORT_NAME@");
	
	
       var store = new Ext.data.Store({
            reader: new Ext.data.CFQueryReader({
                id: 'NAME', 
                fields:recordModel
            }),
            fields: recordModel,
            remoteSort: true,
            url:'Reportsstart/ajax/ReportStart?REPORT_ID=@REPORT_ID@&templ=Tabularjson.xhtmp'
            ,id:'dataStoreId'
        });

        store.on('beforeload', function(store, options) {
            options.params || (options.params = {}); 
            var start=options.params.start ;
            var limit= options.params.limit;

            var pageu = 'all';
            if (limit != -1) {
                pageu = Math.floor(start/limit)+1;
                Ext.apply(options.params, {
                    RECORDS_PER_PAGE : limit
                });

            }
            Ext.apply(options.params, {

                pageu:pageu
            });

            if(store.sortInfo) {
                rtSortDir = store.sortInfo.direction;
                rtSortColSeq = store.sortInfo.field;
            }
            if (!options.params.submit_x) {
                Ext.apply(options.params, baseparams);

                Ext.apply(options.params, {
                    'PARAMETERS_FOR_REQ':parReq,
                    'RUNTIME_SORT_COL_SEQ':rtSortColSeq,
                    'SEARCH_COND': srchCond,
                    'RUNTIME_SORT_DIR':rtSortDir
                });
            }

          
        });
        store.on('load', function(store, recs, options) {
			parReqDisplay = store.reader.paramsForReqDisp;
            parReq= store.reader.paramsForReq;
            showError(store.reader.errmsg);
            baseparams.INSTANCE_ID = store.reader.currentInstanceId; 
            numRows = store.reader.totalRowCount;
            contextParams.INSTANCE_ID = store.reader.currentInstanceId;
            document.contextform.INSTANCE_ID.value = store.reader.currentInstanceId;
            document.contextform.PARAMETERS_FOR_REQ.value = store.reader.paramsForReq;

            if(options.params.pageu=='all') {
                bbar.pageSize=store.reader.totalRowCount;
            }

            if(options.params.submit_x) {
                store.lastOptions.params = {};
            }
			checkSelectedEntitiesforRadio();

        });
       
 

var combo = new Ext.form.ComboBox({
  name : 'perpage',
  width: 60,
  store: new Ext.data.SimpleStore({
    fields: ['id'],
    data  : [
      ['20'],
      ['40'],
      ['80'],
      ['All']
    ]
  }),
  mode : 'local',
  value: recPerPage,

  listWidth     : 40,
  triggerAction : 'all',
  displayField  : 'id',
  valueField    : 'id',
  editable      : false,
  forceSelection: true
});

var bbar= new Ext.PagingToolbar({
            store: store,
            pageSize : recPerPage,
            displayInfo: true,
            items   :    [
                    '-'
                    @output{@"infoport"()@@(
                    ,'@label.recordsperpage@: '
                    ,combo
                    )@}@
            ],
            displayMsg:'@label.dispayingrecords@ '+'{0} - {1} '+'@label.of@ '+'{2}', 
            emptyMsg:'@label.norecordstodisplay@' 
        });

    combo.on('select', function(combo, record) {
        if('All' == record.get('id')) {
            bbar.pageSize =-1;
        } else {
            bbar.pageSize = parseInt(record.get('id'), 10);
        }
            recPerPage = bbar.pageSize;
        bbar.doLoad(0);

    }, this);


    var summary = new Ext.ux.grid.GridSummary();
    var mainPanel = {
    	xtype: 'panel',
        id: 'main-panel',
		layout: 'border',
		region: 'center',
		tbar:[
		    {
				xtype: 'tbtext',
				text: 'Search :'
			}
			,
			{				
				xtype: 'textfield',
				name: 'searchField',
				id:'searchField',
				width: 200,
				grow:true,
				growMin:200,
				emptyText:'search here',
				listeners: {
					'render': function(c) {
					  Ext.QuickTips.register({
						target: c.getEl(),
						text: 'Filters data from current page'
					  });
					  c.getEl().on('keyup', function() {
						var searchValue=Ext.getCmp('searchField').getValue();
						var count=0;
						store.filterBy(function myfilter(record) {
						var colValue1=record.get('2') ;
						var colValue2=record.get('3') ;
						
						searchValue=searchValue.toUpperCase();
						colValue1=colValue1.toUpperCase();
						colValue2=colValue2.toUpperCase();
						
					    if(colValue1.indexOf(searchValue) ==-1 &&
						colValue2.indexOf(searchValue) ==-1){
							return false;
						}else{
							count=count+1;
							return true;
						}
					});

					try{
						document.getElementById(FieldValue1).checked=true;
					}
					catch(e){}
					  }, c);
					}
				  }
			}
        ],
        items :[
       /*      paramForm1
            @HEADER_INFO{@""(
            ,{
                xtype: 'panel',
                region: 'center'
            }
            )@@( */
                {
                xtype: 'grid',
                @output{@"infoport"()@@(
                   /*title : '@label.report_data_as_of@ @TIMESTAMP_1@ @TIMESTAMP_VS@ @TIMESTAMP_2@',*/
                )@}@
                region: 'center',
                layout: 'fit',
                id:'grid',
                repid:'@REPORT_NAME@',
                viewConfig: {
                    forceFit:true,
                    emptyText: '@label.norecordstodisplay@'
                },    
                colModel:getModifiedCM(),
                store: store,
                @DISPLAY_SETS(@REPORT_FOOTER(
                plugins: [summary],
                )@)@
                stripeRows: true,
				bbar:bbar,
/*                 bbar: [{
					xtype: 'tbtext',
					text: '@label.norecordstodisplay@'
				}
				], */
                tools:[{
                   id:'gear',
                   handler: function(event, toolEl, panel){
                        repToolsMenu.show(toolEl, 'tr-bl'); 
                   }
                }],
                listeners: {
                    'render': function(){
                        var initParams = Ext.apply({}, {start:0, limit:recPerPage});                                                
                        this.store.load({params:initParams});
                    },
					'viewready' : function(){
				}
                }
				
            }
            )@
            }@

        ]
    };
	
	
	
	function getModifiedCM(){
			for(var i=0;i<gridColumnModel.config.length;i++){
				if(gridColumnModel.config[i].header=='OBJECT_ID' || gridColumnModel.config[i].header=='METRIC_URL'
				    || gridColumnModel.config[i].header=='Parameter_PDF_YN' || gridColumnModel.config[i].header=='Pdf Id'
					|| gridColumnModel.config[i].header=='Parameter_PDF_YN_In_Progress'){
					gridColumnModel.config[i].hidden=true;
					}
			}
			return gridColumnModel;
		}

    var filterTip= ['@label.show_filters@', '@label.hide_filters@'];

    var errormsg = "@ERR_MSG@";
    var errorbar = {
                id: 'errmsg',
                xtype: 'tbfilltext',
                style:' background-color: #ffffff; border: 1px solid #ee0000; font-family: Arial, Helvetica, sans-serif; font-size: 12px; color: #ee0000; padding: 5px 0 5px 0; margin-bottom: 5px; width: 100%; text-align: center; ',
                hidden:true,
                autoEl: {
                    html: errormsg
                }
            };
        if(errormsg) {
           errorbar.hidden = false;
        }
		
    var topbar = new Ext.Toolbar({
        region : 'north',
        height:30,
        margins: '0 0 0 5',
        items:[
            {
            xtype: 'box',
            id: 'title',
            autoEl: {
            html: report_name
            }
            },
            {xtype: 'tbfillspacer'},
            errorbar,
            '->',
            {xtype: 'tbfillspacer'},
 /*            {
                text: '@title.popup_filters@',
                id: 'toggleFilter',
                tooltip: filterTip[0],
                enableToggle: true,
                hidden: !hasParams,
                toggleHandler: onItemToggle
            }, */
			{
                text: 'Select None',
                id: 'clearAllBtn',
                tooltip: 'Select None',
                handler: clearAllEntities
            },		
            {
                text: '@label.done@',
                id: 'doneBtn',
                tooltip: '@label.done@',
                handler: SelectToParent
            },
            {
                text: '@label.cancel@',
                id: 'CancelBtn',
                tooltip: '@label.cancel@',
                handler: doCancel
            }		
        ]
        
    });

    var viewPort = new Ext.Viewport({
		layout: 'border',
		title: 'Ext Layout Browser',
        defaults:{
            @output{@"infoport"()@@(
                margins: '5 0 0 5'
            )@}@
        },
		items: [
            @output{@"infoport"()@@(
            topbar,
            )@}@
			mainPanel
		],
        renderTo:Ext.getBody()
    });
    viewPort.doLayout();
});


</SCRIPT>
<script language = "javascript" >
var FieldValue;
var FieldValue1;
//var selectedValues=new Array();

function onLoadBehaviors() {
	try{
		FieldValue=parent.window.opener.getSelectedValue();
		FieldValue1=parent.window.opener.getSelectedValuesSec();
	}
	catch(e){		}
    //@OUTPUT_WINDOW{@NEW_WINDOW(
        setWindowSize();
    //)@}@
}
try{
window.onunload = parent.window.opener.callClose;

}
catch(e){}

function setWindowSize() {

		var width=600;
		var height=600;
        window.resizeTo(width,height);
		var left = parseInt((screen.availWidth/2) - (width/2));
		var top = parseInt((screen.availHeight/2) - (height/2));
        window.moveTo(left,top); 

}
var selectedrows='';
var selectDispRows= '';
function checkboxChange(seqno)
{
  var cbox=document.getElementById(seqno);
  if(cbox.checked)
  {
	if(selectedrows != '')
	{
		selectedrows = selectedrows + ','+cbox.name;
		selectDispRows =selectDispRows + ','+cbox.value;
    }
	else
	{
		selectedrows = cbox.name;
		selectDispRows = cbox.value;
	}
}

}
function checkSelectedEntitiesforRadio()
{

				try{
					var elem=document.getElementById(FieldValue1);
					elem.checked=true;
					populateValues(FieldValue1);
				}
				catch(e){
				
				}

}

function uniquesselectedrows(selectedrow1,deselectedvalue){
	var selrowsarr = selectedrow1.split(",");
	var selrowsnew = [];
	var oldrows ={};
	
	for(var i=0;i<selrowsarr.length;i++) {
		if (selrowsarr[i] != deselectedvalue) {
			oldrows[selrowsarr[i]]=true;
			selrowsnew.push(selrowsarr[i]);
		}
	}
	return selrowsnew.join(",");
	
}
function SelectToParent()
{
	try
	{
		if(typeof(selValArr[1])=='undefined' && typeof(selValArr[2])=='undefined') // fix for bug 216639
		{
			selValArr[1]='';
			selValArr[2]='';
		}
		var selectDispRows=	selValArr[1];
		var selectedrows = selValArr[2];
		// changes done by deeksha for bug 214226
		/*if(flag==0)
	    {selectedrows='';
		 selectDispRows='';}*/
		parent.window.opener.callParent_LevelApproverSec(selectedrows,selectDispRows);
		parent.window.opener.focus();
		parent.window.close();
	} 
	catch(e){
		window.close();
	}
}

function clearAllEntities()
{
	// changes done by deeksha for bug 214226
	for(var i=0; i<all_data.length; i++) {	
		var chkid = selValArr[2];	
		try{
			document.getElementById(chkid).checked=false;
			flag=0;
			populateValues(FieldValue1);
			selValArr[1]='';
			selValArr[2]='';
		}
		catch(e){}
	}
}

var all_data=new Array();
var all_data_idx=0;
function doCancel()
{

	window.close();

}

var all_data_index;
var selValArr = new Array();
var i=0;
function populateValues(radioID)
{
	FieldValue1=radioID;
	selValArr = new Array();
	flag=1;
	for(var i=0; i<all_data.length; i++)
	{
		if(all_data[i][2] == radioID)
		{
			selValArr = all_data[i];
		}
	}
}

function fnFilter(){
	alert(1);
}

</SCRIPT>
@%'report/include/reports_include_contextform_grid.xhtmp'@
</body>
</html>

Open in new window

0
Julian HansenCommented:
what you need to do is catch the click event on the radio in the report.
Get the id of that radio
Call a function in the parent with that value
The function in the parent then adds that value to the form.
In the report
var radios = document.forms['report'].elements["ownerid"];

for(var i = 0, max = radios.length; i < max; i++) {
  radios[i].onclick = function() {
    window.opener.myFunction(this.value);
  }
}

Open in new window

In the parent
window.myFunction = function(id) {
  document.getElementById('fred').value = id;
}

Open in new window

In the parent
window.yourFunction = function(id) {
  // do something with id here
}

Open in new window

Working sample here
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
JavaScript

From novice to tech pro — start learning today.