diff --git a/web/API/main.php b/web/API/main.php
index b463cf0..9acd417 100644
--- a/web/API/main.php
+++ b/web/API/main.php
@@ -13,7 +13,10 @@
//register API functions
include_once(__DIR__ . "/observations.php");
include_once(__DIR__ . "/stations.php");
+ include_once(__DIR__ . "/targets.php");
include_once(__DIR__ . "/crons.php");
+ include_once(__DIR__ . "/transmitters.php");
+ include_once(__DIR__ . "/receivers.php");
//init API
$api->serve($router->getArgs());
\ No newline at end of file
diff --git a/web/API/receivers.php b/web/API/receivers.php
new file mode 100644
index 0000000..636fa18
--- /dev/null
+++ b/web/API/receivers.php
@@ -0,0 +1,67 @@
+id->set($params["id"]);
+
+ $receiver->fetch();
+
+ /**
+ * Create array of autoPlan with names
+ */
+
+ $autoplan = new \wsos\structs\vector();
+ foreach ($receiver->autoPlan->get() as $transmitterId) {
+ $transmitter = new \DAL\transmitter();
+ $transmitter->id->set($transmitterId);
+ $transmitter->fetch();
+
+ $autoplan->append([
+ "id" => $transmitter->id->get(),
+ "target" => $transmitter->target->get()->name->get(),
+ "modulation" => $transmitter->modulation->get()->name->get(),
+ "dataType" => $transmitter->dataType->get()->name->get(),
+ "freq" => $transmitter->centerFrequency->get(),
+ ]);
+ }
+
+ return [
+ "id" => $receiver->id->get(),
+ "freq" => $receiver->centerFrequency->get(),
+ "band" => $receiver->bandwidth->get(),
+ "params" => $receiver->params->get(),
+ "gain" => $receiver->gain->get(),
+ "autoPlan" => $autoplan,
+ "antenna" => $receiver->antenna->get()->id->get(),
+ "station" => $receiver->station->get()->id->get()
+ ];
+ }
+
+ function save($params) {
+
+ $receiver = new \DAL\receiver();
+
+ if ($params["id"] <> "null") {
+ $receiver->id->set($params["id"]);
+
+ // try fetch from DB?
+ $receiver->fetch();
+ }
+
+ $receiver->centerFrequency->set($params["freq"]);
+ $receiver->bandwidth->set($params["band"]);
+ $receiver->gain->set($params["gain"]);
+ $receiver->params->set(json_decode($params["params"]));
+ $receiver->autoPlan->set(json_decode($params["autoPlan"]));
+ $receiver->station->set($params["station"]);
+ $receiver->antenna->set($params["antenna"]);
+
+
+ $receiver->commit();
+
+ return [
+ "id" => $receiver->id->get()
+ ];
+ }
\ No newline at end of file
diff --git a/web/API/targets.php b/web/API/targets.php
index 5e913aa..61f4c78 100644
--- a/web/API/targets.php
+++ b/web/API/targets.php
@@ -12,3 +12,17 @@
"locator" => $target->locator->get()
];
}
+
+ function add($params) {
+
+ $target = new \DAL\target();
+
+ $target->name->set($params["name"]);
+ $target->type->set($params["type"]);
+ $target->orbit->set($params["orbit"]);
+ $target->locator->set($params["locator"]);
+
+ $target->commit();
+
+ return ["id" => $target->id->get()];
+ }
diff --git a/web/API/transmitters.php b/web/API/transmitters.php
new file mode 100644
index 0000000..749e19b
--- /dev/null
+++ b/web/API/transmitters.php
@@ -0,0 +1,49 @@
+id->set($params["id"]);
+
+ $transmitter->fetch();
+
+ return [
+ "id" => $transmitter->id->get(),
+ "freq" => $transmitter->centerFrequency->get(),
+ "band" => $transmitter->bandwidth->get(),
+ "priority" => $transmitter->priority->get(),
+ "pipe" => $transmitter->processPipe->get()->id->get(),
+ "dataType" => $transmitter->dataType->get()->id->get(),
+ "modulation" => $transmitter->modulation->get()->id->get(),
+ "antenna" => $transmitter->antenna->get()->id->get(),
+ "target" => $transmitter->target->get()->id->get(),
+ ];
+ }
+
+ function save($params) {
+
+ $transmitter = new \DAL\transmitter();
+
+ if ($params["id"] <> "null") {
+ $transmitter->id->set($params["id"]);
+
+ // try fetch from DB?
+ $transmitter->fetch();
+ }
+
+ $transmitter->centerFrequency->set($params["freq"]);
+ $transmitter->bandwidth->set($params["band"]);
+ $transmitter->priority->set($params["priority"]);
+ $transmitter->processPipe->set($params["pipe"]);
+ $transmitter->dataType->set($params["dataType"]);
+ $transmitter->modulation->set($params["modulation"]);
+ $transmitter->antenna->set($params["antenna"]);
+ $transmitter->target->set($params["target"]);
+
+ $transmitter->commit();
+
+ return [
+ "id" => $transmitter->id->get()
+ ];
+ }
\ No newline at end of file
diff --git a/web/CONTROLLERS/station.php b/web/CONTROLLERS/station.php
index 03375bd..022f6b8 100644
--- a/web/CONTROLLERS/station.php
+++ b/web/CONTROLLERS/station.php
@@ -37,6 +37,9 @@
"fail" => $observationsTable->count("status==? && receiver.station.id == ?", [$ob->status->getVal("fail"), $stationId])
];
+ $context["transmitters"] = new \wsos\database\core\table(\DAL\transmitter::class);
+ $context["antennas"] = new \wsos\database\core\table(\DAL\antenna::class);
+
$templates->load("station.html");
$templates->render($context);
$templates->show();
\ No newline at end of file
diff --git a/web/CONTROLLERS/target.php b/web/CONTROLLERS/target.php
new file mode 100644
index 0000000..b578b34
--- /dev/null
+++ b/web/CONTROLLERS/target.php
@@ -0,0 +1,53 @@
+get("templateLoader");
+ $router = $container->get("router");
+ $context = $container->get("context");
+ $auth = $container->get("auth");
+
+ // to show this page user must be logined
+ $auth->requireLogin();
+
+ //get target ID
+ $targetID = $router->getArgs()[0];
+
+ //get correct observation
+ $context["target"] = new \DAL\target(new \wsos\database\types\uuid($targetID));
+ $context["target"]->fetch();
+
+ $observationsTable = new \wsos\database\core\table(\DAL\observation::class);
+ $dummy_ob = new \DAL\observation();
+
+ $context["transmitters"] = new \wsos\database\core\table(\DAL\transmitter::class);
+ $context["transmitters"] = $context["transmitters"]->query(
+ "target.id == ?", [$targetID]
+ )->values;
+
+ $locatorsKey = array_keys($context["target"]->locator->get());
+
+ $last = (new \wsos\database\core\table(\DAL\observation::class))->query("(transmitter.target.id == ?) && (status == ?)", [$targetID, $dummy_ob->status->getVal("success")], "DESC end", 1);
+ $last = $last->len() > 0 ? $last->values[0]->end->strDelta() . " ago" : "never";
+
+ $context["target"] = [
+ "id" => $context["target"]->id->get(),
+ "name" => $context["target"]->name->get(),
+ "locatorsKey" => count($locatorsKey) > 0 ? $locatorsKey : ["none"],
+ "locators" => $context["target"]->locator->get(),
+ "type" => $context["target"]->type->get()->name->get(),
+ "description" => $context["target"]->description->get(),
+ "orbit" => $context["target"]->orbit->get(),
+ "transmitters" => count($context["transmitters"]),
+ "lastObservation" => $last,
+ "success" => $observationsTable->count("(status==?) && (transmitter.target.id == ?)", [$dummy_ob ->status->getVal("success"), $targetID]),
+ "fail" => $observationsTable->count("(status==?) && (transmitter.target.id == ?)", [$dummy_ob ->status->getVal("fail"), $targetID])
+ ];
+
+ $context["pipes"] = new \wsos\database\core\table(\DAL\processPipe::class);
+ $context["dataTypes"] = new \wsos\database\core\table(\DAL\dataType::class);
+ $context["modulations"] = new \wsos\database\core\table(\DAL\modulation::class);
+ $context["antennas"] = new \wsos\database\core\table(\DAL\antenna::class);
+
+ $templates->load("target.html");
+ $templates->render($context);
+ $templates->show();
\ No newline at end of file
diff --git a/web/CONTROLLERS/targets.php b/web/CONTROLLERS/targets.php
index f6efe3b..a7eaafa 100644
--- a/web/CONTROLLERS/targets.php
+++ b/web/CONTROLLERS/targets.php
@@ -13,12 +13,13 @@
$targets = (new \wsos\database\core\table(\DAL\target::class))->getAll();
// create planed template observations
- $ob = new \DAL\observation();
+ $dummy_ob = new \DAL\observation();
+ $dummy_target = new \DAL\target();
foreach ($targets->values as $target) {
- $last = (new \wsos\database\core\table(\DAL\observation::class))->query("transmitter.target.id == ? && status == ?", [$target->id->get(), $ob->status->getVal("success")], "DESC end", 1);
- $last = $last->len() > 0 ? "ago " . $last->values[0]->end->strDelta() : "never";
+ $last = (new \wsos\database\core\table(\DAL\observation::class))->query("(transmitter.target.id == ?) && (status == ?)", [$target->id->get(), $dummy_ob->status->getVal("success")], "DESC end", 1);
+ $last = $last->len() > 0 ? $last->values[0]->end->strDelta() . " ago" : "never";
$observations = (new \wsos\database\core\table(\DAL\observation::class))->count("transmitter.target.id == ?", [$target->id->get()]);
@@ -32,7 +33,9 @@
]);
}
- $context["targets"] = $context["targets"]->values;
+ $context["targets"] = $context["targets"]->values;
+ $context["types"] = new \wsos\database\core\table(\DAL\targetType::class);
+ $context["orbit_types"] = $dummy_target->orbit->getOptions()->values;
$templates->load("targets.html");
diff --git a/web/VIEWS/blocks/receiver-item.html b/web/VIEWS/blocks/receiver-item.html
index ebc2591..e2db4ac 100644
--- a/web/VIEWS/blocks/receiver-item.html
+++ b/web/VIEWS/blocks/receiver-item.html
@@ -1,6 +1,6 @@
-
+
{% BIND item.centerFrequency %}Hz
{% BIND item.bandwidth %}Hz
+ {% BIND item.antenna.name %}
{% BIND item.gain %}
-
\ No newline at end of file
diff --git a/web/VIEWS/blocks/transmitter-item.html b/web/VIEWS/blocks/transmitter-item.html
new file mode 100644
index 0000000..b66f4ce
--- /dev/null
+++ b/web/VIEWS/blocks/transmitter-item.html
@@ -0,0 +1,6 @@
+
+ {% BIND item.centerFrequency %}Hz
+ {% BIND item.bandwidth %}Hz
+ {% BIND item.modulation.name %}
+ {% BIND item.dataType.name %}
+
\ No newline at end of file
diff --git a/web/VIEWS/station.html b/web/VIEWS/station.html
index 71cfaed..0a28852 100644
--- a/web/VIEWS/station.html
+++ b/web/VIEWS/station.html
@@ -88,12 +88,18 @@
+
+
+