Updated Building Map / added liezen export import script
This commit is contained in:
@@ -384,9 +384,13 @@
|
||||
accessToken: '<?=TT_MAPBOX_TILE_API_TOKEN?>'
|
||||
}).addTo(buildingMap);
|
||||
|
||||
L.MakiMarkers.accessToken = '<?=TT_MAPBOX_TILE_API_TOKEN?>';
|
||||
|
||||
addMarkers();
|
||||
}
|
||||
|
||||
|
||||
|
||||
function addMarkers() {
|
||||
if(!Array.isArray(buildings) | !buildings.length) {
|
||||
return false;
|
||||
@@ -399,7 +403,36 @@
|
||||
}
|
||||
var gps = [building.gps_lat, building.gps_long];
|
||||
all_coords.push(gps);
|
||||
var marker = L.marker(gps).addTo(buildingMap);
|
||||
|
||||
var icon_color = "#CB2B3E";
|
||||
var icon_name = "home";
|
||||
|
||||
if(building.status == "connected") {
|
||||
icon_color = "#2AAD27";
|
||||
} else if(building.status == "pipework-done") {
|
||||
icon_color = "#CB8427";
|
||||
}
|
||||
|
||||
if(building.type.match(/^(Zwei)/i)) {
|
||||
icon_name = "town";
|
||||
} else if(building.type.match(/^(Mehr)/i)) {
|
||||
icon_name = "city";
|
||||
} else if(building.type.match(/^(Unternehmen)/i)) {
|
||||
icon_name = "industry";
|
||||
} else if(building.type.match(/^(Sender)/i)) {
|
||||
icon_name = "communications-tower";
|
||||
}
|
||||
|
||||
var marker_popup_content = '<?php include(realpath(dirname(__FILE__))."/include/building_popup.php");?>';
|
||||
|
||||
[["street", building.street], ["zip", building.zip], ["city", building.city], ["type", building.type], ["code", building.code], ["popname", building.popname], ["gps", building.gps_lat + ", " + building.gps_long],
|
||||
["contact", building.contact], ["phone", building.phone], ["email", building.email]
|
||||
].forEach(function(item) {
|
||||
marker_popup_content = marker_popup_content.replaceAll("{{" + item[0].toUpperCase() + "}}", item[1]);
|
||||
});
|
||||
|
||||
var icon = L.MakiMarkers.icon({icon: icon_name, color: icon_color, size: "l"});
|
||||
var marker = L.marker(gps, {icon: icon}).addTo(buildingMap).bindPopup(marker_popup_content);
|
||||
markers[building.id] = marker;
|
||||
});
|
||||
|
||||
|
||||
36
Layout/default/Building/include/building_popup.php
Normal file
36
Layout/default/Building/include/building_popup.php
Normal file
@@ -0,0 +1,36 @@
|
||||
<?php
|
||||
ob_start();
|
||||
?>
|
||||
<div class="font-weight-bold">
|
||||
{{STREET}}<br />
|
||||
{{ZIP}} {{CITY}}
|
||||
</div>
|
||||
|
||||
<hr />
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<th>Objekt-ID:</th>
|
||||
<td>{{CODE}}</td>
|
||||
</tr><tr>
|
||||
<th>Gebäudetyp:</th>
|
||||
<td>{{TYPE}}</td>
|
||||
</tr><tr>
|
||||
<th>POP:</th>
|
||||
<td>{{POPNAME}}</td>
|
||||
</tr><tr>
|
||||
<th>GPS:</th>
|
||||
<td><a href="https://maps.google.com/maps?t=k&q=loc:{{GPS}}">{{GPS}}</a></td>
|
||||
</tr><tr>
|
||||
<th>Kontakt:</th>
|
||||
<td>{{CONTACT}}</td>
|
||||
</tr><tr>
|
||||
<th>Telefon:</th>
|
||||
<td>{{PHONE}}</td>
|
||||
</tr><tr>
|
||||
<th>Email:</th>
|
||||
<td>{{EMAIL}}</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
<?=str_replace("\n"," ",ob_get_clean())?>
|
||||
@@ -26,6 +26,7 @@
|
||||
<script type="text/javascript" src="<?=self::getResourcePath()?>js/bootstrap-datepicker.de.min.js"></script>
|
||||
<script type="text/javascript" src="<?=self::getResourcePath()?>assets/js/geo/geo.js"></script>
|
||||
<script type="text/javascript" src="<?=self::getResourcePath()?>assets/js/leaflet.js"></script>
|
||||
<script type="text/javascript" src="<?=self::getResourcePath()?>assets/js/leaflet.MakiMarkers.js"></script>
|
||||
<script type="text/javascript" src="<?=self::getResourcePath()?>js/popper.min.js"></script>
|
||||
<script type="text/javascript" src="<?=self::getResourcePath()?>js/bootstrap.min.js"></script>
|
||||
<script type="text/javascript" src="<?=self::getResourcePath()?>assets/js/bootstrap-select.min.js"></script>
|
||||
|
||||
@@ -397,8 +397,31 @@ class BuildingController extends mfBaseController {
|
||||
$results = BuildingModel::search($filter);
|
||||
|
||||
foreach($results as $building) {
|
||||
$data = $building->data;
|
||||
//$this->log->debug("building status: ".print_r($building->status,true));
|
||||
$data = clone($building->data);
|
||||
$data->id = $building->id;
|
||||
$data->status = "none";
|
||||
$data->type = $building->type->name;
|
||||
$data->popname = ($building->pop_id) ? $building->pop->name : "-";
|
||||
|
||||
$terms = [];
|
||||
foreach($building->terminations as $term) {
|
||||
$building_term = [];
|
||||
$building_term['id'] = $term->id;
|
||||
$building_term['status'] = "none";
|
||||
|
||||
//$this->log->debug("building status: ".print_r($building->status,true));
|
||||
if($term->status->code == TT_TERMSTATUS_CONNECTED) {
|
||||
$building_term['status'] = "connected";
|
||||
$data->status = "connected";
|
||||
} elseif($building->status->code == TT_BUILDINGSTATUS_CONNECTED) {
|
||||
$building_term['status'] = "pipework-done";
|
||||
if($data->status != "connected") $data->status = "pipework-done";
|
||||
}
|
||||
$terms[] = $building_term;
|
||||
}
|
||||
|
||||
$data->terminations = $terms;
|
||||
$buildings[] = $data;
|
||||
}
|
||||
|
||||
|
||||
@@ -168,7 +168,7 @@ class BuildingModel {
|
||||
}
|
||||
}
|
||||
|
||||
if(is_array($filter['type']) && count($filter['type'])) {
|
||||
if(array_key_exists("type", $filter) && is_array($filter['type']) && count($filter['type'])) {
|
||||
$ot = $filter['type'];
|
||||
$in = [];
|
||||
foreach($ot as $type) {
|
||||
|
||||
@@ -21,6 +21,9 @@ class Preordernotification extends mfBaseModel {
|
||||
public function sendToPreorder(Preorder $preorder, $email_to = false) {
|
||||
$subject = $this->subject;
|
||||
$body = $this->replaceBodyVariables($this->body_html, $preorder); // TODO: Variable replacement
|
||||
|
||||
// TODO: Extract text part
|
||||
|
||||
//var_dump($body);exit;
|
||||
$from = $this->sender_email;
|
||||
$from_name = $this->sender_name;
|
||||
|
||||
103
public/assets/js/leaflet.MakiMarkers.js
Normal file
103
public/assets/js/leaflet.MakiMarkers.js
Normal file
@@ -0,0 +1,103 @@
|
||||
/*
|
||||
* Leaflet plugin to create map icons using Maki Icons from MapBox.
|
||||
*
|
||||
* References:
|
||||
* Maki Icons: https://www.mapbox.com/maki/
|
||||
* Mapbox Marker API: https://www.mapbox.com/api-documentation/#retrieve-a-standalone-marker
|
||||
* Possible icon names: https://raw.githubusercontent.com/mapbox/maki/master/layouts/all.json
|
||||
*
|
||||
* Usage:
|
||||
* L.MakiMarkers.accessToken = "<YOUR_ACCESS_TOKEN>";
|
||||
* var icon = L.MakiMarkers.icon({icon: "rocket", color: "#b0b", size: "m"});
|
||||
*
|
||||
* License:
|
||||
* MIT: http://jseppi.mit-license.org/
|
||||
*/
|
||||
/*global L:false */
|
||||
(function () {
|
||||
"use strict";
|
||||
L.MakiMarkers = {
|
||||
accessToken: null,
|
||||
defaultColor: "#0a0",
|
||||
defaultIcon: "circle-stroked",
|
||||
defaultSize: "m",
|
||||
apiUrl: "https://api.mapbox.com/v4/marker/",
|
||||
smallOptions: {
|
||||
iconSize: [20, 50],
|
||||
popupAnchor: [0,-20]
|
||||
},
|
||||
mediumOptions: {
|
||||
iconSize: [30,70],
|
||||
popupAnchor: [0,-30]
|
||||
},
|
||||
largeOptions: {
|
||||
iconSize: [36,90],
|
||||
popupAnchor: [0,-40]
|
||||
}
|
||||
};
|
||||
|
||||
L.MakiMarkers.Icon = L.Icon.extend({
|
||||
options: {
|
||||
//Mapbox API access token, see https://www.mapbox.com/api-documentation/?language=CLI#access-tokens
|
||||
//Instead of setting with each icon, you can set globally as L.MakiMarkers.accessToken
|
||||
accessToken: null,
|
||||
//Maki icon: any valid name, see https://raw.githubusercontent.com/mapbox/maki/master/layouts/all.json
|
||||
icon: L.MakiMarkers.defaultIcon,
|
||||
//Marker color: short or long form hex color code
|
||||
color: L.MakiMarkers.defaultColor,
|
||||
//Marker size: "s" (small), "m" (medium), or "l" (large)
|
||||
size: L.MakiMarkers.defaultSize,
|
||||
shadowAnchor: null,
|
||||
shadowSize: null,
|
||||
shadowUrl: null,
|
||||
className: "maki-marker"
|
||||
},
|
||||
|
||||
initialize: function(options) {
|
||||
var pin;
|
||||
var tokenQuery;
|
||||
|
||||
var accessToken = options.accessToken || L.MakiMarkers.accessToken;
|
||||
if (!accessToken) {
|
||||
throw new Error("Access to the Mapbox API requires a valid access token.");
|
||||
}
|
||||
|
||||
tokenQuery = "?access_token=" + accessToken;
|
||||
options = L.setOptions(this, options);
|
||||
|
||||
switch (options.size) {
|
||||
case "s":
|
||||
L.extend(options, L.MakiMarkers.smallOptions);
|
||||
break;
|
||||
case "l":
|
||||
L.extend(options, L.MakiMarkers.largeOptions);
|
||||
break;
|
||||
default:
|
||||
options.size = "m";
|
||||
L.extend(options, L.MakiMarkers.mediumOptions);
|
||||
break;
|
||||
}
|
||||
|
||||
pin = "pin-" + options.size;
|
||||
|
||||
if (options.icon !== null) {
|
||||
pin += "-" + options.icon;
|
||||
}
|
||||
|
||||
if (options.color !== null) {
|
||||
if (options.color.charAt(0) === "#") {
|
||||
options.color = options.color.substr(1);
|
||||
}
|
||||
|
||||
pin += "+" + options.color;
|
||||
}
|
||||
|
||||
options.iconUrl = "" + L.MakiMarkers.apiUrl + pin + ".png" + tokenQuery;
|
||||
options.iconRetinaUrl = L.MakiMarkers.apiUrl + pin + "@2x.png" + tokenQuery;
|
||||
}
|
||||
});
|
||||
|
||||
L.MakiMarkers.icon = function(options) {
|
||||
return new L.MakiMarkers.Icon(options);
|
||||
};
|
||||
})();
|
||||
233
scripts/addressdb/liezen/import-from-modified-export.php
Normal file
233
scripts/addressdb/liezen/import-from-modified-export.php
Normal file
@@ -0,0 +1,233 @@
|
||||
#!/usr/bin/php
|
||||
<?php
|
||||
|
||||
//require 'vendor/autoload.php';
|
||||
require("../../../config/config.php");
|
||||
|
||||
define('FRONKDB_SQLDEBUG',false);
|
||||
error_reporting(E_ALL & ~(E_NOTICE | E_STRICT | E_DEPRECATED));
|
||||
|
||||
require_once(LIBDIR."/mvcfronk/mfRouter/mfRouter.php");
|
||||
require_once(LIBDIR."/mvcfronk/mfBase/mfBaseModel.php");
|
||||
require_once(LIBDIR."/mvcfronk/mfBase/mfBaseController.php");
|
||||
|
||||
|
||||
$netzgebiet_name_main = "Liezen";
|
||||
$freigabe_default = json_encode(["order", "reorder"]);
|
||||
|
||||
|
||||
$me = new User(1);
|
||||
|
||||
$folder = __DIR__."/import/";
|
||||
$csvname = "Adressendatensatz_Update-RMLI_2023-01-29.csv";
|
||||
$filename = $folder.$csvname;
|
||||
|
||||
$db = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
|
||||
$log = mfLoghandler::singleton();
|
||||
|
||||
$input = fopen($filename, "r");
|
||||
|
||||
$h_extrefs = [];
|
||||
|
||||
$l = 0;
|
||||
$u = 0;
|
||||
while($csv = fgetcsv($input, 0, ",")) {
|
||||
$l++;
|
||||
if($l == 1) continue;
|
||||
|
||||
$hausnummer = false;
|
||||
|
||||
if(!trim($csv[0])) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$hausnummer_id = trim($csv[0]);
|
||||
$hausnummer_extref = trim($csv[1]);
|
||||
$adrcd = trim($csv[2]);
|
||||
$oaid = trim($csv[3]);
|
||||
$netzgebiet_extref = trim($csv[4]);
|
||||
$netzgebiet_name = trim($csv[5]);
|
||||
$gkz = trim($csv[6]);
|
||||
$gem_name = trim($csv[7]);
|
||||
$okz = trim($csv[8]);
|
||||
$ort_name = trim($csv[9]);
|
||||
$plz_string = trim($csv[10]);
|
||||
$skz = trim($csv[11]);
|
||||
$strasse_name = trim($csv[12]);
|
||||
$hausnummer_string = trim($csv[13]);
|
||||
$grund_nr = trim($csv[14]);
|
||||
//gps_long, gps_lat
|
||||
$rollout_time = trim($csv[17]);
|
||||
$rollout_info = trim($csv[18]);
|
||||
//$freigabe = trim($csv[19])
|
||||
$unit_count = trim($csv[20]);
|
||||
|
||||
|
||||
/*
|
||||
$adrcd = trim($csv[0]);
|
||||
$gem_kz = trim($csv[2]);
|
||||
$gem_name = trim($csv[3]);
|
||||
$ort_kz = trim($csv[5]);
|
||||
$plz_string = trim($csv[4]);
|
||||
$ort_name = trim($csv[6]);
|
||||
$skz = trim($csv[7]);
|
||||
$strasse_name = trim($csv[8]);
|
||||
$hausnummer_string = trim($csv[9]);
|
||||
$hausnummer_extref = trim($csv[0]);
|
||||
if(in_array($hausnummer_extref, $h_extrefs)) {
|
||||
die("Hausnummer extref doppelt! $hausnummer_extref\n");
|
||||
}
|
||||
$h_extrefs[] = $hausnummer_extref;
|
||||
*/
|
||||
//$lat = str_replace(",",".",trim($csv[7]));
|
||||
//$long = str_replace(",",".",trim($csv[8]));
|
||||
|
||||
|
||||
if(!is_numeric($adrcd) || !is_numeric($hausnummer_id)) {
|
||||
die("Invalid adrcd or hausnummer_id\n");
|
||||
}
|
||||
|
||||
if(!strlen($hausnummer_string) || !strlen($strasse_name)) {
|
||||
die("!! Hausnummer oder Strasse leer (adrcd $adrcd)\n");
|
||||
}
|
||||
|
||||
if(!$gem_name || !$plz_string || !$ort_name || !$strasse_name) {
|
||||
die("!! Konnte Adresse nicht parsen\n");
|
||||
}
|
||||
|
||||
if(!$hausnummer_extref) {
|
||||
die("!!! Keine Hausnummer Extref\n");
|
||||
}
|
||||
|
||||
if(!$netzgebiet_extref) {
|
||||
die("!!! Keine Netzgebiet Extref\n");
|
||||
}
|
||||
|
||||
|
||||
|
||||
$existing_hausnummer = new ADBHausnummer($hausnummer_id);
|
||||
if(!$existing_hausnummer->id) {
|
||||
echo "$hausnummer_id not found\n";
|
||||
continue;
|
||||
}
|
||||
|
||||
//continue;
|
||||
|
||||
$updates = [];
|
||||
if($existing_hausnummer->netzgebiet->extref != $netzgebiet_extref) {
|
||||
echo "netzgebiet '".$existing_hausnummer->netzgebiet->name."' => '$netzgebiet_name'\n";
|
||||
$updates[] = "netzgebiet";
|
||||
}
|
||||
if($existing_hausnummer->strasse->name != $strasse_name) {
|
||||
echo "strasse '".$existing_hausnummer->strasse->name."' => '$strasse_name'\n";
|
||||
$updates[] = "strasse";
|
||||
}
|
||||
if($existing_hausnummer->strasse->gemeinde->name != $gem_name) {
|
||||
echo "gemeinde '".$existing_hausnummer->strasse->gemeinde->name."' => '$gem_name'\n";
|
||||
$updates[] = "gemeinde";
|
||||
}
|
||||
if($existing_hausnummer->hausnummer != $hausnummer_string) {
|
||||
echo "hausnummer '".$existing_hausnummer->hausnummer."' => '$hausnummer_string'\n";
|
||||
$updates[] = "hausnummer";
|
||||
}
|
||||
if($existing_hausnummer->ortschaft->name != $ort_name) {
|
||||
echo "ortschaft '".$existing_hausnummer->ortschaft->name."' => '$ort_name'\n";
|
||||
$updates[] = "ortschaft";
|
||||
}
|
||||
if($existing_hausnummer->plz->plz != $plz_string) {
|
||||
echo "plz '".$existing_hausnummer->plz->plz."' => '$plz_string'\n";
|
||||
$updates[] = "plz";
|
||||
}
|
||||
if($existing_hausnummer->rollout != $rollout_time) {
|
||||
echo "rollout '".$existing_hausnummer->rollout."' => '$rollout_time'\n";
|
||||
$updates[] = "rollout";
|
||||
}
|
||||
if($existing_hausnummer->rollout_info != $rollout_info) {
|
||||
echo "rollout_info '".$existing_hausnummer->rollout_info."' => '$rollout_info'\n";
|
||||
$updates[] = "rollout_info";
|
||||
}
|
||||
if($existing_hausnummer->unit_count != $unit_count) {
|
||||
echo "unit_count '".$existing_hausnummer->unit_count."' => '$unit_count'\n";
|
||||
$updates[] = "unit_count";
|
||||
}
|
||||
|
||||
|
||||
if(!count($updates)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if(in_array("netzgebiet", $updates)) {
|
||||
$netzgebiet = ADBNetzgebietModel::getFirst(['extref' => $netzgebiet_extref]);
|
||||
if(!$netzgebiet) {
|
||||
die("Netzgebiet ($netzgebiet_extref: $netzgebiet_name) nicht gefunden\n");
|
||||
}
|
||||
$existing_hausnummer->netzgebiet_id = $netzgebiet->id;
|
||||
echo "Updating Netzgebiet to ".$netzgebiet->id."\n";
|
||||
//$existing_hausnummer->save();
|
||||
}
|
||||
|
||||
if(in_array("rollout", $updates) || in_array("rollout_info", $updates)) {
|
||||
$new_rollout = false;
|
||||
$new_rollout_info = false;
|
||||
$freigabe = $freigabe_default;
|
||||
|
||||
if(is_numeric($rollout_time)) {
|
||||
$new_rollout = $rollout_time;
|
||||
$new_rollout_info = null;
|
||||
$freigabe = $freigabe_default;
|
||||
} elseif($rollout_time == "2024/2025") {
|
||||
$new_rollout = null;
|
||||
$new_rollout_info = "2024/2025";
|
||||
$freigabe = json_encode(['reorder']);
|
||||
} elseif($rollout_info == "2099") {
|
||||
$new_rollout = null;
|
||||
$new_rollout_info = "2099";
|
||||
$freigabe = json_encode(['reorder']);
|
||||
} else {
|
||||
$new_rollout = null;
|
||||
$new_rollout_info = "unscheduled";
|
||||
$freigabe = json_encode([]);
|
||||
}
|
||||
|
||||
$existing_hausnummer->rollout = $new_rollout;
|
||||
$existing_hausnummer->rollout_info = $new_rollout_info;
|
||||
$existing_hausnummer->freigabe = $freigabe;
|
||||
|
||||
echo "updating rollout/info/freigabe to $new_rollout / $new_rollout_info / $freigabe\n";
|
||||
//$existing_hausnummer->save();
|
||||
}
|
||||
|
||||
$existing_hausnummer->save();
|
||||
$u++;
|
||||
|
||||
// update GemeindeNetzgebiet if needed
|
||||
$netzgebiet = new ADBNetzgebiet($existing_hausnummer->netzgebiet_id);
|
||||
$gemeinde = new ADBGemeinde($existing_hausnummer->strasse->gemeinde_id);
|
||||
checkGemeindeNetzgebiet($gemeinde, $netzgebiet);
|
||||
|
||||
echo "=================================\n";
|
||||
|
||||
|
||||
}
|
||||
|
||||
echo "$l lines processed, $u updated\n";
|
||||
|
||||
|
||||
function checkGemeindeNetzgebiet($gemeinde, $netzgebiet) {
|
||||
global $db;
|
||||
|
||||
$sql = "SELECT * FROM GemeindeNetzgebiet WHERE gemeinde_id=".$gemeinde->id." AND netzgebiet_id=".$netzgebiet->id;
|
||||
$res = $db->query($sql);
|
||||
if($db->num_rows($res)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
$sql = "INSERT INTO GemeindeNetzgebiet (gemeinde_id, netzgebiet_id, `create`, `edit`) VALUES (".$gemeinde->id.", ".$netzgebiet->id.", UNIX_TIMESTAMP(), UNIX_TIMESTAMP())";
|
||||
if(!$db->query($sql)) {
|
||||
die("SQL Query failed: $sql\n ".$db->getLastError());
|
||||
}
|
||||
|
||||
echo "updated GemeindeNetzgebiet\n";
|
||||
|
||||
return true;
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user