LINUX.ORG.RU

Вебные аналого-цифровые индикаторы.

 , вебдваноль, копрофагия


8

2

По итогам Есть ли что-то типа Grafana только на порядки легче и проще?

Написал ещё тогда и забыл. Ну пусть новогодний подарочек будет.

Продолжаем делать правильный вебдваноль. Как обычно, всё очень маленькое (2.5kb) и шустрое, на plain JS без каких-либо «фреймворков» и прочего многотонного жирного говна. Легко влезает в эмбедщину всякую и т.п.

Итак…

gauge.js

'use strict'

function Gauges( class_name )
{
    var _ = this;
    _.urls = [];
    var gauge = document.getElementsByClassName( class_name );
    for( var j = gauge.length; j--; )
    {
        var e = gauge.item(j);
        var g = JSON.parse( e.getAttribute( "data-conf" ) );
        if( !g ) return;

        g.id = e.id;
        g.title = e.title;
        e.removeAttribute( 'title' );

        var c = g.size / 2;
        var r = 0.8 * c;
        var l = 2 * Math.PI * r;

        for( var i = _.urls.length; i--; ) { if( _.urls[i].url == g.url ) break; }
        if( i < 0 ) _.urls.push( { url: g.url, gauges: [ g ] } );
        else        _.urls[i].gauges.push( g );

        e.innerHTML =
            '<svg width="' + g.size + '" height="' + g.size + '">'
          + '<circle class="gauge-bg" id="' + g.id + '-bg" cx="' + c + '" cy="' + c + '" r="' + r + '" stroke-dasharray="' + ( 2 * l / 3 ) + " " + ( l / 3 ) + '" stroke-dashoffset="' + ( -5 * l / 12 ) + '"/>'
          + '<circle class="gauge-pnt" id="' + g.id + '-pnt" cx="' + c + '" cy="' + c + '" r="' + r + '" stroke="' + g.color + '" stroke-width="' + ( 0.1 * g.size ) + '" stroke-dasharray="0 1"/>'
          + '<text class="gauge-val" id="' + g.id + '-val" fill="' + g.color + '" x="' + c + '" y="' + ( 1.1 * c ) + '" font-size="' + ( 0.45 * r ) + '" text-anchor="middle"></text>'
          + '<text class="gauge-title" x="' + c + '" y="' + ( c + r ) + '">' + g.title + '</text>'
          + '</svg>';
    }

    _.urls.forEach( function( u )
    {
        _.update( u );
        setInterval( function(){ _.update( u ) }, u.gauges[0].int );
    } );
}

Gauges.prototype.set = function( id, min, max, val )
{
    var e = document.getElementById( id + '-pnt' );
    if( !e ) return;

    var r = e.getAttribute( 'r' );
    var l = 2 * Math.PI * r;
    var v = val < min ? min : val > max ? max : val;
    var dash = ( 2 / 3 ) * l * ( v - min ) / ( max - min );

    e.setAttribute( 'stroke-dasharray', [ dash, l - dash ]);
    e.setAttribute( 'stroke-dashoffset', (-5 / 12) * l );

    document.getElementById( id + "-val" ).textContent = val;
}

Gauges.prototype.update = function( u )
{
    var _ = this;
    var req = new XMLHttpRequest();
    req.onreadystatechange = function()
    {
        if( this.readyState != 4 ) return;
        var obj = JSON.parse( this.responseText );
        if( !obj ) return;
        u.gauges.forEach( function( g )
        {
            var v = g.path.split('.').reduce( function( o, k ) { return o && o[k] }, obj );
            _.set( g.id, g.min, g.max, v.toFixed( g.prec ) );
        } );
    };
    req.open( "GET", u.url );
    req.send();
}

gauge.css

@font-face {
    font-family: "7SEG";
    src: url("DSEG7Classic-BoldItalic.ttf") format("opentype");
}

.gauge-pnt {
  fill: transparent;
}

