powered by simpleCommunicator - 2.0.27     © 2024 Programmizd 02
Map
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Нужен совет по JS and M
85 сообщений из 85, показаны все 4 страниц
Нужен совет по JS and M
    #39827537
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем доброго дня !

Спрошу здесь, покуда мне ближе этот форум,
и знаю что очень многие(ьольшенство) имеют дело с JS.
Есть на стороне М рутина, которая выдает список областей
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
 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, который должен отобразить этот список
в браузере.
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
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"
Они должны открыться при нажатие на имя области.

Спасибо.
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39827556
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ValeriuОбласти(имена) отображаются нормально,
а вот никак не получается отобразит дочерний элемент "Routins" и "Globals"
Что именно получает JS? В каком формате?
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39827561
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriu,

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

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



Рабочий пример
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39827566
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Даже с уже устаревшим jQuery код выглядит более читабельным, хотя и тут есть что поменять.

Рабочий пример
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39827587
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsaЧто именно получает JS? В каком формате?
Получаю строку как указал ниже DAiMor.
`TEST|TEST2|....|TESTn`
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39828125
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ValeriuПолучаю строку как указал ниже DAiMor.
Код: javascript
1.
`TEST|TEST2|....|TESTn`


Тебя устроили его примеры с решением твоей проблемы?
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39828208
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa,
Если честно я с JQuery не работаю ...
Стараюсь все делать на чистом JS, хотя понимаю что это сложнее.
Суть в чем ? Я все эти дебри сделал внутри самого GT.M:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
 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 немножко сложнее добиться такого же результата
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39828471
2acid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кажется проще подучить JS, чем на М генерить HTML разметку
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39829035
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ValeriuНо оказалось что на чистом JS немножко сложнее добиться такого же результата
Так это смотря каким путем идти...
В JS так же можно сформировать html-текст и записать его в свойство innerHTML нужного элемента.
А можно действовать методами, как сделано у тебя.
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39829041
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2acidКажется проще подучить JS, чем на М генерить HTML разметку
Это очень спорный вопрос...
В вэб "сообществе" нет однозначного ответа. Бывает быстрее "сделать" и передать готовый HTML с делегированием событий на странице, нежели слать данные, а контент формировать с помощью JS...
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39829042
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriu , обработчики (onclick) не обязательно пересылать...
Можно использовать "делегирование" событий и сразу "описать" их на странице. А нужные параметры записать в сам тег, их потом считает сам обработчик. ;)

Т.о. ты формируешь и передаешь только контент, а весь JS уже "ждет" его на странице.
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39829045
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriu
Код: javascript
1.
 s %fcgi("o","stdout")=%fcgi("o","stdout")_"<ul id=""myvertmenu"" class=""vertmenu"">"_$c(10)


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

Код: javascript
1.
 s %fcgi("o","stdout")=%fcgi("o","stdout")_"<ul id='myvertmenu' class='vertmenu'>"_$c(10)
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39829073
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa Valeriu , обработчики (onclick) не обязательно пересылать...
Можно использовать "делегирование" событий и сразу "описать" их на странице. А нужные параметры записать в сам тег, их потом считает сам обработчик. ;)

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

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
<!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... ;)
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39829476
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsaВ JS так же можно сформировать html-текст и записать его в свойство innerHTML нужного элемента.
Это я понял, это как в моем случае не требуется скорость и вывести список
пару "областей", которых в GT.M как таковых нету, это самое разумное решение для чайника токового как я ...
Я и пользуюсь
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
://**** 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 );    
    }

...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39829479
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что интересно в моем случае, это воспроизвести динамику HTML в М, тоже самое
что и innerHTML ... в JS .
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39831669
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я пробовал вот этот вариант:
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
<!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
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
 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 );    
    }


В динамике не хочет работать. Может ткнете носом где моя ошибка ?
Не пинайте сильно ...
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39831705
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ValeriuВ динамике не хочет работать. Может ткнете носом где моя ошибка ?
Такие примеры проще тестить на действующем макете...

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

Т.к. я уже на выходные...
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39831711
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa,
Если честно, мне со вложенными уровнями очень трудно спрвляться ..
Везде в инете примеры куча ! но, ВСЕ только с одним уровнем..
Типа:
Код: html
1.
2.
3.
<ul>
  <li><a href='#'><span>RtnName</span></a></li>
