priorities rework, webc update (#366)

* update

* update

* tabs test

* update

* test

* ...

* fix editor

* update ui

* fix visual glitch if help is off

* fix fadecandy error and th

[skip ci]
This commit is contained in:
brindosch 2017-01-17 21:53:35 +01:00 committed by redPanther
parent 5b809743f7
commit 8d7137136b
75 changed files with 1713 additions and 1144 deletions

View File

@ -7,8 +7,7 @@
<h4 data-i18n="conf_colors_label_intro">Color calibration, smoothing (color transistions) and detection of blackbars.</h4> <h4 data-i18n="conf_colors_label_intro">Color calibration, smoothing (color transistions) and detection of blackbars.</h4>
<hr /> <hr />
</div> </div>
<div id='editor_container'/> <div id="conf_cont"></div>
<button class="btn btn-success" id='btn_submit' data-i18n="general_button_savesettings">Save Settings</button>
</div> </div>
</div> </div>
</div> </div>

View File

@ -37,7 +37,7 @@ function tryReconnect()
function connectionLostAction() function connectionLostAction()
{ {
connectionLost = true; connectionLost = true;
connectionTimer = window.setInterval(tryReconnect, 5000); connectionTimer = window.setInterval(tryReconnect, 4000);
} }
</script> </script>

View File

@ -6,57 +6,9 @@
<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> <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 /> <hr />
</div> </div>
<div class="row"> <div id="conf_cont"></div>
<div class="col-lg-6">
<div class="panel panel-default">
<div class="panel-heading"><i class="fa fa-spinner fa-fw"></i><span data-i18n="edt_conf_effp_heading_title">Effect Paths</span></div>
<div class="panel-body">
<div id='editor_container_effects'/>
</div>
<div class="panel-footer">
<button class="btn btn-success" id='btn_submit_effects' data-i18n="general_button_savesettings">Save Settings</button>
</div>
</div>
</div>
<div class="col-lg-6">
<div id="opt_expl_effects"></div>
</div>
</div>
<div class="row">
<div class="col-lg-6">
<div class="panel panel-default">
<div class="panel-heading"><i class="fa fa-spinner fa-fw"></i><span data-i18n="edt_conf_fge_heading_title">Kodi Watch</span></div>
<div class="panel-body">
<div id='editor_container_foregroundEffect'/>
</div>
<div class="panel-footer">
<button class="btn btn-success" id='btn_submit_foregroundEffect' data-i18n="general_button_savesettings">Save Settings</button>
</div>
</div>
</div>
<div class="col-lg-6">
<div id="opt_expl_foregroundEffect"></div>
</div>
</div>
<div class="row">
<div class="col-lg-6">
<div class="panel panel-default">
<div class="panel-heading"><i class="fa fa-spinner fa-fw"></i><span data-i18n="edt_conf_bge_heading_title">Kodi Watch</span></div>
<div class="panel-body">
<div id='editor_container_backgroundEffect'/>
</div>
<div class="panel-footer">
<button class="btn btn-success" id='btn_submit_backgroundEffect' data-i18n="general_button_savesettings">Save Settings</button>
</div>
</div>
</div>
<div class="col-lg-6">
<div id="opt_expl_backgroundEffect"></div>
</div>
</div>
</div> </div>
</div> </div>
</div> </div>
<script src="/js/content_effects.js"></script> <script src="/js/content_effects.js"></script>

View File

@ -7,14 +7,14 @@
<hr /> <hr />
</div> </div>
<div class="row"> <div class="row">
<div class="col-xxl-6"> <div class="col-lg-6">
<div class="panel panel-default" > <div class="panel panel-default" >
<div class="panel-heading"> <div class="panel-heading">
<label for="effectslist" data-i18n="effectsconfigurator_label_chooseeff">Choose Base-Effect:</label> <label for="effectslist" data-i18n="effectsconfigurator_label_chooseeff">Choose Base-Effect:</label>
<select id="effectslist" class="form-control" style="color:black;width:auto;margin-left:10px;display:inline-block" /> <select id="effectslist" class="form-control" style="color:black;width:auto;margin-left:10px;display:inline-block" />
</div> </div>
<div class="panel-body"> <div class="panel-body">
<table> <table style="margin-bottom:8px">
<tbody> <tbody>
<tr> <tr>
<td class="ltd"><label for="name-input" data-i18n="effectsconfigurator_label_effectname">Effect name:</label></td> <td class="ltd"><label for="name-input" data-i18n="effectsconfigurator_label_effectname">Effect name:</label></td>
@ -32,7 +32,7 @@
</div> </div>
</div> </div>
</div> </div>
<div class="col-xxl-6"> <div class="col-lg-6">
<div class="panel panel-default" > <div class="panel panel-default" >
<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>

View File

@ -6,21 +6,22 @@
<h4 data-i18n="conf_general_label_intro"></h4> <h4 data-i18n="conf_general_label_intro"></h4>
</div> </div>
<hr /> <hr />
<div class="row" id="conf_cont"></div>
<div class="row"> <div class="row">
<div class="col-lg-6"> <div class="col-lg-6" id="conf_imp">
<div class="panel panel-default"> <div class="panel panel-default">
<div class="panel-heading"><i class="fa fa-wrench fa-fw"></i><span data-i18n="edt_conf_gen_heading_title">General</span></div> <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"> <div class="panel-body">
<div id='editor_container'/> <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>
<div class="panel-footer"> <div class="panel-footer" style="text-align:right">
<button class="btn btn-success" id='btn_submit' data-i18n="general_button_savesettings">Save Settings</button> <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 class="col-lg-6">
<div id="opt_expl"></div>
</div>
</div> </div>
</div> </div>
</div> </div>

View File

@ -7,37 +7,7 @@
<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> <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 /> <hr />
</div> </div>
<div class="row"> <div id="conf_cont"></div>
<div class="col-lg-6">
<div class="panel panel-default">
<div class="panel-heading"><i class="fa fa-camera fa-fw"></i><span data-i18n="edt_conf_fg_heading_title">Kodi Watch</span></div>
<div class="panel-body">
<div id='editor_container_fg'/>
</div>
<div class="panel-footer">
<button class="btn btn-success" id='btn_submit_fg' data-i18n="general_button_savesettings">Save Settings</button>
</div>
</div>
</div>
<div class="col-lg-6">
<div id="opt_expl_fg"></div>
</div>
<div class="col-lg-6">
<div class="panel panel-default">
<div class="panel-heading"><i class="fa fa-camera fa-fw"></i><span data-i18n="edt_conf_v4l2_heading_title">Kodi Watch</span></div>
<div class="panel-body">
<div id='editor_container_v4l2'/>
</div>
<div class="panel-footer">
<button class="btn btn-success" id='btn_submit_v4l2' data-i18n="general_button_savesettings">Save Settings</button>
</div>
</div>
</div>
<div class="col-lg-6">
<div id="opt_expl_v4l2"></div>
</div>
</div>
</div> </div>
</div> </div>
</div> </div>

View File

@ -10,22 +10,7 @@
<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.
</div> </div>
<div class="row"> <div class="row" id="conf_cont"></div>
<div class="col-lg-6">
<div class="panel panel-default">
<div class="panel-heading"><i class="fa fa-play-circle-o fa-fw"></i><span data-i18n="conf_kodi_label_title">Kodi Watch</span></div>
<div class="panel-body">
<div id='editor_container'/>
</div>
<div class="panel-footer">
<button class="btn btn-success" id='btn_submit' data-i18n="general_button_savesettings">Save Settings</button>
</div>
</div>
</div>
<div class="col-lg-6">
<div id="opt_expl"></div>
</div>
</div>
</div> </div>
</div> </div>
</div> </div>

View File

@ -1,12 +1,3 @@
<style>
#leds_canvas {width:800px; height:450px; background-color:#AAAAAA; position:absolute; margin:10px; box-shadow: 10px 10px 5px #BBBBBB;
background-image:url(/img/hyperion/hyperionlogo.png); background-repeat:no-repeat; background-position: center; 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;}
#leds_controls {white-space:nowrap; margin-top:500px;}
</style>
<div class="modal fade bs-pair-modal-lg" id="pairmodal" tabindex="-1" role="dialog" aria-labelledby="mySmallModalLabel"> <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-dialog modal-lg" role="document">
@ -26,8 +17,6 @@
</div> </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> <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>
<div class="introd"> <div class="introd">
@ -38,7 +27,6 @@
<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>
<li><a data-toggle="tab" href="#menu_display" data-i18n="conf_leds_nav_label_ledtesting">LED Testing</a></li>
</ul> </ul>
<div class="tab-content"> <div class="tab-content">
@ -79,58 +67,27 @@
</div> </div>
</div> </div>
</div> </div>
<div class="panel-footer"> <div class="panel-footer" style="text-align:right">
<button id='btn_submit_controller' class="btn btn-success" data-i18n="general_button_savesettings">Save Settings</button> <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>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div id="menu_display" class="tab-pane fade" style="padding-top:10px">
<div class="container-fluid">
<div id="leds_canvas"/>
<div id="leds_controls">
<button type="button" class="btn btn-success" id="leds_toggle" data-i18n="conf_leds_test_button_toggleleds">toggle leds</button>
<button type="button" class="btn btn-danger" id="leds_toggle_num" data-i18n="conf_leds_test_button_togglelednumber">toggle led numbers</button>
<button type="button" class="btn btn-danger" id="leds_toggle_live" data-i18n="conf_leds_test_button_toggleliveleds">toggle live leds</button>
<button type="button" class="btn btn-danger" id="leds_toggle_live_video" data-i18n="conf_leds_test_button_togglelivevideo">toggle live video</button>
</div>
</div>
</div>
<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-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-heading headcollapse" data-toggle="collapse" data-parent="#accordion" data-target="#collapse4">
<h4 class="panel-title">
<a><i class="fa fa-wrench fa-fw"></i><span data-i18n="conf_leds_layout_generatedconf">Generated/Actual LED Configuration</span></a>
</h4>
</div>
<div id="collapse4" class="panel-collapse collapse in">
<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>
<b><p data-i18n="conf_leds_layout_textf2">Don't forget to save!</p></b>
<textarea rows="25" id="ledconfig" class="form-control"></textarea>
</div>
<div class="panel-footer">
<button type="button" class="btn btn-warning" id="leds_custom_updsim" data-i18n="conf_leds_layout_button_updsim">Update preview</button>
<button type="button" class="btn btn-success pull-right" id="leds_custom_save" data-i18n="conf_leds_layout_button_savelay">Save layout</button>
</div>
</div>
</div>
<div class="panel panel-primary"> <div class="panel panel-primary">
<div class="panel-heading headcollapse" data-toggle="collapse" data-parent="#accordion" data-target="#collapse1"> <div class="panel-heading headcollapse" data-toggle="collapse" data-parent="#accordion" data-target="#collapse1">
<h4 class="panel-title"> <h4 class="panel-title">
<a><i class="fa fa-television fa-fw"></i><span data-i18n="conf_leds_layout_frame">Classic Layout (LED Frame)</span></a> <a><i class="fa fa-television fa-fw"></i><span data-i18n="conf_leds_layout_frame">Classic Layout (LED Frame)</span></a>
</h4> </h4>
</div> </div>
<div id="collapse1" class="panel-collapse collapse"> <div id="collapse1" class="panel-collapse collapse in">
<div class="panel-body "> <div class="panel-body">
<table class="table borderless"> <table class="table borderless">
<tbody> <tbody>
<tr> <tr>
@ -138,7 +95,7 @@
<label class="ltdlabel" for="ip_cl_ledstop" data-i18n="conf_leds_layout_cl_top">Top</label> <label class="ltdlabel" for="ip_cl_ledstop" data-i18n="conf_leds_layout_cl_top">Top</label>
</td> </td>
<td class="itd input-group"> <td class="itd input-group">
<input class="form-control ledCLconstr" id="ip_cl_ledstop" type="number" value="10" min="0" step="1"></input> <input class="form-control ledCLconstr led_val_int" id="ip_cl_ledstop" type="number" value="10" min="0" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_leds">LEDs</div> <div class="input-group-addon" data-i18n="edt_append_leds">LEDs</div>
</td> </td>
</tr> </tr>
@ -147,7 +104,7 @@
<label class="ltdlabel" for="ip_cl_ledsbottom" data-i18n="conf_leds_layout_cl_bottom">Bottom</label> <label class="ltdlabel" for="ip_cl_ledsbottom" data-i18n="conf_leds_layout_cl_bottom">Bottom</label>
</td> </td>
<td class="itd input-group"> <td class="itd input-group">
<input class="form-control ledCLconstr" id="ip_cl_ledsbottom" type="number" value="10" min="0" step="1"></input> <input class="form-control ledCLconstr led_val_int" id="ip_cl_ledsbottom" type="number" value="10" min="0" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_leds">LEDs</div> <div class="input-group-addon" data-i18n="edt_append_leds">LEDs</div>
</td> </td>
</tr> </tr>
@ -156,7 +113,7 @@
<label class="ltdlabel" for="ip_cl_ledsleft" data-i18n="conf_leds_layout_cl_left">Left</label> <label class="ltdlabel" for="ip_cl_ledsleft" data-i18n="conf_leds_layout_cl_left">Left</label>
</td> </td>
<td class="itd input-group"> <td class="itd input-group">
<input class="form-control ledCLconstr" id="ip_cl_ledsleft" type="number" value="6" min="0" step="1"></input> <input class="form-control ledCLconstr led_val_int" id="ip_cl_ledsleft" type="number" value="6" min="0" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_leds">LEDs</div> <div class="input-group-addon" data-i18n="edt_append_leds">LEDs</div>
</td> </td>
</tr> </tr>
@ -165,7 +122,7 @@
<label class="ltdlabel" for="ip_cl_ledsright" data-i18n="conf_leds_layout_cl_right">Right</label> <label class="ltdlabel" for="ip_cl_ledsright" data-i18n="conf_leds_layout_cl_right">Right</label>
</td> </td>
<td class="itd input-group"> <td class="itd input-group">
<input class="form-control ledCLconstr" id="ip_cl_ledsright" type="number" value="6" min="0" step="1"></input> <input class="form-control ledCLconstr led_val_int" id="ip_cl_ledsright" type="number" value="6" min="0" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_leds">LEDs</div> <div class="input-group-addon" data-i18n="edt_append_leds">LEDs</div>
</td> </td>
</tr> </tr>
@ -174,7 +131,7 @@
<label class="ltdlabel" for="ip_cl_ledsglength" data-i18n="conf_leds_layout_cl_gaglength">Gap length</label> <label class="ltdlabel" for="ip_cl_ledsglength" data-i18n="conf_leds_layout_cl_gaglength">Gap length</label>
</td> </td>
<td class="itd input-group"> <td class="itd input-group">
<input class="form-control ledCLconstr" id="ip_cl_ledsglength" type="number" value="0" min="0" step="1"></input> <input class="form-control ledCLconstr led_val_int" id="ip_cl_ledsglength" type="number" value="0" min="0" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_leds">LEDs</div> <div class="input-group-addon" data-i18n="edt_append_leds">LEDs</div>
</td> </td>
</tr> </tr>
@ -183,7 +140,7 @@
<label class="ltdlabel" for="ip_cl_ledsgpos" data-i18n="conf_leds_layout_cl_gappos">Gap position</label> <label class="ltdlabel" for="ip_cl_ledsgpos" data-i18n="conf_leds_layout_cl_gappos">Gap position</label>
</td> </td>
<td class="itd"> <td class="itd">
<input class="form-control ledCLconstr" id="ip_cl_ledsgpos" type="number" value="0" min="0" step="1"> <input class="form-control ledCLconstr led_val_int" id="ip_cl_ledsgpos" type="number" value="0" min="0" step="1">
</td> </td>
</tr> </tr>
<tr> <tr>
@ -191,7 +148,7 @@
<label class="ltdlabel" for="ip_cl_position" data-i18n="conf_leds_layout_cl_inppos">Input position</label> <label class="ltdlabel" for="ip_cl_position" data-i18n="conf_leds_layout_cl_inppos">Input position</label>
</td> </td>
<td class="itd"> <td class="itd">
<input class="form-control ledCLconstr" id="ip_cl_position" type="number" value="0" step="1"> <input class="form-control ledCLconstr led_val_int" id="ip_cl_position" type="number" value="0" step="1">
</td> </td>
</tr> </tr>
<tr> <tr>
@ -200,7 +157,7 @@
</td> </td>
<td class="itd"> <td class="itd">
<div class="checkbox"> <div class="checkbox">
<input class="ledCLconstr" id="ip_cl_reverse" type="checkbox" value="false"></input> <input class="ledCLconstr led_val_bool" id="ip_cl_reverse" type="checkbox" value="false"></input>
<label></label> <label></label>
</div> </div>
</td> </td>
@ -219,37 +176,37 @@
<tbody> <tbody>
<tr> <tr>
<td class="ltd"> <td class="ltd">
<label class="ltdlabel" for="ip_cl_ledshdepth" data-i18n="conf_leds_layout_cl_hleddepth">Horizontal LED depth</label> <label class="ltdlabel" for="ip_cl_rawledshdepth" 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" id="ip_cl_ledshdepth" type="number" value="8" min="1" max="100" step="1"></input> <input class="form-control ledCLconstr led_val_int" id="ip_cl_rawledshdepth" 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_ledsvdepth" data-i18n="conf_leds_layout_cl_vleddepth">Vertical LED depth</label> <label class="ltdlabel" for="ip_cl_rawledsvdepth" 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" id="ip_cl_ledsvdepth" type="number" value="5" min="1" max="100" step="1"></input> <input class="form-control ledCLconstr led_val_int" id="ip_cl_rawledsvdepth" 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_ledsedgegap" data-i18n="conf_leds_layout_cl_edgegap">Edge Gap</label> <label class="ltdlabel" for="ip_cl_rawledsedgegap" 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" id="ip_cl_ledsedgegap" type="number" value="0" min="0" max="50" step="1"></input> <input class="form-control ledCLconstr led_val_int" id="ip_cl_rawledsedgegap" 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> <tr>
<td class="ltd"> <td class="ltd">
<label class="ltdlabel" for="ip_cl_ledscornergap" data-i18n="conf_leds_layout_cl_cornergap">Corner Gap</label> <label class="ltdlabel" for="ip_cl_rawledscornergap" data-i18n="conf_leds_layout_cl_cornergap">Corner Gap</label>
</td> </td>
<td class="itd input-group"> <td class="itd input-group">
<input class="form-control ledCLconstr" id="ip_cl_ledscornergap" type="number" value="0" min="0" max="50" step="1"></input> <input class="form-control ledCLconstr led_val_int" id="ip_cl_rawledscornergap" 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>
@ -259,8 +216,9 @@
</div> </div>
</div> </div>
</div> </div>
<div class="panel-footer"> <div class="panel-footer" style="text-align:right;">
<button id="btn_cl_generate" class="btn btn-warning" data-i18n="conf_leds_layout_cl_generate">Generate LED configuration</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>
</div> </div>
</div> </div>
</div> </div>
@ -279,7 +237,7 @@
<label class="ltdlabel" for="ip_ma_ledshoriz" data-i18n="conf_leds_layout_ma_horiz">Horizontal</label> <label class="ltdlabel" for="ip_ma_ledshoriz" data-i18n="conf_leds_layout_ma_horiz">Horizontal</label>
</td> </td>
<td class="itd input-group"> <td class="itd input-group">
<input class="form-control ledMAconstr" id="ip_ma_ledshoriz" type="number" value="10" min="1" step="1"></input> <input class="form-control ledMAconstr led_val_int" id="ip_ma_ledshoriz" type="number" value="10" min="1" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_leds">LEDs</div> <div class="input-group-addon" data-i18n="edt_append_leds">LEDs</div>
</td> </td>
</tr> </tr>
@ -288,7 +246,7 @@
<label class="ltdlabel" for="ip_ma_ledsvert" data-i18n="conf_leds_layout_ma_vert">Vertical</label> <label class="ltdlabel" for="ip_ma_ledsvert" data-i18n="conf_leds_layout_ma_vert">Vertical</label>
</td> </td>
<td class="itd input-group"> <td class="itd input-group">
<input class="form-control ledMAconstr" id="ip_ma_ledsvert" type="number" value="10" min="1" step="1"></input> <input class="form-control ledMAconstr led_val_int" id="ip_ma_ledsvert" type="number" value="10" min="1" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_leds">LEDs</div> <div class="input-group-addon" data-i18n="edt_append_leds">LEDs</div>
</td> </td>
</tr> </tr>
@ -297,7 +255,7 @@
<label class="ltdlabel" for="ip_ma_cabling" data-i18n="conf_leds_layout_ma_cabling">Cabling</label> <label class="ltdlabel" for="ip_ma_cabling" data-i18n="conf_leds_layout_ma_cabling">Cabling</label>
</td> </td>
<td class="itd"> <td class="itd">
<select class="form-control ledMAconstr" id="ip_ma_cabling"> <select class="form-control ledMAconstr led_val_string" id="ip_ma_cabling">
<option value="snake" data-i18n="conf_leds_layout_ma_optsnake">Snake</option> <option value="snake" data-i18n="conf_leds_layout_ma_optsnake">Snake</option>
<option value="parallel" data-i18n="conf_leds_layout_ma_optparallel">Parallel</option> <option value="parallel" data-i18n="conf_leds_layout_ma_optparallel">Parallel</option>
</select> </select>
@ -320,7 +278,7 @@
<label class="ltdlabel" for="ip_ma_start" data-i18n="conf_leds_layout_ma_position">Input</label> <label class="ltdlabel" for="ip_ma_start" data-i18n="conf_leds_layout_ma_position">Input</label>
</td> </td>
<td class="itd"> <td class="itd">
<select class="form-control ledMAconstr" id="ip_ma_start"> <select class="form-control ledMAconstr led_val_string" id="ip_ma_start">
<option value="top-left" data-i18n="conf_leds_layout_ma_opttopleft">Top left</option> <option value="top-left" data-i18n="conf_leds_layout_ma_opttopleft">Top left</option>
<option value="top-right" data-i18n="conf_leds_layout_ma_opttopright">Top right</option> <option value="top-right" data-i18n="conf_leds_layout_ma_opttopright">Top right</option>
<option value="bottom-left" data-i18n="conf_leds_layout_ma_optbottomleft">Bottom left</option> <option value="bottom-left" data-i18n="conf_leds_layout_ma_optbottomleft">Bottom left</option>
@ -331,8 +289,27 @@
</tbody> </tbody>
</table> </table>
</div> </div>
<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_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>
</div>
</div>
</div>
<div id="texfield_panel" class="panel panel-primary">
<div class="panel-heading headcollapse" data-toggle="collapse" data-parent="#accordion" data-target="#collapse4">
<h4 class="panel-title">
<a><i class="fa fa-wrench fa-fw"></i><span data-i18n="conf_leds_layout_generatedconf">Generated/Actual LED Configuration</span></a>
</h4>
</div>
<div id="collapse4" class="panel-collapse collapse">
<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>
<b><p data-i18n="conf_leds_layout_textf2">Don't forget to save!</p></b>
<textarea rows="25" id="ledconfig" class="form-control"></textarea>
</div>
<div class="panel-footer"> <div class="panel-footer">
<button id="btn_ma_generate" class="btn btn-warning" data-i18n="conf_leds_layout_cl_generate">Generate LED configuration</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>
</div> </div>
</div> </div>
</div> </div>
@ -344,14 +321,14 @@
<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">
<div id="previewcreator"></div> <p id="previewcreator" style="font-weight:bold"></p>
<div id="previewledcount"></div> <p id="previewledcount" style="font-weight:bold"></p>
<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" data-i18n="conf_leds_test_button_togglelednumber">toggle led numbers</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>
</div> </div>
</div> </div>
</div> </div>

View File

@ -6,8 +6,7 @@
<h4 data-i18n="conf_logging_label_intro">Area to check log messages, depending on loglevel setting you see more or less.</h4> <h4 data-i18n="conf_logging_label_intro">Area to check log messages, depending on loglevel setting you see more or less.</h4>
<hr /> <hr />
</div> </div>
<div id='editor_container'/> <div class="row" id='conf_cont'></div>
<button class="btn btn-success" id='btn_submit' data-i18n="general_button_savesettings">Save Settings</button>
<hr /> <hr />
<pre> <pre>
<div id="logmessages" style="overflow:scroll;max-height:400px" /> <div id="logmessages" style="overflow:scroll;max-height:400px" />

View File

@ -6,86 +6,7 @@
<h4 data-i18n="conf_network_label_intro">All network based settings are listed here.</h4> <h4 data-i18n="conf_network_label_intro">All network based settings are listed here.</h4>
<hr /> <hr />
</div> </div>
<div class="row"> <div id="conf_cont"></div>
<div class="col-lg-6">
<div class="panel panel-default">
<div class="panel-heading"><i class="fa fa-sitemap fa-fw"></i><span data-i18n="edt_conf_js_heading_title">JSON Server</span></div>
<div class="panel-body">
<div id='editor_container_jsonserver'/>
</div>
<div class="panel-footer">
<button class="btn btn-success" id='btn_submit_jsonserver' data-i18n="general_button_savesettings">Save Settings</button>
</div>
</div>
</div>
<div class="col-lg-6">
<div id="opt_expl_jsonserver"></div>
</div>
</div>
<div class="row">
<div class="col-lg-6">
<div class="panel panel-default">
<div class="panel-heading"><i class="fa fa-sitemap fa-fw"></i><span data-i18n="edt_conf_ps_heading_title">PROTO Server</span></div>
<div class="panel-body">
<div id='editor_container_protoserver'/>
</div>
<div class="panel-footer">
<button class="btn btn-success" id='btn_submit_protoserver' data-i18n="general_button_savesettings">Save Settings</button>
</div>
</div>
</div>
<div class="col-lg-6">
<div id="opt_expl_protoserver"></div>
</div>
</div>
<div class="row">
<div class="col-lg-6">
<div class="panel panel-default">
<div class="panel-heading"><i class="fa fa-sitemap fa-fw"></i><span data-i18n="edt_conf_bobls_heading_title">Boblight Server</span></div>
<div class="panel-body">
<div id='editor_container_boblightserver'/>
</div>
<div class="panel-footer">
<button class="btn btn-success" id='btn_submit_boblightserver' data-i18n="general_button_savesettings">Save Settings</button>
</div>
</div>
</div>
<div class="col-lg-6">
<div id="opt_expl_boblightserver"></div>
</div>
</div>
<div class="row">
<div class="col-lg-6">
<div class="panel panel-default">
<div class="panel-heading"><i class="fa fa-sitemap fa-fw"></i><span data-i18n="edt_conf_udpl_heading_title">UDP Listener</span></div>
<div class="panel-body">
<div id='editor_container_udplistener'/>
</div>
<div class="panel-footer">
<button class="btn btn-success" id='btn_submit_udplistener' data-i18n="general_button_savesettings">Save Settings</button>
</div>
</div>
</div>
<div class="col-lg-6">
<div id="opt_expl_udplistener"></div>
</div>
</div>
<div class="row">
<div class="col-lg-6">
<div class="panel panel-default">
<div class="panel-heading"><i class="fa fa-sitemap fa-fw"></i><span data-i18n="edt_conf_fw_heading_title">Forwarder</span></div>
<div class="panel-body">
<div id='editor_container_forwarder'/>
</div>
<div class="panel-footer">
<button class="btn btn-success" id='btn_submit_forwarder' data-i18n="general_button_savesettings">Save Settings</button>
</div>
</div>
</div>
<div class="col-lg-6">
<div id="opt_expl_forwarder"></div>
</div>
</div>
</div> </div>
</div> </div>
</div> </div>

