Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M Новый топик    Ответить
Топик располагается на нескольких страницах: 1 2      [все]
 Нужен совет по JS and M  [new]
Valeriu
Member

Откуда: Chisinau
Сообщений: 2095
Всем доброго дня !

Спрошу здесь, покуда мне ближе этот форум,
и знаю что очень многие(ьольшенство) имеют дело с JS.
Есть на стороне М рутина, которая выдает список областей
+
 s (Er,nmsp,dtbs,rtntxt,rtnobj,glb,journal,n,nod,UCI,Ret,i,n)=""
 d syspatch^FCGIUCI(.nmsp,.dtbs,.rtntxt,.rtnobj,.glb,.journal,.n,.Er)
 f i=1:1 s nod=$o(dtbs(nod)) q:nod=""  d
 . s UCI=$p(dtbs(nod),"/",1)
 . s Ret=Ret_UCI_"|" 
 s %fcgi("o","stdout")=Ret_$c(13,10)
 s %fcgi("o","header","Content-Type")="text/plain"
 q
 ;

На стороне клиента код на JS, который должен отобразить этот список
в браузере.
+
function load_namespace() {
    var str=""
    var callback = function( req ){
    var rou = req.responseText;
    var arr = rou.split('|');
    for (var i = 0; i < arr.length - 1; i++) {
        var name = arr[i];
        var ul = document.getElementById("myvertmenu");
        ul.classList.add("vertmenu");
        var li = document.createElement('li');
        li.appendChild(document.createTextNode(name));
        li.setAttribute("onclick","f_namespace('"+ arr[i] +"')");
      
            var ulchild= document.createElement('ul');
            var lichild = document.createElement('li');
            lichild.appendChild(document.createTextNode("Routins"));
            lichild.appendChild(document.createTextNode("Globals"));
            ulchild.appendChild(lichild);
        ul.appendChild(li); 
        }
    };
  AJAX( "GET", "/gt.m/nms/*" , null, callback );    
}

Не пинайте сильно. Области(имена) отображаются нормально,
а вот никак не получается отобразит дочерний элемент "Routins" и "Globals"
Они должны открыться при нажатие на имя области.

Спасибо.
18 июн 19, 09:17    [21910307]     Ответить | Цитировать Сообщить модератору
 Re: Нужен совет по JS and M  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 13312
Valeriu
Области(имена) отображаются нормально,
а вот никак не получается отобразит дочерний элемент "Routins" и "Globals"

Что именно получает JS? В каком формате?
18 июн 19, 10:13    [21910348]     Ответить | Цитировать Сообщить модератору
 Re: Нужен совет по JS and M  [new]
DAiMor
Member

Откуда: Volzhsky -> Moscow -> CZ, Brno -> Moscow
Сообщений: 2738
Valeriu,

Я конечно понимаю, велосипедостроение наше всё. Но, в мире веба все меняется довольно быстро, и ваш код можно писать лучше применяя доступные публичные инструменты

В вашем случае, полагаю, вы забыли строчку
li.appendChild(ulchild);


Рабочий пример

Сообщение было отредактировано: 18 июн 19, 10:19
18 июн 19, 10:18    [21910354]     Ответить | Цитировать Сообщить модератору
 Re: Нужен совет по JS and M  [new]
DAiMor
Member

Откуда: Volzhsky -> Moscow -> CZ, Brno -> Moscow
Сообщений: 2738
Даже с уже устаревшим jQuery код выглядит более читабельным, хотя и тут есть что поменять.

Рабочий пример
18 июн 19, 10:38    [21910363]     Ответить | Цитировать Сообщить модератору
 Re: Нужен совет по JS and M  [new]
Valeriu
Member

Откуда: Chisinau
Сообщений: 2095
krvsa
Что именно получает JS? В каком формате?

Получаю строку как указал ниже DAiMor.
`TEST|TEST2|....|TESTn`
18 июн 19, 11:04    [21910401]     Ответить | Цитировать Сообщить модератору
 Re: Нужен совет по JS and M  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 13312
Valeriu
Получаю строку как указал ниже DAiMor.
`TEST|TEST2|....|TESTn`

Тебя устроили его примеры с решением твоей проблемы?
19 июн 19, 09:03    [21911203]     Ответить | Цитировать Сообщить модератору
 Re: Нужен совет по JS and M  [new]
Valeriu
Member

