diff --git a/api/v1/statistic.php b/api/v1/statistic.php deleted file mode 100644 index 8d25664..0000000 --- a/api/v1/statistic.php +++ /dev/null @@ -1,80 +0,0 @@ -loadStatistics(); - - if (($name = $controller->getStatisticName($_POST['id'])) !== false) { - if (isset($_POST['plugin']) && trim($_POST['plugin']) != '') - pluginLanguage(trim($_POST['plugin'])); - - $builder = new StatisticBuilder(); - $builder->loadFromFile($name, (isset($_POST['plugin']) && trim($_POST['plugin']) != '') ? $_POST['plugin'] : NULL); - $statistic = $builder->getArray(); - - $log = new LogStatistic(); - $log->setFile(LOG_PATH . $statistic['raw'] . '.csv'); - $logData = $log->getAll(); - - $arr = $info = array(); - - foreach ($statistic['columns'] as $column) { - $arr['cols'][] = array('id' => '', 'label' => _t($column['label']), 'type' => $column['type']); - } - - getRowsFromLog($arr, $info, $logData, $statistic['columns'], $statistic['cycle']); - - if (isset($arr['rows'])) { - if (isset($_POST['type']) && $_POST['type'] == 'googleChart') - $arr['rows'] = convertForGoogleChart($arr['rows']); - - $arr['rows'] = array_slice($arr['rows'], -2016); - $arr['periods'] = $info['periods']; - - foreach (array('min', 'max') as $type) { - if ($statistic['limits'][$type]['use'] == 'multiply') - $arr[$type] = round($info[$type] * $statistic['limits'][$type]['value']); - elseif ($statistic['limits'][$type]['use'] == 'fix') { - if ($statistic['limits'][$type]['fix'] == true) - $arr[$type] = $statistic['limits'][$type]['value']; - else - $arr[$type] = round($info[$type]); - } - } - - $api->addData('statistic', $arr); - } else - $api->setError('error', 'Empty data.'); - } else - $api->setError('error', 'Data not found.'); -} else { - $statistics = array(); - $hiddenStatistics = unserialize(htmlspecialchars_decode(getConfig('main:statistic.hidden', 'a:0:{}'))); - - $controller = new StatisticController(); - $controller->loadStatistics(); - - foreach ($controller->getStatistics() as $statistic) { - $builder = new StatisticBuilder(); - $builder->loadFromFile($statistic); - - $array = $builder->getArray(); - if (!in_array($builder->getId(), $hiddenStatistics)) - $statistics[] = array('array' => $array); - } - - $api->addData('statistics', $statistics); - $api->addData('hidden', $hiddenStatistics); -} - -$api->display(); diff --git a/README.md b/backend/README.md similarity index 100% rename from README.md rename to backend/README.md diff --git a/api/v1/detailed_overview.php b/backend/api/v1/detailed_overview.php similarity index 100% rename from api/v1/detailed_overview.php rename to backend/api/v1/detailed_overview.php diff --git a/api/v1/discover_plugins.php b/backend/api/v1/discover_plugins.php similarity index 100% rename from api/v1/discover_plugins.php rename to backend/api/v1/discover_plugins.php diff --git a/api/v1/feedback.php b/backend/api/v1/feedback.php similarity index 100% rename from api/v1/feedback.php rename to backend/api/v1/feedback.php diff --git a/api/v1/login.php b/backend/api/v1/login.php similarity index 100% rename from api/v1/login.php rename to backend/api/v1/login.php diff --git a/api/v1/logs.php b/backend/api/v1/logs.php similarity index 100% rename from api/v1/logs.php rename to backend/api/v1/logs.php diff --git a/api/v1/logs_download.php b/backend/api/v1/logs_download.php similarity index 100% rename from api/v1/logs_download.php rename to backend/api/v1/logs_download.php diff --git a/api/v1/main.php b/backend/api/v1/main.php similarity index 100% rename from api/v1/main.php rename to backend/api/v1/main.php diff --git a/api/v1/network.php b/backend/api/v1/network.php similarity index 100% rename from api/v1/network.php rename to backend/api/v1/network.php diff --git a/api/v1/network_configuration_interface.php b/backend/api/v1/network_configuration_interface.php similarity index 100% rename from api/v1/network_configuration_interface.php rename to backend/api/v1/network_configuration_interface.php diff --git a/api/v1/network_connect_wlan.php b/backend/api/v1/network_connect_wlan.php similarity index 100% rename from api/v1/network_connect_wlan.php rename to backend/api/v1/network_connect_wlan.php diff --git a/api/v1/overview.php b/backend/api/v1/overview.php similarity index 100% rename from api/v1/overview.php rename to backend/api/v1/overview.php diff --git a/api/v1/ping.php b/backend/api/v1/ping.php similarity index 100% rename from api/v1/ping.php rename to backend/api/v1/ping.php diff --git a/api/v1/plugins.php b/backend/api/v1/plugins.php similarity index 100% rename from api/v1/plugins.php rename to backend/api/v1/plugins.php diff --git a/api/v1/processes.php b/backend/api/v1/processes.php similarity index 100% rename from api/v1/processes.php rename to backend/api/v1/processes.php diff --git a/api/v1/shutdown.php b/backend/api/v1/shutdown.php similarity index 100% rename from api/v1/shutdown.php rename to backend/api/v1/shutdown.php diff --git a/api/v1/ssh.php b/backend/api/v1/ssh.php similarity index 100% rename from api/v1/ssh.php rename to backend/api/v1/ssh.php diff --git a/backend/api/v1/statistic.php b/backend/api/v1/statistic.php new file mode 100644 index 0000000..db36119 --- /dev/null +++ b/backend/api/v1/statistic.php @@ -0,0 +1,101 @@ +setFile(LOG_PATH . 'statistic/' . $_GET['statistic'] . '.csv'); + $data = array(); + $data['data'] = array(); + $limit = 2016; + if (isset($_GET['limit'])) { + $limit = $_GET['limit']; + } + $i = 0; + foreach ($log->getAll() as $row) { + if ($i >= 2016 - $limit) { + array_push($data['data'], array('time' => (int)$row[0], 'value' => (float)$row[1])); + } + $i++; + } + echo json_encode($data); +} else { + $api = new API; + + if (isset($_POST['id'])) { + $controller = new StatisticController(); + $controller->loadStatistics(); + + if (($name = $controller->getStatisticName($_POST['id'])) !== false) { + if (isset($_POST['plugin']) && trim($_POST['plugin']) != '') + pluginLanguage(trim($_POST['plugin'])); + + $builder = new StatisticBuilder(); + $builder->loadFromFile($name, (isset($_POST['plugin']) && trim($_POST['plugin']) != '') ? $_POST['plugin'] : NULL); + $statistic = $builder->getArray(); + + $log = new LogStatistic(); + $log->setFile(LOG_PATH . $statistic['raw'] . '.csv'); + $logData = $log->getAll(); + + $arr = $info = array(); + + foreach ($statistic['columns'] as $column) { + $arr['cols'][] = array('id' => '', 'label' => _t($column['label']), 'type' => $column['type']); + } + + getRowsFromLog($arr, $info, $logData, $statistic['columns'], $statistic['cycle']); + + if (isset($arr['rows'])) { + if (isset($_POST['type']) && $_POST['type'] == 'googleChart') + $arr['rows'] = convertForGoogleChart($arr['rows']); + + $arr['rows'] = array_slice($arr['rows'], -2016); + $arr['periods'] = $info['periods']; + + foreach (array('min', 'max') as $type) { + if ($statistic['limits'][$type]['use'] == 'multiply') + $arr[$type] = round($info[$type] * $statistic['limits'][$type]['value']); + elseif ($statistic['limits'][$type]['use'] == 'fix') { + if ($statistic['limits'][$type]['fix'] == true) + $arr[$type] = $statistic['limits'][$type]['value']; + else + $arr[$type] = round($info[$type]); + } + } + + $api->addData('statistic', $arr); + } else + $api->setError('error', 'Empty data.'); + } else + $api->setError('error', 'Data not found.'); + } else { + $statistics = array(); + $hiddenStatistics = unserialize(htmlspecialchars_decode(getConfig('main:statistic.hidden', 'a:0:{}'))); + + $controller = new StatisticController(); + $controller->loadStatistics(); + + foreach ($controller->getStatistics() as $statistic) { + $builder = new StatisticBuilder(); + $builder->loadFromFile($statistic); + + $array = $builder->getArray(); + if (!in_array($builder->getId(), $hiddenStatistics)) + $statistics[] = array('array' => $array); + } + + $api->addData('statistics', $statistics); + $api->addData('hidden', $hiddenStatistics); + } + + $api->display(); +} diff --git a/api/v1/statistic_download.php b/backend/api/v1/statistic_download.php similarity index 100% rename from api/v1/statistic_download.php rename to backend/api/v1/statistic_download.php diff --git a/api/v1/users_groups.php b/backend/api/v1/users_groups.php similarity index 100% rename from api/v1/users_groups.php rename to backend/api/v1/users_groups.php diff --git a/api/versions.php b/backend/api/versions.php similarity index 100% rename from api/versions.php rename to backend/api/versions.php diff --git a/index.php b/backend/index.php similarity index 100% rename from index.php rename to backend/index.php diff --git a/install/api/v1/feedback.php b/backend/install/api/v1/feedback.php similarity index 100% rename from install/api/v1/feedback.php rename to backend/install/api/v1/feedback.php diff --git a/install/api/versions.php b/backend/install/api/versions.php similarity index 100% rename from install/api/versions.php rename to backend/install/api/versions.php diff --git a/install/index.php b/backend/install/index.php similarity index 100% rename from install/index.php rename to backend/install/index.php diff --git a/install/public_html/css/style.css.php b/backend/install/public_html/css/style.css.php similarity index 100% rename from install/public_html/css/style.css.php rename to backend/install/public_html/css/style.css.php diff --git a/install/public_html/img/arrow-icon.svg b/backend/install/public_html/img/arrow-icon.svg similarity index 100% rename from install/public_html/img/arrow-icon.svg rename to backend/install/public_html/img/arrow-icon.svg diff --git a/install/public_html/img/cross-icon.svg b/backend/install/public_html/img/cross-icon.svg similarity index 100% rename from install/public_html/img/cross-icon.svg rename to backend/install/public_html/img/cross-icon.svg diff --git a/install/public_html/img/favicon/android-chrome-144x144.png b/backend/install/public_html/img/favicon/android-chrome-144x144.png similarity index 100% rename from install/public_html/img/favicon/android-chrome-144x144.png rename to backend/install/public_html/img/favicon/android-chrome-144x144.png diff --git a/install/public_html/img/favicon/android-chrome-192x192.png b/backend/install/public_html/img/favicon/android-chrome-192x192.png similarity index 100% rename from install/public_html/img/favicon/android-chrome-192x192.png rename to backend/install/public_html/img/favicon/android-chrome-192x192.png diff --git a/install/public_html/img/favicon/android-chrome-36x36.png b/backend/install/public_html/img/favicon/android-chrome-36x36.png similarity index 100% rename from install/public_html/img/favicon/android-chrome-36x36.png rename to backend/install/public_html/img/favicon/android-chrome-36x36.png diff --git a/install/public_html/img/favicon/android-chrome-48x48.png b/backend/install/public_html/img/favicon/android-chrome-48x48.png similarity index 100% rename from install/public_html/img/favicon/android-chrome-48x48.png rename to backend/install/public_html/img/favicon/android-chrome-48x48.png diff --git a/install/public_html/img/favicon/android-chrome-72x72.png b/backend/install/public_html/img/favicon/android-chrome-72x72.png similarity index 100% rename from install/public_html/img/favicon/android-chrome-72x72.png rename to backend/install/public_html/img/favicon/android-chrome-72x72.png diff --git a/install/public_html/img/favicon/android-chrome-96x96.png b/backend/install/public_html/img/favicon/android-chrome-96x96.png similarity index 100% rename from install/public_html/img/favicon/android-chrome-96x96.png rename to backend/install/public_html/img/favicon/android-chrome-96x96.png diff --git a/install/public_html/img/favicon/apple-touch-icon-120x120.png b/backend/install/public_html/img/favicon/apple-touch-icon-120x120.png similarity index 100% rename from install/public_html/img/favicon/apple-touch-icon-120x120.png rename to backend/install/public_html/img/favicon/apple-touch-icon-120x120.png diff --git a/install/public_html/img/favicon/apple-touch-icon-152x152.png b/backend/install/public_html/img/favicon/apple-touch-icon-152x152.png similarity index 100% rename from install/public_html/img/favicon/apple-touch-icon-152x152.png rename to backend/install/public_html/img/favicon/apple-touch-icon-152x152.png diff --git a/install/public_html/img/favicon/apple-touch-icon-180x180.png b/backend/install/public_html/img/favicon/apple-touch-icon-180x180.png similarity index 100% rename from install/public_html/img/favicon/apple-touch-icon-180x180.png rename to backend/install/public_html/img/favicon/apple-touch-icon-180x180.png diff --git a/install/public_html/img/favicon/apple-touch-icon-57x57.png b/backend/install/public_html/img/favicon/apple-touch-icon-57x57.png similarity index 100% rename from install/public_html/img/favicon/apple-touch-icon-57x57.png rename to backend/install/public_html/img/favicon/apple-touch-icon-57x57.png diff --git a/install/public_html/img/favicon/favicon-96x96.png b/backend/install/public_html/img/favicon/favicon-96x96.png similarity index 100% rename from install/public_html/img/favicon/favicon-96x96.png rename to backend/install/public_html/img/favicon/favicon-96x96.png diff --git a/install/public_html/img/favicon/favicon.ico b/backend/install/public_html/img/favicon/favicon.ico similarity index 100% rename from install/public_html/img/favicon/favicon.ico rename to backend/install/public_html/img/favicon/favicon.ico diff --git a/install/public_html/img/favicon/manifest.json b/backend/install/public_html/img/favicon/manifest.json similarity index 100% rename from install/public_html/img/favicon/manifest.json rename to backend/install/public_html/img/favicon/manifest.json diff --git a/install/public_html/img/favicon/safari-pinned-tab.svg b/backend/install/public_html/img/favicon/safari-pinned-tab.svg similarity index 100% rename from install/public_html/img/favicon/safari-pinned-tab.svg rename to backend/install/public_html/img/favicon/safari-pinned-tab.svg diff --git a/install/public_html/img/help-icon.svg b/backend/install/public_html/img/help-icon.svg similarity index 100% rename from install/public_html/img/help-icon.svg rename to backend/install/public_html/img/help-icon.svg diff --git a/install/public_html/img/info-icon.svg b/backend/install/public_html/img/info-icon.svg similarity index 100% rename from install/public_html/img/info-icon.svg rename to backend/install/public_html/img/info-icon.svg diff --git a/install/public_html/img/loader.svg b/backend/install/public_html/img/loader.svg similarity index 100% rename from install/public_html/img/loader.svg rename to backend/install/public_html/img/loader.svg diff --git a/install/public_html/img/logo.svg b/backend/install/public_html/img/logo.svg similarity index 100% rename from install/public_html/img/logo.svg rename to backend/install/public_html/img/logo.svg diff --git a/install/public_html/img/update-loader.svg b/backend/install/public_html/img/update-loader.svg similarity index 100% rename from install/public_html/img/update-loader.svg rename to backend/install/public_html/img/update-loader.svg diff --git a/install/public_html/js/feedback.js b/backend/install/public_html/js/feedback.js similarity index 100% rename from install/public_html/js/feedback.js rename to backend/install/public_html/js/feedback.js diff --git a/install/public_html/js/install.language.js b/backend/install/public_html/js/install.language.js similarity index 100% rename from install/public_html/js/install.language.js rename to backend/install/public_html/js/install.language.js diff --git a/install/public_html/js/jquery.min.js b/backend/install/public_html/js/jquery.min.js similarity index 100% rename from install/public_html/js/jquery.min.js rename to backend/install/public_html/js/jquery.min.js diff --git a/install/public_html/js/main.js b/backend/install/public_html/js/main.js similarity index 100% rename from install/public_html/js/main.js rename to backend/install/public_html/js/main.js diff --git a/install/public_html/js/translation.js b/backend/install/public_html/js/translation.js similarity index 100% rename from install/public_html/js/translation.js rename to backend/install/public_html/js/translation.js diff --git a/install/public_html/templates/error.tpl.php b/backend/install/public_html/templates/error.tpl.php similarity index 100% rename from install/public_html/templates/error.tpl.php rename to backend/install/public_html/templates/error.tpl.php diff --git a/install/public_html/templates/html_footer.tpl.php b/backend/install/public_html/templates/html_footer.tpl.php similarity index 100% rename from install/public_html/templates/html_footer.tpl.php rename to backend/install/public_html/templates/html_footer.tpl.php diff --git a/install/public_html/templates/html_header.tpl.php b/backend/install/public_html/templates/html_header.tpl.php similarity index 100% rename from install/public_html/templates/html_header.tpl.php rename to backend/install/public_html/templates/html_header.tpl.php diff --git a/install/public_html/templates/install.tpl.php b/backend/install/public_html/templates/install.tpl.php similarity index 100% rename from install/public_html/templates/install.tpl.php rename to backend/install/public_html/templates/install.tpl.php diff --git a/install/public_html/templates/install_cron.tpl.php b/backend/install/public_html/templates/install_cron.tpl.php similarity index 100% rename from install/public_html/templates/install_cron.tpl.php rename to backend/install/public_html/templates/install_cron.tpl.php diff --git a/install/public_html/templates/install_cron_info.tpl.php b/backend/install/public_html/templates/install_cron_info.tpl.php similarity index 100% rename from install/public_html/templates/install_cron_info.tpl.php rename to backend/install/public_html/templates/install_cron_info.tpl.php diff --git a/install/public_html/templates/install_finish.tpl.php b/backend/install/public_html/templates/install_finish.tpl.php similarity index 100% rename from install/public_html/templates/install_finish.tpl.php rename to backend/install/public_html/templates/install_finish.tpl.php diff --git a/install/public_html/templates/install_language.tpl.php b/backend/install/public_html/templates/install_language.tpl.php similarity index 100% rename from install/public_html/templates/install_language.tpl.php rename to backend/install/public_html/templates/install_language.tpl.php diff --git a/install/public_html/templates/install_requirement.tpl.php b/backend/install/public_html/templates/install_requirement.tpl.php similarity index 100% rename from install/public_html/templates/install_requirement.tpl.php rename to backend/install/public_html/templates/install_requirement.tpl.php diff --git a/install/public_html/templates/install_troubleshooting.tpl.php b/backend/install/public_html/templates/install_troubleshooting.tpl.php similarity index 100% rename from install/public_html/templates/install_troubleshooting.tpl.php rename to backend/install/public_html/templates/install_troubleshooting.tpl.php diff --git a/install/public_html/templates/install_user.tpl.php b/backend/install/public_html/templates/install_user.tpl.php similarity index 100% rename from install/public_html/templates/install_user.tpl.php rename to backend/install/public_html/templates/install_user.tpl.php diff --git a/install/public_html/templates/install_user_info.tpl.php b/backend/install/public_html/templates/install_user_info.tpl.php similarity index 100% rename from install/public_html/templates/install_user_info.tpl.php rename to backend/install/public_html/templates/install_user_info.tpl.php diff --git a/install/public_html/templates/msg.tpl.php b/backend/install/public_html/templates/msg.tpl.php similarity index 100% rename from install/public_html/templates/msg.tpl.php rename to backend/install/public_html/templates/msg.tpl.php diff --git a/install/public_html/templates/single_box.tpl.php b/backend/install/public_html/templates/single_box.tpl.php similarity index 100% rename from install/public_html/templates/single_box.tpl.php rename to backend/install/public_html/templates/single_box.tpl.php diff --git a/install/resources/cache/language.cache.php b/backend/install/resources/cache/language.cache.php similarity index 100% rename from install/resources/cache/language.cache.php rename to backend/install/resources/cache/language.cache.php diff --git a/install/resources/content/html_footer.php b/backend/install/resources/content/html_footer.php similarity index 100% rename from install/resources/content/html_footer.php rename to backend/install/resources/content/html_footer.php diff --git a/install/resources/content/html_header.php b/backend/install/resources/content/html_header.php similarity index 100% rename from install/resources/content/html_header.php rename to backend/install/resources/content/html_header.php diff --git a/install/resources/content/install.php b/backend/install/resources/content/install.php similarity index 100% rename from install/resources/content/install.php rename to backend/install/resources/content/install.php diff --git a/install/resources/content/install_cron.php b/backend/install/resources/content/install_cron.php similarity index 100% rename from install/resources/content/install_cron.php rename to backend/install/resources/content/install_cron.php diff --git a/install/resources/content/install_finish.php b/backend/install/resources/content/install_finish.php similarity index 100% rename from install/resources/content/install_finish.php rename to backend/install/resources/content/install_finish.php diff --git a/install/resources/content/install_language.php b/backend/install/resources/content/install_language.php similarity index 100% rename from install/resources/content/install_language.php rename to backend/install/resources/content/install_language.php diff --git a/install/resources/content/install_requirement.php b/backend/install/resources/content/install_requirement.php similarity index 93% rename from install/resources/content/install_requirement.php rename to backend/install/resources/content/install_requirement.php index 1544dff..2346472 100644 --- a/install/resources/content/install_requirement.php +++ b/backend/install/resources/content/install_requirement.php @@ -7,7 +7,7 @@ $tpl->setHeaderTitle(_t('Anforderungen')); // PHP $phpVersion = array('version' => PHP_VERSION, 'status' => false); -$phpSSH = array('status' => false); +$phpSSH = array('status' => true); $phpMcrypt = array('status' => false); $phpCLI = array('status' => false); $phpCURL = array('status' => false); @@ -28,7 +28,7 @@ if (extension_loaded('ssh2')) #if (function_exists('mcrypt_encrypt') !== false) # $phpMcrypt['status'] = true; -if (trim(exec('dpkg -s php7.3-cli | grep Status: ')) != '' || trim(exec('dpkg -s php7.4-cli | grep Status: ')) != '') +if (trim(exec('dpkg -s php7.3-cli | grep Status: ')) != '' || trim(exec('dpkg -s php7.4-cli | grep Status: ')) != '' || trim(exec('dpkg -s php8.0-cli | grep Status: ')) != '' || trim(exec('dpkg -s php8.1-cli | grep Status: ')) != '' || trim(exec('dpkg -s php8.2-cli | grep Status: ')) != '') $phpCLI['status'] = true; if (function_exists('curl_init') !== false) diff --git a/install/resources/content/install_troubleshooting.php b/backend/install/resources/content/install_troubleshooting.php similarity index 100% rename from install/resources/content/install_troubleshooting.php rename to backend/install/resources/content/install_troubleshooting.php diff --git a/install/resources/content/install_user.php b/backend/install/resources/content/install_user.php similarity index 100% rename from install/resources/content/install_user.php rename to backend/install/resources/content/install_user.php diff --git a/install/resources/init.php b/backend/install/resources/init.php similarity index 100% rename from install/resources/init.php rename to backend/install/resources/init.php diff --git a/install/resources/languages/en.php b/backend/install/resources/languages/en.php similarity index 100% rename from install/resources/languages/en.php rename to backend/install/resources/languages/en.php diff --git a/install/resources/library/curl/curl.class.php b/backend/install/resources/library/curl/curl.class.php similarity index 100% rename from install/resources/library/curl/curl.class.php rename to backend/install/resources/library/curl/curl.class.php diff --git a/install/resources/library/install/install.function.php b/backend/install/resources/library/install/install.function.php similarity index 100% rename from install/resources/library/install/install.function.php rename to backend/install/resources/library/install/install.function.php diff --git a/install/resources/library/main/main.function.php b/backend/install/resources/library/main/main.function.php similarity index 100% rename from install/resources/library/main/main.function.php rename to backend/install/resources/library/main/main.function.php diff --git a/install/resources/library/main/password.function.php b/backend/install/resources/library/main/password.function.php similarity index 100% rename from install/resources/library/main/password.function.php rename to backend/install/resources/library/main/password.function.php diff --git a/install/resources/library/main/rpi.function.php b/backend/install/resources/library/main/rpi.function.php similarity index 100% rename from install/resources/library/main/rpi.function.php rename to backend/install/resources/library/main/rpi.function.php diff --git a/install/resources/library/main/sites.php b/backend/install/resources/library/main/sites.php similarity index 100% rename from install/resources/library/main/sites.php rename to backend/install/resources/library/main/sites.php diff --git a/install/resources/library/main/tpl.class.php b/backend/install/resources/library/main/tpl.class.php similarity index 100% rename from install/resources/library/main/tpl.class.php rename to backend/install/resources/library/main/tpl.class.php diff --git a/install/resources/library/main/tpl.function.php b/backend/install/resources/library/main/tpl.function.php similarity index 100% rename from install/resources/library/main/tpl.function.php rename to backend/install/resources/library/main/tpl.function.php diff --git a/install/resources/library/terminal/Crypt/AES.php b/backend/install/resources/library/terminal/Crypt/AES.php similarity index 100% rename from install/resources/library/terminal/Crypt/AES.php rename to backend/install/resources/library/terminal/Crypt/AES.php diff --git a/install/resources/library/terminal/Crypt/Base.php b/backend/install/resources/library/terminal/Crypt/Base.php similarity index 100% rename from install/resources/library/terminal/Crypt/Base.php rename to backend/install/resources/library/terminal/Crypt/Base.php diff --git a/install/resources/library/terminal/Crypt/Blowfish.php b/backend/install/resources/library/terminal/Crypt/Blowfish.php similarity index 100% rename from install/resources/library/terminal/Crypt/Blowfish.php rename to backend/install/resources/library/terminal/Crypt/Blowfish.php diff --git a/install/resources/library/terminal/Crypt/DES.php b/backend/install/resources/library/terminal/Crypt/DES.php similarity index 100% rename from install/resources/library/terminal/Crypt/DES.php rename to backend/install/resources/library/terminal/Crypt/DES.php diff --git a/install/resources/library/terminal/Crypt/Hash.php b/backend/install/resources/library/terminal/Crypt/Hash.php similarity index 100% rename from install/resources/library/terminal/Crypt/Hash.php rename to backend/install/resources/library/terminal/Crypt/Hash.php diff --git a/install/resources/library/terminal/Crypt/RC2.php b/backend/install/resources/library/terminal/Crypt/RC2.php similarity index 100% rename from install/resources/library/terminal/Crypt/RC2.php rename to backend/install/resources/library/terminal/Crypt/RC2.php diff --git a/install/resources/library/terminal/Crypt/RC4.php b/backend/install/resources/library/terminal/Crypt/RC4.php similarity index 100% rename from install/resources/library/terminal/Crypt/RC4.php rename to backend/install/resources/library/terminal/Crypt/RC4.php diff --git a/install/resources/library/terminal/Crypt/RSA.php b/backend/install/resources/library/terminal/Crypt/RSA.php similarity index 100% rename from install/resources/library/terminal/Crypt/RSA.php rename to backend/install/resources/library/terminal/Crypt/RSA.php diff --git a/install/resources/library/terminal/Crypt/Random.php b/backend/install/resources/library/terminal/Crypt/Random.php similarity index 100% rename from install/resources/library/terminal/Crypt/Random.php rename to backend/install/resources/library/terminal/Crypt/Random.php diff --git a/install/resources/library/terminal/Crypt/Rijndael.php b/backend/install/resources/library/terminal/Crypt/Rijndael.php similarity index 100% rename from install/resources/library/terminal/Crypt/Rijndael.php rename to backend/install/resources/library/terminal/Crypt/Rijndael.php diff --git a/install/resources/library/terminal/Crypt/TripleDES.php b/backend/install/resources/library/terminal/Crypt/TripleDES.php similarity index 100% rename from install/resources/library/terminal/Crypt/TripleDES.php rename to backend/install/resources/library/terminal/Crypt/TripleDES.php diff --git a/install/resources/library/terminal/Crypt/Twofish.php b/backend/install/resources/library/terminal/Crypt/Twofish.php similarity index 100% rename from install/resources/library/terminal/Crypt/Twofish.php rename to backend/install/resources/library/terminal/Crypt/Twofish.php diff --git a/install/resources/library/terminal/File/ANSI.php b/backend/install/resources/library/terminal/File/ANSI.php similarity index 100% rename from install/resources/library/terminal/File/ANSI.php rename to backend/install/resources/library/terminal/File/ANSI.php diff --git a/install/resources/library/terminal/File/ASN1.php b/backend/install/resources/library/terminal/File/ASN1.php similarity index 100% rename from install/resources/library/terminal/File/ASN1.php rename to backend/install/resources/library/terminal/File/ASN1.php diff --git a/install/resources/library/terminal/File/X509.php b/backend/install/resources/library/terminal/File/X509.php similarity index 100% rename from install/resources/library/terminal/File/X509.php rename to backend/install/resources/library/terminal/File/X509.php diff --git a/install/resources/library/terminal/Math/BigInteger.php b/backend/install/resources/library/terminal/Math/BigInteger.php similarity index 100% rename from install/resources/library/terminal/Math/BigInteger.php rename to backend/install/resources/library/terminal/Math/BigInteger.php diff --git a/install/resources/library/terminal/Net/SCP.php b/backend/install/resources/library/terminal/Net/SCP.php similarity index 100% rename from install/resources/library/terminal/Net/SCP.php rename to backend/install/resources/library/terminal/Net/SCP.php diff --git a/install/resources/library/terminal/Net/SFTP.php b/backend/install/resources/library/terminal/Net/SFTP.php similarity index 100% rename from install/resources/library/terminal/Net/SFTP.php rename to backend/install/resources/library/terminal/Net/SFTP.php diff --git a/install/resources/library/terminal/Net/SFTP/Stream.php b/backend/install/resources/library/terminal/Net/SFTP/Stream.php similarity index 100% rename from install/resources/library/terminal/Net/SFTP/Stream.php rename to backend/install/resources/library/terminal/Net/SFTP/Stream.php diff --git a/install/resources/library/terminal/Net/SSH1.php b/backend/install/resources/library/terminal/Net/SSH1.php similarity index 100% rename from install/resources/library/terminal/Net/SSH1.php rename to backend/install/resources/library/terminal/Net/SSH1.php diff --git a/install/resources/library/terminal/Net/SSH2.php b/backend/install/resources/library/terminal/Net/SSH2.php similarity index 100% rename from install/resources/library/terminal/Net/SSH2.php rename to backend/install/resources/library/terminal/Net/SSH2.php diff --git a/install/resources/library/terminal/System/SSH/Agent.php b/backend/install/resources/library/terminal/System/SSH/Agent.php similarity index 100% rename from install/resources/library/terminal/System/SSH/Agent.php rename to backend/install/resources/library/terminal/System/SSH/Agent.php diff --git a/install/resources/library/terminal/System/SSH_Agent.php b/backend/install/resources/library/terminal/System/SSH_Agent.php similarity index 100% rename from install/resources/library/terminal/System/SSH_Agent.php rename to backend/install/resources/library/terminal/System/SSH_Agent.php diff --git a/license.txt b/backend/license.txt similarity index 100% rename from license.txt rename to backend/license.txt diff --git a/public_html/css/style.css.php b/backend/public_html/css/style.css.php similarity index 100% rename from public_html/css/style.css.php rename to backend/public_html/css/style.css.php diff --git a/public_html/img/arrow-icon.svg b/backend/public_html/img/arrow-icon.svg similarity index 100% rename from public_html/img/arrow-icon.svg rename to backend/public_html/img/arrow-icon.svg diff --git a/public_html/img/control-icons.svg b/backend/public_html/img/control-icons.svg similarity index 100% rename from public_html/img/control-icons.svg rename to backend/public_html/img/control-icons.svg diff --git a/public_html/img/cross-icon.svg b/backend/public_html/img/cross-icon.svg similarity index 100% rename from public_html/img/cross-icon.svg rename to backend/public_html/img/cross-icon.svg diff --git a/public_html/img/favicon/android-chrome-144x144.png b/backend/public_html/img/favicon/android-chrome-144x144.png similarity index 100% rename from public_html/img/favicon/android-chrome-144x144.png rename to backend/public_html/img/favicon/android-chrome-144x144.png diff --git a/public_html/img/favicon/android-chrome-192x192.png b/backend/public_html/img/favicon/android-chrome-192x192.png similarity index 100% rename from public_html/img/favicon/android-chrome-192x192.png rename to backend/public_html/img/favicon/android-chrome-192x192.png diff --git a/public_html/img/favicon/android-chrome-36x36.png b/backend/public_html/img/favicon/android-chrome-36x36.png similarity index 100% rename from public_html/img/favicon/android-chrome-36x36.png rename to backend/public_html/img/favicon/android-chrome-36x36.png diff --git a/public_html/img/favicon/android-chrome-48x48.png b/backend/public_html/img/favicon/android-chrome-48x48.png similarity index 100% rename from public_html/img/favicon/android-chrome-48x48.png rename to backend/public_html/img/favicon/android-chrome-48x48.png diff --git a/public_html/img/favicon/android-chrome-72x72.png b/backend/public_html/img/favicon/android-chrome-72x72.png similarity index 100% rename from public_html/img/favicon/android-chrome-72x72.png rename to backend/public_html/img/favicon/android-chrome-72x72.png diff --git a/public_html/img/favicon/android-chrome-96x96.png b/backend/public_html/img/favicon/android-chrome-96x96.png similarity index 100% rename from public_html/img/favicon/android-chrome-96x96.png rename to backend/public_html/img/favicon/android-chrome-96x96.png diff --git a/public_html/img/favicon/apple-touch-icon-120x120.png b/backend/public_html/img/favicon/apple-touch-icon-120x120.png similarity index 100% rename from public_html/img/favicon/apple-touch-icon-120x120.png rename to backend/public_html/img/favicon/apple-touch-icon-120x120.png diff --git a/public_html/img/favicon/apple-touch-icon-152x152.png b/backend/public_html/img/favicon/apple-touch-icon-152x152.png similarity index 100% rename from public_html/img/favicon/apple-touch-icon-152x152.png rename to backend/public_html/img/favicon/apple-touch-icon-152x152.png diff --git a/public_html/img/favicon/apple-touch-icon-180x180.png b/backend/public_html/img/favicon/apple-touch-icon-180x180.png similarity index 100% rename from public_html/img/favicon/apple-touch-icon-180x180.png rename to backend/public_html/img/favicon/apple-touch-icon-180x180.png diff --git a/public_html/img/favicon/apple-touch-icon-57x57.png b/backend/public_html/img/favicon/apple-touch-icon-57x57.png similarity index 100% rename from public_html/img/favicon/apple-touch-icon-57x57.png rename to backend/public_html/img/favicon/apple-touch-icon-57x57.png diff --git a/public_html/img/favicon/favicon-96x96.png b/backend/public_html/img/favicon/favicon-96x96.png similarity index 100% rename from public_html/img/favicon/favicon-96x96.png rename to backend/public_html/img/favicon/favicon-96x96.png diff --git a/public_html/img/favicon/favicon.ico b/backend/public_html/img/favicon/favicon.ico similarity index 100% rename from public_html/img/favicon/favicon.ico rename to backend/public_html/img/favicon/favicon.ico diff --git a/public_html/img/favicon/manifest.json b/backend/public_html/img/favicon/manifest.json similarity index 100% rename from public_html/img/favicon/manifest.json rename to backend/public_html/img/favicon/manifest.json diff --git a/public_html/img/favicon/safari-pinned-tab.svg b/backend/public_html/img/favicon/safari-pinned-tab.svg similarity index 100% rename from public_html/img/favicon/safari-pinned-tab.svg rename to backend/public_html/img/favicon/safari-pinned-tab.svg diff --git a/public_html/img/gear-icon.svg b/backend/public_html/img/gear-icon.svg similarity index 100% rename from public_html/img/gear-icon.svg rename to backend/public_html/img/gear-icon.svg diff --git a/public_html/img/help-icon.svg b/backend/public_html/img/help-icon.svg similarity index 100% rename from public_html/img/help-icon.svg rename to backend/public_html/img/help-icon.svg diff --git a/public_html/img/info-icon.svg b/backend/public_html/img/info-icon.svg similarity index 100% rename from public_html/img/info-icon.svg rename to backend/public_html/img/info-icon.svg diff --git a/public_html/img/loader.svg b/backend/public_html/img/loader.svg similarity index 100% rename from public_html/img/loader.svg rename to backend/public_html/img/loader.svg diff --git a/public_html/img/logo.svg b/backend/public_html/img/logo.svg similarity index 100% rename from public_html/img/logo.svg rename to backend/public_html/img/logo.svg diff --git a/public_html/img/network-signal-icons.svg b/backend/public_html/img/network-signal-icons.svg similarity index 100% rename from public_html/img/network-signal-icons.svg rename to backend/public_html/img/network-signal-icons.svg diff --git a/public_html/img/refresh-icon.svg b/backend/public_html/img/refresh-icon.svg similarity index 100% rename from public_html/img/refresh-icon.svg rename to backend/public_html/img/refresh-icon.svg diff --git a/public_html/img/update-loader.svg b/backend/public_html/img/update-loader.svg similarity index 100% rename from public_html/img/update-loader.svg rename to backend/public_html/img/update-loader.svg diff --git a/public_html/img/weather/01d.svg b/backend/public_html/img/weather/01d.svg similarity index 100% rename from public_html/img/weather/01d.svg rename to backend/public_html/img/weather/01d.svg diff --git a/public_html/img/weather/01n.svg b/backend/public_html/img/weather/01n.svg similarity index 100% rename from public_html/img/weather/01n.svg rename to backend/public_html/img/weather/01n.svg diff --git a/public_html/img/weather/02d.svg b/backend/public_html/img/weather/02d.svg similarity index 100% rename from public_html/img/weather/02d.svg rename to backend/public_html/img/weather/02d.svg diff --git a/public_html/img/weather/02n.svg b/backend/public_html/img/weather/02n.svg similarity index 100% rename from public_html/img/weather/02n.svg rename to backend/public_html/img/weather/02n.svg diff --git a/public_html/img/weather/03.svg b/backend/public_html/img/weather/03.svg similarity index 100% rename from public_html/img/weather/03.svg rename to backend/public_html/img/weather/03.svg diff --git a/public_html/img/weather/04.svg b/backend/public_html/img/weather/04.svg similarity index 100% rename from public_html/img/weather/04.svg rename to backend/public_html/img/weather/04.svg diff --git a/public_html/img/weather/09.svg b/backend/public_html/img/weather/09.svg similarity index 100% rename from public_html/img/weather/09.svg rename to backend/public_html/img/weather/09.svg diff --git a/public_html/img/weather/10d.svg b/backend/public_html/img/weather/10d.svg similarity index 100% rename from public_html/img/weather/10d.svg rename to backend/public_html/img/weather/10d.svg diff --git a/public_html/img/weather/10n.svg b/backend/public_html/img/weather/10n.svg similarity index 100% rename from public_html/img/weather/10n.svg rename to backend/public_html/img/weather/10n.svg diff --git a/public_html/img/weather/11.svg b/backend/public_html/img/weather/11.svg similarity index 100% rename from public_html/img/weather/11.svg rename to backend/public_html/img/weather/11.svg diff --git a/public_html/img/weather/13.svg b/backend/public_html/img/weather/13.svg similarity index 100% rename from public_html/img/weather/13.svg rename to backend/public_html/img/weather/13.svg diff --git a/public_html/img/weather/50.svg b/backend/public_html/img/weather/50.svg similarity index 100% rename from public_html/img/weather/50.svg rename to backend/public_html/img/weather/50.svg diff --git a/public_html/img/weather/darksky.png b/backend/public_html/img/weather/darksky.png similarity index 100% rename from public_html/img/weather/darksky.png rename to backend/public_html/img/weather/darksky.png diff --git a/public_html/img/weather/wunderground.png b/backend/public_html/img/weather/wunderground.png similarity index 100% rename from public_html/img/weather/wunderground.png rename to backend/public_html/img/weather/wunderground.png diff --git a/public_html/img/weather/yahoo.png b/backend/public_html/img/weather/yahoo.png similarity index 100% rename from public_html/img/weather/yahoo.png rename to backend/public_html/img/weather/yahoo.png diff --git a/public_html/js/feedback.js b/backend/public_html/js/feedback.js similarity index 100% rename from public_html/js/feedback.js rename to backend/public_html/js/feedback.js diff --git a/public_html/js/jquery.min.js b/backend/public_html/js/jquery.min.js similarity index 100% rename from public_html/js/jquery.min.js rename to backend/public_html/js/jquery.min.js diff --git a/public_html/js/main.js b/backend/public_html/js/main.js similarity index 100% rename from public_html/js/main.js rename to backend/public_html/js/main.js diff --git a/public_html/js/network_configuration.interface_refresh.js b/backend/public_html/js/network_configuration.interface_refresh.js similarity index 100% rename from public_html/js/network_configuration.interface_refresh.js rename to backend/public_html/js/network_configuration.interface_refresh.js diff --git a/public_html/js/network_configuration.method_select.js b/backend/public_html/js/network_configuration.method_select.js similarity index 100% rename from public_html/js/network_configuration.method_select.js rename to backend/public_html/js/network_configuration.method_select.js diff --git a/public_html/js/network_connect.wlan.js b/backend/public_html/js/network_connect.wlan.js similarity index 100% rename from public_html/js/network_connect.wlan.js rename to backend/public_html/js/network_connect.wlan.js diff --git a/public_html/js/overview.status_refresh.js b/backend/public_html/js/overview.status_refresh.js similarity index 100% rename from public_html/js/overview.status_refresh.js rename to backend/public_html/js/overview.status_refresh.js diff --git a/public_html/js/settings.overview.weather.js b/backend/public_html/js/settings.overview.weather.js similarity index 100% rename from public_html/js/settings.overview.weather.js rename to backend/public_html/js/settings.overview.weather.js diff --git a/public_html/js/settings.pi-control.theme.js b/backend/public_html/js/settings.pi-control.theme.js similarity index 100% rename from public_html/js/settings.pi-control.theme.js rename to backend/public_html/js/settings.pi-control.theme.js diff --git a/public_html/js/settings.troubleshooting.cron_selection.js b/backend/public_html/js/settings.troubleshooting.cron_selection.js similarity index 100% rename from public_html/js/settings.troubleshooting.cron_selection.js rename to backend/public_html/js/settings.troubleshooting.cron_selection.js diff --git a/public_html/js/shutdown.restart.js b/backend/public_html/js/shutdown.restart.js similarity index 100% rename from public_html/js/shutdown.restart.js rename to backend/public_html/js/shutdown.restart.js diff --git a/public_html/js/statistic_builder.js b/backend/public_html/js/statistic_builder.js similarity index 100% rename from public_html/js/statistic_builder.js rename to backend/public_html/js/statistic_builder.js diff --git a/public_html/js/terminal.websocket.js b/backend/public_html/js/terminal.websocket.js similarity index 100% rename from public_html/js/terminal.websocket.js rename to backend/public_html/js/terminal.websocket.js diff --git a/public_html/js/translation.js b/backend/public_html/js/translation.js similarity index 100% rename from public_html/js/translation.js rename to backend/public_html/js/translation.js diff --git a/public_html/templates/detailed_overview.tpl.php b/backend/public_html/templates/detailed_overview.tpl.php similarity index 100% rename from public_html/templates/detailed_overview.tpl.php rename to backend/public_html/templates/detailed_overview.tpl.php diff --git a/public_html/templates/discover_plugins.tpl.php b/backend/public_html/templates/discover_plugins.tpl.php similarity index 100% rename from public_html/templates/discover_plugins.tpl.php rename to backend/public_html/templates/discover_plugins.tpl.php diff --git a/public_html/templates/discover_plugins_info.tpl.php b/backend/public_html/templates/discover_plugins_info.tpl.php similarity index 100% rename from public_html/templates/discover_plugins_info.tpl.php rename to backend/public_html/templates/discover_plugins_info.tpl.php diff --git a/public_html/templates/error.tpl.php b/backend/public_html/templates/error.tpl.php similarity index 100% rename from public_html/templates/error.tpl.php rename to backend/public_html/templates/error.tpl.php diff --git a/public_html/templates/html_footer.tpl.php b/backend/public_html/templates/html_footer.tpl.php similarity index 100% rename from public_html/templates/html_footer.tpl.php rename to backend/public_html/templates/html_footer.tpl.php diff --git a/public_html/templates/html_header.tpl.php b/backend/public_html/templates/html_header.tpl.php similarity index 100% rename from public_html/templates/html_header.tpl.php rename to backend/public_html/templates/html_header.tpl.php diff --git a/public_html/templates/installed_packages.tpl.php b/backend/public_html/templates/installed_packages.tpl.php similarity index 100% rename from public_html/templates/installed_packages.tpl.php rename to backend/public_html/templates/installed_packages.tpl.php diff --git a/public_html/templates/login.tpl.php b/backend/public_html/templates/login.tpl.php similarity index 100% rename from public_html/templates/login.tpl.php rename to backend/public_html/templates/login.tpl.php diff --git a/public_html/templates/logs.tpl.php b/backend/public_html/templates/logs.tpl.php similarity index 100% rename from public_html/templates/logs.tpl.php rename to backend/public_html/templates/logs.tpl.php diff --git a/public_html/templates/logs_view.tpl.php b/backend/public_html/templates/logs_view.tpl.php similarity index 100% rename from public_html/templates/logs_view.tpl.php rename to backend/public_html/templates/logs_view.tpl.php diff --git a/public_html/templates/msg.tpl.php b/backend/public_html/templates/msg.tpl.php similarity index 100% rename from public_html/templates/msg.tpl.php rename to backend/public_html/templates/msg.tpl.php diff --git a/public_html/templates/network.tpl.php b/backend/public_html/templates/network.tpl.php similarity index 100% rename from public_html/templates/network.tpl.php rename to backend/public_html/templates/network.tpl.php diff --git a/public_html/templates/network_configuration.tpl.php b/backend/public_html/templates/network_configuration.tpl.php similarity index 100% rename from public_html/templates/network_configuration.tpl.php rename to backend/public_html/templates/network_configuration.tpl.php diff --git a/public_html/templates/network_configuration_add.tpl.php b/backend/public_html/templates/network_configuration_add.tpl.php similarity index 100% rename from public_html/templates/network_configuration_add.tpl.php rename to backend/public_html/templates/network_configuration_add.tpl.php diff --git a/public_html/templates/network_configuration_delete.tpl.php b/backend/public_html/templates/network_configuration_delete.tpl.php similarity index 100% rename from public_html/templates/network_configuration_delete.tpl.php rename to backend/public_html/templates/network_configuration_delete.tpl.php diff --git a/public_html/templates/network_configuration_edit.tpl.php b/backend/public_html/templates/network_configuration_edit.tpl.php similarity index 100% rename from public_html/templates/network_configuration_edit.tpl.php rename to backend/public_html/templates/network_configuration_edit.tpl.php diff --git a/public_html/templates/network_connect.tpl.php b/backend/public_html/templates/network_connect.tpl.php similarity index 100% rename from public_html/templates/network_connect.tpl.php rename to backend/public_html/templates/network_connect.tpl.php diff --git a/public_html/templates/network_hostname.tpl.php b/backend/public_html/templates/network_hostname.tpl.php similarity index 100% rename from public_html/templates/network_hostname.tpl.php rename to backend/public_html/templates/network_hostname.tpl.php diff --git a/public_html/templates/overview.tpl.php b/backend/public_html/templates/overview.tpl.php similarity index 100% rename from public_html/templates/overview.tpl.php rename to backend/public_html/templates/overview.tpl.php diff --git a/public_html/templates/plugins.tpl.php b/backend/public_html/templates/plugins.tpl.php similarity index 100% rename from public_html/templates/plugins.tpl.php rename to backend/public_html/templates/plugins.tpl.php diff --git a/public_html/templates/processes.tpl.php b/backend/public_html/templates/processes.tpl.php similarity index 100% rename from public_html/templates/processes.tpl.php rename to backend/public_html/templates/processes.tpl.php diff --git a/public_html/templates/restart.tpl.php b/backend/public_html/templates/restart.tpl.php similarity index 100% rename from public_html/templates/restart.tpl.php rename to backend/public_html/templates/restart.tpl.php diff --git a/public_html/templates/settings.tpl.php b/backend/public_html/templates/settings.tpl.php similarity index 100% rename from public_html/templates/settings.tpl.php rename to backend/public_html/templates/settings.tpl.php diff --git a/public_html/templates/settings/cache.tpl.php b/backend/public_html/templates/settings/cache.tpl.php similarity index 100% rename from public_html/templates/settings/cache.tpl.php rename to backend/public_html/templates/settings/cache.tpl.php diff --git a/public_html/templates/settings/notification.tpl.php b/backend/public_html/templates/settings/notification.tpl.php similarity index 100% rename from public_html/templates/settings/notification.tpl.php rename to backend/public_html/templates/settings/notification.tpl.php diff --git a/public_html/templates/settings/overview.tpl.php b/backend/public_html/templates/settings/overview.tpl.php similarity index 100% rename from public_html/templates/settings/overview.tpl.php rename to backend/public_html/templates/settings/overview.tpl.php diff --git a/public_html/templates/settings/pi-control.tpl.php b/backend/public_html/templates/settings/pi-control.tpl.php similarity index 100% rename from public_html/templates/settings/pi-control.tpl.php rename to backend/public_html/templates/settings/pi-control.tpl.php diff --git a/public_html/templates/settings/plugin_delete.tpl.php b/backend/public_html/templates/settings/plugin_delete.tpl.php similarity index 100% rename from public_html/templates/settings/plugin_delete.tpl.php rename to backend/public_html/templates/settings/plugin_delete.tpl.php diff --git a/public_html/templates/settings/plugins.tpl.php b/backend/public_html/templates/settings/plugins.tpl.php similarity index 100% rename from public_html/templates/settings/plugins.tpl.php rename to backend/public_html/templates/settings/plugins.tpl.php diff --git a/public_html/templates/settings/statistic.tpl.php b/backend/public_html/templates/settings/statistic.tpl.php similarity index 100% rename from public_html/templates/settings/statistic.tpl.php rename to backend/public_html/templates/settings/statistic.tpl.php diff --git a/public_html/templates/settings/statistic_reset.tpl.php b/backend/public_html/templates/settings/statistic_reset.tpl.php similarity index 100% rename from public_html/templates/settings/statistic_reset.tpl.php rename to backend/public_html/templates/settings/statistic_reset.tpl.php diff --git a/public_html/templates/settings/troubleshooting.tpl.php b/backend/public_html/templates/settings/troubleshooting.tpl.php similarity index 100% rename from public_html/templates/settings/troubleshooting.tpl.php rename to backend/public_html/templates/settings/troubleshooting.tpl.php diff --git a/public_html/templates/settings/update.tpl.php b/backend/public_html/templates/settings/update.tpl.php similarity index 100% rename from public_html/templates/settings/update.tpl.php rename to backend/public_html/templates/settings/update.tpl.php diff --git a/public_html/templates/settings/user.tpl.php b/backend/public_html/templates/settings/user.tpl.php similarity index 100% rename from public_html/templates/settings/user.tpl.php rename to backend/public_html/templates/settings/user.tpl.php diff --git a/public_html/templates/settings/user_add.tpl.php b/backend/public_html/templates/settings/user_add.tpl.php similarity index 100% rename from public_html/templates/settings/user_add.tpl.php rename to backend/public_html/templates/settings/user_add.tpl.php diff --git a/public_html/templates/settings/user_delete.tpl.php b/backend/public_html/templates/settings/user_delete.tpl.php similarity index 100% rename from public_html/templates/settings/user_delete.tpl.php rename to backend/public_html/templates/settings/user_delete.tpl.php diff --git a/public_html/templates/settings/user_edit.tpl.php b/backend/public_html/templates/settings/user_edit.tpl.php similarity index 100% rename from public_html/templates/settings/user_edit.tpl.php rename to backend/public_html/templates/settings/user_edit.tpl.php diff --git a/public_html/templates/shutdown.tpl.php b/backend/public_html/templates/shutdown.tpl.php similarity index 100% rename from public_html/templates/shutdown.tpl.php rename to backend/public_html/templates/shutdown.tpl.php diff --git a/public_html/templates/single_box.tpl.php b/backend/public_html/templates/single_box.tpl.php similarity index 100% rename from public_html/templates/single_box.tpl.php rename to backend/public_html/templates/single_box.tpl.php diff --git a/public_html/templates/ssh_login.tpl.php b/backend/public_html/templates/ssh_login.tpl.php similarity index 100% rename from public_html/templates/ssh_login.tpl.php rename to backend/public_html/templates/ssh_login.tpl.php diff --git a/public_html/templates/statistic.tpl.php b/backend/public_html/templates/statistic.tpl.php similarity index 100% rename from public_html/templates/statistic.tpl.php rename to backend/public_html/templates/statistic.tpl.php diff --git a/public_html/templates/terminal.tpl.php b/backend/public_html/templates/terminal.tpl.php similarity index 100% rename from public_html/templates/terminal.tpl.php rename to backend/public_html/templates/terminal.tpl.php diff --git a/public_html/templates/users_groups.tpl.php b/backend/public_html/templates/users_groups.tpl.php similarity index 100% rename from public_html/templates/users_groups.tpl.php rename to backend/public_html/templates/users_groups.tpl.php diff --git a/resources/config/cache.config.ini.php b/backend/resources/config/cache.config.ini.php similarity index 100% rename from resources/config/cache.config.ini.php rename to backend/resources/config/cache.config.ini.php diff --git a/resources/config/cron.config.ini.php b/backend/resources/config/cron.config.ini.php similarity index 100% rename from resources/config/cron.config.ini.php rename to backend/resources/config/cron.config.ini.php diff --git a/resources/config/init.config.ini.php b/backend/resources/config/init.config.ini.php similarity index 100% rename from resources/config/init.config.ini.php rename to backend/resources/config/init.config.ini.php diff --git a/resources/config/login.config.ini.php b/backend/resources/config/login.config.ini.php similarity index 100% rename from resources/config/login.config.ini.php rename to backend/resources/config/login.config.ini.php diff --git a/resources/config/main.config.ini.php b/backend/resources/config/main.config.ini.php similarity index 100% rename from resources/config/main.config.ini.php rename to backend/resources/config/main.config.ini.php diff --git a/resources/config/ssh.config.ini.php b/backend/resources/config/ssh.config.ini.php similarity index 100% rename from resources/config/ssh.config.ini.php rename to backend/resources/config/ssh.config.ini.php diff --git a/resources/config/terminal.config.ini.php b/backend/resources/config/terminal.config.ini.php similarity index 100% rename from resources/config/terminal.config.ini.php rename to backend/resources/config/terminal.config.ini.php diff --git a/resources/config/user.config.ini.php b/backend/resources/config/user.config.ini.php similarity index 100% rename from resources/config/user.config.ini.php rename to backend/resources/config/user.config.ini.php diff --git a/resources/content/detailed_overview.php b/backend/resources/content/detailed_overview.php similarity index 100% rename from resources/content/detailed_overview.php rename to backend/resources/content/detailed_overview.php diff --git a/resources/content/discover_plugins.php b/backend/resources/content/discover_plugins.php similarity index 100% rename from resources/content/discover_plugins.php rename to backend/resources/content/discover_plugins.php diff --git a/resources/content/discover_plugins_info.php b/backend/resources/content/discover_plugins_info.php similarity index 100% rename from resources/content/discover_plugins_info.php rename to backend/resources/content/discover_plugins_info.php diff --git a/resources/content/html_footer.php b/backend/resources/content/html_footer.php similarity index 100% rename from resources/content/html_footer.php rename to backend/resources/content/html_footer.php diff --git a/resources/content/html_header.php b/backend/resources/content/html_header.php similarity index 100% rename from resources/content/html_header.php rename to backend/resources/content/html_header.php diff --git a/resources/content/installed_packages.php b/backend/resources/content/installed_packages.php similarity index 100% rename from resources/content/installed_packages.php rename to backend/resources/content/installed_packages.php diff --git a/resources/content/login.php b/backend/resources/content/login.php similarity index 100% rename from resources/content/login.php rename to backend/resources/content/login.php diff --git a/resources/content/logs.php b/backend/resources/content/logs.php similarity index 100% rename from resources/content/logs.php rename to backend/resources/content/logs.php diff --git a/resources/content/msg.php b/backend/resources/content/msg.php similarity index 100% rename from resources/content/msg.php rename to backend/resources/content/msg.php diff --git a/resources/content/network.php b/backend/resources/content/network.php similarity index 100% rename from resources/content/network.php rename to backend/resources/content/network.php diff --git a/resources/content/network_configuration.php b/backend/resources/content/network_configuration.php similarity index 100% rename from resources/content/network_configuration.php rename to backend/resources/content/network_configuration.php diff --git a/resources/content/network_configuration_add.php b/backend/resources/content/network_configuration_add.php similarity index 100% rename from resources/content/network_configuration_add.php rename to backend/resources/content/network_configuration_add.php diff --git a/resources/content/network_configuration_delete.php b/backend/resources/content/network_configuration_delete.php similarity index 100% rename from resources/content/network_configuration_delete.php rename to backend/resources/content/network_configuration_delete.php diff --git a/resources/content/network_configuration_edit.php b/backend/resources/content/network_configuration_edit.php similarity index 100% rename from resources/content/network_configuration_edit.php rename to backend/resources/content/network_configuration_edit.php diff --git a/resources/content/network_connect.php b/backend/resources/content/network_connect.php similarity index 100% rename from resources/content/network_connect.php rename to backend/resources/content/network_connect.php diff --git a/resources/content/overview.php b/backend/resources/content/overview.php similarity index 100% rename from resources/content/overview.php rename to backend/resources/content/overview.php diff --git a/resources/content/plugins.php b/backend/resources/content/plugins.php similarity index 100% rename from resources/content/plugins.php rename to backend/resources/content/plugins.php diff --git a/resources/content/processes.php b/backend/resources/content/processes.php similarity index 100% rename from resources/content/processes.php rename to backend/resources/content/processes.php diff --git a/resources/content/settings.php b/backend/resources/content/settings.php similarity index 100% rename from resources/content/settings.php rename to backend/resources/content/settings.php diff --git a/resources/content/settings/cache.php b/backend/resources/content/settings/cache.php similarity index 100% rename from resources/content/settings/cache.php rename to backend/resources/content/settings/cache.php diff --git a/resources/content/settings/notification.php b/backend/resources/content/settings/notification.php similarity index 100% rename from resources/content/settings/notification.php rename to backend/resources/content/settings/notification.php diff --git a/resources/content/settings/overview.php b/backend/resources/content/settings/overview.php similarity index 100% rename from resources/content/settings/overview.php rename to backend/resources/content/settings/overview.php diff --git a/resources/content/settings/pi-control.php b/backend/resources/content/settings/pi-control.php similarity index 100% rename from resources/content/settings/pi-control.php rename to backend/resources/content/settings/pi-control.php diff --git a/resources/content/settings/plugins.php b/backend/resources/content/settings/plugins.php similarity index 100% rename from resources/content/settings/plugins.php rename to backend/resources/content/settings/plugins.php diff --git a/resources/content/settings/plugins_delete.php b/backend/resources/content/settings/plugins_delete.php similarity index 100% rename from resources/content/settings/plugins_delete.php rename to backend/resources/content/settings/plugins_delete.php diff --git a/resources/content/settings/plugins_status.php b/backend/resources/content/settings/plugins_status.php similarity index 100% rename from resources/content/settings/plugins_status.php rename to backend/resources/content/settings/plugins_status.php diff --git a/resources/content/settings/statistic.php b/backend/resources/content/settings/statistic.php similarity index 100% rename from resources/content/settings/statistic.php rename to backend/resources/content/settings/statistic.php diff --git a/resources/content/settings/troubleshooting.php b/backend/resources/content/settings/troubleshooting.php similarity index 100% rename from resources/content/settings/troubleshooting.php rename to backend/resources/content/settings/troubleshooting.php diff --git a/resources/content/settings/update.php b/backend/resources/content/settings/update.php similarity index 100% rename from resources/content/settings/update.php rename to backend/resources/content/settings/update.php diff --git a/resources/content/settings/user.php b/backend/resources/content/settings/user.php similarity index 100% rename from resources/content/settings/user.php rename to backend/resources/content/settings/user.php diff --git a/resources/content/shutdown.php b/backend/resources/content/shutdown.php similarity index 100% rename from resources/content/shutdown.php rename to backend/resources/content/shutdown.php diff --git a/resources/content/ssh_login.php b/backend/resources/content/ssh_login.php similarity index 100% rename from resources/content/ssh_login.php rename to backend/resources/content/ssh_login.php diff --git a/resources/content/statistic.php b/backend/resources/content/statistic.php similarity index 100% rename from resources/content/statistic.php rename to backend/resources/content/statistic.php diff --git a/resources/content/terminal.php b/backend/resources/content/terminal.php similarity index 100% rename from resources/content/terminal.php rename to backend/resources/content/terminal.php diff --git a/resources/content/users_groups.php b/backend/resources/content/users_groups.php similarity index 100% rename from resources/content/users_groups.php rename to backend/resources/content/users_groups.php diff --git a/resources/cron/30-user.php b/backend/resources/cron/30-user.php similarity index 100% rename from resources/cron/30-user.php rename to backend/resources/cron/30-user.php diff --git a/resources/cron/5-coretemp.php b/backend/resources/cron/5-coretemp.php similarity index 100% rename from resources/cron/5-coretemp.php rename to backend/resources/cron/5-coretemp.php diff --git a/resources/cron/5-cpufrequency.php b/backend/resources/cron/5-cpufrequency.php similarity index 100% rename from resources/cron/5-cpufrequency.php rename to backend/resources/cron/5-cpufrequency.php diff --git a/resources/cron/5-cpuload.php b/backend/resources/cron/5-cpuload.php similarity index 100% rename from resources/cron/5-cpuload.php rename to backend/resources/cron/5-cpuload.php diff --git a/resources/cron/5-memory.php b/backend/resources/cron/5-memory.php similarity index 100% rename from resources/cron/5-memory.php rename to backend/resources/cron/5-memory.php diff --git a/resources/cron/5-network.php b/backend/resources/cron/5-network.php similarity index 100% rename from resources/cron/5-network.php rename to backend/resources/cron/5-network.php diff --git a/resources/cron/5-ram.php b/backend/resources/cron/5-ram.php similarity index 100% rename from resources/cron/5-ram.php rename to backend/resources/cron/5-ram.php diff --git a/resources/cron/init.php b/backend/resources/cron/init.php similarity index 78% rename from resources/cron/init.php rename to backend/resources/cron/init.php index 20c82a7..aebfb84 100644 --- a/resources/cron/init.php +++ b/backend/resources/cron/init.php @@ -31,5 +31,5 @@ foreach ($fileArray as $file) } } -if (trim(exec('dpkg -s php7.4-cli | grep Status: ')) != '' || trim(exec('dpkg -s php7.3-cli | grep Status: ')) != '') +if (trim(exec('dpkg -s php7.4-cli | grep Status: ')) != '' || trim(exec('dpkg -s php7.3-cli | grep Status: ')) != '' || trim(exec('dpkg -s php8.0-cli | grep Status: ')) != '' || trim(exec('dpkg -s php8.1-cli | grep Status: ')) != '' || trim(exec('dpkg -s php8.2-cli | grep Status: ')) != '') setConfig('cron:execution.cron', time()); diff --git a/resources/init.php b/backend/resources/init.php similarity index 72% rename from resources/init.php rename to backend/resources/init.php index 7265c8a..3d93a11 100644 --- a/resources/init.php +++ b/backend/resources/init.php @@ -10,8 +10,8 @@ if (!isset($config)) 'ssh_ip' => '127.0.0.1' ), 'version' => array( - 'version' => '2.3.1', - 'versioncode' => 36, + 'version' => '2.3.2', + 'versioncode' => 37, 'android_comp_level' => 25 ), 'url' => array( @@ -26,20 +26,20 @@ if (!isset($config)) ); } -defined('PICONTROL_PATH') or define('PICONTROL_PATH', realpath(dirname(__FILE__).'/../').'/'); -defined('RESOURCE_PATH') or define('RESOURCE_PATH', realpath(dirname(__FILE__)).'/'); -defined('LIBRARY_PATH') or define('LIBRARY_PATH', realpath(dirname(__FILE__).'/library/').'/'); -defined('CONTENT_PATH') or define('CONTENT_PATH', realpath(dirname(__FILE__).'/content/').'/'); -defined('CONFIG_PATH') or define('CONFIG_PATH', realpath(dirname(__FILE__).'/config/').'/'); -defined('PLUGINS_PATH') or define('PLUGINS_PATH', realpath(dirname(__FILE__).'/plugins/').'/'); -defined('UPDATE_PATH') or define('UPDATE_PATH', realpath(dirname(__FILE__).'/update/').'/'); -defined('TEMPLATES_PATH') or define('TEMPLATES_PATH', realpath(dirname(__FILE__).'/../public_html/templates/').'/'); -defined('TEMPLATES2_PATH') or define('TEMPLATES2_PATH',realpath(dirname(__FILE__).'/templates/').'/'); -defined('LOG_PATH') or define('LOG_PATH', realpath(dirname(__FILE__).'/log/').'/'); -defined('CRON_PATH') or define('CRON_PATH', realpath(dirname(__FILE__).'/cron/').'/'); -defined('LANGUAGE_PATH') or define('LANGUAGE_PATH', realpath(dirname(__FILE__).'/languages/').'/'); -defined('CACHE_PATH') or define('CACHE_PATH', realpath(dirname(__FILE__).'/cache/').'/'); -defined('INSTALL_PATH') or define('INSTALL_PATH', realpath(dirname(__FILE__).'/../').'/install/'); +defined('PICONTROL_PATH') || define('PICONTROL_PATH', realpath(dirname(__FILE__).'/../').'/'); +defined('RESOURCE_PATH') || define('RESOURCE_PATH', realpath(dirname(__FILE__)).'/'); +defined('LIBRARY_PATH') || define('LIBRARY_PATH', realpath(dirname(__FILE__).'/library/').'/'); +defined('CONTENT_PATH') || define('CONTENT_PATH', realpath(dirname(__FILE__).'/content/').'/'); +defined('CONFIG_PATH') || define('CONFIG_PATH', realpath(dirname(__FILE__).'/config/').'/'); +defined('PLUGINS_PATH') || define('PLUGINS_PATH', realpath(dirname(__FILE__).'/plugins/').'/'); +defined('UPDATE_PATH') || define('UPDATE_PATH', realpath(dirname(__FILE__).'/update/').'/'); +defined('TEMPLATES_PATH') || define('TEMPLATES_PATH', realpath(dirname(__FILE__).'/../public_html/templates/').'/'); +defined('TEMPLATES2_PATH') || define('TEMPLATES2_PATH',realpath(dirname(__FILE__).'/templates/').'/'); +defined('LOG_PATH') || define('LOG_PATH', realpath(dirname(__FILE__).'/log/').'/'); +defined('CRON_PATH') || define('CRON_PATH', realpath(dirname(__FILE__).'/cron/').'/'); +defined('LANGUAGE_PATH') || define('LANGUAGE_PATH', realpath(dirname(__FILE__).'/languages/').'/'); +defined('CACHE_PATH') || define('CACHE_PATH', realpath(dirname(__FILE__).'/cache/').'/'); +defined('INSTALL_PATH') || define('INSTALL_PATH', realpath(dirname(__FILE__).'/../').'/install/'); $globalLanguage = isset($initConfig['language']) ? $initConfig['language'] : 'de'; $globalLanguageArray = array(); diff --git a/resources/languages/en.php b/backend/resources/languages/en.php similarity index 100% rename from resources/languages/en.php rename to backend/resources/languages/en.php diff --git a/backend/resources/library/api/StatisticController.php b/backend/resources/library/api/StatisticController.php new file mode 100644 index 0000000..0b4ba92 --- /dev/null +++ b/backend/resources/library/api/StatisticController.php @@ -0,0 +1,6 @@ +file) || !is_file($this->file)) touch($this->file); - $this->stream = fopen($this->file, 'r+') or exit(_t('Konnte Log-Datei nicht öffnen: %s', $this->file)); + $this->stream = fopen($this->file, 'r+');# || exit(_t('Konnte Log-Datei nicht öffnen: %s', $this->file)); } } diff --git a/resources/library/statistic/statistic.config.php b/backend/resources/library/statistic/statistic.config.php similarity index 100% rename from resources/library/statistic/statistic.config.php rename to backend/resources/library/statistic/statistic.config.php diff --git a/resources/library/statistic/statistic.function.php b/backend/resources/library/statistic/statistic.function.php similarity index 100% rename from resources/library/statistic/statistic.function.php rename to backend/resources/library/statistic/statistic.function.php diff --git a/resources/library/terminal/Crypt/AES.php b/backend/resources/library/terminal/Crypt/AES.php similarity index 100% rename from resources/library/terminal/Crypt/AES.php rename to backend/resources/library/terminal/Crypt/AES.php diff --git a/resources/library/terminal/Crypt/Base.php b/backend/resources/library/terminal/Crypt/Base.php similarity index 100% rename from resources/library/terminal/Crypt/Base.php rename to backend/resources/library/terminal/Crypt/Base.php diff --git a/resources/library/terminal/Crypt/Blowfish.php b/backend/resources/library/terminal/Crypt/Blowfish.php similarity index 100% rename from resources/library/terminal/Crypt/Blowfish.php rename to backend/resources/library/terminal/Crypt/Blowfish.php diff --git a/resources/library/terminal/Crypt/DES.php b/backend/resources/library/terminal/Crypt/DES.php similarity index 100% rename from resources/library/terminal/Crypt/DES.php rename to backend/resources/library/terminal/Crypt/DES.php diff --git a/resources/library/terminal/Crypt/Hash.php b/backend/resources/library/terminal/Crypt/Hash.php similarity index 100% rename from resources/library/terminal/Crypt/Hash.php rename to backend/resources/library/terminal/Crypt/Hash.php diff --git a/resources/library/terminal/Crypt/RC2.php b/backend/resources/library/terminal/Crypt/RC2.php similarity index 100% rename from resources/library/terminal/Crypt/RC2.php rename to backend/resources/library/terminal/Crypt/RC2.php diff --git a/resources/library/terminal/Crypt/RC4.php b/backend/resources/library/terminal/Crypt/RC4.php similarity index 100% rename from resources/library/terminal/Crypt/RC4.php rename to backend/resources/library/terminal/Crypt/RC4.php diff --git a/resources/library/terminal/Crypt/RSA.php b/backend/resources/library/terminal/Crypt/RSA.php similarity index 100% rename from resources/library/terminal/Crypt/RSA.php rename to backend/resources/library/terminal/Crypt/RSA.php diff --git a/resources/library/terminal/Crypt/Random.php b/backend/resources/library/terminal/Crypt/Random.php similarity index 100% rename from resources/library/terminal/Crypt/Random.php rename to backend/resources/library/terminal/Crypt/Random.php diff --git a/resources/library/terminal/Crypt/Rijndael.php b/backend/resources/library/terminal/Crypt/Rijndael.php similarity index 100% rename from resources/library/terminal/Crypt/Rijndael.php rename to backend/resources/library/terminal/Crypt/Rijndael.php diff --git a/resources/library/terminal/Crypt/TripleDES.php b/backend/resources/library/terminal/Crypt/TripleDES.php similarity index 100% rename from resources/library/terminal/Crypt/TripleDES.php rename to backend/resources/library/terminal/Crypt/TripleDES.php diff --git a/resources/library/terminal/Crypt/Twofish.php b/backend/resources/library/terminal/Crypt/Twofish.php similarity index 100% rename from resources/library/terminal/Crypt/Twofish.php rename to backend/resources/library/terminal/Crypt/Twofish.php diff --git a/resources/library/terminal/File/ANSI.php b/backend/resources/library/terminal/File/ANSI.php similarity index 100% rename from resources/library/terminal/File/ANSI.php rename to backend/resources/library/terminal/File/ANSI.php diff --git a/resources/library/terminal/File/ASN1.php b/backend/resources/library/terminal/File/ASN1.php similarity index 100% rename from resources/library/terminal/File/ASN1.php rename to backend/resources/library/terminal/File/ASN1.php diff --git a/resources/library/terminal/File/X509.php b/backend/resources/library/terminal/File/X509.php similarity index 100% rename from resources/library/terminal/File/X509.php rename to backend/resources/library/terminal/File/X509.php diff --git a/resources/library/terminal/Math/BigInteger.php b/backend/resources/library/terminal/Math/BigInteger.php similarity index 100% rename from resources/library/terminal/Math/BigInteger.php rename to backend/resources/library/terminal/Math/BigInteger.php diff --git a/resources/library/terminal/Net/SCP.php b/backend/resources/library/terminal/Net/SCP.php similarity index 100% rename from resources/library/terminal/Net/SCP.php rename to backend/resources/library/terminal/Net/SCP.php diff --git a/resources/library/terminal/Net/SFTP.php b/backend/resources/library/terminal/Net/SFTP.php similarity index 100% rename from resources/library/terminal/Net/SFTP.php rename to backend/resources/library/terminal/Net/SFTP.php diff --git a/resources/library/terminal/Net/SFTP/Stream.php b/backend/resources/library/terminal/Net/SFTP/Stream.php similarity index 100% rename from resources/library/terminal/Net/SFTP/Stream.php rename to backend/resources/library/terminal/Net/SFTP/Stream.php diff --git a/resources/library/terminal/Net/SSH1.php b/backend/resources/library/terminal/Net/SSH1.php similarity index 100% rename from resources/library/terminal/Net/SSH1.php rename to backend/resources/library/terminal/Net/SSH1.php diff --git a/resources/library/terminal/Net/SSH2.php b/backend/resources/library/terminal/Net/SSH2.php similarity index 100% rename from resources/library/terminal/Net/SSH2.php rename to backend/resources/library/terminal/Net/SSH2.php diff --git a/resources/library/terminal/System/SSH/Agent.php b/backend/resources/library/terminal/System/SSH/Agent.php similarity index 100% rename from resources/library/terminal/System/SSH/Agent.php rename to backend/resources/library/terminal/System/SSH/Agent.php diff --git a/resources/library/terminal/System/SSH_Agent.php b/backend/resources/library/terminal/System/SSH_Agent.php similarity index 100% rename from resources/library/terminal/System/SSH_Agent.php rename to backend/resources/library/terminal/System/SSH_Agent.php diff --git a/resources/library/terminal/terminal.php b/backend/resources/library/terminal/terminal.php similarity index 100% rename from resources/library/terminal/terminal.php rename to backend/resources/library/terminal/terminal.php diff --git a/resources/library/troubleshooting/troubleshooting.function.php b/backend/resources/library/troubleshooting/troubleshooting.function.php similarity index 100% rename from resources/library/troubleshooting/troubleshooting.function.php rename to backend/resources/library/troubleshooting/troubleshooting.function.php diff --git a/resources/library/update/update.class.php b/backend/resources/library/update/update.class.php similarity index 100% rename from resources/library/update/update.class.php rename to backend/resources/library/update/update.class.php diff --git a/resources/library/user/user.function.php b/backend/resources/library/user/user.function.php similarity index 100% rename from resources/library/user/user.function.php rename to backend/resources/library/user/user.function.php diff --git a/resources/plugins/download_plugin.php b/backend/resources/plugins/download_plugin.php similarity index 100% rename from resources/plugins/download_plugin.php rename to backend/resources/plugins/download_plugin.php diff --git a/resources/plugins/fritzbox/api/v1/status.php b/backend/resources/plugins/fritzbox/api/v1/status.php similarity index 100% rename from resources/plugins/fritzbox/api/v1/status.php rename to backend/resources/plugins/fritzbox/api/v1/status.php diff --git a/resources/plugins/fritzbox/plugin.config.php b/backend/resources/plugins/fritzbox/plugin.config.php similarity index 100% rename from resources/plugins/fritzbox/plugin.config.php rename to backend/resources/plugins/fritzbox/plugin.config.php diff --git a/resources/plugins/fritzbox/plugin.statistic.config.php b/backend/resources/plugins/fritzbox/plugin.statistic.config.php similarity index 100% rename from resources/plugins/fritzbox/plugin.statistic.config.php rename to backend/resources/plugins/fritzbox/plugin.statistic.config.php diff --git a/resources/plugins/fritzbox/public_html/css/style.css b/backend/resources/plugins/fritzbox/public_html/css/style.css similarity index 100% rename from resources/plugins/fritzbox/public_html/css/style.css rename to backend/resources/plugins/fritzbox/public_html/css/style.css diff --git a/resources/plugins/fritzbox/public_html/js/status_refresh.js b/backend/resources/plugins/fritzbox/public_html/js/status_refresh.js similarity index 100% rename from resources/plugins/fritzbox/public_html/js/status_refresh.js rename to backend/resources/plugins/fritzbox/public_html/js/status_refresh.js diff --git a/resources/plugins/fritzbox/public_html/templates/index.tpl.php b/backend/resources/plugins/fritzbox/public_html/templates/index.tpl.php similarity index 100% rename from resources/plugins/fritzbox/public_html/templates/index.tpl.php rename to backend/resources/plugins/fritzbox/public_html/templates/index.tpl.php diff --git a/resources/plugins/fritzbox/public_html/templates/settings/settings.tpl.php b/backend/resources/plugins/fritzbox/public_html/templates/settings/settings.tpl.php similarity index 100% rename from resources/plugins/fritzbox/public_html/templates/settings/settings.tpl.php rename to backend/resources/plugins/fritzbox/public_html/templates/settings/settings.tpl.php diff --git a/resources/plugins/fritzbox/public_html/templates/settings/statistic_reset.tpl.php b/backend/resources/plugins/fritzbox/public_html/templates/settings/statistic_reset.tpl.php similarity index 100% rename from resources/plugins/fritzbox/public_html/templates/settings/statistic_reset.tpl.php rename to backend/resources/plugins/fritzbox/public_html/templates/settings/statistic_reset.tpl.php diff --git a/resources/plugins/fritzbox/resources/content/index.php b/backend/resources/plugins/fritzbox/resources/content/index.php similarity index 100% rename from resources/plugins/fritzbox/resources/content/index.php rename to backend/resources/plugins/fritzbox/resources/content/index.php diff --git a/resources/plugins/fritzbox/resources/content/settings/settings.php b/backend/resources/plugins/fritzbox/resources/content/settings/settings.php similarity index 100% rename from resources/plugins/fritzbox/resources/content/settings/settings.php rename to backend/resources/plugins/fritzbox/resources/content/settings/settings.php diff --git a/resources/plugins/fritzbox/resources/languages/en.php b/backend/resources/plugins/fritzbox/resources/languages/en.php similarity index 100% rename from resources/plugins/fritzbox/resources/languages/en.php rename to backend/resources/plugins/fritzbox/resources/languages/en.php diff --git a/resources/plugins/fritzbox/resources/library/main/main.function.php b/backend/resources/plugins/fritzbox/resources/library/main/main.function.php similarity index 100% rename from resources/plugins/fritzbox/resources/library/main/main.function.php rename to backend/resources/plugins/fritzbox/resources/library/main/main.function.php diff --git a/resources/plugins/fritzbox/resources/templates/traffic_monitoring.tmp.php b/backend/resources/plugins/fritzbox/resources/templates/traffic_monitoring.tmp.php similarity index 100% rename from resources/plugins/fritzbox/resources/templates/traffic_monitoring.tmp.php rename to backend/resources/plugins/fritzbox/resources/templates/traffic_monitoring.tmp.php diff --git a/resources/plugins/update_plugin.php b/backend/resources/plugins/update_plugin.php similarity index 100% rename from resources/plugins/update_plugin.php rename to backend/resources/plugins/update_plugin.php diff --git a/resources/templates/coretemp_monitoring.tmp.php b/backend/resources/templates/coretemp_monitoring.tmp.php similarity index 100% rename from resources/templates/coretemp_monitoring.tmp.php rename to backend/resources/templates/coretemp_monitoring.tmp.php diff --git a/resources/templates/notification.tmp.php b/backend/resources/templates/notification.tmp.php similarity index 100% rename from resources/templates/notification.tmp.php rename to backend/resources/templates/notification.tmp.php diff --git a/resources/update/update_picontrol.php b/backend/resources/update/update_picontrol.php similarity index 100% rename from resources/update/update_picontrol.php rename to backend/resources/update/update_picontrol.php diff --git a/frontend/.browserslistrc b/frontend/.browserslistrc new file mode 100644 index 0000000..9dee646 --- /dev/null +++ b/frontend/.browserslistrc @@ -0,0 +1,3 @@ +> 1% +last 2 versions +not ie <= 8 diff --git a/frontend/.eslintrc.js b/frontend/.eslintrc.js new file mode 100644 index 0000000..9b10e0c --- /dev/null +++ b/frontend/.eslintrc.js @@ -0,0 +1,14 @@ +module.exports = { + root: true, + env: { + node: true, + }, + extends: ["plugin:vue/essential", "@vue/prettier"], + rules: { + "no-console": process.env.NODE_ENV === "production" ? "error" : "off", + "no-debugger": process.env.NODE_ENV === "production" ? "error" : "off", + }, + parserOptions: { + parser: "babel-eslint", + }, +}; diff --git a/frontend/.github/workflows/main.yml b/frontend/.github/workflows/main.yml new file mode 100644 index 0000000..b801c72 --- /dev/null +++ b/frontend/.github/workflows/main.yml @@ -0,0 +1,12 @@ +name: Autocloser +on: [issues] +jobs: + autoclose: + runs-on: ubuntu-latest + steps: + - name: Issue auto-closer + uses: roots/issue-closer-action@v1.1 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + issue-close-message: "@${issue.user.login} this issue was automatically closed because it did not follow our rules:\n\n
\n\n\n\nIMPORTANT: Please use the following link to create a new issue:\n\nhttps://www.creative-tim.com/new-issue/vue-material-dashboard\n\n**If your issue was not created using the app above, it will be closed immediately.**\n\n\n\nLove Creative Tim? Do you need Angular, React, Vuejs or HTML? You can visit:\n👉  https://www.creative-tim.com/bundles\n👉  https://www.creative-tim.com\n\n\n
\n\n" + issue-pattern: (\#\#\# Version([\S\s.*]*?)\#\#\# Reproduction link([\S\s.*]*?)\#\#\# Operating System([\S\s.*]*?)\#\#\# Device([\S\s.*]*?)\#\#\# Browser & Version([\S\s.*]*?)\#\#\# Steps to reproduce([\S\s.*]*?)\#\#\# What is expected([\S\s.*]*?)\#\#\# What is actually happening([\S\s.*]*?)---([\S\s.*]*?)\#\#\# Solution([\S\s.*]*?)\#\#\# Additional comments([\S\s.*]*?)\<\!-- generated by creative-tim-issues\. DO NOT REMOVE --\>)|(\#\#\# What is your enhancement([\S\s.*]*?)\<\!-- generated by creative-tim-issues\. DO NOT REMOVE --\>) diff --git a/frontend/.gitignore b/frontend/.gitignore new file mode 100644 index 0000000..68fd03a --- /dev/null +++ b/frontend/.gitignore @@ -0,0 +1,5 @@ +node_modules/ +dist/ +package-lock.json +/docs +/dist diff --git a/frontend/.jshintrc b/frontend/.jshintrc new file mode 100644 index 0000000..5db9558 --- /dev/null +++ b/frontend/.jshintrc @@ -0,0 +1,3 @@ +{ + "esversion": 6 +} diff --git a/frontend/.npmrc b/frontend/.npmrc new file mode 100644 index 0000000..e9ee3cb --- /dev/null +++ b/frontend/.npmrc @@ -0,0 +1 @@ +legacy-peer-deps=true \ No newline at end of file diff --git a/frontend/CHANGELOG.md b/frontend/CHANGELOG.md new file mode 100644 index 0000000..18f982f --- /dev/null +++ b/frontend/CHANGELOG.md @@ -0,0 +1,77 @@ +# Change Log + +## [1.5.1] 2023-01-10 + +- Update dependencies and devDependencies. +- Fix issue when running `npm install`. + +## [1.5.0] 2022-03-18 + +### Dependencies Updates + +- Updated all out of date dependencies from `package.json` file + +## [1.4.0] 2020-03-12 + +### Dependencies Updates + +- Updated all out of date dependencies from `package.json` file +- Add `API_KEY` file +- Add new structure for google maps plugin + +## [1.3.2] 2019-12-13 + +### Dependencies Updates + +- Updated all out of date dependencies from `package.json` file +- The version is now `v1.3.2` to have the same versioning line with the PRO version of this product + +## [1.2.1] 2019-06-14 + +### Dependencies Updates, Vue Material Update + +- Updated all out of date dependencies from `package.json` file +- The framework `Vuematerial.io` was updated to the latest beta version `1.0.0-beta-11` + +## [1.2.0] 2019-04-30 + +### Dependencies Updates + +- Updated all out of date dependencies from `package.json` file + +## [1.1.0] 2019-02-08 + +### Dependencies Updates, Improvements + +- Updated all out of date dependencies from `package.json` file +- Removed all `to=""` and replaced with `href=""` props from non router-link components for avoid this error `[Vue warn]: Error in render: "TypeError: Cannot read property 'options' of undefined"` +- Changed links from footer + +## [1.0.3] 2018-11-26 + +### Bug Fixing + +- Fixed error `[Vue warn]: Error in render: "TypeError: Cannot read property 'options' of undefined"` + +## [1.0.2] 2018-11-19 + +### Plugin Updates, BugFixing + +- Updated all `dependencies` and `devDependencies` to the latest versions +- Cleaned `package.json` file +- Removed all lint warnings and errors +- Github issues fixed +- Other bug fixes + +## [1.0.1] 2018-07-13 + +### BugFixing and Updates + +- updated all the npm packages +- scroll issue on mobile devices fixed +- added button `Upgrade to PRO` in the sidebar +- another small bug fixes + +## [1.0.0] 2018-05-03 + +- Initial Release diff --git a/frontend/ISSUE_TEMPLATE.md b/frontend/ISSUE_TEMPLATE.md new file mode 100644 index 0000000..4235f95 --- /dev/null +++ b/frontend/ISSUE_TEMPLATE.md @@ -0,0 +1,13 @@ + + + diff --git a/frontend/README.md b/frontend/README.md new file mode 100644 index 0000000..4adec80 --- /dev/null +++ b/frontend/README.md @@ -0,0 +1,199 @@ +# [Vue Material Dashboard](https://demos.creative-tim.com/vue-material-dashboard) [![Tweet](https://img.shields.io/twitter/url/http/shields.io.svg?style=social&logo=twitter)](https://twitter.com/home?status=Vue%20Material%20Dashboard,%20a%20free%20Material%20Admin%20Template%20%E2%9D%A4%EF%B8%8F%20https%3A//bit.ly/2Nh5aVy%20%20%23vue%20%23material%20%23design%20%23developers%20%23freebie%20%20via%20%40CreativeTim) + + + ![version](https://img.shields.io/badge/version-1.5.1-blue.svg) ![license](https://img.shields.io/badge/license-MIT-blue.svg) [![GitHub issues open](https://img.shields.io/github/issues/creativetimofficial/vue-material-dashboard.svg?maxAge=2592000)](https://github.com/creativetimofficial/vue-material-dashboard/issues?q=is%3Aopen+is%3Aissue) [![GitHub issues closed](https://img.shields.io/github/issues-closed-raw/creativetimofficial/vue-material-dashboard.svg?maxAge=2592000)](https://github.com/creativetimofficial/vue-material-dashboard/issues?q=is%3Aissue+is%3Aclosed) [![Join the chat at https://gitter.im/NIT-dgp/General](https://badges.gitter.im/NIT-dgp/General.svg)](https://gitter.im/creative-tim-general/Lobby) [![Chat](https://img.shields.io/badge/chat-on%20discord-7289da.svg)](https://discord.gg/E4aHAQy) + + +![Product Gif](https://s3.amazonaws.com/creativetim_bucket/github/gif/vue-material-dashboard.gif) + +Vue Material Dashboard is a beautiful resource built over [Vue Material](https://vuematerial.io/) and [Vuejs](https://vuejs.org/v2/guide/). It will help you get started developing dashboards in no time. Vue Material Dashboard is the official Vuejs version of the Original Material Dashboard. Using the Dashboard is pretty simple but requires basic knowledge of Javascript, [Vuejs](https://vuejs.org/v2/guide/) and [Vue Router](https://router.vuejs.org/en/). + +We have created it thinking about things you actually need in a dashboard. Vue Material Dashboard contains handpicked and optimised Vuejs plugins. Everything is designed to fit with one another. As you will be able to see, the dashboard you can access on Creative Tim is a customisation of this product. + +Let us know what you think and what we can improve below. And good luck with development! + + +## Table of Contents + +* [Versions](#versions) +* [Demo](#demo) +* [Quick Start](#quick-start) +* [Documentation](#documentation) +* [File Structure](#file-structure) +* [Browser Support](#browser-support) +* [Resources](#resources) +* [Reporting Issues](#reporting-issues) +* [Technical Support or Questions](#technical-support-or-questions) +* [Licensing](#licensing) +* [Useful Links](#useful-links) + + + +## Versions + +[](https://www.creative-tim.com/product/material-kit)[](https://www.creative-tim.com/product/material-kit-react) +[](https://www.creative-tim.com/product/vue-material-dashboard) +[](https://www.creative-tim.com/product/material-dashboard-angular2) + + +| HTML | React | +| --- | --- | +| [![Material Dashboard HTML](https://s3.amazonaws.com/creativetim_bucket/products/50/thumb/opt_md_thumbnail.jpg)](https://www.creative-tim.com/product/material-dashboard) | [![Material Dashboard React](https://s3.amazonaws.com/creativetim_bucket/products/71/thumb/opt_mdr_thumbnail.jpg)](https://www.creative-tim.com/product/material-dashboard-react) + +| Vue | Angular | +| --- | --- | +| [![Vue Material Dashboard](https://s3.amazonaws.com/creativetim_bucket/products/81/thumb/opt_md_vue_thumbnail.jpg)](https://www.creative-tim.com/product/vue-material-dashboard) | [![Material Dashboard Angular 2](https://s3.amazonaws.com/creativetim_bucket/products/53/thumb/opt_md_angular_thumbnail.jpg)](https://www.creative-tim.com/product/material-dashboard-angular2) + + + +## Demo + +| Dashboard | User Profile | Tables | Maps | Notification | +| --- | --- | --- | --- | --- | +| [![Start page](src/assets/github/dashboard.png)](https://demos.creative-tim.com/vue-material-dashboard) | [![User profile page](src/assets/github/user_profile.png)](https://demos.creative-tim.com/vue-material-dashboard/#/user) | [![Tables page ](src/assets/github/tables.png)](https://demos.creative-tim.com/vue-material-dashboard/#/table) | [![Maps Page](src/assets/github/maps.png)](https://demos.creative-tim.com/vue-material-dashboard/#/maps) | [![Notification page](src/assets/github/notification.png)](https://demos.creative-tim.com/vue-material-dashboard/#/notifications) + +[View More](https://demos.creative-tim.com/vue-material-dashboard). + + +## Quick start + +## :cloud: Build Setup + +### install dependencies +`npm install` +### serve with hot reload at localhost:8080 +`npm run dev` +### build for production with minification +`npm run build` + +- [Download from Github](https://github.com/creativetimofficial/vue-material-dashboard/archive/master.zip). +- [Download from Creative Tim](https://www.creative-tim.com/product/vue-material-dashboard). +- Clone the repo: `git clone https://github.com/creativetimofficial/vue-material-dashboard.git`. + +For detailed explanation on how things work, checkout the [guide](http://vuejs-templates.github.io/webpack/) and [docs for vue-loader](http://vuejs.github.io/vue-loader). + + +## Documentation +The documentation for the Vue Material Dashboard is hosted at our [website](https://demos.creative-tim.com/vue-material-dashboard/documentation). + + +## File Structure +Within the download you'll find the following directories and files: + +``` +vue-material-dashboard +├── README.md +├── babel.config.js +├── package.json +├── postcss.config.js +├── public +│   └── index.html +└── src + ├── App.vue + ├── assets + │   ├── img + │   └── scss + │   ├── material-dashboard.scss + │   └── md + ├── components + │   ├── Cards + │   │   ├── ChartCard.vue + │   │   ├── NavTabsCard.vue + │   │   └── StatsCard.vue + │   ├── Dropdown.vue + │   ├── NotificationPlugin + │   │   ├── Notification.vue + │   │   ├── Notifications.vue + │   │   └── index.js + │   ├── SidebarPlugin + │   │   ├── SideBar.vue + │   │   ├── SidebarLink.vue + │   │   └── index.js + │   ├── Tables + │   │   ├── NavTabsTable.vue + │   │   ├── OrderedTable.vue + │   │   └── SimpleTable.vue + │   └── index.js + ├── globalComponents.js + ├── globalDirectives.js + ├── main.js + ├── material-dashboard.js + ├── pages + │   ├── Dashboard.vue + │   ├── Icons.vue + │   ├── Layout + │   │   ├── Content.vue + │   │   ├── ContentFooter.vue + │   │   ├── DashboardLayout.vue + │   │   ├── MobileMenu.vue + │   │   └── TopNavbar.vue + │   ├── Maps.vue + │   ├── Notifications.vue + │   ├── TableList.vue + │   ├── Typography.vue + │   ├── UpgradeToPRO.vue + │   ├── UserProfile + │   │   ├── EditProfileForm.vue + │   │   └── UserCard.vue + │   ├── UserProfile.vue + │   └── index.js + └── routes + └── routes.js +``` + + +## Browser Support + +At present, we officially aim to support the last two versions of the following browsers: + + + + +## Resources +- Demo: +- Download Page: +- Documentation: +- License Agreement: +- Support: +- Issues: [Github Issues Page](https://github.com/creativetimofficial/vue-material-dashboard/issues) +## Reporting Issues + +We use GitHub Issues as the official bug tracker for the Vue Material Dashboard. Here are some advices for our users that want to report an issue: + +1. Make sure that you are using the latest version of the Vue Material Dashboard. Check the CHANGELOG from your dashboard on our [website](https://www.creative-tim.com/). +2. Providing us reproducible steps for the issue will shorten the time it takes for it to be fixed. +3. Some issues may be browser specific, so specifying in what browser you encountered the issue might help. + + +## Technical Support or Questions + +If you have questions or need help integrating the product please [contact us](https://www.creative-tim.com/contact-us) instead of opening an issue. + + + +## Licensing + +- Copyright 2023 Creative Tim (https://www.creative-tim.com/) + +- Licensed under MIT (https://github.com/creativetimofficial/vue-material-dashboard/blob/master/LICENSE.md) + + + +## Useful Links + +- [More products](https://www.creative-tim.com/bootstrap-themes) from Creative Tim +- [Tutorials](https://www.youtube.com/channel/UCVyTG4sCw-rOvB9oHkzZD1w) +- [Freebies](https://www.creative-tim.com/bootstrap-themes/free) from Creative Tim +- [Affiliate Program](https://www.creative-tim.com/affiliates/new) (earn money) + +##### Social Media + +Twitter: + +Facebook: + +Dribbble: + +Google+: + +Instagram: diff --git a/frontend/babel.config.js b/frontend/babel.config.js new file mode 100644 index 0000000..1d248fc --- /dev/null +++ b/frontend/babel.config.js @@ -0,0 +1,3 @@ +module.exports = { + presets: ["@vue/app"], +}; diff --git a/frontend/package.json b/frontend/package.json new file mode 100644 index 0000000..e4a5687 --- /dev/null +++ b/frontend/package.json @@ -0,0 +1,38 @@ +{ + "name": "vue-material-dashboard", + "version": "1.5.1", + "private": true, + "scripts": { + "serve": "vue-cli-service serve --open", + "dev": "npm run serve", + "build": "vue-cli-service build", + "lint": "vue-cli-service lint" + }, + "dependencies": { + "chartist": "0.11.4", + "core-js": "3.26.1", + "google-maps": "4.3.3", + "vue": "2.7.14", + "vue-clickaway": "2.2.2", + "vue-github-buttons": "3.1.0", + "vue-material": "1.0.0-beta-15", + "vue-router": "3.5.2", + "vue-social-sharing": "3.0.9" + }, + "devDependencies": { + "@vue/cli-plugin-babel": "4.5.19", + "@vue/cli-plugin-eslint": "4.5.19", + "@vue/cli-plugin-router": "4.5.19", + "@vue/cli-service": "4.5.19", + "@vue/eslint-config-prettier": "7.0.0", + "babel-eslint": "10.1.0", + "es6-promise": "4.2.8", + "eslint": "7.32.0", + "eslint-plugin-prettier": "4.2.1", + "eslint-plugin-vue": "7.20.0", + "prettier": "2.8.1", + "sass": "1.56.2", + "sass-loader": "10.2.0", + "vue-template-compiler": "2.7.14" + } +} diff --git a/frontend/postcss.config.js b/frontend/postcss.config.js new file mode 100644 index 0000000..a47ef4f --- /dev/null +++ b/frontend/postcss.config.js @@ -0,0 +1,5 @@ +module.exports = { + plugins: { + autoprefixer: {}, + }, +}; diff --git a/frontend/public/favicon.png b/frontend/public/favicon.png new file mode 100644 index 0000000..7d8b7d0 Binary files /dev/null and b/frontend/public/favicon.png differ diff --git a/frontend/public/index.html b/frontend/public/index.html new file mode 100644 index 0000000..7bef99e --- /dev/null +++ b/frontend/public/index.html @@ -0,0 +1,54 @@ + + + + + + + + + Vue Material Dashboard by Creative Tim + + + + + + + + +
+ + + diff --git a/frontend/src/App.vue b/frontend/src/App.vue new file mode 100644 index 0000000..744c323 --- /dev/null +++ b/frontend/src/App.vue @@ -0,0 +1,7 @@ + + + diff --git a/frontend/src/assets/img/apple-icon.png b/frontend/src/assets/img/apple-icon.png new file mode 100644 index 0000000..a20470f Binary files /dev/null and b/frontend/src/assets/img/apple-icon.png differ diff --git a/frontend/src/assets/img/faces/marc.jpg b/frontend/src/assets/img/faces/marc.jpg new file mode 100644 index 0000000..af6401d Binary files /dev/null and b/frontend/src/assets/img/faces/marc.jpg differ diff --git a/frontend/src/assets/img/favicon.png b/frontend/src/assets/img/favicon.png new file mode 100644 index 0000000..7d8b7d0 Binary files /dev/null and b/frontend/src/assets/img/favicon.png differ diff --git a/frontend/src/assets/img/mask.png b/frontend/src/assets/img/mask.png new file mode 100644 index 0000000..429360d Binary files /dev/null and b/frontend/src/assets/img/mask.png differ diff --git a/frontend/src/assets/img/new_logo.png b/frontend/src/assets/img/new_logo.png new file mode 100644 index 0000000..8e2192b Binary files /dev/null and b/frontend/src/assets/img/new_logo.png differ diff --git a/frontend/src/assets/img/sidebar-1.jpg b/frontend/src/assets/img/sidebar-1.jpg new file mode 100644 index 0000000..0a716b5 Binary files /dev/null and b/frontend/src/assets/img/sidebar-1.jpg differ diff --git a/frontend/src/assets/img/sidebar-2.jpg b/frontend/src/assets/img/sidebar-2.jpg new file mode 100644 index 0000000..1cfdbed Binary files /dev/null and b/frontend/src/assets/img/sidebar-2.jpg differ diff --git a/frontend/src/assets/img/sidebar-3.jpg b/frontend/src/assets/img/sidebar-3.jpg new file mode 100644 index 0000000..99c0c1c Binary files /dev/null and b/frontend/src/assets/img/sidebar-3.jpg differ diff --git a/frontend/src/assets/img/sidebar-4.jpg b/frontend/src/assets/img/sidebar-4.jpg new file mode 100644 index 0000000..f72270e Binary files /dev/null and b/frontend/src/assets/img/sidebar-4.jpg differ diff --git a/frontend/src/assets/img/tim_80x80.png b/frontend/src/assets/img/tim_80x80.png new file mode 100644 index 0000000..1f7aa0d Binary files /dev/null and b/frontend/src/assets/img/tim_80x80.png differ diff --git a/frontend/src/assets/img/vue-logo.png b/frontend/src/assets/img/vue-logo.png new file mode 100644 index 0000000..74389d8 Binary files /dev/null and b/frontend/src/assets/img/vue-logo.png differ diff --git a/frontend/src/assets/scss/material-dashboard.scss b/frontend/src/assets/scss/material-dashboard.scss new file mode 100644 index 0000000..221bf0b --- /dev/null +++ b/frontend/src/assets/scss/material-dashboard.scss @@ -0,0 +1,49 @@ +// ========================================================= +// * Vue Material Dashboard - v1.5.1 +// ========================================================= +// +// * Product Page: https://www.creative-tim.com/product/vue-material-dashboard +// * Copyright 2019 Creative Tim (https://www.creative-tim.com) +// * Licensed under MIT (https://github.com/creativetimofficial/vue-material-dashboard/blob/master/LICENSE.md) +// +// * Coded by Creative Tim +// +// ========================================================= +// +// * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +//variables and mixins +@import "md/variables"; +@import "md/mixins"; +@import "md/shadows"; + +//plugin css +@import "md/plugins/_perfect-scrollbar"; + +// Core CSS +@import "md/typography"; +@import "md/sidebar-and-main-panel"; +@import "md/buttons"; +@import "md/misc"; +@import "md/inputs"; +@import "md/fixed-plugin"; +@import "md/forms"; +@import "md/alerts"; +@import "md/tables"; +@import "md/layout"; +@import "md/checkboxes"; +@import "md/togglebutton"; +@import "md/ripples"; +@import "md/pagination"; +@import "md/pills"; +@import "md/dialogs"; +@import "md/navbars"; +@import "md/popups"; +@import "md/footers"; + +// Fancy Stuff +@import "md/dropdown"; +@import "md/cards"; +@import "md/tabs"; +@import "md/chartist"; +@import "md/responsive"; diff --git a/frontend/src/assets/scss/md/_alerts.scss b/frontend/src/assets/scss/md/_alerts.scss new file mode 100644 index 0000000..f3b2d0d --- /dev/null +++ b/frontend/src/assets/scss/md/_alerts.scss @@ -0,0 +1,95 @@ +// This file has been autogenerated by grunt task lessToSass. Any changes will be overwritten. + +.alert { + border: 0; + border-radius: 0; + position: relative; + padding: 20px 15px; + line-height: 20px; + margin-bottom: 20px; + + .notifications &{ + margin-bottom: 0; + } + + b{ + font-weight: $font-weight-bold; + text-transform: uppercase; + font-size: $font-size-small; + } + + @include alert-color($gray-color); + + &.alert-info{ + @include alert-color(lighten($brand-info,5%)); + } + + &.alert-danger{ + @include alert-color(lighten($brand-danger,5%)); + } + + &.alert-primary{ + @include alert-color(lighten($brand-primary,5%)); + } + + &.alert-warning{ + @include alert-color(lighten($brand-warning,5%)); + } + + &.alert-success{ + @include alert-color(lighten($brand-success,5%)); + } + + + &-info, &-danger, &-warning, &-success { + color: $mdb-text-color-light; + } + + &-default { + a, .alert-link { + color: $mdb-text-color-primary; + } + } + + .close{ + float: right; + font-size: inherit; + font-weight: 700; + line-height: 1; + color: $white-color; + opacity: .9; + background-color: transparent; + border: 0; + cursor: pointer; + } + + i[data-notify="icon"] { + font-size: 30px; + display: block; + left: 15px; + position: absolute; + top: 50%; + margin-top: -15px; + } + + span{ + display: block; + max-width: 89%; + } + + .alert-icon{ + display: block; + float: left; + margin-right: $margin-base; + + i{ + margin-top: -7px; + top: 5px; + position: relative; + } + } +} + +.alert.alert-with-icon { + padding-left: 65px; +} diff --git a/frontend/src/assets/scss/md/_buttons.scss b/frontend/src/assets/scss/md/_buttons.scss new file mode 100644 index 0000000..a7b75d4 --- /dev/null +++ b/frontend/src/assets/scss/md/_buttons.scss @@ -0,0 +1,234 @@ +.md-button{ + border: none; + border-radius: $border-radius-base; + position: relative; + margin: 10px 1px; + height: auto; + line-height: 1.42857; + + font-size: $mdb-btn-font-size-base; + font-weight: 400; + text-transform: uppercase; + letter-spacing: 0; + + will-change: box-shadow, transform; + transition: box-shadow 0.2s $mdb-animation-curve-fast-out-linear-in, + background-color 0.2s $mdb-animation-curve-default; + + &:not(.md-just-icon):not(.md-btn-fab):not(.md-icon-button):not(.md-toolbar-toggle) .md-ripple{ + padding: 12px 30px; + } + + &:not(.md-just-icon) .md-button-content i{ + font-size: 1.1rem !important; + height: 17px; + } + + &.md-wd{ + min-width: 140px; + } + + &.md-block{ + width: 100%; + } + + &:before{ + display: none; + } + + &.md-block{ + width: 100%; + } + + @include social-buttons(); + + &, + &.md-default{ + @include btn-styles($gray-light); + } + + &.md-primary{ + @include btn-styles($brand-primary); + } + &.md-info{ + @include btn-styles($brand-info); + } + &.md-success{ + @include btn-styles($brand-success); + } + &.md-warning{ + @include btn-styles($brand-warning); + } + &.md-danger{ + @include btn-styles($brand-danger); + } + &.md-white{ + &, + &:focus, + &:hover{ + background-color: $white-color; + color: $gray-light; + } + &.btn-simple{ + color: #FFFFFF; + background: transparent; + box-shadow: none; + } + } + + &:focus, + &:active, + &:active:focus{ + outline: 0; + } + + &.md-round{ + border-radius: $border-radius-extreme; + } + + &:not(.btn-just-icon):not(.btn-fab){ + .fa{ + font-size: 18px; + margin-top: -2px; + position: relative; + top: 2px; + } + } + + + &.btn-fab { + // see above for color variations + border-radius: 50%; + font-size: $mdb-btn-fab-font-size; + height: $mdb-btn-fab-size; + margin: auto; + min-width: $mdb-btn-fab-size; + width: $mdb-btn-fab-size; + padding: 0; + overflow: hidden; + position: relative; + line-height: normal; + + .ripple-container { + border-radius: 50%; + } + + &.btn-fab-mini, + .btn-group-sm & { + height: $mdb-btn-fab-size-mini; + min-width: $mdb-btn-fab-size-mini; + width: $mdb-btn-fab-size-mini; + + &.material-icons { + top: ($mdb-btn-icon-size-mini - $mdb-btn-fab-font-size) * 0.5; + left: ($mdb-btn-icon-size-mini - $mdb-btn-fab-font-size) * 0.5; + } + + .material-icons{ + font-size: $mdb-btn-icon-size-mini; + } + } + + i.material-icons { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-($mdb-btn-fab-font-size * 0.5), -($mdb-btn-fab-font-size * 0.5)); + line-height: $mdb-btn-fab-font-size; + width: $mdb-btn-fab-font-size; + font-size: $mdb-btn-fab-font-size; + } + } + + // Size variations + &.md-lg .md-ripple{ + font-size: $mdb-btn-font-size-lg; + padding: 18px 36px !important; + } + &.md-sm .md-ripple{ + padding: 0.40625rem 1.25rem !important; + font-size: $mdb-btn-font-size-sm; + } + + &.btn-just-icon{ + font-size: 20px; + padding: 12px 12px; + line-height: 1em; + + i{ + width: 20px; + } + &.btn-lg{ + font-size: 22px; + padding: 13px 18px; + } + } + + &.md-fab, + &.md-just-icon{ + font-size: 24px; + height: 41px; + min-width: 41px; + width: 41px; + padding: 0; + overflow: hidden; + position: relative; + line-height: 41px; + border-radius: 50%; + text-align: center; + + .fab{ + font-size: 20px; + + } + } + + .md-button-content{ + display: flex; + align-items: center; + i{ + font-size: 20px !important; + } + } +} + +.btn{ + // Align icons inside buttons with text + .material-icons{ + vertical-align: middle; + font-size: $mdb-btn-icon-size-mini; + top: -1px; + position: relative; + } + +} + +.navbar .navbar-nav > li > { + a.btn{ + margin-top: 2px; + margin-bottom: 2px; + + &.btn-fab{ + margin: 5px 2px; + } + } + a:not(.btn){ + .material-icons{ + margin-top: -3px; + top: 0px; + position: relative; + margin-right: 3px; + } + } + .profile-photo{ + margin: 5px 2px; + } +} + +.navbar-default:not(.navbar-transparent) .navbar-nav > li > { + a.btn{ + &.btn-white.btn-simple{ + color: $gray; + } + } +} diff --git a/frontend/src/assets/scss/md/_cards.scss b/frontend/src/assets/scss/md/_cards.scss new file mode 100644 index 0000000..efe114e --- /dev/null +++ b/frontend/src/assets/scss/md/_cards.scss @@ -0,0 +1,362 @@ +.md-card{ + display: inline-block; + position: relative; + width: 100%; + margin: 25px 0; + overflow: unset; + + box-shadow: 0 1px 4px 0 rgba(0,0,0,0.14); + border-radius: $border-radius-base; + color: $mdb-card-body-text; + background: $mdb-card-body-background; + + .card-height-indicator { + margin-top: 100%; + } + + &.row-space{ + .header{ + padding: 15px 20px 0; + } + } + + .title{ + margin-top: 0; + margin-bottom: 5px; + } + .card-image { + height: 60%; + position: relative; + overflow: hidden; + + margin-left: 15px; + margin-right: 15px; + margin-top: -30px; + border-radius: $border-radius-large; + + img { + width: 100%; + height: 100%; + border-radius: $border-radius-large; + pointer-events: none; + } + .card-title { + position: absolute; + bottom: 15px; + left: 15px; + color: $mdb-card-image-headline; + font-size: $font-size-h4; + text-shadow: 0 2px 5px rgba(33, 33, 33, 0.5); + } + } + + .category:not([class*="text-"]){ + color: $gray-color; + } + .md-card-content{ + padding: 15px 20px; + + .category{ + margin: 0; + } + } + + .md-card-header{ + @include shadow-big(); + margin: -20px $margin-base 0; + border-radius: $border-radius-base; + padding: $padding-base; + background-color: $gray-color; + + .title{ + color: $white-color; + } + .category{ + margin: 0; + color: rgba($white-color, .62); + } + + a{ + color: $white-color !important; + } + + &.card-chart{ + padding: 0; + min-height: 160px; + + + .content{ + h4{ + margin-top: 0; + } + } + } + + .ct-label{ + color: rgba($white-color, .7); + } + .ct-grid{ + stroke: rgba(255, 255, 255, 0.2); + } + .ct-series-a .ct-point, + .ct-series-a .ct-line, + .ct-series-a .ct-bar, + .ct-series-a .ct-slice-donut{ + stroke: rgba(255,255,255,.8); + } + .ct-series-a .ct-slice-pie, + .ct-series-a .ct-area{ + fill: rgba(255,255,255,.4); + } + + } + + .chart-title{ + position: absolute;; + top: 25px; + width: 100%; + text-align: center; + + h3{ + margin: 0; + color: $white-color; + } + + h6{ + margin: 0; + color: rgba(255,255,255, .4); + } + + } + + .md-card-actions{ + margin: 0 20px 10px; + padding: 10px 0 0 0; + border-top: 1px solid #eeeeee; + + .content{ + display: block; + } + + div{ + display: inline-block; + } + .author{ + color: $gray-color; + } + .stats{ + line-height: 22px; + color: $gray-color; + font-size: $font-size-small; + + .md-icon.md-theme-default.md-icon-font{ + position: relative; + top: -1px; + font-size: $font-paragraph + 2 !important; + color: $gray-light; + } + } + + h6{ + color: $gray-color; + } + + } + + img{ + width: 100%; + height: auto; + } + + .category{ + .md-icon{ + position: relative; + top: 6px; + line-height: 0; + } + } + + .category-social{ + .fa{ + font-size: 24px; + position: relative; + margin-top: -4px; + top: 2px; + margin-right: 5px; + } + } + + .author{ + .avatar{ + width: 30px; + height: 30px; + overflow: hidden; + border-radius: 50%; + margin-right: 5px; + } + + a{ + color: $black-color; + text-decoration: none; + + .ripple-container{ + display: none; + } + } + } + + .table{ + margin-bottom: 0; + + tr:first-child td{ + border-top: none; + } + } + + [data-background-color="purple"], + .md-tabs.md-primary .md-tabs-navigation{ + background: linear-gradient(60deg, $purple-400, $purple-600); + @include shadow-big-color($brand-primary); + } + + [data-background-color="blue"], + .md-tabs.md-info .md-tabs-navigation{ + background: linear-gradient(60deg, $cyan-400, $cyan-600); + @include shadow-big-color($brand-info); + } + + [data-background-color="green"], + .md-tabs.md-success .md-tabs-navigation{ + background: linear-gradient(60deg, $green-400, $green-600); + @include shadow-big-color($brand-success); + } + + [data-background-color="orange"], + .md-tabs.md-warning .md-tabs-navigation{ + background: linear-gradient(60deg, $orange-400, $orange-600); + @include shadow-big-color($brand-warning); + } + + [data-background-color="red"], + .md-tabs.md-danger .md-tabs-navigation{ + background: linear-gradient(60deg, $red-400, $red-600); + @include shadow-big-color($brand-danger); + } + + [data-background-color]{ + color: $white-color; + + a{ + color: $white-color; + } + } +} + +.md-card-stats{ + .title{ + margin: 0; + + small{ + color: $gray-color; + font-size: 65%; + line-height: 1; + font-weight: 400; + } + } + .md-card-header{ + float: left; + text-align: center; + + i{ + font-size: 36px !important; + line-height: 56px; + width: 56px; + height: 56px; + color: $white-color !important; + } + } + .md-card-content{ + text-align: right; + padding-top: 10px; + } + +} + +.card-nav-tabs{ + .header-raised{ + margin-top: -$margin-base * 2; + } + .nav-tabs{ + background: transparent; + padding: 0; + } + .nav-tabs-title{ + float: left; + padding: 10px 10px 10px 0; + line-height: 24px; + } +} + +.md-card-plain{ + background: transparent !important; + box-shadow: none !important; + + .md-card-header{ + margin-left: 0; + margin-right: 0; + } + .content{ + padding-left: 5px; + padding-right: 5px; + } + + .card-image{ + margin: 0; + border-radius: $border-radius-base; + + img{ + border-radius: $border-radius-base; + } + } +} + +.iframe-container{ + margin: 0 -20px 0; + + iframe{ + width: 100%; + height: 500px; + border: 0; + @include shadow-big(); + } +} + +.md-card-profile, +.card-testimonial{ + margin-top: 30px; + text-align: center; + + .btn-just-icon.btn-raised{ + margin-left: 6px; + margin-right: 6px; + } + + .md-card-avatar{ + max-width: 130px; + max-height: 130px; + margin: -50px auto 0; + border-radius: 50%; + overflow: hidden; + + @include shadow-big(); + + & + .md-card-content{ + margin-top: 15px; + } + } + + &.md-card-plain{ + .card-avatar{ + margin-top: 0; + } + } +} diff --git a/frontend/src/assets/scss/md/_chartist.scss b/frontend/src/assets/scss/md/_chartist.scss new file mode 100644 index 0000000..25d7e10 --- /dev/null +++ b/frontend/src/assets/scss/md/_chartist.scss @@ -0,0 +1,254 @@ +@mixin ct-responsive-svg-container($width: 100%, $ratio: $ct-container-ratio) { + display: block; + position: relative; + width: $width; + + &:before { + display: block; + float: left; + content: ""; + width: 0; + height: 0; + padding-bottom: $ratio * 100%; + } + + &:after { + content: ""; + display: table; + clear: both; + } + + > svg { + display: block; + position: absolute; + top: 0; + left: 0; + } +} + +@mixin ct-align-justify($ct-text-align: $ct-text-align, $ct-text-justify: $ct-text-justify) { + -webkit-box-align: $ct-text-align; + -webkit-align-items: $ct-text-align; + -ms-flex-align: $ct-text-align; + align-items: $ct-text-align; + -webkit-box-pack: $ct-text-justify; + -webkit-justify-content: $ct-text-justify; + -ms-flex-pack: $ct-text-justify; + justify-content: $ct-text-justify; + // Fallback to text-align for non-flex browsers + @if($ct-text-justify == 'flex-start') { + text-align: left; + } @else if ($ct-text-justify == 'flex-end') { + text-align: right; + } @else { + text-align: center; + } +} + +@mixin ct-flex() { + // Fallback to block + display: block; + display: -webkit-box; + display: -moz-box; + display: -ms-flexbox; + display: -webkit-flex; + display: flex; +} + + + +@mixin ct-chart-label($ct-text-color: $ct-text-color, $ct-text-size: $ct-text-size, $ct-text-line-height: $ct-text-line-height) { + fill: $ct-text-color; + color: $ct-text-color; + font-size: $ct-text-size; + line-height: $ct-text-line-height; +} + +@mixin ct-chart-grid($ct-grid-color: $ct-grid-color, $ct-grid-width: $ct-grid-width, $ct-grid-dasharray: $ct-grid-dasharray) { + stroke: $ct-grid-color; + stroke-width: $ct-grid-width; + + @if ($ct-grid-dasharray) { + stroke-dasharray: $ct-grid-dasharray; + } +} + +@mixin ct-chart-point($ct-point-size: $ct-point-size, $ct-point-shape: $ct-point-shape) { + stroke-width: $ct-point-size; + stroke-linecap: $ct-point-shape; +} + +@mixin ct-chart-line($ct-line-width: $ct-line-width, $ct-line-dasharray: $ct-line-dasharray) { + fill: none; + stroke-width: $ct-line-width; + + @if ($ct-line-dasharray) { + stroke-dasharray: $ct-line-dasharray; + } +} + +@mixin ct-chart-area($ct-area-opacity: $ct-area-opacity) { + stroke: none; + fill-opacity: $ct-area-opacity; +} + +@mixin ct-chart-bar($ct-bar-width: $ct-bar-width) { + fill: none; + stroke-width: $ct-bar-width; +} + +@mixin ct-chart-donut($ct-donut-width: $ct-donut-width) { + fill: none; + stroke-width: $ct-donut-width; +} + +@mixin ct-chart-series-color($color) { + .#{$ct-class-point}, .#{$ct-class-line}, .#{$ct-class-bar}, .#{$ct-class-slice-donut} { + stroke: $color; + } + + .#{$ct-class-slice-pie}, .#{$ct-class-area} { + fill: $color; + } +} + +@mixin ct-chart($ct-container-ratio: $ct-container-ratio, $ct-text-color: $ct-text-color, $ct-text-size: $ct-text-size, $ct-grid-color: $ct-grid-color, $ct-grid-width: $ct-grid-width, $ct-grid-dasharray: $ct-grid-dasharray, $ct-point-size: $ct-point-size, $ct-point-shape: $ct-point-shape, $ct-line-width: $ct-line-width, $ct-bar-width: $ct-bar-width, $ct-donut-width: $ct-donut-width, $ct-series-names: $ct-series-names, $ct-series-colors: $ct-series-colors) { + + .#{$ct-class-label} { + @include ct-chart-label($ct-text-color, $ct-text-size); + } + + .#{$ct-class-chart-line} .#{$ct-class-label}, + .#{$ct-class-chart-bar} .#{$ct-class-label} { + @include ct-flex(); + } + + .#{$ct-class-label}.#{$ct-class-horizontal}.#{$ct-class-start} { + @include ct-align-justify(flex-end, flex-start); + // Fallback for browsers that don't support foreignObjects + text-anchor: start; + } + + .#{$ct-class-label}.#{$ct-class-horizontal}.#{$ct-class-end} { + @include ct-align-justify(flex-start, flex-start); + // Fallback for browsers that don't support foreignObjects + text-anchor: start; + } + + .#{$ct-class-label}.#{$ct-class-vertical}.#{$ct-class-start} { + @include ct-align-justify(flex-end, flex-end); + // Fallback for browsers that don't support foreignObjects + text-anchor: end; + } + + .#{$ct-class-label}.#{$ct-class-vertical}.#{$ct-class-end} { + @include ct-align-justify(flex-end, flex-start); + // Fallback for browsers that don't support foreignObjects + text-anchor: start; + } + + .#{$ct-class-chart-bar} .#{$ct-class-label}.#{$ct-class-horizontal}.#{$ct-class-start} { + @include ct-align-justify(flex-end, center); + // Fallback for browsers that don't support foreignObjects + text-anchor: start; + } + + .#{$ct-class-chart-bar} .#{$ct-class-label}.#{$ct-class-horizontal}.#{$ct-class-end} { + @include ct-align-justify(flex-start, center); + // Fallback for browsers that don't support foreignObjects + text-anchor: start; + } + + .#{$ct-class-chart-bar}.#{$ct-class-horizontal-bars} .#{$ct-class-label}.#{$ct-class-horizontal}.#{$ct-class-start} { + @include ct-align-justify(flex-end, flex-start); + // Fallback for browsers that don't support foreignObjects + text-anchor: start; + } + + .#{$ct-class-chart-bar}.#{$ct-class-horizontal-bars} .#{$ct-class-label}.#{$ct-class-horizontal}.#{$ct-class-end} { + @include ct-align-justify(flex-start, flex-start); + // Fallback for browsers that don't support foreignObjects + text-anchor: start; + } + + .#{$ct-class-chart-bar}.#{$ct-class-horizontal-bars} .#{$ct-class-label}.#{$ct-class-vertical}.#{$ct-class-start} { + //@include ct-chart-label($ct-text-color, $ct-text-size, center, $ct-vertical-text-justify); + @include ct-align-justify(center, flex-end); + // Fallback for browsers that don't support foreignObjects + text-anchor: end; + } + + .#{$ct-class-chart-bar}.#{$ct-class-horizontal-bars} .#{$ct-class-label}.#{$ct-class-vertical}.#{$ct-class-end} { + @include ct-align-justify(center, flex-start); + // Fallback for browsers that don't support foreignObjects + text-anchor: end; + } + + .#{$ct-class-grid} { + @include ct-chart-grid($ct-grid-color, $ct-grid-width, $ct-grid-dasharray); + } + + .#{$ct-class-point} { + @include ct-chart-point($ct-point-size, $ct-point-shape); + } + + .#{$ct-class-line} { + @include ct-chart-line($ct-line-width); + } + + .#{$ct-class-area} { + @include ct-chart-area(); + } + + .#{$ct-class-bar} { + @include ct-chart-bar($ct-bar-width); + } + + .#{$ct-class-slice-donut} { + @include ct-chart-donut($ct-donut-width); + } + + @if $ct-include-colored-series { + @for $i from 0 to length($ct-series-names) { + .#{$ct-class-series}-#{nth($ct-series-names, $i + 1)} { + $color: nth($ct-series-colors, $i + 1); + + @include ct-chart-series-color($color); + } + } + } +} + +@if $ct-include-classes { + @include ct-chart(); + + @if $ct-include-alternative-responsive-containers { + @for $i from 0 to length($ct-scales-names) { + .#{nth($ct-scales-names, $i + 1)} { + @include ct-responsive-svg-container($ratio: nth($ct-scales, $i + 1)); + } + } + } +} + +.ct-blue{ + stroke: $brand-primary !important; +} +.ct-azure{ + stroke: $brand-info !important; +} +.ct-green{ + stroke: $brand-success !important; +} +.ct-orange{ + stroke: $brand-warning !important; +} +.ct-red{ + stroke: $brand-danger !important; +} +.ct-white{ + stroke: $white-color !important; +} +.ct-rose{ + stroke: $brand-rose !important; +} diff --git a/frontend/src/assets/scss/md/_checkboxes.scss b/frontend/src/assets/scss/md/_checkboxes.scss new file mode 100644 index 0000000..fc5154a --- /dev/null +++ b/frontend/src/assets/scss/md/_checkboxes.scss @@ -0,0 +1,49 @@ +.md-checkbox{ + .md-checkbox-container{ + border: 1px solid rgba(0, 0, 0, .54); + border-radius: 3px; + + .md-ripple{ + overflow: hidden; + } + } + + &.md-checked .md-checkbox-container{ + &:after{ + border-color: $brand-primary !important; + top: 1px; + left: 6px; + } + } + + .md-checkbox-label{ + font-weight: 400; + color: #aaa; + padding-left: 10px; + } + + &.md-theme-default.md-checked .md-checkbox-container{ + background-color: transparent !important; + border-color: inherit; + } + + &.md-theme-default.md-checked .md-ripple{ + color: inherit; + } + + &.md-disabled .md-checkbox-label, + &.md-disabled .md-checkbox-container{ + opacity: .26; + border-color: rgba(0, 0, 0, .54) !important; + } + + &.md-checked.md-disabled .md-checkbox-container{ + background-color: transparent !important; + border-color: rgba(0, 0, 0, .54) !important; + opacity: .26; + + &:after{ + border-color: rgba(0, 0, 0, .54) !important; + } + } +} diff --git a/frontend/src/assets/scss/md/_colors.scss b/frontend/src/assets/scss/md/_colors.scss new file mode 100644 index 0000000..efa253b --- /dev/null +++ b/frontend/src/assets/scss/md/_colors.scss @@ -0,0 +1,339 @@ +@import "~vue-material/dist/theme/engine"; // Import the theme engine + +@include md-register-theme("selection-black", ( + accent: md-get-palette-color(black, 500) + )); + +@include md-register-theme("default", ( + primary: md-get-palette-color(purple, 500), // The primary color of your application +)); + + +@import "~vue-material/dist/theme/all"; // Apply the theme + + +$red-50: #ffebee !default; +$red-100: #ffcdd2 !default; +$red-200: #ef9a9a !default; +$red-300: #e57373 !default; +$red-400: #ef5350 !default; +$red-500: #f44336 !default; +$red-600: #e53935 !default; +$red-700: #d32f2f !default; +$red-800: #c62828 !default; +$red-900: #b71c1c !default; +$red-A100: #ff8a80 !default; +$red-A200: #ff5252 !default; +$red-A400: #ff1744 !default; +$red-A700: #d50000 !default; +$red: $red-500 !default; + + +$pink-50: #fce4ec !default; +$pink-100: #f8bbd0 !default; +$pink-200: #f48fb1 !default; +$pink-300: #f06292 !default; +$pink-400: #ec407a !default; +$pink-500: #e91e63 !default; +$pink-600: #d81b60 !default; +$pink-700: #c2185b !default; +$pink-800: #ad1457 !default; +$pink-900: #880e4f !default; +$pink-A100: #ff80ab !default; +$pink-A200: #ff4081 !default; +$pink-A400: #f50057 !default; +$pink-A700: #c51162 !default; +$pink: $pink-500 !default; + + +$purple-50: #f3e5f5 !default; +$purple-100: #e1bee7 !default; +$purple-200: #ce93d8 !default; +$purple-300: #ba68c8 !default; +$purple-400: #ab47bc !default; +$purple-500: #9c27b0 !default; +$purple-600: #8e24aa !default; +$purple-700: #7b1fa2 !default; +$purple-800: #6a1b9a !default; +$purple-900: #4a148c !default; +$purple-A100: #ea80fc !default; +$purple-A200: #e040fb !default; +$purple-A400: #d500f9 !default; +$purple-A700: #aa00ff !default; +$purple: $purple-500 !default; + + +$deep-purple-50: #ede7f6 !default; +$deep-purple-100: #d1c4e9 !default; +$deep-purple-200: #b39ddb !default; +$deep-purple-300: #9575cd !default; +$deep-purple-400: #7e57c2 !default; +$deep-purple-500: #673ab7 !default; +$deep-purple-600: #5e35b1 !default; +$deep-purple-700: #512da8 !default; +$deep-purple-800: #4527a0 !default; +$deep-purple-900: #311b92 !default; +$deep-purple-A100: #b388ff !default; +$deep-purple-A200: #7c4dff !default; +$deep-purple-A400: #651fff !default; +$deep-purple-A700: #6200ea !default; +$deep-purple: $deep-purple-500 !default; + + +$indigo-50: #e8eaf6 !default; +$indigo-100: #c5cae9 !default; +$indigo-200: #9fa8da !default; +$indigo-300: #7986cb !default; +$indigo-400: #5c6bc0 !default; +$indigo-500: #3f51b5 !default; +$indigo-600: #3949ab !default; +$indigo-700: #303f9f !default; +$indigo-800: #283593 !default; +$indigo-900: #1a237e !default; +$indigo-A100: #8c9eff !default; +$indigo-A200: #536dfe !default; +$indigo-A400: #3d5afe !default; +$indigo-A700: #304ffe !default; +$indigo: $indigo-500 !default; + + +$blue-50: #e3f2fd !default; +$blue-100: #bbdefb !default; +$blue-200: #90caf9 !default; +$blue-300: #64b5f6 !default; +$blue-400: #42a5f5 !default; +$blue-500: #2196f3 !default; +$blue-600: #1e88e5 !default; +$blue-700: #1976d2 !default; +$blue-800: #1565c0 !default; +$blue-900: #0d47a1 !default; +$blue-A100: #82b1ff !default; +$blue-A200: #448aff !default; +$blue-A400: #2979ff !default; +$blue-A700: #2962ff !default; +$blue: $blue-500 !default; + + +$light-blue-50: #e1f5fe !default; +$light-blue-100: #b3e5fc !default; +$light-blue-200: #81d4fa !default; +$light-blue-300: #4fc3f7 !default; +$light-blue-400: #29b6f6 !default; +$light-blue-500: #03a9f4 !default; +$light-blue-600: #039be5 !default; +$light-blue-700: #0288d1 !default; +$light-blue-800: #0277bd !default; +$light-blue-900: #01579b !default; +$light-blue-A100: #80d8ff !default; +$light-blue-A200: #40c4ff !default; +$light-blue-A400: #00b0ff !default; +$light-blue-A700: #0091ea !default; +$light-blue: $light-blue-500 !default; + + +$cyan-50: #e0f7fa !default; +$cyan-100: #b2ebf2 !default; +$cyan-200: #80deea !default; +$cyan-300: #4dd0e1 !default; +$cyan-400: #26c6da !default; +$cyan-500: #00bcd4 !default; +$cyan-600: #00acc1 !default; +$cyan-700: #0097a7 !default; +$cyan-800: #00838f !default; +$cyan-900: #006064 !default; +$cyan-A100: #84ffff !default; +$cyan-A200: #18ffff !default; +$cyan-A400: #00e5ff !default; +$cyan-A700: #00b8d4 !default; +$cyan: $cyan-500 !default; + + +$teal-50: #e0f2f1 !default; +$teal-100: #b2dfdb !default; +$teal-200: #80cbc4 !default; +$teal-300: #4db6ac !default; +$teal-400: #26a69a !default; +$teal-500: #009688 !default; +$teal-600: #00897b !default; +$teal-700: #00796b !default; +$teal-800: #00695c !default; +$teal-900: #004d40 !default; +$teal-A100: #a7ffeb !default; +$teal-A200: #64ffda !default; +$teal-A400: #1de9b6 !default; +$teal-A700: #00bfa5 !default; +$teal: $teal-500 !default; + + +$green-50: #e8f5e9 !default; +$green-100: #c8e6c9 !default; +$green-200: #a5d6a7 !default; +$green-300: #81c784 !default; +$green-400: #66bb6a !default; +$green-500: #4caf50 !default; +$green-600: #43a047 !default; +$green-700: #388e3c !default; +$green-800: #2e7d32 !default; +$green-900: #1b5e20 !default; +$green-A100: #b9f6ca !default; +$green-A200: #69f0ae !default; +$green-A400: #00e676 !default; +$green-A700: #00c853 !default; +$green: $green-500 !default; + + +$light-green-50: #f1f8e9 !default; +$light-green-100: #dcedc8 !default; +$light-green-200: #c5e1a5 !default; +$light-green-300: #aed581 !default; +$light-green-400: #9ccc65 !default; +$light-green-500: #8bc34a !default; +$light-green-600: #7cb342 !default; +$light-green-700: #689f38 !default; +$light-green-800: #558b2f !default; +$light-green-900: #33691e !default; +$light-green-A100: #ccff90 !default; +$light-green-A200: #b2ff59 !default; +$light-green-A400: #76ff03 !default; +$light-green-A700: #64dd17 !default; +$light-green: $light-green-500 !default; + + +$lime-50: #f9fbe7 !default; +$lime-100: #f0f4c3 !default; +$lime-200: #e6ee9c !default; +$lime-300: #dce775 !default; +$lime-400: #d4e157 !default; +$lime-500: #cddc39 !default; +$lime-600: #c0ca33 !default; +$lime-700: #afb42b !default; +$lime-800: #9e9d24 !default; +$lime-900: #827717 !default; +$lime-A100: #f4ff81 !default; +$lime-A200: #eeff41 !default; +$lime-A400: #c6ff00 !default; +$lime-A700: #aeea00 !default; +$lime: $lime-500 !default; + + +$yellow-50: #fffde7 !default; +$yellow-100: #fff9c4 !default; +$yellow-200: #fff59d !default; +$yellow-300: #fff176 !default; +$yellow-400: #ffee58 !default; +$yellow-500: #fec60a !default; +$yellow-600: #fdd835 !default; +$yellow-700: #fbc02d !default; +$yellow-800: #f9a825 !default; +$yellow-900: #f57f17 !default; +$yellow-A100: #ffff8d !default; +$yellow-A200: #ffff00 !default; +$yellow-A400: #ffea00 !default; +$yellow-A700: #ffd600 !default; +$yellow: $yellow-700 !default; + + +$amber-50: #fff8e1 !default; +$amber-100: #ffecb3 !default; +$amber-200: #ffe082 !default; +$amber-300: #ffd54f !default; +$amber-400: #ffca28 !default; +$amber-500: #ffc107 !default; +$amber-600: #ffb300 !default; +$amber-700: #ffa000 !default; +$amber-800: #ff8f00 !default; +$amber-900: #ff6f00 !default; +$amber-A100: #ffe57f !default; +$amber-A200: #ffd740 !default; +$amber-A400: #ffc400 !default; +$amber-A700: #ffab00 !default; +$amber: $amber-500 !default; + + +$orange-50: #fff3e0 !default; +$orange-100: #ffe0b2 !default; +$orange-200: #ffcc80 !default; +$orange-300: #ffb74d !default; +$orange-400: #ffa726 !default; +$orange-500: #ff9800 !default; +$orange-600: #fb8c00 !default; +$orange-700: #f57c00 !default; +$orange-800: #ef6c00 !default; +$orange-900: #e65100 !default; +$orange-A100: #ffd180 !default; +$orange-A200: #ffab40 !default; +$orange-A400: #ff9100 !default; +$orange-A700: #ff6d00 !default; +$orange: $orange-500 !default; + + +$deep-orange-50: #fbe9e7 !default; +$deep-orange-100: #ffccbc !default; +$deep-orange-200: #ffab91 !default; +$deep-orange-300: #ff8a65 !default; +$deep-orange-400: #ff7043 !default; +$deep-orange-500: #ff5722 !default; +$deep-orange-600: #f4511e !default; +$deep-orange-700: #e64a19 !default; +$deep-orange-800: #d84315 !default; +$deep-orange-900: #bf360c !default; +$deep-orange-A100: #ff9e80 !default; +$deep-orange-A200: #ff6e40 !default; +$deep-orange-A400: #ff3d00 !default; +$deep-orange-A700: #dd2c00 !default; +$deep-orange: $deep-orange-500 !default; + + +$brown-50: #efebe9 !default; +$brown-100: #d7ccc8 !default; +$brown-200: #bcaaa4 !default; +$brown-300: #a1887f !default; +$brown-400: #8d6e63 !default; +$brown-500: #795548 !default; +$brown-600: #6d4c41 !default; +$brown-700: #5d4037 !default; +$brown-800: #4e342e !default; +$brown-900: #3e2723 !default; +$brown-A100: #d7ccc8 !default; +$brown-A200: #bcaaa4 !default; +$brown-A400: #8d6e63 !default; +$brown-A700: #5d4037 !default; +$brown: $brown-500 !default; + + +$grey-50: #fafafa !default; +$grey-100: #f5f5f5 !default; +$grey-200: #eeeeee !default; +$grey-300: #e0e0e0 !default; +$grey-400: #bdbdbd !default; +$grey-500: #9e9e9e; $rgb-grey-500: "158, 158, 158" !default; +$grey-600: #757575 !default; +$grey-700: #616161 !default; +$grey-800: #424242 !default; +$grey-900: #212121 !default; +$grey-A100: #f5f5f5 !default; +$grey-A200: #eeeeee !default; +$grey-A400: #bdbdbd !default; +$grey-A700: #616161 !default; +$grey: $grey-500 !default; + + +$blue-grey-50: #eceff1 !default; +$blue-grey-100: #cfd8dc !default; +$blue-grey-200: #b0bec5 !default; +$blue-grey-300: #90a4ae !default; +$blue-grey-400: #78909c !default; +$blue-grey-500: #607d8b !default; +$blue-grey-600: #546e7a !default; +$blue-grey-700: #455a64 !default; +$blue-grey-800: #37474f !default; +$blue-grey-900: #263238 !default; +$blue-grey-A100: #cfd8dc !default; +$blue-grey-A200: #b0bec5 !default; +$blue-grey-A400: #78909c !default; +$blue-grey-A700: #455a64 !default; +$blue-grey: $blue-grey-500 !default; + + +$black: #000000; $rgb-black: "0,0,0" !default; +$white: #ffffff; $rgb-white: "255,255,255" !default; diff --git a/frontend/src/assets/scss/md/_dialogs.scss b/frontend/src/assets/scss/md/_dialogs.scss new file mode 100644 index 0000000..050518a --- /dev/null +++ b/frontend/src/assets/scss/md/_dialogs.scss @@ -0,0 +1,99 @@ +// This file has been autogenerated by grunt task lessToSass. Any changes will be overwritten. + +// +// Modals +// Material Design element Dialogs +// -------------------------------------------------- +.modal-content { + @include shadow-z-5(); + border-radius: $border-radius-large; + border: none; + // Modal header + // Top section of the modal w/ title and dismiss + .modal-header { + border-bottom: none; + padding-top: 24px; + padding-right: 24px; + padding-bottom: 0; + padding-left: 24px; + } + // Modal body + // Where all modal content resides (sibling of .modal-header and .modal-footer) + .modal-body { + padding-top: 24px; + padding-right: 24px; + padding-bottom: 16px; + padding-left: 24px; + } + // Footer (for actions) + .modal-footer { + border-top: none; + padding: 7px; + + &.text-center{ + text-align: center; + } + + button { + margin: 0; + padding-left: 16px; + padding-right: 16px; + width: auto; + &.pull-left { + padding-left: 5px; + padding-right: 5px; + position: relative; + left: -5px; + } + } + button+button { + margin-bottom: 16px; + } + } + .modal-body + .modal-footer { + padding-top: 0; + } +} +.modal-backdrop { + background: rgba(0,0,0,0.3); +} + +.modal{ + .modal-dialog{ + margin-top: 100px; + } + .modal-header .close{ + color: $gray-light; + + &:hover, + &:focus{ + opacity: 1; + } + + i{ + font-size: 16px; + } + } +} + +.modal-notice { + .instruction{ + margin-bottom: 25px; + } + .picture{ + max-width: 150px; + } + + .modal-content{ + .btn-raised{ + margin-bottom: 15px; + } + } +} + +.modal-small{ + width: 300px; + .modal-body{ + margin-top: 20px; + } +} \ No newline at end of file diff --git a/frontend/src/assets/scss/md/_dropdown.scss b/frontend/src/assets/scss/md/_dropdown.scss new file mode 100644 index 0000000..0a7eecc --- /dev/null +++ b/frontend/src/assets/scss/md/_dropdown.scss @@ -0,0 +1,141 @@ +.dropdown-menu{ + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; + font-size: 14px; + text-align: left; + list-style: none; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #ccc; + border: 1px solid rgba(0,0,0,.15); + border-radius: 4px; + -webkit-box-shadow: 0 6px 12px rgba(0,0,0,.175); + box-shadow: 0 6px 12px rgba(0,0,0,.175); +} +.dropdown-menu { + border: 0; + box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.26); + + .divider { + background-color: rgba(0, 0, 0, .12); + } + + + li > a{ + font-size: $mdb-dropdown-font-size; + padding: 10px 20px; + margin: 0 5px; + text-transform: none; + color: $gray-dark !important; + border-radius: $border-radius-small; + @include transition($fast-transition-time, $transition-linear); + + &:hover, + &:focus { + @include shadow-8dp(); + + } + } + + &.dropdown-with-icons{ + li > a{ + padding: 12px 20px 12px 12px; + + .material-icons{ + vertical-align: middle; + font-size: 24px; + position: relative; + margin-top: -4px; + top: 1px; + margin-right: 12px; + opacity: .5; + } + } + } + + li { + position: relative; + a:hover, + a:focus, + a:active { + background-color: $brand-primary !important; + color: #FFFFFF !important; + } + } + + .divider{ + margin: 5px 0; + } + + .navbar &, + .navbar.navbar-default &{ + li{ + a:hover, + a:focus, + a:active { + background-color: $brand-primary; + color: #FFFFFF; + @include shadow-big-color($brand-primary); + } + } + } + +} + + +.navbar-nav > li > .dropdown-menu, +.dropdown .dropdown-menu, +.dropdown-menu.bootstrap-datetimepicker-widget{ + @include transition($fast-transition-time, $transition-linear); + margin-top: -20px; + visibility: hidden; + display: block; + @include opacity(0); +} +.navbar-nav > li.open > .dropdown-menu, +.dropdown.open .dropdown-menu, +.dropdown-menu.bootstrap-datetimepicker-widget.open{ + @include opacity(1); + visibility: visible; + margin-top: 0px; + +} + +.dropdown-menu-right{ + right: 0; + left: auto; +} + +.md-list-item.dropdown{ + .md-list-item-container{ + a[data-toggle="dropdown"]{ + padding: 10px 15px; + } + + .md-ripple{ + padding: 0; + } + } +} + +.md-ripple{ + -webkit-mask-image: none; + overflow: visible; + + > span{ + width: 100%; + height: 100%; + overflow: hidden; + position: absolute; + left: 0; + z-index: -1; + } +} diff --git a/frontend/src/assets/scss/md/_fixed-plugin.scss b/frontend/src/assets/scss/md/_fixed-plugin.scss new file mode 100644 index 0000000..137739e --- /dev/null +++ b/frontend/src/assets/scss/md/_fixed-plugin.scss @@ -0,0 +1,358 @@ +.fixed-plugin{ + position: fixed; + right: 0; + width: 64px; + background: rgba(0,0,0,.3); + z-index: 1031; + border-radius: 8px 0 0 8px; + text-align: center; + top: 120px; + + li > a, + .badge{ + transition: all .34s; + -webkit-transition: all .34s; + -moz-transition: all .34s; + } + + .fa-cog{ + color: #FFFFFF; + padding: 10px; + border-radius: 0 0 6px 6px; + width: auto; + } + + .dropdown{ + cursor: pointer; + } + + .dropdown-menu{ + right: 80px; + left: auto !important; + top: -40px !important; + width: 290px; + border-radius: 10px; + padding: 0 10px; + } + + .dropdown .dropdown-menu .now-ui-icons{ + top: 5px; + } + + .dropdown-menu:after, + .dropdown-menu:before{ + right: 10px; + margin-left: auto; + left: auto; + } + + .fa-circle-thin{ + color: #FFFFFF; + } + + .active .fa-circle-thin{ + color: #00bbff; + } + + .dropdown-menu > .active > a, + .dropdown-menu > .active > a:hover, + .dropdown-menu > .active > a:focus{ + color: #777777; + text-align: center; + } + + img{ + border-radius: 0; + width: 100%; + height: 100px; + margin: 0 auto; + } + + .dropdown-menu li > a:hover, + .dropdown-menu li > a:focus{ + box-shadow: none; + } + + .badge{ + border: 3px solid #FFFFFF; + border-radius: 50%; + cursor: pointer; + display: inline-block; + height: 23px; + margin-right: 5px; + position: relative; + width: 23px; + } + + .badge.active, + .badge:hover{ + border-color: #00bbff; + } + + .badge-blue{ + background-color: $brand-info; + } + .badge-green{ + background-color: $brand-success; + } + .badge-purple{ + background-color: $brand-primary; + } + .badge-orange{ + background-color: $brand-warning; + } + .badge-red{ + background-color: $brand-danger; + } + + h5{ + font-size: 14px; + margin: 10px; + } + + .dropdown-menu li{ + display: block; + padding: 18px 2px; + width: 25%; + float: left; + } + + li.adjustments-line, + li.header-title, + li.button-container{ + width: 100%; + height: 50px; + min-height: inherit; + } + + li.button-container{ + height: auto; + + .md-button.md-just-icon{ + margin-left: 5px; + margin-right: 5px; + } + } + + #sharrreTitle{ + text-align: center; + padding: 10px 0; + height: 50px; + } + + li.header-title{ + height: 30px; + line-height: 25px; + font-size: 12px; + font-weight: 600; + text-align: center; + text-transform: uppercase; + } + + .github-buttons{ + width: 100% !important; + display: flex !important; + justify-content: center; + margin-bottom: 10px; + + .gh-button, + .social-count{ + color: inherit !important; + background-color: inherit !important; + background-position: unset; + } + } + + .adjustments-line{ + p{ + float: left; + display: inline-block; + margin-bottom: 0; + font-size: 1em; + color: #3C4858; + } + + a{ + color: transparent; + + .badge-colors{ + position: relative; + top: -2px; + } + + a:hover, + a:focus{ + color: transparent; + } + } + + .togglebutton{ + text-align: center; + + .label-switch{ + position: relative; + left: -10px; + font-size: $font-size-base; + color: $gray-light; + + &.label-right{ + left: 10px; + } + } + + .toggle{ + margin-right: 0; + } + } + + .dropdown-menu > li.adjustments-line > a{ + padding-right: 0; + padding-left: 0; + border-bottom: 1px solid #ddd; + border-radius: 0; + margin: 0; + } + } + + + + .dropdown-menu{ + > li{ + & > a.img-holder{ + font-size: 16px; + text-align: center; + border-radius: 10px; + background-color: #FFF; + border: 3px solid #FFF; + padding-left: 0; + padding-right: 0; + opacity: 1; + cursor: pointer; + display: block; + max-height: 100px; + overflow: hidden; + padding: 0; + + img{ + margin-top: auto; + } + } + + a.switch-trigger:hover, + & > a.switch-trigger:focus{ + background-color: transparent; + } + + &:hover, + &:focus{ + > a.img-holder{ + border-color: rgba(0, 187, 255, 0.53);; + } + } + } + + > .active > a.img-holder, + > .active > a.img-holder{ + border-color: #00bbff; + background-color: #FFFFFF; + } + + } + + .btn-social{ + width: 50%; + display: block; + width: 48%; + float: left; + font-weight: 600; + } + + .btn-social{ + i{ + margin-right: 5px; + } + + &:first-child{ + margin-right: 2%; + } + } + + .dropdown{ + .dropdown-menu{ + -webkit-transform: translateY(-2%); + -moz-transform: translateY(-2%); + -o-transform: translateY(-2%); + -ms-transform: translateY(-2%); + transform: translateY(-2%); + top: 27px; + opacity: 0; + + transform-origin: 0 0; + + &:before{ + border-left: 16px solid rgba(0,0,0,.2); + right: -16px; + } + + &:after{ + border-left: 16px solid #fff; + right: -15px; + } + + &:before, + &:after{ + content: ""; + border-bottom: 16px solid transparent; + border-top: 16px solid transparent; + display: inline-block; + position: absolute; + top: 65px; + width: 16px; + transform: translateY(-50%); + -webkit-transform: translateY(-50%); + -moz-transform: translateY(-50%); + } + } + + &.show .dropdown-menu{ + opacity: 1; + visibility: visible; + -webkit-transform: translateY(4%); + -moz-transform: translateY(4%); + -o-transform: translateY(4%); + -ms-transform: translateY(4%); + transform: translateY(4%); + + transform-origin: 0 0; + } + } + + .bootstrap-switch{ + margin:0; + } +} + +.fixed-plugin .dropdown-menu > li > a.img-holder{ + font-size: 16px; + text-align: center; + border-radius: 10px; + background-color: #FFF; + border: 3px solid #FFF; + padding-left: 0; + padding-right: 0; + opacity: 1; + cursor: pointer; + display: block; + max-height: 100px; + overflow: hidden; + padding: 0; + min-width: 25%; +} + +.fixed-plugin .dropdown .dropdown-menu li.adjustments-line { + border-bottom: 1px solid #ddd; +} + +.fixed-plugin .dropdown .dropdown-menu li { + padding: 5px 2px!important; +} diff --git a/frontend/src/assets/scss/md/_footers.scss b/frontend/src/assets/scss/md/_footers.scss new file mode 100644 index 0000000..b065c60 --- /dev/null +++ b/frontend/src/assets/scss/md/_footers.scss @@ -0,0 +1,56 @@ +footer{ + padding: $padding-base 0; + + nav, + .copyright{ + display: inline-block; + } + + ul{ + padding: 0; + margin: 0; + list-style: none; + + li{ + display: inline-block; + + a{ + color: inherit !important; + padding: $padding-base; + font-weight: $font-weight-bold; + font-size: $mdb-btn-font-size-base; + text-transform: uppercase; + border-radius: $border-radius-base; + text-decoration: none; + position: relative; + display: block; + + &:hover{ + text-decoration: none; + } + } + } + } + + .copyright{ + padding: 15px 0; + margin: 0; + .material-icons{ + font-size: 18px; + position: relative; + top: 3px; + } + } + + .btn{ + margin-top: 0; + margin-bottom: 0; + } +} + +.container{ + padding-right: 30px; + padding-left: 30px; + display: flex; + justify-content: space-between; +} diff --git a/frontend/src/assets/scss/md/_forms.scss b/frontend/src/assets/scss/md/_forms.scss new file mode 100644 index 0000000..ea28713 --- /dev/null +++ b/frontend/src/assets/scss/md/_forms.scss @@ -0,0 +1,58 @@ +// This file has been autogenerated by grunt task lessToSass. Any changes will be overwritten. + +@mixin mdb-label-color-toggle-focus(){ + // override bootstrap focus and keep all the standard color (could be multiple radios in the form group) + .form-group.is-focused & { + color: $mdb-label-color; + + // on focus just darken the specific labels, do not turn them to the brand-primary + &:hover, + &:focus { + color: $mdb-label-color-toggle-focus; + } + + // correct the above focus color for disabled items + fieldset[disabled] & { + color: $mdb-label-color; + } + } +} + +.form-horizontal { + + // Consistent vertical alignment of radios and checkboxes + .radio, + .checkbox, + .radio-inline, + .checkbox-inline { + padding-top: 0; + } + + .radio { + margin-bottom: 10px; + } + + label { + text-align: right; + } + + label.control-label { + margin: 0; + } +} + +.form-newsletter{ + .input-group, + .form-group{ + float: left; + width: 78%; + margin-right: 2%; + margin-top: 9px; + } + + .btn{ + float: left; + width: 20%; + margin: 9px 0 0; + } +} diff --git a/frontend/src/assets/scss/md/_inputs-size.scss b/frontend/src/assets/scss/md/_inputs-size.scss new file mode 100644 index 0000000..c86338c --- /dev/null +++ b/frontend/src/assets/scss/md/_inputs-size.scss @@ -0,0 +1,223 @@ +// This file has been autogenerated by grunt task lessToSass. Any changes will be overwritten. + +// +// Forms - sizing - material - mirrors bootstrap/forms.less with custom sizing +// +// LEAVE THIS IDENTICAL TO THE BOOTSTRAP FILE - DO NOT CUSTOMIZE HERE. +// +// NOTE: this is intentionally kept structurally _identical_ to the bootstrap/forms.less file to make it easier +// to identify differences in sizing approaches to form inputs. +// -------------------------------------------------- + +legend { + margin-bottom: $mdb-input-line-height-computed; + font-size: ($mdb-input-font-size-base * 1.5); +} + +// Adjust output element +output { + padding-top: ($mdb-input-padding-base-vertical + 1); + font-size: $mdb-input-font-size-base; + line-height: $mdb-input-line-height-base; +} + +.form-control { + height: $mdb-input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border) + padding: $mdb-input-padding-base-vertical $mdb-input-padding-base-horizontal; + font-size: $mdb-input-font-size-base; + line-height: $mdb-input-line-height-base; +} + +// Special styles for iOS temporal inputs +// +// In Mobile Safari, setting `display: block` on temporal inputs causes the +// text within the input to become vertically misaligned. As a workaround, we +// set a pixel line-height that matches the given height of the input, but only +// for Safari. See https://bugs.webkit.org/show_bug.cgi?id=139848 +// +// Note that as of 8.3, iOS doesn't support `datetime` or `week`. + +@media screen and (-webkit-min-device-pixel-ratio: 0) { + input[type="date"], + input[type="time"], + input[type="datetime-local"], + input[type="month"] { + &.form-control { + line-height: $mdb-input-height-base; + } + + &.input-sm, + .input-group-sm & { + line-height: $mdb-input-height-small; + } + + &.input-lg, + .input-group-lg & { + line-height: $mdb-input-height-large; + } + } +} + +.radio, +.checkbox { + + label { + min-height: $mdb-input-line-height-computed; // Ensure the input doesn't jump when there is no text + } +} + + +// Static form control text +// +// Apply class to a `p` element to make any string of text align with labels in +// a horizontal form layout. + +.form-control-static { + // Size it appropriately next to real form controls + padding-top: ($mdb-input-padding-base-vertical + 1); + padding-bottom: ($mdb-input-padding-base-vertical + 1); + min-height: ($mdb-input-line-height-computed + $mdb-input-font-size-base); +} + + +// Form control sizing +// +// Relative text size, padding, and border-radii changes for form controls. For +// horizontal sizing, wrap controls in the predefined grid classes. `` background color +$input-bg: #fff !default; +//** `` background color +$input-bg-disabled: $gray-lighter !default; + +//** Text color for ``s +$input-color: $gray !default; +//** `` border color +$input-border: #ccc !default; + +// TODO: Rename `$input-border-radius` to `$input-border-radius-base` in v4 +//** Default `.form-control` border radius +// This has no effect on ``s in CSS. +$input-border-radius: $border-radius-base !default; +//** Large `.form-control` border radius +$input-border-radius-large: $border-radius-large !default; +//** Small `.form-control` border radius +$input-border-radius-small: $border-radius-small !default; + +//** Border color for inputs on focus +$input-border-focus: #66afe9 !default; + +//** Placeholder text color +$input-color-placeholder: #999 !default; + +//** Default `.form-control` height +$input-height-base: ($line-height-computed + ($padding-base-vertical * 2) + 2) !default; +//** Large `.form-control` height +$input-height-large: (ceil($font-size-large * $line-height-large) + ($padding-large-vertical * 2) + 2) !default; +//** Small `.form-control` height +$input-height-small: (floor($font-size-small * $line-height-small) + ($padding-small-vertical * 2) + 2) !default; + +//** `.form-group` margin +$form-group-margin-bottom: 15px !default; + +$legend-color: $gray-dark !default; +$legend-border-color: #e5e5e5 !default; + +//** Background color for textual input addons +$input-group-addon-bg: $gray-lighter !default; +//** Border color for textual input addons +$input-group-addon-border-color: $input-border !default; + +//** Disabled cursor for form controls and buttons. +$cursor-disabled: not-allowed !default; + + +//== Dropdowns +// +//## Dropdown menu container and contents. + +//** Background for the dropdown menu. +$dropdown-bg: #fff !default; +//** Dropdown menu `border-color`. +$dropdown-border: rgba(0,0,0,.15) !default; +//** Dropdown menu `border-color` **for IE8**. +$dropdown-fallback-border: #ccc !default; +//** Divider color for between dropdown items. +$dropdown-divider-bg: #e5e5e5 !default; + +//** Dropdown link text color. +$dropdown-link-color: $gray-dark !default; +//** Hover color for dropdown links. +$dropdown-link-hover-color: darken($gray-dark, 5%) !default; +//** Hover background for dropdown links. +$dropdown-link-hover-bg: #f5f5f5 !default; + +//** Active dropdown menu item text color. +$dropdown-link-active-color: $component-active-color !default; +//** Active dropdown menu item background color. +$dropdown-link-active-bg: $component-active-bg !default; + +//** Disabled dropdown menu item background color. +$dropdown-link-disabled-color: $gray-light !default; + +//** Text color for headers within dropdown menus. +$dropdown-header-color: $gray-light !default; + +//** Deprecated `$dropdown-caret-color` as of v3.1.0 +$dropdown-caret-color: #000 !default; + + +//-- Z-index master list +// +// Warning: Avoid customizing these values. They're used for a bird's eye view +// of components dependent on the z-axis and are designed to all work together. +// +// Note: These variables are not generated into the Customizer. + +$zindex-navbar: 1000 !default; +$zindex-dropdown: 1000 !default; +$zindex-popover: 1060 !default; +$zindex-tooltip: 1070 !default; +$zindex-navbar-fixed: 1030 !default; +$zindex-modal-background: 1040 !default; +$zindex-modal: 1050 !default; + + +//== Media queries breakpoints +// +//## Define the breakpoints at which your layout will change, adapting to different screen sizes. + +// Extra small screen / phone +//** Deprecated `$screen-xs` as of v3.0.1 +$screen-xs: 480px !default; +//** Deprecated `$screen-xs-min` as of v3.2.0 +$screen-xs-min: $screen-xs !default; +//** Deprecated `$screen-phone` as of v3.0.1 +$screen-phone: $screen-xs-min !default; + +// Small screen / tablet +//** Deprecated `$screen-sm` as of v3.0.1 +$screen-sm: 768px !default; +$screen-sm-min: $screen-sm !default; +//** Deprecated `$screen-tablet` as of v3.0.1 +$screen-tablet: $screen-sm-min !default; + +// Medium screen / desktop +//** Deprecated `$screen-md` as of v3.0.1 +$screen-md: 992px !default; +$screen-md-min: $screen-md !default; +//** Deprecated `$screen-desktop` as of v3.0.1 +$screen-desktop: $screen-md-min !default; + +// Large screen / wide desktop +//** Deprecated `$screen-lg` as of v3.0.1 +$screen-lg: 1200px !default; +$screen-lg-min: $screen-lg !default; +//** Deprecated `$screen-lg-desktop` as of v3.0.1 +$screen-lg-desktop: $screen-lg-min !default; + +// So media queries don't overlap when required, provide a maximum +$screen-xs-max: ($screen-sm-min - 1) !default; +$screen-sm-max: ($screen-md-min - 1) !default; +$screen-md-max: ($screen-lg-min - 1) !default; + + +//== Grid system +// +//## Define your custom responsive grid. + +//** Number of columns in the grid. +$grid-columns: 12 !default; +//** Padding between columns. Gets divided in half for the left and right. +$grid-gutter-width: 30px !default; +// Navbar collapse +//** Point at which the navbar becomes uncollapsed. +$grid-float-breakpoint: $screen-sm-min !default; +//** Point at which the navbar begins collapsing. +$grid-float-breakpoint-max: ($grid-float-breakpoint - 1) !default; + + +//== Container sizes +// +//## Define the maximum width of `.container` for different screen sizes. + +// Small screen / tablet +$container-tablet: (720px + $grid-gutter-width) !default; +//** For `$screen-sm-min` and up. +$container-sm: $container-tablet !default; + +// Medium screen / desktop +$container-desktop: (940px + $grid-gutter-width) !default; +//** For `$screen-md-min` and up. +$container-md: $container-desktop !default; + +// Large screen / wide desktop +$container-large-desktop: (1140px + $grid-gutter-width) !default; +//** For `$screen-lg-min` and up. +$container-lg: $container-large-desktop !default; + + +//== Navbar +// +//## + +// Basics of a navbar +$navbar-height: 50px !default; +$navbar-margin-bottom: $line-height-computed !default; +$navbar-border-radius: $border-radius-base !default; +$navbar-padding-horizontal: floor(($grid-gutter-width * 0.5)) !default; +$navbar-padding-vertical: (($navbar-height - $line-height-computed) * 0.5) !default; +$navbar-collapse-max-height: 340px !default; + +$navbar-default-color: #777 !default; +$navbar-default-bg: #f8f8f8 !default; +$navbar-default-border: darken($navbar-default-bg, 6.5%) !default; + +// Navbar links +$navbar-default-link-color: #777 !default; +$navbar-default-link-hover-color: #333 !default; +$navbar-default-link-hover-bg: transparent !default; +$navbar-default-link-active-color: #555 !default; +$navbar-default-link-active-bg: darken($navbar-default-bg, 6.5%) !default; +$navbar-default-link-disabled-color: #ccc !default; +$navbar-default-link-disabled-bg: transparent !default; + +// Navbar brand label +$navbar-default-brand-color: $navbar-default-link-color !default; +$navbar-default-brand-hover-color: darken($navbar-default-brand-color, 10%) !default; +$navbar-default-brand-hover-bg: transparent !default; + +// Navbar toggle +$navbar-default-toggle-hover-bg: #ddd !default; +$navbar-default-toggle-icon-bar-bg: #888 !default; +$navbar-default-toggle-border-color: #ddd !default; + + +//=== Inverted navbar +// Reset inverted navbar basics +$navbar-inverse-color: lighten($gray-light, 15%) !default; +$navbar-inverse-bg: #222 !default; +$navbar-inverse-border: darken($navbar-inverse-bg, 10%) !default; + +// Inverted navbar links +$navbar-inverse-link-color: lighten($gray-light, 15%) !default; +$navbar-inverse-link-hover-color: #fff !default; +$navbar-inverse-link-hover-bg: transparent !default; +$navbar-inverse-link-active-color: $navbar-inverse-link-hover-color !default; +$navbar-inverse-link-active-bg: darken($navbar-inverse-bg, 10%) !default; +$navbar-inverse-link-disabled-color: #444 !default; +$navbar-inverse-link-disabled-bg: transparent !default; + +// Inverted navbar brand label +$navbar-inverse-brand-color: $navbar-inverse-link-color !default; +$navbar-inverse-brand-hover-color: #fff !default; +$navbar-inverse-brand-hover-bg: transparent !default; + +// Inverted navbar toggle +$navbar-inverse-toggle-hover-bg: #333 !default; +$navbar-inverse-toggle-icon-bar-bg: #fff !default; +$navbar-inverse-toggle-border-color: #333 !default; + + +//== Navs +// +//## + +//=== Shared nav styles +$nav-link-padding: 10px 15px !default; +$nav-link-hover-bg: $gray-lighter !default; + +$nav-disabled-link-color: $gray-light !default; +$nav-disabled-link-hover-color: $gray-light !default; + +//== Tabs +$nav-tabs-border-color: #ddd !default; + +$nav-tabs-link-hover-border-color: $gray-lighter !default; + +$nav-tabs-active-link-hover-bg: $body-bg !default; +$nav-tabs-active-link-hover-color: $gray !default; +$nav-tabs-active-link-hover-border-color: #ddd !default; + +$nav-tabs-justified-link-border-color: #ddd !default; +$nav-tabs-justified-active-link-border-color: $body-bg !default; + +//== Pills +$nav-pills-border-radius: $border-radius-base !default; +$nav-pills-active-link-hover-bg: $component-active-bg !default; +$nav-pills-active-link-hover-color: $component-active-color !default; + + +//== Pagination +// +//## + +$pagination-color: $link-color !default; +$pagination-bg: #fff !default; +$pagination-border: #ddd !default; + +$pagination-hover-color: $link-hover-color !default; +$pagination-hover-bg: $gray-lighter !default; +$pagination-hover-border: #ddd !default; + +$pagination-active-color: #fff !default; +$pagination-active-bg: $brand-primary !default; +$pagination-active-border: $brand-primary !default; + +$pagination-disabled-color: $gray-light !default; +$pagination-disabled-bg: #fff !default; +$pagination-disabled-border: #ddd !default; + + +//== Pager +// +//## + +$pager-bg: $pagination-bg !default; +$pager-border: $pagination-border !default; +$pager-border-radius: 15px !default; + +$pager-hover-bg: $pagination-hover-bg !default; + +$pager-active-bg: $pagination-active-bg !default; +$pager-active-color: $pagination-active-color !default; + +$pager-disabled-color: $pagination-disabled-color !default; + + +//== Jumbotron +// +//## + +$jumbotron-padding: 30px !default; +$jumbotron-color: inherit !default; +$jumbotron-bg: $gray-lighter !default; +$jumbotron-heading-color: inherit !default; +$jumbotron-font-size: ceil(($font-size-base * 1.5)) !default; +$jumbotron-heading-font-size: ceil(($font-size-base * 4.5)) !default; + + +//== Form states and alerts +// +//## Define colors for form feedback states and, by default, alerts. + +$state-success-text: #3c763d !default; +$state-success-bg: #dff0d8 !default; +$state-success-border: darken(adjust-hue($state-success-bg, -10), 5%) !default; + +$state-info-text: #31708f !default; +$state-info-bg: #d9edf7 !default; +$state-info-border: darken(adjust-hue($state-info-bg, -10), 7%) !default; + +$state-warning-text: #8a6d3b !default; +$state-warning-bg: #fcf8e3 !default; +$state-warning-border: darken(adjust-hue($state-warning-bg, -10), 5%) !default; + +$state-danger-text: #a94442 !default; +$state-danger-bg: #f2dede !default; +$state-danger-border: darken(adjust-hue($state-danger-bg, -10), 5%) !default; + + +//== Tooltips +// +//## + +//** Tooltip max width +$tooltip-max-width: 200px !default; +//** Tooltip text color +$tooltip-color: #fff !default; +//** Tooltip background color +$tooltip-bg: #000 !default; +$tooltip-opacity: .9 !default; + +//** Tooltip arrow width +$tooltip-arrow-width: 5px !default; +//** Tooltip arrow color +$tooltip-arrow-color: $tooltip-bg !default; + + +//== Popovers +// +//## + +//** Popover body background color +$popover-bg: #fff !default; +//** Popover maximum width +$popover-max-width: 276px !default; +//** Popover border color +$popover-border-color: rgba(0,0,0,.2) !default; +//** Popover fallback border color +$popover-fallback-border-color: #ccc !default; + +//** Popover title background color +$popover-title-bg: darken($popover-bg, 3%) !default; + +//** Popover arrow width +$popover-arrow-width: 10px !default; +//** Popover arrow color +$popover-arrow-color: $popover-bg !default; + +//** Popover outer arrow width +$popover-arrow-outer-width: ($popover-arrow-width + 1) !default; +//** Popover outer arrow color +$popover-arrow-outer-color: fade_in($popover-border-color, 0.05) !default; +//** Popover outer arrow fallback color +$popover-arrow-outer-fallback-color: darken($popover-fallback-border-color, 20%) !default; + + +//== Labels +// +//## + +//** Default label background color +$label-default-bg: $gray-light !default; +//** Primary label background color +$label-primary-bg: $brand-primary !default; +//** Success label background color +$label-success-bg: $brand-success !default; +//** Info label background color +$label-info-bg: $brand-info !default; +//** Warning label background color +$label-warning-bg: $brand-warning !default; +//** Danger label background color +$label-danger-bg: $brand-danger !default; + +//** Default label text color +$label-color: #fff !default; +//** Default text color of a linked label +$label-link-hover-color: #fff !default; + + +//== Modals +// +//## + +//** Padding applied to the modal body +$modal-inner-padding: 15px !default; + +//** Padding applied to the modal title +$modal-title-padding: 15px !default; +//** Modal title line-height +$modal-title-line-height: $line-height-base !default; + +//** Background color of modal content area +$modal-content-bg: #fff !default; +//** Modal content border color +$modal-content-border-color: rgba(0,0,0,.2) !default; +//** Modal content border color **for IE8** +$modal-content-fallback-border-color: #999 !default; + +//** Modal backdrop background color +$modal-backdrop-bg: #000 !default; +//** Modal backdrop opacity +$modal-backdrop-opacity: .5 !default; +//** Modal header border color +$modal-header-border-color: #e5e5e5 !default; +//** Modal footer border color +$modal-footer-border-color: $modal-header-border-color !default; + +$modal-lg: 900px !default; +$modal-md: 600px !default; +$modal-sm: 300px !default; + + +//== Alerts +// +//## Define alert colors, border radius, and padding. + +$alert-padding: 15px !default; +$alert-border-radius: $border-radius-base !default; +$alert-link-font-weight: bold !default; + +$alert-success-bg: $state-success-bg !default; +$alert-success-text: $state-success-text !default; +$alert-success-border: $state-success-border !default; + +$alert-info-bg: $state-info-bg !default; +$alert-info-text: $state-info-text !default; +$alert-info-border: $state-info-border !default; + +$alert-warning-bg: $state-warning-bg !default; +$alert-warning-text: $state-warning-text !default; +$alert-warning-border: $state-warning-border !default; + +$alert-danger-bg: $state-danger-bg !default; +$alert-danger-text: $state-danger-text !default; +$alert-danger-border: $state-danger-border !default; + + +//== Progress bars +// +//## + +//** Background color of the whole progress component +$progress-bg: #f5f5f5 !default; +//** Progress bar text color +$progress-bar-color: #fff !default; +//** Variable for setting rounded corners on progress bar. +$progress-border-radius: $border-radius-base !default; + +//** Default progress bar color +$progress-bar-bg: $brand-primary !default; +//** Success progress bar color +$progress-bar-success-bg: $brand-success !default; +//** Warning progress bar color +$progress-bar-warning-bg: $brand-warning !default; +//** Danger progress bar color +$progress-bar-danger-bg: $brand-danger !default; +//** Info progress bar color +$progress-bar-info-bg: $brand-info !default; + + +//== List group +// +//## + +//** Background color on `.list-group-item` +$list-group-bg: #fff !default; +//** `.list-group-item` border color +$list-group-border: #ddd !default; +//** List group border radius +$list-group-border-radius: $border-radius-base !default; + +//** Background color of single list items on hover +$list-group-hover-bg: #f5f5f5 !default; +//** Text color of active list items +$list-group-active-color: $component-active-color !default; +//** Background color of active list items +$list-group-active-bg: $component-active-bg !default; +//** Border color of active list elements +$list-group-active-border: $list-group-active-bg !default; +//** Text color for content within active list items +$list-group-active-text-color: lighten($list-group-active-bg, 40%) !default; + +//** Text color of disabled list items +$list-group-disabled-color: $gray-light !default; +//** Background color of disabled list items +$list-group-disabled-bg: $gray-lighter !default; +//** Text color for content within disabled list items +$list-group-disabled-text-color: $list-group-disabled-color !default; + +$list-group-link-color: #555 !default; +$list-group-link-hover-color: $list-group-link-color !default; +$list-group-link-heading-color: #333 !default; + + +//== Panels +// +//## + +$panel-bg: #fff !default; +$panel-body-padding: 15px !default; +$panel-heading-padding: 10px 15px !default; +$panel-footer-padding: $panel-heading-padding !default; +$panel-border-radius: $border-radius-base !default; + +//** Border color for elements within panels +$panel-inner-border: #ddd !default; +$panel-footer-bg: #f5f5f5 !default; + +$panel-default-text: $gray-dark !default; +$panel-default-border: #ddd !default; +$panel-default-heading-bg: #f5f5f5 !default; + +$panel-primary-text: #fff !default; +$panel-primary-border: $brand-primary !default; +$panel-primary-heading-bg: $brand-primary !default; + +$panel-success-text: $state-success-text !default; +$panel-success-border: $state-success-border !default; +$panel-success-heading-bg: $state-success-bg !default; + +$panel-info-text: $state-info-text !default; +$panel-info-border: $state-info-border !default; +$panel-info-heading-bg: $state-info-bg !default; + +$panel-warning-text: $state-warning-text !default; +$panel-warning-border: $state-warning-border !default; +$panel-warning-heading-bg: $state-warning-bg !default; + +$panel-danger-text: $state-danger-text !default; +$panel-danger-border: $state-danger-border !default; +$panel-danger-heading-bg: $state-danger-bg !default; + + +//== Thumbnails +// +//## + +//** Padding around the thumbnail image +$thumbnail-padding: 4px !default; +//** Thumbnail background color +$thumbnail-bg: $body-bg !default; +//** Thumbnail border color +$thumbnail-border: #ddd !default; +//** Thumbnail border radius +$thumbnail-border-radius: $border-radius-base !default; + +//** Custom text color for thumbnail captions +$thumbnail-caption-color: $text-color !default; +//** Padding around the thumbnail caption +$thumbnail-caption-padding: 9px !default; + + +//== Wells +// +//## + +$well-bg: #f5f5f5 !default; +$well-border: darken($well-bg, 7%) !default; + + +//== Badges +// +//## + +$badge-color: #fff !default; +//** Linked badge text color on hover +$badge-link-hover-color: #fff !default; +$badge-bg: $gray-light !default; + +//** Badge text color in active nav link +$badge-active-color: $link-color !default; +//** Badge background color in active nav link +$badge-active-bg: #fff !default; + +$badge-font-weight: bold !default; +$badge-line-height: 1 !default; +$badge-border-radius: 10px !default; + + +//== Breadcrumbs +// +//## + +$breadcrumb-padding-vertical: 8px !default; +$breadcrumb-padding-horizontal: 15px !default; +//** Breadcrumb background color +$breadcrumb-bg: #f5f5f5 !default; +//** Breadcrumb text color +$breadcrumb-color: #ccc !default; +//** Text color of current page in the breadcrumb +$breadcrumb-active-color: $gray-light !default; +//** Textual separator for between breadcrumb elements +$breadcrumb-separator: "/" !default; + + +//== Carousel +// +//## + +$carousel-text-shadow: 0 1px 2px rgba(0,0,0,.6) !default; + +$carousel-control-color: #fff !default; +$carousel-control-width: 15% !default; +$carousel-control-opacity: .5 !default; +$carousel-control-font-size: 20px !default; + +$carousel-indicator-active-bg: #fff !default; +$carousel-indicator-border-color: #fff !default; + +$carousel-caption-color: #fff !default; + + +//== Close +// +//## + +$close-font-weight: bold !default; +$close-color: #000 !default; +$close-text-shadow: 0 1px 0 #fff !default; + + +//== Code +// +//## + +$code-color: #c7254e !default; +$code-bg: #f9f2f4 !default; + +$kbd-color: #fff !default; +$kbd-bg: #333 !default; + +$pre-bg: #f5f5f5 !default; +$pre-color: $gray-dark !default; +$pre-border-color: #ccc !default; +$pre-scrollable-max-height: 340px !default; + + +//== Type +// +//## + +//** Horizontal offset for forms and lists. +$component-offset-horizontal: 180px !default; +//** Text muted color +$text-muted: $gray-light !default; +//** Abbreviations and acronyms border color +$abbr-border-color: $gray-light !default; +//** Headings small color +$headings-small-color: $gray-light !default; +//** Blockquote small color +$blockquote-small-color: $gray-light !default; +//** Blockquote font size +$blockquote-font-size: ($font-size-base * 1.25) !default; +//** Blockquote border color +$blockquote-border-color: $gray-lighter !default; +//** Page header border color +$page-header-border-color: $gray-lighter !default; +//** Width of horizontal description list titles +$dl-horizontal-offset: $component-offset-horizontal !default; +//** Point at which .dl-horizontal becomes horizontal +$dl-horizontal-breakpoint: $grid-float-breakpoint !default; +//** Horizontal line color. +$hr-border: $gray-lighter !default; + + +// Bootstrap Material Design variables start with mdb- +$mdb-brand-inverse: $indigo !default; + + +/* ANIMATION */ +$mdb-animation-curve-fast-out-slow-in: cubic-bezier(0.4, 0, 0.2, 1) !default; +$mdb-animation-curve-linear-out-slow-in: cubic-bezier(0, 0, 0.2, 1) !default; +$mdb-animation-curve-fast-out-linear-in: cubic-bezier(0.4, 0, 1, 1) !default; +$mdb-animation-curve-default: $mdb-animation-curve-fast-out-slow-in !default; + + +//--- +// FIXME: Similar but not quite the same as Bootstrap variables +// FIXME: these need to either a) be converted to $mdb- or b) converted to bs variables +$contrast-factor: 40% !default; +//--- + + + + +// -------------------- +// inputs +$mdb-input-placeholder-color: #AAAAAA !default; +$mdb-input-underline-color: #D2D2D2 !default; +$mdb-label-static-size-ratio: 75 * 0.01 !default; +$mdb-help-block-size-ratio: 75 * 0.01 !default; + +$mdb-input-font-size-base: 14px !default; +$mdb-input-font-size-large: ceil(($font-size-base * 1.25)) !default; // ~20px +$mdb-input-font-size-small: ceil(($font-size-base * 0.75)) !default; // ~12px + +// FIXME: with #733 customization of bootstrap, consider how these could be based on the original bs customized variables +//** Unit-less `line-height` for use in components like buttons. + +$mdb-input-line-height-base: $line-height-base; //1.428571429 !default; // 20/14 +//** Computed "line-height" (`font-size` * `line-height`) for use with `margin`, `padding`, etc. +$mdb-input-line-height-computed: floor(($mdb-input-font-size-base * $mdb-input-line-height-base)) !default; // ~20px +$mdb-input-line-height-large: 1.3333333 !default; // extra decimals for Win 8.1 Chrome +$mdb-input-line-height-small: 1.5 !default; + +//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start). +$mdb-input-padding-base-vertical: 8px - 1px !default; // was 6. +$mdb-input-padding-base-horizontal: 0 !default; // was 12. +$mdb-label-as-placeholder-shim-base: 0 !default; // manual adjustment of label top when positioned as placeholder +$mdb-label-top-margin-base: 16px !default; + +$mdb-input-padding-large-vertical: 10px - 1px !default; // 10 +$mdb-input-padding-large-horizontal: 0 !default; // 16 +$mdb-label-as-placeholder-shim-large: -4px !default; // manual adjustment of label top when positioned as placeholder +$mdb-label-top-margin-large: 16px !default; + +$mdb-input-padding-small-vertical: 4px - 1px !default; // 5 +$mdb-input-padding-small-horizontal: 0 !default; // 10 +$mdb-label-as-placeholder-shim-small: 8px !default; // manual adjustment of label top when positioned as placeholder +$mdb-label-top-margin-small: 12px !default; + +$mdb-input-padding-xs-vertical: 2px !default; // 1 +$mdb-input-padding-xs-horizontal: 0 !default; // 5 + +$mdb-input-border-radius-base: 0 !default; +$mdb-input-border-radius-large: 0 !default; +$mdb-input-border-radius-small: 0 !default; + + +//** Default `.form-control` height +$mdb-input-height-base: ($mdb-input-line-height-computed + ($mdb-input-padding-base-vertical * 2) + 2) !default; +//** Large `.form-control` height +$mdb-input-height-large: (ceil($mdb-input-font-size-large * $mdb-input-line-height-large) + ($mdb-input-padding-large-vertical * 2) + 2) !default; +//** Small `.form-control` height +$mdb-input-height-small: (floor($mdb-input-font-size-small * $mdb-input-line-height-small) + ($mdb-input-padding-small-vertical * 2) + 2) !default; + + + + +// Card +$mdb-card-body-text: $mdb-text-color-primary !default; +$mdb-card-body-background: #fff !default; +$mdb-card-image-headline: #fff !default; + +$text-disabled: #a8a8a8 !default; +$background-disabled: #eaeaea !default; + +// Checkboxes +$mdb-checkbox-size: 20px !default; +$mdb-checkbox-animation-ripple: 500ms !default; +$mdb-checkbox-animation-check: 0.3s !default; +$mdb-checkbox-checked-color: $brand-primary !default; + +$mdb-checkbox-label-color: $mdb-label-color !default; +$mdb-checkbox-border-color: $mdb-label-color-toggle-focus !default; + +// Popovers and Popups +$mdb-popover-background: rgba(101, 101, 101, 0.9) !default; +$mdb-popover-color: #ececec !default; + +// Dropdown Menu +$mdb-dropdown-font-size: 13px !default; + +// Toggle +$mdb-toggle-label-color: $mdb-label-color !default; + +// Radio: +$mdb-radio-label-color: $mdb-label-color !default; +$mdb-radio-color-off: $mdb-label-color-toggle-focus !default; +$mdb-radio-color-on: $brand-primary !default; + +// Buttons: +$mdb-btn-font-size-base: 12px !default; +$mdb-btn-font-size-lg: 14px !default; +$mdb-btn-font-size-sm: 11px !default; +$mdb-btn-font-size-xs: 10px !default; + + +$mdb-btn-background-color: $body-bg; //transparent !default; +$mdb-btn-background-color-text: $mdb-text-color-primary !default; + + +$mdl-btn-border-radus: 2px !default; +//$mdb-btn-primary-color: unquote("rgba(#{$rgb-grey-500}, 0.20)") !default; + +$mdb-btn-fab-size: 56px !default; +$mdb-btn-fab-size-mini: 40px !default; +$mdb-btn-fab-font-size: 24px !default; + +$mdb-btn-icon-size: 32px !default; +$mdb-btn-icon-size-mini: 17px !default; + +/* SHADOWS */ +$mdb-shadow-key-umbra-opacity: 0.2 !default; +$mdb-shadow-key-penumbra-opacity: 0.14 !default; +$mdb-shadow-ambient-shadow-opacity: 0.12 !default; + + +$fancy-shadow: 0 13px 39px -10px rgba(0, 0, 0, 0.65), 0 1px 25px 0px rgba(0, 0, 0, 0.15); + + +$general-transition-time: 300ms !default; + +$slow-transition-time: 370ms !default; +$fast-transition-time: 150ms !default; + +$transition-linear: linear !default; +$transition-bezier: cubic-bezier(0.34, 1.61, 0.7, 1) !default; +$transition-ease: ease 0s; + +//variables for social +$social-facebook: #3b5998; +$social-twitter: #55acee; +$social-pinterest: #cc2127; +$social-google: #dd4b39; +$social-linkedin: #0976b4; +$social-dribbble: #ea4c89; +$social-github: #333333; +$social-youtube: #e52d27; +$social-instagram: #125688; +$social-reddit: #ff4500; +$social-tumblr: #35465c; +$social-behance: #1769ff; + +$transparent-bg: transparent !default; + +$background-light-grey: #E8E7E3 !default; +$background-lighter-grey: #F0EFEB !default; +$font-background-light-grey: #9C9B99 !default; +$font-hover-background-light-grey: #5E5E5C !default; + + +// variables from lbd + +$transition-ease-in: ease-in !default; +$transition-ease-out: ease-out !default; +$ultra-fast-transition-time: 60ms !default; +$navbar-padding-a: 10px 15px; +$padding-zero: 0px !default; +$sidebar-width: calc(100% - 260px) !default; +$topbar-back: topbar-back !default; +$bottombar-back: bottombar-back !default; +$topbar-x: topbar-x !default; +$bottombar-x: bottombar-x !default; +$margin-bottom: 0 0 10px 0 !default; +$margin-base-vertical: 15px !default; + +// Variables for datetimepicker // +$padding-default-vertical: 10px !default; +$medium-pale-bg: #F1EAE0 !default; +$pale-bg: #F9F7F3 !default; diff --git a/frontend/src/assets/scss/md/mixins/_chartist.scss b/frontend/src/assets/scss/md/mixins/_chartist.scss new file mode 100644 index 0000000..0d8f340 --- /dev/null +++ b/frontend/src/assets/scss/md/mixins/_chartist.scss @@ -0,0 +1,91 @@ +// Scales for responsive SVG containers +@use "sass:math"; + +$ct-scales: ((1), math.div(15, 16), math.div(8, 9), math.div(5, 6), (4*0.2), (3*0.25), math.div(2, 3), (5*0.125), math.div(1, 1.618), (3*0.2), math.div(9, 16), math.div(8, 15), (1*0.5), (2*0.2), (3*0.125), math.div(1, 3), (1*0.25)) !default; +$ct-scales-names: (ct-square, ct-minor-second, ct-major-second, ct-minor-third, ct-major-third, ct-perfect-fourth, ct-perfect-fifth, ct-minor-sixth, ct-golden-section, ct-major-sixth, ct-minor-seventh, ct-major-seventh, ct-octave, ct-major-tenth, ct-major-eleventh, ct-major-twelfth, ct-double-octave) !default; + +// Class names to be used when generating CSS +$ct-class-chart: ct-chart !default; +$ct-class-chart-line: ct-chart-line !default; +$ct-class-chart-bar: ct-chart-bar !default; +$ct-class-horizontal-bars: ct-horizontal-bars !default; +$ct-class-chart-pie: ct-chart-pie !default; +$ct-class-chart-donut: ct-chart-donut !default; +$ct-class-label: ct-label !default; +$ct-class-series: ct-series !default; +$ct-class-line: ct-line !default; +$ct-class-point: ct-point !default; +$ct-class-area: ct-area !default; +$ct-class-bar: ct-bar !default; +$ct-class-slice-pie: ct-slice-pie !default; +$ct-class-slice-donut: ct-slice-donut !default; +$ct-class-grid: ct-grid !default; +$ct-class-vertical: ct-vertical !default; +$ct-class-horizontal: ct-horizontal !default; +$ct-class-start: ct-start !default; +$ct-class-end: ct-end !default; + +// Container ratio +$ct-container-ratio: math.div(1, 1.618) !default; + +// Text styles for labels +$ct-text-color: rgba(0, 0, 0, 0.4) !default; +$ct-text-size: 0.875rem !default; +$ct-text-align: flex-start !default; +$ct-text-justify: flex-start !default; +$ct-text-line-height: 1; + +.ct-big-chart-white{ + $ct-grid-color: rgba(250, 250, 250, 0.7) !default; +} +// Grid styles +$ct-grid-color: rgba(0, 0, 0, 0.2) !default; +$ct-grid-dasharray: 2px !default; +$ct-grid-width: 1px !default; + +// Line chart properties +$ct-line-width: 3px !default; +$ct-line-dasharray: false !default; +$ct-point-size: 8px !default; +// Line chart point, can be either round or square +$ct-point-shape: round !default; +// Area fill transparency between 0 and 1 +$ct-area-opacity: 0.8 !default; + +// Bar chart bar width +$ct-bar-width: 10px !default; + +// Donut width (If donut width is to big it can cause issues where the shape gets distorted) +$ct-donut-width: 60px !default; + +// If set to true it will include the default classes and generate CSS output. If you're planning to use the mixins you +// should set this property to false +$ct-include-classes: true !default; + +// If this is set to true the CSS will contain colored series. You can extend or change the color with the +// properties below +$ct-include-colored-series: $ct-include-classes !default; + +// If set to true this will include all responsive container variations using the scales defined at the top of the script +$ct-include-alternative-responsive-containers: $ct-include-classes !default; + +// Series names and colors. This can be extended or customized as desired. Just add more series and colors. +$ct-series-names: (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) !default; +$ct-series-colors: ( + + $brand-info, + $brand-danger, + $brand-warning, + $brand-primary, + $brand-success, + $font-background-light-grey, + $gray-color, + $social-google, + $social-tumblr, + $social-youtube, + $social-twitter, + $social-pinterest, + $social-behance, + #6188e2, + #a748ca +) !default; diff --git a/frontend/src/assets/scss/md/mixins/_transparency.scss b/frontend/src/assets/scss/md/mixins/_transparency.scss new file mode 100644 index 0000000..da32b74 --- /dev/null +++ b/frontend/src/assets/scss/md/mixins/_transparency.scss @@ -0,0 +1,20 @@ +// Opacity + +@mixin opacity($opacity) { + opacity: $opacity; + // IE8 filter + $opacity-ie: ($opacity * 100); + filter: #{alpha(opacity=$opacity-ie)}; +} + +@mixin black-filter($opacity){ + top: 0; + left: 0; + height: 100%; + width: 100%; + position: absolute; + background-color: rgba(17,17,17,$opacity); + display: block; + content: ""; + z-index: 1; +} \ No newline at end of file diff --git a/frontend/src/assets/scss/md/mixins/_vendor-prefixes.scss b/frontend/src/assets/scss/md/mixins/_vendor-prefixes.scss new file mode 100644 index 0000000..88f6e21 --- /dev/null +++ b/frontend/src/assets/scss/md/mixins/_vendor-prefixes.scss @@ -0,0 +1,176 @@ +// User select +// For selecting text on the page + +@mixin user-select($select) { + -webkit-user-select: $select; + -moz-user-select: $select; + -ms-user-select: $select; // IE10+ + user-select: $select; +} + +@mixin box-shadow($shadow...) { + -webkit-box-shadow: $shadow; // iOS <4.3 & Android <4.1 + box-shadow: $shadow; +} + +// Box sizing +@mixin box-sizing($boxmodel) { + -webkit-box-sizing: $boxmodel; + -moz-box-sizing: $boxmodel; + box-sizing: $boxmodel; +} + + +@mixin transition($time, $type){ + -webkit-transition: all $time $type; + -moz-transition: all $time $type; + -o-transition: all $time $type; + -ms-transition: all $time $type; + transition: all $time $type; +} + +@mixin transform-scale($value){ + -webkit-transform: scale($value); + -moz-transform: scale($value); + -o-transform: scale($value); + -ms-transform: scale($value); + transform: scale($value); +} + +@mixin transform-translate-x($value){ + -webkit-transform: translate3d($value, 0, 0); + -moz-transform: translate3d($value, 0, 0); + -o-transform: translate3d($value, 0, 0); + -ms-transform: translate3d($value, 0, 0); + transform: translate3d($value, 0, 0); +} + +@mixin transform-origin($coordinates){ + -webkit-transform-origin: $coordinates; + -moz-transform-origin: $coordinates; + -o-transform-origin: $coordinates; + -ms-transform-origin: $coordinates; + transform-origin: $coordinates; +} + +@mixin radial-gradient($extern-color, $center-color){ + background: $extern-color; + background: -moz-radial-gradient(center, ellipse cover, $center-color 0%, $extern-color 100%); /* FF3.6+ */ + background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%,$center-color), color-stop(100%,$extern-color)); /* Chrome,Safari4+ */ + background: -webkit-radial-gradient(center, ellipse cover, $center-color 0%,$extern-color 100%); /* Chrome10+,Safari5.1+ */ + background: -o-radial-gradient(center, ellipse cover, $center-color 0%,$extern-color 100%); /* Opera 12+ */ + background: -ms-radial-gradient(center, ellipse cover, $center-color 0%,$extern-color 100%); /* IE10+ */ + background: radial-gradient(ellipse at center, $center-color 0%,$extern-color 100%); /* W3C */ + background-size: 550% 450%; +} + +@mixin vertical-align { + position: relative; + top: 50%; + -webkit-transform: translateY(-50%); + -ms-transform: translateY(-50%); + transform: translateY(-50%); +} + +@mixin rotate-180(){ + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg); +} + +@mixin bar-animation($type){ + -webkit-animation: $type 500ms linear 0s; + -moz-animation: $type 500ms linear 0s; + animation: $type 500ms 0s; + -webkit-animation-fill-mode: forwards; + -moz-animation-fill-mode: forwards; + animation-fill-mode: forwards; +} + +@mixin topbar-x-rotation(){ + @keyframes topbar-x { + 0% {top: 0px; transform: rotate(0deg); } + 45% {top: 6px; transform: rotate(145deg); } + 75% {transform: rotate(130deg); } + 100% {transform: rotate(135deg); } + } + @-webkit-keyframes topbar-x { + 0% {top: 0px; -webkit-transform: rotate(0deg); } + 45% {top: 6px; -webkit-transform: rotate(145deg); } + 75% {-webkit-transform: rotate(130deg); } + 100% { -webkit-transform: rotate(135deg); } + } + @-moz-keyframes topbar-x { + 0% {top: 0px; -moz-transform: rotate(0deg); } + 45% {top: 6px; -moz-transform: rotate(145deg); } + 75% {-moz-transform: rotate(130deg); } + 100% { -moz-transform: rotate(135deg); } + } +} + +@mixin topbar-back-rotation(){ + @keyframes topbar-back { + 0% { top: 6px; transform: rotate(135deg); } + 45% { transform: rotate(-10deg); } + 75% { transform: rotate(5deg); } + 100% { top: 0px; transform: rotate(0); } + } + + @-webkit-keyframes topbar-back { + 0% { top: 6px; -webkit-transform: rotate(135deg); } + 45% { -webkit-transform: rotate(-10deg); } + 75% { -webkit-transform: rotate(5deg); } + 100% { top: 0px; -webkit-transform: rotate(0); } + } + + @-moz-keyframes topbar-back { + 0% { top: 6px; -moz-transform: rotate(135deg); } + 45% { -moz-transform: rotate(-10deg); } + 75% { -moz-transform: rotate(5deg); } + 100% { top: 0px; -moz-transform: rotate(0); } + } +} + +@mixin bottombar-x-rotation(){ + @keyframes bottombar-x { + 0% {bottom: 0px; transform: rotate(0deg);} + 45% {bottom: 6px; transform: rotate(-145deg);} + 75% {transform: rotate(-130deg);} + 100% {transform: rotate(-135deg);} + } + @-webkit-keyframes bottombar-x { + 0% {bottom: 0px; -webkit-transform: rotate(0deg);} + 45% {bottom: 6px; -webkit-transform: rotate(-145deg);} + 75% {-webkit-transform: rotate(-130deg);} + 100% {-webkit-transform: rotate(-135deg);} + } + @-moz-keyframes bottombar-x { + 0% {bottom: 0px; -moz-transform: rotate(0deg);} + 45% {bottom: 6px; -moz-transform: rotate(-145deg);} + 75% {-moz-transform: rotate(-130deg);} + 100% {-moz-transform: rotate(-135deg);} + } +} + +@mixin bottombar-back-rotation{ + @keyframes bottombar-back { + 0% { bottom: 6px;transform: rotate(-135deg);} + 45% { transform: rotate(10deg);} + 75% { transform: rotate(-5deg);} + 100% { bottom: 0px;transform: rotate(0);} + } + @-webkit-keyframes bottombar-back { + 0% {bottom: 6px;-webkit-transform: rotate(-135deg);} + 45% {-webkit-transform: rotate(10deg);} + 75% {-webkit-transform: rotate(-5deg);} + 100% {bottom: 0px;-webkit-transform: rotate(0);} + } + @-moz-keyframes bottombar-back { + 0% {bottom: 6px;-moz-transform: rotate(-135deg);} + 45% {-moz-transform: rotate(10deg);} + 75% {-moz-transform: rotate(-5deg);} + 100% {bottom: 0px;-moz-transform: rotate(0);} + } + +} diff --git a/frontend/src/assets/scss/md/plugins/_perfect-scrollbar.scss b/frontend/src/assets/scss/md/plugins/_perfect-scrollbar.scss new file mode 100644 index 0000000..dbae094 --- /dev/null +++ b/frontend/src/assets/scss/md/plugins/_perfect-scrollbar.scss @@ -0,0 +1,113 @@ +/* perfect-scrollbar v0.6.13 */ +.ps-container { + -ms-touch-action: auto; + touch-action: auto; + overflow: hidden !important; + -ms-overflow-style: none; } + @supports (-ms-overflow-style: none) { + .ps-container { + overflow: auto !important; } } + @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) { + .ps-container { + overflow: auto !important; } } + .ps-container.ps-active-x > .ps-scrollbar-x-rail, + .ps-container.ps-active-y > .ps-scrollbar-y-rail { + display: block; + background-color: transparent; } + .ps-container.ps-in-scrolling.ps-x > .ps-scrollbar-x-rail { + background-color: #eee; + opacity: 0.9; } + .ps-container.ps-in-scrolling.ps-x > .ps-scrollbar-x-rail > .ps-scrollbar-x { + background-color: #999; + height: 11px; } + .ps-container.ps-in-scrolling.ps-y > .ps-scrollbar-y-rail { + background-color: #eee; + opacity: 0.9; } + .ps-container.ps-in-scrolling.ps-y > .ps-scrollbar-y-rail > .ps-scrollbar-y { + background-color: #999; + width: 11px; } + .ps-container > .ps-scrollbar-x-rail { + display: none; + position: absolute; + /* please don't change 'position' */ + opacity: 0; + -webkit-transition: background-color .2s linear, opacity .2s linear; + -o-transition: background-color .2s linear, opacity .2s linear; + -moz-transition: background-color .2s linear, opacity .2s linear; + transition: background-color .2s linear, opacity .2s linear; + bottom: 0px; + /* there must be 'bottom' for ps-scrollbar-x-rail */ + height: 15px; } + .ps-container > .ps-scrollbar-x-rail > .ps-scrollbar-x { + position: absolute; + /* please don't change 'position' */ + background-color: #aaa; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-transition: background-color .2s linear, height .2s linear, width .2s ease-in-out, -webkit-border-radius .2s ease-in-out; + transition: background-color .2s linear, height .2s linear, width .2s ease-in-out, -webkit-border-radius .2s ease-in-out; + -o-transition: background-color .2s linear, height .2s linear, width .2s ease-in-out, border-radius .2s ease-in-out; + -moz-transition: background-color .2s linear, height .2s linear, width .2s ease-in-out, border-radius .2s ease-in-out, -moz-border-radius .2s ease-in-out; + transition: background-color .2s linear, height .2s linear, width .2s ease-in-out, border-radius .2s ease-in-out; + transition: background-color .2s linear, height .2s linear, width .2s ease-in-out, border-radius .2s ease-in-out, -webkit-border-radius .2s ease-in-out, -moz-border-radius .2s ease-in-out; + bottom: 2px; + /* there must be 'bottom' for ps-scrollbar-x */ + height: 6px; } + .ps-container > .ps-scrollbar-x-rail:hover > .ps-scrollbar-x, .ps-container > .ps-scrollbar-x-rail:active > .ps-scrollbar-x { + height: 11px; } + .ps-container > .ps-scrollbar-y-rail { + display: none; + position: absolute; + /* please don't change 'position' */ + opacity: 0; + -webkit-transition: background-color .2s linear, opacity .2s linear; + -o-transition: background-color .2s linear, opacity .2s linear; + -moz-transition: background-color .2s linear, opacity .2s linear; + transition: background-color .2s linear, opacity .2s linear; + right: 0; + /* there must be 'right' for ps-scrollbar-y-rail */ + width: 15px; } + .ps-container > .ps-scrollbar-y-rail > .ps-scrollbar-y { + position: absolute; + /* please don't change 'position' */ + background-color: #aaa; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-transition: background-color .2s linear, height .2s linear, width .2s ease-in-out, -webkit-border-radius .2s ease-in-out; + transition: background-color .2s linear, height .2s linear, width .2s ease-in-out, -webkit-border-radius .2s ease-in-out; + -o-transition: background-color .2s linear, height .2s linear, width .2s ease-in-out, border-radius .2s ease-in-out; + -moz-transition: background-color .2s linear, height .2s linear, width .2s ease-in-out, border-radius .2s ease-in-out, -moz-border-radius .2s ease-in-out; + transition: background-color .2s linear, height .2s linear, width .2s ease-in-out, border-radius .2s ease-in-out; + transition: background-color .2s linear, height .2s linear, width .2s ease-in-out, border-radius .2s ease-in-out, -webkit-border-radius .2s ease-in-out, -moz-border-radius .2s ease-in-out; + right: 2px; + /* there must be 'right' for ps-scrollbar-y */ + width: 6px; } + .ps-container > .ps-scrollbar-y-rail:hover > .ps-scrollbar-y, .ps-container > .ps-scrollbar-y-rail:active > .ps-scrollbar-y { + width: 11px; } + .ps-container:hover.ps-in-scrolling.ps-x > .ps-scrollbar-x-rail { + background-color: #eee; + opacity: 0.9; } + .ps-container:hover.ps-in-scrolling.ps-x > .ps-scrollbar-x-rail > .ps-scrollbar-x { + background-color: #999; + height: 11px; } + .ps-container:hover.ps-in-scrolling.ps-y > .ps-scrollbar-y-rail { + background-color: #eee; + opacity: 0.9; } + .ps-container:hover.ps-in-scrolling.ps-y > .ps-scrollbar-y-rail > .ps-scrollbar-y { + background-color: #999; + width: 11px; } + .ps-container:hover > .ps-scrollbar-x-rail, + .ps-container:hover > .ps-scrollbar-y-rail { + opacity: 0.6; } + .ps-container:hover > .ps-scrollbar-x-rail:hover { + background-color: #eee; + opacity: 0.9; } + .ps-container:hover > .ps-scrollbar-x-rail:hover > .ps-scrollbar-x { + background-color: #999; } + .ps-container:hover > .ps-scrollbar-y-rail:hover { + background-color: #eee; + opacity: 0.9; } + .ps-container:hover > .ps-scrollbar-y-rail:hover > .ps-scrollbar-y { + background-color: #999; } diff --git a/frontend/src/components/Cards/ChartCard.vue b/frontend/src/components/Cards/ChartCard.vue new file mode 100644 index 0000000..ffccf32 --- /dev/null +++ b/frontend/src/components/Cards/ChartCard.vue @@ -0,0 +1,96 @@ + + diff --git a/frontend/src/components/Cards/NavTabsCard.vue b/frontend/src/components/Cards/NavTabsCard.vue new file mode 100644 index 0000000..7dfeb22 --- /dev/null +++ b/frontend/src/components/Cards/NavTabsCard.vue @@ -0,0 +1,13 @@ + + + diff --git a/frontend/src/components/Cards/StatsCard.vue b/frontend/src/components/Cards/StatsCard.vue new file mode 100644 index 0000000..c6bf997 --- /dev/null +++ b/frontend/src/components/Cards/StatsCard.vue @@ -0,0 +1,26 @@ + + diff --git a/frontend/src/components/Dropdown.vue b/frontend/src/components/Dropdown.vue new file mode 100644 index 0000000..2d558d7 --- /dev/null +++ b/frontend/src/components/Dropdown.vue @@ -0,0 +1,45 @@ + + diff --git a/frontend/src/components/NotificationPlugin/Notification.vue b/frontend/src/components/NotificationPlugin/Notification.vue new file mode 100644 index 0000000..c837a97 --- /dev/null +++ b/frontend/src/components/NotificationPlugin/Notification.vue @@ -0,0 +1,134 @@ + + + diff --git a/frontend/src/components/NotificationPlugin/Notifications.vue b/frontend/src/components/NotificationPlugin/Notifications.vue new file mode 100644 index 0000000..4571b9f --- /dev/null +++ b/frontend/src/components/NotificationPlugin/Notifications.vue @@ -0,0 +1,52 @@ + + + diff --git a/frontend/src/components/NotificationPlugin/index.js b/frontend/src/components/NotificationPlugin/index.js new file mode 100644 index 0000000..3ac20e2 --- /dev/null +++ b/frontend/src/components/NotificationPlugin/index.js @@ -0,0 +1,60 @@ +import Notifications from "./Notifications.vue"; + +const NotificationStore = { + state: [], // here the notifications will be added + + removeNotification(timestamp) { + const indexToDelete = this.state.findIndex( + (n) => n.timestamp === timestamp + ); + if (indexToDelete !== -1) { + this.state.splice(indexToDelete, 1); + } + }, + addNotification(notification) { + notification.timestamp = new Date(); + notification.timestamp.setMilliseconds( + notification.timestamp.getMilliseconds() + this.state.length + ); + this.state.push(notification); + }, + notify(notification) { + if (Array.isArray(notification)) { + notification.forEach((notificationInstance) => { + this.addNotification(notificationInstance); + }); + } else { + this.addNotification(notification); + } + }, +}; + +var NotificationsPlugin = { + install(Vue) { + Vue.mixin({ + data() { + return { + notificationStore: NotificationStore, + }; + }, + methods: { + notify(notification) { + this.notificationStore.notify(notification); + }, + }, + }); + Object.defineProperty(Vue.prototype, "$notify", { + get() { + return this.$root.notify; + }, + }); + Object.defineProperty(Vue.prototype, "$notifications", { + get() { + return this.$root.notificationStore; + }, + }); + Vue.component("Notifications", Notifications); + }, +}; + +export default NotificationsPlugin; diff --git a/frontend/src/components/SidebarPlugin/SideBar.vue b/frontend/src/components/SidebarPlugin/SideBar.vue new file mode 100644 index 0000000..9339d3d --- /dev/null +++ b/frontend/src/components/SidebarPlugin/SideBar.vue @@ -0,0 +1,97 @@ + + + diff --git a/frontend/src/components/SidebarPlugin/SidebarLink.vue b/frontend/src/components/SidebarPlugin/SidebarLink.vue new file mode 100644 index 0000000..a7a6016 --- /dev/null +++ b/frontend/src/components/SidebarPlugin/SidebarLink.vue @@ -0,0 +1,53 @@ + + + diff --git a/frontend/src/components/SidebarPlugin/index.js b/frontend/src/components/SidebarPlugin/index.js new file mode 100644 index 0000000..e82e5f1 --- /dev/null +++ b/frontend/src/components/SidebarPlugin/index.js @@ -0,0 +1,31 @@ +import Sidebar from "./SideBar.vue"; +import SidebarLink from "./SidebarLink.vue"; + +const SidebarStore = { + showSidebar: false, + displaySidebar(value) { + this.showSidebar = value; + }, +}; + +const SidebarPlugin = { + install(Vue) { + Vue.mixin({ + data() { + return { + sidebarStore: SidebarStore, + }; + }, + }); + + Object.defineProperty(Vue.prototype, "$sidebar", { + get() { + return this.$root.sidebarStore; + }, + }); + Vue.component("side-bar", Sidebar); + Vue.component("sidebar-link", SidebarLink); + }, +}; + +export default SidebarPlugin; diff --git a/frontend/src/components/Tables/NavTabsTable.vue b/frontend/src/components/Tables/NavTabsTable.vue new file mode 100644 index 0000000..6451ba8 --- /dev/null +++ b/frontend/src/components/Tables/NavTabsTable.vue @@ -0,0 +1,51 @@ + + + diff --git a/frontend/src/components/Tables/OrderedTable.vue b/frontend/src/components/Tables/OrderedTable.vue new file mode 100644 index 0000000..41e525a --- /dev/null +++ b/frontend/src/components/Tables/OrderedTable.vue @@ -0,0 +1,60 @@ + + + diff --git a/frontend/src/components/Tables/SimpleTable.vue b/frontend/src/components/Tables/SimpleTable.vue new file mode 100644 index 0000000..47788df --- /dev/null +++ b/frontend/src/components/Tables/SimpleTable.vue @@ -0,0 +1,67 @@ + + + diff --git a/frontend/src/components/index.js b/frontend/src/components/index.js new file mode 100644 index 0000000..d40bcb2 --- /dev/null +++ b/frontend/src/components/index.js @@ -0,0 +1,18 @@ +// Cards +import ChartCard from "./Cards/ChartCard.vue"; +import NavTabsCard from "./Cards/NavTabsCard.vue"; +import StatsCard from "./Cards/StatsCard.vue"; + +// Tables +import NavTabsTable from "./Tables/NavTabsTable.vue"; +import OrderedTable from "./Tables/OrderedTable.vue"; +import SimpleTable from "./Tables/SimpleTable.vue"; + +export { + ChartCard, + NavTabsCard, + StatsCard, + NavTabsTable, + OrderedTable, + SimpleTable, +}; diff --git a/frontend/src/globalComponents.js b/frontend/src/globalComponents.js new file mode 100644 index 0000000..47c00f2 --- /dev/null +++ b/frontend/src/globalComponents.js @@ -0,0 +1,13 @@ +import DropDown from "./components/Dropdown.vue"; + +/** + * You can register global components here and use them as a plugin in your main Vue instance + */ + +const GlobalComponents = { + install(Vue) { + Vue.component("drop-down", DropDown); + }, +}; + +export default GlobalComponents; diff --git a/frontend/src/globalDirectives.js b/frontend/src/globalDirectives.js new file mode 100644 index 0000000..9a11e56 --- /dev/null +++ b/frontend/src/globalDirectives.js @@ -0,0 +1,13 @@ +import { directive as vClickOutside } from "vue-clickaway"; + +/** + * You can register global components here and use them as a plugin in your main Vue instance + */ + +const GlobalDirectives = { + install(Vue) { + Vue.directive("click-outside", vClickOutside); + }, +}; + +export default GlobalDirectives; diff --git a/frontend/src/main.js b/frontend/src/main.js new file mode 100644 index 0000000..794c64f --- /dev/null +++ b/frontend/src/main.js @@ -0,0 +1,56 @@ +// ========================================================= +// * Vue Material Dashboard - v1.5.1 +// ========================================================= +// +// * Product Page: https://www.creative-tim.com/product/vue-material-dashboard +// * Copyright 2023 Creative Tim (https://www.creative-tim.com) +// * Licensed under MIT (https://github.com/creativetimofficial/vue-material-dashboard/blob/master/LICENSE.md) +// +// * Coded by Creative Tim +// +// ========================================================= +// +// * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +// The Vue build version to load with the `import` command +// (runtime-only or standalone) has been set in webpack.base.conf with an alias. +import Vue from "vue"; +import VueRouter from "vue-router"; +import App from "./App"; + +// router setup +import routes from "./routes/routes"; + +// Plugins +import GlobalComponents from "./globalComponents"; +import GlobalDirectives from "./globalDirectives"; +import Notifications from "./components/NotificationPlugin"; + +// MaterialDashboard plugin +import MaterialDashboard from "./material-dashboard"; + +import Chartist from "chartist"; + +// configure router +const router = new VueRouter({ + routes, // short for routes: routes + linkExactActiveClass: "nav-item active", +}); + +Vue.prototype.$Chartist = Chartist; + +Vue.use(VueRouter); +Vue.use(MaterialDashboard); +Vue.use(GlobalComponents); +Vue.use(GlobalDirectives); +Vue.use(Notifications); + +/* eslint-disable no-new */ +new Vue({ + el: "#app", + render: (h) => h(App), + router, + data: { + Chartist: Chartist, + }, +}); diff --git a/frontend/src/material-dashboard.js b/frontend/src/material-dashboard.js new file mode 100644 index 0000000..79368ed --- /dev/null +++ b/frontend/src/material-dashboard.js @@ -0,0 +1,20 @@ +// Sidebar on the right. Used as a local plugin in DashboardLayout.vue +import SideBar from "./components/SidebarPlugin"; + +// asset imports +import VueMaterial from "vue-material"; +import "vue-material/dist/vue-material.css"; +import "./assets/scss/material-dashboard.scss"; + +// library auto imports +import "es6-promise/auto"; + +/** + * This is the main Light Bootstrap Dashboard Vue plugin where dashboard related plugins are registerd. + */ +export default { + install(Vue) { + Vue.use(SideBar); + Vue.use(VueMaterial); + }, +}; diff --git a/frontend/src/pages/API_KEY.js b/frontend/src/pages/API_KEY.js new file mode 100644 index 0000000..db66151 --- /dev/null +++ b/frontend/src/pages/API_KEY.js @@ -0,0 +1 @@ +export const API_KEY = "AIzaSyB2Yno10-YTnLjjn_Vtk0V8cdcY5lC4plU"; diff --git a/frontend/src/pages/Dashboard.vue b/frontend/src/pages/Dashboard.vue new file mode 100644 index 0000000..8753e32 --- /dev/null +++ b/frontend/src/pages/Dashboard.vue @@ -0,0 +1,310 @@ + + + diff --git a/frontend/src/pages/Icons.vue b/frontend/src/pages/Icons.vue new file mode 100644 index 0000000..84a6246 --- /dev/null +++ b/frontend/src/pages/Icons.vue @@ -0,0 +1,41 @@ + + + diff --git a/frontend/src/pages/Layout/Content.vue b/frontend/src/pages/Layout/Content.vue new file mode 100644 index 0000000..e6b7111 --- /dev/null +++ b/frontend/src/pages/Layout/Content.vue @@ -0,0 +1,20 @@ + + + diff --git a/frontend/src/pages/Layout/ContentFooter.vue b/frontend/src/pages/Layout/ContentFooter.vue new file mode 100644 index 0000000..9babee9 --- /dev/null +++ b/frontend/src/pages/Layout/ContentFooter.vue @@ -0,0 +1,32 @@ + + + diff --git a/frontend/src/pages/Layout/DashboardLayout.vue b/frontend/src/pages/Layout/DashboardLayout.vue new file mode 100644 index 0000000..5e3ec40 --- /dev/null +++ b/frontend/src/pages/Layout/DashboardLayout.vue @@ -0,0 +1,82 @@ + + + diff --git a/frontend/src/pages/Layout/Extra/FixedPlugin.vue b/frontend/src/pages/Layout/Extra/FixedPlugin.vue new file mode 100644 index 0000000..2551fc7 --- /dev/null +++ b/frontend/src/pages/Layout/Extra/FixedPlugin.vue @@ -0,0 +1,171 @@ + + + diff --git a/frontend/src/pages/Layout/MobileMenu.vue b/frontend/src/pages/Layout/MobileMenu.vue new file mode 100644 index 0000000..fde2688 --- /dev/null +++ b/frontend/src/pages/Layout/MobileMenu.vue @@ -0,0 +1,58 @@ + + diff --git a/frontend/src/pages/Layout/TopNavbar.vue b/frontend/src/pages/Layout/TopNavbar.vue new file mode 100644 index 0000000..b032fa2 --- /dev/null +++ b/frontend/src/pages/Layout/TopNavbar.vue @@ -0,0 +1,115 @@ + + + + + diff --git a/frontend/src/pages/Maps.vue b/frontend/src/pages/Maps.vue new file mode 100644 index 0000000..dbaf6d7 --- /dev/null +++ b/frontend/src/pages/Maps.vue @@ -0,0 +1,91 @@ + + + diff --git a/frontend/src/pages/Notifications.vue b/frontend/src/pages/Notifications.vue new file mode 100644 index 0000000..14fbf42 --- /dev/null +++ b/frontend/src/pages/Notifications.vue @@ -0,0 +1,173 @@ + + + diff --git a/frontend/src/pages/TableList.vue b/frontend/src/pages/TableList.vue new file mode 100644 index 0000000..0ac5783 --- /dev/null +++ b/frontend/src/pages/TableList.vue @@ -0,0 +1,44 @@ + + + diff --git a/frontend/src/pages/Typography.vue b/frontend/src/pages/Typography.vue new file mode 100644 index 0000000..1cd163d --- /dev/null +++ b/frontend/src/pages/Typography.vue @@ -0,0 +1,143 @@ + + + diff --git a/frontend/src/pages/UpgradeToPRO.vue b/frontend/src/pages/UpgradeToPRO.vue new file mode 100644 index 0000000..052a671 --- /dev/null +++ b/frontend/src/pages/UpgradeToPRO.vue @@ -0,0 +1,162 @@ + + + + + diff --git a/frontend/src/pages/UserProfile.vue b/frontend/src/pages/UserProfile.vue new file mode 100644 index 0000000..0c1308d --- /dev/null +++ b/frontend/src/pages/UserProfile.vue @@ -0,0 +1,23 @@ + + + diff --git a/frontend/src/pages/UserProfile/EditProfileForm.vue b/frontend/src/pages/UserProfile/EditProfileForm.vue new file mode 100644 index 0000000..966ec94 --- /dev/null +++ b/frontend/src/pages/UserProfile/EditProfileForm.vue @@ -0,0 +1,105 @@ + + + diff --git a/frontend/src/pages/UserProfile/UserCard.vue b/frontend/src/pages/UserProfile/UserCard.vue new file mode 100644 index 0000000..aed8827 --- /dev/null +++ b/frontend/src/pages/UserProfile/UserCard.vue @@ -0,0 +1,33 @@ + + + diff --git a/frontend/src/pages/index.js b/frontend/src/pages/index.js new file mode 100644 index 0000000..35d4a50 --- /dev/null +++ b/frontend/src/pages/index.js @@ -0,0 +1,7 @@ +// Cards +import UserCard from "../pages/UserProfile/UserCard.vue"; + +// Forms +import EditProfileForm from "../pages/UserProfile/EditProfileForm.vue"; + +export { UserCard, EditProfileForm }; diff --git a/frontend/src/routes/routes.js b/frontend/src/routes/routes.js new file mode 100644 index 0000000..e83caca --- /dev/null +++ b/frontend/src/routes/routes.js @@ -0,0 +1,65 @@ +import DashboardLayout from "@/pages/Layout/DashboardLayout.vue"; + +import Dashboard from "@/pages/Dashboard.vue"; +import UserProfile from "@/pages/UserProfile.vue"; +import TableList from "@/pages/TableList.vue"; +import Typography from "@/pages/Typography.vue"; +import Icons from "@/pages/Icons.vue"; +import Maps from "@/pages/Maps.vue"; +import Notifications from "@/pages/Notifications.vue"; +import UpgradeToPRO from "@/pages/UpgradeToPRO.vue"; + +const routes = [ + { + path: "/", + component: DashboardLayout, + redirect: "/dashboard", + children: [ + { + path: "dashboard", + name: "Dashboard", + component: Dashboard, + }, + { + path: "user", + name: "User Profile", + component: UserProfile, + }, + { + path: "table", + name: "Table List", + component: TableList, + }, + { + path: "typography", + name: "Typography", + component: Typography, + }, + { + path: "icons", + name: "Icons", + component: Icons, + }, + { + path: "maps", + name: "Maps", + meta: { + hideFooter: true, + }, + component: Maps, + }, + { + path: "notifications", + name: "Notifications", + component: Notifications, + }, + { + path: "upgrade", + name: "Upgrade to PRO", + component: UpgradeToPRO, + }, + ], + }, +]; + +export default routes;