Гость
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Нужен совет по JS and M / 25 сообщений из 85, страница 1 из 4
18.06.2019, 09:17
    #39827537
Valeriu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет по JS and M
Всем доброго дня !

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

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

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



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

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


Тебя устроили его примеры с решением твоей проблемы?
...
Рейтинг: 0 / 0
19.06.2019, 11:05
    #39828208
Valeriu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет по JS and M
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
19.06.2019, 16:32
    #39828471
2acid
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет по JS and M
Кажется проще подучить JS, чем на М генерить HTML разметку
...
Рейтинг: 0 / 0
21.06.2019, 09:46
    #39829035
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет по JS and M
ValeriuНо оказалось что на чистом JS немножко сложнее добиться такого же результата
Так это смотря каким путем идти...
В JS так же можно сформировать html-текст и записать его в свойство innerHTML нужного элемента.
А можно действовать методами, как сделано у тебя.
...
Рейтинг: 0 / 0
21.06.2019, 09:48
    #39829041
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет по JS and M
2acidКажется проще подучить JS, чем на М генерить HTML разметку
Это очень спорный вопрос...
В вэб "сообществе" нет однозначного ответа. Бывает быстрее "сделать" и передать готовый HTML с делегированием событий на странице, нежели слать данные, а контент формировать с помощью JS...
...
Рейтинг: 0 / 0
21.06.2019, 09:52
    #39829042
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет по JS and M
Valeriu , обработчики (onclick) не обязательно пересылать...
Можно использовать "делегирование" событий и сразу "описать" их на странице. А нужные параметры записать в сам тег, их потом считает сам обработчик. ;)

Т.о. ты формируешь и передаешь только контент, а весь JS уже "ждет" его на странице.
...
Рейтинг: 0 / 0
21.06.2019, 09:56
    #39829045
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет по JS and M
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
21.06.2019, 10:32
    #39829073
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет по JS and M
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
22.06.2019, 17:31
    #39829476
Valeriu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет по JS and M
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
22.06.2019, 18:08
    #39829479
Valeriu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет по JS and M
Что интересно в моем случае, это воспроизвести динамику HTML в М, тоже самое
что и innerHTML ... в JS .
...
Рейтинг: 0 / 0
28.06.2019, 14:19
    #39831669
Valeriu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет по JS and M
Я пробовал вот этот вариант:
Код: 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
28.06.2019, 15:49
    #39831705
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет по JS and M
ValeriuВ динамике не хочет работать. Может ткнете носом где моя ошибка ?
Такие примеры проще тестить на действующем макете...

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

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


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

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

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

Он с Украины, так что ему наверно телефон не очень удобно
...
Рейтинг: 0 / 0
09.07.2019, 14:36
    #39835488
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет по JS and M
На том же сайте указан общий адрес почты... Мой не air , а ksa .
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Нужен совет по JS and M / 25 сообщений из 85, страница 1 из 4
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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