-
Notifications
You must be signed in to change notification settings - Fork 16
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Domino On Disk Project Examples #669
Comments
I have a basic database created for this in Domino Designer. I will review this with @JustinProminic and send an official copy when this is read. The database is here (requires Prominic database access): |
@JoelProminic please update this location above to reflect that the master database is now on @dpastov server. |
@dpastov will add an XPages example for us, and I will add other things I think are useful to the traditional forms and views. FYI @JoelProminic |
I was able to test On Disk Projects on macOS Mojave with HCL Notes 11. Here is what I needed to do to get set up: Allow passwordless access to the Notes API using these instructions. Create (or update) ~/.m2/settings.xml. Update
Next, you need to build an update site. A user should only need to do this once per workstation, and we'll look to see if there is a better way to do this for Moonshine.
This command automatically detects the Notes installation. We'll probably want to manually compute the path from the Notes path configured for #667 using the UPDATE 2020/04/01: At this point, you should be ready to create a project from the Moonshine branch build (see the instructions here). Otherwise, you can use the instructions below for the external On Disk Project demo. Then, you should be able to run an example project like this:
The
However, I found that I have to make a couple modifications for now to let it work. These instructions are for the example project from the repository above:
|
Some things I want to change from the above instructions for use in Moonshine:
|
I experimented with exporting the test database from Domino. To do this, I selected the database in Domino Designer, and opened File > Team Development > Set Up Source Control For This Application. When selecting a project path, keep in mind that the database subfolders will be created directly under the selected directory. The resulting files look like files in nsfs/nsf-moonshine/odp/. I think we can use the rest of the files as a base template for the Maven wrapper. The Database details are stored in AppProperties/database.properties:
I see most of these properties were stripped out in the official example:
Once we have a proper exported example, we'll need to go through and add insertion parameters so that the user can customize the name. Some other changes:
|
Here is a breakdown of the required files for the On Disk Project template. You'll see some extra files in @feather812002's template, but I think we can narrow it down to just these files (plus any additional files we need to add for #670 or #646)
I expect these actions for On Disk Projects:
|
@rat-moonshine Very first point is something which I envision to do by you. We need new type of project. That point in theory doesn't need code from Bing's work, it needs only his template files of Visual Editor - which is going to be copied and changed into On Disk Project. To be safe let's do that on branch as part of this issue unless you think to raise separate one. |
@JoelProminic This two points are crucial and my next question may have been asked already on a call. I may have repeat them here just to make sure that my direction when I start coding is the right one. |
I spent quite some time today understanding/reading-through how Domino is in Moonshine IDE. I see I have been away for quite some time from related discussion on this (#646 , #668 , #669, #670 ), which became inevitable for me to understand what we already have and what we will need, before jumping into any implementation. Reading through the discussion hopefully helped me to clear my understanding to an extent, which were basically filled with questions. I also tried to give a test to Bing's branch-build (#646 ). Unfortunately, I couldn't able to complete to .nsf generation due to many an errors. We tried to address the errors with @feather812002 however no success so far. I still have some questions related to Domino on Disk. Hopefully I shall able to discuss them with @JoelProminic tonight. |
Maybe ask them here, since I will be working on Tabular interface so I would not be completely blind with any of your issue. |
I talked to @JoelProminic in length on different queries those I have, mostly to confirm my understanding from the issue readings, and some other queries on how-to things. As I understood correctly, we'll probably going to need an exclusive project-type for Domino On Disk having ability of visual-editor (for #646 ) and tabular-forms (#670 ). Both the form types will generate DXLs. Being said 'exclusive', we'll probably create this as a new project-type (separated from creating as a "Visual Editor Project" type option) and show as a new type-option in home screen of Moonshine-IDE. Since the said new project type will also require visual-editor abilities, it will be a visual-editor type of project but with different project extension preferably (i.e. @piotrzarzycki21 do you see the above assumption fits your idea of having a separate type of project? Or, you have other suggestion which I might failed to understand. |
I discussed the On Disk Project with @rat-moonshine today, and I wanted to document some of my thoughts. Here is a mockup of how the project structure might look. Note that this is not finallized - it is more to present the current ideas I have for feedback. Soem clarifications
With this design, the user will update the Form Builder and Visual Editor forms from the src directory only. I split this into multiple subdirectories for now, but we could also distinguish the files with different extensions (i.e. .dfb and .dve, respectively). Double-clicking FormBuilderExample.form will open the Form Builder interface (#670), while VisualEditorExample.form will open the Visual Editor interface. The intermediate files for Form Builder and Visual Editor will be stored in formbuilder-src and visualeditor-src, respectively. These directories should be hidden so that they are not edited directly. The actual form DXL needs to be placed in nsfs/nsf-moonnshine/odp/Forms so that it can be imported to a Notes Database. Also note that the user can then edit the form in Domino Designer and export it back to this file, so these files will not necessarily match up with the intermediate XML files. The .form files can be edited directly, but this will only be practical for simple changes or advanced users. TemplateExample.form is a form included in the template, so it has neither form type. It can only be edited as DXL or with Domino Designer. Alternatively, we could allow the user to double-click on the forms in nsfs/nsf-moonnshine/odp/Forms and open the associated editor. @feather812002's implemenation in #646 works like this.
However, this has some problems
|
Yes, I see the advantage and related problems to this design. Generally, double-clicking an exported file (i.e. nsfs/nsf-moonnshine/odp/Forms/VisualEditorExample.form) locates its corresponding code/XML file inside 'visualeditor-src' and opens as mockup-editor. Having the .form file edited/updated externally means the file inside 'visualeditor-src' will have sync issue. Perhaps, in that case a file timestamp checks between both files may help (as we did for #633 ). Now we need to think what action(s) we want to offer to the user if we found a sync problem. Overall, the design looks pretty clean and fantastic. |
I don't understand this one - if in the end whatever we create in src folder has to be in /odp/Forms - what is the point of having src folder at all? Shouldn't Forms be an src folder actually ? |
@rat-moonshine Your work would be reach the point where user is able to open stuff by double clicking - I will handle part where user see real features for "Form Builder" (Tabular interface). |
/odp/Forms can be updated by external sources (or say, by a database). If we manage same file also for Moonshine visual-editor changes, those changes can lost. Thus, having a separate intermediate file managing the Moonshine visual-editor changes (src/main/formbuilder/..) may save this situation. However, there are certain update-sync problem can arise which Joel already pointed in his comment. |
- Enable project open from recent list - Source icon visibility to sidebar (working only in open/import case for now) (reference #669)
(I forgot to reference some commits which we can find here 2509c6f) I see @joshtynjala has introduced some flexible and modular system to introduce new project types to Moonshine (which he used again Haxe, Groovy etc.). I followed the path to introduce the new On Disk Project type, as well. One thing we need to decide, how we going to introduce @feather812002 's implementation (#646 ) to this new project source. I'm not yet came to the steps where we shall be needing to look into #646 functional implementation, but mostly dealing with creating new project container to have it avail in Moonshine along with its regular tasks like create/import, menu, configuration-updates etc. So far here are the updates until now and upcoming tasks:
|
Sorry @rat-moonshine, I meant to give you the updated template files before you started working on the templates. Here are the files for the Maven wrapper: My updates are:
Be careful not to include ./target or ./nsfs/nsf-moonshine/target when you create the template, since these will be populated by Moven. Here is an initial version of the example project. These files should be placed in the above framework Here are some additional notes from my side, so that I can remember how I generated the Example ODP later: To generate the example On Disk Project from an NSF, I ran The only file I saw that required cleanup was
I also updated the title at the bottom of
I got this error when testing the template:
It seemed that a Maven task was failing because there were no Java files to compile. I need to review this more, but to get the demo working I added a placeholder Java file in odp/Code/Java/demo/Placeholder.java
|
I'm not sure what do you mean here - what are those files ? |
- OnDiskProjectVO, importer/exporter, build-options cleanup (reference #669)
I was discussing this issue with @dpastov, and I noticed that it was not really clear from the comments how to setup an On Disk Project using the Moonshine branch build. So far, we have implemented a very basic On Disk Project template for Moonshine, but it is currenlty only in a test branch. @rat-moonshine or @piotrzarzycki21 should be able to handle the Moonshine Flex updates, but if you need to build the source yourself, there are instructions here: https://github.com/prominic/Moonshine-IDE/wiki/Running-Moonshine-instance-through-Moonshine-IDE To setup your environment, follow the steps from this comment up through generating the update site. The example project will be generated from Moonshine instead. To create a new On Disk Project:
|
Revisiting the project layout here, I see that the intermediate XML directory for Form Builder (formbuilder-src) is probably not necessary. We do not have any specific content that needs to be placed in the src folder, so we can store the intermediate XML in the .dfb file. Similarly, we could probably remove visualeditor-src, but we may want to keep this for consistency with the other Visual Editor projects. |
On a second thought, I'm thinking on some other points in term of consistency. I think I want to discuss with you broadly @JoelProminic before writing every pieces now. |
Currently, the default Maven action for the On Disk Project template is "war:exploded". I would like to change this to "clean install" instead, since this is what is normally needed to generate the NSF. I have been using "install" primarily in my testing, but I have seen some cases where the DXL file updates are not detected and the NSF doesn't update. |
On addition to above, we noticed that files-tree last-opened-state not properly repopulate when Moonshine restarts, in case of OnDisk project. Also, any last opened files from the project do not auto-opens, this needs to be fixed. I shall work on this shortly. |
|
- Fixed closing all opened editors during project close (reference #669)
- Updated wrapper component property to return project path (reference #669)
|
Moving this for next release. No announcement in CHANGELOG |
We already have the project type included in the 'master' so it doesn't make sense to push back in another release. We also have this updated into CHANGELOG. @JoelProminic do you see any reason for holding and we may need to comment-out the type population in v3.0 (?) |
@rat-moonshine hide it. We are waiting for tests over 2 months - I don't think that something is going to change for now, so I don't see any reason to wait even a single day. |
We would like to have a Domino On Disk Project template that we can use to create a new local Domino database from Moonshine. We have done some work with this for #646 already, but we want to separate this out from the Visual Editor code for now.
The example template should have a simple "Hello, World!" example of each design element type, including:
In addition, we should provide some useful views. These should have web access disabled by default.
And we also want some useful shared actions for forms and views. This can be used for the forms and views generated by #670.
We should try to minimize Prominic references in the database code.
In general, we should use good practices for all of the example elements. We should include good security practices as well, but some of this will require the user to configure the ACL appropriately for their application and environment.
We may want to consider providing a template for an empty database as well, but we can revisit this after we have the main template done.
Note that the DXL Import project (#668) should not be based on this template - it is designed to run in a Java project instead.
The text was updated successfully, but these errors were encountered: