From 30c1a4e34787d525d9aaf1169e6dac4b320ef718 Mon Sep 17 00:00:00 2001 From: k-samuel Date: Mon, 14 Aug 2017 18:34:58 +0300 Subject: [PATCH 01/20] Modules Generator update. Generate columns for linked objects --- dvelum/app/Modules/Generator.php | 89 +++++++++++++++++++++++++++----- 1 file changed, 76 insertions(+), 13 deletions(-) diff --git a/dvelum/app/Modules/Generator.php b/dvelum/app/Modules/Generator.php index 91ba27b7..7fc2ffb5 100644 --- a/dvelum/app/Modules/Generator.php +++ b/dvelum/app/Modules/Generator.php @@ -11,6 +11,8 @@ class Modules_Generator */ protected $appConfig; + protected $linkedFieldPostfix = '_title'; + public $tabTypes = array('Component_Field_System_Medialibhtml' , 'Component_Field_System_Related', 'Component_Field_System_Objectslist'); public function __construct(){ @@ -44,7 +46,6 @@ protected function _createControllerFile($dir , $content) return $dir . '/' . 'Controller.php'; } - public function createVcModule($object , $projectFile) { $lang = Lang::lang(); @@ -494,7 +495,7 @@ public function createModule($object , $projectFile) $linkedObjects[] = $objectConfig->getLinkedObject($key); } - if(in_array($item['db_type'] , Db_Object_Builder::$textTypes , true) || $objectConfig->isObjectLink($key) || $objectConfig->isMultiLink($key)) + if(in_array($item['db_type'] , Db_Object_Builder::$textTypes , true)) continue; if(isset($item['hidden']) && $item['hidden']) @@ -508,7 +509,7 @@ public function createModule($object , $projectFile) $dataFields = array(); foreach($objectConfig->getFieldsConfig(true) as $key => $item) { - if(in_array($item['db_type'] , Db_Object_Builder::$textTypes , true)) + if(in_array($item['db_type'] , Db_Object_Builder::$textTypes , true) || $objectConfig->isMultiLink($key)) continue; if(isset($item['hidden']) && $item['hidden']) @@ -518,8 +519,8 @@ public function createModule($object , $projectFile) } array_unshift($objectFields , $primaryKey); - - $linksToShow = array_keys($objectConfig->getLinks( + $linksToShow = []; + $links = array_keys($objectConfig->getLinks( [ Db_Object_Config::LINK_OBJECT, Db_Object_Config::LINK_OBJECT_LIST, @@ -528,24 +529,30 @@ public function createModule($object , $projectFile) false )); - foreach($linksToShow as $k=>$v){ - if($objectConfig->isSystem($v)){ - unset($linksToShow[$v]); + $additionalModelFields = []; + + foreach($links as $k=>$v){ + if(!$objectConfig->isSystem($v)){ + $linksToShow[$v . $this->linkedFieldPostfix] = $v; + if($objectConfig->isObjectLink($v) || $objectConfig->isMultiLink($v)){ + $additionalModelFields[$v] = $v . $this->linkedFieldPostfix; + } } } + $linkToField = array_flip($linksToShow); $controllerContent = 'getEventManager(); - $storeFields = Backend_Designer_Import::checkImportORMFields($object , $dataFields); + foreach ($storeFields as $itemObject){ + /** + * @var Ext_Object $object + */ + $name = $itemObject->name; + if(isset($linkToField[$name])){ + $storeFields[] = Ext_Factory::object('Data_Field',array( + 'name'=> $linkToField[$name], + 'type' => 'string' + )); + } + } + // Add fields for linked lists + if(!empty($additionalModelFields)){ + foreach ($additionalModelFields as $dataIndex){ + $storeFields[] = Ext_Factory::object('Data_Field',array( + 'name'=> $dataIndex, + 'type' => 'string' + )); + } + } + $urlTemplates = $this->designerConfig->get('templates'); @@ -590,7 +618,6 @@ public function createModule($object , $projectFile) $dataStore->setName('dataStore'); $dataStore->autoLoad = true; $dataStore->model = $modelName; - // $dataStore->addFields($storeFields); $dataProxy = Ext_Factory::object('Data_Proxy_Ajax'); $dataProxy->type = 'ajax'; @@ -635,8 +662,30 @@ public function createModule($object , $projectFile) if(!empty($objectFieldList)) { + $column = Ext_Factory::object('Grid_Column_Action'); + $column->text = ''; + $column->setName($dataGrid->getName().'_pre_actions'); + $column->align = 'center'; + $column->width = 40; + + $editButton = Ext_Factory::object('Grid_Column_Action_Button'); + $editButton->setName($dataGrid->getName().'_actions_edit'); + $editButton->text = ''; + $editButton->icon = '[%wroot%]i/system/edit.png'; + $editButton->tooltip = '[js:] appLang.EDIT_ITEM'; + $editButton->isDisabled = 'function(){return !this.canEdit;}'; + + $eventManager->setEvent($editButton->getName(), 'handler', 'this.showEditWindow(grid.getStore().getAt(rowIndex).get("id"));'); + + $column->addAction($editButton->getName() ,$editButton); + $dataGrid->addColumn($column->getName() , $column , $parent = 0); + foreach($objectFieldList as $fieldConfig) { + // skip object link column (will be set with $additionalModelFields) + if($objectConfig->isObjectLink($fieldConfig->name)){ + continue; + } switch($fieldConfig->type){ case 'boolean': @@ -685,6 +734,20 @@ public function createModule($object , $projectFile) $dataGrid->addColumn($column->getName() , $column , $parent = 0); } + // Add fields for linked lists + if(!empty($additionalModelFields)){ + foreach ($additionalModelFields as $field=>$dataIndex){ + $column = Ext_Factory::object('Grid_Column'); + $column->setName($dataIndex); + $column->dataIndex = $dataIndex; + $column->sortable = false; + $column->itemId = $dataIndex; + $cfg = $objectConfig->getFieldConfig($field); + $column->text = $cfg['title']; + $dataGrid->addColumn($column->getName() , $column , $parent = 0); + } + } + $column = Ext_Factory::object('Grid_Column_Action'); $column->text = '[js:] appLang.ACTIONS'; $column->setName($dataGrid->getName().'_actions'); From c4d3fe2c48776e1865a255da3a52b0b60a5ca882 Mon Sep 17 00:00:00 2001 From: hartois Date: Tue, 15 Aug 2017 21:23:05 +0300 Subject: [PATCH 02/20] Modules Generator: Fix model name and VC create module update --- dvelum/app/Modules/Generator.php | 110 ++++++++++++++++++++++++------- 1 file changed, 87 insertions(+), 23 deletions(-) diff --git a/dvelum/app/Modules/Generator.php b/dvelum/app/Modules/Generator.php index 7fc2ffb5..8e4cb0b1 100644 --- a/dvelum/app/Modules/Generator.php +++ b/dvelum/app/Modules/Generator.php @@ -51,9 +51,9 @@ public function createVcModule($object , $projectFile) $lang = Lang::lang(); //prepare class name - $name = Utils_String::formatClassName($object); + $objectName = Utils_String::formatClassName($object); - $jsName = str_replace('_','', $name); + $jsName = str_replace('_','', $objectName); $runNamespace = 'app'.$jsName.'Application'; $classNamespace = 'app'.$jsName.'Components'; @@ -74,7 +74,7 @@ public function createVcModule($object , $projectFile) $linkedObjects[] = $objectConfig->getLinkedObject($key); } - if(in_array($item['db_type'] , Db_Object_Builder::$textTypes , true) || $objectConfig->isObjectLink($key) || $objectConfig->isMultiLink($key)) + if(in_array($item['db_type'] , Db_Object_Builder::$textTypes , true)) continue; if(isset($item['hidden']) && $item['hidden']) @@ -89,7 +89,7 @@ public function createVcModule($object , $projectFile) $dataFields = array(); foreach($objectConfig->getFieldsConfig(true) as $key => $item) { - if(in_array($item['db_type'] , Db_Object_Builder::$textTypes , true)) + if(in_array($item['db_type'] , Db_Object_Builder::$textTypes , true) || $objectConfig->isMultiLink($key)) continue; if(isset($item['hidden']) && $item['hidden']) @@ -100,8 +100,8 @@ public function createVcModule($object , $projectFile) } array_unshift($objectFields , $objectConfig->getPrimaryKey()); - - $linksToShow = array_keys($objectConfig->getLinks( + $linksToShow = []; + $links = array_keys($objectConfig->getLinks( [ Db_Object_Config::LINK_OBJECT, Db_Object_Config::LINK_OBJECT_LIST, @@ -110,29 +110,36 @@ public function createVcModule($object , $projectFile) false )); - foreach($linksToShow as $k=>$v){ - if($objectConfig->isSystem($v)){ - unset($linksToShow[$v]); + $additionalModelFields = []; + + foreach($links as $k=>$v){ + if(!$objectConfig->isSystemField($v)){ + $linksToShow[$v . $this->linkedFieldPostfix] = $v; + if($objectConfig->isObjectLink($v) || $objectConfig->isMultiLink($v)){ + $additionalModelFields[$v] = $v . $this->linkedFieldPostfix; + } } } - $controllerContent = 'appConfig->get('local_controllers') . $this->appConfig->get('backend_controllers_dir') . '/' . str_replace('_' , '/' , $name); + $controllerDir = $this->appConfig->get('local_controllers') . $this->appConfig->get('backend_controllers_dir') . '/' . str_replace('_' , '/' , $objectName); $controllerFile = $this->_createControllerFile($controllerDir , $controllerContent); /* @@ -163,13 +170,34 @@ public function createVcModule($object , $projectFile) $storeFields = array_merge($storeFields , Backend_Designer_Import::checkImportORMFields($object , $dataFields)); - $urlTemplates = $this->designerConfig->get('templates'); + foreach ($storeFields as $itemObject){ + /** + * @var Ext_Object $object + */ + $name = $itemObject->name; + if(isset($linkToField[$name])){ + $storeFields[] = Ext_Factory::object('Data_Field',array( + 'name'=> $linkToField[$name], + 'type' => 'string' + )); + } + } + // Add fields for linked lists + if(!empty($additionalModelFields)){ + foreach ($additionalModelFields as $dataIndex){ + $storeFields[] = Ext_Factory::object('Data_Field',array( + 'name'=> $dataIndex, + 'type' => 'string' + )); + } + } + $urlTemplates = $this->designerConfig->get('templates'); $controllerUrl = Request::url(array($urlTemplates['adminpath'] , $object , '') , false); $storeUrl = Request::url(array($urlTemplates['adminpath'] , $object , 'list')); - $modelName = $name.'Model'; + $modelName = str_replace('_','',$objectName).'Model'; $model = Ext_Factory::object('Model'); $model->setName($modelName); $model->idProperty = $primaryKey; @@ -221,8 +249,25 @@ public function createVcModule($object , $projectFile) $eventManager->setEvent('dataGrid', 'itemdblclick', 'this.showEditWindow(record.get("id"));'); - $objectFieldList = Backend_Designer_Import::checkImportORMFields($object , $objectFields); + $column = Ext_Factory::object('Grid_Column_Action'); + $column->text = ''; + $column->setName($dataGrid->getName().'_pre_actions'); + $column->align = 'center'; + $column->width = 40; + + $editButton = Ext_Factory::object('Grid_Column_Action_Button'); + $editButton->setName($dataGrid->getName().'_actions_edit'); + $editButton->text = ''; + $editButton->icon = '[%wroot%]i/system/edit.png'; + $editButton->tooltip = '[js:] appLang.EDIT_ITEM'; + $editButton->isDisabled = 'function(){return !this.canEdit;}'; + $eventManager->setEvent($editButton->getName(), 'handler', 'this.showEditWindow(grid.getStore().getAt(rowIndex).get("id"));'); + + $column->addAction($editButton->getName() ,$editButton); + $dataGrid->addColumn($column->getName() , $column , $parent = 0); + + $objectFieldList = Backend_Designer_Import::checkImportORMFields($object , $objectFields); $publishedRec = new stdClass(); $publishedRec->name = 'published'; @@ -241,6 +286,10 @@ public function createVcModule($object , $projectFile) foreach($objectFieldList as $fieldConfig) { + // skip object link column (will be set with $additionalModelFields) + if($objectConfig->isObjectLink($fieldConfig->name)){ + continue; + } switch($fieldConfig->type){ case 'boolean': @@ -316,6 +365,21 @@ public function createVcModule($object , $projectFile) $dataGrid->addColumn($column->getName() , $column , $parent = 0); } + + // Add fields for linked lists + if(!empty($additionalModelFields)){ + foreach ($additionalModelFields as $field=>$dataIndex){ + $column = Ext_Factory::object('Grid_Column'); + $column->setName($dataIndex); + $column->dataIndex = $dataIndex; + $column->sortable = false; + $column->itemId = $dataIndex; + $cfg = $objectConfig->getFieldConfig($field); + $column->text = $cfg['title']; + $dataGrid->addColumn($column->getName() , $column , $parent = 0); + } + } + $column = Ext_Factory::object('Grid_Column_Action'); $column->text = '[js:] appLang.ACTIONS'; $column->setName($dataGrid->getName().'_actions'); @@ -471,9 +535,9 @@ public function createModule($object , $projectFile) $lang = Lang::lang(); //prepare class name - $name = Utils_String::formatClassName($object); + $objectName = Utils_String::formatClassName($object); - $jsName = str_replace('_','', $name); + $jsName = str_replace('_','', $objectName); $runNamespace = 'app'.$jsName.'Application'; $classNamespace = 'app'.$jsName.'Components'; @@ -532,7 +596,7 @@ public function createModule($object , $projectFile) $additionalModelFields = []; foreach($links as $k=>$v){ - if(!$objectConfig->isSystem($v)){ + if(!$objectConfig->isSystemField($v)){ $linksToShow[$v . $this->linkedFieldPostfix] = $v; if($objectConfig->isObjectLink($v) || $objectConfig->isMultiLink($v)){ $additionalModelFields[$v] = $v . $this->linkedFieldPostfix; @@ -541,7 +605,7 @@ public function createModule($object , $projectFile) } $linkToField = array_flip($linksToShow); - $controllerContent = 'appConfig->get('local_controllers') . $this->appConfig->get('backend_controllers_dir') . '/' . str_replace('_' , '/' , $name); + $controllerDir = $this->appConfig->get('local_controllers') . $this->appConfig->get('backend_controllers_dir') . '/' . str_replace('_' , '/' , $objectName); $this->_createControllerFile($controllerDir , $controllerContent); @chmod( $controllerDir . DIRECTORY_SEPARATOR . 'Controller.php' , $controllerContent, 0775); @@ -605,7 +669,7 @@ public function createModule($object , $projectFile) $controllerUrl = Request::url(array($urlTemplates['adminpath'] , $object , ''),false); $storeUrl = Request::url(array($urlTemplates['adminpath'] , $object , 'list')); - $modelName = $name.'Model'; + $modelName = str_replace('_','',$objectName).'Model'; $model = Ext_Factory::object('Model'); $model->setName($modelName); $model->idProperty = $primaryKey; From 47259b9f608ef6fe03d652d4ce440b3d2bc22bc2 Mon Sep 17 00:00:00 2001 From: hartois Date: Thu, 17 Aug 2017 08:40:29 +0300 Subject: [PATCH 03/20] ObjectLink: add valueType property --- .../Ext/Property/Component/Field/System/Objectlink.php | 1 + www/js/app/system/ObjectLink.js | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/dvelum/library/Ext/Property/Component/Field/System/Objectlink.php b/dvelum/library/Ext/Property/Component/Field/System/Objectlink.php index ce770239..53c1c35c 100644 --- a/dvelum/library/Ext/Property/Component/Field/System/Objectlink.php +++ b/dvelum/library/Ext/Property/Component/Field/System/Objectlink.php @@ -8,6 +8,7 @@ class Ext_Property_Component_Field_System_Objectlink extends Ext_Property_Form_F public $extraParams = self::Object; public $readOnly = self::Boolean; public $name = self::String; + public $valueType = self::String; static public $extend = 'app.objectLink.Field'; static public $xtype = 'objectlinkfield'; diff --git a/www/js/app/system/ObjectLink.js b/www/js/app/system/ObjectLink.js index e4316f5c..affc16e7 100644 --- a/www/js/app/system/ObjectLink.js +++ b/www/js/app/system/ObjectLink.js @@ -20,6 +20,7 @@ Ext.define('app.objectLink.Field',{ layout:'fit', readOnly:false, allowBlank:true, + valueType:'integer', /** * Extra params for requests * @property {Object} @@ -108,6 +109,7 @@ Ext.define('app.objectLink.Field',{ objectName:this.objectName, controllerUrl:this.controllerUrl + this.ajaxActions.list, title:this.fieldLabel, + valueType:this.valueType, extraParams:this.extraParams }); @@ -226,6 +228,7 @@ Ext.define('app.objectLink.SelectWindow',{ objectName:'', fieldName:'', singleSelect:true, + valueType:'integer', /** * Extra params for requests * @property {Object} @@ -243,7 +246,7 @@ Ext.define('app.objectLink.SelectWindow',{ this.dataStore = Ext.create('Ext.data.Store',{ fields:[ - {name:'id' , type:'integer'}, + {name:'id' , type:this.valueType}, {name:'title' , type:'string'}, {name:'published' , type:'boolean'}, {name:'deleted' , type:'boolean'} @@ -337,6 +340,7 @@ Ext.define('app.objectLink.Panel',{ alias:'widget.objectlinkpanel', name:'', objectName:'', + valueType:'integer', controllerUrl:'', initComponent:function(){ @@ -350,6 +354,7 @@ Ext.define('app.objectLink.Panel',{ height:500, selectMode:true, objectName:this.objectName, + valueType:this.valueType, controllerUrl:this.controllerUrl + 'linkedlist', title:this.fieldLabel, extraParams:this.extraParams From 88106d5597b1e7820fa820bd5438864045ce5d77 Mon Sep 17 00:00:00 2001 From: hartois Date: Thu, 17 Aug 2017 21:57:43 +0300 Subject: [PATCH 04/20] Request: fix getPart for value eq zero --- dvelum/library/Request.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dvelum/library/Request.php b/dvelum/library/Request.php index 4f169cc4..08470f69 100755 --- a/dvelum/library/Request.php +++ b/dvelum/library/Request.php @@ -159,7 +159,7 @@ protected function _findPaths() */ public function getPart($index) { - if(isset($this->_path[$index]) && !empty($this->_path[$index])) { + if(isset($this->_path[$index]) && strlen($this->_path[$index])) { return $this->_path[$index]; } else { return false; From a61174d966bf17ce78c774ac51c527e8d8775f9d Mon Sep 17 00:00:00 2001 From: hartois Date: Fri, 18 Aug 2017 08:36:26 +0300 Subject: [PATCH 05/20] Orm Dataview: add delete action in grid --- dvelum/app/Backend/Orm/Dataview.php | 24 +++++++++++- www/js/app/system/orm/dataViewWindow.js | 51 +++++++++++++++++++++++-- 2 files changed, 71 insertions(+), 4 deletions(-) diff --git a/dvelum/app/Backend/Orm/Dataview.php b/dvelum/app/Backend/Orm/Dataview.php index e10540f6..ee0f5b3f 100644 --- a/dvelum/app/Backend/Orm/Dataview.php +++ b/dvelum/app/Backend/Orm/Dataview.php @@ -305,7 +305,29 @@ public function editorvcAction() $router->runController('Backend_Orm_Dataview_Editor_Vc' , $request->getPart(4)); } - public function otitleAction() + public function deleteAction() + { + $object = Request::post('object','string', false); + $id = Request::post('id', 'integer', false); + + if(empty($id)) + Response::jsonError($this->_lang->WRONG_REQUEST); + + if(!$object || !Db_Object_Config::configExists($object)) + Response::jsonError($this->_lang->WRONG_REQUEST); + + try { + $o = Db_Object::factory($object, $id); + $ret=$o->delete(); + if(!$ret) + Response::jsonError($this->_lang->get('CANT_EXEC')); + }catch (Exception $e){ + Response::jsonError($this->_lang->get('CANT_EXEC')); + } + Response::jsonSuccess(); + } + + public function otitleAction() { $object = Request::post('object','string', false); $id = Request::post('id', 'string', false); diff --git a/www/js/app/system/orm/dataViewWindow.js b/www/js/app/system/orm/dataViewWindow.js index 035a3f51..905c89b2 100644 --- a/www/js/app/system/orm/dataViewWindow.js +++ b/www/js/app/system/orm/dataViewWindow.js @@ -94,7 +94,6 @@ Ext.define('app.crud.orm.DataViewWindow', { rootProperty:"data", totalProperty:"count" }, - simpleSortMode: true }, autoLoad: true }); @@ -126,7 +125,27 @@ Ext.define('app.crud.orm.DataViewWindow', { cols.push(item); }); - var tBar = []; + if(!this.selectMode) + { + cols.push( + { + xtype:'actioncolumn', + width:30, + items:[ + { + iconCls:'deleteIcon', + scope:this, + tooltip:appLang.DELETE, + handler:function(grid, rowIndex, colIndex){ + var rec = grid.getStore().getAt(rowIndex); + this.deleteItem(rec.get('id')); + } + } + ] + }); + } + + var tBar = []; if(!this.selectMode && !this.readOnly) { @@ -321,5 +340,31 @@ Ext.define('app.crud.orm.DataViewWindow', { }); } win.show(); - } + }, + /** + * Delete record + */ + deleteItem : function(itemId){ + if(!Ext.isNumeric(itemId)) + return false; + var me = this; + Ext.Ajax.request({ + url: this.controllerUrl + 'delete', + waitMsg:appLang.PROCESSING, + method: 'post', + params: { + 'id':itemId, + 'object':this.objectName + }, + success: function(response, request) { + response = Ext.JSON.decode(response.responseText); + if(response.success){ + me.dataStore.load(); + }else{ + Ext.MessageBox.alert(appLang.MESSAGE,response.msg); + } + } + }); + }, + }); \ No newline at end of file From 08ca1326e3f0a483b55b0f35e6669ba72372a065 Mon Sep 17 00:00:00 2001 From: hartois Date: Fri, 18 Aug 2017 12:17:50 +0300 Subject: [PATCH 06/20] Orm compile --- www/js/app/system/ORM.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/www/js/app/system/ORM.js b/www/js/app/system/ORM.js index 77fdd6f6..85abea75 100644 --- a/www/js/app/system/ORM.js +++ b/www/js/app/system/ORM.js @@ -107,9 +107,11 @@ link.addTo(this.graph);this.allItems[umlItem].linksObj[umlItemLink]=link;}}} this.allIsRendered=true;},loadData:function(){Ext.Ajax.request({url:this.controllerUrl+'getumldata',params:this.params,method:'post',scope:this,success:function(response,request){response=Ext.JSON.decode(response.responseText);if(!response.success){Ext.Msg.alert(appLang.MESSAGE,response.msg);}else{this.umlData=response.data.items;this.mapWidth=response.data.mapWidth;this.mapHeight=response.data.mapHeight;this.renderUML();}},failure:app.ajaxFailure});},saveMap:function(){var map={};var drawX=this.drawEl.getEl().getX();var drawY=this.drawEl.getEl().getY();Ext.Object.each(this.allItems,function(index,item){map[index]=item.get('position');map[index].links={};Ext.Object.each(this.allItems[index].linksObj,function(target,link){map[index].links[target]={};map[index].links[target]['vertices']=link.prop('vertices');});},this);this.getEl().mask(appLang.SAVING);Ext.Ajax.request({url:this.controllerUrl+'saveumlmap',method:'post',scope:this,params:{map:Ext.JSON.encode(map)},success:function(response,request){response=Ext.JSON.decode(response.responseText);if(!response.success){Ext.Msg.alert(appLang.MESSAGE,response.msg);} this.getEl().unmask();},failure:function(){this.getEl().unmask();app.ajaxFailure(arguments);}});}});Ext.define('app.crud.orm.DataViewWindow',{extend:'Ext.window.Window',objectName:'',controllerUrl:'',width:800,height:600,maximizable:true,readOnly:false,layout:'fit',dataGrid:null,dataStore:null,searchField:null,isVc:null,primaryKey:'id',editorCfg:false,selectMode:false,closeOnSelect:true,modal:true,relatedGrids:null,initComponent:function(){if(this.selectMode){this.buttons=[{text:appLang.SELECT,scope:this,handler:this.selectItem},{text:appLang.CLOSE,scope:this,handler:this.close}];} this.callParent();this.on('show',function(){app.checkSize(this);this.loadInterface();},this);},loadInterface:function(){var me=this;me.getEl().mask(appLang.LOADING);Ext.Ajax.request({url:this.controllerUrl+'viewconfig',method:'post',params:{object:this.objectName},scope:this,success:function(response,request){response=Ext.JSON.decode(response.responseText);if(!response.success){Ext.Msg.alert(appLang.MESSAGE,response.msg);}else{this.configurate(response.data);} -me.getEl().unmask();},failure:function(){me.getEl().unmask();app.ajaxFailure(arguments);}});},configurate:function(data){this.dataStore=Ext.create('Ext.data.Store',{fields:data.fields,remoteSort:true,proxy:{type:'ajax',url:this.controllerUrl+'list',directionParam:"pager[dir]",limitParam:"pager[limit]",simpleSortMode:true,sortParam:"pager[sort]",startParam:"pager[start]",extraParams:{object:this.objectName},reader:{type:'json',idProperty:"id",rootProperty:"data",totalProperty:"count"},simpleSortMode:true},autoLoad:true});var cols=[];if(!this.selectMode) +me.getEl().unmask();},failure:function(){me.getEl().unmask();app.ajaxFailure(arguments);}});},configurate:function(data){this.dataStore=Ext.create('Ext.data.Store',{fields:data.fields,remoteSort:true,proxy:{type:'ajax',url:this.controllerUrl+'list',directionParam:"pager[dir]",limitParam:"pager[limit]",simpleSortMode:true,sortParam:"pager[sort]",startParam:"pager[start]",extraParams:{object:this.objectName},reader:{type:'json',idProperty:"id",rootProperty:"data",totalProperty:"count"},},autoLoad:true});var cols=[];if(!this.selectMode) {cols.push({xtype:'actioncolumn',width:30,items:[{iconCls:'editIcon',scope:this,tooltip:appLang.EDIT,handler:function(grid,rowIndex,colIndex){var rec=grid.getStore().getAt(rowIndex);this.showEdit(rec.get('id'));}}]});} -Ext.each(data.columns,function(item){cols.push(item);});var tBar=[];if(!this.selectMode&&!this.readOnly) +Ext.each(data.columns,function(item){cols.push(item);});if(!this.selectMode) +{cols.push({xtype:'actioncolumn',width:30,items:[{iconCls:'deleteIcon',scope:this,tooltip:appLang.DELETE,handler:function(grid,rowIndex,colIndex){var rec=grid.getStore().getAt(rowIndex);this.deleteItem(rec.get('id'));}}]});} +var tBar=[];if(!this.selectMode&&!this.readOnly) {tBar.push({text:appLang.ADD_ITEM,scope:this,handler:function(){this.showEdit(0);}});} this.searchField=Ext.create('SearchPanel',{store:this.dataStore,isLocal:false,fieldNames:data.searchFields});tBar.push('->',this.searchField);this.dataGrid=Ext.create('Ext.grid.Panel',{columns:cols,selModel:Ext.create('Ext.selection.RowModel',{mode:'single'}),columnLines:true,store:this.dataStore,loadMask:true,tbar:tBar,viewConfig:{enableTextSelection:true},bbar:Ext.create("Ext.PagingToolbar",{store:this.dataStore,displayInfo:true,displayMsg:appLang.DISPLAYING_RECORDS+" {0} - {1} "+appLang.OF+" {2}",emptyMsg:appLang.NO_RECORDS_TO_DISPLAY})});if(this.selectMode){this.dataGrid.on('celldblclick',function(table,td,cellIndex,record,tr,rowIndex,e,eOpts){this.fireEvent('select',record);if(this.closeOnSelect){this.close();}},this);}else{this.dataGrid.on('celldblclick',function(table,td,cellIndex,record,tr,rowIndex,e,eOpts){this.showEdit(record.get(this.primaryKey));},this);} this.add(this.dataGrid);},selectItem:function() @@ -121,7 +123,8 @@ me.getEl().unmask();},failure:function(){me.getEl().unmask();app.ajaxFailure(arg {var win;var me=this;var related=this.editorCfg.related;var fields=Ext.JSON.decode(this.editorCfg.fields);this.relatedGrids=[];if(!Ext.isEmpty(related)){Ext.each(related,function(item){var grid=Ext.create('app.relatedGridPanel',{title:item.title,fieldName:item.field,listeners:{addItemCall:{fn:function(){Ext.create('app.crud.orm.DataViewWindow',{width:600,height:500,selectMode:true,closeOnSelect:false,objectName:item.object,controllerUrl:this.controllerUrl,isVc:this.isVc,title:item.title,readOnly:this.editorCfg.readOnly,primaryKey:this.editorCfg.primaryKey,listeners:{scope:this,select:function(record){if(record.get('published')!=undefined){published=record.get('published');}else{published=1;} me.relatedGrids[item.field].addRecord(app.relatedGridModel.create({'id':record.get('id'),'published':published,'title':record.get(item.titleField),'deleted':0}));}}}).show();},scope:this}}});this.relatedGrids[item.field]=grid;fields.push(grid);},this);} if(this.isVc){win=Ext.create('app.contentWindow',{width:800,height:800,objectName:this.objectName,hasPreview:false,items:fields,dataItemId:id,primaryKey:this.primaryKey,controllerUrl:this.controllerUrl+app.createUrl(['editorvc','']),canEdit:!this.readOnly,canDelete:!this.readOnly,canPublish:!this.readOnly,listeners:{dataSaved:{fn:function(){me.dataStore.load();},scope:me}}});}else{win=Ext.create('app.editWindow',{width:800,height:800,dataItemId:id,canEdit:!this.readOnly,canDelete:!this.readOnly,primaryKey:this.primaryKey,items:fields,objectName:this.objectName,controllerUrl:this.controllerUrl+app.createUrl(['editor','']),listeners:{dataSaved:{fn:function(){me.dataStore.load();},scope:me}}});} -win.show();}});Ext.define('app.crud.orm.ObjectField',{extend:'Ext.form.FieldContainer',alias:'widget.objectfield',triggerCls:'urlTrigger',dataField:null,triggerButton:null,layout:'vbox',onlyController:false,controllerUrl:'',objectName:'',value:"",isVc:'',fieldLabel:'',initComponent:function(){var me=this;this.dataField=Ext.create('Ext.form.field.Text',{anchor:"100%",readOnly:true,name:this.name,listeners:{change:{fn:this.getObjectTitle,scope:this}}});this.dataFieldLabel=Ext.create('Ext.form.field.Display',{anchor:"100%",value:"..."});this.triggerButton=Ext.create('Ext.button.Button',{iconCls:'searchIcon',width:20,scope:me,tooltip:appLang.SELECT,handler:function(){var win=Ext.create('app.crud.orm.DataViewWindow',{width:600,height:500,selectMode:true,objectName:this.objectName,controllerUrl:this.controllerUrl,isVc:this.isVc,title:this.fieldLabel,listeners:{scope:me,select:function(record){me.setValue(record.get('id'));me.fireEvent('completeEdit');}}});win.show();app.checkSize(win);}});this.removeButton=Ext.create('Ext.button.Button',{iconCls:'deleteIcon',width:20,tooltip:appLang.CLEAR,scope:me,handler:function(){me.setValue("");}});var valueContainer={anchor:"100%",xtype:'fieldcontainer',layout:'hbox',items:[this.dataField,this.triggerButton,this.removeButton]};this.items=[this.dataFieldLabel,valueContainer];this.callParent();},setValue:function(value){this.dataField.setValue(value);},getValue:function(){return this.dataField.getValue();},reset:function(){this.dataField.reset();},isValid:function(){return true;},getObjectTitle:function(){var me=this;var curValue=me.getValue();if(curValue==""||curValue==0){me.dataFieldLabel.setValue('');return;} +win.show();},deleteItem:function(itemId){if(!Ext.isNumeric(itemId)) +return false;var me=this;Ext.Ajax.request({url:this.controllerUrl+'delete',waitMsg:appLang.PROCESSING,method:'post',params:{'id':itemId,'object':this.objectName},success:function(response,request){response=Ext.JSON.decode(response.responseText);if(response.success){me.dataStore.load();}else{Ext.MessageBox.alert(appLang.MESSAGE,response.msg);}}});},});Ext.define('app.crud.orm.ObjectField',{extend:'Ext.form.FieldContainer',alias:'widget.objectfield',triggerCls:'urlTrigger',dataField:null,triggerButton:null,layout:'vbox',onlyController:false,controllerUrl:'',objectName:'',value:"",isVc:'',fieldLabel:'',initComponent:function(){var me=this;this.dataField=Ext.create('Ext.form.field.Text',{anchor:"100%",readOnly:true,name:this.name,listeners:{change:{fn:this.getObjectTitle,scope:this}}});this.dataFieldLabel=Ext.create('Ext.form.field.Display',{anchor:"100%",value:"..."});this.triggerButton=Ext.create('Ext.button.Button',{iconCls:'searchIcon',width:20,scope:me,tooltip:appLang.SELECT,handler:function(){var win=Ext.create('app.crud.orm.DataViewWindow',{width:600,height:500,selectMode:true,objectName:this.objectName,controllerUrl:this.controllerUrl,isVc:this.isVc,title:this.fieldLabel,listeners:{scope:me,select:function(record){me.setValue(record.get('id'));me.fireEvent('completeEdit');}}});win.show();app.checkSize(win);}});this.removeButton=Ext.create('Ext.button.Button',{iconCls:'deleteIcon',width:20,tooltip:appLang.CLEAR,scope:me,handler:function(){me.setValue("");}});var valueContainer={anchor:"100%",xtype:'fieldcontainer',layout:'hbox',items:[this.dataField,this.triggerButton,this.removeButton]};this.items=[this.dataFieldLabel,valueContainer];this.callParent();},setValue:function(value){this.dataField.setValue(value);},getValue:function(){return this.dataField.getValue();},reset:function(){this.dataField.reset();},isValid:function(){return true;},getObjectTitle:function(){var me=this;var curValue=me.getValue();if(curValue==""||curValue==0){me.dataFieldLabel.setValue('');return;} me.dataFieldLabel.getEl().mask(appLang.LOADING);Ext.Ajax.request({url:this.controllerUrl+'otitle',method:'post',params:{object:this.objectName,id:curValue},scope:this,success:function(response,request){response=Ext.JSON.decode(response.responseText);if(!response.success){me.dataFieldLabel.getEl().unmask();Ext.Msg.alert(appLang.MESSAGE,response.msg);}else{me.dataFieldLabel.getEl().unmask();me.dataFieldLabel.setValue(response.data.title);me.updateLayout();}},failure:function(){me.dataFieldLabel.getEl().unmask();app.ajaxFailure(arguments);}});}});Ext.ns('app.orm.connections');Ext.define('app.orm.connections.Window',{extend:'Ext.Window',dataGrid:null,dataStore:null,controllerUrl:'',dbConfigs:null,modal:true,constructor:function(config){config=Ext.apply({title:appLang.DB_CONNECTIONS,width:700,height:300,layout:'fit',closeAction:'destroy',maximizable:true},config||{});this.callParent(arguments);},initComponent:function(){var me=this;var defaultConnectionId=this.dbConfigs[0]['id'];this.dataStore=Ext.create('Ext.data.Store',{fields:[{name:'id',type:'string'},{name:'system',type:'boolean'},{name:'devType',type:'integer'},{name:'username',type:'string'},{name:'dbname',type:'string'},{name:'host',type:'string'},{name:'adapter',type:'string'}],proxy:{type:'ajax',url:this.controllerUrl+'list',extraParams:{devType:defaultConnectionId},reader:{type:'json',rootProperty:'data',idProperty:'id'},simpleSortMode:true},remoteSort:false,autoLoad:true,sorters:[{property:'id',direction:'DESC'}]});this.filter=Ext.create('Ext.form.field.ComboBox',{typeAhead:true,triggerAction:'all',selectOnTab:true,labelWidth:80,forceSelection:true,queryMode:'local',displayField:'title',valueField:'id',value:defaultConnectionId,store:Ext.create('Ext.data.Store',{fields:[{name:'id',type:'integer'},{name:'title',type:'string'}],data:this.dbConfigs}),listeners:{change:{fn:function(){this.dataStore.proxy.setExtraParam('devType',this.filter.getValue());this.dataStore.load();},scope:this}}});this.dataGrid=Ext.create('Ext.grid.Panel',{store:this.dataStore,viewConfig:{stripeRows:false},frame:false,loadMask:true,columnLines:true,scrollable:true,forceFit:true,viewConfig:{enableTextSelection:true},tbar:[{text:appLang.ADD_ITEM,handler:function(){this.showEditWindow(false,this.filter.getValue());},scope:this},'-',appLang.TYPE,this.filter],columns:[{xtype:'actioncolumn',width:30,items:[{iconCls:'editIcon',width:30,scope:this,handler:function(grid,rowIndex,colIndex){var rec=this.dataStore.getAt(rowIndex);this.showEditWindow(rec.get('id'),rec.get('devType'));}}]},{text:appLang.NAME,dataIndex:'id'},{sortable:true,text:appLang.DB_HOST,dataIndex:'host',align:'center'},{sortable:true,text:appLang.DB_NAME,dataIndex:'dbname',align:'center'},{sortable:true,text:appLang.USER,dataIndex:'username',align:'center'},{sortable:true,text:appLang.DB_ADAPTER,dataIndex:'adapter',align:'center'},{width:30,align:'center',dataIndex:'system',colid:'deleteindex',renderer:function(value,metaData,record,rowIndex,colIndex,store){if(value){return'';}else{return'';}}}],listeners:{'itemdblclick':{fn:function(view,record,number,event,options){this.showEditWindow(record.get('id'),record.get('devType'));},scope:this},'cellclick':{fn:function(grid,cell,columnIndex,record,node,rowIndex,evt){var column=grid.getHeaderCt().getHeaderAtIndex(columnIndex).colid;if(record.get('primary')) return;switch(column){case'deleteindex':if(record.get('system')){return;} this.removeItem(record);break;}},scope:this}}});this.items=[this.dataGrid];this.callParent();this.on('show',function(){app.checkSize(this);});},removeItem:function(record){Ext.Ajax.request({url:this.controllerUrl+'remove',method:'post',scope:this,params:{'id':record.get('id')},success:function(response,request){response=Ext.JSON.decode(response.responseText);if(response.success){this.dataStore.remove(record);}else{Ext.Msg.alert(appLang.MESSAGE,response.msg);}},failure:function(){Ext.Msg.alert(appLang.MESSAGE,appLang.MSG_LOST_CONNECTION);}});},showEditWindow:function(id,devtype){var win=Ext.create('app.orm.connections.EditWindow',{recordId:id,devType:devtype,controllerUrl:this.controllerUrl});win.on('dataSaved',function(){this.dataStore.load();},this);win.show();}});Ext.define('app.orm.connections.EditWindow',{extend:'Ext.Window',dataForm:null,recordId:null,controllerUrl:'',devType:false,recordId:false,constructor:function(config){config=Ext.apply({title:appLang.DB_CONNECTIONS,width:400,height:430,layout:'fit',modal:true,closeAction:'destroy',maximizable:false},config||{});this.callParent(arguments);},initComponent:function(){this.dataForm=Ext.create('Ext.form.Panel',{bodyCls:'formBody',bodyPadding:10,fieldDefaults:{anchor:'100%',labelWidth:140},items:[{xtype:'textfield',fieldLabel:appLang.NAME,allowBlank:false,vtype:'alphanum',value:'',name:'id'},{xtype:'textfield',fieldLabel:appLang.DB_HOST,allowBlank:false,name:'host'},{xtype:'textfield',fieldLabel:appLang.DB_PORT,allowBlank:true,name:'port'},{xtype:'textfield',fieldLabel:appLang.DB_NAME,allowBlank:false,name:'dbname'},{xtype:'textfield',fieldLabel:appLang.DB_CHARSET,allowBlank:false,value:'UTF8',name:'charset'},{xtype:'textfield',fieldLabel:appLang.DB_PREFIX,name:'prefix'},Ext.create('Ext.form.field.ComboBox',{xtype:'combo',name:'adapter',fieldLabel:appLang.DB_ADAPTER,queryMode:'local',allowBlank:false,forceSelection:true,displayField:'title',valueField:'title',value:'Mysqli',store:Ext.create('Ext.data.Store',{fields:[{name:'title',type:'string'}],data:[{title:'Mysqli'}],sorters:[{property:'title',direction:'ASC'}]})}),Ext.create('Ext.form.field.ComboBox',{xtype:'combo',allowBlank:false,name:'adapterNamespace',fieldLabel:appLang.DB_ADAPTER_NAMESPACE,queryMode:'local',forceSelection:true,displayField:'title',valueField:'id',value:'Db_Adapter',store:Ext.create('Ext.data.Store',{fields:[{name:'id',type:'string'},{name:'title',type:'string'}],data:[{title:'DVelum (recomended)',id:'Db_Adapter'},{title:'Zend',id:'Zend_Db_Adapter'}],sorters:[{property:'title',direction:'ASC'}]})}),{xtype:'textfield',fieldLabel:appLang.USER,allowBlank:false,name:'username'},{name:'setpass',value:1,readOnly:true,fieldLabel:appLang.CHANGE_PASSWORD,submitValue:true,checked:true,readOnly:true,xtype:'checkbox',listeners:{change:{fn:this.denyBlankPassword,scope:this,buffer:350}}},{fieldLabel:appLang.PASSWORD,inputType:"password",name:"password",xtype:"textfield",enableKeyEvents:true,allowBlank:false},{fieldLabel:appLang.PASSWORD_CONFIRM,inputType:"password",name:"pass2",submitValue:false,xtype:"textfield",enableKeyEvents:true,vtype:'password',initialPassField:'password',allowBlank:false}]});this.buttons=[{text:appLang.TEST,scope:this,handler:this.testAction},{text:appLang.SAVE,scope:this,handler:this.saveAction},{text:appLang.CANCEL,scope:this,handler:this.close},];this.items=[this.dataForm];this.callParent(arguments);if(this.recordId){this.dataForm.load({url:this.controllerUrl+'load',params:{id:this.recordId,devType:this.devType},scope:this,success:function(form,action){if(action.result.success){form.findField('setpass').enable();form.findField('setpass').setValue(false);form.findField('setpass').setReadOnly(false);}else{Ext.Msg.alert(appLang.MESSAGE,action.result.msg);}},failure:app.formFailure});}},denyBlankPassword:function(field,bool){var handle=this.dataForm.getForm();if(!bool){handle.findField('password').disable();handle.findField('pass2').disable();}else{handle.findField('password').enable();handle.findField('pass2').enable();} From b0a4ac68ebe9ce6724ea734580c5a63e68c061e2 Mon Sep 17 00:00:00 2001 From: k-samuel Date: Fri, 18 Aug 2017 17:24:36 +0300 Subject: [PATCH 07/20] Orm DataView fix deleteAction --- dvelum/app/Backend/Orm/Dataview.php | 31 +++++++++++-------------- www/js/app/system/ORM.js | 2 +- www/js/app/system/orm/dataViewWindow.js | 2 +- 3 files changed, 16 insertions(+), 19 deletions(-) diff --git a/dvelum/app/Backend/Orm/Dataview.php b/dvelum/app/Backend/Orm/Dataview.php index ee0f5b3f..9121ac84 100644 --- a/dvelum/app/Backend/Orm/Dataview.php +++ b/dvelum/app/Backend/Orm/Dataview.php @@ -307,24 +307,21 @@ public function editorvcAction() public function deleteAction() { - $object = Request::post('object','string', false); - $id = Request::post('id', 'integer', false); - - if(empty($id)) - Response::jsonError($this->_lang->WRONG_REQUEST); - - if(!$object || !Db_Object_Config::configExists($object)) - Response::jsonError($this->_lang->WRONG_REQUEST); - - try { - $o = Db_Object::factory($object, $id); - $ret=$o->delete(); - if(!$ret) - Response::jsonError($this->_lang->get('CANT_EXEC')); - }catch (Exception $e){ - Response::jsonError($this->_lang->get('CANT_EXEC')); + $request = Request::getInstance(); + + $object = Request::post('d_object','string', false); + + if(!$object || !Db_Object_Config::configExists($object)){ + Response::jsonError($this->_lang->get('WRONG_REQUEST')); + } + + $config = Db_Object_Config::getInstance($object); + $router = new Backend_Router(); + if($config->isRevControl()){ + $router->runController('Backend_Orm_Dataview_Editor' , 'delete'); + }else{ + $router->runController('Backend_Orm_Dataview_Editor_Vc' , 'delete'); } - Response::jsonSuccess(); } public function otitleAction() diff --git a/www/js/app/system/ORM.js b/www/js/app/system/ORM.js index 85abea75..8dd6c696 100644 --- a/www/js/app/system/ORM.js +++ b/www/js/app/system/ORM.js @@ -124,7 +124,7 @@ me.getEl().unmask();},failure:function(){me.getEl().unmask();app.ajaxFailure(arg me.relatedGrids[item.field].addRecord(app.relatedGridModel.create({'id':record.get('id'),'published':published,'title':record.get(item.titleField),'deleted':0}));}}}).show();},scope:this}}});this.relatedGrids[item.field]=grid;fields.push(grid);},this);} if(this.isVc){win=Ext.create('app.contentWindow',{width:800,height:800,objectName:this.objectName,hasPreview:false,items:fields,dataItemId:id,primaryKey:this.primaryKey,controllerUrl:this.controllerUrl+app.createUrl(['editorvc','']),canEdit:!this.readOnly,canDelete:!this.readOnly,canPublish:!this.readOnly,listeners:{dataSaved:{fn:function(){me.dataStore.load();},scope:me}}});}else{win=Ext.create('app.editWindow',{width:800,height:800,dataItemId:id,canEdit:!this.readOnly,canDelete:!this.readOnly,primaryKey:this.primaryKey,items:fields,objectName:this.objectName,controllerUrl:this.controllerUrl+app.createUrl(['editor','']),listeners:{dataSaved:{fn:function(){me.dataStore.load();},scope:me}}});} win.show();},deleteItem:function(itemId){if(!Ext.isNumeric(itemId)) -return false;var me=this;Ext.Ajax.request({url:this.controllerUrl+'delete',waitMsg:appLang.PROCESSING,method:'post',params:{'id':itemId,'object':this.objectName},success:function(response,request){response=Ext.JSON.decode(response.responseText);if(response.success){me.dataStore.load();}else{Ext.MessageBox.alert(appLang.MESSAGE,response.msg);}}});},});Ext.define('app.crud.orm.ObjectField',{extend:'Ext.form.FieldContainer',alias:'widget.objectfield',triggerCls:'urlTrigger',dataField:null,triggerButton:null,layout:'vbox',onlyController:false,controllerUrl:'',objectName:'',value:"",isVc:'',fieldLabel:'',initComponent:function(){var me=this;this.dataField=Ext.create('Ext.form.field.Text',{anchor:"100%",readOnly:true,name:this.name,listeners:{change:{fn:this.getObjectTitle,scope:this}}});this.dataFieldLabel=Ext.create('Ext.form.field.Display',{anchor:"100%",value:"..."});this.triggerButton=Ext.create('Ext.button.Button',{iconCls:'searchIcon',width:20,scope:me,tooltip:appLang.SELECT,handler:function(){var win=Ext.create('app.crud.orm.DataViewWindow',{width:600,height:500,selectMode:true,objectName:this.objectName,controllerUrl:this.controllerUrl,isVc:this.isVc,title:this.fieldLabel,listeners:{scope:me,select:function(record){me.setValue(record.get('id'));me.fireEvent('completeEdit');}}});win.show();app.checkSize(win);}});this.removeButton=Ext.create('Ext.button.Button',{iconCls:'deleteIcon',width:20,tooltip:appLang.CLEAR,scope:me,handler:function(){me.setValue("");}});var valueContainer={anchor:"100%",xtype:'fieldcontainer',layout:'hbox',items:[this.dataField,this.triggerButton,this.removeButton]};this.items=[this.dataFieldLabel,valueContainer];this.callParent();},setValue:function(value){this.dataField.setValue(value);},getValue:function(){return this.dataField.getValue();},reset:function(){this.dataField.reset();},isValid:function(){return true;},getObjectTitle:function(){var me=this;var curValue=me.getValue();if(curValue==""||curValue==0){me.dataFieldLabel.setValue('');return;} +return false;var me=this;Ext.Ajax.request({url:this.controllerUrl+'delete',waitMsg:appLang.PROCESSING,method:'post',params:{'id':itemId,'d_object':this.objectName},success:function(response,request){response=Ext.JSON.decode(response.responseText);if(response.success){me.dataStore.load();}else{Ext.MessageBox.alert(appLang.MESSAGE,response.msg);}}});},});Ext.define('app.crud.orm.ObjectField',{extend:'Ext.form.FieldContainer',alias:'widget.objectfield',triggerCls:'urlTrigger',dataField:null,triggerButton:null,layout:'vbox',onlyController:false,controllerUrl:'',objectName:'',value:"",isVc:'',fieldLabel:'',initComponent:function(){var me=this;this.dataField=Ext.create('Ext.form.field.Text',{anchor:"100%",readOnly:true,name:this.name,listeners:{change:{fn:this.getObjectTitle,scope:this}}});this.dataFieldLabel=Ext.create('Ext.form.field.Display',{anchor:"100%",value:"..."});this.triggerButton=Ext.create('Ext.button.Button',{iconCls:'searchIcon',width:20,scope:me,tooltip:appLang.SELECT,handler:function(){var win=Ext.create('app.crud.orm.DataViewWindow',{width:600,height:500,selectMode:true,objectName:this.objectName,controllerUrl:this.controllerUrl,isVc:this.isVc,title:this.fieldLabel,listeners:{scope:me,select:function(record){me.setValue(record.get('id'));me.fireEvent('completeEdit');}}});win.show();app.checkSize(win);}});this.removeButton=Ext.create('Ext.button.Button',{iconCls:'deleteIcon',width:20,tooltip:appLang.CLEAR,scope:me,handler:function(){me.setValue("");}});var valueContainer={anchor:"100%",xtype:'fieldcontainer',layout:'hbox',items:[this.dataField,this.triggerButton,this.removeButton]};this.items=[this.dataFieldLabel,valueContainer];this.callParent();},setValue:function(value){this.dataField.setValue(value);},getValue:function(){return this.dataField.getValue();},reset:function(){this.dataField.reset();},isValid:function(){return true;},getObjectTitle:function(){var me=this;var curValue=me.getValue();if(curValue==""||curValue==0){me.dataFieldLabel.setValue('');return;} me.dataFieldLabel.getEl().mask(appLang.LOADING);Ext.Ajax.request({url:this.controllerUrl+'otitle',method:'post',params:{object:this.objectName,id:curValue},scope:this,success:function(response,request){response=Ext.JSON.decode(response.responseText);if(!response.success){me.dataFieldLabel.getEl().unmask();Ext.Msg.alert(appLang.MESSAGE,response.msg);}else{me.dataFieldLabel.getEl().unmask();me.dataFieldLabel.setValue(response.data.title);me.updateLayout();}},failure:function(){me.dataFieldLabel.getEl().unmask();app.ajaxFailure(arguments);}});}});Ext.ns('app.orm.connections');Ext.define('app.orm.connections.Window',{extend:'Ext.Window',dataGrid:null,dataStore:null,controllerUrl:'',dbConfigs:null,modal:true,constructor:function(config){config=Ext.apply({title:appLang.DB_CONNECTIONS,width:700,height:300,layout:'fit',closeAction:'destroy',maximizable:true},config||{});this.callParent(arguments);},initComponent:function(){var me=this;var defaultConnectionId=this.dbConfigs[0]['id'];this.dataStore=Ext.create('Ext.data.Store',{fields:[{name:'id',type:'string'},{name:'system',type:'boolean'},{name:'devType',type:'integer'},{name:'username',type:'string'},{name:'dbname',type:'string'},{name:'host',type:'string'},{name:'adapter',type:'string'}],proxy:{type:'ajax',url:this.controllerUrl+'list',extraParams:{devType:defaultConnectionId},reader:{type:'json',rootProperty:'data',idProperty:'id'},simpleSortMode:true},remoteSort:false,autoLoad:true,sorters:[{property:'id',direction:'DESC'}]});this.filter=Ext.create('Ext.form.field.ComboBox',{typeAhead:true,triggerAction:'all',selectOnTab:true,labelWidth:80,forceSelection:true,queryMode:'local',displayField:'title',valueField:'id',value:defaultConnectionId,store:Ext.create('Ext.data.Store',{fields:[{name:'id',type:'integer'},{name:'title',type:'string'}],data:this.dbConfigs}),listeners:{change:{fn:function(){this.dataStore.proxy.setExtraParam('devType',this.filter.getValue());this.dataStore.load();},scope:this}}});this.dataGrid=Ext.create('Ext.grid.Panel',{store:this.dataStore,viewConfig:{stripeRows:false},frame:false,loadMask:true,columnLines:true,scrollable:true,forceFit:true,viewConfig:{enableTextSelection:true},tbar:[{text:appLang.ADD_ITEM,handler:function(){this.showEditWindow(false,this.filter.getValue());},scope:this},'-',appLang.TYPE,this.filter],columns:[{xtype:'actioncolumn',width:30,items:[{iconCls:'editIcon',width:30,scope:this,handler:function(grid,rowIndex,colIndex){var rec=this.dataStore.getAt(rowIndex);this.showEditWindow(rec.get('id'),rec.get('devType'));}}]},{text:appLang.NAME,dataIndex:'id'},{sortable:true,text:appLang.DB_HOST,dataIndex:'host',align:'center'},{sortable:true,text:appLang.DB_NAME,dataIndex:'dbname',align:'center'},{sortable:true,text:appLang.USER,dataIndex:'username',align:'center'},{sortable:true,text:appLang.DB_ADAPTER,dataIndex:'adapter',align:'center'},{width:30,align:'center',dataIndex:'system',colid:'deleteindex',renderer:function(value,metaData,record,rowIndex,colIndex,store){if(value){return'';}else{return'';}}}],listeners:{'itemdblclick':{fn:function(view,record,number,event,options){this.showEditWindow(record.get('id'),record.get('devType'));},scope:this},'cellclick':{fn:function(grid,cell,columnIndex,record,node,rowIndex,evt){var column=grid.getHeaderCt().getHeaderAtIndex(columnIndex).colid;if(record.get('primary')) return;switch(column){case'deleteindex':if(record.get('system')){return;} this.removeItem(record);break;}},scope:this}}});this.items=[this.dataGrid];this.callParent();this.on('show',function(){app.checkSize(this);});},removeItem:function(record){Ext.Ajax.request({url:this.controllerUrl+'remove',method:'post',scope:this,params:{'id':record.get('id')},success:function(response,request){response=Ext.JSON.decode(response.responseText);if(response.success){this.dataStore.remove(record);}else{Ext.Msg.alert(appLang.MESSAGE,response.msg);}},failure:function(){Ext.Msg.alert(appLang.MESSAGE,appLang.MSG_LOST_CONNECTION);}});},showEditWindow:function(id,devtype){var win=Ext.create('app.orm.connections.EditWindow',{recordId:id,devType:devtype,controllerUrl:this.controllerUrl});win.on('dataSaved',function(){this.dataStore.load();},this);win.show();}});Ext.define('app.orm.connections.EditWindow',{extend:'Ext.Window',dataForm:null,recordId:null,controllerUrl:'',devType:false,recordId:false,constructor:function(config){config=Ext.apply({title:appLang.DB_CONNECTIONS,width:400,height:430,layout:'fit',modal:true,closeAction:'destroy',maximizable:false},config||{});this.callParent(arguments);},initComponent:function(){this.dataForm=Ext.create('Ext.form.Panel',{bodyCls:'formBody',bodyPadding:10,fieldDefaults:{anchor:'100%',labelWidth:140},items:[{xtype:'textfield',fieldLabel:appLang.NAME,allowBlank:false,vtype:'alphanum',value:'',name:'id'},{xtype:'textfield',fieldLabel:appLang.DB_HOST,allowBlank:false,name:'host'},{xtype:'textfield',fieldLabel:appLang.DB_PORT,allowBlank:true,name:'port'},{xtype:'textfield',fieldLabel:appLang.DB_NAME,allowBlank:false,name:'dbname'},{xtype:'textfield',fieldLabel:appLang.DB_CHARSET,allowBlank:false,value:'UTF8',name:'charset'},{xtype:'textfield',fieldLabel:appLang.DB_PREFIX,name:'prefix'},Ext.create('Ext.form.field.ComboBox',{xtype:'combo',name:'adapter',fieldLabel:appLang.DB_ADAPTER,queryMode:'local',allowBlank:false,forceSelection:true,displayField:'title',valueField:'title',value:'Mysqli',store:Ext.create('Ext.data.Store',{fields:[{name:'title',type:'string'}],data:[{title:'Mysqli'}],sorters:[{property:'title',direction:'ASC'}]})}),Ext.create('Ext.form.field.ComboBox',{xtype:'combo',allowBlank:false,name:'adapterNamespace',fieldLabel:appLang.DB_ADAPTER_NAMESPACE,queryMode:'local',forceSelection:true,displayField:'title',valueField:'id',value:'Db_Adapter',store:Ext.create('Ext.data.Store',{fields:[{name:'id',type:'string'},{name:'title',type:'string'}],data:[{title:'DVelum (recomended)',id:'Db_Adapter'},{title:'Zend',id:'Zend_Db_Adapter'}],sorters:[{property:'title',direction:'ASC'}]})}),{xtype:'textfield',fieldLabel:appLang.USER,allowBlank:false,name:'username'},{name:'setpass',value:1,readOnly:true,fieldLabel:appLang.CHANGE_PASSWORD,submitValue:true,checked:true,readOnly:true,xtype:'checkbox',listeners:{change:{fn:this.denyBlankPassword,scope:this,buffer:350}}},{fieldLabel:appLang.PASSWORD,inputType:"password",name:"password",xtype:"textfield",enableKeyEvents:true,allowBlank:false},{fieldLabel:appLang.PASSWORD_CONFIRM,inputType:"password",name:"pass2",submitValue:false,xtype:"textfield",enableKeyEvents:true,vtype:'password',initialPassField:'password',allowBlank:false}]});this.buttons=[{text:appLang.TEST,scope:this,handler:this.testAction},{text:appLang.SAVE,scope:this,handler:this.saveAction},{text:appLang.CANCEL,scope:this,handler:this.close},];this.items=[this.dataForm];this.callParent(arguments);if(this.recordId){this.dataForm.load({url:this.controllerUrl+'load',params:{id:this.recordId,devType:this.devType},scope:this,success:function(form,action){if(action.result.success){form.findField('setpass').enable();form.findField('setpass').setValue(false);form.findField('setpass').setReadOnly(false);}else{Ext.Msg.alert(appLang.MESSAGE,action.result.msg);}},failure:app.formFailure});}},denyBlankPassword:function(field,bool){var handle=this.dataForm.getForm();if(!bool){handle.findField('password').disable();handle.findField('pass2').disable();}else{handle.findField('password').enable();handle.findField('pass2').enable();} diff --git a/www/js/app/system/orm/dataViewWindow.js b/www/js/app/system/orm/dataViewWindow.js index 905c89b2..e77177f9 100644 --- a/www/js/app/system/orm/dataViewWindow.js +++ b/www/js/app/system/orm/dataViewWindow.js @@ -354,7 +354,7 @@ Ext.define('app.crud.orm.DataViewWindow', { method: 'post', params: { 'id':itemId, - 'object':this.objectName + 'd_object':this.objectName }, success: function(response, request) { response = Ext.JSON.decode(response.responseText); From c3912f194278d33b44439a36d74f7dc9a8b5b364 Mon Sep 17 00:00:00 2001 From: k-samuel Date: Sun, 20 Aug 2017 11:33:13 +0300 Subject: [PATCH 08/20] Orm dataView fix --- www/js/app/system/ORM.js | 8 ++++---- www/js/app/system/orm/dataViewWindow.js | 9 +++++---- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/www/js/app/system/ORM.js b/www/js/app/system/ORM.js index 8dd6c696..371459bf 100644 --- a/www/js/app/system/ORM.js +++ b/www/js/app/system/ORM.js @@ -107,10 +107,10 @@ link.addTo(this.graph);this.allItems[umlItem].linksObj[umlItemLink]=link;}}} this.allIsRendered=true;},loadData:function(){Ext.Ajax.request({url:this.controllerUrl+'getumldata',params:this.params,method:'post',scope:this,success:function(response,request){response=Ext.JSON.decode(response.responseText);if(!response.success){Ext.Msg.alert(appLang.MESSAGE,response.msg);}else{this.umlData=response.data.items;this.mapWidth=response.data.mapWidth;this.mapHeight=response.data.mapHeight;this.renderUML();}},failure:app.ajaxFailure});},saveMap:function(){var map={};var drawX=this.drawEl.getEl().getX();var drawY=this.drawEl.getEl().getY();Ext.Object.each(this.allItems,function(index,item){map[index]=item.get('position');map[index].links={};Ext.Object.each(this.allItems[index].linksObj,function(target,link){map[index].links[target]={};map[index].links[target]['vertices']=link.prop('vertices');});},this);this.getEl().mask(appLang.SAVING);Ext.Ajax.request({url:this.controllerUrl+'saveumlmap',method:'post',scope:this,params:{map:Ext.JSON.encode(map)},success:function(response,request){response=Ext.JSON.decode(response.responseText);if(!response.success){Ext.Msg.alert(appLang.MESSAGE,response.msg);} this.getEl().unmask();},failure:function(){this.getEl().unmask();app.ajaxFailure(arguments);}});}});Ext.define('app.crud.orm.DataViewWindow',{extend:'Ext.window.Window',objectName:'',controllerUrl:'',width:800,height:600,maximizable:true,readOnly:false,layout:'fit',dataGrid:null,dataStore:null,searchField:null,isVc:null,primaryKey:'id',editorCfg:false,selectMode:false,closeOnSelect:true,modal:true,relatedGrids:null,initComponent:function(){if(this.selectMode){this.buttons=[{text:appLang.SELECT,scope:this,handler:this.selectItem},{text:appLang.CLOSE,scope:this,handler:this.close}];} this.callParent();this.on('show',function(){app.checkSize(this);this.loadInterface();},this);},loadInterface:function(){var me=this;me.getEl().mask(appLang.LOADING);Ext.Ajax.request({url:this.controllerUrl+'viewconfig',method:'post',params:{object:this.objectName},scope:this,success:function(response,request){response=Ext.JSON.decode(response.responseText);if(!response.success){Ext.Msg.alert(appLang.MESSAGE,response.msg);}else{this.configurate(response.data);} -me.getEl().unmask();},failure:function(){me.getEl().unmask();app.ajaxFailure(arguments);}});},configurate:function(data){this.dataStore=Ext.create('Ext.data.Store',{fields:data.fields,remoteSort:true,proxy:{type:'ajax',url:this.controllerUrl+'list',directionParam:"pager[dir]",limitParam:"pager[limit]",simpleSortMode:true,sortParam:"pager[sort]",startParam:"pager[start]",extraParams:{object:this.objectName},reader:{type:'json',idProperty:"id",rootProperty:"data",totalProperty:"count"},},autoLoad:true});var cols=[];if(!this.selectMode) +me.getEl().unmask();},failure:function(){me.getEl().unmask();app.ajaxFailure(arguments);}});},configurate:function(data){this.dataStore=Ext.create('Ext.data.Store',{fields:data.fields,remoteSort:true,proxy:{type:'ajax',url:this.controllerUrl+'list',directionParam:"pager[dir]",limitParam:"pager[limit]",simpleSortMode:true,sortParam:"pager[sort]",startParam:"pager[start]",extraParams:{object:this.objectName},reader:{type:'json',idProperty:"id",rootProperty:"data",totalProperty:"count"}},autoLoad:true});var cols=[];if(!this.selectMode) {cols.push({xtype:'actioncolumn',width:30,items:[{iconCls:'editIcon',scope:this,tooltip:appLang.EDIT,handler:function(grid,rowIndex,colIndex){var rec=grid.getStore().getAt(rowIndex);this.showEdit(rec.get('id'));}}]});} Ext.each(data.columns,function(item){cols.push(item);});if(!this.selectMode) -{cols.push({xtype:'actioncolumn',width:30,items:[{iconCls:'deleteIcon',scope:this,tooltip:appLang.DELETE,handler:function(grid,rowIndex,colIndex){var rec=grid.getStore().getAt(rowIndex);this.deleteItem(rec.get('id'));}}]});} +{cols.push({xtype:'actioncolumn',align:'center',width:30,items:[{iconCls:'deleteIcon',scope:this,tooltip:appLang.DELETE,handler:function(grid,rowIndex,colIndex){var rec=grid.getStore().getAt(rowIndex);this.deleteItem(rec.get('id'));}}]});} var tBar=[];if(!this.selectMode&&!this.readOnly) {tBar.push({text:appLang.ADD_ITEM,scope:this,handler:function(){this.showEdit(0);}});} this.searchField=Ext.create('SearchPanel',{store:this.dataStore,isLocal:false,fieldNames:data.searchFields});tBar.push('->',this.searchField);this.dataGrid=Ext.create('Ext.grid.Panel',{columns:cols,selModel:Ext.create('Ext.selection.RowModel',{mode:'single'}),columnLines:true,store:this.dataStore,loadMask:true,tbar:tBar,viewConfig:{enableTextSelection:true},bbar:Ext.create("Ext.PagingToolbar",{store:this.dataStore,displayInfo:true,displayMsg:appLang.DISPLAYING_RECORDS+" {0} - {1} "+appLang.OF+" {2}",emptyMsg:appLang.NO_RECORDS_TO_DISPLAY})});if(this.selectMode){this.dataGrid.on('celldblclick',function(table,td,cellIndex,record,tr,rowIndex,e,eOpts){this.fireEvent('select',record);if(this.closeOnSelect){this.close();}},this);}else{this.dataGrid.on('celldblclick',function(table,td,cellIndex,record,tr,rowIndex,e,eOpts){this.showEdit(record.get(this.primaryKey));},this);} @@ -123,8 +123,8 @@ me.getEl().unmask();},failure:function(){me.getEl().unmask();app.ajaxFailure(arg {var win;var me=this;var related=this.editorCfg.related;var fields=Ext.JSON.decode(this.editorCfg.fields);this.relatedGrids=[];if(!Ext.isEmpty(related)){Ext.each(related,function(item){var grid=Ext.create('app.relatedGridPanel',{title:item.title,fieldName:item.field,listeners:{addItemCall:{fn:function(){Ext.create('app.crud.orm.DataViewWindow',{width:600,height:500,selectMode:true,closeOnSelect:false,objectName:item.object,controllerUrl:this.controllerUrl,isVc:this.isVc,title:item.title,readOnly:this.editorCfg.readOnly,primaryKey:this.editorCfg.primaryKey,listeners:{scope:this,select:function(record){if(record.get('published')!=undefined){published=record.get('published');}else{published=1;} me.relatedGrids[item.field].addRecord(app.relatedGridModel.create({'id':record.get('id'),'published':published,'title':record.get(item.titleField),'deleted':0}));}}}).show();},scope:this}}});this.relatedGrids[item.field]=grid;fields.push(grid);},this);} if(this.isVc){win=Ext.create('app.contentWindow',{width:800,height:800,objectName:this.objectName,hasPreview:false,items:fields,dataItemId:id,primaryKey:this.primaryKey,controllerUrl:this.controllerUrl+app.createUrl(['editorvc','']),canEdit:!this.readOnly,canDelete:!this.readOnly,canPublish:!this.readOnly,listeners:{dataSaved:{fn:function(){me.dataStore.load();},scope:me}}});}else{win=Ext.create('app.editWindow',{width:800,height:800,dataItemId:id,canEdit:!this.readOnly,canDelete:!this.readOnly,primaryKey:this.primaryKey,items:fields,objectName:this.objectName,controllerUrl:this.controllerUrl+app.createUrl(['editor','']),listeners:{dataSaved:{fn:function(){me.dataStore.load();},scope:me}}});} -win.show();},deleteItem:function(itemId){if(!Ext.isNumeric(itemId)) -return false;var me=this;Ext.Ajax.request({url:this.controllerUrl+'delete',waitMsg:appLang.PROCESSING,method:'post',params:{'id':itemId,'d_object':this.objectName},success:function(response,request){response=Ext.JSON.decode(response.responseText);if(response.success){me.dataStore.load();}else{Ext.MessageBox.alert(appLang.MESSAGE,response.msg);}}});},});Ext.define('app.crud.orm.ObjectField',{extend:'Ext.form.FieldContainer',alias:'widget.objectfield',triggerCls:'urlTrigger',dataField:null,triggerButton:null,layout:'vbox',onlyController:false,controllerUrl:'',objectName:'',value:"",isVc:'',fieldLabel:'',initComponent:function(){var me=this;this.dataField=Ext.create('Ext.form.field.Text',{anchor:"100%",readOnly:true,name:this.name,listeners:{change:{fn:this.getObjectTitle,scope:this}}});this.dataFieldLabel=Ext.create('Ext.form.field.Display',{anchor:"100%",value:"..."});this.triggerButton=Ext.create('Ext.button.Button',{iconCls:'searchIcon',width:20,scope:me,tooltip:appLang.SELECT,handler:function(){var win=Ext.create('app.crud.orm.DataViewWindow',{width:600,height:500,selectMode:true,objectName:this.objectName,controllerUrl:this.controllerUrl,isVc:this.isVc,title:this.fieldLabel,listeners:{scope:me,select:function(record){me.setValue(record.get('id'));me.fireEvent('completeEdit');}}});win.show();app.checkSize(win);}});this.removeButton=Ext.create('Ext.button.Button',{iconCls:'deleteIcon',width:20,tooltip:appLang.CLEAR,scope:me,handler:function(){me.setValue("");}});var valueContainer={anchor:"100%",xtype:'fieldcontainer',layout:'hbox',items:[this.dataField,this.triggerButton,this.removeButton]};this.items=[this.dataFieldLabel,valueContainer];this.callParent();},setValue:function(value){this.dataField.setValue(value);},getValue:function(){return this.dataField.getValue();},reset:function(){this.dataField.reset();},isValid:function(){return true;},getObjectTitle:function(){var me=this;var curValue=me.getValue();if(curValue==""||curValue==0){me.dataFieldLabel.setValue('');return;} +win.show();},deleteItem:function(itemId){if(!Ext.isNumeric(itemId)){return false;} +var me=this;Ext.Ajax.request({url:this.controllerUrl+'delete',waitMsg:appLang.PROCESSING,method:'post',params:{'id':itemId,'d_object':this.objectName},success:function(response,request){response=Ext.JSON.decode(response.responseText);if(response.success){me.dataStore.load();}else{Ext.MessageBox.alert(appLang.MESSAGE,response.msg);}}});}});Ext.define('app.crud.orm.ObjectField',{extend:'Ext.form.FieldContainer',alias:'widget.objectfield',triggerCls:'urlTrigger',dataField:null,triggerButton:null,layout:'vbox',onlyController:false,controllerUrl:'',objectName:'',value:"",isVc:'',fieldLabel:'',initComponent:function(){var me=this;this.dataField=Ext.create('Ext.form.field.Text',{anchor:"100%",readOnly:true,name:this.name,listeners:{change:{fn:this.getObjectTitle,scope:this}}});this.dataFieldLabel=Ext.create('Ext.form.field.Display',{anchor:"100%",value:"..."});this.triggerButton=Ext.create('Ext.button.Button',{iconCls:'searchIcon',width:20,scope:me,tooltip:appLang.SELECT,handler:function(){var win=Ext.create('app.crud.orm.DataViewWindow',{width:600,height:500,selectMode:true,objectName:this.objectName,controllerUrl:this.controllerUrl,isVc:this.isVc,title:this.fieldLabel,listeners:{scope:me,select:function(record){me.setValue(record.get('id'));me.fireEvent('completeEdit');}}});win.show();app.checkSize(win);}});this.removeButton=Ext.create('Ext.button.Button',{iconCls:'deleteIcon',width:20,tooltip:appLang.CLEAR,scope:me,handler:function(){me.setValue("");}});var valueContainer={anchor:"100%",xtype:'fieldcontainer',layout:'hbox',items:[this.dataField,this.triggerButton,this.removeButton]};this.items=[this.dataFieldLabel,valueContainer];this.callParent();},setValue:function(value){this.dataField.setValue(value);},getValue:function(){return this.dataField.getValue();},reset:function(){this.dataField.reset();},isValid:function(){return true;},getObjectTitle:function(){var me=this;var curValue=me.getValue();if(curValue==""||curValue==0){me.dataFieldLabel.setValue('');return;} me.dataFieldLabel.getEl().mask(appLang.LOADING);Ext.Ajax.request({url:this.controllerUrl+'otitle',method:'post',params:{object:this.objectName,id:curValue},scope:this,success:function(response,request){response=Ext.JSON.decode(response.responseText);if(!response.success){me.dataFieldLabel.getEl().unmask();Ext.Msg.alert(appLang.MESSAGE,response.msg);}else{me.dataFieldLabel.getEl().unmask();me.dataFieldLabel.setValue(response.data.title);me.updateLayout();}},failure:function(){me.dataFieldLabel.getEl().unmask();app.ajaxFailure(arguments);}});}});Ext.ns('app.orm.connections');Ext.define('app.orm.connections.Window',{extend:'Ext.Window',dataGrid:null,dataStore:null,controllerUrl:'',dbConfigs:null,modal:true,constructor:function(config){config=Ext.apply({title:appLang.DB_CONNECTIONS,width:700,height:300,layout:'fit',closeAction:'destroy',maximizable:true},config||{});this.callParent(arguments);},initComponent:function(){var me=this;var defaultConnectionId=this.dbConfigs[0]['id'];this.dataStore=Ext.create('Ext.data.Store',{fields:[{name:'id',type:'string'},{name:'system',type:'boolean'},{name:'devType',type:'integer'},{name:'username',type:'string'},{name:'dbname',type:'string'},{name:'host',type:'string'},{name:'adapter',type:'string'}],proxy:{type:'ajax',url:this.controllerUrl+'list',extraParams:{devType:defaultConnectionId},reader:{type:'json',rootProperty:'data',idProperty:'id'},simpleSortMode:true},remoteSort:false,autoLoad:true,sorters:[{property:'id',direction:'DESC'}]});this.filter=Ext.create('Ext.form.field.ComboBox',{typeAhead:true,triggerAction:'all',selectOnTab:true,labelWidth:80,forceSelection:true,queryMode:'local',displayField:'title',valueField:'id',value:defaultConnectionId,store:Ext.create('Ext.data.Store',{fields:[{name:'id',type:'integer'},{name:'title',type:'string'}],data:this.dbConfigs}),listeners:{change:{fn:function(){this.dataStore.proxy.setExtraParam('devType',this.filter.getValue());this.dataStore.load();},scope:this}}});this.dataGrid=Ext.create('Ext.grid.Panel',{store:this.dataStore,viewConfig:{stripeRows:false},frame:false,loadMask:true,columnLines:true,scrollable:true,forceFit:true,viewConfig:{enableTextSelection:true},tbar:[{text:appLang.ADD_ITEM,handler:function(){this.showEditWindow(false,this.filter.getValue());},scope:this},'-',appLang.TYPE,this.filter],columns:[{xtype:'actioncolumn',width:30,items:[{iconCls:'editIcon',width:30,scope:this,handler:function(grid,rowIndex,colIndex){var rec=this.dataStore.getAt(rowIndex);this.showEditWindow(rec.get('id'),rec.get('devType'));}}]},{text:appLang.NAME,dataIndex:'id'},{sortable:true,text:appLang.DB_HOST,dataIndex:'host',align:'center'},{sortable:true,text:appLang.DB_NAME,dataIndex:'dbname',align:'center'},{sortable:true,text:appLang.USER,dataIndex:'username',align:'center'},{sortable:true,text:appLang.DB_ADAPTER,dataIndex:'adapter',align:'center'},{width:30,align:'center',dataIndex:'system',colid:'deleteindex',renderer:function(value,metaData,record,rowIndex,colIndex,store){if(value){return'';}else{return'';}}}],listeners:{'itemdblclick':{fn:function(view,record,number,event,options){this.showEditWindow(record.get('id'),record.get('devType'));},scope:this},'cellclick':{fn:function(grid,cell,columnIndex,record,node,rowIndex,evt){var column=grid.getHeaderCt().getHeaderAtIndex(columnIndex).colid;if(record.get('primary')) return;switch(column){case'deleteindex':if(record.get('system')){return;} this.removeItem(record);break;}},scope:this}}});this.items=[this.dataGrid];this.callParent();this.on('show',function(){app.checkSize(this);});},removeItem:function(record){Ext.Ajax.request({url:this.controllerUrl+'remove',method:'post',scope:this,params:{'id':record.get('id')},success:function(response,request){response=Ext.JSON.decode(response.responseText);if(response.success){this.dataStore.remove(record);}else{Ext.Msg.alert(appLang.MESSAGE,response.msg);}},failure:function(){Ext.Msg.alert(appLang.MESSAGE,appLang.MSG_LOST_CONNECTION);}});},showEditWindow:function(id,devtype){var win=Ext.create('app.orm.connections.EditWindow',{recordId:id,devType:devtype,controllerUrl:this.controllerUrl});win.on('dataSaved',function(){this.dataStore.load();},this);win.show();}});Ext.define('app.orm.connections.EditWindow',{extend:'Ext.Window',dataForm:null,recordId:null,controllerUrl:'',devType:false,recordId:false,constructor:function(config){config=Ext.apply({title:appLang.DB_CONNECTIONS,width:400,height:430,layout:'fit',modal:true,closeAction:'destroy',maximizable:false},config||{});this.callParent(arguments);},initComponent:function(){this.dataForm=Ext.create('Ext.form.Panel',{bodyCls:'formBody',bodyPadding:10,fieldDefaults:{anchor:'100%',labelWidth:140},items:[{xtype:'textfield',fieldLabel:appLang.NAME,allowBlank:false,vtype:'alphanum',value:'',name:'id'},{xtype:'textfield',fieldLabel:appLang.DB_HOST,allowBlank:false,name:'host'},{xtype:'textfield',fieldLabel:appLang.DB_PORT,allowBlank:true,name:'port'},{xtype:'textfield',fieldLabel:appLang.DB_NAME,allowBlank:false,name:'dbname'},{xtype:'textfield',fieldLabel:appLang.DB_CHARSET,allowBlank:false,value:'UTF8',name:'charset'},{xtype:'textfield',fieldLabel:appLang.DB_PREFIX,name:'prefix'},Ext.create('Ext.form.field.ComboBox',{xtype:'combo',name:'adapter',fieldLabel:appLang.DB_ADAPTER,queryMode:'local',allowBlank:false,forceSelection:true,displayField:'title',valueField:'title',value:'Mysqli',store:Ext.create('Ext.data.Store',{fields:[{name:'title',type:'string'}],data:[{title:'Mysqli'}],sorters:[{property:'title',direction:'ASC'}]})}),Ext.create('Ext.form.field.ComboBox',{xtype:'combo',allowBlank:false,name:'adapterNamespace',fieldLabel:appLang.DB_ADAPTER_NAMESPACE,queryMode:'local',forceSelection:true,displayField:'title',valueField:'id',value:'Db_Adapter',store:Ext.create('Ext.data.Store',{fields:[{name:'id',type:'string'},{name:'title',type:'string'}],data:[{title:'DVelum (recomended)',id:'Db_Adapter'},{title:'Zend',id:'Zend_Db_Adapter'}],sorters:[{property:'title',direction:'ASC'}]})}),{xtype:'textfield',fieldLabel:appLang.USER,allowBlank:false,name:'username'},{name:'setpass',value:1,readOnly:true,fieldLabel:appLang.CHANGE_PASSWORD,submitValue:true,checked:true,readOnly:true,xtype:'checkbox',listeners:{change:{fn:this.denyBlankPassword,scope:this,buffer:350}}},{fieldLabel:appLang.PASSWORD,inputType:"password",name:"password",xtype:"textfield",enableKeyEvents:true,allowBlank:false},{fieldLabel:appLang.PASSWORD_CONFIRM,inputType:"password",name:"pass2",submitValue:false,xtype:"textfield",enableKeyEvents:true,vtype:'password',initialPassField:'password',allowBlank:false}]});this.buttons=[{text:appLang.TEST,scope:this,handler:this.testAction},{text:appLang.SAVE,scope:this,handler:this.saveAction},{text:appLang.CANCEL,scope:this,handler:this.close},];this.items=[this.dataForm];this.callParent(arguments);if(this.recordId){this.dataForm.load({url:this.controllerUrl+'load',params:{id:this.recordId,devType:this.devType},scope:this,success:function(form,action){if(action.result.success){form.findField('setpass').enable();form.findField('setpass').setValue(false);form.findField('setpass').setReadOnly(false);}else{Ext.Msg.alert(appLang.MESSAGE,action.result.msg);}},failure:app.formFailure});}},denyBlankPassword:function(field,bool){var handle=this.dataForm.getForm();if(!bool){handle.findField('password').disable();handle.findField('pass2').disable();}else{handle.findField('password').enable();handle.findField('pass2').enable();} diff --git a/www/js/app/system/orm/dataViewWindow.js b/www/js/app/system/orm/dataViewWindow.js index e77177f9..ecf7336d 100644 --- a/www/js/app/system/orm/dataViewWindow.js +++ b/www/js/app/system/orm/dataViewWindow.js @@ -93,7 +93,7 @@ Ext.define('app.crud.orm.DataViewWindow', { idProperty:"id", rootProperty:"data", totalProperty:"count" - }, + } }, autoLoad: true }); @@ -130,6 +130,7 @@ Ext.define('app.crud.orm.DataViewWindow', { cols.push( { xtype:'actioncolumn', + align:'center', width:30, items:[ { @@ -345,8 +346,9 @@ Ext.define('app.crud.orm.DataViewWindow', { * Delete record */ deleteItem : function(itemId){ - if(!Ext.isNumeric(itemId)) + if(!Ext.isNumeric(itemId)){ return false; + } var me = this; Ext.Ajax.request({ url: this.controllerUrl + 'delete', @@ -365,6 +367,5 @@ Ext.define('app.crud.orm.DataViewWindow', { } } }); - }, - + } }); \ No newline at end of file From 5df440ee3bb757d66c364821cc2a349bccda055c Mon Sep 17 00:00:00 2001 From: k-samuel Date: Sun, 20 Aug 2017 16:15:51 +0300 Subject: [PATCH 09/20] Generator fix --- dvelum/app/Modules/Generator.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dvelum/app/Modules/Generator.php b/dvelum/app/Modules/Generator.php index 8e4cb0b1..853b96ab 100644 --- a/dvelum/app/Modules/Generator.php +++ b/dvelum/app/Modules/Generator.php @@ -624,7 +624,7 @@ public function createModule($object , $projectFile) */ $controllerDir = $this->appConfig->get('local_controllers') . $this->appConfig->get('backend_controllers_dir') . '/' . str_replace('_' , '/' , $objectName); $this->_createControllerFile($controllerDir , $controllerContent); - @chmod( $controllerDir . DIRECTORY_SEPARATOR . 'Controller.php' , $controllerContent, 0775); + @chmod( $controllerDir . DIRECTORY_SEPARATOR . 'Controller.php', 0775); /* From a23f56c3176f0b4c549ce907dd9a17d0403ea4e9 Mon Sep 17 00:00:00 2001 From: hartois Date: Wed, 30 Aug 2017 15:27:12 +0300 Subject: [PATCH 10/20] Console: fix additional arguments --- console.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/console.php b/console.php index 8d1bb614..2873d410 100644 --- a/console.php +++ b/console.php @@ -7,7 +7,7 @@ * 2 - Wrong URI * 3 - Application Error */ -if (isset($_SERVER['argc']) && $_SERVER['argc']!==2 ){ +if (isset($_SERVER['argc']) && $_SERVER['argc']<2 ){ exit(1); } From f8e9fb0d63e884da5feed8b34ad478bacdad6341 Mon Sep 17 00:00:00 2001 From: hartois Date: Wed, 13 Sep 2017 11:28:46 +0300 Subject: [PATCH 11/20] SearchPanel: add minChars and fieldLabel properties --- .../Component/Field/System/Searchfield.php | 18 +- www/js/app/system/SearchPanel.js | 283 +++++++++--------- 2 files changed, 158 insertions(+), 143 deletions(-) diff --git a/dvelum/library/Ext/Property/Component/Field/System/Searchfield.php b/dvelum/library/Ext/Property/Component/Field/System/Searchfield.php index 8af33386..52c2ad47 100644 --- a/dvelum/library/Ext/Property/Component/Field/System/Searchfield.php +++ b/dvelum/library/Ext/Property/Component/Field/System/Searchfield.php @@ -1,13 +1,15 @@ Date: Fri, 15 Sep 2017 14:21:05 +0300 Subject: [PATCH 12/20] Designer memory leaks of PropertiesPanel fixed --- www/js/app/system/Designer.js | 22 +++++--- www/js/app/system/designer/eventsPanel.js | 4 ++ www/js/app/system/designer/methodsPanel.js | 8 ++- www/js/app/system/designer/properties.js | 56 +++++++++++++++---- .../app/system/designer/properties/column.js | 6 +- .../app/system/designer/properties/field.js | 6 +- .../designer/properties/filterComponent.js | 7 ++- www/js/app/system/designer/properties/grid.js | 6 +- 8 files changed, 89 insertions(+), 26 deletions(-) diff --git a/www/js/app/system/Designer.js b/www/js/app/system/Designer.js index 24c36076..1e6b958b 100644 --- a/www/js/app/system/Designer.js +++ b/www/js/app/system/Designer.js @@ -1,6 +1,7 @@ -Ext.define('SearchPanel',{extend:'Ext.toolbar.Toolbar',alias:'widget.searchpanel',searchField:null,resetButton:null,store:null,fieldNames:[],local:false,lastQuery:'',searchParam:'search',constructor:function(config){config=Ext.apply({frame:false,border:false,bodyBorder:false,width:230,hideLabel:false,frame:false,style:{border:0}},config||{});this.callParent(arguments);},initComponent:function(){this.resetButton=Ext.create('Ext.Button',{iconCls:'deleteIcon',flat:false,tooltip:appLang.RESET_SEARCH,listeners:{'click':{fn:function(){this.searchField.setValue('');this.clearFilter();},scope:this}}});this.searchField=Ext.create('Ext.form.field.Text',{enableKeyEvents:true,flex:2,listeners:{'keyup':{fn:this.startFilter,buffer:700,scope:this}}});this.items=[];if(!this.hideLabel){this.items.push(appLang.SEARCH+':');} +Ext.define('SearchPanel',{extend:'Ext.toolbar.Toolbar',alias:'widget.searchpanel',searchField:null,resetButton:null,store:null,fieldNames:[],local:false,lastQuery:'',searchParam:'search',minChars:0,fieldLabel:null,constructor:function(config){config=Ext.apply({frame:false,border:false,bodyBorder:false,width:230,hideLabel:false,style:{border:0},fieldLabel:appLang.SEARCH+':'},config||{});this.callParent(arguments);},initComponent:function(){this.resetButton=Ext.create('Ext.Button',{iconCls:'deleteIcon',flat:false,tooltip:appLang.RESET_SEARCH,listeners:{'click':{fn:function(){this.searchField.setValue('');this.clearFilter();},scope:this}}});this.searchField=Ext.create('Ext.form.field.Text',{enableKeyEvents:true,flex:2,listeners:{'keyup':{fn:this.startFilter,buffer:700,scope:this}}});this.items=[];if(!this.hideLabel){this.items.push(this.fieldLabel);} this.items.push(this.searchField,this.resetButton);this.callParent(arguments);},clearFilter:function(){this.store.clearFilter();this.lastQuery='';if(!this.local){this.store.proxy.setExtraParam(this.searchParam,'');this.store.load({scope:this,callback:function(records,operation,success){this.fireEvent('reset');}});}else{this.fireEvent('reset');}},startFilter:function(){var query=this.searchField.getValue();if(this.lastQuery===query){return;} +if(query.lengthfunction( '},{xtype:'textfield',name:'params',flex:2,fieldStyle:{border:'none',background:'none',backgroundColor:'#F4F4F4',color:'#5C3BFB'}},{xtype:'displayfield',value:' )'}]}]});this.items=[this.dataForm];this.callParent();this.on('show',function(){this.loadMethodData();app.checkSize(this);Ext.WindowMgr.register(this);Ext.WindowMgr.bringToFront(this);},this);},loadMethodData:function(){var me=this;Ext.Ajax.request({url:this.controllerUrl+'methoddata',method:'post',scope:this,params:this.extraParams,success:function(response,request){response=Ext.JSON.decode(response.responseText);if(!response.success){Ext.Msg.alert(appLang.MESSAGE,response.msg);return;} -me.editor=Ext.create('designer.codeEditor',{readOnly:false,showSaveBtn:false,flex:1,sourceCode:response.data['code'],headerText:'{',footerText:'}',extraKeys:{"Ctrl-Space":function(cm){CodeMirror.simpleHint(cm,CodeMirror.javascriptHint);},"Ctrl-S":function(cm){me.saveMethod();},"Ctrl-Z":function(cm){me.editor.undoAction();},"Ctrl-Y":function(cm){me.editor.redoAction();},"Shift-Ctrl-Z":function(cm){me.editor.redoAction();}}});var form=this.dataForm.getForm();form.findField('description').setValue(response.data['description']);form.findField('method_name').setValue(response.data['name']);form.findField('params').setValue(response.data['paramsLine']);this.add(me.editor);this.saveButton.enable();},failure:function(){Ext.Msg.alert(appLang.MESSAGE,appLang.MSG_LOST_CONNECTION);}});},saveMethod:function(){var form=this.dataForm.getForm();var code=this.editor.getValue();var params=Ext.clone(this.extraParams);params['code']=code;form.submit({clientValidation:true,waitMsg:appLang.SAVING,method:'post',scope:this,params:params,url:this.controllerUrl+'update',success:function(form,action){if(!action.result.success){Ext.Msg.alert(appLang.MESSAGE,action.result.msg);}else{designer.msg(appLang.MESSAGE,desLang.msg_codeSaved);this.fireEvent('codeSaved');this.extraParams['method']=form.findField('method_name').getValue();this.methodName=this.extraParams['method'];}},failure:app.formFailure});}});Ext.define('designer.methodsModel',{extend:'Ext.data.Model',fields:[{name:'object',type:'string'},{name:'method',type:'string'},{name:'params',type:'string'},{name:'has_code',type:'boolean'}],idProperty:'method'});Ext.define('designer.methodsPanel',{extend:'Ext.grid.Panel',objectName:'',controllerUrl:'',columnLines:true,searchField:null,addButton:null,autoLoadData:true,extraParams:null,searchField:false,constructor:function(config){Ext.apply({extraParams:{}},config||{});this.callParent(arguments);},initComponent:function() +me.editor=Ext.create('designer.codeEditor',{readOnly:false,showSaveBtn:false,flex:1,sourceCode:response.data['code'],headerText:'{',footerText:'}',extraKeys:{"Ctrl-Space":function(cm){CodeMirror.simpleHint(cm,CodeMirror.javascriptHint);},"Ctrl-S":function(cm){me.saveMethod();},"Ctrl-Z":function(cm){me.editor.undoAction();},"Ctrl-Y":function(cm){me.editor.redoAction();},"Shift-Ctrl-Z":function(cm){me.editor.redoAction();}}});var form=this.dataForm.getForm();form.findField('description').setValue(response.data['description']);form.findField('method_name').setValue(response.data['name']);form.findField('params').setValue(response.data['paramsLine']);this.add(me.editor);this.saveButton.enable();},failure:function(){Ext.Msg.alert(appLang.MESSAGE,appLang.MSG_LOST_CONNECTION);}});},saveMethod:function(){var form=this.dataForm.getForm();var code=this.editor.getValue();var params=Ext.clone(this.extraParams);params['code']=code;form.submit({clientValidation:true,waitMsg:appLang.SAVING,method:'post',scope:this,params:params,url:this.controllerUrl+'update',success:function(form,action){if(!action.result.success){Ext.Msg.alert(appLang.MESSAGE,action.result.msg);}else{designer.msg(appLang.MESSAGE,desLang.msg_codeSaved);this.fireEvent('codeSaved');this.extraParams['method']=form.findField('method_name').getValue();this.methodName=this.extraParams['method'];}},failure:app.formFailure});}});Ext.define('designer.methodsModel',{extend:'Ext.data.Model',fields:[{name:'object',type:'string'},{name:'method',type:'string'},{name:'params',type:'string'},{name:'has_code',type:'boolean'}],idProperty:'method'});Ext.define('designer.methodsPanel',{extend:'Ext.grid.Panel',objectName:'',controllerUrl:'',columnLines:true,addButton:null,autoLoadData:true,extraParams:null,searchField:false,constructor:function(config){Ext.apply({extraParams:{}},config||{});this.callParent(arguments);},initComponent:function() {if(!this.controllerUrl.length){this.controllerUrl=app.createUrl([designer.controllerUrl,'methods','']);} this.extraParams['object']=this.objectName;this.store=Ext.create('Ext.data.Store',{model:'designer.methodsModel',proxy:{type:'ajax',url:this.controllerUrl+'objectmethods',reader:{type:'json',rootProperty:'data'},extraParams:this.extraParams,simpleSortMode:true},remoteSort:false,autoLoad:this.autoLoadData,sorters:[{property:'object',direction:'DESC'},{property:'method',direction:'DESC'}]});this.searchField=Ext.create('SearchPanel',{store:this.store,local:true,width:130,hideLabel:true,fieldNames:['method']});this.addButton=Ext.create('Ext.Button',{iconCls:'addIcon',text:desLang.addMethod,scope:this,handler:this.addMethod});this.tbar=[this.addButton,'->',this.searchField];this.columns=[{xtype:'actioncolumn',width:20,items:[{width:20,tooltip:desLang.edit,scope:this,iconCls:'editIcon',handler:function(grid,rowIndex,colIndex){var rec=grid.getStore().getAt(rowIndex);this.editMethod(rec);}}]},{dataIndex:'method',text:desLang.method,flex:1},{dataIndex:'params',text:desLang.params,flex:1},{xtype:'actioncolumn',width:25,items:[{iconCls:'deleteIcon',tooltip:desLang.removeAction,handler:function(grid,rowIndex,colIndex){var rec=grid.getStore().getAt(rowIndex);this.removeMethod(rec);},width:25,scope:this}]}];this.on('celldblclick',function(table,td,cellIndex,record,tr,rowIndex,e,eOpts){this.editMethod(record);},this);this.callParent();},addMethod:function(){Ext.MessageBox.prompt(appLang.MESSAGE,desLang.enterMethodName,function(btn,methodName){if(btn!='ok'){return;} var params=Ext.clone(this.extraParams);params['method']=methodName;var store=this.getStore();Ext.Ajax.request({url:this.controllerUrl+'addmethod',method:'post',scope:this,params:params,success:function(response,request){response=Ext.JSON.decode(response.responseText);if(!response.success){Ext.Msg.alert(appLang.MESSAGE,response.msg);return;} store.load({scope:this,callback:function(){var index=store.findExact('method',methodName);if(index!=-1){this.editMethod(store.getAt(index));}}});this.fireEvent('methodsUpdated');},failure:function(){Ext.Msg.alert(appLang.MESSAGE,appLang.MSG_LOST_CONNECTION);}});},this);},removeMethod:function(record){var params=Ext.clone(this.extraParams);params['method']=record.get('method');Ext.Ajax.request({url:this.controllerUrl+'removemethod',method:'post',scope:this,params:params,success:function(response,request){response=Ext.JSON.decode(response.responseText);if(!response.success){Ext.Msg.alert(appLang.MESSAGE,response.msg);return;} designer.msg(appLang.MESSAGE,desLang.msg_methodRemoved);this.getStore().remove(record);this.fireEvent('methodsUpdated');},failure:function(){Ext.Msg.alert(appLang.MESSAGE,appLang.MSG_LOST_CONNECTION);}});},editMethod:function(record) -{Ext.create('designer.methodEditorWindow',{controllerUrl:this.controllerUrl,objectName:this.objectName,methodName:record.get('method'),paramsString:record.get('params'),extraParams:this.extraParams,modal:true,listeners:{'codeSaved':{fn:function(){this.getStore().load();this.fireEvent('methodsUpdated');},scope:this}}}).show();},getSearchText:function(){return this.searchField.getValue();},setSearchText:function(text){this.searchField.setValue(text);}});Ext.define('designer.eventsEditorModel',{extend:'Ext.data.Model',fields:[{name:'id',type:'integer'},{name:'object',type:'string'},{name:'event',type:'string'},{name:'params',type:'string'},{name:'is_local',type:'boolean'}],idProperty:'id'});Ext.define('designer.eventsEditor',{extend:'Ext.grid.Panel',scrollable:true,controllerUrl:null,searchField:null,columnLines:true,viewConfig:{stripeRows:true,enableTextSelection:true},initComponent:function(){if(!this.controllerUrl.length){this.controllerUrl=app.createUrl([designer.controllerUrl,'events','']);} +{Ext.create('designer.methodEditorWindow',{controllerUrl:this.controllerUrl,objectName:this.objectName,methodName:record.get('method'),paramsString:record.get('params'),extraParams:this.extraParams,modal:true,listeners:{'codeSaved':{fn:function(){this.getStore().load();this.fireEvent('methodsUpdated');},scope:this}}}).show();},getSearchText:function(){return this.searchField.getValue();},setSearchText:function(text){this.searchField.setValue(text);},destroy:function(){this.store.destroy();this.callParent(arguments);}});Ext.define('designer.eventsEditorModel',{extend:'Ext.data.Model',fields:[{name:'id',type:'integer'},{name:'object',type:'string'},{name:'event',type:'string'},{name:'params',type:'string'},{name:'is_local',type:'boolean'}],idProperty:'id'});Ext.define('designer.eventsEditor',{extend:'Ext.grid.Panel',scrollable:true,controllerUrl:null,searchField:null,columnLines:true,viewConfig:{stripeRows:true,enableTextSelection:true},initComponent:function(){if(!this.controllerUrl.length){this.controllerUrl=app.createUrl([designer.controllerUrl,'events','']);} this.store=Ext.create('Ext.data.Store',{model:'designer.eventsEditorModel',proxy:{type:'ajax',url:this.controllerUrl+'list',reader:{type:'json',rootProperty:'data',idProperty:'id'},simpleSortMode:true},groupField:'object',remoteSort:false,autoLoad:false,sorters:[{property:'object',direction:'DESC'},{property:'event',direction:'DESC'}]});this.searchField=Ext.create('SearchPanel',{store:this.store,local:true,fieldNames:['object','event']});this.tbar=[{iconCls:'refreshIcon',tooltip:desLang.refresh,scope:this,handler:function(){this.store.load();}},this.searchField];this.columns=[{xtype:'actioncolumn',width:20,items:[{iconCls:'editIcon',handler:function(grid,rowIndex,colIndex){var rec=grid.getStore().getAt(rowIndex);this.editEvent(rec);},scope:this}]},{text:desLang.object,dataIndex:'object',width:150},{text:desLang.event,dataIndex:'event',width:150},{text:desLang.params,dataIndex:'params',flex:1},{xtype:'actioncolumn',width:20,items:[{iconCls:'deleteIcon',handler:function(grid,rowIndex,colIndex){var rec=grid.getStore().getAt(rowIndex);this.removeEvent(rec);},scope:this}]}];this.features=[Ext.create('Ext.grid.feature.Grouping',{groupHeaderTpl:'{name} ({rows.length})',startCollapsed:0,enableGroupingMenu:1,hideGroupedHeader:0})];this.on('itemdblclick',function(view,record,number,event,options){this.editEvent(record);},this);this.callParent();},removeEvent:function(record){Ext.Ajax.request({url:this.controllerUrl+'removeevent',method:'post',scope:this,params:{object:record.get('object'),event:record.get('event')},success:function(response,request){response=Ext.JSON.decode(response.responseText);if(!response.success){Ext.Msg.alert(appLang.MESSAGE,response.msg);return;} designer.msg(appLang.MESSAGE,desLang.msg_listenerRemoved);this.getStore().remove(record);this.getStore().commitChanges();this.fireEvent('eventsUpdated');},failure:function(){Ext.Msg.alert(appLang.MESSAGE,appLang.MSG_LOST_CONNECTION);}});},editEvent:function(record) {Ext.create('designer.eventsEditorWindow',{controllerUrl:this.controllerUrl,objectName:record.get('object'),eventName:record.get('event'),paramsString:record.get('params'),modal:false,listeners:{'codeSaved':{fn:function(){record.set('has_code',true);record.commit();this.fireEvent('eventsUpdated');},scope:this}}}).show();}});Ext.define('designer.eventsEditorWindow',{extend:'Ext.Window',modal:true,width:800,height:600,layout:{type:'vbox',align:'stretch',pack:'start'},autoRender:true,maximizable:true,extraParams:null,closeAction:'destroy',controllerUrl:'',objectName:'',eventName:'',paramsString:'',editor:null,loadedConfig:null,constructor:function(){this.extraParams={};this.callParent(arguments);},initComponent:function(){this.extraParams['object']=this.objectName;this.extraParams['event']=this.eventName;this.title=this.objectName+' on '+this.eventName;this.saveButton=Ext.create('Ext.Button',{disabled:true,text:desLang.save,scope:this,handler:this.saveEvent});this.cancelButton=Ext.create('Ext.Button',{text:desLang.close,scope:this,handler:this.close});this.buttons=[this.saveButton,this.cancelButton];this.dataForm=Ext.create('Ext.form.Panel',{bodyPadding:5,bodyCls:'formBody',border:false,bosyPadding:5,autoHeight:true,split:false,items:[{xtype:'fieldcontainer',layout:{type:'hbox',pack:'start',align:'stretch'},height:22,items:[{xtype:'textfield',name:'new_name',flex:1,fieldStyle:{border:'none',background:'none',backgroundColor:'#F4F4F4'}},{xtype:'displayfield',value:' : function( '},{xtype:'textfield',name:'params',flex:2,fieldStyle:{border:'none',background:'none',backgroundColor:'#F4F4F4',color:'#5C3BFB'}},{xtype:'displayfield',value:' )'}]}]});this.callParent();this.on('show',function(){this.loadCode();app.checkSize(this);Ext.WindowMgr.register(this);Ext.WindowMgr.bringToFront(this);},this);},loadCode:function(){var me=this;Ext.Ajax.request({url:this.controllerUrl+'eventcode',method:'post',scope:this,params:this.extraParams,success:function(response,request){response=Ext.JSON.decode(response.responseText);if(!response.success){Ext.Msg.alert(appLang.MESSAGE,response.msg);return;} @@ -115,7 +116,7 @@ me.fireEvent('dataSaved');me.close();},failure:app.formFailure});}});Ext.define( this.itemPropertiesPanel.setExtraParams({'id':sm.getSelection()[0].get('id')});this.itemPropertiesPanel.loadProperties();},this);},addFilter:function(){Ext.MessageBox.prompt(appLang.MESSAGE,desLang.enterFilterId,function(btn,text){if(btn!='ok'){return;} Ext.Ajax.request({url:app.createUrl([designer.controllerUrl,'gridfilters','addfilter']),method:'post',params:{'id':text,'object':this.objectName},scope:this,success:function(response,request){response=Ext.JSON.decode(response.responseText);if(response.success){this.dataStore.load();}else{Ext.Msg.alert(appLang.MESSAGE,response.msg);}},failure:function(){Ext.Msg.alert(appLang.MESSAGE,appLang.MSG_LOST_CONNECTION);}});},this);},removeFilter:function(grid,row,col) {var record=grid.getStore().getAt(row);Ext.MessageBox.confirm(appLang.MESSAGE,desLang.remove+'?',function(btn){if(btn!='yes'){return;} -Ext.Ajax.request({url:app.createUrl([designer.controllerUrl,'gridfilters','removefilter']),method:'post',params:{'id':record.get('id'),'object':this.objectName},scope:this,success:function(response,request){response=Ext.JSON.decode(response.responseText);if(response.success){grid.getStore().load();}else{Ext.Msg.alert(appLang.MESSAGE,response.msg);}},failure:function(){Ext.Msg.alert(appLang.MESSAGE,appLang.MSG_LOST_CONNECTION);}});},this);}});Ext.ns('designer.properties');Ext.define('designer.properties.Panel',{extend:'Ext.Panel',layout:'fit',border:false,searchPanel:null,dataStore:null,dataGrid:null,controllerUrl:'',scrollable:false,controllerUr:'',eventsControllerUrl:'',eventsPanel:null,methodsPanel:null,objectName:null,tabs:null,showEvents:true,showMethods:false,extraParams:null,alignData:[['left'],['center'],['right']],labelAlignData:[['left'],['top'],['right']],iconAlignData:[['top'],['right'],['bottom'],['left']],regionData:[['center'],['west'],['north'],['east'],['south']],layoutData:[['Auto'],['border'],['card'],['fit'],['hbox'],['vbox'],['anchor']],dockData:[['top'],['right'],['left'],['bottom']],mainConfigTitle:desLang.properties,autoLoadData:true,methodsSearch:false,useTabs:true,constructor:function(){this.extraParams={};this.sourceConfig={};this.callParent(arguments);},initComponent:function(){var me=this;this.extraParams.object=this.objectName;var storesStore=app.designer.getStoreSelector();var menuStore=app.designer.getMenuStore();this.objectNames={};this.sourceConfig=Ext.apply({'region':{editor:Ext.create('Ext.form.ComboBox',{selectOnFocus:true,editable:true,triggerAction:'all',anchor:'100%',queryMode:'local',store:Ext.create('Ext.data.ArrayStore',{fields:['id'],data:this.regionData}),valueField:'id',displayField:'id',allowBlank:true,forceSelection:false})},'layout':{editor:Ext.create('Ext.form.ComboBox',{selectOnFocus:true,editable:true,triggerAction:'all',anchor:'100%',queryMode:'local',store:Ext.create('Ext.data.ArrayStore',{fields:['id'],data:this.layoutData}),valueField:'id',displayField:'id',allowBlank:true})},'dock':{editor:Ext.create('Ext.form.ComboBox',{selectOnFocus:true,editable:true,triggerAction:'all',anchor:'100%',queryMode:'local',store:Ext.create('Ext.data.ArrayStore',{fields:['id'],data:this.dockData}),valueField:'id',displayField:'id',allowBlank:true})},'align':{editor:Ext.create('Ext.form.ComboBox',{selectOnFocus:true,editable:true,triggerAction:'all',anchor:'100%',queryMode:'local',store:Ext.create('Ext.data.ArrayStore',{fields:['id'],data:this.alignData}),valueField:'id',displayField:'id',allowBlank:true})},'titleAlign':{editor:Ext.create('Ext.form.ComboBox',{selectOnFocus:true,editable:true,triggerAction:'all',anchor:'100%',queryMode:'local',store:Ext.create('Ext.data.ArrayStore',{fields:['id'],data:this.alignData}),valueField:'id',displayField:'id',allowBlank:true})},'labelAlign':{editor:Ext.create('Ext.form.ComboBox',{selectOnFocus:true,editable:true,triggerAction:'all',anchor:'100%',queryMode:'local',store:Ext.create('Ext.data.ArrayStore',{fields:['id'],data:this.labelAlignData}),valueField:'id',displayField:'id',allowBlank:true})},'iconAlign':{editor:Ext.create('Ext.form.ComboBox',{selectOnFocus:true,editable:true,triggerAction:'all',anchor:'100%',queryMode:'local',store:Ext.create('Ext.data.ArrayStore',{fields:['id'],data:this.iconAlignData}),valueField:'id',displayField:'id',allowBlank:true})},'store':{editor:Ext.create('Ext.form.field.ComboBox',{typeAhead:true,triggerAction:'all',selectOnTab:true,labelWidth:80,forceSelection:false,queryMode:'remote',displayField:'title',valueField:'id',store:storesStore})},'menu':{editor:Ext.create('Ext.form.field.ComboBox',{typeAhead:true,triggerAction:'all',selectOnTab:true,labelWidth:80,forceSelection:false,queryMode:'remote',displayField:'title',valueField:'id',store:menuStore})},'url':{editor:Ext.create('designer.urlField',{controllerUrl:app.createUrl([designer.controllerUrl,'url','actions','']),listeners:{select:{fn:function(url){me.dataGrid.setProperty('url',url);},scope:me}}})},'icon':{editor:Ext.create('designer.iconField',{controllerUrl:app.createUrl([designer.controllerUrl,'url','']),listeners:{select:{fn:function(url){me.dataGrid.setProperty('icon',url);},scope:me}}})},'controllerUrl':{editor:Ext.create('designer.urlField',{onlyController:true,controllerUrl:app.createUrl([designer.controllerUrl,'url','actions','']),listeners:{select:{fn:function(url){me.dataGrid.setProperty('controllerUrl',url);},scope:me}}})},'defaults':{editor:Ext.create('Ext.form.field.Text',{listeners:{focus:{fn:function(){me.showDefaultsWindow('defaults');},scope:me}}}),renderer:function(){return'...';}},'extraParams':{editor:Ext.create('Ext.form.field.Text',{listeners:{focus:{fn:function(){me.showParamsWindow('extraParams');},scope:me}}}),renderer:function(){return'...';}},'fieldDefaults':{editor:Ext.create('Ext.form.field.Text',{listeners:{focus:{fn:function(){me.showDefaultsWindow('fieldDefaults');},scope:me}}}),renderer:function(){return'...';}},'isExtended':{editor:Ext.create('Ext.form.field.Display',{})},'dictionary':{editor:Ext.create('Ext.form.field.ComboBox',{typeAhead:true,triggerAction:'all',selectOnTab:true,labelWidth:80,forceSelection:false,queryMode:'remote',displayField:'title',valueField:'id',store:Ext.create('Ext.data.Store',{model:'app.comboStringModel',proxy:{type:'ajax',url:this.controllerUrl+'listdictionaries',reader:{type:'json',rootProperty:'data',idProperty:'id'},simpleSortMode:true},remoteSort:false,autoLoad:false,sorters:[{property:'title',direction:'DESC'}]})})},'config':{editor:Ext.create('Ext.form.field.Text',{listeners:{focus:{fn:function(){me.showDefaultsWindow('config');},scope:me}}})},'objectName':{editor:Ext.create('Ext.form.field.ComboBox',{typeAhead:true,triggerAction:'all',selectOnTab:true,labelWidth:80,forceSelection:true,queryMode:'local',displayField:'title',valueField:'name',store:Ext.create('Ext.data.Store',{proxy:{type:'ajax',url:app.createUrl([designer.controllerUrl,'orm','list']),reader:{type:'json',idProperty:'name',rootProperty:'data'}},fields:[{name:'name',type:'string'},{name:'title',type:'string'}],autoLoad:true,listeners:{scope:me,load:function(store){me.objectNames={};store.each(function(record){me.objectNames[record.get('name')]=record.get('title');},me);}}}),renderer:function(){return'...';}})}},this.sourceConfig);this.searchPanel=Ext.create('SearchPanel',{fieldNames:['name'],local:true,width:130,hideLabel:true});var showCodeBtn=Ext.create('Ext.Button',{scope:me,iconCls:'jsIcon',handler:me.showCode,tooltip:desLang.showCode});this.dataGrid=Ext.create('Ext.grid.property.Grid',{border:false,region:'center',split:true,scrollable:true,title:this.mainConfigTitle,tbar:[this.searchPanel,'->',showCodeBtn],sourceConfig:this.sourceConfig,customRenderers:this.customRenderers,nameColumnWidth:150,listeners:{propertychange:{fn:this.onChange,scope:this}},source:{}});this.searchPanel.store=this.dataGrid.getStore();var itemsList=[this.dataGrid];if(this.showEvents){this.eventsPanel=Ext.create('designer.eventsPanel',{title:desLang.events,controllerUrl:this.eventsControllerUrl,objectName:this.objectName,extraParams:this.extraParams,autoLoadData:this.autoLoadData,listeners:{'eventsUpdated':{fn:function(){this.fireEvent('eventsUpdated');},scope:this}}});itemsList.push(this.eventsPanel);} +Ext.Ajax.request({url:app.createUrl([designer.controllerUrl,'gridfilters','removefilter']),method:'post',params:{'id':record.get('id'),'object':this.objectName},scope:this,success:function(response,request){response=Ext.JSON.decode(response.responseText);if(response.success){grid.getStore().load();}else{Ext.Msg.alert(appLang.MESSAGE,response.msg);}},failure:function(){Ext.Msg.alert(appLang.MESSAGE,appLang.MSG_LOST_CONNECTION);}});},this);}});Ext.ns('designer.properties');Ext.define('designer.properties.idStringModel',{extend:'Ext.data.Model',idProperty:'id',fields:[{name:'id',type:'string'}]});Ext.define('designer.properties.nameTitleModel',{extend:'Ext.data.Model',idProperty:'name',fields:[{name:'name',type:'string'},{name:'title',type:'string'}]});Ext.define('designer.properties.Panel',{extend:'Ext.Panel',layout:'fit',border:false,searchPanel:null,dataStore:null,dataGrid:null,controllerUrl:'',scrollable:false,controllerUr:'',eventsControllerUrl:'',eventsPanel:null,methodsPanel:null,objectName:null,tabs:null,showEvents:true,showMethods:false,extraParams:null,alignData:[['left'],['center'],['right']],labelAlignData:[['left'],['top'],['right']],iconAlignData:[['top'],['right'],['bottom'],['left']],regionData:[['center'],['west'],['north'],['east'],['south']],layoutData:[['Auto'],['border'],['card'],['fit'],['hbox'],['vbox'],['anchor']],dockData:[['top'],['right'],['left'],['bottom']],mainConfigTitle:desLang.properties,autoLoadData:true,methodsSearch:false,useTabs:true,constructor:function(){this.extraParams={};this.sourceConfig={};this.callParent(arguments);},initComponent:function(){var me=this;this.extraParams.object=this.objectName;var storesStore=app.designer.getStoreSelector();var menuStore=app.designer.getMenuStore();this.objectNames={};this.sourceConfig=Ext.apply({'region':{editor:Ext.create('Ext.form.ComboBox',{selectOnFocus:true,editable:true,triggerAction:'all',anchor:'100%',queryMode:'local',store:Ext.create('Ext.data.ArrayStore',{model:'designer.properties.idStringModel',data:this.regionData}),valueField:'id',displayField:'id',allowBlank:true,forceSelection:false})},'layout':{editor:Ext.create('Ext.form.ComboBox',{selectOnFocus:true,editable:true,triggerAction:'all',anchor:'100%',queryMode:'local',store:Ext.create('Ext.data.ArrayStore',{model:'designer.properties.idStringModel',data:this.layoutData}),valueField:'id',displayField:'id',allowBlank:true})},'dock':{editor:Ext.create('Ext.form.ComboBox',{selectOnFocus:true,editable:true,triggerAction:'all',anchor:'100%',queryMode:'local',store:Ext.create('Ext.data.ArrayStore',{model:'designer.properties.idStringModel',data:this.dockData}),valueField:'id',displayField:'id',allowBlank:true})},'align':{editor:Ext.create('Ext.form.ComboBox',{selectOnFocus:true,editable:true,triggerAction:'all',anchor:'100%',queryMode:'local',store:Ext.create('Ext.data.ArrayStore',{model:'designer.properties.idStringModel',data:this.alignData}),valueField:'id',displayField:'id',allowBlank:true})},'titleAlign':{editor:Ext.create('Ext.form.ComboBox',{selectOnFocus:true,editable:true,triggerAction:'all',anchor:'100%',queryMode:'local',store:Ext.create('Ext.data.ArrayStore',{model:'designer.properties.idStringModel',data:this.alignData}),valueField:'id',displayField:'id',allowBlank:true})},'labelAlign':{editor:Ext.create('Ext.form.ComboBox',{selectOnFocus:true,editable:true,triggerAction:'all',anchor:'100%',queryMode:'local',store:Ext.create('Ext.data.ArrayStore',{model:'designer.properties.idStringModel',data:this.labelAlignData}),valueField:'id',displayField:'id',allowBlank:true})},'iconAlign':{editor:Ext.create('Ext.form.ComboBox',{selectOnFocus:true,editable:true,triggerAction:'all',anchor:'100%',queryMode:'local',store:Ext.create('Ext.data.ArrayStore',{model:'designer.properties.idStringModel',data:this.iconAlignData}),valueField:'id',displayField:'id',allowBlank:true})},'store':{editor:Ext.create('Ext.form.field.ComboBox',{typeAhead:true,triggerAction:'all',selectOnTab:true,labelWidth:80,forceSelection:false,queryMode:'remote',displayField:'title',valueField:'id',store:storesStore})},'menu':{editor:Ext.create('Ext.form.field.ComboBox',{typeAhead:true,triggerAction:'all',selectOnTab:true,labelWidth:80,forceSelection:false,queryMode:'remote',displayField:'title',valueField:'id',store:menuStore})},'url':{editor:Ext.create('designer.urlField',{controllerUrl:app.createUrl([designer.controllerUrl,'url','actions','']),listeners:{select:{fn:function(url){me.dataGrid.setProperty('url',url);},scope:me}}})},'icon':{editor:Ext.create('designer.iconField',{controllerUrl:app.createUrl([designer.controllerUrl,'url','']),listeners:{select:{fn:function(url){me.dataGrid.setProperty('icon',url);},scope:me}}})},'controllerUrl':{editor:Ext.create('designer.urlField',{onlyController:true,controllerUrl:app.createUrl([designer.controllerUrl,'url','actions','']),listeners:{select:{fn:function(url){me.dataGrid.setProperty('controllerUrl',url);},scope:me}}})},'defaults':{editor:Ext.create('Ext.form.field.Text',{listeners:{focus:{fn:function(){me.showDefaultsWindow('defaults');},scope:me}}}),renderer:function(){return'...';}},'extraParams':{editor:Ext.create('Ext.form.field.Text',{listeners:{focus:{fn:function(){me.showParamsWindow('extraParams');},scope:me}}}),renderer:function(){return'...';}},'fieldDefaults':{editor:Ext.create('Ext.form.field.Text',{listeners:{focus:{fn:function(){me.showDefaultsWindow('fieldDefaults');},scope:me}}}),renderer:function(){return'...';}},'isExtended':{editor:Ext.create('Ext.form.field.Display',{})},'dictionary':{editor:Ext.create('Ext.form.field.ComboBox',{typeAhead:true,triggerAction:'all',selectOnTab:true,labelWidth:80,forceSelection:false,queryMode:'remote',displayField:'title',valueField:'id',store:Ext.create('Ext.data.Store',{model:'app.comboStringModel',proxy:{type:'ajax',url:this.controllerUrl+'listdictionaries',reader:{type:'json',rootProperty:'data',idProperty:'id'},simpleSortMode:true},remoteSort:false,autoLoad:false,sorters:[{property:'title',direction:'DESC'}]})})},'config':{editor:Ext.create('Ext.form.field.Text',{listeners:{focus:{fn:function(){me.showDefaultsWindow('config');},scope:me}}})},'objectName':{editor:Ext.create('Ext.form.field.ComboBox',{typeAhead:true,triggerAction:'all',selectOnTab:true,labelWidth:80,forceSelection:true,queryMode:'local',displayField:'title',valueField:'name',store:Ext.create('Ext.data.Store',{proxy:{type:'ajax',url:app.createUrl([designer.controllerUrl,'orm','list']),reader:{type:'json',idProperty:'name',rootProperty:'data'}},model:'designer.properties.nameTitleModel',autoLoad:true,listeners:{scope:me,load:function(store){me.objectNames={};store.each(function(record){me.objectNames[record.get('name')]=record.get('title');},me);}}}),renderer:function(){return'...';}})}},this.sourceConfig);this.searchPanel=Ext.create('SearchPanel',{fieldNames:['name'],local:true,width:130,hideLabel:true});var showCodeBtn=Ext.create('Ext.Button',{scope:me,iconCls:'jsIcon',handler:me.showCode,tooltip:desLang.showCode});this.dataGrid=Ext.create('Ext.grid.property.Grid',{border:false,region:'center',split:true,scrollable:true,title:this.mainConfigTitle,tbar:[this.searchPanel,'->',showCodeBtn],sourceConfig:this.sourceConfig,customRenderers:this.customRenderers,nameColumnWidth:150,listeners:{propertychange:{fn:this.onChange,scope:this}},source:{}});this.searchPanel.store=this.dataGrid.getStore();var itemsList=[this.dataGrid];if(this.showEvents){this.eventsPanel=Ext.create('designer.eventsPanel',{title:desLang.events,controllerUrl:this.eventsControllerUrl,objectName:this.objectName,extraParams:this.extraParams,autoLoadData:this.autoLoadData,listeners:{'eventsUpdated':{fn:function(){this.fireEvent('eventsUpdated');},scope:this}}});itemsList.push(this.eventsPanel);} if(this.showMethods){this.methodsPanel=Ext.create('designer.methodsPanel',{title:desLang.methods,controllerUrl:this.methodsControllerUrl,objectName:this.objectName,extraParams:this.extraParams,autoLoadData:this.autoLoadData,listeners:{'methodsUpdated':{fn:function(){this.fireEvent('methodsUpdated');},scope:this}}});itemsList.push(this.methodsPanel);if(this.methodsSearch){this.methodsPanel.setSearchText(this.methodsSearch);this.methodsSearch=false;}} if(this.useTabs){this.tabs=Ext.create('Ext.tab.Panel',{items:itemsList});this.items=[this.tabs];}else{this.items=[this.dataGrid];} this.callParent();if(this.autoLoadData){this.loadProperties();}},refreshEvents:function(){if(this.showEvents){this.eventsPanel.getStore().proxy.extraParams=this.extraParams;this.eventsPanel.getStore().load();}},refreshMethods:function(){if(this.showMethods){this.methodsPanel.getStore().proxy.extraParams=this.extraParams;this.methodsPanel.getStore().load();}},resetProperties:function(){this.dataGrid.getStore().removeAll();},loadProperties:function(){Ext.Ajax.request({url:this.controllerUrl+'list',method:'post',scope:this,params:this.extraParams,success:function(response){response=Ext.JSON.decode(response.responseText);if(response.success){if(!Ext.isEmpty(this.eventsPanel)&&!Ext.isEmpty(this.methodsPanel)){if(!Ext.isEmpty(response.data.isExtended)&&response.data.isExtended){this.eventsPanel.setCanEditLocalEvents(true);this.methodsPanel.enable();}else{this.eventsPanel.setCanEditLocalEvents(false);this.methodsPanel.disable();}} @@ -127,8 +128,11 @@ var params=Ext.apply({name:recordId,value:value},this.extraParams);Ext.Ajax.requ Ext.Msg.alert(appLang.MESSAGE,desLang.cantSaveProperty+' "'+recordId+'".'+msg);}else{this.fireEvent('dataSaved',recordId,value);designer.msg(desLang.msg,desLang.msg_propertySaved);}},failure:function(){Ext.Msg.alert(appLang.MESSAGE,appLang.MSG_LOST_CONNECTION);}});},resetSerchField:function(){this.searchPanel.searchField.reset();},showCode:function(){Ext.Ajax.request({url:app.createUrl([designer.controllerUrl,'code','objectcode']),method:'post',scope:this,params:{object:this.objectName},success:function(response){response=Ext.JSON.decode(response.responseText);if(!response.success){Ext.Msg.alert(appLang.MESSAGE,response.msg);return;} var editor=Ext.create('designer.codeEditor',{sourceCode:response.data,readOnly:true});Ext.create('Ext.Window',{title:desLang.sourceCodeFor+' "'+this.objectName+'"',layout:'fit',width:750,height:600,modal:true,maximizable:true,items:[editor]}).show();},failure:function(){Ext.Msg.alert(appLang.MESSAGE,appLang.MSG_LOST_CONNECTION);}});},showDefaultsWindow:function(property){var me=this;var source=this.dataGrid.getSource();var data=[];if(!Ext.isEmpty(source[property])){var tmp=Ext.JSON.decode(source[property]);for(var i in tmp){if(typeof tmp[i]!='function'){data.push({'key':i,'value':tmp[i]});}}} var win=Ext.create('designer.defaultsWindow',{title:property,initialData:data});win.on('dataChanged',function(value){me.dataGrid.setProperty(property,value);},me);Ext.defer(function(){win.show().toFront();},50);},showParamsWindow:function(property){var me=this;var source=this.dataGrid.getSource();var data=[];if(!Ext.isEmpty(source[property])){var tmp=Ext.JSON.decode(source[property]);for(var i in tmp){if(typeof tmp[i]!='function'){data.push({'key':i,'value':tmp[i]});}}} -var win=Ext.create('designer.paramsWindow',{title:property,initialData:data});win.on('dataChanged',function(value){me.dataGrid.setProperty(property,value);},me);Ext.defer(function(){win.show().toFront();},50);}});Ext.define('designer.properties.Grid',{extend:'designer.properties.Panel',layout:'accordion',advancedForm:null,initComponent:function(){var me=this;this.mainConfigTitle=desLang.properties;this.tbar=[{iconCls:'gridIcon',tooltip:desLang.columns,scope:me,handler:me.showColumnsWindow}];this.sourceConfig=Ext.apply({'columns':{editor:Ext.create('Ext.form.field.Text',{listeners:{focus:{fn:this.showColumnsWindow,scope:this}}}),renderer:function(v){return'...';}}});this.advancedForm=Ext.create('Ext.form.Panel',{bodyCls:'formBody',title:desLang.advancedOptions,defaults:{margin:'3 3 3 3'},fieldDefaults:{labelWidth:150},frame:true,border:false,scrollable:true,items:[{xtype:'fieldset',title:desLang.grouping,checkboxName:'grouping',checkboxToggle:true,collapsed:true,items:[{name:'groupsummary',fieldLabel:desLang.useGroupSummary,xtype:'checkbox',value:1,uncheckedValue:0},{name:'startCollapsed',fieldLabel:desLang.startCollapsed,xtype:'checkbox',value:1,uncheckedValue:0},{name:'hideGroupedHeader',fieldLabel:desLang.hideGroupedHeader,xtype:'checkbox',value:1,uncheckedValue:0},{name:'enableGroupingMenu',fieldLabel:desLang.enableGroupingMenu,xtype:'checkbox',value:1,uncheckedValue:0},{name:'groupHeaderTpl',fieldLabel:'groupHeaderTpl',xtype:'textfield',anchor:'100%'},{name:'remoteRoot',fieldLabel:'remoteRoot',xtype:'textfield',anchor:'100%'}]},{xtype:'fieldset',checkboxName:'editable',title:desLang.editable,checkboxToggle:true,collapsed:true,items:[{fieldLabel:desLang.clicksToEdit,name:'clicksToEdit',xtype:'numberfield',value:1,minValue:1,maxValue:2,width:190,allowDecimals:false}]},{xtype:'fieldset',checkboxName:'rowexpander',title:desLang.rowExpander,checkboxToggle:true,collapsed:true,items:[{fieldLabel:desLang.expanderRowBodyTpl,name:'expander_rowbodytpl',xtype:'textfield',anchor:'100%'}]},{name:'summary',fieldLabel:desLang.useSummary,margin:'0 0 0 15',xtype:'checkbox'},{fieldLabel:desLang.paging,name:'paging',margin:'0 0 0 15',xtype:'checkbox'},{name:'checkboxSelection',fieldLabel:desLang.checkboxSelection,xtype:'checkbox',margin:'0 0 0 15'},{name:'numberedRows',fieldLabel:desLang.numberedRows,xtype:'checkbox',margin:'0 0 0 15'}],buttons:[{text:desLang.save,handler:this.saveAdvancedProperties,scope:this}]});this.callParent();this.add(this.advancedForm);this.advancedForm.load({url:app.createUrl([designer.controllerUrl,'grid','loadadvanced']),params:{object:this.objectName}});},showFiltersWindow:function(){Ext.create('designer.grid.filters.Window',{objectName:this.objectName,storeName:this.dataGrid.getSource().store,listeners:{dataSaved:{fn:function(){this.fireEvent('dataSaved');},scope:this}}}).show();},showColumnsWindow:function(){var win=Ext.create('designer.grid.column.Window',{title:desLang.gridColumnsConfig,objectName:this.objectName,storeName:this.dataGrid.getSource().store});win.show();},saveAdvancedProperties:function(){var handle=this;this.advancedForm.getForm().submit({clientValidation:true,waitMsg:appLang.SAVING,method:'post',url:app.createUrl([designer.controllerUrl,'grid','setadvanced']),params:{object:this.objectName},success:function(form,action){if(!action.result.success){Ext.Msg.alert(appLang.MESSAGE,action.result.msg);}else{handle.fireEvent('dataSaved');}},failure:app.formFailure});}});Ext.define('designer.properties.GridColumn',{extend:'designer.properties.Panel',autoLoadData:false,initComponent:function(){var me=this;this.renderersStore=Ext.create('Ext.data.Store',{model:'app.comboStringModel',proxy:{type:'ajax',url:this.controllerUrl+'renderers',reader:{type:'json',rootProperty:'data',idProperty:'id'},extraParams:{object:this.objectName},simpleSortMode:true},remoteSort:false,autoLoad:true,sorters:[{property:'title',direction:'DESC'}]});var summaryEditor=Ext.create('Ext.form.field.ComboBox',{typeAhead:true,triggerAction:'all',selectOnTab:true,labelWidth:80,forceSelection:true,queryMode:'local',displayField:'title',valueField:'id',store:this.renderersStore});this.sourceConfig=Ext.apply({'summaryType':{editor:Ext.create('Ext.form.field.ComboBox',{typeAhead:true,triggerAction:'all',selectOnTab:true,labelWidth:80,forceSelection:true,queryMode:'local',store:[['count','count'],['sum','sum'],['min','min'],['max','max'],['average','average']]}),renderer:function(v){if(Ext.isEmpty(v)){return'...';}else{return v;}}},'summaryRenderer':{editor:summaryEditor,renderer:app.comboBoxRenderer(summaryEditor)},'renderer':{editor:Ext.create('Ext.form.field.Text',{listeners:{focus:{fn:me.showRendererWindow,scope:me}}}),renderer:function(v){return'...';}},'items':{editor:Ext.create('Ext.form.field.Text',{listeners:{focus:{fn:me.showItemsWindow,scope:me}}}),renderer:function(v){return'...';}},'filter':{editor:Ext.create('Ext.form.field.Text',{listeners:{focus:{fn:me.showFilterWindow,scope:me}}}),renderer:function(v){return'...';}}},this.sourceConfig);this.callParent();},showRendererWindow:function(){var win=Ext.create('designer.grid.column.RendererWindow',{title:desLang.renderer,modal:true,objectName:this.objectName,columnId:this.extraParams.id,controllerUrl:this.controllerUrl});Ext.defer(function(){win.show().toFront();},50);},showItemsWindow:function() -{var win=Ext.create('designer.grid.column.ActionsWindow',{title:desLang.items,objectName:this.objectName,columnId:this.extraParams.id,controllerUrl:this.controllerUrl});Ext.defer(function(){win.show().toFront();},50);},showFilterWindow:function(){var win=Ext.create('designer.grid.column.FilterWindow',{title:desLang.filter,objectName:this.objectName,columnId:this.extraParams.id,controllerUrl:this.controllerUrl});Ext.defer(function(){win.show().toFront();},50);}});Ext.define('designer.properties.GridFilter',{extend:'designer.properties.Panel',autoLoadData:false,initComponent:function(){this.sourceConfig=Ext.apply({'options':{editor:Ext.create('Ext.form.field.Text',{listeners:{focus:{fn:this.showOptionsWindow,scope:this}}}),renderer:function(v){return'...';}}},this.sourceConfig);this.callParent();},showOptionsWindow:function(){var source=this.dataGrid.getSource();var result=[];var data=[];if(source.options.length){data=Ext.JSON.decode(source.options);} +var win=Ext.create('designer.paramsWindow',{title:property,initialData:data});win.on('dataChanged',function(value){me.dataGrid.setProperty(property,value);},me);Ext.defer(function(){win.show().toFront();},50);},destroy:function(){this.dataGrid.getStore().destroy();this.dataGrid.destroy();this.searchPanel.destroy();if(this.methodsPanel){this.methodsPanel.destroy();} +if(this.eventsPanel){this.eventsPanel.destroy();} +Ext.Object.each(this.sourceConfig,function(index,item){if(item.editor&&item.editor.destroy){if(item.getStore){item.getStore().destroy();} +item.editor.destroy();}});this.callParent(arguments)}});Ext.define('designer.properties.Grid',{extend:'designer.properties.Panel',layout:'accordion',advancedForm:null,initComponent:function(){var me=this;this.mainConfigTitle=desLang.properties;this.tbar=[{iconCls:'gridIcon',tooltip:desLang.columns,scope:me,handler:me.showColumnsWindow}];this.sourceConfig=Ext.apply({'columns':{editor:Ext.create('Ext.form.field.Text',{listeners:{focus:{fn:this.showColumnsWindow,scope:this}}}),renderer:function(v){return'...';}}});this.advancedForm=Ext.create('Ext.form.Panel',{bodyCls:'formBody',title:desLang.advancedOptions,defaults:{margin:'3 3 3 3'},fieldDefaults:{labelWidth:150},frame:true,border:false,scrollable:true,items:[{xtype:'fieldset',title:desLang.grouping,checkboxName:'grouping',checkboxToggle:true,collapsed:true,items:[{name:'groupsummary',fieldLabel:desLang.useGroupSummary,xtype:'checkbox',value:1,uncheckedValue:0},{name:'startCollapsed',fieldLabel:desLang.startCollapsed,xtype:'checkbox',value:1,uncheckedValue:0},{name:'hideGroupedHeader',fieldLabel:desLang.hideGroupedHeader,xtype:'checkbox',value:1,uncheckedValue:0},{name:'enableGroupingMenu',fieldLabel:desLang.enableGroupingMenu,xtype:'checkbox',value:1,uncheckedValue:0},{name:'groupHeaderTpl',fieldLabel:'groupHeaderTpl',xtype:'textfield',anchor:'100%'},{name:'remoteRoot',fieldLabel:'remoteRoot',xtype:'textfield',anchor:'100%'}]},{xtype:'fieldset',checkboxName:'editable',title:desLang.editable,checkboxToggle:true,collapsed:true,items:[{fieldLabel:desLang.clicksToEdit,name:'clicksToEdit',xtype:'numberfield',value:1,minValue:1,maxValue:2,width:190,allowDecimals:false}]},{xtype:'fieldset',checkboxName:'rowexpander',title:desLang.rowExpander,checkboxToggle:true,collapsed:true,items:[{fieldLabel:desLang.expanderRowBodyTpl,name:'expander_rowbodytpl',xtype:'textfield',anchor:'100%'}]},{name:'summary',fieldLabel:desLang.useSummary,margin:'0 0 0 15',xtype:'checkbox'},{fieldLabel:desLang.paging,name:'paging',margin:'0 0 0 15',xtype:'checkbox'},{name:'checkboxSelection',fieldLabel:desLang.checkboxSelection,xtype:'checkbox',margin:'0 0 0 15'},{name:'numberedRows',fieldLabel:desLang.numberedRows,xtype:'checkbox',margin:'0 0 0 15'}],buttons:[{text:desLang.save,handler:this.saveAdvancedProperties,scope:this}]});this.callParent();this.add(this.advancedForm);this.advancedForm.load({url:app.createUrl([designer.controllerUrl,'grid','loadadvanced']),params:{object:this.objectName}});},showFiltersWindow:function(){Ext.create('designer.grid.filters.Window',{objectName:this.objectName,storeName:this.dataGrid.getSource().store,listeners:{dataSaved:{fn:function(){this.fireEvent('dataSaved');},scope:this}}}).show();},showColumnsWindow:function(){var win=Ext.create('designer.grid.column.Window',{title:desLang.gridColumnsConfig,objectName:this.objectName,storeName:this.dataGrid.getSource().store});win.show();},saveAdvancedProperties:function(){var handle=this;this.advancedForm.getForm().submit({clientValidation:true,waitMsg:appLang.SAVING,method:'post',url:app.createUrl([designer.controllerUrl,'grid','setadvanced']),params:{object:this.objectName},success:function(form,action){if(!action.result.success){Ext.Msg.alert(appLang.MESSAGE,action.result.msg);}else{handle.fireEvent('dataSaved');}},failure:app.formFailure});},destroy:function(){this.advancedForm.destroy();this.callParent(arguments);}});Ext.define('designer.properties.GridColumn',{extend:'designer.properties.Panel',autoLoadData:false,initComponent:function(){var me=this;this.renderersStore=Ext.create('Ext.data.Store',{model:'app.comboStringModel',proxy:{type:'ajax',url:this.controllerUrl+'renderers',reader:{type:'json',rootProperty:'data',idProperty:'id'},extraParams:{object:this.objectName},simpleSortMode:true},remoteSort:false,autoLoad:true,sorters:[{property:'title',direction:'DESC'}]});var summaryEditor=Ext.create('Ext.form.field.ComboBox',{typeAhead:true,triggerAction:'all',selectOnTab:true,labelWidth:80,forceSelection:true,queryMode:'local',displayField:'title',valueField:'id',store:this.renderersStore});this.sourceConfig=Ext.apply({'summaryType':{editor:Ext.create('Ext.form.field.ComboBox',{typeAhead:true,triggerAction:'all',selectOnTab:true,labelWidth:80,forceSelection:true,queryMode:'local',store:[['count','count'],['sum','sum'],['min','min'],['max','max'],['average','average']]}),renderer:function(v){if(Ext.isEmpty(v)){return'...';}else{return v;}}},'summaryRenderer':{editor:summaryEditor,renderer:app.comboBoxRenderer(summaryEditor)},'renderer':{editor:Ext.create('Ext.form.field.Text',{listeners:{focus:{fn:me.showRendererWindow,scope:me}}}),renderer:function(v){return'...';}},'items':{editor:Ext.create('Ext.form.field.Text',{listeners:{focus:{fn:me.showItemsWindow,scope:me}}}),renderer:function(v){return'...';}},'filter':{editor:Ext.create('Ext.form.field.Text',{listeners:{focus:{fn:me.showFilterWindow,scope:me}}}),renderer:function(v){return'...';}}},this.sourceConfig);this.callParent();},showRendererWindow:function(){var win=Ext.create('designer.grid.column.RendererWindow',{title:desLang.renderer,modal:true,objectName:this.objectName,columnId:this.extraParams.id,controllerUrl:this.controllerUrl});Ext.defer(function(){win.show().toFront();},50);},showItemsWindow:function() +{var win=Ext.create('designer.grid.column.ActionsWindow',{title:desLang.items,objectName:this.objectName,columnId:this.extraParams.id,controllerUrl:this.controllerUrl});Ext.defer(function(){win.show().toFront();},50);},showFilterWindow:function(){var win=Ext.create('designer.grid.column.FilterWindow',{title:desLang.filter,objectName:this.objectName,columnId:this.extraParams.id,controllerUrl:this.controllerUrl});Ext.defer(function(){win.show().toFront();},50);},destroy:function(){this.renderersStore.destroy();this.callParent(arguments);}});Ext.define('designer.properties.GridFilter',{extend:'designer.properties.Panel',autoLoadData:false,initComponent:function(){this.sourceConfig=Ext.apply({'options':{editor:Ext.create('Ext.form.field.Text',{listeners:{focus:{fn:this.showOptionsWindow,scope:this}}}),renderer:function(v){return'...';}}},this.sourceConfig);this.callParent();},showOptionsWindow:function(){var source=this.dataGrid.getSource();var result=[];var data=[];if(source.options.length){data=Ext.JSON.decode(source.options);} if(!Ext.isEmpty(data)){Ext.each(data,function(record,index){result.push({value:record});});} var win=Ext.create('designer.grid.filterOptionsWindow',{objectName:this.objectName,controllerUrl:this.controllerUrl,initialData:result});win.on('dataChanged',this.dataGrid.setProperty,this.dataGrid);win.show();}});Ext.define('designer.properties.dataField',{extend:'designer.properties.Panel',fieldtypes:[['boolean'],['integer'],['float'],['string'],['date']],directions:[['ASC'],['DESC']],initComponent:function() {this.sourceConfig=Ext.apply({'type':{editor:Ext.create('Ext.form.ComboBox',{selectOnFocus:true,typeAhead:true,editable:true,triggerAction:'all',anchor:'100%',queryMode:'local',forceSelection:true,store:Ext.create('Ext.data.ArrayStore',{fields:['id'],data:this.fieldtypes}),valueField:'id',displayField:'id',allowBlank:true})},'sortDir':{editor:Ext.create('Ext.form.ComboBox',{selectOnFocus:true,typeAhead:true,editable:true,triggerAction:'all',anchor:'100%',queryMode:'local',forceSelection:true,store:Ext.create('Ext.data.ArrayStore',{fields:['id'],data:this.directions}),valueField:'id',displayField:'id',allowBlank:true})}});this.callParent();}});Ext.define('designer.properties.Store',{extend:'designer.properties.Panel',initComponent:function() @@ -145,7 +149,7 @@ if(source.validators.length){validators=Ext.JSON.decode(source.validators);} var win=Ext.create('designer.model.configWindow',{objectName:this.objectName,controllerUrl:this.controllerUrl,activeTab:activeTab,initFields:fields,initAssociations:associations,initValidators:validators});win.on('dataChanged',function(fields,associations,validators){this.dataGrid.setProperty('associations',associations,true);this.dataGrid.setProperty('validators',validators,true);},this);win.show();}});Ext.define('designer.properties.FieldTypeWindow',{extend:'Ext.Window',objectName:'',width:300,height:150,resizable:false,modal:true,setupForm:null,layout:'fit',controllerUrl:'',title:desLang.changeFieldType,constructor:function(){this.extraParams={};this.callParent(arguments);},initComponent:function(){this.setupForm=Ext.create('Ext.form.Panel',{region:'north',bodyCls:'formBody',border:false,autoHeight:true,fieldDefaults:{labelAlign:'left',anchor:'100%',labelWidth:150},defaults:{xtype:'textfield',margin:'3 3 3 3 '},items:[{fieldLabel:desLang.Type,xtype:'combobox',typeAhead:true,triggerAction:'all',selectOnTab:true,fieldLabel:desLang.type,labelWidth:80,name:'type',forceSelection:true,store:[['Form_Field_Checkbox','Checkbox'],['Form_Field_Combobox','Combobox'],['Form_Field_File','File'],['Form_Field_Hidden','Hidden'],['Form_Field_Htmleditor','Htmleditor'],['Form_Field_Number','Number'],['Form_Field_Radio','Radio'],['Form_Field_Text','Text'],['Form_Field_Textarea','Textarea'],['Form_Field_Time','Time'],['Form_Field_Date','Date'],['Form_Fieldset','Fieldset'],['Form_Field_Display','Display'],['Form_Fieldcontainer','Fieldcontainer'],['Form_Checkboxgroup','CheckboxGroup'],['Form_Radiogroup','Radiogroup'],['Form_Field_Adapter','Adapter']],listeners:{select:function(field,value,options){this.onTypeSelected(field.getValue());},scope:this}},{hidden:true,name:'adapter',xtype:'combobox',typeAhead:true,triggerAction:'all',selectOnTab:true,fieldLabel:desLang.adapter,labelWidth:80,matchFieldWidth:false,forceSelection:true,valueField:'id',displayField:'title',qyeryMode:'local',store:Ext.create('Ext.data.Store',{model:'app.comboStringModel',proxy:{type:'ajax',url:this.controllerUrl+'listadapters',reader:{type:'json',rootProperty:'data',idProperty:'id'},simpleSortMode:true},remoteSort:false,autoLoad:true,sorters:[{property:'title',direction:'DESC'}]}),listeners:{select:function(field,value,options){this.onAdapterSelected(field.getValue());},scope:this}},{hidden:true,name:'dictionary',xtype:'combobox',typeAhead:true,triggerAction:'all',selectOnTab:true,fieldLabel:desLang.dictionary,labelWidth:80,forceSelection:true,valueField:'id',displayField:'title',qyeryMode:'local',store:Ext.create('Ext.data.Store',{model:'app.comboStringModel',proxy:{type:'ajax',url:this.controllerUrl+'listdictionaries',reader:{type:'json',rootProperty:'data',idProperty:'id'},simpleSortMode:true},remoteSort:false,autoLoad:true,sorters:[{property:'title',direction:'DESC'}]})}]});this.items=[this.setupForm];this.buttons=[{text:desLang.save,scope:this,handler:this.saveType},{text:desLang.close,scope:this,handler:this.close}];this.callParent();},onTypeSelected:function(type){var form=this.setupForm.getForm();if(type=='Form_Field_Adapter'){form.findField('adapter').show();}else{form.findField('adapter').hide();form.findField('dictionary').hide();}},onAdapterSelected:function(adapter){var form=this.setupForm.getForm();if(adapter=='Ext_Component_Field_System_Dictionary'){form.findField('dictionary').show();}else{form.findField('dictionary').hide();}},saveType:function(){var type=this.setupForm.getForm().findField('type').getValue();if(type==='Form_Field_Adapter'){var adapter=this.setupForm.getForm().findField('adapter').getValue();if(!adapter){Ext.Msg.alert(appLang.MESSAGE,desLang.selectAdapter);return;} if(adapter==='Ext_Component_Field_System_Dictionary') {var dictionary=this.setupForm.getForm().findField('dictionary').getValue();if(!dictionary){Ext.Msg.alert(appLang.MESSAGE,desLang.selectDictionary);return;}}} -var me=this;var params=Ext.apply(this.extraParams,{'object':this.objectName});this.setupForm.getForm().submit({clientValidation:true,waitMsg:appLang.SAVING,method:'post',url:this.controllerUrl+'changetype',params:params,success:function(form,action){if(!action.result.success){Ext.Msg.alert(appLang.MESSAGE,action.result.msg);}else{me.fireEvent('objectsUpdated');me.close();}},failure:app.formFailure});}});Ext.define('designer.properties.Field',{extend:'designer.properties.Panel',constructor:function(){this.tbar=[];this.callParent(arguments);},initComponent:function() +var me=this;var params=Ext.apply(this.extraParams,{'object':this.objectName});this.setupForm.getForm().submit({clientValidation:true,waitMsg:appLang.SAVING,method:'post',url:this.controllerUrl+'changetype',params:params,success:function(form,action){if(!action.result.success){Ext.Msg.alert(appLang.MESSAGE,action.result.msg);}else{me.fireEvent('objectsUpdated');me.close();}},failure:app.formFailure});},destroy:function(){this.setupForm.destroy();this.callParent(arguments);}});Ext.define('designer.properties.Field',{extend:'designer.properties.Panel',constructor:function(){this.tbar=[];this.callParent(arguments);},initComponent:function() {this.tbar.push({text:desLang.changeFieldType,scope:this,handler:this.selectType});this.callParent();},selectType:function(){Ext.create('designer.properties.FieldTypeWindow',{objectName:this.objectName,controllerUrl:this.controllerUrl,extraParams:this.extraParams,listeners:{'objectsUpdated':{fn:function(){this.fireEvent('objectsUpdated');this.loadProperties();},scope:this}}}).show();}});Ext.define('designer.properties.Window',{extend:'designer.properties.Panel',initComponent:function() {if(!this.tbar){this.tbar=[];} this.tbar.push({icon:app.wwwRoot+'i/system/designer/window-open.png',text:desLang.showWindow,scope:this,handler:this.showWindow});this.callParent();},showWindow:function(){app.designer.switchView(0);app.designer.sendCommand({command:'showWindow',params:{name:this.objectName}});}});Ext.define('designer.properties.CrudWindow',{extend:'designer.properties.Window',initComponent:function() @@ -153,7 +157,7 @@ this.tbar.push({icon:app.wwwRoot+'i/system/designer/window-open.png',text:desLan this.tbar.push({iconCls:'importOrmIcon',tooltip:desLang.importOrm,scope:this,handler:this.showImportFromOrm});this.callParent();},showImportFromOrm:function(){this.importWindow=Ext.create('designer.ormSelectorWindow',{listeners:{select:{fn:this.importFields,scope:this}}});this.importWindow.show();},importFields:function(object,fields){this.importWindow.close();Ext.Ajax.request({url:app.createUrl([designer.controllerUrl,'crudwindow','importfields']),method:'post',scope:this,params:{'object':this.objectName,'importobject':object,'importfields[]':fields},success:function(response,request){response=Ext.JSON.decode(response.responseText);if(response.success){this.application.onChange();}else{Ext.Msg.alert(appLang.MESSAGE,response.msg);}},failure:function(){Ext.Msg.alert(appLang.MESSAGE,appLang.MSG_LOST_CONNECTION);}});}});Ext.define('designer.properties.Form',{extend:'designer.properties.Panel',importWindow:null,initComponent:function() {this.tbar=[{iconCls:'importOrmIcon',tooltip:desLang.importOrm,scope:this,handler:this.showImportFromOrm},{iconCls:'importDbIcon',tooltip:desLang.importDb,scope:this,handler:this.showImportFromDb}];this.callParent();},showImportFromOrm:function(){this.importWindow=Ext.create('designer.ormSelectorWindow',{listeners:{select:{fn:this.importFields,scope:this}}});this.importWindow.show();},showImportFromDb:function(){this.importWindow=Ext.create('designer.importDBWindow',{listeners:{select:{fn:this.importDbFields,scope:this}}});this.importWindow.show();},importFields:function(object,fields){this.importWindow.close();Ext.Ajax.request({url:app.createUrl([designer.controllerUrl,'form','importfields']),method:'post',scope:this,params:{'object':this.objectName,'importobject':object,'importfields[]':fields},success:function(response,request){response=Ext.JSON.decode(response.responseText);if(response.success){this.fireEvent('objectsUpdated');}else{Ext.Msg.alert(appLang.MESSAGE,response.msg);}},failure:function(){Ext.Msg.alert(appLang.MESSAGE,appLang.MSG_LOST_CONNECTION);}});},importDbFields:function(fields,connection,table,contype){this.importWindow.close();Ext.Ajax.request({url:app.createUrl([designer.controllerUrl,'form','importdbfields']),method:'post',scope:this,params:{'object':this.objectName,'connection':connection,'table':table,'type':contype,'importfields[]':fields},success:function(response,request){response=Ext.JSON.decode(response.responseText);if(response.success){this.fireEvent('objectsUpdated');}else{Ext.Msg.alert(appLang.MESSAGE,response.msg);}},failure:function(){Ext.Msg.alert(appLang.MESSAGE,appLang.MSG_LOST_CONNECTION);}});}});Ext.define('designer.properties.GridEditor',{extend:'designer.properties.Field',columnName:null,initComponent:function(){this.tbar.push({text:desLang.removeEditor,scope:this,handler:this.removeEditor,iconCls:'deleteIcon'});this.setExtraParams({column:this.columnName});this.callParent(arguments);},removeEditor:function() {Ext.Ajax.request({url:this.controllerUrl+'remove',method:'post',scope:this,params:this.extraParams,success:function(response,request){response=Ext.JSON.decode(response.responseText);if(response.success){this.dataGrid.setSource({});this.fireEvent('editorRemoved',response);}else{Ext.Msg.alert(appLang.MESSAGE,response.msg);}},failure:function(){Ext.Msg.alert(appLang.MESSAGE,appLang.MSG_LOST_CONNECTION);}});this.fireEvent('editorRemoved');}});Ext.define('designer.properties.FilterComponent',{extend:'designer.properties.Panel',layout:'accordion',fieldProperties:null,initComponent:function() -{this.eventsControllerUrl=app.createUrl([designer.controllerUrl,'filterEvents','']);this.mainConfigTitle=desLang.properties;this.fieldsStore=Ext.create('Ext.data.Store',{model:'app.comboStringModel',proxy:{type:'ajax',url:this.controllerUrl+'storefields',reader:{type:'json',rootProperty:'data',idProperty:'id'},extraParams:{object:this.objectName},simpleSortMode:true},remoteSort:false,autoLoad:true,sorters:[{property:'id',direction:'ASC'}]});this.sourceConfig=Ext.apply({'storeField':{editor:Ext.create('Ext.form.ComboBox',{selectOnFocus:true,editable:true,triggerAction:'all',anchor:'100%',queryMode:'remote',store:this.fieldsStore,valueField:'id',displayField:'id',allowBlank:true,forceSelection:false})},'type':{editor:Ext.create('Ext.form.field.ComboBox',{typeAhead:true,triggerAction:'all',selectOnTab:true,labelWidth:80,forceSelection:true,queryMode:'local',store:[['Component',desLang.component],['Field',desLang.field]]})}});var me=this;this.callParent();this.fieldProperties=Ext.create('designer.properties.Field',{title:desLang.advancedOptions,controllerUrl:app.createUrl([designer.controllerUrl,'filter','']),objectName:this.objectName,application:me,showEvents:false});this.fieldProperties.on('dataSaved',function(){this.fireEvent('dataSaved');},this);this.fieldProperties.on('objectsUpdated',function(){this.fireEvent('objectsUpdated');},this);this.add(this.fieldProperties);}});Ext.define('designer.properties.Search',{extend:'designer.properties.Field',initComponent:function() +{this.eventsControllerUrl=app.createUrl([designer.controllerUrl,'filterEvents','']);this.mainConfigTitle=desLang.properties;this.fieldsStore=Ext.create('Ext.data.Store',{model:'app.comboStringModel',proxy:{type:'ajax',url:this.controllerUrl+'storefields',reader:{type:'json',rootProperty:'data',idProperty:'id'},extraParams:{object:this.objectName},simpleSortMode:true},remoteSort:false,autoLoad:true,sorters:[{property:'id',direction:'ASC'}]});this.sourceConfig=Ext.apply({'storeField':{editor:Ext.create('Ext.form.ComboBox',{selectOnFocus:true,editable:true,triggerAction:'all',anchor:'100%',queryMode:'remote',store:this.fieldsStore,valueField:'id',displayField:'id',allowBlank:true,forceSelection:false})},'type':{editor:Ext.create('Ext.form.field.ComboBox',{typeAhead:true,triggerAction:'all',selectOnTab:true,labelWidth:80,forceSelection:true,queryMode:'local',store:[['Component',desLang.component],['Field',desLang.field]]})}});var me=this;this.callParent();this.fieldProperties=Ext.create('designer.properties.Field',{title:desLang.advancedOptions,controllerUrl:app.createUrl([designer.controllerUrl,'filter','']),objectName:this.objectName,application:me,showEvents:false});this.fieldProperties.on('dataSaved',function(){this.fireEvent('dataSaved');},this);this.fieldProperties.on('objectsUpdated',function(){this.fireEvent('objectsUpdated');},this);this.add(this.fieldProperties);},destroy:function(){this.fieldsStore.destroy();this.fieldProperties.destroy();this.callParent(arguments);}});Ext.define('designer.properties.Search',{extend:'designer.properties.Field',initComponent:function() {var me=this;this.sourceConfig=Ext.apply({'fieldNames':{editor:Ext.create('Ext.form.field.Text',{listeners:{'focus':{fn:me.namesEdior,scope:me}}}),renderer:function(v){return'...';}}},this.sourceConfig);this.callParent();},namesEdior:function(){var storeProperty=this.dataGrid.getSource().store;var fieldsList=this.dataGrid.getSource().fieldNames;if(fieldsList.length){fieldsList=Ext.JSON.decode(fieldsList);}else{fieldsList=[];} if(!storeProperty.length){Ext.Msg.alert(appLang.MESSAGE,desLang.selectDataStore);return;} Ext.create('designer.properties.SearchFieldsWindow',{fieldsStore:storeProperty,initData:fieldsList,listeners:{dataChanged:{fn:function(data){this.dataGrid.setProperty('fieldNames',data);this.fireEvent('dataChanged');},scope:this}}}).show();}});Ext.define('designer.properties.SearchFieldsWindow',{extend:'Ext.Window',width:200,height:300,title:'fieldNames',initData:null,dataGrid:null,dataStore:null,fieldsStore:null,closeAction:'destroy',resizable:false,layout:'fit',storeName:'',initComponent:function(){if(Ext.isEmpty(this.initData)){this.initData=[];}else{var data=[];Ext.each(this.initData,function(item){data.push([item]);},this);this.initData=data;} diff --git a/www/js/app/system/designer/eventsPanel.js b/www/js/app/system/designer/eventsPanel.js index 1823fb53..ea1de36c 100644 --- a/www/js/app/system/designer/eventsPanel.js +++ b/www/js/app/system/designer/eventsPanel.js @@ -309,5 +309,9 @@ Ext.define('designer.eventsPanel',{ */ setSearchText:function(text){ this.searchField.setValue(text); + }, + destroy:function(){ + this.store.destroy(); + this.callParent(arguments); } }); \ No newline at end of file diff --git a/www/js/app/system/designer/methodsPanel.js b/www/js/app/system/designer/methodsPanel.js index 48fea327..23cc4623 100644 --- a/www/js/app/system/designer/methodsPanel.js +++ b/www/js/app/system/designer/methodsPanel.js @@ -18,7 +18,6 @@ Ext.define('designer.methodsPanel',{ objectName:'', controllerUrl:'', columnLines:true, - searchField:null, addButton:null, autoLoadData:true, extraParams:null, @@ -229,6 +228,11 @@ Ext.define('designer.methodsPanel',{ */ setSearchText:function(text){ this.searchField.setValue(text); - } + }, + destroy:function(){ + this.store.destroy(); + this.callParent(arguments); + } + }); diff --git a/www/js/app/system/designer/properties.js b/www/js/app/system/designer/properties.js index a645dcfd..21fd7e57 100644 --- a/www/js/app/system/designer/properties.js +++ b/www/js/app/system/designer/properties.js @@ -1,5 +1,21 @@ Ext.ns('designer.properties'); +Ext.define('designer.properties.idStringModel',{ + extend: 'Ext.data.Model', + idProperty:'id', + fields:[ + {name:'id', type:'string'} + ] +}); + +Ext.define('designer.properties.nameTitleModel',{ + extend: 'Ext.data.Model', + idProperty:'name', + fields:[ + {name:'name', type:'string'}, + {name:'title', type:'string'} + ] +}); /** * Properties editor base * @@ -79,6 +95,7 @@ Ext.define('designer.properties.Panel', { this.objectNames = {}; + this.sourceConfig = Ext.apply({ 'region': { @@ -89,7 +106,7 @@ Ext.define('designer.properties.Panel', { anchor: '100%', queryMode: 'local', store: Ext.create('Ext.data.ArrayStore', { - fields: ['id'], + model:'designer.properties.idStringModel', data: this.regionData }), valueField: 'id', @@ -107,7 +124,7 @@ Ext.define('designer.properties.Panel', { anchor: '100%', queryMode: 'local', store: Ext.create('Ext.data.ArrayStore', { - fields: ['id'], + model:'designer.properties.idStringModel', data: this.layoutData }), valueField: 'id', @@ -123,7 +140,7 @@ Ext.define('designer.properties.Panel', { anchor: '100%', queryMode: 'local', store: Ext.create('Ext.data.ArrayStore', { - fields: ['id'], + model:'designer.properties.idStringModel', data: this.dockData }), valueField: 'id', @@ -139,7 +156,7 @@ Ext.define('designer.properties.Panel', { anchor: '100%', queryMode: 'local', store: Ext.create('Ext.data.ArrayStore', { - fields: ['id'], + model:'designer.properties.idStringModel', data: this.alignData }), valueField: 'id', @@ -155,7 +172,7 @@ Ext.define('designer.properties.Panel', { anchor: '100%', queryMode: 'local', store: Ext.create('Ext.data.ArrayStore', { - fields: ['id'], + model:'designer.properties.idStringModel', data: this.alignData }), valueField: 'id', @@ -171,7 +188,7 @@ Ext.define('designer.properties.Panel', { anchor: '100%', queryMode: 'local', store: Ext.create('Ext.data.ArrayStore', { - fields: ['id'], + model:'designer.properties.idStringModel', data: this.labelAlignData }), valueField: 'id', @@ -187,7 +204,7 @@ Ext.define('designer.properties.Panel', { anchor: '100%', queryMode: 'local', store: Ext.create('Ext.data.ArrayStore', { - fields: ['id'], + model:'designer.properties.idStringModel', data: this.iconAlignData }), valueField: 'id', @@ -385,10 +402,7 @@ Ext.define('designer.properties.Panel', { rootProperty: 'data' } }, - fields: [ - {name: 'name', type: 'string'}, - {name: 'title', type: 'string'} - ], + model:'designer.properties.nameTitleModel', autoLoad: true, listeners: { scope: me, @@ -784,5 +798,25 @@ Ext.define('designer.properties.Panel', { Ext.defer(function () { win.show().toFront(); }, 50); + }, + destroy:function(){ + this.dataGrid.getStore().destroy(); + this.dataGrid.destroy(); + this.searchPanel.destroy(); + if(this.methodsPanel){ + this.methodsPanel.destroy(); + } + if(this.eventsPanel){ + this.eventsPanel.destroy(); + } + Ext.Object.each(this.sourceConfig,function(index, item){ + if(item.editor && item.editor.destroy){ + if(item.getStore){ + item.getStore().destroy(); + } + item.editor.destroy(); + } + }); + this.callParent(arguments) } }); \ No newline at end of file diff --git a/www/js/app/system/designer/properties/column.js b/www/js/app/system/designer/properties/column.js index c3e3af97..62d65742 100644 --- a/www/js/app/system/designer/properties/column.js +++ b/www/js/app/system/designer/properties/column.js @@ -34,7 +34,7 @@ Ext.define('designer.properties.GridColumn',{ }] }); - var summaryEditor = Ext.create('Ext.form.field.ComboBox',{ + var summaryEditor = Ext.create('Ext.form.field.ComboBox',{ typeAhead: true, triggerAction: 'all', selectOnTab: true, @@ -146,5 +146,9 @@ Ext.define('designer.properties.GridColumn',{ Ext.defer(function () { win.show().toFront(); }, 50); + }, + destroy:function(){ + this.renderersStore.destroy(); + this.callParent(arguments); } }); diff --git a/www/js/app/system/designer/properties/field.js b/www/js/app/system/designer/properties/field.js index 288805fb..15cbec3f 100644 --- a/www/js/app/system/designer/properties/field.js +++ b/www/js/app/system/designer/properties/field.js @@ -223,7 +223,11 @@ Ext.define('designer.properties.FieldTypeWindow',{ }, failure: app.formFailure }); - } + }, + destroy:function(){ + this.setupForm.destroy(); + this.callParent(arguments); + } }); diff --git a/www/js/app/system/designer/properties/filterComponent.js b/www/js/app/system/designer/properties/filterComponent.js index 683d9bf8..8eb1e2b9 100644 --- a/www/js/app/system/designer/properties/filterComponent.js +++ b/www/js/app/system/designer/properties/filterComponent.js @@ -92,5 +92,10 @@ Ext.define('designer.properties.FilterComponent',{ },this); this.add(this.fieldProperties); - } + }, + destroy:function(){ + this.fieldsStore.destroy(); + this.fieldProperties.destroy(); + this.callParent(arguments); + } }); diff --git a/www/js/app/system/designer/properties/grid.js b/www/js/app/system/designer/properties/grid.js index 5acd93fc..f0153fc9 100644 --- a/www/js/app/system/designer/properties/grid.js +++ b/www/js/app/system/designer/properties/grid.js @@ -209,5 +209,9 @@ Ext.define('designer.properties.Grid',{ }, failure: app.formFailure }); - } + }, + destroy:function(){ + this.advancedForm.destroy(); + this.callParent(arguments); + } }); \ No newline at end of file From bdd4015dad9493621d2ffe3b547f76a6364ca239 Mon Sep 17 00:00:00 2001 From: Kirill Date: Fri, 15 Sep 2017 17:28:01 +0300 Subject: [PATCH 13/20] Object Renderer fix leak --- dvelum/library/Ext/Object.php | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/dvelum/library/Ext/Object.php b/dvelum/library/Ext/Object.php index 5e00f3ea..05be7dbe 100644 --- a/dvelum/library/Ext/Object.php +++ b/dvelum/library/Ext/Object.php @@ -248,6 +248,17 @@ public function getDefineJs($namespace = false) "\t".'},'."\n"; } + if(!isset($this->_methods['destroy'])){ + $code .= "\t".'destroy:function(){'."\n". + "\t\t".'Ext.Object.each(this.childObjects,function(index, item){'."\n". + "\t\t".' if(item.destroy){'."\n". + "\t\t".' item.destroy();'."\n". + "\t\t".' }'."\n". + "\t\t".' });'."\n". + "\t\t".'this.callParent(arguments);'."\n". + "\t".'},'."\n"; + } + $code .="\t".'addDesignerItems:function(){'."\n". "\t\t".'var me = this;'."\n"; From 4f9829a65ccf7d8263a4397715b741eb5125a5ff Mon Sep 17 00:00:00 2001 From: k-samuel Date: Fri, 15 Sep 2017 23:19:20 +0300 Subject: [PATCH 14/20] Edit window updates --- www/js/app/system/ContentWindow.js | 27 ++++++++++++++++++++++++++- www/js/app/system/EditWindow.js | 26 +++++++++++++++++++++++++- 2 files changed, 51 insertions(+), 2 deletions(-) diff --git a/www/js/app/system/ContentWindow.js b/www/js/app/system/ContentWindow.js index a777e5a3..49f78a07 100644 --- a/www/js/app/system/ContentWindow.js +++ b/www/js/app/system/ContentWindow.js @@ -675,5 +675,30 @@ Ext.define('app.contentWindow',{ */ setExtraParam:function(name , value){ this.extraParams[name] = value; - } + }, + destroy:function(){ + this.rightPanel = null; + var toDestroy = [ + this.rightPanel, + this.eastPanel, + this.historyPanel, + this.revisionPanel, + this.contentPanel, + this.contentTabs + ]; + + Ext.Array.each(toDestroy, function (item) { + if(item && item.destroy){ + item.destroy(); + } + }); + + Ext.Array.each(this.linkedComponents,function(item){ + if(item.destroy){ + item.destroy(); + } + }); + toDestroy = null; + this.callParent(arguments); + } }); \ No newline at end of file diff --git a/www/js/app/system/EditWindow.js b/www/js/app/system/EditWindow.js index ad5fc603..2f2d6324 100644 --- a/www/js/app/system/EditWindow.js +++ b/www/js/app/system/EditWindow.js @@ -446,5 +446,29 @@ Ext.define('app.editWindow',{ */ setExtraParam:function(name , value){ this.extraParams[name] = value; - } + }, + destroy:function(){ + var toDestroy = [ + this.rightPanel, + this.eastPanel, + this.historyPanel, + this.contentTabs, + this.contentPanel + ]; + + Ext.Array.each(toDestroy, function (item) { + if(item && item.destroy){ + item.destroy(); + } + }); + + Ext.Array.each(this.linkedComponents,function(item){ + if(item.destroy){ + item.destroy(); + } + }); + + toDestroy = null; + this.callParent(arguments); + } }); \ No newline at end of file From 152301d052bf0ccfa368919d661cbc3a8e67dcf3 Mon Sep 17 00:00:00 2001 From: k-samuel Date: Sat, 16 Sep 2017 23:06:33 +0300 Subject: [PATCH 15/20] Designer Properties Panel update --- www/js/app/system/Designer.js | 2 +- www/js/app/system/designer/properties.js | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/www/js/app/system/Designer.js b/www/js/app/system/Designer.js index 1e6b958b..a09ce19d 100644 --- a/www/js/app/system/Designer.js +++ b/www/js/app/system/Designer.js @@ -128,7 +128,7 @@ var params=Ext.apply({name:recordId,value:value},this.extraParams);Ext.Ajax.requ Ext.Msg.alert(appLang.MESSAGE,desLang.cantSaveProperty+' "'+recordId+'".'+msg);}else{this.fireEvent('dataSaved',recordId,value);designer.msg(desLang.msg,desLang.msg_propertySaved);}},failure:function(){Ext.Msg.alert(appLang.MESSAGE,appLang.MSG_LOST_CONNECTION);}});},resetSerchField:function(){this.searchPanel.searchField.reset();},showCode:function(){Ext.Ajax.request({url:app.createUrl([designer.controllerUrl,'code','objectcode']),method:'post',scope:this,params:{object:this.objectName},success:function(response){response=Ext.JSON.decode(response.responseText);if(!response.success){Ext.Msg.alert(appLang.MESSAGE,response.msg);return;} var editor=Ext.create('designer.codeEditor',{sourceCode:response.data,readOnly:true});Ext.create('Ext.Window',{title:desLang.sourceCodeFor+' "'+this.objectName+'"',layout:'fit',width:750,height:600,modal:true,maximizable:true,items:[editor]}).show();},failure:function(){Ext.Msg.alert(appLang.MESSAGE,appLang.MSG_LOST_CONNECTION);}});},showDefaultsWindow:function(property){var me=this;var source=this.dataGrid.getSource();var data=[];if(!Ext.isEmpty(source[property])){var tmp=Ext.JSON.decode(source[property]);for(var i in tmp){if(typeof tmp[i]!='function'){data.push({'key':i,'value':tmp[i]});}}} var win=Ext.create('designer.defaultsWindow',{title:property,initialData:data});win.on('dataChanged',function(value){me.dataGrid.setProperty(property,value);},me);Ext.defer(function(){win.show().toFront();},50);},showParamsWindow:function(property){var me=this;var source=this.dataGrid.getSource();var data=[];if(!Ext.isEmpty(source[property])){var tmp=Ext.JSON.decode(source[property]);for(var i in tmp){if(typeof tmp[i]!='function'){data.push({'key':i,'value':tmp[i]});}}} -var win=Ext.create('designer.paramsWindow',{title:property,initialData:data});win.on('dataChanged',function(value){me.dataGrid.setProperty(property,value);},me);Ext.defer(function(){win.show().toFront();},50);},destroy:function(){this.dataGrid.getStore().destroy();this.dataGrid.destroy();this.searchPanel.destroy();if(this.methodsPanel){this.methodsPanel.destroy();} +var win=Ext.create('designer.paramsWindow',{title:property,initialData:data});win.on('dataChanged',function(value){me.dataGrid.setProperty(property,value);},me);Ext.defer(function(){win.show().toFront();},50);},destroy:function(){this.dataGrid.destroy();this.searchPanel.destroy();if(this.methodsPanel){this.methodsPanel.destroy();} if(this.eventsPanel){this.eventsPanel.destroy();} Ext.Object.each(this.sourceConfig,function(index,item){if(item.editor&&item.editor.destroy){if(item.getStore){item.getStore().destroy();} item.editor.destroy();}});this.callParent(arguments)}});Ext.define('designer.properties.Grid',{extend:'designer.properties.Panel',layout:'accordion',advancedForm:null,initComponent:function(){var me=this;this.mainConfigTitle=desLang.properties;this.tbar=[{iconCls:'gridIcon',tooltip:desLang.columns,scope:me,handler:me.showColumnsWindow}];this.sourceConfig=Ext.apply({'columns':{editor:Ext.create('Ext.form.field.Text',{listeners:{focus:{fn:this.showColumnsWindow,scope:this}}}),renderer:function(v){return'...';}}});this.advancedForm=Ext.create('Ext.form.Panel',{bodyCls:'formBody',title:desLang.advancedOptions,defaults:{margin:'3 3 3 3'},fieldDefaults:{labelWidth:150},frame:true,border:false,scrollable:true,items:[{xtype:'fieldset',title:desLang.grouping,checkboxName:'grouping',checkboxToggle:true,collapsed:true,items:[{name:'groupsummary',fieldLabel:desLang.useGroupSummary,xtype:'checkbox',value:1,uncheckedValue:0},{name:'startCollapsed',fieldLabel:desLang.startCollapsed,xtype:'checkbox',value:1,uncheckedValue:0},{name:'hideGroupedHeader',fieldLabel:desLang.hideGroupedHeader,xtype:'checkbox',value:1,uncheckedValue:0},{name:'enableGroupingMenu',fieldLabel:desLang.enableGroupingMenu,xtype:'checkbox',value:1,uncheckedValue:0},{name:'groupHeaderTpl',fieldLabel:'groupHeaderTpl',xtype:'textfield',anchor:'100%'},{name:'remoteRoot',fieldLabel:'remoteRoot',xtype:'textfield',anchor:'100%'}]},{xtype:'fieldset',checkboxName:'editable',title:desLang.editable,checkboxToggle:true,collapsed:true,items:[{fieldLabel:desLang.clicksToEdit,name:'clicksToEdit',xtype:'numberfield',value:1,minValue:1,maxValue:2,width:190,allowDecimals:false}]},{xtype:'fieldset',checkboxName:'rowexpander',title:desLang.rowExpander,checkboxToggle:true,collapsed:true,items:[{fieldLabel:desLang.expanderRowBodyTpl,name:'expander_rowbodytpl',xtype:'textfield',anchor:'100%'}]},{name:'summary',fieldLabel:desLang.useSummary,margin:'0 0 0 15',xtype:'checkbox'},{fieldLabel:desLang.paging,name:'paging',margin:'0 0 0 15',xtype:'checkbox'},{name:'checkboxSelection',fieldLabel:desLang.checkboxSelection,xtype:'checkbox',margin:'0 0 0 15'},{name:'numberedRows',fieldLabel:desLang.numberedRows,xtype:'checkbox',margin:'0 0 0 15'}],buttons:[{text:desLang.save,handler:this.saveAdvancedProperties,scope:this}]});this.callParent();this.add(this.advancedForm);this.advancedForm.load({url:app.createUrl([designer.controllerUrl,'grid','loadadvanced']),params:{object:this.objectName}});},showFiltersWindow:function(){Ext.create('designer.grid.filters.Window',{objectName:this.objectName,storeName:this.dataGrid.getSource().store,listeners:{dataSaved:{fn:function(){this.fireEvent('dataSaved');},scope:this}}}).show();},showColumnsWindow:function(){var win=Ext.create('designer.grid.column.Window',{title:desLang.gridColumnsConfig,objectName:this.objectName,storeName:this.dataGrid.getSource().store});win.show();},saveAdvancedProperties:function(){var handle=this;this.advancedForm.getForm().submit({clientValidation:true,waitMsg:appLang.SAVING,method:'post',url:app.createUrl([designer.controllerUrl,'grid','setadvanced']),params:{object:this.objectName},success:function(form,action){if(!action.result.success){Ext.Msg.alert(appLang.MESSAGE,action.result.msg);}else{handle.fireEvent('dataSaved');}},failure:app.formFailure});},destroy:function(){this.advancedForm.destroy();this.callParent(arguments);}});Ext.define('designer.properties.GridColumn',{extend:'designer.properties.Panel',autoLoadData:false,initComponent:function(){var me=this;this.renderersStore=Ext.create('Ext.data.Store',{model:'app.comboStringModel',proxy:{type:'ajax',url:this.controllerUrl+'renderers',reader:{type:'json',rootProperty:'data',idProperty:'id'},extraParams:{object:this.objectName},simpleSortMode:true},remoteSort:false,autoLoad:true,sorters:[{property:'title',direction:'DESC'}]});var summaryEditor=Ext.create('Ext.form.field.ComboBox',{typeAhead:true,triggerAction:'all',selectOnTab:true,labelWidth:80,forceSelection:true,queryMode:'local',displayField:'title',valueField:'id',store:this.renderersStore});this.sourceConfig=Ext.apply({'summaryType':{editor:Ext.create('Ext.form.field.ComboBox',{typeAhead:true,triggerAction:'all',selectOnTab:true,labelWidth:80,forceSelection:true,queryMode:'local',store:[['count','count'],['sum','sum'],['min','min'],['max','max'],['average','average']]}),renderer:function(v){if(Ext.isEmpty(v)){return'...';}else{return v;}}},'summaryRenderer':{editor:summaryEditor,renderer:app.comboBoxRenderer(summaryEditor)},'renderer':{editor:Ext.create('Ext.form.field.Text',{listeners:{focus:{fn:me.showRendererWindow,scope:me}}}),renderer:function(v){return'...';}},'items':{editor:Ext.create('Ext.form.field.Text',{listeners:{focus:{fn:me.showItemsWindow,scope:me}}}),renderer:function(v){return'...';}},'filter':{editor:Ext.create('Ext.form.field.Text',{listeners:{focus:{fn:me.showFilterWindow,scope:me}}}),renderer:function(v){return'...';}}},this.sourceConfig);this.callParent();},showRendererWindow:function(){var win=Ext.create('designer.grid.column.RendererWindow',{title:desLang.renderer,modal:true,objectName:this.objectName,columnId:this.extraParams.id,controllerUrl:this.controllerUrl});Ext.defer(function(){win.show().toFront();},50);},showItemsWindow:function() diff --git a/www/js/app/system/designer/properties.js b/www/js/app/system/designer/properties.js index 21fd7e57..99952a8c 100644 --- a/www/js/app/system/designer/properties.js +++ b/www/js/app/system/designer/properties.js @@ -800,7 +800,6 @@ Ext.define('designer.properties.Panel', { }, 50); }, destroy:function(){ - this.dataGrid.getStore().destroy(); this.dataGrid.destroy(); this.searchPanel.destroy(); if(this.methodsPanel){ From 9524d27e4b45bab5e20684a840aa2607d12b781e Mon Sep 17 00:00:00 2001 From: k-samuel Date: Sun, 17 Sep 2017 09:51:48 +0300 Subject: [PATCH 16/20] Designer fix. Destroy response for destroyed panel --- www/js/app/system/Designer.js | 6 +++--- www/js/app/system/common.js | 6 ++++-- www/js/app/system/designer/methodsPanel.js | 2 +- www/js/app/system/designer/properties.js | 3 ++- 4 files changed, 10 insertions(+), 7 deletions(-) diff --git a/www/js/app/system/Designer.js b/www/js/app/system/Designer.js index a09ce19d..c1e83a04 100644 --- a/www/js/app/system/Designer.js +++ b/www/js/app/system/Designer.js @@ -70,7 +70,7 @@ this.extraParams['object']=this.objectName;this.store=Ext.create('Ext.data.Store var params=Ext.clone(this.extraParams);params['method']=methodName;var store=this.getStore();Ext.Ajax.request({url:this.controllerUrl+'addmethod',method:'post',scope:this,params:params,success:function(response,request){response=Ext.JSON.decode(response.responseText);if(!response.success){Ext.Msg.alert(appLang.MESSAGE,response.msg);return;} store.load({scope:this,callback:function(){var index=store.findExact('method',methodName);if(index!=-1){this.editMethod(store.getAt(index));}}});this.fireEvent('methodsUpdated');},failure:function(){Ext.Msg.alert(appLang.MESSAGE,appLang.MSG_LOST_CONNECTION);}});},this);},removeMethod:function(record){var params=Ext.clone(this.extraParams);params['method']=record.get('method');Ext.Ajax.request({url:this.controllerUrl+'removemethod',method:'post',scope:this,params:params,success:function(response,request){response=Ext.JSON.decode(response.responseText);if(!response.success){Ext.Msg.alert(appLang.MESSAGE,response.msg);return;} designer.msg(appLang.MESSAGE,desLang.msg_methodRemoved);this.getStore().remove(record);this.fireEvent('methodsUpdated');},failure:function(){Ext.Msg.alert(appLang.MESSAGE,appLang.MSG_LOST_CONNECTION);}});},editMethod:function(record) -{Ext.create('designer.methodEditorWindow',{controllerUrl:this.controllerUrl,objectName:this.objectName,methodName:record.get('method'),paramsString:record.get('params'),extraParams:this.extraParams,modal:true,listeners:{'codeSaved':{fn:function(){this.getStore().load();this.fireEvent('methodsUpdated');},scope:this}}}).show();},getSearchText:function(){return this.searchField.getValue();},setSearchText:function(text){this.searchField.setValue(text);},destroy:function(){this.store.destroy();this.callParent(arguments);}});Ext.define('designer.eventsEditorModel',{extend:'Ext.data.Model',fields:[{name:'id',type:'integer'},{name:'object',type:'string'},{name:'event',type:'string'},{name:'params',type:'string'},{name:'is_local',type:'boolean'}],idProperty:'id'});Ext.define('designer.eventsEditor',{extend:'Ext.grid.Panel',scrollable:true,controllerUrl:null,searchField:null,columnLines:true,viewConfig:{stripeRows:true,enableTextSelection:true},initComponent:function(){if(!this.controllerUrl.length){this.controllerUrl=app.createUrl([designer.controllerUrl,'events','']);} +{Ext.create('designer.methodEditorWindow',{controllerUrl:this.controllerUrl,objectName:this.objectName,methodName:record.get('method'),paramsString:record.get('params'),extraParams:this.extraParams,modal:true,listeners:{'codeSaved':{fn:function(){this.getStore().load();this.fireEvent('methodsUpdated');},scope:this}}}).show();},getSearchText:function(){return this.searchField.getValue();},setSearchText:function(text){this.searchField.setValue(text);},destroy:function(){this.searchField.destroy();this.store.destroy();this.callParent(arguments);}});Ext.define('designer.eventsEditorModel',{extend:'Ext.data.Model',fields:[{name:'id',type:'integer'},{name:'object',type:'string'},{name:'event',type:'string'},{name:'params',type:'string'},{name:'is_local',type:'boolean'}],idProperty:'id'});Ext.define('designer.eventsEditor',{extend:'Ext.grid.Panel',scrollable:true,controllerUrl:null,searchField:null,columnLines:true,viewConfig:{stripeRows:true,enableTextSelection:true},initComponent:function(){if(!this.controllerUrl.length){this.controllerUrl=app.createUrl([designer.controllerUrl,'events','']);} this.store=Ext.create('Ext.data.Store',{model:'designer.eventsEditorModel',proxy:{type:'ajax',url:this.controllerUrl+'list',reader:{type:'json',rootProperty:'data',idProperty:'id'},simpleSortMode:true},groupField:'object',remoteSort:false,autoLoad:false,sorters:[{property:'object',direction:'DESC'},{property:'event',direction:'DESC'}]});this.searchField=Ext.create('SearchPanel',{store:this.store,local:true,fieldNames:['object','event']});this.tbar=[{iconCls:'refreshIcon',tooltip:desLang.refresh,scope:this,handler:function(){this.store.load();}},this.searchField];this.columns=[{xtype:'actioncolumn',width:20,items:[{iconCls:'editIcon',handler:function(grid,rowIndex,colIndex){var rec=grid.getStore().getAt(rowIndex);this.editEvent(rec);},scope:this}]},{text:desLang.object,dataIndex:'object',width:150},{text:desLang.event,dataIndex:'event',width:150},{text:desLang.params,dataIndex:'params',flex:1},{xtype:'actioncolumn',width:20,items:[{iconCls:'deleteIcon',handler:function(grid,rowIndex,colIndex){var rec=grid.getStore().getAt(rowIndex);this.removeEvent(rec);},scope:this}]}];this.features=[Ext.create('Ext.grid.feature.Grouping',{groupHeaderTpl:'{name} ({rows.length})',startCollapsed:0,enableGroupingMenu:1,hideGroupedHeader:0})];this.on('itemdblclick',function(view,record,number,event,options){this.editEvent(record);},this);this.callParent();},removeEvent:function(record){Ext.Ajax.request({url:this.controllerUrl+'removeevent',method:'post',scope:this,params:{object:record.get('object'),event:record.get('event')},success:function(response,request){response=Ext.JSON.decode(response.responseText);if(!response.success){Ext.Msg.alert(appLang.MESSAGE,response.msg);return;} designer.msg(appLang.MESSAGE,desLang.msg_listenerRemoved);this.getStore().remove(record);this.getStore().commitChanges();this.fireEvent('eventsUpdated');},failure:function(){Ext.Msg.alert(appLang.MESSAGE,appLang.MSG_LOST_CONNECTION);}});},editEvent:function(record) {Ext.create('designer.eventsEditorWindow',{controllerUrl:this.controllerUrl,objectName:record.get('object'),eventName:record.get('event'),paramsString:record.get('params'),modal:false,listeners:{'codeSaved':{fn:function(){record.set('has_code',true);record.commit();this.fireEvent('eventsUpdated');},scope:this}}}).show();}});Ext.define('designer.eventsEditorWindow',{extend:'Ext.Window',modal:true,width:800,height:600,layout:{type:'vbox',align:'stretch',pack:'start'},autoRender:true,maximizable:true,extraParams:null,closeAction:'destroy',controllerUrl:'',objectName:'',eventName:'',paramsString:'',editor:null,loadedConfig:null,constructor:function(){this.extraParams={};this.callParent(arguments);},initComponent:function(){this.extraParams['object']=this.objectName;this.extraParams['event']=this.eventName;this.title=this.objectName+' on '+this.eventName;this.saveButton=Ext.create('Ext.Button',{disabled:true,text:desLang.save,scope:this,handler:this.saveEvent});this.cancelButton=Ext.create('Ext.Button',{text:desLang.close,scope:this,handler:this.close});this.buttons=[this.saveButton,this.cancelButton];this.dataForm=Ext.create('Ext.form.Panel',{bodyPadding:5,bodyCls:'formBody',border:false,bosyPadding:5,autoHeight:true,split:false,items:[{xtype:'fieldcontainer',layout:{type:'hbox',pack:'start',align:'stretch'},height:22,items:[{xtype:'textfield',name:'new_name',flex:1,fieldStyle:{border:'none',background:'none',backgroundColor:'#F4F4F4'}},{xtype:'displayfield',value:' : function( '},{xtype:'textfield',name:'params',flex:2,fieldStyle:{border:'none',background:'none',backgroundColor:'#F4F4F4',color:'#5C3BFB'}},{xtype:'displayfield',value:' )'}]}]});this.callParent();this.on('show',function(){this.loadCode();app.checkSize(this);Ext.WindowMgr.register(this);Ext.WindowMgr.bringToFront(this);},this);},loadCode:function(){var me=this;Ext.Ajax.request({url:this.controllerUrl+'eventcode',method:'post',scope:this,params:this.extraParams,success:function(response,request){response=Ext.JSON.decode(response.responseText);if(!response.success){Ext.Msg.alert(appLang.MESSAGE,response.msg);return;} @@ -119,7 +119,7 @@ Ext.Ajax.request({url:app.createUrl([designer.controllerUrl,'gridfilters','addfi Ext.Ajax.request({url:app.createUrl([designer.controllerUrl,'gridfilters','removefilter']),method:'post',params:{'id':record.get('id'),'object':this.objectName},scope:this,success:function(response,request){response=Ext.JSON.decode(response.responseText);if(response.success){grid.getStore().load();}else{Ext.Msg.alert(appLang.MESSAGE,response.msg);}},failure:function(){Ext.Msg.alert(appLang.MESSAGE,appLang.MSG_LOST_CONNECTION);}});},this);}});Ext.ns('designer.properties');Ext.define('designer.properties.idStringModel',{extend:'Ext.data.Model',idProperty:'id',fields:[{name:'id',type:'string'}]});Ext.define('designer.properties.nameTitleModel',{extend:'Ext.data.Model',idProperty:'name',fields:[{name:'name',type:'string'},{name:'title',type:'string'}]});Ext.define('designer.properties.Panel',{extend:'Ext.Panel',layout:'fit',border:false,searchPanel:null,dataStore:null,dataGrid:null,controllerUrl:'',scrollable:false,controllerUr:'',eventsControllerUrl:'',eventsPanel:null,methodsPanel:null,objectName:null,tabs:null,showEvents:true,showMethods:false,extraParams:null,alignData:[['left'],['center'],['right']],labelAlignData:[['left'],['top'],['right']],iconAlignData:[['top'],['right'],['bottom'],['left']],regionData:[['center'],['west'],['north'],['east'],['south']],layoutData:[['Auto'],['border'],['card'],['fit'],['hbox'],['vbox'],['anchor']],dockData:[['top'],['right'],['left'],['bottom']],mainConfigTitle:desLang.properties,autoLoadData:true,methodsSearch:false,useTabs:true,constructor:function(){this.extraParams={};this.sourceConfig={};this.callParent(arguments);},initComponent:function(){var me=this;this.extraParams.object=this.objectName;var storesStore=app.designer.getStoreSelector();var menuStore=app.designer.getMenuStore();this.objectNames={};this.sourceConfig=Ext.apply({'region':{editor:Ext.create('Ext.form.ComboBox',{selectOnFocus:true,editable:true,triggerAction:'all',anchor:'100%',queryMode:'local',store:Ext.create('Ext.data.ArrayStore',{model:'designer.properties.idStringModel',data:this.regionData}),valueField:'id',displayField:'id',allowBlank:true,forceSelection:false})},'layout':{editor:Ext.create('Ext.form.ComboBox',{selectOnFocus:true,editable:true,triggerAction:'all',anchor:'100%',queryMode:'local',store:Ext.create('Ext.data.ArrayStore',{model:'designer.properties.idStringModel',data:this.layoutData}),valueField:'id',displayField:'id',allowBlank:true})},'dock':{editor:Ext.create('Ext.form.ComboBox',{selectOnFocus:true,editable:true,triggerAction:'all',anchor:'100%',queryMode:'local',store:Ext.create('Ext.data.ArrayStore',{model:'designer.properties.idStringModel',data:this.dockData}),valueField:'id',displayField:'id',allowBlank:true})},'align':{editor:Ext.create('Ext.form.ComboBox',{selectOnFocus:true,editable:true,triggerAction:'all',anchor:'100%',queryMode:'local',store:Ext.create('Ext.data.ArrayStore',{model:'designer.properties.idStringModel',data:this.alignData}),valueField:'id',displayField:'id',allowBlank:true})},'titleAlign':{editor:Ext.create('Ext.form.ComboBox',{selectOnFocus:true,editable:true,triggerAction:'all',anchor:'100%',queryMode:'local',store:Ext.create('Ext.data.ArrayStore',{model:'designer.properties.idStringModel',data:this.alignData}),valueField:'id',displayField:'id',allowBlank:true})},'labelAlign':{editor:Ext.create('Ext.form.ComboBox',{selectOnFocus:true,editable:true,triggerAction:'all',anchor:'100%',queryMode:'local',store:Ext.create('Ext.data.ArrayStore',{model:'designer.properties.idStringModel',data:this.labelAlignData}),valueField:'id',displayField:'id',allowBlank:true})},'iconAlign':{editor:Ext.create('Ext.form.ComboBox',{selectOnFocus:true,editable:true,triggerAction:'all',anchor:'100%',queryMode:'local',store:Ext.create('Ext.data.ArrayStore',{model:'designer.properties.idStringModel',data:this.iconAlignData}),valueField:'id',displayField:'id',allowBlank:true})},'store':{editor:Ext.create('Ext.form.field.ComboBox',{typeAhead:true,triggerAction:'all',selectOnTab:true,labelWidth:80,forceSelection:false,queryMode:'remote',displayField:'title',valueField:'id',store:storesStore})},'menu':{editor:Ext.create('Ext.form.field.ComboBox',{typeAhead:true,triggerAction:'all',selectOnTab:true,labelWidth:80,forceSelection:false,queryMode:'remote',displayField:'title',valueField:'id',store:menuStore})},'url':{editor:Ext.create('designer.urlField',{controllerUrl:app.createUrl([designer.controllerUrl,'url','actions','']),listeners:{select:{fn:function(url){me.dataGrid.setProperty('url',url);},scope:me}}})},'icon':{editor:Ext.create('designer.iconField',{controllerUrl:app.createUrl([designer.controllerUrl,'url','']),listeners:{select:{fn:function(url){me.dataGrid.setProperty('icon',url);},scope:me}}})},'controllerUrl':{editor:Ext.create('designer.urlField',{onlyController:true,controllerUrl:app.createUrl([designer.controllerUrl,'url','actions','']),listeners:{select:{fn:function(url){me.dataGrid.setProperty('controllerUrl',url);},scope:me}}})},'defaults':{editor:Ext.create('Ext.form.field.Text',{listeners:{focus:{fn:function(){me.showDefaultsWindow('defaults');},scope:me}}}),renderer:function(){return'...';}},'extraParams':{editor:Ext.create('Ext.form.field.Text',{listeners:{focus:{fn:function(){me.showParamsWindow('extraParams');},scope:me}}}),renderer:function(){return'...';}},'fieldDefaults':{editor:Ext.create('Ext.form.field.Text',{listeners:{focus:{fn:function(){me.showDefaultsWindow('fieldDefaults');},scope:me}}}),renderer:function(){return'...';}},'isExtended':{editor:Ext.create('Ext.form.field.Display',{})},'dictionary':{editor:Ext.create('Ext.form.field.ComboBox',{typeAhead:true,triggerAction:'all',selectOnTab:true,labelWidth:80,forceSelection:false,queryMode:'remote',displayField:'title',valueField:'id',store:Ext.create('Ext.data.Store',{model:'app.comboStringModel',proxy:{type:'ajax',url:this.controllerUrl+'listdictionaries',reader:{type:'json',rootProperty:'data',idProperty:'id'},simpleSortMode:true},remoteSort:false,autoLoad:false,sorters:[{property:'title',direction:'DESC'}]})})},'config':{editor:Ext.create('Ext.form.field.Text',{listeners:{focus:{fn:function(){me.showDefaultsWindow('config');},scope:me}}})},'objectName':{editor:Ext.create('Ext.form.field.ComboBox',{typeAhead:true,triggerAction:'all',selectOnTab:true,labelWidth:80,forceSelection:true,queryMode:'local',displayField:'title',valueField:'name',store:Ext.create('Ext.data.Store',{proxy:{type:'ajax',url:app.createUrl([designer.controllerUrl,'orm','list']),reader:{type:'json',idProperty:'name',rootProperty:'data'}},model:'designer.properties.nameTitleModel',autoLoad:true,listeners:{scope:me,load:function(store){me.objectNames={};store.each(function(record){me.objectNames[record.get('name')]=record.get('title');},me);}}}),renderer:function(){return'...';}})}},this.sourceConfig);this.searchPanel=Ext.create('SearchPanel',{fieldNames:['name'],local:true,width:130,hideLabel:true});var showCodeBtn=Ext.create('Ext.Button',{scope:me,iconCls:'jsIcon',handler:me.showCode,tooltip:desLang.showCode});this.dataGrid=Ext.create('Ext.grid.property.Grid',{border:false,region:'center',split:true,scrollable:true,title:this.mainConfigTitle,tbar:[this.searchPanel,'->',showCodeBtn],sourceConfig:this.sourceConfig,customRenderers:this.customRenderers,nameColumnWidth:150,listeners:{propertychange:{fn:this.onChange,scope:this}},source:{}});this.searchPanel.store=this.dataGrid.getStore();var itemsList=[this.dataGrid];if(this.showEvents){this.eventsPanel=Ext.create('designer.eventsPanel',{title:desLang.events,controllerUrl:this.eventsControllerUrl,objectName:this.objectName,extraParams:this.extraParams,autoLoadData:this.autoLoadData,listeners:{'eventsUpdated':{fn:function(){this.fireEvent('eventsUpdated');},scope:this}}});itemsList.push(this.eventsPanel);} if(this.showMethods){this.methodsPanel=Ext.create('designer.methodsPanel',{title:desLang.methods,controllerUrl:this.methodsControllerUrl,objectName:this.objectName,extraParams:this.extraParams,autoLoadData:this.autoLoadData,listeners:{'methodsUpdated':{fn:function(){this.fireEvent('methodsUpdated');},scope:this}}});itemsList.push(this.methodsPanel);if(this.methodsSearch){this.methodsPanel.setSearchText(this.methodsSearch);this.methodsSearch=false;}} if(this.useTabs){this.tabs=Ext.create('Ext.tab.Panel',{items:itemsList});this.items=[this.tabs];}else{this.items=[this.dataGrid];} -this.callParent();if(this.autoLoadData){this.loadProperties();}},refreshEvents:function(){if(this.showEvents){this.eventsPanel.getStore().proxy.extraParams=this.extraParams;this.eventsPanel.getStore().load();}},refreshMethods:function(){if(this.showMethods){this.methodsPanel.getStore().proxy.extraParams=this.extraParams;this.methodsPanel.getStore().load();}},resetProperties:function(){this.dataGrid.getStore().removeAll();},loadProperties:function(){Ext.Ajax.request({url:this.controllerUrl+'list',method:'post',scope:this,params:this.extraParams,success:function(response){response=Ext.JSON.decode(response.responseText);if(response.success){if(!Ext.isEmpty(this.eventsPanel)&&!Ext.isEmpty(this.methodsPanel)){if(!Ext.isEmpty(response.data.isExtended)&&response.data.isExtended){this.eventsPanel.setCanEditLocalEvents(true);this.methodsPanel.enable();}else{this.eventsPanel.setCanEditLocalEvents(false);this.methodsPanel.disable();}} +this.callParent();if(this.autoLoadData){this.loadProperties();}},refreshEvents:function(){if(this.showEvents){this.eventsPanel.getStore().proxy.extraParams=this.extraParams;this.eventsPanel.getStore().load();}},refreshMethods:function(){if(this.showMethods){this.methodsPanel.getStore().proxy.extraParams=this.extraParams;this.methodsPanel.getStore().load();}},resetProperties:function(){this.dataGrid.getStore().removeAll();},loadProperties:function(){this.loadRequest=Ext.Ajax.request({url:this.controllerUrl+'list',method:'post',scope:this,params:this.extraParams,success:function(response){response=Ext.JSON.decode(response.responseText);if(response.success){if(!Ext.isEmpty(this.eventsPanel)&&!Ext.isEmpty(this.methodsPanel)){if(!Ext.isEmpty(response.data.isExtended)&&response.data.isExtended){this.eventsPanel.setCanEditLocalEvents(true);this.methodsPanel.enable();}else{this.eventsPanel.setCanEditLocalEvents(false);this.methodsPanel.disable();}} this.dataGrid.setSource(response.data);this.dataGrid.getStore().sort('name','ASC');this.fireEvent('afterLoad',response);}else{this.dataGrid.setSource({});}},failure:function(){Ext.Msg.alert(appLang.MESSAGE,appLang.MSG_LOST_CONNECTION);}});},setExtraParams:function(params){this.extraParams=Ext.apply(this.extraParams,params);},getExtraParam:function(name){return this.extraParams[name];},getSearchText:function(){if(this.searchPanel.searchField){return this.searchPanel.searchField.getValue();} return false;},setSearchText:function(text){if(this.searchPanel){this.searchPanel.setValue(text);}},setEventsSearchText:function(text){if(this.eventsPanel){this.eventsPanel.setSearchText(text);}},setMethodsSearchText:function(text){if(this.methodsPanel){this.methodsPanel.setSearchText(text);}else{this.methodsSearch=text;}},getEventsSearchText:function(){if(!Ext.isEmpty(this.eventsPanel)){return this.eventsPanel.getSearchText();} return'';},getMethodsSearchText:function(){if(!Ext.isEmpty(this.methodsPanel)){return this.methodsPanel.getSearchText();} @@ -128,7 +128,7 @@ var params=Ext.apply({name:recordId,value:value},this.extraParams);Ext.Ajax.requ Ext.Msg.alert(appLang.MESSAGE,desLang.cantSaveProperty+' "'+recordId+'".'+msg);}else{this.fireEvent('dataSaved',recordId,value);designer.msg(desLang.msg,desLang.msg_propertySaved);}},failure:function(){Ext.Msg.alert(appLang.MESSAGE,appLang.MSG_LOST_CONNECTION);}});},resetSerchField:function(){this.searchPanel.searchField.reset();},showCode:function(){Ext.Ajax.request({url:app.createUrl([designer.controllerUrl,'code','objectcode']),method:'post',scope:this,params:{object:this.objectName},success:function(response){response=Ext.JSON.decode(response.responseText);if(!response.success){Ext.Msg.alert(appLang.MESSAGE,response.msg);return;} var editor=Ext.create('designer.codeEditor',{sourceCode:response.data,readOnly:true});Ext.create('Ext.Window',{title:desLang.sourceCodeFor+' "'+this.objectName+'"',layout:'fit',width:750,height:600,modal:true,maximizable:true,items:[editor]}).show();},failure:function(){Ext.Msg.alert(appLang.MESSAGE,appLang.MSG_LOST_CONNECTION);}});},showDefaultsWindow:function(property){var me=this;var source=this.dataGrid.getSource();var data=[];if(!Ext.isEmpty(source[property])){var tmp=Ext.JSON.decode(source[property]);for(var i in tmp){if(typeof tmp[i]!='function'){data.push({'key':i,'value':tmp[i]});}}} var win=Ext.create('designer.defaultsWindow',{title:property,initialData:data});win.on('dataChanged',function(value){me.dataGrid.setProperty(property,value);},me);Ext.defer(function(){win.show().toFront();},50);},showParamsWindow:function(property){var me=this;var source=this.dataGrid.getSource();var data=[];if(!Ext.isEmpty(source[property])){var tmp=Ext.JSON.decode(source[property]);for(var i in tmp){if(typeof tmp[i]!='function'){data.push({'key':i,'value':tmp[i]});}}} -var win=Ext.create('designer.paramsWindow',{title:property,initialData:data});win.on('dataChanged',function(value){me.dataGrid.setProperty(property,value);},me);Ext.defer(function(){win.show().toFront();},50);},destroy:function(){this.dataGrid.destroy();this.searchPanel.destroy();if(this.methodsPanel){this.methodsPanel.destroy();} +var win=Ext.create('designer.paramsWindow',{title:property,initialData:data});win.on('dataChanged',function(value){me.dataGrid.setProperty(property,value);},me);Ext.defer(function(){win.show().toFront();},50);},destroy:function(){this.loadRequest.destroy();this.dataGrid.destroy();this.searchPanel.destroy();if(this.methodsPanel){this.methodsPanel.destroy();} if(this.eventsPanel){this.eventsPanel.destroy();} Ext.Object.each(this.sourceConfig,function(index,item){if(item.editor&&item.editor.destroy){if(item.getStore){item.getStore().destroy();} item.editor.destroy();}});this.callParent(arguments)}});Ext.define('designer.properties.Grid',{extend:'designer.properties.Panel',layout:'accordion',advancedForm:null,initComponent:function(){var me=this;this.mainConfigTitle=desLang.properties;this.tbar=[{iconCls:'gridIcon',tooltip:desLang.columns,scope:me,handler:me.showColumnsWindow}];this.sourceConfig=Ext.apply({'columns':{editor:Ext.create('Ext.form.field.Text',{listeners:{focus:{fn:this.showColumnsWindow,scope:this}}}),renderer:function(v){return'...';}}});this.advancedForm=Ext.create('Ext.form.Panel',{bodyCls:'formBody',title:desLang.advancedOptions,defaults:{margin:'3 3 3 3'},fieldDefaults:{labelWidth:150},frame:true,border:false,scrollable:true,items:[{xtype:'fieldset',title:desLang.grouping,checkboxName:'grouping',checkboxToggle:true,collapsed:true,items:[{name:'groupsummary',fieldLabel:desLang.useGroupSummary,xtype:'checkbox',value:1,uncheckedValue:0},{name:'startCollapsed',fieldLabel:desLang.startCollapsed,xtype:'checkbox',value:1,uncheckedValue:0},{name:'hideGroupedHeader',fieldLabel:desLang.hideGroupedHeader,xtype:'checkbox',value:1,uncheckedValue:0},{name:'enableGroupingMenu',fieldLabel:desLang.enableGroupingMenu,xtype:'checkbox',value:1,uncheckedValue:0},{name:'groupHeaderTpl',fieldLabel:'groupHeaderTpl',xtype:'textfield',anchor:'100%'},{name:'remoteRoot',fieldLabel:'remoteRoot',xtype:'textfield',anchor:'100%'}]},{xtype:'fieldset',checkboxName:'editable',title:desLang.editable,checkboxToggle:true,collapsed:true,items:[{fieldLabel:desLang.clicksToEdit,name:'clicksToEdit',xtype:'numberfield',value:1,minValue:1,maxValue:2,width:190,allowDecimals:false}]},{xtype:'fieldset',checkboxName:'rowexpander',title:desLang.rowExpander,checkboxToggle:true,collapsed:true,items:[{fieldLabel:desLang.expanderRowBodyTpl,name:'expander_rowbodytpl',xtype:'textfield',anchor:'100%'}]},{name:'summary',fieldLabel:desLang.useSummary,margin:'0 0 0 15',xtype:'checkbox'},{fieldLabel:desLang.paging,name:'paging',margin:'0 0 0 15',xtype:'checkbox'},{name:'checkboxSelection',fieldLabel:desLang.checkboxSelection,xtype:'checkbox',margin:'0 0 0 15'},{name:'numberedRows',fieldLabel:desLang.numberedRows,xtype:'checkbox',margin:'0 0 0 15'}],buttons:[{text:desLang.save,handler:this.saveAdvancedProperties,scope:this}]});this.callParent();this.add(this.advancedForm);this.advancedForm.load({url:app.createUrl([designer.controllerUrl,'grid','loadadvanced']),params:{object:this.objectName}});},showFiltersWindow:function(){Ext.create('designer.grid.filters.Window',{objectName:this.objectName,storeName:this.dataGrid.getSource().store,listeners:{dataSaved:{fn:function(){this.fireEvent('dataSaved');},scope:this}}}).show();},showColumnsWindow:function(){var win=Ext.create('designer.grid.column.Window',{title:desLang.gridColumnsConfig,objectName:this.objectName,storeName:this.dataGrid.getSource().store});win.show();},saveAdvancedProperties:function(){var handle=this;this.advancedForm.getForm().submit({clientValidation:true,waitMsg:appLang.SAVING,method:'post',url:app.createUrl([designer.controllerUrl,'grid','setadvanced']),params:{object:this.objectName},success:function(form,action){if(!action.result.success){Ext.Msg.alert(appLang.MESSAGE,action.result.msg);}else{handle.fireEvent('dataSaved');}},failure:app.formFailure});},destroy:function(){this.advancedForm.destroy();this.callParent(arguments);}});Ext.define('designer.properties.GridColumn',{extend:'designer.properties.Panel',autoLoadData:false,initComponent:function(){var me=this;this.renderersStore=Ext.create('Ext.data.Store',{model:'app.comboStringModel',proxy:{type:'ajax',url:this.controllerUrl+'renderers',reader:{type:'json',rootProperty:'data',idProperty:'id'},extraParams:{object:this.objectName},simpleSortMode:true},remoteSort:false,autoLoad:true,sorters:[{property:'title',direction:'DESC'}]});var summaryEditor=Ext.create('Ext.form.field.ComboBox',{typeAhead:true,triggerAction:'all',selectOnTab:true,labelWidth:80,forceSelection:true,queryMode:'local',displayField:'title',valueField:'id',store:this.renderersStore});this.sourceConfig=Ext.apply({'summaryType':{editor:Ext.create('Ext.form.field.ComboBox',{typeAhead:true,triggerAction:'all',selectOnTab:true,labelWidth:80,forceSelection:true,queryMode:'local',store:[['count','count'],['sum','sum'],['min','min'],['max','max'],['average','average']]}),renderer:function(v){if(Ext.isEmpty(v)){return'...';}else{return v;}}},'summaryRenderer':{editor:summaryEditor,renderer:app.comboBoxRenderer(summaryEditor)},'renderer':{editor:Ext.create('Ext.form.field.Text',{listeners:{focus:{fn:me.showRendererWindow,scope:me}}}),renderer:function(v){return'...';}},'items':{editor:Ext.create('Ext.form.field.Text',{listeners:{focus:{fn:me.showItemsWindow,scope:me}}}),renderer:function(v){return'...';}},'filter':{editor:Ext.create('Ext.form.field.Text',{listeners:{focus:{fn:me.showFilterWindow,scope:me}}}),renderer:function(v){return'...';}}},this.sourceConfig);this.callParent();},showRendererWindow:function(){var win=Ext.create('designer.grid.column.RendererWindow',{title:desLang.renderer,modal:true,objectName:this.objectName,columnId:this.extraParams.id,controllerUrl:this.controllerUrl});Ext.defer(function(){win.show().toFront();},50);},showItemsWindow:function() diff --git a/www/js/app/system/common.js b/www/js/app/system/common.js index ba12118c..0d819f35 100644 --- a/www/js/app/system/common.js +++ b/www/js/app/system/common.js @@ -395,12 +395,14 @@ app.progressRenderer = function(value, metaData, record, rowIndex, colIndex, sto * @param {Object} eOpts - The options object passed to Ext.util.Observable.addListener. */ app.storeException = function(proxy, response, operation, eOpts){ + if(response.aborted){ + return; + } if(response.responseText === null){ Ext.Msg.alert(appLang.MESSAGE, appLang.INVALID_RESPONSE); } - var resp = Ext.JSON.decode(response.responseText); - if(resp.msg != null){ + if(resp && resp.msg != null){ Ext.Msg.alert(appLang.MESSAGE, resp.msg); }else{ Ext.Msg.alert(appLang.MESSAGE, appLang.INVALID_RESPONSE); diff --git a/www/js/app/system/designer/methodsPanel.js b/www/js/app/system/designer/methodsPanel.js index 23cc4623..660365d3 100644 --- a/www/js/app/system/designer/methodsPanel.js +++ b/www/js/app/system/designer/methodsPanel.js @@ -230,9 +230,9 @@ Ext.define('designer.methodsPanel',{ this.searchField.setValue(text); }, destroy:function(){ + this.searchField.destroy(); this.store.destroy(); this.callParent(arguments); } - }); diff --git a/www/js/app/system/designer/properties.js b/www/js/app/system/designer/properties.js index 99952a8c..3e223bbc 100644 --- a/www/js/app/system/designer/properties.js +++ b/www/js/app/system/designer/properties.js @@ -557,7 +557,7 @@ Ext.define('designer.properties.Panel', { * Load object properties */ loadProperties: function () { - Ext.Ajax.request({ + this.loadRequest = Ext.Ajax.request({ url: this.controllerUrl + 'list', method: 'post', scope: this, @@ -800,6 +800,7 @@ Ext.define('designer.properties.Panel', { }, 50); }, destroy:function(){ + this.loadRequest.destroy(); this.dataGrid.destroy(); this.searchPanel.destroy(); if(this.methodsPanel){ From 9f30ff37e16ae54ad559464948b24922059becc1 Mon Sep 17 00:00:00 2001 From: k-samuel Date: Sun, 17 Sep 2017 10:05:32 +0300 Subject: [PATCH 17/20] Designer Properties. Abort Ajax request for destroyed panel --- www/js/app/system/Designer.js | 2 +- www/js/app/system/designer/properties.js | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/www/js/app/system/Designer.js b/www/js/app/system/Designer.js index c1e83a04..532117a1 100644 --- a/www/js/app/system/Designer.js +++ b/www/js/app/system/Designer.js @@ -128,7 +128,7 @@ var params=Ext.apply({name:recordId,value:value},this.extraParams);Ext.Ajax.requ Ext.Msg.alert(appLang.MESSAGE,desLang.cantSaveProperty+' "'+recordId+'".'+msg);}else{this.fireEvent('dataSaved',recordId,value);designer.msg(desLang.msg,desLang.msg_propertySaved);}},failure:function(){Ext.Msg.alert(appLang.MESSAGE,appLang.MSG_LOST_CONNECTION);}});},resetSerchField:function(){this.searchPanel.searchField.reset();},showCode:function(){Ext.Ajax.request({url:app.createUrl([designer.controllerUrl,'code','objectcode']),method:'post',scope:this,params:{object:this.objectName},success:function(response){response=Ext.JSON.decode(response.responseText);if(!response.success){Ext.Msg.alert(appLang.MESSAGE,response.msg);return;} var editor=Ext.create('designer.codeEditor',{sourceCode:response.data,readOnly:true});Ext.create('Ext.Window',{title:desLang.sourceCodeFor+' "'+this.objectName+'"',layout:'fit',width:750,height:600,modal:true,maximizable:true,items:[editor]}).show();},failure:function(){Ext.Msg.alert(appLang.MESSAGE,appLang.MSG_LOST_CONNECTION);}});},showDefaultsWindow:function(property){var me=this;var source=this.dataGrid.getSource();var data=[];if(!Ext.isEmpty(source[property])){var tmp=Ext.JSON.decode(source[property]);for(var i in tmp){if(typeof tmp[i]!='function'){data.push({'key':i,'value':tmp[i]});}}} var win=Ext.create('designer.defaultsWindow',{title:property,initialData:data});win.on('dataChanged',function(value){me.dataGrid.setProperty(property,value);},me);Ext.defer(function(){win.show().toFront();},50);},showParamsWindow:function(property){var me=this;var source=this.dataGrid.getSource();var data=[];if(!Ext.isEmpty(source[property])){var tmp=Ext.JSON.decode(source[property]);for(var i in tmp){if(typeof tmp[i]!='function'){data.push({'key':i,'value':tmp[i]});}}} -var win=Ext.create('designer.paramsWindow',{title:property,initialData:data});win.on('dataChanged',function(value){me.dataGrid.setProperty(property,value);},me);Ext.defer(function(){win.show().toFront();},50);},destroy:function(){this.loadRequest.destroy();this.dataGrid.destroy();this.searchPanel.destroy();if(this.methodsPanel){this.methodsPanel.destroy();} +var win=Ext.create('designer.paramsWindow',{title:property,initialData:data});win.on('dataChanged',function(value){me.dataGrid.setProperty(property,value);},me);Ext.defer(function(){win.show().toFront();},50);},destroy:function(){this.loadRequest.abort();this.loadRequest.destroy();this.dataGrid.destroy();this.searchPanel.destroy();if(this.methodsPanel){this.methodsPanel.destroy();} if(this.eventsPanel){this.eventsPanel.destroy();} Ext.Object.each(this.sourceConfig,function(index,item){if(item.editor&&item.editor.destroy){if(item.getStore){item.getStore().destroy();} item.editor.destroy();}});this.callParent(arguments)}});Ext.define('designer.properties.Grid',{extend:'designer.properties.Panel',layout:'accordion',advancedForm:null,initComponent:function(){var me=this;this.mainConfigTitle=desLang.properties;this.tbar=[{iconCls:'gridIcon',tooltip:desLang.columns,scope:me,handler:me.showColumnsWindow}];this.sourceConfig=Ext.apply({'columns':{editor:Ext.create('Ext.form.field.Text',{listeners:{focus:{fn:this.showColumnsWindow,scope:this}}}),renderer:function(v){return'...';}}});this.advancedForm=Ext.create('Ext.form.Panel',{bodyCls:'formBody',title:desLang.advancedOptions,defaults:{margin:'3 3 3 3'},fieldDefaults:{labelWidth:150},frame:true,border:false,scrollable:true,items:[{xtype:'fieldset',title:desLang.grouping,checkboxName:'grouping',checkboxToggle:true,collapsed:true,items:[{name:'groupsummary',fieldLabel:desLang.useGroupSummary,xtype:'checkbox',value:1,uncheckedValue:0},{name:'startCollapsed',fieldLabel:desLang.startCollapsed,xtype:'checkbox',value:1,uncheckedValue:0},{name:'hideGroupedHeader',fieldLabel:desLang.hideGroupedHeader,xtype:'checkbox',value:1,uncheckedValue:0},{name:'enableGroupingMenu',fieldLabel:desLang.enableGroupingMenu,xtype:'checkbox',value:1,uncheckedValue:0},{name:'groupHeaderTpl',fieldLabel:'groupHeaderTpl',xtype:'textfield',anchor:'100%'},{name:'remoteRoot',fieldLabel:'remoteRoot',xtype:'textfield',anchor:'100%'}]},{xtype:'fieldset',checkboxName:'editable',title:desLang.editable,checkboxToggle:true,collapsed:true,items:[{fieldLabel:desLang.clicksToEdit,name:'clicksToEdit',xtype:'numberfield',value:1,minValue:1,maxValue:2,width:190,allowDecimals:false}]},{xtype:'fieldset',checkboxName:'rowexpander',title:desLang.rowExpander,checkboxToggle:true,collapsed:true,items:[{fieldLabel:desLang.expanderRowBodyTpl,name:'expander_rowbodytpl',xtype:'textfield',anchor:'100%'}]},{name:'summary',fieldLabel:desLang.useSummary,margin:'0 0 0 15',xtype:'checkbox'},{fieldLabel:desLang.paging,name:'paging',margin:'0 0 0 15',xtype:'checkbox'},{name:'checkboxSelection',fieldLabel:desLang.checkboxSelection,xtype:'checkbox',margin:'0 0 0 15'},{name:'numberedRows',fieldLabel:desLang.numberedRows,xtype:'checkbox',margin:'0 0 0 15'}],buttons:[{text:desLang.save,handler:this.saveAdvancedProperties,scope:this}]});this.callParent();this.add(this.advancedForm);this.advancedForm.load({url:app.createUrl([designer.controllerUrl,'grid','loadadvanced']),params:{object:this.objectName}});},showFiltersWindow:function(){Ext.create('designer.grid.filters.Window',{objectName:this.objectName,storeName:this.dataGrid.getSource().store,listeners:{dataSaved:{fn:function(){this.fireEvent('dataSaved');},scope:this}}}).show();},showColumnsWindow:function(){var win=Ext.create('designer.grid.column.Window',{title:desLang.gridColumnsConfig,objectName:this.objectName,storeName:this.dataGrid.getSource().store});win.show();},saveAdvancedProperties:function(){var handle=this;this.advancedForm.getForm().submit({clientValidation:true,waitMsg:appLang.SAVING,method:'post',url:app.createUrl([designer.controllerUrl,'grid','setadvanced']),params:{object:this.objectName},success:function(form,action){if(!action.result.success){Ext.Msg.alert(appLang.MESSAGE,action.result.msg);}else{handle.fireEvent('dataSaved');}},failure:app.formFailure});},destroy:function(){this.advancedForm.destroy();this.callParent(arguments);}});Ext.define('designer.properties.GridColumn',{extend:'designer.properties.Panel',autoLoadData:false,initComponent:function(){var me=this;this.renderersStore=Ext.create('Ext.data.Store',{model:'app.comboStringModel',proxy:{type:'ajax',url:this.controllerUrl+'renderers',reader:{type:'json',rootProperty:'data',idProperty:'id'},extraParams:{object:this.objectName},simpleSortMode:true},remoteSort:false,autoLoad:true,sorters:[{property:'title',direction:'DESC'}]});var summaryEditor=Ext.create('Ext.form.field.ComboBox',{typeAhead:true,triggerAction:'all',selectOnTab:true,labelWidth:80,forceSelection:true,queryMode:'local',displayField:'title',valueField:'id',store:this.renderersStore});this.sourceConfig=Ext.apply({'summaryType':{editor:Ext.create('Ext.form.field.ComboBox',{typeAhead:true,triggerAction:'all',selectOnTab:true,labelWidth:80,forceSelection:true,queryMode:'local',store:[['count','count'],['sum','sum'],['min','min'],['max','max'],['average','average']]}),renderer:function(v){if(Ext.isEmpty(v)){return'...';}else{return v;}}},'summaryRenderer':{editor:summaryEditor,renderer:app.comboBoxRenderer(summaryEditor)},'renderer':{editor:Ext.create('Ext.form.field.Text',{listeners:{focus:{fn:me.showRendererWindow,scope:me}}}),renderer:function(v){return'...';}},'items':{editor:Ext.create('Ext.form.field.Text',{listeners:{focus:{fn:me.showItemsWindow,scope:me}}}),renderer:function(v){return'...';}},'filter':{editor:Ext.create('Ext.form.field.Text',{listeners:{focus:{fn:me.showFilterWindow,scope:me}}}),renderer:function(v){return'...';}}},this.sourceConfig);this.callParent();},showRendererWindow:function(){var win=Ext.create('designer.grid.column.RendererWindow',{title:desLang.renderer,modal:true,objectName:this.objectName,columnId:this.extraParams.id,controllerUrl:this.controllerUrl});Ext.defer(function(){win.show().toFront();},50);},showItemsWindow:function() diff --git a/www/js/app/system/designer/properties.js b/www/js/app/system/designer/properties.js index 3e223bbc..57cafb7f 100644 --- a/www/js/app/system/designer/properties.js +++ b/www/js/app/system/designer/properties.js @@ -800,6 +800,7 @@ Ext.define('designer.properties.Panel', { }, 50); }, destroy:function(){ + this.loadRequest.abort(); this.loadRequest.destroy(); this.dataGrid.destroy(); this.searchPanel.destroy(); From 0b6b9002b428f5244d8f4687f220b7ee3079a558 Mon Sep 17 00:00:00 2001 From: Kirill Date: Mon, 18 Sep 2017 09:53:38 +0300 Subject: [PATCH 18/20] Designer Properties fix --- www/js/app/system/Designer.js | 3 ++- www/js/app/system/designer/properties.js | 6 ++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/www/js/app/system/Designer.js b/www/js/app/system/Designer.js index 532117a1..c3f967c0 100644 --- a/www/js/app/system/Designer.js +++ b/www/js/app/system/Designer.js @@ -128,7 +128,8 @@ var params=Ext.apply({name:recordId,value:value},this.extraParams);Ext.Ajax.requ Ext.Msg.alert(appLang.MESSAGE,desLang.cantSaveProperty+' "'+recordId+'".'+msg);}else{this.fireEvent('dataSaved',recordId,value);designer.msg(desLang.msg,desLang.msg_propertySaved);}},failure:function(){Ext.Msg.alert(appLang.MESSAGE,appLang.MSG_LOST_CONNECTION);}});},resetSerchField:function(){this.searchPanel.searchField.reset();},showCode:function(){Ext.Ajax.request({url:app.createUrl([designer.controllerUrl,'code','objectcode']),method:'post',scope:this,params:{object:this.objectName},success:function(response){response=Ext.JSON.decode(response.responseText);if(!response.success){Ext.Msg.alert(appLang.MESSAGE,response.msg);return;} var editor=Ext.create('designer.codeEditor',{sourceCode:response.data,readOnly:true});Ext.create('Ext.Window',{title:desLang.sourceCodeFor+' "'+this.objectName+'"',layout:'fit',width:750,height:600,modal:true,maximizable:true,items:[editor]}).show();},failure:function(){Ext.Msg.alert(appLang.MESSAGE,appLang.MSG_LOST_CONNECTION);}});},showDefaultsWindow:function(property){var me=this;var source=this.dataGrid.getSource();var data=[];if(!Ext.isEmpty(source[property])){var tmp=Ext.JSON.decode(source[property]);for(var i in tmp){if(typeof tmp[i]!='function'){data.push({'key':i,'value':tmp[i]});}}} var win=Ext.create('designer.defaultsWindow',{title:property,initialData:data});win.on('dataChanged',function(value){me.dataGrid.setProperty(property,value);},me);Ext.defer(function(){win.show().toFront();},50);},showParamsWindow:function(property){var me=this;var source=this.dataGrid.getSource();var data=[];if(!Ext.isEmpty(source[property])){var tmp=Ext.JSON.decode(source[property]);for(var i in tmp){if(typeof tmp[i]!='function'){data.push({'key':i,'value':tmp[i]});}}} -var win=Ext.create('designer.paramsWindow',{title:property,initialData:data});win.on('dataChanged',function(value){me.dataGrid.setProperty(property,value);},me);Ext.defer(function(){win.show().toFront();},50);},destroy:function(){this.loadRequest.abort();this.loadRequest.destroy();this.dataGrid.destroy();this.searchPanel.destroy();if(this.methodsPanel){this.methodsPanel.destroy();} +var win=Ext.create('designer.paramsWindow',{title:property,initialData:data});win.on('dataChanged',function(value){me.dataGrid.setProperty(property,value);},me);Ext.defer(function(){win.show().toFront();},50);},destroy:function(){if(this.loadRequest&&this.loadRequest.destroy){this.loadRequest.abort();this.loadRequest.destroy();} +this.dataGrid.destroy();this.searchPanel.destroy();if(this.methodsPanel){this.methodsPanel.destroy();} if(this.eventsPanel){this.eventsPanel.destroy();} Ext.Object.each(this.sourceConfig,function(index,item){if(item.editor&&item.editor.destroy){if(item.getStore){item.getStore().destroy();} item.editor.destroy();}});this.callParent(arguments)}});Ext.define('designer.properties.Grid',{extend:'designer.properties.Panel',layout:'accordion',advancedForm:null,initComponent:function(){var me=this;this.mainConfigTitle=desLang.properties;this.tbar=[{iconCls:'gridIcon',tooltip:desLang.columns,scope:me,handler:me.showColumnsWindow}];this.sourceConfig=Ext.apply({'columns':{editor:Ext.create('Ext.form.field.Text',{listeners:{focus:{fn:this.showColumnsWindow,scope:this}}}),renderer:function(v){return'...';}}});this.advancedForm=Ext.create('Ext.form.Panel',{bodyCls:'formBody',title:desLang.advancedOptions,defaults:{margin:'3 3 3 3'},fieldDefaults:{labelWidth:150},frame:true,border:false,scrollable:true,items:[{xtype:'fieldset',title:desLang.grouping,checkboxName:'grouping',checkboxToggle:true,collapsed:true,items:[{name:'groupsummary',fieldLabel:desLang.useGroupSummary,xtype:'checkbox',value:1,uncheckedValue:0},{name:'startCollapsed',fieldLabel:desLang.startCollapsed,xtype:'checkbox',value:1,uncheckedValue:0},{name:'hideGroupedHeader',fieldLabel:desLang.hideGroupedHeader,xtype:'checkbox',value:1,uncheckedValue:0},{name:'enableGroupingMenu',fieldLabel:desLang.enableGroupingMenu,xtype:'checkbox',value:1,uncheckedValue:0},{name:'groupHeaderTpl',fieldLabel:'groupHeaderTpl',xtype:'textfield',anchor:'100%'},{name:'remoteRoot',fieldLabel:'remoteRoot',xtype:'textfield',anchor:'100%'}]},{xtype:'fieldset',checkboxName:'editable',title:desLang.editable,checkboxToggle:true,collapsed:true,items:[{fieldLabel:desLang.clicksToEdit,name:'clicksToEdit',xtype:'numberfield',value:1,minValue:1,maxValue:2,width:190,allowDecimals:false}]},{xtype:'fieldset',checkboxName:'rowexpander',title:desLang.rowExpander,checkboxToggle:true,collapsed:true,items:[{fieldLabel:desLang.expanderRowBodyTpl,name:'expander_rowbodytpl',xtype:'textfield',anchor:'100%'}]},{name:'summary',fieldLabel:desLang.useSummary,margin:'0 0 0 15',xtype:'checkbox'},{fieldLabel:desLang.paging,name:'paging',margin:'0 0 0 15',xtype:'checkbox'},{name:'checkboxSelection',fieldLabel:desLang.checkboxSelection,xtype:'checkbox',margin:'0 0 0 15'},{name:'numberedRows',fieldLabel:desLang.numberedRows,xtype:'checkbox',margin:'0 0 0 15'}],buttons:[{text:desLang.save,handler:this.saveAdvancedProperties,scope:this}]});this.callParent();this.add(this.advancedForm);this.advancedForm.load({url:app.createUrl([designer.controllerUrl,'grid','loadadvanced']),params:{object:this.objectName}});},showFiltersWindow:function(){Ext.create('designer.grid.filters.Window',{objectName:this.objectName,storeName:this.dataGrid.getSource().store,listeners:{dataSaved:{fn:function(){this.fireEvent('dataSaved');},scope:this}}}).show();},showColumnsWindow:function(){var win=Ext.create('designer.grid.column.Window',{title:desLang.gridColumnsConfig,objectName:this.objectName,storeName:this.dataGrid.getSource().store});win.show();},saveAdvancedProperties:function(){var handle=this;this.advancedForm.getForm().submit({clientValidation:true,waitMsg:appLang.SAVING,method:'post',url:app.createUrl([designer.controllerUrl,'grid','setadvanced']),params:{object:this.objectName},success:function(form,action){if(!action.result.success){Ext.Msg.alert(appLang.MESSAGE,action.result.msg);}else{handle.fireEvent('dataSaved');}},failure:app.formFailure});},destroy:function(){this.advancedForm.destroy();this.callParent(arguments);}});Ext.define('designer.properties.GridColumn',{extend:'designer.properties.Panel',autoLoadData:false,initComponent:function(){var me=this;this.renderersStore=Ext.create('Ext.data.Store',{model:'app.comboStringModel',proxy:{type:'ajax',url:this.controllerUrl+'renderers',reader:{type:'json',rootProperty:'data',idProperty:'id'},extraParams:{object:this.objectName},simpleSortMode:true},remoteSort:false,autoLoad:true,sorters:[{property:'title',direction:'DESC'}]});var summaryEditor=Ext.create('Ext.form.field.ComboBox',{typeAhead:true,triggerAction:'all',selectOnTab:true,labelWidth:80,forceSelection:true,queryMode:'local',displayField:'title',valueField:'id',store:this.renderersStore});this.sourceConfig=Ext.apply({'summaryType':{editor:Ext.create('Ext.form.field.ComboBox',{typeAhead:true,triggerAction:'all',selectOnTab:true,labelWidth:80,forceSelection:true,queryMode:'local',store:[['count','count'],['sum','sum'],['min','min'],['max','max'],['average','average']]}),renderer:function(v){if(Ext.isEmpty(v)){return'...';}else{return v;}}},'summaryRenderer':{editor:summaryEditor,renderer:app.comboBoxRenderer(summaryEditor)},'renderer':{editor:Ext.create('Ext.form.field.Text',{listeners:{focus:{fn:me.showRendererWindow,scope:me}}}),renderer:function(v){return'...';}},'items':{editor:Ext.create('Ext.form.field.Text',{listeners:{focus:{fn:me.showItemsWindow,scope:me}}}),renderer:function(v){return'...';}},'filter':{editor:Ext.create('Ext.form.field.Text',{listeners:{focus:{fn:me.showFilterWindow,scope:me}}}),renderer:function(v){return'...';}}},this.sourceConfig);this.callParent();},showRendererWindow:function(){var win=Ext.create('designer.grid.column.RendererWindow',{title:desLang.renderer,modal:true,objectName:this.objectName,columnId:this.extraParams.id,controllerUrl:this.controllerUrl});Ext.defer(function(){win.show().toFront();},50);},showItemsWindow:function() diff --git a/www/js/app/system/designer/properties.js b/www/js/app/system/designer/properties.js index 57cafb7f..33e93356 100644 --- a/www/js/app/system/designer/properties.js +++ b/www/js/app/system/designer/properties.js @@ -800,8 +800,10 @@ Ext.define('designer.properties.Panel', { }, 50); }, destroy:function(){ - this.loadRequest.abort(); - this.loadRequest.destroy(); + if(this.loadRequest && this.loadRequest.destroy){ + this.loadRequest.abort(); + this.loadRequest.destroy(); + } this.dataGrid.destroy(); this.searchPanel.destroy(); if(this.methodsPanel){ From aa57544e2c77f72101c3390b4ec42ffd0ef7cba3 Mon Sep 17 00:00:00 2001 From: Kirill Date: Wed, 20 Sep 2017 14:58:16 +0300 Subject: [PATCH 19/20] Version update --- application/configs/dist/versions.php | 4 ++-- license.txt | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/application/configs/dist/versions.php b/application/configs/dist/versions.php index 9a4b848f..590ce2a3 100644 --- a/application/configs/dist/versions.php +++ b/application/configs/dist/versions.php @@ -1,7 +1,7 @@ '1.0.2', - 'designer'=>'1.1', + 'core'=>'1.0.3', + 'designer'=>'1.2', 'medialib'=>'0.6', 'orm'=>'0.9.9' ); \ No newline at end of file diff --git a/license.txt b/license.txt index a95c8692..b7476c11 100644 --- a/license.txt +++ b/license.txt @@ -1,4 +1,4 @@ -DVelum 1.0.2 PROFESSIONAL WEB-DEVELOPMENT PLATFORM +DVelum 1.0.3 PROFESSIONAL WEB-DEVELOPMENT PLATFORM Copyright (C) 2011-2017, Kirill A Egorov, Andrew Zamotaev, Sergey Leschenko http://dvelum.net/license.html From 97f3b30b013f21ae9bfcbd8171f9544d309c1cdd Mon Sep 17 00:00:00 2001 From: Kirill Date: Wed, 20 Sep 2017 15:06:45 +0300 Subject: [PATCH 20/20] Version update --- data/gpl-3.0_en.txt | 2 +- data/gpl-3.0_ru.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/data/gpl-3.0_en.txt b/data/gpl-3.0_en.txt index 97168d3c..4c75e101 100644 --- a/data/gpl-3.0_en.txt +++ b/data/gpl-3.0_en.txt @@ -1,4 +1,4 @@ -DVelum 1.0.2 PROFESSIONAL WEB-DEVELOPMENT PLATFORM +DVelum 1.0.3 PROFESSIONAL WEB-DEVELOPMENT PLATFORM Copyright (C) 2011-2017, Kirill A Egorov, Andrew Zamotaev, Sergey Leschenko http://dvelum.net/license.html diff --git a/data/gpl-3.0_ru.txt b/data/gpl-3.0_ru.txt index e31edd74..92d87289 100644 --- a/data/gpl-3.0_ru.txt +++ b/data/gpl-3.0_ru.txt @@ -1,4 +1,4 @@ -DVelum 1.0.2 платформа профессиональной web-разработки +DVelum 1.0.3 платформа профессиональной web-разработки Copyright (C) 2011-2017 Кирилл Егоров, Андрей Замотаев, Сергей Лещенко