Giter VIP home page Giter VIP logo

atrilabs-engine's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

atrilabs-engine's Issues

The container that drops on left side doesn't open in some cases

Explanation

If a container A is already open, and then we open container B followed by A again, then A doesn't appear. This happens because if a container is added again to the list of containers, it is not re-positioned in the array.

Fix:

Re-position a container at the top of the array if a container is opened again.

Improve user experience of color palette

Explanation:

The Usual/Normal user behavior
A user sets the hue and then plays around with the saturation to find a color that fits. A user would like to play around with the saturation more than once before making a final decision.

The problem in current user experience

  1. Whenever the user selects a hue (by dragging the pointer on the horizontal color line), the box closes automatically, hence, the user doesn't get a chance to play around with the saturation level. The user will have to open the color palette again.
  2. User might want to select multiple times in one go. Re-opening the dialog box, again and again, will be irksome.

Fixes:

  1. Wrap <ColorPicker> inside a <div>. Whenever the user clicks outside the color picker, close the color picker. For this, we will have to add an onClick listener to the wrapper div and window. Create a state chart that has states such as idle, color-palette-open, invalid input, valid input etc.

Component Navigator

Explanation:

Component Navigator can be used as an escape hatch for many of the shortcomings in the UX of the canvas.

Toggle Component UI Changes

Setting width & height has no effect currenlty. The Toggle size should change on setting width and height.

atri start can only be run from app's root directory

Explanation:
Currently atri cli can only be run from root directory of the app. If it's run from one of child of root directory, then it will assume that a new app has to be created.

Fix:
Create a marker file that indicates that a directory is an app's root directory.

The python app server doesn't reloads imported atri.py modules during development

Explanation:

The python app server doesn't reloads <route>.atri modules during development time. Hence, when a user drops a new component in the UI and presses Publish, the callbacks from deployed app to the python server start failing as the newly dropped components are missing.

Fix:

During development, reload the <route>.atri.py module on each request.

No tabs are automatically selected when a component is clicked

Explanation:

When we select a component that has two tabs in the properties tab and then we select a component with one property in the properties tab, it might happen that no tab is automatically selected.

Fix:

Select the first tab if the next component does not have the previously selected tab.

The localhost:4002 opens before file server is ready to serve

Explanation:

This problem is more profound in Mac OS because it checks the signature when an executable is run for the first time, hence, more delay in starting the file server.

Fix:

Before opening http://localhost:4002 in browser, check if file server has started running.

Breakpoint support for CSS

The id of each component can be of the form <page_name>_<alias>. Implement a CSSGenerator that goes through all the CSSTree. It looks for state.breakpoints field in the CSSTreeNode.

Color palette doesn't show initial value

Explanation:
Imagine a scenario. I have selected red as the border color for a button. Let's say later I decide to just adjust the saturation a bit, but when I click on border color again, I see black as initially set. Now I have to move the color pointer to the initial position and then try from there. This is going to be a painful experience for a very common scenario.

Fix:
When a color palette opens, the initial color should be from props.styles.borderColor and similarly for other color styles.

`atri start` gets stuck on windows

Explanation:

Traceback (most recent call last):
File "C:\Users\adity\anaconda3\envs\AtriTest\lib\pathlib.py", line 1288, in exists
self.stat()
File "C:\Users\adity\anaconda3\envs\AtriTest\lib\pathlib.py", line 1095, in stat
return self._accessor.stat(self, follow_symlinks=follow_symlinks)
FileNotFoundError: [WinError 2] The system cannot find the file specified: 'D:\atri.app.json'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\adity\anaconda3\envs\AtriTest\lib\runpy.py", line 196, in _run_module_as_main
return _run_code(code, main_globals, None,
File "C:\Users\adity\anaconda3\envs\AtriTest\lib\runpy.py", line 86, in run_code
exec(code, run_globals)
File "C:\Users\adity\anaconda3\envs\AtriTest\Scripts\atri.exe_main
.py", line 4, in
File "C:\Users\adity\anaconda3\envs\AtriTest\lib\site-packages\atri\cli.py", line 23, in
find_and_set_app_directory()
File "C:\Users\adity\anaconda3\envs\AtriTest\lib\site-packages\atri\find_app_root.py", line 28, in find_and_set_app_directory
dir = find_atri_root_dir()
File "C:\Users\adity\anaconda3\envs\AtriTest\lib\site-packages\atri\find_app_root.py", line 14, in find_atri_root_dir
if attempt.exists():
File "C:\Users\adity\anaconda3\envs\AtriTest\lib\pathlib.py", line 1288, in exists
self.stat()

Show status of Publish

Explanation:

When publish button is clicked, show the status of publish in a dropdown maybe.

Send image as response

Explanation:

Allow setting custom.src field of <Image/> component.

Solution:

Pass a second parameter to handle_event & init_state function a route's main.py file. This second parameter will have an object Response that can be used to manipulate the response being sent to the client from python server.

The file server doesn't have app-assets set as public directory

Explanation:

The file server running at http://localhost:4002 doesn't have the app-assets/ directory set as public directory, hence, the editor running at 4002 in production doesn't show images.

Fix:

Add app-assets to public directory for file server.

Automatically open http://localhost:4005 when generated app's server is booted

Explanation:
This is a manual step and might confuse some of beginner user.

Fix:
From python atri cli after successful deploy, ping http://localhost:4005(generated app's server) until we get a successful pong. Then we can open http://localhost:5000 in browser. Try to not open duplicate tab for http://localhost:4005. Open it once per atri cli session.

Cannot connect to generated app's python server from inside docker.

Explanation:
The generated app's dev server sends request at http://localhost:4007 to get updated state. This generated app's dev server is running inside the container and the python server is running outside the docker container, hence, they cannot communicate over localhost.

Fix:
Use host.docker.internal. But this only works in Docker desktop and not docker server. Find another solution if possible.

Client side navigation

Explanation:

Allow for callback handlers to have the Navigate To <route> step. Auto-populate all the possible routes.

atri cli shall not take custom ports

Explanation:

The client bundles such as manifest client that are requested once the editor loads talks to servers at ports like 4003. This causes a problem because now the bundled client contains this port number inside the code like fetch("http://localhost:4003").

Suggested fix:

Instead of sending requests to different ports, send requests to the host server at different URLs, for ex, instead of making requests to the manifest server by doing fetch("http://localhost:4003"), use fetch("/manifest-server"). We need to proxy these requests through webpackDevServer to the respective server (for ex, the manifest server). Similarly, we need to proxy requests from the file server to the respective servers as well.

Generate app has deleted component as well

Explanation:

The generated app has definitions of deleted components. These definitions are not used in the JSX part of the generated app hence, the generated app isn't throwing errors.

Fix:

The generateApp function should also use getAppInfo function in a similar way as used in buildReactApp.

Component Selector custom props

Implement a rough version of the component selector that stores the alias of a component as a value to some custom props.

Add new action - Set Style

  • Choose component using alias (dropdown)
  • Display CSS property
  • With scope to add more properties in future

Overlays don't take margin & border into account

Explanation:

The overlays that show the location of a component don't take border and margin into account, hence, when the user applies some margin to the component, the overlay size mismatches. The location of the overlay is correct, only the size mismatches.

Fix:

Use getCoordsBM function to get width & height of component with border and margin included.

Re-positioning image drags image highlight along with cursor

Explanation:

When we drag an Image component from one flexbox to another, an image appears below the cursor with some reduced opacity. This causes problems in re-position and sometimes the re-position doesn't work. This may be because mouse events are not reaching the parent components over which the image is being dragged.

Fix:

Figure out a way to disable this behavior of image drag.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.