powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / CSP из JavaScript
25 сообщений из 33, страница 1 из 2
CSP из JavaScript
    #37441642
komogv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно ли из кода JavaScript получить результат из CSP-method, например объектную ссылку и далее в JavaScript воспользоваться ей как обычным объектом, м.б. есть примеры?
...
Рейтинг: 0 / 0
CSP из JavaScript
    #37442043
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komogvМожно ли из кода JavaScript получить результат из CSP-method
Можно.
Для этого существуют гипперэвенты

Код: plaintext
1.
2.
3.
var prm='test'
var val=#server(..MethodCOS(prm))#
alert(val)

komogvнапример объектную ссылку и далее в JavaScript воспользоваться ей как обычным объектом
Нет.
Ореф класса есть локальная переменная COS да еще и работает она только в той области, в которой открыли/создали экземпляр класса...
...
Рейтинг: 0 / 0
CSP из JavaScript
    #37442231
komogv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, т.е. как я понял, если я имею некий ResultSet и хочу красиво заполнить таблицу различными параметрами тэгов <td> то прописывать я это должен внутри CSP метода?
...
Рейтинг: 0 / 0
CSP из JavaScript
    #37442287
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komogv,

Вы можете просто вернуть какую-нибудь кодированную строку, не факт, что это хороший результат.
Вы можете в самом методе сгенерировать javascript код и через DOM сделать то, что вы хотите.
...
Рейтинг: 0 / 0
CSP из JavaScript
    #37442815
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komogvМожно ли из кода JavaScript получить результат из CSP-method, например объектную ссылку и далее в JavaScript воспользоваться ей как обычным объектом, м.б. есть примеры?

Именно CSP интересует? Для zen-приложения можно вполне приятные JS-объекты получать от каше-сервера. Даже с поведением, если есть желание.
...
Рейтинг: 0 / 0
CSP из JavaScript
    #37442906
komogv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, наверное действительно можно перегнать набор в массив и работать уже с ним,
а с zen я еще не до такой степени разобрался, но если JavaScript выполняется на стороне сервера Cache - замечательно, где бы найти архив примеров?
...
Рейтинг: 0 / 0
CSP из JavaScript
    #37443017
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komogvесли JavaScript выполняется на стороне сервера Cache - замечательно
JS всегда выполняется на стороне клиента. А вот метод кащейский, вызваный гипперэвентом, выполнится на сервере.

komogvгде бы найти архив примеров?
Что именно нужно? Тут на форуме масса примеров по CSP... И он не сложен в понимании, подготовленному прогеру достаточно CSP_КвикСтарт, который можно скачать с сайта ИС...
...
Рейтинг: 0 / 0
CSP из JavaScript
    #37443496
komogv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Конечно, пример в документации "кубика" маловат, попробуем Quick
...
Рейтинг: 0 / 0
CSP из JavaScript
    #37443987
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolesovДля zen-приложения можно вполне приятные JS-объекты получать от каше-сервера. Даже с поведением, если есть желание.
Для csp:

Код: plaintext
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.
Class csp.jsonExample Extends %CSP.Page {
/// Пишем в браузер
ClassMethod OnPage() As %Status {
 &html<<html><head>>

 w ..HyperEventHead() ;подключаем нужные для гипер-ивентов библиотеки

 &html<</head><body>
 
 <button onclick='btnClick();'>
  Get js-object from server
 </button>>

 w ..HyperEventFrame() ;для совместимости
 
&html<<script type="text/javascript">
 function btnClick(){
  //макрос, вместо которого будет вставлена js-функция асинхронного вызова серверного метода
  #call( ..CallAndGetObject )#
 }
 </script>
 </body></html>>
 Quit $$$OK
}

///Серверный метод
ClassMethod CallAndGetObject(jsfunc as %String="alert"){
 s a=$zdt($h, 3 ) ;серверная переменная
 w jsfunc,"(" 
 #; пишем вполне приятные JS-объекты. Даже с поведением
  &js<
      {prop1: #( ..QuoteJS(a) )#, prop2:  2 
       , msg: function(){
          return 'With love from server: ' + this.prop1;
         }
       }.msg()
   >
 w ");"
 Q ""   
}
}

...
Рейтинг: 0 / 0
CSP из JavaScript
    #37444264
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefint , в чём тайный смысл делания клиентского JS на сервере?
...
Рейтинг: 0 / 0
CSP из JavaScript
    #37444622
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa, в передаче javascript (клиентского) объекта с необходимыми данными с сервера на клиент. При необходимости и с динамически формируемым поведением (на сервере)
...
Рейтинг: 0 / 0
CSP из JavaScript
    #37444673
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefint , повторю вопрос... Для чего?
...
Рейтинг: 0 / 0
CSP из JavaScript
    #37444712
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komogvМожно ли из кода JavaScript получить результат из CSP-method, например объектную ссылку и далее в JavaScript воспользоваться ей как обычным объектом, м.б. есть примеры?
kolesovДля zen-приложения можно вполне приятные JS-объекты получать от каше-сервера. Даже с поведением, если есть желание.
doublefint Для csp: ...
krvsaповторю вопрос. Для чего?
"Хьюстон, у нас проблемы..."
...
Рейтинг: 0 / 0
CSP из JavaScript
    #37444892
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa,

Для того, чтобы создать объекты, о которых не знает клиентская сторона.
Например, некоторые элементы хранятся в каше, и они о себе знают, также у них есть какое-то поведение.
Каким образом их передать клиенту? В том числе требуется динамическое удаление и вставка объектов.
...
Рейтинг: 0 / 0
CSP из JavaScript
    #37445200
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.Например, некоторые элементы хранятся в каше, и они о себе знают, также у них есть какое-то поведение.
Каким образом их передать клиенту?
Какое-то пространное объяснение... Естьу кого-то конкретика какая-то по такой замечательной возможности? Поскольку я пока не представляю что это такое волшебное должно случиться, для делания "клиента" на сервере...

Блок А.Н.В том числе требуется динамическое удаление и вставка объектов.
Это и на клиенте можно организовать через тот же setTimeout() или setInterval()...
...
Рейтинг: 0 / 0
CSP из JavaScript
    #37445201
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefint"Хьюстон, у нас проблемы..."
Это и весь рассказ? Очень по-деловому...
...
Рейтинг: 0 / 0
CSP из JavaScript
    #37445223
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa, рррр... Я не понимаю, как этого можно не понять. Сервер в качестве фабрики объектов для клиента. Клиент ждет в ответ объекты с определенным интерфейсом. В зависимости от логики приложения, это поведение может быть разным и определяется сервером. Позволяет клиенту оставаться неизменным при изменениях на сервере. Это возможность. Можно использовать, а можно не использовать. Что в этом сложного ?! Какой религиозной догме это противоречит?
...
Рейтинг: 0 / 0
CSP из JavaScript
    #37445516
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefint , это все теория... Практически ты это применял? Для каких целей?
...
Рейтинг: 0 / 0
CSP из JavaScript
    #37445517
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefintЭто возможность. Можно использовать, а можно не использовать.
Меня как раз и и нтересует для чего сию возможность применять. Если нет путёвого примера где польза от неё ну просто очевидна - это одно дело, можно сразу взять на вооружение... Если пример даже придумать сложно - такая "возможность" и нафик не нужна...
...
Рейтинг: 0 / 0
CSP из JavaScript
    #37445563
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsaБлок А.Н.Например, некоторые элементы хранятся в каше, и они о себе знают, также у них есть какое-то поведение.
Каким образом их передать клиенту?
Какое-то пространное объяснение... Естьу кого-то конкретика какая-то по такой замечательной возможности? Поскольку я пока не представляю что это такое волшебное должно случиться, для делания "клиента" на сервере...

