Fullstack Portal Created by the HCMR for the Marine Strategy Framework Directive Program in order to cover demands and aspects considering extendability and maintainability
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

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;
}