Added the ability to read multiple config files so it's now possible to load a singular global config and then load a camera specific config in another. Many elements in the web interface are coming out too small. Added meta viewport device width in hopes that the web interface will self adjust to device it is being displayed on. Changed duration to num_of_clips and added clip_len so the amount of seconds in each clip and the amount of clips to be processed for motion are now adjustable. Adjusted a several default values.
135 lines
4.5 KiB
C++
135 lines
4.5 KiB
C++
// This file is part of Motion Watch.
|
|
|
|
// Motion Watch is free software: you can redistribute it and/or modify
|
|
// it under the terms of the GNU General Public License as published by
|
|
// the Free Software Foundation, either version 3 of the License, or
|
|
// (at your option) any later version.
|
|
|
|
// Motion Watch is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
// GNU General Public License for more details.
|
|
|
|
#include "web.h"
|
|
|
|
void genHTMLul(const string &outputDir, const string &title, shared_t *share)
|
|
{
|
|
vector<string> logNames;
|
|
vector<string> regNames = lsFilesInDir(outputDir);
|
|
vector<string> dirNames = lsDirsInDir(outputDir);
|
|
|
|
string htmlText = "<!DOCTYPE html>\n";
|
|
|
|
htmlText += "<html>\n";
|
|
htmlText += "<head>\n";
|
|
htmlText += "<meta http-equiv=\"Cache-Control\" content=\"no-cache, no-store, must-revalidate\" />\n";
|
|
htmlText += "<meta http-equiv=\"Pragma\" content=\"no-cache\" />\n";
|
|
htmlText += "<meta http-equiv=\"Expires\" content=\"0\" />\n";
|
|
htmlText += "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n";
|
|
htmlText += "<link rel='stylesheet' href='/theme.css'>\n";
|
|
htmlText += "</head>\n";
|
|
htmlText += "<body>\n";
|
|
htmlText += "<h3>" + title + "</h3>\n";
|
|
|
|
if (!dirNames.empty())
|
|
{
|
|
htmlText += "<ul>\n";
|
|
|
|
for (auto &&dirName : dirNames)
|
|
{
|
|
htmlText += " <li><a href='" + dirName + "/index.html'>" + dirName + "</a></li>\n";
|
|
}
|
|
|
|
htmlText += "</ul>\n";
|
|
}
|
|
|
|
for (auto &®Name : regNames)
|
|
{
|
|
if (regName.ends_with("_log.html"))
|
|
{
|
|
logNames.push_back(regName);
|
|
}
|
|
else if (regName.ends_with(".html") &&
|
|
!regName.ends_with("index.html") &&
|
|
!regName.ends_with("rec_log_lines.html") &&
|
|
!regName.ends_with("det_log_lines.html"))
|
|
{
|
|
// regName.substr(0, regName.size() - 5) removes .html
|
|
auto name = regName.substr(0, regName.size() - 5);
|
|
|
|
htmlText += "<a href='" + regName + "'><img src='" + name + ".jpg" + "' style='width:25%;height:25%;'</a>\n";
|
|
}
|
|
}
|
|
|
|
if (!logNames.empty())
|
|
{
|
|
htmlText += "<h4>Logs</h4>\n";
|
|
htmlText += "<ul>\n";
|
|
|
|
for (auto &&name : logNames)
|
|
{
|
|
// name.substr(0, name.size() - 9) removes _log.html
|
|
htmlText += " <li><a href='" + name + "'>" + name.substr(0, name.size() - 9) + "</a></li>\n";
|
|
}
|
|
|
|
htmlText += "</ul>\n";
|
|
}
|
|
|
|
htmlText += "</body>\n";
|
|
htmlText += "</html>";
|
|
|
|
ofstream file(string(cleanDir(outputDir) + "/index.html").c_str());
|
|
|
|
file << htmlText << endl;
|
|
|
|
file.close();
|
|
}
|
|
|
|
void genHTMLvid(const string &outputVid, shared_t *share)
|
|
{
|
|
auto vidName = path(outputVid).filename().string();
|
|
auto filePath = path(outputVid).parent_path().string();
|
|
auto fileName = vidName.substr(0, vidName.size() - (share->vidExt.size() + 1));
|
|
string htmlText = "<!DOCTYPE html>\n";
|
|
|
|
htmlText += "<html>\n";
|
|
htmlText += "<head>\n";
|
|
htmlText += "<meta http-equiv=\"Cache-Control\" content=\"no-cache, no-store, must-revalidate\" />\n";
|
|
htmlText += "<meta http-equiv=\"Pragma\" content=\"no-cache\" />\n";
|
|
htmlText += "<meta http-equiv=\"Expires\" content=\"0\" />\n";
|
|
htmlText += "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n";
|
|
htmlText += "<link rel='stylesheet' href='/theme.css'>\n";
|
|
htmlText += "</head>\n";
|
|
htmlText += "<body>\n";
|
|
htmlText += "<video width=100% height=100% controls autoplay>\n";
|
|
htmlText += " <source src='" + vidName + "' type='video/" + share->vidExt + "'>\n";
|
|
htmlText += "</video>\n";
|
|
htmlText += "</body>\n";
|
|
htmlText += "</html>";
|
|
|
|
ofstream file(string(filePath + "/" + fileName + ".html").c_str());
|
|
|
|
file << htmlText << endl;
|
|
|
|
file.close();
|
|
}
|
|
|
|
void genCSS(shared_t *share)
|
|
{
|
|
string cssText = "body {\n";
|
|
|
|
cssText += " background-color: " + share->webBg + ";\n";
|
|
cssText += " color: " + share->webTxt + ";\n";
|
|
cssText += " font-family: " + share->webFont + ";\n";
|
|
cssText += "}\n";
|
|
cssText += "a {\n";
|
|
cssText += " color: " + share->webTxt + ";\n";
|
|
cssText += "}\n";
|
|
|
|
ofstream file(string(cleanDir(share->webRoot) + "/theme.css").c_str());
|
|
|
|
file << cssText << endl;
|
|
|
|
file.close();
|
|
}
|