Skip to content

Commit

Permalink
Merge pull request #474 from danielluehr/GSoD2020
Browse files Browse the repository at this point in the history
GSoD2020 new Interactive Book structure
  • Loading branch information
satu0king committed Oct 14, 2020
2 parents d515d24 + c4402ef commit 6aa8c98
Show file tree
Hide file tree
Showing 181 changed files with 4,800 additions and 96 deletions.
46 changes: 46 additions & 0 deletions CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# Contributor Covenant Code of Conduct

## Our Pledge

In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.

## Our Standards

Examples of behavior that contributes to creating a positive environment include:

* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members

Examples of unacceptable behavior by participants include:

* The use of sexualized language or imagery and unwelcome sexual attention or advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a professional setting

## Our Responsibilities

Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.

Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.

## Scope

This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.

## Enforcement

Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at patrick.marsceill@gmail.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.

Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.

## Attribution

This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version]

[homepage]: http://contributor-covenant.org
[version]: http://contributor-covenant.org/version/1/4/
191 changes: 191 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,191 @@

# Interactive-Book


![download](https://github.com/CircuitVerse/CircuitVerse/raw/master/public/img/cvlogo.svg?sanitize=true)

[![Slack](https://img.shields.io/badge/chat-on_slack-purple.svg?style=for-the-badge&logo=slack)](https://join.slack.com/t/circuitverse-team/shared_invite/enQtNjc4MzcyNDE5OTA3LTdjYTM5NjFiZWZlZGI2MmU1MmYzYzczNmZlZDg5MjYxYmQ4ODRjMjQxM2UyMWI5ODUzODQzMDU2ZDEzNjI4NmE)

[Join Mailing List](https://circuitverse.us20.list-manage.com/subscribe?u=89207abda49deef3ba56f1411&id=29473194d6)


## About the project
The aim of this project is to create an online interactive guide for digital logic design. The primary goal is to develop an open sourcebook with quality content that teaches digital logic design. It will enable students to learn digital design by interacting with circuits, truth table, and other interactive elements as they proceed through the book. The professors and students all over the world can read and contribute to the same.

As contributors and maintainers of this project, and in the interest of fostering an open and welcoming community, we pledge to respect all people who contribute through reporting issues, posting feature requests, updating documentation, submitting pull requests or patches, and other activities.

### CircuitVerse
[CircuitVerse](https://circuitverse.org) is a product developed by students at IIIT-Bangalore. It aims to provide a platform where circuits can be designed and simulated using a graphical user interface. While users can design complete CPU implementations within the simulator, the software is designed primarily for educational use. CircuitVerse is an opensource project with an active community.


## Clone this repo!

First things first. Make a local clone of this repo so you can work on it from your own computer.

```
git clone https://github.com/CircuitVerse/Interactive-Book.git
cd Interactive-Book
```

## Install, and Serve!

This website was built using [Jekyll](https://jekyllrb.com/). So if you are familiar with this and already have Jekyll installed, you can scroll past the instructions we have below.

**Setting up your development environment**

To do this, you are going to need a computer capable of running Ruby - while Mac OSX or Linux tends to be easiest, plenty of people do Ruby development on Windows as well. If you're not on Mac OSX, you will likely need to install Ruby yourself.

**Install Gems and Serving the Website**

The required gems for this project are [Bundler](http://bundler.io/) and [Jekyll](https://jekyllrb.com/). Once you have Ruby installed, open your terminal, `cd` to the local repo directory, and run the following commands:

```
gem install jekyll
gem install bundle
```

This will install Bundler and Jekyll. If you have any errors, check to be sure you have installed Ruby correctly.

Next, install the projects dependencies and serve:

```
bundle install
bundle exec jekyll serve
```

This should start serving the website on http://0.0.0.0:4000/ - simply make changes to the source code and can see your changes live at that URL!

## Contribute!

We are open to all contributions by anyone, and we encourage all new members to create join our slack and discord channel.
Here are links to our:

[![Slack](https://img.shields.io/badge/chat-on_slack-purple.svg?style=for-the-badge&logo=slack)](https://join.slack.com/t/circuitverse-team/shared_invite/enQtNjc4MzcyNDE5OTA3LTdjYTM5NjFiZWZlZGI2MmU1MmYzYzczNmZlZDg5MjYxYmQ4ODRjMjQxM2UyMWI5ODUzODQzMDU2ZDEzNjI4NmE)


## Contributors
Thanks to everyone who has contributed to the Interactive Book so far!
<a href="https://github.com/CircuitVerse/Interactive-Book/graphs/contributors"><img src="https://contributors-img.firebaseapp.com/image?repo=CircuitVerse/Interactive-Book" alt="Image of contributors"></a>


## Overview
The Interactive book has two components in it.
1. Content
2. Interactions

<div style="text-align:center"><img src="/assets/images/ib.png" /></div>

### Content
It includes quality content that would be gathered from various books (primarily from ‘​Digital Design​’ by ​Morris Mano as its copyright has expired and is in the public domain) and online material. Basic notes have already been prepared to reference the aforementioned book and are attached to the table below.

### Interactions
There would be two types of Interactions.

1. **Circuit Interactions-** This includes designing optimal circuits which would help to clearly understand the logic. The student would be able to clearly detect the variation of output with the change in input via these circuits. With each Interaction module, there would be a set of instructions that would guide the user to see the desired changes.
2. **Module Specific Interactions-** This includes interaction that is designed for an individual module like kmap simulator, truth table generator, etc.

**However, we do have some rules and general guidelines we would like you to follow:**

1. Everything must start with an issue...
* Issues should have useful, concise titles and enough of a description to understand the scope of the issue.

2. Branches should link to individual issues, and be named using consistent syntax consisting of "issue type", "issue number", and a descriptive title (using hyphens for spaces, and all lower case). Examples:
* bug/#123-abbreviated-issue-title
* feature/#123-abbreviated-issue-title
* enhancement/#123-abbreviated-issue-title

3. Pull requests may not be merged by the requester. Ever.

4. Once a pull request is merged, the branch should be removed.

5. Always follow good Github etiquette. Several helpful reads on the topic:
* [Use Github keywords to auto-link close issues](https://help.github.com/articles/closing-issues-via-commit-messages/)
* [Git - Contributing to a Project](http://git-scm.com/book/ch5-2.html)
* [Who-T - On Commit Messages](http://who-t.blogspot.com/2009/12/on-commit-messages.html)


## Code Structure

Jekyll is, at its core, a text transformation engine. The concept behind the system is this: you give it text written in your favorite markup language, be that Markdown, Textile, or just plain HTML, and it churns that through a layout or a series of layout files. Throughout that process you can tweak how you want the site URLs to look, what data gets displayed in the layout, and more. This is all done through editing text files; the static web site is the final product. The structure of Interactive Book looks something like this:
<pre>
├── _config.yml
├── _data
| └── members.yml
├── _drafts
| ├── begin-with-the-crazy-ideas.md
| └── on-simplicity-in-technology.md
├── _includes(contains module-specific interactions along with their respective CSS)
| ├── binary.html
| └── gates.html
├── _layouts(includes layout types)
| ├── default.html
| └── home.html
├── assets
| ├── CSS(contains CSS of book's layout)
| └── js(contains all the javascript required for module-specific interactions as well as book layout)
| └── images(contains all the images required in the project)
├── docs(contains all the modules)
| ├── Combinational
| | ├── full_adder.md
| | └── half_adder.md
| └── binary.md
├── _site
├── .jekyll-metadata
└── index.md
</pre>

## Pop Quizzes
CircuitVerse has a custom pop quiz system to reinforce learning at the end of a page. This is in the form of a few multi-choice or true/false questions.

### Configuration
The quiz should be at the end of a page and is initialised with `{:.quiz}`. Questions are then added in a list, with correct answers being numbered subelements and incorrect answers being unordered subelements. Please see below for an example:
```markdown
{:.quiz}
1. Example question
1. Correct answer
* Incorrect answer
2. What is 1 + 1?
* 1
1. 2
* 3
```
Note that answers must be text only and not contain any other formatting.


## Plugins used

* [jekyll-seo-tag](https://github.com/jekyll/jekyll-seo-tag):
A Jekyll plugin to add metadata tags for search engines and social networks to better index and display your site's content.
* [jekyll-github-metadata](https://github.com/jekyll/github-metadata):
Jekyll plugin to propagate the `site.github` namespace and set default values for use with GitHub Pages.
* [jekyll-tagging](https://github.com/pattex/jekyll-tagging):
Jekyll plugin to automatically generate a tag cloud and tag pages.
* [jekyll-admin](https://github.com/jekyll/jekyll-admin):
A Jekyll plugin that provides users with a traditional CMS-style graphical interface to author content and administer Jekyll sites.

## Where to get support

If you're looking for support for Jekyll, there are a lot of options:

* Read [Jekyll Documentation](https://jekyllrb.com/docs/)
* Read [DigitalOcean Jekyll Guide](https://www.digitalocean.com/community/tutorials/how-to-set-up-a-jekyll-development-site-on-ubuntu-16-04)
* If you have a question about using Jekyll, start a discussion on [the Jekyll Forum](https://talk.jekyllrb.com/) or [StackOverflow](https://stackoverflow.com/questions/tagged/jekyll)
* Chat with slackers &mdash; Join [slack channel](https://join.slack.com/t/circuitverse-team/shared_invite/enQtNjc4MzcyNDE5OTA3LTdjYTM5NjFiZWZlZGI2MmU1MmYzYzczNmZlZDg5MjYxYmQ4ODRjMjQxM2UyMWI5ODUzODQzMDU2ZDEzNjI4NmE)

There are a bunch of helpful community members on these services that should be willing to point you in the right direction.

**Reminder: Jekyll's issue tracker is not a support forum.**

In addition to these plugins, Interactive book also inherit's all the plugins used in [Just-the-Docs](https://github.com/pmarsceill/just-the-docs)
## Jekyllconf

[Watch videos](https://jekyllrb.com/jekyllconf/) from members of the Jekyll community speak about interesting use cases, tricks they’ve learned, or meta Jekyll topics.


---
### Create, Contribute, Learn, and succeed with CircuitVerse!!!

Interactive-Book is &copy; 2020 by [CircuitVerse](https://circuitverse.org/)



11 changes: 3 additions & 8 deletions _config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ plugins:
# - vendor/cache/
# - vendor/gems/
# - vendor/ruby/
exclude: ["node_modules/", "*.gemspec", "*.gem", "Gemfile", "Gemfile.lock", "package.json", "package-lock.json", "script/", "LICENSE.txt", "lib/", "bin/", "README.md", "Rakefile", "vendor"]
exclude: ["node_modules/", "*.gemspec", "*.gem", "Gemfile", "Gemfile.lock", "package.json", "package-lock.json", "script/", "LICENSE.txt", "lib/", "bin/", "README.md", "Rakefile", "vendor", "utils/"]

#JTD config

Expand All @@ -77,12 +77,6 @@ aux_links:
"Circuitverse on GitHub":
- "//github.com/CircuitVerse"

# Heading anchor links appear on hover over h1-h6 tags in page content
# allowing users to deep link to a particular heading on a page.
#
# Supports true (default) or false
heading_anchors: true

# Footer content
# appears at the bottom of every page's main content
footer_content: "Copyright &copy; 2020 Contributors to CircuitVerse. Distributed under a [CC-by-sa] license."
Expand All @@ -94,7 +88,7 @@ last_edit_time_format: "%b %e %Y at %I:%M %p" # uses ruby's time format: https:/
# Footer "Edit this page on GitHub" link text
gh_edit_link: true # show or hide edit this page link
gh_edit_link_text: "Edit this page on GitHub."
gh_edit_repository: "https://github.com/pmarsceill/just-the-docs" # the github URL for your repo
gh_edit_repository: "https://github.com/CircuitVerse/Interactive-Book" # the github URL for your repo
gh_edit_branch: "master" # the branch that your docs is served from
# gh_edit_source: docs # the source that your files originate from
gh_edit_view_mode: "tree" # "tree" or "edit" if you want the user to jump into the editor immediately
Expand Down Expand Up @@ -133,3 +127,4 @@ jekyll-spaceship:

# Repository name for Setting up Netlify
repository: CircuitVerse/Interactive-Book

79 changes: 79 additions & 0 deletions _includes/binary.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
<div id="container">
<div id="binary">
<div class="binary_heading"><div class="binary_heading_text">Binary</div></div>
<div class="column"><div class="column_heading">128</div><div id="7c" class="bit" onClick="toggle_bitc(7);">0</div></div>
<div class="column"><div class="column_heading">64</div><div id="6c" class="bit" onClick="toggle_bitc(6);">0</div></div>
<div class="column"><div class="column_heading">32</div><div id="5c" class="bit" onClick="toggle_bitc(5);">0</div></div>
<div class="column"><div class="column_heading">16</div><div id="4c" class="bit" onClick="toggle_bitc(4);">0</div></div>
<div class="column"><div class="column_heading">8</div><div id="3c" class="bit" onClick="toggle_bitc(3);">0</div></div>
<div class="column"><div class="column_heading">4</div><div id="2c" class="bit" onClick="toggle_bitc(2);">0</div></div>
<div class="column"><div class="column_heading">2</div><div id="1c" class="bit" onClick="toggle_bitc(1);">0</div></div>
<div class="column"><div class="column_heading">1</div><div id="0c" class="bit" onClick="toggle_bitc(0);">0</div></div>
<div class="column result"><div class="column_heading">Decimal</div><div id="decimal1" class="bit">0</div></div>
</div>
</div>
<style>
#binary {
font-family: Arial, Helvetica, sans-serif;
width: 100%;
display: flex;
justify-content: center;
border-radius: 5px;
overflow: hidden;
}
.column {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
flex: 1.2;
text-align: center;
}
.column_heading {
width: 100%;
background-color: #302d36 ;
color: #00e8b3;
}
.bit {
width: 100%;
padding: 10px 0;
cursor: pointer;
font-size: 1.5em;
border-right: thin solid #dcdcdc;
background-color: #f1f1f1;
color: #111111;
}
.bit:hover {
background-color: #f0fff0;
}
/* For Side Heading: "Binary" */
.binary_heading {
background-color: #302d36;
color:#00e8b3;
display: flex;
align-items: center;
justify-content: center;
}
.binary_heading_text {
/* To rotate the text sideways */
writing-mode:vertical-rl;
transform:scale(-1);
}
/* For Result Section */
.result {
flex: 2;
/* To disable any mouse event including click, hover */
pointer-events: none;
}
.result .bit {
background: rgba(90, 239, 158, 1);
border-right: none ;
}
/* Extra Tweaks */
.column, .binary_heading {
/* To disable mouse selection */
-moz-user-select: none;
-webkit-user-select: none;
-webkit-touch-callout: none;
}
</style>
42 changes: 42 additions & 0 deletions _includes/chapter_toc.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
<!-- -*- engine:django -*- -->
{% assign pages_list = site.pages %}
{% if page.has_children == true %}
<ul>
{%- assign children_list = pages_list | where: "parent", page.title | where: "grand_parent", page.parent | where: "cvib_level", "basic" -%}
{% assign children_list_size = children_list | size %}
{% if children_list_size > 0 %}
<li><ul>Basic level
{% for child in children_list %}
<li>
<a href="{{child.url | absolute_url }}">{{ child.title }}</a>
{% if child.summary %} - {{ child.summary }}{% endif %}
</li>
{% endfor %}
</ul></li>
{% endif %}
{%- assign children_list = pages_list | where: "parent", page.title | where: "grand_parent", page.parent | where: "cvib_level", "medium" -%}
{% assign children_list_size = children_list | size %}
{% if children_list_size > 0 %}
<li><ul>Medium level
{% for child in children_list %}
<li>
<a href="{{child.url | absolute_url }}">{{ child.title }}</a>
{% if child.summary %} - {{ child.summary }}{% endif %}
</li>
{% endfor %}
</ul></li>
{% endif %}
{%- assign children_list = pages_list | where: "parent", page.title | where: "grand_parent", page.parent | where: "cvib_level", "advanced" -%}
{% assign children_list_size = children_list | size %}
{% if children_list_size > 0 %}
<li><ul>Advanced level
{% for child in children_list %}
<li>
<a href="{{child.url | absolute_url }}">{{ child.title }}</a>
{% if child.summary %} - {{ child.summary }}{% endif %}
</li>
{% endfor %}
</ul></li>
{% endif %}
</ul>
{% endif %}
Loading

0 comments on commit 6aa8c98

Please sign in to comment.