Replies: 24 comments 20 replies
-
Well, sometimes you just have to get some sleep before you can figure it out. Updates:
|
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
BTW you do know that you can do the complete layout in plain html and just load it in and then resave after? |
Beta Was this translation helpful? Give feedback.
-
Hi! Yup. I really want to test how far I can get with builder though. |
Beta Was this translation helpful? Give feedback.
-
Okay, styling wise, I don't have any further questions, everything seems fairly straight forward. Next, I am wanting to build an application with pull down menus just like in tutorial 22. I want to re-create a bunch of templates and let users select them from the menu so they can see what is possible in terms of design and how to hook it all up to the main menu provided by clog builder website template. However, I have run into a problem that I don't understand: QUESTION: How do you load panel contents into a window:
(asdf:defsystem #:clos-contact
(defun on-new-window (body)
(defun on-manage-contacts (obj) QUESTION: Why does sly/slime say that create-manage-contacts is unbound? I could have sworn the clos-contacts create-manage-contacts handler worked as long as I had manage-contacts listed in the above .asd file. I don't see anything in the clos-contacts (Tutorial 4) instructions that is really different from what I have here. All I did was strip out the logic and the panel layouts to get the simplest possible version of the tutorial in order to explore the loading panels mechanism. Can someone provide some guidance on what I am not understanding here? Thank you kindly. |
Beta Was this translation helpful? Give feedback.
-
Oooohhkay. Figured this out. All of the above is correct, the problem was that the panels that I created had the default IN-PACKAGE property set. For any noobs reading this, the standard CLOG GUI PROJECT has the simplest defaults to work with. Create a new panel first and make sure you set the IN-PACKAGE property to the correct package, add the panel to the .asd file, edit the menu portion of your apps .lisp file and then the handler from above will work. Note that if your panel name is MYPANEL then the handler would be something like this: (defun on-manage-contacts (obj) I am not sure why the function is create-"NAME OF YOUR PANEL HERE" instead of something like panel-open :panel-name but I am sure there is a very good reason for it. |
Beta Was this translation helpful? Give feedback.
-
So, working through Tutorial 30, that uses the clog-web templating and it provides slightly different approach as each menu link refers to a route and "refreshes" the page (updates the dom I guess). So we have:
So, all of that is straight forward and doing templating directly in the .lisp file is fine. However, I have looked at the clog-gui templating approach and I understand how to render panels into modal windows, this is straight forward but I am not able to visualize how to load the content of the panel into a clog-web based template that updates the actual body of the document. A couple of questions: QUESTION 1) Can we load panels saved in .clog files into the page it self? QUESTION 2) Can we mix and match the display of panels we create in builder so that some handlers update body while other handlers render out into modal windows? NOTE: I have tried mixing clog-web and clog-gui templating packages and there are symbol conflicts so I am assuming that we cannot mix and match, which is fair enough, that would make sense from a design perspective. Thanks. |
Beta Was this translation helpful? Give feedback.
-
QUESTION 1) Can we load panels saved in .clog files into the page it self?
yes as the .clog files are just html. but they won't function as any source
code in the markup will just be sent to the user's browser. What you should
do is render the clog file, and then use the create-xx function instead to
place the content on the web page.
QUESTION 2) Can we mix and match the display of panels we create in
builder so that some handlers update body while other handlers render out
into modal windows?
The rendered panels work with CLOG-GUI and CLOG-WEB.
NOTE: I have tried mixing clog-web and clog-gui templating packages and
there are symbol conflicts so I am assuming that we cannot mix and match,
which is fair enough, that would make sense from a design perspective.
For the most part you can mix and match, just not a good idea and you would
have to know a bit about CLOG-GUIs internals.
… Message ID: ***@***.***
.com>
|
Beta Was this translation helpful? Give feedback.
-
Appreciated :)
|
Beta Was this translation helpful? Give feedback.
-
Rabi Botton, since you mentioned "revamping" some aspects of build / layout capability, I have a request: REQUEST: When you are considering the api for adding controls AND layout, can you take into account the use case of creating custom controls? Yes, that is re-stating what you posted. However, what I mean by custom controls / layouts is this:
I can use Panels to create custom controls and custom layouts. For example, I can already create libraries of custom forms, custom counters, custom sliders and so forth. It is all pretty straight forward and more powerful because CLOG is a synchronous framework which allows me to not just design the controls but build into them integration directly into my apps. I can also use Panels to create entire libraries of layouts. I can create everything from entire page layouts to header, footer and custom content layouts with stand-in content. This is already EXTREMELY powerful because replicates all of the core functionality of Elementor.
a) Control Palette - Standard application primitives as they exist already. This should almost never change as they are the basic building blocks of all applications. b) Extended Palette - Custom widgets that all users can add to. As time goes on CLOG may acrete known good defaults and ship with a standard Extended Palette + allow devs to create their own custom Extended Palettes customized to their and their dev teams needs. c) Layout Palette - This would be basically the same as the Extended Palette just re-named to Layout Palette where the community and individual dev teams can contribute their own layout libraries that specifically provide ideas and templates for doing modern web layouts. All of the builders these days offer libraries split into two categories: full page layouts and component layouts where the component layout would be something like a header or a hero section but a full page layout would be a whole template for a page (obviously). The key idea that I am trying to communicate here is this:
I hope that falls in line with what you have already envisioned for CLOG. |
Beta Was this translation helpful? Give feedback.
-
Most of what needs to be done just needs documentation, you just need to
add to the data structures in clog-builder-settings after
loading clog/tools and then run the builder. My plan is just to simplify
that process in the next few weeks.
…On Tue, Jun 7, 2022 at 8:34 PM aykaramba ***@***.***> wrote:
Rabi Botton, since you mentioned "revamping" some aspects of build /
layout capability, I have a request:
REQUEST: When you are considering the api for adding controls AND layout,
can you take into account the use case of creating custom controls?
Yes, that is re-stating what you posted. However, what I mean by custom
controls / layouts is this:
1. The core tools already exist in Builder.
I can use Panels to create custom controls and custom layouts. For
example, I can already create libraries of custom forms, custom counters,
custom sliders and so forth. It is all pretty straight forward and more
powerful because CLOG is a synchronous framework which allows me to not
just design the controls but build into them integration directly into my
apps.
I can also use Panels to create entire libraries of layouts. I can create
everything from entire page layouts to header, footer and custom content
layouts with stand-in content.
This is already EXTREMELY powerful because replicates all of the core
functionality of Elementor.
1. What doesn't exist (yet!) is a way to hook the library controls /
layouts into the control palette. My thoughts here would be to create 3
palettes:
a) Control Palette - Standard application primitives. This should almost
never change as they are the basic building blocks of all applications.
b) Extended Palette - Custom widgets that all users can add to. As time
goes on CLOG may acrete known good defaults and ship with a standard
Extended Palette + allow devs to create their own custom Extended Palettes
customized to their and their dev teams needs.
c) Layout Palette - This would be basically the same as the Extended
Palette just re-named to Layout Palette where the community and individual
dev teams can contribute their own layout libraries that specifically
provide ideas and templates for doing modern web layouts. All of the
builders these days offer libraries split into two categories: full page
layouts and component layouts where the component layout would be something
like a header or a hero section but a full page layout would be a whole
template for a page (obviously).
The key idea that I am trying to communicate here is this:
- Virtually nothing new needs to be created.
- All of the core functionality already exists in the Palette + Panel
technology. It is almost perfect already.
- All of the ideas above can be accomplished through the re-purposing
of the Palette + Panel technology and adding the api interfaces to allow
for the creation of libraries of widgets and templating components.
I hope that falls in line with what you have already envisioned for CLOG.
—
Reply to this email directly, view it on GitHub
<#141 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/ACYUEFLQ4V2HJZJLWNCOMOLVN7TBTANCNFSM5XUMHFJQ>
.
You are receiving this because you commented.Message ID:
***@***.***>
|
Beta Was this translation helpful? Give feedback.
-
I have a new question: How do you change the color of the body of the page on click?
(defun on-template09 (body) This sets the background colour for the menu item. How is the document body it self accessed so I can control page colour, document name, etc? Thanks. |
Beta Was this translation helpful? Give feedback.
-
As part of testing, the connection-body function is a lot of fun. For example, it is easy to create a function that adds objects to the DOM: (defun on-template09 (obj) I realize that in order to properly interact with DOM objects that we create they need to be bound to variables and data structures. I was curious, is there a way to evaluate the state of the existing DOM in CLOG? If yes, are there ways to manipulate the DOM objects without them being bound to variables? Not an important use case, just trying to visualize how everything is tied together. Thanks. |
Beta Was this translation helpful? Give feedback.
-
Well that is CLOG :) |
Beta Was this translation helpful? Give feedback.
-
Good afternoon Rabbi. I am really enjoying the updates, your dev cycle is so fast it is hard to keep up! Absolutely everything is better, faster and more magical. I did have a couple of comments and thoughts on the new UI layout ideas:
I have attached a screenshot for reference. I am not sure what the correct way to handle this is. A generalized way might be to allow for users to float each of those 4 Palettes as windows just as they were before and add a vertical maximize icon that allows users to either stick the windows to one of the other side of their display and arrange them side by side. This might give users the flexibility to organize their tools as they wish while giving them also the ability to maximize vertically those Palettes they may need lined up. I don't think having palettes vertically aligned by default, unless a user really wants to setup their ui that way is going to be too useful just because of number of items each Palette needs to list. With floating windows that could be vertically maximized or organized how the user wants, it would allow for a SAVE WORKSPACE LAYOUT feature where we can provide users the ability to define their own layouts and save them for whatever project they working on. It has not been unusual for me to vertically maximize 3 or even 4 of the Palette windows SIDE by SIDE and then have my layout window in the middle, for example. Sometimes I would just have 1 vertically maximized window, sometimes two with Control Events Palette opened up 3/4rs, and so forth. Note: I realize that I am ostensibly describing a tiling window manager already here, I apologize for the scope creep. For a half a second I had the image of me making StumpWM a dependency of CLOG and writing a module to make it aware of CLOG windows ... Hehe! Anyway ... In my screen shot, I have imported a W3CSS template. This templates has a HUGE number of divs and the Control List Palette is simply way way way too small to be useful. For me, I would want each one of those 4 Palette windows to be vertically maximizable as all of them can be (and will be on sophisticated layouts) taller than even the maximum resolution on a 4k monitor. I will be moving to an 8k monitor in the next year or so, but for users on regular monitors, the usability of tiny windows that cannot be resized is going to be a substantial issue. |
Beta Was this translation helpful? Give feedback.
-
So let's say we start with 50/50 split and make the split resizable for the control palette and the control list? |
Beta Was this translation helpful? Give feedback.
-
I moved it to 50/50 and added a divider (no resize yet) for now so can see how it looks. After this iteration (almost done) I'll work more on UI and in particular allowing configurability in more diverse ways. |
Beta Was this translation helpful? Give feedback.
-
pull again should work now (lmk) |
Beta Was this translation helpful? Give feedback.
-
Thank you kindly. SUMMARY: It works on all platforms, but you need to resize the browser in a way that affects its size in the Y axis to get the 50% split to resize and render. For me this is good enough. TESTING METHODOLOGY:
TESTING RESULTS: Linux + Tiling WM (StumpWM)
Linux + XFCE
Windows 10
OSX
I can perform more detailed tests if you like. For me, this is good enough. Resize is really nice btw, love that. |
Beta Was this translation helpful? Give feedback.
-
Ok, done, resizing now works on window change, window full screen and changing orientation of monitor |
Beta Was this translation helpful? Give feedback.
-
Would you mind testing out the load, save and render dialogs
cross platform? Appreciated either way!
…On Sun, Jul 3, 2022 at 5:55 PM aykaramba ***@***.***> wrote:
Confirmed as working on-load. Test results:
Linux + Tiling WM (StumpWM)
- Brave - Works on-load
- Firefox - Works on-load
- Chrome - Works on-load
Linux + XFCE
- Brave - Works on-load
- Firefox - Works on-load
- Chrome - Works on-load
Windows 10
- Brave - Works on-load
- Firefox - Works on-load
- Chrome - Works on-load
OSX
- Brave - Works on-load
- Firefox - Works on-load
- Chrome - Works on-load
Thank you Rabbi. Best support ever.
—
Reply to this email directly, view it on GitHub
<#141 (reply in thread)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/ACYUEFKLWIJ6QYOLUQFFRP3VSID6ZANCNFSM5XUMHFJQ>
.
You are receiving this because you commented.Message ID:
***@***.***>
|
Beta Was this translation helpful? Give feedback.
-
I have completed testing on Linux / OSX / Windows. SUMMARY: Everything works okay except that there is something going on with how CLOG enumerates threads maybe? The first browser that opens up a session with /builder ends up being the TARGET into which CLOG pushes a new tab (window) when you select the TEST dialog. This doesn't matter if it is on the same computer or a different computer. I have a few laptops from which I was able to select TEST and have the Panel rendered into the original computers browser. At some point in time, you should separate out this issue into a separate security module / process and deal with this issue in a separate / itemized way because on complicated applications this sort of thing might become a serious security issue. Let me know if you have any questions or any of the results need to be explained. I would be happy to continue to do QC / testing if you like. TEST RESULTS: Between each browser re-load:
Test #1 - In each browser:
Test #2 - In each browser:
Linux + Tiling WM (StumpWM)
Linux + XFCE
Windows 10
OSX
|
Beta Was this translation helpful? Give feedback.
-
TEST RESULTS: Between each browser re-load:
Test #1 - In each browser:
Linux + Tiling WM (StumpWM)
Linux + XFCE
Windows 10
OSX
SPECIAL NOTES AND OBSERVATIONS:
... however ...
I am not sure how important this is, just an interesting artifact.
a) Delete the test-template.clog and test-template.lisp files. b) Loaded up /builder in a new browser then loaded up the .html template file in a new panel. c) Once the html file was loaded an panel and palettes populated I would first hit SAVE to save a .clog file. Then I would wait and watch my file manager for the .clog file to appear. d) Once the .clog file appeared, I would hit RENDER and render out the .lisp file. The I would wait and watch my file manager for the .lisp file to appear. e) Only once the .lisp file appeared did I click TEST to render out a test in a new tab. What I wanted to share here was that saving out .clog and .lisp files seemed to be fast on the local workstation but the laptops on the lan would take between 10 second and 40 seconds to either render out a file AND/OR render out a TEST. After clicking TEST on a laptop on the lan, it too would either take 3 to 40 seconds to open up a new tab. I did not do extensive testing on this, just noticed the pattern. I am not sure how important this performance metric is, I thought you might be interested in these data points. Test #2 - In each browser:
Linux + Tiling WM (StumpWM)
Linux + XFCE
Windows 10
OSX
NOTE: No issues here, everything works great. Let me know if you need any other testing done. |
Beta Was this translation helpful? Give feedback.
-
1.
As a side point, one of my goals is to learn enough so that I can
create my own control sets the way Elementor allows authors to package up
controls into a package that can be just drag/dropped on to a page to cut
down on the layout time. Build is really kind of amazing already, I think
you are very much on the right track with CLOG in quite a number of
dimensions.
The code for that is practically already there, as long as the other
controls are all children of a control that control can be cut and pasted
even between panels. You can create a panel that has a collection of such
layouts to use at will. As part of the code of allowing new controls that
wrap JS etc, that is sort of how custom controls that are all lisp will be
implemented.
… Message ID: ***@***.***
.com>
|
Beta Was this translation helpful? Give feedback.
-
Hi!
For a challenge, I want to try and re-create the W3C templates just to see how far we can get. I have a few questions:
It's very simple and we should be able to easily recreate this.
I have uploaded my code for reference to my repo here: https://github.com/aykaramba/website-project
What is the proper way to set the background colour of a panel? The default is white, this template is black, it would be nice to not have to use a div as the background for the body.
The template uses the following code to generate 4 of the icons in the left menu:
<a href="#about" class="w3-bar-item w3-button w3-padding-large w3-hover-black"> <i class="fa fa-user w3-xxlarge"></i> <p>ABOUT</p> </a>
The control palette has the link widget, but what widget can we use for fontawesome fa fa-user classes? I tried paragraph span but putting fa fa-home w3-xxlarge in the class field doesn't work (well w3-xxlarge class is rendered).
Screenshot of builder attached for reference, link-18 is highlighted so you can see the padding in the control properties panel.
Thanks for any help
.
Beta Was this translation helpful? Give feedback.
All reactions