SimonBiggs / scriptedforms

Quickly create live-update GUIs for Python packages using Markdown and simple HTML elements.
Apache License 2.0
508 stars 34 forks source link

Deploy scriptedforms server #241

Open robmarkcole opened 6 years ago

robmarkcole commented 6 years ago

@SimonBiggs I love how when you run scriptedforms the docs interface launches:

image

I think it would be great to make it as simple as this for a user to deploy all of their own scriptedforms via a mini website, so I can just send my colleagues a single url and they can browse my forms. If it was just a case of organising forms into a folder structure, then running scriptedforms parent_directory to get the website that would be incredible. Cheers

SimonBiggs commented 6 years ago

I really like this idea. Maybe I should be fleshing this idea out first, then use this "website builder" to create the docs themselves...

SimonBiggs commented 6 years ago

I originally dismissed your jekyll idea... but maybe to handle this side of things, that is the way to go...

SimonBiggs commented 6 years ago

Have a think about what sort of control you would need.

My thoughts are minimal control over page layout etc would be required. For this use case the best method for the creator really should just be forms inside a directory and then it creates a mini-website using it.

...That would mean Jekyll won't really be necessary, as I will set up the page layout + design using Angular. Page contents would still just be markdown files of course, probably just ScriptedForms to be exact.

robmarkcole commented 6 years ago

Sounds good. Re control, I imagine I would have 1 server for personal scripts, and another for sharing with colleagues, so permissions wouldn't be an issue. If the shared server could also log traffic that would be useful

SimonBiggs commented 6 years ago

Ahh when I said control I mean over page layout etc. If you don't mind not having much control/configurability then that makes the creation much simpler both for the form creator and for me making the system ...

robmarkcole commented 6 years ago

Ok sure, I say keep it simple then. I presume that someone with web skills could write a wrapper around the basic page, if they wanted to add official logos, or embed within a corporate wiki structure?

btw your idea of making the official docs using this approach would be neat and then serve as a good example in itself!

SimonBiggs commented 6 years ago

Alright, well that puts this issue then as top priority. I need to do a bit more thinking about how best to implement it. If you have any more ideas/needs with respect to this let me know so that I can think about those also.

SimonBiggs commented 6 years ago

How I've thought about implementing it, it would be quite rigid. It wouldn't be simple to change the layout without seriously digging deep. Not ideal.

But you're right, this is a need. Maybe I could enable the use of jinja2 templates. That way someone could change that template to have control over the layout etc.

SimonBiggs commented 6 years ago

@robmarkcole you mentioned a big benefit of this website idea is you could point to a directory and allow users to navigate through it.

Could the solution be as simple as something like when you call scriptedforms from the command prompt there is an option --with-navigation you would write something like the following:

scriptedforms --with-navigation 00-landing-page.form.md

That would then open up the form called 00-landing-page.form.md, but with a difference, there would be a navigation panel to the left. That panel would provide links to all the forms within the directory. By default it would be alphabetical order, but by putting numbers in front of all the files you could control the display order...

robmarkcole commented 6 years ago

@SimonBiggs that sounds like a good solution

SimonBiggs commented 6 years ago

@robmarkcole

Okay, so I've been struggling with how to implement this. To create the docs I want to be able to create a form with a navigation panel, and I want it to no have the toolbar at the top.

To achieve this, really what I need is some form configuration or metadata. Something like Jekyll's front matter might be perfect for this advanced use case.

For example:

---
toolbar: false
navigation: true
---

# Heading

Rest of form ... etc ...

<observe-session-start>

```python
stuff = 'foo'
```

</observe-session-start>

What do you think? Okay for this advanced case?

robmarkcole commented 6 years ago

@SimonBiggs front matter looks good to me. Best to keep the yaml as simple as possible as I know from expereience on Home-Assistant that yaml is very sensitive to indentation/white-space etc. Cheers

ankostis commented 5 years ago

I don't know if that's the right issue, but having the capability to launch a scriptedform from within a jupyter-notebook, would be more welcomed. That way, spending the usual effort to install and an maintain a jupyter server would give you a home for your forms for free.

SimonBiggs commented 5 years ago

Could you flesh out what you mean here?

On Thu., 7 Mar. 2019, 10:04 pm Kostis Anagnostopoulos, < notifications@github.com> wrote:

I don't know if that's the right issue, but having the capability to launch a scriptedform from within a jupyter-notebook, would be more welcomed. That way, spending the usual effort to install and an maintain a jupyter server would give you a home for your forms for free.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/SimonBiggs/scriptedforms/issues/241#issuecomment-470483950, or mute the thread https://github.com/notifications/unsubscribe-auth/AGQVex_6BqiOIBUmLJv2Gzo2XrPuhIAGks5vUPJIgaJpZM4TVVZA .

ankostis commented 5 years ago

I think issue #243 is about what i had in mind: instead of spending the time to have an easy-to-deploy standalone scriptedforms distribution, just make sure that it embeds flawlessly into any Jupyter-server installation, so the usual options for that piece of software apply: jupyter-hub, multi-user setup, security extensions, widgets, etc.

Does that make sense?

SimonBiggs commented 5 years ago

Already does. ScriptedForms installs itself as a Jupyter server extension. Once ScriptedForms is installed start a standard jupyter server and go to the scripted forms url. For example, http://jupyterserverip:port /scriptedforms/use/detailed-example.md

See this in action with the Binder/JupyterHub example:

https://mybinder.org/v2/gh/SimonBiggs/scriptedforms-examples/master?urlpath=scriptedforms/use/detailed-example.md

On Sat, 9 Mar 2019 at 02:43, Kostis Anagnostopoulos < notifications@github.com> wrote:

I think issue #243 https://github.com/SimonBiggs/scriptedforms/issues/243 is about what i had in mind: instead of spending the time to have an easy-to-deploy standalone scriptedforms distribution, just make sure that it embeds flawlessly into any Jupyter-server installation, so the usual options for that piece of software apply: jupyter-hub, multi-user setup, security extensions, widgets, etc.

Does that make sense?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/SimonBiggs/scriptedforms/issues/241#issuecomment-470972797, or mute the thread https://github.com/notifications/unsubscribe-auth/AGQVe8-mZXiYBh6iCpMsTyagesuqkUaZks5vUoUlgaJpZM4TVVZA .

ankostis commented 5 years ago

Thanks!

From the docs i got the impression that it is only possible to launch it from the command-line.

SimonBiggs commented 5 years ago

I had previously included that in the docs, but removed it. Maybe I should add it in again... A pull request would be welcome given you know where you would have most preferred to have found the information.

On Sat, 9 Mar 2019 at 03:13, Kostis Anagnostopoulos < notifications@github.com> wrote:

Thanks!

From the docs i got the impression that it is only possible to launch it from the command-line.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/SimonBiggs/scriptedforms/issues/241#issuecomment-470983949, or mute the thread https://github.com/notifications/unsubscribe-auth/AGQVezFw1tF9PN6Acl6z3eTlbXAKOOZ2ks5vUoxEgaJpZM4TVVZA .