Hi, 

I never tested myself, but in Python, there is pdfkit library.

Maybe the support of Python with IRIS could be useful for your case.

Haha Thank you @Guillaume Rongier 

Roughly 2 years ago I worked on a client generator for specification 2.0 because the server-side generator (^%REST) support 2.0 only.
I was expecting a support V 3.0 for ^%REST, but I wasn't sure InterSystems had planned this development.

So, I decided to develop a "Suite" with client, production and REST server generator for version 3.

Thank you for your praise about UI, to be honest, today, it's just a simple CSP using Bootstrap , I would like to develop a more advanced interface using Angular, but not possible for the contest timing.  I have a few ideas, but that will come later.

Hello @David Hockenbroch

I tested this simple method using CodeMode = Objectgenerator :

Method test() [ CodeMode = objectgenerator ]
{
    Write
    Quit 1
}

Do $SYSTEM.OBJ.Compile("User.NewClass1","ck")
We can see a lot of variable values at compile time :

....
%qstruct="ck"
....

%qstruct contains compile flags and qualifiers

Hello,
Have you ever checked the contents of the database journal files?  

You should find "Kill" related to these globals entries. 

This might give you some clues without code edition.

Hello @Theo Stolker,

The problem with the proxy generation is also due to the "-" character management. The generation fails if there is a "-" in the path parameter, ex: 

/1/user/-/foods/log/water/{water-log-id}.json

This issue is fixed in version 1.4.2.

Thank you for your report !

Hi,

Two years ago, I analyzed the behaviours using stream and %Persistent class.  

Class Test.Stream1 Extends %Persistent
{

Property st As %GlobalBinaryStream;

ClassMethod add1() As %Status
{
	; write stream in ^Test.Stream1S
	Set o = ..%New()
	Do o.st.Write("azeruiop")
	Quit o.%Save()
}

ClassMethod add2() As %Status
{
	; write stream in ^CacheStream
	Set o = ..%New()
	Set st = ##class(%GlobalBinaryStream).%New()
	Do st.Write("azeruiop")
	Set o.st = st
	Quit o.%Save()
}

Storage Default
{
<Data name="Stream1DefaultData">
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>st</Value>
</Value>
</Data>
<DataLocation>^Test.Stream1D</DataLocation>
<DefaultData>Stream1DefaultData</DefaultData>
<IdLocation>^Test.Stream1D</IdLocation>
<IndexLocation>^Test.Stream1I</IndexLocation>
<StreamLocation>^Test.Stream1S</StreamLocation>
<Type>%Storage.Persistent</Type>
}

}

The method add2 use ^CacheStream due to the default storage usage (as described by @Robert Cemper ).  

However, We can force the storage in ^Test.Stream1S with :
Do st.%LocationSet("^Test.Stream1S")

Hi @Robert Cemper !

Good Idea for the table.
In french : 

 

English French  
Data Donnée F
Value Valeur F
Database Base de données F
File Fichier M
Directory Répertoire M