Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GSoD2020 new Interactive Book structure #474

Merged
merged 33 commits into from
Oct 14, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
e291380
Remove files from previous version.
danielluehr Sep 29, 2020
a4c39b6
"Fresh" jekyll site with (almost) CV look'n'feel.
danielluehr Sep 29, 2020
bf6c81e
Empty index.md for each "chapter".
danielluehr Sep 30, 2020
bd2b1c0
Add favicon.
danielluehr Sep 30, 2020
7c1add1
python utility to create chapter skeleton from a yml file.
danielluehr Oct 4, 2020
c9fca86
example chapter yaml file.
danielluehr Oct 4, 2020
2f81b01
updated order string in chapter creation utility.
danielluehr Oct 4, 2020
0fe5ef3
Fix bug in chapter creation utility.
danielluehr Oct 5, 2020
5fb0395
jekyll include file to automaticaly generate chapter toc.
danielluehr Oct 5, 2020
dcf7ae6
empty chapter template (replaces chapter example yaml).
danielluehr Oct 5, 2020
45c6c22
New structure's chapter definitions.
danielluehr Oct 5, 2020
a3488a3
New structure generated from yaml files.
danielluehr Oct 5, 2020
7b9a4b7
Add has_toc: false property to disable JTD auto chapter toc.
danielluehr Oct 5, 2020
85c7128
Fix include for automatic chapter generation.
danielluehr Oct 5, 2020
c02fce3
Remove jekyll's sample pages
danielluehr Oct 6, 2020
1ba9aa9
exclude utils directory from jekyll processing.
danielluehr Oct 6, 2020
9f9b017
Copy CV's original index README and CODE_OF_CONDUCT files.
danielluehr Oct 6, 2020
fc567bb
first draft of contribution_guidelines.
danielluehr Oct 6, 2020
1290a83
Comment out Prev/Next buttons code since it is not currently working.
danielluehr Oct 6, 2020
91f18d5
chapter creation utility now process chapter order.
danielluehr Oct 6, 2020
169e301
New chapter definition yaml files including chapter order.
danielluehr Oct 6, 2020
082a301
Update content with chapter order and no_toc property for TOC header.
danielluehr Oct 6, 2020
7efbbe9
Orgmode lisp utility to extend ox-gfm to export jekyll+JTD MD.
danielluehr Oct 6, 2020
d1f270f
Contributing guidelines source in org-mode.
danielluehr Oct 6, 2020
9fcd504
Move previous section of binary numbers into new sections.
danielluehr Oct 7, 2020
d2b367d
Interactive block in binary numbers section.
danielluehr Oct 7, 2020
032da48
Org-mode sources and generating yaml templates.
danielluehr Oct 7, 2020
345924e
Improve the org-mode helper lisp code to allow bold in the middle of …
danielluehr Oct 7, 2020
39eb8d3
Merge remote-tracking branch 'upstream/GSoD2020' into GSoD2020
danielluehr Oct 7, 2020
c6ac344
Restoring files lost during the merge conflict resolution.
danielluehr Oct 7, 2020
d930274
Fix typo in IEEE Standar(d) heading.
danielluehr Oct 7, 2020
dda8fc0
Replaced JTD repo with CV repo for edit on github link.
danielluehr Oct 7, 2020
c4402ef
Move contributing_guidelines to the end of the book (in the meantime).
danielluehr Oct 7, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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