View File

@ -29,18 +29,18 @@
<div class="container-fluid"> <div class="container-fluid">
<div class="row"> <div class="row">
<div class="col-lg-6"> <div class="col-lg-8 col-xxl-7">
<div class="panel panel-primary" > <div class="panel panel-primary" >
<div class="panel-heading" data-i18n="remote_input_label_sourceselection">Source selection</div> <div class="panel-heading" data-i18n="remote_input_label_sourceselection">Source selection</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> <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>
<p style="font-weight:bold">Schema: NameOfSource(priority)</p> <div id="sstcont"></div>
<div id="hyperion_inputs"><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="auto_btn"></div>
</div> </div>
</div> </div>
</div> </div>
<div class="col-lg-6"> <div class="col-lg-4 col-xxl-5">
<div class="panel panel-primary" > <div class="panel panel-primary" >
<div class="panel-heading" data-i18n="remote_components_label_components">Components control</div> <div class="panel-heading" data-i18n="remote_components_label_components">Components control</div>
<div class="panel-body"> <div class="panel-body">

View File

@ -0,0 +1,35 @@
<div class="container" style="margin:20px auto;max-width:500px;">
<center>
<img src="img/hyperion/hyperionlogo.png" alt="Redefine ambient light!">
<div>
<h3 data-i18n="info_restart_title"></h3>
<h4 data-i18n="info_restart_rightback"></h4>
<p data-i18n="info_restart_contus"></p>
<a href="https://forum.hyperion-project.org?pk_campaign=WebUI&pk_kwd=failedrestart" data-i18n="info_restart_contusa"></a>
</div>
</center>
</div>
<!-- ************************************ -->
<script>
performTranslation();
var connectionLost = false;
var connectionTimer;
function tryReconnect()
{
$.ajax({ url: "/" }).done(function(data) {
window.clearInterval(connectionTimer);
window.location.href ="/";
});
}
function restartAction()
{
connectionLost = true;
connectionTimer = window.setInterval(tryReconnect, 1000);
}
</script>

View File

@ -87,21 +87,21 @@
<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> <h3 style="font-weight: bold" data-i18n="support_label_webrestitle">Information and help ressources</h3>
<a href="https://www.hyperion-project.org" 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>
<h4 data-i18n="support_label_webpagetitle">Webpage</h4> <h4 data-i18n="support_label_webpagetitle">Webpage</h4>
<p data-i18n="support_label_webpagetext">Home of Hyperion</p> <p data-i18n="support_label_webpagetext">Home of Hyperion</p>
</div> </div>
</a> </a>
<a href="https://wiki.hyperion-project.org" target="_blank" class="unlink"> <a href="https://wiki.hyperion-project.org?pk_campaign=WebUI&pk_kwd=support_wiki" 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-book bg-color-wf"></i> <i class="fa fa-book bg-color-wf"></i>
<h4 data-i18n="support_label_wikititle">Wiki</h4> <h4 data-i18n="support_label_wikititle">Wiki</h4>
<p data-i18n="support_label_wikitext">The A to Z source for almost everything Hyperion related</p> <p data-i18n="support_label_wikitext">The A to Z source for almost everything Hyperion related</p>
</div> </div>
</a> </a>
<a href="https://forum.hyperion-project.org" target="_blank" class="unlink"> <a href="https://forum.hyperion-project.org?pk_campaign=WebUI&pk_kwd=support_forum" 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-comments bg-color-wf"></i> <i class="fa fa-comments bg-color-wf"></i>
<h4 data-i18n="support_label_forumtitle">Forum</h4> <h4 data-i18n="support_label_forumtitle">Forum</h4>

View File

@ -6,22 +6,7 @@
<h4 data-i18n="conf_webconfig_label_intro">Webinterface settings. Edit wisely</h4> <h4 data-i18n="conf_webconfig_label_intro">Webinterface settings. Edit wisely</h4>
<hr /> <hr />
</div> </div>
<div class="row"> <div class="row" id="conf_cont"></div>
<div class="col-lg-6">
<div class="panel panel-default">
<div class="panel-heading"><i class="fa fa-wrench fa-fw"></i><span data-i18n="edt_conf_webc_heading_title">webconfig</span></div>
<div class="panel-body">
<div id='editor_container'/>
</div>
<div class="panel-footer">
<button class="btn btn-success" id='btn_submit' data-i18n="general_button_savesettings">Save Settings</button>
</div>
</div>
</div>
<div class="col-lg-6">
<div id="opt_expl_webconfig"></div>
</div>
</div>
</div> </div>
</div> </div>
</div> </div>

View File

@ -1 +0,0 @@
{"version":3,"sources":["src/less/colorpicker.less"],"names":[],"mappings":";;;;;;;;AAqBA,wBACE,MAAA,MACA,OAAA,MAXA,iBAAsB,iDAatB,OAAA,UACA,MAAA,KACA,0BACE,QAAA,MACA,OAAA,IACA,MAAA,IACA,OAAA,IAAA,MAAA,KAfF,sBAAA,IACA,mBAAA,IACA,cAAA,IAeE,SAAA,SACA,IAAA,EACA,KAAA,EACA,OAAA,KAAA,EAAA,EAAA,KACA,4BACE,QAAA,MACA,OAAA,IACA,MAAA,IACA,OAAA,IAAA,MAAA,KAzBJ,sBAAA,IACA,mBAAA,IACA,cAAA,IA8BF,mBADA,iBAEE,MAAA,KACA,OAAA,MACA,MAAA,KACA,OAAA,WACA,YAAA,IACA,cAAA,IAIiB,qBADF,mBAEf,QAAA,MACA,OAAA,IACA,WAAA,KACA,WAAA,IAAA,MAAA,KACA,SAAA,SACA,IAAA,EACA,KAAA,EACA,MAAA,KACA,WAAA,KAGF,iBA1DE,iBAAsB,0CA8DxB,mBA9DE,iBAAsB,4CAgEtB,QAAA,KAKF,mBADA,iBADA,wBAGE,gBAAA,QAGF,aACE,QAAA,IACA,UAAA,MACA,WAAA,IAxEA,sBAAA,IACA,mBAAA,IACA,cAAA,IAwEA,QAAA,KAIU,mBADA,oBAEV,QAAA,MACA,QAAA,GACA,YAAA,EAGU,mBACV,MAAA,KAGU,oBACV,QAAA,GACA,QAAA,aACA,YAAA,IAAA,MAAA,YACA,aAAA,IAAA,MAAA,YACA,cAAA,IAAA,MAAA,KACA,oBAAA,eACA,SAAA,SACA,IAAA,KACA,KAAA,IAGU,mBACV,QAAA,GACA,QAAA,aACA,YAAA,IAAA,MAAA,YACA,aAAA,IAAA,MAAA,YACA,cAAA,IAAA,MAAA,KACA,SAAA,SACA,IAAA,KACA,KAAA,IAGW,iBACX,SAAA,SAGU,oCACV,UAAA,MAGkC,uDAClC,QAAA,MAGF,mBACE,OAAA,KACA,WAAA,IACA,MAAA,KAlIA,iBAAsB,4CAoItB,oBAAA,EAAA,KAGiB,uBACjB,OAAA,KAGF,uBACE,QAAA,KACA,OAAA,KACA,WAAA,IACA,MAAA,KAGqB,yBACrB,OAAA,QACA,MAAA,KACA,OAAA,KACA,MAAA,KAGuB,2BACvB,YAAA,IAI2B,+BADW,0CAEtC,QAAA,aACA,OAAA,QACA,OAAA,KACA,eAAA,SACA,MAAA,KAGU,gCACV,SAAA,SACA,QAAA,aACA,MAAA,KACA,QAAA,KAGU,oCACV,MAAA,MACA,UAAA,MACA,OAAA,KAGkC,4DAClC,cAAA,IAGkC,uDAClC,MAAA,MAIkC,uDADA,qDAElC,MAAA,MACA,OAAA,KACA,MAAA,KACA,OAAA,WACA,YAAA,EACA,cAAA,IAIqD,yDADF,uDAEnD,QAAA,MACA,OAAA,KACA,WAAA,KACA,SAAA,SACA,IAAA,EACA,KAAA,EACA,MAAA,IACA,OAAA,KACA,WAAA,EAGkC,qDAlNlC,iBAAsB,qDAsNY,uDAtNlC,iBAAsB,uDA0NZ,gCACV,QAAA,KAGU,iCACV,QAAA,MAGiB,wCACjB,QAAA,aAGgB,0BAChB,KAAA,KACA,MAAA,IAGgB,yBAChB,KAAA,KACA,MAAA,IAGmB,6BACnB,aAAA,EACA,YAAA,EAGmB,4BACnB,aAAA,EACA,YAAA"}

View File