.gauge-bg {
  stroke: #808080;
  stroke-width: 1px;
  fill: transparent;
}

.gauge-val {
    font-family: "7SEG", serif;
}

.gauge-title {
    text-anchor: middle;
    fill: #C0C0C0;
}

Шрифт DSEG7Classic-BoldItalic.ttf ради прикола, можно из дебиановского пакета fonts-dseg взять. Или в формате woff2, он размером поменьше будет.

Как использовать:

<HTML>
<HEAD>
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" content="no-cache">
<META HTTP-EQUIV="Content-Type" content="text/html; charset=utf-8">
<LINK rel="stylesheet" type="text/css" href="gauge.css">
<SCRIPT src="gauge.js" type="text/javascript"></SCRIPT>
<SCRIPT>
var ups_gauges;
window.addEventListener( 'load', function() { ups_gauges = new Gauges( 'ups' ); }, false );
</SCRIPT>
<STYLE>
a.ups { outline: none; }
body { background-color: #000000; color: #c0c0c0; }
</STYLE>
<TITLE>Gauge</TITLE>
</HEAD>
<BODY>
<a href="ups/voltage.html" class="ups" title="UPS Vin, V"  id="Vin" data-conf='{"url":"data/ups.json","path":"Vin","int":20000,"min":0,"max":300,"prec":0,"color":"#40C040","size":150}'></a>
<a href="ups/load.html"    class="ups" title="UPS Load, %" id="Load" data-conf='{"url":"data/ups.json","path":"Load","int":20000,"min":0,"max":100,"prec":0,"color":"#C040C0","size":150}'></a>
<a href="ups/temp.html"    class="ups" title="UPS T, °C"   id="Temp" data-conf='{"url":"data/ups.json","path":"Temp","int":20000,"min":0,"max":100,"prec":1,"color":"#C0C0C0","size":150}'></a>
</BODY>

data/ups.json

{ "Vin": 193.2, "Load": 40, "Temp": 38.0 }

В аттрибут data-conf элемента который превращаем в индикатор пишем JSON где

url - URL источника данных для индикатора в формате JSON
path - "путь" в JSON до нужной величины, например "sensors.0.temp"
int - интервал обновления в миллисекундах
min - минимальное значение аналоговой шкалы индикатора
max - максимальное значение аналоговой шкалы индикатора
prec - число цифр после запятой для цифрового индикатора 
color - цвет индикатора
size - размер индикатора

У элементов превращаемых в индикаторы должен быть установлен аттрибут id.

В аттрибуте title указывается подпись под индикатором.

Элементам индикаторов одной группы присваеваем один класс и его имя передаём в конструктор new Gauges('class_name') когда нужно создать и запустить индикаторы.

Если у нескольких индикаторов одного и того же класса URL источника данных одинаковый, то запрос к этому URL при периодическом обновлении будет только один, но при этом будут обновлены все индикаторы этого класса с этим URL.

Выглядит так: http://stanson.ch/gauges.png

Лицнзия WTFPL

★★★★★

Последнее исправление: Stanson (всего исправлений: 8)

Ответ на: комментарий от anonymous

Так и зачем тратить время, если у него любое обсуждение одинаковое?

Это же форум, его многие читают, может кому то будет полезно. Личная мотивация в практике объяснения/аргументации каких то вещей, ну и лулзы.

TDrive ★★★★★
()
Ответ на: комментарий от Stanson

Мне пока что просто прикольно наблюдать за их потугами обосновать своё никчёмное существование.

Ты очень токсичный и неприятный человек, вот и все. Возможно, у вас в лесу так принято.

anonymous
()
Ответ на: комментарий от Stanson

Это не либа для энтерапрайза и не новый классный вебдванольный проект. Это даже не образец написания кода на js.

Продолжаем делать правильный вебдваноль. Как обычно, всё очень маленькое (2.5kb) и шустрое, на plain JS без каких-либо «фреймворков» и прочего многотонного жирного говна. Легко влезает в эмбедщину всякую и т.п.

))