Звиняйте, рабочий пример чтобы вам это доказать, мне делать лень. Но вот кусок программы. Это конкретика, но что она даст?
Код: plaintext
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.
Class Frame.Contact Extends Frame.Abstract
{

ClassMethod Render(el)
{
 s idd=..GetNewId()
 w !,el,".insertAdjacentHTML('beforeEnd','<div id=",idd," style=""float:left;width:100%;background-color:#BABFD1;margin-bottom:1px;""></div>');"
 d ..WriteBody(idd)
}

ClassMethod Refresh(el)
{
 w !,el,".innerHTML='';"
 d ..WriteBody(el)
}

ClassMethod WriteBody(el)
{
 s fn=..Get("facenum")
 s flag1=..Get("frShowContact")
 s cnt= 0 
 s plist="",monthlist=" янв фев мар апр мая июн июл авг сен окт ноя дек"
 s html=""
 s html=html_"<table style=""width:100%;background-color:gray;"" cellspacing=1 cellpadding=2>"
 s:'flag1 html=html_"<tr class=mbody><td colspan=4>Обращения, справки, заявки"
 
 &sql(declare obr cursor for SELECT DocDate,Comment,DocTime,id into :DD,:Comm,:DT,:idD 
 	FROM Contact.Contact WHERE facenum=:fn order by Id desc)
 &sql(open obr)
 &sql(fetch obr) 
 s:flag1&&('SQLCODE) html=html_"<tr class=mbody><td colspan=4>Обращения"
 while SQLCODE= 0 
 	{&sql(select list(Type->Name) into :CR from Contact.ContactRow where Contact=:idD) if SQLCODE'=0 s CR=0
	 s:SQLCODE CR=""

   	 s bstyle=$select(DD=+$H:"style=""BACKGROUND-COLOR:#CCFFCC""", 1 :"")
   	 s date=$zd(DD, 0 ,monthlist,,,, 5000 ,,"...")
   	 s Comm=$tr(Comm,$c( 10 )_$c( 12 )_$c( 13 )_$c( 14 ),"")
   	 s:Comm'="" Comm="<br>"_$zcvt(Comm,"O","HTML")
   	 s:flag1 html=html_"<tr class=lightrow><td width=85px "_bstyle_">"_date_"<td width=60px>"_$zt(DT, 1 )_"<td>"_CR_Comm
   	 s cnt=cnt+ 1 
   	 &sql(fetch obr) 
 	}  
 &sql(close obr) 
 	
 &sql(declare dopdemand cursor for SELECT DocDate,DateControlEnd,id into :DD,:DT,:idD FROM DOP.DopDemand WHERE facenum=:fn and type= 0  order by ID desc)
 &sql(open dopdemand)
 &sql(fetch dopdemand)
 s:flag1&&('SQLCODE) html=html_"<tr class=mbody><td colspan=4>Заявки"
 while flag1&&(SQLCODE= 0 )
 	{&sql(select list(TypeDemand->Name) into :CR from DOP.DopDemandRow where dopdemand=:idD) 
   	 &sql(select list(Notes) into :NL from DOP.DopDemand_Notes where dopdemand=:idD) 
   	 s rowspan=$select($tr(NL," ","")="": 1 , 1 : 2 )
   	 s date=$zd(DD, 0 ,monthlist,,,, 5000 ,,"...")
   	 s:NL'="" NL="<br>"_NL
   	 s html=html_"<tr class=lightrow><td width=85px>"_date_"<td width=60px><td>"_CR_NL
     &sql(fetch dopdemand)
 	}
 &sql(close dopdemand)
 
 &sql(declare spr cursor for SELECT id,ExeDate,SerialNum,DocType->name,Comment into :idc,:ed,:snum,:dtn,:comm
 	 from DOP.Spravki where fnum=:fn group by DocType order by id desc)
 &sql(open spr)
 &sql(fetch  spr)
 s:flag1&&('SQLCODE) html=html_"<tr class=mbody><td colspan=4>Справки" 
 while SQLCODE= 0 
 	{s date=$zd(ed, 0 ,monthlist,,,, 5000 ,,"...")
 	 s:comm'="" comm="<br>"_comm
 	 s (comm)=""
	 s:flag1 html=html_"<tr class=lightrow><td width=85px>"_date_"<td width=60px >"_"<td> "_$zcvt(dtn,"O","HTML")_" "_$zcvt(comm,"O","HTML")
	 &sql(fetch  spr)
 	}   
 &sql(close spr)
 
 w !,el,".insertAdjacentHTML('beforeEnd','",html,"')" 
 d:cnt> 0  ##class(Frame.ToggleButton).Render(el,"frShowContact","Frame.Contact.Refresh")
 w:cnt= 0  !,el,".outerHTML="""";"
}

}
Перегенерация куска нужна, чтобы не дергать весь экран, а только часть его. Теоретически можно слать данные, но если там сложная структура, то придется писать сложную программу их раскодировки

krvsaБлок А.Н.В том числе требуется динамическое удаление и вставка объектов.
Это и на клиенте можно организовать через тот же setTimeout() или setInterval()...Вы что-то непонятное говорите. При чем тут setInterval? Мне же не рандомными значениями нужно это заполнить.
...
Рейтинг: 0 / 0
CSP из JavaScript
    #37445591
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa...
Я такую возможность использовал при разработке редактора документации для технологических процессов.
Есть такой документ - маршрутно-операционная карта. В ней построчно записывается, что должны делать при обработке той или иной детали или узла. Причем строки эти разнотипные - описывают операции, оборудование, переходы, инструменты, материалы, комментарии и т.д. Более того, каждый тип строки может разделяться на подтипы (классы) . У каждого типа строки есть определенный набор полей.
Маршрутно-операционная карта (МОК) техпроцесса сборки автомобиля может состоять из ~10 тыс. строк. Чтобы браузер не выел всю доступную память при отрисовке такой МОК (div-ы с инлайн div) , такие строки динамически подгружаются/выгружаются с сервера json-объектами, которые умеют себя добавить, редактировать, удалить, обновить и т.д.
В зависимости от вида техпроцесса (сборка, гальваника и окраска, мехобработка) выделялись все новые и новые подтипы строк, но интерфейсная часть редактора оставался относительно неизменной.
...
Рейтинг: 0 / 0
CSP из JavaScript
    #37446259
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefint , много чего написал... Спасибо конечно... Но полезного я для себя не почерпнул ничего...
Больше вопросов не имею.
...
Рейтинг: 0 / 0
CSP из JavaScript
    #37446481
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa, взаимно
...
Рейтинг: 0 / 0
CSP из JavaScript
    #37447606
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komogvМожно ли из кода JavaScript получить результат из CSP-method, например объектную ссылку и далее в JavaScript воспользоваться ей как обычным объектом, м.б. есть примеры?
А мне JSON приглянулся
здеся
в нем слова "воспользоваться как обычным объектом" звучат буквально. И служебных данных гонится на клиента очень мало.
...
Рейтинг: 0 / 0
CSP из JavaScript
    #37456066
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komogv ,

<jsonProvider>

Zen Proxy Objects

Примеры:

CSP

ZEN
Исходники примеров можно найти в области "SAMPLES".

krvsaв чём тайный смысл делания клиентского JS на сервере?
когда нужно с сервера обновить "много" данных, например для <textarea>, <html> и т.д.:

Class sqlru.test Extends %ZEN.Component.page
{

XData Contents [XMLNamespace=" http://www.intersystems.com/zen" ]
{
  <page xmlns=" http://www.intersystems.com/zen"  title="">
    <button caption="length" onclick="zenAlert(zenGetProp('memo','value').length);"/>
    <button caption="test1" onclick="zenPage.SrvTest1();"/>
    <button caption="test2" onclick="zenPage.SrvTest2();"/>
    <textarea id="memo" rows="50" cols="50"/>
  </page>
}

/// Этот метод не работает.
Method SrvTest1() [ZenMethod]
{
  set value=$replace($j("",4000000)," ","a")
  do ..%SetValueById("memo",value)
}

ClassMethod SrvTest2() [ZenMethod]
{
  set value=..QuoteJS($replace($j("",32000)," ","a"))
  &js<var value='';>
  for i=1:1:125 &js<value+=#(value)#;>
  &js<zenSetProp('memo','value',value);>
}
}


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

doublefint, DAiMor ,

"Шуточный"? вариант использования технологии, продемонстрированной на "Школе Инноваций - 2011".
...
Рейтинг: 0 / 0
25 сообщений из 33, страница 1 из 2
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / CSP из JavaScript
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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