Откуда: Chisinau
Сообщений: 2095
krvsa,
Если честно я с JQuery не работаю ...
Стараюсь все делать на чистом JS, хотя понимаю что это сложнее.
Суть в чем ? Я все эти дебри сделал внутри самого GT.M:
+
 s %fcgi("o","stdout")=%fcgi("o","stdout")_"<ul id=""myvertmenu"" class=""vertmenu"">"_$c(10)
 s %fcgi("o","stdout")=%fcgi("o","stdout")_"    <li><a href=""0"">GT.M  DataBases</a></li>"_$c(10)
    ; ***Menu1 build in M-code
 	s (Er,nmsp,dtbs,rtntxt,rtnobj,glb,journal,n,nod,UCI)=""
 	d syspatch^FCGIUCI(.nmsp,.dtbs,.rtntxt,.rtnobj,.glb,.journal,.n,.Er)
 	f  s nod=$o(dtbs(nod)) q:nod=""  d
 	. s UCI=$p(dtbs(nod),"/",1)
 	. s %fcgi("o","stdout")=%fcgi("o","stdout")_"    <li><a href=""#"" onclick=""f_namespace("_"'"_UCI_"'"_")"">"_UCI_"</a>"_$c(10)
 	. s %fcgi("o","stdout")=%fcgi("o","stdout")_"         <ul>"_$c(10)
 	. s %fcgi("o","stdout")=%fcgi("o","stdout")_"          <li><a href=""#"" onclick=""load_routinedir()""><img src=""images/silk/text_signature.png"">  Routins</a></li>"_$c(10)
 	. s %fcgi("o","stdout")=%fcgi("o","stdout")_"          <li><a href=""#"" onclick=""load_glbdir()""><img src=""images/silk/server_components.png"">  Globals</a></li>"_$c(10)
 	. s %fcgi("o","stdout")=%fcgi("o","stdout")_"         </ul>"_$c(10)
 	. s %fcgi("o","stdout")=%fcgi("o","stdout")_"    </li>"_$c(10)
 s %fcgi("o","stdout")=%fcgi("o","stdout")_"</ul>"_$c(10)

Сейчас хочу вынести отдельно в HTML файле и вызовы делать через Ajax как показал в начале.
Но оказалось что на чистом JS немножко сложнее добиться такого же результата
19 июн 19, 11:05    [21911311]     Ответить | Цитировать Сообщить модератору
 Re: Нужен совет по JS and M  [new]
2acid
Member

Откуда:
Сообщений: 62
Кажется проще подучить JS, чем на М генерить HTML разметку
19 июн 19, 16:32    [21911697]     Ответить | Цитировать Сообщить модератору
 Re: Нужен совет по JS and M  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 13312
Valeriu
Но оказалось что на чистом JS немножко сложнее добиться такого же результата

Так это смотря каким путем идти...
В JS так же можно сформировать html-текст и записать его в свойство innerHTML нужного элемента.
А можно действовать методами, как сделано у тебя.
21 июн 19, 09:46    [21912662]     Ответить | Цитировать Сообщить модератору
 Re: Нужен совет по JS and M  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 13312
2acid
Кажется проще подучить JS, чем на М генерить HTML разметку

Это очень спорный вопрос...
В вэб "сообществе" нет однозначного ответа. Бывает быстрее "сделать" и передать готовый HTML с делегированием событий на странице, нежели слать данные, а контент формировать с помощью JS...
21 июн 19, 09:48    [21912669]     Ответить | Цитировать Сообщить модератору
 Re: Нужен совет по JS and M  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 13312
Valeriu, обработчики (onclick) не обязательно пересылать...
Можно использовать "делегирование" событий и сразу "описать" их на странице. А нужные параметры записать в сам тег, их потом считает сам обработчик. ;)

Т.о. ты формируешь и передаешь только контент, а весь JS уже "ждет" его на странице.
21 июн 19, 09:52    [21912670]     Ответить | Цитировать Сообщить модератору
 Re: Нужен совет по JS and M  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 13312
Valeriu
 s %fcgi("o","stdout")=%fcgi("o","stdout")_"<ul id=""myvertmenu"" class=""vertmenu"">"_$c(10)

Не используй двойные кавычки... Одинарные смотрятся удобнее. ;)

 s %fcgi("o","stdout")=%fcgi("o","stdout")_"<ul id='myvertmenu' class='vertmenu'>"_$c(10)
21 июн 19, 09:56    [21912673]     Ответить | Цитировать Сообщить модератору
 Re: Нужен совет по JS and M  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 13312
krvsa
Valeriu, обработчики (onclick) не обязательно пересылать...
Можно использовать "делегирование" событий и сразу "описать" их на странице. А нужные параметры записать в сам тег, их потом считает сам обработчик. ;)

Т.о. ты формируешь и передаешь только контент, а весь JS уже "ждет" его на странице.

Вот пример на жиКвери...

<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<script src='https://code.jquery.com/jquery-latest.js'></script>
<!--
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
-->
<style type='text/css'>
.uci > ul {
	display: none;
}
</style>
<script type='text/javascript'>
$(function(){
	$('.container .uci').on('click',function(){
		$(this).children('ul').toggle();
	});
	$('.container .uci li').on('click',function(e){
		var obj=$(this);
		var uci=obj.parents('.uci').eq(0).data('uci');
		var type=obj.data('type');
		alert('uci='+uci+', type='+type);
		return false;
	});
});
</script>
</head>
<body>
<div class='container'>
	<ul id="myvertmenu" class="vertmenu">
		<li><a href="0">GT.M  DataBases</a></li>
		<li class="uci off" data-uci='UCI0'><a href="#">UCI 0</a>
			<ul>
				<li data-type='routine'><a href="#"><img src="images/silk/text_signature.png">  Routins</a></li>
				<li data-type='glbdir'><a href="#"><img src="images/silk/server_components.png">  Globals</a></li>
			</ul>
		</li>
		<li class="uci off" data-uci='UCI1'><a href="#">UCI 1</a>
			<ul>
				<li data-type='routine'><a href="#"><img src="images/silk/text_signature.png">  Routins</a></li>
				<li data-type='glbdir'><a href="#"><img src="images/silk/server_components.png">  Globals</a></li>
			</ul>
		</li>
	</ul>
</div>
</body>
</html>

Если картинки стандартные для программ и глобалов - их так же можно исключить из контента, перенеся все в css... ;)
21 июн 19, 10:32    [21912717]     Ответить | Цитировать Сообщить модератору
 Re: Нужен совет по JS and M  [new]
Valeriu
Member

Откуда: Chisinau
Сообщений: 2095
krvsa
В JS так же можно сформировать html-текст и записать его в свойство innerHTML нужного элемента.

Это я понял, это как в моем случае не требуется скорость и вывести список
пару "областей", которых в GT.M как таковых нету, это самое разумное решение для чайника токового как я ...
Я и пользуюсь
+
://**** Load DB directory(Namespace)
function load_namespace() {
    var selectedNodeContent = "";
    var callback = function( req ){
        var rou = req.responseText;
        var arr = rou.split('|');

        for (var i = 0; i < arr.length - 1; i++) {
        var name = arr[i];
        selectedNodeContent += '<div class="card">'
        selectedNodeContent += '<div class="card-header"><a class="card-link" data-toggle="collapse" href=#"'+ name +'"> "'+ name +'"</a></div>'
        selectedNodeContent += '</div>'
             }
            document.getElementById("accordion").innerHTML =  selectedNodeContent;    
        };
      AJAX( "GET", "/gt.m/nms/*" , null, callback );    
    }
22 июн 19, 17:31    [21913404]     Ответить | Цитировать Сообщить модератору
 Re: Нужен совет по JS and M  [new]
Valeriu
Member

Откуда: Chisinau
Сообщений: 2095
Что интересно в моем случае, это воспроизвести динамику HTML в М, тоже самое
что и innerHTML ... в JS .
22 июн 19, 18:08    [21913413]     Ответить | Цитировать Сообщить модератору
 Re: Нужен совет по JS and M  [new]
Valeriu
Member

Откуда: Chisinau
Сообщений: 2095
Я пробовал вот этот вариант:
+
<!DOCTYPE>
<html>
<head>
    <title>Вертикальное accordion меню | pcvector.net</title>
	<link rel="shortcut icon" href="/favicon.ico" />
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <link href="mstyle.css" rel="stylesheet" type="text/css" />
	<style>
		.demo_container{
			margin:50px auto;
			width:400px;
		}
	</style>
    <script type="text/javascript">
        $(document).ready(function () {
			$('#cssmenu li.has-sub > a').on('click', function(){
				$(this).removeAttr('href');
				var element = $(this).parent('li');
				if (element.hasClass('open')) {
					element.removeClass('open');
					element.find('li').removeClass('open');
					element.find('ul').slideUp();
				}
				else {
					element.addClass('open');
					element.children('ul').slideDown();
					element.siblings('li').children('ul').slideUp();
					element.siblings('li').removeClass('open');
					element.siblings('li').find('li').removeClass('open');
					element.siblings('li').find('ul').slideUp();
				}
			});

			$('#cssmenu>ul>li.has-sub>a').append('<span class="holder"></span>');
        });
    </script>
