mirror of
https://github.com/scottlamb/moonfire-nvr.git
synced 2025-04-15 16:48:10 -04:00
Merge branch 'master' into new-schema
This commit is contained in:
commit
c7c0d5a6c1
2
Cargo.lock
generated
2
Cargo.lock
generated
@ -1340,7 +1340,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "mylog"
|
name = "mylog"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/scottlamb/mylog#00d39a9ca0c1f399c453360de3f1e7f61db0d50d"
|
source = "git+https://github.com/scottlamb/mylog#bebeacb74efc127f9c16e57e38886c8e6ba8a95c"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"chrono",
|
"chrono",
|
||||||
"log",
|
"log",
|
||||||
|
13
src/main.rs
13
src/main.rs
@ -31,6 +31,7 @@
|
|||||||
#![cfg_attr(all(feature="nightly", test), feature(test))]
|
#![cfg_attr(all(feature="nightly", test), feature(test))]
|
||||||
|
|
||||||
use log::{error, info};
|
use log::{error, info};
|
||||||
|
use std::str::FromStr;
|
||||||
use structopt::StructOpt;
|
use structopt::StructOpt;
|
||||||
|
|
||||||
#[cfg(feature = "analytics")]
|
#[cfg(feature = "analytics")]
|
||||||
@ -124,20 +125,12 @@ impl Args {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn parse_fmt<S: AsRef<str>>(fmt: S) -> Option<mylog::Format> {
|
|
||||||
match fmt.as_ref() {
|
|
||||||
"google" => Some(mylog::Format::Google),
|
|
||||||
"google-systemd" => Some(mylog::Format::GoogleSystemd),
|
|
||||||
_ => None,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let args = Args::from_args();
|
let args = Args::from_args();
|
||||||
let mut h = mylog::Builder::new()
|
let mut h = mylog::Builder::new()
|
||||||
.set_format(::std::env::var("MOONFIRE_FORMAT")
|
.set_format(::std::env::var("MOONFIRE_FORMAT")
|
||||||
.ok()
|
.map_err(|_| ())
|
||||||
.and_then(parse_fmt)
|
.and_then(|s| mylog::Format::from_str(&s))
|
||||||
.unwrap_or(mylog::Format::Google))
|
.unwrap_or(mylog::Format::Google))
|
||||||
.set_spec(&::std::env::var("MOONFIRE_LOG").unwrap_or("info".to_owned()))
|
.set_spec(&::std::env::var("MOONFIRE_LOG").unwrap_or("info".to_owned()))
|
||||||
.build();
|
.build();
|
||||||
|
@ -227,7 +227,7 @@ function updateSession(session) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
sessionBar.append($('<span id="session-username" />').text(session.username));
|
sessionBar.append($('<span id="session-username" />').text(session.username));
|
||||||
const logout = $('<a>logout</a>');
|
const logout = $('<a id="logout">logout</a>');
|
||||||
logout.click(() => {
|
logout.click(() => {
|
||||||
api
|
api
|
||||||
.logout(session.csrf)
|
.logout(session.csrf)
|
||||||
@ -384,6 +384,11 @@ export default class NVRApplication {
|
|||||||
* Start the application.
|
* Start the application.
|
||||||
*/
|
*/
|
||||||
start() {
|
start() {
|
||||||
|
let nav = $('#nav');
|
||||||
|
|
||||||
|
$('#toggle-nav').click(() => {
|
||||||
|
nav.toggle('slide');
|
||||||
|
});
|
||||||
loginDialog = $('#login').dialog({
|
loginDialog = $('#login').dialog({
|
||||||
autoOpen: false,
|
autoOpen: false,
|
||||||
modal: true,
|
modal: true,
|
||||||
|
@ -1,54 +1,72 @@
|
|||||||
|
@media only screen and (max-width: 720px) {
|
||||||
|
#nav {
|
||||||
|
float: none;
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
body {
|
body {
|
||||||
font-family: Arial, Helvetica, sans-serif;
|
font-family: Arial, Helvetica, sans-serif;
|
||||||
|
}
|
||||||
|
#top {
|
||||||
|
width: 100%;
|
||||||
|
padding-bottom: 2ex;
|
||||||
|
}
|
||||||
|
#toggle-nav {
|
||||||
|
font-size: 1.25em;
|
||||||
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
#nav {
|
#nav {
|
||||||
float: left;
|
float: left;
|
||||||
}
|
}
|
||||||
#session {
|
#session {
|
||||||
float: right;
|
float: right;
|
||||||
|
}
|
||||||
|
#logout {
|
||||||
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
#datetime .ui-datepicker {
|
#datetime .ui-datepicker {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
#videos {
|
#videos {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
padding-top: 0.5em;
|
padding-top: 0.5em;
|
||||||
padding-left: 1em;
|
padding-left: 1em;
|
||||||
padding-right: 1em;
|
padding-right: 1em;
|
||||||
}
|
}
|
||||||
#videos tbody:after {
|
#videos tbody:after {
|
||||||
content: "";
|
content: "";
|
||||||
display: block;
|
display: block;
|
||||||
height: 3ex;
|
height: 3ex;
|
||||||
}
|
}
|
||||||
table.videos {
|
table.videos {
|
||||||
border-collapse: collapse;
|
border-collapse: collapse;
|
||||||
}
|
}
|
||||||
tbody tr.name {
|
tbody tr.name {
|
||||||
font-size: 110%;
|
font-size: 110%;
|
||||||
background-color: #eee;
|
background-color: #eee;
|
||||||
}
|
}
|
||||||
tbody tr.name th {
|
tbody tr.name th {
|
||||||
border-bottom: 1px solid #666;
|
border-bottom: 1px solid #666;
|
||||||
}
|
}
|
||||||
tbody tr.hdr {
|
tbody tr.hdr {
|
||||||
color: #555;
|
color: #555;
|
||||||
font-size: 90%;
|
font-size: 90%;
|
||||||
}
|
}
|
||||||
tr.r:hover {
|
tr.r:hover {
|
||||||
background-color: #ddd;
|
background-color: #ddd;
|
||||||
}
|
}
|
||||||
tr.r td {
|
tr.r td {
|
||||||
font-size: 80%;
|
font-size: 80%;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
tr.r th,
|
tr.r th,
|
||||||
tr.r td {
|
tr.r td {
|
||||||
border: 0;
|
border: 0;
|
||||||
padding: 0.5ex 1.5em;
|
padding: 0.5ex 1.5em;
|
||||||
text-align: right;
|
text-align: right;
|
||||||
}
|
}
|
||||||
|
|
||||||
fieldset {
|
fieldset {
|
||||||
@ -60,21 +78,21 @@ fieldset legend {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#from, #to {
|
#from, #to {
|
||||||
padding-right: 0.75em;
|
padding-right: 0.75em;
|
||||||
}
|
}
|
||||||
#st {
|
#st {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
#range {
|
#range {
|
||||||
padding: 0.5em 0;
|
padding: 0.5em 0;
|
||||||
}
|
}
|
||||||
.ui-dialog .ui-dialog-content {
|
.ui-dialog .ui-dialog-content {
|
||||||
overflow: visible; /* remove stupid scroll bars when resizing. */
|
overflow: visible; /* remove stupid scroll bars when resizing. */
|
||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
video {
|
video {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
}
|
}
|
||||||
|
@ -5,7 +5,9 @@
|
|||||||
<title>Moonfire NVR</title>
|
<title>Moonfire NVR</title>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="session">
|
<div id="top">
|
||||||
|
<a id="toggle-nav">☰</a>
|
||||||
|
<span id="session"></div>
|
||||||
</div>
|
</div>
|
||||||
<div id="nav">
|
<div id="nav">
|
||||||
<form action="#">
|
<form action="#">
|
||||||
|
Loading…
x
Reference in New Issue
Block a user