diff --git a/app.css b/app.css index c37eab282742529ce591e61cda96c9401a08b514..2064455bf919c87ed36736ced12b196988aa67e8 100644 --- a/app.css +++ b/app.css @@ -110,16 +110,30 @@ h1, h2, h3, h4, h5, h6 { color: #dc0067; } -.firmwareTableLink { +.firmwareTableLink, .notRecommendedLink, .InfoLink { + clear: right; float:right; color: #337ab7; cursor: pointer; } -.firmwareTableLink:hover { +.notRecommendedLink { + display: none; +} + +.firmwareTableLink:hover, .notRecommendedLink:hover { text-decoration: underline; } +.notRecommendedLabel { + color: #337ab7; +} + +#wizard #model-pane .notRecommendedCheckbox { + width:auto; + display: inline; +} + #wizard .pane-wrapper { box-shadow: 0 0.15em 0.5em #ccc; margin: 1em 0 3em 0; @@ -180,7 +194,8 @@ h1, h2, h3, h4, h5, h6 { box-shadow: 0 0 0.5em #005ea0 inset; } -#wizard #branch-pane .warning-experimental { +#wizard #branch-pane .warning-experimental, +#wizard #model-pane .warning-notrecommended { display: none; margin: 1em 0; padding: 1em; @@ -188,7 +203,8 @@ h1, h2, h3, h4, h5, h6 { border: .5em solid #009ee0; } -#wizard #branch-pane.show-experimental-warning .warning-experimental { +#wizard #branch-pane.show-experimental-warning .warning-experimental, +#wizard #model-pane.show-notrecommended-warning .warning-notrecommended { display: block; } diff --git a/app.js b/app.js index af628b61321e9ac2056844a4ecb5d4028a2b8124..b779b1fd9821c52dc6107373f7d247b2101aa5d2 100644 --- a/app.js +++ b/app.js @@ -104,7 +104,8 @@ var firmwarewizard = function() { var wizard = parseWizardObject(); app.currentVersions = {}; - var images = {}; + var availableImages = {}; + var images = availableImages; var vendormodels_reverse; var typeNames = { @@ -145,6 +146,14 @@ var firmwarewizard = function() { if ("enabled_device_categories" in config) { enabled_device_categories = config.enabled_device_categories; } + if (config.recommended_toggle) { + enabled_device_categories = ['recommended']; + show_inline('.notRecommendedLink'); + + if (config.recommended_info_link) { + $('#notrecommendedinfo').innerHTML = '<p><a href="' + config.recommended_info_link + '" target="_new">Mehr Informationen</a>'; + } + } function buildVendorModelsReverse() { var vendormodels_reverse = {}; @@ -188,6 +197,21 @@ var firmwarewizard = function() { return wizard; } + function setFilteredImages() { + images = {}; + for (var vendor in availableImages) { + images[vendor] = {}; + for (var model in availableImages[vendor]) { + for (var device in availableImages[vendor][model]) { + console.log(availableImages[vendor][model][device].category) + if (enabled_device_categories.indexOf(availableImages[vendor][model][device].category) > -1) { + addArray(images[vendor], model, availableImages[vendor][model][device]); + } + } + } + } + } + window.onpopstate = function(event) { if (event.state === null) return; wizard = parseWizardObject(event.state); @@ -231,6 +255,10 @@ var firmwarewizard = function() { scrollDown(); }); + $('#wizard .notRecommendedLink').addEventListener('click', function(e) { + toggleClass($('#model-pane'), 'show-notrecommended-warning'); + }); + $('#wizard .firmwareTableLink').addEventListener('click', function(e) { firmwarewizard.showFirmwareTable(); }); @@ -239,6 +267,17 @@ var firmwarewizard = function() { firmwarewizard.hideFirmwareTable(); }); + $('#notrecommendedselect').addEventListener('change', function(e) { + if (this.checked) { + enabled_device_categories = config.enabled_device_categories; + } else if ("enabled_device_categories" in config) { + enabled_device_categories = ['recommended']; + } + setFilteredImages(); + updateHTML(wizard); + updateFirmwareTable(); + }); + vendormodels_reverse = buildVendorModelsReverse(); loadDirectories(function() { @@ -251,7 +290,7 @@ var firmwarewizard = function() { var model = fullModelList[m][MODEL_MODEL]; previews.appendChild(createPicturePreview(vendor, model, searchstring)); } - + setFilteredImages(); updateHTML(wizard); show_block('.manualSelection'); updateFirmwareTable(); @@ -370,11 +409,6 @@ var firmwarewizard = function() { return; } - if (enabled_device_categories.indexOf(device.category) == -1) { - // the category is not in the list of enabled categories - return; - } - var strippedFilename = filename; strippedFilename = strippedFilename.replace(config.community_prefix, '-'); @@ -450,18 +484,19 @@ var firmwarewizard = function() { // collect branch versions app.currentVersions[branch] = version; - if (!(device.vendor in images)) { - images[device.vendor] = {}; + if (!(device.vendor in availableImages)) { + availableImages[device.vendor] = {}; } - addArray(images[device.vendor], device.model, { + addArray(availableImages[device.vendor], device.model, { 'revision': revision, 'branch': branch, 'type': type, 'version': version, 'location': location, 'size': size, - 'preview': preview+".jpg" + 'preview': preview+".jpg", + 'category': device.category }); } @@ -674,7 +709,7 @@ var firmwarewizard = function() { var model = modelList[f][MODEL_MODEL]; for(p = 0; p < previews.length; p++) { - if (previews[p].getAttribute('data-searchstring') == searchstring) { + if (previews[p].getAttribute('data-model') == model) { previews[p].style.display = 'inline-block'; if (modelList.length == 1) { setClass(previews[p], 'selected', true); diff --git a/config_template.js b/config_template.js index 6aae107644ace28daac45f0fd83ca6fe2eb074ad..b4e351beab6e18eb06acd9ef5dca355a72df74f7 100644 --- a/config_template.js +++ b/config_template.js @@ -20,6 +20,12 @@ var config = { vendormodels: vendormodels, // set enabled categories of devices (see devices.js) enabled_device_categories: ["recommended"], + // Display a checkbox that allows to display not recommended devices. + // This only make sense if enabled_device_categories also contains not + // recommended devices. + recommended_toggle: false, + // Optional link to an info page about no longer recommended devices + recommended_info_link: null, // community prefix of the firmware images community_prefix: 'gluon-ffda-', // firmware version regex diff --git a/index.html b/index.html index 674d253c40242d8b05fad7cd7e399b860023d588..a622e78f4b72f979e99e19d1076846a426b5631d 100644 --- a/index.html +++ b/index.html @@ -18,8 +18,24 @@ <img src="./router.png" > <div class="pane-wrapper"> <div id="model-pane" class="pane"> + <span class="notRecommendedLink">Veraltete Geräte anzeigen</span> <span class="firmwareTableLink">Tabelle anzeigen</span> <h1>Schritt 1: Wähle Dein Routermodell</h1> + <div class="warning-notrecommended"> + <p> + <b>Vorsicht!</b> Nicht ohne Grund siehst Du in der Voreinstellung + nur die von uns empfohlenen Geräte, denn nur mit diesen ist ein reibungsloser + Freifunk-Betrieb gewährleistet. + </p> + <p> + Du solltest dich aber im vorraus Informieren, bevor du + veraltete Geräte verwendest, um selbst abzuwägen, ob Du wirklich alle + Nachteile in Kauf nehmen willst. + </p> + <div id="notrecommendedinfo"></div> + <input type="checkbox" id="notrecommendedselect" class="notRecommendedCheckbox" value="notRecommended" /> + <label class="notRecommendedLabel" for="notrecommendedselect">Veraltete Geräte trotzdem anzeigen</label> + </div> <p>Erst mit der Freifunk-Firmware wird dein Router zu einem Teil des Freifunk-Netzes. Sie ist fertig vorkonfiguriert, um Kontakt mit benachbarten Freifunk-Knoten aufzunehmen, ein offenes und ohne