go to post Timothy Leavitt · Jun 23, 2021 I'd expect that to work provided the id (not name) of the combobox/dataCombo is 'MyCombo'. e.g., this works fine: Class DC.Demo.FindElement Extends %ZEN.Component.page { XData Contents [ XMLNamespace = "http://www.intersystems.com/zen" ] { <page xmlns="http://www.intersystems.com/zen"> <form> <tabGroup showTabBar="true"> <tab caption="Tab One"> <combobox id="MyCombo" editable="true" /> </tab> <tab caption="Tab Two"> </tab> </tabGroup> </form> <button onclick="zenPage.alertComboValue()" /> </page> } ClientMethod alertComboValue() [ Language = javascript ] { alert(zen('MyCombo').findElement('input').value); } }
go to post Timothy Leavitt · Jun 22, 2021 I'd typically use:$$$comMemberDefined("%SYS.NLS.Locale",$$$cCLASSproperty,"test")
go to post Timothy Leavitt · Jun 21, 2021 Just to add - I'm successfully using both source control and non-source control extensions (all using the %Studio.Extension framework) from VSCode. If there are specific issues you see, I'd be curious to hear about them.
go to post Timothy Leavitt · Jun 10, 2021 @Utsavi Gajjar in case you end up reaching out to InterSystems Support about this (which I'd recommend if you're blocked on the issue), the internal Jira reference for the wrong level of %DynamicObject being passed to %JSONNew is DP-406169
go to post Timothy Leavitt · Jun 10, 2021 This is a little messy and I'm going to report part of the answer as a bug internally. But regardless, here's one way to make it work - in short, have all of the things that could be listed as a recipient extend a common parent class, and in that class override %JSONNew to detect which type it is. Class DC.Demo.Container Extends (%RegisteredObject, %JSON.Adaptor) { Property recipient As DC.Demo.Recipient; ClassMethod Demo() { for json = {"recipient":{"dob":"2021-06-10"}}, {"recipient":{"reference":"foo"}} { set inst = ..%New() do inst.%JSONImport(json) write !,json.%ToJSON(),!,$classname(inst.recipient),! } } } Class DC.Demo.Recipient Extends (%RegisteredObject, %JSON.Adaptor) { /// Get an instance of an JSON enabled class.<br><br> /// /// You may override this method to do custom processing (such as initializing /// the object instance) before returning an instance of this class. /// However, this method should not be called directly from user code.<br> /// Arguments:<br> /// dynamicObject is the dynamic object with thee values to be assigned to the new object.<br> /// containerOref is the containing object instance when called from JSONImport. ClassMethod %JSONNew(dynamicObject As %DynamicObject, containerOref As %RegisteredObject = "") As %RegisteredObject { // This is weird: shouldn't need to reference .recipient here if dynamicObject.recipient.%IsDefined("dob") { quit ##class(DC.Demo.Patient).%New() } elseif dynamicObject.recipient.%IsDefined("reference") { quit ##class(DC.Demo.Reference).%New() } else { quit ..%New() } } } Class DC.Demo.Reference Extends DC.Demo.Recipient { Property reference As %String; } Class DC.Demo.Patient Extends DC.Demo.Recipient { Property dob As %Date; } Output is: d ##class(DC.Demo.Container).Demo() {"recipient":{"dob":"2021-06-10"}} DC.Demo.Patient {"recipient":{"reference":"foo"}} DC.Demo.Reference Only problem is, %JSONNew (as advertised in class reference documentation) should get the %DynamicObject representing the object itself, not the parent %DynamicObject. This would only really work if each type is used in exactly one context like this, which seems unlikely.
go to post Timothy Leavitt · May 19, 2021 First off, it's generally best to avoid xecute. ;) In the first case, routine is private (it isn't visible in the xecute stack frame). In the second, it's public, so it is visible there. You could get the best of both worlds with: ClassMethod Run() { set routine="variable" set call="(routine) write routine,!" xecute (call, routine) quit } For more info see https://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY...
go to post Timothy Leavitt · May 18, 2021 I recently wrote up an example here: https://community.intersystems.com/post/making-most-query
go to post Timothy Leavitt · Apr 28, 2021 Perhaps pass the object ID into something like: Query GetInfo(refId As %String) As %SQLQuery(CONTAINID = 1, ROWSPEC = "IdList:%String,IdProcess:%String,Duration:%String") { SELECT list.IdList, list.IdProcess, list.Duration FROM Kurro.MyClass list JOIN Kurro.MyClass ref on ref.ID = :refId AND ref.KeyProcess = list.KeyProcess AND ref.CodeSpecialist = list.CodeSpecialist AND ref.CodeProvider = list.CodeProvider AND ref.CodeCenter = list.CodeCenter AND ref.Date = list.Date }
go to post Timothy Leavitt · Apr 21, 2021 This is really interesting - I've been starting on a similar project with the same starting point.
go to post Timothy Leavitt · Apr 12, 2021 Worldwide Response Center (WRC) For Immediate Response Phone:+1-617-621-0700+44 (0) 844 854 29170800615658 (NZ Toll Free)1800 628 181 (Aus Toll Free) Email:support@intersystems.com Online:WRC DirectEmail support@intersystems.com for a login.
go to post Timothy Leavitt · Apr 12, 2021 This is the right answer. It would be nice if there was a more built-in way to include row IDs in %JSONExport without having to do this though.
go to post Timothy Leavitt · Mar 25, 2021 The closest thing to what you're looking for is %VID (link to documentation) You can use this even without an actual view as follows (for example): select %VID "RowNumber",* from (select top all AirportLocation, FAADistrictOffice from Aviation.Event order by FAADistrictOffice, AirportLocation)
go to post Timothy Leavitt · Mar 18, 2021 @Tani Frankel this is a nice solution! I'd still like to see this there automatically somehow though.
go to post Timothy Leavitt · Mar 12, 2021 With what we've done the syntax ends up looking like: Class DC.Demo.Hierarchy Extends %Persistent [ MemberSuper = AppS.Index.Methods ] { Property message As %String; Property login As %String; Property parentId As DC.Demo.Hierarchy [ SqlFieldName = parent_id ]; Index parentId On parentId [ Type = bitmap ]; ClassMethod RunDemo() { Do ..%KillExtent() &sql(insert into DC_Demo.Hierarchy (message, login, parent_id) values ('Bacon ipsum dolor amet pork shoulder ribs', 'User 1', null)) &sql(insert into DC_Demo.Hierarchy (message, login, parent_id) values ('BGouda croque monsieur emmental.', 'User 2', 1)) &sql(insert into DC_Demo.Hierarchy (message, login, parent_id) values ('Manchego fromage frais airedale', 'User 3', 2)) Do ##class(%SQL.Statement).%ExecDirect(, "select id, message, parent_id from DC_Demo.Hierarchy "_ "where id %FIND DC_Demo.Hierarchy_parentIdFind(2,'all descendants')").%Display() Do ##class(%SQL.Statement).%ExecDirect(, "select id, message, parent_id from DC_Demo.Hierarchy "_ "where id %FIND DC_Demo.Hierarchy_parentIdFind(3,'all related')").%Display() } } Because there's a self-referencing property with a bitmap index, the hierarchy support is automatic via the MemberSuper class. Output is: d ##class(DC.Demo.Hierarchy).RunDemo() ID message parent_id 2 BGouda croque monsieur emmental. 1 3 Manchego fromage frais airedale 2 2 Rows(s) Affected ID message parent_id 1 Bacon ipsum dolor amet pork shoulder ribs 2 BGouda croque monsieur emmental. 1 3 Manchego fromage frais airedale 2 3 Rows(s) Affected
go to post Timothy Leavitt · Mar 12, 2021 There's nothing built-in for this, but you can simulate it via custom class queries or %SQL.AbstractFind. I have an implementation of %SQL.AbstractFind/%Library.FunctionalIndex that does some things with hierarchies but falls short of the capabilities you linked in the Oracle doc. Specifically, it can find all ancestors/descendants/both (the whole tree) in a hierarchy efficiently, but it doesn't follow the same rules around ordering and won't let you do paths and such. (I'd want to clean it up a good deal before sharing, but that's probably worthwhile at some point.)
go to post Timothy Leavitt · Mar 10, 2021 Ah - yes, that would make sense. I suspect VSCode would do better. ;)
go to post Timothy Leavitt · Mar 10, 2021 I think I've seen this before when IRIS responds with a login page due to credentials being passed to the SOAP call incorrectly. https://community.intersystems.com/post/example-connecting-cach%C3%A9-we... has an example of the expected headers, though in PHP (likely not your language of choice here).
go to post Timothy Leavitt · Mar 10, 2021 @Daniel Bertozzi , following up - I downloaded ImageMagick and the following works just fine for me (though I'm a little surprised at how slow it is): Class DC.Demo.ImageMagick { ClassMethod Convert(inFile As %String = "C:\Temp\ImageMagick\inFile.jpg", outFile As %String = "C:\Temp\ImageMagick\outFile.jpg") { Do $zf(-100,"","magick",inFile,"-resize","640x480",outFile) } } I think the likely issue is that ImageMagick isn't on your PATH. You'll need to restart your instance for it to pick up PATH changes, so this might be the root cause if you just installed ImageMagick. Could also be interesting to run with the /SHELL flag and see if that works. Hopefully this helps!