Это, сцуко, индикатор.

Это, сцуко, не оправдание писать не читаемый код.)

TDrive ★★★★★
()
Ответ на: комментарий от TDrive

Это, сцуко, не оправдание писать не читаемый код.)

Ну для человека который не в курсе, что радиус обычно обозначается как r, причём даже соответствующий аттрибут svg’шного circle совершенно внезапно тоже назван r и у которого бомбит от того, что кому-то нафиг не нужно производить определённое количество символов в сутки, наверно он нечитаемый, да.

Напоминает говённого преподавателя в институте. :) «слишком мало страниц, переделывайте». И вот студенты всем курсом льют совершенно ненужную воду вёдрами, чтобы удовлетворить, наконец, этого идиота объёмом.

Stanson ★★★★★
() автор топика
Ответ на: комментарий от anonymous

А я не червонец, чтобы нравиться всем.

Stanson ★★★★★
() автор топика
Ответ на: комментарий от Stanson

Ну для человека который не в курсе, что радиус обычно обозначается как r, причём даже соответствующий аттрибут svg’шного circle совершенно внезапно тоже назван r и у которого бомбит от того, что кому-то нафиг не нужно производить определённое количество символов в сутки, наверно он нечитаемый, да.

Я не писал тебе про r, я писал про n g и e))

Напоминает говённого преподавателя в институте. :) «слишком мало страниц, переделывайте». И вот студенты всем курсом льют совершенно ненужную воду вёдрами, чтобы удовлетворить, наконец, этого идиота объёмом.

Нет не нап, это воб не им от к этой тем. Я теб гов пр удоб чте кода а не кол ст.

Удобно читать?

TDrive ★★★★★
()
Ответ на: комментарий от TDrive

Я не писал тебе про r, я писал про n g и e))

А что, есть какая-то разница?

Интересно, когда и откуда вообще эта маразматическая хренота про «нужно называть даже локальные переменные которые используться только в нескольких соседних строчках длинно», взялась? :)

Если я правильно помню, даже когда Sun начинал двигать свою жабу, то даже у них не было этого маразма - у них в книжках и примерах повсюду были однобуквенные переменные, как вполне нормальный coding-style. Да-да, в самой многословной жабе. А потом как-то раз и понеслось всё вот это вот valueOfValueMemberOfObject. Сильно сомневаюсь, что это программисты придумали, никому не хочется эти портянки набирать. Это явно какие-то манагеры постарались. А потом понеслась…

Stanson ★★★★★
() автор топика
Ответ на: комментарий от Stanson

А что, есть какая-то разница?

Конечно есть. n у тебя вообще в сигнатуре функции.

Интересно, когда и откуда вообще эта маразматическая хренота про «нужно называть даже локальные переменные которые используться только в нескольких соседних строчках длинно», взялась? :)

https://ru.wikipedia.org/wiki/%D0%A1%D0%B5%D0%BC%D0%B0%D0%BD%D1%82%D0%B8%D0%BA%D0%B0_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)

TDrive ★★★★★
()
Ответ на: комментарий от TDrive

Нет не нап, это воб не им от к этой тем. Я теб гов пр удоб чте кода а не кол ст.

Удобно читать?

Нормально, типичный текст СМС конца 90-х. Ващето у тебя как бэ так себе аргумент, хоть он зачем-то в мою пользу.

Ты бы ещё про "По рзелульаттам илссеовадний одонго анлигйсокго унвиертисета, не иеемт занчнеия, вкокам пряокде рсапожолена бкувы в солве. Галвоне, чотбы преавя и пслоендяя бквуы блыи на мсете. Осатьлыне бкувы мгоут селдовтаь в плоонм бсепордяке, все-рвано ткест чтаитсея без побрелм. Пичрионй эгото ялвятеся то, что мы не чиатем кдаужю бкуву по отдльенотси, а все солво цликеом. " вспомнил.

Тем более что всё это вообще не имеет отношения к именам переменных. Тем более локальных. Мне вот проще

