|
|
@@ -25,6 +25,7 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
|
|
|
|
|
|
showIndex: true,
|
|
|
configUrl: '',
|
|
|
+ editable: true,
|
|
|
|
|
|
initComponent: function() {
|
|
|
var me = this;
|
|
|
@@ -33,7 +34,9 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
|
|
|
|
|
|
addRows = function(id) {
|
|
|
var grid = Ext.getCmp(id);
|
|
|
- grid.addDetail(0);
|
|
|
+ if(grid.editable) {
|
|
|
+ grid.addDetail(0);
|
|
|
+ }
|
|
|
};
|
|
|
|
|
|
Ext.apply(me, {
|
|
|
@@ -46,8 +49,11 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
|
|
|
emptyText: '<div style="width: 100%; text-align: center; cursor: pointer; color: green;" class="fa fa-plus" title="新增行" onclick="addRows(\'' + me.id + '\')"></div>',
|
|
|
},
|
|
|
listeners: {
|
|
|
- itemmouseenter: function(grid, record, item, index, e, eOpts) {
|
|
|
- var lockedItems = grid.el.dom.parentElement.parentElement.getElementsByClassName('x-grid-scrollbar-clipper-locked')[0].getElementsByClassName('x-grid-item');
|
|
|
+ itemmouseenter: function(view, record, item, index, e, eOpts) {
|
|
|
+ if(!view.up('detailGridField').editable) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ var lockedItems = view.el.dom.parentElement.parentElement.getElementsByClassName('x-grid-scrollbar-clipper-locked')[0].getElementsByClassName('x-grid-item');
|
|
|
var currentLockedItem = lockedItems[index];
|
|
|
var textItem = currentLockedItem.getElementsByClassName('text')[0];
|
|
|
var iconsItem = currentLockedItem.getElementsByClassName('icons')[0];
|
|
|
@@ -55,8 +61,11 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
|
|
|
textItem.style.display = 'none';
|
|
|
iconsItem.style.display = 'flex';
|
|
|
},
|
|
|
- itemmouseleave: function(grid, record, item, index, e, eOpts) {
|
|
|
- var lockedItems = grid.el.dom.parentElement.parentElement.getElementsByClassName('x-grid-scrollbar-clipper-locked')[0].getElementsByClassName('x-grid-item');
|
|
|
+ itemmouseleave: function(view, record, item, index, e, eOpts) {
|
|
|
+ if(!view.up('detailGridField').editable) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ var lockedItems = view.el.dom.parentElement.parentElement.getElementsByClassName('x-grid-scrollbar-clipper-locked')[0].getElementsByClassName('x-grid-item');
|
|
|
var currentLockedItem = lockedItems[index];
|
|
|
var textItem = currentLockedItem.getElementsByClassName('text')[0];
|
|
|
var iconsItem = currentLockedItem.getElementsByClassName('icons')[0];
|
|
|
@@ -64,7 +73,7 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
|
|
|
textItem.style.display = 'block';
|
|
|
iconsItem.style.display = 'none';
|
|
|
},
|
|
|
- cellclick: function(grid, td, cellIndex, record, tr, rowIndex, e, eOpts) {
|
|
|
+ cellclick: function(view, td, cellIndex, record, tr, rowIndex, e, eOpts) {
|
|
|
var target = e.target;
|
|
|
var detno = record.get(me.detnoColumn);
|
|
|
|
|
|
@@ -151,8 +160,12 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
|
|
|
},
|
|
|
|
|
|
addDetail: function(v) {
|
|
|
- var me = this,
|
|
|
- detnoColumn = me.detnoColumn,
|
|
|
+ var me = this;
|
|
|
+ var me = this;
|
|
|
+ if(!me.editable) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ var detnoColumn = me.detnoColumn,
|
|
|
store = me.getStore(),
|
|
|
records = store.getData().items,
|
|
|
selectedRecord = records.find(function(r) {
|
|
|
@@ -177,8 +190,11 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
|
|
|
},
|
|
|
|
|
|
deleteDetail: function(v) {
|
|
|
- var me = this,
|
|
|
- detnoColumn = me.detnoColumn,
|
|
|
+ var me = this;
|
|
|
+ if(!me.editable) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ var detnoColumn = me.detnoColumn,
|
|
|
store = me.getStore(),
|
|
|
records = store.getData().items,
|
|
|
selectedRecord = records.find(function(r) {
|
|
|
@@ -210,8 +226,12 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
|
|
|
},
|
|
|
|
|
|
swapUp: function() {
|
|
|
- var me = this,
|
|
|
- store = me.getStore(),
|
|
|
+ var me = this;
|
|
|
+ var me = this;
|
|
|
+ if(!me.editable) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ var store = me.getStore(),
|
|
|
record = me.selModel.lastSelected,
|
|
|
selectedIdx = store.indexOf(record);
|
|
|
|
|
|
@@ -219,8 +239,12 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
|
|
|
},
|
|
|
|
|
|
swapDown: function() {
|
|
|
- var me = this,
|
|
|
- store = me.getStore(),
|
|
|
+ var me = this;
|
|
|
+ var me = this;
|
|
|
+ if(!me.editable) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ var store = me.getStore(),
|
|
|
record = me.selModel.lastSelected,
|
|
|
selectedIdx = store.indexOf(record);
|
|
|
|
|
|
@@ -250,6 +274,19 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
|
|
|
//聚焦目标行
|
|
|
me.selModel.select(to);
|
|
|
}
|
|
|
+ },
|
|
|
+ setGridDisabled: function(able) {
|
|
|
+ var me = this,
|
|
|
+ columns = me.columns;
|
|
|
+
|
|
|
+ me.editable = able;
|
|
|
+
|
|
|
+ Ext.Array.each(columns, function(c) {
|
|
|
+ var e = c.getEditor();
|
|
|
+ if(e) {
|
|
|
+ typeof e.setDisabled == 'function' && e.setDisabled(!able);
|
|
|
+ }
|
|
|
+ });
|
|
|
}
|
|
|
|
|
|
});
|