powered by simpleCommunicator - 2.0.27     © 2024 Programmizd 02
Map
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Нужен совет по JS and M
25 сообщений из 85, страница 1 из 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
25 сообщений из 85, страница 1 из 4
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Нужен совет по JS and M
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (0):
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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