From 34a7769b685c5021874bace0577a9868bdcc69c5 Mon Sep 17 00:00:00 2001 From: Christian Mouttet Date: Sun, 1 Aug 2021 17:28:43 +0200 Subject: [PATCH 1/8] store highest channel number used. Fixes #1280 --- javascript/new-src/src/factories/ola.js | 17 +++++++++++++++++ olad/www/new/css/style.min.css | 2 +- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/javascript/new-src/src/factories/ola.js b/javascript/new-src/src/factories/ola.js index c3249bffd4..91a70a31a9 100644 --- a/javascript/new-src/src/factories/ola.js +++ b/javascript/new-src/src/factories/ola.js @@ -22,6 +22,19 @@ ola.factory('$ola', ['$http', '$window', 'OLA', function($http, $window, OLA) { 'use strict'; + var highestChannelNumberUsed = 0; + + var updatehighestChannelNumberUsed = function(dmx) { + for (var channel = dmx.length; channel > highestChannelNumberUsed; + channel--) { + + if ((dmx[channel - 1] > OLA.MIN_CHANNEL_VALUE) && + (highestChannelNumberUsed < channel)) { + highestChannelNumberUsed = channel; + } + } + }; + // TODO(Dave_o): once olad supports json post data postEncode // can go away and the header in post requests too. var postEncode = function(data) { @@ -63,6 +76,9 @@ ola.factory('$ola', ['$http', '$window', 'OLA', strip = false; } } + while (integers.length < highestChannelNumberUsed) { + integers.push(OLA.MIN_CHANNEL_VALUE); + } return integers.join(','); }; return { @@ -118,6 +134,7 @@ ola.factory('$ola', ['$http', '$window', 'OLA', } }) .then(function(response) { + updatehighestChannelNumberUsed(response.data.dmx); return response.data; }); }, diff --git a/olad/www/new/css/style.min.css b/olad/www/new/css/style.min.css index 9f1eebd4ef..bb5be12735 100644 --- a/olad/www/new/css/style.min.css +++ b/olad/www/new/css/style.min.css @@ -1 +1 @@ -.fader-group,.faders,.keypad{text-align:center}.keypad{width:300px;right:0;left:0;margin-left:auto;margin-right:auto;margin-top:5px}.backspace.btn{width:50px;margin:2px}.keypad-keys{margin-right:7%;margin-left:7%;margin-bottom:7%;width:86%}.keypad-field.static-fake{display:inline-block;vertical-align:middle;padding-top:5%;width:190px;height:50px;margin:2px}.fader-group,.value-span{margin:1px;display:inline-block}.keypad-keys .btn{width:100%}.btn-keypad{color:#333;background-color:#fff;border-color:#ccc;height:50px}.fader-fader{writing-mode:vertical-rl;-webkit-appearance:slider-vertical}.fader-group{border:1px solid #67a7e3;border-radius:4px}.off,.on,button.col-xs-3,button.col-xs-3:active,button.col-xs-3:focus{color:#fff;background-color:#67a7e3;border-color:transparent}.left-col,.value-span{border-bottom-left-radius:4px}.right-col,.value-span{border-bottom-right-radius:4px;border-top-right-radius:4px}.faders{padding:1px}.col-xs-2.ng-binding{text-align:center;color:#fff;background-color:#67a7e3;height:26px;line-height:2;font-weight:700}.left-col{border-top-left-radius:4px}.navigate{padding-left:0;padding-right:0;padding-bottom:15px;height:41px}.row,.status{padding:5px;text-align:center}.navigate>.col-xs-2,.navigate>.col-xs-3{height:100%;outline:0!important}.value-div{display:inline-block}.value-span{font-size:11px;border-bottom:1px solid #67a7e3;border-right:1px solid #67a7e3;width:20px;text-align:center}.index,.value{text-align:center;width:100%;height:50%}.channel{width:30px;font-size:10px;text-align:center;display:inline-block;border:1px solid #337ab7;border-radius:4px}.status{border:1px solid #000}.status-light{width:20px}.status,.status-light{display:inline-block;border-radius:20px}th.top-table,tr.special-mouse>td{text-align:center;padding:8px}.plugin-table{text-align:center;width:100%;margin-bottom:10px}.round-corners{border:1px solid #000;border-radius:10px}.top-table{border-bottom:solid #000 1px}tr.striped-table:nth-of-type(even){background-color:#F8F8F8;border-top:solid #d3d3d3 1px;border-bottom:solid #d3d3d3 1px}.special-mouse{cursor:pointer}.navbar-info{margin-top:8px;margin-bottom:8px;font-size:12px;text-align:center}.navbar-desktop{float:right!important}@media (min-width:768px){.navbar-mobile{display:none}.number{width:50px!important}}@media (max-width:768px){.navbar-desktop{display:none}.save-settings{width:100%}}div.checkbox-tr{text-align:center;vertical-align:middle}table.info>tbody>tr>td{border-bottom:solid grey 1px;padding-left:5px;padding-right:5px}.settings-table,table.table>tbody>tr>td.left-table{text-align:left}.settings-table>table{width:100%}input.priority{width:70px}select.priority{width:90px;display:inline}.caption-overview{width:49%;display:inline-block}.button-caption{text-align:right}.btn-grey{background-color:#d3d3d3;color:#333;border-color:#BABABA}td.align{text-align:left}.plugin-icon{color:#898989}div#header-universe{padding-bottom:10px}div#header-universe>h4{display:inline;padding-right:10px}div#header-universe>div{color:#d3d3d3;display:inline}.static-fake{height:34px;padding:6px 12px;background-color:#eee;border:1px solid #ccc;border-radius:4px;box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:3px}.number{cursor:text!important}.input-group,.save-settings,.settings{margin-top:5px}input.form-control[type=checkbox]{display:none}input.form-control[type=checkbox]+label span.glyphicon:before{width:20px;height:20px;border-radius:4px;border:1px solid #ccc;content:"\e014";color:#d9534f;background-color:#fff;cursor:pointer}input.form-control[type=checkbox]:checked+label span.glyphicon:before{content:"\e013";color:#5cb85c}input.form-control[type=checkbox][disabled]+label span.glyphicon:before{color:#a9a9a9}label.fake-check{margin-top:5px;margin-bottom:0}.nav-tabs{overflow-x:auto;overflow-y:hidden;display:-webkit-box;display:-moz-box}.nav-tabs>li{float:none}.nav-tabs::-webkit-scrollbar{-webkit-appearance:none}.nav-tabs::-webkit-scrollbar:vertical{width:12px}.nav-tabs::-webkit-scrollbar:horizontal{height:12px}.nav-tabs::-webkit-scrollbar-thumb{background-color:rgba(0,0,0,.5);border-radius:10px;border:2px solid #fff}.nav-tabs::-webkit-scrollbar-track{border-radius:10px;background-color:#fff} \ No newline at end of file +.input-group,.keypad,.save-settings,.settings,label.fake-check{margin-top:5px}.keypad{width:300px;text-align:center;right:0;left:0;margin-left:auto;margin-right:auto}.backspace.btn{width:50px;margin:2px}.keypad-keys{margin-right:7%;margin-left:7%;margin-bottom:7%;width:86%}.keypad-field.static-fake{display:inline-block;vertical-align:middle;padding-top:5%;width:190px;height:50px;margin:2px}.fader-group,.value-span{margin:1px;display:inline-block;text-align:center}.keypad-keys .btn{width:100%}.btn-keypad{color:#333;background-color:#fff;border-color:#ccc;height:50px}.fader-fader{writing-mode:vertical-rl;-webkit-appearance:slider-vertical}.fader-group{border:1px solid #67a7e3;border-radius:4px}.off,.on,button.col-xs-3,button.col-xs-3:active,button.col-xs-3:focus{color:#fff;background-color:#67a7e3;border-color:transparent}.left-col,.value-span{border-bottom-left-radius:4px}.right-col,.value-span{border-bottom-right-radius:4px;border-top-right-radius:4px}.faders{text-align:center;padding:1px}.col-xs-2.ng-binding{text-align:center;color:#fff;background-color:#67a7e3;height:26px;line-height:2;font-weight:700}.left-col{border-top-left-radius:4px}.navigate{padding-left:0;padding-right:0;padding-bottom:15px;height:41px}.navigate>.col-xs-2,.navigate>.col-xs-3{height:100%;outline:0!important}.value-div{display:inline-block}.value-span{font-size:11px;border-bottom:1px solid #67a7e3;border-right:1px solid #67a7e3;width:20px}.row{padding:5px;text-align:center}.index,.value{text-align:center;width:100%;height:50%}.channel{width:30px;font-size:10px;text-align:center;display:inline-block;border:1px solid #337ab7;border-radius:4px}.status{padding:5px;text-align:center;border:1px solid #000}.status-light{width:20px}.status,.status-light{display:inline-block;border-radius:20px}th.top-table,tr.special-mouse>td{text-align:center;padding:8px}.plugin-table{text-align:center;width:100%;margin-bottom:10px}.round-corners{border:1px solid #000;border-radius:10px}.top-table{border-bottom:solid #000 1px}tr.striped-table:nth-of-type(even){background-color:#F8F8F8;border-top:solid #d3d3d3 1px;border-bottom:solid #d3d3d3 1px}.special-mouse{cursor:pointer}.navbar-info{margin-top:8px;margin-bottom:8px;font-size:12px;text-align:center}.navbar-desktop{float:right!important}@media (min-width:768px){.navbar-mobile{display:none}.number{width:50px!important}}@media (max-width:768px){.navbar-desktop{display:none}.save-settings{width:100%}}div.checkbox-tr{text-align:center;vertical-align:middle}table.info>tbody>tr>td{border-bottom:solid grey 1px;padding-left:5px;padding-right:5px}.settings-table,table.table>tbody>tr>td.left-table{text-align:left}.settings-table>table{width:100%}input.priority{width:70px}select.priority{width:90px;display:inline}.caption-overview{width:49%;display:inline-block}.button-caption{text-align:right}.btn-grey{background-color:#d3d3d3;color:#333;border-color:#BABABA}td.align{text-align:left}.plugin-icon{color:#898989}div#header-universe{padding-bottom:10px}div#header-universe>h4{display:inline;padding-right:10px}div#header-universe>div{color:#d3d3d3;display:inline}.static-fake{height:34px;padding:6px 12px;background-color:#eee;border:1px solid #ccc;border-radius:4px;box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:3px}.number{cursor:text!important}input.form-control[type=checkbox]{display:none}input.form-control[type=checkbox]+label span.glyphicon:before{width:20px;height:20px;border-radius:4px;border:1px solid #ccc;content:"\e014";color:#d9534f;background-color:#fff;cursor:pointer}input.form-control[type=checkbox]:checked+label span.glyphicon:before{content:"\e013";color:#5cb85c}input.form-control[type=checkbox][disabled]+label span.glyphicon:before{color:#a9a9a9}label.fake-check{margin-bottom:0}.nav-tabs{overflow-x:auto;overflow-y:hidden;display:-webkit-box;display:-moz-box}.nav-tabs>li{float:none}.nav-tabs::-webkit-scrollbar{-webkit-appearance:none}.nav-tabs::-webkit-scrollbar:vertical{width:12px}.nav-tabs::-webkit-scrollbar:horizontal{height:12px}.nav-tabs::-webkit-scrollbar-thumb{background-color:rgba(0,0,0,.5);border-radius:10px;border:2px solid #fff}.nav-tabs::-webkit-scrollbar-track{border-radius:10px;background-color:#fff} \ No newline at end of file From 6d7a9aff2f7864d82ddf572c367baf9f29c170db Mon Sep 17 00:00:00 2001 From: Christian Mouttet Date: Sun, 1 Aug 2021 17:29:45 +0200 Subject: [PATCH 2/8] add results from 'grunt build' --- olad/www/new/js/app.min.js | 2 +- olad/www/new/js/app.min.js.map | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/olad/www/new/js/app.min.js b/olad/www/new/js/app.min.js index f78397414c..f5246cf2fc 100644 --- a/olad/www/new/js/app.min.js +++ b/olad/www/new/js/app.min.js @@ -1,2 +1,2 @@ -var ola=angular.module("olaApp",["ngRoute"]);ola.config(["$routeProvider",function(a){"use strict";a.when("/",{templateUrl:"/new/views/overview.html",controller:"overviewCtrl"}).when("/universes/",{templateUrl:"/new/views/universes.html",controller:"overviewCtrl"}).when("/universe/add",{templateUrl:"/new/views/universe-add.html",controller:"addUniverseCtrl"}).when("/universe/:id",{templateUrl:"/new/views/universe-overview.html",controller:"universeCtrl"}).when("/universe/:id/keypad",{templateUrl:"/new/views/universe-keypad.html",controller:"keypadUniverseCtrl"}).when("/universe/:id/faders",{templateUrl:"/new/views/universe-faders.html",controller:"faderUniverseCtrl"}).when("/universe/:id/rdm",{templateUrl:"/new/views/universe-rdm.html",controller:"rdmUniverseCtrl"}).when("/universe/:id/patch",{templateUrl:"/new/views/universe-patch.html",controller:"patchUniverseCtrl"}).when("/universe/:id/settings",{templateUrl:"/new/views/universe-settings.html",controller:"settingUniverseCtrl"}).when("/plugins",{templateUrl:"/new/views/plugins.html",controller:"pluginsCtrl"}).when("/plugin/:id",{templateUrl:"/new/views/plugin-info.html",controller:"pluginInfoCtrl"}).otherwise({redirectTo:"/"})}]),ola.controller("menuCtrl",["$scope","$ola","$interval","$location",function(a,b,c,d){"use strict";a.Items={},a.Info={},a.goTo=function(a){d.path(a)};var e=function(){b.get.ItemList().then(function(b){a.Items=b}),b.get.ServerInfo().then(function(b){a.Info=b,document.title=b.instance_name+" - "+b.ip})};e(),c(e,1e4)}]),ola.controller("patchUniverseCtrl",["$scope","$ola","$routeParams",function(a,b,c){"use strict";a.Universe=c.id}]),ola.controller("rdmUniverseCtrl",["$scope","$ola","$routeParams",function(a,b,c){"use strict";a.Universe=c.id}]),ola.controller("universeCtrl",["$scope","$ola","$routeParams","$interval","OLA",function(a,b,c,d,e){"use strict";a.dmx=[],a.Universe=c.id;var f=d(function(){b.get.Dmx(a.Universe).then(function(b){for(var c=0;c140?"black":"white"}}]),ola.controller("faderUniverseCtrl",["$scope","$ola","$routeParams","$window","$interval","OLA",function(a,b,c,d,e,f){"use strict";a.get=[],a.list=[],a.last=0,a.offset=0,a.send=!1,a.OLA=f,a.Universe=c.id;for(var g=0;g140?"black":"white"},a.ceil=function(a){return d.Math.ceil(a)},a.change=function(){b.post.Dmx(a.Universe,a.get)},a.page=function(b){if(1===b){var c=d.Math.ceil(f.MAX_CHANNEL_NUMBER/a.limit);a.offset+1!==c&&a.offset++}else b===f.MIN_CHANNEL_VALUE&&a.offset!==f.MIN_CHANNEL_VALUE&&a.offset--},a.getWidth=function(){var b=d.Math.floor(.99*d.innerWidth/a.limit),c=b-52/a.limit;return c+"px"},a.getLimit=function(){var a=.99*d.innerWidth/66;return d.Math.floor(a)},a.limit=a.getLimit(),a.width={width:a.getWidth()},d.$(d).resize(function(){a.$apply(function(){a.limit=a.getLimit(),a.width={width:a.getWidth()}})}),a.$on("$destroy",function(){e.cancel(h)})}]),ola.controller("keypadUniverseCtrl",["$scope","$ola","$routeParams","OLA",function(a,b,c,d){"use strict";a.Universe=c.id;var e;e=/^(?:([0-9]{1,3})(?:\s(THRU)\s(?:([0-9]{1,3}))?)?(?:\s(@)\s(?:([0-9]{1,3}|FULL))?)?)/;var f={channelValue:function(a){return d.MIN_CHANNEL_VALUE<=a&&a<=d.MAX_CHANNEL_VALUE},channelNumber:function(a){return d.MIN_CHANNEL_NUMBER<=a&&a<=d.MAX_CHANNEL_NUMBER},regexGroups:function(a){if(void 0!==a[1]){var b=this.channelNumber(parseInt(a[1],10));if(!b)return!1}if(void 0!==a[3]){var c=this.channelNumber(parseInt(a[3],10));if(!c)return!1}if(void 0!==a[5]&&"FULL"!==a[5]){var d=this.channelValue(parseInt(a[5],10));if(!d)return!1}return!0}};a.field="",a.input=function(b){var c;c="backspace"===b?a.field.substr(0,a.field.length-1):a.field+b;var d=e.exec(c);null===d?a.field="":f.regexGroups(d)&&(a.field=d[0])},a.submit=function(){var c=[],g=a.field,h=e.exec(g);if(null!==h&&f.regexGroups(h)){var i=parseInt(h[1],10),j=h[3]?parseInt(h[3],10):parseInt(h[1],10),k="FULL"===h[5]?d.MAX_CHANNEL_VALUE:parseInt(h[5],10);return j>=i&&f.channelValue(k)?(b.get.Dmx(a.Universe).then(function(e){for(var f=0;f=g;g++)c[g-1]=k;b.post.Dmx(a.Universe,c),a.field=""}),!0):!1}return!1}}]),ola.controller("pluginsCtrl",["$scope","$ola","$location",function(a,b,c){"use strict";a.Items={},a.active=[],a.enabled=[],a.getInfo=function(){b.get.ItemList().then(function(b){a.Items=b})},a.getInfo(),a.Reload=function(){b.action.Reload(),a.getInfo()},a.go=function(a){c.path("/plugin/"+a)},a.changeStatus=function(c,d){b.post.PluginState(c,d),a.getInfo()},a.getStyle=function(a){return a?{"background-color":"green"}:{"background-color":"red"}}}]),ola.controller("addUniverseCtrl",["$scope","$ola","$window","$location",function(a,b,c,d){"use strict";a.Ports={},a.addPorts=[],a.Universes=[],a.Class="",a.Data={id:0,name:"",add_ports:""},b.get.ItemList().then(function(b){for(var c in b.universes)b.universes.hasOwnProperty(c)&&(a.Data.id===parseInt(b.universes[c].id,10)&&a.Data.id++,a.Universes.push(parseInt(b.universes[c].id,10)))}),a.Submit=function(){"number"==typeof a.Data.id&&""!==a.Data.add_ports&&-1===a.Universes.indexOf(a.Data.id)?((void 0===a.Data.name||""===a.Data.name)&&(a.Data.name="Universe "+a.Data.id),b.post.AddUniverse(a.Data),d.path("/universe/"+a.Data.id)):-1!==a.Universes.indexOf(a.Data.id)?b.error.modal("Universe ID already exists."):(void 0===a.Data.add_ports||""===a.Data.add_ports)&&b.error.modal("There are no ports selected for the universe. This is required.")},b.get.Ports().then(function(b){a.Ports=b}),a.getDirection=function(a){return a?"Output":"Input"},a.updateId=function(){-1!==a.Universes.indexOf(a.Data.id)?a.Class="has-error":a.Class=""},a.TogglePort=function(){a.Data.add_ports=c.$.grep(a.addPorts,Boolean).join(",")}}]),ola.controller("pluginInfoCtrl",["$scope","$routeParams","$ola",function(a,b,c){"use strict";c.get.InfoPlugin(b.id).then(function(b){a.active=b.active,a.enabled=b.enabled,a.name=b.name;var c=document.getElementById("description");c.textContent=b.description,c.innerHTML=c.innerHTML.replace(/\\n/g,"
")}),a.stateColor=function(a){return a?{"background-color":"green"}:{"background-color":"red"}}}]),ola.controller("settingUniverseCtrl",["$scope","$ola","$routeParams",function(a,b,c){"use strict";a.loadData=function(){a.Data={old:{},model:{},Remove:[],Add:[]},a.Data.old.id=a.Data.model.id=c.id,b.get.PortsId(c.id).then(function(b){a.DeactivePorts=b}),b.get.UniverseInfo(c.id).then(function(b){a.Data.old.name=a.Data.model.name=b.name,a.Data.old.merge_mode=b.merge_mode,a.Data.model.merge_mode=b.merge_mode,a.ActivePorts=b.output_ports.concat(b.input_ports),a.Data.old.ActivePorts=b.output_ports.concat(b.input_ports);for(var c=0;cc.MAX_CHANNEL_VALUE&&(a=c.MAX_CHANNEL_VALUE),a},f=function(a){for(var b=!0,d=[],f=c.MAX_CHANNEL_NUMBER;f>=c.MIN_CHANNEL_NUMBER;f--){var g=e(a[f-1]);(g>c.MIN_CHANNEL_VALUE||!b||f===c.MIN_CHANNEL_NUMBER)&&(d[f-1]=g,b=!1)}return d.join(",")};return{get:{ItemList:function(){return a.get("/json/universe_plugin_list").then(function(a){return a.data})},ServerInfo:function(){return a.get("/json/server_stats").then(function(a){return a.data})},Ports:function(){return a.get("/json/get_ports").then(function(a){return a.data})},PortsId:function(b){return a({method:"GET",url:"/json/get_ports",params:{id:b}}).then(function(a){return a.data})},InfoPlugin:function(b){return a({method:"GET",url:"/json/plugin_info",params:{id:b}}).then(function(a){return a.data})},Dmx:function(b){return a({method:"GET",url:"/get_dmx",params:{u:b}}).then(function(a){return a.data})},UniverseInfo:function(b){return a({method:"GET",url:"/json/universe_info",params:{id:b}}).then(function(a){return a.data})}},post:{ModifyUniverse:function(b){return a({method:"POST",url:"/modify_universe",data:d(b),headers:{"Content-Type":"application/x-www-form-urlencoded"}}).then(function(a){return a.data})},AddUniverse:function(b){return a({method:"POST",url:"/new_universe",data:d(b),headers:{"Content-Type":"application/x-www-form-urlencoded"}}).then(function(a){return a.data})},Dmx:function(b,c){var e={u:b,d:f(c)};return a({method:"POST",url:"/set_dmx",data:d(e),headers:{"Content-Type":"application/x-www-form-urlencoded"}}).then(function(a){return a.data})},PluginState:function(b,c){var e={state:c,plugin_id:b};return a({method:"POST",url:"/set_plugin_state",data:d(e),headers:{"Content-Type":"application/x-www-form-urlencoded"}}).then(function(a){return a.data})}},action:{Shutdown:function(){return a.get("/quit").then(function(a){return a.data})},Reload:function(){return a.get("/reload").then(function(a){return a.data})},ReloadPids:function(){return a.get("/reload_pids").then(function(a){return a.data})}},rdm:{GetSectionInfo:function(b,c,d){return a({method:"GET",url:"/json/rdm/section_info",params:{id:b,uid:c,section:d}}).then(function(a){return a.data})},SetSection:function(b,c,d,e,f){return a({method:"GET",url:"/json/rdm/set_section_info",params:{id:b,uid:c,section:d,hint:e,"int":f}}).then(function(a){return a.data})},GetSupportedPids:function(b,c){return a({method:"GET",url:"/json/rdm/supported_pids",params:{id:b,uid:c}}).then(function(a){return a.data})},GetSupportedSections:function(b,c){return a({method:"GET",url:"/json/rdm/supported_sections",params:{id:b,uid:c}}).then(function(a){return a.data})},UidIdentifyDevice:function(b,c){return a({method:"GET",url:"/json/rdm/uid_identify_device",params:{id:b,uid:c}}).then(function(a){return a.data})},UidInfo:function(b,c){return a({method:"GET",url:"/json/rdm/uid_info",params:{id:b,uid:c}}).then(function(a){return a.data})},UidPersonalities:function(b,c){return a({method:"GET",url:"/json/rdm/uid_personalities",params:{id:b,uid:c}}).then(function(a){return a.data})},Uids:function(b){return a({method:"GET",url:"/json/rdm/uids",params:{id:b}}).then(function(a){return a.data})},RunDiscovery:function(b,c){return a({method:"GET",url:"/rdm/run_discovery",params:{id:b,incremental:c}}).then(function(a){return a.data})}},error:{modal:function(a,b){"undefined"!=typeof a?$("#errorModalBody").text(a):$("#errorModalBody").text("There has been an error"),"undefined"!=typeof b?$("#errorModalLabel").text(b):$("#errorModalLabel").text("Error"),$("#errorModal").modal("show")}}}}]),ola.filter("startFrom",function(){"use strict";return function(a,b){return b=parseInt(b,10),a.slice(b)}}); +var ola=angular.module("olaApp",["ngRoute"]);ola.config(["$routeProvider",function(a){"use strict";a.when("/",{templateUrl:"/new/views/overview.html",controller:"overviewCtrl"}).when("/universes/",{templateUrl:"/new/views/universes.html",controller:"overviewCtrl"}).when("/universe/add",{templateUrl:"/new/views/universe-add.html",controller:"addUniverseCtrl"}).when("/universe/:id",{templateUrl:"/new/views/universe-overview.html",controller:"universeCtrl"}).when("/universe/:id/keypad",{templateUrl:"/new/views/universe-keypad.html",controller:"keypadUniverseCtrl"}).when("/universe/:id/faders",{templateUrl:"/new/views/universe-faders.html",controller:"faderUniverseCtrl"}).when("/universe/:id/rdm",{templateUrl:"/new/views/universe-rdm.html",controller:"rdmUniverseCtrl"}).when("/universe/:id/patch",{templateUrl:"/new/views/universe-patch.html",controller:"patchUniverseCtrl"}).when("/universe/:id/settings",{templateUrl:"/new/views/universe-settings.html",controller:"settingUniverseCtrl"}).when("/plugins",{templateUrl:"/new/views/plugins.html",controller:"pluginsCtrl"}).when("/plugin/:id",{templateUrl:"/new/views/plugin-info.html",controller:"pluginInfoCtrl"}).otherwise({redirectTo:"/"})}]),ola.controller("menuCtrl",["$scope","$ola","$interval","$location",function(a,b,c,d){"use strict";a.Items={},a.Info={},a.goTo=function(a){d.path(a)};var e=function(){b.get.ItemList().then(function(b){a.Items=b}),b.get.ServerInfo().then(function(b){a.Info=b,document.title=b.instance_name+" - "+b.ip})};e(),c(e,1e4)}]),ola.controller("patchUniverseCtrl",["$scope","$ola","$routeParams",function(a,b,c){"use strict";a.Universe=c.id}]),ola.controller("rdmUniverseCtrl",["$scope","$ola","$routeParams",function(a,b,c){"use strict";a.Universe=c.id}]),ola.controller("universeCtrl",["$scope","$ola","$routeParams","$interval","OLA",function(a,b,c,d,e){"use strict";a.dmx=[],a.Universe=c.id;var f=d(function(){b.get.Dmx(a.Universe).then(function(b){for(var c=0;c140?"black":"white"}}]),ola.controller("faderUniverseCtrl",["$scope","$ola","$routeParams","$window","$interval","OLA",function(a,b,c,d,e,f){"use strict";a.get=[],a.list=[],a.last=0,a.offset=0,a.send=!1,a.OLA=f,a.Universe=c.id;for(var g=0;g140?"black":"white"},a.ceil=function(a){return d.Math.ceil(a)},a.change=function(){b.post.Dmx(a.Universe,a.get)},a.page=function(b){if(1===b){var c=d.Math.ceil(f.MAX_CHANNEL_NUMBER/a.limit);a.offset+1!==c&&a.offset++}else b===f.MIN_CHANNEL_VALUE&&a.offset!==f.MIN_CHANNEL_VALUE&&a.offset--},a.getWidth=function(){return d.Math.floor(.99*d.innerWidth/a.limit)-52/a.limit+"px"},a.getLimit=function(){var a=.99*d.innerWidth/66;return d.Math.floor(a)},a.limit=a.getLimit(),a.width={width:a.getWidth()},d.$(d).resize(function(){a.$apply(function(){a.limit=a.getLimit(),a.width={width:a.getWidth()}})}),a.$on("$destroy",function(){e.cancel(h)})}]),ola.controller("keypadUniverseCtrl",["$scope","$ola","$routeParams","OLA",function(a,b,c,d){"use strict";a.Universe=c.id;var e;e=/^(?:([0-9]{1,3})(?:\s(THRU)\s(?:([0-9]{1,3}))?)?(?:\s(@)\s(?:([0-9]{1,3}|FULL))?)?)/;var f={channelValue:function(a){return d.MIN_CHANNEL_VALUE<=a&&a<=d.MAX_CHANNEL_VALUE},channelNumber:function(a){return d.MIN_CHANNEL_NUMBER<=a&&a<=d.MAX_CHANNEL_NUMBER},regexGroups:function(a){if(void 0!==a[1]){if(!this.channelNumber(parseInt(a[1],10)))return!1}if(void 0!==a[3]){if(!this.channelNumber(parseInt(a[3],10)))return!1}if(void 0!==a[5]&&"FULL"!==a[5]){if(!this.channelValue(parseInt(a[5],10)))return!1}return!0}};a.field="",a.input=function(b){var c;c="backspace"===b?a.field.substr(0,a.field.length-1):a.field+b;var d=e.exec(c);null===d?a.field="":f.regexGroups(d)&&(a.field=d[0])},a.submit=function(){var c=[],g=a.field,h=e.exec(g);if(null!==h&&f.regexGroups(h)){var i=parseInt(h[1],10),j=h[3]?parseInt(h[3],10):parseInt(h[1],10),k="FULL"===h[5]?d.MAX_CHANNEL_VALUE:parseInt(h[5],10);return!!(i<=j&&f.channelValue(k))&&(b.get.Dmx(a.Universe).then(function(e){for(var f=0;f")}),a.stateColor=function(a){return a?{"background-color":"green"}:{"background-color":"red"}}}]),ola.controller("settingUniverseCtrl",["$scope","$ola","$routeParams",function(a,b,c){"use strict";a.loadData=function(){a.Data={old:{},model:{},Remove:[],Add:[]},a.Data.old.id=a.Data.model.id=c.id,b.get.PortsId(c.id).then(function(b){a.DeactivePorts=b}),b.get.UniverseInfo(c.id).then(function(b){a.Data.old.name=a.Data.model.name=b.name,a.Data.old.merge_mode=b.merge_mode,a.Data.model.merge_mode=b.merge_mode,a.ActivePorts=b.output_ports.concat(b.input_ports),a.Data.old.ActivePorts=b.output_ports.concat(b.input_ports);for(var c=0;cd;b--)a[b-1]>c.MIN_CHANNEL_VALUE&&dc.MAX_CHANNEL_VALUE&&(a=c.MAX_CHANNEL_VALUE),a},h=function(a){for(var b=!0,e=[],f=c.MAX_CHANNEL_NUMBER;f>=c.MIN_CHANNEL_NUMBER;f--){var h=g(a[f-1]);(h>c.MIN_CHANNEL_VALUE||!b||f===c.MIN_CHANNEL_NUMBER)&&(e[f-1]=h,b=!1)}for(;e.length Date: Wed, 4 Aug 2021 21:25:11 +0200 Subject: [PATCH 3/8] add documentation --- AUTHORS | 1 + README.developer | 3 +++ 2 files changed, 4 insertions(+) diff --git a/AUTHORS b/AUTHORS index fb7e730b46..02adcf2fdd 100644 --- a/AUTHORS +++ b/AUTHORS @@ -29,3 +29,4 @@ Contributors: Stefan Krüger, added APA102 support to the SPI Plugin Tobi Schäfer, for the MacPort files Stefan S, improved timing with monotonic clock + Christian Mouttet, fix in new web-ui diff --git a/README.developer b/README.developer index 786174ae3f..102ebc68a0 100644 --- a/README.developer +++ b/README.developer @@ -200,6 +200,9 @@ Javascript Javascript is used for the olad web UI. Instructions for building the javascript can be found in javascript/README. +The sources for the new UI is located in javascript/new-src. The built artifact +is copied to olad/www/new/js/app.min.js. + Closure Compiler ---------------- From da368792495b6afb62ab3ab62abf4a9fec51a708 Mon Sep 17 00:00:00 2001 From: Christian Mouttet Date: Wed, 4 Aug 2021 22:49:44 +0200 Subject: [PATCH 4/8] add resetHighestChannelNumberUsed on universe change, simplify logic in dmxConvert --- .../new-src/src/controllers/universe.js | 1 + javascript/new-src/src/factories/ola.js | 29 +++++++++++-------- 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/javascript/new-src/src/controllers/universe.js b/javascript/new-src/src/controllers/universe.js index c935470f22..86855b453a 100644 --- a/javascript/new-src/src/controllers/universe.js +++ b/javascript/new-src/src/controllers/universe.js @@ -24,6 +24,7 @@ ola.controller('universeCtrl', 'use strict'; $scope.dmx = []; $scope.Universe = $routeParams.id; + $ola.resetHighestChannelNumberUsed(); var interval = $interval(function() { $ola.get.Dmx($scope.Universe).then(function(data) { diff --git a/javascript/new-src/src/factories/ola.js b/javascript/new-src/src/factories/ola.js index 91a70a31a9..058562b90f 100644 --- a/javascript/new-src/src/factories/ola.js +++ b/javascript/new-src/src/factories/ola.js @@ -24,7 +24,7 @@ ola.factory('$ola', ['$http', '$window', 'OLA', 'use strict'; var highestChannelNumberUsed = 0; - var updatehighestChannelNumberUsed = function(dmx) { + var updateHighestChannelNumberUsed = function(dmx) { for (var channel = dmx.length; channel > highestChannelNumberUsed; channel--) { @@ -65,23 +65,28 @@ ola.factory('$ola', ['$http', '$window', 'OLA', return i; }; var dmxConvert = function(dmx) { - var strip = true; var integers = []; - for (var i = OLA.MAX_CHANNEL_NUMBER; i >= OLA.MIN_CHANNEL_NUMBER; i--) { - var value = channelValueCheck(dmx[i - 1]); + for (var channel = OLA.MAX_CHANNEL_NUMBER; + channel >= OLA.MIN_CHANNEL_NUMBER; + channel--) { + + var value = channelValueCheck(dmx[channel - 1]); if (value > OLA.MIN_CHANNEL_VALUE || - !strip || - i === OLA.MIN_CHANNEL_NUMBER) { - integers[i - 1] = value; - strip = false; + channel <= highestChannelNumberUsed) { + + integers[channel - 1] = value; + + if (highestChannelNumberUsed < channel) { + highestChannelNumberUsed = channel; + } } } - while (integers.length < highestChannelNumberUsed) { - integers.push(OLA.MIN_CHANNEL_VALUE); - } return integers.join(','); }; return { + resetHighestChannelNumberUsed: function() { + highestChannelNumberUsed = 0; + }, get: { ItemList: function() { return $http.get('/json/universe_plugin_list') @@ -134,7 +139,7 @@ ola.factory('$ola', ['$http', '$window', 'OLA', } }) .then(function(response) { - updatehighestChannelNumberUsed(response.data.dmx); + updateHighestChannelNumberUsed(response.data.dmx); return response.data; }); }, From 8f443cbf702a28503fd1b09d01aa62fe2fc0fa72 Mon Sep 17 00:00:00 2001 From: Christian Mouttet Date: Wed, 4 Aug 2021 22:50:09 +0200 Subject: [PATCH 5/8] add results from 'grunt build' --- olad/www/new/js/app.min.js | 2 +- olad/www/new/js/app.min.js.map | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/olad/www/new/js/app.min.js b/olad/www/new/js/app.min.js index f5246cf2fc..bda0144edc 100644 --- a/olad/www/new/js/app.min.js +++ b/olad/www/new/js/app.min.js @@ -1,2 +1,2 @@ -var ola=angular.module("olaApp",["ngRoute"]);ola.config(["$routeProvider",function(a){"use strict";a.when("/",{templateUrl:"/new/views/overview.html",controller:"overviewCtrl"}).when("/universes/",{templateUrl:"/new/views/universes.html",controller:"overviewCtrl"}).when("/universe/add",{templateUrl:"/new/views/universe-add.html",controller:"addUniverseCtrl"}).when("/universe/:id",{templateUrl:"/new/views/universe-overview.html",controller:"universeCtrl"}).when("/universe/:id/keypad",{templateUrl:"/new/views/universe-keypad.html",controller:"keypadUniverseCtrl"}).when("/universe/:id/faders",{templateUrl:"/new/views/universe-faders.html",controller:"faderUniverseCtrl"}).when("/universe/:id/rdm",{templateUrl:"/new/views/universe-rdm.html",controller:"rdmUniverseCtrl"}).when("/universe/:id/patch",{templateUrl:"/new/views/universe-patch.html",controller:"patchUniverseCtrl"}).when("/universe/:id/settings",{templateUrl:"/new/views/universe-settings.html",controller:"settingUniverseCtrl"}).when("/plugins",{templateUrl:"/new/views/plugins.html",controller:"pluginsCtrl"}).when("/plugin/:id",{templateUrl:"/new/views/plugin-info.html",controller:"pluginInfoCtrl"}).otherwise({redirectTo:"/"})}]),ola.controller("menuCtrl",["$scope","$ola","$interval","$location",function(a,b,c,d){"use strict";a.Items={},a.Info={},a.goTo=function(a){d.path(a)};var e=function(){b.get.ItemList().then(function(b){a.Items=b}),b.get.ServerInfo().then(function(b){a.Info=b,document.title=b.instance_name+" - "+b.ip})};e(),c(e,1e4)}]),ola.controller("patchUniverseCtrl",["$scope","$ola","$routeParams",function(a,b,c){"use strict";a.Universe=c.id}]),ola.controller("rdmUniverseCtrl",["$scope","$ola","$routeParams",function(a,b,c){"use strict";a.Universe=c.id}]),ola.controller("universeCtrl",["$scope","$ola","$routeParams","$interval","OLA",function(a,b,c,d,e){"use strict";a.dmx=[],a.Universe=c.id;var f=d(function(){b.get.Dmx(a.Universe).then(function(b){for(var c=0;c140?"black":"white"}}]),ola.controller("faderUniverseCtrl",["$scope","$ola","$routeParams","$window","$interval","OLA",function(a,b,c,d,e,f){"use strict";a.get=[],a.list=[],a.last=0,a.offset=0,a.send=!1,a.OLA=f,a.Universe=c.id;for(var g=0;g140?"black":"white"},a.ceil=function(a){return d.Math.ceil(a)},a.change=function(){b.post.Dmx(a.Universe,a.get)},a.page=function(b){if(1===b){var c=d.Math.ceil(f.MAX_CHANNEL_NUMBER/a.limit);a.offset+1!==c&&a.offset++}else b===f.MIN_CHANNEL_VALUE&&a.offset!==f.MIN_CHANNEL_VALUE&&a.offset--},a.getWidth=function(){return d.Math.floor(.99*d.innerWidth/a.limit)-52/a.limit+"px"},a.getLimit=function(){var a=.99*d.innerWidth/66;return d.Math.floor(a)},a.limit=a.getLimit(),a.width={width:a.getWidth()},d.$(d).resize(function(){a.$apply(function(){a.limit=a.getLimit(),a.width={width:a.getWidth()}})}),a.$on("$destroy",function(){e.cancel(h)})}]),ola.controller("keypadUniverseCtrl",["$scope","$ola","$routeParams","OLA",function(a,b,c,d){"use strict";a.Universe=c.id;var e;e=/^(?:([0-9]{1,3})(?:\s(THRU)\s(?:([0-9]{1,3}))?)?(?:\s(@)\s(?:([0-9]{1,3}|FULL))?)?)/;var f={channelValue:function(a){return d.MIN_CHANNEL_VALUE<=a&&a<=d.MAX_CHANNEL_VALUE},channelNumber:function(a){return d.MIN_CHANNEL_NUMBER<=a&&a<=d.MAX_CHANNEL_NUMBER},regexGroups:function(a){if(void 0!==a[1]){if(!this.channelNumber(parseInt(a[1],10)))return!1}if(void 0!==a[3]){if(!this.channelNumber(parseInt(a[3],10)))return!1}if(void 0!==a[5]&&"FULL"!==a[5]){if(!this.channelValue(parseInt(a[5],10)))return!1}return!0}};a.field="",a.input=function(b){var c;c="backspace"===b?a.field.substr(0,a.field.length-1):a.field+b;var d=e.exec(c);null===d?a.field="":f.regexGroups(d)&&(a.field=d[0])},a.submit=function(){var c=[],g=a.field,h=e.exec(g);if(null!==h&&f.regexGroups(h)){var i=parseInt(h[1],10),j=h[3]?parseInt(h[3],10):parseInt(h[1],10),k="FULL"===h[5]?d.MAX_CHANNEL_VALUE:parseInt(h[5],10);return!!(i<=j&&f.channelValue(k))&&(b.get.Dmx(a.Universe).then(function(e){for(var f=0;f")}),a.stateColor=function(a){return a?{"background-color":"green"}:{"background-color":"red"}}}]),ola.controller("settingUniverseCtrl",["$scope","$ola","$routeParams",function(a,b,c){"use strict";a.loadData=function(){a.Data={old:{},model:{},Remove:[],Add:[]},a.Data.old.id=a.Data.model.id=c.id,b.get.PortsId(c.id).then(function(b){a.DeactivePorts=b}),b.get.UniverseInfo(c.id).then(function(b){a.Data.old.name=a.Data.model.name=b.name,a.Data.old.merge_mode=b.merge_mode,a.Data.model.merge_mode=b.merge_mode,a.ActivePorts=b.output_ports.concat(b.input_ports),a.Data.old.ActivePorts=b.output_ports.concat(b.input_ports);for(var c=0;cd;b--)a[b-1]>c.MIN_CHANNEL_VALUE&&dc.MAX_CHANNEL_VALUE&&(a=c.MAX_CHANNEL_VALUE),a},h=function(a){for(var b=!0,e=[],f=c.MAX_CHANNEL_NUMBER;f>=c.MIN_CHANNEL_NUMBER;f--){var h=g(a[f-1]);(h>c.MIN_CHANNEL_VALUE||!b||f===c.MIN_CHANNEL_NUMBER)&&(e[f-1]=h,b=!1)}for(;e.length140?"black":"white"}}]),ola.controller("faderUniverseCtrl",["$scope","$ola","$routeParams","$window","$interval","OLA",function(a,b,c,d,e,f){"use strict";a.get=[],a.list=[],a.last=0,a.offset=0,a.send=!1,a.OLA=f,a.Universe=c.id;for(var g=0;g140?"black":"white"},a.ceil=function(a){return d.Math.ceil(a)},a.change=function(){b.post.Dmx(a.Universe,a.get)},a.page=function(b){if(1===b){var c=d.Math.ceil(f.MAX_CHANNEL_NUMBER/a.limit);a.offset+1!==c&&a.offset++}else b===f.MIN_CHANNEL_VALUE&&a.offset!==f.MIN_CHANNEL_VALUE&&a.offset--},a.getWidth=function(){return d.Math.floor(.99*d.innerWidth/a.limit)-52/a.limit+"px"},a.getLimit=function(){var a=.99*d.innerWidth/66;return d.Math.floor(a)},a.limit=a.getLimit(),a.width={width:a.getWidth()},d.$(d).resize(function(){a.$apply(function(){a.limit=a.getLimit(),a.width={width:a.getWidth()}})}),a.$on("$destroy",function(){e.cancel(h)})}]),ola.controller("keypadUniverseCtrl",["$scope","$ola","$routeParams","OLA",function(a,b,c,d){"use strict";a.Universe=c.id;var e;e=/^(?:([0-9]{1,3})(?:\s(THRU)\s(?:([0-9]{1,3}))?)?(?:\s(@)\s(?:([0-9]{1,3}|FULL))?)?)/;var f={channelValue:function(a){return d.MIN_CHANNEL_VALUE<=a&&a<=d.MAX_CHANNEL_VALUE},channelNumber:function(a){return d.MIN_CHANNEL_NUMBER<=a&&a<=d.MAX_CHANNEL_NUMBER},regexGroups:function(a){if(void 0!==a[1]){if(!this.channelNumber(parseInt(a[1],10)))return!1}if(void 0!==a[3]){if(!this.channelNumber(parseInt(a[3],10)))return!1}if(void 0!==a[5]&&"FULL"!==a[5]){if(!this.channelValue(parseInt(a[5],10)))return!1}return!0}};a.field="",a.input=function(b){var c;c="backspace"===b?a.field.substr(0,a.field.length-1):a.field+b;var d=e.exec(c);null===d?a.field="":f.regexGroups(d)&&(a.field=d[0])},a.submit=function(){var c=[],g=a.field,h=e.exec(g);if(null!==h&&f.regexGroups(h)){var i=parseInt(h[1],10),j=h[3]?parseInt(h[3],10):parseInt(h[1],10),k="FULL"===h[5]?d.MAX_CHANNEL_VALUE:parseInt(h[5],10);return!!(i<=j&&f.channelValue(k))&&(b.get.Dmx(a.Universe).then(function(e){for(var f=0;f")}),a.stateColor=function(a){return a?{"background-color":"green"}:{"background-color":"red"}}}]),ola.controller("settingUniverseCtrl",["$scope","$ola","$routeParams",function(a,b,c){"use strict";a.loadData=function(){a.Data={old:{},model:{},Remove:[],Add:[]},a.Data.old.id=a.Data.model.id=c.id,b.get.PortsId(c.id).then(function(b){a.DeactivePorts=b}),b.get.UniverseInfo(c.id).then(function(b){a.Data.old.name=a.Data.model.name=b.name,a.Data.old.merge_mode=b.merge_mode,a.Data.model.merge_mode=b.merge_mode,a.ActivePorts=b.output_ports.concat(b.input_ports),a.Data.old.ActivePorts=b.output_ports.concat(b.input_ports);for(var c=0;cd;b--)a[b-1]>c.MIN_CHANNEL_VALUE&&dc.MAX_CHANNEL_VALUE&&(a=c.MAX_CHANNEL_VALUE),a},h=function(a){for(var b=[],e=c.MAX_CHANNEL_NUMBER;e>=c.MIN_CHANNEL_NUMBER;e--){var f=g(a[e-1]);(f>c.MIN_CHANNEL_VALUE||e<=d)&&(b[e-1]=f,d Date: Wed, 11 Aug 2021 17:21:58 +0200 Subject: [PATCH 6/8] Update README.developer, javascript/new-src/src/factories/ola.js Co-authored-by: Peter Newman --- README.developer | 6 +++--- javascript/new-src/src/factories/ola.js | 7 +++---- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/README.developer b/README.developer index 102ebc68a0..2285831d61 100644 --- a/README.developer +++ b/README.developer @@ -197,10 +197,10 @@ Please follow the Sun Java style guide. Javascript =============================================================================== -Javascript is used for the olad web UI. Instructions for building the -javascript can be found in javascript/README. +Javascript is used for the olad web UIs. Instructions for building the +original UI's Javascript can be found in javascript/README. -The sources for the new UI is located in javascript/new-src. The built artifact +The sources for the new UI is located in javascript/new-src. The built artifacts is copied to olad/www/new/js/app.min.js. Closure Compiler diff --git a/javascript/new-src/src/factories/ola.js b/javascript/new-src/src/factories/ola.js index 058562b90f..5c7b566762 100644 --- a/javascript/new-src/src/factories/ola.js +++ b/javascript/new-src/src/factories/ola.js @@ -28,9 +28,8 @@ ola.factory('$ola', ['$http', '$window', 'OLA', for (var channel = dmx.length; channel > highestChannelNumberUsed; channel--) { - if ((dmx[channel - 1] > OLA.MIN_CHANNEL_VALUE) && - (highestChannelNumberUsed < channel)) { - highestChannelNumberUsed = channel; + if (dmx[channel - 1] > OLA.MIN_CHANNEL_VALUE) { + highestChannelNumberUsed = $window.Math.max(highestChannelNumberUsed, channel); } } }; @@ -382,4 +381,4 @@ ola.factory('$ola', ['$http', '$window', 'OLA', } }; } -]); \ No newline at end of file +]); From 1f5714502ac39ffd22330d6f90f33992201fb5dc Mon Sep 17 00:00:00 2001 From: Christian Mouttet Date: Wed, 11 Aug 2021 19:23:29 +0200 Subject: [PATCH 7/8] updates based on review annotations --- AUTHORS | 2 +- javascript/new-src/src/factories/ola.js | 20 +++++++++++++++----- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/AUTHORS b/AUTHORS index 02adcf2fdd..f4dc91831f 100644 --- a/AUTHORS +++ b/AUTHORS @@ -29,4 +29,4 @@ Contributors: Stefan Krüger, added APA102 support to the SPI Plugin Tobi Schäfer, for the MacPort files Stefan S, improved timing with monotonic clock - Christian Mouttet, fix in new web-ui + Christian Mouttet, various fixes diff --git a/javascript/new-src/src/factories/ola.js b/javascript/new-src/src/factories/ola.js index 5c7b566762..664350e682 100644 --- a/javascript/new-src/src/factories/ola.js +++ b/javascript/new-src/src/factories/ola.js @@ -22,14 +22,25 @@ ola.factory('$ola', ['$http', '$window', 'OLA', function($http, $window, OLA) { 'use strict'; + // holds the highest channel that was used by faders or the keypad var highestChannelNumberUsed = 0; + // Search for the highest channel in the array `dmx` + // that having a value greater than MIN_CHANNEL_VALUE + // and update `highestChannelNumberUsed` if needed. + // + // Only channels higher than the current `highestChannelNumberUsed` + // will be checked. var updateHighestChannelNumberUsed = function(dmx) { for (var channel = dmx.length; channel > highestChannelNumberUsed; channel--) { - if (dmx[channel - 1] > OLA.MIN_CHANNEL_VALUE) { - highestChannelNumberUsed = $window.Math.max(highestChannelNumberUsed, channel); + var value = parseInt(dmx[channel - 1], 10); + if (value > OLA.MIN_CHANNEL_VALUE) { + // if `Math.max` changed `highestChannelNumberUsed` + // the for-loop will be terminated + highestChannelNumberUsed = $window.Math.max( + highestChannelNumberUsed, channel); } } }; @@ -75,9 +86,8 @@ ola.factory('$ola', ['$http', '$window', 'OLA', integers[channel - 1] = value; - if (highestChannelNumberUsed < channel) { - highestChannelNumberUsed = channel; - } + highestChannelNumberUsed = $window.Math.max( + highestChannelNumberUsed, channel); } } return integers.join(','); From c5b8700a12c107df17080a11072615842e0d93ee Mon Sep 17 00:00:00 2001 From: Christian Mouttet Date: Wed, 11 Aug 2021 19:23:46 +0200 Subject: [PATCH 8/8] add results from 'grunt build' --- olad/www/new/js/app.min.js | 2 +- olad/www/new/js/app.min.js.map | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/olad/www/new/js/app.min.js b/olad/www/new/js/app.min.js index bda0144edc..af7f00e591 100644 --- a/olad/www/new/js/app.min.js +++ b/olad/www/new/js/app.min.js @@ -1,2 +1,2 @@ -var ola=angular.module("olaApp",["ngRoute"]);ola.config(["$routeProvider",function(a){"use strict";a.when("/",{templateUrl:"/new/views/overview.html",controller:"overviewCtrl"}).when("/universes/",{templateUrl:"/new/views/universes.html",controller:"overviewCtrl"}).when("/universe/add",{templateUrl:"/new/views/universe-add.html",controller:"addUniverseCtrl"}).when("/universe/:id",{templateUrl:"/new/views/universe-overview.html",controller:"universeCtrl"}).when("/universe/:id/keypad",{templateUrl:"/new/views/universe-keypad.html",controller:"keypadUniverseCtrl"}).when("/universe/:id/faders",{templateUrl:"/new/views/universe-faders.html",controller:"faderUniverseCtrl"}).when("/universe/:id/rdm",{templateUrl:"/new/views/universe-rdm.html",controller:"rdmUniverseCtrl"}).when("/universe/:id/patch",{templateUrl:"/new/views/universe-patch.html",controller:"patchUniverseCtrl"}).when("/universe/:id/settings",{templateUrl:"/new/views/universe-settings.html",controller:"settingUniverseCtrl"}).when("/plugins",{templateUrl:"/new/views/plugins.html",controller:"pluginsCtrl"}).when("/plugin/:id",{templateUrl:"/new/views/plugin-info.html",controller:"pluginInfoCtrl"}).otherwise({redirectTo:"/"})}]),ola.controller("menuCtrl",["$scope","$ola","$interval","$location",function(a,b,c,d){"use strict";a.Items={},a.Info={},a.goTo=function(a){d.path(a)};var e=function(){b.get.ItemList().then(function(b){a.Items=b}),b.get.ServerInfo().then(function(b){a.Info=b,document.title=b.instance_name+" - "+b.ip})};e(),c(e,1e4)}]),ola.controller("patchUniverseCtrl",["$scope","$ola","$routeParams",function(a,b,c){"use strict";a.Universe=c.id}]),ola.controller("rdmUniverseCtrl",["$scope","$ola","$routeParams",function(a,b,c){"use strict";a.Universe=c.id}]),ola.controller("universeCtrl",["$scope","$ola","$routeParams","$interval","OLA",function(a,b,c,d,e){"use strict";a.dmx=[],a.Universe=c.id,b.resetHighestChannelNumberUsed();var f=d(function(){b.get.Dmx(a.Universe).then(function(b){for(var c=0;c140?"black":"white"}}]),ola.controller("faderUniverseCtrl",["$scope","$ola","$routeParams","$window","$interval","OLA",function(a,b,c,d,e,f){"use strict";a.get=[],a.list=[],a.last=0,a.offset=0,a.send=!1,a.OLA=f,a.Universe=c.id;for(var g=0;g140?"black":"white"},a.ceil=function(a){return d.Math.ceil(a)},a.change=function(){b.post.Dmx(a.Universe,a.get)},a.page=function(b){if(1===b){var c=d.Math.ceil(f.MAX_CHANNEL_NUMBER/a.limit);a.offset+1!==c&&a.offset++}else b===f.MIN_CHANNEL_VALUE&&a.offset!==f.MIN_CHANNEL_VALUE&&a.offset--},a.getWidth=function(){return d.Math.floor(.99*d.innerWidth/a.limit)-52/a.limit+"px"},a.getLimit=function(){var a=.99*d.innerWidth/66;return d.Math.floor(a)},a.limit=a.getLimit(),a.width={width:a.getWidth()},d.$(d).resize(function(){a.$apply(function(){a.limit=a.getLimit(),a.width={width:a.getWidth()}})}),a.$on("$destroy",function(){e.cancel(h)})}]),ola.controller("keypadUniverseCtrl",["$scope","$ola","$routeParams","OLA",function(a,b,c,d){"use strict";a.Universe=c.id;var e;e=/^(?:([0-9]{1,3})(?:\s(THRU)\s(?:([0-9]{1,3}))?)?(?:\s(@)\s(?:([0-9]{1,3}|FULL))?)?)/;var f={channelValue:function(a){return d.MIN_CHANNEL_VALUE<=a&&a<=d.MAX_CHANNEL_VALUE},channelNumber:function(a){return d.MIN_CHANNEL_NUMBER<=a&&a<=d.MAX_CHANNEL_NUMBER},regexGroups:function(a){if(void 0!==a[1]){if(!this.channelNumber(parseInt(a[1],10)))return!1}if(void 0!==a[3]){if(!this.channelNumber(parseInt(a[3],10)))return!1}if(void 0!==a[5]&&"FULL"!==a[5]){if(!this.channelValue(parseInt(a[5],10)))return!1}return!0}};a.field="",a.input=function(b){var c;c="backspace"===b?a.field.substr(0,a.field.length-1):a.field+b;var d=e.exec(c);null===d?a.field="":f.regexGroups(d)&&(a.field=d[0])},a.submit=function(){var c=[],g=a.field,h=e.exec(g);if(null!==h&&f.regexGroups(h)){var i=parseInt(h[1],10),j=h[3]?parseInt(h[3],10):parseInt(h[1],10),k="FULL"===h[5]?d.MAX_CHANNEL_VALUE:parseInt(h[5],10);return!!(i<=j&&f.channelValue(k))&&(b.get.Dmx(a.Universe).then(function(e){for(var f=0;f")}),a.stateColor=function(a){return a?{"background-color":"green"}:{"background-color":"red"}}}]),ola.controller("settingUniverseCtrl",["$scope","$ola","$routeParams",function(a,b,c){"use strict";a.loadData=function(){a.Data={old:{},model:{},Remove:[],Add:[]},a.Data.old.id=a.Data.model.id=c.id,b.get.PortsId(c.id).then(function(b){a.DeactivePorts=b}),b.get.UniverseInfo(c.id).then(function(b){a.Data.old.name=a.Data.model.name=b.name,a.Data.old.merge_mode=b.merge_mode,a.Data.model.merge_mode=b.merge_mode,a.ActivePorts=b.output_ports.concat(b.input_ports),a.Data.old.ActivePorts=b.output_ports.concat(b.input_ports);for(var c=0;cd;b--)a[b-1]>c.MIN_CHANNEL_VALUE&&dc.MAX_CHANNEL_VALUE&&(a=c.MAX_CHANNEL_VALUE),a},h=function(a){for(var b=[],e=c.MAX_CHANNEL_NUMBER;e>=c.MIN_CHANNEL_NUMBER;e--){var f=g(a[e-1]);(f>c.MIN_CHANNEL_VALUE||e<=d)&&(b[e-1]=f,d140?"black":"white"}}]),ola.controller("faderUniverseCtrl",["$scope","$ola","$routeParams","$window","$interval","OLA",function(a,b,c,d,e,f){"use strict";a.get=[],a.list=[],a.last=0,a.offset=0,a.send=!1,a.OLA=f,a.Universe=c.id;for(var g=0;g140?"black":"white"},a.ceil=function(a){return d.Math.ceil(a)},a.change=function(){b.post.Dmx(a.Universe,a.get)},a.page=function(b){if(1===b){var c=d.Math.ceil(f.MAX_CHANNEL_NUMBER/a.limit);a.offset+1!==c&&a.offset++}else b===f.MIN_CHANNEL_VALUE&&a.offset!==f.MIN_CHANNEL_VALUE&&a.offset--},a.getWidth=function(){return d.Math.floor(.99*d.innerWidth/a.limit)-52/a.limit+"px"},a.getLimit=function(){var a=.99*d.innerWidth/66;return d.Math.floor(a)},a.limit=a.getLimit(),a.width={width:a.getWidth()},d.$(d).resize(function(){a.$apply(function(){a.limit=a.getLimit(),a.width={width:a.getWidth()}})}),a.$on("$destroy",function(){e.cancel(h)})}]),ola.controller("keypadUniverseCtrl",["$scope","$ola","$routeParams","OLA",function(a,b,c,d){"use strict";a.Universe=c.id;var e;e=/^(?:([0-9]{1,3})(?:\s(THRU)\s(?:([0-9]{1,3}))?)?(?:\s(@)\s(?:([0-9]{1,3}|FULL))?)?)/;var f={channelValue:function(a){return d.MIN_CHANNEL_VALUE<=a&&a<=d.MAX_CHANNEL_VALUE},channelNumber:function(a){return d.MIN_CHANNEL_NUMBER<=a&&a<=d.MAX_CHANNEL_NUMBER},regexGroups:function(a){if(void 0!==a[1]){if(!this.channelNumber(parseInt(a[1],10)))return!1}if(void 0!==a[3]){if(!this.channelNumber(parseInt(a[3],10)))return!1}if(void 0!==a[5]&&"FULL"!==a[5]){if(!this.channelValue(parseInt(a[5],10)))return!1}return!0}};a.field="",a.input=function(b){var c;c="backspace"===b?a.field.substr(0,a.field.length-1):a.field+b;var d=e.exec(c);null===d?a.field="":f.regexGroups(d)&&(a.field=d[0])},a.submit=function(){var c=[],g=a.field,h=e.exec(g);if(null!==h&&f.regexGroups(h)){var i=parseInt(h[1],10),j=h[3]?parseInt(h[3],10):parseInt(h[1],10),k="FULL"===h[5]?d.MAX_CHANNEL_VALUE:parseInt(h[5],10);return!!(i<=j&&f.channelValue(k))&&(b.get.Dmx(a.Universe).then(function(e){for(var f=0;f")}),a.stateColor=function(a){return a?{"background-color":"green"}:{"background-color":"red"}}}]),ola.controller("settingUniverseCtrl",["$scope","$ola","$routeParams",function(a,b,c){"use strict";a.loadData=function(){a.Data={old:{},model:{},Remove:[],Add:[]},a.Data.old.id=a.Data.model.id=c.id,b.get.PortsId(c.id).then(function(b){a.DeactivePorts=b}),b.get.UniverseInfo(c.id).then(function(b){a.Data.old.name=a.Data.model.name=b.name,a.Data.old.merge_mode=b.merge_mode,a.Data.model.merge_mode=b.merge_mode,a.ActivePorts=b.output_ports.concat(b.input_ports),a.Data.old.ActivePorts=b.output_ports.concat(b.input_ports);for(var c=0;cd;e--){parseInt(a[e-1],10)>c.MIN_CHANNEL_VALUE&&(d=b.Math.max(d,e))}},f=function(a){var b=[];for(var c in a)a.hasOwnProperty(c)&&("d"===c||"remove_ports"===c||"modify_ports"===c||"add_ports"===c?b.push(c+"="+a[c]):b.push(c+"="+encodeURIComponent(a[c])));return b.join("&")},g=function(a){return a=parseInt(a,10),ac.MAX_CHANNEL_VALUE&&(a=c.MAX_CHANNEL_VALUE),a},h=function(a){for(var e=[],f=c.MAX_CHANNEL_NUMBER;f>=c.MIN_CHANNEL_NUMBER;f--){var h=g(a[f-1]);(h>c.MIN_CHANNEL_VALUE||f<=d)&&(e[f-1]=h,d=b.Math.max(d,f))}return e.join(",")};return{resetHighestChannelNumberUsed:function(){d=0},get:{ItemList:function(){return a.get("/json/universe_plugin_list").then(function(a){return a.data})},ServerInfo:function(){return a.get("/json/server_stats").then(function(a){return a.data})},Ports:function(){return a.get("/json/get_ports").then(function(a){return a.data})},PortsId:function(b){return a({method:"GET",url:"/json/get_ports",params:{id:b}}).then(function(a){return a.data})},InfoPlugin:function(b){return a({method:"GET",url:"/json/plugin_info",params:{id:b}}).then(function(a){return a.data})},Dmx:function(b){return a({method:"GET",url:"/get_dmx",params:{u:b}}).then(function(a){return e(a.data.dmx),a.data})},UniverseInfo:function(b){return a({method:"GET",url:"/json/universe_info",params:{id:b}}).then(function(a){return a.data})}},post:{ModifyUniverse:function(b){return a({method:"POST",url:"/modify_universe",data:f(b),headers:{"Content-Type":"application/x-www-form-urlencoded"}}).then(function(a){return a.data})},AddUniverse:function(b){return a({method:"POST",url:"/new_universe",data:f(b),headers:{"Content-Type":"application/x-www-form-urlencoded"}}).then(function(a){return a.data})},Dmx:function(b,c){var d={u:b,d:h(c)};return a({method:"POST",url:"/set_dmx",data:f(d),headers:{"Content-Type":"application/x-www-form-urlencoded"}}).then(function(a){return a.data})},PluginState:function(b,c){return a({method:"POST",url:"/set_plugin_state",data:f({state:c,plugin_id:b}),headers:{"Content-Type":"application/x-www-form-urlencoded"}}).then(function(a){return a.data})}},action:{Shutdown:function(){return a.get("/quit").then(function(a){return a.data})},Reload:function(){return a.get("/reload").then(function(a){return a.data})},ReloadPids:function(){return a.get("/reload_pids").then(function(a){return a.data})}},rdm:{GetSectionInfo:function(b,c,d){return a({method:"GET",url:"/json/rdm/section_info",params:{id:b,uid:c,section:d}}).then(function(a){return a.data})},SetSection:function(b,c,d,e,f){return a({method:"GET",url:"/json/rdm/set_section_info",params:{id:b,uid:c,section:d,hint:e,int:f}}).then(function(a){return a.data})},GetSupportedPids:function(b,c){return a({method:"GET",url:"/json/rdm/supported_pids",params:{id:b,uid:c}}).then(function(a){return a.data})},GetSupportedSections:function(b,c){return a({method:"GET",url:"/json/rdm/supported_sections",params:{id:b,uid:c}}).then(function(a){return a.data})},UidIdentifyDevice:function(b,c){return a({method:"GET",url:"/json/rdm/uid_identify_device",params:{id:b,uid:c}}).then(function(a){return a.data})},UidInfo:function(b,c){return a({method:"GET",url:"/json/rdm/uid_info",params:{id:b,uid:c}}).then(function(a){return a.data})},UidPersonalities:function(b,c){return a({method:"GET",url:"/json/rdm/uid_personalities",params:{id:b,uid:c}}).then(function(a){return a.data})},Uids:function(b){return a({method:"GET",url:"/json/rdm/uids",params:{id:b}}).then(function(a){return a.data})},RunDiscovery:function(b,c){return a({method:"GET",url:"/rdm/run_discovery",params:{id:b,incremental:c}}).then(function(a){return a.data})}},error:{modal:function(a,b){void 0!==a?$("#errorModalBody").text(a):$("#errorModalBody").text("There has been an error"),void 0!==b?$("#errorModalLabel").text(b):$("#errorModalLabel").text("Error"),$("#errorModal").modal("show")}}}}]),ola.filter("startFrom",function(){"use strict";return function(a,b){return b=parseInt(b,10),a.slice(b)}}); //# sourceMappingURL=app.min.js.map \ No newline at end of file diff --git a/olad/www/new/js/app.min.js.map b/olad/www/new/js/app.min.js.map index bed4699fb8..16cf9b2472 100644 --- a/olad/www/new/js/app.min.js.map +++ b/olad/www/new/js/app.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../../../node/app/src/app.js","../../../../node/app/src/controllers/menu.js","../../../../node/app/src/controllers/patch_universe.js","../../../../node/app/src/controllers/rdm_universe.js","../../../../node/app/src/controllers/universe.js","../../../../node/app/src/controllers/fader_universe.js","../../../../node/app/src/controllers/keypad_universe.js","../../../../node/app/src/controllers/plugins.js","../../../../node/app/src/controllers/add_universe.js","../../../../node/app/src/controllers/plugin_info.js","../../../../node/app/src/controllers/setting_universe.js","../../../../node/app/src/controllers/header.js","../../../../node/app/src/controllers/overview.js","../../../../node/app/src/constants.js","../../../../node/app/src/factories/ola.js","../../../../node/app/src/filters/start_form.js"],"names":["ola","angular","module","config","$routeProvider","when","templateUrl","controller","otherwise","redirectTo","$scope","$ola","$interval","$location","Items","Info","goTo","url","path","getData","get","ItemList","then","data","ServerInfo","document","title","instance_name","ip","$routeParams","Universe","id","OLA","dmx","resetHighestChannelNumberUsed","interval","Dmx","i","MAX_CHANNEL_NUMBER","MIN_CHANNEL_VALUE","$on","cancel","getColor","$window","list","last","offset","send","light","j","change","dmxGet","length","ceil","Math","post","page","d","offsetLimit","limit","getWidth","floor","innerWidth","getLimit","width","$","resize","$apply","regexkeypad","check","channelValue","value","MAX_CHANNEL_VALUE","channelNumber","MIN_CHANNEL_NUMBER","regexGroups","result","undefined","this","parseInt","field","input","tmpField","substr","fields","exec","submit","begin","end","active","enabled","getInfo","Reload","action","go","changeStatus","current","PluginState","getStyle","style","background-color","Ports","addPorts","Universes","Class","Data","name","add_ports","u","universes","hasOwnProperty","push","Submit","indexOf","AddUniverse","error","modal","getDirection","direction","updateId","TogglePort","grep","Boolean","join","InfoPlugin","description","getElementById","textContent","innerHTML","replace","stateColor","val","loadData","old","model","Remove","Add","PortsId","DeactivePorts","UniverseInfo","merge_mode","ActivePorts","output_ports","concat","input_ports","Save","a","remove_ports","modified","forEach","element","index","port","port_old","priority","current_mode","modify_ports","ModifyUniverse","header","tab","hash","location","Shutdown","goUniverse","constant","factory","$http","highestChannelNumberUsed","updateHighestChannelNumberUsed","channel","postEncode","PostData","key","encodeURIComponent","channelValueCheck","dmxConvert","integers","response","method","params","headers","Content-Type","universe","pluginId","state","plugin_id","ReloadPids","rdm","GetSectionInfo","uid","section","SetSection","hint","option","int","GetSupportedPids","GetSupportedSections","UidIdentifyDevice","UidInfo","UidPersonalities","Uids","RunDiscovery","incremental","body","text","filter","start","slice"],"mappings":"AAoBA,GAAIA,KAAMC,QAAQC,OAAO,UAAW,WAEpCF,KAAIG,QAAQ,iBACV,SAASC,GACP,YACAA,GAAeC,KAAK,KAClBC,YAAa,2BACbC,WAAY,iBACXF,KAAK,eACNC,YAAa,4BACbC,WAAY,iBACXF,KAAK,iBACNC,YAAa,+BACbC,WAAY,oBACXF,KAAK,iBACNC,YAAa,oCACbC,WAAY,iBACXF,KAAK,wBACNC,YAAa,kCACbC,WAAY,uBACXF,KAAK,wBACNC,YAAa,kCACbC,WAAY,sBACXF,KAAK,qBACNC,YAAa,+BACbC,WAAY,oBACXF,KAAK,uBACNC,YAAa,iCACbC,WAAY,sBACXF,KAAK,0BACNC,YAAa,oCACbC,WAAY,wBACXF,KAAK,YACNC,YAAa,0BACbC,WAAY,gBACXF,KAAK,eACNC,YAAa,8BACbC,WAAY,mBACXC,WACDC,WAAY,SCvClBT,IAAIO,WAAW,YAAa,SAAU,OAAQ,YAAa,YACzD,SAASG,EAAQC,EAAMC,EAAWC,GAChC,YACAH,GAAOI,SACPJ,EAAOK,QAEPL,EAAOM,KAAO,SAASC,GACrBJ,EAAUK,KAAKD,GAGjB,IAAIE,GAAU,WACZR,EAAKS,IAAIC,WAAWC,KAAK,SAASC,GAChCb,EAAOI,MAAQS,IAEjBZ,EAAKS,IAAII,aAAaF,KAAK,SAASC,GAClCb,EAAOK,KAAOQ,EACdE,SAASC,MAAQH,EAAKI,cAAgB,MAAQJ,EAAKK,KAIvDT,KACAP,EAAUO,EAAS,QCrBvBnB,IAAIO,WAAW,qBACZ,SAAU,OAAQ,eACjB,SAASG,EAAQC,EAAMkB,GACrB,YACAnB,GAAOoB,SAAWD,EAAaE,MCJrC/B,IAAIO,WAAW,mBACZ,SAAU,OAAQ,eACjB,SAASG,EAAQC,EAAMkB,GACrB,YAGAnB,GAAOoB,SAAWD,EAAaE,MCNrC/B,IAAIO,WAAW,gBACZ,SAAU,OAAQ,eAAgB,YAAa,MAC9C,SAASG,EAAQC,EAAMkB,EAAcjB,EAAWoB,GAC9C,YACAtB,GAAOuB,OACPvB,EAAOoB,SAAWD,EAAaE,GAC/BpB,EAAKuB,+BAEL,IAAIC,GAAWvB,EAAU,WACvBD,EAAKS,IAAIgB,IAAI1B,EAAOoB,UAAUR,KAAK,SAASC,GAC1C,IAAK,GAAIc,GAAI,EAAGA,EAAIL,EAAIM,mBAAoBD,IAC1C3B,EAAOuB,IAAII,GACe,gBAAhBd,GAAKU,IAAII,GACfd,EAAKU,IAAII,GAAKL,EAAIO,qBAGzB,IAEH7B,GAAO8B,IAAI,WAAY,WACrB5B,EAAU6B,OAAON,KAGnBzB,EAAOgC,SAAW,SAASL,GACzB,MAAIA,GAAI,IACC,QAEA,YC1BjBrC,IAAIO,WAAW,qBACZ,SAAU,OAAQ,eAAgB,UAAW,YAAa,MACzD,SAASG,EAAQC,EAAMkB,EAAcc,EAAS/B,EAAWoB,GACvD,YACAtB,GAAOU,OACPV,EAAOkC,QACPlC,EAAOmC,KAAO,EACdnC,EAAOoC,OAAS,EAChBpC,EAAOqC,MAAO,EACdrC,EAAOsB,IAAMA,EACbtB,EAAOoB,SAAWD,EAAaE,EAE/B,KAAK,GAAIM,GAAI,EAAGA,EAAIL,EAAIM,mBAAoBD,IAC1C3B,EAAOkC,KAAKP,GAAKA,EACjB3B,EAAOU,IAAIiB,GAAKL,EAAIO,iBAGtB7B,GAAOsC,MAAQ,SAASC,GACtB,IAAK,GAAIZ,GAAI,EAAGA,EAAIL,EAAIM,mBAAoBD,IAC1C3B,EAAOU,IAAIiB,GAAKY,CAElBvC,GAAOwC,SAGT,IAAIC,GAASvC,EAAU,WACrBD,EAAKS,IAAIgB,IAAI1B,EAAOoB,UAAUR,KAAK,SAASC,GAC1C,IAAK,GAAIc,GAAI,EAAGA,EAAIL,EAAIM,mBAAoBD,IACtCA,EAAId,EAAKU,IAAImB,OACf1C,EAAOU,IAAIiB,GAAKd,EAAKU,IAAII,GAEzB3B,EAAOU,IAAIiB,GAAKL,EAAIO,iBAGxB7B,GAAOqC,MAAO,KAEf,IAEHrC,GAAOgC,SAAW,SAASL,GACzB,MAAIA,GAAI,IACC,QAEA,SAIX3B,EAAO2C,KAAO,SAAShB,GACrB,MAAOM,GAAQW,KAAKD,KAAKhB,IAG3B3B,EAAOwC,OAAS,WACdvC,EAAK4C,KAAKnB,IAAI1B,EAAOoB,SAAUpB,EAAOU,MAGxCV,EAAO8C,KAAO,SAASC,GACrB,GAAU,IAANA,EAAS,CACX,GAAIC,GACFf,EAAQW,KAAKD,KAAKrB,EAAIM,mBAAqB5B,EAAOiD,MAC/CjD,GAAOoC,OAAS,IAAOY,GAC1BhD,EAAOoC,aAEAW,KAAMzB,EAAIO,mBACf7B,EAAOoC,SAAWd,EAAIO,mBACxB7B,EAAOoC,UAKbpC,EAAOkD,SAAW,WAIhB,MAFEjB,GAAQW,KAAKO,MAA4B,IAArBlB,EAAQmB,WAAqBpD,EAAOiD,OACpC,GAAKjD,EAAOiD,MAClB,MAGlBjD,EAAOqD,SAAW,WAChB,GAAIC,GAA8B,IAArBrB,EAAQmB,WAAqB,EAC1C,OAAOnB,GAAQW,KAAKO,MAAMG,IAG5BtD,EAAOiD,MAAQjD,EAAOqD,WAEtBrD,EAAOsD,OACLA,MAAStD,EAAOkD,YAGlBjB,EAAQsB,EAAEtB,GAASuB,OAAO,WACxBxD,EAAOyD,OAAO,WACZzD,EAAOiD,MAAQjD,EAAOqD,WACtBrD,EAAOsD,OACLA,MAAOtD,EAAOkD,gBAKpBlD,EAAO8B,IAAI,WAAY,WACrB5B,EAAU6B,OAAOU,QC/FzBnD,IAAIO,WAAW,sBACZ,SAAU,OAAQ,eAAgB,MACjC,SAASG,EAAQC,EAAMkB,EAAcG,GACnC,YACAtB,GAAOoB,SAAWD,EAAaE,EAC/B,IAAIqC,EAKJA,GACE,qFAIF,IAAIC,IACFC,aAAc,SAASC,GACrB,MAAOvC,GAAIO,mBAAqBgC,GAC9BA,GAASvC,EAAIwC,mBAEjBC,cAAe,SAASF,GACtB,MAAOvC,GAAI0C,oBAAsBH,GAC/BA,GAASvC,EAAIM,oBAEjBqC,YAAa,SAASC,GACpB,OAAkBC,KAAdD,EAAO,GAAkB,CAE3B,IADaE,KAAKL,cAAcM,SAASH,EAAO,GAAI,KAElD,OAAO,EAGX,OAAkBC,KAAdD,EAAO,GAAkB,CAE3B,IADaE,KAAKL,cAAcM,SAASH,EAAO,GAAI,KAElD,OAAO,EAGX,OAAkBC,KAAdD,EAAO,IAAkC,SAAdA,EAAO,GAAe,CAEnD,IADaE,KAAKR,aAAaS,SAASH,EAAO,GAAI,KAEjD,OAAO,EAGX,OAAO,GAIXlE,GAAOsE,MAAQ,GACftE,EAAOuE,MAAQ,SAASA,GACtB,GAAIC,EAEFA,GADY,cAAVD,EACSvE,EAAOsE,MAAMG,OAAO,EAAGzE,EAAOsE,MAAM5B,OAAS,GAE7C1C,EAAOsE,MAAQC,CAE5B,IAAIG,GAAShB,EAAYiB,KAAKH,EACf,QAAXE,EACF1E,EAAOsE,MAAQ,GACNX,EAAMM,YAAYS,KAC3B1E,EAAOsE,MAAQI,EAAO,KAI1B1E,EAAO4E,OAAS,WACd,GAAIrD,MACAgD,EAAQvE,EAAOsE,MACfJ,EAASR,EAAYiB,KAAKJ,EAC9B,IAAe,OAAXL,GAAmBP,EAAMM,YAAYC,GAAS,CAChD,GAAIW,GAAQR,SAASH,EAAO,GAAI,IAC5BY,EAAMZ,EAAO,GAAKG,SAASH,EAAO,GAAI,IACxCG,SAASH,EAAO,GAAI,IAClBL,EAAuB,SAAdK,EAAO,GAClB5C,EAAIwC,kBAAoBO,SAASH,EAAO,GAAI,GAC9C,UAAIW,GAASC,GAAOnB,EAAMC,aAAaC,MACrC5D,EAAKS,IAAIgB,IAAI1B,EAAOoB,UAAUR,KAAK,SAASC,GAC1C,IAAK,GAAIc,GAAI,EAAGA,EAAIL,EAAIM,mBAAoBD,IACtCA,EAAId,EAAKU,IAAImB,OACfnB,EAAII,GAAKd,EAAKU,IAAII,GAElBJ,EAAII,GAAKL,EAAIO,iBAGjB,KAAK,GAAIU,GAAIsC,EAAOtC,GAAKuC,EAAKvC,IAC5BhB,EAAIgB,EAAI,GAAKsB,CAEf5D,GAAK4C,KAAKnB,IAAI1B,EAAOoB,SAAUG,GAC/BvB,EAAOsE,MAAQ,MAEV,GAKT,OAAO,MC7FjBhF,IAAIO,WAAW,eACZ,SAAU,OAAQ,YACjB,SAASG,EAAQC,EAAME,GACrB,YACAH,GAAOI,SACPJ,EAAO+E,UACP/E,EAAOgF,WACPhF,EAAOiF,QAAU,WACfhF,EAAKS,IAAIC,WACNC,KAAK,SAASC,GACbb,EAAOI,MAAQS,KAGrBb,EAAOiF,UACPjF,EAAOkF,OAAS,WACdjF,EAAKkF,OAAOD,SACZlF,EAAOiF,WAETjF,EAAOoF,GAAK,SAAS/D,GACnBlB,EAAUK,KAAK,WAAaa,IAE9BrB,EAAOqF,aAAe,SAAShE,EAAIiE,GACjCrF,EAAK4C,KAAK0C,YAAYlE,EAAIiE,GAC1BtF,EAAOiF,WAGTjF,EAAOwF,SAAW,SAASC,GACzB,MAAIA,IAEAC,mBAAoB,UAIpBA,mBAAoB,WCjChCpG,IAAIO,WAAW,mBAAoB,SAAU,OAAQ,UAAW,YAC9D,SAASG,EAAQC,EAAMgC,EAAS9B,GAC9B,YACAH,GAAO2F,SACP3F,EAAO4F,YACP5F,EAAO6F,aACP7F,EAAO8F,MAAQ,GACf9F,EAAO+F,MACL1E,GAAI,EACJ2E,KAAM,GACNC,UAAW,IAGbhG,EAAKS,IAAIC,WAAWC,KAAK,SAASC,GAChC,IAAK,GAAIqF,KAAKrF,GAAKsF,UACbtF,EAAKsF,UAAUC,eAAeF,KAC5BlG,EAAO+F,KAAK1E,KAAOgD,SAASxD,EAAKsF,UAAUD,GAAG7E,GAAI,KACpDrB,EAAO+F,KAAK1E,KAEdrB,EAAO6F,UAAUQ,KAAKhC,SAASxD,EAAKsF,UAAUD,GAAG7E,GAAI,QAK3DrB,EAAOsG,OAAS,WACgB,gBAAnBtG,GAAO+F,KAAK1E,IACK,KAA1BrB,EAAO+F,KAAKE,YACkC,IAA9CjG,EAAO6F,UAAUU,QAAQvG,EAAO+F,KAAK1E,SACZ8C,KAArBnE,EAAO+F,KAAKC,MAA2C,KAArBhG,EAAO+F,KAAKC,OAChDhG,EAAO+F,KAAKC,KAAO,YAAchG,EAAO+F,KAAK1E,IAE/CpB,EAAK4C,KAAK2D,YAAYxG,EAAO+F,MAC7B5F,EAAUK,KAAK,aAAeR,EAAO+F,KAAK1E,MACa,IAA9CrB,EAAO6F,UAAUU,QAAQvG,EAAO+F,KAAK1E,IAC9CpB,EAAKwG,MAAMC,MAAM,mCACkBvC,KAA1BnE,EAAO+F,KAAKE,WACK,KAA1BjG,EAAO+F,KAAKE,WACZhG,EAAKwG,MAAMC,MAAM,oEAKrBzG,EAAKS,IAAIiF,QAAQ/E,KAAK,SAASC,GAC7Bb,EAAO2F,MAAQ9E,IAGjBb,EAAO2G,aAAe,SAASC,GAC7B,MAAIA,GACK,SAEA,SAIX5G,EAAO6G,SAAW,YACkC,IAA9C7G,EAAO6F,UAAUU,QAAQvG,EAAO+F,KAAK1E,IACvCrB,EAAO8F,MAAQ,YAEf9F,EAAO8F,MAAQ,IAInB9F,EAAO8G,WAAa,WAClB9G,EAAO+F,KAAKE,UACVhE,EAAQsB,EAAEwD,KAAK/G,EAAO4F,SAAUoB,SAASC,KAAK,SChEtD3H,IAAIO,WAAW,kBACZ,SAAU,eAAgB,OACzB,SAASG,EAAQmB,EAAclB,GAC7B,YACAA,GAAKS,IAAIwG,WAAW/F,EAAaE,IAAIT,KAAK,SAASC,GACjDb,EAAO+E,OAASlE,EAAKkE,OACrB/E,EAAOgF,QAAUnE,EAAKmE,QACtBhF,EAAOgG,KAAOnF,EAAKmF,IAEnB,IAAImB,GAAcpG,SAASqG,eAAe,cAC1CD,GAAYE,YAAcxG,EAAKsG,YAC/BA,EAAYG,UACVH,EAAYG,UAAUC,QAAQ,OAAQ,YAG1CvH,EAAOwH,WAAa,SAASC,GAC3B,MAAIA,IAEA/B,mBAAoB,UAIpBA,mBAAoB,WCtBhCpG,IAAIO,WAAW,uBACZ,SAAU,OAAQ,eACjB,SAASG,EAAQC,EAAMkB,GACrB,YACAnB,GAAO0H,SAAW,WAChB1H,EAAO+F,MACL4B,OACAC,SACAC,UACAC,QAEF9H,EAAO+F,KAAK4B,IAAItG,GAAKrB,EAAO+F,KAAK6B,MAAMvG,GAAKF,EAAaE,GACzDpB,EAAKS,IAAIqH,QAAQ5G,EAAaE,IAAIT,KAAK,SAASC,GAC9Cb,EAAOgI,cAAgBnH,IAEzBZ,EAAKS,IAAIuH,aAAa9G,EAAaE,IAAIT,KAAK,SAASC,GACnDb,EAAO+F,KAAK4B,IAAI3B,KAAOhG,EAAO+F,KAAK6B,MAAM5B,KAAOnF,EAAKmF,KACrDhG,EAAO+F,KAAK4B,IAAIO,WAAarH,EAAKqH,WAClClI,EAAO+F,KAAK6B,MAAMM,WAAarH,EAAKqH,WACpClI,EAAOmI,YAActH,EAAKuH,aAAaC,OAAOxH,EAAKyH,aACnDtI,EAAO+F,KAAK4B,IAAIQ,YACdtH,EAAKuH,aAAaC,OAAOxH,EAAKyH,YAChC,KAAK,GAAI3G,GAAI,EAAGA,EAAI3B,EAAOmI,YAAYzF,SAAUf,EAC/C3B,EAAO+F,KAAK8B,OAAOlG,GAAK,MAI9B3B,EAAO0H,WACP1H,EAAOuI,KAAO,WACZ,GAAIC,KACJA,GAAEnH,GAAKrB,EAAO+F,KAAK6B,MAAMvG,GACzBmH,EAAExC,KAAOhG,EAAO+F,KAAK6B,MAAM5B,KAC3BwC,EAAEN,WAAalI,EAAO+F,KAAK6B,MAAMM,WACjCM,EAAEvC,UAAY1C,EAAEwD,KAAK/G,EAAO+F,KAAK+B,IAAKd,SAASC,KAAK,KACpDuB,EAAEC,aAAelF,EAAEwD,KAAK/G,EAAO+F,KAAK8B,OAAQb,SAASC,KAAK,IAC1D,IAAIyB,KACJ1I,GAAOmI,YAAYQ,QAAQ,SAASC,EAASC,GAC3C,IAAkE,IAA9D7I,EAAO+F,KAAK8B,OAAOtB,QAAQvG,EAAOmI,YAAYU,GAAOxH,IAAY,CACnE,GAAIyH,GAAO9I,EAAOmI,YAAYU,GAC1BE,EAAW/I,EAAO+F,KAAK4B,IAAIQ,YAAYU,EACR,YAA/BC,EAAKE,SAASC,cACZ,EAAIH,EAAKE,SAASnF,MAAQ,MAC5B2E,EAAEM,EAAKzH,GAAK,mBAAqByH,EAAKE,SAASnF,OACZ,IAA/B6E,EAASnC,QAAQuC,EAAKzH,KACxBqH,EAASrC,KAAKyC,EAAKzH,KAIrB0H,EAASC,SAASC,eAAiBH,EAAKE,SAASC,eACnDT,EAAEM,EAAKzH,GAAK,kBAAoByH,EAAKE,SAASC,cACX,IAA/BP,EAASnC,QAAQuC,EAAKzH,KACxBqH,EAASrC,KAAKyC,EAAKzH,QAK3BmH,EAAEU,aAAe3F,EAAEwD,KAAK2B,EAAU1B,SAASC,KAAK,KAChDhH,EAAK4C,KAAKsG,eAAeX,GACzBxI,EAAO0H,eC1DfpI,IAAIO,WAAW,iBACZ,SAAU,OAAQ,eAAgB,UACjC,SAASG,EAAQC,EAAMkB,EAAcc,GACnC,YACAjC,GAAOoJ,QACLC,IAAK,GACLhI,GAAIF,EAAaE,GACjB2E,KAAM,IAGR/F,EAAKS,IAAIuH,aAAa9G,EAAaE,IAChCT,KAAK,SAASC,GACbb,EAAOoJ,OAAOpD,KAAOnF,EAAKmF,MAG9B,IAAIsD,GAAOrH,EAAQsH,SAASD,IAC5BtJ,GAAOoJ,OAAOC,IAAMC,EAAK/B,QAAQ,yBAA0B,OChBjEjI,IAAIO,WAAW,gBACZ,SAAU,OAAQ,YACjB,SAASG,EAAQC,EAAME,GACrB,YACAH,GAAOK,QACPL,EAAO6F,aAEP5F,EAAKS,IAAIC,WAAWC,KAAK,SAASC,GAChCb,EAAO6F,UAAYhF,EAAKsF,YAG1BlG,EAAKS,IAAII,aAAaF,KAAK,SAASC,GAClCb,EAAOK,KAAOQ,IAGhBb,EAAOwJ,SAAW,WAChBvJ,EAAKkF,OAAOqE,WAAW5I,QAGzBZ,EAAOyJ,WAAa,SAASpI,GAC3BlB,EAAUK,KAAK,aAAea,OCpBtC/B,IAAIoK,SAAS,OACX1F,mBAAsB,EACtBpC,mBAAsB,IACtBC,kBAAqB,EACrBiC,kBAAqB,MCHvBxE,IAAIqK,QAAQ,QAAS,QAAS,UAAW,MACvC,SAASC,EAAO3H,EAASX,GACvB,YACA,IAAIuI,GAA2B,EAE3BC,EAAiC,SAASvI,GAC5C,IAAK,GAAIwI,GAAUxI,EAAImB,OAAQqH,EAAUF,EACpCE,IAEExI,EAAIwI,EAAU,GAAKzI,EAAIO,mBACvBgI,EAA2BE,IAC9BF,EAA2BE,IAO7BC,EAAa,SAASnJ,GACxB,GAAIoJ,KACJ,KAAK,GAAIC,KAAOrJ,GACVA,EAAKuF,eAAe8D,KACV,MAARA,GACM,iBAARA,GACQ,iBAARA,GACQ,cAARA,EAGAD,EAAS5D,KAAK6D,EAAM,IAAMrJ,EAAKqJ,IAE/BD,EAAS5D,KAAK6D,EAAM,IAAMC,mBAAmBtJ,EAAKqJ,KAIxD,OAAOD,GAAShD,KAAK,MAEnBmD,EAAoB,SAASzI,GAO/B,MANAA,GAAI0C,SAAS1C,EAAG,IACZA,EAAIL,EAAIO,kBACVF,EAAIL,EAAIO,kBACCF,EAAIL,EAAIwC,oBACjBnC,EAAIL,EAAIwC,mBAEHnC,GAEL0I,EAAa,SAAS9I,GAExB,IAAK,GADD+I,MACKP,EAAUzI,EAAIM,mBAClBmI,GAAWzI,EAAI0C,mBACf+F,IAAW,CAEd,GAAIlG,GAAQuG,EAAkB7I,EAAIwI,EAAU,KACxClG,EAAQvC,EAAIO,mBACZkI,GAAWF,KAEbS,EAASP,EAAU,GAAKlG,EAEpBgG,EAA2BE,IAC7BF,EAA2BE,IAIjC,MAAOO,GAASrD,KAAK,KAEvB,QACEzF,8BAA+B,WAC7BqI,EAA2B,GAE7BnJ,KACEC,SAAU,WACR,MAAOiJ,GAAMlJ,IAAI,8BACdE,KAAK,SAAS2J,GACb,MAAOA,GAAS1J,QAGtBC,WAAY,WACV,MAAO8I,GAAMlJ,IAAI,sBACdE,KAAK,SAAS2J,GACb,MAAOA,GAAS1J,QAGtB8E,MAAO,WACL,MAAOiE,GAAMlJ,IAAI,mBACdE,KAAK,SAAS2J,GACb,MAAOA,GAAS1J,QAGtBkH,QAAS,SAAS1G,GAChB,MAAOuI,IACLY,OAAQ,MACRjK,IAAK,kBACLkK,QACEpJ,GAAMA,KAGPT,KAAK,SAAS2J,GACb,MAAOA,GAAS1J,QAGtBqG,WAAY,SAAS7F,GACnB,MAAOuI,IACLY,OAAQ,MACRjK,IAAK,oBACLkK,QACEpJ,GAAMA,KAGPT,KAAK,SAAS2J,GACb,MAAOA,GAAS1J,QAGtBa,IAAK,SAASL,GACZ,MAAOuI,IACLY,OAAQ,MACRjK,IAAK,WACLkK,QACEvE,EAAK7E,KAGNT,KAAK,SAAS2J,GAEb,MADAT,GAA+BS,EAAS1J,KAAKU,KACtCgJ,EAAS1J,QAGtBoH,aAAc,SAAS5G,GACrB,MAAOuI,IACLY,OAAQ,MACRjK,IAAK,sBACLkK,QACEpJ,GAAMA,KAGPT,KAAK,SAAS2J,GACb,MAAOA,GAAS1J,SAIxBgC,MACEsG,eAAgB,SAAStI,GACvB,MAAO+I,IACLY,OAAQ,OACRjK,IAAK,mBACLM,KAAMmJ,EAAWnJ,GACjB6J,SACEC,eAAgB,uCAEjB/J,KAAK,SAAS2J,GACf,MAAOA,GAAS1J,QAGpB2F,YAAa,SAAS3F,GACpB,MAAO+I,IACLY,OAAQ,OACRjK,IAAK,gBACLM,KAAMmJ,EAAWnJ,GACjB6J,SACEC,eAAgB,uCAEjB/J,KAAK,SAAS2J,GACf,MAAOA,GAAS1J,QAGpBa,IAAK,SAASkJ,EAAUrJ,GACtB,GAAIV,IACFqF,EAAG0E,EACH7H,EAAGsH,EAAW9I,GAEhB,OAAOqI,IACLY,OAAQ,OACRjK,IAAK,WACLM,KAAMmJ,EAAWnJ,GACjB6J,SACEC,eAAgB,uCAEjB/J,KAAK,SAAS2J,GACf,MAAOA,GAAS1J,QAGpB0E,YAAa,SAASsF,EAAUC,GAK9B,MAAOlB,IACLY,OAAQ,OACRjK,IAAK,oBACLM,KAAMmJ,GANNc,MAAOA,EACPC,UAAWF,IAMXH,SACEC,eAAgB,uCAEjB/J,KAAK,SAAS2J,GACf,MAAOA,GAAS1J,SAItBsE,QACEqE,SAAU,WACR,MAAOI,GAAMlJ,IAAI,SACdE,KAAK,SAAS2J,GACb,MAAOA,GAAS1J,QAGtBqE,OAAQ,WACN,MAAO0E,GAAMlJ,IAAI,WACdE,KAAK,SAAS2J,GACb,MAAOA,GAAS1J,QAGtBmK,WAAY,WACV,MAAOpB,GAAMlJ,IAAI,gBACdE,KAAK,SAAS2J,GACb,MAAOA,GAAS1J,SAIxBoK,KAEEC,eAAgB,SAASN,EAAUO,EAAKC,GACtC,MAAOxB,IACLY,OAAQ,MACRjK,IAAK,yBACLkK,QACEpJ,GAAMuJ,EACNO,IAAOA,EACPC,QAAWA,KAGZxK,KAAK,SAAS2J,GACb,MAAOA,GAAS1J,QAItBwK,WAAY,SAAST,EAAUO,EAAKC,EAASE,EAAMC,GACjD,MAAO3B,IACLY,OAAQ,MACRjK,IAAK,6BACLkK,QACEpJ,GAAMuJ,EACNO,IAAOA,EACPC,QAAWA,EACXE,KAAQA,EACRE,IAAOD,KAGR3K,KAAK,SAAS2J,GACb,MAAOA,GAAS1J,QAItB4K,iBAAkB,SAASb,EAAUO,GACnC,MAAOvB,IACLY,OAAQ,MACRjK,IAAK,2BACLkK,QACEpJ,GAAMuJ,EACNO,IAAOA,KAGRvK,KAAK,SAAS2J,GACb,MAAOA,GAAS1J,QAItB6K,qBAAsB,SAASd,EAAUO,GACvC,MAAOvB,IACLY,OAAQ,MACRjK,IAAK,+BACLkK,QACEpJ,GAAMuJ,EACNO,IAAOA,KAGRvK,KAAK,SAAS2J,GACb,MAAOA,GAAS1J,QAItB8K,kBAAmB,SAASf,EAAUO,GACpC,MAAOvB,IACLY,OAAQ,MACRjK,IAAK,gCACLkK,QACEpJ,GAAMuJ,EACNO,IAAOA,KAGRvK,KAAK,SAAS2J,GACb,MAAOA,GAAS1J,QAItB+K,QAAS,SAAShB,EAAUO,GAC1B,MAAOvB,IACLY,OAAQ,MACRjK,IAAK,qBACLkK,QACEpJ,GAAMuJ,EACNO,IAAOA,KAGRvK,KAAK,SAAS2J,GACb,MAAOA,GAAS1J,QAItBgL,iBAAkB,SAASjB,EAAUO,GACnC,MAAOvB,IACLY,OAAQ,MACRjK,IAAK,8BACLkK,QACEpJ,GAAMuJ,EACNO,IAAOA,KAGRvK,KAAK,SAAS2J,GACb,MAAOA,GAAS1J,QAItBiL,KAAM,SAASlB,GACb,MAAOhB,IACLY,OAAQ,MACRjK,IAAK,iBACLkK,QACEpJ,GAAMuJ,KAGPhK,KAAK,SAAS2J,GACb,MAAOA,GAAS1J,QAItBkL,aAAc,SAASnB,EAAUoB,GAC/B,MAAOpC,IACLY,OAAQ,MACRjK,IAAK,qBACLkK,QACEpJ,GAAMuJ,EACNoB,YAAeA,KAGhBpL,KAAK,SAAS2J,GACb,MAAOA,GAAS1J,SAIxB4F,OACEC,MAAO,SAASuF,EAAMjL,OACA,KAATiL,EACT1I,EAAE,mBAAmB2I,KAAKD,GAE1B1I,EAAE,mBAAmB2I,KAAK,+BAEP,KAAVlL,EACTuC,EAAE,oBAAoB2I,KAAKlL,GAE3BuC,EAAE,oBAAoB2I,KAAK,SAE7B3I,EAAE,eAAemD,MAAM,cCvWjCpH,IAAI6M,OAAO,YAAa,WACtB,YACA,OAAO,UAAS5H,EAAO6H,GAErB,MADAA,GAAQ/H,SAAS+H,EAAO,IACjB7H,EAAM8H,MAAMD","file":"app.min.js"} \ No newline at end of file +{"version":3,"sources":["../../../../node/app/src/app.js","../../../../node/app/src/controllers/menu.js","../../../../node/app/src/controllers/patch_universe.js","../../../../node/app/src/controllers/rdm_universe.js","../../../../node/app/src/controllers/universe.js","../../../../node/app/src/controllers/fader_universe.js","../../../../node/app/src/controllers/keypad_universe.js","../../../../node/app/src/controllers/plugins.js","../../../../node/app/src/controllers/add_universe.js","../../../../node/app/src/controllers/plugin_info.js","../../../../node/app/src/controllers/setting_universe.js","../../../../node/app/src/controllers/header.js","../../../../node/app/src/controllers/overview.js","../../../../node/app/src/constants.js","../../../../node/app/src/factories/ola.js","../../../../node/app/src/filters/start_form.js"],"names":["ola","angular","module","config","$routeProvider","when","templateUrl","controller","otherwise","redirectTo","$scope","$ola","$interval","$location","Items","Info","goTo","url","path","getData","get","ItemList","then","data","ServerInfo","document","title","instance_name","ip","$routeParams","Universe","id","OLA","dmx","resetHighestChannelNumberUsed","interval","Dmx","i","MAX_CHANNEL_NUMBER","MIN_CHANNEL_VALUE","$on","cancel","getColor","$window","list","last","offset","send","light","j","change","dmxGet","length","ceil","Math","post","page","d","offsetLimit","limit","getWidth","floor","innerWidth","getLimit","width","$","resize","$apply","regexkeypad","check","channelValue","value","MAX_CHANNEL_VALUE","channelNumber","MIN_CHANNEL_NUMBER","regexGroups","result","undefined","this","parseInt","field","input","tmpField","substr","fields","exec","submit","begin","end","active","enabled","getInfo","Reload","action","go","changeStatus","current","PluginState","getStyle","style","background-color","Ports","addPorts","Universes","Class","Data","name","add_ports","u","universes","hasOwnProperty","push","Submit","indexOf","AddUniverse","error","modal","getDirection","direction","updateId","TogglePort","grep","Boolean","join","InfoPlugin","description","getElementById","textContent","innerHTML","replace","stateColor","val","loadData","old","model","Remove","Add","PortsId","DeactivePorts","UniverseInfo","merge_mode","ActivePorts","output_ports","concat","input_ports","Save","a","remove_ports","modified","forEach","element","index","port","port_old","priority","current_mode","modify_ports","ModifyUniverse","header","tab","hash","location","Shutdown","goUniverse","constant","factory","$http","highestChannelNumberUsed","updateHighestChannelNumberUsed","channel","max","postEncode","PostData","key","encodeURIComponent","channelValueCheck","dmxConvert","integers","response","method","params","headers","Content-Type","universe","pluginId","state","plugin_id","ReloadPids","rdm","GetSectionInfo","uid","section","SetSection","hint","option","int","GetSupportedPids","GetSupportedSections","UidIdentifyDevice","UidInfo","UidPersonalities","Uids","RunDiscovery","incremental","body","text","filter","start","slice"],"mappings":"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","file":"app.min.js"} \ No newline at end of file