</ul>


Я попробую, как вы советуйте.
Спасибо.
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39832113
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ValeriuЕсли честно, мне со вложенными уровнями очень трудно спрвляться ..
Потому и имеет смысл потренироваться на простых примерах. Потом будешь любую проблему "как говно палкой мешать"...
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39833104
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa,
Оказывается ВСЕ давно работает ...
Просто не хочет открыть ветви, те вложенные узлы
Все кроется в файле css/mstyle.css
Когда это запускается чисто из примерного файла - работает.
А вот когда в динамике куда я его использую - нет.
Убираю ссылку <link href="/gtmportal/menu/css/mstyle.css" rel="stylesheet" type="text/css" />
работает и здесь, но высвечивает естественно просто, без красоты - открывает все ветви.
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39833209
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ValeriuКогда это запускается чисто из примерного файла - работает.
А вот когда в динамике куда я его использую - нет.
Значит дело не в бабине. (с)
Придется тебе искать факторы, которые "мешают" скриптам или еще чему-то реализовывать задуманное.

Тестовые примеры для того и нужны. Они помогают правильно определять источник проблем...
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39834760
vallery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsa,
По эл_почте с Вами можно связаться? Вопрос относительно Cache2009
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39834851
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
valleryПо эл_почте с Вами можно связаться? Вопрос относительно Cache2009
Свяжись... А ты ее знаешь?
Но у нас давно 2012.

У нас на сайте есть телефоны для связи...
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39834858
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa,

Он с Украины, так что ему наверно телефон не очень удобно
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39835488
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На том же сайте указан общий адрес почты... Мой не air , а ksa .
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39842931
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa,
krvsaЗначит дело не в бабине. (с)
Придется тебе искать факторы, которые "мешают" скриптам или еще чему-то реализовывать задуманное.
Вот нашлось время и разобрался.
Оказывается, загружать в начале при загрузки страницы - сработал не правильно...
Код: html
1.
2.
3.
<html>
    <body onload="InitDB();">
...


А вот уже в конце страницы - уже все нормально.
Код: html
1.
2.
3.
4.
5.
6.
7.
.....
</div>
<script type="text/javascript">
  window.onload = InitDB();   
</script>  
</body>
</html>
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39843245
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriu , сейчас более уместно использовать специальный метод для установки обработчиков. ;)
https://msiter.ru/tutorials/javascript/js_htmldom_eventlistener
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39859850
kalin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriukrvsa,
krvsaЗначит дело не в бабине. (с)
Придется тебе искать факторы, которые "мешают" скриптам или еще чему-то реализовывать задуманное.
Вот нашлось время и разобрался.
Оказывается, загружать в начале при загрузки страницы - сработал не правильно...
Код: html
1.
2.
3.
<html>
    <body onload="InitDB();">
...


А вот уже в конце страницы - уже все нормально.
Код: html
1.
2.
3.
4.
5.
6.
7.
.....
</div>
<script type="text/javascript">
  window.onload = InitDB();   
</script>  
</body>
</html>



В полноценном Backend такое "не прокатит". Данный метод хорош только для FrontEnd.
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39860186
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kalin,
Буду признателен если подскажите как правильно это делать.
У меня есть некоторые проблемы именно после вызова этой функции..
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39860233
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это
Valeriu
Код: html
1.
    <body onload="InitDB();">


И вот это
Valeriu
Код: html
1.
2.
3.
<script type="text/javascript">
  window.onload = InitDB();   
</script>  


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

Аналогом к первому может быть вот такой вариант
Код: html
1.
2.
3.
<script type="text/javascript">
  window.onload = InitDB;   
</script>  
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39860262
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или вовсе по современному...
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<!DOCTYPE html>
<html>
<head>
<script type='text/javascript'>
window.addEventListener('load',function(){
	alert('Test');
});
</script>
</head>
<body>
</body>
</html>
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39884920
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.

Не хотел засорять и поднять другую тему.
Вопрос.
Получаю из М - 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]]

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
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 );  
}


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

Спасибо.
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39884928
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
там я неправильно скопировал и вставил цикл - не заметил.
Если нетрудно, прошу модератору исправить.

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

А суть осталась та же.
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39884950
AlexKB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriu,
Символ "/" экранируете..?
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39884979
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос снимается.
Допустил ошибку ( JSON.parse ) . На те же грабли как называется
Код: javascript
1.
2.
3.
4.
5.
6.
  var callback = function(req){
  var rtncode = req.responseText;
  var instr = rtncode.split('][').join('],[');
  GPSARRAY = "[" + instr +"]"
  GPSrtecARRAY = JSON.parse(GPSARRAY);
  console.log(GPSrtecARRAY); 


Спасибо.
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39885055
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexKB,
Нет, это косая черта "/" которую я не экранирую.
Не столкнулся с ошибкой в этом случае ...
А вот обратная "\" - да
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39889563
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.
В эту же тему вопрос про JSON
Имется на сервере Глобал:
Код: html
1.
2.
^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
Код: html
1.
2.
{"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 ...

Спасибо.
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39889579
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriu,

А что не JSONовское вы там увидели, парсер его обработал без ошибок значит JSON
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39889663
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DAiMor,
В консоле смотрю.
Да, парсер показывает - JSON.
Код: javascript
1.
2.
   var CAUrtecARRAY = JSON.parse(rtncode);
   console.log(CAUrtecARRAY);


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

Спасибо. Обнадежили. Пятница сказывается наверное ;)
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39889718
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DAiMor,
Если не трудно, можете подсказать как парсить
такую структуру в таблицу на JS ?
Я новичок в этой области ..
Для мелкого справочника я делаю примерно так: (для меня выше изложенного сложновато)
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
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 );  
}

...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39889869
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Думаю перестроить мне легче будет на
серверной стороне Глобал.
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39890036
2acid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ValeriuЕсли не трудно, можете подсказать как парсить
такую структуру
Вариантов куча, например так :) ...
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
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)
      // ...
    }
  }
}
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39890070
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2acid,

Спасибо !
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39895704
kalin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2acid
ValeriuЕсли не трудно, можете подсказать как парсить
такую структуру

Вариантов куча, например так :) ...
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
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)
      // ...
    }
  }
}


Ghb

На python ничего такого и писать не надо было бы. Сам язык программирование предполагает хранение и обработку JSON данных :
Код: python
1.
print(json[''20191114"][''2025"]["1"])



А вообще как правило в правильных JSON структурах принято использовать списки.
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39895736
AlexKB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kalin,
А python Ваш, конечно же, в браузере исполняется..?
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39895930
2acid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kalinНа python ничего такого и писать не надо было бы. Сам язык программирование предполагает хранение и обработку JSON данных :
Аналогично и на JS
Код: javascript
1.
2.
console.log(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/"
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39896057
AlexKB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2acid
kalinНа python ничего такого и писать не надо было бы. Сам язык программирование предполагает хранение и обработку JSON данных :

Аналогично и на JS
Код: javascript
1.
2.
console.log(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/"



Представьте себе, и на Каше тоже...
авторs json={"123":{"456":{"1":"qwerty"}},"789":{"101":{"2":"asdf"}}}

w json."123"."456"."1"
qwerty

w json."789"."101"."2"
asdf

s json."789"."101"."2"="9999"

w json."789"."101"."2"
9999
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39910319
kalin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexKB
2acid
пропущено...

Аналогично и на JS
Код: javascript
1.
2.
console.log(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/"



Представьте себе, и на Каше тоже...
авторs json={"123":{"456":{"1":"qwerty"}},"789":{"101":{"2":"asdf"}}}

w json."123"."456"."1"
qwerty

w json."789"."101"."2"
asdf

s json."789"."101"."2"="9999"

w json."789"."101"."2"
9999


В питоне это не строка, а списки , словари, кортежи, соответственно и работа с ними через разные функции.
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39910322
kalin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexKB,
Вообще в браузере загружается сформированный уже html код и минимальный набор java кода для обработки интерфейса пользователя и поддержке защищенной сессии. А обработка массива данных на стороне сервера, а не как на стороне клиента в браузере. Для этого и придуманы 'скриптовые' языки и шаблоны, формирующие html для клиента.
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39920586
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго дня.
В эту же тему.
Записываю данные на М сервер (строку)
Получаю со стороны М json данные и обновляю строки в таблицу,
те новую строку для того чтоб пользователь мог увидеть что ввел.
Естественно перед обновления я очищаю таблицу.
Шапка таблица из 3-х строк - ее не трогаю.
Есть функция JS которая справляется с этим, а вот другая - НЕТ !
Подскажите в чем подвох ???

Работающая:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
function DellTable() {
    var tableHeaderRowCount = 3;
    var myTable = document.getElementById('tabledispecer');
    var rowCount = myTable.rows.length;
    
    for (var i = tableHeaderRowCount; i < rowCount; i++) {
        myTable.deleteRow(tableHeaderRowCount);
    }
}


Неработающая:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
function DellTable1() {
    var myTable = document.getElementById("tabledispecer");
    var rowCount = myTable.rows.length;
    for (var i = 3; i < rowCount; i++) {
        myTable.deleteRow(i);
       }
    }



Спасибо.
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39920605
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriu

[/src]
Неработающая:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
function DellTable1() {
    var myTable = document.getElementById("tabledispecer");
    var rowCount = myTable.rows.length;
    for (var i = 3; i < rowCount; i++) {
        myTable.deleteRow(i);
       }
    }


Положим, есть 5 строк. На первой итерации удаляем четвертую. Стало 4. На следующей удаляем пятую. Опаньки. Ну тут как-бы так написано.

А в первом случае всегда удаляется четвертая.
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39920889
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriu , для скорейшего обновления данных таблицы их просто переписывают, а "лишние" строки удаляют... Если строк не хватает - их добавляют.

Про удаление...
Если правильно сделать таблицу... С тегами
Код: html
1.
2.
<thead></thead>
<tbody></tbody>


Можно просто заменять "полные" tbody на "пустые", а о "шапке" вообще не беспокоиться. ;)
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39920901
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriu,

getElementById и пр. очень плохо будут работаь. Сделай html и засунь всё в свойство innerHTML.
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39920977
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
getElementById и пр. очень плохо будут работаь.

Почему?
Откуда такая информация?
crutchmaster
Сделай html и засунь всё в свойство innerHTML.

Это как раз не всегда уместное предложение...
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39921010
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa

crutchmaster
Сделай html и засунь всё в свойство innerHTML.

Это как раз не всегда уместное предложение...

https://fooobar.com/questions/95308/advantages-of-createelement-over-innerhtml
https://habr.com/ru/post/31413/
https://ru.stackoverflow.com/questions/635467/Почему-innerhtml-не-работает
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39921257
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему?
Они перестроение DOM будут делать после каждого вызова.
krvsa
Откуда такая информация?

Летали, знаем.
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39921258
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это как раз не всегда уместное предложение...
Засунуть хтмл 1 раз всегда будет быстрее, чём дёргать пачку методов в цикле.
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39921259
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa,

https://habr.com/ru/post/31413/

Ничего, что этой статье уже 12 лет?
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39925009
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
krvsa,
https://habr.com/ru/post/31413/
Ничего, что этой статье уже 12 лет?

Так покажи статейку посвежее...
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39954511
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день !

В эту же тему. Надеюсь на вас получить ответ.
Получаю из М данные для отчета. Обрабатываю JS (jsPDF-AutoTable)
Изложу кусочек кода:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
 didParseCell: function (data) {
  
// 1. НЕ РАБОТАЕТ - красит только одну ячейку   
      var string = data.cell.text;
        if (~string.indexOf("Y")) {
        alert(data.row.index); 
        if (data.row.index === data.row.index) {
       data.cell.styles.fillColor = [40, 170, 100]
       } 
    }

 // 2. РАБОТАЕТ - красит всю строку
    
    if (data.row.index === 3) {
        data.cell.styles.fillColor = [40, 170, 100]
     }
 }


Никак не могу понять в чем разница в этих двух условий ?
Я уже все перепробовал ...

Спасибо.
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39954513
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriu,

Прошу прщения я ошибся немножко там я загоняю в переменную
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
// 1. НЕ РАБОТАЕТ - красит только одну ячейку   
      var string = data.cell.text;
        if (~string.indexOf("Y")) {
        alert(data.row.index); 
        var ind = data.row.index ;
        if (data.row.index === ind) {
       data.cell.styles.fillColor = [40, 170, 100]
       } 
    }
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39954519
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Первоначально было так:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
 didParseCell: function (data) {
     // 1. НЕ рабочий
       var string = data.cell.text;
        if (~string.indexOf("Y")) {
        data.cell.styles.fillColor = [40, 170, 100]
       } 
     
 // 2. РАБОЧИЙ   
    if (data.row.index === 3) {
        data.cell.styles.fillColor = [40, 170, 100]
     }
  }
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39954668
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriu , просто потестируй свой код...

Либо пример тестовый делай и выкладывай тут. Куски рассматривать дело не особо перспективное...

Так же рекомендуют больше использовать классы, а не менять стиль напрямую у элемента.
Использование классов расширяет возможности как по использованию... Так и по отладке. ;)
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39954683
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa,
Код:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
function PDFDispecer() {
var doc = new jsPDF('l', 'pt','a3');
//var PTSans=retUTF(); 
//doc.addFileToVFS("PTSans.ttf", PTSans);
//doc.addFont('PTSans.ttf', 'PTSans', 'bold');
//doc.setFont('PTSans'); 
var parc = document.getElementById('parc').value
var dataP = document.getElementById('day').value
var Parray = parc.split( "-" ); 
var Parc = Parray[1] 
var dispecer = document.getElementById('dispecer').value

if (base64Img) {
    doc.addImage(base64Img, 'JPEG', 30, 20, 60, 16); // primul - pozitia img , doi - latimea img ,trei - inaltimea img
}

doc.setFontSize(16);
doc.setFontStyle('bold');
if (Parc.indexOf('Parc') !== -1)  {
    doc.text(230, 45, 'Raport operativ privind ideplinirtea programului de activitate pe ' + Parray[1] + 'ul nr. ' + Parray[2] + ' la data de ' + dataP);
} else {
    doc.text(230, 45, 'Raport operativ privind ideplinirtea programului de activitate pe ' + Parray[1] +  ' la data de ' + dataP);
}

doc.setFontSize(14)
doc.setFontStyle('bold');
doc.setFontStyle('italic');

doc.text(1000, 35, 'Dispecer ' + dispecer);


doc.autoTable({html: '#tabledispecer',
    startY: 60, styles: {cellPadding: 3.0, 
    font:"Helvetica", 
    fontSize: 11, 
    fontStyle: "bold", 
    halign: "center", 
    },
    theme: 'grid', 

    columnStyles: {0: {columnWidth: 75}, 
        1:{columnWidth:40}, 
        2: {columnWidth: 35}, 
        3: {columnWidth: 35},
        4: {columnWidth: 35},
        5: {columnWidth: 35}, 
        6: {columnWidth: 35},
        7: {columnWidth: 35},
        8: {columnWidth: 35}, 
        9: {columnWidth: 35},
        10: {columnWidth: 35},
        11: {columnWidth: 35}, 
        12: {columnWidth: 35},
        13: {columnWidth: 35},
        14: {columnWidth: 35},
        15: {columnWidth: 35}, 
        16: {columnWidth: 35},
        17: {columnWidth: 35},
        18: {columnWidth: 35}, 
        19: {columnWidth: 35},
        20: {columnWidth: 35},  
        21: {columnWidth: 35},
        22: {columnWidth: 35}},

    didParseCell: function (data) {
        var rows = data.table.body;
        var string = data.cell.text;
     for (var j = 0; j <= 3; j++) {   
        if (data.row.index === j) {
            data.cell.styles.fillColor = 'f9f9f9'
         }
     }       
        
     if (~string.indexOf("PT1") || ~string.indexOf("PT2") || ~string.indexOf("PT3")) {
         var row = data.row.index;
 
     //  alert (row);
       if (data.row.index === row) { 
      data.cell.styles.fillColor = 'edf71d' 
         } 

      }
    /*
      if (data.row.index === 13 || data.row.index === 23 || data.row.index === 37) {
        data.cell.styles.fillColor = 'edf71d'
     }
   */
      if (data.row.index === rows.length - 1) {
        data.cell.styles.fillColor = '0edec2';
    }   
  },
});
doc.output("dataurlnewwindow");
}

...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39954763
kalin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возьмите нормальный 'движек' для создания backend приложения и не тратьте время на все эти 'ухищрения'.
В таких "движках" и таблицы настраиваемые, и генераторы отчетов встроены. И самое главное, оно все работает без всякого "шаманства".
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39954810
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вижу решение - пока смутно...
1 .Посчитать это на стороне М, потом вызвать колбэком
массив и разобрать его в цикле .
2. Можно и прямо в JS ведь таблица у меня есть уже готовая !
Но не доходит как сохранить это в массив JS ( глобально)
а потом когда надо разобрать в цикле.ее

Т.е. , я в таблицы проверяю в каких строках содержится значение которое меня интересует
Значит я должен получать массив array = [13, 23, 37]

Я пробовал в лобешник ставить значения и это работает !!!
этот код:
Код: javascript
1.
2.
3.
     if (data.row.index === 13 || data.row.index === 23 || data.row.index === 37) {
        data.cell.styles.fillColor = 'edf71d'
     }
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39954870
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriu
Я пробовал в лобешник ставить значения и это работает !!!
этот код:
Код: javascript
1.
2.
3.
     if (data.row.index === 13 || data.row.index === 23 || data.row.index === 37) {
        data.cell.styles.fillColor = 'edf71d'
     }


Значит в не работающем варианте ты не правильно делаешь условия...
Тестируй код. Смотри какие значения обрабатываешь и какое в итоге условие передается ИФу.
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39954898
2acid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Valeriu,

ValeriudidParseCell: function (data) {
// 1. НЕ рабочий
var string = data.cell.text;
if (~string.indexOf("Y")) {
data.cell.styles.fillColor = [40, 170, 100]
}

Предположу, что ~string.indexOf("Y") если в ячейке есть Y, то условие выполнится и для cell будет применен стиль
Valeriu
// 2. РАБОЧИЙ
if (data.row.index === 3) {
data.cell.styles.fillColor = [40, 170, 100]
}
}

А тут для всех ячеек строки index === 3 применится стиль
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39954911
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2acid,
Да. Правильно.
если "Y", красится ТОЛЬКО ОДНА ячейка .
Мне нужно если "Y" красить всю строку ...
Я получаю этот номер строки, но он все ровно красит ячейку.
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39954932
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все таки пришлось перебирать еще раз таблицу,
найти номер строки по условию и красит соответственно ...
Уйму времени потратил. JS трудно дается мне.
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
   var tab = document.getElementById("tablesta");
     var l = tab.rows.length;
     for ( var i = 2; i < l; i++ ) {
         var tr = tab.rows[i];
         var cll = tr.cells[1];                                                              
         if(cll.innerText.indexOf('Y') != -1) {
            if (data.row.index === i) {
            data.cell.styles.fillColor = 'edf71d' 
            }
        }   
     }
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39967713
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.

В эту же тему.
Можно как-то запускать рутину по расписанию
один раз в сутки ?
В рутину будет входить и некоторый код JS

Спасибо.
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39967716
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriu,

nodejs + cron.
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39967723
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster,
У меня есть возможность запустить просто М рутину типа
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
s %fcgi("o","stdout")="" 
 s %fcgi("o","header","Content-Type")="text/html"
 s %fcgi("o","stdout")=%fcgi("o","stdout")_"<!DOCTYPE HTML PUBLIC ""-//W3C//DTD HTML 4.01//EN"" ""http://www.w3.org/TR/html4/strict.dtd"">"_$C(13,10)
 s %fcgi("o","stdout")=%fcgi("o","stdout")_"<html><head>"_$C(13,10)
 s %fcgi("o","stdout")=%fcgi("o","stdout")_""_$C(13,10)
 s %fcgi("o","stdout")=%fcgi("o","stdout")_"<meta http-equiv=""Content-Type"" content=""text/html; charset=windows-1251"">"_$C(13,10)
 s %fcgi("o","stdout")=%fcgi("o","stdout")_"<title>GDE and MUPIP</title>"_$C(13,10)
 s %fcgi("o","stdout")=%fcgi("o","stdout")_"<link href=""/tabs_js/tabtastic.css"" rel=""stylesheet"" type=""text/css"">"_$C(13,10) 
 s %fcgi("o","stdout")=%fcgi("o","stdout")_"<script type=""text/javascript"" src=""/tabs_js/addclasskillclass.js""></script>"_$C(13,10)
 s %fcgi("o","stdout")=%fcgi("o","stdout")_"<script type=""text/javascript"" src=""/tabs_js/attachevent.js""></script>"_$C(13,10)
 s %fcgi("o","stdout")=%fcgi("o","stdout")_"<script type=""text/javascript"" src=""/tabs_js/addcss.js""></script>"_$C(13,10)
 s %fcgi("o","stdout")=%fcgi("o","stdout")_"<script type=""text/javascript"" src=""/tabs_js/tabtastic.js""></script>"_$C(13,10)
 s %fcgi("o","stdout")=%fcgi("o","stdout")_"<script type=""text/javascript"" src=""/tabs_js/mupip.js""></script>"_$C(13,10)
 s %fcgi("o","stdout")=%fcgi("o","stdout")_"<script type=""text/javascript"" src=""mumpsedit/ajax.js""></script>"_$C(13,10)
 s %fcgi("o","stdout")=%fcgi("o","stdout")_"<script src=""mumpsedit/iniUI.js""></script>"_$C(13,10)
 s %fcgi("o","stdout")=%fcgi("o","stdout")_""_$C(13,10)
  ......


Или есть вариант и отдельно HTML JS файлы
Мое приложение посылает с М сервера, другому серверу данные в json формате.
Я просто вручную это делаю нажимая на какой-то батон ...
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39967777
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriu
Можно как-то запускать рутину по расписанию
Портал - Управление системой - Менеджер задач - Планируете задачу типа "Legacy Task", в строчку кода, запуск вашей программы.

Если у вас Cache 5.0.x, то Портала нет, но, возможно, есть (в области "%SYS") CHUI-утилита ^TASKMGR примерно с теми же возможностями.

Если и её нет, то есть класс %SYS.Task или %SYSTEM.Task, который позволяет планировать задачи программно.

Особых преимуществ внутренний планировщик над внешним (типа cron) не имеет, разве что некоторая дополнительная гибкость:
  • возможность описания задач как классов со свойствами, которые можно редактировать в Портале (в Cache 5.0 этого ещё не было)
  • возможность запуска одной задачи по завершении другой
  • увязка расписания с перезапуском Cache
  • и кое-что ещё.
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39968128
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster,

Да. Кроме node js пока не вижу как это реализовать..
Все хорошо, но вот еще один подводный камень - Ajax в Node JS
никак не могу сдружить ..
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39968346
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Остановились использовать Python для решение этой задачи.
https://github.com/chrisemunt/mg_python
Не плохая штука, одно не понятно как передать
клиенту не строки а мвсив строк ...
Node JS не пошел почему то. Именно из за Ajax.
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39968504
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriu
Node JS не пошел почему то. Именно из за Ajax.

При чём тут ajax и node js? Ajax - запросы из браузера на хост, node js - *сервер* приложения. Если надо что-то куда-то отослать, то там есть либы, которые отправляют http запросы, axios, например.
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39968967
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster,
Я с Вами согласен. Хотелось с наименьшими усилиями
использовать такой же подход, но с серверной стороны.
Поскольку данные нужно было отправлять с М сервера к
PostgreSQL , существовал код но с клиентской стороны, который
оператор должен быть сам это делать но в ручную (действие некое)
По сколько у наших партнеров серверная часть написана на Питоне,
пришлось подстраиваться под ними.
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39969180
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriu
одно не понятно как передать
клиенту не строки а мвсив строк ...

Да хоть тем же JSON-форматом...

Хотя, если у тебя проблемы с Ajax, как ты собираешься что-то посылать клиенту?
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39969206
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa,
В моем случае, я не клиенту должен был отправлять данные с М сервера,
а чужому серверу постгри через паутину. Вот здесь и застрял.
Клиент локальной сети через аякс получал данные на его стороне от М,
потом в ручную по нажатием на какой то батон отправлял данные
json через паутину чужому серверу...
Нужно было отказаться от такого подхода и полностью автоматизировать процесс.
Сошлись на крон+питон. Вот вся кухня.
Исходя из этого, пришлось настроится под ними (у них сервер на Питоне-Постгри)
Благо что нашел в инете модуль для М+питон (выше ссылка)
На счет массива строк.
Я к тому, что у них возврат данных по quit (функции)
на стороне М. Те строку больше 32 Кб никак.
Хотя смотрю в полное описание документации mg_python.
Можно пройтись по глобалу (или локально) и получать все данные.
Код: python
1.
2.
3.
4.
key = mg_python.m_previous(0, "^Person", "")
   while (key != ""):
      print(key, " = ", mg_python.m_get(0, "^Person", key))
      key  = mg_python.m_previous(0, "^Person", key)
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #39969278
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriu
Те строку больше 32 Кб никак.

Если есть ограничение по передаче, обычно применяется такая практика:
- Запрос количества "порций"
- Далее цикл по количеству "порций"
- В цикле читается очередная "порция" и записывается/склеивается
Так и собирается весь "пакет" данных, который хотели передать.
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #40008745
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa,
На счет строк я решил по другому.
Передаю отдельно узлы массива сформированного на серверной стороне.
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
 
OpenSTAD(rc1,rc2,Ret,Ret1) ; 8
 s ^eRECIVE($h)=rc1_"####"_rc2 ;lucreaza !!
 S (A1,Nr)=""
 F  S A1=$O(^stad(A1)) Q:A1=""  D
 . S NAZ=$P(^stad(A1),"\",2)
 . S Nr=Nr+1
 . S Ret(Nr)="Statia nr: "_A1_", "_"Denumirea: "_NAZ
 . s Ret1(Nr)=A1_"/"_NAZ
 . s rc2(Nr)="Statia nr: "_A1_", "_"Denumirea: "_NAZ
 . s rc1(Nr)="Statia nr: "_A1_", "_"Denumirea: "_NAZ
 q
 ;;


Клиент получает данные в json формате (возвращаю для удобства в параметры P1, P2 ...P8) хотя можно сколько угодно(256 ???)
Код: javascript
1.
2.
3.
4.
{"P1":{"1":"Statia nr: 1, Denumirea: Restaurantul \" Butoias \"","2":"Statia nr: 2, Denumirea: str. Ghidighici","3":"Statia nr: 3, Denumirea: Parcul \"La izvor\"","4":"Statia nr: 4, Denumirea: str. Bariera Sculeni","5":"Statia nr: 5, Denumirea: Parcul \"Alunelul\"","6":"Statia nr: 6, Denumirea: Piata Dimitrie Cantemir"}}
...
...
{"P4":{"1":"1/Restaurantul \" Butoias \"","2":"2/str. Ghidighici","3":"3/Parcul \"La izvor\"","4":"4/str. Bariera Sculeni","5":"5/Parcul \"Alunelul\"","6":"6/Piata Dimitrie Cantemir","7":"7/Universitatea de Medicina","8":"8/str. Toma Ciorba","9":"9/Piata Marii Adunari Nationale"}}


Здесь один нюанс есть.
Это у нас старые подпрограммы, которые возвращают данные с разделителями.
Вместо них можно писать сразу название (первый параметр Р1) или оставить так как есть и разобрать на клиенте(Р4) ???
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #40009127
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriu , по организации данных каждый решает сам, как ему это удобнее...

Лично я не использую объект, если используется некое перечисление чего-либо. Так другим будет более понятна структура данных.
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #40031580
kalin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для формирования json в Cache существует замечательная библиотека https://github.com/PlanetCache/CacheJSON.
Передавать весь массив в браузер плохая идея и сработает только при небольших объемах данных.
Проще создать класс, в который "ложить" сформированныее json строки, затем выбирать их последовательно в клиентском приложении либо через SQL, либо через объектный доступ, что предпочтительней, предварительно "загрузив" клиенту массив необходимых идентификаторов выбираемых объектов. По такому принципу, в общем, работают 'движки' в ERP системах. Встроенная в Cache библиотека python замечательно справляется как с SQL, так и с объектным доступом с любой версией Cache.
...
Рейтинг: 0 / 0
Нужен совет по JS and M
    #40031583
kalin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если нужен непосредственный доступ из клиентского приложения на javascript к web ресурсу, то его функции замечательно выполняет микросервис на базе fastcgi, специально заточенный под python.
...
Рейтинг: 0 / 0
85 сообщений из 85, показаны все 4 страниц
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Нужен совет по JS and M
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (0):
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]