x = a + b;

читать чем

resultOfTwoVariablesAddition = variableWithFirstValue + variableWithSecondValue;

Вкусовщина, в общем, тем более что решается банальной автоматической заменой.

Stanson ★★★★★
() автор топика
Ответ на: комментарий от TDrive

Конечно есть. n у тебя вообще в сигнатуре функции.

И это плохо потому что?

..сцылка с кучей percent-encoding..

И где там информация о том, кто и когда сделал эту повесточку модной в среде жабо и жабоскриптных макак?

Забавно что в модный Rust эта повесточка почему-то не особо проникает, судя по растаманским поделиям на жидхабе.

А ещё интересный вопрос с camel naming vs snake_case. :)

Вот бы посмотреть на срач любителей длиннннннных названий разных конфесиий. :)

Stanson ★★★★★
() автор топика
Последнее исправление: Stanson (всего исправлений: 1)
Ответ на: комментарий от Stanson

Нормально, типичный текст СМС конца 90-х. Ващето у тебя как бэ так себе аргумент, хоть он зачем-то в мою пользу.

н и о в б т с р.

Вкусовщина, в общем, тем более что решается банальной автоматической заменой.

В и р б е з а н з н ч э г.

TDrive ★★★★★
()
Ответ на: комментарий от Stanson

И где там информация о том, кто и когда сделал эту повесточку модной в среде жабо и жабоскриптных макак?

У ч т и с с н н т и.

Забавно что в модный Rust эта повесточка почему-то не особо проникает, судя по растаманским поделиям на жидхабе.

Э в н н о к ЯП. В о.

А ещё интересный вопрос с camel naming vs snake_case. :)

б, п в.

TDrive ★★★★★
()
Ответ на: комментарий от TDrive

словообозначающееизумлениенеобычныминавыкаминаписаниятекстасобеседником словообозначающеепростуюформуличногоместоименияединственногочиславтороголица словообозначающееполноеотсутствиечеголибосовершенноиполностьювыраженноенецензурно словообозначащеечастицуотрицания словообозначающееглаголобозначающийпроцессыпроисходяшиевмозгуразумныхсуществприосознаваниинаписанногоилисказанногодругимчеловеком

Stanson ★★★★★
() автор топика
Ответ на: комментарий от TDrive

Люди, внезапно, почему-то постоянно используют сокращения, аббревиатуры и всё такое. По собственной воле и для собственного удобства. А вот ничем не обоснованное намеренное удлиннение слов и фраз встречается только среди упорышей типа бюрократов или юристов. Последние вообще делают это исключительно с целью как можно сильнее запутать то, что они пытаются изложить, чтобы это стало совершенно непонятно нормальным людям.

Так что однобуквенные переменные - это совершенно нормально и полностью совпадает с человеческим поведением. А вот намеренное использование длинных слов и фраз - это свидетельство либо попытки ввести в заблуждение, либо какое-то психическое нарушение.

Из недавно попавшегося, из реального закона:

Экспериментальный правовой режим состоит в применении в течение определенного периода времени специального регулирования в отношении определенной группы лиц или на определенной территории, в том числе в полном или частичном отказе от применения определенной группой лиц или на определенной территории обязательных требований либо в отказе от осуществления разрешительной деятельности в отношении объекта разрешительной деятельности.

Вот смотришь на такое, и сразу становится очевидно - жулики писали для жуликов, а не люди для людей.

С кодом то же самое.

Stanson ★★★★★
() автор топика
Последнее исправление: Stanson (всего исправлений: 3)
Ответ на: комментарий от Stanson

Попробуй лучше придумать минусы от того, что у тебя в коде будет написано

function Gauges( name )

вместо

function Gauges( n )
TDrive ★★★★★
()
Ответ на: комментарий от Stanson

Сильно сомневаюсь, что это программисты придумали, никому не хочется эти портянки набирать

Видимо, каждый раз гадать, что значит a, h или d, никому не хочется еще больше.

