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.

214 lines
5.8 KiB

2 years ago
var poseidon_translations = {
el_gr: {
measurement_tab_title: 'Μετρήσεις',
choose_date_from: 'Ημερομηνία Από',
choose_date_to: 'Ημερομηνία Έως',
clear_btn: 'Καθαρισμός Φόρμας',
execute_btn: 'Εμφάνιση Αποτελεσμάτων',
panel_title: 'Poseidon System',
select_geo: 'Επιλέξτε Περιοχή',
choose_parameter: 'Επιλέξτε Παράμετρο',
choose_date_from: 'Ημερομηνία Από',
choose_date_to: 'Ημερομηνία Έως',
no_records: 'Δεν βρέθηκαν δεδομένα',
filename: 'Αρχεία',
send_email: 'Αποστολή e-mail',
please_wait: 'Παρακαλώ περιμένετε...'
},
en_us: {
measurement_tab_title: 'Measurements',
choose_date_from: 'Date From',
choose_date_to: 'Date To',
clear_btn: 'Clear Form',
execute_btn: 'Show Results',
panel_title: 'Poseidon System',
select_geo: 'Select Area',
choose_parameter: 'Select Parameter',
choose_date_from: 'Date From',
choose_date_to: 'Date To',
no_records: 'No records found',
filename: 'Files',
send_email: 'Send e-mail',
please_wait: 'Please wait...'
}
}
var poseidon_layers = [
['poseidon:poseidon', 'da3386bf44588b37a7ff447ae374582f18340009637aa630afaa963a41d3650d']
];
function poseidon_measurements_tab(w) {
w.setPosition(-150,-150)
w.setWidth(700);
w.setHeight(530);
var _layer = mapFindLayerById(w._feature._layerId);
if (poseidon_layers.findIndex(x => x[0] === _layer._layerObject._layerName) >= 0) {
var _Id = Ext.id();
var tab = Ext.create('Ext.Panel',
{
title: poseidon_translations[language].measurement_tab_title,
border: false,
layout: 'fit',
autoScroll: true,
items: [{
xtype: 'tabpanel',
id: _Id,
border: false,
style: 'padding:0px;',
items: [
]
}],
listeners: {
beforerender: function () {
var p = new fn_get();
p._async = true;
p._data = [{
_layerId: w._feature._layerId,
_serviceType: mapFindLayerById(w._feature._layerId)._serviceObject._serviceType,
_serviceName: mapFindLayerById(w._feature._layerId)._serviceObject._serviceName,
_layerName: mapFindLayerById(w._feature._layerId)._layerObject._layerName,
_featureUrl: w._feature._featureUrl,
_request: "getAttributes"
}]
p._timeout = 5000;
p._success = function (_response, _opts) {
var _response = Ext.JSON.decode(_response.responseText)[0]._response._attributes[0][0];
var parameters = JSON.parse(_response.pgroup)
var categories = [];
Object.keys(parameters).forEach(function (i) {
if (!categories.find(o => o["category"] === parameters[i]['long']))
categories.push({ "category": parameters[i]['long'], "parameters": [] });
})
for (const property in parameters) {
var cat = categories.find(category => category['category'] === parameters[property]['long'])
cat.parameters.push(property);
}
categories.forEach(function (tab) {
var category_tab = poseidon_create_category_tab(tab, _Id, _response)
Ext.getCmp(_Id).add(category_tab);
})
Ext.getCmp(_Id).setActiveTab(0);
};
p.get();
}
}
}
);
return tab
}
}
function poseidon_create_category_tab(tab, _Id, _response) {
var category_tab = Ext.create('Ext.Panel', {
title: tab["category"],
border: false,
layout: 'fit',
autoScroll: true,
id: tab["category"] + _Id,
items: [{
xtype: 'tabpanel',
layout: 'form',
border: false,
items: tab.parameters.map(function (param) {
return poseidon_create_tab_parameter(tab, param, _Id, _response)
})
}]
});
return category_tab;
}
function poseidon_create_tab_parameter(tab, param, _Id, _response) {
var id = _response['tspr'] + '_' + _response['type'] + '_' + _response['name_code'];
var chosenDtEnd = _response['dateEnd'].split('T')[0];
var chosenDtStart = _response['dateStart'].split('T')[0];
var parameter_tab = Ext.create('Ext.Panel', {
title: param,
border: false,
layout: 'fit',
autoScroll: true,
id: tab["category"] + param + _Id,
html: '<div id="' + tab["category"] + param + _Id + '_chart" style="width:100%; height:400px;">' + poseidon_translations[language].please_wait + '</div>',
listeners: {
afterrender: function () {
var title = '';
fetch(host + 'modules/poseidon/index.php?request=0&id=' + id)
.then(response => response.json())
.then(data => {
title = data['info']['params'][tab["category"].charAt(0)][param]['name'] + ' (' + data['info']['params'][tab["category"].charAt(0)][param]['unit'] + ')';
});
Highcharts.getJSON(host + 'modules/poseidon/index.php?request=1&id=' + id + '&param=' + param + '&chosenDtStart=' + chosenDtStart + '&chosenDtEnd=' + chosenDtEnd, function (data) {
var d = data[0][0].data;
var dn = [];
d.forEach(function (i) {
dn.push([i.x, i.y]);
});
Highcharts.stockChart(tab["category"] + param + _Id + '_chart', {
rangeSelector: {
selected: 1
},
title: {
text: title
},
series: [{
name: param,
data: dn
}]
});
});
}
}
});
return parameter_tab;
}
init_featureInfoWindow_tabs.push(poseidon_measurements_tab);