├── img ├── ads │ ├── .gitkeep │ ├── clean-up.png │ ├── no-sleeping.png │ ├── gs-hacknight.png │ ├── your-ad-here.png │ └── reflections-projections.png ├── sponsors │ ├── hrt.png │ ├── 3red.png │ ├── uber.png │ ├── allston.png │ ├── citadel.png │ ├── goldman.png │ ├── optiver.png │ ├── palantir.png │ └── sunrise.png └── acm-logo-flat.svg ├── .eslintignore ├── .travis.yml ├── sass ├── panels │ ├── sujay.scss │ ├── sponsors.scss │ ├── ads.scss │ ├── clock.scss │ ├── memes.scss │ ├── weather.scss │ ├── mtd.scss │ ├── concert.scss │ ├── events.scss │ └── meeting-times.scss ├── loading.scss ├── base.scss ├── header.scss └── main.scss ├── src ├── secrets.js.sample ├── data │ ├── ads.json │ └── sponsors.json ├── panels │ ├── sujay.js │ ├── ads.js │ ├── clock.js │ ├── sponsors.js │ ├── weather.js │ ├── memes.js │ ├── mtd.js │ ├── concert.js │ ├── events.js │ └── meeting-times.js ├── layout.json ├── panels.js ├── header.js ├── utils │ └── time.js ├── main.js └── third_party │ └── skycons.js ├── index.html ├── gulpfile.js ├── .eslintrc.js ├── .gitignore ├── package.json ├── README.md ├── main.js └── yarn.lock /img/ads/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | skycons.js 2 | bundle.js 3 | -------------------------------------------------------------------------------- /img/ads/clean-up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acm-uiuc/display/HEAD/img/ads/clean-up.png -------------------------------------------------------------------------------- /img/sponsors/hrt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acm-uiuc/display/HEAD/img/sponsors/hrt.png -------------------------------------------------------------------------------- /img/ads/no-sleeping.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acm-uiuc/display/HEAD/img/ads/no-sleeping.png -------------------------------------------------------------------------------- /img/sponsors/3red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acm-uiuc/display/HEAD/img/sponsors/3red.png -------------------------------------------------------------------------------- /img/sponsors/uber.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acm-uiuc/display/HEAD/img/sponsors/uber.png -------------------------------------------------------------------------------- /img/ads/gs-hacknight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acm-uiuc/display/HEAD/img/ads/gs-hacknight.png -------------------------------------------------------------------------------- /img/ads/your-ad-here.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acm-uiuc/display/HEAD/img/ads/your-ad-here.png -------------------------------------------------------------------------------- /img/sponsors/allston.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acm-uiuc/display/HEAD/img/sponsors/allston.png -------------------------------------------------------------------------------- /img/sponsors/citadel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acm-uiuc/display/HEAD/img/sponsors/citadel.png -------------------------------------------------------------------------------- /img/sponsors/goldman.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acm-uiuc/display/HEAD/img/sponsors/goldman.png -------------------------------------------------------------------------------- /img/sponsors/optiver.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acm-uiuc/display/HEAD/img/sponsors/optiver.png -------------------------------------------------------------------------------- /img/sponsors/palantir.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acm-uiuc/display/HEAD/img/sponsors/palantir.png -------------------------------------------------------------------------------- /img/sponsors/sunrise.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acm-uiuc/display/HEAD/img/sponsors/sunrise.png -------------------------------------------------------------------------------- /img/ads/reflections-projections.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acm-uiuc/display/HEAD/img/ads/reflections-projections.png -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - "node" 4 | install: 5 | - npm i eslint 6 | script: 7 | - npm run lint 8 | -------------------------------------------------------------------------------- /sass/panels/sujay.scss: -------------------------------------------------------------------------------- 1 | .sujay-panel { 2 | width: 960px; 3 | height: 540px; 4 | } 5 | 6 | .sujay-frame { 7 | width: 100%; 8 | height: 100%; 9 | border: none; 10 | } 11 | -------------------------------------------------------------------------------- /sass/panels/sponsors.scss: -------------------------------------------------------------------------------- 1 | .sponsor-body { 2 | display: flex; 3 | justify-content: center; 4 | align-items: center; 5 | } 6 | 7 | .sponsor-logo { 8 | max-width: 550px; 9 | max-height: 175px; 10 | } 11 | -------------------------------------------------------------------------------- /sass/panels/ads.scss: -------------------------------------------------------------------------------- 1 | .ads-panel { 2 | img { 3 | max-width:100%; 4 | max-height:100%; 5 | width: 100%; 6 | height: 100%; 7 | border: 1px $border-color solid; 8 | } 9 | margin: 0 auto; 10 | height: inherit; 11 | } 12 | -------------------------------------------------------------------------------- /sass/panels/clock.scss: -------------------------------------------------------------------------------- 1 | .clock-panel { 2 | text-align: right; 3 | 4 | .clock-time { 5 | font-size: 3em; 6 | font-weight: bold; 7 | } 8 | 9 | .clock-date { 10 | font-size: 1.2em; 11 | margin-right: 1px; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /sass/loading.scss: -------------------------------------------------------------------------------- 1 | .loading-container { 2 | position: absolute; 3 | top: 50%; 4 | left: 50%; 5 | margin-right: -50%; 6 | transform: translate(-50%, -50%); 7 | text-align: center; 8 | font-size: 1.25em; 9 | 10 | img { 11 | width: 300px; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /sass/panels/memes.scss: -------------------------------------------------------------------------------- 1 | .memes-body { 2 | img { 3 | max-width: 100%; 4 | max-height:100%; 5 | height: auto; 6 | } 7 | height: 233px; 8 | margin: 0 auto; 9 | } 10 | 11 | .memes-error-body { 12 | display: flex; 13 | justify-content: center; 14 | align-items: center; 15 | font-size: 5em; 16 | color: $font-color-alt; 17 | } 18 | -------------------------------------------------------------------------------- /src/secrets.js.sample: -------------------------------------------------------------------------------- 1 | // CUMTD API key 2 | // https://developer.cumtd.com/ 3 | exports.mtdApiKey = ''; 4 | 5 | // API key for Forecast 6 | // https://developer.forecast.io/ 7 | exports.forecastAPIKey = ''; 8 | 9 | // Groot Service URL 10 | // https://github.com/acm-uiuc/groot 11 | exports.grootServicesURL = ''; 12 | 13 | // Groot Access Token 14 | // https://github.com/acm-uiuc/groot 15 | exports.grootAccessToken = ''; 16 | -------------------------------------------------------------------------------- /sass/panels/weather.scss: -------------------------------------------------------------------------------- 1 | .weather-panel { 2 | margin-right: 50px; 3 | text-align: right; 4 | 5 | .weather-icon { 6 | width: 50px; 7 | height: 50px; 8 | } 9 | 10 | .weather-temp { 11 | font-size: 3em; 12 | font-weight: bold; 13 | vertical-align: bottom; 14 | margin-left: 10px; 15 | } 16 | 17 | .weather-summary { 18 | font-size: 1.2em; 19 | margin-right: 3px; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /sass/base.scss: -------------------------------------------------------------------------------- 1 | @import url('https://fonts.googleapis.com/css?family=Open+Sans:400,700|Roboto+Mono:400,700'); 2 | 3 | $font-color: #333333; 4 | $font-color-alt: #999; 5 | $font-color-neg: white; 6 | $font-color-neg-back: #333333; 7 | $border-color: #464646; 8 | $button-active-color: #999; 9 | $button-inactive-color: #ddd; 10 | 11 | @mixin monospace-font() { 12 | font-family: 'Roboto Mono', monospace; 13 | } 14 | 15 | @mixin serif-font() { 16 | font-family: 'Open Sans', sans-serif; 17 | } 18 | -------------------------------------------------------------------------------- /sass/panels/mtd.scss: -------------------------------------------------------------------------------- 1 | .mtd-panel { 2 | width: 356px; // Same as events panel 3 | } 4 | 5 | .bus-item { 6 | font-size: 1.5em; 7 | line-height: 1.6em; 8 | 9 | .bus-name { 10 | display: inline; 11 | } 12 | 13 | .bus-mins { 14 | display: inline; 15 | float: right; 16 | } 17 | } 18 | 19 | .mtd-body-no-departures { 20 | display: flex; 21 | justify-content: center; 22 | align-items: center; 23 | font-size: 1.5em; 24 | color: $font-color-alt; 25 | } 26 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | ACM Display 6 | 7 | 8 | 9 |
10 |
11 | 12 |

Loading display...

13 |
14 |
15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /src/data/ads.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "owner": "Tyler Kim", 4 | "imgPath": "img/ads/no-sleeping.png" 5 | }, 6 | { 7 | "owner": "Tyler Kim", 8 | "imgPath": "img/ads/clean-up.png" 9 | }, 10 | { 11 | "owner": "Top4", 12 | "imgPath": "img/ads/your-ad-here.png" 13 | }, 14 | { 15 | "owner": "Justin Yang", 16 | "imgPath": "img/ads/gs-hacknight.png" 17 | }, 18 | { 19 | "owner": "Justin Yang", 20 | "imgPath": "img/ads/reflections-projections.png" 21 | } 22 | ] 23 | -------------------------------------------------------------------------------- /src/panels/sujay.js: -------------------------------------------------------------------------------- 1 | var React = require('react'); 2 | 3 | /** 4 | * Sujay.xyz panel. 5 | */ 6 | var SujayPanel = React.createClass({ 7 | refresh: function() { 8 | this.refs.sujay.contentWindow.location.reload(); 9 | }, 10 | 11 | componentDidMount: function() { 12 | setInterval(this.refresh, 10000); 13 | }, 14 | 15 | render: function() { 16 | return
17 |