Last active
October 14, 2015 17:40
-
-
Save imtiazahmad007/a299e59168b2bda1e9a1 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Ext.define('searchadmin.controller.reports.Reports', { | |
extend : 'Ext.app.Controller', | |
requires : [ | |
'searchadmin.view.reports.DynamicGrid', | |
'searchadmin.store.DynamicGridStore' | |
], | |
refs:[ | |
{ | |
ref: 'selectReport', | |
selector: 'reportPageContents #reportCombo' | |
}, | |
{ | |
ref: 'resultsPanel', | |
selector: 'reports #searchResultsContainer' | |
}, | |
{ | |
ref: 'infoDisplayPanel', | |
selector: 'reportPageContents #queryInfoDisplayPanel' | |
} | |
], | |
init: function(app){ | |
Ext.create('searchadmin.store.ReportStore',{storeId: 'precannedReportsStore'}); | |
Ext.create('searchadmin.store.DynamicGridStore',{storeId: 'dynamicGridStore'}); | |
var reportDef; | |
var me = this; | |
this.control({ | |
'reportPageContents #reportCombo':{ | |
select: function(combo) { | |
me.reportDef={}; | |
var selectedReport = combo.getValue(); // gets the query correctly | |
var entryIdx = combo.getStore().findExact('queryValue', selectedReport); | |
me.reportDef['queryJson'] = selectedReport; | |
var storeRecord = combo.getStore().getAt(entryIdx); | |
me.reportDef['queryIndex'] = storeRecord.get('queryIndices'); | |
me.reportDef['queryType'] = storeRecord.get('queryTypes'); | |
me.reportDef['dataLocation'] = storeRecord.get('dataLocation'); | |
var description = storeRecord.get('description'); // returns the descrip for report selected | |
me.getInfoDisplayPanel().update(description); | |
} | |
}, | |
'reportPageContents #submitReportRun':{ | |
click: function(btn){ | |
me.executeReport(me.reportDef['queryJson'], me.reportDef['queryIndex'], me.reportDef['queryType'], me.reportDef['dataLocation']); | |
} | |
} | |
}); | |
}, | |
executeReport: function(queryJson, indexToQuery, typeToQuery, dataLocal) { | |
var me = this; | |
Ext.log('Executing Report request_json:' + queryJson); | |
var parameters = {"index": indexToQuery, "type": typeToQuery}; | |
IcrFwk.util.AjaxRequestUtil.makeAjaxRequest({ | |
url : 'query', | |
method: 'POST', | |
params: parameters, | |
jsonData : queryJson, | |
success : function(response, options){ | |
if(response.resultCode != 200) { | |
IcrFwk.Msg.alert(response.errorMessage,"Error executing query: "+ response.resultCode); | |
return; | |
} | |
me.getResultsPanel().setValue(JSON.stringify(response,null,4)); | |
me.handleSelectQueryResult(me, response, dataLocal); | |
}, | |
scope : this | |
}); | |
}, | |
/** | |
* Handle the result from running a select query. | |
* @param data Query result | |
*/ | |
handleSelectQueryResult : function(current, response, dataLocal) { | |
var _fields = []; | |
var _columns = []; | |
var cols_set = {}; | |
var elastic_docs = []; | |
var queryStore = Ext.data.StoreManager.lookup('dynamicGridStore'); | |
// eval("response+dataLocal") | |
var responseDocs = current.getProperty(response, dataLocal); | |
for( var idx in responseDocs ){ | |
var src_doc; | |
if(dataLocal === 'hits.hits'){ | |
src_doc = responseDocs[idx]._source; | |
elastic_docs.push(src_doc); | |
} else{ | |
src_doc = responseDocs[idx]; | |
elastic_docs.push(src_doc); | |
} | |
for (var key in src_doc) { | |
cols_set[key] = "1"; | |
} | |
} | |
for( var col_name in cols_set ){ | |
_columns.push({ | |
text : col_name, | |
dataIndex : col_name, | |
flex : 1 | |
}); | |
_fields.push({ | |
name : col_name | |
}); | |
} | |
var data_docs = {"data" : elastic_docs} | |
queryStore.model.setFields(_fields); | |
queryStore.loadRawData(data_docs, false); | |
var grid = Ext.ComponentQuery.query('#dynamicGridId')[0]; | |
grid.reconfigure(queryStore, _columns); | |
}, | |
getProperty: function(obj, prop) { | |
var parts = prop.split('.'), | |
last = parts.pop(), | |
l = parts.length, | |
i = 1, | |
current = parts[0]; | |
while((obj = obj[current]) && i < l) { | |
current = parts[i]; | |
i++; | |
} | |
if(obj) { | |
return obj[last]; | |
} | |
} | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment