You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
643 lines
14 KiB
643 lines
14 KiB
function fn_createAttributesStore(_layerAttributes) |
|
{ |
|
Ext.define('featureAttributes', { |
|
extend: 'Ext.data.Model', |
|
idProperty: 'featureAttributes_id', |
|
fields: fn_createAttributesColumns(_layerAttributes) |
|
}); |
|
|
|
var s=Ext.create('Ext.data.Store', |
|
{ |
|
data:[], |
|
model:'featureAttributes' |
|
}); |
|
|
|
return s; |
|
} |
|
|
|
function fn_createAttributesColumns(_layerAttributes) |
|
{ |
|
var _fields=new Array(); |
|
|
|
Ext.each(_layerAttributes,function(item) |
|
{ |
|
var columnexist=fn_objIndexOf(_fields,"name",item._attributeName); |
|
|
|
if ((!item._attributeIsGeometry) && (columnexist<0)) |
|
{ |
|
_fields.push({ |
|
name: item._attributeName, |
|
type: item._attributeType |
|
}); |
|
} |
|
}); |
|
|
|
return _fields; |
|
} |
|
|
|
function fn_createAttributesColumnModel(_layerAttributes) |
|
{ |
|
var _columns=new Array(); |
|
|
|
Ext.each(_layerAttributes,function(item){ |
|
|
|
if (!item._attributeIsGeometry) |
|
{ |
|
var _trans=item._attributeTranslation; |
|
|
|
if ((_trans==null) || (typeof _trans=="undefined")) |
|
{ |
|
_trans=item._attributeName; |
|
} |
|
|
|
var width=140; |
|
|
|
if (item.width) |
|
{ |
|
width=item.width; |
|
} |
|
|
|
var renderer=""; |
|
|
|
if (item.renderer) |
|
{ |
|
renderer=item.renderer; |
|
} |
|
|
|
var flex=""; |
|
|
|
if (item.flex) |
|
{ |
|
flex=item.flex; |
|
} |
|
|
|
var hidden=false; |
|
|
|
if (item.hidden) |
|
{ |
|
hidden=item.hidden; |
|
} |
|
|
|
if (typeof item._attributeIsVisible!=="undefined") |
|
{ |
|
if(item._attributeIsVisible==false) |
|
{ |
|
hidden=true; |
|
} |
|
else |
|
{ |
|
hidden=false; |
|
} |
|
} |
|
|
|
var hideable=true; |
|
|
|
if (item.hideable==false) |
|
{ |
|
hideable=false; |
|
} |
|
|
|
|
|
if (typeof item._attributeVisible!=="undefined") |
|
{ |
|
hideable=item._attributeVisible; |
|
} |
|
|
|
_columns.push({ |
|
header: _trans, |
|
dataIndex: item._attributeName, |
|
sortable: item._attributeIsSortable, |
|
width:width, |
|
renderer:renderer, |
|
hidden:hidden, |
|
hideable:hideable, |
|
flex:flex |
|
}); |
|
|
|
} |
|
}); |
|
|
|
return _columns; |
|
} |
|
|
|
function fn_addRecordsToStore(_store,_data) |
|
{ |
|
_store.loadData(_data); |
|
} |
|
|
|
function fn_createAttributeSummary(_record,_layerAttributes) |
|
{ |
|
var _summary=new Array(); |
|
|
|
if (_layerAttributes.length>0) |
|
{ |
|
Ext.each(_layerAttributes,function(item){ |
|
|
|
if ((item._attributeShowOnSummary) && (!item._attributeIsGeometry) && (item._attributeVisible)) |
|
{ |
|
var _trans=item._attributeTranslation; |
|
|
|
if ((_trans==null) || (typeof _trans=="undefined")) |
|
{ |
|
_trans=item._attributeName; |
|
} |
|
|
|
var _value=_record[item._attributeName]; |
|
|
|
if(typeof _value=="undefined") |
|
{ |
|
_value=""; |
|
} |
|
|
|
_summary.push("<b>"+_trans+"</b> : "+_value); |
|
} |
|
}); |
|
|
|
if (_summary.length==0) |
|
{ |
|
var i=0; |
|
|
|
Ext.each(_layerAttributes,function(item){ |
|
|
|
if (i<4) |
|
{ |
|
var _trans=item._attributeTranslation; |
|
|
|
if ((!item._attributeIsGeometry) && (item._attributeVisible)) |
|
{ |
|
if ((_trans==null) || (typeof _trans=="undefined")) |
|
{ |
|
_trans=item._attributeName; |
|
} |
|
|
|
var _value=_record[item._attributeName]; |
|
|
|
if(typeof _value=="undefined") |
|
{ |
|
_value=""; |
|
} |
|
|
|
_summary.push("<b>"+_trans+"</b> : "+_value); |
|
|
|
i++; |
|
} |
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
}else{ |
|
|
|
var _attributesFields = []; |
|
|
|
for(var _k in _record) |
|
{ |
|
if ((_k!="_layerId") && (_k!="_featureId") && (_k!="_srsName") && (_k!="_featureUrl") && (_k!="_featureGeomFormat")) |
|
{ |
|
_attributesFields.push({ |
|
"_attributeName":_k.toString(), |
|
"_attributeType":"string", |
|
"_attributeTranslation":null, |
|
"_attributeValue":null, |
|
"_attributeEditor":null, |
|
"_attributeIsSortable":true, |
|
"_attributeIsEditable":true, |
|
"_attributeOrder":0, |
|
"_attributeIsVisible":true, |
|
"_attributeIsSearchable":true, |
|
"_attributeIsGeometry":false, |
|
"_attributeVisible":true, |
|
"_geometryIsMulti":false, |
|
"_attributeShowOnSummary":true |
|
}); |
|
|
|
_summary.push("<b>"+_k+"</b> : "+_record[_k]); |
|
} |
|
} |
|
|
|
if(typeof _record!=="undefined") |
|
{ |
|
mapFindLayerById(_record._layerId)._layerObject._attributesFields=_attributesFields; |
|
} |
|
|
|
} |
|
|
|
_record._summary=_summary.join("<br>"); |
|
|
|
return _record; |
|
} |
|
|
|
function fn_createAttributesGrid(_layerAttributes) |
|
{ |
|
|
|
var g=Ext.create('Ext.grid.Panel', |
|
{ |
|
border:true, |
|
columnLines:true, |
|
split: true, |
|
store:fn_createAttributesStore(_layerAttributes), |
|
columns:fn_createAttributesColumnModel(_layerAttributes) |
|
}); |
|
|
|
return g; |
|
|
|
} |
|
|
|
|
|
|
|
function fn_createAttributesPivotGrid(_feature) |
|
{ |
|
var _store=fn_createStorePivotGrid(); |
|
|
|
var cellEditing = ""; |
|
|
|
var _editBbar=""; |
|
|
|
if (mapFindLayerById(_feature._layerId)._layerObject._isEdited) |
|
{ |
|
|
|
cellEditing= Ext.create('Ext.grid.plugin.CellEditing', { |
|
clicksToEdit: 2, |
|
listeners:{ |
|
'beforeedit': function(editor, e, eOpts ) |
|
{ |
|
var _editor=e.record.get("_attributeEditor"); |
|
|
|
if ((_editor=="") || (_editor==null) || (typeof _editor==="undefined")) |
|
{ |
|
_editor={xtype:'textfield'}; |
|
} |
|
|
|
e.column.setEditor(_editor); |
|
}, |
|
'afteredit':function(editor, e, eOpts) |
|
{ |
|
var isDirty=false; |
|
|
|
_store.each(function(item){ |
|
if(item.dirty == true){ |
|
isDirty = true; |
|
} |
|
}); |
|
|
|
var _f=this.getCmp().getDockedItems('toolbar[dock="bottom"]')[0].items.items; |
|
|
|
if (isDirty) |
|
{ |
|
_f[1].enable(); |
|
}else |
|
{ |
|
_f[1].disable(); |
|
} |
|
} |
|
} |
|
}); |
|
|
|
_editBbar=[ |
|
'->', |
|
{ |
|
xtype:'button', |
|
iconCls:'features_toolbar_save', |
|
disabled:true, |
|
tooltip:_maptab_edit_windowinfo_save_attributes_button, |
|
handler:function(cmp, e) |
|
{ |
|
var _newAttributes=[]; |
|
|
|
_store.each(function(item){ |
|
if(item.dirty == true){ |
|
_newAttributes.push({ |
|
_attributeName:item.get("_attributeName"), |
|
_attributeValue:item.get("_attributeValue") |
|
}); |
|
} |
|
}); |
|
|
|
maptab_edit_change_attributes(_feature,_newAttributes); |
|
} |
|
}, |
|
{ |
|
xtype:'button', |
|
iconCls:'features_toolbar_cancel', |
|
tooltip:_maptab_edit_windowinfo_cancel_attributes_button, |
|
handler:function(cmp, e) |
|
{ |
|
|
|
Ext.getCmp(this.findParentByType("window").id).destroy(); |
|
} |
|
} |
|
] |
|
} |
|
|
|
var g=Ext.create('Ext.grid.Panel', |
|
{ |
|
border:true, |
|
columnLines:true, |
|
split: true, |
|
bbar:_editBbar, |
|
store:_store, |
|
_feature:_feature, |
|
columns:fn_createColumnModelPivotGrid(), |
|
plugins:cellEditing, |
|
disableSelection: true, |
|
selModel: |
|
{ |
|
selType: 'cellmodel' |
|
} |
|
}); |
|
|
|
return g; |
|
|
|
} |
|
|
|
function fn_createStorePivotGrid() |
|
{ |
|
Ext.define('propertyAttributes', { |
|
extend: 'Ext.data.Model', |
|
idProperty: 'featureAttributes_id', |
|
fields:['_attributeName','_attributeTranslation','_attributeValue','_attributeType','_attributeEditor','_attributeIsEditable'] |
|
}); |
|
|
|
var s=Ext.create('Ext.data.Store', |
|
{ |
|
data:[], |
|
model: 'propertyAttributes' |
|
}); |
|
|
|
return s; |
|
} |
|
|
|
function fn_createColumnModelPivotGrid() |
|
{ |
|
var _columns=[{ |
|
header: '', |
|
dataIndex: "_attributeName", |
|
hidden:true, |
|
hideable:false |
|
}, |
|
{ |
|
header: _feature_Attributes_Pivot_AttributeName, |
|
dataIndex: "_attributeTranslation", |
|
hidden:false, |
|
hideable:false |
|
}, |
|
{ |
|
header: _feature_Attributes_Pivot_AttributeValue, |
|
dataIndex: "_attributeValue", |
|
hidden:false, |
|
hideable:false, |
|
flex: 3, |
|
field: { |
|
allowBlank: false |
|
} |
|
}, |
|
{ |
|
header: '', |
|
dataIndex: "_attributeType", |
|
hidden:true, |
|
hideable:false |
|
}, |
|
{ |
|
header: '', |
|
dataIndex: "_attributeEditor", |
|
hidden:true, |
|
hideable:false |
|
}, |
|
{ |
|
header: '', |
|
dataIndex: "_attributeIsEditable", |
|
hidden:true, |
|
hideable:false |
|
}]; |
|
|
|
return _columns; |
|
} |
|
|
|
function fn_createAttributesRecords(_data,_layerAttributes) |
|
{ |
|
var _records=new Array(); |
|
|
|
Ext.each(_layerAttributes,function(item){ |
|
|
|
var _trans=item._attributeTranslation; |
|
|
|
if ((!item._attributeIsGeometry) && (item._attributeVisible==true)) |
|
{ |
|
if ((_trans==null) || (typeof _trans=="undefined")) |
|
{ |
|
_trans=item._attributeName; |
|
} |
|
|
|
var _value=""; |
|
|
|
if (typeof _data!=="undefined") |
|
{ |
|
_value=_data[item._attributeName]; |
|
|
|
if(typeof _value=="undefined") |
|
{ |
|
_value="(Null)"; |
|
} |
|
} |
|
|
|
|
|
if(typeof item.renderer!=="undefined") |
|
{ |
|
_value=item.renderer(_value,"","","","","",""); |
|
} |
|
|
|
_records.push({ |
|
_attributeName:item._attributeName, |
|
_attributeTranslation:_trans, |
|
_attributeValue:_value, |
|
_attributeType:item._attributeType, |
|
_attributeEditor:item._attributeEditor, |
|
_attributeIsEditable:item._attributeIsEditable |
|
}); |
|
|
|
} |
|
|
|
}); |
|
|
|
return _records; |
|
} |
|
|
|
function fn_createAttributesComboBox(_layerAttributes,_cmpId) |
|
{ |
|
|
|
var s = new fn_createAttributesComboStore(_layerAttributes); |
|
|
|
if ((typeof _cmpId==="undefined") || (_cmpId=="")) |
|
{ |
|
_cmpId=Ext.id(); |
|
} |
|
|
|
var c=Ext.create('Ext.form.ComboBox', |
|
{ |
|
border:false, |
|
store: s, |
|
id:_cmpId, |
|
queryMode: 'local', |
|
displayField: '_attributeTranslation', |
|
valueField: '_attributeName', |
|
emptyText:_maptab_east_search_panel_criteria_choose_attribute, |
|
value:"", |
|
forceSelection: true, |
|
selectOnFocus: false, |
|
triggerAction: 'all', |
|
tpl: new Ext.XTemplate('<tpl for=".">' + '<li style="height:22px;" class="x-boundlist-item" role="option">' + '{_attributeTranslation}' + '</li></tpl>'), |
|
editable: false |
|
}); |
|
|
|
return c; |
|
} |
|
|
|
function fn_createAttributesComboStore(_layerAttributes) |
|
{ |
|
var s=new fn_createStorePivotGrid(); |
|
|
|
var _records=new Array(); |
|
|
|
Ext.each(_layerAttributes,function(item){ |
|
|
|
var _trans=item._attributeTranslation; |
|
|
|
if ((!item._attributeIsGeometry) && (item._attributeVisible==true) && (item._attributeIsSearchable==true)) |
|
{ |
|
|
|
if ((_trans==null) || (typeof _trans=="undefined")) |
|
{ |
|
_trans=item._attributeName; |
|
} |
|
|
|
var _value=""; |
|
|
|
if (typeof _data!=="undefined") |
|
{ |
|
_value=_data[item._attributeName]; |
|
|
|
if(typeof _value=="undefined") |
|
{ |
|
_value="(Null)"; |
|
} |
|
} |
|
|
|
_records.push({ |
|
_attributeName:item._attributeName, |
|
_attributeTranslation:_trans, |
|
_attributeValue:_value, |
|
_attributeType:item._attributeType, |
|
_attributeEditor:item._attributeEditor, |
|
_attributeIsEditable:item._attributeIsEditable |
|
}); |
|
|
|
} |
|
|
|
}); |
|
|
|
s.loadData(_records); |
|
|
|
return s; |
|
} |
|
|
|
function fn_createCriteriaComboConditions(_attributeType) |
|
{ |
|
var _data=new Array(); |
|
|
|
switch(_attributeType) |
|
{ |
|
case "string": |
|
_data=[{"condition":'=',"disableValue":false},{"condition":'!=',"disableValue":false},{"condition":'LIKE',"disableValue":false},{"condition":'NOT LIKE',"disableValue":false},{"condition":'IS NOT NULL',"disableValue":true},{"condition":'IS NULL',"disableValue":true}]; |
|
break; |
|
|
|
case "int": |
|
_data=[{condition:'=',disableValue:false},{condition:'>=',disableValue:false},{condition:'>',disableValue:false},{condition:'<=',disableValue:false},{condition:'<',disableValue:false},{condition:'IS NOT NULL',disableValue:true},{condition:'IS NULL',disableValue:true}]; |
|
break; |
|
|
|
case "integer": |
|
_data=[{condition:'=',disableValue:false},{condition:'>=',disableValue:false},{condition:'>',disableValue:false},{condition:'<=',disableValue:false},{condition:'<',disableValue:false},{condition:'IS NOT NULL',disableValue:true},{condition:'IS NULL',disableValue:true}]; |
|
break; |
|
|
|
case "double": |
|
_data=[{condition:'=',disableValue:false},{condition:'>=',disableValue:false},{condition:'>',disableValue:false},{condition:'<=',disableValue:false},{condition:'<',disableValue:false},{condition:'IS NOT NULL',disableValue:true},{condition:'IS NULL',disableValue:true}]; |
|
break; |
|
|
|
case "decimal": |
|
_data=[{condition:'=',disableValue:false},{condition:'>=',disableValue:false},{condition:'>',disableValue:false},{condition:'<=',disableValue:false},{condition:'<',disableValue:false},{condition:'IS NOT NULL',disableValue:true},{condition:'IS NULL',disableValue:true}]; |
|
break; |
|
|
|
case "date": |
|
_data=[{condition:'=',disableValue:false},{condition:'>=',disableValue:false},{condition:'>',disableValue:false},{condition:'<=',disableValue:false},{condition:'<',disableValue:false},{condition:'IS NOT NULL',disableValue:true},{condition:'IS NULL',disableValue:true}]; |
|
break; |
|
|
|
default: |
|
_data=[{condition:'=',disableValue:false},{condition:'!=',disableValue:false},{condition:'LIKE',disableValue:false},{condition:'NOT LIKE',disableValue:false},{condition:'>=',disableValue:false},{condition:'>',disableValue:false},{condition:'<=',disableValue:false},{condition:'<',disableValue:false},{condition:'IS NOT NULL',disableValue:true},{condition:'IS NULL',disableValue:true}]; |
|
break; |
|
} |
|
|
|
return _data; |
|
} |
|
|
|
function fn_createCriteriaAndOrCombo(_cmpId) |
|
{ |
|
|
|
if ((typeof _cmpId==="undefined") || (_cmpId=="")) |
|
{ |
|
_cmpId=Ext.id(); |
|
} |
|
|
|
|
|
var c=Ext.create('Ext.form.ComboBox', |
|
{ |
|
store: new Ext.data.SimpleStore({ |
|
fields: ['name','value'], |
|
data: [ |
|
["",""], |
|
["AND","AND"], |
|
["OR","OR"] |
|
] |
|
}), |
|
displayField: 'name', |
|
valueField: 'value', |
|
emptyText:"AND", |
|
width:60, |
|
id:_cmpId, |
|
forceSelection: true, |
|
triggerAction: 'all', |
|
selectOnFocus: false, |
|
mode: 'local', |
|
editable: false, |
|
tpl: new Ext.XTemplate('<tpl for=".">' + '<li style="height:22px;" class="x-boundlist-item" role="option">' + '{name}' + '</li></tpl>') |
|
}); |
|
|
|
return c; |
|
} |
|
|
|
function fn_createCriteriaParenthesis() |
|
{ |
|
var c=Ext.create('Ext.form.ComboBox', |
|
{ |
|
store: new Ext.data.SimpleStore({ |
|
fields: ['name','value'], |
|
data: [ |
|
["",""], |
|
["(","("], |
|
[")",")"] |
|
] |
|
}), |
|
displayField: 'name', |
|
valueField: 'value', |
|
emptyText:"", |
|
width:60, |
|
forceSelection: true, |
|
triggerAction: 'all', |
|
selectOnFocus: false, |
|
mode: 'local', |
|
editable: false, |
|
tpl: new Ext.XTemplate('<tpl for=".">' + '<li style="height:22px;" class="x-boundlist-item" role="option">' + '{name}' + '</li></tpl>') |
|
}); |
|
|
|
return c; |
|
} |
|
|
|
|