Ext.onReady(function(){
Ext.QuickTips.init();
// start Variabile ------------------------------------------------------------------------------------------------------------
var xg = Ext.grid;
var sm = new xg.CheckboxSelectionModel();
var remoteSort = true;
var localFilter = false;
// end Variabile ------------------------------------------------------------------------------------------------------------
// start parametri harta ------------------------------------------------------------------------------------------------------------
// fereastră filtru hartă
var win, block = Ext.Element.get(Ext.DomQuery.select("div.execute")[0]);
var container = Ext.Element.get(Ext.DomHelper.append(block, {tag: "div"}));
var rextent = new OpenLayers.Bounds(2120668,5359152,3417039,6215247);
var options = {
projection: new OpenLayers.Projection("EPSG:900913"),
displayProjection: new OpenLayers.Projection("EPSG:4326"),
units: "m",
controls: [],
maxResolution: 156543.0339,
maxExtent: new OpenLayers.Bounds(-20037508.34, -20037508.34, 20037508.34, 20037508.34),
restrictedExtent: rextent
};
var map = new OpenLayers.Map('map', options);
// straturi
var index_pt_20k = new OpenLayers.Layer.WMS("Caroiaj","https://www.geo-spatial.org/geoserver/wms", {layers: 'geospatial:index_pt_20k', format: 'image/png', srs: 'EPSG:900913', tiled: 'true', transparent: 'true'}, {isBaseLayer: false, displayInLayerSwitcher: false});
var osm = new OpenLayers.Layer.OSM("OpenStreetMap", null, {transitionEffect: "resize", attribution: "© OpenStreetMap contributors"});
var select = new OpenLayers.Layer.Vector("Selection", {styleMap: new OpenLayers.Style(OpenLayers.Feature.Vector.style["select"]), displayInLayerSwitcher: false});
map.addLayers([osm, index_pt_20k, select]);
//controale harta
map.addControl (new OpenLayers.Control.PanZoom());
map.addControl(new OpenLayers.Control.LayerSwitcher());
//butoane & filtre selectie
selectControls = {
controlBox: new OpenLayers.Control.GetFeature({
protocol: OpenLayers.Protocol.WFS.fromWMSLayer(index_pt_20k),
click: false,
box: true,
hover: false,
multipleKey: "shiftKey",
toggleKey: "altKey"
}),
controlClick: new OpenLayers.Control.GetFeature({
protocol: OpenLayers.Protocol.WFS.fromWMSLayer(index_pt_20k),
click: true,
box: false,
hover: false,
multipleKey: "shiftKey",
toggleKey: "altKey"
})
}
selectControls.controlClick.events.register("featureselected", this, function(e) {
select.addFeatures([e.feature]);
});
selectControls.controlClick.events.register("featureunselected", this, function(e) {
select.removeFeatures([e.feature]);
});
selectControls.controlBox.events.register("featureselected", this, function(e) {
select.addFeatures([e.feature]);
});
selectControls.controlBox.events.register("featureunselected", this, function(e) {
select.removeFeatures([e.feature]);
});
map.addControl(selectControls.controlBox);
selectControls.controlBox.activate();
map.addControl(selectControls.controlClick);
var selectByClickBtn = new OpenLayers.Control({displayClass: "selectByClickBtn", title: "Selectare individuală"});
var selectByBoxBtn = new OpenLayers.Control({displayClass: "selectByBoxBtn", title: "Selectare dreptunghiulară"});
var clearSelectionBtn = new OpenLayers.Control.Button({displayClass: "clearSelectionBtn", trigger: clearSelection, title: "Ștergere selecție"});
var panel = new OpenLayers.Control.Panel({defaultControl: selectByBoxBtn});
var pan = new OpenLayers.Control.Navigation({title: "Navigare", displayClass: "panControl"});
var zoom = new OpenLayers.Control.ZoomBox({title:"Mărire", displayClass: "zoomControl"});
panel.addControls([selectByBoxBtn, selectByClickBtn, clearSelectionBtn, zoom, pan]);
panel.activateControl([selectByClickBtn]);
map.addControl(panel);
selectByBoxBtn.events.register("activate", this, function(e) {
select.destroyFeatures();
selectControls.controlClick.deactivate();
selectControls.controlBox.activate();
});
selectByClickBtn.events.register("activate", this, function(e) {
select.destroyFeatures();
selectControls.controlBox.deactivate();
selectControls.controlClick.activate();
});
function clearSelection() {
select.destroyFeatures();
}
// functie extragere tile-uri OSM
function osm_getTileURL(bounds) {
var res = this.map.getResolution();
var x = Math.round((bounds.left - this.maxExtent.left) / (res * this.tileSize.w));
var y = Math.round((this.maxExtent.top - bounds.top) / (res * this.tileSize.h));
var z = this.map.getZoom();
var limit = Math.pow(2, z);
if (y < 0 || y >= limit) {
return OpenLayers.Util.getImagesLocation() + "404.png";
} else {
x = ((x % limit) + limit) % limit;
return this.url + z + "/" + x + "/" + y + "." + this.type;
}
}
function toggleControl(element) {
for (var key in selectControls) {
var control = selectControls[key];
if (element.value == key && element.checked) {
control.activate();
select.destroyFeatures();
} else {
control.deactivate();
}
}
}
// end parametri harta ------------------------------------------------------------------------------------------------------------
store = new Ext.data.Store({
url: 'pt-grid-json.php',
remoteSort: remoteSort,
reader: new Ext.data.JsonReader({
root: 'rows',
id: 'idi',
totalProperty: 'results'
},
[
{name: 'idi', sortType: 'asInt', type: 'int'},
{name: 'indicativ'},
{name: 'numePlansa'},
{name: 'anTiparire'},
{name: 'action'},
{name: 'dowId'}
])
});
store.setDefaultSort('idi', 'asc');
function butonStatus(val){
if (val == 0){
return '';
}
if (val == 1){
return '';
}
if (val == 2){
return '';
}
}
function editLink(val){
action = val.split('#');
if( action[0] == 1)
return '';
else
return '';
}
function downloadLink(val){
return '';
}
var combo = new Ext.form.ComboBox({
name : 'perpage',
width: 50,
store: new Ext.data.ArrayStore({
fields: ['id'],
data : [
['10'],
['20'],
['35'],
['50'],
['100']
]
}),
mode : 'local',
value: '20',
listWidth : 40,
triggerAction : 'all',
displayField : 'id',
valueField : 'id',
editable : false,
forceSelection: true
});
var filters = new Ext.ux.grid.GridFilters({
encode: false,
local: localFilter,
filters: [
{type: 'string', dataIndex: 'numePlansa'},
{type: 'int', dataIndex: "indicativ"},
{type: 'int', dataIndex: "idi"},
{type: 'int', dataIndex: "anTiparire"}
]
});
// start model coloane ------------------------------------------------------------------------------------------------------------
var createColModel = function (finish, start) {
var columns = [
sm,
{dataIndex: 'idi', header: 'Id', width: 100},
{dataIndex: 'indicativ', id: 'indicativ', header: 'Indicativ'},
{dataIndex: 'numePlansa', header: 'Nume hartă', width: 100, id: 'numePlansa', width: 300},
{dataIndex: 'anTiparire', header: 'An tipărire', width: 100},
//{dataIndex: 'action', header: 'Preview', width: 50, renderer: editLink},
{dataIndex: 'dowId', header: 'Download', width: 100, renderer: downloadLink}
];
return new Ext.grid.ColumnModel({
columns: columns.slice(start || 0, finish),
defaults: {sortable: true}
});
};
// end model coloane ------------------------------------------------------------------------------------------------------------
// bara subsol
var bbar = new Ext.PagingToolbar({
pageSize: 20,
store: store,
displayInfo: true,
plugins: [filters],
items:[
'-',
'Per Pagină: ',
combo,
{
pressed: false,
enableToggle:true,
tooltip: 'Comută între sortarea locală și cea server',
text: 'Sortare locală: ' + (store.remoteSort ? 'Off' : 'On'),
toggleHandler: function(btn, pressed){
var toggle = (store.remoteSort === true) ? false : true;
store.remoteSort = toggle;
var text = 'Sortare locală: ' + (store.remoteSort === true ? 'Dezactivată' : 'Activată');
btn.setText(text);
}
},
{
pressed: false,
enableToggle:true,
text: 'Filtrare locală: ' + (localFilter ? 'Activată' : 'Dezactivată'),
tooltip: 'Comută între filtrarea locală și cea server',
toggleHandler: function(btn1, pressed1){
var toggle = (grid.filters.local === true) ? false : true;
grid.filters.local = toggle;
var text = 'Filtrare locală: ' + (grid.filters.local === true ? 'Activată' : 'Dezactivată');
btn1.setText(text);
}
},
{
text: 'Anulare filtre',
tooltip: 'Anulează toate filtrele active',
handler: function () {
grid.filters.clearFilters();
}
},
{
text: 'Anulare filtru hartă',
handler: function () {
store.setBaseParam('mapFilters','');
store.load();
}
},
{
text: "Filtru hartă",
cls: "execute",
handler: function() {
if(!win){
win = new Ext.Window({
title: "Filtru hartă",
height: 420, width: 620,
layout: "fit",
closeAction: "hide",
items: [{
xtype: "gx_mappanel",
map: map,
bbar: new Ext.Toolbar({
items:[
'-',
{
text: 'Aplică filtrul',
handler: function () {
var mapFilters = new Array();
for ( var i=0, len=select.features.length; i