﻿
__trGroup('CMS Form');Ext.namespace('NPSL','NPSL.Cms','NPSL.Cms.Form','Ext.ux');(function(){var Cms=NPSL.Cms,Form=Cms.Form,ColType=Cms.ColType,MimeTypes=Cms.MimeTypes;Form.CmsDataView=function(config){config=config||{};Ext.applyIf(config,{layout:"fit",frame:false,border:false});this.actionButtonIds=[];if(!config.readOnly){config.tbar=[];if(config.allowAdd!==false){var addId=Ext.id();this.actionButtonIds.push(addId);config.tbar.push({text:__tr('Add'),id:addId,iconCls:'new-icon',handler:function(){if(!this.addLink){this.editRecord();}else{xsrf_nav(this.buildCustomLink(this.addLink));}},canDo:function(recs){return true;},scope:this});}
if(config.allowEdit!==false){var editId=Ext.id();this.actionButtonIds.push(editId);config.tbar.push({text:__tr('Edit'),id:editId,iconCls:'edit-icon',hidden:!!(!config.editForm&&config.searchForm),handler:function(){var r=this.dv.getSelectedRecords();if(r.length==0)
return;if(!this.editLink){this.editRecord(r[0].data);}else{xsrf_nav(this.buildCustomLink(this.editLink,r[0].data));}},canDo:function(recs){return recs.length==1;},scope:this,disabled:true});}
if(config.allowDelete!==false){var delId=Ext.id();this.actionButtonIds.push(delId);config.tbar.push({text:__tr('Delete'),id:delId,iconCls:'delete-icon',hidden:!!(!config.editForm&&config.searchForm),handler:function(){var r=this.dv.getSelectedRecords();if(r.length==0)
return;var msg=r.length>1?__tr('Are you sure you wish to delete these items?'):__tr('Are you sure you wish to delete this item?');Ext.Msg.show({title:__tr('Delete records'),buttons:Ext.Msg.YESNO,icon:Ext.MessageBox.QUESTION,msg:msg,fn:function(doDelete){if(doDelete!=='yes')
return;var items=[];var pkc=this.table.pk.columns;for(var i=0;i<r.length;++i){var item=[];for(var j=0;j<pkc.length;++j){var cv=r[i].get(pkc[j].name);if(typeof(cv)==='object'&&cv!==null&&cv.hasOwnProperty("value")){cv=cv.value;}
item.push(cv);}
items.push(item);if(this.editFormHelpers[r[i].id]){this.editFormHelpers[r[i].id].win.close();}}
GridHandler.deleteTableData({tab:this.table.sid,items:items},function(){this.store.remove(r[0]);},this);},scope:this});},canDo:function(recs){return recs.length>0;},scope:this,disabled:true});}
var cols=config.table.columns;for(var i=0;i<cols.length;++i){if(cols[i].colType==ColType.Position){this.posColumn=cols[i];break;}}
if(this.posColumn&&config.allowMove!==false){var upId=Ext.id(),downId=Ext.id();this.actionButtonIds.push(upId,downId);config.tbar.push({text:__tr('Move up'),id:upId,iconCls:'up-icon',canDo:function(recs,selected){if(recs.length==0)
return false;var smallest=null;for(var i=0;i<recs.length;++i){var pos=this.parent.store.indexOf(recs[i]);if(smallest===null||pos<smallest)
smallest=pos;if(selected){selected[pos]=true;}}
if(smallest==-1||smallest==0)
return false;return true;},handler:function(){var recs=this.parent.dv.getSelectedRecords();var selected={};if(!this.canDo(recs,selected))
return;var newSel=[];var store=this.parent.store,storeCount=store.getCount();var posName=this.parent.posColumn.name;for(var i=0;i<storeCount;++i)
{if(i+1<storeCount&&selected.hasOwnProperty(i+1)){newSel.push(i);var next=store.getAt(i+1);store.remove(next);store.insert(i,next);}
var curr=store.getAt(i);if(curr.get(posName)!==i+1){curr.set(posName,i+1);}}
this.parent.dv.select(newSel);this.parent.deferSaveChanges();},parent:this,disabled:true},{text:__tr('Move down'),id:downId,iconCls:'down-icon',canDo:function(recs,selected){if(recs.length==0)
return false;var largest=null;for(var i=0;i<recs.length;++i){var pos=this.parent.store.indexOf(recs[i]);if(largest===null||pos>largest)
largest=pos;if(selected){selected[pos]=true;}}
if(largest===null||largest===this.parent.store.getCount()-1)
return false;return true;},handler:function(){var recs=this.parent.dv.getSelectedRecords();var selected={};if(!this.canDo(recs,selected))
return;var newSel=[];var store=this.parent.store,storeCount=store.getCount();var posName=this.parent.posColumn.name;for(var i=storeCount-1;i>=0;--i)
{if(i>0&&selected.hasOwnProperty(i-1)){newSel.push(i);var prev=store.getAt(i-1);store.remove(prev);store.insert(i,prev);}
var curr=store.getAt(i);if(curr.get(posName)!==i+1){curr.set(posName,i+1);}}
this.parent.dv.select(newSel);this.parent.deferSaveChanges();},parent:this,disabled:true});}
if(config.allowClone===true){var cloneId=Ext.id();this.actionButtonIds.push(cloneId);config.tbar.push({text:__tr('Copy'),id:cloneId,iconCls:'copy-icon',hidden:!!(!config.editForm&&config.searchForm),handler:function(){var r=this.dv.getSelectedRecords();if(r.length==0)
return;var items=[];var pkc=this.table.pk.columns;for(var i=0;i<r.length;++i){var item=[];for(var j=0;j<pkc.length;++j){var cv=r[i].get(pkc[j].name);if(typeof(cv)==='object'&&cv!==null&&cv.hasOwnProperty("value")){cv=cv.value;}
item.push(cv);}
items.push(item);}
GridHandler.cloneTableData(this.table.sid,items,function(){this.store.reload();},this);},canDo:function(recs){return recs.length>0;},scope:this,disabled:true});}
this.spinnerId=Ext.id();config.tbar.push({id:this.spinnerId,iconCls:'spinner-icon',hidden:true});}else{var viewId=Ext.id();this.actionButtonIds.push(viewId);config.tbar=[{text:__tr('View'),id:viewId,iconCls:'table-icon',handler:function(){var r=this.dv.getSelectedRecords();if(r.length==0)
return;this.editRecord(r[0].data);},scope:this,disabled:true,canDo:function(recs){return recs.length>0;}}];}
if(config.allowExport===true){config.tbar.push({text:__tr('Export'),iconCls:'excel-icon',handler:this.excelExport,scope:this});}
Form.CmsDataView.superclass.constructor.call(this,config);this.fields={};if(this.itemTemplate){this.setItemTemplate(this.itemTemplate);}}
Form.CmsDataView.fromXML=function(n,ownerForm,ownerRecord){if(ownerRecord){throw"cms-data-view / cms-record nodes cannot be nested";}
var tableName=n.getAttribute("table");if(!tableName){throw"cms-dataview is missing a table attribute";}
var addLinkNode=n.getChild("add-link");var editLinkNode=n.getChild("edit-link");var config={ownerForm:ownerForm,itemTemplate:XML.Node.getDom(n.getChild("item-template")),editForm:n.getChild("edit-form"),addForm:n.getChild("add-form"),searchForm:n.getChild("search-form"),readOnly:ownerForm.readOnly,addLink:(addLinkNode?XML.getAttribute(addLinkNode.dom||addLinkNode,"href"):null),editLink:(editLinkNode?XML.getAttribute(editLinkNode.dom||editLinkNode,"href"):null)};Form.copyBoolAttribute(config,n,["allow-add","allowAdd"],"allowAdd");Form.copyBoolAttribute(config,n,["allow-edit","allowEdit"],"allowEdit");Form.copyBoolAttribute(config,n,["allow-delete","allowDelete"],"allowDelete");Form.copyBoolAttribute(config,n,["allow-move","allowMove"],"allowMove");Form.copyBoolAttribute(config,n,["allow-clone","allowClone"],"allowClone");Form.copyBoolAttribute(config,n,["allow-export","allowExport"],"allowExport");Form.copyBoolAttribute(config,n,["read-only","readOnly"],"readOnly");if(!(config.table=g_schema.findTable(tableName))){throw"The table "+tableName+" is missing from the schema";}
var cmsDataView=new Form.CmsDataView(config);ownerForm.records[cmsDataView.id]=cmsDataView;return cmsDataView;};Ext.extend(Form.CmsDataView,Ext.Panel,{onDestroy:function(){Form.CmsDataView.superclass.onDestroy.call(this);Ext.destroy(this.store);},buildCustomLink:function(href,values){var sep=href.indexOf("?")<0?"?":"&";if(this.table){for(var colIdx=0;colIdx<this.table.pk.columns.length;colIdx++){var pkcol=this.table.pk.columns[colIdx];var val=values?values[pkcol.name]:null;if(val&&typeof(val)=="object"){val=val.value;}
href+=sep+
encodeURIComponent(this.table.name+"."+pkcol.name)+"="+
encodeURIComponent(val||"null");sep="&";}}
if(document.location.pathname){href+=sep+"_BACK="+document.location.pathname;}
return href;},enableButtons:function(){var recs=this.dv.getSelectedRecords();for(var i=0;i<this.actionButtonIds.length;++i){var btn=Ext.getCmp(this.actionButtonIds[i]);if(btn.canDo(recs)){btn.enable();}else{btn.disable();}}},disableButtons:function(){for(var i=0;i<this.actionButtonIds.length;++i){Ext.getCmp(this.actionButtonIds[i]).disable();}},onDisable:function(){Form.CmsDataView.superclass.onDisable.call(this);this.disableButtons();},onEnable:function(){Form.CmsDataView.superclass.onEnable.call(this);this.enableButtons();},deferSaveChanges:function(){this.saveChanges.defer(1,this,[],false);},saveChanges:function(){var storeChanges=Form.getStoreChanges(this.store);if(storeChanges.records.length==0)
return;var saveData={tab:this.table.sid,data:storeChanges.data};if(this.spinnerId){Ext.getCmp(this.spinnerId).show();}
this.disableButtons();GridHandler.saveTableData(saveData,{success:function(obj){Form.setStoreIds(this.store,storeChanges,obj.ids);Credit360.Page.showMessage(__tr('Saved'));},andFinally:function(obj){if(this.spinnerId){Ext.getCmp(this.spinnerId).hide();}
this.enableButtons();},scope:this},this);},setKeys:function(keys){this.keys=new Cms.Keys(keys);this.store.reload();},renderItem:function(tpl,values,tag){return Form.renderItemWithSperlunkedFks(this.table,values,tag);},editFormHelpers:{},editRecord:function(values){var h=this.editFormHelpers[Cms.Megastore.makeGlobalId(this.store.table,values)];if(h){h.win.toFront();h.win.focus();return;}
var formKeys;if(!values){var Record=this.store.recordType;var r=new Record({},Cms.Megastore.makeGlobalId(this.store.table));r.fields.each(function(fld){var c=this.table.columnsByName[fld.name];if(!c){return;}
var v='';if(c.defaultValue){v=c.defaultValue;}else if(c.colType==ColType.Enumerated){v=null;}else if(c.colType==ColType.Boolean){v=0;}
r.set(fld.name,v);var formField=this.fields[fld.name];if(formField){formField.setValue(v);if(formField.valueTrigger){Form.ValueTrigger.run(formField.valueTrigger,formField,v);}
formField.clearInvalid();}},this);for(var i=0;i<this.table.pk.columns.length;++i){var col=this.table.pk.columns[i];r.set(col.name,null);}
this.keys.each(function(keys,tableKey,colKey,value){r.set(this.table.findColumn(colKey).name,value);},this);this.store.add(r);}
formKeys=new Cms.Keys();var pk=this.table.pk;for(var i=0;i<pk.columns.length;++i){var cname=pk.columns[i].name;var val=values?values[cname]:null;if(val||pk.columns[i].colType===ColType.AutoIncrement){formKeys.set(this.table.name,cname,val);}}
var windowConfig={modal:true,helpTarget:Form.getInheritableAttribute(this,'helpTarget'),hideMandatory:Form.getInheritableAttribute(this,'hideMandatory')};var form;if(this.editForm||(this.addForm&&!values)){var formXml=(this.addForm&&!values)?this.addForm:this.editForm;form=Form.FormPanel.fromXML(formXml,{keys:formKeys,autoScroll:true,allowSave:false,readOnly:this.readOnly});if(this.editForm.getAttribute("window-modal")){windowConfig.modal=this.editForm.getAttribute("window-modal")!=='false';}
if(this.editForm.getAttribute("window-width")){windowConfig.width=parseInt(this.editForm.getAttribute("window-width"),10);}
if(this.editForm.getAttribute("window-height")){windowConfig.height=parseInt(this.editForm.getAttribute("window-height"),10);}}else if(this.searchForm){if(pkValue){return;}
this.searchFormCmp=form=Form.SearchForm.fromXML(this.searchForm,{keys:formKeys,autoScroll:true,allowSave:false,readOnly:this.readOnly});}else{var record=new Form.CmsRecord({table:this.table,border:false,bodyBorder:false});var fields=[];for(var i=0;i<this.table.columns.length;++i){var c=this.table.columns[i];if((!this.showPk&&formKeys.has(c.table.name,c.name))||this.keys.has(c.table.name,c.name)||c.colType==ColType.AppSid){continue;}
var f=Form.createEditField(c,{checkGetter:record.getFieldValue.createDelegate(record)});if(!f){continue;}
record.addField(f);record.add(f);}
form=new Form.FormPanel({allowSave:false,labelAlign:'top',defaultType:'textfield',border:false,bodyBorder:false,monitorValid:true,items:[record],records:[record],keys:formKeys,readOnly:this.readOnly});}
var helper={form:form,isNew:!values,id:Cms.Megastore.makeGlobalId(this.store.table,values)};this.editFormHelpers[helper.id]=helper;helper.cancelHandler=(function(helper){for(var i=0;i<helper.form.rootRecords.length;++i){var rec=helper.form.rootRecords[i].record;helper.form.rootRecords[i].undoChanges();if(helper.isNew){this.store.remove(rec);}}
helper.win.destroy();}).createDelegate(this,[helper],false);var buttons;if(this.readOnly){buttons=[{text:__tr('Close'),handler:function(){helper.win.destroy();}}];}else{buttons=[];if(true||this.editForm){buttons.push({iconCls:'tick-icon',text:__tr('Save'),handler:function(helper){var n=helper.form.rootRecords.length;for(var i=0;i<helper.form.rootRecords.length;++i){helper.form.rootRecords[i].deferSaveChanges(function(success,helper,store,record){if(success){if(--n===0){helper.win.destroy();}}
store.commitChange(record);}.createDelegate(this,[helper,this.store,helper.form.rootRecords[i].record],1),false);}}.createDelegate(this,[helper],false),scope:this});}else{buttons.push({iconCls:'tick-icon',text:__tr('Add selected'),handler:form.doSelectItems,scope:form});}
buttons.push({text:__tr('Cancel'),handler:helper.cancelHandler,scope:this});}
Ext.applyIf(windowConfig,{el:Ext.get(document.body).createChild(),title:!values?__tr('Add new item'):__tr('Edit item'),width:700,height:400,closable:false,minWidth:300,minHeight:300,layout:'fit',items:[form],bodyBorder:false,bodyStyle:'padding:5px;background:#fff;',buttons:buttons,keys:[{key:27,handler:helper.cancelHandler,scope:this}]});helper.win=new Ext.Window(windowConfig);helper.win.on({beforedestroy:function(win){if(Ext.isIE){new Ext.form.TextField({renderTo:win.body}).focus();}},destroy:function(helper){delete this.editFormHelpers[helper.id];}.createDelegate(this,[helper],false),show:this.autoSetWindowPos,scope:this,single:true});helper.win.show();form.setKeys(formKeys);},autoSetWindowPos:function(win){var vpSize=win.container.getSize();var targetWSize=win.getSize();var targetWPos=win.getPosition();var maxLeft=vpSize.width-targetWSize.width-20;var maxTop=vpSize.height-targetWSize.height-20;var setLeft=targetWPos[0];var setTop=targetWPos[1];var tol=10;var foundSpace=false;var resetOnce=false;while(!foundSpace){foundSpace=true;for(var i in this.editFormHelpers){if(this.editFormHelpers[i].win.id!==win.id){var wPos=this.editFormHelpers[i].win.getPosition();if(wPos[0]<=setLeft+tol&&wPos[0]>=setLeft-tol&&wPos[1]<=setTop+tol&&wPos[1]>=setTop-tol)
{setLeft+=tol*2;setTop+=tol*2;if(setLeft>maxLeft||setTop>maxTop){if(resetOnce){setLeft=targetWPos[0];setTop=targetWPos[1];break;}else{resetOnce=true;setLeft=0;setTop=0;}}
foundSpace=false;break;}}}}
win.setPosition(Math.max(0,Math.min(setLeft,maxLeft)),Math.max(0,Math.min(setTop,maxTop)));},setItemTemplate:function(tpl){this.itemTemplate=new Ext.ux.DomTemplate({tpl:tpl,handlers:{replaceText:this.renderItem,replaceAttribute:this.renderItem,createdItem:this.createdItem,scope:this}});},createdItem:function(tpl,values,item){var el=Ext.get(item);el.addClass("cms-dataview-item");el.on("dblclick",function(){this.editRecord(values);},this);},getItemTemplate:function(){if(this.itemTemplate)
return this.itemTemplate;var doc=new XML.Document();var tpl=doc.createChild({tag:"item-template",attributes:{"wrapper-type":"table"}});for(var i=0;i<this.table.columns.length;++i){var c=this.table.columns[i];var cn=c.name;if(!this.showPk){var pkc=this.table.pk.columns;var isPk=false;for(var j=0;j<pkc.length;++j){if(c===pkc[j]){isPk=true;break;}}
if(isPk){continue;}}
if(this.keys&&this.keys.has(c.table.name,c.name)){continue;}
if(c.colType==ColType.FileMime||c.colType==ColType.FileName){continue;}
var td=tpl.createChild({tag:"td",text:"{"+cn+"}"});if(c.colType==ColType.FileData&&c.nameColumn){td.createChild({tag:"div",attributes:{"style":"font-weight:bold"},text:"{"+c.nameColumn.name+"}"});}}
this.setItemTemplate(tpl.dom);return this.itemTemplate;},onRender:function(ct,position){Form.CmsDataView.superclass.onRender.call(this,ct,position);var storeId=Form.makeStoreId(this.table,this.keys);var store=null;if(!store){var orderBy=[];if(this.posColumn){orderBy.push({name:this.posColumn.name,direction:"Asc"});}else{var pk=this.table.pk;for(var i=0;i<pk.length;++i){orderBy.push({name:pk.columns[i].name,direction:"Asc"});}}
store=this.store=new Cms.DataStore({storeId:storeId,keys:this.keys.makeTableKeys(this.table.name),rpc:GridHandler.getTableData,totalProperty:"total",root:"data",remoteSort:true,prepareRpcParams:function(params){var fetchKeys=this.parent.keys.makeTableKeys(this.parent.table.name);return[this.table.sid,fetchKeys,null,null,this.orderBy];},table:this.table,parent:this,orderBy:orderBy,multiSelect:this.posColumn!==null});}
this.dv=new Ext.DataView({tpl:this.getItemTemplate(),autoHeight:true,multiSelect:true,overClass:"cms-dataview-over",selectedClass:"cms-dataview-selected",itemSelector:".cms-dataview-item",emptyText:this.noDataFoundText||__tr('No data found'),deferEmptyText:false,loadingText:__tr('Loading...'),store:this.store,cls:"cms-dataview"});if(this.actionButtonIds.length>0){this.dv.on("selectionchange",this.enableButtons,this);}
this.add(this.dv);return;},excelExport:function(){var si=this.store.getSortState();var orderBy=[];if(si){orderBy.push({name:si.field,direction:si.direction==="ASC"?"Asc":"Desc"});}
var fetchKeys=this.keys.makeTableKeys(this.table.name);GridHandler.exportTableData(this.table.sid,fetchKeys,orderBy,function(cacheKey){xsrf_nav("/fp/shared/extux/upload/file/download.aspx?cacheKey="+encodeURIComponent(cacheKey));});}});Form.reg(Form.CmsDataView,'cms-data-view');Form.AxsCmsDataView=function(config){Form.AxsCmsDataView.superclass.constructor.call(this,config);}
Ext.extend(Form.AxsCmsDataView,Form.CmsDataView,{renderItem:function(tpl,values,tag){if(tag=="BUTTON_DETAILS"){var img=Ext.get(document.createElement("img"));img.dom.src="/csr/styles/images/ic_chart.gif";img.title=__tr('Details');img.on("click",function(){var picker=new Credit360.QuickChart({layout:'fit',chartWidth:500,chartHeight:400,indicatorSid:values["IND_SID"].sid,defaultRegionSid:values["RISK_ID"].data[4].sid,defaultRegionDescription:values["RISK_ID"].data[4].description,showRegionPicker:false,viewPeriodStart:g_csr.viewPeriodStart,viewPeriodEnd:g_csr.viewPeriodEnd});var win=new Ext.Window({title:values["IND_SID"].description,modal:true,height:'auto',width:'auto',items:picker,buttons:[{text:__tr('Close'),handler:function(){win.destroy();}}]});win.show();},this);return img.dom}
else{return Form.AxsCmsDataView.superclass.renderItem.call(this,tpl,values,tag);}}});Form.AxsCmsDataView.fromXML=function(n,ownerForm,ownerRecord){if(ownerRecord){throw"cms-data-view / cms-record nodes cannot be nested";}
var tableName=n.getAttribute("table");if(!tableName){throw"cms-dataview is missing a table attribute";}
var config={ownerForm:ownerForm,itemTemplate:XML.Node.getDom(n.getChild("item-template")),editForm:n.getChild("edit-form"),searchForm:n.getChild("search-form"),readOnly:ownerForm.readOnly};Form.copyBoolAttribute(config,n,["allow-add","allowAdd"],"allowAdd");Form.copyBoolAttribute(config,n,["allow-edit","allowEdit"],"allowEdit");Form.copyBoolAttribute(config,n,["allow-delete","allowDelete"],"allowDelete");Form.copyBoolAttribute(config,n,["allow-move","allowMove"],"allowMove");Form.copyBoolAttribute(config,n,["allow-clone","allowClone"],"allowClone");if(!(config.table=g_schema.findTable(tableName))){throw"The table "+tableName+" is missing from the schema";}
var cmsDataView=new Form.AxsCmsDataView(config);ownerForm.records[cmsDataView.id]=cmsDataView;return cmsDataView;};Form.reg(Form.AxsCmsDataView,'axs-cms-data-view');}());