Ладно, если они описаны в документации функции/метода, но ведь документация тоже для джавалошков.

Минифицировать JS вручную тоже смысла особого нет, для этого ведь есть специальные инструменты.

Nervous ★★★★★
()
Последнее исправление: Nervous (всего исправлений: 2)
Ответ на: комментарий от TDrive

Нет никаких минусов.

Вообще забавно наблюдать как пригорает у мимокрокодила от имени переменной которая упоминается в функции из 40 строк ровно 2 раза - в качестве аргумента который сразу же скармливается другой функции, после чего про эту переменную можно забыть. :)

Казалось бы фигня, но сколько страданий и пафоса. :)

При этом, естественно, мимокрокодил заведомо не способен самостоятельно родить что-либо аналогичное, чтобы продемонстрировать как нужно всё делать «правильно». И это при том, что он потратил на свои страдания и стенания о том, как неправильно использовать однобуквенные переменные, намного больше времени чем, по-идее, может потребоваться, чтобы написать подобный высер.

Clown world, воистину.

Что такое n? номер? как человек по такой сигнатуре функции должен понять что в нее нужно передать?

Код прочитать, не? Или чужой код читать в вашей секте не принято? Насколько надо быть упоротым, чтобы в упор не догадываться, что нужно скармливать getElementsByClassName()? А, я понял, у тебя наверно двухстрочный экранчик на HD44780 вместо монитора, на котором не видно одновременно объявление функции и следующие несколько строчек, да?

Stanson ★★★★★
() автор топика
Последнее исправление: Stanson (всего исправлений: 2)
Ответ на: комментарий от Nervous

Как же вам нелегко живётся-то, наверно… 90% софта который вам приходится использовать написано на сишечке с немеряным количеством однобуквенных переменных. От сырцов ядра припадков не случается?

Stanson ★★★★★
() автор топика
Ответ на: комментарий от Nervous

Минифицировать JS вручную тоже смысла особого нет, для этого ведь есть специальные инструменты.

Я вообще мимокрокодил, но мне как раз казалось что переименованием переменных и функций у вас там какие-то спец инструменты занимаются, против которых автор кстати вечно топил. А в итоге он сделал такое же, но хуже и руками, я правильно понял?

anonymous
()
Ответ на: комментарий от Stanson

От сырцов ядра припадков не случается?

Я б посмотрел с удовольствием, как бы ты код в подобном стиле в ядро коммитил. А ну да, они там тоже тупые все и ущербные ведь?

anonymous
()
Ответ на: комментарий от Stanson

Нет никаких минусов.

Но есть плюсы, код проще читать. Почему же ты так не делаешь?

Вообще забавно наблюдать как пригорает у мимокрокодила

Рад что тебе забавно, значит лулзы продолжаются)

При этом, естественно, мимокрокодил заведомо не способен самостоятельно родить что-либо аналогичное

Ты про вот эти 50 строк кода что ли? Серьезно? А то что я тебе пол треда рассказываю что нужно исправить не считается? ахаха

И это при том, что он потратил на свои страдания и стенания о том, как неправильно использовать однобуквенные переменные, намного больше времени чем, по-идее, может потребоваться, чтобы написать подобный высер.

В какой момент ты решил что мне нужно срочно написать что то подобное?)

Код прочитать, не? Или чужой код читать в вашей секте не принято?

В нашей секте принято упрощать себе жизнь в будущем и писать максимально понятный код.

Насколько надо быть упоротым, чтобы в упор не догадываться, что нужно скармливать getElementsByClassName()? А, я понял, у тебя наверно двухстрочный экранчик на HD44780 вместо монитора, на котором не видно одновременно объявление функции и следующие несколько строчек, да?

А прикинь, можно написать нормально и тогда сигнатуры функции будет достаточно. Такой вот рокет сайнс.

TDrive ★★★★★
()
Ответ на: комментарий от Stanson

Зачем тащить в код всякие новшества, если они вообще ничего не дают кроме сокращения совместимости со всяким старьём?

