Permalink
Browse files

Merge pull request #561 from Golmote/prism-check-all

Add a "Select All" languages checkbox (fix #513)
  • Loading branch information...
2 parents e42a228 + b31e2dd commit 9a9020ba93a15d68e6a716f486cac974f0e13e49 @Golmote Golmote committed Sep 3, 2015
Showing with 56 additions and 12 deletions.
  1. +2 −1 components.js
  2. +2 −1 download.html
  3. +52 −10 download.js
View
@@ -35,7 +35,8 @@ var components = {
"meta": {
"path": "components/prism-{id}",
"noCSS": true,
- "examplesPath": "examples/prism-{id}"
+ "examplesPath": "examples/prism-{id}",
+ "addCheckAll": true
},
"markup": {
"title": "Markup",
View
@@ -71,7 +71,8 @@
column-span: all;
}
- section.options#category-languages label[data-id="javascript"] {
+ section.options#category-languages label[data-id="javascript"],
+ section.options label[data-id^="check-all-"] {
border-bottom: 1px solid #aaa;
padding-bottom: 1em;
margin-bottom: 1em;
View
@@ -64,6 +64,37 @@ for (var category in components) {
},
inside: '#components'
});
+
+ if (all.meta.addCheckAll) {
+ $u.element.create('label', {
+ attributes: {
+ 'data-id': 'check-all-' + category
+ },
+ contents: [
+ {
+ tag: 'input',
+ properties: {
+ type: 'checkbox',
+ name: 'check-all-' + category,
+ value: '',
+ checked: false,
+ onclick: (function(category, all){
+ return function () {
+ var checkAll = this;
+ $$('input[name="download-' + category + '"]').forEach(function(input) {
+ all[input.value].enabled = input.checked = checkAll.checked;
+ });
+
+ update(category);
+ };
+ })(category, all)
+ }
+ },
+ 'Select/unselect all'
+ ],
+ inside: all.meta.section
+ });
+ }
for (var id in all) {
if(id === 'meta') {
@@ -266,10 +297,11 @@ function update(updatedCategory, updatedId){
for (var category in components) {
var all = components[category];
-
+ var allChecked = true;
+
for (var id in all) {
var info = all[id];
-
+
if (info.enabled || id == updatedId) {
var distro = info.files[minified? 'minified' : 'dev'];
@@ -295,18 +327,28 @@ function update(updatedCategory, updatedId){
}
});
}
+ if (id !== 'meta' && !info.enabled) {
+ allChecked = false;
+ }
+ }
+
+ if (all.meta.addCheckAll) {
+ $('input[name="check-all-' + category + '"]').checked = allChecked;
}
}
total.all = total.js + total.css;
- updated.all = updated.js + updated.css;
-
- $u.element.prop($('label[data-id="' + updatedId + '"] .filesize'), {
- textContent: prettySize(updated.all),
- title: (updated.js? Math.round(100 * updated.js / updated.all) + '% JavaScript' : '') +
- (updated.js && updated.css? ' + ' : '') +
- (updated.css? Math.round(100 * updated.css / updated.all) + '% CSS' : '')
- });
+
+ if (updatedId) {
+ updated.all = updated.js + updated.css;
+
+ $u.element.prop($('label[data-id="' + updatedId + '"] .filesize'), {
+ textContent: prettySize(updated.all),
+ title: (updated.js ? Math.round(100 * updated.js / updated.all) + '% JavaScript' : '') +
+ (updated.js && updated.css ? ' + ' : '') +
+ (updated.css ? Math.round(100 * updated.css / updated.all) + '% CSS' : '')
+ });
+ }
$('#filesize').textContent = prettySize(total.all);

0 comments on commit 9a9020b

Please sign in to comment.