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

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

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

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

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

komogvгде бы найти архив примеров?
Что именно нужно? Тут на форуме масса примеров по CSP... И он не сложен в понимании, подготовленному прогеру достаточно CSP_КвикСтарт, который можно скачать с сайта ИС...
...
Рейтинг: 0 / 0
16.09.2011, 13:52
    #37443496
komogv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CSP из JavaScript
Конечно, пример в документации "кубика" маловат, попробуем Quick
...
Рейтинг: 0 / 0
16.09.2011, 17:00
    #37443987
doublefint
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CSP из JavaScript
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
16.09.2011, 20:26
    #37444264
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CSP из JavaScript
doublefint , в чём тайный смысл делания клиентского JS на сервере?
...
Рейтинг: 0 / 0
17.09.2011, 10:40
    #37444622
doublefint
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CSP из JavaScript
krvsa, в передаче javascript (клиентского) объекта с необходимыми данными с сервера на клиент. При необходимости и с динамически формируемым поведением (на сервере)
...
Рейтинг: 0 / 0
17.09.2011, 12:11
    #37444673
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CSP из JavaScript
doublefint , повторю вопрос... Для чего?
...
Рейтинг: 0 / 0
17.09.2011, 12:55
    #37444712
doublefint
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CSP из JavaScript
komogvМожно ли из кода JavaScript получить результат из CSP-method, например объектную ссылку и далее в JavaScript воспользоваться ей как обычным объектом, м.б. есть примеры?
kolesovДля zen-приложения можно вполне приятные JS-объекты получать от каше-сервера. Даже с поведением, если есть желание.
doublefint Для csp: ...
krvsaповторю вопрос. Для чего?
"Хьюстон, у нас проблемы..."
...
Рейтинг: 0 / 0
17.09.2011, 17:29
    #37444892
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CSP из JavaScript
krvsa,

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

Блок А.Н.В том числе требуется динамическое удаление и вставка объектов.
Это и на клиенте можно организовать через тот же setTimeout() или setInterval()...
...
Рейтинг: 0 / 0
18.09.2011, 10:26
    #37445201
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CSP из JavaScript
doublefint"Хьюстон, у нас проблемы..."
Это и весь рассказ? Очень по-деловому...
...
Рейтинг: 0 / 0
18.09.2011, 11:47
    #37445223
doublefint
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CSP из JavaScript
krvsa, рррр... Я не понимаю, как этого можно не понять. Сервер в качестве фабрики объектов для клиента. Клиент ждет в ответ объекты с определенным интерфейсом. В зависимости от логики приложения, это поведение может быть разным и определяется сервером. Позволяет клиенту оставаться неизменным при изменениях на сервере. Это возможность. Можно использовать, а можно не использовать. Что в этом сложного ?! Какой религиозной догме это противоречит?
...
Рейтинг: 0 / 0
18.09.2011, 20:43
    #37445516
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CSP из JavaScript
doublefint , это все теория... Практически ты это применял? Для каких целей?
...
Рейтинг: 0 / 0
18.09.2011, 20:46
    #37445517
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CSP из JavaScript
doublefintЭто возможность. Можно использовать, а можно не использовать.
Меня как раз и и нтересует для чего сию возможность применять. Если нет путёвого примера где польза от неё ну просто очевидна - это одно дело, можно сразу взять на вооружение... Если пример даже придумать сложно - такая "возможность" и нафик не нужна...
...
Рейтинг: 0 / 0
18.09.2011, 21:44
    #37445563
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CSP из JavaScript
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
18.09.2011, 22:33
    #37445591
doublefint
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CSP из JavaScript
krvsa...
Я такую возможность использовал при разработке редактора документации для технологических процессов.
Есть такой документ - маршрутно-операционная карта. В ней построчно записывается, что должны делать при обработке той или иной детали или узла. Причем строки эти разнотипные - описывают операции, оборудование, переходы, инструменты, материалы, комментарии и т.д. Более того, каждый тип строки может разделяться на подтипы (классы) . У каждого типа строки есть определенный набор полей.
Маршрутно-операционная карта (МОК) техпроцесса сборки автомобиля может состоять из ~10 тыс. строк. Чтобы браузер не выел всю доступную память при отрисовке такой МОК (div-ы с инлайн div) , такие строки динамически подгружаются/выгружаются с сервера json-объектами, которые умеют себя добавить, редактировать, удалить, обновить и т.д.
В зависимости от вида техпроцесса (сборка, гальваника и окраска, мехобработка) выделялись все новые и новые подтипы строк, но интерфейсная часть редактора оставался относительно неизменной.
...
Рейтинг: 0 / 0
19.09.2011, 13:49
    #37446259
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CSP из JavaScript
doublefint , много чего написал... Спасибо конечно... Но полезного я для себя не почерпнул ничего...
Больше вопросов не имею.
...
Рейтинг: 0 / 0
19.09.2011, 16:09
    #37446481
doublefint
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CSP из JavaScript
krvsa, взаимно
...
Рейтинг: 0 / 0
20.09.2011, 11:17
    #37447606
ну я
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CSP из JavaScript
komogvМожно ли из кода JavaScript получить результат из CSP-method, например объектную ссылку и далее в JavaScript воспользоваться ей как обычным объектом, м.б. есть примеры?
А мне JSON приглянулся
здеся
в нем слова "воспользоваться как обычным объектом" звучат буквально. И служебных данных гонится на клиента очень мало.
...
Рейтинг: 0 / 0
26.09.2011, 16:57
    #37456066
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CSP из JavaScript
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
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / CSP из JavaScript / 25 сообщений из 33, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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