@ -72,6 +72,11 @@ table.borderless td,table.borderless th{border: none !important;}
margin-bottom: 0; margin-bottom: 0;
} }
/*led preview & led visualisation*/
#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_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;}
/*Modal icons*/ /*Modal icons*/
[class*="modal-icon"]{ [class*="modal-icon"]{
padding:30px; padding:30px;
@ -264,6 +269,136 @@ table.borderless td,table.borderless th{border: none !important;}
} }
} }
/* drag and resizable modal http://gijgo.com/ */
.gj-draggable {
cursor: move;
}
.gj-unselectable {
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.gj-resizable-handle {
position: absolute;
font-size: 0.1px;
display: block;
-ms-touch-action: none;
touch-action: none;
z-index: 90;
}
.gj-resizable-n {
cursor: n-resize;
height: 7px;
width: 100%;
top: -5px;
left: 0;
}
.gj-resizable-e {
cursor: e-resize;
width: 7px;
right: -5px;
top: 0;
height: 100%;
}
.gj-resizable-s {
cursor: s-resize;
height: 7px;
width: 100%;
bottom: -5px;
left: 0;
}
.gj-resizable-w {
cursor: w-resize;
width: 7px;
left: -5px;
top: 0;
height: 100%;
}
.gj-resizable-se {
cursor: se-resize;
width: 12px;
height: 12px;
right: 1px;
bottom: 1px;
}
.gj-resizable-sw {
cursor: sw-resize;
width: 9px;
height: 9px;
left: -5px;
bottom: -5px;
}
.gj-resizable-nw {
cursor: nw-resize;
width: 9px;
height: 9px;
left: -5px;
top: -5px;
}
.gj-resizable-ne {
cursor: ne-resize;
width: 9px;
height: 9px;
right: -5px;
top: -5px;
}
.gj-dialog-footer {
position: absolute;
bottom: 0px;
width: 100%;
}
.gj-modal {
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: 1040;
display: none;
overflow: hidden;
-webkit-overflow-scrolling: touch;
outline: 0;
}
.gj-content {
border: 1px solid #999;
background-color: #fff;
border-radius: 6px;
outline: 0;
}
.gj-header {
min-height: 16.43px;
padding: 15px;
border-bottom: 1px solid #e5e5e5;
}
.gj-title {
margin: 2px;
}
.gj-close {
-webkit-appearance: none;
padding: 0;
cursor: pointer;
background: 0 0;
border: 0;
float: right;
font-size: 21px;
color: #000;
}
.gj-body {
position: relative;
padding: 15px;
}
/*https://github.com/flatlogic/awesome-bootstrap-checkbox slighty edited for our purposes*/ /*https://github.com/flatlogic/awesome-bootstrap-checkbox slighty edited for our purposes*/
.checkbox { .checkbox {
height:34px; height:34px;

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.2 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -8,6 +8,7 @@
"last-updated": "2016-11-30", "last-updated": "2016-11-30",
"message-documentation": "qqq" "message-documentation": "qqq"
}, },
"general_webui_title" : "Hyperion - Web Konfiguration",
"general_country_de" : "Deutschland", "general_country_de" : "Deutschland",
"general_country_us" : "Amerika", "general_country_us" : "Amerika",
"general_country_uk" : "England", "general_country_uk" : "England",
@ -18,6 +19,7 @@
"general_speech_de" : "Deutsch", "general_speech_de" : "Deutsch",
"general_speech_en" : "Englisch", "general_speech_en" : "Englisch",
"general_access_default" : "Standard", "general_access_default" : "Standard",
"general_access_advanced" : "Fortgeschritten",
"general_access_expert" : "Experte", "general_access_expert" : "Experte",
"general_comp_SMOOTHING" : "Glättung", "general_comp_SMOOTHING" : "Glättung",
"general_comp_BLACKBORDER" : "Schwarze Balken Erkennung", "general_comp_BLACKBORDER" : "Schwarze Balken Erkennung",
@ -36,7 +38,10 @@
"general_btn_continue" : "Fortfahren", "general_btn_continue" : "Fortfahren",
"general_btn_save" : "Speichern", "general_btn_save" : "Speichern",
"general_btn_saverestart" : "Speichern und neustarten", "general_btn_saverestart" : "Speichern und neustarten",
"general_btn_saveandreload" : "Speichern und neu laden",
"general_btn_restarthyperion" : "Hyperion neustarten", "general_btn_restarthyperion" : "Hyperion neustarten",
"general_btn_off" : "Aus",
"general_btn_on" : "An",
"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:",
@ -66,16 +71,25 @@
"main_menu_system_token" : "System", "main_menu_system_token" : "System",
"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_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_btn_toggleleds" : "Zeige LEDs",
"main_ledsim_btn_togglelednumber" : "LED Nummern",
"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_label_intro" : "Grundsätzliche Einstellungen zu Hyperion oder WebUI, die in keine andere Kategorie passen.",
"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_l2" : "Exportiere eine Konfiguration, indem du auf \"Exportieren\" klickst. Dein Browser startet einen Download.",
"conf_general_impexp_impbtn" : "Importieren",
"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_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_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_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_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_nav_label_ledtesting" : "LED Test",
"conf_leds_contr_label_contrtype" : "Steuerungstyp:", "conf_leds_contr_label_contrtype" : "Steuerungstyp:",
"conf_leds_optgroup_RPiSPI" : "RPi SPI", "conf_leds_optgroup_RPiSPI" : "RPi SPI",
"conf_leds_optgroup_RPiPWM" : "RPi PWM", "conf_leds_optgroup_RPiPWM" : "RPi PWM",
@ -104,7 +118,7 @@
"conf_leds_layout_cl_reversdir" : "Richtung umkehren", "conf_leds_layout_cl_reversdir" : "Richtung umkehren",
"conf_leds_layout_cl_hleddepth" : "Horizontale LED Tiefe", "conf_leds_layout_cl_hleddepth" : "Horizontale LED Tiefe",
"conf_leds_layout_cl_vleddepth" : "Vertikale LED Tiefe", "conf_leds_layout_cl_vleddepth" : "Vertikale LED Tiefe",
"conf_leds_layout_cl_generate" : "Generiere LED Konfiguartion", "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_ma_horiz" : "Horizontal", "conf_leds_layout_ma_horiz" : "Horizontal",
@ -122,10 +136,6 @@
"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_leds_layout_textf2" : "Vergiss nicht zu speichern!",
"conf_leds_test_button_toggleleds" : "LEDs",
"conf_leds_test_button_togglelednumber" : "LED Nummerierung",
"conf_leds_test_button_toggleliveleds" : "LED Echtzeitansicht",
"conf_leds_test_button_togglelivevideo" : "Grabber Echtzeitansicht",
"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_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_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_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_network_label_intro" : "Alle Einstellungen zu Ports, der Weiterleitung von JSON/PROTO und Boblight sowie UDP Listener.", "conf_network_label_intro" : "Alle Einstellungen zu Ports, der Weiterleitung von JSON/PROTO und Boblight sowie UDP Listener.",
@ -142,10 +152,18 @@
"remote_effects_label_effects" : "Effekt:", "remote_effects_label_effects" : "Effekt:",
"remote_input_label_sourceselection" : "Quellenauswahl", "remote_input_label_sourceselection" : "Quellenauswahl",
"remote_input_label_autoselect" : "Automatische Auswahl", "remote_input_label_autoselect" : "Automatische Auswahl",
"remote_input_setsource_btn" : "Wähle Quelle",
"remote_input_sourceactiv_btn" : "Quelle aktiv",
"remote_input_origin" : "Ursprung",
"remote_input_owner" : "Typ",
"remote_input_priority" : "Priorität",
"remote_input_status" : "Status/Aktion",
"remote_input_duration" : "Dauer:",
"remote_input_ip" : "IP:",
"remote_components_label_components" : "Komponentensteuerung", "remote_components_label_components" : "Komponentensteuerung",
"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 Capture/USB Capture und Netzwerkquellen). Standartmäßig nutzt Hyperion die Quelle mit der niedrigsten Prioität. Hier hast du die Möglichkeit die Quelle manuell auszuwählen.", "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" : "Farbzuordnung", "remote_maptype_label" : "Farbzuordnung",
"remote_maptype_label_multicolor_mean" : "Mehrfarbig", "remote_maptype_label_multicolor_mean" : "Mehrfarbig",
"remote_maptype_label_unicolor_mean" : "Einfarbig", "remote_maptype_label_unicolor_mean" : "Einfarbig",
@ -162,8 +180,8 @@
"effectsconfigurator_label_chooseeff" : "Basis-Effekt auswählen:", "effectsconfigurator_label_chooseeff" : "Basis-Effekt auswählen:",
"effectsconfigurator_button_saveeffect" : "Effekt speichern", "effectsconfigurator_button_saveeffect" : "Effekt speichern",
"effectsconfigurator_label_effectname" : "Effektname", "effectsconfigurator_label_effectname" : "Effektname",
"effectsconfigurator_button_starttest" : "Starte Effekttest", "effectsconfigurator_button_starttest" : "Starte Test",
"effectsconfigurator_button_stoptest" : "Stoppe Effekttest", "effectsconfigurator_button_stoptest" : "Stoppe Test",
"effectsconfigurator_button_conttest" : "Fortlaufender Test", "effectsconfigurator_button_conttest" : "Fortlaufender Test",
"effectsconfigurator_label_deleffect" : "Effekt entfernen:", "effectsconfigurator_label_deleffect" : "Effekt entfernen:",
"effectsconfigurator_button_deleffect" : "Effekt entfernen", "effectsconfigurator_button_deleffect" : "Effekt entfernen",
@ -195,16 +213,23 @@
"update_versreminder" : "Deine Version: $1", "update_versreminder" : "Deine Version: $1",
"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" : "- Hyperion startet neu", "info_conlost_label_reason1" : "- Schlechte WLAN Verbindung",
"info_conlost_label_reason2" : "- Ein Update wird durchgeführt", "info_conlost_label_reason2" : "- Ein Update wird durchgeführt",
"info_conlost_label_reason3" : "- Hyperion wird nicht mehr ausgeführt", "info_conlost_label_reason3" : "- Hyperion wird nicht mehr ausgeführt",
"info_conlost_label_autorecon" : "Du wirst verbunden, sobald Hyperion wieder verfügbar ist", "info_conlost_label_autorecon" : "Du wirst verbunden, sobald Hyperion wieder verfügbar ist",
"info_conlost_label_autorefresh" : "Diese Seite wird automatisch aktualisiert", "info_conlost_label_autorefresh" : "Diese Seite wird automatisch aktualisiert",
"info_conlost_label_reload" : "Wenn nicht, klicke hier", "info_conlost_label_reload" : "Wenn nicht, klicke hier",
"info_restart_title" : "Startet gerade neu...",
"info_restart_rightback" : "Hyperion ist gleich wieder für dich da!",
"info_restart_contus" : "Solltest du nach 20 Sekunden immer noch hier sein, ist etwas schief gelaufen. Öffne bitte in unserem Support Forum ein neues Thema...",
"info_restart_contusa" : "...mit deinen letztes Schritten. Danke!",
"infoDialog_general_success_title" : "Erfolg",
"infoDialog_general_error_title" : "Fehler",
"infoDialog_general_warning_title" : "Warnung",
"infoDialog_leds_gap_title" : "Lücke verloren!", "infoDialog_leds_gap_title" : "Lücke verloren!",
"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_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 entnfernt!", "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_title" : "Effekt erstellt!",
"infoDialog_effconf_created_text" : "Der Effekt \"$1\" wurde erfolgreich erstellt!", "infoDialog_effconf_created_text" : "Der Effekt \"$1\" wurde erfolgreich erstellt!",
@ -212,23 +237,30 @@
"infoDialog_effconf_invalidvalue_text" : "Es wurde ein unzulässiger Wert eingetragen, überprüfe das rot markierte Feld und versuche es erneut!", "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" : "Zugriffsstufe", "InfoDialog_access_title" : "Einstellungsstufe",
"InfoDialog_access_text" : "Abhängig von der Stufe hast du Zugriff auf mehr oder weniger Einstellungen. Empfohlen ist 'Standard'.", "InfoDialog_access_text" : "Je höher die Stufe je mehr Einstellungen und Funktionen stehen zur Verfügung. Empfohlen ist \"Standard\".",
"InfoDialog_nowrite_title" : "Fehler beim Schreibzugriff!", "InfoDialog_nowrite_title" : "Fehler beim Schreibzugriff!",
"InfoDialog_nowrite_text" : "Hyperion hat keinen Schreibzugriff auf die aktuell geladene Konfiguration. Bitte korrigiere die Dateizugriffsrechte um fortzufahren.", "InfoDialog_nowrite_text" : "Hyperion hat keinen Schreibzugriff auf die aktuell geladene Konfiguration. Bitte korrigiere die Dateizugriffsrechte um fortzufahren.",
"InfoDialog_nowrite_foottext" : "Die Webkonfiguration wird automatisch wieder freigegeben, sobald das Problem behoben wurde!", "InfoDialog_nowrite_foottext" : "Die Webkonfiguration wird automatisch wieder freigegeben, sobald das Problem behoben wurde!",
"infoDialog_wizrgb_title" : "Erfolg!",
"infoDialog_wizrgb_text" : "Deine RGB Byte Reihenfolge ist bereits richtig eingestellt.", "infoDialog_wizrgb_text" : "Deine RGB Byte Reihenfolge ist bereits richtig eingestellt.",
"infoDialog_writeconf_error_title" : "Fehler",
"infoDialog_writeconf_error_text" : "Das speichern der Konfiguration ist fehlgeschlagen.", "infoDialog_writeconf_error_text" : "Das speichern der Konfiguration ist fehlgeschlagen.",
"infoDialog_import_jsonerror_text" : "Die ausgewählte Konfigurations-Datei \"$1\" ist keine .json Datei oder ist beschädigt! Fehlermeldung: ($2)",
"infoDialog_import_hyperror_text" : "Die ausgewählte Konfigurations-Datei \"$1\" kann nicht importiert werden. Sie ist nicht kompatibel mit Hyperion 2.0 und höher!",
"infoDialog_import_reverror_text" : "Die Version deiner Konfigurations-Datei \"$1\" stimmt nicht mit deiner Hyperion Version überein (Datei: $2, Hyperion: $3). Du kannst nur übereinstimmende Versionen importieren!",
"infoDialog_import_comperror_text" : "Dein Browser unterstützt leider keinen Import. Bitte versuche es mit einem anderen Browser erneut.",
"infoDialog_import_confirm_title" : "Bestätige Import",
"infoDialog_import_confirm_text" : "Bist du sicher, dass du die Konfigurations-Datei \"$1\" importieren möchtest? Diese Aktion kann nicht rückgängig gemacht werden!",
"wiz_rgb_title" : "RGB Byte Reihenfolge Assistent", "wiz_rgb_title" : "RGB Byte Reihenfolge Assistent",
"wiz_rgb_intro1" : "Dieser Assisent wird dir dabei helfen die richtige Byte Reihenfolge für deine leds zu finden. Klicke auf Fortfahren um zu beginnen.", "wiz_rgb_intro1" : "Dieser Assisent wird dir dabei helfen die richtige Byte Reihenfolge für deine leds zu finden. Klicke auf Fortfahren um zu beginnen.",
"wiz_rgb_intro2" : "Wann benötigt man diesen Assistenten? Zur Erstkonfiguration oder wenn deine LEDs zb rot leuchten sollten, sie aber blau oder grün sind.", "wiz_rgb_intro2" : "Wann benötigt man diesen Assistenten? Zur Erstkonfiguration oder wenn deine LEDs zb rot leuchten sollten, sie aber blau oder grün sind.",
"wiz_rgb_expl" : "Der Farbpunkt ändert alle x Sekunden die Farbe (rot, grün), zur selben Zeit ändern deine LEDs die Farbe ebenfalls. Beantworte die Fragen unten, um deine RGB Byte Reihenfolge zu überprüfen/korrigieren.", "wiz_rgb_expl" : "Der Farbpunkt ändert alle x Sekunden die Farbe (rot, grün), zur selben Zeit ändern deine LEDs die Farbe ebenfalls. Beantworte die Fragen unten, um deine RGB Byte Reihenfolge zu überprüfen/korrigieren.",
"wiz_rgb_switchevery" : "Ändere Farbe alle...", "wiz_rgb_switchevery" : "Ändere Farbe alle...",
"wiz_rgb_q" : "Welche Farbe haben 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?",
"edt_dev_enum_subtract_minimum" : "Subtrahiere minimum",
"edt_dev_enum_sub_min_warm_adjust" : "Minimale Anpassung: warm",
"edt_dev_enum_white_off" : "Weiß ist aus",
"edt_dev_general_heading_title" : "Allgemeine Einstellungen", "edt_dev_general_heading_title" : "Allgemeine Einstellungen",
"edt_dev_general_ledCount_title" : "Anzahl Hardware LEDs", "edt_dev_general_ledCount_title" : "Anzahl Hardware LEDs",
"edt_dev_general_colorOrder_title" : "RGB Byte Reihenfolge", "edt_dev_general_colorOrder_title" : "RGB Byte Reihenfolge",
@ -296,6 +328,13 @@
"edt_conf_enum_linear" : "Linear", "edt_conf_enum_linear" : "Linear",
"edt_conf_enum_PAL" : "PAL", "edt_conf_enum_PAL" : "PAL",
"edt_conf_enum_NTSC" : "NTSC", "edt_conf_enum_NTSC" : "NTSC",
"edt_conf_enum_logsilent" : "Stille",
"edt_conf_enum_logwarn" : "Warnung",
"edt_conf_enum_logverbose" : "Ausführlich",
"edt_conf_enum_logdebug" : "Debug",
"edt_conf_enum_bbdefault" : "Standard",
"edt_conf_enum_bbclassic" : "Klassisch",
"edt_conf_enum_bbosd" : "OSD",
"edt_conf_gen_heading_title" : "Allgemeine Einstellungen", "edt_conf_gen_heading_title" : "Allgemeine Einstellungen",
"edt_conf_gen_name_title" : "Name der Konfiguration", "edt_conf_gen_name_title" : "Name der Konfiguration",
"edt_conf_gen_name_expl" : "Der Name wird verwendet, um Hyperion besser zu identifizieren. (Hilfreich bei mehreren Instanzen)", "edt_conf_gen_name_expl" : "Der Name wird verwendet, um Hyperion besser zu identifizieren. (Hilfreich bei mehreren Instanzen)",
@ -303,24 +342,42 @@
"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_imageToLedMappingType" : "Bild2LED Zuordnungstyp", "edt_conf_color_channelAdjustment_header_expl" : "Passe die Farbkanäle deinen LEDs an",
"edt_conf_color_channelAdjustment_enable" : "Aktiviere Farbkanalanpassung", "edt_conf_color_imageToLedMappingType_title" : "LED-Bereich Zuordnungstyp",
"edt_conf_color_channelAdjustment_v4l_only" : "Nur für USB Aufnahme", "edt_conf_color_imageToLedMappingType_expl" : "Sofern nicht \"Mehrfarbig\", wird dein LED Layout mit einer anderen Bildzuweisung überschrieben",
"edt_conf_color_id" : "ID", "edt_conf_color_channelAdjustment_enable_title" : "Aktiviere Farbkanalanpassung",
"edt_conf_color_leds" : "LED index", "edt_conf_color_channelAdjustment_enable_expl" : "Aktiviere die Farbkanalanpassung",
"edt_conf_color_black" : "Schwarz", "edt_conf_color_channelAdjustment_v4l_only_title" : "Nur für USB Aufnahme",
"edt_conf_color_white" : "Weiß", "edt_conf_color_id_title" : "ID",
"edt_conf_color_red" : "Rot", "edt_conf_color_id_expl" : "Eine vom Benutzer frei angegebene ID.",
"edt_conf_color_green" : "Grün", "edt_conf_color_leds_title" : "LED index",
"edt_conf_color_blue" : "Blau", "edt_conf_color_leds_expl" : "Zugewiesen zu allen (*) LEDs oder nur zu bestimmten LED Nummern (0-17).",
"edt_conf_color_cyan" : "Cyan", "edt_conf_color_black_title" : "Schwarz",
"edt_conf_color_magenta" : "Magenta", "edt_conf_color_black_expl" : "Kalibrierter Schwarzwert.",
"edt_conf_color_yellow" : "Gelb", "edt_conf_color_white_title" : "Weiß",
"edt_conf_color_gamma_red" : "Gamma rot", "edt_conf_color_white_expl" : "Kalibrierter Weißwert.",
"edt_conf_color_gamma_green" : "Gamma grün", "edt_conf_color_red_title" : "Rot",
"edt_conf_color_gamma_blue" : "Gamma blau", "edt_conf_color_red_expl" : "Kalibrierter Rotwert.",
"edt_conf_color_brightness_min" : "Minimale Helligkeit", "edt_conf_color_green_title" : "Grün",
"edt_conf_color_brightness" : "Maximale Helligkeit", "edt_conf_color_green_expl" : "Kalibrierter Grünwert.",
"edt_conf_color_blue_title" : "Blau",
"edt_conf_color_blue_expl" : "Kalibrierter Blauwert.",
"edt_conf_color_cyan_title" : "Cyan",
"edt_conf_color_cyan_expl" : "Kalibrierter Cyanwert.",
"edt_conf_color_magenta_title" : "Magenta",
"edt_conf_color_magenta_expl" : "Kalibrierter Magentawert.",
"edt_conf_color_yellow_title" : "Gelb",
"edt_conf_color_yellow_expl" : "Kalibrierter Gelbwert.",
"edt_conf_color_gamma_red_title" : "Gamma rot",
"edt_conf_color_gamma_red_expl" : "Gamma von rot.",
"edt_conf_color_gamma_green_title" : "Gamma grün",
"edt_conf_color_gamma_green_expl" : "Gamma von grün.",
"edt_conf_color_gamma_blue_title" : "Gamma blau",
"edt_conf_color_gamma_blue_expl" : "Gamma von blau",
"edt_conf_color_brightness_min_title" : "Minimale Helligkeit",
"edt_conf_color_brightness_min_expl" : "Auch als Hintergrundhelligkeit genutzt.",
"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_smooth_heading_title" : "Glättung", "edt_conf_smooth_heading_title" : "Glättung",
"edt_conf_smooth_type_title" : "Art", "edt_conf_smooth_type_title" : "Art",
"edt_conf_smooth_type_expl" : "Algorithmus der Glättung.", "edt_conf_smooth_type_expl" : "Algorithmus der Glättung.",
@ -428,7 +485,7 @@
"edt_conf_ps_heading_title" : "PROTO Server", "edt_conf_ps_heading_title" : "PROTO Server",
"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" : "Addresse", "edt_conf_udpl_address_title" : "Adresse",
"edt_conf_udpl_timeout_title" : "Zeitüberschreitung", "edt_conf_udpl_timeout_title" : "Zeitüberschreitung",
"edt_conf_udpl_shared_title" : "Gemeinsam genutzt", "edt_conf_udpl_shared_title" : "Gemeinsam genutzt",
"edt_conf_webc_heading_title" : "Web Konfiguration", "edt_conf_webc_heading_title" : "Web Konfiguration",
@ -441,6 +498,7 @@
"edt_conf_effp_disable_itemtitle" : "Effekt", "edt_conf_effp_disable_itemtitle" : "Effekt",
"edt_conf_log_heading_title" : "Protokoll", "edt_conf_log_heading_title" : "Protokoll",
"edt_conf_log_level_title" : "Protokollstufe", "edt_conf_log_level_title" : "Protokollstufe",
"edt_conf_log_level_expl" : "Abhängig der Stufe sind weniger oder mehr Meldungen sichtbar.",
"edt_eff_candle_header_title" : "Kerze", "edt_eff_candle_header_title" : "Kerze",
"edt_eff_police_header_title" : "Polizei", "edt_eff_police_header_title" : "Polizei",
"edt_eff_fade_header_title" : "Farbübergang", "edt_eff_fade_header_title" : "Farbübergang",

View File

@ -8,6 +8,7 @@
"last-updated": "2016-11-30", "last-updated": "2016-11-30",
"message-documentation": "qqq.json" "message-documentation": "qqq.json"
}, },
"general_webui_title" : "Hyperion - Web Configuration",
"general_country_de" : "Germany", "general_country_de" : "Germany",
"general_country_us" : "United States", "general_country_us" : "United States",
"general_country_uk" : "United Kingdom", "general_country_uk" : "United Kingdom",
@ -18,6 +19,7 @@
"general_speech_de" : "German", "general_speech_de" : "German",
"general_speech_en" : "English", "general_speech_en" : "English",
"general_access_default" : "Default", "general_access_default" : "Default",
"general_access_advanced" : "Advanced",
"general_access_expert" : "Expert", "general_access_expert" : "Expert",
"general_comp_SMOOTHING" : "Smoothing", "general_comp_SMOOTHING" : "Smoothing",
"general_comp_BLACKBORDER" : "Blackbar Detection", "general_comp_BLACKBORDER" : "Blackbar Detection",
@ -36,7 +38,10 @@
"general_btn_continue" : "Continue", "general_btn_continue" : "Continue",
"general_btn_save" : "Save", "general_btn_save" : "Save",
"general_btn_saverestart" : "Save and restart", "general_btn_saverestart" : "Save and restart",
"general_btn_saveandreload" : "Save and reload",
"general_btn_restarthyperion" : "Restart Hyperion", "general_btn_restarthyperion" : "Restart Hyperion",
"general_btn_off" : "Off",
"general_btn_on" : "On",
"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:",
@ -67,15 +72,24 @@
"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_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_btn_toggleleds" : "Show LEDs",
"main_ledsim_btn_togglelednumber" : "LED numbers",
"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_label_intro" : "Basic settings around Hyperion and WebUI that don't fit into another category.",
"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_l2" : "Export a configuration by clicking on \"Export\". Your browser starts a download.",
"conf_general_impexp_impbtn" : "Import",
"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_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_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_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_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_nav_label_ledtesting" : "LED Testing",
"conf_leds_contr_label_contrtype" : "Controller type:", "conf_leds_contr_label_contrtype" : "Controller type:",
"conf_leds_optgroup_RPiSPI" : "RPi SPI", "conf_leds_optgroup_RPiSPI" : "RPi SPI",
"conf_leds_optgroup_RPiPWM" : "RPi PWM", "conf_leds_optgroup_RPiPWM" : "RPi PWM",
@ -122,10 +136,6 @@
"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_leds_layout_textf2" : "Don't forget to save!",
"conf_leds_test_button_toggleleds" : "toggle leds",
"conf_leds_test_button_togglelednumber" : "toggle led numbers",
"conf_leds_test_button_toggleliveleds" : "toggle live leds",
"conf_leds_test_button_togglelivevideo" : "toggle live video",
"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_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_colors_label_intro" : "Color calibration, smoothing (color transistions) and detection of blackbars.", "conf_colors_label_intro" : "Color calibration, smoothing (color transistions) and detection of blackbars.",
"conf_network_label_intro" : "All network based settings are listed here.", "conf_network_label_intro" : "All network based settings are listed here.",
@ -142,6 +152,14 @@
"remote_effects_label_effects" : "Effect:", "remote_effects_label_effects" : "Effect:",
"remote_input_label_sourceselection" : "Source Selection", "remote_input_label_sourceselection" : "Source Selection",
"remote_input_label_autoselect" : "Auto Selection", "remote_input_label_autoselect" : "Auto Selection",
"remote_input_setsource_btn" : "Select Input",
"remote_input_sourceactiv_btn" : "Input active",
"remote_input_origin" : "Origin",
"remote_input_owner" : "Type",
"remote_input_priority" : "Priority",
"remote_input_status" : "Status/Action",
"remote_input_duration" : "Duration:",
"remote_input_ip" : "IP:",
"remote_components_label_components" : "Components control", "remote_components_label_components" : "Components control",
"remote_optgroup_usreffets" : "User Effects", "remote_optgroup_usreffets" : "User Effects",
"remote_optgroup_syseffets" : "Provided Effects", "remote_optgroup_syseffets" : "Provided Effects",
@ -162,10 +180,10 @@
"effectsconfigurator_label_chooseeff" : "Choose Base-Effect:", "effectsconfigurator_label_chooseeff" : "Choose Base-Effect:",
"effectsconfigurator_button_saveeffect" : "Save Effect", "effectsconfigurator_button_saveeffect" : "Save Effect",
"effectsconfigurator_label_effectname" : "Effect name", "effectsconfigurator_label_effectname" : "Effect name",
"effectsconfigurator_button_starttest" : "Start Effecttest", "effectsconfigurator_button_starttest" : "Start test",
"effectsconfigurator_button_stoptest" : "Stop Effecttest", "effectsconfigurator_button_stoptest" : "Stop test",
"effectsconfigurator_button_conttest" : "Toggle continuous testing", "effectsconfigurator_button_conttest" : "Continuous test",
"effectsconfigurator_label_deleffect" : "Delete Effect::", "effectsconfigurator_label_deleffect" : "Delete Effect:",
"effectsconfigurator_button_deleffect" : "Delete Effect", "effectsconfigurator_button_deleffect" : "Delete Effect",
"support_label_title" : "Support Hyperion", "support_label_title" : "Support Hyperion",
"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.", "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.",
@ -195,32 +213,41 @@
"update_versreminder" : "Your version: $1", "update_versreminder" : "Your version: $1",
"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" : "- Hyperion restarts", "info_conlost_label_reason1" : "- Bad WLAN connection",
"info_conlost_label_reason2" : "- You perform an update", "info_conlost_label_reason2" : "- You perform an update",
"info_conlost_label_reason3" : "- Hyperion isn't running", "info_conlost_label_reason3" : "- Hyperion isn't running",
"info_conlost_label_autorecon" : "We reconnect again after Hyperion is available.", "info_conlost_label_autorecon" : "We reconnect again after Hyperion is available.",
"info_conlost_label_autorefresh" : "This page will be automatically refreshed.", "info_conlost_label_autorefresh" : "This page will be automatically refreshed.",
"info_conlost_label_reload" : "If not, click me or reload the page", "info_conlost_label_reload" : "If not, click me or reload the page",
"info_restart_title" : "Restarts currently...",
"info_restart_rightback" : "Hyperion will be right back immediately!",
"info_restart_contus" : "If you still hang around here after 20 seconds and you have no clue why please open a new topic at our support forum...",
"info_restart_contusa" : "...with your last steps. Thank you!",
"infoDialog_general_success_title" : "Success",
"infoDialog_general_error_title" : "Error",
"infoDialog_general_warning_title" : "Warning",
"infoDialog_leds_gap_title" : "GAP LOST IN SPACE!", "infoDialog_leds_gap_title" : "GAP LOST IN SPACE!",
"infoDialog_leds_gap_text" : "Your gap length/position is higher than your LED count, lower the gap length or gap position!", "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_title" : "Effect deleted!",
"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_title" : "Effect created!",
"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_title" : "INVALID VALUE",
"infoDialog_effconf_invalidvalue_text" : "Please check for red marked input(s) and try again!", "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" : "Level setting", "InfoDialog_access_title" : "Settings level",
"InfoDialog_access_text" : "Depending on settings level you could change more or less settings. Recommended is the default level.", "InfoDialog_access_text" : "Depending on settings level you could adjust more options or get access to more features. Recommended is the \"Default\" level.",
"InfoDialog_nowrite_title" : "write permission error!", "InfoDialog_nowrite_title" : "write permission error!",
"InfoDialog_nowrite_text" : "Hyperion can't write to your current loaded configuration file. Please repair the file permissions to proceed.", "InfoDialog_nowrite_text" : "Hyperion can't write to your current loaded configuration file. Please repair the file permissions to proceed.",
"InfoDialog_nowrite_foottext" : "The WebUI will be unlocked automatically after you solved the problem!", "InfoDialog_nowrite_foottext" : "The WebUI will be unlocked automatically after you solved the problem!",
"infoDialog_wizrgb_title" : "Success",
"infoDialog_wizrgb_text" : "Your RGB Byte Order is already well adjusted.", "infoDialog_wizrgb_text" : "Your RGB Byte Order is already well adjusted.",
"infoDialog_writeconf_error_title" : "Error",
"infoDialog_writeconf_error_text" : "Saving your configuration failed.", "infoDialog_writeconf_error_text" : "Saving your configuration failed.",
"infoDialog_import_jsonerror_text" : "The selected configuration file \"$1\" is no .json file or it's corrupted. Error message: ($2)",
"infoDialog_import_hyperror_text" : "The selected configuration file \"$1\" can't be imported. It's not compatible with Hyperion 2.0 and higher!",
"infoDialog_import_reverror_text" : "The revision of your configuration file \"$1\" doesnt match the current Hyperion version you run (File: $2, Hyperion: $3). You could just import matching configurations!",
"infoDialog_import_comperror_text" : "Sad! Your browser doesn't support a import. Please try again with another browser.",
"infoDialog_import_confirm_title" : "Confirm import",
"infoDialog_import_confirm_text" : "Are you sure to import \"$1\"? This process can't be reverted!",
"wiz_rgb_title" : "RGB Byte Order Wizard", "wiz_rgb_title" : "RGB Byte Order Wizard",
"wiz_rgb_intro1" : "This wizard will guide you through the finding process of the correct color order for your leds. Click on continue to begin.", "wiz_rgb_intro1" : "This wizard will guide you through the finding process of the correct color order for your leds. Click on continue to begin.",
"wiz_rgb_intro2" : "When do you need this wizard? Example: You set the color red, but you get green or blue. You could also use it for first configuration.", "wiz_rgb_intro2" : "When do you need this wizard? Example: You set the color red, but you get green or blue. You could also use it for first configuration.",
@ -229,6 +256,9 @@
"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?",
"edt_dev_enum_subtract_minimum" : "Substract minimum",
"edt_dev_enum_sub_min_warm_adjust" : "Min warm adjust",
"edt_dev_enum_white_off" : "White off",
"edt_dev_general_heading_title" : "General Settings", "edt_dev_general_heading_title" : "General Settings",
"edt_dev_general_name_title" : "Configuration name", "edt_dev_general_name_title" : "Configuration name",
"edt_dev_general_ledCount_title" : "Count of all hardware LEDs", "edt_dev_general_ledCount_title" : "Count of all hardware LEDs",
@ -297,6 +327,13 @@
"edt_conf_enum_linear" : "Linear", "edt_conf_enum_linear" : "Linear",
"edt_conf_enum_PAL" : "PAL", "edt_conf_enum_PAL" : "PAL",
"edt_conf_enum_NTSC" : "NTSC", "edt_conf_enum_NTSC" : "NTSC",
"edt_conf_enum_logsilent" : "Silent",
"edt_conf_enum_logwarn" : "Warning",
"edt_conf_enum_logverbose" : "Verbose",
"edt_conf_enum_logdebug" : "Debug",
"edt_conf_enum_bbdefault" : "Default",
"edt_conf_enum_bbclassic" : "Classic",
"edt_conf_enum_bbosd" : "OSD",
"edt_conf_gen_heading_title" : "General Settings", "edt_conf_gen_heading_title" : "General Settings",
"edt_conf_gen_name_title" : "Configuration name", "edt_conf_gen_name_title" : "Configuration name",
"edt_conf_gen_name_expl" : "A user defined name which is used to detect Hyperion. (Helpful with more than one Hyperion instance)", "edt_conf_gen_name_expl" : "A user defined name which is used to detect Hyperion. (Helpful with more than one Hyperion instance)",
@ -304,24 +341,41 @@
"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_title" : "Color channel adjustments", "edt_conf_color_channelAdjustment_header_title" : "Color channel adjustments",
"edt_conf_color_imageToLedMappingType" : "Image2led mapping type", "edt_conf_color_imageToLedMappingType_title" : "Led area assignment",
"edt_conf_color_channelAdjustment_enable" : "Enable channel adjustment", "edt_conf_color_imageToLedMappingType_expl" : "Overwrites the led area assignment of your led layout if it's not \"multicolor\"",
"edt_conf_color_channelAdjustment_v4l_only" : "Assign USB Capture only", "edt_conf_color_channelAdjustment_enable_title" : "Enable channel adjustment",
"edt_conf_color_id" : "ID", "edt_conf_color_channelAdjustment_enable_expl" : "Activates the adjustment option",
"edt_conf_color_leds" : "LED index", "edt_conf_color_channelAdjustment_v4l_only_title" : "Assign USB Capture only",
"edt_conf_color_black" : "black", "edt_conf_color_id_title" : "ID",
"edt_conf_color_white" : "white", "edt_conf_color_id_expl" : "User given name",
"edt_conf_color_red" : "red", "edt_conf_color_leds_title" : "LED index",
"edt_conf_color_green" : "green", "edt_conf_color_leds_expl" : "Assign this adjustment to all leds (*) or just some (0-24).",
"edt_conf_color_blue" : "blue", "edt_conf_color_black_title" : "black",
"edt_conf_color_cyan" : "cyan", "edt_conf_color_black_expl" : "The calibrated black value.",
"edt_conf_color_magenta" : "magenta", "edt_conf_color_white_title" : "white",
"edt_conf_color_yellow" : "yellow", "edt_conf_color_white_expl" : "The calibrated white value.",
"edt_conf_color_gamma_red" : "gamma red", "edt_conf_color_red_title" : "red",
"edt_conf_color_gamma_green" : "gamma green", "edt_conf_color_red_expl" : "The calibrated red value.",
"edt_conf_color_gamma_blue" : "gamma blue", "edt_conf_color_green_title" : "green",
"edt_conf_color_brightness_min" : "minimal brightness", "edt_conf_color_green_expl" : "The calibrated green value.",
"edt_conf_color_brightness" : "maximal brightness", "edt_conf_color_blue_title" : "blue",
"edt_conf_color_blue_expl" : "The calibrated blue value.",
"edt_conf_color_cyan_title" : "cyan",
"edt_conf_color_cyan_expl" : "The calibrated cyan value.",
"edt_conf_color_magenta_title" : "magenta",
"edt_conf_color_magenta_expl" : "The calibrated magenta value.",
"edt_conf_color_yellow_title" : "yellow",
"edt_conf_color_yellow_expl" : "The calibrated yellow value.",
"edt_conf_color_gamma_red_title" : "gamma red",
"edt_conf_color_gamma_red_expl" : "The gamma of red.",
"edt_conf_color_gamma_green_title" : "gamma green",
"edt_conf_color_gamma_green_expl" : "The gamma of green.",
"edt_conf_color_gamma_blue_title" : "gamma blue",
"edt_conf_color_gamma_blue_expl" : "The gamma of blue.",
"edt_conf_color_brightness_min_title" : "minimal brightness",
"edt_conf_color_brightness_min_expl" : "The minimum amount of brightness (backlight).",
"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_smooth_heading_title" : "Smoothing", "edt_conf_smooth_heading_title" : "Smoothing",
"edt_conf_smooth_type_title" : "Type", "edt_conf_smooth_type_title" : "Type",
"edt_conf_smooth_type_expl" : "Type of smoothing.", "edt_conf_smooth_type_expl" : "Type of smoothing.",
@ -442,6 +496,7 @@
"edt_conf_effp_disable_itemtitle" : "Effect", "edt_conf_effp_disable_itemtitle" : "Effect",
"edt_conf_log_heading_title" : "Logging", "edt_conf_log_heading_title" : "Logging",
"edt_conf_log_level_title" : "Log-Level", "edt_conf_log_level_title" : "Log-Level",
"edt_conf_log_level_expl" : "Depending on loglevel you see less or more messages in your log.",
"edt_eff_candle_header_title" : "Candle", "edt_eff_candle_header_title" : "Candle",
"edt_eff_police_header_title" : "Police", "edt_eff_police_header_title" : "Police",
"edt_eff_fade_header_title" : "Fade", "edt_eff_fade_header_title" : "Fade",

View File

@ -8,7 +8,7 @@
<meta content='width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0' name='viewport' /> <meta content='width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0' name='viewport' />
<meta name="description" content=""> <meta name="description" content="">
<title>Hyperion - WebUI</title> <title data-i18n="general_webui_title">Hyperion - WebUI</title>
<!-- jQuery --> <!-- jQuery -->
<script src="js/lib/jquery.min.js"></script> <script src="js/lib/jquery.min.js"></script>
@ -36,11 +36,6 @@
<script src="js/lib/jquery.i18n.emitter.js"></script> <script src="js/lib/jquery.i18n.emitter.js"></script>
<script src="js/lib/jquery.i18n.language.js"></script> <script src="js/lib/jquery.i18n.language.js"></script>
<!-- jquery ui -->
<link href="css/jquery-ui/jquery-ui.min.css" rel="stylesheet">
<link href="css/jquery-ui/jquery-ui.structure.min.css" rel="stylesheet">
<link href="css/jquery-ui/jquery-ui.theme.min.css" rel="stylesheet">
<!-- Bootstrap Core CSS --> <!-- Bootstrap Core CSS -->
<link href="css/bootstrap.css" rel="stylesheet"> <link href="css/bootstrap.css" rel="stylesheet">
@ -52,7 +47,6 @@
<!-- Custom CSS --> <!-- Custom CSS -->
<link href="css/sb-admin-2.css" rel="stylesheet"> <link href="css/sb-admin-2.css" rel="stylesheet">
<link href="css/hyperion.css" rel="stylesheet"> <link href="css/hyperion.css" rel="stylesheet">
<!-- Custom Fonts --> <!-- Custom Fonts -->
@ -65,9 +59,18 @@
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script> <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
<![endif]--> <![endif]-->
</head> </head>
<body> <body>
<noscript>
<div style="color:red;margin: 40px 0;text-align:center">
<img src="img/hyperion/hyperionlogo.png" alt="Redefine ambient light!">
<h3>Hyperion Web Configuration requires Javascript. Please enable Javascript in your browser for this page in order to use it!</h3>
</div>
<style type="text/css"> #loading_overlay, #wrapper{ display: none } </style>
</noscript>
<div id="loading_overlay" class="overlay"></div> <div id="loading_overlay" class="overlay"></div>
<div id="wrapper"> <div id="wrapper">
@ -81,7 +84,7 @@
<span class="icon-bar"></span> <span class="icon-bar"></span>
</button> </button>
<a class="navbar-brand" href="/"><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>
</div> </div>
@ -98,6 +101,11 @@
<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">
<a href="#">
<i class="fa fa-television fa-fw"></i>
</a>
</li>
<!-- /.dropdown --> <!-- /.dropdown -->
<li class="dropdown"> <li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" href="#"> <a class="dropdown-toggle" data-toggle="dropdown" href="#">
@ -129,7 +137,7 @@
<i class="fa fa-user fa-fw"></i> <i class="fa fa-caret-down"></i> <i class="fa fa-user fa-fw"></i> <i class="fa fa-caret-down"></i>
</a> </a>
<ul class="dropdown-menu dropdown-user"> <ul class="dropdown-menu dropdown-user">
<li><a href="#"><i class="fa fa-user fa-fw"></i>User Profile</a> <li id="btn_open_ledsim" ><a href="#"><i class="fa fa-user fa-fw"></i>led sim</a>
</li> </li>
<li><a href="#"><i class="fa fa-gear fa-fw"></i>Settings</a> <li><a href="#"><i class="fa fa-gear fa-fw"></i>Settings</a>
</li> </li>
@ -193,97 +201,49 @@
<!-- /#wrapper --> <!-- /#wrapper -->
<div id="container_connection_lost" style="display:none"></div> <div id="container_connection_lost" style="display:none"></div>
<div id="container_restart" style="display:none"></div>
<div id="modal_dialog" class="modal fade" role="dialog"> <!-- infoDialog -->
<div id="modal_dialog" class="modal fade" role="dialog" style="z-index:9999">
<div class="modal-dialog"> <div class="modal-dialog">
<!-- Modal content--> <center>
<div class="modal-content"> <div class="modal-content">
<div class="modal-body"> <div id="id_body" class="modal-body"></div>
<center> <div id="id_footer" class="modal-footer" style="text-align:center"></div>
<div class="modal-bodyicon" style="margin-bottom:20px;"></div> </div>
<h4 class="modal-bodytitle" style="font-weight:bold;text-transform:uppercase;"></h4>
<div class="modal-bodycontent"></div>
<select id="modal_select" class="form-control" style="margin-top:10px;width:auto;"></select>
</center> </center>
</div> </div>
<div class="modal-footer">
<center>
<div class="modal-footer-button"></div>
</center>
</div>
</div>
</div>
</div> </div>
<!-- wizardDialog -->
<div id="wizard_modal" class="modal fade" role="dialog"> <div id="wizard_modal" class="modal fade" role="dialog">
<div class="modal-dialog"> <div class="modal-dialog">
<div id="wizp1" class="modal-content"> <div class="modal-content">
<div class="modal-header"> <div id="wiz_header" class="modal-header"></div>
<div class="modal-headertext"><i class="fa fa-magic fa-fw"></i><span data-i18n="wiz_rgb_title">RGB Byte Order Wizard</span></div> <div id="wizp1">
<div id="wizp1_body" class="modal-body" 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">
<center> <center>
<div class="modal-body"> <div id="wizp2_body" class="modal-body"></div>
<div class="modal-bodyicon" style="margin-bottom:20px;"><img src="img/hyperion/hyperionlogo.png" alt="Redefine ambient light!"></div>
<h4 class="modal-bodytitle" style="font-weight:bold;text-transform:uppercase;" data-i18n="wiz_rgb_title">RGB Byte Order Wizard</h4>
<p data-i18n="wiz_rgb_intro1"></p>
<p data-i18n="wiz_rgb_intro2" style="font-weight:bold;"></p>
</div>
</center>
<div class="modal-footer">
<center>
<div class="modal-footer-button"></div>
<button type="button" class="btn btn-primary" id="btn_wiz_cont" data-i18n="general_btn_continue">Continue</button>
<button type="button" class="btn btn-danger" id="btn_wiz_cancel" data-i18n="general_btn_cancel">Cancel</button>
</center> </center>
<div id="wizp2_footer" class="modal-footer" style="text-align:center"></div>
</div> </div>
</div> </div>
<div id="wizp2" class="modal-content" style="display:none">
<div class="modal-header">
<div class="modal-headertext"><i class="fa fa-magic fa-fw"></i><span data-i18n="wiz_rgb_title">RGB Byte Order Wizard</span></div>
</div>
<center>
<div class="modal-body">
<img src="img/hyperion/hyperionlogo.png" alt="Redefine ambient light!" style="margin-bottom:20px">
<p data-i18n="wiz_rgb_expl" style="font-weight:bold">The color dot switches every x seconds the color (red, green), at the same time your leds switch too. Answer the questions at the bottom to check/correct your byte order.</p>
<div class="form-group">
<label data-i18n="wiz_rgb_switchevery">Switch every</label>
<div class="input-group" style="width:100px">
<select id="wiz_switchtime_select" class="form-control"></select>
<div class="input-group-addon" data-i18n="edt_append_s">s</div>
</div> </div>
</div> </div>
<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 data-i18n="wiz_rgb_q">Which color show your leds, when the color dot above shows...</label> <!-- ledsimDialog -->
<table class="table borderless" style="width:200px"> <div id="ledsim_dialog" style="display:none; z-index:9998">
<tbody> <div data-role="body" style="padding:0px;">
<tr> <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>
<td class="ltd"> <div id="leds_canvas"></div>
<label data-i18n="wiz_rgb_qrend">...red?</label>
</td>
<td class="itd">
<select id="wiz_r_select" class="form-control wselect"></select>
</td>
</tr>
<tr>
<td class="ltd">
<label data-i18n="wiz_rgb_qgend">...green?</label>
</td>
<td class="itd">
<select id="wiz_g_select" class="form-control wselect"></select>
</td>
</tr>
</tbody>
</table>
</div>
</center>
<div class="modal-footer">
<center>
<button type="button" class="btn btn-success" id="btn_wiz_save" data-i18n="general_btn_saverestart">Save and restart</button>
<button type="button" class="btn btn-primary" id="btn_wiz_checkok" data-i18n="general_btn_ok" style="display:none" data-dismiss="modal">Ok</button>
<button type="button" class="btn btn-danger" id="btn_wiz_abort" data-i18n="general_btn_cancel">Cancel</button>
</center>
</div>
</div> </div>
<div data-role="footer" style="text-align:center">
<button type="button" class="btn btn-success" id="leds_toggle"><i class="fa fa-fw fa-lightbulb-o"></i><span data-i18n="main_ledsim_btn_toggleleds">leds</span></button>
<button type="button" class="btn btn-danger" id="leds_toggle_num"> <i class="fa fa-fw fa-info"></i><span data-i18n="main_ledsim_btn_togglelednumber">led numbers</span></button>
<button type="button" class="btn btn-danger" id="leds_toggle_live_video"><i class="fa fa-fw fa-television"></i><span data-i18n="main_ledsim_btn_togglelivevideo">live video</span></button>
</div> </div>
</div> </div>
@ -296,11 +256,17 @@
<!-- Custom Theme JavaScript --> <!-- Custom Theme JavaScript -->
<script src="/js/lib/sb-admin-2.js"></script> <script src="/js/lib/sb-admin-2.js"></script>
<script src="/js/lib/jquery-ui.min.js"></script>
<script src="/js/content_index.js"></script> <script src="/js/content_index.js"></script>
<script src="/js/localStorage.js"></script> <script src="/js/settings.js"></script>
<script src="/js/wizard.js"></script> <script src="/js/wizard.js"></script>
</body> <!--gijgo dialog-->
<script src="/js/lib/draggable.min.js"></script>
<script src="/js/lib/dialog.min.js"></script>
<script src="/js/ledsim.js"></script>
<!--Client-side download-->
<script src='/js/lib/download.min.js'></script>
</body>
</html> </html>

View File

@ -1,15 +1,72 @@
var conf_editor = null; var editor_color = null;
var editor_smoothing = null;
var editor_blackborder = null;
$(hyperion).one("cmd-config-getschema", function(event) { $(hyperion).one("cmd-config-getschema", function(event) {
schema = parsedConfSchemaJSON.properties; schema = parsedConfSchemaJSON.properties;
conf_editor = createJsonEditor('editor_container', {
color : schema.color,
smoothing : schema.smoothing,
blackborderdetector: schema.blackborderdetector,
}, true);
$('#btn_submit').off().on('click',function() { if(showOptHelp)
requestWriteConfig(conf_editor.getValue()); {
//color
$('#conf_cont').append(createRow('conf_cont_color'))
$('#conf_cont_color').append(createOptPanel('fa-photo', $.i18n("edt_conf_color_heading_title"), 'editor_container_color', 'btn_submit_color'));
$('#conf_cont_color').append(createHelpTable(schema.color.properties, $.i18n("edt_conf_color_heading_title")));
//smoothing
$('#conf_cont').append(createRow('conf_cont_smoothing'))
$('#conf_cont_smoothing').append(createOptPanel('fa-photo', $.i18n("edt_conf_smooth_heading_title"), 'editor_container_smoothing', 'btn_submit_smoothing'));
$('#conf_cont_smoothing').append(createHelpTable(schema.smoothing.properties, $.i18n("edt_conf_smooth_heading_title")));
//blackborder
$('#conf_cont').append(createRow('conf_cont_blackborder'))
$('#conf_cont_blackborder').append(createOptPanel('fa-photo', $.i18n("edt_conf_bb_heading_title"), 'editor_container_blackborder', 'btn_submit_blackborder'));
$('#conf_cont_blackborder').append(createHelpTable(schema.blackborderdetector.properties, $.i18n("edt_conf_bb_heading_title")));
}
else
{
$('#conf_cont').addClass('row');
$('#conf_cont').append(createOptPanel('fa-photo', $.i18n("edt_conf_color_heading_title"), 'editor_container_color', 'btn_submit_color'));
$('#conf_cont').append(createOptPanel('fa-photo', $.i18n("edt_conf_smooth_heading_title"), 'editor_container_smoothing', 'btn_submit_smoothing'));
$('#conf_cont').append(createOptPanel('fa-photo', $.i18n("edt_conf_bb_heading_title"), 'editor_container_blackborder', 'btn_submit_blackborder'));
}
//color
editor_color = createJsonEditor('editor_container_color', {
color : schema.color
}, true, true);
editor_color.on('change',function() {
editor_color.validate().length ? $('#btn_submit_color').attr('disabled', true) : $('#btn_submit_color').attr('disabled', false);
});
$('#btn_submit_color').off().on('click',function() {
requestWriteConfig(editor_color.getValue());
});
//smoothing
editor_smoothing = createJsonEditor('editor_container_smoothing', {
smoothing : schema.smoothing
}, true, true);
editor_smoothing.on('change',function() {
editor_smoothing.validate().length ? $('#btn_submit_smoothing').attr('disabled', true) : $('#btn_submit_smoothing').attr('disabled', false);
});
$('#btn_submit_smoothing').off().on('click',function() {
requestWriteConfig(editor_smoothing.getValue());
});
//blackborder
editor_blackborder = createJsonEditor('editor_container_blackborder', {
blackborderdetector: schema.blackborderdetector
}, true, true);
editor_blackborder.on('change',function() {
editor_blackborder.validate().length ? $('#btn_submit_blackborder').attr('disabled', true) : $('#btn_submit_blackborder').attr('disabled', false);
});
$('#btn_submit_blackborder').off().on('click',function() {
requestWriteConfig(editor_blackborder.getValue());
}); });
}); });

View File

@ -8,10 +8,52 @@ var backgroundEffect_editor = null;
$(hyperion).one("cmd-config-getschema", function(event) { $(hyperion).one("cmd-config-getschema", function(event) {
schema = parsedConfSchemaJSON.properties; schema = parsedConfSchemaJSON.properties;
if(showOptHelp)
{
//effect path
if(storedAccess != 'default')
{
$('#conf_cont').append(createRow('conf_cont_ef'))
$('#conf_cont_ef').append(createOptPanel('fa-spinner', $.i18n("edt_conf_effp_heading_title"), 'editor_container_effects', 'btn_submit_effects'));
$('#conf_cont_ef').append(createHelpTable(schema.effects.properties, $.i18n("edt_conf_effp_heading_title")));
}
//foreground effect
$('#conf_cont').append(createRow('conf_cont_fge'))
$('#conf_cont_fge').append(createOptPanel('fa-spinner', $.i18n("edt_conf_fge_heading_title"), 'editor_container_foregroundEffect', 'btn_submit_foregroundEffect'));
$('#conf_cont_fge').append(createHelpTable(schema.foregroundEffect.properties, $.i18n("edt_conf_fge_heading_title")));
//background effect
$('#conf_cont').append(createRow('conf_cont_bge'))
$('#conf_cont_bge').append(createOptPanel('fa-spinner', $.i18n("edt_conf_bge_heading_title"), 'editor_container_backgroundEffect', 'btn_submit_backgroundEffect'));
$('#conf_cont_bge').append(createHelpTable(schema.backgroundEffect.properties, $.i18n("edt_conf_bge_heading_title")));
}
else
{
if(storedAccess != 'default')
$('#conf_cont').append(createOptPanel('fa-spinner', $.i18n("edt_conf_effp_heading_title"), 'editor_container_effects', 'btn_submit_effects'));
$('#conf_cont').addClass('row');
$('#conf_cont').append(createOptPanel('fa-spinner', $.i18n("edt_conf_fge_heading_title"), 'editor_container_foregroundEffect', 'btn_submit_foregroundEffect'));
$('#conf_cont').append(createOptPanel('fa-spinner', $.i18n("edt_conf_bge_heading_title"), 'editor_container_backgroundEffect', 'btn_submit_backgroundEffect'));
}
if(storedAccess != 'default')
{
effects_editor = createJsonEditor('editor_container_effects', { effects_editor = createJsonEditor('editor_container_effects', {
effects : schema.effects effects : schema.effects
}, true, true); }, true, true);
effects_editor.on('change',function() {
effects_editor.validate().length ? $('#btn_submit_effects').attr('disabled', true) : $('#btn_submit_effects').attr('disabled', false);
});
$('#btn_submit_effects').off().on('click',function() {
requestWriteConfig(effects_editor.getValue());
});
}
foregroundEffect_editor = createJsonEditor('editor_container_foregroundEffect', { foregroundEffect_editor = createJsonEditor('editor_container_foregroundEffect', {
foregroundEffect : schema.foregroundEffect foregroundEffect : schema.foregroundEffect
}, true, true); }, true, true);
@ -21,11 +63,13 @@ $(hyperion).one("cmd-config-getschema", function(event) {
}, true, true); }, true, true);
effects_editor.on('ready',function() { foregroundEffect_editor.on('ready',function() {
editorReady = true; editorReady = true;
}); });
foregroundEffect_editor.on('change',function() { foregroundEffect_editor.on('change',function() {
foregroundEffect_editor.validate().length ? $('#btn_submit_foregroundEffect').attr('disabled', true) : $('#btn_submit_foregroundEffect').attr('disabled', false);
var type = foregroundEffect_editor.getEditor('root.foregroundEffect.type'); var type = foregroundEffect_editor.getEditor('root.foregroundEffect.type');
if(type.value == "color") if(type.value == "color")
{ {
@ -40,6 +84,8 @@ $(hyperion).one("cmd-config-getschema", function(event) {
}); });
backgroundEffect_editor.on('change',function() { backgroundEffect_editor.on('change',function() {
backgroundEffect_editor.validate().length ? $('#btn_submit_backgroundEffect').attr('disabled', true) : $('#btn_submit_backgroundEffect').attr('disabled', false);
var type = backgroundEffect_editor.getEditor('root.backgroundEffect.type'); var type = backgroundEffect_editor.getEditor('root.backgroundEffect.type');
if(type.value == "color") if(type.value == "color")
{ {
@ -53,10 +99,6 @@ $(hyperion).one("cmd-config-getschema", function(event) {
} }
}); });
$('#btn_submit_effects').off().on('click',function() {
requestWriteConfig(effects_editor.getValue());
});
$('#btn_submit_foregroundEffect').off().on('click',function() { $('#btn_submit_foregroundEffect').off().on('click',function() {
//requestWriteConfig(foregroundEffect_editor.getValue()); //requestWriteConfig(foregroundEffect_editor.getValue());
console.log(foregroundEffect_editor.getValue()); console.log(foregroundEffect_editor.getValue());
@ -67,12 +109,6 @@ $(hyperion).one("cmd-config-getschema", function(event) {
console.log(backgroundEffect_editor.getValue()); console.log(backgroundEffect_editor.getValue());
}); });
if(showOptHelp)
{
$('#opt_expl_effects').html(createHelpTable(schema.effects.properties, '<i class="fa fa-info-circle fa-fw"></i>'+$.i18n("edt_conf_effp_heading_title")+' '+$.i18n("conf_helptable_expl")));
$('#opt_expl_foregroundEffect').html(createHelpTable(schema.foregroundEffect.properties, '<i class="fa fa-info-circle fa-fw"></i>'+$.i18n("edt_conf_fge_heading_title")+' '+$.i18n("conf_helptable_expl")));
$('#opt_expl_backgroundEffect').html(createHelpTable(schema.backgroundEffect.properties, '<i class="fa fa-info-circle fa-fw"></i>'+$.i18n("edt_conf_bge_heading_title")+' '+$.i18n("conf_helptable_expl")));
}
}); });
function updateEffectlist(event){ function updateEffectlist(event){
@ -98,11 +134,12 @@ function updateEffectlist(event){
$('#root_backgroundEffect_effect').html($('#root_foregroundEffect_effect').html()); $('#root_backgroundEffect_effect').html($('#root_foregroundEffect_effect').html());
olddEffects = newEffects; olddEffects = newEffects;
$('#root_foregroundEffect_effect').val(confFgEff); $('#root_foregroundEffect_effect').val(confFgEff).change();
$('#root_foregroundEffect_effect').trigger('change'); //$('select').trigger('change');
//var fgeff = foregroundEffect_editor.getEditor('root.foregroundEffect.effect').setValue(confFgEff);
//console.log(fgeff);
$('#root_backgroundEffect_effect').val(confBgEff); $('#root_backgroundEffect_effect').val(confBgEff).change();
$('#root_backgroundEffect_effect').trigger('change');
} }
} }
} }

View File

@ -82,7 +82,7 @@ $(hyperion).one("cmd-config-getschema", function(event) {
if(validateEditor()) if(validateEditor())
{ {
requestWriteEffect(effectName,effectPy,JSON.stringify(effects_editor.getValue())); requestWriteEffect(effectName,effectPy,JSON.stringify(effects_editor.getValue()));
showInfoDialog('success', $.i18n('infoDialog_effconf_created_title'), $.i18n('infoDialog_effconf_created_text', effectName)); showInfoDialog('success', "", $.i18n('infoDialog_effconf_created_text', effectName));
} }
}); });
@ -104,7 +104,7 @@ $(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_title'), $.i18n('infoDialog_effconf_deleted_text', name)); showInfoDialog('success', "", $.i18n('infoDialog_effconf_deleted_text', name));
}); });
$('#effectsdellist').off().on('change', function(){ $('#effectsdellist').off().on('change', function(){

View File

@ -2,21 +2,120 @@
var conf_editor = null; var conf_editor = null;
$(hyperion).one("cmd-config-getschema", function(event) { $(hyperion).one("cmd-config-getschema", function(event) {
schema = parsedConfSchemaJSON.properties; schema = parsedConfSchemaJSON.properties;
$('#conf_cont').append(createOptPanel('fa-wrench', $.i18n("edt_conf_gen_heading_title"), 'editor_container', 'btn_submit'));
if(showOptHelp)
{
$('#conf_cont').append(createHelpTable(schema.general.properties, $.i18n("edt_conf_gen_heading_title")));
}
else
$('#conf_imp').appendTo('#conf_cont');
conf_editor = createJsonEditor('editor_container', { conf_editor = createJsonEditor('editor_container', {
general: schema.general general: schema.general
}, true, true); }, true, true);
conf_editor.on('change',function() {
conf_editor.validate().length ? $('#btn_submit').attr('disabled', true) : $('#btn_submit').attr('disabled', false);
});
$('#btn_submit').off().on('click',function() { $('#btn_submit').off().on('click',function() {
requestWriteConfig(conf_editor.getValue()); requestWriteConfig(conf_editor.getValue());
}); });
if(showOptHelp)
$('#opt_expl').html(createHelpTable(schema.general.properties, '<i class="fa fa-info-circle fa-fw"></i>'+$.i18n("edt_conf_gen_heading_title")+' '+$.i18n("conf_helptable_expl")));
}); });
$(document).ready( function() { $(document).ready( function() {
performTranslation(); performTranslation();
requestServerConfigSchema(); requestServerConfigSchema();
var importedConf;
var confName;
function dis_imp_btn(state)
{
state ? $('#btn_import_conf').attr('disabled', true) : $('#btn_import_conf').attr('disabled', false);
}
function readFile(evt)
{
var f = evt.target.files[0];
if (f)
{
var r = new FileReader();
r.onload = function(e)
{
var content = e.target.result;
//check file is json
var check = isJsonString(content);
if(check.length != 0)
{
showInfoDialog('error', "", $.i18n('infoDialog_import_jsonerror_text', f.name, JSON.stringify(check)));
dis_imp_btn(true);
}
else
{
content = JSON.parse(content);
//check for hyperion json
if(typeof content.leds === 'undefined' || typeof content.general === 'undefined')
{
showInfoDialog('error', "", $.i18n('infoDialog_import_hyperror_text', f.name));
dis_imp_btn(true);
}
else
{
//check config revision
if(content.general.configVersion !== parsedConfJSON.general.configVersion)
{
showInfoDialog('error', "", $.i18n('infoDialog_import_reverror_text', f.name, content.general.configVersion, parsedConfJSON.general.configVersion));
dis_imp_btn(true);
}
else
{
dis_imp_btn(false);
importedConf = content;
confName = f.name;
}
}
}
}
r.readAsText(f);
}
}
$('#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(){
showInfoDialog('import', $.i18n('infoDialog_import_confirm_title'), $.i18n('infoDialog_import_confirm_text', confName));
$('#id_btn_import').off().on('click', function(){
requestWriteConfig(importedConf, true);
setTimeout(initRestart, 100);
});
});
$('#select_import_conf').off().on('change', function(e){
if (window.File && window.FileReader && window.FileList && window.Blob)
readFile(e);
else
showInfoDialog('error', "", $.i18n('infoDialog_import_comperror_text'));
});
}); });

View File

@ -3,27 +3,52 @@ var conf_editor_v4l2 = null;
var conf_editor_fg = null; var conf_editor_fg = null;
$(hyperion).one("cmd-config-getschema", function(event) { $(hyperion).one("cmd-config-getschema", function(event) {
schema = parsedConfSchemaJSON.properties; schema = parsedConfSchemaJSON.properties;
if(showOptHelp)
{
//fg
$('#conf_cont').append(createRow('conf_cont_fg'))
$('#conf_cont_fg').append(createOptPanel('fa-camera', $.i18n("edt_conf_fg_heading_title"), 'editor_container_fg', 'btn_submit_fg'));
$('#conf_cont_fg').append(createHelpTable(schema.framegrabber.properties, $.i18n("edt_conf_fg_heading_title")));
//v4l
$('#conf_cont').append(createRow('conf_cont_v4l'))
$('#conf_cont_v4l').append(createOptPanel('fa-camera', $.i18n("edt_conf_v4l2_heading_title"), 'editor_container_v4l2', 'btn_submit_v4l2'));
$('#conf_cont_v4l').append(createHelpTable(schema.grabberV4L2.items.properties, $.i18n("edt_conf_v4l2_heading_title")));
}
else
{
$('#conf_cont').addClass('row');
$('#conf_cont').append(createOptPanel('fa-camera', $.i18n("edt_conf_fg_heading_title"), 'editor_container_fg', 'btn_submit_fg'));
$('#conf_cont').append(createOptPanel('fa-camera', $.i18n("edt_conf_v4l2_heading_title"), 'editor_container_v4l2', 'btn_submit_v4l2'));
}
//fg
conf_editor_fg = createJsonEditor('editor_container_fg', { conf_editor_fg = createJsonEditor('editor_container_fg', {
framegrabber: schema.framegrabber framegrabber: schema.framegrabber
}, true, true); }, true, true);
conf_editor_fg.on('change',function() {
conf_editor_fg.validate().length ? $('#btn_submit_fg').attr('disabled', true) : $('#btn_submit_fg').attr('disabled', false);
});
$('#btn_submit_fg').off().on('click',function() { $('#btn_submit_fg').off().on('click',function() {
requestWriteConfig(conf_editor_fg.getValue()); requestWriteConfig(conf_editor_fg.getValue());
}); });
//vl4
conf_editor_v4l2 = createJsonEditor('editor_container_v4l2', { conf_editor_v4l2 = createJsonEditor('editor_container_v4l2', {
grabberV4L2 : schema.grabberV4L2 grabberV4L2 : schema.grabberV4L2
}, true, true); }, true, true);
conf_editor_v4l2.on('change',function() {
conf_editor_v4l2.validate().length ? $('#btn_submit_v4l2').attr('disabled', true) : $('#btn_submit_v4l2').attr('disabled', false);
});
$('#btn_submit_v4l2').off().on('click',function() { $('#btn_submit_v4l2').off().on('click',function() {
requestWriteConfig(conf_editor_v4l2.getValue()); requestWriteConfig(conf_editor_v4l2.getValue());
}); });
if(showOptHelp)
{
$('#opt_expl_fg').html(createHelpTable(schema.framegrabber.properties, '<i class="fa fa-info-circle fa-fw"></i>'+$.i18n("edt_conf_fg_heading_title")+' '+$.i18n("conf_helptable_expl")));
$('#opt_expl_v4l2').html(createHelpTable(schema.grabberV4L2.items.properties, '<i class="fa fa-info-circle fa-fw"></i>'+$.i18n("edt_conf_v4l2_heading_title")+' '+$.i18n("conf_helptable_expl")));
}
}); });

View File

@ -1,8 +1,8 @@
$(document).ready( function() { $(document).ready( function() {
var uiLock = false; var uiLock = false;
$("#main-nav").hide();
loadContentTo("#container_connection_lost","connection_lost"); loadContentTo("#container_connection_lost","connection_lost");
loadContentTo("#container_restart","restart");
initWebSocket(); initWebSocket();
bindNavToContent("#load_dashboard","dashboard",true); bindNavToContent("#load_dashboard","dashboard",true);
bindNavToContent("#load_remote","remote",false); bindNavToContent("#load_remote","remote",false);
@ -82,7 +82,6 @@ $(document).ready( function() {
$("#loading_overlay").removeClass("overlay"); $("#loading_overlay").removeClass("overlay");
$("#main-nav").show('slide', {direction: 'left'}, 1000);
if (!parsedServerInfoJSON.info.hyperion[0].config_writeable) if (!parsedServerInfoJSON.info.hyperion[0].config_writeable)
{ {

View File

@ -2,22 +2,30 @@
var conf_editor = null; var conf_editor = null;
$(hyperion).one("cmd-config-getschema", function(event) { $(hyperion).one("cmd-config-getschema", function(event) {
schema = parsedConfSchemaJSON.properties; schema = parsedConfSchemaJSON.properties;
$('#conf_cont').append(createOptPanel('fa-play-circle-o', $.i18n("conf_kodi_label_title"), 'editor_container', 'btn_submit'));
if(showOptHelp)
{
$('#conf_cont').append(createHelpTable(schema.kodiVideoChecker.properties, $.i18n("conf_kodi_label_title")));
}
conf_editor = createJsonEditor('editor_container', { conf_editor = createJsonEditor('editor_container', {
kodiVideoChecker: schema.kodiVideoChecker kodiVideoChecker: schema.kodiVideoChecker
}, true, true); }, true, true);
conf_editor.on('change',function() {
conf_editor.validate().length ? $('#btn_submit').attr('disabled', true) : $('#btn_submit').attr('disabled', false);
});
$('#btn_submit').off().on('click',function() { $('#btn_submit').off().on('click',function() {
requestWriteConfig(conf_editor.getValue()); requestWriteConfig(conf_editor.getValue());
}); });
if(showOptHelp)
$('#opt_expl').html(createHelpTable(schema.kodiVideoChecker.properties, '<i class="fa fa-info-circle fa-fw"></i>'+$.i18n("conf_kodi_label_title")+' '+$.i18n("conf_helptable_expl")));
}); });
$(document).ready( function() { $(document).ready( function() {
performTranslation(); performTranslation();
requestServerConfigSchema(); requestServerConfigSchema();
}); });

View File

@ -1,6 +1,9 @@
var ledsCustomCfgInitialized = false; var ledsCustomCfgInitialized = false;
var finalLedArray = []; var finalLedArray = [];
var IntListIds;
var StrListIds;
var BoolListIds;
function get_hue_lights(){ function get_hue_lights(){
$.ajax({ $.ajax({
@ -27,6 +30,56 @@ function validateText(){
return true return true
} }
function loadStoredValues()
{
if (storageComp() && getStorage('ip_cl_ledstop') != null)
{
IntListIds = $('.led_val_int').map(function() { return this.id; }).get();
StrListIds = $('.led_val_string').map(function() { return this.id; }).get();
BoolListIds = $('.led_val_bool').map(function() { return this.id; }).get();
for(var i = 0; i < IntListIds.length; i++)
{
$('#'+IntListIds[i]).val(parseInt(getStorage(IntListIds[i])));
}
for(var i = 0; i < BoolListIds.length; i++)
{
var vb = getStorage(BoolListIds[i]);
$('#'+BoolListIds[i]).prop('checked', vb == "true" ? true : false);
}
for(var i = 0; i < StrListIds.length; i++)
{
$('#'+StrListIds[i]).val(getStorage(StrListIds[i]));
}
return;
}
return;
}
function saveValues()
{
if(storageComp())
{
for(var i = 0; i < IntListIds.length; i++)
{
setStorage(IntListIds[i], $('#'+IntListIds[i]).val());
}
for(var i = 0; i < BoolListIds.length; i++)
{
setStorage(BoolListIds[i], $('#'+BoolListIds[i]).is(":checked"));
}
for(var i = 0; i < StrListIds.length; i++)
{
setStorage(StrListIds[i], $('#'+StrListIds[i]).val());
}
return;
}
}
function round(number) { function round(number) {
var factor = Math.pow(10, 4); var factor = Math.pow(10, 4);
var tempNumber = number * factor; var tempNumber = number * factor;
@ -37,19 +90,19 @@ function round(number) {
function createLedPreview(leds, origin){ function createLedPreview(leds, origin){
if (origin == "classic"){ if (origin == "classic"){
$('#previewcreator').html('<h5>'+$.i18n('conf_leds_layout_preview_originCL')+'</h5>'); $('#previewcreator').html($.i18n('conf_leds_layout_preview_originCL'));
$('#leds_preview').css("padding-top", "56.25%"); $('#leds_preview').css("padding-top", "56.25%");
} }
else if(origin == "text"){ else if(origin == "text"){
$('#previewcreator').html('<h5>'+$.i18n('conf_leds_layout_preview_originTEXT')+'</h5>'); $('#previewcreator').html($.i18n('conf_leds_layout_preview_originTEXT'));
$('#leds_preview').css("padding-top", "56.25%"); $('#leds_preview').css("padding-top", "56.25%");
} }
else if(origin == "matrix"){ else if(origin == "matrix"){
$('#previewcreator').html('<h5>'+$.i18n('conf_leds_layout_preview_originMA')+'</h5>'); $('#previewcreator').html($.i18n('conf_leds_layout_preview_originMA'));
$('#leds_preview').css("padding-top", "100%"); $('#leds_preview').css("padding-top", "100%");
} }
$('#previewledcount').html('<h5>'+$.i18n('conf_leds_layout_preview_totalleds', leds.length)+'</h5>'); $('#previewledcount').html($.i18n('conf_leds_layout_preview_totalleds', leds.length));
$('.st_helper').css("border", "8px solid grey"); $('.st_helper').css("border", "8px solid grey");
@ -80,27 +133,27 @@ function createLedPreview(leds, origin){
function createClassicLeds(){ function createClassicLeds(){
//get values //get values
var ledsTop = parseInt($("#ip_cl_ledstop").val()); var ledstop = parseInt($("#ip_cl_ledstop").val());
var ledsBottom = parseInt($("#ip_cl_ledsbottom").val()); var ledsbottom = parseInt($("#ip_cl_ledsbottom").val());
var ledsLeft = parseInt($("#ip_cl_ledsleft").val()); var ledsleft = parseInt($("#ip_cl_ledsleft").val());
var ledsRight = parseInt($("#ip_cl_ledsright").val()); var ledsright = parseInt($("#ip_cl_ledsright").val());
var ledsGlength = parseInt($("#ip_cl_ledsglength").val()); var ledsglength = parseInt($("#ip_cl_ledsglength").val());
var ledsGPos = parseInt($("#ip_cl_ledsgpos").val()); var ledsgpos = parseInt($("#ip_cl_ledsgpos").val());
var position = parseInt($("#ip_cl_position").val()); var position = parseInt($("#ip_cl_position").val());
var reverse = $("#ip_cl_reverse").is(":checked"); var reverse = $("#ip_cl_reverse").is(":checked");
//advanced values //advanced values
var rawledsVDepth = parseInt($("#ip_cl_ledsvdepth").val()); var rawledsvdepth = parseInt($("#ip_cl_rawledsvdepth").val());
var rawledsHDepth = parseInt($("#ip_cl_ledshdepth").val()); var rawledshdepth = parseInt($("#ip_cl_rawledshdepth").val());
var rawedgeGap = parseInt($("#ip_cl_ledsedgegap").val()); var rawledsedgegap = parseInt($("#ip_cl_rawledsedgegap").val());
var rawcornerGap = parseInt($("#ip_cl_ledscornergap").val()); var rawledscornergap = parseInt($("#ip_cl_rawledscornergap").val());
//helper //helper
var ledsVDepth = rawledsVDepth /100; var ledsVDepth = rawledsvdepth /100;
var ledsHDepth = rawledsHDepth /100; var ledsHDepth = rawledshdepth /100;
var edgeVGap = rawedgeGap /100/2; var edgeVGap = rawledsedgegap /100/2;
var edgeHGap = edgeVGap/(16/9); var edgeHGap = edgeVGap/(16/9);
var cornerVGap = rawcornerGap /100/2; 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;
@ -121,7 +174,7 @@ function createClassicLeds(){
} }
function validateGap(){ function validateGap(){
if (ledsGPos+ledsGlength > ledArray.length){ if (ledsgpos+ledsglength > ledArray.length){
showInfoDialog('error', $.i18n('infoDialog_leds_gap_title'), $.i18n('infoDialog_leds_gap_text')); showInfoDialog('error', $.i18n('infoDialog_leds_gap_title'), $.i18n('infoDialog_leds_gap_text'));
return false return false
} }
@ -153,16 +206,16 @@ function createClassicLeds(){
} }
function createTopLeds(){ function createTopLeds(){
step=(Hmax-Hmin)/ledsTop; step=(Hmax-Hmin)/ledstop;
hmin=Hmin hmin=Hmin
if(cornerVGap != '0'){ if(cornerVGap != '0'){
step=(Hmax-Hmin-(cornerHGap*2))/ledsTop; step=(Hmax-Hmin-(cornerHGap*2))/ledstop;
hmin=Hmin+(cornerHGap); hmin=Hmin+(cornerHGap);
} }
vmin=Vmin vmin=Vmin
vmax=vmin+ledsHDepth; vmax=vmin+ledsHDepth;
hmax=hmin+step hmax=hmin+step
for (var i = 0; i<ledsTop; i++){ for (var i = 0; i<ledstop; i++){
createLedArray(hmin, hmax, vmin, vmax); createLedArray(hmin, hmax, vmin, vmax);
hmin += step hmin += step
hmax += step hmax += step
@ -170,16 +223,16 @@ function createClassicLeds(){
} }
function createLeftLeds(){ function createLeftLeds(){
step=(Vmax-Vmin)/ledsLeft; step=(Vmax-Vmin)/ledsleft;
vmax=Vmax vmax=Vmax
if(cornerVGap != '0'){ if(cornerVGap != '0'){
step=(Vmax-Vmin-(cornerVGap*2))/ledsLeft; step=(Vmax-Vmin-(cornerVGap*2))/ledsleft;
vmax=Vmax-(cornerVGap); vmax=Vmax-(cornerVGap);
} }
hmin=Hmin; hmin=Hmin;
hmax=hmin+ledsVDepth; hmax=hmin+ledsVDepth;
vmin=vmax-step vmin=vmax-step
for (var i = ledsLeft; i>0; i--){ for (var i = ledsleft; i>0; i--){
createLedArray(hmin, hmax, vmin, vmax); createLedArray(hmin, hmax, vmin, vmax);
vmin -= step vmin -= step
vmax -= step vmax -= step
@ -187,16 +240,16 @@ function createClassicLeds(){
} }
function createRightLeds(){ function createRightLeds(){
step=(Vmax-Vmin)/ledsRight; step=(Vmax-Vmin)/ledsright;
vmin=Vmin vmin=Vmin
if(cornerVGap != '0'){ if(cornerVGap != '0'){
step=(Vmax-Vmin-(cornerVGap*2))/ledsRight; step=(Vmax-Vmin-(cornerVGap*2))/ledsright;
vmin=Vmin+(cornerVGap); vmin=Vmin+(cornerVGap);
} }
hmax=Hmax; hmax=Hmax;
hmin=hmax-ledsVDepth; hmin=hmax-ledsVDepth;
vmax=vmin+step vmax=vmin+step
for (var i = 0; i<ledsRight; i++){ for (var i = 0; i<ledsright; i++){
createLedArray(hmin, hmax, vmin, vmax); createLedArray(hmin, hmax, vmin, vmax);
vmin += step vmin += step
vmax += step vmax += step
@ -204,16 +257,16 @@ function createClassicLeds(){
} }
function createBottomLeds(){ function createBottomLeds(){
step=(Hmax-Hmin)/ledsBottom; step=(Hmax-Hmin)/ledsbottom;
hmax=Hmax hmax=Hmax
if(cornerVGap != '0'){ if(cornerVGap != '0'){
step=(Hmax-Hmin-(cornerHGap*2))/ledsBottom; step=(Hmax-Hmin-(cornerHGap*2))/ledsbottom;
hmax=Hmax-(cornerHGap); hmax=Hmax-(cornerHGap);
} }
vmax=Vmax; vmax=Vmax;
vmin=vmax-ledsHDepth; vmin=vmax-ledsHDepth;
hmin=hmax-step hmin=hmax-step
for (var i = ledsBottom; i>0; i--){ for (var i = ledsbottom; i>0; i--){
createLedArray(hmin, hmax, vmin, vmax); createLedArray(hmin, hmax, vmin, vmax);
hmin -= step; hmin -= step;
hmax -= step; hmax -= step;
@ -222,8 +275,8 @@ function createClassicLeds(){
createLeftLeds(createBottomLeds(createRightLeds(createTopLeds()))); createLeftLeds(createBottomLeds(createRightLeds(createTopLeds())));
if(ledsGlength != "0" && validateGap()){ if(ledsglength != "0" && validateGap()){
ledArray.splice(ledsGPos, ledsGlength); ledArray.splice(ledsgpos, ledsglength);
} }
if (position != "0"){ if (position != "0"){
@ -241,8 +294,8 @@ function createMatrixLeds(){
// https://raw.githubusercontent.com/RanzQ/hyperion-audio-effects/master/matrix-config.js // https://raw.githubusercontent.com/RanzQ/hyperion-audio-effects/master/matrix-config.js
//get values //get values
var width = parseInt($("#ip_ma_ledshoriz").val()); var ledshoriz = parseInt($("#ip_ma_ledshoriz").val());
var height = parseInt($("#ip_ma_ledsvert").val()); var ledsvert = parseInt($("#ip_ma_ledsvert").val());
var cabling = $("#ip_ma_cabling").val(); var cabling = $("#ip_ma_cabling").val();
//var order = $("#ip_ma_order").val(); //var order = $("#ip_ma_order").val();
var start = $("#ip_ma_start").val(); var start = $("#ip_ma_start").val();
@ -250,8 +303,8 @@ function createMatrixLeds(){
var parallel = false var parallel = false
var index = 0 var index = 0
var leds = [] var leds = []
var hblock = 1.0 / width var hblock = 1.0 / ledshoriz
var vblock = 1.0 / height var vblock = 1.0 / ledsvert
if (cabling == "parallel"){ if (cabling == "parallel"){
parallel = true parallel = true
@ -288,10 +341,10 @@ function createMatrixLeds(){
} }
var startYX = start.split('-') var startYX = start.split('-')
var startX = startYX[1] === 'right' ? width - 1 : 0 var startX = startYX[1] === 'right' ? ledshoriz - 1 : 0
var startY = startYX[0] === 'bottom' ? height - 1 : 0 var startY = startYX[0] === 'bottom' ? ledsvert - 1 : 0
var endX = startX === 0 ? width - 1 : 0 var endX = startX === 0 ? ledshoriz - 1 : 0
var endY = startY === 0 ? height - 1 : 0 var endY = startY === 0 ? ledsvert - 1 : 0
var forward = startX < endX var forward = startX < endX
var downward = startY < endY var downward = startY < endY
@ -316,75 +369,62 @@ function createMatrixLeds(){
} }
$(document).ready(function() { $(document).ready(function() {
// translate
performTranslation(); performTranslation();
//-------------------------------------------------------------------
// restore values from storage
loadStoredValues();
// check access level and adjust ui
if(storedAccess == "default")
{
$('#btn_ma_generate').toggle(false);
$('#btn_cl_generate').toggle(false);
$('#texfield_panel').toggle(false);
$('#previewcreator').toggle(false);
}
else
{
$('#btn_ma_save').toggle(false);
$('#btn_cl_save').toggle(false);
}
// bind change event to all inputs
$('.ledCLconstr').bind("change", function() { $('.ledCLconstr').bind("change", function() {
createClassicLeds(); createClassicLeds();
}); });
// ------------------------------------------------------------------
$('.ledMAconstr').bind("change", function() { $('.ledMAconstr').bind("change", function() {
createMatrixLeds(); createMatrixLeds();
}); });
// ------------------------------------------------------------------ // cl leds push to textfield and save values
$('#btn_cl_generate').off().on("click", function() { $('#btn_cl_generate').off().on("click", function() {
if (finalLedArray != ""){ if (finalLedArray != ""){
$("#ledconfig").text(JSON.stringify(finalLedArray, null, "\t")); $("#ledconfig").text(JSON.stringify(finalLedArray, null, "\t"));
$('#collapse1').collapse('hide') $('#collapse1').collapse('hide');
$('#collapse4').collapse('show'); $('#collapse4').collapse('show');
saveValues();
} }
}); });
// ------------------------------------------------------------------ // ma leds push to textfield and save values
$('#btn_ma_generate').off().on("click", function() { $('#btn_ma_generate').off().on("click", function() {
if (finalLedArray != ""){ if (finalLedArray != ""){
$("#ledconfig").text(JSON.stringify(finalLedArray, null, "\t")); $("#ledconfig").text(JSON.stringify(finalLedArray, null, "\t"));
$('#collapse2').collapse('hide') $('#collapse2').collapse('hide');
$('#collapse4').collapse('show'); $('#collapse4').collapse('show');
saveValues();
} }
}); });
// ------------------------------------------------------------------ // fill textfield with current led conf and copy to finalLedArray
$(hyperion).on("cmd-ledcolors-imagestream-update",function(event){ $(hyperion).one("cmd-config-getconfig",function(event){
if ($("#leddevices").length == 0) $("#ledconfig").text(JSON.stringify(event.response.result.leds, null, "\t"));
{ finalLedArray = event.response.result.leds;
requestLedImageStop();
}
else
{
imageData = (event.response.result.image);
$("#image_preview").attr("src", imageData);
}
}); });
// ------------------------------------------------------------------ // create led device selection
$(hyperion).on("cmd-ledcolors-ledstream-update",function(event){
if ($("#leddevices").length == 0)
{
requestLedColorsStop();
}
else
{
ledColors = (event.response.result.leds);
for(var idx=0; idx<ledColors.length; idx++)
{
led = ledColors[idx]
$("#led_"+led.index).css("background","rgb("+led.red+","+led.green+","+led.blue+")");
}
}
});
// ------------------------------------------------------------------
$(hyperion).on("cmd-ledcolors-ledstream-stop",function(event){
led_count = $(".led").length;
for(var idx=0; idx<led_count; idx++)
{
$('#led_'+idx).css("background-color","hsl("+(idx*360/led_count)+",100%,50%)");
}
});
// ------------------------------------------------------------------
$(hyperion).one("cmd-serverinfo",function(event){ $(hyperion).one("cmd-serverinfo",function(event){
server = event.response; server = event.response;
ledDevices = server.info.ledDevices.available ledDevices = server.info.ledDevices.available
@ -428,93 +468,32 @@ $(document).ready(function() {
$("#leddevices").trigger("change"); $("#leddevices").trigger("change");
}); });
// ------------------------------------------------------------------ // validate textfield and update preview
$(hyperion).on("cmd-config-getconfig",function(event){
parsedConfJSON = event.response.result;
leds = parsedConfJSON.leds;
$("#ledconfig").text(JSON.stringify(leds, null, "\t"));
canvas_height = $('#leds_canvas').innerHeight();
canvas_width = $('#leds_canvas').innerWidth();
leds_html = '<img src="" id="image_preview" style="position:relative" />"';
for(var idx=0; idx<leds.length; idx++)
{
led = leds[idx];
led_id='led_'+led.index;
bgcolor = "background-color:hsl("+(idx*360/leds.length)+",100%,50%);";
pos = "left:"+(led.hscan.minimum * canvas_width)+"px;"+
"top:"+(led.vscan.minimum * canvas_height)+"px;"+
"width:"+((led.hscan.maximum-led.hscan.minimum) * canvas_width-1)+"px;"+
"height:"+((led.vscan.maximum-led.vscan.minimum) * canvas_height-1)+"px;";
leds_html += '<div id="'+led_id+'" class="led" style="'+bgcolor+pos+'" title="'+led.index+'"><span id="'+led_id+'_num" class="led_num">'+led.index+'</span></div>';
}
$('#leds_canvas').html(leds_html);
$('#led_0').css({"z-index":"10"});
$('#image_preview').hide();
$('#image_preview').attr("width" , $('#leds_canvas').innerWidth()-2);
$('#image_preview').attr("height", $('#leds_canvas').innerHeight()-2);
});
// ------------------------------------------------------------------
$('#leds_toggle_num').off().on("click", function() {
$('.led_num').toggle();
toggleClass('#leds_toggle_num', "btn-danger", "btn-success");
});
// ------------------------------------------------------------------
$('#leds_toggle').off().on("click", function() {
$('.led').toggle();
toggleClass('#leds_toggle', "btn-success", "btn-danger");
});
// ------------------------------------------------------------------
$('#leds_toggle_live').off().on("click", function() {
setClassByBool('#leds_toggle_live',ledStreamActive,"btn-success","btn-danger");
if ( ledStreamActive )
{
requestLedColorsStop();
}
else
{
requestLedColorsStart();
}
});
// ------------------------------------------------------------------
$('#leds_toggle_live_video').off().on("click", function() {
setClassByBool('#leds_toggle_live_video',imageStreamActive,"btn-success","btn-danger");
if ( imageStreamActive )
{
requestLedImageStop();
$('#image_preview').hide();
}
else
{
$('#image_preview').show();
requestLedImageStart();
}
});
// ------------------------------------------------------------------
$("#leds_custom_updsim").off().on("click", function() { $("#leds_custom_updsim").off().on("click", function() {
if (validateText()){ if (validateText()){
createLedPreview(JSON.parse($("#ledconfig").val()), 'text'); createLedPreview(JSON.parse($("#ledconfig").val()), 'text');
} }
}); });
// ------------------------------------------------------------------ // save led config and saveValues - passing textfield
$("#btn_ma_save, #btn_cl_save").off().on("click", function() {
requestWriteConfig(JSON.parse('{"leds" :'+finalLedArray+'}'));
saveValues();
});
// validate and save led config from textfield
$("#leds_custom_save").off().on("click", function() { $("#leds_custom_save").off().on("click", function() {
if (validateText()) if (validateText())
requestWriteConfig(JSON.parse('{"leds" :'+$("#ledconfig").val()+'}')); requestWriteConfig(JSON.parse('{"leds" :'+$("#ledconfig").val()+'}'));
}); });
// ------------------------------------------------------------------ // toggle led numbers
$('#leds_prev_toggle_num').off().on("click", function() { $('#leds_prev_toggle_num').off().on("click", function() {
$('.led_prev_num').toggle(); $('.led_prev_num').toggle();
toggleClass('#leds_prev_toggle_num', "btn-danger", "btn-success"); toggleClass('#leds_prev_toggle_num', "btn-danger", "btn-success");
}); });
// -------------------------------------------------------------
// 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
if (target == "#menu_gencfg" && !ledsCustomCfgInitialized) if (target == "#menu_gencfg" && !ledsCustomCfgInitialized)
@ -524,12 +503,11 @@ $(document).ready(function() {
} }
}); });
// ------------------------------------------------------------------ // create and update editor
var conf_editor = null; var conf_editor = null;
$("#leddevices").off().on("change", function(event) { $("#leddevices").off().on("change", function(event) {
generalOptions = parsedConfSchemaJSON.properties.device; generalOptions = parsedConfSchemaJSON.properties.device;
specificOptions = parsedConfSchemaJSON.properties.alldevices[$(this).val()]; specificOptions = parsedConfSchemaJSON.properties.alldevices[$(this).val()];
//$('#ledDeviceOptions').html(JSON.stringify(generalOptions)+"<br>"+JSON.stringify(specificOptions));
conf_editor = createJsonEditor('editor_container', { conf_editor = createJsonEditor('editor_container', {
generalOptions : generalOptions, generalOptions : generalOptions,
specificOptions : specificOptions, specificOptions : specificOptions,
@ -555,10 +533,6 @@ $(document).ready(function() {
conf_editor.getEditor("root.specificOptions").setValue( values_specific ); conf_editor.getEditor("root.specificOptions").setValue( values_specific );
}; };
$('#editor_container .well').css("background-color","white");
$('#editor_container .well').css("border","none");
$('#editor_container .well').css("box-shadow","none");
if ($(this).val() == "philipshue") if ($(this).val() == "philipshue")
{ {
$("#huebridge").show(); $("#huebridge").show();
@ -575,12 +549,13 @@ $(document).ready(function() {
{ {
$("#huebridge").hide(); $("#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
$("#btn_submit_controller").off().on("click", function(event) { $("#btn_submit_controller").off().on("click", function(event) {
if (conf_editor==null)
return;
ledDevice = $("#leddevices").val(); ledDevice = $("#leddevices").val();
result = {device:{}}; result = {device:{}};
@ -602,3 +577,4 @@ $(document).ready(function() {
}); });

View File

@ -1,16 +1,26 @@
var conf_editor = null; var conf_editor = null;
$(document).ready(function() { $(document).ready(function() {
performTranslation(); performTranslation();
requestLoggingStart(); requestLoggingStart();
schema = parsedConfSchemaJSON.properties; schema = parsedConfSchemaJSON.properties;
$('#conf_cont').append(createOptPanel('fa-reorder', $.i18n("edt_conf_log_heading_title"), 'editor_container', 'btn_submit'));
if(showOptHelp)
{
$('#conf_cont').append(createHelpTable(schema.logger.properties, $.i18n("edt_conf_log_heading_title")));
}
conf_editor = createJsonEditor('editor_container', { conf_editor = createJsonEditor('editor_container', {
logger : schema.logger logger : schema.logger
}, true); }, true, true);
$('#editor_container h3').remove(); conf_editor.on('change',function() {
conf_editor.validate().length ? $('#btn_submit').attr('disabled', true) : $('#btn_submit').attr('disabled', false);
});
$('#btn_submit').off().on('click',function() { $('#btn_submit').off().on('click',function() {
requestWriteConfig(conf_editor.getValue()); requestWriteConfig(conf_editor.getValue());
@ -20,7 +30,6 @@ $(document).ready(function() {
toggleClass('#btn_autoscroll', "btn-success", "btn-danger"); toggleClass('#btn_autoscroll', "btn-success", "btn-danger");
}); });
if (!loggingHandlerInstalled) if (!loggingHandlerInstalled)
{ {
loggingHandlerInstalled = true; loggingHandlerInstalled = true;

View File

@ -9,54 +9,115 @@ $(hyperion).one("cmd-config-getschema", function(event) {
schema = parsedConfSchemaJSON.properties; schema = parsedConfSchemaJSON.properties;
if(showOptHelp)
{
//jsonserver
$('#conf_cont').append(createRow('conf_cont_json'))
$('#conf_cont_json').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_js_heading_title"), 'editor_container_jsonserver', 'btn_submit_jsonserver'));
$('#conf_cont_json').append(createHelpTable(schema.jsonServer.properties, $.i18n("edt_conf_js_heading_title")));
//protoserver
$('#conf_cont').append(createRow('conf_cont_proto'))
$('#conf_cont_proto').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_ps_heading_title"), 'editor_container_protoserver', 'btn_submit_protoserver'));
$('#conf_cont_proto').append(createHelpTable(schema.protoServer.properties, $.i18n("edt_conf_ps_heading_title")));
//boblight
$('#conf_cont').append(createRow('conf_cont_bobl'))
$('#conf_cont_bobl').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_bobls_heading_title"), 'editor_container_boblightserver', 'btn_submit_boblightserver'));
$('#conf_cont_bobl').append(createHelpTable(schema.boblightServer.properties, $.i18n("edt_conf_bobls_heading_title")));
//udplistener
$('#conf_cont').append(createRow('conf_cont_udpl'))
$('#conf_cont_udpl').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_udpl_heading_title"), 'editor_container_udplistener', 'btn_submit_udplistener'));
$('#conf_cont_udpl').append(createHelpTable(schema.udpListener.properties, $.i18n("edt_conf_udpl_heading_title")));
//forwarder
if(storedAccess != 'default')
{
$('#conf_cont').append(createRow('conf_cont_fw'))
$('#conf_cont_fw').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_fw_heading_title"), 'editor_container_forwarder', 'btn_submit_forwarder'));
$('#conf_cont_fw').append(createHelpTable(schema.forwarder.properties, $.i18n("edt_conf_fw_heading_title")));
}
}
else
{
$('#conf_cont').addClass('row');
$('#conf_cont').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_js_heading_title"), 'editor_container_jsonserver', 'btn_submit_jsonserver'));
$('#conf_cont').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_ps_heading_title"), 'editor_container_protoserver', 'btn_submit_protoserver'));
$('#conf_cont').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_bobls_heading_title"), 'editor_container_boblightserver', 'btn_submit_boblightserver'));
$('#conf_cont').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_udpl_heading_title"), 'editor_container_udplistener', 'btn_submit_udplistener'));
if(storedAccess != 'default')
$('#conf_cont').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_fw_heading_title"), 'editor_container_forwarder', 'btn_submit_forwarder'));
}
//json
conf_editor_json = createJsonEditor('editor_container_jsonserver', { conf_editor_json = createJsonEditor('editor_container_jsonserver', {
jsonServer : schema.jsonServer jsonServer : schema.jsonServer
}, true, true); }, true, true);
conf_editor_json.on('change',function() {
conf_editor_json.validate().length ? $('#btn_submit_jsonserver').attr('disabled', true) : $('#btn_submit_jsonserver').attr('disabled', false);
});
$('#btn_submit_jsonserver').off().on('click',function() { $('#btn_submit_jsonserver').off().on('click',function() {
requestWriteConfig(conf_editor_json.getValue()); requestWriteConfig(conf_editor_json.getValue());
}); });
//proto
conf_editor_proto = createJsonEditor('editor_container_protoserver', { conf_editor_proto = createJsonEditor('editor_container_protoserver', {
protoServer : schema.protoServer protoServer : schema.protoServer
}, true, true); }, true, true);
conf_editor_proto.on('change',function() {
conf_editor_proto.validate().length ? $('#btn_submit_protoserver').attr('disabled', true) : $('#btn_submit_protoserver').attr('disabled', false);
});
$('#btn_submit_protoserver').off().on('click',function() { $('#btn_submit_protoserver').off().on('click',function() {
requestWriteConfig(conf_editor_proto.getValue()); requestWriteConfig(conf_editor_proto.getValue());
}); });
//boblight
conf_editor_bobl = createJsonEditor('editor_container_boblightserver', { conf_editor_bobl = createJsonEditor('editor_container_boblightserver', {
boblightServer : schema.boblightServer boblightServer : schema.boblightServer
}, true, true); }, true, true);
conf_editor_bobl.on('change',function() {
conf_editor_bobl.validate().length ? $('#btn_submit_boblightserver').attr('disabled', true) : $('#btn_submit_boblightserver').attr('disabled', false);
});
$('#btn_submit_boblightserver').off().on('click',function() { $('#btn_submit_boblightserver').off().on('click',function() {
requestWriteConfig(conf_editor_bobl.getValue()); requestWriteConfig(conf_editor_bobl.getValue());
}); });
//udplistener
conf_editor_udpl = createJsonEditor('editor_container_udplistener', { conf_editor_udpl = createJsonEditor('editor_container_udplistener', {
udpListener : schema.udpListener udpListener : schema.udpListener
}, true, true); }, true, true);
conf_editor_udpl.on('change',function() {
conf_editor_udpl.validate().length ? $('#btn_submit_udplistener').attr('disabled', true) : $('#btn_submit_udplistener').attr('disabled', false);
});
$('#btn_submit_udplistener').off().on('click',function() { $('#btn_submit_udplistener').off().on('click',function() {
requestWriteConfig(conf_editor_udpl.getValue()); requestWriteConfig(conf_editor_udpl.getValue());
}); });
if(storedAccess != 'default')
{
//forwarder
conf_editor_forw = createJsonEditor('editor_container_forwarder', { conf_editor_forw = createJsonEditor('editor_container_forwarder', {
forwarder : schema.forwarder forwarder : schema.forwarder
}, true, true); }, true, true);
conf_editor_forw.on('change',function() {
conf_editor_forw.validate().length ? $('#btn_submit_forwarder').attr('disabled', true) : $('#btn_submit_forwarder').attr('disabled', false);
});
$('#btn_submit_forwarder').off().on('click',function() { $('#btn_submit_forwarder').off().on('click',function() {
requestWriteConfig(conf_editor_forw.getValue()); requestWriteConfig(conf_editor_forw.getValue());
}); });
if(showOptHelp)
{
$('#opt_expl_jsonserver').html(createHelpTable(schema.jsonServer.properties, '<i class="fa fa-info-circle fa-fw"></i>'+$.i18n("edt_conf_js_heading_title")+' '+$.i18n("conf_helptable_expl")));
$('#opt_expl_protoserver').html(createHelpTable(schema.protoServer.properties, '<i class="fa fa-info-circle fa-fw"></i>'+$.i18n("edt_conf_ps_heading_title")));
$('#opt_expl_boblightserver').html(createHelpTable(schema.boblightServer.properties, '<i class="fa fa-info-circle fa-fw"></i>'+$.i18n("edt_conf_bobls_heading_title")+' '+$.i18n("conf_helptable_expl")));
$('#opt_expl_udplistener').html(createHelpTable(schema.udpListener.properties, '<i class="fa fa-info-circle fa-fw"></i>'+$.i18n("edt_conf_udpl_heading_title")+' '+$.i18n("conf_helptable_expl")));
$('#opt_expl_forwarder').html(createHelpTable(schema.forwarder.properties, '<i class="fa fa-info-circle fa-fw"></i>'+$.i18n("edt_conf_fw_heading_title")+' '+$.i18n("conf_helptable_expl")));
} }
}); });

View File

@ -1,25 +1,61 @@
function updateInputSelect() function updateInputSelect()
{ {
$('#sstbody').html("");
var data = ""; var data = "";
var prios = parsedServerInfoJSON.info.priorities
var i; var i;
for(i = 0; i < parsedServerInfoJSON.info.priorities.length; i++) { for(i = 0; i < prios.length; i++)
var owner = parsedServerInfoJSON.info.priorities[i].owner; {
var active = parsedServerInfoJSON.info.priorities[i].active; var origin = "not impl";
var visible = parsedServerInfoJSON.info.priorities[i].visible; var ip = "xxx.xxx.xxx.xxx";
var priority = parsedServerInfoJSON.info.priorities[i].priority; var owner = prios[i].owner;
var active = prios[i].active;
var visible = prios[i].visible;
var priority = prios[i].priority;
var compId = prios[i].componentId;
var duration = prios[i].duration_ms/1000;
var btn_type = "default"; var btn_type = "default";
var btn_text = $.i18n('remote_input_setsource_btn');
var btn_state = "enabled";
if (active) btn_type = "warning"; if (active) btn_type = "warning";
if (visible) btn_type = "success"; if (visible)
{
btn_state = "disabled";
btn_type = "success";
btn_text = $.i18n('remote_input_sourceactiv_btn');
}
if(ip)
origin += '<br/><span style="font-size:80%; color:grey;">'+$.i18n('remote_input_ip')+' '+ip+'</span>';
if(compId == "10")
owner = $.i18n('remote_effects_label_effects')+' '+owner;
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>';
if(compId == "7")
owner = $.i18n('general_comp_GRABBER')+': ('+owner+')';
if(compId == "8")
owner = $.i18n('general_comp_V4L')+': ('+owner+')';
if(compId == "6")
owner = $.i18n('general_comp_BOBLIGHTSERVER');
if(compId == "5")
owner = $.i18n('general_comp_UDPLISTENER');
if(duration)
owner += '<br/><span style="font-size:80%; color:grey;">'+$.i18n('remote_input_duration')+' '+duration.toFixed(0)+$.i18n('edt_append_s')+'</span>';
var btn = '<button id="srcBtn'+i+'" type="button" '+btn_state+' class="btn btn-'+btn_type+' btn_input_selection" onclick="requestSetSource('+priority+');">'+btn_text+'</button>';
if((compId == "10" || compId == "9") && priority != 254)
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')
data += '<button id="srcBtn'+i+'" type="button" class="btn btn-lg btn-'+btn_type+' btn_input_selection" style="margin:10px;min-width:200px" onclick="requestSetSource('+priority+');">'+owner+'<span style="font-size:70% !important;"> ('+priority+')</span></button><br/>'; $('#sstbody').append(createTableRow([origin, owner, priority, btn], false, true));
} }
var autostate = (parsedServerInfoJSON.info.priorities_autoselect? "btn-success" : "btn-danger"); var btn_auto_color = (parsedServerInfoJSON.info.priorities_autoselect? "btn-success" : "btn-danger");
data += '<button id="srcBtn'+i+'" type="button" class="btn btn-lg '+autostate+' btn_input_selection" style="margin:10px;min-width:200px" onclick="requestSetSource(\'auto\');">'+$.i18n('remote_input_label_autoselect')+'</button><br/>'; var btn_auto_state = (parsedServerInfoJSON.info.priorities_autoselect? "disabled" : "enabled");
$('#hyperion_inputs').html(data); var btn_auto_text = (parsedServerInfoJSON.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>');
var max_width=200; var max_width=100;
$('.btn_input_selection').each(function() { $('.btn_input_selection').each(function() {
if ($(this).innerWidth() > max_width) if ($(this).innerWidth() > max_width)
max_width = $(this).innerWidth(); max_width = $(this).innerWidth();
@ -109,11 +145,15 @@
$(document).ready(function() { $(document).ready(function() {
performTranslation(); performTranslation();
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));
// color // color
$(function() { $(function() {
$('#cp2').colorpicker({ $('#cp2').colorpicker({
format: 'rgb', format: 'rgb',
customClass: 'colorpicker-2x', customClass: 'colorpicker-2x',
color: '#B500FF',
sliders: { sliders: {
saturation: { saturation: {
maxLeft: 200, maxLeft: 200,

View File

@ -2,16 +2,24 @@
var conf_editor = null; var conf_editor = null;
$(hyperion).one("cmd-config-getschema", function(event) { $(hyperion).one("cmd-config-getschema", function(event) {
schema = parsedConfSchemaJSON.properties; schema = parsedConfSchemaJSON.properties;
$('#conf_cont').append(createOptPanel('fa-wrench', $.i18n("edt_conf_webc_heading_title"), 'editor_container', 'btn_submit'));
if(showOptHelp)
{
$('#conf_cont').append(createHelpTable(schema.webConfig.properties, $.i18n("edt_conf_webc_heading_title")));
}
conf_editor = createJsonEditor('editor_container', { conf_editor = createJsonEditor('editor_container', {
webConfig : schema.webConfig webConfig : schema.webConfig
}, true, true); }, true, true);
conf_editor.on('change',function() {
conf_editor.validate().length ? $('#btn_submit').attr('disabled', true) : $('#btn_submit').attr('disabled', false);
});
$('#btn_submit').off().on('click',function() { $('#btn_submit').off().on('click',function() {
requestWriteConfig(conf_editor.getValue()); requestWriteConfig(conf_editor.getValue());
}); });
if(showOptHelp)
$('#opt_expl_webconfig').html(createHelpTable(schema.webConfig.properties, '<i class="fa fa-info-circle fa-fw"></i>'+$.i18n("edt_conf_webc_heading_title")+' '+$.i18n("conf_helptable_expl")));
}); });

View File

@ -1,5 +1,6 @@
// global vars // global vars
var webPrio = 1;
var showOptHelp = true; var showOptHelp = true;
var currentVersion; var currentVersion;
var cleanCurrentVersion; var cleanCurrentVersion;
@ -26,8 +27,7 @@ function initRestart()
$(hyperion).off(); $(hyperion).off();
requestServerConfigReload(); requestServerConfigReload();
watchdog = 10; watchdog = 10;
$("#wrapper").fadeOut("slow"); connectionLostDetection('restart');
connectionLostDetection();
} }
function cron() function cron()
@ -37,16 +37,24 @@ function cron()
} }
function connectionLostDetection() function connectionLostDetection(type)
{ {
if ( watchdog > 1 ) if ( watchdog > 1 )
{ {
var interval_id = window.setInterval("", 9999); // Get a reference to the last var interval_id = window.setInterval("", 9999); // Get a reference to the last
for (var i = 1; i < interval_id; i++) for (var i = 1; i < interval_id; i++)
window.clearInterval(i); window.clearInterval(i);
if(type == 'restart')
{
$("body").html($("#container_restart").html());
restartAction();
}
else
{
$("body").html($("#container_connection_lost").html()); $("body").html($("#container_connection_lost").html());
connectionLostAction(); connectionLostAction();
} }
}
else else
{ {
$.get( "/cgi/cfg_jsonserver", function() {watchdog=0}).fail(function() {watchdog++;}); $.get( "/cgi/cfg_jsonserver", function() {watchdog=0}).fail(function() {watchdog++;});
@ -200,19 +208,22 @@ function requestLedImageStop()
sendToHyperion("ledcolors", "imagestream-stop"); sendToHyperion("ledcolors", "imagestream-stop");
} }
function requestPriorityClear() function requestPriorityClear(prio)
{ {
sendToHyperion("clear", "", '"priority":1'); if(typeof prio !== 'number')
prio = webPrio;
sendToHyperion("clear", "", '"priority":'+prio+'');
} }
function requestPlayEffect(effectName) function requestPlayEffect(effectName)
{ {
sendToHyperion("effect", "", '"effect":{"name":"'+effectName+'"},"priority":1'); sendToHyperion("effect", "", '"effect":{"name":"'+effectName+'"},"priority":'+webPrio+'');
} }
function requestSetColor(r,g,b) function requestSetColor(r,g,b)
{ {
sendToHyperion("color", "", '"color":['+r+','+g+','+b+'], "priority":1'); sendToHyperion("color", "", '"color":['+r+','+g+','+b+'], "priority":'+webPrio+'');
} }
function requestSetComponentState(comp, state) function requestSetComponentState(comp, state)
@ -229,14 +240,18 @@ function requestSetSource(prio)
sendToHyperion("sourceselect", "", '"priority":'+prio); sendToHyperion("sourceselect", "", '"priority":'+prio);
} }
function requestWriteConfig(config) function requestWriteConfig(config, full)
{ {
var complete_config = parsedConfJSON; if(full === true)
parsedConfJSON = config;
else
{
jQuery.each(config, function(i, val) { jQuery.each(config, function(i, val) {
complete_config[i] = val; parsedConfJSON[i] = val;
}); });
}
var config_str = escape(encode_utf8(JSON.stringify(complete_config))); var config_str = escape(encode_utf8(JSON.stringify(parsedConfJSON)));
$.post( "/cgi/cfg_set", { cfg: config_str }) $.post( "/cgi/cfg_set", { cfg: config_str })
.done(function( data ) { .done(function( data ) {
@ -255,7 +270,7 @@ function requestWriteEffect(effectName,effectPy,effectArgs)
function requestTestEffect(effectName,effectPy,effectArgs) function requestTestEffect(effectName,effectPy,effectArgs)
{ {
sendToHyperion("effect", "", '"effect":{"name":"'+effectName+'", "args":'+effectArgs+'},"priority":1, "pythonScript":"'+effectPy+'"}'); sendToHyperion("effect", "", '"effect":{"name":"'+effectName+'", "args":'+effectArgs+'},"priority":'+webPrio+', "pythonScript":"'+effectPy+'"}');
} }
function requestDeleteEffect(effectName) function requestDeleteEffect(effectName)

View File

@ -0,0 +1,141 @@
$(document).ready(function() {
var modalOpened = false;
var ledsim_width = 540;
var ledsim_height = 489;
var dialog;
var leds;
$(hyperion).one("cmd-config-getconfig",function(event){
leds = event.response.result.leds;
if(storageComp() && getStorage('ledsim_width') != null)
{
ledsim_width = getStorage('ledsim_width');
ledsim_height = getStorage('ledsim_height');
}
dialog = $("#ledsim_dialog").dialog({
uiLibrary: 'bootstrap',
resizable: true,
modal: false,
minWidth: 250,
width: ledsim_width,
minHeight: 350,
height: ledsim_height,
closeOnEscape: true,
autoOpen: false,
title: $.i18n('main_ledsim_title'),
resize: function (e) {
updateLedLayout();
},
opened: function (e) {
updateLedLayout();
modalOpened = true;
requestLedColorsStart();
if($('#leds_toggle_live_video').hasClass('btn-success'))
requestLedImageStart();
},
closed: function (e) {
modalOpened = false;
},
resizeStop: function (e) {
if(storageComp())
{
setStorage("ledsim_width", $("#ledsim_dialog").outerWidth());
setStorage("ledsim_height", $("#ledsim_dialog").outerHeight());
}
}
});
});
function updateLedLayout()
{
//calculate body size
var canvas_height = $('#ledsim_dialog').outerHeight()-$('#ledsim_text').outerHeight()-$('[data-role=footer]').outerHeight()-$('[data-role=header]').outerHeight()-40;
var canvas_width = $('#ledsim_dialog').outerWidth()-30;
$('#leds_canvas').html("");
leds_html = '<img src="" id="image_preview" style="position:relative" />';
for(var idx=0; idx<leds.length; idx++)
{
led = leds[idx];
led_id='led_'+led.index;
bgcolor = "background-color:hsl("+(idx*360/leds.length)+",100%,50%);";
pos = "left:"+(led.hscan.minimum * canvas_width)+"px;"+
"top:"+(led.vscan.minimum * canvas_height)+"px;"+
"width:"+((led.hscan.maximum-led.hscan.minimum) * canvas_width-1)+"px;"+
"height:"+((led.vscan.maximum-led.vscan.minimum) * canvas_height-1)+"px;";
leds_html += '<div id="'+led_id+'" class="led" style="'+bgcolor+pos+'" title="'+led.index+'"><span id="'+led_id+'_num" class="led_num">'+led.index+'</span></div>';
}
$('#leds_canvas').html(leds_html);
if($('#leds_toggle_num').hasClass('btn-success'))
$('.led_num').toggle(true);
if($('#leds_toggle').hasClass('btn-danger'))
$('.led').toggle(false);
$('#image_preview').attr("width" , canvas_width-1);
$('#image_preview').attr("height", canvas_height-1);
}
// ------------------------------------------------------------------
$('#leds_toggle_num').off().on("click", function() {
$('.led_num').toggle();
toggleClass('#leds_toggle_num', "btn-danger", "btn-success");
});
// ------------------------------------------------------------------
$('#leds_toggle').off().on("click", function() {
$('.led').toggle();
toggleClass('#leds_toggle', "btn-success", "btn-danger");
});
// ------------------------------------------------------------------
$('#leds_toggle_live_video').off().on("click", function() {
setClassByBool('#leds_toggle_live_video',imageStreamActive,"btn-success","btn-danger");
if ( imageStreamActive )
{
requestLedImageStop();
$('#image_preview').removeAttr("src");
}
else
{
requestLedImageStart();
}
});
// ------------------------------------------------------------------
$(hyperion).on("cmd-ledcolors-ledstream-update",function(event){
if (!modalOpened)
{
requestLedColorsStop();
}
else
{
ledColors = (event.response.result.leds);
for(var idx=0; idx<ledColors.length; idx++)
{
led = ledColors[idx]
$("#led_"+led.index).css("background","rgb("+led.red+","+led.green+","+led.blue+")");
}
}
});
// ------------------------------------------------------------------
$(hyperion).on("cmd-ledcolors-imagestream-update",function(event){
if (!modalOpened)
{
requestLedImageStop();
}
else
{
imageData = (event.response.result.image);
$("#image_preview").attr("src", imageData);
}
});
$("#btn_open_ledsim").off().on("click", function(event) {
dialog.open();
});
});

1
assets/webconfig/js/lib/dialog.min.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,2 @@
//download.js v4.2, by dandavis; 2008-2016. [CCBY2] see http://danml.com/download.html for tests/usage
(function(r,k){"function"==typeof define&&define.amd?define([],k):"object"==typeof exports?module.exports=k():r.download=k()})(this,function(){return function k(a,b,g){function q(p){var a=p.split(/[:;,]/);p=a[1];var a=("base64"==a[2]?atob:decodeURIComponent)(a.pop()),d=a.length,b=0,c=new Uint8Array(d);for(b;b<d;++b)c[b]=a.charCodeAt(b);return new f([c],{type:p})}function l(a,b){if("download"in d)return d.href=a,d.setAttribute("download",m),d.className="download-js-link",d.innerHTML="downloading...",d.style.display="none",document.body.appendChild(d),setTimeout(function(){d.click(),document.body.removeChild(d),!0===b&&setTimeout(function(){e.URL.revokeObjectURL(d.href)},250)},66),!0;if(/(Version)\/(\d+)\.(\d+)(?:\.(\d+))?.*Safari\//.test(navigator.userAgent))return a=a.replace(/^data:([\w\/\-\+]+)/,"application/octet-stream"),!window.open(a)&&confirm("Displaying New Document\n\nUse Save As... to download, then click back to return to this page.")&&(location.href=a),!0;var c=document.createElement("iframe");document.body.appendChild(c),b||(a="data:"+a.replace(/^data:([\w\/\-\+]+)/,"application/octet-stream")),c.src=a,setTimeout(function(){document.body.removeChild(c)},333)}var e=window,c=g||"application/octet-stream",h=!b&&!g&&a,d=document.createElement("a");g=function(a){return String(a)};var f=e.Blob||e.MozBlob||e.WebKitBlob||g,m=b||"download",f=f.call?f.bind(e):Blob;"true"===String(this)&&(a=[a,c],c=a[0],a=a[1]);if(h&&2048>h.length&&(m=h.split("/").pop().split("?")[0],d.href=h,-1!==d.href.indexOf(h))){var n=new XMLHttpRequest;return n.open("GET",h,!0),n.responseType="blob",n.onload=function(a){k(a.target.response,m,"application/octet-stream")},setTimeout(function(){n.send()},0),n}if(/^data\:[\w+\-]+\/[\w+\-]+[,;]/.test(a)){if(!(2096103.424<a.length&&f!==g))return navigator.msSaveBlob?navigator.msSaveBlob(q(a),m):l(a);a=q(a),c=a.type||"application/octet-stream"}b=a instanceof f?a:new f([a],{type:c});if(navigator.msSaveBlob)return navigator.msSaveBlob(b,m);if(e.URL)l(e.URL.createObjectURL(b),!0);else{if("string"==typeof b||b.constructor===g)try{return l("data:"+c+";base64,"+e.btoa(b))}catch(p){return l("data:"+c+","+encodeURIComponent(b))}c=new FileReader,c.onload=function(a){l(this.result)},c.readAsDataURL(b)}return!0}});

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -232,6 +232,7 @@ JSONEditor.prototype = {
var theme_class = JSONEditor.defaults.themes[this.options.theme || JSONEditor.defaults.theme]; var theme_class = JSONEditor.defaults.themes[this.options.theme || JSONEditor.defaults.theme];
if(!theme_class) throw "Unknown theme " + (this.options.theme || JSONEditor.defaults.theme); if(!theme_class) throw "Unknown theme " + (this.options.theme || JSONEditor.defaults.theme);
this.access = this.options.access;
this.schema = this.options.schema; this.schema = this.options.schema;
this.theme = new theme_class(); this.theme = new theme_class();
this.template = this.options.template; this.template = this.options.template;
@ -322,6 +323,7 @@ JSONEditor.prototype = {
this.validation_results = null; this.validation_results = null;
this.theme = null; this.theme = null;
this.iconlib = null; this.iconlib = null;
this.access = null;
this.template = null; this.template = null;
this.__data = null; this.__data = null;
this.ready = false; this.ready = false;
@ -1418,6 +1420,7 @@ JSONEditor.AbstractEditor = Class.extend({
this.theme = this.jsoneditor.theme; this.theme = this.jsoneditor.theme;
this.template_engine = this.jsoneditor.template; this.template_engine = this.jsoneditor.template;
this.iconlib = this.jsoneditor.iconlib; this.iconlib = this.jsoneditor.iconlib;
this.access = this.jsoneditor.access;
this.translate = this.jsoneditor.translate || JSONEditor.defaults.translate; this.translate = this.jsoneditor.translate || JSONEditor.defaults.translate;
@ -1458,13 +1461,12 @@ JSONEditor.AbstractEditor = Class.extend({
this.register(); this.register();
this.onWatchedFieldChange(); this.onWatchedFieldChange();
//hide input field, if it didn't match the current access level //hide input fields, if they didn't match the current access level
var storedAccess = localStorage.getItem("accesslevel"); var storedAccess = this.access
if(this.schema.access){ if(this.schema.access){
if(this.schema.access == 'system') if(this.schema.access == 'system')
this.container.style.display = "none"; this.container.style.display = "none";
if(this.schema.access == 'expert' && storedAccess != 'expert'){ else if(this.schema.access == 'expert' && storedAccess != 'expert'){
this.container.style.display = "none"; this.container.style.display = "none";
//this.disable(); //this.disable();
} }
@ -2150,7 +2152,7 @@ JSONEditor.defaults.editors.string = JSONEditor.AbstractEditor.extend({
if(this.format) this.input.setAttribute('data-schemaformat',this.format); if(this.format) this.input.setAttribute('data-schemaformat',this.format);
if(this.defaultValue) this.input.setAttribute('data-schemaformat',this.format); if(this.defaultValue) this.input.setAttribute('data-schemaformat',this.format);
if(this.formname)this.label.setAttribute('for',this.formname); if(this.formname && this.label)this.label.setAttribute('for',this.formname);
this.control = this.theme.getFormControl(this.label, this.input, this.description, this.append, this.placeholder); this.control = this.theme.getFormControl(this.label, this.input, this.description, this.append, this.placeholder);
this.container.appendChild(this.control); this.container.appendChild(this.control);
@ -4861,7 +4863,7 @@ JSONEditor.defaults.editors.select = JSONEditor.AbstractEditor.extend({
setValue: function(value,initial) { setValue: function(value,initial) {
value = this.typecast(value||''); value = this.typecast(value||'');
// Sanitize value before setting it //Sanitize value before setting it
var sanitized = value; var sanitized = value;
if(this.enum_values.indexOf(sanitized) < 0) { if(this.enum_values.indexOf(sanitized) < 0) {
sanitized = this.enum_values[0]; sanitized = this.enum_values[0];
@ -4870,7 +4872,6 @@ JSONEditor.defaults.editors.select = JSONEditor.AbstractEditor.extend({
if(this.value === sanitized) { if(this.value === sanitized) {
return; return;
} }
this.input.value = this.enum_options[this.enum_values.indexOf(sanitized)]; this.input.value = this.enum_options[this.enum_values.indexOf(sanitized)];
if(this.select2) this.select2.select2('val',this.input.value); if(this.select2) this.select2.select2('val',this.input.value);
this.value = sanitized; this.value = sanitized;

File diff suppressed because one or more lines are too long

View File

@ -1,120 +0,0 @@
$(document).ready( function() {
var storedLang;
var storedAccess;
var availLang = ['en','de'];
var availAccess = ['default','expert']
//$.i18n.debug = true;
function storageComp(){
if (typeof(Storage) !== "undefined")
return true;
return false;
}
function initTrans(lc){
if (lc == 'auto')
{
$.i18n().load().done(
function() {
performTranslation();
});
}
else
{
$.i18n().locale = lc;
$.i18n().load( "i18n", lc ).done(
function() {
performTranslation();
});
}
}
//i18n
if (storageComp())
{
storedLang = localStorage.getItem("langcode");
if (storedLang == null)
{
localStorage.langcode = "auto";
storedLang = 'auto';
initTrans('auto');
}
else
{
initTrans(storedLang);
}
}
else
{
showInfoDialog('warning', "Can't store settings", "Your browser doesn't support localStorage. You can't save a specific language setting (fallback to 'auto detection') and access level (fallback to 'default'). Some wizards may be hidden. You could still use the webinterface without further issues");
initTrans('auto');
$('#btn_setlang').toggle();
$('#btn_setaccess').toggle();
$('#btn_wizard_byteorder').toggle();
}
$('#btn_setlang').off().on('click',function() {
$('#modal_select').html('');
for (var lcx = 0; lcx<availLang.length; lcx++)
{
$('#modal_select').append(createSelOpt(availLang[lcx], $.i18n('general_speech_'+availLang[lcx])))
}
showInfoDialog('select', $.i18n('InfoDialog_lang_title'), $.i18n('InfoDialog_lang_text'),'btn_savelang');
if (storedLang != "auto")
$('#modal_select').val(storedLang);
$('#btn_savelang').off().on('click',function() {
var newLang = $('#modal_select').val();
if (newLang != storedLang)
{
initTrans(newLang);
localStorage.langcode = newLang;
storedLang = newLang;
}
});
});
//access
function updateVisibility(){
if(storedAccess == 'expert')
$('#load_webconfig').toggle(true);
else
$('#load_webconfig').toggle(false);
}
if (storageComp())
{
storedAccess = localStorage.getItem("accesslevel");
if (storedAccess == null)
{
localStorage.accesslevel = "default";
storedAccess = "default";
updateVisibility();
}
else
{
updateVisibility();
}
}
$('#btn_setaccess').off().on('click',function() {
$('#modal_select').html('');
for (var lcx = 0; lcx<availAccess.length; lcx++)
{
$('#modal_select').append(createSelOpt(availAccess[lcx], $.i18n('general_access_'+availAccess[lcx])))
}
showInfoDialog('select', $.i18n('InfoDialog_access_title'), $.i18n('InfoDialog_access_text'), 'btn_saveaccess');
$('#modal_select').val(storedAccess);
$('#btn_saveaccess').off().on('click',function() {
storedAccess = $('#modal_select').val();
localStorage.accesslevel = storedAccess;
updateVisibility();
});
});
});

View File

@ -0,0 +1,121 @@
var storedAccess;
var storedLang;
var availLang = ['en','de'];
var availAccess = ['default','advanced','expert'];
//$.i18n.debug = true;
$(document).ready( function() {
//i18n
function initTrans(lc){
if (lc == 'auto')
{
$.i18n().load().done(
function() {
performTranslation();
});
}
else
{
$.i18n().locale = lc;
$.i18n().load( "i18n", lc ).done(
function() {
performTranslation();
});
}
}
if (storageComp())
{
storedLang = getStorage("langcode");
if (storedLang == null)
{
setStorage("langcode", 'auto')
storedLang = 'auto';
initTrans(storedLang);
}
else
{
initTrans(storedLang);
}
}
else
{
showInfoDialog('warning', "Can't store settings", "Your browser doesn't support localStorage. You can't save a specific language setting (fallback to 'auto detection') and access level (fallback to 'default'). Some wizards may be hidden. You could still use the webinterface without further issues");
initTrans('auto');
storedLang = 'auto';
storedAccess = "default";
$('#btn_setlang').toggle();
$('#btn_setaccess').toggle();
}
$('#btn_setlang').off().on('click',function() {
var newLang;
showInfoDialog('select', $.i18n('InfoDialog_lang_title'), $.i18n('InfoDialog_lang_text'));
for (var lcx = 0; lcx<availLang.length; lcx++)
{
$('#id_select').append(createSelOpt(availLang[lcx], $.i18n('general_speech_'+availLang[lcx])))
}
if (storedLang != "auto")
$('#id_select').val(storedLang);
$('#id_select').off().on('change',function() {
newLang = $('#id_select').val();
if (newLang == storedLang)
$('#id_btn_saveset').attr('disabled', true);
else
$('#id_btn_saveset').attr('disabled', false);
});
$('#id_btn_saveset').off().on('click',function() {
setStorage("langcode", newLang);
reload();
});
$('#id_select').trigger('change');
});
//access
if (storageComp())
{
storedAccess = getStorage("accesslevel");
if (storedAccess == null)
{
setStorage("accesslevel", "default");
storedAccess = "default";
}
}
$('#btn_setaccess').off().on('click',function() {
var newAccess;
showInfoDialog('select', $.i18n('InfoDialog_access_title'), $.i18n('InfoDialog_access_text'));
for (var lcx = 0; lcx<availAccess.length; lcx++)
{
$('#id_select').append(createSelOpt(availAccess[lcx], $.i18n('general_access_'+availAccess[lcx])));
}
$('#id_select').val(storedAccess);
$('#id_select').off().on('change',function() {
newAccess = $('#id_select').val();
if (newAccess == storedAccess)
$('#id_btn_saveset').attr('disabled', true);
else
$('#id_btn_saveset').attr('disabled', false);
});
$('#id_btn_saveset').off().on('click',function() {
setStorage("accesslevel", newAccess);
reload();
});
$('#id_select').trigger('change');
});
//hide menu elements
if (storedAccess != 'expert')
$('#load_webconfig').toggle(false);
});

View File

@ -1,3 +1,25 @@
function reload()
{
location.reload();
}
function storageComp()
{
if (typeof(Storage) !== "undefined")
return true;
return false;
}
function getStorage(item)
{
return localStorage.getItem(item);
}
function setStorage(item, value)
{
localStorage.setItem(item, value);
return true;
}
function debugMessage(msg) function debugMessage(msg)
{ {
@ -24,8 +46,6 @@ function loadContentTo(containerId, fileName)
$(containerId).load("/content/"+fileName+".html"); $(containerId).load("/content/"+fileName+".html");
} }
function toggleClass(obj,class1,class2) function toggleClass(obj,class1,class2)
{ {
if ( $(obj).hasClass(class1)) if ( $(obj).hasClass(class1))
@ -55,37 +75,46 @@ function setClassByBool(obj,enable,class1,class2)
} }
} }
function showInfoDialog(type,header,message,btnid) function showInfoDialog(type,header,message)
{ {
if (type != 'select')
$('#modal_select').toggle(false);
else
$('#modal_select').toggle(true);
$('#modal_dialog .modal-bodytitle').html(header);
$('#modal_dialog .modal-bodycontent').html(message);
if (type=="success"){ if (type=="success"){
$('#modal_dialog .modal-bodyicon').html('<i class="fa fa-check modal-icon-check">'); $('#id_body').html('<i style="margin-bottom:20px" class="fa fa-check modal-icon-check">');
$('#modal_dialog .modal-footer-button').html('<button type="button" class="btn btn-success" data-dismiss="modal">'+$.i18n('general_btn_ok')+'</button>'); if(header == "")
$('#id_body').append('<h4 style="font-weight:bold;text-transform:uppercase;">'+$.i18n('infoDialog_general_success_title')+'</h4>');
$('#id_footer').html('<button type="button" class="btn btn-success" data-dismiss="modal">'+$.i18n('general_btn_ok')+'</button>');
} }
else if (type=="warning"){ else if (type=="warning"){
$('#modal_dialog .modal-bodyicon').html('<i class="fa fa-warning modal-icon-warning">'); $('#id_body').html('<i style="margin-bottom:20px" class="fa fa-warning modal-icon-warning">');
$('#modal_dialog .modal-footer-button').html('<button type="button" class="btn btn-warning" data-dismiss="modal">'+$.i18n('general_btn_ok')+'</button>'); if(header == "")
$('#id_body').append('<h4 style="font-weight:bold;text-transform:uppercase;">'+$.i18n('infoDialog_general_warning_title')+'</h4>');
$('#id_footer').html('<button type="button" class="btn btn-warning" data-dismiss="modal">'+$.i18n('general_btn_ok')+'</button>');
} }
else if (type=="error"){ else if (type=="error"){
$('#modal_dialog .modal-bodyicon').html('<i class="fa fa-warning modal-icon-error">'); $('#id_body').html('<i style="margin-bottom:20px" class="fa fa-warning modal-icon-error">');
$('#modal_dialog .modal-footer-button').html('<button type="button" class="btn btn-danger" data-dismiss="modal">'+$.i18n('general_btn_ok')+'</button>'); if(header == "")
$('#id_body').append('<h4 style="font-weight:bold;text-transform:uppercase;">'+$.i18n('infoDialog_general_error_title')+'</h4>');
$('#id_footer').html('<button type="button" class="btn btn-danger" data-dismiss="modal">'+$.i18n('general_btn_ok')+'</button>');
} }
else if (type == "select"){ else if (type == "select"){
$('#modal_dialog .modal-bodyicon').html('<img 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!">');
$('#modal_dialog .modal-footer-button').html('<button type="button" id="'+btnid+'" class="btn btn-success" data-dismiss="modal">'+$.i18n('general_btn_save')+'</button>'); $('#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>');
$('#modal_dialog .modal-footer-button').append('<button type="button" class="btn btn-danger" data-dismiss="modal">'+$.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"){
$('#modal_dialog .modal-bodyicon').html('<img src="img/hyperion/hyperionlogo.png" alt="Redefine ambient light!">'); $('#id_body').html('<img src="img/hyperion/hyperionlogo.png" alt="Redefine ambient light!">');
$('#modal_dialog .modal-footer-button').html('<b>'+$.i18n('InfoDialog_nowrite_foottext')+'</b>'); $('#id_footer').html('<b>'+$.i18n('InfoDialog_nowrite_foottext')+'</b>');
} }
else if (type == "import"){
$('#id_body').html('<i style="margin-bottom:20px" class="fa fa-warning modal-icon-warning">');
$('#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_body').append('<h4 style="font-weight:bold;text-transform:uppercase;">'+header+'</h4>');
$('#id_body').append(message);
if(type == "select")
$('#id_body').append('<select id="id_select" class="form-control" style="margin-top:10px;width:auto;"></select>');
$("#modal_dialog").modal({ $("#modal_dialog").modal({
backdrop : "static", backdrop : "static",
@ -107,7 +136,6 @@ function isJsonString(str)
return ""; return "";
} }
function createJsonEditor(container,schema,setconfig,usePanel) function createJsonEditor(container,schema,setconfig,usePanel)
{ {
$('#'+container).off(); $('#'+container).off();
@ -123,6 +151,9 @@ function createJsonEditor(container,schema,setconfig,usePanel)
disable_properties: 'true', disable_properties: 'true',
disable_array_reorder: 'true', disable_array_reorder: 'true',
no_additional_properties: 'true', no_additional_properties: 'true',
disable_array_delete_all_rows: 'true',
disable_array_delete_last_row: 'true',
access: storedAccess,
schema: { schema: {
title:'', title:'',
properties: schema properties: schema
@ -147,44 +178,100 @@ function createJsonEditor(container,schema,setconfig,usePanel)
return editor; return editor;
} }
function createTableTh(th1, th2){ // Creates a table with thead and tbody ids
var elth1 = document.createElement('th'); // @param string hid : a id for thead
var elth2 = document.createElement('th'); // @param string bid : a id for tbody
var tr = document.createElement('tr'); // @param string cont : a container id to html() the table
function createTable(hid, bid, cont)
{
var table = document.createElement('table');
var thead = document.createElement('thead');
var tbody = document.createElement('tbody');
elth1.innerHTML = th1; table.className = "table";
elth2.innerHTML = th2; table.style.marginBottom = "0px";
tr.appendChild(elth1); thead.setAttribute("id", hid);
tr.appendChild(elth2); tbody.setAttribute("id", bid);
return tr; table.appendChild(thead);
table.appendChild(tbody);
$('#'+cont).html(table);
} }
function createTableTd(td1, td2){ // Creates a table row <tr>
var eltd1 = document.createElement('td'); // @param array list :innerHTML content for <td>/<th>
var eltd2 = document.createElement('td'); // @param bool head :if null or false it's body
var tr = document.createElement('tr'); // @param bool align :if null or false no alignment
//
// @return : <tr> with <td> or <th> as child(s)
function createTableRow(list, head, align)
{
var row = document.createElement('tr');
eltd1.innerHTML = td1; for(var i = 0; i < list.length; i++)
eltd2.innerHTML = td2; {
tr.appendChild(eltd1); if(head === true)
tr.appendChild(eltd2); var el = document.createElement('th');
else
var el = document.createElement('td');
return tr; if(align)
el.style.verticalAlign = "middle";
el.innerHTML = list[i];
row.appendChild(el);
}
return row;
}
function createRow(id)
{
var el = document.createElement('div');
el.className = "row";
el.setAttribute('id', id);
return el;
}
function createOptPanel(phicon, phead, bodyid, footerid)
{
phead = '<i class="fa '+phicon+' fa-fw"></i>'+phead;
pfooter = document.createElement('button');
pfooter.className = "btn btn-success";
pfooter.setAttribute("id", footerid);
pfooter.innerHTML = '<i class="fa fa-fw fa-save"></i>'+$.i18n('general_button_savesettings');
return createPanel(phead, "", pfooter, "panel-default", bodyid);
} }
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));
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(createTableTh($.i18n('conf_helptable_option'), $.i18n('conf_helptable_expl'))); 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'){ {
text = list[key].title.replace('title', 'expl'); if(list[key].access != 'system')
tbody.appendChild(createTableTd($.i18n(list[key].title), $.i18n(text))); {
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 ilist = list[key].items.properties;
for (ikey in ilist)
{
var itext = ilist[ikey].title.replace('title', 'expl');
tbody.appendChild(createTableRow([$.i18n(ilist[ikey].title), $.i18n(itext)], false, false));
}
}
} }
} }
table.appendChild(thead); table.appendChild(thead);
@ -193,12 +280,15 @@ function createHelpTable(list, phead){
return createPanel(phead, table); return createPanel(phead, table);
} }
function createPanel(head, body, footer, type){ function createPanel(head, body, footer, type, bodyid){
var cont = document.createElement('div');
var p = document.createElement('div'); var p = document.createElement('div');
var phead = document.createElement('div'); var phead = document.createElement('div');
var pbody = document.createElement('div'); var pbody = document.createElement('div');
var pfooter = document.createElement('div'); var pfooter = document.createElement('div');
cont.className = "col-lg-6";
if(typeof type == 'undefined') if(typeof type == 'undefined')
type = 'panel-default'; type = 'panel-default';
@ -209,18 +299,30 @@ function createPanel(head, body, footer, type){
phead.innerHTML = head; phead.innerHTML = head;
if(typeof body != 'undefined') if(typeof bodyid != 'undefined')
{
pfooter.style.textAlign = 'right';
pbody.setAttribute("id", bodyid)
}
if(typeof body != 'undefined' && body != "")
pbody.appendChild(body); pbody.appendChild(body);
pfooter.innerHTML = footer; if(typeof footer != 'undefined')
pfooter.appendChild(footer);
p.appendChild(phead); p.appendChild(phead);
p.appendChild(pbody); p.appendChild(pbody);
if(typeof footer != 'undefined') if(typeof footer != 'undefined')
{
pfooter.style.textAlign = "right";
p.appendChild(pfooter); p.appendChild(pfooter);
}
return p; cont.appendChild(p);
return cont;
} }
function createSelGroup(group) function createSelGroup(group)

View File

@ -1,12 +1,21 @@
$(document).ready( function() { $(document).ready( function() {
//clear priority if people reload the page or lost connection while a wizard was active //clear priority if people reload the page or lost connection while a wizard was active
var wizardStatus = localStorage.getItem("wizardactive");
$(hyperion).one("cmd-config-getschema", function(event) { $(hyperion).one("cmd-config-getschema", function(event) {
if(wizardStatus) if(getStorage("wizardactive") === 'true')
requestPriorityClear(); requestPriorityClear();
setStorage("wizardactive", false);
}); });
function resetWizard()
{
$("#wizard_modal").modal('hide');
clearInterval(colorIntveralId);
requestPriorityClear();
setStorage("wizardactive", false);
$('#wizp1').toggle(true);
$('#wizp2').toggle(false);
}
//rgb byte order wizard //rgb byte order wizard
var colorIntveralId; var colorIntveralId;
var new_rgb_order; var new_rgb_order;
@ -29,11 +38,29 @@ $(document).ready( function() {
function startWizardRGB() function startWizardRGB()
{ {
//create html
$('#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_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').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('<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>')
//open modal
$("#wizard_modal").modal({ $("#wizard_modal").modal({
backdrop : "static", backdrop : "static",
keyboard: false, keyboard: false,
show: true show: true
}); });
//listen for continue
$('#btn_wiz_cont').off().on('click',function() {
beginWizardRGB();
$('#wizp1').toggle(false);
$('#wizp2').toggle(true);
});
} }
function beginWizardRGB() function beginWizardRGB()
@ -71,9 +98,7 @@ $(document).ready( function() {
rgb_order[2] = blueS; rgb_order[2] = blueS;
rgb_order = rgb_order.toString().replace(/,/g,""); rgb_order = rgb_order.toString().replace(/,/g,"");
var old_rgb_order = parsedConfJSON.device.colorOrder; if(redS == "r" && greenS == "g")
if(old_rgb_order == rgb_order)
{ {
$('#btn_wiz_save').toggle(false); $('#btn_wiz_save').toggle(false);
$('#btn_wiz_checkok').toggle(true); $('#btn_wiz_checkok').toggle(true);
@ -89,54 +114,37 @@ $(document).ready( function() {
$('#btn_wiz_save').attr('disabled',true); $('#btn_wiz_save').attr('disabled',true);
}); });
$("#wiz_switchtime_select").html('');
$("#wiz_switchtime_select").append(createSelOpt('5','5'),createSelOpt('10','10'),createSelOpt('15','15'),createSelOpt('30','30')); $("#wiz_switchtime_select").append(createSelOpt('5','5'),createSelOpt('10','10'),createSelOpt('15','15'),createSelOpt('30','30'));
$("#wiz_switchtime_select").trigger('change'); $("#wiz_switchtime_select").trigger('change');
$("#wiz_r_select").html('');
$("#wiz_r_select").append(createSelOpt("null", ""),createSelOpt('r', $.i18n('general_col_red')),createSelOpt('g', $.i18n('general_col_green')),createSelOpt('b', $.i18n('general_col_blue'))); $("#wiz_r_select").append(createSelOpt("null", ""),createSelOpt('r', $.i18n('general_col_red')),createSelOpt('g', $.i18n('general_col_green')),createSelOpt('b', $.i18n('general_col_blue')));
$("#wiz_g_select").html($("#wiz_r_select").html()); $("#wiz_g_select").html($("#wiz_r_select").html());
$("#wiz_r_select").trigger('change'); $("#wiz_r_select").trigger('change');
requestSetColor('255','0','0'); requestSetColor('255','0','0');
localStorage.wizardactive = true; setTimeout(requestSetSource, 100, 'auto');
setStorage("wizardactive", true);
$('#btn_wiz_abort').off().on('click',function() {
resetWizard()
});
$('#btn_wiz_checkok').off().on('click',function() {
showInfoDialog('success', "", $.i18n('infoDialog_wizrgb_text'));
resetWizard();
});
$('#btn_wiz_save').off().on('click',function() {
resetWizard();
var devConf = parsedConfJSON.device;
devConf.colorOrder = new_rgb_order;
requestWriteConfig(devConf);
setTimeout(initRestart, 100);
});
} }
$('#btn_wizard_byteorder').off().on('click',function() { $('#btn_wizard_byteorder').off().on('click',function() {
startWizardRGB(); startWizardRGB();
}); });
$('#btn_wiz_cont').off().on('click',function() {
beginWizardRGB();
$('#wizp1').toggle(false);
$('#wizp2').toggle(true);
});
$('#btn_wiz_abort').off().on('click',function() {
$("#wizard_modal").modal('hide');
$("#wiz_canv_color").css('background-color','rgb(255, 0, 0)');
clearInterval(colorIntveralId);
requestPriorityClear();
localStorage.wizardactive = false;
$('#wizp1').toggle(true);
$('#wizp2').toggle(false);
$('#btn_wiz_save').toggle(true);
$('#btn_wiz_checkok').toggle(false);
});
$('#btn_wiz_cancel').off().on('click',function() {
$("#wizard_modal").modal('hide');
});
$('#btn_wiz_checkok').off().on('click',function() {
showInfoDialog('success', $.i18n('infoDialog_wizrgb_title'), $.i18n('infoDialog_wizrgb_text'));
});
$('#btn_wiz_save').off().on('click',function() {
var devConf = parsedConfJSON.device;
devConf.colorOrder = new_rgb_order;
requestWriteConfig(devConf);
initRestart();
});
}); });

View File

@ -48,22 +48,12 @@
/// * '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
/// (eg '0-5, 9, 11, 12-17'). The indices are zero based. /// (eg '0-5, 9, 11, 12-17'). The indices are zero based.
/// * 'black'/'white'/'red'/'green'/'blue'/'cyan'/'magenta'/'yellow' : Array of RGB to adjust the output color /// * 'black'/'white'/'red'/'green'/'blue'/'cyan'/'magenta'/'yellow' : Array of RGB to adjust the output color
/// * 'transform_enable' : true/false enables/disables this transform section /// * 'gammaRed'/'gammaGreen'/'gammaBlue' : Gamma value for each channel
/// * 'transform_v4l_only' : if enabled and set to true, then transform is only for v4l devices /// * 'id' : The unique identifier of the channel adjustments (eg 'device_1')
/// * 'transform' /// * 'id' : The unique identifier of the channel adjustments (eg 'device_1')
/// * 'id' : The unique identifier of the color transformation (eg 'device_1') /// * 'brightnessMin' : Minimum brightness (backlight)
/// * 'leds' : The indices (or index ranges) of the leds to which this color transform applies /// * 'brightness' : Between 0.0-0.5 the brightness is linearized (white is as bright as red, is as bright as yellow).
/// (eg '0-5, 9, 11, 12-17'). The indices are zero based. /// Between 0.5-1.0 the linearization reduces slowly until it's gone with 1.0 (white is 3x brighter than red, yellow is 2x brighter than red)
/// * 'hsv' : The manipulation in the Hue-Saturation-Value color domain with the following
/// tuning parameters:
/// - 'saturationGain' The gain adjustement of the saturation
/// - 'luminanceGain' The gain adjustement of the luminance
/// - 'luminanceMinimum' The minimum luminance (backlight)
/// * 'red'/'green'/'blue' : The manipulation in the Red-Green-Blue color domain with the
/// following tuning parameters for each channel:
/// - 'threshold' The minimum required input value for the channel to be on
/// (else zero)
/// - 'gamma' The gamma-curve correction factor
"color" : "color" :
{ {
"imageToLedMappingType" : "multicolor_mean", "imageToLedMappingType" : "multicolor_mean",
@ -86,7 +76,7 @@
"gammaGreen" : 1.0, "gammaGreen" : 1.0,
"gammaBlue" : 1.0, "gammaBlue" : 1.0,
"brightnessMin" : 0.0, "brightnessMin" : 0.0,
"brightness" : 0.75 "brightness" : 0.5
} }
] ]
}, },
@ -144,7 +134,7 @@
"height" : -1, "height" : -1,
"frameDecimation" : 2, "frameDecimation" : 2,
"sizeDecimation" : 8, "sizeDecimation" : 8,
"priority" : 890, "priority" : 240,
"mode" : "2D", "mode" : "2D",
"useKodiChecker" : false, "useKodiChecker" : false,
"cropLeft" : 0, "cropLeft" : 0,
@ -167,7 +157,7 @@
/// * width : The width of the grabbed frames [pixels] /// * width : The width of the grabbed frames [pixels]
/// * height : The height of the grabbed frames [pixels] /// * height : The height of the grabbed frames [pixels]
/// * frequency_Hz : The frequency of the frame grab [Hz] /// * frequency_Hz : The frequency of the frame grab [Hz]
/// * priority : The priority of the frame-gabber (Default=890) HINT: lower value result in HIGHER priority! /// * priority : The priority of the frame-gabber (Default=250) HINT: lower value result in HIGHER priority!
/// * ATTENTION : Power-of-Two resolution is not supported and leads to unexpected behaviour! /// * ATTENTION : Power-of-Two resolution is not supported and leads to unexpected behaviour!
"framegrabber" : "framegrabber" :
{ {
@ -175,7 +165,7 @@
"enable" : true, "enable" : true,
"type" : "framebuffer", "type" : "framebuffer",
"frequency_Hz" : 10, "frequency_Hz" : 10,
"priority" : 890, "priority" : 250,
// valid for grabber: osx|dispmanx|amlogic|framebuffer // valid for grabber: osx|dispmanx|amlogic|framebuffer
"width" : 96, "width" : 96,
@ -300,19 +290,19 @@
/// The configuration of the boblight server which enables the boblight remote interface /// The configuration of the boblight server which enables the boblight remote interface
/// * enable : Enable or disable the boblight server (true/false) /// * enable : Enable or disable the boblight server (true/false)
/// * port : Port at which the boblight server is started /// * port : Port at which the boblight server is started
/// * priority : Priority of the boblight server (Default=800) HINT: lower value result in HIGHER priority! /// * priority : Priority of the boblight server (Default=200) HINT: lower value result in HIGHER priority!
"boblightServer" : "boblightServer" :
{ {
"enable" : false, "enable" : false,
"port" : 19333, "port" : 19333,
"priority" : 800 "priority" : 200
}, },
/// The configuration of the udp listener /// The configuration of the udp listener
/// * enable : Enable or disable the udp listener (true/false) /// * enable : Enable or disable the udp listener (true/false)
/// * address : The listener address, pre configured is multicast which listen also to unicast ip addresses at the same time. If emtpy, multicast is disabled and it also accepts unicast from all IPs /// * address : The listener address, pre configured is multicast which listen also to unicast ip addresses at the same time. If emtpy, multicast is disabled and it also accepts unicast from all IPs
/// * port : Port at which the udp listener starts /// * port : Port at which the udp listener starts
/// * priority : Priority of the udp lstener server (Default=800) /// * priority : Priority of the udp lstener server (Default=200)
/// * timeout : The timeout sets the timelimit for a "soft" off of the udp listener, if no packages are received (for example to switch to a gabber or InitialEffect - background-effect) /// * timeout : The timeout sets the timelimit for a "soft" off of the udp listener, if no packages are received (for example to switch to a gabber or InitialEffect - background-effect)
/// * shared : If true, the udp listener is shared across all hyperion instances (if using more than one (forwarder)) /// * shared : If true, the udp listener is shared across all hyperion instances (if using more than one (forwarder))
"udpListener" : "udpListener" :
@ -320,19 +310,19 @@
"enable" : false, "enable" : false,
"address" : "239.255.28.01", "address" : "239.255.28.01",
"port" : 2801, "port" : 2801,
"priority" : 800, "priority" : 200,
"timeout" : 10000, "timeout" : 10000,
"shared" : false "shared" : false
}, },
/// Configuration of the Hyperion webserver /// Configuration of the Hyperion webserver
/// * enable : enable ir disable the webserver (true/false) /// * enable : enable ir disable the webserver (true/false)
/// * document_root : path to hyperion webapp files /// * document_root : path to hyperion webapp files (webconfig developer only)
/// * port : the port where hyperion webapp is accasible /// * port : the port where hyperion webapp is accasible
"webConfig" : "webConfig" :
{ {
"enable" : true, "enable" : true,
"document_root" : "/usr/share/hyperion/webconfig", "document_root" : "/path/to/files",
"port" : 8099 "port" : 8099
}, },

View File

@ -67,7 +67,7 @@
"height" : -1, "height" : -1,
"frameDecimation" : 2, "frameDecimation" : 2,
"sizeDecimation" : 8, "sizeDecimation" : 8,
"priority" : 850, "priority" : 240,
"mode" : "2D", "mode" : "2D",
"useKodiChecker" : false, "useKodiChecker" : false,
"cropLeft" : 0, "cropLeft" : 0,
@ -91,13 +91,13 @@
"width" : 80, "width" : 80,
"height" : 45, "height" : 45,
"frequency_Hz" : 10, "frequency_Hz" : 10,
"priority" : 900 "priority" : 250
}, },
"blackborderdetector" : "blackborderdetector" :
{ {
"enable" : true, "enable" : true,
"threshold" : 0.0, "threshold" : 0.5,
"unknownFrameCnt" : 600, "unknownFrameCnt" : 600,
"borderFrameCnt" : 50, "borderFrameCnt" : 50,
"maxInconsistentCnt" : 10, "maxInconsistentCnt" : 10,
@ -157,7 +157,7 @@
{ {
"enable" : false, "enable" : false,
"port" : 19333, "port" : 19333,
"priority" : 800 "priority" : 200
}, },
"udpListener" : "udpListener" :
@ -165,14 +165,16 @@
"enable" : false, "enable" : false,
"address" : "239.255.28.01", "address" : "239.255.28.01",
"port" : 2801, "port" : 2801,
"priority" : 800, "priority" : 200,
"timeout" : 10000, "timeout" : 10000,
"shared" : false "shared" : false
}, },
"webConfig" : "webConfig" :
{ {
"enable" : true "enable" : true,
"document_root" : "",
"port" : 8099
}, },
"effects" : "effects" :

View File

@ -37,7 +37,7 @@ public:
}; };
/// The lowest possible priority, which is used when no priority channels are active /// The lowest possible priority, which is used when no priority channels are active
const static int LOWEST_PRIORITY = std::numeric_limits<int>::max(); const static int LOWEST_PRIORITY = std::numeric_limits<uint8_t>::max();
/// ///
/// Constructs the PriorityMuxer for the given number of leds (used to switch to black when /// Constructs the PriorityMuxer for the given number of leds (used to switch to black when

View File

@ -381,7 +381,7 @@ int EffectEngine::runEffectScript(const QString &script, const QString &name, co
_activeEffects.push_back(effect); _activeEffects.push_back(effect);
// start the effect // start the effect
_hyperion->registerPriority("EFFECT: "+name.toStdString(), priority); _hyperion->registerPriority(name.toStdString(), priority);
effect->start(); effect->start();
return 0; return 0;
@ -426,5 +426,5 @@ void EffectEngine::effectFinished(Effect *effect)
// cleanup the effect // cleanup the effect
effect->deleteLater(); effect->deleteLater();
_hyperion->unRegisterPriority("EFFECT: " + effect->getName().toStdString()); _hyperion->unRegisterPriority(effect->getName().toStdString());
} }

View File

@ -8,7 +8,6 @@
"type" : "object", "type" : "object",
"title" : "edt_conf_gen_heading_title", "title" : "edt_conf_gen_heading_title",
"required" : true, "required" : true,
"defaultProperties": ["name"],
"properties" : "properties" :
{ {
"name" : "name" :
@ -47,6 +46,9 @@
"type" : "string", "type" : "string",
"enum" : ["silent", "warn", "verbose", "debug"], "enum" : ["silent", "warn", "verbose", "debug"],
"title" : "edt_conf_log_level_title", "title" : "edt_conf_log_level_title",
"options" : {
"enum_titles" : ["edt_conf_enum_logsilent", "edt_conf_enum_logwarn", "edt_conf_enum_logverbose", "edt_conf_enum_logdebug"]
},
"default" : "warn" "default" : "warn"
} }
}, },
@ -62,8 +64,7 @@
{ {
"type" : "type" :
{ {
"type" : "string", "type" : "string"
"required" : true
}, },
"ledCount" : "ledCount" :
{ {
@ -100,13 +101,12 @@
"type":"object", "type":"object",
"title" : "edt_conf_color_heading_title", "title" : "edt_conf_color_heading_title",
"required" : true, "required" : true,
"defaultProperties": ["imageToLedMappingType","channelAdjustment_enable","channelAdjustment"],
"properties": "properties":
{ {
"imageToLedMappingType" : "imageToLedMappingType" :
{ {
"type" : "string", "type" : "string",
"title" : "edt_conf_color_imageToLedMappingType", "title" : "edt_conf_color_imageToLedMappingType_title",
"enum" : ["multicolor_mean", "unicolor_mean"], "enum" : ["multicolor_mean", "unicolor_mean"],
"default" : "multicolor_mean", "default" : "multicolor_mean",
"options" : { "options" : {
@ -117,14 +117,14 @@
"channelAdjustment_enable" : "channelAdjustment_enable" :
{ {
"type" : "boolean", "type" : "boolean",
"title" : "edt_conf_color_channelAdjustment_enable", "title" : "edt_conf_color_channelAdjustment_enable_title",
"default" : true, "default" : true,
"propertyOrder" : 2 "propertyOrder" : 2
}, },
"channelAdjustment_v4l_only" : "channelAdjustment_v4l_only" :
{ {
"type" : "boolean", "type" : "boolean",
"title" : "edt_conf_color_channelAdjustment_v4l_only", "title" : "edt_conf_color_channelAdjustment_v4l_only_title",
"default" : false, "default" : false,
"propertyOrder" : 3 "propertyOrder" : 3
}, },
@ -143,7 +143,7 @@
"id" : "id" :
{ {
"type" : "string", "type" : "string",
"title" : "edt_conf_color_id", "title" : "edt_conf_color_id_title",
"required" : true, "required" : true,
"default" : "A userdefined name", "default" : "A userdefined name",
"propertyOrder" : 1 "propertyOrder" : 1
@ -151,7 +151,7 @@
"leds" : "leds" :
{ {
"type" : "string", "type" : "string",
"title" : "edt_conf_color_leds", "title" : "edt_conf_color_leds_title",
"required" : true, "required" : true,
"default" : "*", "default" : "*",
"propertyOrder" : 2 "propertyOrder" : 2
@ -159,7 +159,7 @@
"black" : "black" :
{ {
"type" : "array", "type" : "array",
"title" : "edt_conf_color_black", "title" : "edt_conf_color_black_title",
"format" : "colorpicker", "format" : "colorpicker",
"required" : true, "required" : true,
"default": [0,0,0], "default": [0,0,0],
@ -175,7 +175,7 @@
"white" : "white" :
{ {
"type" : "array", "type" : "array",
"title" : "edt_conf_color_white", "title" : "edt_conf_color_white_title",
"format" : "colorpicker", "format" : "colorpicker",
"required" : true, "required" : true,
"default": [255,255,255], "default": [255,255,255],
@ -191,7 +191,7 @@
"red" : "red" :
{ {
"type" : "array", "type" : "array",
"title" : "edt_conf_color_red", "title" : "edt_conf_color_red_title",
"format" : "colorpicker", "format" : "colorpicker",
"required" : true, "required" : true,
"default": [255,0,0], "default": [255,0,0],
@ -207,7 +207,7 @@
"green" : "green" :
{ {
"type" : "array", "type" : "array",
"title" : "edt_conf_color_green", "title" : "edt_conf_color_green_title",
"format" : "colorpicker", "format" : "colorpicker",
"required" : true, "required" : true,
"default": [0,255,0], "default": [0,255,0],
@ -223,7 +223,7 @@
"blue" : "blue" :
{ {
"type" : "array", "type" : "array",
"title" : "edt_conf_color_blue", "title" : "edt_conf_color_blue_title",
"format" : "colorpicker", "format" : "colorpicker",
"required" : true, "required" : true,
"default": [0,0,255], "default": [0,0,255],
@ -239,7 +239,7 @@
"cyan" : "cyan" :
{ {
"type" : "array", "type" : "array",
"title" : "edt_conf_color_cyan", "title" : "edt_conf_color_cyan_title",
"format" : "colorpicker", "format" : "colorpicker",
"required" : true, "required" : true,
"default": [0,255,255], "default": [0,255,255],
@ -255,7 +255,7 @@
"magenta" : "magenta" :
{ {
"type" : "array", "type" : "array",
"title" : "edt_conf_color_magenta", "title" : "edt_conf_color_magenta_title",
"format" : "colorpicker", "format" : "colorpicker",
"required" : true, "required" : true,
"default": [255,0,255], "default": [255,0,255],
@ -271,7 +271,7 @@
"yellow" : "yellow" :
{ {
"type" : "array", "type" : "array",
"title" : "edt_conf_color_yellow", "title" : "edt_conf_color_yellow_title",
"format" : "colorpicker", "format" : "colorpicker",
"required" : true, "required" : true,
"default": [255,255,0], "default": [255,255,0],
@ -287,7 +287,7 @@
"brightnessMin" : "brightnessMin" :
{ {
"type" : "number", "type" : "number",
"title" : "edt_conf_color_brightness_min", "title" : "edt_conf_color_brightness_min_title",
"required" : true, "required" : true,
"minimum" : 0.0, "minimum" : 0.0,
"maximum": 1.0, "maximum": 1.0,
@ -298,7 +298,7 @@
"brightness" : "brightness" :
{ {
"type" : "number", "type" : "number",
"title" : "edt_conf_color_brightness", "title" : "edt_conf_color_brightness_title",
"required" : true, "required" : true,
"minimum" : 0.0, "minimum" : 0.0,
"maximum": 1.0, "maximum": 1.0,
@ -309,7 +309,7 @@
"gammaRed" : "gammaRed" :
{ {
"type" : "number", "type" : "number",
"title" : "edt_conf_color_gamma_red", "title" : "edt_conf_color_gamma_red_title",
"required" : true, "required" : true,
"minimum" : 0.0, "minimum" : 0.0,
"maximum": 100.0, "maximum": 100.0,
@ -320,7 +320,7 @@
"gammaGreen" : "gammaGreen" :
{ {
"type" : "number", "type" : "number",
"title" : "edt_conf_color_gamma_green", "title" : "edt_conf_color_gamma_green_title",
"required" : true, "required" : true,
"minimum" : 0.0, "minimum" : 0.0,
"maximum": 100.0, "maximum": 100.0,
@ -331,7 +331,7 @@
"gammaBlue" : "gammaBlue" :
{ {
"type" : "number", "type" : "number",
"title" : "edt_conf_color_gamma_blue", "title" : "edt_conf_color_gamma_blue_title",
"required" : true, "required" : true,
"minimum" : 0.0, "minimum" : 0.0,
"maximum": 100.0, "maximum": 100.0,
@ -493,9 +493,9 @@
{ {
"type" : "integer", "type" : "integer",
"minimum" : 100, "minimum" : 100,
"maximum" : 2000000000, "maximum" : 253,
"title" : "edt_conf_general_priority_title", "title" : "edt_conf_general_priority_title",
"default" : 900, "default" : 240,
"propertyOrder" : 9 "propertyOrder" : 9
}, },
"mode" : "mode" :
@ -679,8 +679,8 @@
"type" : "integer", "type" : "integer",
"title" : "edt_conf_general_priority_title", "title" : "edt_conf_general_priority_title",
"minimum" : 100, "minimum" : 100,
"maximum" : 2000000000, "maximum" : 253,
"default" : 890 "default" : 250
}, },
"cropLeft" : "cropLeft" :
{ {
@ -815,6 +815,9 @@
"title": "edt_conf_bb_mode_title", "title": "edt_conf_bb_mode_title",
"enum" : ["default", "classic", "osd"], "enum" : ["default", "classic", "osd"],
"default" : "default", "default" : "default",
"options" : {
"enum_titles" : ["edt_conf_enum_bbdefault", "edt_conf_enum_bbclassic", "edt_conf_enum_bbosd"]
},
"propertyOrder" : 7 "propertyOrder" : 7
} }
}, },
@ -1109,8 +1112,8 @@
"type" : "integer", "type" : "integer",
"title" : "edt_conf_general_priority_title", "title" : "edt_conf_general_priority_title",
"minimum" : 100, "minimum" : 100,
"maximum" : 2000000000, "maximum" : 253,
"default" : 800, "default" : 200,
"propertyOrder" : 3 "propertyOrder" : 3
} }
}, },
@ -1150,8 +1153,8 @@
"type" : "integer", "type" : "integer",
"title" : "edt_conf_general_priority_title", "title" : "edt_conf_general_priority_title",
"minimum" : 100, "minimum" : 100,
"maximum" : 2000000000, "maximum" : 253,
"default" : 800, "default" : 200,
"propertyOrder" : 4 "propertyOrder" : 4
}, },
"timeout" : "timeout" :

View File

@ -610,6 +610,48 @@ void JsonClientConnection::handleServerInfoCommand(const QJsonObject&, const QSt
} }
} }
if(priorityInfo.componentId == 9)
{
QJsonObject LEDcolor;
// add RGB Value to Array
QJsonArray RGBValue;
RGBValue.append(priorityInfo.ledColors.begin()->red);
RGBValue.append(priorityInfo.ledColors.begin()->green);
RGBValue.append(priorityInfo.ledColors.begin()->blue);
LEDcolor.insert("RGB", RGBValue);
uint16_t Hue;
float Saturation, Luminace;
// add HSL Value to Array
QJsonArray HSLValue;
ColorSys::rgb2hsl(priorityInfo.ledColors.begin()->red,
priorityInfo.ledColors.begin()->green,
priorityInfo.ledColors.begin()->blue,
Hue, Saturation, Luminace);
HSLValue.append(Hue);
HSLValue.append(Saturation);
HSLValue.append(Luminace);
LEDcolor.insert("HSL", HSLValue);
// add HEX Value to Array ["HEX Value"]
QJsonArray HEXValue;
std::stringstream hex;
hex << "0x"
<< std::uppercase << std::setw(2) << std::setfill('0')
<< std::hex << unsigned(priorityInfo.ledColors.begin()->red)
<< std::uppercase << std::setw(2) << std::setfill('0')
<< std::hex << unsigned(priorityInfo.ledColors.begin()->green)
<< std::uppercase << std::setw(2) << std::setfill('0')
<< std::hex << unsigned(priorityInfo.ledColors.begin()->blue);
HEXValue.append(QString::fromStdString(hex.str()));
LEDcolor.insert("HEX", HEXValue);
item["value"] = LEDcolor;
}
// priorities[priorities.size()] = item; // priorities[priorities.size()] = item;
priorities.append(item); priorities.append(item);
} }
@ -680,87 +722,6 @@ void JsonClientConnection::handleServerInfoCommand(const QJsonObject&, const QSt
info["effects"] = effects; info["effects"] = effects;
// collect active effect info
QJsonArray activeEffects;
const std::list<ActiveEffectDefinition> & activeEffectsDefinitions = _hyperion->getActiveEffects();
for (const ActiveEffectDefinition & activeEffectDefinition : activeEffectsDefinitions)
{
if (activeEffectDefinition.priority != PriorityMuxer::LOWEST_PRIORITY -1)
{
QJsonObject activeEffect;
activeEffect["script"] = activeEffectDefinition.script;
activeEffect["name"] = activeEffectDefinition.name;
activeEffect["priority"] = activeEffectDefinition.priority;
activeEffect["timeout"] = activeEffectDefinition.timeout;
activeEffect["args"] = activeEffectDefinition.args;
activeEffects.append(activeEffect);
}
}
info["activeEffects"] = activeEffects;
// collect active static led color
QJsonArray activeLedColors;
const Hyperion::InputInfo & priorityInfo = _hyperion->getPriorityInfo(_hyperion->getCurrentPriority());
if (priorityInfo.priority != std::numeric_limits<int>::max())
{
QJsonObject LEDcolor;
// check if all LEDs has the same Color
if (std::all_of(priorityInfo.ledColors.begin(), priorityInfo.ledColors.end(), [&](ColorRgb color)
{
return ((color.red == priorityInfo.ledColors.begin()->red) &&
(color.green == priorityInfo.ledColors.begin()->green) &&
(color.blue == priorityInfo.ledColors.begin()->blue));
} ))
{
// check if LED Color not Black (0,0,0)
if ((priorityInfo.ledColors.begin()->red +
priorityInfo.ledColors.begin()->green +
priorityInfo.ledColors.begin()->blue != 0))
{
// add RGB Value to Array
QJsonArray RGBValue;
RGBValue.append(priorityInfo.ledColors.begin()->red);
RGBValue.append(priorityInfo.ledColors.begin()->green);
RGBValue.append(priorityInfo.ledColors.begin()->blue);
LEDcolor.insert("RGB Value", RGBValue);
uint16_t Hue;
float Saturation, Luminace;
// add HSL Value to Array
QJsonArray HSLValue;
ColorSys::rgb2hsl(priorityInfo.ledColors.begin()->red,
priorityInfo.ledColors.begin()->green,
priorityInfo.ledColors.begin()->blue,
Hue, Saturation, Luminace);
HSLValue.append(Hue);
HSLValue.append(Saturation);
HSLValue.append(Luminace);
LEDcolor.insert("HSL Value", HSLValue);
// add HEX Value to Array ["HEX Value"]
QJsonArray HEXValue;
std::stringstream hex;
hex << "0x"
<< std::uppercase << std::setw(2) << std::setfill('0')
<< std::hex << unsigned(priorityInfo.ledColors.begin()->red)
<< std::uppercase << std::setw(2) << std::setfill('0')
<< std::hex << unsigned(priorityInfo.ledColors.begin()->green)
<< std::uppercase << std::setw(2) << std::setfill('0')
<< std::hex << unsigned(priorityInfo.ledColors.begin()->blue);
HEXValue.append(QString::fromStdString(hex.str()));
LEDcolor.insert("HEX Value", HEXValue);
activeLedColors.append(LEDcolor);
}
}
}
info["activeLedColor"] = activeLedColors;
// get available led devices // get available led devices
QJsonObject ledDevices; QJsonObject ledDevices;
ledDevices["active"] = QString::fromStdString(LedDevice::activeDevice()); ledDevices["active"] = QString::fromStdString(LedDevice::activeDevice());

View File

@ -12,6 +12,8 @@
}, },
"priority": { "priority": {
"type": "integer", "type": "integer",
"minimum" : 1,
"maximum" : 253,
"required": true "required": true
} }
}, },

View File

@ -12,6 +12,8 @@
}, },
"priority": { "priority": {
"type": "integer", "type": "integer",
"minimum" : 1,
"maximum" : 253,
"required": true "required": true
}, },
"duration": { "duration": {

View File

@ -12,6 +12,8 @@
}, },
"priority": { "priority": {
"type": "integer", "type": "integer",
"minimum" : 1,
"maximum" : 253,
"required": true "required": true
}, },
"duration": { "duration": {

View File

@ -12,6 +12,8 @@
}, },
"priority": { "priority": {
"type": "integer", "type": "integer",
"minimum" : 1,
"maximum" : 253,
"required": true "required": true
}, },
"duration": { "duration": {

View File

@ -11,7 +11,9 @@
"type" : "integer" "type" : "integer"
}, },
"priority": { "priority": {
"type": "integer" "type": "integer",
"minimum" : 0,
"maximum" : 255
}, },
"auto": { "auto": {
"type": "boolean" "type": "boolean"

View File

@ -5,7 +5,7 @@
"output": { "output": {
"type": "string", "type": "string",
"title":"edt_dev_spec_outputPath_title", "title":"edt_dev_spec_outputPath_title",
"default":"/dev/ttyACM0", "default":"/dev/ttyUSB0",
"propertyOrder" : 1 "propertyOrder" : 1
}, },
"rate": { "rate": {

View File

@ -9,7 +9,7 @@
"propertyOrder" : 1 "propertyOrder" : 1
}, },
"port" : { "port" : {
"type": "integer", "type": "number",
"title":"edt_dev_spec_port_title", "title":"edt_dev_spec_port_title",
"default": 7890, "default": 7890,
"propertyOrder" : 2 "propertyOrder" : 2

View File

@ -25,6 +25,9 @@
"title":"edt_dev_spec_whiteLedAlgor_title", "title":"edt_dev_spec_whiteLedAlgor_title",
"enum" : ["subtract_minimum","sub_min_warm_adjust","white_off"], "enum" : ["subtract_minimum","sub_min_warm_adjust","white_off"],
"default": "subtract_minimum", "default": "subtract_minimum",
"options" : {
"enum_titles" : ["edt_dev_enum_subtract_minimum", "edt_dev_enum_sub_min_warm_adjust", "edt_dev_enum_white_off"]
},
"propertyOrder" : 4 "propertyOrder" : 4
} }
}, },

View File

@ -31,6 +31,9 @@
"title":"edt_dev_spec_whiteLedAlgor_title", "title":"edt_dev_spec_whiteLedAlgor_title",
"enum" : ["subtract_minimum","sub_min_warm_adjust","white_off"], "enum" : ["subtract_minimum","sub_min_warm_adjust","white_off"],
"default": "subtract_minimum", "default": "subtract_minimum",
"options" : {
"enum_titles" : ["edt_dev_enum_subtract_minimum", "edt_dev_enum_sub_min_warm_adjust", "edt_dev_enum_white_off"]
},
"propertyOrder" : 4 "propertyOrder" : 4
} }
}, },

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 == "defaultProperties" || attribute == "propertyOrder" || attribute == "append" || attribute == "step" || attribute == "access" || attribute == "options")
; // nothing to do. ; // nothing to do.
else else
{ {

View File

@ -39,7 +39,7 @@ int main(int argc, char ** argv)
IntOption & argHeight = parser.add<IntOption> (0x0, "height", "Height of the captured image [default: %1]", "160", 160, 4096); IntOption & argHeight = parser.add<IntOption> (0x0, "height", "Height of the captured image [default: %1]", "160", 160, 4096);
BooleanOption & argScreenshot = parser.add<BooleanOption>(0x0, "screenshot", "Take a single screenshot, save it to file and quit"); BooleanOption & argScreenshot = parser.add<BooleanOption>(0x0, "screenshot", "Take a single screenshot, save it to file and quit");
Option & argAddress = parser.add<Option> ('a', "address", "Set the address of the hyperion server [default: %1]", "127.0.0.1:19445"); Option & argAddress = parser.add<Option> ('a', "address", "Set the address of the hyperion server [default: %1]", "127.0.0.1:19445");
IntOption & argPriority = parser.add<IntOption> ('p', "priority", "Use the provided priority channel (the lower the number, the higher the priority) [default: %1]", "800"); IntOption & argPriority = parser.add<IntOption> ('p', "priority", "Use the provided priority channel (suggested 100-199) [default: %1]", "150");
BooleanOption & argSkipReply = parser.add<BooleanOption>(0x0, "skip-reply", "Do not receive and check reply messages from Hyperion"); BooleanOption & argSkipReply = parser.add<BooleanOption>(0x0, "skip-reply", "Do not receive and check reply messages from Hyperion");
BooleanOption & argHelp = parser.add<BooleanOption>('h', "help", "Show this help message and exit"); BooleanOption & argHelp = parser.add<BooleanOption>('h', "help", "Show this help message and exit");

View File

@ -39,7 +39,7 @@ int main(int argc, char ** argv)
BooleanOption & argScreenshot = parser.add<BooleanOption>(0x0, "screenshot", "Take a single screenshot, save it to file and quit"); BooleanOption & argScreenshot = parser.add<BooleanOption>(0x0, "screenshot", "Take a single screenshot, save it to file and quit");
Option & argAddress = parser.add<Option> ('a', "address", "Set the address of the hyperion server [default: %1]", "127.0.0.1:19445"); Option & argAddress = parser.add<Option> ('a', "address", "Set the address of the hyperion server [default: %1]", "127.0.0.1:19445");
IntOption & argPriority = parser.add<IntOption> ('p', "priority", "Use the provided priority channel (the lower the number, the higher the priority) [default: %1]", "800"); IntOption & argPriority = parser.add<IntOption> ('p', "priority", "Use the provided priority channel (suggested 100-199) [default: %1]", "150");
BooleanOption & argSkipReply = parser.add<BooleanOption>(0x0, "skip-reply", "Do not receive and check reply messages from Hyperion"); BooleanOption & argSkipReply = parser.add<BooleanOption>(0x0, "skip-reply", "Do not receive and check reply messages from Hyperion");
BooleanOption & argHelp = parser.add<BooleanOption>('h', "help", "Show this help message and exit"); BooleanOption & argHelp = parser.add<BooleanOption>('h', "help", "Show this help message and exit");

View File

@ -33,7 +33,7 @@ int main(int argc, char ** argv)
IntOption & argHeight = parser.add<IntOption> (0x0, "height", "Height of the captured image [default: %1]", "160", 160, 4096); IntOption & argHeight = parser.add<IntOption> (0x0, "height", "Height of the captured image [default: %1]", "160", 160, 4096);
BooleanOption & argScreenshot = parser.add<BooleanOption>(0x0, "screenshot", "Take a single screenshot, save it to file and quit"); BooleanOption & argScreenshot = parser.add<BooleanOption>(0x0, "screenshot", "Take a single screenshot, save it to file and quit");
Option & argAddress = parser.add<Option> ('a', "address", "Set the address of the hyperion server [default: %1]", "127.0.0.1:19445"); Option & argAddress = parser.add<Option> ('a', "address", "Set the address of the hyperion server [default: %1]", "127.0.0.1:19445");
IntOption & argPriority = parser.add<IntOption> ('p', "priority", "Use the provided priority channel (the lower the number, the higher the priority) [default: %1]", "800"); IntOption & argPriority = parser.add<IntOption> ('p', "priority", "Use the provided priority channel (suggested 100-199) [default: %1]", "150");
BooleanOption & argSkipReply = parser.add<BooleanOption>(0x0, "skip-reply", "Do not receive and check reply messages from Hyperion"); BooleanOption & argSkipReply = parser.add<BooleanOption>(0x0, "skip-reply", "Do not receive and check reply messages from Hyperion");
BooleanOption & argHelp = parser.add<BooleanOption>('h', "help", "Show this help message and exit"); BooleanOption & argHelp = parser.add<BooleanOption>('h', "help", "Show this help message and exit");

View File

@ -33,7 +33,7 @@ int main(int argc, char ** argv)
IntOption & argHeight = parser.add<IntOption> (0x0, "height", "Height of the captured image [default: %1]", "160", 160, 4096); IntOption & argHeight = parser.add<IntOption> (0x0, "height", "Height of the captured image [default: %1]", "160", 160, 4096);
BooleanOption & argScreenshot = parser.add<BooleanOption>(0x0, "screenshot", "Take a single screenshot, save it to file and quit"); BooleanOption & argScreenshot = parser.add<BooleanOption>(0x0, "screenshot", "Take a single screenshot, save it to file and quit");
Option & argAddress = parser.add<Option> ('a', "address", "Set the address of the hyperion server [default: %1]", "127.0.0.1:19445"); Option & argAddress = parser.add<Option> ('a', "address", "Set the address of the hyperion server [default: %1]", "127.0.0.1:19445");
IntOption & argPriority = parser.add<IntOption> ('p', "priority", "Use the provided priority channel (the lower the number, the higher the priority) [default: %1]", "800"); IntOption & argPriority = parser.add<IntOption> ('p', "priority", "Use the provided priority channel (suggested 100-199) [default: %1]", "150");
BooleanOption & argSkipReply = parser.add<BooleanOption>(0x0, "skip-reply", "Do not receive and check reply messages from Hyperion"); BooleanOption & argSkipReply = parser.add<BooleanOption>(0x0, "skip-reply", "Do not receive and check reply messages from Hyperion");
BooleanOption & argHelp = parser.add<BooleanOption>('h', "help", "Show this help message and exit"); BooleanOption & argHelp = parser.add<BooleanOption>('h', "help", "Show this help message and exit");

View File

@ -57,7 +57,7 @@ int main(int argc, char * argv[])
Parser parser("Application to send a command to hyperion using the Json interface"); Parser parser("Application to send a command to hyperion using the Json interface");
Option & argAddress = parser.add<Option> ('a', "address" , "Set the address of the hyperion server [default: %1]", "localhost:19444"); Option & argAddress = parser.add<Option> ('a', "address" , "Set the address of the hyperion server [default: %1]", "localhost:19444");
IntOption & argPriority = parser.add<IntOption> ('p', "priority" , "Use to the provided priority channel (the lower the number, the higher the priority) [default: %1]", "100"); IntOption & argPriority = parser.add<IntOption> ('p', "priority" , "Use to the provided priority channel (suggested 2-99) [default: %1]", "50");
IntOption & argDuration = parser.add<IntOption> ('d', "duration" , "Specify how long the leds should be switched on in milliseconds [default: infinity]"); IntOption & argDuration = parser.add<IntOption> ('d', "duration" , "Specify how long the leds should be switched on in milliseconds [default: infinity]");
ColorsOption & argColor = parser.add<ColorsOption> ('c', "color" , "Set all leds to a constant color (either RRGGBB hex getColors or a color name. The color may be repeated multiple time like: RRGGBBRRGGBB)"); ColorsOption & argColor = parser.add<ColorsOption> ('c', "color" , "Set all leds to a constant color (either RRGGBB hex getColors or a color name. The color may be repeated multiple time like: RRGGBBRRGGBB)");
ImageOption & argImage = parser.add<ImageOption> ('i', "image" , "Set the leds to the colors according to the given image file"); ImageOption & argImage = parser.add<ImageOption> ('i', "image" , "Set the leds to the colors according to the given image file");

View File

@ -85,7 +85,7 @@ int main(int argc, char** argv)
BooleanOption & arg3DSBS = parser.add<BooleanOption>(0x0, "3DSBS", "Interpret the incoming video stream as 3D side-by-side"); BooleanOption & arg3DSBS = parser.add<BooleanOption>(0x0, "3DSBS", "Interpret the incoming video stream as 3D side-by-side");
BooleanOption & arg3DTAB = parser.add<BooleanOption>(0x0, "3DTAB", "Interpret the incoming video stream as 3D top-and-bottom"); BooleanOption & arg3DTAB = parser.add<BooleanOption>(0x0, "3DTAB", "Interpret the incoming video stream as 3D top-and-bottom");
Option & argAddress = parser.add<Option> ('a', "address", "Set the address of the hyperion server [default: %1]", "127.0.0.1:19445"); Option & argAddress = parser.add<Option> ('a', "address", "Set the address of the hyperion server [default: %1]", "127.0.0.1:19445");
IntOption & argPriority = parser.add<IntOption> ('p', "priority", "Use the provided priority channel (the lower the number, the higher the priority) [default: %1]", "800"); IntOption & argPriority = parser.add<IntOption> ('p', "priority", "Use the provided priority channel (suggested 100-199) [default: %1]", "150");
BooleanOption & argSkipReply = parser.add<BooleanOption>(0x0, "skip-reply", "Do not receive and check reply messages from Hyperion"); BooleanOption & argSkipReply = parser.add<BooleanOption>(0x0, "skip-reply", "Do not receive and check reply messages from Hyperion");
BooleanOption & argHelp = parser.add<BooleanOption>('h', "help", "Show this help message and exit"); BooleanOption & argHelp = parser.add<BooleanOption>('h', "help", "Show this help message and exit");

View File

@ -43,7 +43,7 @@ int main(int argc, char ** argv)
IntOption & argSizeDecimation = parser.add<IntOption> ('s', "size-decimator", "Decimation factor for the output size [default=%1]", "8"); IntOption & argSizeDecimation = parser.add<IntOption> ('s', "size-decimator", "Decimation factor for the output size [default=%1]", "8");
BooleanOption & argScreenshot = parser.add<BooleanOption>(0x0, "screenshot", "Take a single screenshot, save it to file and quit"); BooleanOption & argScreenshot = parser.add<BooleanOption>(0x0, "screenshot", "Take a single screenshot, save it to file and quit");
Option & argAddress = parser.add<Option> ('a', "address", "Set the address of the hyperion server [default: %1]", "127.0.0.1:19445"); Option & argAddress = parser.add<Option> ('a', "address", "Set the address of the hyperion server [default: %1]", "127.0.0.1:19445");
IntOption & argPriority = parser.add<IntOption> ('p', "priority", "Use the provided priority channel (the lower the number, the higher the priority) [default: %1]", "800"); IntOption & argPriority = parser.add<IntOption> ('p', "priority", "Use the provided priority channel (suggested 100-199) [default: %1]", "150");
BooleanOption & argSkipReply = parser.add<BooleanOption>(0x0, "skip-reply", "Do not receive and check reply messages from Hyperion"); BooleanOption & argSkipReply = parser.add<BooleanOption>(0x0, "skip-reply", "Do not receive and check reply messages from Hyperion");
BooleanOption & argHelp = parser.add<BooleanOption>('h', "help", "Show this help message and exit"); BooleanOption & argHelp = parser.add<BooleanOption>('h', "help", "Show this help message and exit");