Так у тебя всё равно же SVG, который всякими IE так себе поддерживается.

static_lab ★★★★★
()
Ответ на: комментарий от static_lab

IE вообще мало чего поддерживает. И его нету в девайсах которые можно использовать для показывания индикаторов. А на писюк с вендой всегда можно поставить какой-нибудь Firefox или Chrome.

Stanson ★★★★★
() автор топика
Ответ на: комментарий от TDrive

В какой момент ты решил что мне нужно срочно написать что то подобное?

Когда у тебя начало бомбить. :)

Вот начало у меня бомбить от всяких жирных поделий - я взял и написал так, как считаю правильным, а не разглагольствовал о том, что там неправильно сделали аффтары жирных поделий.

А ты только рассказывать прохладные истории можешь. И цена этих твоих историй - соответствующая. :)

Но вообще сама ситуация в целом просто шикарнейше выглядит - как только на жабоскрипте пишут что-то маленькое и годное, в отличии от жирного и неюзабельного мейнстрима, тут же выползают какие-то «я не программист, я ревьювер» у которых дико бомбит от того, что кто-то посмел написать на жабоскрипе что-то, что не сжирает всю память, не тормозит и не весит тонну, с какмим-то нелепыми претензиями.

Stanson ★★★★★
() автор топика
Ответ на: комментарий от Stanson

id тут вообще для передачи конфигурации индикатора используется. Всякие кастомные data-* только в HTML5 добавили.

У data-атрибутов поддержка среди браузеров лучше, чем у SVG, поэтому можно было бы смело их использовать вместо запихивания невалидных строк в id.

static_lab ★★★★★
()
Ответ на: комментарий от static_lab

У data-атрибутов поддержка среди браузеров лучше, чем у SVG

Есть какая-то реальная документация или исследование реальных девайсов на эту тему? Если движок браузера какого-нибудь телека или планшета, внезапно, игнорирует незнакомые аттрибуты, то получится фигня.

невалидных строк в id.

В id только пробелы нельзя, ЕМНИП.

В любом случае, если не нравится, то поменять - дело 1 минуты.

Stanson ★★★★★
() автор топика
Последнее исправление: Stanson (всего исправлений: 1)
Ответ на: комментарий от Stanson

бомбит от того, что кто-то посмел написать на жабоскрипе что-то, что не сжирает всю память, не тормозит и не весит тонну

Вот она в чем причина жирноты веба — клятые макаки дают переменным имена не из одной, а аж из трех букв.

200% жыра. Вы понимаете? 200%!!!11

Nervous ★★★★★
()
Ответ на: комментарий от Stanson

Есть какая-то реальная документация или исследование реальных девайсов на эту тему? Если движок браузера какого-нибудь телека или планшета, внезапно, игнорирует незнакомые аттрибуты, то получится фигня.

Есть. Всё есть. Всё, что ты так называешь

А флейм раздуваемый жабомакаками - это для меня развлекуха, не более. Мне пока что просто прикольно наблюдать за их потугами обосновать своё никчёмное существование.

требует времени, много. Вроде бы фигня дело, а чтобы мастерски…

Тема в целом интересная. Я много встречал людей, которые не знают JS, только React или что-то другое. И посчитать в ноде однострочником не могут. Есть такое. Ну так это плюс. На спецов знаешь какой спрос? Вон даже IBM запихнул в инсталлятор web https://www.opennet.ru/opennews/art.shtml?num=56494

Ты бы к критике присмотрелся, причесал бы код, а там и троллил бы нас, абизян.

modest
()
Ответ на: комментарий от Nervous

мерял, если со стороны сиЩшщника - много. Тут знакомых за лишнюю созданную переменную били, подсвечником. Сам видел.

modest
()
Ответ на: комментарий от modest

ИМХО, foreach медленнее будет, чем for(;;).

C for контекст потеряется и придётся костыль писать. Да и скорость в инициализации вообще некритична. Индикаторов всё равно много не сделаешь - смысла нет.

Stanson ★★★★★
() автор топика
Последнее исправление: Stanson (всего исправлений: 1)
Ответ на: комментарий от modest

Есть. Всё есть.

Из достоверного я нашёл только что data-* в HTML5 официально появился. В вебките старом посмотрел - вроде там вообще любые аттрибуты обрабатываются и доступны через dom. Искать где-то браузеры из какого-нибудь ведроида допотопного, чтобы посмотреть - так себе затея.

Ты бы к критике присмотрелся, причесал бы код

Причесать по делу - не проблема вообще, например, если data-* точно работает как минимум там же, где работает svg - то я с радостью уберу этот костыль с id, он мне самому не нравится.

Stanson ★★★★★
() автор топика
Ответ на: комментарий от static_lab

Уже что-то.

Ща забабахаем.

ЗЫ: Как-то так. Заодно, специально для ничонепонимающих заменил n на class_name. Интересно же, до чего ещё докопаются. :)

Stanson ★★★★★
() автор топика
Последнее исправление: Stanson (всего исправлений: 4)
Ответ на: комментарий от Stanson

Я тебя медленно подводил к замене var. Даже твои j и i никуда не делись. Они не сидят в scope for() (промолчим о других). Я надеялся, что ты наступишь на эти грабли просто создав ещё пару циклов. А так, как ты любишь однобуквенные названия переменных…
Тогда бы пришло понимание, что индикаторы могут быть не одни на странице. Возьмёт человек эту быстрейшую реализацию индикаторов и даже не сможет понять где косяк.

modest
()
Ответ на: комментарий от modest

Я надеялся, что ты наступишь на эти грабли просто создав ещё пару циклов.

А я не наступил. :)

Тогда бы пришло понимание, что индикаторы могут быть не одни на странице.

И никаких проблем не будет. Всё однобуквенное - локально для функций, а вся жабоскриптовая шняга в методах объекта Gauge. Так что ничего ничему мешать просто не сможет.

Кроме того, let внутри цикла на каждый проход будет создвать новый scope. В данном случае это просто лишний и ненужный оверхед, тем более что scope тут понадобятся только на каждый URL источника данных, чтобы создать таймеры с коллбеками к которым прилеплены соответствующие элементы массива а вовсе не на каждый индикатор. И даже там let нафиг не нужен, потому что я просто испольую forEach в котором со scope всё как надо в данном случае.

Stanson ★★★★★
() автор топика
Последнее исправление: Stanson (всего исправлений: 1)
Ответ на: комментарий от Stanson

Есть какая-то реальная документация или исследование реальных девайсов на эту тему?

Как будто тебе это поможет)) ты просто скажешь что это заказное исследование и они все врут))

TDrive ★★★★★
()
Последнее исправление: TDrive (всего исправлений: 1)
Ответ на: комментарий от TDrive

У меня не бомбит, я просто указал тебе на ошибки

Это не ошибки. И ты написал 2 страницы подгорания. :)

Почему ты воспринимаешь меня как угрозу?))

Как угрозу? Нет. Скорее как часть проблемы.

Stanson ★★★★★
() автор топика
Ответ на: комментарий от Stanson

Это не ошибки.

Это ошибки, они приводят к проблемам, я даже написал проблемы.

И ты написал 2 страницы подгорания. :)

Для тебя любой текст это подгорания? Гореть будут те кто будет работать с твоим кодом после тебя и это явно не я.

Как угрозу? Нет. Скорее как часть проблемы.

Какой проблемы?

TDrive ★★★★★
()
Ответ на: комментарий от TDrive

ты просто скажешь что это заказное исследование и они все врут))

Может быть. Но для начала надо чтобы оно существовало.

Stanson ★★★★★
() автор топика
Ответ на: комментарий от Stanson

ну вот и ищи сам) Это вопрос твоей компетенции, ни кто не обязан заниматься твоим образованием.

TDrive ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.