Giter Club home page Giter Club logo

circuitverse's People

Contributors

aayushgupta05 avatar abstrekt avatar ananthavijay avatar ankitkataria avatar armudgal avatar arnabdaz avatar creyente1897 avatar dependabot-preview[bot] avatar dependabot[bot] avatar fpintos avatar gr455 avatar junron avatar kartikay304 avatar mahmodhammad avatar mrbartusek avatar niladrix719 avatar nitish145 avatar pavanjoshi914 avatar prerna-0202 avatar pulkit-30 avatar ryuk156 avatar satu0king avatar shauryag2002 avatar shivansh2407 avatar shreyaprasad1209 avatar shubhankarsharma00 avatar tachyons avatar tanmoysrt avatar vaibhavupreti avatar vedant-jain03 avatar

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

circuitverse's Issues

"Multiple Input" solutions

Normally, having multiple inputs into one wire causes some bizarre results. I'll be honest, I don't like the current behavior, and how multiple inputs are handled (or rather, not). I believe that multiple inputs should then OR compare all of the inputs, and treat it as such. Essentially, wires should act as OR gates if more than one input occurs. This makes more sense to me, and would also make wiring a bit less finicky. If this is done due to a technical limitation, that would make sense. If this can be solved otherwise, please do so.

Todo List + Beginner Issues

These are just few ideas or bugs I know right now. I will keep updating the list. Before starting anything, create an issue and await instructions. Feel free to suggest any features or bug fixes

Simulator

  • Counter
  • Decimal to BCD and vice versa
  • Combinational Analysis - Make it easier to give input.
  • 7 Segment - change color
  • Add undo - redo buttons
  • Undo - fixes - combinational and new project loaded: call backup()
  • Test and Fix shortcuts in firefox
  • Move from this to prototype
  • Complete Plotting implementation
  • Disable copying / combinational circuits according to assignment preferences
  • Watermark with link in embed - outside only
  • Add scroll bar to sidebar
  • Add a link to assignment desription on the simulator page
  • Enable minimap to show rotated elements
  • Fix Trivial cases - constant and Z state in combinational analysis
  • Configure shortcuts for Zoom/save online
  • Setup a good offline backing of circuits

bug fixes

  • Save empty circuit causes problems
  • Subcircuit of empty circuit causes problems
  • Image of empty circuit causes problems
  • Undo after deleting subcircuit (ie main circuit was deleted) causes problems.

Ambitious Features

  • Expresso - replacement of combinational analysis
  • Custom layout for sub circuits - logisim does a brilliant job at this
  • Write Test suite for simulator

Website - rails + normal front end

  • Configure back button correctly
  • Flash messages ( notice ) not configured correctly
  • Assignment Grading system
  • Customize Dashboard
  • Add shortcuts to getting started page
  • Add a link to view project in assignment page
  • Trending and Featured sections
  • Preview should go full screen
  • Email for assignment submissions for students. Assignment report for mentor
  • Use CSS and beautify email
  • Follow users ( probably later )
  • Write Test suite for backend
  • Countries and University - to users
  • Add shortcut on homepage for pending assignments
  • Add shortcut on simulator page for assignment description

Others

  • Powerpoint Plug-In

Documentation
This involves a full documentation of all circuit elements. It shouldn't take more than a days work. It is important to someone who comes to our website and has little knowledge of the various components.
Things to document.

  1. What the element does
  2. Truth table if applicable
  3. Small demo
  4. Uses of the element
  5. Further reading resources

Multiple access for projects

Should CircuitVerse provide a way for multiple people to edit the same circuit?

If yes, how should we implement it. Real time editing like google docs is not feasible. One way is to allow users to independently open the circuits and independently save. That is the responsibility of saving correctly and avoiding clashes is on the users.

"Download Image" feature is slightly broken

When downloading an image of my display (I have not tested it on any other circuits yet) it seems to h\get the layers mixed up.
test
screenshot 2018-11-08 17 34 18

The image on the bottom is how it's supposed to look, the top image is how it looks when using the Download Image tool

Crashing and Autosave

CircuitVerse crashes a lot, (requiring the page to be closed and re-opened) usually because of pins/nodes not behaving correctly. (somehow a pin has been moved from it's intended spot, or a pin hasn't generated when making new wire) Whether this issue gets fixed or not, there should be an optional autosave feature as well.

Separate backend/front end code

Currently backend and front end code is tightly coupled. Developers who want to work on the simulator will not want to install and setup the backend code and dependencies. Therefore it is desirable to separate the two.

Tunnel "clickbox" is offset.

The "clickbox" of the Tunnel is offset to the side:
offset-cb

Furthermore, deleting a Tunnel leaves a green dot behind.

Display Matrix

Users are making their own display using LEDs.
image

This is great. However, It probably is easier to have a custom display matrix component.
image

@blane1257 what do you think of it?

User profile improvements

This should be fairly easy. Basically, a user's comment should have a link to their profile page. Also, on user profiles should be a link to their groups and favorite circuits. You can access these already via the good ol' URL bar but there isn't a link directly on their profile page.

Fork/duplicate your own project

What

It would be nice if as a logged in user you could "clone" or duplicate your own project. You can currently do this with another user's project, but not your own. simulator.io has this feature.

Why

A use case for this would be keeping a base version of a circuit, such as an ALU, then cloning it before adding features.

How

Since there's already support for forking another user's project, perhaps it wouldn't be hard to reuse that code.

An alternative solution could be having version control for projects and having a branching model

Add redis to docker-compose

image

The docker container starts perfectly. However redis is required for sending mails. Therefore it is necessary to configure redis too.

SubCircuit Surface LED's

When customizing the layout of a SubCircuit, any LED's that have been placed should appear on the SubCircuit similar to inputs or outputs, but on the surface. A similar idea I just had is to do the same with buttons, allowing for a SubCircuit button panel.
Here's a graphical representation of what I mean about the surface LED's:
screenshot 2

Dockerize code

Dockerize the code to be run in development so developers can quickly get started.

Bulk mail

The organisation needs a way to send bulk mail to all users. Ideally we should be able to use transactional email service like mailchimp. Alternatively we can maintain our own subscription system (not recommended).

Mobile compatibility for Simulator

I think it will be difficult to maintain both Desktop and mobile in one HTML file, so one approach is to use a separate html file for mobiles.

  • Setup mobile HTML5 layout
  • Add touchscreen listeners

Circuit Browser Improvement

There should be a "Most Viewed" section to the home page, or maybe a proper circuit browser with a few options for filtering and order.

Featured Circuits/ Editor Picks

Desmos
Refer to the way Desmos shows featured works for more details.

Currently featured circuits is hardcoded temporarily. Will need a nice way for admins to selectively feature circuits.

  • Create Model FeaturedProjects - primary attribute - project_id
  • Send email to the featured project's author
  • Monthly/ Weekly send email to everyone about past month's/week's featured works
  • Ensure FeaturedProjects cannot be made private or limited access
  • Provide a way for people to submit their work to be featured

7 Segment Decimal Point is hard to see

The decimal point on the 7-Segment display is too close to the rest of the number and not defined enough, it is hard to see and easy to miss. Making it more separated from the other segments should fix this.

Search Engine

Currently we are using google custom search which doesn't do a very good job. The search should search over project names and descriptions.

Subcircuit saving and loading + additional subcircuit improvements

  • Saving subcircuits for use in other projects

This has probably (definitely) been suggested before, but I have some ideas for some extra improvements to sub curcuits, and a way of distributing them to other people, or at least between projects. The idea is that you can save subcircuits to a tab in the "circuit elements" tab, which will allow you to utilise that subcircuit elsewhere. This will link the subcircuit to the original project whence it came from, so changes to the subcircuit in that project will be reflected elsewhere. This will also make using subcircuits far easier to use, since they can be dragged from the "circuit elements" tab, instead of using the popup which is rather annoying.

  • Custom subcircuit textures

Another feature would be to add custom textures to subcircuits, by uploading your own image to be used on your subcircuit. This would make subcircuits incredibly customisable, and a great addition to projects. The downside to this is that subcircuits would have to be managed much more thouroughly, as they would also have image data stored too. It's also possible to see people "trolling" via the use of these customizable images on their subcircuits. It's an idea all the same, even for a future date.

Subcircuit Layout upgrade

Referencing #36.

Until recently subcircuits had very strict dimensions and positions and little could be done to move the node positions. As of now, subcircuits have flexible dimensions and node positions can be changed.
Moving forward, the design pattern has to be considered to ensure extensibility and ease for both development and the users.

Some of the features are to be considered to be implemented on the subcircuit layout.

  • Output elements like LEDs (Digital+analog+RGB)
  • Output elements like seven segment display, display matrix
  • Input elements like button
  • Input elements like clock, stepper
  • Custom text elements in between

This would open a whole range of exciting possibilities. If the initial design is good, implementing these features will be easy. However, it is tricky as all LEDs and other output elements need not be part of the subcircuit. Providing a feature for the user to easily pick and chose his features will be difficult. Storing and manipulating the data from the development point of view is tricky too.

@blane1257 @HypheX and thoughts? comments?

Replace logix with circuitVerse

The project was initially named logix but was later renamed to CircuitVerse. The name has been changed in most places but there are still some places where it hasn't been changed.

  1. Do a global search for term "logix" or "Logix" and replace with "circuitVerse" and "CircuitVerse" respectively
  2. Make sure whatever you replace is data and database independent otherwise old project will no longer work and database integrity will be effected.

Control improvements

I have a couple of tiffs with the current control scheme for CircuitVerse, which I think could be easy fixes and make the simulation much easier to use.

  • Fix the "backspace" key

Firstly, unbind the "backspace" key from delete. Countless times I have edited values in a part then accidentally deleted it when I made a minor edit via the backspace key. This is incredibly frustrating, and should be fixed.

  • Bind WASD keys to Arrow Keys

