go to post Dmitry Maslennikov · Sep 4, 2021 Yes, when you created a new class, it is just a file on your local disk. When you saved it, VSCode caught this action, and sent it to the server, and compiled it. But deleting this file, not a reason to do the same on the server. You can delete class with Explorer view, there you may find any classes, that are stored on the server. By context menu you can Delete the item on the server, or Export it to get the local version. Icons close to class names, the same as in File Explorer view, may indicate the connection to your local file.
go to post Dmitry Maslennikov · Aug 21, 2021 It’s a class not routine, and you call to method not label, so instead of double dollar, you have to use double dots ..occupiedseatsAdj
go to post Dmitry Maslennikov · Aug 20, 2021 Well, ok, for Authentication azure provides OAuth2 and SAML, both possible to integrate to IRIS User synchronization may work in two ways, every time when user is authorized, so get synced only users has authorized at least once. Or periodically, get a complete synchronization, this could be possible only with saml.
go to post Dmitry Maslennikov · Aug 20, 2021 What kind of integration you need? Just authentication, or even user synchronization? or something else?
go to post Dmitry Maslennikov · Aug 20, 2021 VSCode itself has some limitations and due to this, not so easy to add an ability to show some angular page. But anyway, much more you’ll achieve if you do it as an extra extension to VSCode, instead of still using Source control classes.
go to post Dmitry Maslennikov · Aug 20, 2021 Added an article about GitHub Codespaces with an ability to edit ObjectScript with running IRIS inside. With an extra option to run own browser version of VSCode anywhere in the cloud on your own conditions.
go to post Dmitry Maslennikov · Aug 20, 2021 By Setting in Business Service which it will be tied to. But I think, it will be simple, like check that latest data where create date more than current plus n seconds
go to post Dmitry Maslennikov · Aug 20, 2021 Looks like, that you have some data generated, which you should care about, but with some delay. So, how about creating some custom adaptor, which would look at that data, check for conditions and do the task. So, just only need an index by creation time.
go to post Dmitry Maslennikov · Aug 19, 2021 Why not to place it to some GitHub repo or at least gist?
go to post Dmitry Maslennikov · Aug 17, 2021 github.dev, is just a simple VSCode but in the cloud. It may get a coloring if it would allow at least our main extensions for ObjectScript, which in fact provide a basic coloring. GitHub.com itself uses coloring from another source, which in fact almost the same as for VSCode. I'll look at github.com, and maybe I will find a solution, how to get coloring there somehow. And thinking about Codespaces feature as well.
go to post Dmitry Maslennikov · Aug 6, 2021 I think this may happen, due to some issues with availability of some internal services. In any way it’s now possible using VSCode for development with InterSystems versions 2016.2 and later. So, I would recommend using it instead. Documentation
go to post Dmitry Maslennikov · Jul 28, 2021 As I know, there is no way to have a schedule for the whole production. Just only services can have scheduled. With working hours 8:00-18:00, will be something like this. START:WEEK-*-01T08:00:00,STOP:WEEK-*-01T18:00:00,START:WEEK-*-02T08:00:00,STOP:WEEK-*-02T18:00:00,START:WEEK-*-03T08:00:00,STOP:WEEK-*-03T18:00:00,START:WEEK-*-04T08:00:00,STOP:WEEK-*-04T18:00:00,START:WEEK-*-05T08:00:00,STOP:WEEK-*-05T18:00:00
go to post Dmitry Maslennikov · Jul 28, 2021 You got the error <STORE>, which means that your process is reached its memory limit. You may try to increase that limit in SMP, to a value more than your file size two times. Or try to change it with $ZStorage just for the current process. For sure, if you have enough memory for it.
go to post Dmitry Maslennikov · Jul 28, 2021 JSON is binary in a low level, so, the same as for $listbuild, I think only one way to go, and it is from begin to end
go to post Dmitry Maslennikov · Jul 28, 2021 USER>set json = [0,1,2] USER>set json = [0,1,2], iter = json.%GetIterator() USER>while iter.%GetNext(.key, .val){ write !,"[",key,"]=",val do:key=0 json.%Remove(key) } [0]=0 [1]=2 USER>zw json json=[1,2] ; <DYNAMIC ARRAY> And even with %Remove will not reach subsequent items
go to post Dmitry Maslennikov · Jul 28, 2021 Be careful with multiple %Remove, it moves the index. So, the next %Remove in a row, will remove the wrong item.
go to post Dmitry Maslennikov · Jul 28, 2021 I think this may help ClassMethod CleanNull(json As %DynamicObject) As %DynamicObject { Set iter = json.%GetIterator() Set toRemove = "" While iter.%GetNext(.key, .value) { Set type = json.%GetTypeOf(key) If (type="null") { Set toRemove = toRemove _ $Listbuild(key) } ElseIf (type="object")||(type="array") { Set $Property(json, key) = ..CleanNull(value) } } Set ptr = 0, corr = 0 While $Listnext(toRemove, ptr, key) { Do json.%Remove(key - corr) set corr = corr + 1 } Return json } And Testing metho ClassMethod TestJSON() { set json = { "recipients": [ { "name":"Utsavi", "email":"utsavi@gmail.com"}, { "name":"Utsavi 1", "email":"utsavi1@gmail.com"}, null, null ], "content":[null, {"title":"Test.pdf", "data":"ygwehfbnwfbhew"} ] } Set result = ..CleanNull(json) Do result.%ToJSON() } Will return this {"recipients":[{"name":"Utsavi","email":"utsavi@gmail.com"},{"name":"Utsavi 1","email":"utsavi1@gmail.com"}],"content":[{"title":"Test.pdf","data":"ygwehfbnwfbhew"}]}
go to post Dmitry Maslennikov · Jul 27, 2021 I would not recommend using it this way, due to many limitations and issues in it. Just make it on your own.
go to post Dmitry Maslennikov · Jul 27, 2021 What the issue you faced? Class User.Rest Extends %CSP.REST { XData UrlMap [ XMLNamespace = "http://www.intersystems.com/urlmap" ] { <Routes> <Route Url="/:resource/(.*)" Method="GET" Call="GetResource" Cors="true"/> <Route Url="/ping" Method="GET" Call="Ping" Cors="true"/> </Routes> } ClassMethod Ping() As %String { Write {"pong": true}.%ToJSON() Return $$$OK } ClassMethod GetResource(pResource As %String, pId As %String) As %Status { Write {"resource": (pResource), "id": (pId)}.%ToJSON() Return $$$OK } } With this REST class, I can do queries like this http://localhost:52773/rest/patient/test/123/456, with no issues it returns {"resource":"patient","id":"test/123/456"}