update adjustments and ui (#384)

* update

* update

* testit

* Revert "testit"

This reverts commit b1cc645161.

* update schema

* update

* add adjustment to serverinfo

* remove Adjustbool

* remove v4l2only

* fix json check for create effect

* update deb

* update

* update remote adjust

* update

* add eff schemas
This commit is contained in:
brindosch 2017-02-08 14:36:28 +01:00 committed by GitHub
parent d94529a800
commit 41671ad82c
80 changed files with 2341 additions and 1156 deletions

View File

@ -0,0 +1,34 @@
<div class="container-fluid">
<h3 class="page-header"><i class="fa fa-info-circle fa-fw"></i><span data-i18n="main_menu_about_token">About Hyperion</span></h3>
<div class="row">
<div class="col-lg-6">
<div id="about_cont"></div>
</div>
</div>
</div>
<script type="text/javascript">
performTranslation();
var si = serverInfo.info.hyperion[0];
var libs = {"Bootstrap 3" : "http://getbootstrap.com/", "JQuery" : "https://jquery.com/", "Bootstrap Colorpicker" : "https://itsjavi.com/bootstrap-colorpicker/", "JSON-Editor" : "http://jeremydorn.com/json-editor/", "jQuery.i18n" : "https://github.com/wikimedia/jquery.i18n", "metisMenu" : "http://mm.onokumus.com/index.html", "download.js" : "http://danml.com/download.html", "gijgo" : "http://gijgo.com/"};
var libh = "";
var lang = [];
for(var i = 0; i<availLang.length; i++)
lang.push($.i18n('general_speech_'+availLang[i]));
for(key in libs)
libh += '<a href="'+libs[key]+'" target="_blank">'+key+'</a>, ';
libh += "<br/>"+$.i18n("about_credits");
lang = lang.toString().replace(",",", ");
var fc = [$.i18n("about_version"),$.i18n("about_build"),$.i18n("about_builddate"),$.i18n("about_translations"),$.i18n("about_resources", $.i18n("general_webui_title"))];
var sc = [currentVersion,si.build,si.time,'('+availLang.length+')<p>'+lang+'</p><p><a href="#" target="_blank">'+$.i18n("about_contribute")+'</a></p>',libh];
createTable("","atb","about_cont");
for(var i = 0; i<fc.length; i++)
$('.atb').append(createTableRow([fc[i],sc[i]], "atb", false, true));
</script>

View File

@ -1,16 +0,0 @@
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h2 class="page-header"><i class="fa fa-photo fa-fw"></i><span data-i18n="main_menu_colors_conf_token">Image Processing</span></h2>
<div class="introd">
<h4 data-i18n="conf_colors_label_intro">Color calibration, smoothing (color transistions) and detection of blackbars.</h4>
<hr />
</div>
<div id="conf_cont"></div>
</div>
</div>
</div>
<script src="/js/content_colors.js"></script>

View File

@ -0,0 +1,12 @@
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h3 class="page-header"><i class="fa fa-photo fa-fw"></i><span data-i18n="main_menu_colors_conf_token">Image Processing</span></h3>
<div id="conf_cont"></div>
</div>
</div>
</div>
<script src="/js/content_colors.js"></script>

View File

@ -0,0 +1,10 @@
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h3 class="page-header"><i class="fa fa-spinner fa-fw"></i><span data-i18n="main_menu_effect_conf_token">Effects</span></h3>
<div id="conf_cont"></div>
</div>
</div>
</div>
<script src="/js/content_effects.js"></script>

View File

@ -0,0 +1,26 @@
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h3 class="page-header"><i class="fa fa-wrench fa-fw"></i><span data-i18n="conf_general_label_title">General</span></h3>
<div class="row" id="conf_cont"></div>
<div class="row">
<div class="col-lg-6" id="conf_imp">
<div class="panel panel-default">
<div class="panel-heading"><i class="fa fa-wrench fa-fw"></i><span data-i18n="conf_general_impexp_title"></span></div>
<div class="panel-body">
<p data-i18n="conf_general_impexp_l1" style="font-weight:bold"></p>
<p data-i18n="conf_general_impexp_l2" style="font-weight:bold"></p>
<input type="file" id="select_import_conf" accept=".json">
</div>
<div class="panel-footer" style="text-align:right">
<button type="file" class="btn btn-primary" id="btn_import_conf" data-i18n="conf_general_impexp_impbtn" disabled>Import</button>
<button class="btn btn-primary" id="btn_export_conf" data-i18n="conf_general_impexp_expbtn">Export</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<script src="/js/content_general.js"></script>

View File

@ -0,0 +1,12 @@
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h3 class="page-header"><i class="fa fa-camera fa-fw"></i><span data-i18n="main_menu_grabber_conf_token">Capturing Hardware</span></h3>
<div id="conf_cont"></div>
</div>
</div>
</div>
<script src="/js/content_grabber.js"></script>

View File

@ -1,11 +1,7 @@
<div class="container-fluid"> <div class="container-fluid">
<div class="row"> <div class="row">
<div class="col-lg-12"> <div class="col-lg-12">
<h2 class="page-header"><i class="fa fa-play-circle-o fa-fw"></i><span data-i18n="conf_kodi_label_title">Kodi Watch</span></h2> <h3 class="page-header"><i class="fa fa-play-circle-o fa-fw"></i><span data-i18n="conf_kodi_label_title">Kodi Watch</span></h3>
<div class="introd">
<h4 data-i18n="conf_kodi_label_intro">The Kodi Watcher enables you to enable and disable the screencapture depending on Kodi state. This is not limited to the same machine, you could observe also a Kodi on any other device at your network.</h4>
<hr />
</div>
<div class="alert alert-info" role="alert"> <div class="alert alert-info" role="alert">
<strong>HINT 1:</strong> In any case you need to enable the remote control for Kodi. Please checkout Wiki for instructions. LINK<br> <strong>HINT 1:</strong> In any case you need to enable the remote control for Kodi. Please checkout Wiki for instructions. LINK<br>
<strong>HINT 2:</strong> If you just use a USB-Grabber you could enable the Kodi Watch for this separately at the USB-Grabber page. <strong>HINT 2:</strong> If you just use a USB-Grabber you could enable the Kodi Watch for this separately at the USB-Grabber page.

View File

@ -1,29 +1,5 @@
<div class="modal fade bs-pair-modal-lg" id="pairmodal" tabindex="-1" role="dialog" aria-labelledby="mySmallModalLabel">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title">Hue Bridge</h4>
</div>
<div class="modal-body">
<span data-i18n="hue_press_link_modal">Please press link button on the Hue Bridge.</span> <br /><br />
<center>
<span id="connectionTime"></span><br />
<img src="/img/hyperion/ring-alt.svg" />
<center>
</div>
<div class="modal-footer" />
</div>
</div>
</div>
<div class="container-fluid"> <div class="container-fluid">
<h2 class="page-header"><i class="fa fa-lightbulb-o fa-fw"></i><span data-i18n="main_menu_leds_conf_token">LED Hardware</span></h2> <h3 class="page-header"><i class="fa fa-lightbulb-o fa-fw"></i><span data-i18n="main_menu_leds_conf_token">LED Hardware</span></h3>
<div class="introd">
<h4 data-i18n="conf_leds_label_intro">The LED controller of youre choice is your way to output the led data via Raspberry PI GPIO, USB or network! Choose one, define your led layout and enjoy the light!</h4>
<hr />
</div>
<ul id="leds_cfg_nav" class="nav nav-tabs"> <ul id="leds_cfg_nav" class="nav nav-tabs">
<li class="active"><a data-toggle="tab" href="#menu_controller" data-i18n="conf_leds_nav_label_ledcontroller">LED Controller</a></li> <li class="active"><a data-toggle="tab" href="#menu_controller" data-i18n="conf_leds_nav_label_ledcontroller">LED Controller</a></li>
<li><a data-toggle="tab" href="#menu_gencfg" data-i18n="conf_leds_nav_label_ledlayout">LED Layout</a></li> <li><a data-toggle="tab" href="#menu_gencfg" data-i18n="conf_leds_nav_label_ledlayout">LED Layout</a></li>
@ -33,42 +9,19 @@
<div id="menu_controller" class="tab-pane fade in active" style="padding-top:10px"> <div id="menu_controller" class="tab-pane fade in active" style="padding-top:10px">
<div class="row"> <div class="row">
<div class="col-lg-8"> <div class="col-lg-12" id="leddevice_intro"></div>
<div class="panel panel-primary"> <div class="col-lg-6">
<div class="panel-heading form-group" style="font-size:90%;white-space:nowrap;"> <div class="panel panel-default">
<label for="leddevices" data-i18n="conf_leds_contr_label_contrtype">Controller type:</label> <div class="panel-heading form-group">
<label for="leddevices" class="panel-title" data-i18n="conf_leds_contr_label_contrtype">Controller type:</label>
<select id="leddevices" class="form-control" style="color:black;width:auto;margin-left:10px;display:inline-block" /> <select id="leddevices" class="form-control" style="color:black;width:auto;margin-left:10px;display:inline-block" />
</div> </div>
<div class="panel-body"> <div class="panel-body">
<div id="ledDeviceOptions"> <div id='editor_container'></div> </div> <div id="ledDeviceOptions"> <div id='editor_container'></div> </div>
<div id="huebridge" class="container-fluid" style="display:none">
<hr/>
<button data-toggle="collapse" class="btn btn-success" data-target="#huebridge_content" data-i18n="hue_btn_setup_helper">Hue Bridge Setup Helper</button>
<div id="huebridge_content" class="collapse">
<div class="introd" style="margin-top:20px;margin-bottom:20px" data-i18n="hue_help_text">
With this Setup Helper you can get a new User for your Hue Bridge and you can see your Lights with the IDs for Hyperion Configuration.
If you already have a working User you will see it below. But you can always create a new one as well.
<b>Remember:</b> This is only a helper. You have to copy and paste them in your config above.
</div>
<div class="col-lg-12">
<span id="ip_alert" style="display:none; color:red; font-weight: bold;" data-i18n="hue_failure_ip_token">Please check your IP Address.</span>
<span id="abortConnection" style="display:none; color:red; font-weight: bold;" data-i18n="hue_failure_connection_token">Connection Timeout. Please press the button in time.</span><br />
<div class="form-group">
<label for="ip" data-i18n="hue_label_ip">Hue Bridge IP:</label>
<input type="text" class="form-control" id="ip">
<label for="user" data-i18n="hue_label_username">Hue Bridge Username:</label>
<input type="text" class="form-control" id="user" readonly="readonly">
<div id="hue_lights" class="row"></div>
<button type="button" class="btn btn-success" id="create_user"> <i class="fa fa-floppy-o"></i><span data-i18n="hue_button_create_user_token"> Create User</span></button>
</div>
</div>
</div>
</div>
</div> </div>
<div class="panel-footer" style="text-align:right"> <div class="panel-footer" style="text-align:right">
<button id='btn_submit_controller' class="btn btn-success"><i class="fa fa-fw fa-save" /><span data-i18n="general_button_savesettings">Save Settings</span></button> <button id='btn_submit_controller' class="btn btn-primary"><i class="fa fa-fw fa-save" /><span data-i18n="general_button_savesettings">Save Settings</span></button>
</div> </div>
</div> </div>
</div> </div>
@ -78,6 +31,7 @@
<div id="menu_gencfg" class="tab-pane fade" style="padding-top:10px"> <div id="menu_gencfg" class="tab-pane fade" style="padding-top:10px">
<div class="row"> <div class="row">
<div class="col-lg-12" id="layout_intro"></div>
<div class="col-lg-6 col-md-12"> <div class="col-lg-6 col-md-12">
<div class="panel-group" id="accordion"> <div class="panel-group" id="accordion">
<div class="panel panel-primary"> <div class="panel panel-primary">
@ -176,40 +130,50 @@
<tbody> <tbody>
<tr> <tr>
<td class="ltd"> <td class="ltd">
<label class="ltdlabel" for="ip_cl_rawledshdepth" data-i18n="conf_leds_layout_cl_hleddepth">Horizontal LED depth</label> <label class="ltdlabel" for="ip_cl_ledshdepth" data-i18n="conf_leds_layout_cl_hleddepth">Horizontal LED depth</label>
</td> </td>
<td class="itd input-group"> <td class="itd input-group">
<input class="form-control ledCLconstr led_val_int" id="ip_cl_rawledshdepth" type="number" value="8" min="1" max="100" step="1"></input> <input class="form-control ledCLconstr led_val_int" id="ip_cl_ledshdepth" type="number" value="8" min="1" max="100" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_percent">%</div> <div class="input-group-addon" data-i18n="edt_append_percent">%</div>
</td> </td>
</tr> </tr>
<tr> <tr>
<td class="ltd"> <td class="ltd">
<label class="ltdlabel" for="ip_cl_rawledsvdepth" data-i18n="conf_leds_layout_cl_vleddepth">Vertical LED depth</label> <label class="ltdlabel" for="ip_cl_ledsvdepth" data-i18n="conf_leds_layout_cl_vleddepth">Vertical LED depth</label>
</td> </td>
<td class="itd input-group"> <td class="itd input-group">
<input class="form-control ledCLconstr led_val_int" id="ip_cl_rawledsvdepth" type="number" value="5" min="1" max="100" step="1"></input> <input class="form-control ledCLconstr led_val_int" id="ip_cl_ledsvdepth" type="number" value="5" min="1" max="100" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_percent">%</div> <div class="input-group-addon" data-i18n="edt_append_percent">%</div>
</td> </td>
</tr> </tr>
<tr> <tr>
<td class="ltd"> <td class="ltd">
<label class="ltdlabel" for="ip_cl_rawledsedgegap" data-i18n="conf_leds_layout_cl_edgegap">Edge Gap</label> <label class="ltdlabel" for="ip_cl_overlap" data-i18n="conf_leds_layout_cl_overlap">Edge Gap</label>
</td> </td>
<td class="itd input-group"> <td class="itd input-group">
<input class="form-control ledCLconstr led_val_int" id="ip_cl_rawledsedgegap" type="number" value="0" min="0" max="50" step="1"></input> <input class="form-control ledCLconstr led_val_int" id="ip_cl_overlap" type="number" value="0" min="0" max="100" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_percent">%</div> <div class="input-group-addon" data-i18n="edt_append_percent">%</div>
</td> </td>
</tr> </tr>
<tr> <tr>
<td class="ltd"> <td class="ltd">
<label class="ltdlabel" for="ip_cl_rawledscornergap" data-i18n="conf_leds_layout_cl_cornergap">Corner Gap</label> <label class="ltdlabel" for="ip_cl_ledsedgegap" data-i18n="conf_leds_layout_cl_edgegap">Edge Gap</label>
</td> </td>
<td class="itd input-group"> <td class="itd input-group">
<input class="form-control ledCLconstr led_val_int" id="ip_cl_rawledscornergap" type="number" value="0" min="0" max="50" step="1"></input> <input class="form-control ledCLconstr led_val_int" id="ip_cl_ledsedgegap" type="number" value="0" min="0" max="50" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_percent">%</div> <div class="input-group-addon" data-i18n="edt_append_percent">%</div>
</td> </td>
</tr> </tr>
<!-- <tr>
<td class="ltd">
<label class="ltdlabel" for="ip_cl_ledscornergap" data-i18n="conf_leds_layout_cl_cornergap">Corner Gap</label>
</td>
<td class="itd input-group">
<input class="form-control ledCLconstr led_val_int" id="ip_cl_ledscornergap" type="number" value="0" min="0" max="50" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_percent">%</div>
</td>
</tr>
-->
</tbody> </tbody>
</table> </table>
</div> </div>
@ -218,7 +182,7 @@
</div> </div>
<div class="panel-footer" style="text-align:right;"> <div class="panel-footer" style="text-align:right;">
<button id="btn_cl_generate" class="btn btn-warning"><i class="fa fa-fw fa-television"></i><span data-i18n="conf_leds_layout_cl_generate">Generate LED configuration</span></button> <button id="btn_cl_generate" class="btn btn-warning"><i class="fa fa-fw fa-television"></i><span data-i18n="conf_leds_layout_cl_generate">Generate LED configuration</span></button>
<button id="btn_cl_save" class="btn btn-success"><i class="fa fa-fw fa-save"></i><span data-i18n="conf_leds_layout_button_savelay">Save layout</span></button> <button id="btn_cl_save" class="btn btn-primary"><i class="fa fa-fw fa-save"></i><span data-i18n="conf_leds_layout_button_savelay">Save layout</span></button>
</div> </div>
</div> </div>
</div> </div>
@ -291,7 +255,7 @@
</div> </div>
<div class="panel-footer" style="text-align:right;"> <div class="panel-footer" style="text-align:right;">
<button id="btn_ma_generate" class="btn btn-warning"><i class="fa fa-fw fa-th"></i><span data-i18n="conf_leds_layout_cl_generate">Generate LED configuration</span></button> <button id="btn_ma_generate" class="btn btn-warning"><i class="fa fa-fw fa-th"></i><span data-i18n="conf_leds_layout_cl_generate">Generate LED configuration</span></button>
<button id="btn_ma_save" class="btn btn-success"><i class="fa fa-fw fa-save"></i><span data-i18n="conf_leds_layout_button_savelay">Save layout</span></button> <button id="btn_ma_save" class="btn btn-primary"><i class="fa fa-fw fa-save"></i><span data-i18n="conf_leds_layout_button_savelay">Save layout</span></button>
</div> </div>
</div> </div>
</div> </div>
@ -304,31 +268,32 @@
<div id="collapse4" class="panel-collapse collapse"> <div id="collapse4" class="panel-collapse collapse">
<div class="panel-body"> <div class="panel-body">
<p data-i18n="conf_leds_layout_textf1">This textfield shows by default your current loaded layout and will be overwritten if you generate a new one above. Optional you could perform further edits.</p> <p data-i18n="conf_leds_layout_textf1">This textfield shows by default your current loaded layout and will be overwritten if you generate a new one above. Optional you could perform further edits.</p>
<b><p data-i18n="conf_leds_layout_textf2">Don't forget to save!</p></b>
<textarea rows="25" id="ledconfig" class="form-control"></textarea> <textarea rows="25" id="ledconfig" class="form-control"></textarea>
</div> </div>
<div class="panel-footer"> <div class="panel-footer">
<button type="button" class="btn btn-warning" id="leds_custom_updsim"><i class="fa fa-search fa-fw"></i><span data-i18n="conf_leds_layout_button_updsim">Update preview</span></button> <button type="button" class="btn btn-warning" id="leds_custom_updsim"><i class="fa fa-search fa-fw"></i><span data-i18n="conf_leds_layout_button_updsim">Update preview</span></button>
<button type="button" class="btn btn-success pull-right" id="leds_custom_save"><i class="fa fa-fw fa-save"></i><span data-i18n="conf_leds_layout_button_savelay">Save layout</span></button> <button type="button" class="btn btn-primary pull-right" id="leds_custom_save"><i class="fa fa-fw fa-save"></i><span data-i18n="conf_leds_layout_button_savelay">Save layout</span></button>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> <!-- accordion --> </div> <!-- accordion -->
<div class="col-lg-6 col-md-12"> <div class="col-lg-6 col-md-12">
<div class="panel panel-primary"> <div class="panel panel-default">
<div class="panel-heading"> <div class="panel-heading">
<h4 class="panel-title"><i class="fa fa-search fa-fw"></i><span data-i18n="conf_leds_layout_peview">LED Layout preview</span></h4> <h4 class="panel-title"><i class="fa fa-search fa-fw"></i><span data-i18n="conf_leds_layout_peview">LED Layout preview</span></h4>
</div> </div>
<div class="panel-body"> <div class="panel-body">
<p id="previewcreator" style="font-weight:bold"></p> <p id="previewcreator" style="font-weight:bold"></p>
<p id="previewledcount" style="font-weight:bold"></p> <p id="previewledcount" style="font-weight:bold"></p>
<div id="led_vis_help"></div>
<div class="col-lg-12 st_helper" style="padding-left:0px; padding-right:0px"> <div class="col-lg-12 st_helper" style="padding-left:0px; padding-right:0px">
<div id="leds_preview"></div> <div id="leds_preview"></div>
</div> </div>
</div> </div>
<div class="panel-footer"> <div class="panel-footer">
<button type="button" class="btn btn-danger" id="leds_prev_toggle_num"><i class="fa fa-info fa-fw"></i><span data-i18n="main_ledsim_btn_togglelednumber">toggle led numbers</span></button> <button type="button" class="btn btn-danger" id="leds_prev_toggle_num"><i class="fa fa-info fa-fw"></i><span data-i18n="main_ledsim_btn_togglelednumber">toggle led numbers</span></button>
<button type="button" class="btn btn-primary" id="leds_prev_checklist"><i class="fa fa-info-circle fa-fw"></i><span data-i18n="conf_leds_layout_btn_checklist">toggle led numbers</span></button>
</div> </div>
</div> </div>
</div> </div>
@ -342,4 +307,3 @@
</div> </div>
<script src="/js/content_leds.js"></script> <script src="/js/content_leds.js"></script>
<script src="/js/content_huebridge.js"></script>

View File

@ -0,0 +1,13 @@
<div class="container-fluid" id="trans_conf_logging">
<div class="row">
<div class="col-lg-12">
<h3 class="page-header"><i class="fa fa-reorder fa-fw"></i><span data-i18n="main_menu_logging_token">Log</span></h3>
<div id="log_head"></div>
<div class="row" id='conf_cont'></div>
<hr />
<div id="log_content"><span style="font-weight:bold;font-size:17px" data-i18n="conf_logging_nomessage"></span></div>
</div>
</div>
</div>
<script src="/js/content_logging.js"></script>

View File

@ -1,11 +1,7 @@
<div class="container-fluid"> <div class="container-fluid">
<div class="row"> <div class="row">
<div class="col-lg-12"> <div class="col-lg-12">
<h2 class="page-header"><i class="fa fa-sitemap fa-fw"></i><span data-i18n="main_menu_network_conf_token">Network Services</span></h2> <h3 class="page-header"><i class="fa fa-sitemap fa-fw"></i><span data-i18n="main_menu_network_conf_token">Network Services</span></h3>
<div class="introd">
<h4 data-i18n="conf_network_label_intro">All network based settings are listed here.</h4>
<hr />
</div>
<div id="conf_cont"></div> <div id="conf_cont"></div>
</div> </div>
</div> </div>

View File

@ -0,0 +1,10 @@
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h3 class="page-header"><i class="fa fa-wrench fa-fw"></i><span data-i18n="main_menu_webconfig_token">Webinterface</span></h3>
<div class="row" id="conf_cont"></div>
</div>
</div>
</div>
<script src="/js/content_webconfig.js"></script>

View File

@ -1,11 +1,8 @@
<div class="container-fluid" id="content_dashboard"> <div class="container-fluid">
<div class="row"> <div class="row">
<div class="col-lg-12"> <div class="col-lg-12">
<h2 class="page-header"><i class="fa fa-dashboard fa-fw"></i><span data-i18n="main_menu_dashboard_token">Dashboard</span></h2> <h3 class="page-header"><i class="fa fa-dashboard fa-fw"></i><span data-i18n="main_menu_dashboard_token">Dashboard</span></h3>
<div class="introd"> <div id="dash_intro">
<h4 data-i18n="dashboard_label_intro">The dashboard give you a quick overview about the status of Hyperion and show you the latest news of the Hyperion Blog.</h4>
<hr />
</div>
<div class="row"> <div class="row">
<div class="col-md-6 col-xxl-4"> <div class="col-md-6 col-xxl-4">
<div class="panel panel-default"> <div class="panel panel-default">
@ -17,7 +14,7 @@
<table class="table borderless"> <table class="table borderless">
<tbody> <tbody>
<tr> <tr>
<td data-i18n="dashboard_infobox_label_currenthyp">Your Hyperion version:</td> <td data-i18n="dashboard_infobox_label_currenthyp">Hyperion version:</td>
<td id="currentversion">unknown</td> <td id="currentversion">unknown</td>
</tr> </tr>
<tr> <tr>
@ -25,7 +22,7 @@
<td id="latestversion">unknown</td> <td id="latestversion">unknown</td>
</tr> </tr>
<tr> <tr>
<td data-i18n="dashboard_infobox_label_leddevice">LED type:</td> <td data-i18n="conf_leds_contr_label_contrtype">LED type:</td>
<td id="dash_leddevice">unknown</td> <td id="dash_leddevice">unknown</td>
</tr> </tr>
<tr> <tr>
@ -78,6 +75,4 @@
</div> </div>
<!-- /.container-fluid --> <!-- /.container-fluid -->
<script type="text/javascript"> <script src="/js/content_dashboard.js"></script>
performTranslation('content_dashboard');
</script>

View File

@ -1,14 +0,0 @@
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h2 class="page-header"><i class="fa fa-spinner fa-fw"></i><span data-i18n="main_menu_effect_conf_token">Effects</span></h2>
<div class="introd">
<h4 data-i18n="conf_effects_label_intro">Setting up a booteffect/color that is visible after Hyperion startup. Configure a background effect/color which is active, when all capture sources are disabled (also temporarily via Kodi Watch)</h4>
<hr />
</div>
<div id="conf_cont"></div>
</div>
</div>
</div>
<script src="/js/content_effects.js"></script>

View File

@ -1,10 +1,8 @@
<div class="container-fluid"> <div class="container-fluid">
<div class="row"> <div class="row">
<div class="col-lg-12"> <div class="col-lg-12">
<h2 class="page-header"><i class="fa fa-cogs fa-fw"></i><span data-i18n="main_menu_effectsconfigurator_token">Effects Configurator</span></h2> <h3 class="page-header"><i class="fa fa-cogs fa-fw"></i><span data-i18n="main_menu_effectsconfigurator_token">Effects Configurator</span></h3>
<div class="introd"> <div id="intro_effc">
<h4 data-i18n="effectsconfigurator_label_intro">Create out of the base effects new effects that are tuned to your liking. Depending on Effect there are options like color, speed, direction and more available.</h4>
<hr />
</div> </div>
<div class="row"> <div class="row">
<div class="col-lg-6"> <div class="col-lg-6">
@ -28,7 +26,7 @@
<button class="btn btn-warning" id='btn_start_test' data-i18n="effectsconfigurator_button_starttest">Start Effecttest</button> <button class="btn btn-warning" id='btn_start_test' data-i18n="effectsconfigurator_button_starttest">Start Effecttest</button>
<button class="btn btn-warning" id='btn_stop_test' data-i18n="effectsconfigurator_button_stoptest">Stop Effecttest</button> <button class="btn btn-warning" id='btn_stop_test' data-i18n="effectsconfigurator_button_stoptest">Stop Effecttest</button>
<button class="btn btn-danger" id='btn_cont_test' data-i18n="effectsconfigurator_button_conttest">Toggle continuous testing</button> <button class="btn btn-danger" id='btn_cont_test' data-i18n="effectsconfigurator_button_conttest">Toggle continuous testing</button>
<button class="btn btn-primary pull-right" id='btn_write' data-i18n="effectsconfigurator_button_saveeffect">Save Effect</button> <button class="btn btn-primary" id='btn_write' data-i18n="effectsconfigurator_button_saveeffect">Save Effect</button>
</div> </div>
</div> </div>
</div> </div>
@ -37,7 +35,7 @@
<div class="panel-heading"> <div class="panel-heading">
<label for="effectsdellist" data-i18n="effectsconfigurator_label_deleffect">Delete Effect:</label> <label for="effectsdellist" data-i18n="effectsconfigurator_label_deleffect">Delete Effect:</label>
<select id="effectsdellist" class="form-control" style="color:black;width:auto;margin-left:10px;display:inline-block" /> <select id="effectsdellist" class="form-control" style="color:black;width:auto;margin-left:10px;display:inline-block" />
<button class="btn btn-primary pull-right" id='btn_delete' data-i18n="effectsconfigurator_button_deleffect">Delete Effect</button> <button class="btn btn-primary" id='btn_delete' data-i18n="effectsconfigurator_button_deleffect">Delete Effect</button>
</div> </div>
</div> </div>
</div> </div>

View File

@ -1,30 +0,0 @@
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h2 class="page-header"><i class="fa fa-wrench fa-fw"></i><span data-i18n="conf_general_label_title">General</span></h2>
<div class="introd">
<h4 data-i18n="conf_general_label_intro"></h4>
</div>
<hr />
<div class="row" id="conf_cont"></div>
<div class="row">
<div class="col-lg-6" id="conf_imp">
<div class="panel panel-default">
<div class="panel-heading"><i class="fa fa-wrench fa-fw"></i><span data-i18n="conf_general_impexp_title"></span></div>
<div class="panel-body">
<p data-i18n="conf_general_impexp_l1" style="font-weight:bold"></p>
<p data-i18n="conf_general_impexp_l2" style="font-weight:bold"></p>
<input type="file" id="select_import_conf" accept=".json">
</div>
<div class="panel-footer" style="text-align:right">
<button type="file" class="btn btn-primary" id="btn_import_conf" data-i18n="conf_general_impexp_impbtn" disabled>Import</button>
<button class="btn btn-primary" id="btn_export_conf" data-i18n="conf_general_impexp_expbtn">Export</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<script src="/js/content_general.js"></script>

View File

@ -1,16 +0,0 @@
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h2 class="page-header"><i class="fa fa-camera fa-fw"></i><span data-i18n="main_menu_grabber_conf_token">Capturing Hardware</span></h2>
<div class="introd">
<h4 data-i18n="conf_grabber_label_intro">Hyperion supports two ways on how to get captured pictures for processing and output. The platform grabber which captures internal at the device you are running Hyperion on (best qualitiy) and the USB Grabber which gathers from a connected device the necessary pictures (more calibration work and configuration).</h4>
<hr />
</div>
<div id="conf_cont"></div>
</div>
</div>
</div>
<script src="/js/content_grabber.js"></script>

View File

@ -1,20 +0,0 @@
<div class="container-fluid" id="trans_conf_logging">
<div class="row">
<div class="col-lg-12">
<h2 class="page-header"><i class="fa fa-reorder fa-fw"></i><span data-i18n="main_menu_logging_token">Log</span></h2>
<div class="introd">
<h4 data-i18n="conf_logging_label_intro">Area to check log messages, depending on loglevel setting you see more or less.</h4>
<hr />
</div>
<div class="row" id='conf_cont'></div>
<hr />
<pre>
<div id="logmessages" style="overflow:scroll;max-height:400px" />
</pre>
<button class="btn btn-primary" id='btn_pbupload' data-i18n="conf_logging_btn_pbupload">Pastebin upload</button>
<button class="btn btn-success" id='btn_autoscroll' data-i18n="conf_logging_btn_autoscroll">Auto scrolling</button>
</div>
</div>
</div>
<script src="/js/content_logging.js"></script>

View File

@ -1,39 +1,19 @@
<div class="container-fluid"> <div class="container-fluid">
<h2 class="page-header"><i class="fa fa-wifi fa-fw"></i><span data-i18n="main_menu_remotecontrol_token">Remote Control</span></h2> <h3 class="page-header"><i class="fa fa-wifi fa-fw"></i><span data-i18n="main_menu_remotecontrol_token">Remote Control</span></h3>
<div class="introd">
<h4 data-i18n="remote_label_intro">Set an effect/color. You could also select a source manually. The Components control give the opportunity to enable/disable components of Hyprion during runtime. All changes you made here are lost after a restart.</h4>
<hr />
</div>
</div> </div>
<div class="container-fluid"> <div class="container-fluid">
<div class="row"> <div class="row">
<div class="col-lg-12">
<div class="panel panel-primary" >
<div class="panel-heading" data-i18n="remote_colors_label_coloreffect">Colors/Effects</div>
<div class="panel-body">
<span data-i18n="remote_colors_label_color" style="display:inline-block">Color:</span>
<div id="cp2" class="colorpicker-component" style="width:auto;display:inline-block;white-space:nowrap;">
<input type="text" value="#00AABB" class="form-control" style="display:inline" /><span class="input-group-addon form-control" style="display:inline-block;width:auto;"><i></i></span>
</div>
<div data-i18n="remote_effects_label_effects" style="display:inline-block;margin-left:50px;">Effect:</div>
<select id="effect_select" class="form-control" style="width:auto;display:inline-block"></select>
<button data-i18n="remote_colors_button_reset" type="button" class="btn btn-warning" id="reset_color" style="margin-left:20px;width:auto;display:inline-block">Reset Color/Effect</button>
</div> </div>
</div>
</div>
</div>
</div> </div>
<div class="container-fluid"> <div class="container-fluid">
<div class="row"> <div class="row">
<div class="col-lg-8 col-xxl-7"> <div class="col-lg-8 col-xxl-7">
<div class="panel panel-primary" > <div class="panel panel-default" >
<div class="panel-heading" data-i18n="remote_input_label_sourceselection">Source selection</div> <div class="panel-heading"><i class="fa fa-wifi fa-fw"></i><span data-i18n="remote_input_label">Source selection</span></div>
<div class="panel-body"> <div class="panel-body">
<span data-i18n="remote_help_text">Hyperion uses a priority system to select a source. Everything you set has a priority (Effect/Color/Platform capture/USB capture and network sources). By default, Hyperion select sources depending on priority (lowest number reflects the current active source). Now you have the opportunity to select sources on your own.</span>
<div id="sstcont"></div> <div id="sstcont"></div>
<div id="auto_btn"></div> <div id="auto_btn"></div>
</div> </div>
@ -41,10 +21,10 @@
</div> </div>
<div class="col-lg-4 col-xxl-5"> <div class="col-lg-4 col-xxl-5">
<div class="panel panel-primary" > <div class="panel panel-default" >
<div class="panel-heading" data-i18n="remote_components_label_components">Components control</div> <div class="panel-heading"><i class="fa fa-wifi fa-fw"></i><span data-i18n="remote_components_label">Components control</span></div>
<div class="panel-body"> <div class="panel-body" id="comp_intro">
<div id="componentsbutton"><i style="font-size:120px;padding:20px;text-align:center;display: inline-block;width: 100%;line-height: normal;" class="fa fa-cog fa-spin"></i></div> <div id="componentsbutton"></div>
</div> </div>
</div> </div>
</div> </div>
@ -53,11 +33,41 @@
<div class="container-fluid"> <div class="container-fluid">
<div class="row"> <div class="row">
<div class="col-lg-6"> <div class="col-lg-6 col-xxl-4">
<div class="panel panel-primary" > <div class="panel panel-default" >
<div class="panel-heading" data-i18n="remote_maptype_label">Mapping types</div> <div class="panel-heading"><i class="fa fa-wifi fa-fw"></i><span data-i18n="remote_color_label">Colors/Effects</span></div>
<div class="panel-body"> <div class="panel-body" id="color_intro">
<div id="mappingsbutton"><i style="font-size:120px;padding:20px;text-align:center;display: inline-block;width: 100%;line-height: normal;" class="fa fa-cog fa-spin"></i></div> <table class="table borderless">
<tbody>
<tr>
<td style="vertical-align:middle"><label data-i18n="remote_color_label_color"></label></td>
<td><div id="cp2" class="colorpicker-component input-group">
<input type="text" class="form-control"/><span class="input-group-addon"><i></i></span>
</div>
</td>
</tr>
<tr>
<td style="vertical-align:middle"><label data-i18n="remote_effects_label_effects">Effect:</label></td>
<td><select id="effect_select" class="form-control"></select></td>
</tr>
</tbody>
</table>
<button data-i18n="remote_color_button_reset" type="button" class="btn btn-warning" id="reset_color" style="margin-top:10px;">Reset Color/Effect</button>
</div>
</div>
</div>
<div class="col-lg-6 col-xxl-3">
<div class="panel panel-default" >
<div class="panel-heading"><i class="fa fa-wifi fa-fw"></i><span data-i18n="remote_maptype_label">Mapping types</span></div>
<div class="panel-body" id="maptype_intro">
<div id="mappingsbutton"></div>
</div>
</div>
</div>
<div class="col-lg-6 col-xxl-5">
<div class="panel panel-default" >
<div class="panel-heading"><i class="fa fa-wifi fa-fw"></i><span data-i18n="remote_adjustment_label"></span></div>
<div class="panel-body" id="adjust_content">
</div> </div>
</div> </div>
</div> </div>

View File

@ -1,12 +1,9 @@
<div class="container-fluid"> <div class="container-fluid">
<div class="row"> <div class="row">
<div class="col-xs-12"> <div class="col-xs-12">
<h2 class="page-header"><i class="fa fa-info fa-fw"></i><span data-i18n="support_label_title">Support Hyperion</span></h2> <h3 class="page-header"><i class="fa fa-info fa-fw"></i><span data-i18n="support_label_title">Support Hyperion</span></h3>
<div class="introd"> <div id="supp_intro"></div>
<h4 data-i18n="support_label_intro">Hyperion is a free non-profit software. A small team is working on it and this is why we need your steady support.</h4> <h4 style="font-weight: bold" data-i18n="support_label_spreadtheword">Spread the word</h4>
<hr />
</div>
<h3 style="font-weight: bold" data-i18n="support_label_spreadtheword">Spread the word</h3>
<a href="#" target="_blank" class="unlink"> <a href="#" target="_blank" class="unlink">
<div class="col-xs-12 col-sm-6 col-lg-3 support-container"> <div class="col-xs-12 col-sm-6 col-lg-3 support-container">
<i class="fa fa-facebook bg-color-fb"></i> <i class="fa fa-facebook bg-color-fb"></i>
@ -38,7 +35,7 @@
</div> </div>
<div class="col-xs-12"> <div class="col-xs-12">
<hr> <hr>
<h3 style="font-weight: bold" data-i18n="support_label_donate">Donate or use our affiliate links</h3> <h4 style="font-weight: bold" data-i18n="support_label_donate">Donate or use our affiliate links</h4>
<ol> <ol>
<li data-i18n="support_label_affinstr1">Click on the appropriate link of your country</li> <li data-i18n="support_label_affinstr1">Click on the appropriate link of your country</li>
<li data-i18n="support_label_affinstr2">Everything you buy (doesnt matter what) we get a small fee based on your turnover</li> <li data-i18n="support_label_affinstr2">Everything you buy (doesnt matter what) we get a small fee based on your turnover</li>
@ -86,7 +83,7 @@
</div> </div>
<div class="col-xs-12"> <div class="col-xs-12">
<hr> <hr>
<h3 style="font-weight: bold" data-i18n="support_label_webrestitle">Information and help ressources</h3> <h4 style="font-weight: bold" data-i18n="support_label_webrestitle">Information and help ressources</h4>
<a href="https://www.hyperion-project.org?pk_campaign=WebUI&pk_kwd=support_webpage" target="_blank" class="unlink"> <a href="https://www.hyperion-project.org?pk_campaign=WebUI&pk_kwd=support_webpage" target="_blank" class="unlink">
<div class="col-xs-12 col-sm-6 col-lg-3 support-container"> <div class="col-xs-12 col-sm-6 col-lg-3 support-container">
<i class="fa fa-globe bg-color-wf"></i> <i class="fa fa-globe bg-color-wf"></i>
@ -108,10 +105,20 @@
<p data-i18n="support_label_forumtext">Showcases, discussions, help and more</p> <p data-i18n="support_label_forumtext">Showcases, discussions, help and more</p>
</div> </div>
</a> </a>
<a href="https://github.com/hyperion-project" target="_blank" class="unlink">
<div class="col-xs-12 col-sm-6 col-lg-3 support-container">
<i class="fa fa-github bg-color-wf"></i>
<h4>Github</h4>
<p data-i18n="support_label_ghtext">Visit our Github repository</p>
</div>
</a>
</div> </div>
</div> </div>
</div> </div>
<script type="text/javascript"> <script type="text/javascript">
performTranslation('trans_support'); performTranslation();
if(showOptHelp)
createHintH("intro", $.i18n('support_label_intro'), "supp_intro");
</script> </script>

View File

@ -1,7 +1,7 @@
<div class="container-fluid"> <div class="container-fluid">
<div class="row"> <div class="row">
<div class="col-lg-12"> <div class="col-lg-12">
<h2 class="page-header"><i class="fa fa-download fa-fw"></i><span data-i18n="main_menu_update_token">Update</span></h2> <h3 class="page-header"><i class="fa fa-download fa-fw"></i><span data-i18n="main_menu_update_token">Update</span></h3>
<div class="introd"> <div class="introd">
<h4 data-i18n="update_label_intro">Overview about all available Hyperion versions. On top you could update or downgrade your version of Hyperion whenever you want. Sorted from newest to oldest</h4> <h4 data-i18n="update_label_intro">Overview about all available Hyperion versions. On top you could update or downgrade your version of Hyperion whenever you want. Sorted from newest to oldest</h4>
<hr /> <hr />

View File

@ -1,14 +0,0 @@
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h2 class="page-header"><i class="fa fa-wrench fa-fw"></i><span data-i18n="main_menu_webconfig_token">Webinterface</span></h2>
<div class="introd">
<h4 data-i18n="conf_webconfig_label_intro">Webinterface settings. Edit wisely</h4>
<hr />
</div>
<div class="row" id="conf_cont"></div>
</div>
</div>
</div>
<script src="/js/content_webconfig.js"></script>

View File

@ -4,11 +4,43 @@
src: url("../fonts/Roboto-Regular.woff") format('woff'), src: url("../fonts/Roboto-Regular.woff") format('woff'),
url("../fonts/Roboto-Regular.ttf") format('ttf'); url("../fonts/Roboto-Regular.ttf") format('ttf');
} }
body{font-family:Roboto,"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:15px;} body{font-family:Roboto,"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:15px;max-width:2000px;margin: 0 auto;}
.form-group{margin-bottom:11px;} .form-group{margin-bottom:11px;}
#page-content { #page-content {
padding-bottom:50px; padding-bottom:50px;
} }
.btn{margin: 2px 0;}
/*mobile nav*/
@media (max-width: 768px){
.navbar-toggle{position:fixed;right:0px;}
#main-nav{position:fixed;right:-200px;}
}
.navbar-toggle .icon-bar {
background-color:#4c4c4c !important;
width: 22px;
transition: all 0.2s;
}
.navbar-toggle .top-bar {
transform: rotate(45deg);
transform-origin: 10% 10%;
}
.navbar-toggle .middle-bar {
opacity: 0;
}
.navbar-toggle .bottom-bar {
transform: rotate(-45deg);
transform-origin: 10% 90%;
}
.navbar-toggle.closed .top-bar {
transform: rotate(0);
}
.navbar-toggle.closed .middle-bar {
opacity: 1;
}
.navbar-toggle.closed .bottom-bar {
transform: rotate(0);
}
/*editor changes*/ /*editor changes*/
[id^=editor_container] h3{margin-top:10px;} [id^=editor_container] h3{margin-top:10px;}
@ -17,39 +49,62 @@ body{font-family:Roboto,"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:15
.ltd{width:auto;text-align:left;white-space:nowrap;vertical-align:middle !important;padding:6px !important;} .ltd{width:auto;text-align:left;white-space:nowrap;vertical-align:middle !important;padding:6px !important;}
.itd{width:100%;padding:6px !important;} .itd{width:100%;padding:6px !important;}
table.input-group{width:100%} table.input-group{width:100%}
.borderless {margin-bottom:0px}
@media (max-width: 767px) {.ltd{white-space:normal;}} @media (max-width: 767px) {.ltd{white-space:normal;}}
/*icon spacing*/ /*icon spacing*/
.fa-fw{margin-right:5px;} .fa-fw{margin-right:5px;}
/*borderless table*/
/*table*/
table.borderless td,table.borderless th{border: none !important;} table.borderless td,table.borderless th{border: none !important;}
.borderless {margin-bottom:0px}
table label{margin:0}
/*Header*/ /*Header*/
.navbar-brand{padding: 5px;padding-left:20px;height:60px;} .navbar-brand{padding: 5px;padding-left:20px;height:60px;}
.sidebar{margin-top:62px;padding-top:20px;} .sidebar{margin-top:62px;padding-top:20px;}
.dropdown{font-size:18px;} .dropdown{font-size:18px;}
@media (max-width: 767px) {.sidebar{margin-top:0px;padding-top:0px !important;}} @media (max-width: 767px) {.sidebar{margin-top:0px;padding-top:0px !important;}}
@media (max-width: 1000px) {.introd{display:none}}
.page-header{margin-top:15px;} .page-header{margin-top:15px;}
/*Panels*/ /*Panels*/
.panel-heading{font-size:18px;} .panel-heading{font-size:18px;}
.headcollapse{cursor:pointer;} .headcollapse{cursor:pointer;}
.headcollapse a:hover{text-decoration:none;} .headcollapse a:hover{text-decoration:none;}
.panel-default{
background-color:#fff !important;
border-color:#d0d0d0 !important;
}
.panel-default>.panel-heading{
background-color:#f3f3f3 !important;
border-color:#ddd !important;
}
/*remote page*/ /*remote page*/
@media (max-width: 500px) {#ssthead th:nth-child(1), #sstbody td:nth-child(1){display:none}} @media (max-width: 500px) {.ssthead th:nth-child(1), .sstbody td:nth-child(1){display:none}}
/*Dashboard*/ /*Dashboard*/
.component-on{color:green;} .component-on{color:green;}
.component-off{color:grey;} .component-off{color:grey;}
/*Colorpicker 2x*/ /*Colorpicker 2x*/
.colorpicker-2x {z-index:99999}
.colorpicker-2x .colorpicker-saturation {width: 200px;height: 200px;} .colorpicker-2x .colorpicker-saturation {width: 200px;height: 200px;}
.colorpicker-2x .colorpicker-hue,.colorpicker-2x .colorpicker-alpha {width: 30px;height: 200px;} .colorpicker-2x .colorpicker-hue,.colorpicker-2x .colorpicker-alpha {width: 30px;height: 200px;}
.colorpicker-2x .colorpicker-color,.colorpicker-2x .colorpicker-color div {height: 30px;} .colorpicker-2x .colorpicker-color,.colorpicker-2x .colorpicker-color div {height: 30px;}
.colorpicker-2x .colorpicker-selectors i{height:20px;width:20px;}
/*Hint*/
.info-hint{
background-color:rgb(236,236,236);
border-radius:10px;
}
.intro-hint{
padding:8px 8px 8px 14px;
margin:0px 0px 15px 0px;
border-left:8px solid #0088cc;
border-top:1px solid #0088cc;
box-shadow: 1px 1px 1px 0px rgba(0,0,0,0.25);
font-size:97%;
}
/*Support page*/ /*Support page*/
.unlink,.unlink:hover{color:#333;text-decoration:none;} .unlink,.unlink:hover{color:#333;text-decoration:none;}
@ -66,7 +121,7 @@ table.borderless td,table.borderless th{border: none !important;}
.support-container:hover .bg-color-am{background-color:#ef9c00; color:white;} .support-container:hover .bg-color-am{background-color:#ef9c00; color:white;}
/*Config introduction*/ /*Config introduction*/
.introd h4{line-height:25px;padding-left:14px;border-left:5px solid #0088cc;} .introd h4{padding-left:14px;border-left:5px solid #0088cc;}
/*backported bootstrap 4 forms-label alignment*/ /*backported bootstrap 4 forms-label alignment*/
.col-form-label { .col-form-label {
@ -79,6 +134,11 @@ table.borderless td,table.borderless th{border: none !important;}
#leds_canvas {background-color:#AAAAAA; position:absolute; margin:15px; background-image:url(/img/hyperion/hyperionlogo.png); background-repeat:no-repeat; background-position: center;} #leds_canvas {background-color:#AAAAAA; position:absolute; margin:15px; background-image:url(/img/hyperion/hyperionlogo.png); background-repeat:no-repeat; background-position: center;}
.led { display:inline-block; border: 1px solid black; position:absolute; opacity:0.8; text-align:center; vertical-align:middle; padding:4px; border-radius:2px;} .led { display:inline-block; border: 1px solid black; position:absolute; opacity:0.8; text-align:center; vertical-align:middle; padding:4px; border-radius:2px;}
.led_num, .led_prev_num {display:none; position:relative; color:black; background-color: white; border-radius:2px; padding:1px; vertical-align:middle; text-align:center; font-size:0.8em;} .led_num, .led_prev_num {display:none; position:relative; color:black; background-color: white; border-radius:2px; padding:1px; vertical-align:middle; text-align:center; font-size:0.8em;}
.led_ex{height:15px;width:25px;border-radius:3px;display:inline-block;border:1px solid black}
/*checklists*/
.checklist{list-style-type:none;padding-left:0px}
.checklist li::before{content: "\f00c";font: normal normal normal 14px/1 FontAwesome;margin-right:5px;color:green;font-size:19px}
/*Modal icons*/ /*Modal icons*/
[class*="modal-icon"]{ [class*="modal-icon"]{
@ -110,6 +170,55 @@ table.borderless td,table.borderless th{border: none !important;}
z-index:99999; z-index:99999;
} }
/*simple ripple effect for li a and btn*/
.btn, li a{
position: relative;
overflow: hidden;
}
.btn:after {
content: "";
display: block;
position: absolute;
width: 100%;
height: 100%;
top: 0;
left: 0;
pointer-events: none;
background-image: radial-gradient(circle, #000 10%, transparent 10.01%);
background-repeat: no-repeat;
background-position: 50%;
transform: scale(10, 10);
opacity: 0;
transition: transform .5s, opacity 1s;
}
.btn:active:after {
transform: scale(0, 0);
opacity: .2;
transition: 0s;
}
li a:after {
content: "";
display: block;
position: absolute;
width: 100%;
height: 100%;
top: 0;
left: 0;
pointer-events: none;
background-image: radial-gradient(circle, #000 10%, transparent 10.01%);
background-repeat: no-repeat;
background-position: 50%;
transform: scale(10, 10);
opacity: 0;
transition: transform .5s, opacity 1s;
}
li a:active:after {
transform: scale(0, 0);
opacity: .2;
transition: 0s;
}
/**add a dditional width defintion for bootstrap**/ /**add a dditional width defintion for bootstrap**/
@media (min-width: 1500px) { @media (min-width: 1500px) {
.col-xxl-1, .col-xxl-2, .col-xxl-3, .col-xxl-4, .col-xxl-5, .col-xxl-6, .col-xxl-7, .col-xxl-8, .col-xxl-9, .col-xxl-10, .col-xxl-11, .col-xxl-12 { .col-xxl-1, .col-xxl-2, .col-xxl-3, .col-xxl-4, .col-xxl-5, .col-xxl-6, .col-xxl-7, .col-xxl-8, .col-xxl-9, .col-xxl-10, .col-xxl-11, .col-xxl-12 {

View File

@ -42,11 +42,12 @@
"general_btn_restarthyperion" : "Hyperion neustarten", "general_btn_restarthyperion" : "Hyperion neustarten",
"general_btn_off" : "Aus", "general_btn_off" : "Aus",
"general_btn_on" : "An", "general_btn_on" : "An",
"general_btn_next" : "Weiter",
"general_btn_back" : "Zurück",
"dashboard_label_intro" : "Das Dashboard zeigt dir Informationen zum Systemstatus, ob Updates verfügbar sind, den Komponentenstatus sowie die letzten Blog-Posts vom Hyperion Team.", "dashboard_label_intro" : "Das Dashboard zeigt dir Informationen zum Systemstatus, ob Updates verfügbar sind, den Komponentenstatus sowie die letzten Blog-Posts vom Hyperion Team.",
"dashboard_infobox_label_title" : "Information", "dashboard_infobox_label_title" : "Information",
"dashboard_infobox_label_currenthyp" : "Deine Hyperion Version:", "dashboard_infobox_label_currenthyp" : "Deine Hyperion Version:",
"dashboard_infobox_label_latesthyp" : "Aktuellste Hyperion Version:", "dashboard_infobox_label_latesthyp" : "Aktuellste Hyperion Version:",
"dashboard_infobox_label_leddevice" : "LED Typ:",
"dashboard_infobox_label_device" : "Systeminformation:", "dashboard_infobox_label_device" : "Systeminformation:",
"dashboard_infobox_message_updatewarning" : "Eine aktuellere Version von Hyperion ist verfügbar! (V$1)", "dashboard_infobox_message_updatewarning" : "Eine aktuellere Version von Hyperion ist verfügbar! (V$1)",
"dashboard_infobox_message_updatesuccess" : "Du nutzt die aktuellste Version von Hyperion.", "dashboard_infobox_message_updatesuccess" : "Du nutzt die aktuellste Version von Hyperion.",
@ -72,22 +73,26 @@
"main_menu_input_selection_token" : "Eingabeauswahl", "main_menu_input_selection_token" : "Eingabeauswahl",
"main_menu_logging_token" : "Protokoll", "main_menu_logging_token" : "Protokoll",
"main_menu_webconfig_token" : "Web Konfiguration", "main_menu_webconfig_token" : "Web Konfiguration",
"main_menu_about_token" : "Über Hyperion",
"main_ledsim_title" : "LED Visualisierung", "main_ledsim_title" : "LED Visualisierung",
"main_ledsim_text" : "Eine live Visualisierung deiner LED Farben, sofern verfügbar kann ein live Video dazugeschalten werden. (Achtung: Ressourcenhungrig)", "main_ledsim_text" : "Eine live Visualisierung deiner LED Farben, sofern verfügbar kann ein live Video dazugeschalten werden.",
"main_ledsim_btn_toggleleds" : "Zeige LEDs", "main_ledsim_btn_toggleleds" : "Zeige LEDs",
"main_ledsim_btn_togglelednumber" : "LED Nummern", "main_ledsim_btn_togglelednumber" : "LED Nummern",
"main_ledsim_btn_togglelivevideo" : "Live Video", "main_ledsim_btn_togglelivevideo" : "Live Video",
"conf_general_label_title" : "Allgemeine Einstellungen", "conf_general_label_title" : "Allgemeine Einstellungen",
"conf_general_label_intro" : "Grundsätzliche Einstellungen zu Hyperion oder WebUI, die in keine andere Kategorie passen.", "conf_general_intro" : "Grundsätzliche Einstellungen zu Hyperion oder WebUI, die in keine andere Kategorie passen.",
"conf_general_impexp_title" : "Importiere/Exportiere Konfiguration", "conf_general_impexp_title" : "Importiere/Exportiere Konfiguration",
"conf_general_impexp_l1" : "Importiere eine Konfiguration, indem du unten eine Datei auswählst und anschließend auf \"Importieren\" klickst.", "conf_general_impexp_l1" : "Importiere eine bestehende Konfiguration, indem du unten eine Datei auswählst und anschließend auf \"Importieren\" klickst.",
"conf_general_impexp_l2" : "Exportiere eine Konfiguration, indem du auf \"Exportieren\" klickst. Dein Browser startet einen Download.", "conf_general_impexp_l2" : "Exportiere eine Konfiguration, indem du auf \"Exportieren\" klickst. Dein Browser startet einen Download.",
"conf_general_impexp_impbtn" : "Importieren", "conf_general_impexp_impbtn" : "Importieren",
"conf_general_impexp_expbtn" : "Exportieren", "conf_general_impexp_expbtn" : "Exportieren",
"conf_helptable_option" : "Option", "conf_helptable_option" : "Option",
"conf_helptable_expl" : "Erklärung", "conf_helptable_expl" : "Erklärung",
"conf_effects_label_intro" : "Stelle einen Effekt oder Farbe ein, der beim Starten sichtbar sein soll. Stelle einen Hintergrundeffekt/Farbe ein der erst sichtbar wird, wenn alle Bildquellen abgeschaltet sind (Das gilt ebenfalls für temporäres abschalten mithilfe der Kodi Überwachung).", "conf_effect_path_intro" : "Definiere weitere Effekt-Pfade, wenn nötig.",
"conf_leds_label_intro" : "Der LED Hardware Bereich ermöglicht eine Vielzahl von Ausgabemöglichkeiten über Raspberry Pi GPIO, USB oder Netzwerk. Erstelle ein LED Layout das zu deinem Aufbau passt und schon kann es losgehen!", "conf_effect_fgeff_intro" : "Definiere einen Start Effekt/Farbe, dieser wird angezeigt, wenn Hyperion startet für die angegebene Dauer.",
"conf_effect_bgeff_intro" : "Definiere einen Hintergrund Effekt/Farbe, dieser wird aktiv, wenn Hyperion sich im Leerlauf befindet. (Das gilt ebenfalls für temporäres abschalten mithilfe der Kodi Überwachung).",
"conf_leds_device_intro" : "Wähle eine Methode zur Steuerung deiner LEDs aus, sie sind unterteilt in verschiedene Kategorien. Neben den allgemeinen Optionen die für alle gültig sind, gibt es auch spezfische die sich unterscheiden je nach Wahl.",
"conf_leds_layout_intro" : "Du benötigst ebenfalls ein LED Layout, welches deine LED-Positionen wiederspiegelt. Das klassische Layout wird für gewöhnlichen für TVs verwendet, Hyperion unterstützt aber auch LED Wände (Matrix). Die Ansicht des LAYOUTS ist die perspektive VOR dem Fernseher, nicht dahinter.",
"conf_leds_nav_label_ledcontroller" : "LED Steuerung", "conf_leds_nav_label_ledcontroller" : "LED Steuerung",
"conf_leds_nav_label_ledlayout" : "LED Layout", "conf_leds_nav_label_ledlayout" : "LED Layout",
"conf_leds_contr_label_contrtype" : "Steuerungstyp:", "conf_leds_contr_label_contrtype" : "Steuerungstyp:",
@ -97,6 +102,11 @@
"conf_leds_optgroup_network" : "Netzwerk", "conf_leds_optgroup_network" : "Netzwerk",
"conf_leds_optgroup_usb" : "USB", "conf_leds_optgroup_usb" : "USB",
"conf_leds_optgroup_debug" : "Debug", "conf_leds_optgroup_debug" : "Debug",
"conf_leds_layout_btn_checklist" : "Zeige Checkliste",
"conf_leds_leyout_checkp1" : "Die schwarze eingefärbte LED ist die erste LED. Das ist der Punkt, an dem die Daten eingespeist werden.",
"conf_leds_leyout_checkp2" : "Das Layout ist die Ansicht vor dem Fernseher stehend, nicht dahinter.",
"conf_leds_leyout_checkp3" : "Stelle sicher, dass die Richtung richtig eingestellt ist, dazu ist die zweite und dritte LED grau markiert um den Datenfluss anzuzeigen.",
"conf_leds_leyout_checkp4" : "Vorgang Lücke: Solltest du eine Lücke benötigen, ignoriere diese bei der LED Angabe Oben/Unten/Rechts/Links und gebe anschließend unter Lückenlänge an, wieviel LEDs du abziehen möchtest. Verändere jetzt die Lückenposition, um die Lücke an die richtige Stelle zu rücken.",
"conf_leds_layout_frame" : "Klassisches Layout (Rahmen)", "conf_leds_layout_frame" : "Klassisches Layout (Rahmen)",
"conf_leds_layout_matrix" : "Matrix Layout (LED Wand)", "conf_leds_layout_matrix" : "Matrix Layout (LED Wand)",
"conf_leds_layout_generatedconf" : "Generierte/Aktuelle LED Konfiguration", "conf_leds_layout_generatedconf" : "Generierte/Aktuelle LED Konfiguration",
@ -108,6 +118,8 @@
"conf_leds_layout_preview_originTEXT" : "Erstellt von: Textfeld", "conf_leds_layout_preview_originTEXT" : "Erstellt von: Textfeld",
"conf_leds_layout_preview_originMA" : "Erstellt von: Matrix Layout (LED Wand)", "conf_leds_layout_preview_originMA" : "Erstellt von: Matrix Layout (LED Wand)",
"conf_leds_layout_preview_totalleds" : "LEDs gesamt: $1", "conf_leds_layout_preview_totalleds" : "LEDs gesamt: $1",
"conf_leds_layout_preview_l1" : "Das ist die erste LED (Einspeisung)",
"conf_leds_layout_preview_l2" : "Das visualisiert die Richtung des Datenstroms (zweite/dritte LED)",
"conf_leds_layout_cl_top" : "Oben", "conf_leds_layout_cl_top" : "Oben",
"conf_leds_layout_cl_bottom" : "Unten", "conf_leds_layout_cl_bottom" : "Unten",
"conf_leds_layout_cl_left" : "Links", "conf_leds_layout_cl_left" : "Links",
@ -121,6 +133,7 @@
"conf_leds_layout_cl_generate" : "Generiere LED Konfiguration", "conf_leds_layout_cl_generate" : "Generiere LED Konfiguration",
"conf_leds_layout_cl_edgegap" : "Rahmenabstand", "conf_leds_layout_cl_edgegap" : "Rahmenabstand",
"conf_leds_layout_cl_cornergap" : "Eckabstand", "conf_leds_layout_cl_cornergap" : "Eckabstand",
"conf_leds_layout_cl_overlap" : "Überlappung",
"conf_leds_layout_ma_horiz" : "Horizontal", "conf_leds_layout_ma_horiz" : "Horizontal",
"conf_leds_layout_ma_vert" : "Vertikal", "conf_leds_layout_ma_vert" : "Vertikal",
"conf_leds_layout_ma_cabling" : "Verkabelung", "conf_leds_layout_ma_cabling" : "Verkabelung",
@ -135,22 +148,33 @@
"conf_leds_layout_ma_optbottomleft" : "Unten links", "conf_leds_layout_ma_optbottomleft" : "Unten links",
"conf_leds_layout_ma_optbottomright" : "Unten rechts", "conf_leds_layout_ma_optbottomright" : "Unten rechts",
"conf_leds_layout_textf1" : "Das Textfeld zeigt dir dein aktuell geladenes Layout, sofern du kein neues Layout mit den Optionen unten erstellt hast. Optional kann man die Werte hier weiter bearbeiten.", "conf_leds_layout_textf1" : "Das Textfeld zeigt dir dein aktuell geladenes Layout, sofern du kein neues Layout mit den Optionen unten erstellt hast. Optional kann man die Werte hier weiter bearbeiten.",
"conf_leds_layout_textf2" : "Vergiss nicht zu speichern!", "conf_grabber_fg_intro" : "Plattform Aufnahme ist das lokale System auf dem Hyperion installiert wurde, welches als Bildquelle dient.",
"conf_grabber_label_intro" : "Hyperion unterstützt 2 Hauptarten wie Bilder aufgenommen werden können. Zum Einen die Plattform Aufnahme, die sich direkt am System bedient auf dem Hyperion läuft (beste Qualität). Zum Anderen die USB Aufnahme, die sich an einem angeschlossenen Gerät bedient die benötigten Informationen für die Verarbeitung und Ausgabe zu erhalten (Mehr Konfigurationsaufwand und Kalibrierung)", "conf_grabber_v4l_intro" : "USB Aufnahme ist ein Gerät, welches via USB angeschlossen ist und als Bildquelle dient.",
"conf_colors_label_intro" : "Neben der Farbkalibrierung, gehört auch die Glättung (sanfte Farbübergänge) und die Erkennung von störenden (schwarzen) Balken zur Bildverarbeitung.", "conf_colors_color_intro" : "Erstelle Kalibrierungsprofile und passe Farben an, Helligkeit, Linearisierung und mehr.",
"conf_network_label_intro" : "Alle Einstellungen zu Ports, der Weiterleitung von JSON/PROTO und Boblight sowie UDP Listener.", "conf_colors_smoothing_intro" : "Glätte den Farbverlauf und Helligkeitsänderungen um nicht von schnellen Übergängen abgelenkt zu werden.",
"conf_colors_blackborder_intro" : "Ignoriere schwarze Balken, jeder Modus nutzt einen anderen Algorithmus um diese zu erkennen. Erhöhe die Schwelle, sollte es nicht funktionieren.",
"conf_network_json_intro" : "Der JSON-RPC-Port dieser Hyperion-Instanz, wird genutzt zur Fernsteuerung.",
"conf_network_proto_intro" : "Der PROTO-Port dieser Hyperion-Instanz, wird genutzt für \"Bildstreams\" (HyperionScreenCap, Kodi Adddon, ...)",
"conf_network_bobl_intro" : "Boblight Empfänger",
"conf_network_udpl_intro" : "UDP Empfänger",
"conf_network_forw_intro" : "Leite alles an eine zweite Hyperion Instanz weiter, diese kann dann mit einer anderen LED Steuerung genutzt werden",
"conf_kodi_label_title" : "Kodi Überwachung", "conf_kodi_label_title" : "Kodi Überwachung",
"conf_kodi_label_intro" : "Die Kodi Überwachung ermöglicht es dir abhängig von dem Kodi Status dein ambient light an oder abzuschalten. Dies ist nicht limitiert auf das selbe Gerät. Du kannst jedes Kodi in deinem lokalen Netzwerk überwachen lassen.", "conf_kodi_intro" : "Die Kodi Überwachung ermöglicht es dir abhängig vom Kodi Status dein ambient light an oder abzuschalten. Dies ist nicht limitiert auf das selbe Gerät. Du kannst jedes Kodi in deinem lokalen Netzwerk überwachen lassen.",
"conf_logging_label_intro" : "Überprüfe die Meldungen im Prokotoll um zu erfahren was Hyperion gerade beschäftigt. Je nach eingestellter Protokoll-Stufe siehst du mehr oder weniger Informationen.", "conf_logging_label_intro" : "Überprüfe die Meldungen im Prokotoll um zu erfahren was Hyperion gerade beschäftigt. Je nach eingestellter Protokoll-Stufe siehst du mehr oder weniger Informationen.",
"conf_logging_btn_pbupload" : "Protokoll hochladen", "conf_logging_btn_pbupload" : "Protokoll hochladen",
"conf_logging_btn_autoscroll" : "Automatisch scrollen", "conf_logging_btn_autoscroll" : "Automatisch scrollen",
"conf_logging_nomessage" : "Keine Einträge vorhanden.",
"conf_webconfig_label_intro" : "Einstellungen zur Webkonfiguration. Änderungen können die Erreichbarkeit des Webinterfaces beeinflussen.", "conf_webconfig_label_intro" : "Einstellungen zur Webkonfiguration. Änderungen können die Erreichbarkeit des Webinterfaces beeinflussen.",
"remote_label_intro" : "Die Fernbedienung ermöglicht dir während Hyperion läuft Farbe/Effekte zu starten/setzen, aber auch eine Quelle manuell festzulegen. Die Komponentensteuerung ermöglicht es dir gezielt Teile von Hyperion zu aktivieren/deaktivieren. Beachte, dass nach einem Neustart die hier durchgeführten Aktionen wieder zurückgesetzt werden.", "remote_losthint" : "Notiz: Alle Änderungen gehen nach einem Neustart verloren.",
"remote_colors_label_coloreffect" : "Farbe/Effekt:", "remote_color_label" : "Farbe/Effekt",
"remote_colors_button_reset" : "Farbe/Effekt zurücksetzen", "remote_color_intro" : "Setze einen Effekt oder eine Farbe. Auch deine selbst erstellten Effekte sind gelistet (sofern verfügbar). $1",
"remote_colors_label_color" : "Farbe:", "remote_color_button_reset" : "Farbe/Effekt zurücksetzen",
"remote_color_label_color" : "Farbe:",
"remote_effects_label_effects" : "Effekt:", "remote_effects_label_effects" : "Effekt:",
"remote_input_label_sourceselection" : "Quellenauswahl", "remote_adjustment_label" : "Farbanpassung",
"remote_adjustment_intro" : "Verändere live Farbe/Helligkeit/Linearisierung. $1",
"remote_input_label" : "Quellenauswahl",
"remote_input_intro" : "Hyperion nutzt ein Prioritätensystem um die Quelle zu wählen. Alles was du setzte hat eine Prioität (Effekte/Farben/Plattform Aufnahme/USB Aufnahme und Netzwerkquellen). Standardmäßig nutzt Hyperion die Quelle mit der niedrigsten Prioität. Hier kannst du aktiv Einfluss darauf nehmen. $1",
"remote_input_label_autoselect" : "Automatische Auswahl", "remote_input_label_autoselect" : "Automatische Auswahl",
"remote_input_setsource_btn" : "Wähle Quelle", "remote_input_setsource_btn" : "Wähle Quelle",
"remote_input_sourceactiv_btn" : "Quelle aktiv", "remote_input_sourceactiv_btn" : "Quelle aktiv",
@ -160,22 +184,14 @@
"remote_input_status" : "Status/Aktion", "remote_input_status" : "Status/Aktion",
"remote_input_duration" : "Dauer:", "remote_input_duration" : "Dauer:",
"remote_input_ip" : "IP:", "remote_input_ip" : "IP:",
"remote_components_label_components" : "Komponentensteuerung", "remote_components_label" : "Komponentensteuerung",
"remote_components_intro" : "Starte und stoppe Komponenten von Hyperion. $1",
"remote_optgroup_usreffets" : "Benutzer Effekte", "remote_optgroup_usreffets" : "Benutzer Effekte",
"remote_optgroup_syseffets" : "Mitgelieferte Effekte", "remote_optgroup_syseffets" : "Mitgelieferte Effekte",
"remote_help_text" : "Hyperion nutzt ein Prioritätensystem um die Quelle zu wählen. Alles was du setzte hat eine Prioität (Effekte/Farben/Plattform Aufnahme/USB Aufnahme und Netzwerkquellen). Standardmäßig nutzt Hyperion die Quelle mit der niedrigsten Prioität. Hier kannst du direkt die Quelle auswählen.", "remote_maptype_label" : "LED-Bereich Zuordnung",
"remote_maptype_label" : "Farbzuordnung", "remote_maptype_intro" : "Wechsle zwischen verschiedenen Typen um die Auswirkungen besser vergleichen zu können. $1",
"remote_maptype_label_multicolor_mean" : "Mehrfarbig", "remote_maptype_label_multicolor_mean" : "Mehrfarbig",
"remote_maptype_label_unicolor_mean" : "Einfarbig", "remote_maptype_label_unicolor_mean" : "Einfarbig",
"hue_button_create_user_token" : "Benutzer anlegen",
"hue_press_link_modal" : "Bitte Link Taste auf der Hue Bridge drücken.",
"hue_failure_connection_token" : "Connection Timeout. Bitte drücke die Taste rechtzeitig.",
"hue_button_pair" : "Verbinden",
"hue_btn_setup_helper" : "Hue Bridge Einrichtungshilfe",
"hue_failure_ip_token" : "Bitte überprüfe deine IP Adresse.",
"hue_label_username" : "Benutzername:",
"hue_label_ip" : "Hue Bridge IP:",
"hue_help_text" : "Mit diesem Setupassistenten kannst du einen neuen User auf der Hue Bridge anlegen und deine LightIDs für die Hyperion Konfiguration herausfinden. Wenn du bereits einen eingetragenen User hast, siehst du diesen bereits untenstehend eingetragen. Du kannst allerdings jederzeit einen neuen Anlegen. Beachte: Dies ist nur ein Assistent. Du musst die Daten in die Konfiguration kopieren.",
"effectsconfigurator_label_intro" : "Erstelle auf Grundlage der Basiseffekte neue Effekt die nach deinen Wünschen angepasst sind. Je nach Effekt stehen Optionen wie Farbe, Geschwindigkeit, oder Richtung und vieles mehr zur Auswahl.", "effectsconfigurator_label_intro" : "Erstelle auf Grundlage der Basiseffekte neue Effekt die nach deinen Wünschen angepasst sind. Je nach Effekt stehen Optionen wie Farbe, Geschwindigkeit, oder Richtung und vieles mehr zur Auswahl.",
"effectsconfigurator_label_chooseeff" : "Basis-Effekt auswählen:", "effectsconfigurator_label_chooseeff" : "Basis-Effekt auswählen:",
"effectsconfigurator_button_saveeffect" : "Effekt speichern", "effectsconfigurator_button_saveeffect" : "Effekt speichern",
@ -205,12 +221,20 @@
"support_label_wikitext" : "Von A bis Z - Alles wissenwerte zu Hyperion", "support_label_wikitext" : "Von A bis Z - Alles wissenwerte zu Hyperion",
"support_label_forumtitle" : "Forum", "support_label_forumtitle" : "Forum",
"support_label_forumtext" : "Diskussion und Hilfestellung von der Community", "support_label_forumtext" : "Diskussion und Hilfestellung von der Community",
"support_label_ghtext" : "Besuche uns auf Github",
"update_label_intro" : "Diese Seite zeigt dir alle verfügbaren Versionen von Hyperion, du kannst nach Belieben eine aktuellere Version installieren oder eine Ältere. Die aktuellsten Versionen befinden sich immer oben.", "update_label_intro" : "Diese Seite zeigt dir alle verfügbaren Versionen von Hyperion, du kannst nach Belieben eine aktuellere Version installieren oder eine Ältere. Die aktuellsten Versionen befinden sich immer oben.",
"update_label_description" : "Beschreibung:", "update_label_description" : "Beschreibung:",
"update_button_install" : "Installieren", "update_button_install" : "Installieren",
"update_button_changelog" : "Zeige Änderungsprotokoll", "update_button_changelog" : "Zeige Änderungsprotokoll",
"update_label_type" : "Art:", "update_label_type" : "Art:",
"update_versreminder" : "Deine Version: $1", "update_versreminder" : "Deine Version: $1",
"about_version" : "Version",
"about_build" : "Build",
"about_builddate" : "Build Datum",
"about_translations" : "Übersetzungen",
"about_resources" : "$1 Bibliotheken",
"about_contribute" : "Übersetze Hyperion in weitere Sprachen!",
"about_credits" : "Einen Dank an alle Entwickler!",
"info_conlost_label_title" : "Verbindung zum Hyperion Service unterbrochen!", "info_conlost_label_title" : "Verbindung zum Hyperion Service unterbrochen!",
"info_conlost_label_reason" : "Mögliche Ursachen:", "info_conlost_label_reason" : "Mögliche Ursachen:",
"info_conlost_label_reason1" : "- Schlechte WLAN Verbindung", "info_conlost_label_reason1" : "- Schlechte WLAN Verbindung",
@ -226,15 +250,10 @@
"infoDialog_general_success_title" : "Erfolg", "infoDialog_general_success_title" : "Erfolg",
"infoDialog_general_error_title" : "Fehler", "infoDialog_general_error_title" : "Fehler",
"infoDialog_general_warning_title" : "Warnung", "infoDialog_general_warning_title" : "Warnung",
"infoDialog_leds_gap_title" : "Lücke verloren!", "infoDialog_checklist_title" : "Checkliste!",
"infoDialog_leds_gap_text" : "Deine LED Lücke/Position ist größer als die Anzahl der LEDs, verringere die Lückenposition und/oder Lückenlänge!",
"InfoDialog_leds_validfail_title" : "JSON Überprüfung fehlgeschlagen!", "InfoDialog_leds_validfail_title" : "JSON Überprüfung fehlgeschlagen!",
"infoDialog_effconf_deleted_title" : "Effekt entfernt!",
"infoDialog_effconf_deleted_text" : "Der Effekt \"$1\" wurde erfolgreich entfernt!", "infoDialog_effconf_deleted_text" : "Der Effekt \"$1\" wurde erfolgreich entfernt!",
"infoDialog_effconf_created_title" : "Effekt erstellt!",
"infoDialog_effconf_created_text" : "Der Effekt \"$1\" wurde erfolgreich erstellt!", "infoDialog_effconf_created_text" : "Der Effekt \"$1\" wurde erfolgreich erstellt!",
"infoDialog_effconf_invalidvalue_title" : "Fehlerhafter Wert!",
"infoDialog_effconf_invalidvalue_text" : "Es wurde ein unzulässiger Wert eingetragen, überprüfe das rot markierte Feld und versuche es erneut!",
"InfoDialog_lang_title" : "Spracheinstellung", "InfoDialog_lang_title" : "Spracheinstellung",
"InfoDialog_lang_text" : "Sollte dir die Vorauswahl der automatischen Spracherkennung nicht gefallen, kannst du die Sprache hier manuell festlegen.", "InfoDialog_lang_text" : "Sollte dir die Vorauswahl der automatischen Spracherkennung nicht gefallen, kannst du die Sprache hier manuell festlegen.",
"InfoDialog_access_title" : "Einstellungsstufe", "InfoDialog_access_title" : "Einstellungsstufe",
@ -258,6 +277,37 @@
"wiz_rgb_q" : "Welche Farbe zeigen deine LEDs, wenn der Farbpunkt oben...", "wiz_rgb_q" : "Welche Farbe zeigen deine LEDs, wenn der Farbpunkt oben...",
"wiz_rgb_qrend" : "...rot ist?", "wiz_rgb_qrend" : "...rot ist?",
"wiz_rgb_qgend" : "...grün ist?", "wiz_rgb_qgend" : "...grün ist?",
"wiz_hue_title" : "Hue Bridge Assistent",
"wiz_hue_intro1" : "Mit diesem Setupassistenten kannst du einen neuen User auf der Hue Bridge anlegen und deine LightIDs für die Hyperion Konfiguration herausfinden.",
"wiz_hue_intro2" : "Beachte: Dies ist nur ein Assistent. Du musst die Daten in die Konfiguration kopieren.",
"wiz_hue_ip" : "Hue Bridge IP:",
"wiz_hue_username" : "Benutzername:",
"wiz_hue_create_user" : "Benutzer anlegen",
"wiz_hue_failure_ip" : "Bitte überprüfe deine IP Adresse.",
"wiz_hue_failure_connection" : "Connection Timeout. Bitte drücke die Taste rechtzeitig.",
"wiz_hue_press_link" : "Bitte Link Taste auf der Hue Bridge drücken.",
"wiz_cc_title" : "Farbkalibrierungs Assistent",
"wiz_cc_intro1" : "Der Assistent wird dich durch die Kalibrierung deiner LEDs leiten. Sofern du Kodi nutzt, können die Bilder und Testvideos direkt an Kodi geschickt werden. Andernfalls musst du das Material selbst herunterladen und anwenden.",
"wiz_cc_kwebs" : "Kodi Webserver (IP:Port)",
"wiz_cc_kodidiscon" : "Kodi Webserver nicht gefunden, fahre ohne Kodi-Unterstützung fort.",
"wiz_cc_kodidisconlink" : "Download Link Bilder:",
"wiz_cc_kodicon" : "Kodi Webserver gefunden, fahre mit Kodi-Unterstützung fort.",
"wiz_cc_kodimsg_start" : "Test bestanden - Zeit zu beginnen",
"wiz_cc_kodishould" : "Kodi sollte jetzt folgendes Bild anzeigen: $1",
"wiz_cc_lettvshow" : "Lass dabei deinen Fernseher folgendes Bild anzeigen: $1",
"wiz_cc_lettvshowm" : "Überprüfe dies mithilfe folgender Bildern: $1",
"wiz_cc_adjustit" : "Verändere dein \"$1\", bis du zufrieden bist.",
"wiz_cc_adjustgamma" : "Gamma: Was du jetzt tun musst ist, jeden Gamma-Kanal so einstellen, dass der \"Grauverlauf\" auf den LEDs nicht grünlich/rötlich/bläulich aussieht. Beispiel: Sollte dein grau etwas rötlich sein bedeutet dies, dass du dein Gamma für Rot erhöhen musst um den Rot-Anteil zu verringern (Je mehr Gamma, desto weniger Farbe).",
"wiz_cc_chooseid" : "Wähle einen Namen für dieses Profil.",
"wiz_cc_btn_switchpic" : "Testbild ändern",
"wiz_cc_minBright" : "Zusätzlich kannst du eine minimale Helligkeit einstellen, um \"irritierende Farben\" bei fast schwarzem Bild zu vermeiden oder du den Wechsel zwischen Farbe und Aus als zu anstrengend empfindest. Diese ist deaktiviert im Zustand \"Aus\" sowie bei Farben und Effekten.",
"wiz_cc_testintro" : "Nun ist es an der Zeit für einen Testlauf.",
"wiz_cc_testintrok" : "Klicke auf einen Button, um eines der Testvideos abzuspielen.",
"wiz_cc_testintrowok" : "Unter folgendem Link findest du ein paar Testvideos zum herunterladen und abspielen:",
"wiz_cc_link" : "Klick mich",
"wiz_cc_morethanone" : "Du hast mehr als 1 Profil, bitte wähle das zu kalibrierende Profil",
"wiz_cc_btn_stop" : "Stoppe Video",
"wiz_cc_summary" : "Im folgenden eine Zusammenfassung deiner Einstellungen. Während du ein Video abspielst, kannst du hier weiter ausprobieren. Wenn du fertig bist, klicke auf speichern.",
"edt_dev_enum_subtract_minimum" : "Subtrahiere minimum", "edt_dev_enum_subtract_minimum" : "Subtrahiere minimum",
"edt_dev_enum_sub_min_warm_adjust" : "Minimale Anpassung: warm", "edt_dev_enum_sub_min_warm_adjust" : "Minimale Anpassung: warm",
"edt_dev_enum_white_off" : "Weiß ist aus", "edt_dev_enum_white_off" : "Weiß ist aus",
@ -342,12 +392,10 @@
"edt_conf_gen_showOptHelp_expl" : "Zeige alle verfügbaren Options-Erklärungen. Empfohlen für Anfänger", "edt_conf_gen_showOptHelp_expl" : "Zeige alle verfügbaren Options-Erklärungen. Empfohlen für Anfänger",
"edt_conf_color_heading_title" : "Farbkalibrierung", "edt_conf_color_heading_title" : "Farbkalibrierung",
"edt_conf_color_channelAdjustment_header_title" : "Anpassung Farbkanäle", "edt_conf_color_channelAdjustment_header_title" : "Anpassung Farbkanäle",
"edt_conf_color_channelAdjustment_header_itemtitle" : "Profil",
"edt_conf_color_channelAdjustment_header_expl" : "Passe die Farbkanäle deinen LEDs an", "edt_conf_color_channelAdjustment_header_expl" : "Passe die Farbkanäle deinen LEDs an",
"edt_conf_color_imageToLedMappingType_title" : "LED-Bereich Zuordnungstyp", "edt_conf_color_imageToLedMappingType_title" : "LED-Bereich Zuordnungstyp",
"edt_conf_color_imageToLedMappingType_expl" : "Sofern nicht \"Mehrfarbig\", wird dein LED Layout mit einer anderen Bildzuweisung überschrieben", "edt_conf_color_imageToLedMappingType_expl" : "Sofern nicht \"Mehrfarbig\", wird dein LED Layout mit einer anderen Bildzuweisung überschrieben",
"edt_conf_color_channelAdjustment_enable_title" : "Aktiviere Farbkanalanpassung",
"edt_conf_color_channelAdjustment_enable_expl" : "Aktiviere die Farbkanalanpassung",
"edt_conf_color_channelAdjustment_v4l_only_title" : "Nur für USB Aufnahme",
"edt_conf_color_id_title" : "ID", "edt_conf_color_id_title" : "ID",
"edt_conf_color_id_expl" : "Eine vom Benutzer frei angegebene ID.", "edt_conf_color_id_expl" : "Eine vom Benutzer frei angegebene ID.",
"edt_conf_color_leds_title" : "LED index", "edt_conf_color_leds_title" : "LED index",
@ -368,14 +416,14 @@
"edt_conf_color_magenta_expl" : "Kalibrierter Magentawert.", "edt_conf_color_magenta_expl" : "Kalibrierter Magentawert.",
"edt_conf_color_yellow_title" : "Gelb", "edt_conf_color_yellow_title" : "Gelb",
"edt_conf_color_yellow_expl" : "Kalibrierter Gelbwert.", "edt_conf_color_yellow_expl" : "Kalibrierter Gelbwert.",
"edt_conf_color_gamma_red_title" : "Gamma rot", "edt_conf_color_gammaRed_title" : "Gamma rot",
"edt_conf_color_gamma_red_expl" : "Gamma von rot.", "edt_conf_color_gammaRed_expl" : "Gamma von rot.",
"edt_conf_color_gamma_green_title" : "Gamma grün", "edt_conf_color_gammaGreen_title" : "Gamma grün",
"edt_conf_color_gamma_green_expl" : "Gamma von grün.", "edt_conf_color_gammaGreen_expl" : "Gamma von grün.",
"edt_conf_color_gamma_blue_title" : "Gamma blau", "edt_conf_color_gammaBlue_title" : "Gamma blau",
"edt_conf_color_gamma_blue_expl" : "Gamma von blau", "edt_conf_color_gammaBlue_expl" : "Gamma von blau",
"edt_conf_color_brightness_min_title" : "Minimale Helligkeit", "edt_conf_color_brightnessMin_title" : "Minimale Helligkeit",
"edt_conf_color_brightness_min_expl" : "Auch als Hintergrundhelligkeit genutzt.", "edt_conf_color_brightnessMin_expl" : "Auch als Hintergrundhelligkeit genutzt.",
"edt_conf_color_brightness_title" : "Maximale Helligkeit", "edt_conf_color_brightness_title" : "Maximale Helligkeit",
"edt_conf_color_brightness_expl" : "Zwischen 0.0 und 0.5 ist die Helligkeit linearisiert. Von 0.5 bis 1.0 wird cyan, magenta und gelb bis zu 2x heller und weiß bis zu 3x.", "edt_conf_color_brightness_expl" : "Zwischen 0.0 und 0.5 ist die Helligkeit linearisiert. Von 0.5 bis 1.0 wird cyan, magenta und gelb bis zu 2x heller und weiß bis zu 3x.",
"edt_conf_smooth_heading_title" : "Glättung", "edt_conf_smooth_heading_title" : "Glättung",
@ -449,7 +497,7 @@
"edt_conf_kodic_kodiAddress_title" : "Kodi IP Adresse", "edt_conf_kodic_kodiAddress_title" : "Kodi IP Adresse",
"edt_conf_kodic_kodiAddress_expl" : "Die IP Adresse von Kodi.", "edt_conf_kodic_kodiAddress_expl" : "Die IP Adresse von Kodi.",
"edt_conf_kodic_kodiTcpPort_title" : "Kodi TCP Port", "edt_conf_kodic_kodiTcpPort_title" : "Kodi TCP Port",
"edt_conf_kodic_kodiTcpPort_expl" : "Der Kodi TCP Port.", "edt_conf_kodic_kodiTcpPort_expl" : "Der Kodi TCP Port. Nutze nicht den Webserver Port!",
"edt_conf_kodic_grabVideo_title" : "Video", "edt_conf_kodic_grabVideo_title" : "Video",
"edt_conf_kodic_grabVideo_expl" : "Wenn aktiviert, ist die Aufnahme aktiv während ein Video abgespielt werden.", "edt_conf_kodic_grabVideo_expl" : "Wenn aktiviert, ist die Aufnahme aktiv während ein Video abgespielt werden.",
"edt_conf_kodic_grabPictures_title" : "Bilder", "edt_conf_kodic_grabPictures_title" : "Bilder",
@ -486,8 +534,11 @@
"edt_conf_bobls_heading_title" : "Boblight Server", "edt_conf_bobls_heading_title" : "Boblight Server",
"edt_conf_udpl_heading_title" : "UDP Listener", "edt_conf_udpl_heading_title" : "UDP Listener",
"edt_conf_udpl_address_title" : "Adresse", "edt_conf_udpl_address_title" : "Adresse",
"edt_conf_udpl_address_expl" : "Die Adresse auf der UDP Pakete akzeptiert werden.",
"edt_conf_udpl_timeout_title" : "Zeitüberschreitung", "edt_conf_udpl_timeout_title" : "Zeitüberschreitung",
"edt_conf_udpl_timeout_expl" : "Wenn für die angegeben Zeit keine UDP Pakete empfangen werden, wird die Komponente (vorübergehend) deaktiviert",
"edt_conf_udpl_shared_title" : "Gemeinsam genutzt", "edt_conf_udpl_shared_title" : "Gemeinsam genutzt",
"edt_conf_udpl_shared_expl" : "Wird gemeinsam über alle Hyperion Instanzen genutzt.",
"edt_conf_webc_heading_title" : "Web Konfiguration", "edt_conf_webc_heading_title" : "Web Konfiguration",
"edt_conf_webc_docroot_title" : "Verzeichnis", "edt_conf_webc_docroot_title" : "Verzeichnis",
"edt_conf_webc_docroot_expl" : "Lokaler Pfad zum WebUI Wurzelverzeichnis (Nur für WebUI Entwickler)", "edt_conf_webc_docroot_expl" : "Lokaler Pfad zum WebUI Wurzelverzeichnis (Nur für WebUI Entwickler)",
@ -504,7 +555,9 @@
"edt_eff_fade_header_title" : "Farbübergang", "edt_eff_fade_header_title" : "Farbübergang",
"edt_eff_rainbowmood_header_title" : "Regenbogen", "edt_eff_rainbowmood_header_title" : "Regenbogen",
"edt_eff_knightrider_header_title" : "Knight Rider", "edt_eff_knightrider_header_title" : "Knight Rider",
"edt_eff_lightclock_header_title" : "Lichtuhr", "edt_eff_lightclock_header_title" : "Uhr 1",
"edt_eff_clock_header_title" : "Uhr 2",
"edt_eff_pacman_header_title" : "Pac-Man",
"edt_eff_moodblobs_header_title" : "Stimmungskugeln", "edt_eff_moodblobs_header_title" : "Stimmungskugeln",
"edt_eff_rainbowswirl_header_title" : "Regenbogenwirbel", "edt_eff_rainbowswirl_header_title" : "Regenbogenwirbel",
"edt_eff_random_header_title" : "Zufällig", "edt_eff_random_header_title" : "Zufällig",
@ -557,6 +610,13 @@
"edt_eff_min_len_title" : "Minimale Länge", "edt_eff_min_len_title" : "Minimale Länge",
"edt_eff_max_len_title" : "Maximale Länge", "edt_eff_max_len_title" : "Maximale Länge",
"edt_eff_height_title" : "Höhe", "edt_eff_height_title" : "Höhe",
"edt_eff_offset_title" : "Verschiebung",
"edt_eff_colorHour_title" : "Farbe Stunde",
"edt_eff_colorMinute_title" : "Farbe Minute",
"edt_eff_colorSecond_title" : "Farbe Sekunde",
"edt_eff_hourMargin_title" : "Abstand Stunde",
"edt_eff_minuteMargin_title" : "Abstand Minute",
"edt_eff_secondMargin_title" : "Abstand Sekunde",
"edt_append_ns" : "ns", "edt_append_ns" : "ns",
"edt_append_ms" : "ms", "edt_append_ms" : "ms",
"edt_append_s" : "s", "edt_append_s" : "s",

View File

@ -42,11 +42,12 @@
"general_btn_restarthyperion" : "Restart Hyperion", "general_btn_restarthyperion" : "Restart Hyperion",
"general_btn_off" : "Off", "general_btn_off" : "Off",
"general_btn_on" : "On", "general_btn_on" : "On",
"general_btn_next" : "Next",
"general_btn_back" : "Back",
"dashboard_label_intro" : "The dashboard give you a quick overview about the status of Hyperion and show you the latest news of the Hyperion Blog.", "dashboard_label_intro" : "The dashboard give you a quick overview about the status of Hyperion and show you the latest news of the Hyperion Blog.",
"dashboard_infobox_label_title" : "Information", "dashboard_infobox_label_title" : "Information",
"dashboard_infobox_label_currenthyp" : "Your Hyperion version:", "dashboard_infobox_label_currenthyp" : "Your Hyperion version:",
"dashboard_infobox_label_latesthyp" : "Latest Hyperion version:", "dashboard_infobox_label_latesthyp" : "Latest Hyperion version:",
"dashboard_infobox_label_leddevice" : "LED Controller:",
"dashboard_infobox_label_device" : "System:", "dashboard_infobox_label_device" : "System:",
"dashboard_infobox_message_updatewarning" : "A newer version of Hyperion is available! (V$1)", "dashboard_infobox_message_updatewarning" : "A newer version of Hyperion is available! (V$1)",
"dashboard_infobox_message_updatesuccess" : "You run the latest version of Hyperion.", "dashboard_infobox_message_updatesuccess" : "You run the latest version of Hyperion.",
@ -72,13 +73,14 @@
"main_menu_input_selection_token" : "Input Selection", "main_menu_input_selection_token" : "Input Selection",
"main_menu_logging_token" : "Log", "main_menu_logging_token" : "Log",
"main_menu_webconfig_token" : "Web configuration", "main_menu_webconfig_token" : "Web configuration",
"main_menu_about_token" : "About Hyperion",
"main_ledsim_title" : "LED Visualization", "main_ledsim_title" : "LED Visualization",
"main_ledsim_text" : "Live visualization of led colors and optional the current video stream of your capture device. (Warning: resource heavy)", "main_ledsim_text" : "Live visualization of led colors and optional the current video stream of your capture device.",
"main_ledsim_btn_toggleleds" : "Show LEDs", "main_ledsim_btn_toggleleds" : "Show LEDs",
"main_ledsim_btn_togglelednumber" : "LED numbers", "main_ledsim_btn_togglelednumber" : "LED numbers",
"main_ledsim_btn_togglelivevideo" : "Live video", "main_ledsim_btn_togglelivevideo" : "Live video",
"conf_general_label_title" : "General settings", "conf_general_label_title" : "General settings",
"conf_general_label_intro" : "Basic settings around Hyperion and WebUI that don't fit into another category.", "conf_general_intro" : "Basic settings around Hyperion and WebUI that don't fit into another category.",
"conf_general_impexp_title" : "Import/Export Configuration", "conf_general_impexp_title" : "Import/Export Configuration",
"conf_general_impexp_l1" : "Import a configuration by selecting a configuration file below and click on \"Import\".", "conf_general_impexp_l1" : "Import a configuration by selecting a configuration file below and click on \"Import\".",
"conf_general_impexp_l2" : "Export a configuration by clicking on \"Export\". Your browser starts a download.", "conf_general_impexp_l2" : "Export a configuration by clicking on \"Export\". Your browser starts a download.",
@ -86,8 +88,11 @@
"conf_general_impexp_expbtn" : "Export", "conf_general_impexp_expbtn" : "Export",
"conf_helptable_option" : "Option", "conf_helptable_option" : "Option",
"conf_helptable_expl" : "Explanation", "conf_helptable_expl" : "Explanation",
"conf_effects_label_intro" : "Setting up a booteffect/color that is visible after Hyperion startup. Configure a background effect/color which is active, when all capture sources are disabled (also temporarily via Kodi Watch)", "conf_effect_path_intro" : "Define more effect paths if necessary.",
"conf_leds_label_intro" : "The LED controller of youre choice is your way to output the led data via Raspberry PI GPIO, USB or network! Choose one, define your led layout and enjoy the light!", "conf_effect_fgeff_intro" : "Define a booteffect or color, which is shown during Hyperion startup for the defined duration.",
"conf_effect_bgeff_intro" : "Define a background effect, which us shown during \"idle\". (also temporarily via Kodi Watch)",
"conf_leds_device_intro" : "Hyperion supports a lot of controllers to transmit data to your target device. Select a LED controller out of the sorted list and configure it. We have chosen the best default settings for each device.",
"conf_leds_layout_intro" : "You need also a led layout, which reflects your led positions. The classic layout is the usual used tv frame, but we also support led matrix (led walls) creation. The view on this layout is ALWAYS of the FRONT of your TV.",
"conf_leds_nav_label_ledcontroller" : "LED Controller", "conf_leds_nav_label_ledcontroller" : "LED Controller",
"conf_leds_nav_label_ledlayout" : "LED Layout", "conf_leds_nav_label_ledlayout" : "LED Layout",
"conf_leds_contr_label_contrtype" : "Controller type:", "conf_leds_contr_label_contrtype" : "Controller type:",
@ -97,6 +102,11 @@
"conf_leds_optgroup_network" : "Network", "conf_leds_optgroup_network" : "Network",
"conf_leds_optgroup_usb" : "USB", "conf_leds_optgroup_usb" : "USB",
"conf_leds_optgroup_debug" : "Debug", "conf_leds_optgroup_debug" : "Debug",
"conf_leds_layout_btn_checklist" : "Show checklist",
"conf_leds_leyout_checkp1" : "The black led is your first led, the first led is the point where you input your data signal.",
"conf_leds_leyout_checkp2" : "The layout is always the front view of your TV, never the back view.",
"conf_leds_leyout_checkp3" : "Make sure the direction is right. The grey leds indicate led number 2 and 3 to visualize the data direction.",
"conf_leds_leyout_checkp4" : "Case Gap: To create a gap, ignore it first when you define Top/Bottom/Left/Right and set afterwards your gap length to remove a amount of leds. Modify the gap position until it matches.",
"conf_leds_layout_frame" : "Classic Layout (LED Frame)", "conf_leds_layout_frame" : "Classic Layout (LED Frame)",
"conf_leds_layout_matrix" : "Matrix Layout (LED Wall)", "conf_leds_layout_matrix" : "Matrix Layout (LED Wall)",
"conf_leds_layout_generatedconf" : "Generated/Current LED Configuration", "conf_leds_layout_generatedconf" : "Generated/Current LED Configuration",
@ -108,6 +118,8 @@
"conf_leds_layout_preview_originTEXT" : "Created from: Textfield", "conf_leds_layout_preview_originTEXT" : "Created from: Textfield",
"conf_leds_layout_preview_originMA" : "Created from: Matrix Layout(LED wall)", "conf_leds_layout_preview_originMA" : "Created from: Matrix Layout(LED wall)",
"conf_leds_layout_preview_totalleds" : "Totel LEDs: $1", "conf_leds_layout_preview_totalleds" : "Totel LEDs: $1",
"conf_leds_layout_preview_l1" : "This is your first led (input position)",
"conf_leds_layout_preview_l2" : "This visualizes the data direction (second/third led)",
"conf_leds_layout_cl_top" : "Top", "conf_leds_layout_cl_top" : "Top",
"conf_leds_layout_cl_bottom" : "Bottom", "conf_leds_layout_cl_bottom" : "Bottom",
"conf_leds_layout_cl_left" : "Left", "conf_leds_layout_cl_left" : "Left",
@ -121,6 +133,7 @@
"conf_leds_layout_cl_generate" : "Generate LED configuration", "conf_leds_layout_cl_generate" : "Generate LED configuration",
"conf_leds_layout_cl_edgegap" : "Edge Gap", "conf_leds_layout_cl_edgegap" : "Edge Gap",
"conf_leds_layout_cl_cornergap" : "Corner Gap", "conf_leds_layout_cl_cornergap" : "Corner Gap",
"conf_leds_layout_cl_overlap" : "Overlap",
"conf_leds_layout_ma_horiz" : "Horizontal", "conf_leds_layout_ma_horiz" : "Horizontal",
"conf_leds_layout_ma_vert" : "Vertical", "conf_leds_layout_ma_vert" : "Vertical",
"conf_leds_layout_ma_cabling" : "Cabling", "conf_leds_layout_ma_cabling" : "Cabling",
@ -135,22 +148,33 @@
"conf_leds_layout_ma_optbottomleft" : "Bottom left", "conf_leds_layout_ma_optbottomleft" : "Bottom left",
"conf_leds_layout_ma_optbottomright" : "Bottom right", "conf_leds_layout_ma_optbottomright" : "Bottom right",
"conf_leds_layout_textf1" : "This textfield shows by default your current loaded layout and will be overwritten if you generate a new one with the options below. Optional you could perform further edits.", "conf_leds_layout_textf1" : "This textfield shows by default your current loaded layout and will be overwritten if you generate a new one with the options below. Optional you could perform further edits.",
"conf_leds_layout_textf2" : "Don't forget to save!", "conf_grabber_fg_intro" : "Platforum capture is your local system capture as input source, Hyperion is installed on.",
"conf_grabber_label_intro" : "Hyperion supports two ways on how to get captured pictures for processing and output. The platform capture: internal at the device you are running Hyperion on (best qualitiy) and the USB Capture which gathers from a connected device the necessary pictures (more calibration work and configuration).", "conf_grabber_v4l_intro" : "USB capture is a (capture)device connected via USB which is used to input source pictures for processing.",
"conf_colors_label_intro" : "Color calibration, smoothing (color transistions) and detection of blackbars.", "conf_colors_color_intro" : "Create one or more calibration profiles, adjust each color, brightness, linearization and more.",
"conf_network_label_intro" : "All network based settings are listed here.", "conf_colors_smoothing_intro" : "Smoothing flattens color/brightness changes to reduce annoying distraction.",
"conf_colors_blackborder_intro" : "Skip black bars wherever they are. Each mode use another detection algorithm which is tuned for special situations. Higher the threshold if it doesn't work for you.",
"conf_network_json_intro" : "The JSON-RPC-Port of this Hyperion instance, used for remote control.",
"conf_network_proto_intro" : "The PROTO-Port of this Hyperion instance, used for picture streams (HyperionScreenCap, Kodi Adddon, ...)",
"conf_network_bobl_intro" : "Receiver for Boblight",
"conf_network_udpl_intro" : "Receiver for UDP",
"conf_network_forw_intro" : "Forward all input to a second Hyperion instance which could be driven with another led controller",
"conf_kodi_label_title" : "Kodi Watch", "conf_kodi_label_title" : "Kodi Watch",
"conf_kodi_label_intro" : "The Kodi Watcher enables you to enable and disable the screencapture depending on Kodi state. This is not limited to the same machine, you could observe also a Kodi on any other device at your network.", "conf_kodi_intro" : "The Kodi Watcher enables you to enable and disable the screencapture depending on Kodi state. This is not limited to the same machine, you could observe also a Kodi on any other device at your network.",
"conf_logging_label_intro" : "Area to check log messages, depending on loglevel setting you see more or less information.", "conf_logging_label_intro" : "Area to check log messages, depending on loglevel setting you see more or less information.",
"conf_logging_btn_pbupload" : "Upload log", "conf_logging_btn_pbupload" : "Upload log",
"conf_logging_btn_autoscroll" : "Auto scrolling", "conf_logging_btn_autoscroll" : "Auto scrolling",
"conf_logging_nomessage" : "No log messages available.",
"conf_webconfig_label_intro" : "Webconfiguration settings. Edit wisely.", "conf_webconfig_label_intro" : "Webconfiguration settings. Edit wisely.",
"remote_label_intro" : "Set an effect/color. You could also select a source manually. The Components control give the opportunity to enable/disable components of Hyprion during runtime. All changes you made here are lost after a restart.", "remote_losthint" : "Note: All changes are lost after a restart.",
"remote_colors_label_coloreffect" : "Colors/Effects", "remote_color_label" : "Colors/Effects",
"remote_colors_button_reset" : "Reset Color/Effect", "remote_color_intro" : "Set an effect or color. Also your self created effects are listed (if available). $1",
"remote_colors_label_color" : "Color:", "remote_color_button_reset" : "Reset Color/Effect",
"remote_color_label_color" : "Color:",
"remote_effects_label_effects" : "Effect:", "remote_effects_label_effects" : "Effect:",
"remote_input_label_sourceselection" : "Source Selection", "remote_adjustment_label" : "Color adjustment",
"remote_adjustment_intro" : "Modifiy color/brightness/linearization during runtime. $1",
"remote_input_label" : "Source Selection",
"remote_input_intro" : "Hyperion uses a priority system to select a source. Everything you set has a priority (Effect/Color/Platform capture/USB capture and network sources). By default, Hyperion select sources depending on priority (lowest number reflects the current active source). Now you have the opportunity to select sources on your own. $1",
"remote_input_label_autoselect" : "Auto Selection", "remote_input_label_autoselect" : "Auto Selection",
"remote_input_setsource_btn" : "Select Input", "remote_input_setsource_btn" : "Select Input",
"remote_input_sourceactiv_btn" : "Input active", "remote_input_sourceactiv_btn" : "Input active",
@ -160,22 +184,14 @@
"remote_input_status" : "Status/Action", "remote_input_status" : "Status/Action",
"remote_input_duration" : "Duration:", "remote_input_duration" : "Duration:",
"remote_input_ip" : "IP:", "remote_input_ip" : "IP:",
"remote_components_label_components" : "Components control", "remote_components_label" : "Components control",
"remote_components_intro" : "Enable and disable components of Hyperion during runtime. $1",
"remote_optgroup_usreffets" : "User Effects", "remote_optgroup_usreffets" : "User Effects",
"remote_optgroup_syseffets" : "Provided Effects", "remote_optgroup_syseffets" : "Provided Effects",
"remote_help_text" : "Hyperion uses a priority system to select a source. Everything you set has a priority (Effect/Color/Platform capture/USB capture and network sources). By default, Hyperion select sources depending on priority (lowest number reflects the current active source). Now you have the opportunity to select sources on your own.",
"remote_maptype_label" : "Mapping type", "remote_maptype_label" : "Mapping type",
"remote_maptype_intro" : "Change the mapping type during runtime. $1",
"remote_maptype_label_multicolor_mean" : "Multicolor", "remote_maptype_label_multicolor_mean" : "Multicolor",
"remote_maptype_label_unicolor_mean" : "Unicolor", "remote_maptype_label_unicolor_mean" : "Unicolor",
"hue_button_create_user_token" : "Create User",
"hue_press_link_modal" : "Please press link button on the Hue Bridge.",
"hue_failure_connection_token" : "Connection Timeout. Please press the button in time.",
"hue_button_pair" : "Connect",
"hue_btn_setup_helper" : "Hue Bridge Setup Helper",
"hue_failure_ip_token" : "Please check your IP Address.",
"hue_label_username" : "Hue Bridge Username",
"hue_label_ip" : "Hue Bridge IP:",
"hue_help_text" : "With this Setup Helper you can get a new User for your Hue Bridge and you can see your Lights with the IDs for Hyperion Configuration. If you already have a working User you will see it below. But you can always create a new one as well. Remember: This is only a helper. You have to copy and paste them in your config above.",
"effectsconfigurator_label_intro" : "Create out of the base effects new effects that are tuned to your liking. Depending on Effect there are options like color, speed, direction and more available.", "effectsconfigurator_label_intro" : "Create out of the base effects new effects that are tuned to your liking. Depending on Effect there are options like color, speed, direction and more available.",
"effectsconfigurator_label_chooseeff" : "Choose Base-Effect:", "effectsconfigurator_label_chooseeff" : "Choose Base-Effect:",
"effectsconfigurator_button_saveeffect" : "Save Effect", "effectsconfigurator_button_saveeffect" : "Save Effect",
@ -205,12 +221,20 @@
"support_label_wikitext" : "The A to Z source for almost everything Hyperion related", "support_label_wikitext" : "The A to Z source for almost everything Hyperion related",
"support_label_forumtitle" : "Forum", "support_label_forumtitle" : "Forum",
"support_label_forumtext" : "Showcases, discussions, help and more", "support_label_forumtext" : "Showcases, discussions, help and more",
"support_label_ghtext" : "Visit us on Github",
"update_label_intro" : "Overview about all available Hyperion versions. On top you could update or downgrade your version of Hyperion whenever you want. Sorted from newest to oldest", "update_label_intro" : "Overview about all available Hyperion versions. On top you could update or downgrade your version of Hyperion whenever you want. Sorted from newest to oldest",
"update_label_description" : "Description:", "update_label_description" : "Description:",
"update_button_install" : "Install", "update_button_install" : "Install",
"update_button_changelog" : "Full changelog", "update_button_changelog" : "Full changelog",
"update_label_type" : "Type:", "update_label_type" : "Type:",
"update_versreminder" : "Your version: $1", "update_versreminder" : "Your version: $1",
"about_version" : "Version",
"about_build" : "Build",
"about_builddate" : "Build date",
"about_translations" : "Translations",
"about_resources" : "$1 libraries",
"about_contribute" : "Add more languages to Hyperion!",
"about_credits" : "Credits to all these developers!",
"info_conlost_label_title" : "Lost connection to Hyperion service!", "info_conlost_label_title" : "Lost connection to Hyperion service!",
"info_conlost_label_reason" : "Possible reasons:", "info_conlost_label_reason" : "Possible reasons:",
"info_conlost_label_reason1" : "- Bad WLAN connection", "info_conlost_label_reason1" : "- Bad WLAN connection",
@ -226,13 +250,10 @@
"infoDialog_general_success_title" : "Success", "infoDialog_general_success_title" : "Success",
"infoDialog_general_error_title" : "Error", "infoDialog_general_error_title" : "Error",
"infoDialog_general_warning_title" : "Warning", "infoDialog_general_warning_title" : "Warning",
"infoDialog_leds_gap_title" : "GAP LOST IN SPACE!", "infoDialog_checklist_title" : "Checklist!",
"infoDialog_leds_gap_text" : "Your gap length/position is higher than your LED count, lower the gap length or gap position!",
"InfoDialog_leds_validfail_title" : "JSON Validation failed!", "InfoDialog_leds_validfail_title" : "JSON Validation failed!",
"infoDialog_effconf_deleted_text" : "The effect \"$1\" has been deleted successfully!", "infoDialog_effconf_deleted_text" : "The effect \"$1\" has been deleted successfully!",
"infoDialog_effconf_created_text" : "The effect \"$1\" has been created successfully!", "infoDialog_effconf_created_text" : "The effect \"$1\" has been created successfully!",
"infoDialog_effconf_invalidvalue_title" : "INVALID VALUE",
"infoDialog_effconf_invalidvalue_text" : "Please check for red marked input(s) and try again!",
"InfoDialog_lang_title" : "Language setting", "InfoDialog_lang_title" : "Language setting",
"InfoDialog_lang_text" : "If you don't like the result of the automatic language detection you could overwrite it here.", "InfoDialog_lang_text" : "If you don't like the result of the automatic language detection you could overwrite it here.",
"InfoDialog_access_title" : "Settings level", "InfoDialog_access_title" : "Settings level",
@ -256,6 +277,37 @@
"wiz_rgb_q" : "Which color show your leds, when the color dot above shows...", "wiz_rgb_q" : "Which color show your leds, when the color dot above shows...",
"wiz_rgb_qrend" : "...red?", "wiz_rgb_qrend" : "...red?",
"wiz_rgb_qgend" : "...green?", "wiz_rgb_qgend" : "...green?",
"wiz_hue_title" : "Hue Bridge Wizard",
"wiz_hue_intro1" : "With this Setup Helper you can get a new User for your Hue Bridge and you can see your Lights with the IDs for Hyperion Configuration.",
"wiz_hue_intro2" : "Remember: This is only a wizard. You have to copy and paste them in your config.",
"wiz_hue_ip" : "Hue Bridge IP:",
"wiz_hue_username" : "Username:",
"wiz_hue_create_user" : "Create User",
"wiz_hue_failure_ip" : "Please check your IP Address.",
"wiz_hue_failure_connection" : "Connection Timeout. Please press the button in time.",
"wiz_hue_press_link" : "Please press link button on the Hue Bridge.",
"wiz_cc_title" : "Color calibration wizard",
"wiz_cc_intro1" : "This wizard will guide you through your led calibration. If you are using Kodi, the calibration pictures and videos can be send directly to kodi without further tasks on your side. If not, you need to download these files yourself and apply them, if the wizard wants it.",
"wiz_cc_kwebs" : "Kodi webserver (IP:Port)",
"wiz_cc_kodidiscon" : "Kodi webserver not found, proceed without Kodi support.",
"wiz_cc_kodidisconlink" : "Download link pictures:",
"wiz_cc_kodicon" : "Kodi webserver found, proceed with Kodi support.",
"wiz_cc_kodimsg_start" : "Test success - time to proceed!",
"wiz_cc_kodishould" : "Kodi should the following picture: $1",
"wiz_cc_lettvshow" : "Let your TV show the following picture: $1",
"wiz_cc_lettvshowm" : "Check this with the following pictures: $1",
"wiz_cc_adjustit" : "Adjust your \"$1\", until your are fine with it.",
"wiz_cc_adjustgamma" : "Gamma: Was du jetzt tun musst ist, jeden Gamma-Kanal so einstellen, dass der \"Grauverlauf\" auf den LEDs nicht grünlich/rötlich/bläulich aussieht. Beispiel: Sollte dein grau etwas rötlich sein bedeutet dies, dass du dein Gamma für Rot erhöhen musst um den Rot-Anteil zu verringern (Je mehr Gamma, desto weniger Farbe).",
"wiz_cc_chooseid" : "Select a name for this profile.",
"wiz_cc_btn_switchpic" : "Switch picture",
"wiz_cc_minBright" : "Additional you could define a minimum brightness to sort out \"bad colors\" on nearly dark areas or if you don't like the switch between color and off during watching. This is disabled during the state \"Off\" ,color and effect.",
"wiz_cc_testintro" : "Time for a real test!",
"wiz_cc_testintrok" : "Push on a button below to start a test video.",
"wiz_cc_testintrowok" : "Checkout the following link to download test videos:",
"wiz_cc_link" : "Click me!",
"wiz_cc_morethanone" : "You have more than one profile, please choose the profile you want to calibrate.",
"wiz_cc_btn_stop" : "Stop video",
"wiz_cc_summary" : "A conclusen of your settings. During video playback, you could change or test values again. If you are done, click on save.",
"edt_dev_enum_subtract_minimum" : "Substract minimum", "edt_dev_enum_subtract_minimum" : "Substract minimum",
"edt_dev_enum_sub_min_warm_adjust" : "Min warm adjust", "edt_dev_enum_sub_min_warm_adjust" : "Min warm adjust",
"edt_dev_enum_white_off" : "White off", "edt_dev_enum_white_off" : "White off",
@ -340,12 +392,10 @@
"edt_conf_gen_showOptHelp_title" : "Show explanations", "edt_conf_gen_showOptHelp_title" : "Show explanations",
"edt_conf_gen_showOptHelp_expl" : "Show all available explanations in each section. Highly recommended for beginners!", "edt_conf_gen_showOptHelp_expl" : "Show all available explanations in each section. Highly recommended for beginners!",
"edt_conf_color_heading_title" : "Color Calibration", "edt_conf_color_heading_title" : "Color Calibration",
"edt_conf_color_channelAdjustment_header_itemtitle" : "Profile",
"edt_conf_color_channelAdjustment_header_title" : "Color channel adjustments", "edt_conf_color_channelAdjustment_header_title" : "Color channel adjustments",
"edt_conf_color_imageToLedMappingType_title" : "Led area assignment", "edt_conf_color_imageToLedMappingType_title" : "Led area assignment",
"edt_conf_color_imageToLedMappingType_expl" : "Overwrites the led area assignment of your led layout if it's not \"multicolor\"", "edt_conf_color_imageToLedMappingType_expl" : "Overwrites the led area assignment of your led layout if it's not \"multicolor\"",
"edt_conf_color_channelAdjustment_enable_title" : "Enable channel adjustment",
"edt_conf_color_channelAdjustment_enable_expl" : "Activates the adjustment option",
"edt_conf_color_channelAdjustment_v4l_only_title" : "Assign USB Capture only",
"edt_conf_color_id_title" : "ID", "edt_conf_color_id_title" : "ID",
"edt_conf_color_id_expl" : "User given name", "edt_conf_color_id_expl" : "User given name",
"edt_conf_color_leds_title" : "LED index", "edt_conf_color_leds_title" : "LED index",
@ -366,14 +416,14 @@
"edt_conf_color_magenta_expl" : "The calibrated magenta value.", "edt_conf_color_magenta_expl" : "The calibrated magenta value.",
"edt_conf_color_yellow_title" : "yellow", "edt_conf_color_yellow_title" : "yellow",
"edt_conf_color_yellow_expl" : "The calibrated yellow value.", "edt_conf_color_yellow_expl" : "The calibrated yellow value.",
"edt_conf_color_gamma_red_title" : "gamma red", "edt_conf_color_gammaRed_title" : "gamma red",
"edt_conf_color_gamma_red_expl" : "The gamma of red.", "edt_conf_color_gammaRed_expl" : "The gamma of red.",
"edt_conf_color_gamma_green_title" : "gamma green", "edt_conf_color_gammaGreen_title" : "gamma green",
"edt_conf_color_gamma_green_expl" : "The gamma of green.", "edt_conf_color_gammaGreen_expl" : "The gamma of green.",
"edt_conf_color_gamma_blue_title" : "gamma blue", "edt_conf_color_gammaBlue_title" : "gamma blue",
"edt_conf_color_gamma_blue_expl" : "The gamma of blue.", "edt_conf_color_gammaBlue_expl" : "The gamma of blue.",
"edt_conf_color_brightness_min_title" : "minimal brightness", "edt_conf_color_brightnessMin_title" : "minimal brightness",
"edt_conf_color_brightness_min_expl" : "The minimum amount of brightness (backlight).", "edt_conf_color_brightnessMin_expl" : "The minimum amount of brightness (backlight).",
"edt_conf_color_brightness_title" : "maximal brightness", "edt_conf_color_brightness_title" : "maximal brightness",
"edt_conf_color_brightness_expl" : "From 0.0 to 0.5 the brightness is linearised, from 0.5 to 1.0 cyan, magenta, yellow is up to 2x brighter and white 3x.", "edt_conf_color_brightness_expl" : "From 0.0 to 0.5 the brightness is linearised, from 0.5 to 1.0 cyan, magenta, yellow is up to 2x brighter and white 3x.",
"edt_conf_smooth_heading_title" : "Smoothing", "edt_conf_smooth_heading_title" : "Smoothing",
@ -447,7 +497,7 @@
"edt_conf_kodic_kodiAddress_title" : "Kodi IP address", "edt_conf_kodic_kodiAddress_title" : "Kodi IP address",
"edt_conf_kodic_kodiAddress_expl" : "The IP address of Kodi.", "edt_conf_kodic_kodiAddress_expl" : "The IP address of Kodi.",
"edt_conf_kodic_kodiTcpPort_title" : "Kodi TCP port", "edt_conf_kodic_kodiTcpPort_title" : "Kodi TCP port",
"edt_conf_kodic_kodiTcpPort_expl" : "The TCP port of Kodi.", "edt_conf_kodic_kodiTcpPort_expl" : "The TCP port of Kodi. Don't use the webserver port!",
"edt_conf_kodic_grabVideo_title" : "Video", "edt_conf_kodic_grabVideo_title" : "Video",
"edt_conf_kodic_grabVideo_expl" : "If checked, the capturing is enabled during video playback, else it's disabled.", "edt_conf_kodic_grabVideo_expl" : "If checked, the capturing is enabled during video playback, else it's disabled.",
"edt_conf_kodic_grabPictures_title" : "Pictures", "edt_conf_kodic_grabPictures_title" : "Pictures",
@ -484,8 +534,11 @@
"edt_conf_bobls_heading_title" : "Boblight Server", "edt_conf_bobls_heading_title" : "Boblight Server",
"edt_conf_udpl_heading_title" : "UDP Listener", "edt_conf_udpl_heading_title" : "UDP Listener",
"edt_conf_udpl_address_title" : "Address", "edt_conf_udpl_address_title" : "Address",
"edt_conf_udpl_address_expl" : "The address where UDP packages are accepted.",
"edt_conf_udpl_timeout_title" : "Timeout", "edt_conf_udpl_timeout_title" : "Timeout",
"edt_conf_udpl_timeout_expl" : "If no packages are received for the given period, the component will be (soft) disabled.",
"edt_conf_udpl_shared_title" : "Shared", "edt_conf_udpl_shared_title" : "Shared",
"edt_conf_udpl_shared_expl" : "Shared across all Hyperion instances.",
"edt_conf_webc_heading_title" : "Web Configuration", "edt_conf_webc_heading_title" : "Web Configuration",
"edt_conf_webc_docroot_title" : "Document Root", "edt_conf_webc_docroot_title" : "Document Root",
"edt_conf_webc_docroot_expl" : "Local webinterface root path (just for webui developer)", "edt_conf_webc_docroot_expl" : "Local webinterface root path (just for webui developer)",
@ -502,7 +555,9 @@
"edt_eff_fade_header_title" : "Fade", "edt_eff_fade_header_title" : "Fade",
"edt_eff_rainbowmood_header_title" : "Rainbow Mood", "edt_eff_rainbowmood_header_title" : "Rainbow Mood",
"edt_eff_knightrider_header_title" : "Knight Rider", "edt_eff_knightrider_header_title" : "Knight Rider",
"edt_eff_lightclock_header_title" : "Light Clock", "edt_eff_lightclock_header_title" : "Clock 1",
"edt_eff_clock_header_title" : "Clock 2",
"edt_eff_pacman_header_title" : "Pac-Man",
"edt_eff_moodblobs_header_title" : "Mood Blobs", "edt_eff_moodblobs_header_title" : "Mood Blobs",
"edt_eff_rainbowswirl_header_title" : "Rainbow Swirl", "edt_eff_rainbowswirl_header_title" : "Rainbow Swirl",
"edt_eff_random_header_title" : "Random", "edt_eff_random_header_title" : "Random",
@ -555,6 +610,13 @@
"edt_eff_min_len_title" : "Minimal length", "edt_eff_min_len_title" : "Minimal length",
"edt_eff_max_len_title" : "Maximal length", "edt_eff_max_len_title" : "Maximal length",
"edt_eff_height_title" : "Height", "edt_eff_height_title" : "Height",
"edt_eff_offset_title" : "Offset",
"edt_eff_colorHour_title" : "Color hour",
"edt_eff_colorMinute_title" : "Color minute",
"edt_eff_colorSecond_title" : "Color second",
"edt_eff_hourMargin_title" : "Margin hour",
"edt_eff_minuteMargin_title" : "Margin minute",
"edt_eff_secondMargin_title" : "Margin second",
"edt_append_ns" : "ns", "edt_append_ns" : "ns",
"edt_append_ms" : "ms", "edt_append_ms" : "ms",
"edt_append_s" : "s", "edt_append_s" : "s",

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

View File

@ -74,13 +74,12 @@
<!-- Navigation --> <!-- Navigation -->
<nav class="navbar navbar-default navbar-static-top" role="navigation" style="margin-bottom: 0"> <nav class="navbar navbar-default navbar-static-top" role="navigation" style="margin-bottom: 0">
<div class="navbar-header"> <div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse"> <button type="button" class="navbar-toggle closed" aria-controls="navbar" style="background-color:#d0d0d0;">
<span class="sr-only">Toggle navigation</span> <span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span> <span class="icon-bar top-bar"></span>
<span class="icon-bar"></span> <span class="icon-bar middle-bar"></span>
<span class="icon-bar"></span> <span class="icon-bar bottom-bar"></span>
</button> </button>
<a class="navbar-brand" href="https://www.hyperion-project.org?pk_campaign=WebUI&pk_kwd=mainlogo" target="_blank"><img src="img/hyperion/hyperionlogo.png" alt="Redefine ambient light!" height="55"></a> <a class="navbar-brand" href="https://www.hyperion-project.org?pk_campaign=WebUI&pk_kwd=mainlogo" target="_blank"><img src="img/hyperion/hyperionlogo.png" alt="Redefine ambient light!" height="55"></a>
<a class="navbar-brand" href="/"><img src="img/hyperion/hyperionlostconnection.png" alt="Redefine ambient light!" style="display:none;"></a> <a class="navbar-brand" href="/"><img src="img/hyperion/hyperionlostconnection.png" alt="Redefine ambient light!" style="display:none;"></a>
@ -89,17 +88,17 @@
<ul class="nav navbar-top-links navbar-right"> <ul class="nav navbar-top-links navbar-right">
<li class="dropdown" id="btn_setlang"> <li class="dropdown" id="btn_setlang">
<a href="#"> <a>
<i class="fa fa-globe fa-fw"></i> <i class="fa fa-globe fa-fw"></i>
</a> </a>
</li> </li>
<li class="dropdown" id="btn_setaccess"> <li class="dropdown" id="btn_setaccess">
<a href="#"> <a>
<i class="fa fa-key fa-fw"></i> <i class="fa fa-key fa-fw"></i>
</a> </a>
</li> </li>
<li class="dropdown" id="btn_open_ledsim"> <li class="dropdown" id="btn_open_ledsim">
<a href="#"> <a>
<i class="fa fa-television fa-fw"></i> <i class="fa fa-television fa-fw"></i>
</a> </a>
</li> </li>
@ -110,7 +109,7 @@
</a> </a>
<ul class="dropdown-menu dropdown-alerts"> <ul class="dropdown-menu dropdown-alerts">
<li id="btn_wizard_byteorder"> <li id="btn_wizard_byteorder">
<a href="#"> <a>
<div> <div>
<i class="fa fa-magic fa-fw"></i> <i class="fa fa-magic fa-fw"></i>
<span data-i18n="wiz_rgb_title"></span> <span data-i18n="wiz_rgb_title"></span>
@ -119,9 +118,19 @@
</li> </li>
<li class="divider"></li> <li class="divider"></li>
<li id="btn_wizard_colorcalibration"> <li id="btn_wizard_colorcalibration">
<a href="#"> <a>
<div> <div>
<i class="fa fa-magic fa-fw"></i> Color Calibration Wizard <i class="fa fa-magic fa-fw"></i>
<span data-i18n="wiz_cc_title"></span>
</div>
</a>
</li>
<li class="divider"></li>
<li id="btn_wizard_philipshue">
<a>
<div>
<i class="fa fa-magic fa-fw"></i>
<span data-i18n="wiz_hue_title"></span>
</div> </div>
</a> </a>
</li> </li>
@ -135,28 +144,29 @@
<div id="main-nav" class="navbar-default sidebar" role="navigation"> <div id="main-nav" class="navbar-default sidebar" role="navigation">
<div class="sidebar-nav navbar-collapse"> <div class="sidebar-nav navbar-collapse">
<ul class="nav" id="side-menu"> <ul class="nav" id="side-menu">
<li> <a class="active" id="load_dashboard"><i class="fa fa-dashboard fa-fw"></i><span data-i18n="main_menu_dashboard_token">Dashboard</span></a> </li> <li> <a class="inactive mnava" href="#dashboard"><i class="fa fa-dashboard fa-fw"></i><span data-i18n="main_menu_dashboard_token">Dashboard</span></a> </li>
<li> <li>
<a class="inactive"><i class="fa fa-cog fa-fw"></i><span data-i18n="main_menu_configuration_token">Configuration</span><span class="fa arrow"></span></a> <a class="inactive"><i class="fa fa-cog fa-fw"></i><span data-i18n="main_menu_configuration_token">Configuration</span><span class="fa arrow"></span></a>
<ul class="nav nav-second-level"> <ul class="nav nav-second-level">
<li> <a class="inactive" id="load_confGeneral"><i class="fa fa-wrench fa-fw"></i><span data-i18n="main_menu_general_conf_token">General</span></a> </li> <li> <a class="inactive mnava" href="#conf_general"><i class="fa fa-wrench fa-fw"></i><span data-i18n="main_menu_general_conf_token">General</span></a> </li>
<li> <a class="inactive" id="load_confLeds"><i class="fa fa-lightbulb-o fa-fw"></i><span data-i18n="main_menu_leds_conf_token">LED Hardware</span></a> </li> <li> <a class="inactive mnava" href="#conf_leds"><i class="fa fa-lightbulb-o fa-fw"></i><span data-i18n="main_menu_leds_conf_token">LED Hardware</span></a> </li>
<li> <a class="inactive" id="load_confGrabber"><i class="fa fa-camera fa-fw"></i><span data-i18n="main_menu_grabber_conf_token">Capturing Hardware</span></a> </li> <li> <a class="inactive mnava" href="#conf_grabber"><i class="fa fa-camera fa-fw"></i><span data-i18n="main_menu_grabber_conf_token">Capturing Hardware</span></a> </li>
<li> <a class="inactive" id="load_confEffects"><i class="fa fa-spinner fa-fw"></i><span data-i18n="main_menu_effect_conf_token">Effects</span></a> </li> <li> <a class="inactive mnava" href="#conf_effect"><i class="fa fa-spinner fa-fw"></i><span data-i18n="main_menu_effect_conf_token">Effects</span></a> </li>
<li> <a class="inactive" id="load_confColors"><i class="fa fa-photo fa-fw"></i><span data-i18n="main_menu_colors_conf_token">Image Processing</span></a> </li> <li> <a class="inactive mnava" href="#conf_colors"><i class="fa fa-photo fa-fw"></i><span data-i18n="main_menu_colors_conf_token">Image Processing</span></a> </li>
<li> <a class="inactive" id="load_confKodi"><i class="fa fa-play-circle-o fa-fw"></i><span data-i18n="main_menu_kodiwatch_token">Kodi Watch</span></a> </li> <li> <a class="inactive mnava" href="#conf_kodi"><i class="fa fa-play-circle-o fa-fw"></i><span data-i18n="main_menu_kodiwatch_token">Kodi Watch</span></a> </li>
<li> <a class="inactive" id="load_confNetwork"><i class="fa fa-sitemap fa-fw"></i><span data-i18n="main_menu_network_conf_token">Network</span></a> </li> <li> <a class="inactive mnava" href="#conf_network"><i class="fa fa-sitemap fa-fw"></i><span data-i18n="main_menu_network_conf_token">Network</span></a> </li>
</ul> </ul>
</li> </li>
<li> <a class="inactive" id="load_remote"><i class="fa fa-wifi fa-fw"></i><span data-i18n="main_menu_remotecontrol_token">Remote Control</span></a> </li> <li> <a class="inactive mnava" href="#remote"><i class="fa fa-wifi fa-fw"></i><span data-i18n="main_menu_remotecontrol_token">Remote Control</span></a> </li>
<li> <a class="inactive" id="load_effectsconfig"><i class="fa fa-cogs fa-fw"></i><span data-i18n="main_menu_effectsconfigurator_token">Effects Configurator</span></a> </li> <li> <a class="inactive mnava" href="#effects_configurator"><i class="fa fa-cogs fa-fw"></i><span data-i18n="main_menu_effectsconfigurator_token">Effects Configurator</span></a> </li>
<li> <a class="inactive" id="load_support"><i class="fa fa-info fa-fw"></i><span data-i18n="main_menu_support_token">Support</span></a> </li> <li> <a class="inactive mnava" href="#support"><i class="fa fa-info fa-fw"></i><span data-i18n="main_menu_support_token">Support</span></a> </li>
<li> <li>
<a class="inactive"><i class="fa fa-industry fa-fw"></i><span data-i18n="main_menu_system_token">System</span><span class="fa arrow"></span></a> <a class="inactive"><i class="fa fa-industry fa-fw"></i><span data-i18n="main_menu_system_token">System</span><span class="fa arrow"></span></a>
<ul class="nav nav-second-level"> <ul class="nav nav-second-level">
<li> <a class="inactive" id="load_webconfig"><i class="fa fa-wrench fa-fw"></i><span data-i18n="main_menu_webconfig_token">Webconfiguration</span></a> </li> <li> <a class="inactive mnava" href="#conf_webconfig" id="load_webconfig"><i class="fa fa-wrench fa-fw"></i><span data-i18n="main_menu_webconfig_token">Webconfiguration</span></a> </li>
<li> <a class="inactive" id="load_logging"><i class="fa fa-reorder fa-fw"></i><span data-i18n="main_menu_logging_token">Log</span></a> </li> <li> <a class="inactive mnava" href="#conf_logging"><i class="fa fa-reorder fa-fw"></i><span data-i18n="main_menu_logging_token">Log</span></a> </li>
<li> <a class="inactive" id="load_update"><i class="fa fa-download fa-fw"></i><span data-i18n="main_menu_update_token">Update</span></a> </li> <li> <a class="inactive mnava" href="#update"><i class="fa fa-download fa-fw"></i><span data-i18n="main_menu_update_token">Update</span></a> </li>
<li> <a class="inactive mnava" href="#about"><i class="fa fa-info-circle fa-fw"></i><span data-i18n="main_menu_about_token">Update</span></a> </li>
</ul> </ul>
</li> </li>
</ul> </ul>
@ -202,15 +212,30 @@
<div class="modal-content"> <div class="modal-content">
<div id="wiz_header" class="modal-header"></div> <div id="wiz_header" class="modal-header"></div>
<div id="wizp1"> <div id="wizp1">
<div id="wizp1_body" class="modal-body" style="text-align:center"></div> <div class="modal-body" style="text-align:center">
<img src="img/hyperion/hyperionlogo.png" alt="Redefine ambient light!" style="margin-bottom:15px">
<div id="wizp1_body" ></div>
</div>
<div id="wizp1_footer" class="modal-footer" style="text-align:center"></div> <div id="wizp1_footer" class="modal-footer" style="text-align:center"></div>
</div> </div>
<div id="wizp2" style="display:none"> <div id="wizp2" style="display:none">
<center> <center>
<div id="wizp2_body" class="modal-body"></div> <div class="modal-body">
<img src="img/hyperion/hyperionlogo.png" alt="Redefine ambient light!" style="margin-bottom:15px">
<div id="wizp2_body"></div>
</div>
</center> </center>
<div id="wizp2_footer" class="modal-footer" style="text-align:center"></div> <div id="wizp2_footer" class="modal-footer" style="text-align:center"></div>
</div> </div>
<div id="wizp3" style="display:none">
<center>
<div class="modal-body">
<img src="img/hyperion/hyperionlogo.png" alt="Redefine ambient light!" style="margin-bottom:15px">
<div id="wizp3_body"></div>
</div>
</center>
<div id="wizp3_footer" class="modal-footer" style="text-align:center"></div>
</div>
</div> </div>
</div> </div>
</div> </div>
@ -218,7 +243,7 @@
<!-- ledsimDialog --> <!-- ledsimDialog -->
<div id="ledsim_dialog" style="display:none; z-index:9998"> <div id="ledsim_dialog" style="display:none; z-index:9998">
<div data-role="body" style="padding:0px;"> <div data-role="body" style="padding:0px;">
<p id="ledsim_text" data-i18n="main_ledsim_text" style="font-weight:bold; margin: 10px 15px 0px 15px">Live visualization of led colors and if available the current picture of your capture device</p> <div id="ledsim_text"></div>
<div id="leds_canvas"></div> <div id="leds_canvas"></div>
</div> </div>
<div data-role="footer" style="text-align:center"> <div data-role="footer" style="text-align:center">

View File

@ -1,9 +1,8 @@
$(document).ready( function() {
var editor_color = null; performTranslation();
var editor_smoothing = null; var editor_color = null;
var editor_blackborder = null; var editor_smoothing = null;
$(hyperion).one("cmd-config-getschema", function(event) { var editor_blackborder = null;
schema = parsedConfSchemaJSON.properties;
if(showOptHelp) if(showOptHelp)
{ {
@ -68,11 +67,15 @@ $(hyperion).one("cmd-config-getschema", function(event) {
$('#btn_submit_blackborder').off().on('click',function() { $('#btn_submit_blackborder').off().on('click',function() {
requestWriteConfig(editor_blackborder.getValue()); requestWriteConfig(editor_blackborder.getValue());
}); });
});
//create introduction
if(showOptHelp)
$(document).ready( function() { {
performTranslation(); createHint("intro", $.i18n('conf_colors_color_intro'), "editor_container_color");
requestServerConfigSchema(); createHint("intro", $.i18n('conf_colors_smoothing_intro'), "editor_container_smoothing");
createHint("intro", $.i18n('conf_colors_blackborder_intro'), "editor_container_blackborder");
}
removeOverlay();
}); });

View File

@ -0,0 +1,46 @@
$(document).ready( function() {
performTranslation();
function updateComponents()
{
var components = serverInfo.info.components;
components_html = "";
for ( idx=0; idx<components.length;idx++)
{
components_html += '<tr><td>'+$.i18n('general_comp_'+components[idx].name)+'</td><td><i class="fa fa-circle component-'+(components[idx].enabled?"on":"off")+'"></i></td></tr>';
}
$("#tab_components").html(components_html);
}
// get active led device
var leddevice = serverInfo.info.ledDevices.active;
$('#dash_leddevice').html(leddevice);
// get host
var hostname = serverInfo.info.hostname;
$('#dash_systeminfo').html(hostname+':'+jsonPort);
$.get( "https://raw.githubusercontent.com/hyperion-project/hyperion.ng/master/version.json", function( data ) {
parsedUpdateJSON = JSON.parse(data);
latestVersion = parsedUpdateJSON[0].versionnr;
var cleanLatestVersion = latestVersion.replace(/\./g, '');
var cleanCurrentVersion = currentVersion.replace(/\./g, '');
$('#currentversion').html(currentVersion);
$('#latestversion').html(latestVersion);
if ( cleanCurrentVersion < cleanLatestVersion )
$('#versioninforesult').html('<div style="margin:0px;" class="alert alert-warning">'+$.i18n('dashboard_infobox_message_updatewarning', latestVersion)+'</div>');
else
$('#versioninforesult').html('<div style="margin:0px;" class="alert alert-success">'+$.i18n('dashboard_infobox_message_updatesuccess')+'</div>');
});
//interval update
updateComponents();
$(hyperion).on("cmd-serverinfo",updateComponents);
if(showOptHelp)
createHintH("intro", $.i18n('dashboard_label_intro'), "dash_intro");
removeOverlay();
});

View File

@ -1,13 +1,12 @@
var olddEffects = []; $(document).ready( function() {
var editorReady = false; performTranslation();
var effects_editor = null; var oldEffects = [];
var confFgEff = parsedConfJSON.foregroundEffect.effect; var editorReady = false;
var confBgEff = parsedConfJSON.backgroundEffect.effect; var effects_editor = null;
var foregroundEffect_editor = null; var confFgEff = serverConfig.foregroundEffect.effect;
var backgroundEffect_editor = null; var confBgEff = serverConfig.backgroundEffect.effect;
var foregroundEffect_editor = null;
$(hyperion).one("cmd-config-getschema", function(event) { var backgroundEffect_editor = null;
schema = parsedConfSchemaJSON.properties;
if(showOptHelp) if(showOptHelp)
{ {
@ -109,43 +108,49 @@ $(hyperion).one("cmd-config-getschema", function(event) {
console.log(backgroundEffect_editor.getValue()); console.log(backgroundEffect_editor.getValue());
}); });
}); //create introduction
if(showOptHelp)
function updateEffectlist(event){
if(editorReady)
{ {
var newEffects = event.response.info.effects; createHint("intro", $.i18n('conf_effect_path_intro'), "editor_container_effects");
if (newEffects.length != olddEffects.length) createHint("intro", $.i18n('conf_effect_fgeff_intro'), "editor_container_foregroundEffect");
createHint("intro", $.i18n('conf_effect_bgeff_intro'), "editor_container_backgroundEffect");
}
function updateEffectlist(){
if(editorReady)
{ {
$('#root_foregroundEffect_effect').html(''); var newEffects = serverInfo.info.effects;
var usrEffArr = []; if (newEffects.length != oldEffects.length)
var sysEffArr = [];
for(i = 0; i < newEffects.length; i++)
{ {
var effectName = newEffects[i].name; $('#root_foregroundEffect_effect').html('');
if(!/^\:/.test(newEffects[i].file)) var usrEffArr = [];
usrEffArr.push(effectName); var sysEffArr = [];
else
sysEffArr.push(effectName); for(i = 0; i < newEffects.length; i++)
{
var effectName = newEffects[i].name;
if(!/^\:/.test(newEffects[i].file))
usrEffArr.push(effectName);
else
sysEffArr.push(effectName);
}
$('#root_foregroundEffect_effect').append(createSel(usrEffArr, $.i18n('remote_optgroup_usreffets')));
$('#root_foregroundEffect_effect').append(createSel(sysEffArr, $.i18n('remote_optgroup_syseffets')));
$('#root_backgroundEffect_effect').html($('#root_foregroundEffect_effect').html());
oldEffects = newEffects;
$('#root_foregroundEffect_effect').val(confFgEff).change();
//$('select').trigger('change');
//var fgeff = foregroundEffect_editor.getEditor('root.foregroundEffect.effect').setValue(confFgEff);
//console.log(fgeff);
$('#root_backgroundEffect_effect').val(confBgEff).change();
} }
$('#root_foregroundEffect_effect').append(createSel(usrEffArr, $.i18n('remote_optgroup_usreffets')));
$('#root_foregroundEffect_effect').append(createSel(sysEffArr, $.i18n('remote_optgroup_syseffets')));
$('#root_backgroundEffect_effect').html($('#root_foregroundEffect_effect').html());
olddEffects = newEffects;
$('#root_foregroundEffect_effect').val(confFgEff).change();
//$('select').trigger('change');
//var fgeff = foregroundEffect_editor.getEditor('root.foregroundEffect.effect').setValue(confFgEff);
//console.log(fgeff);
$('#root_backgroundEffect_effect').val(confBgEff).change();
} }
} }
}
$(document).ready( function() { //interval update
performTranslation();
requestServerConfigSchema();
$(hyperion).on("cmd-serverinfo",updateEffectlist); $(hyperion).on("cmd-serverinfo",updateEffectlist);
removeOverlay();
}); });

View File

@ -1,8 +1,15 @@
$(document).ready( function() {
performTranslation();
var oldDelList = []; var oldDelList = [];
var effectName = "";
var effects_editor = null;
var effectPy = "";
function updateDelEffectlist(event){ if(showOptHelp)
var newDelList = event.response.info.effects createHintH("intro", $.i18n('effectsconfigurator_label_intro'), "intro_effc");
function updateDelEffectlist(){
var newDelList = serverInfo.info.effects;
if(newDelList.length != oldDelList.length) if(newDelList.length != oldDelList.length)
{ {
var EffectHtml = null; var EffectHtml = null;
@ -19,34 +26,11 @@
} }
} }
$(hyperion).one("cmd-config-getschema", function(event) {
effects = parsedConfSchemaJSON.properties.effectSchemas.internal
EffectsHtml = "";
for(var idx=0; idx<effects.length; idx++)
{
EffectsHtml += '<option value="'+effects[idx].schemaContent.script+'">'+$.i18n(effects[idx].schemaContent.title)+'</option>';
}
$("#effectslist").html(EffectsHtml);
$("#effectslist").trigger("change");
});
function validateEditor() {
if(effects_editor.validate().length)
{
showInfoDialog('error', $.i18n('infoDialog_effconf_invalidvalue_title'), $.i18n('infoDialog_effconf_invalidvalue_text'));
return false;
}
return true;
};
function triggerTestEffect() { function triggerTestEffect() {
var args = effects_editor.getEditor('root.args'); var args = effects_editor.getEditor('root.args');
requestTestEffect(effectName, ":/effects/" + effectPy.slice(1), JSON.stringify(args.getValue())); requestTestEffect(effectName, ":/effects/" + effectPy.slice(1), JSON.stringify(args.getValue()));
}; };
effectName = "";
effects_editor = null;
effectPy = "";
$("#effectslist").off().on("change", function(event) { $("#effectslist").off().on("change", function(event) {
for(var idx=0; idx<effects.length; idx++){ for(var idx=0; idx<effects.length; idx++){
@ -60,14 +44,24 @@ $(hyperion).one("cmd-config-getschema", function(event) {
$("#name-input").trigger("change"); $("#name-input").trigger("change");
} }
effects_editor.on('change',function() { effects_editor.on('change',function() {
if ($("#btn_cont_test").hasClass("btn-success") && validateEditor()) if ($("#btn_cont_test").hasClass("btn-success") && effects_editor.validate().length == 0 && effectName != "")
{ {
triggerTestEffect(); triggerTestEffect();
} }
if( effects_editor.validate().length == 0 && effectName != "")
{
$('#btn_start_test').attr('disabled', false);
$('#btn_write').attr('disabled', false);
}
else
{
$('#btn_start_test').attr('disabled', true);
$('#btn_write').attr('disabled', true);
}
}); });
}); });
$("#name-input").on('change keydown click focusout', function(event) { $("#name-input").on('change keyup', function(event) {
effectName = $(this).val(); effectName = $(this).val();
if ($(this).val() == '') { if ($(this).val() == '') {
effects_editor.disable(); effects_editor.disable();
@ -79,18 +73,16 @@ $(hyperion).one("cmd-config-getschema", function(event) {
}); });
$('#btn_write').off().on('click',function() { $('#btn_write').off().on('click',function() {
if(validateEditor()) requestWriteEffect(effectName,effectPy,JSON.stringify(effects_editor.getValue()));
{ $(hyperion).one("cmd-create-effect", function(event) {
requestWriteEffect(effectName,effectPy,JSON.stringify(effects_editor.getValue())); if (event.response.success)
showInfoDialog('success', "", $.i18n('infoDialog_effconf_created_text', effectName)); showInfoDialog('success', "", $.i18n('infoDialog_effconf_created_text', effectName));
} });
}); });
$('#btn_start_test').off().on('click',function() { $('#btn_start_test').off().on('click',function() {
if(validateEditor()) triggerTestEffect();
{
triggerTestEffect();
}
}); });
$('#btn_stop_test').off().on('click',function() { $('#btn_stop_test').off().on('click',function() {
@ -104,7 +96,10 @@ $(hyperion).one("cmd-config-getschema", function(event) {
$('#btn_delete').off().on('click',function() { $('#btn_delete').off().on('click',function() {
var name = $("#effectsdellist").val(); var name = $("#effectsdellist").val();
requestDeleteEffect(name); requestDeleteEffect(name);
showInfoDialog('success', "", $.i18n('infoDialog_effconf_deleted_text', name)); $(hyperion).one("cmd-delete-effect", function(event) {
if (event.response.success)
showInfoDialog('success', "", $.i18n('infoDialog_effconf_deleted_text', name));
});
}); });
$('#effectsdellist').off().on('change', function(){ $('#effectsdellist').off().on('change', function(){
@ -115,8 +110,18 @@ $(hyperion).one("cmd-config-getschema", function(event) {
} }
}); });
$(document).ready( function() { //create basic effect list
performTranslation(); var effects = serverSchema.properties.effectSchemas.internal
requestServerConfigSchema(); for(var idx=0; idx<effects.length; idx++)
{
$("#effectslist").append(createSelOpt(effects[idx].schemaContent.script, $.i18n(effects[idx].schemaContent.title)));
}
$("#effectslist").trigger("change");
updateDelEffectlist();
//interval update
$(hyperion).on("cmd-serverinfo",updateDelEffectlist); $(hyperion).on("cmd-serverinfo",updateDelEffectlist);
removeOverlay();
}); });

View File

@ -1,7 +1,9 @@
$(document).ready( function() {
performTranslation();
var conf_editor = null; var importedConf;
$(hyperion).one("cmd-config-getschema", function(event) { var confName;
schema = parsedConfSchemaJSON.properties; var conf_editor = null;
$('#conf_cont').append(createOptPanel('fa-wrench', $.i18n("edt_conf_gen_heading_title"), 'editor_container', 'btn_submit')); $('#conf_cont').append(createOptPanel('fa-wrench', $.i18n("edt_conf_gen_heading_title"), 'editor_container', 'btn_submit'));
if(showOptHelp) if(showOptHelp)
@ -23,16 +25,7 @@ $(hyperion).one("cmd-config-getschema", function(event) {
requestWriteConfig(conf_editor.getValue()); requestWriteConfig(conf_editor.getValue());
}); });
}); //import
$(document).ready( function() {
performTranslation();
requestServerConfigSchema();
var importedConf;
var confName;
function dis_imp_btn(state) function dis_imp_btn(state)
{ {
state ? $('#btn_import_conf').attr('disabled', true) : $('#btn_import_conf').attr('disabled', false); state ? $('#btn_import_conf').attr('disabled', true) : $('#btn_import_conf').attr('disabled', false);
@ -68,9 +61,9 @@ $(document).ready( function() {
else else
{ {
//check config revision //check config revision
if(content.general.configVersion !== parsedConfJSON.general.configVersion) if(content.general.configVersion !== serverConfig.general.configVersion)
{ {
showInfoDialog('error', "", $.i18n('infoDialog_import_reverror_text', f.name, content.general.configVersion, parsedConfJSON.general.configVersion)); showInfoDialog('error', "", $.i18n('infoDialog_import_reverror_text', f.name, content.general.configVersion, serverConfig.general.configVersion));
dis_imp_btn(true); dis_imp_btn(true);
} }
else else
@ -86,21 +79,6 @@ $(document).ready( function() {
} }
} }
$('#btn_export_conf').off().on('click', function(){
var crev = parsedConfJSON.general.configVersion;
var name = parsedConfJSON.general.name;
var d = new Date();
var month = d.getMonth()+1;
var day = d.getDate();
var timestamp = d.getFullYear() + '.' +
(month<10 ? '0' : '') + month + '.' +
(day<10 ? '0' : '') + day;
download(JSON.stringify(parsedConfJSON, null, "\t"), 'Hyperion-Config ('+name+') '+timestamp+'.json', "application/json");
});
$('#btn_import_conf').off().on('click', function(){ $('#btn_import_conf').off().on('click', function(){
showInfoDialog('import', $.i18n('infoDialog_import_confirm_title'), $.i18n('infoDialog_import_confirm_text', confName)); showInfoDialog('import', $.i18n('infoDialog_import_confirm_title'), $.i18n('infoDialog_import_confirm_text', confName));
@ -117,5 +95,25 @@ $(document).ready( function() {
showInfoDialog('error', "", $.i18n('infoDialog_import_comperror_text')); showInfoDialog('error', "", $.i18n('infoDialog_import_comperror_text'));
}); });
//export
$('#btn_export_conf').off().on('click', function(){
var name = serverConfig.general.name;
var d = new Date();
var month = d.getMonth()+1;
var day = d.getDate();
var timestamp = d.getFullYear() + '.' +
(month<10 ? '0' : '') + month + '.' +
(day<10 ? '0' : '') + day;
download(JSON.stringify(serverConfig, null, "\t"), 'Hyperion-'+currentVersion+'-Backup ('+name+') '+timestamp+'.json', "application/json");
});
//create introduction
if(showOptHelp)
createHint("intro", $.i18n('conf_general_intro'), "editor_container");
removeOverlay();
}); });

View File

@ -1,8 +1,7 @@
$(document).ready( function() {
var conf_editor_v4l2 = null; performTranslation();
var conf_editor_fg = null; var conf_editor_v4l2 = null;
$(hyperion).one("cmd-config-getschema", function(event) { var conf_editor_fg = null;
schema = parsedConfSchemaJSON.properties;
if(showOptHelp) if(showOptHelp)
{ {
@ -49,11 +48,13 @@ $(hyperion).one("cmd-config-getschema", function(event) {
requestWriteConfig(conf_editor_v4l2.getValue()); requestWriteConfig(conf_editor_v4l2.getValue());
}); });
}); //create introduction
if(showOptHelp)
{
$(document).ready( function() { createHint("intro", $.i18n('conf_grabber_fg_intro'), "editor_container_fg");
performTranslation(); createHint("intro", $.i18n('conf_grabber_v4l_intro'), "editor_container_v4l2");
requestServerConfigSchema(); }
removeOverlay();
}); });

View File

@ -4,86 +4,25 @@ $(document).ready( function() {
loadContentTo("#container_connection_lost","connection_lost"); loadContentTo("#container_connection_lost","connection_lost");
loadContentTo("#container_restart","restart"); loadContentTo("#container_restart","restart");
initWebSocket(); initWebSocket();
bindNavToContent("#load_dashboard","dashboard",true);
bindNavToContent("#load_remote","remote",false);
bindNavToContent("#load_huebridge","huebridge",false);
bindNavToContent("#load_support","support",false);
bindNavToContent("#load_update","update",false);
bindNavToContent("#load_confGeneral","general",false);
bindNavToContent("#load_confEffects","effects",false);
bindNavToContent("#load_confKodi","kodiconf",false);
bindNavToContent("#load_confLeds","leds",false);
bindNavToContent("#load_confGrabber","grabber",false);
bindNavToContent("#load_confColors","colors",false);
bindNavToContent("#load_confNetwork","network",false);
bindNavToContent("#load_effectsconfig","effects_configurator",false);
bindNavToContent("#load_logging","logging",false);
bindNavToContent("#load_webconfig","webconfig",false);
$(hyperion).on("cmd-serverinfo",function(event){ $(hyperion).on("cmd-serverinfo",function(event){
showOptHelp = parsedConfJSON.general.showOptHelp; serverInfo = event.response;
parsedServerInfoJSON = event.response; currentVersion = serverInfo.info.hyperion[0].version;
currentVersion = parsedServerInfoJSON.info.hyperion[0].version; $(hyperion).trigger("ready");
cleanCurrentVersion = currentVersion.replace(/\./g, '');
if (parsedServerInfoJSON.info.hyperion[0].config_modified) if (serverInfo.info.hyperion[0].config_modified)
$("#hyperion_reload_notify").fadeIn("fast"); $("#hyperion_reload_notify").fadeIn("fast");
else else
$("#hyperion_reload_notify").fadeOut("fast"); $("#hyperion_reload_notify").fadeOut("fast");
// get active led device
var leddevice = parsedServerInfoJSON.info.ledDevices.active;
if ($("#content_dashboard").length > 0)
{
$('#dash_leddevice').html(leddevice);
}
// get host
var hostname = parsedServerInfoJSON.info.hostname;
if ($("#content_dashboard").length > 0)
{
$('#dash_systeminfo').html(hostname+':'+hyperionport);
}
if ($("#content_dashboard").length > 0)
{
var components = parsedServerInfoJSON.info.components;
components_html = "";
for ( idx=0; idx<components.length;idx++)
{
components_html += '<tr><td>'+$.i18n('general_comp_'+components[idx].name)+'</td><td><i class="fa fa-circle component-'+(components[idx].enabled?"on":"off")+'"></i></td></tr>';
}
$("#tab_components").html(components_html);
$.get( "https://raw.githubusercontent.com/hyperion-project/hyperion.ng/master/version.json", function( data ) {
parsedUpdateJSON = JSON.parse(data);
latestVersion = parsedUpdateJSON[0].versionnr;
cleanLatestVersion = latestVersion.replace(/\./g, '');
$('#currentversion').html(' V'+currentVersion);
$('#latestversion').html(' V'+latestVersion);
if ( cleanCurrentVersion < cleanLatestVersion )
{
$('#versioninforesult').html('<div style="margin:0px;" class="alert alert-warning">'+$.i18n('dashboard_infobox_message_updatewarning', latestVersion)+'</div>');
}
else
{
$('#versioninforesult').html('<div style="margin:0px;" class="alert alert-success">'+$.i18n('dashboard_infobox_message_updatesuccess')+'</div>');
}
});
}
if ($("#logmessages").length == 0 && loggingStreamActive) if ($("#logmessages").length == 0 && loggingStreamActive)
{ {
requestLoggingStop(); requestLoggingStop();
loggingStreamActive = false;
} }
if (!serverInfo.info.hyperion[0].config_writeable)
$("#loading_overlay").removeClass("overlay");
if (!parsedServerInfoJSON.info.hyperion[0].config_writeable)
{ {
showInfoDialog('uilock',$.i18n('InfoDialog_nowrite_title'),$.i18n('InfoDialog_nowrite_text')); showInfoDialog('uilock',$.i18n('InfoDialog_nowrite_title'),$.i18n('InfoDialog_nowrite_text'));
$('#wrapper').toggle(false); $('#wrapper').toggle(false);
@ -99,13 +38,17 @@ $(document).ready( function() {
}); // end cmd-serverinfo }); // end cmd-serverinfo
$(hyperion).one("cmd-config-getschema", function(event) { $(hyperion).one("cmd-config-getschema", function(event) {
parsedConfSchemaJSON = event.response.result; serverSchema = event.response.result;
requestServerConfig(); requestServerConfig();
schema = serverSchema.properties;
}); });
$(hyperion).one("cmd-config-getconfig", function(event) { $(hyperion).one("cmd-config-getconfig", function(event) {
parsedConfJSON = event.response.result; serverConfig = event.response.result;
requestServerInfo(); requestServerInfo();
showOptHelp = serverConfig.general.showOptHelp;
}); });
$(hyperion).on("error",function(event){ $(hyperion).on("error",function(event){
@ -116,9 +59,18 @@ $(document).ready( function() {
requestServerConfigSchema(); requestServerConfigSchema();
}); });
$(hyperion).one("ready", function(event) {
loadContent();
});
$("#btn_hyperion_reload").on("click", function(){ $("#btn_hyperion_reload").on("click", function(){
initRestart(); initRestart();
}); });
$(".mnava").on('click', function(e){
loadContent(e);
});
}); });
$(function(){ $(function(){

View File

@ -1,7 +1,6 @@
$(document).ready( function() {
var conf_editor = null; var conf_editor = null;
$(hyperion).one("cmd-config-getschema", function(event) { performTranslation();
schema = parsedConfSchemaJSON.properties;
$('#conf_cont').append(createOptPanel('fa-play-circle-o', $.i18n("conf_kodi_label_title"), 'editor_container', 'btn_submit')); $('#conf_cont').append(createOptPanel('fa-play-circle-o', $.i18n("conf_kodi_label_title"), 'editor_container', 'btn_submit'));
if(showOptHelp) if(showOptHelp)
@ -21,11 +20,10 @@ $(hyperion).one("cmd-config-getschema", function(event) {
requestWriteConfig(conf_editor.getValue()); requestWriteConfig(conf_editor.getValue());
}); });
}); //create introduction
if(showOptHelp)
createHint("intro", $.i18n('conf_kodi_intro'), "editor_container");
$(document).ready( function() {
performTranslation(); removeOverlay();
requestServerConfigSchema();
}); });

View File

@ -5,21 +5,6 @@ var IntListIds;
var StrListIds; var StrListIds;
var BoolListIds; var BoolListIds;
function get_hue_lights(){
$.ajax({
type: "GET",
url: 'http://'+$("#ip").val()+'/api/'+$("#user").val()+'/lights',
processData: false,
contentType: 'application/json',
success: function(r) {
for(var lightid in r){
//console.log(r[lightid].name);
$('#hue_lights').append('ID: '+lightid+' Name: '+r[lightid].name+'<br />');
}
}
});
}
function validateText(){ function validateText(){
e = isJsonString($("#ledconfig").val()); e = isJsonString($("#ledconfig").val());
@ -34,6 +19,7 @@ function loadStoredValues()
{ {
if (storageComp() && getStorage('ip_cl_ledstop') != null) if (storageComp() && getStorage('ip_cl_ledstop') != null)
{ {
for(var i = 0; i < IntListIds.length; i++) for(var i = 0; i < IntListIds.length; i++)
{ {
$('#'+IntListIds[i]).val(parseInt(getStorage(IntListIds[i]))); $('#'+IntListIds[i]).val(parseInt(getStorage(IntListIds[i])));
@ -139,22 +125,21 @@ function createClassicLeds(){
var reverse = $("#ip_cl_reverse").is(":checked"); var reverse = $("#ip_cl_reverse").is(":checked");
//advanced values //advanced values
var rawledsvdepth = parseInt($("#ip_cl_rawledsvdepth").val()); var ledsVDepth = parseInt($("#ip_cl_ledsvdepth").val())/100;
var rawledshdepth = parseInt($("#ip_cl_rawledshdepth").val()); var ledsHDepth = parseInt($("#ip_cl_ledshdepth").val())/100;
var rawledsedgegap = parseInt($("#ip_cl_rawledsedgegap").val()); var edgeVGap = parseInt($("#ip_cl_ledsedgegap").val())/100/2;
var rawledscornergap = parseInt($("#ip_cl_rawledscornergap").val()); //var cornerVGap = parseInt($("#ip_cl_ledscornergap").val())/100/2;
var overlap = $("#ip_cl_overlap").val()/4000;
//helper //helper
var ledsVDepth = rawledsvdepth /100;
var ledsHDepth = rawledshdepth /100;
var edgeVGap = rawledsedgegap /100/2;
var edgeHGap = edgeVGap/(16/9); var edgeHGap = edgeVGap/(16/9);
var cornerVGap = rawledscornergap /100/2; //var cornerHGap = cornerVGap/(16/9);
var cornerHGap = cornerVGap/(16/9);
var Vmin = 0.0 + edgeVGap; var Vmin = 0.0 + edgeVGap;
var Vmax = 1.0 - edgeVGap; var Vmax = 1.0 - edgeVGap;
var Hmin = 0.0 + edgeHGap; var Hmin = 0.0 + edgeHGap;
var Hmax = 1.0 - edgeHGap; var Hmax = 1.0 - edgeHGap;
var Hdiff = Hmax-Hmin;
var Vdiff = Vmax-Vmin;
var ledArray = []; var ledArray = [];
function createFinalArray(array){ function createFinalArray(array){
@ -169,14 +154,6 @@ function createClassicLeds(){
createLedPreview(finalLedArray, 'classic'); createLedPreview(finalLedArray, 'classic');
} }
function validateGap(){
if (ledsgpos+ledsglength > ledArray.length){
showInfoDialog('error', $.i18n('infoDialog_leds_gap_title'), $.i18n('infoDialog_leds_gap_text'));
return false
}
return true
}
function rotateArray(array, times){ function rotateArray(array, times){
if (times > "0"){ if (times > "0"){
while( times-- ){ while( times-- ){
@ -193,6 +170,23 @@ function createClassicLeds(){
} }
} }
function valScan(val)
{
if(val > 1)
return val = 1;
if(val < 0)
return val = 0;
return val;
}
function ovl(scan,val)
{
if(scan == "+")
return valScan(val += overlap);
else
return valScan(val -= overlap);
}
function createLedArray(hmin, hmax, vmin, vmax){ function createLedArray(hmin, hmax, vmin, vmax){
hmin = round(hmin); hmin = round(hmin);
hmax = round(hmax); hmax = round(hmax);
@ -203,79 +197,82 @@ function createClassicLeds(){
function createTopLeds(){ function createTopLeds(){
step=(Hmax-Hmin)/ledstop; step=(Hmax-Hmin)/ledstop;
hmin=Hmin //if(cornerVGap != '0')
if(cornerVGap != '0'){ // step=(Hmax-Hmin-(cornerHGap*2))/ledstop;
step=(Hmax-Hmin-(cornerHGap*2))/ledstop;
hmin=Hmin+(cornerHGap); vmin=Vmin;
}
vmin=Vmin
vmax=vmin+ledsHDepth; vmax=vmin+ledsHDepth;
hmax=hmin+step
for (var i = 0; i<ledstop; i++){ for (var i = 0; i<ledstop; i++){
hmin = ovl("-",(Hdiff/ledstop*[i])+edgeHGap);
hmax = ovl("+",(Hdiff/ledstop*[i])+step+edgeHGap);
createLedArray(hmin, hmax, vmin, vmax); createLedArray(hmin, hmax, vmin, vmax);
hmin += step
hmax += step
} }
} }
function createLeftLeds(){ function createLeftLeds(){
step=(Vmax-Vmin)/ledsleft; step=(Vmax-Vmin)/ledsleft;
vmax=Vmax //if(cornerVGap != '0')
if(cornerVGap != '0'){ // step=(Vmax-Vmin-(cornerVGap*2))/ledsleft;
step=(Vmax-Vmin-(cornerVGap*2))/ledsleft;
vmax=Vmax-(cornerVGap);
}
hmin=Hmin; hmin=Hmin;
hmax=hmin+ledsVDepth; hmax=hmin+ledsVDepth;
vmin=vmax-step for (var i = ledsleft-1; i>-1; --i){
for (var i = ledsleft; i>0; i--){ vmin = ovl("-",(Vdiff/ledsleft*[i])+edgeVGap);
vmax = ovl("+",(Vdiff/ledsleft*[i])+step+edgeVGap);
createLedArray(hmin, hmax, vmin, vmax); createLedArray(hmin, hmax, vmin, vmax);
vmin -= step
vmax -= step
} }
} }
function createRightLeds(){ function createRightLeds(){
step=(Vmax-Vmin)/ledsright; step=(Vmax-Vmin)/ledsright;
vmin=Vmin //if(cornerVGap != '0')
if(cornerVGap != '0'){ // step=(Vmax-Vmin-(cornerVGap*2))/ledsright;
step=(Vmax-Vmin-(cornerVGap*2))/ledsright;
vmin=Vmin+(cornerVGap);
}
hmax=Hmax; hmax=Hmax;
hmin=hmax-ledsVDepth; hmin=hmax-ledsVDepth;
vmax=vmin+step
for (var i = 0; i<ledsright; i++){ for (var i = 0; i<ledsright; i++){
vmin = ovl("-",(Vdiff/ledsright*[i])+edgeVGap);
vmax = ovl("+",(Vdiff/ledsright*[i])+step+edgeVGap);
createLedArray(hmin, hmax, vmin, vmax); createLedArray(hmin, hmax, vmin, vmax);
vmin += step
vmax += step
} }
} }
function createBottomLeds(){ function createBottomLeds(){
step=(Hmax-Hmin)/ledsbottom; step=(Hmax-Hmin)/ledsbottom;
hmax=Hmax //if(cornerVGap != '0')
if(cornerVGap != '0'){ // step=(Hmax-Hmin-(cornerHGap*2))/ledsbottom;
step=(Hmax-Hmin-(cornerHGap*2))/ledsbottom;
hmax=Hmax-(cornerHGap);
}
vmax=Vmax; vmax=Vmax;
vmin=vmax-ledsHDepth; vmin=vmax-ledsHDepth;
hmin=hmax-step for (var i = ledsbottom-1; i>-1; i--){
for (var i = ledsbottom; i>0; i--){ hmin = ovl("-",(Hdiff/ledsbottom*[i])+edgeHGap);
hmax = ovl("+",(Hdiff/ledsbottom*[i])+step+edgeHGap);
createLedArray(hmin, hmax, vmin, vmax); createLedArray(hmin, hmax, vmin, vmax);
hmin -= step;
hmax -= step;
} }
} }
createLeftLeds(createBottomLeds(createRightLeds(createTopLeds()))); createLeftLeds(createBottomLeds(createRightLeds(createTopLeds())));
if(ledsglength != "0" && validateGap()){ //check led gap pos
if (ledsgpos+ledsglength > ledArray.length)
{
var mpos = Math.max(0,ledArray.length-ledsglength);
$('#ip_cl_ledsgpos').val(mpos);
ledsgpos = mpos;
}
//check led gap length
if(ledsglength >= ledArray.length)
{
$('#ip_cl_ledsglength').val(ledArray.length-1);
ledsglength = ledArray.length-ledsglength-1;
}
if(ledsglength != 0){
ledArray.splice(ledsgpos, ledsglength); ledArray.splice(ledsgpos, ledsglength);
} }
if (position != "0"){ if (position != 0){
rotateArray(ledArray, position); rotateArray(ledArray, position);
} }
@ -368,6 +365,14 @@ $(document).ready(function() {
// translate // translate
performTranslation(); performTranslation();
//add intros
if(showOptHelp)
{
createHintH("intro", $.i18n('conf_leds_device_intro'), "leddevice_intro");
createHintH("intro", $.i18n('conf_leds_layout_intro'), "layout_intro");
$('#led_vis_help').html('<div><div class="led_ex" style="background-color:black;margin-right:5px;margin-top:3px"></div><div style="display:inline-block;vertical-align:top">'+$.i18n('conf_leds_layout_preview_l1')+'</div></div><div class="led_ex" style="background-color:grey;margin-top:3px;margin-right:2px"></div><div class="led_ex" style="background-color: rgb(169, 169, 169);margin-right:5px;margin-top:3px;"></div><div style="display:inline-block;vertical-align:top">'+$.i18n('conf_leds_layout_preview_l2')+'</div>');
}
//gather ids //gather ids
IntListIds = $('.led_val_int').map(function() { return this.id; }).get(); IntListIds = $('.led_val_int').map(function() { return this.id; }).get();
StrListIds = $('.led_val_string').map(function() { return this.id; }).get(); StrListIds = $('.led_val_string').map(function() { return this.id; }).get();
@ -420,54 +425,82 @@ $(document).ready(function() {
}); });
// fill textfield with current led conf and copy to finalLedArray // fill textfield with current led conf and copy to finalLedArray
$(hyperion).one("cmd-config-getconfig",function(event){ $("#ledconfig").text(JSON.stringify(serverConfig.leds, null, "\t"));
$("#ledconfig").text(JSON.stringify(event.response.result.leds, null, "\t")); finalLedArray = serverConfig.leds;
finalLedArray = event.response.result.leds;
// create and update editor
var conf_editor = null;
$("#leddevices").off().on("change", function() {
generalOptions = serverSchema.properties.device;
specificOptions = serverSchema.properties.alldevices[$(this).val()];
conf_editor = createJsonEditor('editor_container', {
generalOptions : generalOptions,
specificOptions : specificOptions,
});
values_general = {};
values_specific = {};
isCurrentDevice = (serverInfo.info.ledDevices.active == $(this).val());
for(var key in serverConfig.device){
if (key != "type" && key in generalOptions.properties)
values_general[key] = serverConfig.device[key];
};
conf_editor.getEditor("root.generalOptions").setValue( values_general );
if (isCurrentDevice)
{
specificOptions_val = conf_editor.getEditor("root.specificOptions").getValue()
for(var key in specificOptions_val){
values_specific[key] = (key in serverConfig.device) ? serverConfig.device[key] : specificOptions_val[key];
};
conf_editor.getEditor("root.specificOptions").setValue( values_specific );
};
// change save button state based on validation result
conf_editor.validate().length ? $('#btn_submit_controller').attr('disabled', true) : $('#btn_submit_controller').attr('disabled', false);
}); });
// create led device selection // create led device selection
$(hyperion).one("cmd-serverinfo",function(event){ ledDevices = serverInfo.info.ledDevices.available
server = event.response; devRPiSPI = ['apa102', 'ws2801', 'lpd6803', 'lpd8806', 'p9813', 'sk6812spi', 'ws2812spi'];
ledDevices = server.info.ledDevices.available devRPiPWM = ['ws281x'];
devRPiSPI = ['apa102', 'ws2801', 'lpd6803', 'lpd8806', 'p9813', 'sk6812spi', 'ws2812spi']; devRPiGPIO = ['piblaster'];
devRPiPWM = ['ws281x']; devNET = ['atmoorb', 'fadecandy', 'philipshue', 'tinkerforge', 'tpm2net', 'udpe131', 'udph801', 'udpraw'];
devRPiGPIO = ['piblaster']; devUSB = ['adalight', 'dmx', 'atmo', 'hyperionusbasp', 'lightpack', 'multilightpack', 'paintpack', 'rawhid', 'sedu', 'tpm2'];
devNET = ['atmoorb', 'fadecandy', 'philipshue', 'tinkerforge', 'tpm2net', 'udpe131', 'udph801', 'udpraw'];
devUSB = ['adalight', 'dmx', 'atmo', 'hyperionusbasp', 'lightpack', 'multilightpack', 'paintpack', 'rawhid', 'sedu', 'tpm2'];
var optArr = [[]]; var optArr = [[]];
optArr[1]=[]; optArr[1]=[];
optArr[2]=[]; optArr[2]=[];
optArr[3]=[]; optArr[3]=[];
optArr[4]=[]; optArr[4]=[];
optArr[5]=[]; optArr[5]=[];
for (idx=0; idx<ledDevices.length; idx++) for (idx=0; idx<ledDevices.length; idx++)
{ {
if($.inArray(ledDevices[idx], devRPiSPI) != -1) if($.inArray(ledDevices[idx], devRPiSPI) != -1)
optArr[0].push(ledDevices[idx]); optArr[0].push(ledDevices[idx]);
else if($.inArray(ledDevices[idx], devRPiPWM) != -1) else if($.inArray(ledDevices[idx], devRPiPWM) != -1)
optArr[1].push(ledDevices[idx]); optArr[1].push(ledDevices[idx]);
else if($.inArray(ledDevices[idx], devRPiGPIO) != -1) else if($.inArray(ledDevices[idx], devRPiGPIO) != -1)
optArr[2].push(ledDevices[idx]); optArr[2].push(ledDevices[idx]);
else if($.inArray(ledDevices[idx], devNET) != -1) else if($.inArray(ledDevices[idx], devNET) != -1)
optArr[3].push(ledDevices[idx]); optArr[3].push(ledDevices[idx]);
else if($.inArray(ledDevices[idx], devUSB) != -1) else if($.inArray(ledDevices[idx], devUSB) != -1)
optArr[4].push(ledDevices[idx]); optArr[4].push(ledDevices[idx]);
else else
optArr[5].push(ledDevices[idx]); optArr[5].push(ledDevices[idx]);
} }
$("#leddevices").append(createSel(optArr[0], $.i18n('conf_leds_optgroup_RPiSPI'))); $("#leddevices").append(createSel(optArr[0], $.i18n('conf_leds_optgroup_RPiSPI')));
$("#leddevices").append(createSel(optArr[1], $.i18n('conf_leds_optgroup_RPiPWM'))); $("#leddevices").append(createSel(optArr[1], $.i18n('conf_leds_optgroup_RPiPWM')));
$("#leddevices").append(createSel(optArr[2], $.i18n('conf_leds_optgroup_RPiGPIO'))); $("#leddevices").append(createSel(optArr[2], $.i18n('conf_leds_optgroup_RPiGPIO')));
$("#leddevices").append(createSel(optArr[3], $.i18n('conf_leds_optgroup_network'))); $("#leddevices").append(createSel(optArr[3], $.i18n('conf_leds_optgroup_network')));
$("#leddevices").append(createSel(optArr[4], $.i18n('conf_leds_optgroup_usb'))); $("#leddevices").append(createSel(optArr[4], $.i18n('conf_leds_optgroup_usb')));
$("#leddevices").append(createSel(optArr[5], $.i18n('conf_leds_optgroup_debug'))); $("#leddevices").append(createSel(optArr[5], $.i18n('conf_leds_optgroup_debug')));
$("#leddevices").val(serverInfo.info.ledDevices.active);
$("#leddevices").val(server.info.ledDevices.active); $("#leddevices").trigger("change");
$("#leddevices").trigger("change");
});
// validate textfield and update preview // validate textfield and update preview
$("#leds_custom_updsim").off().on("click", function() { $("#leds_custom_updsim").off().on("click", function() {
@ -494,6 +527,21 @@ $(document).ready(function() {
toggleClass('#leds_prev_toggle_num', "btn-danger", "btn-success"); toggleClass('#leds_prev_toggle_num', "btn-danger", "btn-success");
}); });
// open checklist
$('#leds_prev_checklist').off().on("click", function() {
var liList = [$.i18n('conf_leds_leyout_checkp1'),$.i18n('conf_leds_leyout_checkp3'),$.i18n('conf_leds_leyout_checkp2'),$.i18n('conf_leds_leyout_checkp4')];
var ul = document.createElement("ul");
ul.className = "checklist"
for(var i = 0; i<liList.length; i++)
{
var li = document.createElement("li");
li.innerHTML = liList[i];
ul.appendChild(li);
}
showInfoDialog('checklist', "", ul);
});
// nav // nav
$('#leds_cfg_nav a[data-toggle="tab"]').off().on('shown.bs.tab', function (e) { $('#leds_cfg_nav a[data-toggle="tab"]').off().on('shown.bs.tab', function (e) {
var target = $(e.target).attr("href") // activated tab var target = $(e.target).attr("href") // activated tab
@ -504,57 +552,6 @@ $(document).ready(function() {
} }
}); });
// create and update editor
var conf_editor = null;
$("#leddevices").off().on("change", function(event) {
generalOptions = parsedConfSchemaJSON.properties.device;
specificOptions = parsedConfSchemaJSON.properties.alldevices[$(this).val()];
conf_editor = createJsonEditor('editor_container', {
generalOptions : generalOptions,
specificOptions : specificOptions,
});
values_general = {};
values_specific = {};
isCurrentDevice = (server.info.ledDevices.active == $(this).val());
for(var key in parsedConfJSON.device){
if (key != "type" && key in generalOptions.properties)
values_general[key] = parsedConfJSON.device[key];
};
conf_editor.getEditor("root.generalOptions").setValue( values_general );
if (isCurrentDevice)
{
specificOptions_val = conf_editor.getEditor("root.specificOptions").getValue()
for(var key in specificOptions_val){
values_specific[key] = (key in parsedConfJSON.device) ? parsedConfJSON.device[key] : specificOptions_val[key];
};
conf_editor.getEditor("root.specificOptions").setValue( values_specific );
};
if ($(this).val() == "philipshue")
{
$("#huebridge").show();
$("#ip").attr('value', values_specific.output);
$("#user").attr('value', values_specific.username);
if($("#ip").val() != '' && $("#user").val() != '') {
get_hue_lights();
}
}
else
{
$("#huebridge").hide();
}
// change save button state based on validation result
conf_editor.validate().length ? $('#btn_submit_controller').attr('disabled', true) : $('#btn_submit_controller').attr('disabled', false);
});
// save led device config // save led device config
$("#btn_submit_controller").off().on("click", function(event) { $("#btn_submit_controller").off().on("click", function(event) {
@ -574,7 +571,7 @@ $(document).ready(function() {
requestWriteConfig(result) requestWriteConfig(result)
}); });
requestServerConfig(); removeOverlay();
}); });

View File

@ -1,17 +1,15 @@
var conf_editor = null;
var conf_editor = null; var createdCont = false;
$(document).ready(function() {
performTranslation(); performTranslation();
requestLoggingStart(); requestLoggingStart();
schema = parsedConfSchemaJSON.properties; $(document).ready(function() {
$('#conf_cont').append(createOptPanel('fa-reorder', $.i18n("edt_conf_log_heading_title"), 'editor_container', 'btn_submit')); $('#conf_cont').append(createOptPanel('fa-reorder', $.i18n("edt_conf_log_heading_title"), 'editor_container', 'btn_submit'));
if(showOptHelp) if(showOptHelp)
{ {
$('#conf_cont').append(createHelpTable(schema.logger.properties, $.i18n("edt_conf_log_heading_title"))); $('#conf_cont').append(createHelpTable(schema.logger.properties, $.i18n("edt_conf_log_heading_title")));
createHintH("intro", $.i18n('conf_logging_label_intro'), "log_head");
} }
conf_editor = createJsonEditor('editor_container', { conf_editor = createJsonEditor('editor_container', {
@ -26,45 +24,45 @@ $(document).ready(function() {
requestWriteConfig(conf_editor.getValue()); requestWriteConfig(conf_editor.getValue());
}); });
$('#btn_autoscroll').off().on('click',function() {
toggleClass('#btn_autoscroll', "btn-success", "btn-danger");
});
if (!loggingHandlerInstalled) if (!loggingHandlerInstalled)
{ {
loggingHandlerInstalled = true; loggingHandlerInstalled = true;
$(hyperion).on("cmd-logging-update",function(event){ $(hyperion).on("cmd-logging-update",function(event){
if ($("#logmessages").length == 0 && loggingStreamActive) messages = (event.response.result.messages);
if(messages.length != 0 && !createdCont)
{ {
requestLoggingStop(); $('#log_content').html('<pre><div id="logmessages" style="overflow:scroll;max-height:400px"></div></pre><button class="btn btn-primary" id="btn_pbupload">'+$.i18n('conf_logging_btn_pbupload')+'</button><button class="btn btn-success" id="btn_autoscroll" style="margin-left:10px;">'+$.i18n('conf_logging_btn_autoscroll')+'</button>');
createdCont = true;
$('#btn_autoscroll').off().on('click',function() {
toggleClass('#btn_autoscroll', "btn-success", "btn-danger");
});
} }
else for(var idx=0; idx<messages.length; idx++)
{ {
messages = (event.response.result.messages); app_name = messages[idx].appName;
for(var idx=0; idx<messages.length; idx++) logger_name = messages[idx].loggerName;
{ function_ = messages[idx].function;
app_name = messages[idx].appName; line = messages[idx].line;
logger_name = messages[idx].loggerName; file_name = messages[idx].fileName;
function_ = messages[idx].function; msg = messages[idx].message;
line = messages[idx].line; level_string = messages[idx].levelString;
file_name = messages[idx].fileName;
msg = messages[idx].message;
level_string = messages[idx].levelString;
var debug = ""; var debug = "";
if(level_string == "DEBUG") { if(level_string == "DEBUG") {
debug = "&lt;"+file_name+":"+line+":"+function_+"()&gt; "; debug = "&lt;"+file_name+":"+line+":"+function_+"()&gt; ";
}
$("#logmessages").html($("#logmessages").html()+"\n <code>"+"["+app_name+" "+logger_name+"] &lt;"+level_string+"&gt; "+debug+msg+"</code>");
}
if($("#btn_autoscroll").hasClass('btn-success')){
$('#logmessages').stop().animate({
scrollTop: $('#logmessages')[0].scrollHeight
}, 800);
} }
$("#logmessages").html($("#logmessages").html()+"\n <code>"+"["+app_name+" "+logger_name+"] &lt;"+level_string+"&gt; "+debug+msg+"</code>");
}
if($("#btn_autoscroll").hasClass('btn-success')){
$('#logmessages').stop().animate({
scrollTop: $('#logmessages')[0].scrollHeight
}, 800);
} }
}); });
} }
removeOverlay();
}); });

View File

@ -1,13 +1,11 @@
$(document).ready( function() {
performTranslation();
var conf_editor_json = null; var conf_editor_json = null;
var conf_editor_proto = null; var conf_editor_proto = null;
var conf_editor_bobl = null; var conf_editor_bobl = null;
var conf_editor_udpl = null; var conf_editor_udpl = null;
var conf_editor_forw = null; var conf_editor_forw = null;
$(hyperion).one("cmd-config-getschema", function(event) {
schema = parsedConfSchemaJSON.properties;
if(showOptHelp) if(showOptHelp)
{ {
@ -118,11 +116,16 @@ $(hyperion).one("cmd-config-getschema", function(event) {
}); });
} }
}); //create introduction
if(showOptHelp)
{
$(document).ready( function() { createHint("intro", $.i18n('conf_network_json_intro'), "editor_container_jsonserver");
performTranslation(); createHint("intro", $.i18n('conf_network_proto_intro'), "editor_container_protoserver");
requestServerConfigSchema(); createHint("intro", $.i18n('conf_network_bobl_intro'), "editor_container_boblightserver");
createHint("intro", $.i18n('conf_network_udpl_intro'), "editor_container_udplistener");
createHint("intro", $.i18n('conf_network_forw_intro'), "editor_container_forwarder");
}
removeOverlay();
}); });

View File

@ -1,9 +1,81 @@
$(document).ready(function() {
performTranslation();
var oldEffects = [];
var cpcolor = '#B500FF';
var mappingList = serverSchema.properties.color.properties.imageToLedMappingType.enum;
//create html
createTable('ssthead', 'sstbody', 'sstcont');
$('.ssthead').html(createTableRow([$.i18n('remote_input_origin'), $.i18n('remote_input_owner'), $.i18n('remote_input_priority'), $.i18n('remote_input_status')], true, true));
createTable('crthead', 'crtbody', 'adjust_content', true);
//create introduction
if(showOptHelp)
{
createHint("intro", $.i18n('remote_color_intro', $.i18n('remote_losthint')), "color_intro");
createHint("intro", $.i18n('remote_input_intro', $.i18n('remote_losthint')), "sstcont");
createHint("intro", $.i18n('remote_adjustment_intro', $.i18n('remote_losthint')), "adjust_content");
createHint("intro", $.i18n('remote_components_intro', $.i18n('remote_losthint')), "comp_intro");
createHint("intro", $.i18n('remote_maptype_intro', $.i18n('remote_losthint')), "maptype_intro");
}
//color adjustment
var sColor = sortProperties(serverSchema.properties.color.properties.channelAdjustment.items.properties)
var values = serverInfo.info.adjustment[0]
for(key in sColor)
{
if(sColor[key].key != "id" && sColor[key].key != "leds")
{
var title = '<label for="cr_'+sColor[key].key+'">'+$.i18n(sColor[key].title)+'</label>';
var property;
var value = values[sColor[key].key]
if(sColor[key].type == "array")
{
property = '<div id="cr_'+sColor[key].key+'" class="input-group colorpicker-component" ><input type="text" class="form-control" /><span class="input-group-addon"><i></i></span></div>';
$('.crtbody').append(createTableRow([title, property], false, true));
createCP('cr_'+sColor[key].key, value, function(rgb,hex,e){
requestAdjustment(e.target.id.substr(e.target.id.indexOf("_") + 1), '['+rgb.r+','+rgb.g+','+rgb.b+']');
});
}
else
{
if(sColor[key].key == "brightness" || sColor[key].key == "brightnessMin")
property = '<input id="cr_'+sColor[key].key+'" type="number" class="form-control" min="0.0" max="1.0" step="0.05" value="'+value+'"/>';
else
property = '<input id="cr_'+sColor[key].key+'" type="number" class="form-control" min="0.0" max="4.0" step="0.1" value="'+value+'"/>';
$('.crtbody').append(createTableRow([title, property], false, true));
$('#cr_'+sColor[key].key).off().on('change', function(e){
requestAdjustment(e.target.id.substr(e.target.id.indexOf("_") + 1), e.currentTarget.value);
});
}
}
}
function updateRemote()
{
if ($('#componentsbutton').length == 0)
{
$(hyperion).off("cmd-serverinfo",updateRemote);
}
else
{
updateInputSelect();
updateLedMapping();
updateComponents();
updateEffectlist();
}
}
function updateInputSelect() function updateInputSelect()
{ {
$('#sstbody').html(""); $('.sstbody').html("");
var data = ""; var data = "";
var prios = parsedServerInfoJSON.info.priorities var prios = serverInfo.info.priorities
var i; var i;
for(i = 0; i < prios.length; i++) for(i = 0; i < prios.length; i++)
{ {
@ -30,7 +102,7 @@
if(compId == "10") if(compId == "10")
owner = $.i18n('remote_effects_label_effects')+' '+owner; owner = $.i18n('remote_effects_label_effects')+' '+owner;
if(compId == "9") if(compId == "9")
owner = $.i18n('remote_colors_label_color')+' '+'<div style="width:18px; height:18px; border-radius:20px; margin-bottom:-4px; border:1px grey solid; background-color: rgb('+prios[i].value.RGB+'); display:inline-block" title="RGB: ('+prios[i].value.RGB+')"></div>'; owner = $.i18n('remote_color_label_color')+' '+'<div style="width:18px; height:18px; border-radius:20px; margin-bottom:-4px; border:1px grey solid; background-color: rgb('+prios[i].value.RGB+'); display:inline-block" title="RGB: ('+prios[i].value.RGB+')"></div>';
if(compId == "7") if(compId == "7")
owner = $.i18n('general_comp_GRABBER')+': ('+owner+')'; owner = $.i18n('general_comp_GRABBER')+': ('+owner+')';
if(compId == "8") if(compId == "8")
@ -39,6 +111,8 @@
owner = $.i18n('general_comp_BOBLIGHTSERVER'); owner = $.i18n('general_comp_BOBLIGHTSERVER');
if(compId == "5") if(compId == "5")
owner = $.i18n('general_comp_UDPLISTENER'); owner = $.i18n('general_comp_UDPLISTENER');
if(owner == "Off")
owner = $.i18n('general_btn_off');
if(duration) if(duration)
owner += '<br/><span style="font-size:80%; color:grey;">'+$.i18n('remote_input_duration')+' '+duration.toFixed(0)+$.i18n('edt_append_s')+'</span>'; owner += '<br/><span style="font-size:80%; color:grey;">'+$.i18n('remote_input_duration')+' '+duration.toFixed(0)+$.i18n('edt_append_s')+'</span>';
@ -48,11 +122,11 @@
btn += '<button type="button" class="btn btn-sm btn-danger" style="margin-left:10px;" onclick="requestPriorityClear('+priority+');"><i class="fa fa-close"></button>'; btn += '<button type="button" class="btn btn-sm btn-danger" style="margin-left:10px;" onclick="requestPriorityClear('+priority+');"><i class="fa fa-close"></button>';
if(btn_type != 'default') if(btn_type != 'default')
$('#sstbody').append(createTableRow([origin, owner, priority, btn], false, true)); $('.sstbody').append(createTableRow([origin, owner, priority, btn], false, true));
} }
var btn_auto_color = (parsedServerInfoJSON.info.priorities_autoselect? "btn-success" : "btn-danger"); var btn_auto_color = (serverInfo.info.priorities_autoselect? "btn-success" : "btn-danger");
var btn_auto_state = (parsedServerInfoJSON.info.priorities_autoselect? "disabled" : "enabled"); var btn_auto_state = (serverInfo.info.priorities_autoselect? "disabled" : "enabled");
var btn_auto_text = (parsedServerInfoJSON.info.priorities_autoselect? $.i18n('general_btn_on') : $.i18n('general_btn_off')); var btn_auto_text = (serverInfo.info.priorities_autoselect? $.i18n('general_btn_on') : $.i18n('general_btn_off'));
$('#auto_btn').html('<button id="srcBtn'+i+'" type="button" '+btn_auto_state+' class="btn '+btn_auto_color+'" style="margin:10px;display:inline-block;" onclick="requestSetSource(\'auto\');">'+$.i18n('remote_input_label_autoselect')+' ('+btn_auto_text+')</button>'); $('#auto_btn').html('<button id="srcBtn'+i+'" type="button" '+btn_auto_state+' class="btn '+btn_auto_color+'" style="margin:10px;display:inline-block;" onclick="requestSetSource(\'auto\');">'+$.i18n('remote_input_label_autoselect')+' ('+btn_auto_text+')</button>');
var max_width=100; var max_width=100;
@ -65,8 +139,7 @@
function updateLedMapping() function updateLedMapping()
{ {
mappingList = ["multicolor_mean", "unicolor_mean"]; mapping = serverInfo.info.ledMAppingType;
mapping = parsedServerInfoJSON.info.ledMAppingType;
$('#mappingsbutton').html(""); $('#mappingsbutton').html("");
for(var ix = 0; ix < mappingList.length; ix++) for(var ix = 0; ix < mappingList.length; ix++)
@ -76,52 +149,42 @@
else else
btn_style = 'btn-warning'; btn_style = 'btn-warning';
$('#mappingsbutton').append('<button type="button" id="lmBtn_'+mappingList[ix]+'" class="btn btn-lg '+btn_style+'" style="margin:10px;min-width:200px" onclick="requestMappingType(\''+mappingList[ix]+'\');">'+$.i18n('remote_maptype_label_'+mappingList[ix])+'</button><br/>'); $('#mappingsbutton').append('<button type="button" id="lmBtn_'+mappingList[ix]+'" class="btn '+btn_style+'" style="margin:10px;min-width:200px" onclick="requestMappingType(\''+mappingList[ix]+'\');">'+$.i18n('remote_maptype_label_'+mappingList[ix])+'</button><br/>');
} }
} }
function updateComponents(event) { function updateComponents()
if ($('#componentsbutton').length == 0) {
components = serverInfo.info.components;
// create buttons
$('#componentsbutton').html("");
for ( idx=0; idx<components.length;idx++)
{ {
$(hyperion).off("cmd-serverinfo",updateComponents); enable_style = (components[idx].enabled? "btn-success" : "btn-danger");
} enable_icon = (components[idx].enabled? "fa-play" : "fa-stop");
else comp_name = components[idx].name;
{ comp_btn_id = "comp_btn_"+comp_name;
updateInputSelect();
updateLedMapping(); // create btn if not there
components = event.response.info.components; if ($("#"+comp_btn_id).length == 0)
// create buttons
$('#componentsbutton').html("");
for ( idx=0; idx<components.length;idx++)
{ {
enable_style = (components[idx].enabled? "btn-success" : "btn-danger"); d='<p><button type="button" id="'+comp_btn_id+'" class="btn '+enable_style
enable_icon = (components[idx].enabled? "fa-play" : "fa-stop"); +'" onclick="requestSetComponentState(\''+comp_name+'\','+(!components[idx].enabled)
comp_name = components[idx].name; +')"><i id="'+comp_btn_id+'_icon" class="fa '+enable_icon+'"></i></button> '+$.i18n('general_comp_'+components[idx].name)+'</p>';
comp_btn_id = "comp_btn_"+comp_name; $('#componentsbutton').append(d);
}
// create btn if not there else // already create, update state
if ($("#"+comp_btn_id).length == 0) {
{ setClassByBool( $('#'+comp_btn_id) , components[idx].enabled, "btn-danger", "btn-success" );
d='<p><button type="button" id="'+comp_btn_id+'" class="btn '+enable_style setClassByBool( $('#'+comp_btn_id+"_icon"), components[idx].enabled, "fa-stop" , "fa-play" );
+'" onclick="requestSetComponentState(\''+comp_name+'\','+(!components[idx].enabled) $('#'+comp_btn_id).attr("onclick",'requestSetComponentState(\''+comp_name+'\','+(!components[idx].enabled)+')');
+')"><i id="'+comp_btn_id+'_icon" class="fa '+enable_icon+'"></i></button> '+$.i18n('general_comp_'+components[idx].name)+'</p>';
$('#componentsbutton').append(d);
}
else // already create, update state
{
setClassByBool( $('#'+comp_btn_id) , components[idx].enabled, "btn-danger", "btn-success" );
setClassByBool( $('#'+comp_btn_id+"_icon"), components[idx].enabled, "fa-stop" , "fa-play" );
$('#'+comp_btn_id).attr("onclick",'requestSetComponentState(\''+comp_name+'\','+(!components[idx].enabled)+')');
}
} }
} }
} }
var oldEffects = []; function updateEffectlist()
{
function updateEffectlist(event){ var newEffects = serverInfo.info.effects;
var newEffects = event.response.info.effects;
if (newEffects.length != oldEffects.length) if (newEffects.length != oldEffects.length)
{ {
$('#effect_select').html('<option value="__none__"></option>'); $('#effect_select').html('<option value="__none__"></option>');
@ -143,53 +206,37 @@
} }
} }
$(document).ready(function() { // colorpicker and effect
performTranslation(); if (getStorage('rmcpcolor') != null)
createTable('ssthead', 'sstbody', 'sstcont'); cpcolor = getStorage('rmcpcolor');
$('#ssthead').html(createTableRow([$.i18n('remote_input_origin'), $.i18n('remote_input_owner'), $.i18n('remote_input_priority'), $.i18n('remote_input_status')], true, true));
// color createCP('cp2', cpcolor, function(rgb,hex){
$(function() { requestSetColor(rgb.r, rgb.g, rgb.b);
$('#cp2').colorpicker({ $("#effect_select").val("__none__");
format: 'rgb', setStorage('rmcpcolor', hex);
customClass: 'colorpicker-2x', });
color: '#B500FF',
sliders: { $("#reset_color").off().on("click", function(){
saturation: { requestPriorityClear();
maxLeft: 200, $("#effect_select").val("__none__");
maxTop: 200 });
},
hue: { $("#effect_select").off().on("change", function(event) {
maxTop: 200 efx = $(this).val();
}, if(efx != "__none__")
alpha: { {
maxTop: 200 requestPriorityClear();
}, $(hyperion).one("cmd-clear", function(event) {
} setTimeout(function() {requestPlayEffect(efx)}, 100);
}); });
$('#cp2').colorpicker().on('changeColor', function(e) { }
color = e.color.toRGB(); });
$("#effect_select").val("__none__");
requestSetColor(color.r, color.g, color.b);
});
});
$("#reset_color").off().on("click", requestPriorityClear); //force first update
updateRemote();
$("#effect_select").off().on("change", function(event) { // interval updates
efx = $(this).val(); $(hyperion).on("cmd-serverinfo",updateRemote);
if(efx != "__none__")
{
requestPriorityClear();
$(hyperion).one("cmd-clear", function(event) {
setTimeout(function() {requestPlayEffect(efx)}, 100);
});
}
});
// components
$(hyperion).on("cmd-serverinfo",updateComponents);
// effects
$(hyperion).on("cmd-serverinfo",updateEffectlist);
removeOverlay();
}); });

View File

@ -1,7 +1,7 @@
$(document).ready( function() {
performTranslation();
var conf_editor = null; var conf_editor = null;
$(hyperion).one("cmd-config-getschema", function(event) {
schema = parsedConfSchemaJSON.properties;
$('#conf_cont').append(createOptPanel('fa-wrench', $.i18n("edt_conf_webc_heading_title"), 'editor_container', 'btn_submit')); $('#conf_cont').append(createOptPanel('fa-wrench', $.i18n("edt_conf_webc_heading_title"), 'editor_container', 'btn_submit'));
if(showOptHelp) if(showOptHelp)
@ -20,11 +20,10 @@ $(hyperion).one("cmd-config-getschema", function(event) {
$('#btn_submit').off().on('click',function() { $('#btn_submit').off().on('click',function() {
requestWriteConfig(conf_editor.getValue()); requestWriteConfig(conf_editor.getValue());
}); });
});
if(showOptHelp)
createHint("intro", $.i18n('conf_webconfig_label_intro'), "editor_container");
$(document).ready( function() {
performTranslation(); removeOverlay();
requestServerConfigSchema();
}); });

View File

@ -1,16 +1,15 @@
// global vars // global vars
var webPrio = 1; var webPrio = 1;
var showOptHelp = true; var showOptHelp;
var currentVersion; var currentVersion;
var cleanCurrentVersion;
var latestVersion; var latestVersion;
var cleanLatestVersion; var serverInfo = {};
var parsedServerInfoJSON = {};
var parsedUpdateJSON = {}; var parsedUpdateJSON = {};
var parsedConfSchemaJSON = {}; var serverSchema = {};
var parsedConfJSON = {}; var serverConfig = {};
var hyperionport = 19444; var schema;
var jsonPort = 19444;
var websocket = null; var websocket = null;
var hyperion = {}; var hyperion = {};
var wsTan = 1; var wsTan = 1;
@ -71,7 +70,7 @@ function initWebSocket()
if (websocket == null) if (websocket == null)
{ {
$.ajax({ url: "/cgi/cfg_jsonserver" }).done(function(data) { $.ajax({ url: "/cgi/cfg_jsonserver" }).done(function(data) {
hyperionport = data.substr(1); jsonPort = data.substr(1);
websocket = new WebSocket('ws://'+document.location.hostname+data); websocket = new WebSocket('ws://'+document.location.hostname+data);
websocket.onopen = function (event) { websocket.onopen = function (event) {
@ -104,6 +103,8 @@ function initWebSocket()
default: reason = "Unknown reason"; default: reason = "Unknown reason";
} }
$(hyperion).trigger({type:"close", reason:reason}); $(hyperion).trigger({type:"close", reason:reason});
watchdog = 10;
connectionLostDetection();
}; };
websocket.onmessage = function (event) { websocket.onmessage = function (event) {
@ -243,15 +244,15 @@ function requestSetSource(prio)
function requestWriteConfig(config, full) function requestWriteConfig(config, full)
{ {
if(full === true) if(full === true)
parsedConfJSON = config; serverConfig = config;
else else
{ {
jQuery.each(config, function(i, val) { jQuery.each(config, function(i, val) {
parsedConfJSON[i] = val; serverConfig[i] = val;
}); });
} }
var config_str = escape(encode_utf8(JSON.stringify(parsedConfJSON))); var config_str = escape(encode_utf8(JSON.stringify(serverConfig)));
$.post( "/cgi/cfg_set", { cfg: config_str }) $.post( "/cgi/cfg_set", { cfg: config_str })
.done(function( data ) { .done(function( data ) {
@ -295,3 +296,10 @@ function requestMappingType(type)
sendToHyperion("processing", "", '"mappingType": "'+type+'"'); sendToHyperion("processing", "", '"mappingType": "'+type+'"');
} }
function requestAdjustment(type, value, complete)
{
if(complete === true)
sendToHyperion("adjustment", "", '"adjustment": '+type+'');
else
sendToHyperion("adjustment", "", '"adjustment": {"'+type+'": '+value+'}');
}

View File

@ -4,11 +4,19 @@ $(document).ready(function() {
var ledsim_height = 489; var ledsim_height = 489;
var dialog; var dialog;
var leds; var leds;
var lC = false;
$(hyperion).one("cmd-config-getconfig",function(event){ $(hyperion).one("ready",function(){
leds = event.response.result.leds; leds = serverConfig.leds;
if(storageComp() && getStorage('ledsim_width') != null) if(showOptHelp)
{
createHint('intro', $.i18n('main_ledsim_text'), 'ledsim_text');
$('#ledsim_text').css({'margin':'10px 15px 0px 15px'});
$('#ledsim_text .intro-hint').css("margin","0px")
}
if(getStorage('ledsim_width') != null)
{ {
ledsim_width = getStorage('ledsim_width'); ledsim_width = getStorage('ledsim_width');
ledsim_height = getStorage('ledsim_height'); ledsim_height = getStorage('ledsim_height');
@ -29,7 +37,11 @@ $(document).ready(function() {
updateLedLayout(); updateLedLayout();
}, },
opened: function (e) { opened: function (e) {
updateLedLayout(); if(!lC)
{
updateLedLayout();
lC = true;
}
modalOpened = true; modalOpened = true;
requestLedColorsStart(); requestLedColorsStart();
@ -40,11 +52,8 @@ $(document).ready(function() {
modalOpened = false; modalOpened = false;
}, },
resizeStop: function (e) { resizeStop: function (e) {
if(storageComp()) setStorage("ledsim_width", $("#ledsim_dialog").outerWidth());
{ setStorage("ledsim_height", $("#ledsim_dialog").outerHeight());
setStorage("ledsim_width", $("#ledsim_dialog").outerWidth());
setStorage("ledsim_height", $("#ledsim_dialog").outerHeight());
}
} }
}); });
}); });

File diff suppressed because one or more lines are too long

View File

@ -494,7 +494,7 @@ JSONEditor.prototype = {
return this.editors[path]; return this.editors[path];
}, },
watch: function(path,callback) { watch: function(path,callback) {
this.watchlist = this.watchlist || {}; this.watchlist = this.watchlist || {};
this.watchlist[path] = this.watchlist[path] || []; this.watchlist[path] = this.watchlist[path] || [];
this.watchlist[path].push(callback); this.watchlist[path].push(callback);
@ -517,7 +517,7 @@ JSONEditor.prototype = {
return this; return this;
}, },
notifyWatchers: function(path) { notifyWatchers: function(path) {
if(!this.watchlist || !this.watchlist[path]) return this; if(!this.watchlist || !this.watchlist[path]) return this;
for(var i=0; i<this.watchlist[path].length; i++) { for(var i=0; i<this.watchlist[path].length; i++) {
this.watchlist[path][i](); this.watchlist[path][i]();
} }
@ -6284,7 +6284,7 @@ JSONEditor.AbstractTheme = Class.extend({
return el; return el;
}, },
getHeader: function(text) { getHeader: function(text) {
var el = document.createElement('h3'); var el = document.createElement('h4');
if(text.innerHTML == ''){ if(text.innerHTML == ''){
text.style.display = 'none'; text.style.display = 'none';
return text; return text;

View File

@ -1,9 +1,11 @@
$(function() { $(function() {
$('#side-menu').metisMenu(); $('#side-menu').metisMenu();
}); });
var oldWidth;
//Loads the correct sidebar on window load, //Loads the correct sidebar on window load,
//collapses the sidebar on window resize. //collapses the sidebar on window resize.
// Sets the min-height of #page-wrapper to window size // Sets the min-height of #page-wrapper to window size
@ -11,19 +13,29 @@ $(function() {
$(window).bind("load resize", function() { $(window).bind("load resize", function() {
var topOffset = 50; var topOffset = 50;
var width = (this.window.innerWidth > 0) ? this.window.innerWidth : this.screen.width; var width = (this.window.innerWidth > 0) ? this.window.innerWidth : this.screen.width;
if (width < 768) { if(oldWidth != width)
$('div.navbar-collapse').addClass('collapse'); {
topOffset = 100; // 2-row-menu if (width < 768)
} else { {
$('div.navbar-collapse').removeClass('collapse'); $('#main-nav').css({"position":"fixed","right":"-235px","top":"45px","width":"230px","border":"1px solid rgba(0, 0, 0, .2)","box-shadow":"0 3px 9px rgba(0, 0, 0, .5)"});
} topOffset = 100; // 2-row-menu
$('.mnava').on('click', function(){
$("html, body").animate({ scrollTop: 0 }, "fast");
$( "#main-nav" ).animate({right: "-235px",}, 300 );
$(".navbar-toggle").addClass("closed");
});
}
else
$( "#main-nav" ).removeAttr("style").css({"position":"absolute"});
var height = ((this.window.innerHeight > 0) ? this.window.innerHeight : this.screen.height) - 1;
height = height - topOffset; var height = ((this.window.innerHeight > 0) ? this.window.innerHeight : this.screen.height) - 1;
if (height < 1) height = 1; height = height - topOffset;
if (height > topOffset) { if (height < 1) height = 1;
$("#page-wrapper").css("min-height", (height-11) + "px"); if (height > topOffset) {
} $("#page-wrapper").css("min-height", (height-11) + "px");
}
}
}); });
var url = window.location; var url = window.location;
@ -42,3 +54,16 @@ $(function() {
} }
} }
}); });
$('.navbar-toggle').off().on('click', function(){
if($('#main-nav').css("right") != "-2px")
{
$('#main-nav').animate({right: "-2px",}, 300 );
$(".navbar-toggle").removeClass("closed");
}
else
{
$('#main-nav').animate({right: "-235px",}, 300 );
$(".navbar-toggle").addClass("closed");
}
});

View File

@ -45,8 +45,8 @@ $(document).ready( function() {
initTrans('auto'); initTrans('auto');
storedLang = 'auto'; storedLang = 'auto';
storedAccess = "default"; storedAccess = "default";
$('#btn_setlang').toggle(); $('#btn_setlang').attr("disabled", true);
$('#btn_setaccess').toggle(); $('#btn_setaccess').attr("disabled", true);
} }
$('#btn_setlang').off().on('click',function() { $('#btn_setlang').off().on('click',function() {
@ -78,14 +78,11 @@ $(document).ready( function() {
}); });
//access //access
if (storageComp()) storedAccess = getStorage("accesslevel");
if (storedAccess == null)
{ {
storedAccess = getStorage("accesslevel"); setStorage("accesslevel", "default");
if (storedAccess == null) storedAccess = "default";
{
setStorage("accesslevel", "default");
storedAccess = "default";
}
} }
$('#btn_setaccess').off().on('click',function() { $('#btn_setaccess').off().on('click',function() {

View File

@ -1,3 +1,10 @@
var prevTag;
function removeOverlay()
{
$("#loading_overlay").removeClass("overlay");
}
function reload() function reload()
{ {
location.reload(); location.reload();
@ -10,15 +17,27 @@ function storageComp()
return false; return false;
} }
function getStorage(item) function getStorage(item, session)
{ {
return localStorage.getItem(item); if(storageComp())
{
if(session === true)
return sessionStorage.getItem(item);
else
return localStorage.getItem(item);
}
return null;
} }
function setStorage(item, value) function setStorage(item, value, session)
{ {
localStorage.setItem(item, value); if(storageComp())
return true; {
if(session === true)
sessionStorage.setItem(item, value);
else
localStorage.setItem(item, value);
}
} }
function debugMessage(msg) function debugMessage(msg)
@ -29,15 +48,42 @@ function debugMessage(msg)
} }
} }
function bindNavToContent(containerId, fileName, loadNow) function getHashtag()
{ {
$("#page-content").off(); if(getStorage('lasthashtag', true) != null)
$(containerId).on("click", function() { return getStorage('lasthashtag', true);
$("#page-content").load("/content/"+fileName+".html"); else
});
if (loadNow)
{ {
$(containerId).trigger("click"); var tag = document.URL;
tag = tag.substr(tag.indexOf("#") + 1);
if(tag == "" || typeof tag === "undefined" || tag.startsWith("http"))
tag = "dashboard"
return tag;
}
}
function loadContent(event)
{
var tag;
if(typeof event != "undefined")
{
tag = event.currentTarget.hash;
tag = tag.substr(tag.indexOf("#") + 1);
setStorage('lasthashtag', tag, true);
}
else
tag = getHashtag();
if(prevTag != tag)
{
prevTag = tag;
$("#page-content").off();
$("#page-content").load("/content/"+tag+".html", function(response,status,xhr){
if(status == "error")
$("#page-content").html('<h3>The page you requested is no longer available, click on another menu item!</h3>');
removeOverlay();
});
} }
} }
@ -97,7 +143,7 @@ function showInfoDialog(type,header,message)
} }
else if (type == "select"){ else if (type == "select"){
$('#id_body').html('<img style="margin-bottom:20px" src="img/hyperion/hyperionlogo.png" alt="Redefine ambient light!">'); $('#id_body').html('<img style="margin-bottom:20px" src="img/hyperion/hyperionlogo.png" alt="Redefine ambient light!">');
$('#id_footer').html('<button type="button" id="id_btn_saveset" class="btn btn-success" data-dismiss="modal"><i class="fa fa-fw fa-save"></i>'+$.i18n('general_btn_saveandreload')+'</button>'); $('#id_footer').html('<button type="button" id="id_btn_saveset" class="btn btn-primary" data-dismiss="modal"><i class="fa fa-fw fa-save"></i>'+$.i18n('general_btn_saveandreload')+'</button>');
$('#id_footer').append('<button type="button" class="btn btn-danger" data-dismiss="modal"><i class="fa fa-fw fa-close"></i>'+$.i18n('general_btn_cancel')+'</button>'); $('#id_footer').append('<button type="button" class="btn btn-danger" data-dismiss="modal"><i class="fa fa-fw fa-close"></i>'+$.i18n('general_btn_cancel')+'</button>');
} }
else if (type == "uilock"){ else if (type == "uilock"){
@ -109,6 +155,13 @@ function showInfoDialog(type,header,message)
$('#id_footer').html('<button type="button" id="id_btn_import" class="btn btn-warning" data-dismiss="modal"><i class="fa fa-fw fa-save"></i>'+$.i18n('general_btn_saverestart')+'</button>'); $('#id_footer').html('<button type="button" id="id_btn_import" class="btn btn-warning" data-dismiss="modal"><i class="fa fa-fw fa-save"></i>'+$.i18n('general_btn_saverestart')+'</button>');
$('#id_footer').append('<button type="button" class="btn btn-danger" data-dismiss="modal"><i class="fa fa-fw fa-close"></i>'+$.i18n('general_btn_cancel')+'</button>'); $('#id_footer').append('<button type="button" class="btn btn-danger" data-dismiss="modal"><i class="fa fa-fw fa-close"></i>'+$.i18n('general_btn_cancel')+'</button>');
} }
else if (type == "checklist")
{
$('#id_body').html('<img style="margin-bottom:20px" src="img/hyperion/hyperionlogo.png" alt="Redefine ambient light!">');
$('#id_body').append('<h4 style="font-weight:bold;text-transform:uppercase;">'+$.i18n('infoDialog_checklist_title')+'</h4>');
$('#id_body').append(message);
$('#id_footer').html('<button type="button" class="btn btn-primary" data-dismiss="modal">'+$.i18n('general_btn_ok')+'</button>');
}
$('#id_body').append('<h4 style="font-weight:bold;text-transform:uppercase;">'+header+'</h4>'); $('#id_body').append('<h4 style="font-weight:bold;text-transform:uppercase;">'+header+'</h4>');
$('#id_body').append(message); $('#id_body').append(message);
@ -123,6 +176,48 @@ function showInfoDialog(type,header,message)
}); });
} }
function createHintH(type, text, container)
{
if(type = "intro")
tclass = "introd";
$('#'+container).prepend('<div class="'+tclass+'"><h4 style="font-size:16px">'+text+'</h4><hr/></div>');
}
function createHint(type, text, container)
{
var fe, tclass;
if(type == "intro")
{
fe = '';
tclass = "intro-hint";
}
else if(type == "info")
{
fe = '<div style="font-size:25px;text-align:center"><i class="fa fa-info"></i></div><div style="text-align:center;font-size:13px">Information</div>';
tclass = "info-hint";
}
else if(type == "wizard")
{
fe = '<div style="font-size:25px;text-align:center"><i class="fa fa-magic"></i></div><div style="text-align:center;font-size:13px">Information</div>';
tclass = "wizard-hint";
}
else if(type == "warning")
{
fe = '<div style="font-size:25px;text-align:center"><i class="fa fa-info"></i></div><div style="text-align:center;font-size:13px">Information</div>';
tclass = "warning-hint";
}
if(fe == "")
$('#'+container).prepend('<div class="'+tclass+'">'+text+'</div>');
else
{
createTable('','htb',container, true, tclass);
$('#'+container+' .htb').append(createTableRow([fe ,text],false,true));
}
}
function isJsonString(str) function isJsonString(str)
{ {
try try
@ -163,7 +258,7 @@ function createJsonEditor(container,schema,setconfig,usePanel)
if(usePanel) if(usePanel)
{ {
$('#'+container+' .well').first().removeClass('well well-sm'); $('#'+container+' .well').first().removeClass('well well-sm');
$('#'+container+' h3').remove(); $('#'+container+' h4').remove();
$('#'+container+' .well').first().removeClass('well well-sm'); $('#'+container+' .well').first().removeClass('well well-sm');
} }
@ -171,32 +266,84 @@ function createJsonEditor(container,schema,setconfig,usePanel)
{ {
for(var key in editor.root.editors) for(var key in editor.root.editors)
{ {
editor.getEditor("root."+key).setValue( parsedConfJSON[key] ); editor.getEditor("root."+key).setValue( serverConfig[key] );
} }
} }
return editor; return editor;
} }
function rgbToHex(rgb)
{
if(rgb.length == 3)
{
return "#" +
("0" + parseInt(rgb[0],10).toString(16)).slice(-2) +
("0" + parseInt(rgb[1],10).toString(16)).slice(-2) +
("0" + parseInt(rgb[2],10).toString(16)).slice(-2);
}
else
debugMessage('rgbToHex: Given rgb is no array or has wrong length');
}
function createCP(id, color, cb)
{
if(Array.isArray(color))
color = rgbToHex(color);
else if(color == "undefined")
color = "#AA3399";
if(color.startsWith("#"))
{
$('#'+id).colorpicker({
format: 'rgb',
customClass: 'colorpicker-2x',
color: color,
sliders: {
saturation: {
maxLeft: 200,
maxTop: 200
},
hue: {
maxTop: 200
},
}
});
$('#'+id).colorpicker().on('changeColor', function(e) {
rgb = e.color.toRGB();
hex = e.color.toHex();
cb(rgb,hex,e);
});
}
else
debugMessage('createCP: Given color is not legit');
}
// Creates a table with thead and tbody ids // Creates a table with thead and tbody ids
// @param string hid : a id for thead // @param string hid : a class for thead
// @param string bid : a id for tbody // @param string bid : a class for tbody
// @param string cont : a container id to html() the table // @param string cont : a container id to html() the table
function createTable(hid, bid, cont) // @param string bless: if true the table is borderless
function createTable(hid, bid, cont, bless, tclass)
{ {
var table = document.createElement('table'); var table = document.createElement('table');
var thead = document.createElement('thead'); var thead = document.createElement('thead');
var tbody = document.createElement('tbody'); var tbody = document.createElement('tbody');
table.className = "table"; table.className = "table";
if(bless === true)
table.className += " borderless";
if(typeof tclass !== "undefined")
table.className += " "+tclass;
table.style.marginBottom = "0px"; table.style.marginBottom = "0px";
thead.setAttribute("id", hid); if(hid != "")
tbody.setAttribute("id", bid); thead.className = hid;
tbody.className = bid;
table.appendChild(thead); if(hid != "")
table.appendChild(thead);
table.appendChild(tbody); table.appendChild(tbody);
$('#'+cont).html(table); $('#'+cont).append(table);
} }
// Creates a table row <tr> // Creates a table row <tr>
@ -237,43 +384,58 @@ function createOptPanel(phicon, phead, bodyid, footerid)
{ {
phead = '<i class="fa '+phicon+' fa-fw"></i>'+phead; phead = '<i class="fa '+phicon+' fa-fw"></i>'+phead;
pfooter = document.createElement('button'); pfooter = document.createElement('button');
pfooter.className = "btn btn-success"; pfooter.className = "btn btn-primary";
pfooter.setAttribute("id", footerid); pfooter.setAttribute("id", footerid);
pfooter.innerHTML = '<i class="fa fa-fw fa-save"></i>'+$.i18n('general_button_savesettings'); pfooter.innerHTML = '<i class="fa fa-fw fa-save"></i>'+$.i18n('general_button_savesettings');
return createPanel(phead, "", pfooter, "panel-default", bodyid); return createPanel(phead, "", pfooter, "panel-default", bodyid);
} }
function sortProperties(list)
{
for(key in list)
{
list[key].key = key;
}
list = $.map(list, function(value, index) {
return [value];
});
return list.sort(function(a,b) {
return a.propertyOrder - b.propertyOrder;
});
}
function createHelpTable(list, phead){ function createHelpTable(list, phead){
var table = document.createElement('table'); var table = document.createElement('table');
var thead = document.createElement('thead'); var thead = document.createElement('thead');
var tbody = document.createElement('tbody'); var tbody = document.createElement('tbody');
//console.log(sortProperties(list)); list = sortProperties(list);
phead = '<i class="fa fa-fw fa-info-circle"></i>'+phead+' '+$.i18n("conf_helptable_expl"); phead = '<i class="fa fa-fw fa-info-circle"></i>'+phead+' '+$.i18n("conf_helptable_expl");
table.className = 'table table-hover borderless'; table.className = 'table table-hover borderless';
thead.appendChild(createTableRow([$.i18n('conf_helptable_option'), $.i18n('conf_helptable_expl')], true, false)); thead.appendChild(createTableRow([$.i18n('conf_helptable_option'), $.i18n('conf_helptable_expl')], true, false));
for (key in list)
for (key in list)
{
if(list[key].access != 'system')
{ {
if(list[key].access != 'system') var text = list[key].title.replace('title', 'expl');
tbody.appendChild(createTableRow([$.i18n(list[key].title), $.i18n(text)], false, false));
if(list[key].items && list[key].items.properties)
{ {
var text = list[key].title.replace('title', 'expl'); var ilist = sortProperties(list[key].items.properties);
tbody.appendChild(createTableRow([$.i18n(list[key].title), $.i18n(text)], false, false)); for (ikey in ilist)
if(list[key].items && list[key].items.properties)
{ {
var ilist = list[key].items.properties;
for (ikey in ilist)
{
var itext = ilist[ikey].title.replace('title', 'expl'); var itext = ilist[ikey].title.replace('title', 'expl');
tbody.appendChild(createTableRow([$.i18n(ilist[ikey].title), $.i18n(itext)], false, false)); tbody.appendChild(createTableRow([$.i18n(ilist[ikey].title), $.i18n(itext)], false, false));
}
} }
} }
} }
}
table.appendChild(thead); table.appendChild(thead);
table.appendChild(tbody); table.appendChild(tbody);

View File

@ -1,23 +1,35 @@
$(document).ready( function() { $(document).ready( function() {
//clear priority if people reload the page or lost connection while a wizard was active //clear priority and other tasks if people reload the page or lost connection while a wizard was active
$(hyperion).one("cmd-config-getschema", function(event) { $(hyperion).one("ready", function(event) {
if(getStorage("wizardactive") === 'true') if(getStorage("wizardactive") === 'true')
{
requestPriorityClear(); requestPriorityClear();
setStorage("wizardactive", false); setStorage("wizardactive", false);
if(getStorage("kodiAddress" != null))
{
kodiAddress = getStorage("kodiAddress");
sendToKodi("stop");
}
}
}); });
function resetWizard() function resetWizard()
{ {
$("#wizard_modal").modal('hide'); $("#wizard_modal").modal('hide');
clearInterval(colorIntveralId); clearInterval(wIntveralId);
requestPriorityClear(); requestPriorityClear();
setStorage("wizardactive", false); setStorage("wizardactive", false);
$('#wizp1').toggle(true); $('#wizp1').toggle(true);
$('#wizp2').toggle(false); $('#wizp2').toggle(false);
$('#wizp3').toggle(false);
//cc
if(withKodi)
sendToKodi("stop");
step = 0;
} }
//rgb byte order wizard //rgb byte order wizard
var colorIntveralId; var wIntveralId;
var new_rgb_order; var new_rgb_order;
function changeColor() function changeColor()
@ -40,13 +52,13 @@ $(document).ready( function() {
{ {
//create html //create html
$('#wiz_header').html('<i class="fa fa-magic fa-fw"></i>'+$.i18n('wiz_rgb_title')); $('#wiz_header').html('<i class="fa fa-magic fa-fw"></i>'+$.i18n('wiz_rgb_title'));
$('#wizp1_body').html('<img src="img/hyperion/hyperionlogo.png" alt="Redefine ambient light!" style="margin-bottom:20px"><h4 style="font-weight:bold;text-transform:uppercase;">'+$.i18n('wiz_rgb_title')+'</h4><p>'+$.i18n('wiz_rgb_intro1')+'</p><p style="font-weight:bold;">'+$.i18n('wiz_rgb_intro2')+'</p>'); $('#wizp1_body').html('<h4 style="font-weight:bold;text-transform:uppercase;">'+$.i18n('wiz_rgb_title')+'</h4><p>'+$.i18n('wiz_rgb_intro1')+'</p><p style="font-weight:bold;">'+$.i18n('wiz_rgb_intro2')+'</p>');
$('#wizp1_footer').html('<button type="button" class="btn btn-primary" id="btn_wiz_cont"><i class="fa fa-fw fa-check"></i>'+$.i18n('general_btn_continue')+'</button><button type="button" class="btn btn-danger" data-dismiss="modal"><i class="fa fa-fw fa-close"></i>'+$.i18n('general_btn_cancel')+'</button>'); $('#wizp1_footer').html('<button type="button" class="btn btn-primary" id="btn_wiz_cont"><i class="fa fa-fw fa-check"></i>'+$.i18n('general_btn_continue')+'</button><button type="button" class="btn btn-danger" data-dismiss="modal"><i class="fa fa-fw fa-close"></i>'+$.i18n('general_btn_cancel')+'</button>');
$('#wizp2_body').html('<img src="img/hyperion/hyperionlogo.png" alt="Redefine ambient light!" style="margin-bottom:20px"><p style="font-weight:bold">'+$.i18n('wiz_rgb_expl')+'</p>'); $('#wizp2_body').html('<p style="font-weight:bold">'+$.i18n('wiz_rgb_expl')+'</p>');
$('#wizp2_body').append('<div class="form-group"><label>'+$.i18n('wiz_rgb_switchevery')+'</label><div class="input-group" style="width:100px"><select id="wiz_switchtime_select" class="form-control"></select><div class="input-group-addon">'+$.i18n('edt_append_s')+'</div></div></div>'); $('#wizp2_body').append('<div class="form-group"><label>'+$.i18n('wiz_rgb_switchevery')+'</label><div class="input-group" style="width:100px"><select id="wiz_switchtime_select" class="form-control"></select><div class="input-group-addon">'+$.i18n('edt_append_s')+'</div></div></div>');
$('#wizp2_body').append('<canvas id="wiz_canv_color" width="100" height="100" style="border-radius:60px;background-color:red; display:block; margin: 10px 0;border:4px solid grey;"></canvas><label>'+$.i18n('wiz_rgb_q')+'</label>'); $('#wizp2_body').append('<canvas id="wiz_canv_color" width="100" height="100" style="border-radius:60px;background-color:red; display:block; margin: 10px 0;border:4px solid grey;"></canvas><label>'+$.i18n('wiz_rgb_q')+'</label>');
$('#wizp2_body').append('<table class="table borderless" style="width:200px"><tbody><tr><td class="ltd"><label>'+$.i18n('wiz_rgb_qrend')+'</label></td><td class="itd"><select id="wiz_r_select" class="form-control wselect"></select></td></tr><tr><td class="ltd"><label>'+$.i18n('wiz_rgb_qgend')+'</label></td><td class="itd"><select id="wiz_g_select" class="form-control wselect"></select></td></tr></tbody></table>'); $('#wizp2_body').append('<table class="table borderless" style="width:200px"><tbody><tr><td class="ltd"><label>'+$.i18n('wiz_rgb_qrend')+'</label></td><td class="itd"><select id="wiz_r_select" class="form-control wselect"></select></td></tr><tr><td class="ltd"><label>'+$.i18n('wiz_rgb_qgend')+'</label></td><td class="itd"><select id="wiz_g_select" class="form-control wselect"></select></td></tr></tbody></table>');
$('#wizp2_footer').html('<button type="button" class="btn btn-success" id="btn_wiz_save"><i class="fa fa-fw fa-save"></i>'+$.i18n('general_btn_saverestart')+'</button><button type="button" class="btn btn-primary" id="btn_wiz_checkok" style="display:none" data-dismiss="modal"><i class="fa fa-fw fa-check"></i>'+$.i18n('general_btn_ok')+'</button><button type="button" class="btn btn-danger" id="btn_wiz_abort"><i class="fa fa-fw fa-close"></i>'+$.i18n('general_btn_cancel')+'</button>') $('#wizp2_footer').html('<button type="button" class="btn btn-primary" id="btn_wiz_save"><i class="fa fa-fw fa-save"></i>'+$.i18n('general_btn_saverestart')+'</button><button type="button" class="btn btn-primary" id="btn_wiz_checkok" style="display:none" data-dismiss="modal"><i class="fa fa-fw fa-check"></i>'+$.i18n('general_btn_ok')+'</button><button type="button" class="btn btn-danger" id="btn_wiz_abort"><i class="fa fa-fw fa-close"></i>'+$.i18n('general_btn_cancel')+'</button>')
//open modal //open modal
$("#wizard_modal").modal({ $("#wizard_modal").modal({
@ -66,36 +78,43 @@ $(document).ready( function() {
function beginWizardRGB() function beginWizardRGB()
{ {
$("#wiz_switchtime_select").off().on('change',function() { $("#wiz_switchtime_select").off().on('change',function() {
clearInterval(colorIntveralId); clearInterval(wIntveralId);
var time = $("#wiz_switchtime_select").val(); var time = $("#wiz_switchtime_select").val();
colorIntveralId = setInterval(function() { changeColor(); }, time*1000); wIntveralId = setInterval(function() { changeColor(); }, time*1000);
}); });
$('.wselect').change(function () { $('.wselect').change(function () {
var rgb_order = order = parsedConfJSON.device.colorOrder.split(""); var rgb_order = serverConfig.device.colorOrder.split("");
var redS = $("#wiz_r_select").val(); var redS = $("#wiz_r_select").val();
var greenS = $("#wiz_g_select").val(); var greenS = $("#wiz_g_select").val();
var blueS = rgb_order.toString().replace(/,/g,"").replace(redS, "").replace(greenS,"");
for (var i = 0; i<order.length; i++) for (var i = 0; i<rgb_order.length; i++)
{ {
if (redS == order[i]) if (redS == rgb_order[i])
$('#wiz_g_select option[value='+order[i]+']').attr('disabled',true); $('#wiz_g_select option[value='+rgb_order[i]+']').attr('disabled',true);
else else
$('#wiz_g_select option[value='+order[i]+']').attr('disabled',false); $('#wiz_g_select option[value='+rgb_order[i]+']').attr('disabled',false);
if (greenS == order[i]) if (greenS == rgb_order[i])
$('#wiz_r_select option[value='+order[i]+']').attr('disabled',true); $('#wiz_r_select option[value='+rgb_order[i]+']').attr('disabled',true);
else else
$('#wiz_r_select option[value='+order[i]+']').attr('disabled',false); $('#wiz_r_select option[value='+rgb_order[i]+']').attr('disabled',false);
} }
if(redS != 'null' && greenS != 'null') if(redS != 'null' && greenS != 'null')
{ {
$('#btn_wiz_save').attr('disabled',false); $('#btn_wiz_save').attr('disabled',false);
var blueS = parsedConfJSON.device.colorOrder.replace(redS, "").replace(greenS, "");
rgb_order[0] = redS; for (var i = 0; i<rgb_order.length; i++)
rgb_order[1] = greenS; {
rgb_order[2] = blueS; if(rgb_order[i] == "r")
rgb_order[i] = redS;
else if(rgb_order[i] == "g")
rgb_order[i] = greenS;
else
rgb_order[i] = blueS;
}
rgb_order = rgb_order.toString().replace(/,/g,""); rgb_order = rgb_order.toString().replace(/,/g,"");
if(redS == "r" && greenS == "g") if(redS == "r" && greenS == "g")
@ -125,9 +144,7 @@ $(document).ready( function() {
setTimeout(requestSetSource, 100, 'auto'); setTimeout(requestSetSource, 100, 'auto');
setStorage("wizardactive", true); setStorage("wizardactive", true);
$('#btn_wiz_abort').off().on('click',function() { $('#btn_wiz_abort').off().on('click', resetWizard);
resetWizard()
});
$('#btn_wiz_checkok').off().on('click',function() { $('#btn_wiz_checkok').off().on('click',function() {
showInfoDialog('success', "", $.i18n('infoDialog_wizrgb_text')); showInfoDialog('success', "", $.i18n('infoDialog_wizrgb_text'));
@ -136,14 +153,484 @@ $(document).ready( function() {
$('#btn_wiz_save').off().on('click',function() { $('#btn_wiz_save').off().on('click',function() {
resetWizard(); resetWizard();
parsedConfJSON.device.colorOrder = new_rgb_order; serverConfig.device.colorOrder = new_rgb_order;
requestWriteConfig({"device" : parsedConfJSON.device}); requestWriteConfig({"device" : serverConfig.device});
setTimeout(initRestart, 100); setTimeout(initRestart, 100);
}); });
} }
$('#btn_wizard_byteorder').off().on('click',function() { $('#btn_wizard_byteorder').off().on('click',startWizardRGB);
startWizardRGB();
}); //color calibration wizard
var kodiAddress = document.location.hostname+':8080';
var wiz_editor;
var colorLength;
var cobj;
var step = 0;
var withKodi = false;
var profile = 0;
var websAddress;
var imgAddress;
var vidAddress = "https://sourceforge.net/projects/hyperion-project/files/resources/vid/";
var picnr = 0;
var availVideos = ["Sweet_Cocoon","Caminandes_2_GranDillama","Caminandes_3_Llamigos"];
if(getStorage("kodiAddress" != null))
kodiAddress = getStorage("kodiAddress");
function switchPicture(pictures)
{
if(typeof pictures[picnr] === 'undefined')
picnr = 0;
sendToKodi('playP',pictures[picnr]);
picnr++;
}
function sendToKodi(type, content, cb)
{
var command;
if(type == "playP")
content = imgAddress+content+'.png';
if(type == "playV")
content = vidAddress+content;
if(type == "msg")
command = '{"jsonrpc":"2.0","method":"GUI.ShowNotification","params":{"title": "'+$.i18n('wiz_cc_title')+'", "message": "'+content+'", "image":"info", "displaytime":5000 },"id":"1"}';
else if (type == "stop")
command = '{"jsonrpc":"2.0","method":"Player.Stop","params":{"playerid": 2},"id":"1"}';
else if (type == "playP" || type == "playV")
command = '{"jsonrpc":"2.0","method":"Player.Open","params":{"item":{"file":"' + content + '"}},"id":"1"}';
else if (type == "rotate")
command = '{"jsonrpc":"2.0","method":"Player.Rotate","params":{"playerid": 2},"id":"1"}';
$.ajax({
url: 'http://' + kodiAddress + '/jsonrpc',
dataType: 'jsonp',
jsonpCallback: 'jsonCallback',
type: 'POST',
async: true,
timeout: 2000,
data: 'request=' + encodeURIComponent( command )
})
.done( function( data, textStatus, jqXHR ) {
if ( jqXHR.status == 200 && data['result'] == 'OK' && type == "msg")
cb("success");
})
// Older Versions Of Kodi/XBMC Tend To Fail Due To CORS But Typically If A '200' Is Returned Then It Has Worked!
.fail( function( jqXHR, textStatus ) {
if ( jqXHR.status != 200 && type == "msg")
cb("error")
});
}
function performAction()
{
var h;
if(step == 1)
{
$('#wiz_cc_desc').html($.i18n('wiz_cc_chooseid'));
updateWEditor(["id"]);
$('#btn_wiz_back').attr("disabled", true)
}
else
$('#btn_wiz_back').attr("disabled", false)
if(step == 2)
{
updateWEditor(["white"]);
h = $.i18n('wiz_cc_adjustit',$.i18n('edt_conf_color_white_title'));
if(withKodi)
{
h += '<br/>'+$.i18n('wiz_cc_kodishould',$.i18n('edt_conf_color_white_title'));
sendToKodi('playP',"white");
}
else
h += '<br/>'+$.i18n('wiz_cc_lettvshow',$.i18n('edt_conf_color_white_title'));
$('#wiz_cc_desc').html(h);
}
if(step == 3)
{
updateWEditor(["gammaRed","gammaGreen","gammaBlue"]);
h = '<p>'+$.i18n('wiz_cc_adjustgamma')+'</p>';
if(withKodi)
{
sendToKodi('playP',"HGradient");
h +='<button id="wiz_cc_btn_sp" class="btn btn-primary">'+$.i18n('wiz_cc_btn_switchpic')+'</button>';
}
else
h += '<p>'+$.i18n('wiz_cc_lettvshowm', "gey_1, grey_2, grey_3, HGradient, VGradient")+'</p>';
$('#wiz_cc_desc').html(h);
$('#wiz_cc_btn_sp').off().on('click', function(){
switchPicture(["VGradient","grey_1","grey_2","grey_3","HGradient"]);
});
}
if(step == 4)
{
updateWEditor(["red"]);
h = $.i18n('wiz_cc_adjustit',$.i18n('edt_conf_color_red_title'));
if(withKodi)
{
h += '<br/>'+$.i18n('wiz_cc_kodishould',$.i18n('edt_conf_color_red_title'));
sendToKodi('playP',"red");
}
else
h += '<br/>'+$.i18n('wiz_cc_lettvshow',$.i18n('edt_conf_color_red_title'));
$('#wiz_cc_desc').html(h);
}
if(step == 5)
{
updateWEditor(["green"]);
h = $.i18n('wiz_cc_adjustit',$.i18n('edt_conf_color_green_title'));
if(withKodi)
{
h += '<br/>'+$.i18n('wiz_cc_kodishould',$.i18n('edt_conf_color_green_title'));
sendToKodi('playP',"green");
}
else
h += '<br/>'+$.i18n('wiz_cc_lettvshow',$.i18n('edt_conf_color_green_title'));
$('#wiz_cc_desc').html(h);
}
if(step == 6)
{
updateWEditor(["blue"]);
h = $.i18n('wiz_cc_adjustit',$.i18n('edt_conf_color_blue_title'));
if(withKodi)
{
h += '<br/>'+$.i18n('wiz_cc_kodishould',$.i18n('edt_conf_color_blue_title'));
sendToKodi('playP',"blue");
}
else
h += '<br/>'+$.i18n('wiz_cc_lettvshow',$.i18n('edt_conf_color_blue_title'));
$('#wiz_cc_desc').html(h);
}
if(step == 7)
{
updateWEditor(["cyan"]);
h = $.i18n('wiz_cc_adjustit',$.i18n('edt_conf_color_cyan_title'));
if(withKodi)
{
h += '<br/>'+$.i18n('wiz_cc_kodishould',$.i18n('edt_conf_color_cyan_title'));
sendToKodi('playP',"cyan");
}
else
h += '<br/>'+$.i18n('wiz_cc_lettvshow',$.i18n('edt_conf_color_cyan_title'));
$('#wiz_cc_desc').html(h);
}
if(step == 8)
{
updateWEditor(["magenta"]);
h = $.i18n('wiz_cc_adjustit',$.i18n('edt_conf_color_magenta_title'));
if(withKodi)
{
h += '<br/>'+$.i18n('wiz_cc_kodishould',$.i18n('edt_conf_color_magenta_title'));
sendToKodi('playP',"magenta");
}
else
h += '<br/>'+$.i18n('wiz_cc_lettvshow',$.i18n('edt_conf_color_magenta_title'));
$('#wiz_cc_desc').html(h);
}
if(step == 9)
{
updateWEditor(["yellow"]);
h = $.i18n('wiz_cc_adjustit',$.i18n('edt_conf_color_yellow_title'));
if(withKodi)
{
h += '<br/>'+$.i18n('wiz_cc_kodishould',$.i18n('edt_conf_color_yellow_title'));
sendToKodi('playP',"yellow");
}
else
h += '<br/>'+$.i18n('wiz_cc_lettvshow',$.i18n('edt_conf_color_yellow_title'));
$('#wiz_cc_desc').html(h);
}
if(step == 10)
{
updateWEditor(["brightnessMin"]);
h = $.i18n('wiz_cc_minBright');
if(withKodi)
{
h += '<br/>'+$.i18n('wiz_cc_kodishould',$.i18n('edt_conf_color_black_title'));
sendToKodi('playP',"black");
}
else
h += '<br/>'+$.i18n('wiz_cc_lettvshow',$.i18n('edt_conf_color_black_title'));
$('#wiz_cc_desc').html(h);
}
if(step == 11)
{
updateWEditor([""], true);
h = '<p>'+$.i18n('wiz_cc_testintro')+'</p>';
if(withKodi)
{
h += '<p>'+$.i18n('wiz_cc_testintrok')+'</p>';
sendToKodi('stop');
for(var i = 0; i<availVideos.length; i++)
{
var txt = availVideos[i].replace(/_/g," ");
h +='<div><button id="'+availVideos[i]+'" class="btn btn-sm btn-primary videobtn"><i class="fa fa-fw fa-play"></i> '+txt+'</button></div>';
}
h +='<div><button id="stop" class="btn btn-sm btn-danger videobtn" style="margin-bottom:15px"><i class="fa fa-fw fa-stop"></i> '+$.i18n('wiz_cc_btn_stop')+'</button></div>';
}
else
h += '<p>'+$.i18n('wiz_cc_testintrowok')+' <a href="https://sourceforge.net/projects/hyperion-project/files/resources/vid/" target="_blank">'+$.i18n('wiz_cc_link')+'</a></p>';
h += '<p>'+$.i18n('wiz_cc_summary')+'</p>';
$('#wiz_cc_desc').html(h);
$('.videobtn').off().on('click', function(e){
if(e.target.id == "stop")
sendToKodi("stop");
else
sendToKodi("playV",e.target.id+'.mp4');
$(this).attr("disabled", true);
setTimeout(function(){$('.videobtn').attr("disabled", false)},10000);
});
$('#btn_wiz_next').attr("disabled", true);
$('#btn_wiz_save').toggle(true);
}
else
{
$('#btn_wiz_next').attr("disabled", false);
$('#btn_wiz_save').toggle(false);
}
}
function updateWEditor(el, all)
{
for (var key in cobj)
{
if(all === true || el[0] == key || el[1] == key || el[2] == key)
$('#editor_container_wiz [data-schemapath*=".'+profile+'.'+key+'"]').toggle(true);
else
$('#editor_container_wiz [data-schemapath*=".'+profile+'.'+key+'"]').toggle(false);
}
}
function startWizardCC()
{
//create html
$('#wiz_header').html('<i class="fa fa-magic fa-fw"></i>'+$.i18n('wiz_cc_title'));
$('#wizp1_body').html('<h4 style="font-weight:bold;text-transform:uppercase;">'+$.i18n('wiz_cc_title')+'</h4><p>'+$.i18n('wiz_cc_intro1')+'</p><label>'+$.i18n('wiz_cc_kwebs')+'</label><input class="form-control" style="width:170px;margin:auto" id="wiz_cc_kodiip" type="text" placeholder="'+kodiAddress+'" value="'+kodiAddress+'" /><span id="kodi_status"></span><span id="multi_cali"></span>');
$('#wizp1_footer').html('<button type="button" class="btn btn-primary" id="btn_wiz_cont" disabled="disabled"><i class="fa fa-fw fa-check"></i>'+$.i18n('general_btn_continue')+'</button><button type="button" class="btn btn-danger" data-dismiss="modal"><i class="fa fa-fw fa-close"></i>'+$.i18n('general_btn_cancel')+'</button>');
$('#wizp2_body').html('<div id="wiz_cc_desc" style="font-weight:bold"></div><div id="editor_container_wiz"></div>');
$('#wizp2_footer').html('<button type="button" class="btn btn-primary" id="btn_wiz_back"><i class="fa fa-fw fa-chevron-left"></i>'+$.i18n('general_btn_back')+'</button><button type="button" class="btn btn-primary" id="btn_wiz_next">'+$.i18n('general_btn_next')+'<i style="margin-left:4px;"class="fa fa-fw fa-chevron-right"></i></button><button type="button" class="btn btn-warning" id="btn_wiz_save" style="display:none"><i class="fa fa-fw fa-save"></i>'+$.i18n('general_btn_saverestart')+'</button><button type="button" class="btn btn-danger" id="btn_wiz_abort"><i class="fa fa-fw fa-close"></i>'+$.i18n('general_btn_cancel')+'</button>')
//open modal
$("#wizard_modal").modal({
backdrop : "static",
keyboard: false,
show: true
});
$('#wiz_cc_kodiip').off().on('change',function() {
kodiAddress = $(this).val();
setStorage("kodiAddress", kodiAddress);
sendToKodi("msg", $.i18n('wiz_cc_kodimsg_start'), function(cb){
if(cb == "error")
{
$('#kodi_status').html('<p style="color:red;font-weight:bold;margin-top:5px">'+$.i18n('wiz_cc_kodidiscon')+'</p><p>'+$.i18n('wiz_cc_kodidisconlink')+' <a href="https://sourceforge.net/projects/hyperion-project/files/resources/Hyperion_calibration_pictures.zip/download" target="_blank">'+$.i18n('wiz_cc_link')+'</p>');
withKodi = false;
}
else
{
$('#kodi_status').html('<p style="color:green;font-weight:bold;margin-top:5px">'+$.i18n('wiz_cc_kodicon')+'</p>');
withKodi = true;
}
$('#btn_wiz_cont').attr('disabled', false);
});
});
//listen for continue
$('#btn_wiz_cont').off().on('click',function() {
beginWizardCC();
$('#wizp1').toggle(false);
$('#wizp2').toggle(true);
});
$('#wiz_cc_kodiip').trigger("change")
colorLength = serverConfig.color.channelAdjustment;
cobj = schema.color.properties.channelAdjustment.items.properties;
websAddress = document.location.hostname+':'+serverConfig.webConfig.port;
imgAddress = 'http://'+websAddress+'/img/cc/';
setStorage("wizardactive", true);
//check profile count
if(colorLength.length > 1)
{
$('#multi_cali').html('<p style="font-weight:bold;">'+$.i18n('wiz_cc_morethanone')+'</p><select id="wiz_select" class="form-control" style="width:200px;margin:auto"></select>');
for(var i = 0; i<colorLength.length; i++)
$('#wiz_select').append(createSelOpt(i,i+1+' ('+colorLength[i].id+')'));
$('#wiz_select').off().on('change', function(){
profile = $(this).val();
});
}
//prepare editor
wiz_editor = createJsonEditor('editor_container_wiz', {
color : schema.color
}, true, true);
$('#editor_container_wiz h4').toggle(false);
$('#editor_container_wiz .btn-group').toggle(false);
$('#editor_container_wiz [data-schemapath="root.color.imageToLedMappingType"]').toggle(false);
for(var i = 0; i<colorLength.length; i++)
$('#editor_container_wiz [data-schemapath*="root.color.channelAdjustment.'+i+'."]').toggle(false);
}
function beginWizardCC()
{
$('#btn_wiz_next').off().on('click',function() {
step++;
performAction();
});
$('#btn_wiz_back').off().on('click',function() {
step--;
performAction();
});
$('#btn_wiz_abort').off().on('click', resetWizard);
$('#btn_wiz_save').off().on('click',function() {
requestWriteConfig(wiz_editor.getValue());
resetWizard();
setTimeout(initRestart, 200);
});
wiz_editor.on("change", function(e){
var val = wiz_editor.getEditor('root.color.channelAdjustment.'+profile+'').getValue();
var temp = JSON.parse(JSON.stringify(val));
delete temp.leds
requestAdjustment(JSON.stringify(temp),"",true);
});
step++
performAction();
}
$('#btn_wizard_colorcalibration').off().on('click', startWizardCC);
//hue wizard
function startWizardPhilipsHue()
{
//create html
$('#wiz_header').html('<i class="fa fa-magic fa-fw"></i>'+$.i18n('wiz_hue_title'));
$('#wizp1_body').html('<h4 style="font-weight:bold;text-transform:uppercase;">'+$.i18n('wiz_hue_title')+'</h4><p>'+$.i18n('wiz_hue_intro1')+'</p><p style="font-weight:bold;">'+$.i18n('wiz_hue_intro2')+'</p>');
$('#wizp1_footer').html('<button type="button" class="btn btn-primary" id="btn_wiz_cont"><i class="fa fa-fw fa-check"></i>'+$.i18n('general_btn_continue')+'</button><button type="button" class="btn btn-danger" data-dismiss="modal"><i class="fa fa-fw fa-close"></i>'+$.i18n('general_btn_cancel')+'</button>');
$('#wizp2_body').append('<span id="ip_alert" style="display:none; color:red; font-weight: bold;">'+$.i18n('wiz_hue_failure_ip')+'</span>');
$('#wizp2_body').append('<span id="abortConnection" style="display:none; color:red; font-weight: bold;">'+$.i18n('wiz_hue_failure_connection')+'</span><br />');
$('#wizp2_body').append('<div class="form-group"><label>'+$.i18n('wiz_hue_ip')+'</label><div class="input-group" style="width:150px"><input type="text" class="input-group" id="ip"></div></div>');
$('#wizp2_body').append('<div class="form-group"><label>'+$.i18n('wiz_hue_username')+'</label<div class="input-group" style="width:150px"><input type="text" class="input-group" id="user" readonly="readonly"></div></div>');
$('#wizp2_body').append('<div id="hue_lights" class="row"><table></table></div>');
$('#wizp2_footer').html('<button type="button" class="btn btn-success" id="wiz_hue_create_user"> <i class="fa fa-floppy-o"></i>'+$.i18n('wiz_hue_create_user')+'</button><button type="button" class="btn btn-danger" id="btn_wiz_abort"><i class="fa fa-fw fa-close"></i>'+$.i18n('general_btn_cancel')+'</button>');
$('#wizp3_body').html('<span>'+$.i18n('wiz_hue_press_link')+'</span> <br /><br /><center><span id="connectionTime"></span><br /><img src="/img/hyperion/ring-alt.svg" /><center>');
//open modal
$("#wizard_modal").modal({
backdrop : "static",
keyboard: false,
show: true
});
//listen for continue
$('#btn_wiz_cont').off().on('click',function() {
beginWizardHue();
$('#wizp1').toggle(false);
$('#wizp2').toggle(true);
});
}
function beginWizardHue()
{
//listen for continue
$('#wiz_hue_create_user').off().on('click',function() {
doWizardHue();
});
}
function doWizardHue()
{
var connectionRetries = 15;
var data = {"devicetype":"hyperion#"+Date.now()};
var UserInterval = setInterval(function(){
$.ajax({
type: "POST",
url: 'http://'+$("#ip").val()+'/api',
processData: false,
timeout: 1000,
contentType: 'application/json',
data: JSON.stringify(data),
success: function(r) {
$('#wizp1').toggle(false);
$('#wizp2').toggle(false);
$('#wizp3').toggle(true);
connectionRetries--;
$("#connectionTime").html(connectionRetries);
if(connectionRetries == 0) {
abortConnection(UserInterval);
}
else
{
$("#abortConnection").hide();
$("#ip_alert").hide();
if (typeof r[0].error != 'undefined') {
console.log(connectionRetries+": link not pressed");
}
if (typeof r[0].success != 'undefined') {
$('#wizp1').toggle(false);
$('#wizp2').toggle(true);
$('#wizp3').toggle(false);
$('#user').val(r[0].success.username);
$( "#hue_lights" ).empty();
get_hue_lights();
clearInterval(UserInterval);
}
}
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
$('#wizp1').toggle(false);
$('#wizp2').toggle(true);
$('#wizp3').toggle(false);
$("#ip_alert").show();
clearInterval(UserInterval);
}
});
},1000);
}
function get_hue_lights(){
$.ajax({
type: "GET",
url: 'http://'+$("#ip").val()+'/api/'+$("#user").val()+'/lights',
processData: false,
contentType: 'application/json',
success: function(r) {
for(var lightid in r){
$('#hue_lights').append('<tr><td>ID: '+lightid+'</td><td>Name: '+r[lightid].name+'</td></tr>');
}
}
});
}
function abortConnection(UserInterval){
clearInterval(UserInterval);
$('#wizp1').toggle(false);
$('#wizp2').toggle(true);
$('#wizp3').toggle(false);
$("#abortConnection").show();
}
$('#btn_wizard_philipshue').off().on('click',startWizardPhilipsHue);
}); });

View File

@ -5,22 +5,32 @@ install_file()
src="$1" src="$1"
dest="$2" dest="$2"
if [ -e "$dest" ] && ! cmp --quiet "$src" "$dest" if [ ! -e "$dest" ]
then cp "$src" "${dest}"
echo "INFO: $dest exists, new version copied to ${dest}.new"
cp "$src" "${dest}.new"
return 1 return 1
else
echo "--> Service file already exists, skip creation"
return 0
fi fi
cp "$src" "${dest}"
return 0
} }
echo "--- hyperion ambient light postinstall ---" echo "--- hyperion ambient light postinstall ---"
echo "- install configuration template" echo "- install configuration template"
mkdir -p /etc/hyperion mkdir -p /etc/hyperion
mkdir -p /usr/share/hyperion/custom-effects
#check system
CPU_RPI=`grep -m1 -c 'BCM2708\|BCM2709\|BCM2710\|BCM2835' /proc/cpuinfo`
CPU_X32X64=`uname -m | grep 'x86_32\|i686\|x86_64' | wc -l`
#Check for a bootloader as Berryboot
BOOT_BERRYBOOT=$(grep -m1 -c '\(/var/media\|/media/pi\)/berryboot' /etc/mtab)
#get current system ip + add default port
address=$(ip -o -4 a | awk '$2 == "eth0" { gsub(/\/.*/, "", $4); print $4 }')":8099"
#check if hyperion is running
HYPERION_RUNNING=false HYPERION_RUNNING=false
pgrep hyperiond > /dev/null 2>&1 && HYPERION_RUNNING=true pgrep hyperiond > /dev/null 2>&1 && HYPERION_RUNNING=true
@ -30,38 +40,91 @@ SERVICE_POSTFIX=""
if grep -m1 systemd /proc/1/comm > /dev/null if grep -m1 systemd /proc/1/comm > /dev/null
then then
echo "- init deamon: systemd" echo "--> init deamon: systemd"
# systemd # systemd
$HYPERION_RUNNING && systemctl stop hyperion 2> /dev/null $HYPERION_RUNNING && systemctl stop hyperiond 2> /dev/null
install_file /usr/share/hyperion/service/hyperion.systemd.sh /etc/systemd/system/hyperiond.service || SERVICE_POSTFIX=".new" install_file /usr/share/hyperion/service/hyperion.systemd /etc/systemd/system/hyperiond.service && systemctl -q enable hyperiond.service
systemctl -q enable hyperiond.service start_msg="--> systemctl start hyperiond"
start_msg="systemctl start hyperion" systemctl start hyperiond
$HYPERION_RUNNING && systemctl start hyperiond
elif [ -e /sbin/initctl ] elif [ -e /sbin/initctl ]
then then
echo "- init deamon: upstart" echo "--> init deamon: upstart"
# upstart # upstart
$HYPERION_RUNNING && initctl stop hyperiond $HYPERION_RUNNING && initctl stop hyperiond
install_file /usr/share/hyperion/service/hyperiond.initctl.sh /etc/init/hyperion.conf || SERVICE_POSTFIX=".new" install_file /usr/share/hyperion/service/hyperiond.initctl /etc/init/hyperion.conf && initctl reload-configuration
initctl reload-configuration start_msg="--> initctl start hyperiond"
start_msg="initctl start hyperion" initctl start hyperiond
$HYPERION_RUNNING && initctl start hyperiond
else else
echo "- init deamon: sysV" echo "--> init deamon: sysV"
# sysV # sysV
$HYPERION_RUNNING && service hyperiond stop 2>/dev/null $HYPERION_RUNNING && service hyperiond stop 2>/dev/null
install_file /usr/share/hyperion/service/hyperion.init.sh /etc/init.d/hyperiond || SERVICE_POSTFIX=".new" install_file /usr/share/hyperion/service/hyperion.init /etc/init.d/hyperiond && chmod +x /etc/init.d/hyperiond && update-rc.d hyperiond defaults 98 02
chmod +x /etc/init.d/hyperiond start_msg="--> service hyperiond start"
update-rc.d hyperiond defaults 98 02 service hyperiond start
start_msg="service hyperion start" fi
$HYPERION_RUNNING && service hyperiond start
#cleanup
rm -r /usr/share/hyperion/service
#link binarys and set exec bit
BINSP=/usr/share/hyperion/bin
BINTP=/usr/bin
chmod +x -R $BINSP
ln -fs $BINSP/hyperiond $BINTP/hyperiond
ln -fs $BINSP/hyperion-remote $BINTP/hyperion-remote
ln -fs $BINSP/hyperion-v4l2 $BINTP/hyperion-v4l2
ln -fs $BINSP/hyperion-framebuffer $BINTP/hyperion-framebuffer 2>/dev/null
ln -fs $BINSP/hyperion-dispmanx $BINTP/hyperion-dispmanx 2>/dev/null
ln -fs $BINSP/hyperion-x11 $BINTP/hyperion-x11 2>/dev/null
ln -fs $BINSP/hyperion-aml $BINTP/hyperion-aml 2>/dev/null
#Check, if dtparam=spi=on is in place
if [ $CPU_RPI -eq 1 ]; then
BOOT_DIR="/boot"
if [ $BOOT_BERRYBOOT -eq 1 ]; then
BOOT_DIR=$(sed -ne "s#/dev/mmcblk0p1 \([^ ]*\) vfat rw,.*#\1#p" /etc/mtab)
fi
if [ -z "$BOOT_DIR" -o ! -f "$BOOT_DIR/config.txt" ]; then
echo '---> Warning: RPi using BERRYBOOT found but can not locate where config.txt is to enable SPI. (BOOT_DIR='"$BOOT_DIR)"
SPIOK=1 # Not sure if OK, but don't ask to reboot
else
SPIOK=`grep '^\dtparam=spi=on' "$BOOT_DIR/config.txt" | wc -l`
if [ $SPIOK -ne 1 ]; then
echo '---> Raspberry Pi found, but SPI is not set, we write "dtparam=spi=on" to '"$BOOT_DIR/config.txt"
sed -i '$a dtparam=spi=on' "$BOOT_DIR/config.txt"
REBOOTMESSAGE="echo Please reboot your Raspberry Pi, we inserted dtparam=spi=on to $BOOT_DIR/config.txt"
fi
fi
fi fi
echo "-----------------------------------------------------------------------------" echo "-----------------------------------------------------------------------------"
echo "- hyperion is installed, please check your configuration in /etc/hyperion/ -" echo "--> Hyperion has been installed/updated!"
echo "--> For configuration, visit with your browser: ${address}"
$REBOOTMESSAGE
echo "-----------------------------------------------------------------------------" echo "-----------------------------------------------------------------------------"
echo "Webpage: www.hyperion-project.org"
echo "Wiki: wiki.hyperion-project.org"
echo "Forum: forum.hyperion-project.org"
echo "-----------------------------------------------------------------------------"
# try to open the browser for desktops. TODO: add headless detection(?)
if [ $CPU_X32X64 -eq 1]
echo "--> Will open browser with target: ${address}"
if [[ -e /usr/bin/xdg-open ]]
then
xdg-open http://"$address"
elif [[ -e /usr/bin/x-www-browser ]]
then
x-www-browser http://"$address"
elif [[ -e /usr/bin/www-browser ]]
then
www-browser http://"$address"
fi
fi
if [ -e /opt/hyperion/ ] if [ -e /opt/hyperion/ ]
then then

51
cmake/debian/preinst Normal file
View File

@ -0,0 +1,51 @@
#!/bin/sh
# check which init script we should use
USE_SYSTEMD=`grep -m1 -c systemd /proc/1/comm`
USE_INITCTL=`which /sbin/initctl | wc -l`
USE_SERVICE=`which /usr/sbin/service | wc -l`
#check for hyperion install
if [ -d /usr/share/hyperion/bin ];then
if [ -e /etc/hyperion/hyperion.config.json ];then
file=`grep -m1 -c '"general"' /etc/hyperion/hyperion.config.json`
if [ $file -ne 1 ]; then
echo "--> It seems you are running an old version of Hyperion (1.X). Will create a backup at /usr/share/hyperion/Backup_Hyperion_1.0 and reset configuration / system service"
# Stop hyperion daemon if it is running
echo '---> Stop Hyperion, if necessary'
if [ $USE_SYSTEMD -eq 1 ]; then
service hyperion stop 2>/dev/null
elif [ $USE_INITCTL -eq 1 ]; then
/sbin/initctl stop hyperion 2>/dev/null
elif [ $USE_SERVICE -eq 1 ]; then
/usr/sbin/service hyperion stop 2>/dev/null
fi
#Backup
echo "--> Move old config(s) and files to /usr/share/hyperion/Backup_Hyperion_1.0"
mkdir /usr/share/hyperion/Backup_Hyperion_1.0
mv /usr/share/hyperion /usr/share/hyperion/Backup_Hyperion_1.0
mv /etc/hyperion/* /usr/share/hyperion/Backup_Hyperion_1.0
#Disabling and delete service files
if [ $USE_SYSTEMD -eq 1 ]; then
# Delete and disable Hyperion systemd script
echo '---> Delete and disable Hyperion systemd service'
systemctl disable hyperion.service
rm -v /etc/systemd/system/hyperion* 2>/dev/null
elif [ $USE_INITCTL -eq 1 ]; then
echo '---> Delete and disable Hyperion initctl script'
rm -v /etc/init/hyperion* 2>/dev/null
initctl reload-configuration
elif [ $USE_SERVICE -eq 1 ]; then
# Delete and disable Hyperion init.d script
echo '---> Delete and disable Hyperion init.d script'
update-rc.d -f hyperion remove
rm /etc/init.d/hyperion* 2>/dev/null
fi
echo "--> Hyperion 1.0 installation has been moved"
fi
fi
fi

View File

@ -9,9 +9,9 @@ SET ( CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE" )
SET ( CPACK_DEBIAN_PACKAGE_MAINTAINER "Hyperion Team") SET ( CPACK_DEBIAN_PACKAGE_MAINTAINER "Hyperion Team")
SET ( CPACK_DEBIAN_PACKAGE_NAME "Hyperion" ) SET ( CPACK_DEBIAN_PACKAGE_NAME "Hyperion" )
SET ( CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${CMAKE_CURRENT_SOURCE_DIR}/cmake/debian/postinst" ) SET ( CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${CMAKE_CURRENT_SOURCE_DIR}/cmake/debian/postinst;${CMAKE_CURRENT_SOURCE_DIR}/cmake/debian/preinst" )
SET ( CPACK_DEBIAN_PACKAGE_HOMEPAGE "https://www.hyperion-project.org" ) SET ( CPACK_DEBIAN_PACKAGE_HOMEPAGE "https://www.hyperion-project.org" )
SET ( CPACK_DEBIAN_PACKAGE_DEPENDS "libqt5core5a (>= 5.2.0), libqt5network5 (>= 5.2.0), libqt5gui5 (>= 5.2.0), libqt5serialport5 (>= 5.2.0), libavahi-core-dev (>= 0.6.0), libavahi-compat-libdnssd-dev (>= 0.6.0), libusb-1.0-0, libpython2.7, libc6" ) SET ( CPACK_DEBIAN_PACKAGE_DEPENDS "libqt5core5a (>= 5.2.0), libqt5network5 (>= 5.2.0), libqt5gui5 (>= 5.2.0), libqt5serialport5 (>= 5.2.0), libavahi-core7 (>= 0.6.31), libavahi-compat-libdnssd1 (>= 0.6.31), libusb-1.0-0, libpython2.7, libc6" )
SET ( CPACK_DEBIAN_PACKAGE_SECTION "Miscellaneous" ) SET ( CPACK_DEBIAN_PACKAGE_SECTION "Miscellaneous" )
SET ( CPACK_RPM_PACKAGE_NAME "Hyperion" ) SET ( CPACK_RPM_PACKAGE_NAME "Hyperion" )

View File

@ -41,8 +41,6 @@
/// following fields: /// following fields:
/// * 'imageToLedMappingType' : multicolor_mean - every led has it's own calculatedmean color /// * 'imageToLedMappingType' : multicolor_mean - every led has it's own calculatedmean color
/// unicolor_mean - every led has same color, color is the mean of whole image /// unicolor_mean - every led has same color, color is the mean of whole image
/// * 'channelAdjustment_enable' : true/false enables/disables this channelAdjustment section
/// * 'channelAdjustment_v4l_only' : if enabled and set to true, then channelAdjustment is only for v4l devices
/// * 'channelAdjustment' /// * 'channelAdjustment'
/// * 'id' : The unique identifier of the channel adjustments (eg 'device_1') /// * 'id' : The unique identifier of the channel adjustments (eg 'device_1')
/// * 'leds' : The indices (or index ranges) of the leds to which this channel adjustment applies /// * 'leds' : The indices (or index ranges) of the leds to which this channel adjustment applies
@ -57,8 +55,6 @@
"color" : "color" :
{ {
"imageToLedMappingType" : "multicolor_mean", "imageToLedMappingType" : "multicolor_mean",
"channelAdjustment_enable" : true,
"channelAdjustment_v4l_only" : false,
"channelAdjustment" : "channelAdjustment" :
[ [
{ {

View File

@ -22,8 +22,6 @@
"color" : "color" :
{ {
"imageToLedMappingType" : "multicolor_mean", "imageToLedMappingType" : "multicolor_mean",
"channelAdjustment_enable" : true,
"channelAdjustment_v4l_only" : false,
"channelAdjustment" : "channelAdjustment" :
[ [
{ {

View File

@ -0,0 +1,79 @@
{
"type":"object",
"script" : "clock.py",
"title":"edt_eff_clock_header_title",
"required":true,
"properties":{
"offset": {
"type": "number",
"title":"edt_eff_offset_title",
"default": 0,
"append" : "edt_append_leds",
"propertyOrder" : 1
},
"hour-color": {
"type": "array",
"title":"edt_eff_colorHour_title",
"format":"colorpicker",
"default": [255,0,0],
"items" : {
"type": "integer",
"minimum": 0,
"maximum": 255
},
"minItems": 3,
"maxItems": 3,
"propertyOrder" : 2
},
"minute-color": {
"type": "array",
"title":"edt_eff_colorMinute_title",
"format":"colorpicker",
"default": [0,255,0],
"items" : {
"type": "integer",
"minimum": 0,
"maximum": 255
},
"minItems": 3,
"maxItems": 3,
"propertyOrder" : 3
},
"second-color": {
"type": "array",
"title":"edt_eff_colorSecond_title",
"format":"colorpicker",
"default": [0,0,255],
"items" : {
"type": "integer",
"minimum": 0,
"maximum": 255
},
"minItems": 3,
"maxItems": 3,
"propertyOrder" : 4
},
"hour-margin": {
"type": "number",
"title":"edt_eff_hourMargin_title",
"default": 2,
"append" : "edt_append_leds",
"propertyOrder" : 5
},
"minute-margin": {
"type": "number",
"title":"edt_eff_minuteMargin_title",
"default": 1,
"append" : "edt_append_leds",
"propertyOrder" : 6
},
"second-margin": {
"type": "number",
"title":"edt_eff_secondMargin_title",
"default": 0,
"append" : "edt_append_leds",
"propertyOrder" : 7
}
},
"additionalProperties": false
}

View File

@ -0,0 +1,18 @@
{
"type":"object",
"script" : "pacman.py",
"title":"edt_eff_pacman_header_title",
"required":true,
"properties":{
"sleep-time": {
"type": "number",
"title":"edt_eff_sleeptime_title",
"default": 0.3,
"step" : 0.1,
"minimum": 0.01,
"append" : "edt_append_s",
"propertyOrder" : 1
}
},
"additionalProperties": false
}

View File

@ -355,12 +355,6 @@ private:
/// register of input sources and it's prio channel /// register of input sources and it's prio channel
PriorityRegister _priorityRegister; PriorityRegister _priorityRegister;
/// flag for v4l color correction
bool _colorAdjustmentV4Lonly;
/// flag for color adjustment enable
bool _adjustmentEnabled;
/// flag indicates state for autoselection of input source /// flag indicates state for autoselection of input source
bool _sourceAutoSelectEnabled; bool _sourceAutoSelectEnabled;

View File

@ -392,7 +392,7 @@ Hyperion::Hyperion(const QJsonObject &qjsonConfig, const QString configFile)
, _timer() , _timer()
, _log(CORE_LOGGER) , _log(CORE_LOGGER)
, _hwLedCount(_ledString.leds().size()) , _hwLedCount(_ledString.leds().size())
, _colorAdjustmentV4Lonly(false)
, _sourceAutoSelectEnabled(true) , _sourceAutoSelectEnabled(true)
, _configHash() , _configHash()
, _ledGridSize(getLedLayoutGridSize(qjsonConfig["leds"])) , _ledGridSize(getLedLayoutGridSize(qjsonConfig["leds"]))
@ -405,11 +405,6 @@ Hyperion::Hyperion(const QJsonObject &qjsonConfig, const QString configFile)
} }
// set color correction activity state // set color correction activity state
const QJsonObject& color = qjsonConfig["color"].toObject(); const QJsonObject& color = qjsonConfig["color"].toObject();
_adjustmentEnabled = color["channelAdjustment_enable"].toBool(true);
_colorAdjustmentV4Lonly = color["channelAdjustment_v4l_only"].toBool(false);
InfoIf(!_adjustmentEnabled , _log, "Color adjustment disabled" );
InfoIf(_colorAdjustmentV4Lonly , _log, "Color adjustment for v4l inputs only" );
// initialize the image processor factory // initialize the image processor factory
_ledMAppingType = ImageProcessor::mappingTypeToInt(color["imageToLedMappingType"].toString()); _ledMAppingType = ImageProcessor::mappingTypeToInt(color["imageToLedMappingType"].toString());
@ -721,7 +716,7 @@ void Hyperion::update()
_ledBuffer.reserve(_hwLedCount); _ledBuffer.reserve(_hwLedCount);
_ledBuffer = priorityInfo.ledColors; _ledBuffer = priorityInfo.ledColors;
if ( _adjustmentEnabled && priority < PriorityMuxer::LOWEST_PRIORITY && (!_colorAdjustmentV4Lonly || priorityInfo.componentId == hyperion::COMP_V4L) ) if ( priority < PriorityMuxer::LOWEST_PRIORITY)
{ {
_raw2ledAdjustment->applyAdjustment(_ledBuffer); _raw2ledAdjustment->applyAdjustment(_ledBuffer);
} }

View File

@ -114,30 +114,17 @@
}, },
"propertyOrder" : 1 "propertyOrder" : 1
}, },
"channelAdjustment_enable" :
{
"type" : "boolean",
"title" : "edt_conf_color_channelAdjustment_enable_title",
"default" : true,
"propertyOrder" : 2
},
"channelAdjustment_v4l_only" :
{
"type" : "boolean",
"title" : "edt_conf_color_channelAdjustment_v4l_only_title",
"default" : false,
"propertyOrder" : 3
},
"channelAdjustment" : "channelAdjustment" :
{ {
"type" : "array", "type" : "array",
"title" : "edt_conf_color_channelAdjustment_header_title", "title" : "edt_conf_color_channelAdjustment_header_title",
"required" : true, "required" : true,
"propertyOrder" : 4, "propertyOrder" : 3,
"items" : "items" :
{ {
"type" : "object", "type" : "object",
"required" : true, "required" : true,
"title" : "edt_conf_color_channelAdjustment_header_itemtitle",
"properties" : "properties" :
{ {
"id" : "id" :
@ -287,7 +274,7 @@
"brightnessMin" : "brightnessMin" :
{ {
"type" : "number", "type" : "number",
"title" : "edt_conf_color_brightness_min_title", "title" : "edt_conf_color_brightnessMin_title",
"required" : true, "required" : true,
"minimum" : 0.0, "minimum" : 0.0,
"maximum": 1.0, "maximum": 1.0,
@ -309,7 +296,7 @@
"gammaRed" : "gammaRed" :
{ {
"type" : "number", "type" : "number",
"title" : "edt_conf_color_gamma_red_title", "title" : "edt_conf_color_gammaRed_title",
"required" : true, "required" : true,
"minimum" : 0.0, "minimum" : 0.0,
"maximum": 100.0, "maximum": 100.0,
@ -320,7 +307,7 @@
"gammaGreen" : "gammaGreen" :
{ {
"type" : "number", "type" : "number",
"title" : "edt_conf_color_gamma_green_title", "title" : "edt_conf_color_gammaGreen_title",
"required" : true, "required" : true,
"minimum" : 0.0, "minimum" : 0.0,
"maximum": 100.0, "maximum": 100.0,
@ -331,7 +318,7 @@
"gammaBlue" : "gammaBlue" :
{ {
"type" : "number", "type" : "number",
"title" : "edt_conf_color_gamma_blue_title", "title" : "edt_conf_color_gammaBlue_title",
"required" : true, "required" : true,
"minimum" : 0.0, "minimum" : 0.0,
"maximum": 100.0, "maximum": 100.0,

View File

@ -669,7 +669,6 @@ void JsonClientConnection::handleServerInfoCommand(const QJsonObject&, const QSt
info["priorities"] = priorities; info["priorities"] = priorities;
info["priorities_autoselect"] = _hyperion->sourceAutoSelectEnabled(); info["priorities_autoselect"] = _hyperion->sourceAutoSelectEnabled();
// collect adjustment information // collect adjustment information
QJsonArray adjustmentArray; QJsonArray adjustmentArray;
for (const std::string& adjustmentId : _hyperion->getAdjustmentIds()) for (const std::string& adjustmentId : _hyperion->getAdjustmentIds())
@ -684,23 +683,59 @@ void JsonClientConnection::handleServerInfoCommand(const QJsonObject&, const QSt
QJsonObject adjustment; QJsonObject adjustment;
adjustment["id"] = QString::fromStdString(adjustmentId); adjustment["id"] = QString::fromStdString(adjustmentId);
QJsonArray blackAdjust;
blackAdjust.append(colorAdjustment->_rgbBlackAdjustment.getAdjustmentR());
blackAdjust.append(colorAdjustment->_rgbBlackAdjustment.getAdjustmentG());
blackAdjust.append(colorAdjustment->_rgbBlackAdjustment.getAdjustmentB());
adjustment.insert("black", blackAdjust);
QJsonArray whiteAdjust;
whiteAdjust.append(colorAdjustment->_rgbWhiteAdjustment.getAdjustmentR());
whiteAdjust.append(colorAdjustment->_rgbWhiteAdjustment.getAdjustmentG());
whiteAdjust.append(colorAdjustment->_rgbWhiteAdjustment.getAdjustmentB());
adjustment.insert("white", whiteAdjust);
QJsonArray redAdjust; QJsonArray redAdjust;
redAdjust.append(colorAdjustment->_rgbRedAdjustment.getAdjustmentR()); redAdjust.append(colorAdjustment->_rgbRedAdjustment.getAdjustmentR());
redAdjust.append(colorAdjustment->_rgbRedAdjustment.getAdjustmentG()); redAdjust.append(colorAdjustment->_rgbRedAdjustment.getAdjustmentG());
redAdjust.append(colorAdjustment->_rgbRedAdjustment.getAdjustmentB()); redAdjust.append(colorAdjustment->_rgbRedAdjustment.getAdjustmentB());
adjustment.insert("redAdjust", redAdjust); adjustment.insert("red", redAdjust);
QJsonArray greenAdjust; QJsonArray greenAdjust;
greenAdjust.append(colorAdjustment->_rgbGreenAdjustment.getAdjustmentR()); greenAdjust.append(colorAdjustment->_rgbGreenAdjustment.getAdjustmentR());
greenAdjust.append(colorAdjustment->_rgbGreenAdjustment.getAdjustmentG()); greenAdjust.append(colorAdjustment->_rgbGreenAdjustment.getAdjustmentG());
greenAdjust.append(colorAdjustment->_rgbGreenAdjustment.getAdjustmentB()); greenAdjust.append(colorAdjustment->_rgbGreenAdjustment.getAdjustmentB());
adjustment.insert("greenAdjust", greenAdjust); adjustment.insert("green", greenAdjust);
QJsonArray blueAdjust; QJsonArray blueAdjust;
blueAdjust.append(colorAdjustment->_rgbBlueAdjustment.getAdjustmentR()); blueAdjust.append(colorAdjustment->_rgbBlueAdjustment.getAdjustmentR());
blueAdjust.append(colorAdjustment->_rgbBlueAdjustment.getAdjustmentG()); blueAdjust.append(colorAdjustment->_rgbBlueAdjustment.getAdjustmentG());
blueAdjust.append(colorAdjustment->_rgbBlueAdjustment.getAdjustmentB()); blueAdjust.append(colorAdjustment->_rgbBlueAdjustment.getAdjustmentB());
adjustment.insert("blueAdjust", blueAdjust); adjustment.insert("blue", blueAdjust);
QJsonArray cyanAdjust;
cyanAdjust.append(colorAdjustment->_rgbCyanAdjustment.getAdjustmentR());
cyanAdjust.append(colorAdjustment->_rgbCyanAdjustment.getAdjustmentG());
cyanAdjust.append(colorAdjustment->_rgbCyanAdjustment.getAdjustmentB());
adjustment.insert("cyan", cyanAdjust);
QJsonArray magentaAdjust;
magentaAdjust.append(colorAdjustment->_rgbMagentaAdjustment.getAdjustmentR());
magentaAdjust.append(colorAdjustment->_rgbMagentaAdjustment.getAdjustmentG());
magentaAdjust.append(colorAdjustment->_rgbMagentaAdjustment.getAdjustmentB());
adjustment.insert("magenta", magentaAdjust);
QJsonArray yellowAdjust;
yellowAdjust.append(colorAdjustment->_rgbYellowAdjustment.getAdjustmentR());
yellowAdjust.append(colorAdjustment->_rgbYellowAdjustment.getAdjustmentG());
yellowAdjust.append(colorAdjustment->_rgbYellowAdjustment.getAdjustmentB());
adjustment.insert("yellow", yellowAdjust);
adjustment["brightnessMin"] = colorAdjustment->_rgbTransform.getBrightnessMin();
adjustment["brightness"] = colorAdjustment->_rgbTransform.getBrightness();
adjustment["gammaRed"] = colorAdjustment->_rgbTransform.getGammaR();
adjustment["gammaGreen"] = colorAdjustment->_rgbTransform.getGammaG();
adjustment["gammaBlue"] = colorAdjustment->_rgbTransform.getGammaB();
adjustmentArray.append(adjustment); adjustmentArray.append(adjustment);
} }
@ -806,76 +841,76 @@ void JsonClientConnection::handleAdjustmentCommand(const QJsonObject& message, c
return; return;
} }
if (adjustment.contains("redAdjust")) if (adjustment.contains("red"))
{ {
const QJsonArray & values = adjustment["redAdjust"].toArray(); const QJsonArray & values = adjustment["red"].toArray();
colorAdjustment->_rgbRedAdjustment.setAdjustmentR(values[0u].toInt()); colorAdjustment->_rgbRedAdjustment.setAdjustmentR(values[0u].toInt());
colorAdjustment->_rgbRedAdjustment.setAdjustmentG(values[1u].toInt()); colorAdjustment->_rgbRedAdjustment.setAdjustmentG(values[1u].toInt());
colorAdjustment->_rgbRedAdjustment.setAdjustmentB(values[2u].toInt()); colorAdjustment->_rgbRedAdjustment.setAdjustmentB(values[2u].toInt());
} }
if (adjustment.contains("greenAdjust")) if (adjustment.contains("green"))
{ {
const QJsonArray & values = adjustment["greenAdjust"].toArray(); const QJsonArray & values = adjustment["green"].toArray();
colorAdjustment->_rgbGreenAdjustment.setAdjustmentR(values[0u].toInt()); colorAdjustment->_rgbGreenAdjustment.setAdjustmentR(values[0u].toInt());
colorAdjustment->_rgbGreenAdjustment.setAdjustmentG(values[1u].toInt()); colorAdjustment->_rgbGreenAdjustment.setAdjustmentG(values[1u].toInt());
colorAdjustment->_rgbGreenAdjustment.setAdjustmentB(values[2u].toInt()); colorAdjustment->_rgbGreenAdjustment.setAdjustmentB(values[2u].toInt());
} }
if (adjustment.contains("blueAdjust")) if (adjustment.contains("blue"))
{ {
const QJsonArray & values = adjustment["blueAdjust"].toArray(); const QJsonArray & values = adjustment["blue"].toArray();
colorAdjustment->_rgbBlueAdjustment.setAdjustmentR(values[0u].toInt()); colorAdjustment->_rgbBlueAdjustment.setAdjustmentR(values[0u].toInt());
colorAdjustment->_rgbBlueAdjustment.setAdjustmentG(values[1u].toInt()); colorAdjustment->_rgbBlueAdjustment.setAdjustmentG(values[1u].toInt());
colorAdjustment->_rgbBlueAdjustment.setAdjustmentB(values[2u].toInt()); colorAdjustment->_rgbBlueAdjustment.setAdjustmentB(values[2u].toInt());
} }
if (adjustment.contains("cyanAdjust")) if (adjustment.contains("cyan"))
{ {
const QJsonArray & values = adjustment["cyanAdjust"].toArray(); const QJsonArray & values = adjustment["cyan"].toArray();
colorAdjustment->_rgbCyanAdjustment.setAdjustmentR(values[0u].toInt()); colorAdjustment->_rgbCyanAdjustment.setAdjustmentR(values[0u].toInt());
colorAdjustment->_rgbCyanAdjustment.setAdjustmentG(values[1u].toInt()); colorAdjustment->_rgbCyanAdjustment.setAdjustmentG(values[1u].toInt());
colorAdjustment->_rgbCyanAdjustment.setAdjustmentB(values[2u].toInt()); colorAdjustment->_rgbCyanAdjustment.setAdjustmentB(values[2u].toInt());
} }
if (adjustment.contains("magentaAdjust")) if (adjustment.contains("magenta"))
{ {
const QJsonArray & values = adjustment["magentaAdjust"].toArray(); const QJsonArray & values = adjustment["magenta"].toArray();
colorAdjustment->_rgbMagentaAdjustment.setAdjustmentR(values[0u].toInt()); colorAdjustment->_rgbMagentaAdjustment.setAdjustmentR(values[0u].toInt());
colorAdjustment->_rgbMagentaAdjustment.setAdjustmentG(values[1u].toInt()); colorAdjustment->_rgbMagentaAdjustment.setAdjustmentG(values[1u].toInt());
colorAdjustment->_rgbMagentaAdjustment.setAdjustmentB(values[2u].toInt()); colorAdjustment->_rgbMagentaAdjustment.setAdjustmentB(values[2u].toInt());
} }
if (adjustment.contains("yellowAdjust")) if (adjustment.contains("yellow"))
{ {
const QJsonArray & values = adjustment["yellowAdjust"].toArray(); const QJsonArray & values = adjustment["yellow"].toArray();
colorAdjustment->_rgbYellowAdjustment.setAdjustmentR(values[0u].toInt()); colorAdjustment->_rgbYellowAdjustment.setAdjustmentR(values[0u].toInt());
colorAdjustment->_rgbYellowAdjustment.setAdjustmentG(values[1u].toInt()); colorAdjustment->_rgbYellowAdjustment.setAdjustmentG(values[1u].toInt());
colorAdjustment->_rgbYellowAdjustment.setAdjustmentB(values[2u].toInt()); colorAdjustment->_rgbYellowAdjustment.setAdjustmentB(values[2u].toInt());
} }
if (adjustment.contains("blackAdjust")) if (adjustment.contains("black"))
{ {
const QJsonArray & values = adjustment["blackAdjust"].toArray(); const QJsonArray & values = adjustment["black"].toArray();
colorAdjustment->_rgbBlackAdjustment.setAdjustmentR(values[0u].toInt()); colorAdjustment->_rgbBlackAdjustment.setAdjustmentR(values[0u].toInt());
colorAdjustment->_rgbBlackAdjustment.setAdjustmentG(values[1u].toInt()); colorAdjustment->_rgbBlackAdjustment.setAdjustmentG(values[1u].toInt());
colorAdjustment->_rgbBlackAdjustment.setAdjustmentB(values[2u].toInt()); colorAdjustment->_rgbBlackAdjustment.setAdjustmentB(values[2u].toInt());
} }
if (adjustment.contains("whiteAdjust")) if (adjustment.contains("white"))
{ {
const QJsonArray & values = adjustment["whiteAdjust"].toArray(); const QJsonArray & values = adjustment["white"].toArray();
colorAdjustment->_rgbWhiteAdjustment.setAdjustmentR(values[0u].toInt()); colorAdjustment->_rgbWhiteAdjustment.setAdjustmentR(values[0u].toInt());
colorAdjustment->_rgbWhiteAdjustment.setAdjustmentG(values[1u].toInt()); colorAdjustment->_rgbWhiteAdjustment.setAdjustmentG(values[1u].toInt());
colorAdjustment->_rgbWhiteAdjustment.setAdjustmentB(values[2u].toInt()); colorAdjustment->_rgbWhiteAdjustment.setAdjustmentB(values[2u].toInt());
} }
if (adjustment.contains("gammaR")) if (adjustment.contains("gammaRed"))
{ {
colorAdjustment->_rgbTransform.setGamma(adjustment["gammaR"].toDouble(), colorAdjustment->_rgbTransform.getGammaG(), colorAdjustment->_rgbTransform.getGammaB()); colorAdjustment->_rgbTransform.setGamma(adjustment["gammaRed"].toDouble(), colorAdjustment->_rgbTransform.getGammaG(), colorAdjustment->_rgbTransform.getGammaB());
} }
if (adjustment.contains("gammaG")) if (adjustment.contains("gammaGreen"))
{ {
colorAdjustment->_rgbTransform.setGamma(colorAdjustment->_rgbTransform.getGammaR(), adjustment["gammaG"].toDouble(), colorAdjustment->_rgbTransform.getGammaB()); colorAdjustment->_rgbTransform.setGamma(colorAdjustment->_rgbTransform.getGammaR(), adjustment["gammaGreen"].toDouble(), colorAdjustment->_rgbTransform.getGammaB());
} }
if (adjustment.contains("gammaB")) if (adjustment.contains("gammaBlue"))
{ {
colorAdjustment->_rgbTransform.setGamma(colorAdjustment->_rgbTransform.getGammaR(), colorAdjustment->_rgbTransform.getGammaG(), adjustment["gammaB"].toDouble()); colorAdjustment->_rgbTransform.setGamma(colorAdjustment->_rgbTransform.getGammaR(), colorAdjustment->_rgbTransform.getGammaG(), adjustment["gammaBlue"].toDouble());
} }
if (adjustment.contains("brightnessMin")) if (adjustment.contains("brightnessMin"))

View File

@ -18,7 +18,7 @@
"type" : "string", "type" : "string",
"required" : false "required" : false
}, },
"redAdjust": { "red": {
"type": "array", "type": "array",
"required": false, "required": false,
"items" : { "items" : {
@ -29,7 +29,7 @@
"minItems": 3, "minItems": 3,
"maxItems": 3 "maxItems": 3
}, },
"greenAdjust": { "green": {
"type": "array", "type": "array",
"required": false, "required": false,
"items" : { "items" : {
@ -40,7 +40,7 @@
"minItems": 3, "minItems": 3,
"maxItems": 3 "maxItems": 3
}, },
"blueAdjust": { "blue": {
"type": "array", "type": "array",
"required": false, "required": false,
"items" : { "items" : {
@ -51,7 +51,7 @@
"minItems": 3, "minItems": 3,
"maxItems": 3 "maxItems": 3
}, },
"yellowAdjust": { "yellow": {
"type": "array", "type": "array",
"required": false, "required": false,
"items" : { "items" : {
@ -62,7 +62,7 @@
"minItems": 3, "minItems": 3,
"maxItems": 3 "maxItems": 3
}, },
"magentaAdjust": { "magenta": {
"type": "array", "type": "array",
"required": false, "required": false,
"items" : { "items" : {
@ -73,7 +73,7 @@
"minItems": 3, "minItems": 3,
"maxItems": 3 "maxItems": 3
}, },
"cyanAdjust": { "cyan": {
"type": "array", "type": "array",
"required": false, "required": false,
"items" : { "items" : {
@ -84,7 +84,7 @@
"minItems": 3, "minItems": 3,
"maxItems": 3 "maxItems": 3
}, },
"blackAdjust": { "black": {
"type": "array", "type": "array",
"required": false, "required": false,
"items" : { "items" : {
@ -95,7 +95,7 @@
"minItems": 3, "minItems": 3,
"maxItems": 3 "maxItems": 3
}, },
"whiteAdjust": { "white": {
"type": "array", "type": "array",
"required": false, "required": false,
"items" : { "items" : {
@ -106,19 +106,19 @@
"minItems": 3, "minItems": 3,
"maxItems": 3 "maxItems": 3
}, },
"gammaR": { "gammaRed": {
"type" : "number", "type" : "number",
"required" : false, "required" : false,
"minimum" : 0.0, "minimum" : 0.0,
"maximum" : 100.0 "maximum" : 100.0
}, },
"gammaG": { "gammaGreen": {
"type" : "number", "type" : "number",
"required" : false, "required" : false,
"minimum" : 0.0, "minimum" : 0.0,
"maximum" : 100.0 "maximum" : 100.0
}, },
"gammaB": { "gammaBlue": {
"type" : "number", "type" : "number",
"required" : false, "required" : false,
"minimum" : 0.0, "minimum" : 0.0,

View File

@ -492,13 +492,13 @@ void KODIVideoChecker::setVideoMode(VideoMode newVideoMode)
switch (newVideoMode) switch (newVideoMode)
{ {
case VIDEO_2D: case VIDEO_2D:
Info(_log, "KODICHECK INFO: switching to 2D mode"); Info(_log, "switching to 2D mode");
break; break;
case VIDEO_3DSBS: case VIDEO_3DSBS:
Info(_log, "KODICHECK INFO: switching to 3D SBS mode"); Info(_log, "switching to 3D SBS mode");
break; break;
case VIDEO_3DTAB: case VIDEO_3DTAB:
Info(_log, "KODICHECK INFO: switching to 3D TAB mode"); Info(_log, "switching to 3D TAB mode");
break; break;
} }

View File

@ -110,7 +110,7 @@ void QJsonSchemaChecker::validate(const QJsonValue & value, const QJsonObject &s
else if (attribute == "id") else if (attribute == "id")
; // references have already been collected ; // references have already been collected
else if (attribute == "title" || attribute == "description" || attribute == "default" || attribute == "format" else if (attribute == "title" || attribute == "description" || attribute == "default" || attribute == "format"
|| attribute == "defaultProperties" || attribute == "propertyOrder" || attribute == "append" || attribute == "step" || attribute == "access" || attribute == "options") || attribute == "defaultProperties" || attribute == "propertyOrder" || attribute == "append" || attribute == "step" || attribute == "access" || attribute == "options" || attribute == "script")
; // nothing to do. ; // nothing to do.
else else
{ {

View File

@ -49,7 +49,7 @@ void StaticFileServing::onServerStarted (quint16 port)
BonjourServiceRegister *bonjourRegister_http = new BonjourServiceRegister(); BonjourServiceRegister *bonjourRegister_http = new BonjourServiceRegister();
bonjourRegister_http->registerService( bonjourRegister_http->registerService(
BonjourRecord(mDNSDescr.c_str(), "_http._tcp", QString()), BonjourRecord(mDNSDescr.c_str(), "_hyperiond-http._tcp", QString()),
port port
); );
Debug(_log, "Web Config mDNS responder started"); Debug(_log, "Web Config mDNS responder started");

View File

@ -434,7 +434,7 @@ void JsonConnection::setAdjustment(
red.append(redAdjustment.red()); red.append(redAdjustment.red());
red.append(redAdjustment.green()); red.append(redAdjustment.green());
red.append(redAdjustment.blue()); red.append(redAdjustment.blue());
adjust["redAdjust"] = red; adjust["red"] = red;
} }
if (greenAdjustment.isValid()) if (greenAdjustment.isValid())
@ -443,7 +443,7 @@ void JsonConnection::setAdjustment(
green.append(greenAdjustment.red()); green.append(greenAdjustment.red());
green.append(greenAdjustment.green()); green.append(greenAdjustment.green());
green.append(greenAdjustment.blue()); green.append(greenAdjustment.blue());
adjust["greenAdjust"] = green; adjust["green"] = green;
} }
if (blueAdjustment.isValid()) if (blueAdjustment.isValid())
@ -452,7 +452,7 @@ void JsonConnection::setAdjustment(
blue.append(blueAdjustment.red()); blue.append(blueAdjustment.red());
blue.append(blueAdjustment.green()); blue.append(blueAdjustment.green());
blue.append(blueAdjustment.blue()); blue.append(blueAdjustment.blue());
adjust["blueAdjust"] = blue; adjust["blue"] = blue;
} }
if (cyanAdjustment.isValid()) if (cyanAdjustment.isValid())
{ {
@ -460,7 +460,7 @@ void JsonConnection::setAdjustment(
cyan.append(cyanAdjustment.red()); cyan.append(cyanAdjustment.red());
cyan.append(cyanAdjustment.green()); cyan.append(cyanAdjustment.green());
cyan.append(cyanAdjustment.blue()); cyan.append(cyanAdjustment.blue());
adjust["cyanAdjust"] = cyan; adjust["cyan"] = cyan;
} }
if (magentaAdjustment.isValid()) if (magentaAdjustment.isValid())
{ {
@ -468,7 +468,7 @@ void JsonConnection::setAdjustment(
magenta.append(magentaAdjustment.red()); magenta.append(magentaAdjustment.red());
magenta.append(magentaAdjustment.green()); magenta.append(magentaAdjustment.green());
magenta.append(magentaAdjustment.blue()); magenta.append(magentaAdjustment.blue());
adjust["magentaAdjust"] = magenta; adjust["magenta"] = magenta;
} }
if (yellowAdjustment.isValid()) if (yellowAdjustment.isValid())
{ {
@ -476,7 +476,7 @@ void JsonConnection::setAdjustment(
yellow.append(yellowAdjustment.red()); yellow.append(yellowAdjustment.red());
yellow.append(yellowAdjustment.green()); yellow.append(yellowAdjustment.green());
yellow.append(yellowAdjustment.blue()); yellow.append(yellowAdjustment.blue());
adjust["yellowAdjust"] = yellow; adjust["yellow"] = yellow;
} }
if (whiteAdjustment.isValid()) if (whiteAdjustment.isValid())
{ {
@ -484,7 +484,7 @@ void JsonConnection::setAdjustment(
white.append(whiteAdjustment.red()); white.append(whiteAdjustment.red());
white.append(whiteAdjustment.green()); white.append(whiteAdjustment.green());
white.append(whiteAdjustment.blue()); white.append(whiteAdjustment.blue());
adjust["whiteAdjust"] = white; adjust["white"] = white;
} }
if (blackAdjustment.isValid()) if (blackAdjustment.isValid())
{ {
@ -492,7 +492,7 @@ void JsonConnection::setAdjustment(
black.append(blackAdjustment.red()); black.append(blackAdjustment.red());
black.append(blackAdjustment.green()); black.append(blackAdjustment.green());
black.append(blackAdjustment.blue()); black.append(blackAdjustment.blue());
adjust["blackAdjust"] = black; adjust["black"] = black;
} }
if (brightnessMin != nullptr) if (brightnessMin != nullptr)
{ {
@ -504,15 +504,15 @@ void JsonConnection::setAdjustment(
} }
if (gammaR != nullptr) if (gammaR != nullptr)
{ {
adjust["gammaR"] = *gammaR; adjust["gammaRed"] = *gammaR;
} }
if (gammaG != nullptr) if (gammaG != nullptr)
{ {
adjust["gammaG"] = *gammaG; adjust["gammaGreen"] = *gammaG;
} }
if (gammaB != nullptr) if (gammaB != nullptr)
{ {
adjust["gammaB"] = *gammaB; adjust["gammaBlue"] = *gammaB;
} }
command["adjustment"] = adjust; command["adjustment"] = adjust;

View File

@ -85,7 +85,7 @@ int main(int argc, char * argv[])
ColorOption & argYAdjust = parser.add<ColorOption> ('Y', "yellowAdjustment", "Set the adjustment of the yellow color (requires colors in hex format as RRGGBB)"); ColorOption & argYAdjust = parser.add<ColorOption> ('Y', "yellowAdjustment", "Set the adjustment of the yellow color (requires colors in hex format as RRGGBB)");
ColorOption & argWAdjust = parser.add<ColorOption> ('W', "whiteAdjustment", "Set the adjustment of the white color (requires colors in hex format as RRGGBB)"); ColorOption & argWAdjust = parser.add<ColorOption> ('W', "whiteAdjustment", "Set the adjustment of the white color (requires colors in hex format as RRGGBB)");
ColorOption & argbAdjust = parser.add<ColorOption> ('b', "blackAdjustment", "Set the adjustment of the black color (requires colors in hex format as RRGGBB)"); ColorOption & argbAdjust = parser.add<ColorOption> ('b', "blackAdjustment", "Set the adjustment of the black color (requires colors in hex format as RRGGBB)");
Option & argMapping = parser.add<Option> ('m', "ledMapping" , "Set the methode for image to led mapping valif values: multicolor:mean, unicolor_mean"); Option & argMapping = parser.add<Option> ('m', "ledMapping" , "Set the methode for image to led mapping valid values: multicolor_mean, unicolor_mean");
IntOption & argSource = parser.add<IntOption> (0x0, "sourceSelect" , "Set current active priority channel and deactivate auto source switching"); IntOption & argSource = parser.add<IntOption> (0x0, "sourceSelect" , "Set current active priority channel and deactivate auto source switching");
BooleanOption & argSourceAuto = parser.add<BooleanOption>(0x0, "sourceAutoSelect", "Enables auto source, if disabled prio by manual selecting input source"); BooleanOption & argSourceAuto = parser.add<BooleanOption>(0x0, "sourceAutoSelect", "Enables auto source, if disabled prio by manual selecting input source");
BooleanOption & argSourceOff = parser.add<BooleanOption>(0x0, "sourceOff", "select no source, this results in leds activly set to black (=off)"); BooleanOption & argSourceOff = parser.add<BooleanOption>(0x0, "sourceOff", "select no source, this results in leds activly set to black (=off)");

View File

@ -376,7 +376,7 @@ void HyperionDaemon::startNetworkServices()
if (_udpListener != nullptr) { if (_udpListener != nullptr) {
BonjourServiceRegister *bonjourRegister_udp = new BonjourServiceRegister(); BonjourServiceRegister *bonjourRegister_udp = new BonjourServiceRegister();
bonjourRegister_udp->registerService( bonjourRegister_udp->registerService(
BonjourRecord(mDNSDescr.c_str(), "_hyperiond-rgbled._udp", QString()), BonjourRecord(mDNSDescr.c_str(), "_hyperiond-udp._udp", QString()),
_udpListener->getPort() _udpListener->getPort()
); );
Debug(_log, "UDP LIstener mDNS responder started"); Debug(_log, "UDP LIstener mDNS responder started");