</head>
<body>


<div class="demo_container">

	<div id='cssmenu'>
		<ul>
		   <li class='active'><a href='index.html'><span>GT.M DataBases</span></a></li>
		   <li class='has-sub'><a href='#'><span>SYS</span></a>
			  <ul>
				 <li class='has-sub'><a href='#'><span>Routines List</span></a>
					<ul>
					   <li><a href='#'><span>RtnName</span></a></li>
					</ul>
				 </li>
			  </ul>
		   </li>
		</ul>
	</div>

</div>
   </body>
</html>

Плюс я сделал на JS
+
 function load_namespace() {
        var callback = function( req ){
        var rou = req.responseText;
        var arr = rou.split('|');
        for (var i = 0; i < arr.length - 1; i++) {
            $('ul').append(
                $('<li class="has-sub"><a href="#" onclick="f_namespace(\'' + arr[i] + '\')"><span> '+ arr[i] +' </span></a>').append(
                    $('ul').append(
                        $('<li><a href="#" onClick="addAnother()"><span>Routines</span></a>').append(
                            $('<ul>')    
                ))));      
            }
        };
      AJAX( "GET", "/gt.m/nms/*" , null, callback );    
    }

В динамике не хочет работать. Может ткнете носом где моя ошибка ?
Не пинайте сильно ...
28 июн 19, 14:19    [21917075]     Ответить | Цитировать Сообщить модератору
 Re: Нужен совет по JS and M  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 13312
Valeriu
В динамике не хочет работать. Может ткнете носом где моя ошибка ?

Такие примеры проще тестить на действующем макете...

Сделай тестовый пример с "имитацией" запроса, например, просто по кнопке что-то сделай, кагбэ это сделал запрос.
После этого можно сделать пошаговое тестирование кода и увидишь, что не так. ;)

Т.к. я уже на выходные...
28 июн 19, 15:49    [21917159]     Ответить | Цитировать Сообщить модератору
 Re: Нужен совет по JS and M  [new]
Valeriu
Member

Откуда: Chisinau
Сообщений: 2095
krvsa,
Если честно, мне со вложенными уровнями очень трудно спрвляться ..
Везде в инете примеры куча ! но, ВСЕ только с одним уровнем..
Типа:
<ul>
  <li><a href='#'><span>RtnName</span></a></li>
</ul>

Я попробую, как вы советуйте.
Спасибо.
28 июн 19, 16:00    [21917170]     Ответить | Цитировать Сообщить модератору
 Re: Нужен совет по JS and M  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 13312
Valeriu
Если честно, мне со вложенными уровнями очень трудно спрвляться ..

Потому и имеет смысл потренироваться на простых примерах. Потом будешь любую проблему "как говно палкой мешать"...
1 июл 19, 08:07    [21917899]     Ответить | Цитировать Сообщить модератору
 Re: Нужен совет по JS and M  [new]
Valeriu
Member

Откуда: Chisinau
Сообщений: 2095
krvsa,
Оказывается ВСЕ давно работает ...
Просто не хочет открыть ветви, те вложенные узлы
Все кроется в файле css/mstyle.css
Когда это запускается чисто из примерного файла - работает.
А вот когда в динамике куда я его использую - нет.
Убираю ссылку <link href="/gtmportal/menu/css/mstyle.css" rel="stylesheet" type="text/css" />
работает и здесь, но высвечивает естественно просто, без красоты - открывает все ветви.
3 июл 19, 09:43    [21919605]     Ответить | Цитировать Сообщить модератору
 Re: Нужен совет по JS and M  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 13312
Valeriu
Когда это запускается чисто из примерного файла - работает.
А вот когда в динамике куда я его использую - нет.

Значит дело не в бабине. (с)
Придется тебе искать факторы, которые "мешают" скриптам или еще чему-то реализовывать задуманное.

Тестовые примеры для того и нужны. Они помогают правильно определять источник проблем...
3 июл 19, 12:39    [21919751]     Ответить | Цитировать Сообщить модератору
 Re: Нужен совет по JS and M  [new]
vallery
Member

Откуда:
Сообщений: 1
krvsa,
По эл_почте с Вами можно связаться? Вопрос относительно Cache2009
7 июл 19, 18:56    [21922289]     Ответить | Цитировать Сообщить модератору
 Re: Нужен совет по JS and M  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 13312
vallery
По эл_почте с Вами можно связаться? Вопрос относительно Cache2009

Свяжись... А ты ее знаешь?
Но у нас давно 2012.

У нас на сайте есть телефоны для связи...
8 июл 19, 08:07    [21922415]     Ответить | Цитировать Сообщить модератору
 Re: Нужен совет по JS and M  [new]
DAiMor
Member

Откуда: Volzhsky -> Moscow -> CZ, Brno -> Moscow
Сообщений: 2738
krvsa,

Он с Украины, так что ему наверно телефон не очень удобно
8 июл 19, 08:48    [21922426]     Ответить | Цитировать Сообщить модератору
 Re: Нужен совет по JS and M  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 13312
На том же сайте указан общий адрес почты... Мой не air, а ksa.
9 июл 19, 14:36    [21923468]     Ответить | Цитировать Сообщить модератору
 Re: Нужен совет по JS and M  [new]
Valeriu
Member

Откуда: Chisinau
Сообщений: 2095
krvsa,
krvsa
Значит дело не в бабине. (с)
Придется тебе искать факторы, которые "мешают" скриптам или еще чему-то реализовывать задуманное.

Вот нашлось время и разобрался.
Оказывается, загружать в начале при загрузки страницы - сработал не правильно...
<html>
    <body onload="InitDB();">
...

А вот уже в конце страницы - уже все нормально.
.....
</div>
<script type="text/javascript">
  window.onload = InitDB();   
</script>  
</body>
</html>
30 июл 19, 12:29    [21937761]     Ответить | Цитировать Сообщить модератору
 Re: Нужен совет по JS and M  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 13312
Valeriu, сейчас более уместно использовать специальный метод для установки обработчиков. ;)
https://msiter.ru/tutorials/javascript/js_htmldom_eventlistener
31 июл 19, 07:33    [21938479]     Ответить | Цитировать Сообщить модератору
 Re: Нужен совет по JS and M  [new]
kalin
Member

Откуда:
Сообщений: 316
Valeriu
krvsa,
krvsa
Значит дело не в бабине. (с)
Придется тебе искать факторы, которые "мешают" скриптам или еще чему-то реализовывать задуманное.

Вот нашлось время и разобрался.
Оказывается, загружать в начале при загрузки страницы - сработал не правильно...
<html>
    <body onload="InitDB();">
...

А вот уже в конце страницы - уже все нормально.
.....
</div>
<script type="text/javascript">
  window.onload = InitDB();   
</script>  
</body>
</html>


В полноценном Backend такое "не прокатит". Данный метод хорош только для FrontEnd.
10 сен 19, 14:08    [21967745]     Ответить | Цитировать Сообщить модератору
 Re: Нужен совет по JS and M  [new]
Valeriu
Member

Откуда: Chisinau
Сообщений: 2095
kalin,
Буду признателен если подскажите как правильно это делать.
У меня есть некоторые проблемы именно после вызова этой функции..
11 сен 19, 10:52    [21968350]     Ответить | Цитировать Сообщить модератору
 Re: Нужен совет по JS and M  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 13312
Это
Valeriu
    <body onload="InitDB();">

И вот это
Valeriu
<script type="text/javascript">
  window.onload = InitDB();   
</script>  

Совсем разные вещи...

Аналогом к первому может быть вот такой вариант
<script type="text/javascript">
  window.onload = InitDB;   
</script>  
11 сен 19, 12:21    [21968419]     Ответить | Цитировать Сообщить модератору
 Re: Нужен совет по JS and M  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 13312
Или вовсе по современному...
<!DOCTYPE html>
<html>
<head>
<script type='text/javascript'>
window.addEventListener('load',function(){
	alert('Test');
});
</script>
</head>
<body>
</body>
</html>
11 сен 19, 12:56    [21968458]     Ответить | Цитировать Сообщить модератору
 Re: Нужен совет по JS and M  [new]
