This is an ultimate comparison framework written in Angular.
-
Create a new repository on GitHub. In the following called "ultimate-THING-comparison" and located at https://github.com/example.com/ultimate-THING-comparison, replace
THINGby your comparison (e.g.,web-framework). -
Create local repository (in a git bash, Windows shell does not work)
mkdir ultimate-THING-comparison cd ultimate-THING-comparison git init git fetch --depth=1 -n https://github.com/ultimate-comparisons/ultimate-comparison-BASE.git git reset --hard $(git commit-tree FETCH_HEAD^{tree} -m "initial commit") -
Create push to your GitHub repository
git remote add origin git@github.com:example.com/ultimate-THING-comparison.git git push -u origin master
- The initial installation should be done via the
masterbranch and updates should be pulled from theupdatebranch. This is the save route because theupdatebranch does not include configuration files. - The file
comparison-configuration/comparison.jsondefines the main properties of the comparison and the details dialog.
In the details dialog the values of the keys header-label, body, and body-attachment-tags matches level 2 headers in the comparison-elements files. The type of the body-attachment-tags must be labels and body will be parsed as markdown formated text.
3. The file comparison-configuration/table.json defines the table columns.
tag:References a level 2 header of the comparison elements (Performance,Description,License,Showcase) or the level 1 header and its content (tag,url,descr).display:Allows the user to hide a colum by default. It is possible to dynamically hide or display column by clicking on the configuration button and toggle the columns on/off.name:Allows the user to change the display name (default display name is defined bytag).order: Sorts the column ascending or descending, allowed values:asc,desctype:Style of the content.type.tag:Either a label, a text, or a url.type.class:Set a label class (e. g.label label-info). Will be ignored if value class is set.type.values:
{
"name": "slow",
"description": "Overall performance above 200ms",
"class": "label-danger",
"color": "red",
"foreground": "black",
"weight": 2
}- The label with the value "slow" has the tooltip "overall performance above 200ms", and will be red ("label-danger")
- You can choose between a specific color and class, classes are the preferred way. If both are missing, an automatic color is assigned.
- You can choose a specific foreground color if you chose a specific background color.
- The
weightallows sorting of attributes, if multiple values are allowed. Ascending and descending is set by theorderattribute in the column. Without weight, the name is used for sorting. repo: Signals that the column is dependent on a read repository (up to now only GitHub ones).
4. The file
comparison-configuration/criteria.json defines filter criterias for the table data.
tag:References a level 2 header of the comparison elements (Performance,Description,License,Showcase)name:Display name (replacestag).placeholder:Placeholder for the select box.values:Filter values.and_search:Defines if all filter value must match or at least one.number_search: Allow range searches. Ignores given values.
For each thing, create a markdown file in comparison-elements.
You can base it on template.md.
If one column depends on a repository (repo-attribute in table.json true), you have to define a section (## section title) and add the repository as first list item, eg:
## Repo
- https://github.com/ultimate-comparisons/ultimate-comparison-BASEIf you have two possibilities to get notified for future updates:
- Tell us that you want to transfer ownership to us. We will keep the framework up-to-date.
- Add your repository to our list in the file
repos-to-update.list(via PR) and give write access to the userultimate-comparison-genie. You'll get a PR every time the master branch is updated. The format forrepos-to-update.listis<your username>/<your repo name>, eg.ultimate-comparisons/ultimate-comparison-BASE.
- Install node.js
- Windows:
choco install nodejsvia chocolatey
- Windows: Install required tooling:
- In an adminstrative shell:
npm install --global --production windows-build-toolssource
- Install Java JDK8
- Windows:
choco install jdk8
-
Install pandoc (Version 1.17.2) pandoc-citeproc
- Linux:
wget https://github.com/jgm/pandoc/releases/download/1.17.2/pandoc-1.17.2-1-amd64.debsudo dpkg -i pandoc-1.17.2-1-amd64.deb
- Windows:
choco install pandoc
- Linux:
-
Update npm (sudo):
npm install -g npm -
Test dependencies:
java -version npm -version -
npm install -
npm start(starts the web page)
See docs/Update_YOUR_Comparison.md
The code is licensed under MIT, the content (located at comparison-elements) under CC0-1.0.
See README-THING.template for a README skeletton for your ultimate-THING-comparison.