Secondly, bind the "WASD" keys to perform the same job as the arrow keys. This meaning W = Up, A = Left, S = Down, D = Right. As a gamer, I'm used to using the "WASD" keys in conjunction to the mouse. This means I can use both hands at the same time to control various things. For example, my right hand on the mouse and my left hand on the WASD keys. This opens up the ability to select parts and rotate them without having to change hands. One can also imagine the Q and E keys (which are close to the WASD keys, and easy to access from a casual WASD position) for whatever other binds could be necessary.

  • Seperate "Move" and "Select" mouse buttons

Thirdly, separate the "Move" and "Select" mouse buttons. Currently a small problem with the interface is that all the mouse button do the same thing, that being either select a component or pan the camera. However, especially in large or tight circuits, this can be problematic, and the mouse may select a component when it was supposed to pan the camera, or visa-versa. The solution would be to change the mouse's behavior, to have exclusively one button to select, and one button to pan. My suggestion would be "Mouse 1" (Left Click) to select and "Mouse 3" (Scroll Wheel) to pan, or similar. I'm avoiding suggesting "Mouse 2" (Right Click) as this brings up a popup menu on some browsers (like mine), which can be annoying. There is possibly a workaround, but it's probably not worth the effort.

  • Selection behaviour fixes

Finally, there should be some way to differentiate the selection behavior when multiple hot zones overlap. A great example of where this would be necessary would be deleting odd wires which get stuck under a component after moving it. In this situation, it's necessary to move the component again to gain access to the wires to remove them. In the worst case scenario, wires can end up overlapping inputs/outputs on the same component, in which case it's nearly impossible to remove without removing the component. My suggestion is to add some ability to cycle through components under the cursor. An example would be that pressing the "Tab" key cycles the selection through all objects under the cursor, allowing the user to select the necessary component that they need too.

I hope that my suggestions don't sound too repetitive to ones before, I just hope their implementation can make the CircuitVerse interface easier to use by other users, simple or advanced.

"More" button on recent circuits

It doesn't seem that there's a way to see more recent circuits past the main page's "recent circuits". I want to see a way to see more circuits by people to look at. If this isn't the right place to ask about it (since I'm assuming this is to raise issues about the engine, not the website), then I'll take note of that. If this can be achieved however, please do!

Assignment Deadline Job bug

When the deadline is reached, the assignment is correctly closing, however the submissions are not being recorded correctly, that is a copy of the projects are not being made and not being marked as a submission.

Check file at CircuitVerse/app/jobs/assignment_deadline_submission_job.rb

Login loop after clicking 'Save Online'

Steps to reproduce

  • Edit a project and add some components
  • Click Save Online and name the project
  • The side redirects to /users/sign_in
  • Don't log in, click the CircuitVerse logo

The site redirects to the home, then to the simulator and you see the message You have to login to save the project, you will be redirected to the login page. that redirects again to /users/sign_in

ctrl+c stops working randomly

Sometimes I use the copy/paste functions heavily. Occasionally, it stops working randomly. No idea what causes this, but the only fix is to save and refresh the page.

Version Control of engine

Would it possible to let users decide what version of the engine they want to use? It would be really useful in case an update rolls in, and breaks some circuits. It would be nice to have a drop-down menu on the corner that lets you choose a version of the engine. This would help preserve old circuits in working state, while still letting users update their circuits to work with newer versions if they feel like it.

Feature requested by @HypheX

Diodes

Basically not gates that don't not. Don't ask me why. This just needs to be a thing.

"Bug" with bits and integer limits

So I was putting together a group of 16 bit full adders to make a 64 bit full adders. This was forked from another project of course. I was testing it out, and then the simulation began to act strangely. Somehow, it believed that the binary values were negatives (and appended a negative sign onto the inputs). I also wasn't able to change any further values past a certain point. My guess as to the source of this issue is that the simulation literally had overflow errors (my real computer, not the simulated one), and so believed the numbers I was inputting were negative. I assume this is also due to bit's being grouped together as a single number, instead of their individual boolean values. This isn't exactly a problem, and I don't expect it to be solved immediately (unless you're aware of an easy solution). This situation is already completely out of proportion and likely to never occur in any legitimate circumstance, but it does show a limitation in the CurcuitVerse simulation.

You can see for yourselves in this project: https://circuitverse.org/users/1577/projects/4038

Powerpoint plug-in

Should be an easy way to embed CircuitVerse circuits in powerpoint - see lucidchart plug in for reference

Keyboard shortcut changes

I suggest the following changes:

  1. Pressing L should prompt the user to change the label. (It currently deletes it)
  2. Pressing D should prompt the user to change the delay.

It would be great to see those changes!

Extremely odd dragging behavior.

what-drag
Notice, there is a dot that is moving twice as fast as the rest of the selected parts.
image
image
This has happened before a few times, I have not been able to reproduce it. The error logs might help though.

Fix missing icons in simulator

Add images with type svg in the images folder.
Missing images. You can send the icons in separate PRs

  • Tunnel
  • TestBench Input
  • TestBench Output
  • ForceGate

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.