Advertisement
Guest User

Music UI

a guest
Nov 29th, 2023
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
JSON 45.82 KB | None | 0 0
  1. [
  2.     {
  3.         "id": "3ea12622889aa757",
  4.         "type": "subflow",
  5.         "name": "play status",
  6.         "info": "Helps to reduce code duplication only",
  7.         "category": "",
  8.         "in": [
  9.             {
  10.                 "x": 40,
  11.                 "y": 40,
  12.                 "wires": [
  13.                     {
  14.                         "id": "6c63ee55a3c33172"
  15.                     }
  16.                 ]
  17.             }
  18.         ],
  19.         "out": [
  20.             {
  21.                 "x": 540,
  22.                 "y": 60,
  23.                 "wires": [
  24.                     {
  25.                         "id": "6c63ee55a3c33172",
  26.                         "port": 0
  27.                     }
  28.                 ]
  29.             }
  30.         ],
  31.         "env": [],
  32.         "meta": {
  33.             "module": "play status",
  34.             "desc": "Helps to reduce code duplication only"
  35.         },
  36.         "color": "#DEBD5C",
  37.         "icon": "font-awesome/fa-pause-circle-o",
  38.         "status": {
  39.             "x": 540,
  40.             "y": 140,
  41.             "wires": [
  42.                 {
  43.                     "id": "6c63ee55a3c33172",
  44.                     "port": 1
  45.                 }
  46.             ]
  47.         }
  48.     },
  49.     {
  50.         "id": "6c63ee55a3c33172",
  51.         "type": "function",
  52.         "z": "3ea12622889aa757",
  53.         "name": "Convert Current Status To Icon And Colour",
  54.         "func": "var backColors = global.get(\"backColors\");\nvar icon       = \"radio_button_unchecked\";\nvar background = backColors.grey90;\nvar fill       = \"grey\";\nvar state      = \"unknown\";\n\nif (typeof msg.payload === \"undefined\") {\n    msg.payload = {};\n    msg.payload.playbackState = \"unknown\";\n}\nelse if (typeof msg.payload.playbackState === \"undefined\") {\n    msg.payload.playbackState = \"unknown\";\n}\n\nswitch (msg.payload.playbackState) {\n    case \"stopped\":\n        icon       = \"play_arrow\";\n        background = backColors.green;\n        fill       = \"yellow\";\n        state      = \"paused\";\n        break;\n\n    case \"playing\":\n        icon       = \"pause\";\n        background = backColors.yellow;\n        fill       = \"green\";\n        state      = \"playing\";\n        break;\n\n    case \"paused\":\n        icon       = \"play_arrow\";\n        background = backColors.green;\n        fill       = \"yellow\";\n        state      = \"paused\";\n        break;\n\n    case \"idle\":\n        icon       = \"stop\";\n        background = backColors.blue;\n        fill       = \"blue\";\n        state      = \"idle\";\n        break;\n\n    default:\n        icon       = \"radio_button_unchecked\";\n        background = backColors.grey90;\n        fill       = \"blue\";\n        state      = msg.payload.playbackState;\n}\n\nmsg.icon       = icon;\nmsg.white      = backColors.white;\nmsg.background = background;\n\n// Node Status Text\nvar currentStatus = {\n    fill: fill,\n    shape: \"dot\",\n    text: `State: ${state}`\n};\n\nreturn [\n    msg,\n    {payload: currentStatus}\n];\n",
  55.         "outputs": 2,
  56.         "timeout": "",
  57.         "noerr": 0,
  58.         "initialize": "",
  59.         "finalize": "",
  60.         "libs": [],
  61.         "x": 290,
  62.         "y": 100,
  63.         "wires": [
  64.             [],
  65.             []
  66.         ]
  67.     },
  68.     {
  69.         "id": "0c5d633f3d0aa950",
  70.         "type": "comment",
  71.         "z": "3ea12622889aa757",
  72.         "name": "This reduces code duplication",
  73.         "info": "",
  74.         "x": 240,
  75.         "y": 40,
  76.         "wires": []
  77.     },
  78.     {
  79.         "id": "1577a1eb80ede6ca",
  80.         "type": "tab",
  81.         "label": "Music UI",
  82.         "disabled": false,
  83.         "info": ""
  84.     },
  85.     {
  86.         "id": "3c575646a12ecdd2",
  87.         "type": "group",
  88.         "z": "1577a1eb80ede6ca",
  89.         "name": "Music Controls - Lounge Group",
  90.         "style": {
  91.             "fill": "#ffefbf",
  92.             "fill-opacity": "0.25",
  93.             "label": true,
  94.             "stroke": "#ffC000",
  95.             "color": "#000000"
  96.         },
  97.         "nodes": [
  98.             "1686920bd9af578f",
  99.             "78b2baa65ef5f913",
  100.             "07eeb4f7aa418e27",
  101.             "17635279aac1c8b4",
  102.             "a83832506dc91f31",
  103.             "c3bd608346d08808",
  104.             "232ed8fe3dfd821d",
  105.             "2775acb0ed7cf492",
  106.             "df172b8bc2166357",
  107.             "64f9d5f7af92241c",
  108.             "1fb4a70acb1e0deb"
  109.         ],
  110.         "x": 14,
  111.         "y": 319,
  112.         "w": 522,
  113.         "h": 242,
  114.         "info": "// nrlint no-loops:off\n"
  115.     },
  116.     {
  117.         "id": "5dedc86d833d2f82",
  118.         "type": "group",
  119.         "z": "1577a1eb80ede6ca",
  120.         "name": "Music TrackInfo - Study",
  121.         "style": {
  122.             "stroke": "#ffC000",
  123.             "fill": "#ffefbf",
  124.             "fill-opacity": "0.25",
  125.             "label": true,
  126.             "color": "#000000"
  127.         },
  128.         "nodes": [
  129.             "726aeb24cf7c3c90",
  130.             "4d776a5574877840",
  131.             "fb0e30124abec990",
  132.             "6d178decac8c3537",
  133.             "cf35d7095f778823",
  134.             "6cab5ee501c7fe08",
  135.             "d2eba780637a8a91",
  136.             "8a6a96549a6871b4",
  137.             "e7a9672a4af7c1a6",
  138.             "b286368fe058ee50",
  139.             "68ec3c38f6fd192d",
  140.             "4ca3b27fc4bd4bc3"
  141.         ],
  142.         "x": 554,
  143.         "y": 579,
  144.         "w": 412,
  145.         "h": 242
  146.     },
  147.     {
  148.         "id": "d0bf2a659e4e6795",
  149.         "type": "group",
  150.         "z": "1577a1eb80ede6ca",
  151.         "name": "Music TrackInfo - Lounge Group",
  152.         "style": {
  153.             "stroke": "#ffC000",
  154.             "fill": "#ffefbf",
  155.             "fill-opacity": "0.25",
  156.             "label": true,
  157.             "color": "#000000"
  158.         },
  159.         "nodes": [
  160.             "93e8eefb33a3afbb",
  161.             "94bc81db30ab2e25",
  162.             "f09eb3ce70c443fa",
  163.             "fed19dd1434279c9",
  164.             "c2e14170fe6d7fdf",
  165.             "caa4d936583a5577",
  166.             "acad0a0112634949",
  167.             "c1cb3c70476c26be",
  168.             "319c8d39877390e9",
  169.             "c843b1c511f470d8",
  170.             "33a8c913445a89a6",
  171.             "abb75559adb961bf"
  172.         ],
  173.         "x": 554,
  174.         "y": 319,
  175.         "w": 412,
  176.         "h": 242
  177.     },
  178.     {
  179.         "id": "f365939e4b24212d",
  180.         "type": "group",
  181.         "z": "1577a1eb80ede6ca",
  182.         "name": "Music Controls - Study",
  183.         "style": {
  184.             "fill": "#ffefbf",
  185.             "fill-opacity": "0.25",
  186.             "label": true,
  187.             "stroke": "#ffC000",
  188.             "color": "#000000"
  189.         },
  190.         "nodes": [
  191.             "5a639d55b5285c82",
  192.             "d9602b81d7d9f466",
  193.             "f9b2754d3d8bc99e",
  194.             "d79211d106243437",
  195.             "1c979e46c6195e65",
  196.             "6a865ef4c853fa47",
  197.             "195f5088b689d9e9",
  198.             "fdfab8358aca28c1",
  199.             "a6b57b79cb1405bf",
  200.             "df47e953c3722f3f",
  201.             "108d075174f1e5b8"
  202.         ],
  203.         "x": 14,
  204.         "y": 579,
  205.         "w": 522,
  206.         "h": 242,
  207.         "info": "// nrlint no-loops:off\n"
  208.     },
  209.     {
  210.         "id": "8341e77a3db2ac20",
  211.         "type": "group",
  212.         "z": "1577a1eb80ede6ca",
  213.         "name": "Volume Buttons",
  214.         "style": {
  215.             "stroke": "#ffC000",
  216.             "fill": "#ffefbf",
  217.             "fill-opacity": "0.25",
  218.             "label": true,
  219.             "color": "#000000"
  220.         },
  221.         "nodes": [
  222.             "8352a5ca94d67ece",
  223.             "503753a12ee92e2f",
  224.             "8770a7343c93e604",
  225.             "0e975831db7c85c9",
  226.             "c875ad3370eefbb4",
  227.             "a28c01ad6ca248a8",
  228.             "ba5cc2af526be87a",
  229.             "8d0a5d759bfa177a",
  230.             "9e92a25097d7fb8e",
  231.             "ac38921646b7142f",
  232.             "ed6bd7d0f49f68dd",
  233.             "64cd11a0e798bbc2",
  234.             "5e2968b3302e7ef5"
  235.         ],
  236.         "x": 14,
  237.         "y": 19,
  238.         "w": 892,
  239.         "h": 162
  240.     },
  241.     {
  242.         "id": "93e8eefb33a3afbb",
  243.         "type": "ui_text",
  244.         "z": "1577a1eb80ede6ca",
  245.         "g": "d0bf2a659e4e6795",
  246.         "group": "ade6187efe7c1d0b",
  247.         "order": 19,
  248.         "width": 5,
  249.         "height": 1,
  250.         "name": "Album",
  251.         "label": "{{msg.payload.currentTrack.album}}",
  252.         "format": "",
  253.         "layout": "row-left",
  254.         "className": "",
  255.         "x": 730,
  256.         "y": 480,
  257.         "wires": []
  258.     },
  259.     {
  260.         "id": "94bc81db30ab2e25",
  261.         "type": "ui_text",
  262.         "z": "1577a1eb80ede6ca",
  263.         "g": "d0bf2a659e4e6795",
  264.         "group": "ade6187efe7c1d0b",
  265.         "order": 16,
  266.         "width": 5,
  267.         "height": 1,
  268.         "name": "Artist",
  269.         "label": "{{msg.payload.currentTrack.artist}}",
  270.         "format": "",
  271.         "layout": "row-left",
  272.         "className": "",
  273.         "x": 730,
  274.         "y": 440,
  275.         "wires": []
  276.     },
  277.     {
  278.         "id": "f09eb3ce70c443fa",
  279.         "type": "ui_text",
  280.         "z": "1577a1eb80ede6ca",
  281.         "g": "d0bf2a659e4e6795",
  282.         "group": "ade6187efe7c1d0b",
  283.         "order": 14,
  284.         "width": 6,
  285.         "height": 1,
  286.         "name": "Track",
  287.         "label": "{{msg.payload.currentTrack.title}}",
  288.         "format": "",
  289.         "layout": "row-left",
  290.         "x": 890,
  291.         "y": 400,
  292.         "wires": []
  293.     },
  294.     {
  295.         "id": "fed19dd1434279c9",
  296.         "type": "link in",
  297.         "z": "1577a1eb80ede6ca",
  298.         "g": "d0bf2a659e4e6795",
  299.         "name": "KLGroup-Controls",
  300.         "links": [
  301.             "9691d3d8c01a1303"
  302.         ],
  303.         "x": 595,
  304.         "y": 380,
  305.         "wires": [
  306.             [
  307.                 "94bc81db30ab2e25",
  308.                 "93e8eefb33a3afbb",
  309.                 "c1cb3c70476c26be",
  310.                 "c843b1c511f470d8",
  311.                 "abb75559adb961bf"
  312.             ]
  313.         ],
  314.         "icon": "node-red-dashboard/ui_form.png"
  315.     },
  316.     {
  317.         "id": "c2e14170fe6d7fdf",
  318.         "type": "ui_template",
  319.         "z": "1577a1eb80ede6ca",
  320.         "g": "d0bf2a659e4e6795",
  321.         "group": "ade6187efe7c1d0b",
  322.         "name": "Artist",
  323.         "order": 15,
  324.         "width": 1,
  325.         "height": 1,
  326.         "format": "<ng-md-icon icon=\"people\"></ng-md-icon>\n",
  327.         "storeOutMessages": false,
  328.         "fwdInMessages": false,
  329.         "resendOnRefresh": true,
  330.         "templateScope": "local",
  331.         "className": "",
  332.         "x": 890,
  333.         "y": 440,
  334.         "wires": [
  335.             []
  336.         ]
  337.     },
  338.     {
  339.         "id": "caa4d936583a5577",
  340.         "type": "ui_template",
  341.         "z": "1577a1eb80ede6ca",
  342.         "g": "d0bf2a659e4e6795",
  343.         "group": "ade6187efe7c1d0b",
  344.         "name": "Track",
  345.         "order": 13,
  346.         "width": 1,
  347.         "height": 1,
  348.         "format": "<ng-md-icon icon=\"format_list_numbered\"></ng-md-icon>\n",
  349.         "storeOutMessages": false,
  350.         "fwdInMessages": false,
  351.         "resendOnRefresh": true,
  352.         "templateScope": "local",
  353.         "className": "",
  354.         "x": 890,
  355.         "y": 360,
  356.         "wires": [
  357.             []
  358.         ]
  359.     },
  360.     {
  361.         "id": "acad0a0112634949",
  362.         "type": "ui_template",
  363.         "z": "1577a1eb80ede6ca",
  364.         "g": "d0bf2a659e4e6795",
  365.         "group": "ade6187efe7c1d0b",
  366.         "name": "Album",
  367.         "order": 18,
  368.         "width": 1,
  369.         "height": 1,
  370.         "format": "<ng-md-icon icon=\"album\"></ng-md-icon>\n",
  371.         "storeOutMessages": false,
  372.         "fwdInMessages": false,
  373.         "resendOnRefresh": true,
  374.         "templateScope": "local",
  375.         "className": "",
  376.         "x": 890,
  377.         "y": 480,
  378.         "wires": [
  379.             []
  380.         ]
  381.     },
  382.     {
  383.         "id": "1686920bd9af578f",
  384.         "type": "ui_button",
  385.         "z": "1577a1eb80ede6ca",
  386.         "g": "3c575646a12ecdd2",
  387.         "name": "State",
  388.         "group": "ade6187efe7c1d0b",
  389.         "order": 9,
  390.         "width": 3,
  391.         "height": 1,
  392.         "passthru": false,
  393.         "label": "",
  394.         "tooltip": "",
  395.         "color": "{{white}}",
  396.         "bgcolor": "{{background}}",
  397.         "className": "",
  398.         "icon": "{{icon}}",
  399.         "payload": "playpause",
  400.         "payloadType": "str",
  401.         "topic": "Lounge",
  402.         "topicType": "str",
  403.         "x": 370,
  404.         "y": 520,
  405.         "wires": [
  406.             [
  407.                 "17635279aac1c8b4",
  408.                 "c3bd608346d08808"
  409.             ]
  410.         ]
  411.     },
  412.     {
  413.         "id": "78b2baa65ef5f913",
  414.         "type": "ui_button",
  415.         "z": "1577a1eb80ede6ca",
  416.         "g": "3c575646a12ecdd2",
  417.         "name": "Next",
  418.         "group": "ade6187efe7c1d0b",
  419.         "order": 10,
  420.         "width": 2,
  421.         "height": 1,
  422.         "passthru": false,
  423.         "label": "",
  424.         "tooltip": "",
  425.         "color": "#FFFFFF",
  426.         "bgcolor": "#00A0A0",
  427.         "className": "",
  428.         "icon": "skip_next",
  429.         "payload": "next",
  430.         "payloadType": "str",
  431.         "topic": "Lounge",
  432.         "topicType": "str",
  433.         "x": 370,
  434.         "y": 480,
  435.         "wires": [
  436.             [
  437.                 "17635279aac1c8b4"
  438.             ]
  439.         ]
  440.     },
  441.     {
  442.         "id": "07eeb4f7aa418e27",
  443.         "type": "ui_button",
  444.         "z": "1577a1eb80ede6ca",
  445.         "g": "3c575646a12ecdd2",
  446.         "name": "Prev",
  447.         "group": "ade6187efe7c1d0b",
  448.         "order": 8,
  449.         "width": 2,
  450.         "height": 1,
  451.         "passthru": false,
  452.         "label": "",
  453.         "tooltip": "",
  454.         "color": "#FFFFFF",
  455.         "bgcolor": "#00A0A0",
  456.         "className": "",
  457.         "icon": "skip_previous",
  458.         "payload": "previous",
  459.         "payloadType": "str",
  460.         "topic": "Lounge",
  461.         "topicType": "str",
  462.         "x": 370,
  463.         "y": 440,
  464.         "wires": [
  465.             [
  466.                 "17635279aac1c8b4"
  467.             ]
  468.         ]
  469.     },
  470.     {
  471.         "id": "17635279aac1c8b4",
  472.         "type": "link out",
  473.         "z": "1577a1eb80ede6ca",
  474.         "g": "3c575646a12ecdd2",
  475.         "name": "To Control Input",
  476.         "links": [
  477.             "5157e70bae68b04e"
  478.         ],
  479.         "x": 495,
  480.         "y": 500,
  481.         "wires": [],
  482.         "icon": "font-awesome/fa-music"
  483.     },
  484.     {
  485.         "id": "a83832506dc91f31",
  486.         "type": "link in",
  487.         "z": "1577a1eb80ede6ca",
  488.         "g": "3c575646a12ecdd2",
  489.         "name": "KLGroup-Controls",
  490.         "links": [
  491.             "9691d3d8c01a1303"
  492.         ],
  493.         "x": 55,
  494.         "y": 500,
  495.         "wires": [
  496.             [
  497.                 "c3bd608346d08808",
  498.                 "232ed8fe3dfd821d",
  499.                 "2775acb0ed7cf492"
  500.             ]
  501.         ],
  502.         "icon": "node-red-dashboard/ui_form.png"
  503.     },
  504.     {
  505.         "id": "726aeb24cf7c3c90",
  506.         "type": "ui_text",
  507.         "z": "1577a1eb80ede6ca",
  508.         "g": "5dedc86d833d2f82",
  509.         "group": "c84a154901b2af92",
  510.         "order": 19,
  511.         "width": 5,
  512.         "height": 1,
  513.         "name": "Album",
  514.         "label": "{{msg.payload.currentTrack.album}}",
  515.         "format": "",
  516.         "layout": "row-left",
  517.         "x": 730,
  518.         "y": 740,
  519.         "wires": []
  520.     },
  521.     {
  522.         "id": "4d776a5574877840",
  523.         "type": "ui_text",
  524.         "z": "1577a1eb80ede6ca",
  525.         "g": "5dedc86d833d2f82",
  526.         "group": "c84a154901b2af92",
  527.         "order": 16,
  528.         "width": 5,
  529.         "height": 1,
  530.         "name": "Artist",
  531.         "label": "{{msg.payload.currentTrack.artist}}",
  532.         "format": "",
  533.         "layout": "row-left",
  534.         "x": 730,
  535.         "y": 700,
  536.         "wires": []
  537.     },
  538.     {
  539.         "id": "fb0e30124abec990",
  540.         "type": "ui_text",
  541.         "z": "1577a1eb80ede6ca",
  542.         "g": "5dedc86d833d2f82",
  543.         "group": "c84a154901b2af92",
  544.         "order": 14,
  545.         "width": 6,
  546.         "height": 1,
  547.         "name": "Track",
  548.         "label": "{{msg.payload.currentTrack.title}}",
  549.         "format": "",
  550.         "layout": "row-left",
  551.         "x": 890,
  552.         "y": 660,
  553.         "wires": []
  554.     },
  555.     {
  556.         "id": "6d178decac8c3537",
  557.         "type": "link in",
  558.         "z": "1577a1eb80ede6ca",
  559.         "g": "5dedc86d833d2f82",
  560.         "name": "Study-Controls",
  561.         "links": [
  562.             "5acd87489bbd231c",
  563.             "f00580961c860116"
  564.         ],
  565.         "x": 595,
  566.         "y": 640,
  567.         "wires": [
  568.             [
  569.                 "4d776a5574877840",
  570.                 "726aeb24cf7c3c90",
  571.                 "8a6a96549a6871b4",
  572.                 "b286368fe058ee50",
  573.                 "4ca3b27fc4bd4bc3"
  574.             ]
  575.         ],
  576.         "icon": "node-red-dashboard/ui_form.png"
  577.     },
  578.     {
  579.         "id": "cf35d7095f778823",
  580.         "type": "ui_template",
  581.         "z": "1577a1eb80ede6ca",
  582.         "g": "5dedc86d833d2f82",
  583.         "group": "c84a154901b2af92",
  584.         "name": "Artist",
  585.         "order": 15,
  586.         "width": 1,
  587.         "height": 1,
  588.         "format": "<ng-md-icon icon=\"people\"></ng-md-icon>\n",
  589.         "storeOutMessages": false,
  590.         "fwdInMessages": false,
  591.         "resendOnRefresh": true,
  592.         "templateScope": "local",
  593.         "className": "",
  594.         "x": 890,
  595.         "y": 700,
  596.         "wires": [
  597.             []
  598.         ]
  599.     },
  600.     {
  601.         "id": "6cab5ee501c7fe08",
  602.         "type": "ui_template",
  603.         "z": "1577a1eb80ede6ca",
  604.         "g": "5dedc86d833d2f82",
  605.         "group": "c84a154901b2af92",
  606.         "name": "Track",
  607.         "order": 13,
  608.         "width": 1,
  609.         "height": 1,
  610.         "format": "<ng-md-icon icon=\"format_list_numbered\"></ng-md-icon>\n",
  611.         "storeOutMessages": false,
  612.         "fwdInMessages": false,
  613.         "resendOnRefresh": true,
  614.         "templateScope": "local",
  615.         "className": "",
  616.         "x": 890,
  617.         "y": 620,
  618.         "wires": [
  619.             []
  620.         ]
  621.     },
  622.     {
  623.         "id": "d2eba780637a8a91",
  624.         "type": "ui_template",
  625.         "z": "1577a1eb80ede6ca",
  626.         "g": "5dedc86d833d2f82",
  627.         "group": "c84a154901b2af92",
  628.         "name": "Album",
  629.         "order": 18,
  630.         "width": 1,
  631.         "height": 1,
  632.         "format": "<ng-md-icon icon=\"album\"></ng-md-icon>\n",
  633.         "storeOutMessages": false,
  634.         "fwdInMessages": false,
  635.         "resendOnRefresh": true,
  636.         "templateScope": "local",
  637.         "className": "",
  638.         "x": 890,
  639.         "y": 740,
  640.         "wires": [
  641.             []
  642.         ]
  643.     },
  644.     {
  645.         "id": "5a639d55b5285c82",
  646.         "type": "ui_button",
  647.         "z": "1577a1eb80ede6ca",
  648.         "g": "f365939e4b24212d",
  649.         "name": "State",
  650.         "group": "c84a154901b2af92",
  651.         "order": 9,
  652.         "width": 3,
  653.         "height": 1,
  654.         "passthru": false,
  655.         "label": "",
  656.         "tooltip": "",
  657.         "color": "{{white}}",
  658.         "bgcolor": "{{background}}",
  659.         "icon": "{{icon}}",
  660.         "payload": "playpause",
  661.         "payloadType": "str",
  662.         "topic": "Study",
  663.         "topicType": "str",
  664.         "x": 370,
  665.         "y": 780,
  666.         "wires": [
  667.             [
  668.                 "d79211d106243437",
  669.                 "6a865ef4c853fa47"
  670.             ]
  671.         ]
  672.     },
  673.     {
  674.         "id": "d9602b81d7d9f466",
  675.         "type": "ui_button",
  676.         "z": "1577a1eb80ede6ca",
  677.         "g": "f365939e4b24212d",
  678.         "name": "Next",
  679.         "group": "c84a154901b2af92",
  680.         "order": 10,
  681.         "width": 2,
  682.         "height": 1,
  683.         "passthru": false,
  684.         "label": "",
  685.         "tooltip": "",
  686.         "color": "#FFFFFF",
  687.         "bgcolor": "#00A0A0",
  688.         "className": "",
  689.         "icon": "skip_next",
  690.         "payload": "next",
  691.         "payloadType": "str",
  692.         "topic": "Study",
  693.         "topicType": "str",
  694.         "x": 370,
  695.         "y": 740,
  696.         "wires": [
  697.             [
  698.                 "d79211d106243437"
  699.             ]
  700.         ]
  701.     },
  702.     {
  703.         "id": "f9b2754d3d8bc99e",
  704.         "type": "ui_button",
  705.         "z": "1577a1eb80ede6ca",
  706.         "g": "f365939e4b24212d",
  707.         "name": "Prev",
  708.         "group": "c84a154901b2af92",
  709.         "order": 8,
  710.         "width": 2,
  711.         "height": 1,
  712.         "passthru": false,
  713.         "label": "",
  714.         "tooltip": "",
  715.         "color": "#FFFFFF",
  716.         "bgcolor": "#00A0A0",
  717.         "className": "",
  718.         "icon": "skip_previous",
  719.         "payload": "previous",
  720.         "payloadType": "str",
  721.         "topic": "Study",
  722.         "topicType": "str",
  723.         "x": 370,
  724.         "y": 700,
  725.         "wires": [
  726.             [
  727.                 "d79211d106243437"
  728.             ]
  729.         ]
  730.     },
  731.     {
  732.         "id": "d79211d106243437",
  733.         "type": "link out",
  734.         "z": "1577a1eb80ede6ca",
  735.         "g": "f365939e4b24212d",
  736.         "name": "To Control Input",
  737.         "links": [
  738.             "5157e70bae68b04e"
  739.         ],
  740.         "x": 495,
  741.         "y": 760,
  742.         "wires": [],
  743.         "icon": "font-awesome/fa-music"
  744.     },
  745.     {
  746.         "id": "1c979e46c6195e65",
  747.         "type": "link in",
  748.         "z": "1577a1eb80ede6ca",
  749.         "g": "f365939e4b24212d",
  750.         "name": "Study-Controls",
  751.         "links": [
  752.             "5acd87489bbd231c",
  753.             "f00580961c860116"
  754.         ],
  755.         "x": 55,
  756.         "y": 760,
  757.         "wires": [
  758.             [
  759.                 "6a865ef4c853fa47",
  760.                 "195f5088b689d9e9",
  761.                 "fdfab8358aca28c1"
  762.             ]
  763.         ],
  764.         "icon": "node-red-dashboard/ui_form.png"
  765.     },
  766.     {
  767.         "id": "8a6a96549a6871b4",
  768.         "type": "ui_template",
  769.         "z": "1577a1eb80ede6ca",
  770.         "g": "5dedc86d833d2f82",
  771.         "group": "c84a154901b2af92",
  772.         "name": "Art",
  773.         "order": 1,
  774.         "width": 6,
  775.         "height": 6,
  776.         "format": "<style>\n    img {\n        max-width: 100%;\n        max-height: 100%;\n        overflow: hidden;\n    }\n</style>\n\n<div>\n    <img src=\"{{msg.payload.currentTrack.artUri}}\"/>\n</div>\n",
  777.         "storeOutMessages": false,
  778.         "fwdInMessages": false,
  779.         "resendOnRefresh": true,
  780.         "templateScope": "local",
  781.         "className": "",
  782.         "x": 730,
  783.         "y": 620,
  784.         "wires": [
  785.             []
  786.         ]
  787.     },
  788.     {
  789.         "id": "c1cb3c70476c26be",
  790.         "type": "ui_template",
  791.         "z": "1577a1eb80ede6ca",
  792.         "g": "d0bf2a659e4e6795",
  793.         "group": "ade6187efe7c1d0b",
  794.         "name": "Art",
  795.         "order": 1,
  796.         "width": 6,
  797.         "height": 6,
  798.         "format": "<style>\n    img {\n        max-width:  100%;\n        max-height: 100%;\n        overflow: hidden;\n    }\n</style>\n\n<div>\n    <img src=\"{{msg.payload.currentTrack.artUri}}\"/>\n</div>\n",
  799.         "storeOutMessages": false,
  800.         "fwdInMessages": false,
  801.         "resendOnRefresh": true,
  802.         "templateScope": "local",
  803.         "className": "",
  804.         "x": 730,
  805.         "y": 360,
  806.         "wires": [
  807.             []
  808.         ]
  809.     },
  810.     {
  811.         "id": "54426a88d2cca677",
  812.         "type": "catch",
  813.         "z": "1577a1eb80ede6ca",
  814.         "name": "Catch All",
  815.         "scope": null,
  816.         "uncaught": true,
  817.         "x": 1000,
  818.         "y": 40,
  819.         "wires": [
  820.             [
  821.                 "9352adc9d4c950e4"
  822.             ]
  823.         ]
  824.     },
  825.     {
  826.         "id": "9352adc9d4c950e4",
  827.         "type": "link out",
  828.         "z": "1577a1eb80ede6ca",
  829.         "name": "Error Logging",
  830.         "mode": "link",
  831.         "links": [
  832.             "498db3b5.39bc9c",
  833.             "7495be3477187c7a"
  834.         ],
  835.         "x": 1115,
  836.         "y": 40,
  837.         "wires": [],
  838.         "icon": "font-awesome/fa-exclamation"
  839.     },
  840.     {
  841.         "id": "6a865ef4c853fa47",
  842.         "type": "subflow:3ea12622889aa757",
  843.         "z": "1577a1eb80ede6ca",
  844.         "g": "f365939e4b24212d",
  845.         "name": "Status",
  846.         "env": [],
  847.         "x": 190,
  848.         "y": 780,
  849.         "wires": [
  850.             [
  851.                 "5a639d55b5285c82"
  852.             ]
  853.         ]
  854.     },
  855.     {
  856.         "id": "c3bd608346d08808",
  857.         "type": "subflow:3ea12622889aa757",
  858.         "z": "1577a1eb80ede6ca",
  859.         "g": "3c575646a12ecdd2",
  860.         "name": "Status",
  861.         "env": [],
  862.         "x": 190,
  863.         "y": 520,
  864.         "wires": [
  865.             [
  866.                 "1686920bd9af578f"
  867.             ]
  868.         ]
  869.     },
  870.     {
  871.         "id": "e7a9672a4af7c1a6",
  872.         "type": "ui_template",
  873.         "z": "1577a1eb80ede6ca",
  874.         "g": "5dedc86d833d2f82",
  875.         "group": "c84a154901b2af92",
  876.         "name": "Next",
  877.         "order": 22,
  878.         "width": 1,
  879.         "height": 2,
  880.         "format": "<ng-md-icon icon=\"skip_next\"></ng-md-icon>",
  881.         "storeOutMessages": false,
  882.         "fwdInMessages": false,
  883.         "resendOnRefresh": true,
  884.         "templateScope": "local",
  885.         "className": "",
  886.         "x": 890,
  887.         "y": 780,
  888.         "wires": [
  889.             []
  890.         ]
  891.     },
  892.     {
  893.         "id": "195f5088b689d9e9",
  894.         "type": "ui_text",
  895.         "z": "1577a1eb80ede6ca",
  896.         "g": "f365939e4b24212d",
  897.         "group": "c84a154901b2af92",
  898.         "order": 23,
  899.         "width": 6,
  900.         "height": 2,
  901.         "name": "Up Next",
  902.         "label": "<b>{{msg.payload.nextTrack.title}}</b></br>{{msg.payload.nextTrack.artist}}</br></br><i>{{msg.payload.nextTrack.album}}</i>",
  903.         "format": "",
  904.         "layout": "row-left",
  905.         "className": "",
  906.         "x": 200,
  907.         "y": 700,
  908.         "wires": []
  909.     },
  910.     {
  911.         "id": "232ed8fe3dfd821d",
  912.         "type": "ui_text",
  913.         "z": "1577a1eb80ede6ca",
  914.         "g": "3c575646a12ecdd2",
  915.         "group": "ade6187efe7c1d0b",
  916.         "order": 23,
  917.         "width": 6,
  918.         "height": 2,
  919.         "name": "Up Next",
  920.         "label": "<b>{{msg.payload.nextTrack.title}}</b></br>{{msg.payload.nextTrack.artist}}</br></br><i>{{msg.payload.nextTrack.album}}</i>",
  921.         "format": "",
  922.         "layout": "row-left",
  923.         "className": "",
  924.         "x": 200,
  925.         "y": 440,
  926.         "wires": []
  927.     },
  928.     {
  929.         "id": "319c8d39877390e9",
  930.         "type": "ui_template",
  931.         "z": "1577a1eb80ede6ca",
  932.         "g": "d0bf2a659e4e6795",
  933.         "group": "ade6187efe7c1d0b",
  934.         "name": "Next",
  935.         "order": 22,
  936.         "width": 1,
  937.         "height": 2,
  938.         "format": "<ng-md-icon icon=\"skip_next\"></ng-md-icon>",
  939.         "storeOutMessages": false,
  940.         "fwdInMessages": false,
  941.         "resendOnRefresh": true,
  942.         "templateScope": "local",
  943.         "className": "",
  944.         "x": 890,
  945.         "y": 520,
  946.         "wires": [
  947.             []
  948.         ]
  949.     },
  950.     {
  951.         "id": "2775acb0ed7cf492",
  952.         "type": "ui_text",
  953.         "z": "1577a1eb80ede6ca",
  954.         "g": "3c575646a12ecdd2",
  955.         "group": "ade6187efe7c1d0b",
  956.         "order": 11,
  957.         "width": 4,
  958.         "height": 1,
  959.         "name": "Count",
  960.         "label": "{{msg.payload.currentTrack.queuePos}}  /  </br>&nbsp;",
  961.         "format": "{{msg.payload.totalTracks}}</br>&nbsp;",
  962.         "layout": "row-center",
  963.         "className": "transparentBackground",
  964.         "x": 190,
  965.         "y": 480,
  966.         "wires": []
  967.     },
  968.     {
  969.         "id": "fdfab8358aca28c1",
  970.         "type": "ui_text",
  971.         "z": "1577a1eb80ede6ca",
  972.         "g": "f365939e4b24212d",
  973.         "group": "c84a154901b2af92",
  974.         "order": 11,
  975.         "width": 4,
  976.         "height": 1,
  977.         "name": "Count",
  978.         "label": "{{msg.payload.currentTrack.queuePos}}  /  </br>&nbsp;",
  979.         "format": "{{msg.payload.totalTracks}}</br>&nbsp;",
  980.         "layout": "row-center",
  981.         "className": "transparentBackground",
  982.         "x": 190,
  983.         "y": 740,
  984.         "wires": []
  985.     },
  986.     {
  987.         "id": "8d0a5d759bfa177a",
  988.         "type": "ui_text",
  989.         "z": "1577a1eb80ede6ca",
  990.         "g": "8341e77a3db2ac20",
  991.         "group": "ade6187efe7c1d0b",
  992.         "order": 4,
  993.         "width": 1,
  994.         "height": 1,
  995.         "name": "L-Vol",
  996.         "label": "",
  997.         "format": "{{msg.payload}}",
  998.         "layout": "col-center",
  999.         "className": "",
  1000.         "x": 610,
  1001.         "y": 100,
  1002.         "wires": []
  1003.     },
  1004.     {
  1005.         "id": "9e92a25097d7fb8e",
  1006.         "type": "ui_text",
  1007.         "z": "1577a1eb80ede6ca",
  1008.         "g": "8341e77a3db2ac20",
  1009.         "group": "c84a154901b2af92",
  1010.         "order": 4,
  1011.         "width": 1,
  1012.         "height": 1,
  1013.         "name": "S-Vol",
  1014.         "label": "",
  1015.         "format": "{{msg.payload}}",
  1016.         "layout": "col-center",
  1017.         "className": "",
  1018.         "x": 610,
  1019.         "y": 140,
  1020.         "wires": []
  1021.     },
  1022.     {
  1023.         "id": "8352a5ca94d67ece",
  1024.         "type": "ui_button",
  1025.         "z": "1577a1eb80ede6ca",
  1026.         "g": "8341e77a3db2ac20",
  1027.         "name": "L-VDn",
  1028.         "group": "ade6187efe7c1d0b",
  1029.         "order": 5,
  1030.         "width": 1,
  1031.         "height": 1,
  1032.         "passthru": false,
  1033.         "label": "",
  1034.         "tooltip": "",
  1035.         "color": "#FFFFFF",
  1036.         "bgcolor": "#4667A0",
  1037.         "className": "",
  1038.         "icon": "keyboard_arrow_down",
  1039.         "payload": "-1",
  1040.         "payloadType": "num",
  1041.         "topic": "lounge",
  1042.         "topicType": "str",
  1043.         "x": 150,
  1044.         "y": 60,
  1045.         "wires": [
  1046.             [
  1047.                 "8770a7343c93e604"
  1048.             ]
  1049.         ]
  1050.     },
  1051.     {
  1052.         "id": "503753a12ee92e2f",
  1053.         "type": "ui_button",
  1054.         "z": "1577a1eb80ede6ca",
  1055.         "g": "8341e77a3db2ac20",
  1056.         "name": "L-VUp",
  1057.         "group": "ade6187efe7c1d0b",
  1058.         "order": 3,
  1059.         "width": 1,
  1060.         "height": 1,
  1061.         "passthru": false,
  1062.         "label": "",
  1063.         "tooltip": "",
  1064.         "color": "#FFFFFF",
  1065.         "bgcolor": "#4667A0",
  1066.         "className": "",
  1067.         "icon": "keyboard_arrow_up",
  1068.         "payload": "1",
  1069.         "payloadType": "num",
  1070.         "topic": "lounge",
  1071.         "topicType": "str",
  1072.         "x": 270,
  1073.         "y": 60,
  1074.         "wires": [
  1075.             [
  1076.                 "8770a7343c93e604"
  1077.             ]
  1078.         ]
  1079.     },
  1080.     {
  1081.         "id": "8770a7343c93e604",
  1082.         "type": "function",
  1083.         "z": "1577a1eb80ede6ca",
  1084.         "g": "8341e77a3db2ac20",
  1085.         "name": "Volume\\n Control",
  1086.         "func": "var musicPlayers = global.get(\"musicPlayers\") || {};\n\nif (msg.topic) {\n    var currPlayer = msg.topic.replace(\"media_player.\", \"\").toLowerCase();\n    var volume = parseInt((musicPlayers[currPlayer].volume) * 100) || 1;\n\n    volume += (parseInt(msg.payload) || 0);\n\n    musicPlayers[currPlayer].volume = (volume / 100);\n    global.set(\"musicPlayers\", musicPlayers);\n}\n\nreturn [\n    {payload: volume, topic: msg.topic},\n    {payload: parseInt(musicPlayers[\"lounge\"].volume * 100)},\n    {payload: parseInt(musicPlayers[\"study\"].volume  * 100)}\n];\n",
  1087.         "outputs": 3,
  1088.         "noerr": 0,
  1089.         "initialize": "",
  1090.         "finalize": "",
  1091.         "libs": [],
  1092.         "x": 440,
  1093.         "y": 100,
  1094.         "wires": [
  1095.             [
  1096.                 "ed6bd7d0f49f68dd"
  1097.             ],
  1098.             [
  1099.                 "8d0a5d759bfa177a"
  1100.             ],
  1101.             [
  1102.                 "9e92a25097d7fb8e"
  1103.             ]
  1104.         ]
  1105.     },
  1106.     {
  1107.         "id": "0e975831db7c85c9",
  1108.         "type": "link out",
  1109.         "z": "1577a1eb80ede6ca",
  1110.         "g": "8341e77a3db2ac20",
  1111.         "name": "Volume",
  1112.         "mode": "link",
  1113.         "links": [
  1114.             "5157e70bae68b04e"
  1115.         ],
  1116.         "x": 820,
  1117.         "y": 120,
  1118.         "wires": [],
  1119.         "l": true
  1120.     },
  1121.     {
  1122.         "id": "c875ad3370eefbb4",
  1123.         "type": "trigger",
  1124.         "z": "1577a1eb80ede6ca",
  1125.         "g": "8341e77a3db2ac20",
  1126.         "name": "500ms Delay",
  1127.         "op1": "",
  1128.         "op2": "",
  1129.         "op1type": "nul",
  1130.         "op2type": "payl",
  1131.         "duration": "500",
  1132.         "extend": true,
  1133.         "overrideDelay": false,
  1134.         "units": "ms",
  1135.         "reset": "",
  1136.         "bytopic": "topic",
  1137.         "topic": "topic",
  1138.         "outputs": 1,
  1139.         "x": 770,
  1140.         "y": 60,
  1141.         "wires": [
  1142.             [
  1143.                 "0e975831db7c85c9"
  1144.             ]
  1145.         ]
  1146.     },
  1147.     {
  1148.         "id": "a28c01ad6ca248a8",
  1149.         "type": "ui_button",
  1150.         "z": "1577a1eb80ede6ca",
  1151.         "g": "8341e77a3db2ac20",
  1152.         "name": "S-VDn",
  1153.         "group": "c84a154901b2af92",
  1154.         "order": 5,
  1155.         "width": 1,
  1156.         "height": 1,
  1157.         "passthru": false,
  1158.         "label": "",
  1159.         "tooltip": "",
  1160.         "color": "#FFFFFF",
  1161.         "bgcolor": "#4667A0",
  1162.         "icon": "keyboard_arrow_down",
  1163.         "payload": "-1",
  1164.         "payloadType": "num",
  1165.         "topic": "study",
  1166.         "topicType": "str",
  1167.         "x": 270,
  1168.         "y": 140,
  1169.         "wires": [
  1170.             [
  1171.                 "8770a7343c93e604"
  1172.             ]
  1173.         ]
  1174.     },
  1175.     {
  1176.         "id": "ba5cc2af526be87a",
  1177.         "type": "ui_button",
  1178.         "z": "1577a1eb80ede6ca",
  1179.         "g": "8341e77a3db2ac20",
  1180.         "name": "S-VUp",
  1181.         "group": "c84a154901b2af92",
  1182.         "order": 3,
  1183.         "width": 1,
  1184.         "height": 1,
  1185.         "passthru": false,
  1186.         "label": "",
  1187.         "tooltip": "",
  1188.         "color": "#FFFFFF",
  1189.         "bgcolor": "#4667A0",
  1190.         "className": "",
  1191.         "icon": "keyboard_arrow_up",
  1192.         "payload": "1",
  1193.         "payloadType": "num",
  1194.         "topic": "study",
  1195.         "topicType": "str",
  1196.         "x": 150,
  1197.         "y": 140,
  1198.         "wires": [
  1199.             [
  1200.                 "8770a7343c93e604"
  1201.             ]
  1202.         ]
  1203.     },
  1204.     {
  1205.         "id": "ac38921646b7142f",
  1206.         "type": "link in",
  1207.         "z": "1577a1eb80ede6ca",
  1208.         "g": "8341e77a3db2ac20",
  1209.         "name": "Volume",
  1210.         "links": [
  1211.             "ebecb87c4e391567"
  1212.         ],
  1213.         "x": 150,
  1214.         "y": 100,
  1215.         "wires": [
  1216.             [
  1217.                 "8770a7343c93e604"
  1218.             ]
  1219.         ],
  1220.         "icon": "font-awesome/fa-volume-up",
  1221.         "l": true
  1222.     },
  1223.     {
  1224.         "id": "ed6bd7d0f49f68dd",
  1225.         "type": "rbe",
  1226.         "z": "1577a1eb80ede6ca",
  1227.         "g": "8341e77a3db2ac20",
  1228.         "name": "Filter",
  1229.         "func": "rbe",
  1230.         "gap": "",
  1231.         "start": "",
  1232.         "inout": "out",
  1233.         "septopics": true,
  1234.         "property": "payload",
  1235.         "topi": "topic",
  1236.         "x": 610,
  1237.         "y": 60,
  1238.         "wires": [
  1239.             [
  1240.                 "c875ad3370eefbb4"
  1241.             ]
  1242.         ]
  1243.     },
  1244.     {
  1245.         "id": "a6b57b79cb1405bf",
  1246.         "type": "ui_button",
  1247.         "z": "1577a1eb80ede6ca",
  1248.         "g": "f365939e4b24212d",
  1249.         "name": "Album",
  1250.         "group": "c84a154901b2af92",
  1251.         "order": 20,
  1252.         "width": 1,
  1253.         "height": 1,
  1254.         "passthru": false,
  1255.         "label": "",
  1256.         "tooltip": "",
  1257.         "color": "#FFFFFF",
  1258.         "bgcolor": "#424242",
  1259.         "className": "",
  1260.         "icon": "fast_forward",
  1261.         "payload": "album",
  1262.         "payloadType": "str",
  1263.         "topic": "Study",
  1264.         "topicType": "str",
  1265.         "x": 370,
  1266.         "y": 660,
  1267.         "wires": [
  1268.             [
  1269.                 "d79211d106243437"
  1270.             ]
  1271.         ]
  1272.     },
  1273.     {
  1274.         "id": "df172b8bc2166357",
  1275.         "type": "ui_button",
  1276.         "z": "1577a1eb80ede6ca",
  1277.         "g": "3c575646a12ecdd2",
  1278.         "name": "Album",
  1279.         "group": "ade6187efe7c1d0b",
  1280.         "order": 20,
  1281.         "width": 1,
  1282.         "height": 1,
  1283.         "passthru": false,
  1284.         "label": "",
  1285.         "tooltip": "",
  1286.         "color": "#FFFFFF",
  1287.         "bgcolor": "#424242",
  1288.         "className": "",
  1289.         "icon": "fast_forward",
  1290.         "payload": "album",
  1291.         "payloadType": "str",
  1292.         "topic": "Lounge",
  1293.         "topicType": "str",
  1294.         "x": 370,
  1295.         "y": 400,
  1296.         "wires": [
  1297.             [
  1298.                 "17635279aac1c8b4"
  1299.             ]
  1300.         ]
  1301.     },
  1302.     {
  1303.         "id": "df47e953c3722f3f",
  1304.         "type": "ui_button",
  1305.         "z": "1577a1eb80ede6ca",
  1306.         "g": "f365939e4b24212d",
  1307.         "name": "Artist",
  1308.         "group": "c84a154901b2af92",
  1309.         "order": 17,
  1310.         "width": 1,
  1311.         "height": 1,
  1312.         "passthru": false,
  1313.         "label": "",
  1314.         "tooltip": "",
  1315.         "color": "#FFFFFF",
  1316.         "bgcolor": "#424242",
  1317.         "className": "",
  1318.         "icon": "fast_forward",
  1319.         "payload": "artist",
  1320.         "payloadType": "str",
  1321.         "topic": "Study",
  1322.         "topicType": "str",
  1323.         "x": 370,
  1324.         "y": 620,
  1325.         "wires": [
  1326.             [
  1327.                 "d79211d106243437"
  1328.             ]
  1329.         ]
  1330.     },
  1331.     {
  1332.         "id": "64f9d5f7af92241c",
  1333.         "type": "ui_button",
  1334.         "z": "1577a1eb80ede6ca",
  1335.         "g": "3c575646a12ecdd2",
  1336.         "name": "Artist",
  1337.         "group": "ade6187efe7c1d0b",
  1338.         "order": 17,
  1339.         "width": 1,
  1340.         "height": 1,
  1341.         "passthru": false,
  1342.         "label": "",
  1343.         "tooltip": "",
  1344.         "color": "#FFFFFF",
  1345.         "bgcolor": "#424242",
  1346.         "className": "",
  1347.         "icon": "fast_forward",
  1348.         "payload": "artist",
  1349.         "payloadType": "str",
  1350.         "topic": "Lounge",
  1351.         "topicType": "str",
  1352.         "x": 370,
  1353.         "y": 360,
  1354.         "wires": [
  1355.             [
  1356.                 "17635279aac1c8b4"
  1357.             ]
  1358.         ]
  1359.     },
  1360.     {
  1361.         "id": "b286368fe058ee50",
  1362.         "type": "ui_text",
  1363.         "z": "1577a1eb80ede6ca",
  1364.         "g": "5dedc86d833d2f82",
  1365.         "group": "c84a154901b2af92",
  1366.         "order": 12,
  1367.         "width": 3,
  1368.         "height": 1,
  1369.         "name": "Duration",
  1370.         "label": "</br>{{msg.payload.currentTrack.trackPos2}} / ",
  1371.         "format": "</br>{{msg.payload.currentTrack.length2}}",
  1372.         "layout": "row-right",
  1373.         "className": "transparentBackground",
  1374.         "x": 740,
  1375.         "y": 780,
  1376.         "wires": []
  1377.     },
  1378.     {
  1379.         "id": "c843b1c511f470d8",
  1380.         "type": "ui_text",
  1381.         "z": "1577a1eb80ede6ca",
  1382.         "g": "d0bf2a659e4e6795",
  1383.         "group": "ade6187efe7c1d0b",
  1384.         "order": 12,
  1385.         "width": 3,
  1386.         "height": 1,
  1387.         "name": "Duration",
  1388.         "label": "</br>{{msg.payload.currentTrack.trackPos2}} / ",
  1389.         "format": "</br>{{msg.payload.currentTrack.length2}}",
  1390.         "layout": "row-right",
  1391.         "className": "transparentBackground",
  1392.         "x": 740,
  1393.         "y": 520,
  1394.         "wires": []
  1395.     },
  1396.     {
  1397.         "id": "1fb4a70acb1e0deb",
  1398.         "type": "link in",
  1399.         "z": "1577a1eb80ede6ca",
  1400.         "g": "3c575646a12ecdd2",
  1401.         "name": "K-Enable/Disable",
  1402.         "links": [
  1403.             "52708c7ee5563af7",
  1404.             "6c4841ce93fa815e",
  1405.             "ff168daea84b21bd",
  1406.             "25a292deb329ba24",
  1407.             "845331a79935d27f"
  1408.         ],
  1409.         "x": 235,
  1410.         "y": 380,
  1411.         "wires": [
  1412.             [
  1413.                 "64f9d5f7af92241c",
  1414.                 "df172b8bc2166357",
  1415.                 "07eeb4f7aa418e27",
  1416.                 "78b2baa65ef5f913",
  1417.                 "1686920bd9af578f",
  1418.                 "232ed8fe3dfd821d"
  1419.             ]
  1420.         ],
  1421.         "icon": "font-awesome/fa-toggle-off"
  1422.     },
  1423.     {
  1424.         "id": "108d075174f1e5b8",
  1425.         "type": "link in",
  1426.         "z": "1577a1eb80ede6ca",
  1427.         "g": "f365939e4b24212d",
  1428.         "name": "S-Enable/Disable",
  1429.         "links": [
  1430.             "98c7e5d7347ba805",
  1431.             "637c087628fd01ee",
  1432.             "ca78fd5836954878",
  1433.             "4c6d3eb8e979bf89",
  1434.             "b6282e4a9ba743fb"
  1435.         ],
  1436.         "x": 235,
  1437.         "y": 640,
  1438.         "wires": [
  1439.             [
  1440.                 "df47e953c3722f3f",
  1441.                 "a6b57b79cb1405bf",
  1442.                 "f9b2754d3d8bc99e",
  1443.                 "d9602b81d7d9f466",
  1444.                 "5a639d55b5285c82",
  1445.                 "195f5088b689d9e9"
  1446.             ]
  1447.         ],
  1448.         "icon": "font-awesome/fa-toggle-off"
  1449.     },
  1450.     {
  1451.         "id": "64cd11a0e798bbc2",
  1452.         "type": "link in",
  1453.         "z": "1577a1eb80ede6ca",
  1454.         "g": "8341e77a3db2ac20",
  1455.         "name": "L-Enable/Disable",
  1456.         "links": [
  1457.             "845331a79935d27f"
  1458.         ],
  1459.         "x": 55,
  1460.         "y": 60,
  1461.         "wires": [
  1462.             [
  1463.                 "8352a5ca94d67ece",
  1464.                 "503753a12ee92e2f"
  1465.             ]
  1466.         ],
  1467.         "icon": "font-awesome/fa-toggle-off"
  1468.     },
  1469.     {
  1470.         "id": "33a8c913445a89a6",
  1471.         "type": "link in",
  1472.         "z": "1577a1eb80ede6ca",
  1473.         "g": "d0bf2a659e4e6795",
  1474.         "name": "K-Enable/Disable",
  1475.         "links": [
  1476.             "52708c7ee5563af7",
  1477.             "6c4841ce93fa815e",
  1478.             "ff168daea84b21bd",
  1479.             "25a292deb329ba24",
  1480.             "845331a79935d27f"
  1481.         ],
  1482.         "x": 595,
  1483.         "y": 420,
  1484.         "wires": [
  1485.             [
  1486.                 "94bc81db30ab2e25",
  1487.                 "93e8eefb33a3afbb",
  1488.                 "c1cb3c70476c26be",
  1489.                 "c843b1c511f470d8",
  1490.                 "abb75559adb961bf"
  1491.             ]
  1492.         ],
  1493.         "icon": "font-awesome/fa-toggle-off"
  1494.     },
  1495.     {
  1496.         "id": "68ec3c38f6fd192d",
  1497.         "type": "link in",
  1498.         "z": "1577a1eb80ede6ca",
  1499.         "g": "5dedc86d833d2f82",
  1500.         "name": "S-Enable/Disable",
  1501.         "links": [
  1502.             "98c7e5d7347ba805",
  1503.             "637c087628fd01ee",
  1504.             "ca78fd5836954878",
  1505.             "4c6d3eb8e979bf89",
  1506.             "b6282e4a9ba743fb"
  1507.         ],
  1508.         "x": 595,
  1509.         "y": 680,
  1510.         "wires": [
  1511.             [
  1512.                 "4d776a5574877840",
  1513.                 "726aeb24cf7c3c90",
  1514.                 "8a6a96549a6871b4",
  1515.                 "b286368fe058ee50",
  1516.                 "4ca3b27fc4bd4bc3"
  1517.             ]
  1518.         ],
  1519.         "icon": "font-awesome/fa-toggle-off"
  1520.     },
  1521.     {
  1522.         "id": "4ca3b27fc4bd4bc3",
  1523.         "type": "function",
  1524.         "z": "1577a1eb80ede6ca",
  1525.         "g": "5dedc86d833d2f82",
  1526.         "name": "Progress",
  1527.         "func": "if (msg.payload && msg.payload.currentTrack) {\n\n    var trackLength  = msg.payload.currentTrack.length;\n    var currPosition = msg.payload.currentTrack.trackPos;\n    var percent      = parseInt((100 / trackLength) * currPosition);\n\n    msg.className = `pro${percent}`;\n}\n\nreturn msg;\n",
  1528.         "outputs": 1,
  1529.         "noerr": 0,
  1530.         "initialize": "",
  1531.         "finalize": "",
  1532.         "libs": [],
  1533.         "x": 740,
  1534.         "y": 660,
  1535.         "wires": [
  1536.             [
  1537.                 "fb0e30124abec990"
  1538.             ]
  1539.         ]
  1540.     },
  1541.     {
  1542.         "id": "abb75559adb961bf",
  1543.         "type": "function",
  1544.         "z": "1577a1eb80ede6ca",
  1545.         "g": "d0bf2a659e4e6795",
  1546.         "name": "Progress",
  1547.         "func": "if (msg.payload && msg.payload.currentTrack) {\n\n    var trackLength  = msg.payload.currentTrack.length;\n    var currPosition = msg.payload.currentTrack.trackPos;\n    var percent      = parseInt((100 / trackLength) * currPosition);\n\n    msg.className = `pro${percent}`;\n}\n\nreturn msg;\n",
  1548.         "outputs": 1,
  1549.         "noerr": 0,
  1550.         "initialize": "",
  1551.         "finalize": "",
  1552.         "libs": [],
  1553.         "x": 740,
  1554.         "y": 400,
  1555.         "wires": [
  1556.             [
  1557.                 "f09eb3ce70c443fa"
  1558.             ]
  1559.         ]
  1560.     },
  1561.     {
  1562.         "id": "5e2968b3302e7ef5",
  1563.         "type": "link in",
  1564.         "z": "1577a1eb80ede6ca",
  1565.         "g": "8341e77a3db2ac20",
  1566.         "name": "S-Enable/Disable",
  1567.         "links": [
  1568.             "b6282e4a9ba743fb"
  1569.         ],
  1570.         "x": 55,
  1571.         "y": 140,
  1572.         "wires": [
  1573.             [
  1574.                 "a28c01ad6ca248a8",
  1575.                 "ba5cc2af526be87a"
  1576.             ]
  1577.         ],
  1578.         "icon": "font-awesome/fa-toggle-off"
  1579.     },
  1580.     {
  1581.         "id": "12526f6cb3e1403c",
  1582.         "type": "ui_spacer",
  1583.         "z": "1577a1eb80ede6ca",
  1584.         "name": "spacer",
  1585.         "group": "c84a154901b2af92",
  1586.         "order": 2,
  1587.         "width": 1,
  1588.         "height": 1
  1589.     },
  1590.     {
  1591.         "id": "8afdfbd52f566315",
  1592.         "type": "ui_spacer",
  1593.         "z": "1577a1eb80ede6ca",
  1594.         "name": "spacer",
  1595.         "group": "c84a154901b2af92",
  1596.         "order": 6,
  1597.         "width": 1,
  1598.         "height": 1
  1599.     },
  1600.     {
  1601.         "id": "24e96ea33af3a52d",
  1602.         "type": "ui_spacer",
  1603.         "z": "1577a1eb80ede6ca",
  1604.         "name": "spacer",
  1605.         "group": "c84a154901b2af92",
  1606.         "order": 7,
  1607.         "width": 1,
  1608.         "height": 1
  1609.     },
  1610.     {
  1611.         "id": "c54d6f235ec1667c",
  1612.         "type": "ui_spacer",
  1613.         "z": "1577a1eb80ede6ca",
  1614.         "name": "spacer",
  1615.         "group": "c84a154901b2af92",
  1616.         "order": 21,
  1617.         "width": 7,
  1618.         "height": 1
  1619.     },
  1620.     {
  1621.         "id": "40f55f4323c2cf36",
  1622.         "type": "ui_spacer",
  1623.         "z": "1577a1eb80ede6ca",
  1624.         "name": "spacer",
  1625.         "group": "ade6187efe7c1d0b",
  1626.         "order": 2,
  1627.         "width": 1,
  1628.         "height": 1
  1629.     },
  1630.     {
  1631.         "id": "0017592549840fe6",
  1632.         "type": "ui_spacer",
  1633.         "z": "1577a1eb80ede6ca",
  1634.         "name": "spacer",
  1635.         "group": "ade6187efe7c1d0b",
  1636.         "order": 6,
  1637.         "width": 1,
  1638.         "height": 1
  1639.     },
  1640.     {
  1641.         "id": "70cc276b3ec49e35",
  1642.         "type": "ui_spacer",
  1643.         "z": "1577a1eb80ede6ca",
  1644.         "name": "spacer",
  1645.         "group": "ade6187efe7c1d0b",
  1646.         "order": 7,
  1647.         "width": 1,
  1648.         "height": 1
  1649.     },
  1650.     {
  1651.         "id": "b3b12ece79d58bce",
  1652.         "type": "ui_spacer",
  1653.         "z": "1577a1eb80ede6ca",
  1654.         "name": "spacer",
  1655.         "group": "ade6187efe7c1d0b",
  1656.         "order": 21,
  1657.         "width": 7,
  1658.         "height": 1
  1659.     },
  1660.     {
  1661.         "id": "ade6187efe7c1d0b",
  1662.         "type": "ui_group",
  1663.         "name": "Music - Lounge Group",
  1664.         "tab": "5e18e01b57927e3a",
  1665.         "order": 1,
  1666.         "disp": true,
  1667.         "width": "7",
  1668.         "collapse": false,
  1669.         "className": ""
  1670.     },
  1671.     {
  1672.         "id": "c84a154901b2af92",
  1673.         "type": "ui_group",
  1674.         "name": "Music - Study",
  1675.         "tab": "3845fe8e780903a2",
  1676.         "order": 1,
  1677.         "disp": true,
  1678.         "width": 7,
  1679.         "collapse": false
  1680.     },
  1681.     {
  1682.         "id": "5e18e01b57927e3a",
  1683.         "type": "ui_tab",
  1684.         "name": "Music - Lounge Group",
  1685.         "icon": "speaker_group",
  1686.         "order": 6,
  1687.         "disabled": false,
  1688.         "hidden": false
  1689.     },
  1690.     {
  1691.         "id": "3845fe8e780903a2",
  1692.         "type": "ui_tab",
  1693.         "name": "Music - Study",
  1694.         "icon": "speaker",
  1695.         "order": 5,
  1696.         "disabled": false,
  1697.         "hidden": false
  1698.     }
  1699. ]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement