refactoring

main
Ogoun 5 months ago
parent 9011eb2a5c
commit b30dac2562

@ -0,0 +1,15 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "chrome",
"request": "launch",
"name": "Launch Chrome against localhost",
"url": "http://localhost:8080",
"webRoot": "${workspaceFolder}"
}
]
}

Binary file not shown.

@ -20,43 +20,38 @@
</head> </head>
<body class="dark"> <body class="dark">
<div class="layout"> <div class="page">
<table style="border: 0; display: block;">
<tbody>
<tr>
<td style="width: 760px;">
<div class="header-text">Планирование маршрутов</div> <div class="header-text">Планирование маршрутов</div>
<div class="content">
<div class="row" style="height: 450px;">
<div class="legend-row">
<div class="hr"></div> <div class="hr"></div>
</div>
<div id="map"></div> <div id="map"></div>
<div class="options">
<div class="caption">Options</div>
<div class="option">
<div id="use-custom-markers"></div>
</div>
<div class="option">
<div id="show-tooltips"></div>
</div>
</div>
</div>
<div class="row" style="height: 80px;">
<div class="legend-row"> <div class="legend-row">
<div class="legend">Маршруты</div> <div class="legend">Маршруты</div>
</div> </div>
<div class="hr"></div>
<br /> <br />
<div class="dx-field"> <div class="dx-field">
<div id="one-section"></div> <div id="one-section"></div>
</div> </div>
</div>
<div class="row" style="height: 450px;">
<div class="legend-row">
<div class="hr"></div> <div class="hr"></div>
</div>
<br /> <br />
<div class="dx-field"> <div class="dx-field">
<div id="simpleList"></div> <div id="regionPointsList"></div>
</div> </div>
</td>
<td style="width: 640px;">
<div class="travel">
<div class="dx-field">
<div id="selectedPointsList"></div>
</div> </div>
</div> </div>
</td>
</tr>
</tbody>
</table>
</div> </div>
<script src="js/data.js"></script> <script src="js/data.js"></script>
<script src="js/index.js"></script> <script src="js/index.js"></script>

