Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
78 commits
Select commit Hold shift + click to select a range
25f0e2c
add functools
May 30, 2011
759f730
Added jQuery UI
May 30, 2011
ab350bf
Forgot a comma
May 30, 2011
866b82c
change description
May 30, 2011
54b8d7d
fix description
May 30, 2011
20cec5a
Fix link for Dojo
May 30, 2011
a2f4f8c
Merge pull request #4 from azer/master
May 30, 2011
aca2a2a
Merge pull request #5 from thomasboyt/master
May 30, 2011
6373ac6
Fix bug in SproutCore where Object.create was being used in browsers …
May 30, 2011
bfa427d
Clean up jQuery UI
May 30, 2011
86b623f
Bump version of SproutCore so Date.now() is not used.
May 30, 2011
b282a3c
Added Raphaël.
May 30, 2011
f825308
Merge pull request #10 from plang/master
May 30, 2011
eb2f860
add cappuccino
klaaspieter May 30, 2011
412b26e
added knockoutjs
May 30, 2011
1b55816
add environ
May 30, 2011
8ab4e90
Disable property accessors. Causing a compat issue on Safari 5.
May 30, 2011
59c89d5
add Modernizr
May 30, 2011
d66af95
Add unminified bumped SC
May 30, 2011
4171f90
Resolve merge conflict
May 30, 2011
cdd08d4
Resolve merge conflict
May 30, 2011
3a63ced
Resolve merge conflict
May 30, 2011
d2a4771
Add filtering and sorting
May 30, 2011
af6b5f6
Show all when 'all' option is selected
May 30, 2011
26192bc
add Grafico to the list of libraries
Kilian May 30, 2011
5622dd3
Added JavaScriptMVC to the list of the frameworks
retro May 30, 2011
acb514c
added OpenLayers
rukku May 30, 2011
ce57c2c
Added an interpretation of MochiKit
eoghanmurray May 30, 2011
b2a6f31
added scaleApp
flosse May 30, 2011
91a6a40
Add Benchmark.js.
mathiasbynens May 30, 2011
91644d7
added LABjs
robflaherty May 30, 2011
1897072
Merge pull request #14 from Kilian/master
May 30, 2011
dd1f8f4
Remove stray logger
May 30, 2011
9743dad
Add deployment script
May 30, 2011
1e36aca
Added Qooxdoo
tudisco May 30, 2011
902e868
Resolved merge conflict
May 30, 2011
0f0e77c
Resolve merge conflict
May 30, 2011
6d52c1c
Added Spine - http://maccman.github.com/spin
maccman May 30, 2011
ec16e17
Resolved merge conflict
May 30, 2011
d9c9bfa
Merge pull request #18 from rukku/master
May 30, 2011
345fb68
Merge pull request #19 from eoghanmurray/master
May 30, 2011
f67ad79
Resolve merge conflict
May 30, 2011
053bce1
Merge branch 'master' of github.com:tomdale/everyjs.com
May 30, 2011
5055711
Resolve merge conflict
May 30, 2011
bbdfef4
Resolve merge conflict
May 30, 2011
465d6ed
Resolved merge conflict
May 30, 2011
b0e90cc
Fix syntax error in scaleApp's entry
May 30, 2011
a106d87
Remove trailing brace left over from merge conflict
May 30, 2011
fb10726
Separate app logic from data.
May 30, 2011
9538d18
Add Milk
May 30, 2011
d718945
Remove TypeKit
May 30, 2011
5998600
ArtJs
arthwood May 30, 2011
d17d5b5
update README to point to data.js
May 30, 2011
474a377
add an entry for dygraphs
May 30, 2011
b9f66bd
added processing.js
lonnen May 30, 2011
016bb8b
Corrected URL for JavaScriptMVC.
jboonstra May 31, 2011
c87230d
Add KievII
Jun 1, 2011
f364266
Resolve merge conflict
Jun 1, 2011
54e0941
Add picoCSS
Jun 1, 2011
73c5d20
Resolve merge conflict.
Jun 1, 2011
95c4ede
Add History.js
Jun 1, 2011
f58ebc9
Merge pull request #33 from jboonstra/master
Jun 1, 2011
c26d975
Merge pull request #37 from Lonnen/master
Jun 1, 2011
b4ecbc7
Add Leaflet
Jun 1, 2011
e3c3d1a
Add Ext Core, Sencha Touch, and Ext JS 4
Jun 1, 2011
cb88a19
Add AmplifyJS
Jun 1, 2011
89a2549
Add angular
Jun 1, 2011
e5d19f3
Added JSMake description
gimmi Jun 5, 2011
384f455
Added missing comma
gimmi Jun 5, 2011
bac9935
Edited js/data.js via GitHub
Jun 11, 2011
3218beb
Edited js/data.js via GitHub
Jun 11, 2011
85a4cbf
Merge pull request #43 from hiester/master
Jun 11, 2011
a8cb281
Merge pull request #42 from gimmi/master
Jun 11, 2011
33bf25a
added Fidel
jgallen23 Jul 7, 2011
a1b3223
Merge pull request #47 from jgallen23/master
Jul 7, 2011
aac05c8
Added genData
bemson Aug 3, 2011
8d7d78f
Merge pull request #48 from bemson/master
Aug 12, 2011
1037904
Remove whitespace [Gun.io WhitespaceBot]
Oct 31, 2011
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
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
.strobe
.DS_Store
output/
2 changes: 1 addition & 1 deletion README
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ The right tool for the right job.
This is the source code for the website everyjs.com, an index of modern
JavaScript.

To add your own library, fork this repository. Then, open js/app.js, and add
To add your own library, fork this repository. Then, open js/data.js, and add
an entry to the EveryJS.libraries array. Don't worry about where you put it;
it'll be sorted alphabetically at runtime. Once you've pushed your changes,
submit a pull request.
Expand Down
9 changes: 5 additions & 4 deletions css/style.css
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ table { border-collapse: collapse; border-spacing: 0; }
hr { display: block; height: 1px; border: 0; border-top: 1px solid #ccc; margin: 1em 0; padding: 0; }
input, select { vertical-align: middle; }

body { font:13px/1.231 sans-serif; *font-size:small; }
body { font:13px/1.231 sans-serif; *font-size:small; }
select, input, textarea, button { font:99% sans-serif; }
pre, code, kbd, samp { font-family: monospace, sans-serif; }

Expand All @@ -55,7 +55,7 @@ sub { bottom: -0.25em; }

pre { white-space: pre; white-space: pre-wrap; word-wrap: break-word; padding: 15px; }
textarea { overflow: auto; }
.ie6 legend, .ie7 legend { margin-left: -7px; }
.ie6 legend, .ie7 legend { margin-left: -7px; }
input[type="radio"] { vertical-align: text-bottom; }
input[type="checkbox"] { vertical-align: bottom; }
.ie7 input[type="checkbox"] { vertical-align: baseline; }
Expand Down Expand Up @@ -127,11 +127,11 @@ a:hover { color: #036; }

@media print {
* { background: transparent !important; color: black !important; text-shadow: none !important; filter:none !important;
-ms-filter: none !important; }
-ms-filter: none !important; }
a, a:visited { color: #444 !important; text-decoration: underline; }
a[href]:after { content: " (" attr(href) ")"; }
abbr[title]:after { content: " (" attr(title) ")"; }
.ir a:after, a[href^="javascript:"]:after, a[href^="#"]:after { content: ""; }
.ir a:after, a[href^="javascript:"]:after, a[href^="#"]:after { content: ""; }
pre, blockquote { border: 1px solid #999; page-break-inside: avoid; }
thead { display: table-header-group; }
tr, img { page-break-inside: avoid; }
Expand All @@ -142,6 +142,7 @@ a:hover { color: #036; }

body {
min-width: 760px;
font-family: "Helvetica", sans-serif;
}

#wrapper {
Expand Down
35 changes: 35 additions & 0 deletions deploy.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
require 'fileutils'
include FileUtils

rm_rf "output"
mkdir_p "output"

puts pwd

Dir['*'].each do |item|
puts "Copying #{item}"
cp_r(item, "output") unless item == "output"
end

uglified = nil
IO.popen("uglifyjs output/js/app.js", "r") do |io|
uglified = io.read
end

rm "output/js/app.js"

File.open("output/js/app.js", "w") do |file|
file.write uglified
end

mkdir_p "output/.strobe"
File.open("output/.strobe/config", "w") do |file|
file.write <<eos
---
STROBE_APPLICATION_ID: 243
eos
end

cd "output" do
`strobe deploy --yes`
end
26 changes: 21 additions & 5 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,6 @@
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
<link rel="stylesheet" href="css/style.css?v=2">

<script type="text/javascript" src="http://use.typekit.com/mqp4vpt.js"></script>
<script type="text/javascript">try{Typekit.load();}catch(e){}</script>

<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-22688618-2']);
Expand All @@ -41,7 +38,25 @@ <h3>Libraries</h3>
<p>The list of JavaScript libraries is generated dynamically. Please enable JavaScript in your browser.</p>
</noscript>
<script type="text/html">
{{#collection contentBinding="EveryJS.listController" tagName="table"}}
{{#view EveryJS.SortByView}}
Sort by
<select>
<option value="name">Name</option>
<option value="size">Size</option>
</select>
{{/view}}
{{#view EveryJS.FilterByView}}
Filter by Type
<select>
<option value="all">All</option>
<option value="dom">DOM manipulation</option>
<option value="animation">Animation</option>
<option value="mvc">MVC</option>
<option value="mobile-only">Mobile-only</option>
</select>
{{/view}}

{{#collection EveryJS.ListView tagName="table"}}
<td>
{{#with content}}
<a {{bindAttr href="website"}}>{{name}}</a>
Expand Down Expand Up @@ -100,7 +115,8 @@ <h3>House Rules</h3>

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
<script>!window.jQuery && document.write(unescape('%3Cscript src="js/libs/jquery-1.6.1.min.js"%3E%3C/script%3E'))</script>
<script src="js/libs/sproutcore-2.0.a.2.min.js"></script>
<script src="js/libs/sproutcore-2.0.a.3.min.js"></script>
<script src="js/data.js"></script>
<script src="js/app.js"></script>
</body>
</html>
217 changes: 83 additions & 134 deletions js/app.js
100755 → 100644
Original file line number Diff line number Diff line change
@@ -1,142 +1,73 @@
var EveryJS = SC.Application.create();

EveryJS.libraries = [
{
name: "jQuery",
website: "http://www.jquery.com",
description: "jQuery is a fast and concise JavaScript library that simplifies HTML document traversing, event handling, animating, and Ajax interactions for rapid web development.",
useIf: [
"You need DOM manipulation or event handling across all browsers."
],
dependencies: null,
license: "MIT",
tags: ['dom'],
size: 31
},

{
name: "Ender",
website: "http://ender.no.de/",
description: "Ender is an open, powerful, micro-to-macro API for composing your own custom JavaScript library; it wraps up application agnostic, independent modules into a slick, intuitive, and familiar interface so you don't have to.",
useIf: [
"You want to easily construct your own bespoke framework."
],
size: "7.5K with default configuration. Will vary"
},

{
name: "SproutCore",
website: "http://www.sproutcore.com",
description: "SproutCore provides both an MVC architecture and bindings, with views that automatically update any time properties change.",
useIf: [
"You want to avoid bugs related to keeping the DOM in sync with your data model.",
"You want stateful MVC, like you'd find in Cocoa."
],
dependencies: ["jQuery"],
size: 29
},

{
name: "Backbone.js",
website: "http://documentcloud.github.com/backbone/",
description: "Backbone supplies structure to JavaScript-heavy applications by providing models with key-value binding and custom events, collections with a rich API of enumerable functions, views with declarative event handling, and connects it all to your existing application over a RESTful JSON interface.",
dependencies: ["Underscore", "jQuery or Zepto (optional but recommended)"],
size: 3.9
},

{
name: "Dojo Toolkit",
website: "http://documentcloud.github.com/backbone/",
description: "Dojo Toolkit is an open source modular JavaScript toolkit designed to ease the rapid development of cross-platform, JavaScript/Ajax-based applications and web sites.",
size: "3.9K - 5MB; applications load modules dynamically"
},

{
name: "MooTools",
website: "http://mootools.net/",
description: "MooTools is a compact, modular, Object-Oriented JavaScript framework designed for the intermediate to advanced JavaScript developer. It provides cross-platform helpers for manipulating the DOM, handling events, animating elements, and extends JavaScript built-in classes with additional functionality.",
useIf: [ "You need DOM manipulation or event handling across all browsers." ],
size: 25
},

{
name: "Morpheus",
website: "https://github.com/ded/morpheus",
description: "Morpheus lets you \"tween anything\" in parallel on multiple elements, from integers to colors, with easing transitions, in a single high-performant loop utilizing the CPU-friendly requestAnimationFrame standard.",
useIf: [
"You want to animate multiple elements and have them stay in sync."
],
size: 1.3
},

{
name: "xui",
website: "http://xuijs.com/",
description: "A super micro tiny DOM library for authoring HTML5 mobile web applications.",
browserSupport: "Different builds for WebKit, BlackBerry, and IE.",
useIf: [
"You are able to deliver different libraries depending on the platform, such as in PhoneGap builds."
],
size: "8K or lower, depending on build"
},

{
name: "Zepto",
website: "http://zeptojs.com/",
description: "Zepto.js is a minimalist JavaScript framework for mobile WebKit browsers, with a jQuery-compatible syntax.",
browserSupport: "Supports mobile WebKit browsers only.",
useIf: [
"You don't have to support desktop browsers and file size is important."
],
size: 4.8
},

{
name: "Handlebars",
website: "http://handlebars.strobeapp.com/",
description: "Mustache-compatible semantic templating engine.",
size: 8
},

{
name: "Underscore",
website: "http://documentcloud.github.com/underscore/",
description: "Underscore is a utility-belt library for JavaScript that provides a lot of the functional programming support that you would expect in Prototype.js (or Ruby), but without extending any of the built-in JavaScript objects.",
useIf: [
"You need features of ECMAScript 5 in non-ES5 browsers."
],
size: 3
},

{
name: "Uki",
website: "http://www.ukijs.org",
description: "Uki is a fast and simple JavaScript user interface toolkit for desktop-like web applications. It comes with a rich view-component library ranging from Slider to List and SplitPane.",
useIf: [
"You need a simple UI kit for creating desktop-like interfaces."
],
size: 34
},
{
name: "YUI 3",
website: "http://developer.yahoo.com/yui/3/",
description: "Yahoo!'s next-generation JavaScript and CSS library. It powers the new Yahoo! homepage, Yahoo! Mail, and many other Yahoo! sites.",
size: "15K to start; modules are loaded dynamically"
},
{
name: "Closure Tools",
website: "http://code.google.com/closure/",
description: "Closure Tools is a set of open-source JavaScript tools behind some of Google's big web apps like Gmail, Google Maps, and Google Docs.",
size: "modules can be loaded dynamically"
}
];
EveryJS.loaded = function() {
EveryJS.listController.set('content', EveryJS_libraries);
};

EveryJS.listController = SC.ArrayProxy.create({
content: null,

sortBy: 'name',
filterBy: null,

arrangedObjects: function(key, value) {
var content = this.get('content'),
sortBy = this.get('sortBy'),
filterBy = this.get('filterBy'),
arrangedObjects, tags;

if (value !== undefined) { return value; }
if (sortBy === this._lastSort && filterBy === this._lastFilter) {
return this._lastVal;
}
if (!content) { return null; }

// Eliminate any items that don't match our filter.
if (filterBy && filterBy !== 'all') {
arrangedObjects = [];
content.forEach(function(item) {
tags = SC.get(item, 'tags');
if (tags && tags.indexOf(filterBy) > -1) {
arrangedObjects.push(item);
}
});
} else {
arrangedObjects = SC.copy(content);
}

EveryJS.libraries.sort(function(a,b) {
return SC.compare(a.name.toLowerCase(), b.name.toLowerCase());
arrangedObjects.sort(function(a, b) {
if (sortBy === 'size') {
a = a.sortSize || a[sortBy];
b = b.sortSize || b[sortBy];
} else {
a = a[sortBy];
b = b[sortBy];
}

if (sortBy === 'size') {
a = parseFloat(a);
b = parseFloat(b);
}

if (typeof a === 'string') {
a = a.toLowerCase();
}
if (typeof b === 'string') {
b = b.toLowerCase();
}

return SC.compare(a, b);
});

this._lastVal = arrangedObjects;
this._lastFilter = filterBy;
this._lastSort = sortBy;
return arrangedObjects;
}.property('sortBy', 'filterBy')
});

EveryJS.listController = SC.ArrayProxy.create({
content: EveryJS.libraries
EveryJS.ListView = SC.CollectionView.extend({
contentBinding: 'EveryJS.listController.arrangedObjects'
});

EveryJS.SizeView = SC.View.extend({
Expand All @@ -152,6 +83,20 @@ EveryJS.SizeView = SC.View.extend({
}.property('size')
});

EveryJS.FilterByView = SC.View.extend({
change: function(evt) {
var elem = this.$('select');
EveryJS.listController.set('filterBy', elem.val());
}
});

EveryJS.SortByView = SC.View.extend({
change: function(evt) {
var elem = this.$('select');
EveryJS.listController.set('sortBy', elem.val());
}
});

Handlebars.registerHelper('list', function(key) {
var buf = '<ul>', list;
list = SC.get(this, key);
Expand All @@ -160,3 +105,7 @@ Handlebars.registerHelper('list', function(key) {
});
return new Handlebars.SafeString(buf + '</ul>');
});

if (EveryJS_libraries) {
EveryJS.listController.set('content', EveryJS_libraries);
}
Loading