Valeriu
Member

Откуда: Chisinau
Сообщений: 2095
Добрый день.

Не хотел засорять и поднять другую тему.
Вопрос.
Получаю из М - JSON массив...
+
[["04/11/2019",1,1286],["04/11/2019",1,1311],["04/11/2019",1,1333],["04/11/2019",1,1336],["04/11/2019",1,1337],["04/11/2019",1,1340],["04/11/2019",1,1359],["04/11/2019",1,1360],["04/11/2019",1,2151],["04/11/2019",1,2199],["04/11/2019",1,2405],["04/11/2019",2,2133],["04/11/2019",2,2136],["04/11/2019",2,2139],["04/11/2019",2,2150],["04/11/2019",2,2168],["04/11/2019",2,2177],["04/11/2019",2,2190],["04/11/2019",2,2402],["04/11/2019",2,2404],["04/11/2019",2,2408],["04/11/2019",2,2411],["04/11/2019",2,2421],["04/11/2019",3,1265],["04/11/2019",3,1266],["04/11/2019",3,1272],["04/11/2019",3,1300],["04/11/2019",3,1305],["04/11/2019",3,1306],["04/11/2019",3,1318],["04/11/2019",3,1329],["04/11/2019",3,1335],["04/11/2019",3,1342],["04/11/2019",3,1343],["04/11/2019",3,1357],["04/11/2019",3,1371],["04/11/2019",4,2142],["04/11/2019",4,2155],["04/11/2019",4,2156],["04/11/2019",4,2173],["04/11/2019",4,2189],["04/11/2019",4,2191],["04/11/2019",4,2192],["04/11/2019",4,2400],["04/11/2019",4,2406],["04/11/2019",4,2407],["04/11/2019",4,2409],["04/11/2019",4,2413],["04/11/2019",4,2415],["04/11/2019",4,2417],["04/11/2019",4,2423],["04/11/2019",4,2432],["04/11/2019",4,2433],["04/11/2019",4,2434],["04/11/2019",4,2435],["04/11/2019",4,2436],["04/11/2019",5,2176],["04/11/2019",5,2186],["04/11/2019",5,2194],["04/11/2019",5,2403],["04/11/2019",5,2412],["04/11/2019",5,2414],["04/11/2019",5,2420],["04/11/2019",5,2422],["04/11/2019",5,2430],["04/11/2019",7,3799],["04/11/2019",7,3829],["04/11/2019",7,3862],["04/11/2019",7,3888],["04/11/2019",7,3892],["04/11/2019",7,3895],["04/11/2019",7,3907],["04/11/2019",8,2147],["04/11/2019",8,2160],["04/11/2019",8,2161],["04/11/2019",8,2162],["04/11/2019",8,2163],["04/11/2019",8,2164],["04/11/2019",8,2166],["04/11/2019",8,2167],["04/11/2019",8,2169],["04/11/2019",8,2170],["04/11/2019",8,2171],["04/11/2019",8,2172],["04/11/2019",8,2174],["04/11/2019",8,2178],["04/11/2019",8,2179],["04/11/2019",8,2181],["04/11/2019",8,2182],["04/11/2019",8,2185],["04/11/2019",8,2401],["04/11/2019",8,2418],["04/11/2019",8,2419],["04/11/2019",9,3814],["04/11/2019",9,3815],["04/11/2019",9,3858],["04/11/2019",9,3881],["04/11/2019",9,3883],["04/11/2019",9,3902],["04/11/2019",9,3909],["04/11/2019",9,3910],["04/11/2019",10,1],["04/11/2019",10,1210],["04/11/2019",10,1274],["04/11/2019",10,1275]]

+
function ArrayTABLE()  {
  var myTable = document.getElementById("table");
  var rowCount = myTable.rows.length;
  var date = document.getElementById('GPSday').value;
  
  for (var x=rowCount-1; x>0; x--) {
     myTable.deleteRow(x);
     }
 
  var adrip = document.getElementById("ipnr").value
  var arrTables = document.getElementById('table');
  var oRows = arrTables.rows;
  var numRows = oRows.length;
  
  var callback = function(req){
  var rtncode = req.responseText;
  var instr = rtncode.split('][').join('],[');
  GPSrtecARRAY = "[" + instr +"]"
  console.log(GPSrtecARRAY); 
  // Example:
  //GPSrtecARRAY = [["04/11/2019",1,1286],["04/11/2019",1,1311],["04/11/2019",1,1333],["04/11/2019",1,1336],["04/11/2019",1,1337]]
  for (var i = 0; i < GPSrtecARRAY.length ; i++) {
   var newRow = arrTables.insertRow(-1, numRows );
    for(var j = 0; j < GPSrtecARRAY[i].length; j++) {
       newCell = newRow.insertCell(j);
       newCell.innerHTML = GPSrtecARRAY[i][j];
       }
     }
 };
 AJAX( "GET", "/cache/json/arryGPS/" + date, null, callback );  
}

Когда хочу непосредственно (в динамике) бросать данные в таблицу,
как будто не правильная структура.
Хотя, когда эти данные что я получаю в консоле
ставлю в переменную ВСЕ работает !
В чем моя ошибка ???

Спасибо.

Сообщение было отредактировано: 4 ноя 19, 13:55
4 ноя 19, 12:54    [22009304]     Ответить | Цитировать Сообщить модератору
 Re: Нужен совет по JS and M  [new]
Valeriu
Member

Откуда: Chisinau
Сообщений: 2095
там я неправильно скопировал и вставил цикл - не заметил.
Если нетрудно, прошу модератору исправить.

for (var i = 0; i < GPSrtecARRAY.length ; i++) {

А суть осталась та же.
4 ноя 19, 13:13    [22009316]     Ответить | Цитировать Сообщить модератору
 Re: Нужен совет по JS and M  [new]
AlexKB
Member

Откуда: Запорожье
Сообщений: 828
Valeriu,
Символ "/" экранируете..?
4 ноя 19, 14:10    [22009349]     Ответить | Цитировать Сообщить модератору
 Re: Нужен совет по JS and M  [new]
Valeriu
Member

Откуда: Chisinau
Сообщений: 2095
Вопрос снимается.
Допустил ошибку ( JSON.parse ) . На те же грабли как называется
  var callback = function(req){
  var rtncode = req.responseText;
  var instr = rtncode.split('][').join('],[');
  GPSARRAY = "[" + instr +"]"
  GPSrtecARRAY = JSON.parse(GPSARRAY);
  console.log(GPSrtecARRAY); 

Спасибо.
4 ноя 19, 15:30    [22009401]     Ответить | Цитировать Сообщить модератору
 Re: Нужен совет по JS and M  [new]
Valeriu
Member

Откуда: Chisinau
Сообщений: 2095
AlexKB,
Нет, это косая черта "/" которую я не экранирую.
Не столкнулся с ошибкой в этом случае ...
А вот обратная "\" - да
4 ноя 19, 19:47    [22009517]     Ответить | Цитировать Сообщить модератору
 Re: Нужен совет по JS and M  [new]
Valeriu
Member

Откуда: Chisinau
Сообщений: 2095
Добрый день.
В эту же тему вопрос про JSON
Имется на сервере Глобал:
^rebWEBdata(20191114,2025,1)=07:45/09:10/1:25/34-Intarzieri/1-DZ/1-Inghet/fd/1-Russu/acsm/75/2/2019-11-14/
^rebWEBdata(20191115,2059,33)=10:20/11:36/1:16/34-Intarzieri/14-CAUCIUC/29-Aproviz/123/1-Russu/acsm/12/1/2019-11-15/

Получаю JSON после преобразования используя https://github.com/robtweed/EWD/blob/master/_zewdJSON.m
{"20191114":{"2025":{"1":"07:45/09:10/1:25/34-Intarzieri/1-DZ/1-Inghet/fd/1-Russu/acsm/75/2/2019-11-14/"}},
"20191115":{"2059":{"33":"10:20/11:36/1:16/34-Intarzieri/14-CAUCIUC/29-Aproviz/123/1-Russu/acsm/12/1/2019-11-15/"}}}

Может кто-то занимался обработке таких строк...
Кто может ответить, это правильное строение или нет ?
В консоле получаю как бы не JSON ...

Спасибо.
15 ноя 19, 13:24    [22017120]     Ответить | Цитировать Сообщить модератору
 Re: Нужен совет по JS and M  [new]
DAiMor
Member

Откуда: Volzhsky -> Moscow -> CZ, Brno -> Moscow
Сообщений: 2738
Valeriu,

А что не JSONовское вы там увидели, парсер его обработал без ошибок значит JSON

К сообщению приложен файл. Размер - 112Kb
15 ноя 19, 13:42    [22017142]     Ответить | Цитировать Сообщить модератору
 Re: Нужен совет по JS and M  [new]
Valeriu
Member

Откуда: Chisinau
Сообщений: 2095
DAiMor,
В консоле смотрю.
Да, парсер показывает - JSON.
   var CAUrtecARRAY = JSON.parse(rtncode);
   console.log(CAUrtecARRAY);

Не там console.log смотрел

Спасибо. Обнадежили. Пятница сказывается наверное ;)
15 ноя 19, 14:41    [22017283]     Ответить | Цитировать Сообщить модератору
 Re: Нужен совет по JS and M  [new]
Valeriu
Member

Откуда: Chisinau
Сообщений: 2095
DAiMor,
Если не трудно, можете подсказать как парсить
такую структуру в таблицу на JS ?
Я новичок в этой области ..
Для мелкого справочника я делаю примерно так: (для меня выше изложенного сложновато)
+
function GhidViewCAU() {
    var tableHeaderRowCount = 2;
    var myTable = document.getElementById("table1");
    var rowCount = myTable.rows.length;

    for (var i = tableHeaderRowCount; i < rowCount; i++) {
        myTable.deleteRow(tableHeaderRowCount);
    }

    var arrTables = document.getElementById('table1');
    var oRows = arrTables.rows;
    var numRows = oRows.length;
    var callback = function(req){
    var rtncode = req.responseText;
    var CAUrtecARRAY = JSON.parse(rtncode);
    var count = Object.keys(CAUrtecARRAY).length;

    for (var i = 1; i < count + 1 ; i++) {
     var newRow = arrTables.insertRow(-1, numRows );
         newCell = newRow.insertCell(0);
         var keys = Object.keys(CAUrtecARRAY); 
         newCell.innerHTML = keys[i-1]
         newCell = newRow.insertCell(1);
         newCell.innerHTML = CAUrtecARRAY[i];
         newCell = newRow.insertCell(2);
         var x = document.createElement("BUTTON");
         var y = document.createElement("BUTTON");
         x.className = 'btn-outline-info btn-sm';
         y.className = 'btn-outline-info btn-sm';
         var edt = document.createTextNode("Edit");
         var del = document.createTextNode("Del.");
         x.appendChild(edt);
         y.appendChild(del);
         x.onclick = function(){openRowCAU()};
         y.onclick = function(){dellRowCAU(this)}; 
         newCell.appendChild(x);
         newCell.appendChild(y);
      }
   };
   AJAX( "GET", "/cache/rebut/arrayCAU/", null, callback );  
}
15 ноя 19, 15:18    [22017357]     Ответить | Цитировать Сообщить модератору
 Re: Нужен совет по JS and M  [new]
Valeriu
Member

Откуда: Chisinau
Сообщений: 2095
Думаю перестроить мне легче будет на
серверной стороне Глобал.
15 ноя 19, 17:31    [22017633]     Ответить | Цитировать Сообщить модератору
 Re: Нужен совет по JS and M  [new]
2acid
Member

Откуда:
Сообщений: 62
Valeriu
Если не трудно, можете подсказать как парсить
такую структуру

Вариантов куча, например так :) ...
const json = {"20191114":{"2025":{"1":"07:45/09:10/1:25/34-Intarzieri/1-DZ/1-Inghet/fd/1-Russu/acsm/75/2/2019-11-14/"}},
"20191115":{"2059":{"33":"10:20/11:36/1:16/34-Intarzieri/14-CAUCIUC/29-Aproviz/123/1-Russu/acsm/12/1/2019-11-15/"}}};

for (let key1 of Object.keys(json)) {
  // console.log(key1);
  for (let key2 of Object.keys(json[key1])) {
    // console.log(key2);
    for (let key3 of Object.keys(json[key1][key2])) {
      // console.log(key3);
      const someArr = json[key1][key2][key3].split('/');
      // console.log(someArr)
      // ...
    }
  }
}
16 ноя 19, 17:05    [22017901]     Ответить | Цитировать Сообщить модератору
 Re: Нужен совет по JS and M  [new]
Valeriu
Member

Откуда: Chisinau
Сообщений: 2095
2acid,

Спасибо !
16 ноя 19, 20:58    [22017952]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2      [все]
Все форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M Ответить