@ -1,31 +1,10 @@
function loadPoints(region) { let markersData = [];
let points = []; let regions = [];
for (var p_idx in region.points) { let points = [];
var point = region.points[p_idx]; const markerUrl = './img/map-marker.png';
var loc = point.gps.split(',');
var lat = parseFloat(loc[0].trim())
var lon = parseFloat(loc[1].trim())
points.push({
id: p_idx,
text: point.name + ' (' + point.description + ')',
location: [lat, lon],
tooltip: {
text: point.description,
}
});
}
return points;
}
$(() => { // Инициализация данных, подготовка массивов для загрузки в контролы
let markersData = []; function initData() {
let regions = [];
/*regions.push({
id: -1,
name: "-- Все регионы --",
icon: 'airplane'
});*/
for (var r_idx in data['regions']) { for (var r_idx in data['regions']) {
var region = data['regions'][r_idx] var region = data['regions'][r_idx]
regions.push({ regions.push({
@ -46,9 +25,29 @@ $(() => {
}); });
} }
} }
}
const markerUrl = './img/map-marker.png'; // Загрузка точек на карте из региона
function loadPoints(region) {
points = [];
for (var p_idx in region.points) {
var point = region.points[p_idx];
var loc = point.gps.split(',');
var lat = parseFloat(loc[0].trim())
var lon = parseFloat(loc[1].trim())
points.push({
id: p_idx,
text: point.name + ' (' + point.description + ')',
location: [lat, lon],
tooltip: {
text: point.description,
}
});
}
}
// Инициализация контрола карты
function initMap() {
const mapWidget = $('#map').dxMap({ const mapWidget = $('#map').dxMap({
provider: 'bing', provider: 'bing',
apiKey: { apiKey: {
@ -56,25 +55,18 @@ $(() => {
}, },
zoom: 11, zoom: 11,
height: 440, height: 440,
width: '100%', width: 760,
controls: true, controls: true,
markerIconSrc: markerUrl, markerIconSrc: markerUrl,
markers: markersData, markers: markersData,
type: 'roadmap' type: 'roadmap'
}).dxMap('instance'); }).dxMap('instance');
}
$('#one-section').dxDropDownButton({ // Пересоздание списка точек указанного региона, для выбора мест к посещению
text: 'Выбор региона', function rebuildRegionPointsList(region) {
icon: 'globe', loadPoints(region);
dropDownOptions: { const listWidget = $('#regionPointsList').dxList({
width: 230,
},
displayExpr: 'name',
keyExpr: 'id',
onItemClick(e) {
var region = data['regions'][e.itemData.id];
var points = loadPoints(region);
const listWidget = $('#simpleList').dxList({
dataSource: new DevExpress.data.DataSource({ dataSource: new DevExpress.data.DataSource({
store: new DevExpress.data.ArrayStore({ store: new DevExpress.data.ArrayStore({
key: 'id', key: 'id',
@ -85,13 +77,38 @@ $(() => {
showSelectionControls: true, showSelectionControls: true,
selectionMode: 'all', selectionMode: 'all',
selectByClick: false, selectByClick: false,
onSelectionChanged() { onSelectionChanged() {
alert(listWidget.option('selectedItemKeys').join(', ')); rebuildSelectedPointsList(listWidget.option('selectedItemKeys'));
}, },
}).dxList('instance'); }).dxList('instance');
}
// Инициализация выпадающего списка с регионами
function initRegionDropDown() {
$('#one-section').dxDropDownButton({
text: 'Выбор региона',
icon: 'globe',
dropDownOptions: {
width: 230,
},
displayExpr: 'name',
keyExpr: 'id',
onItemClick(e) {
var region = data['regions'][e.itemData.id];
rebuildRegionPointsList(region);
DevExpress.ui.notify(`${e.itemData.name}`, 'success', 600); DevExpress.ui.notify(`${e.itemData.name}`, 'success', 600);
}, },
items: regions, items: regions,
}); });
}
function rebuildSelectedPointsList(selectedPointsIndexes)
{
}
$(() => {
initData();
initMap();
initRegionDropDown();
}); });

@ -5,12 +5,20 @@
margin: 0; margin: 0;
} }
.layout .page
{ {
width: 1270px;
font-family: 'Segoe UI', Helvetica, 'Droid Sans', Tahoma, Geneva, sans-serif;
font-weight: 400;
margin: 0 auto; margin: 0 auto;
width: 1280px;
height: 960px;
font-weight: 400;
font-family: 'Segoe UI', Helvetica, 'Droid Sans', Tahoma, Geneva, sans-serif;
}
.travel
{
vertical-align: top;
width: 400px;
float: right;
} }
.dark .dark
@ -25,7 +33,7 @@
font-family: 'Segoe UI Light', 'Helvetica Neue Light', 'Segoe UI', 'Helvetica Neue', Helvetica, 'Trebuchet MS', 'Droid Sans', Tahoma, Geneva, sans-serif; font-family: 'Segoe UI Light', 'Helvetica Neue Light', 'Segoe UI', 'Helvetica Neue', Helvetica, 'Trebuchet MS', 'Droid Sans', Tahoma, Geneva, sans-serif;
font-weight: 200; font-weight: 200;
margin-left: 100px; margin-left: 100px;
padding: 60px 0 0 0; padding: 0 0 30px 0;
} }
.dark .header-text .dark .header-text
@ -33,50 +41,9 @@
color: white; color: white;
} }
.content
{
width: 1070px;
height: 960px;
padding: 40px 100px;
}
.row
{
width: 1070px;
margin-top: 10px;
overflow: hidden;
}
.legend-row
{
position: relative;
height: 17px;
width: 1500px;
}
.row::after .legend-row::after
{
content: ' ';
display: block;
height: 0;
clear: both;
visibility: hidden;
}
.legend
{
font-family: 'Segoe UI', Helvetica, 'Droid Sans', Tahoma, Geneva, sans-serif;
font-weight: 400;
font-size: 15px;
margin-right: 3px;
z-index: 10;
float: left;
color: white;
}
.hr .hr
{ {
width: 1000px; width: 760px;
height: 10px; height: 10px;
border-bottom: 1px solid #6b7289; border-bottom: 1px solid #6b7289;
float: left; float: left;

Loading…
Cancel
Save

Powered by TurnKey Linux.