LOADING...

Preview

Pen ID
Unlock Campus Themeforest adv

 

Code
	
	

twitch.tv

CSS
/*
* Skeleton V2.0.4
* Copyright 2014, Dave Gamache
* www.getskeleton.com
* Free to use under the MIT license.
* https://www.opensource.org/licenses/mit-license.php
* 12/9/2014
* Sass Version by Seth Coelen https://github.com/whatsnewsaes
*/
/* Base files. */
/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
html {
  font-family: sans-serif;
  -ms-text-size-adjust: 100%;
  -webkit-text-size-adjust: 100%; }

body {
  margin: 0; }

article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
main,
menu,
nav,
section,
summary {
  display: block; }

audio,
canvas,
progress,
video {
  display: inline-block;
  vertical-align: baseline; }

audio:not([controls]) {
  display: none;
  height: 0; }

[hidden],
template {
  display: none; }

a {
  background-color: transparent; }

a:active {
  outline: 0; }
a:hover {
  outline: 0; }

abbr[title] {
  border-bottom: 1px dotted; }

b,
strong {
  font-weight: bold; }

dfn {
  font-style: italic; }

h1 {
  font-size: 2em;
  margin: 0.67em 0; }

mark {
  background: #ff0;
  color: #000; }

small {
  font-size: 80%; }

sub,
sup {
  font-size: 75%;
  line-height: 0;
  position: relative;
  vertical-align: baseline; }

sup {
  top: -0.5em; }

sub {
  bottom: -0.25em; }

img {
  border: 0; }

svg:not(:root) {
  overflow: hidden; }

figure {
  margin: 1em 40px; }

hr {
  box-sizing: content-box;
  height: 0; }

pre {
  overflow: auto; }

code,
kbd,
pre,
samp {
  font-family: monospace, monospace;
  font-size: 1em; }

button,
input,
optgroup,
select,
textarea {
  color: inherit;
  font: inherit;
  margin: 0; }

button {
  overflow: visible; }

button,
select {
  text-transform: none; }

button,
html input[type="button"],
input[type="reset"],
input[type="submit"] {
  -webkit-appearance: button;
  cursor: pointer; }

button[disabled],
html input[disabled] {
  cursor: default; }

button::-moz-focus-inner,
input::-moz-focus-inner {
  border: 0;
  padding: 0; }

input {
  line-height: normal; }

input[type="checkbox"],
input[type="radio"] {
  box-sizing: border-box;
  padding: 0; }

input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
  height: auto; }

input[type="search"] {
  -webkit-appearance: textfield;
  box-sizing: content-box; }

input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-decoration {
  -webkit-appearance: none; }

fieldset {
  border: 1px solid #c0c0c0;
  margin: 0 2px;
  padding: 0.35em 0.625em 0.75em; }

legend {
  border: 0;
  padding: 0; }

textarea {
  overflow: auto; }

optgroup {
  font-weight: bold; }

table {
  border-collapse: collapse;
  border-spacing: 0; }

td,
th {
  padding: 0; }

/*
* Skeleton V2.0.4
* Copyright 2014, Dave Gamache
* www.getskeleton.com
* Free to use under the MIT license.
* https://www.opensource.org/licenses/mit-license.php
* 12/9/2014
* Sass Version by Seth Coelen https://github.com/whatsnewsaes
*/
html {
  font-size: 62.5%; }

body {
  font-size: 1.5em;
  line-height: 1.6;
  font-weight: 400;
  font-family: "Raleway", "HelveticaNeue", "Helvetica Neue", Helvetica, Arial, sans-serif;
  color: #222; }

a {
  color: #1eaedb; }
  a:hover {
    color: #1b9cc5; }

hr {
  margin-top: 3rem;
  margin-bottom: 3.5rem;
  border-width: 0;
  border-top: 1px solid #e1e1e1; }

.u-full-width {
  width: 100%;
  box-sizing: border-box; }

.u-max-full-width {
  max-width: 100%;
  box-sizing: border-box; }

.u-pull-right {
  float: right; }

.u-pull-left {
  float: left; }

h1, h2, h3, h4, h5, h6 {
  margin-top: 0;
  margin-bottom: 2rem;
  font-weight: 300; }

h1 {
  font-size: 4.0rem;
  line-height: 1.2;
  letter-spacing: -.1rem; }

h2 {
  font-size: 3.6rem;
  line-height: 1.25;
  letter-spacing: -.1rem; }

h3 {
  font-size: 3.0rem;
  line-height: 1.3;
  letter-spacing: -.1rem; }

h4 {
  font-size: 2.4rem;
  line-height: 1.35;
  letter-spacing: -.08rem; }

h5 {
  font-size: 1.8rem;
  line-height: 1.5;
  letter-spacing: -.05rem; }

h6 {
  font-size: 1.5rem;
  line-height: 1.6;
  letter-spacing: 0; }

@media (min-width: 550px) {
  h1 {
    font-size: 5.0rem; }

  h2 {
    font-size: 4.2rem; }

  h3 {
    font-size: 3.6rem; }

  h4 {
    font-size: 3.0rem; }

  h5 {
    font-size: 2.4rem; }

  h6 {
    font-size: 1.5rem; } }
p {
  margin-top: 0; }

/* Modules */
/*
* Skeleton V2.0.4
* Copyright 2014, Dave Gamache
* www.getskeleton.com
* Free to use under the MIT license.
* https://www.opensource.org/licenses/mit-license.php
* 12/9/2014
* Sass Version by Seth Coelen https://github.com/whatsnewsaes
*/
.container {
  position: relative;
  width: 100%;
  max-width: 660px;
  margin: 0 auto;
  padding: 0 20px;
  box-sizing: border-box; }

.column,
.columns {
  width: 100%;
  float: left;
  box-sizing: border-box; }

@media (min-width: 400px) {
  .container {
    width: 85%;
    padding: 0; } }
@media (min-width: 550px) {
  .container {
    width: 80%; }

  .column,
  .columns {
    margin-left: 4%; }

  .column:first-child,
  .columns:first-child {
    margin-left: 0; }

  .one.column,
  .one.columns {
    width: 4.66667%; }

  .two.columns {
    width: 13.33333%; }

  .three.columns {
    width: 22%; }

  .four.columns {
    width: 30.66667%; }

  .five.columns {
    width: 39.33333%; }

  .six.columns {
    width: 48%; }

  .seven.columns {
    width: 56.66667%; }

  .eight.columns {
    width: 65.33333%; }

  .nine.columns {
    width: 74%; }

  .ten.columns {
    width: 82.66667%; }

  .eleven.columns {
    width: 91.33333%; }

  .twelve.columns {
    width: 100%;
    margin-left: 0; }

  .one-third.column {
    width: 30.66667%; }

  .two-thirds.column {
    width: 65.33333%; }

  .one-half.column {
    width: 48%; }

  .offset-by-one.column,
  .offset-by-one.columns {
    margin-left: 8.66667%; }

  .offset-by-two.column,
  .offset-by-two.columns {
    margin-left: 17.33333%; }

  .offset-by-three.column,
  .offset-by-three.columns {
    margin-left: 26%; }

  .offset-by-four.column,
  .offset-by-four.columns {
    margin-left: 34.66667%; }

  .offset-by-five.column,
  .offset-by-five.columns {
    margin-left: 43.33333%; }

  .offset-by-six.column,
  .offset-by-six.columns {
    margin-left: 52%; }

  .offset-by-seven.column,
  .offset-by-seven.columns {
    margin-left: 60.66667%; }

  .offset-by-eight.column,
  .offset-by-eight.columns {
    margin-left: 69.33333%; }

  .offset-by-nine.column,
  .offset-by-nine.columns {
    margin-left: 78%; }

  .offset-by-ten.column,
  .offset-by-ten.columns {
    margin-left: 86.66667%; }

  .offset-by-eleven.column,
  .offset-by-eleven.columns {
    margin-left: 95.33333%; }

  .offset-by-one-third.column,
  .offset-by-one-third.columns {
    margin-left: 34.66667%; }

  .offset-by-two-thirds.column,
  .offset-by-two-thirds.columns {
    margin-left: 69.33333%; }

  .offset-by-one-half.column,
  .offset-by-one-half.column {
    margin-left: 52%; } }
.container:after,
.row:after,
.u-cf {
  content: "";
  display: table;
  clear: both; }

.button,
button {
  display: inline-block;
  height: 38px;
  padding: 0 30px;
  color: #555555;
  text-align: center;
  font-size: 11px;
  font-weight: 600;
  line-height: 38px;
  letter-spacing: .1rem;
  text-transform: uppercase;
  text-decoration: none;
  white-space: nowrap;
  background-color: transparent;
  border-radius: 4px;
  border: 1px solid #bbb;
  cursor: pointer;
  box-sizing: border-box; }

input[type="submit"], input[type="reset"], input[type="button"] {
  display: inline-block;
  height: 38px;
  padding: 0 30px;
  color: #555555;
  text-align: center;
  font-size: 11px;
  font-weight: 600;
  line-height: 38px;
  letter-spacing: .1rem;
  text-transform: uppercase;
  text-decoration: none;
  white-space: nowrap;
  background-color: transparent;
  border-radius: 4px;
  border: 1px solid #bbb;
  cursor: pointer;
  box-sizing: border-box; }

.button:hover,
button:hover {
  color: #333;
  border-color: #888888;
  outline: 0; }

input[type="submit"]:hover, input[type="reset"]:hover, input[type="button"]:hover {
  color: #333;
  border-color: #888888;
  outline: 0; }

.button:focus,
button:focus {
  color: #333;
  border-color: #888888;
  outline: 0; }

input[type="submit"]:focus, input[type="reset"]:focus, input[type="button"]:focus {
  color: #333;
  border-color: #888888;
  outline: 0; }

.button.button-primary,
button.button-primary {
  color: #fff;
  background-color: #33c3f0;
  border-color: #33c3f0; }

input[type="submit"].button-primary, input[type="reset"].button-primary, input[type="button"].button-primary {
  color: #fff;
  background-color: #33c3f0;
  border-color: #33c3f0; }

.button.button-primary:hover,
button.button-primary:hover {
  color: #fff;
  background-color: #1eaedb;
  border-color: #1eaedb; }

input[type="submit"].button-primary:hover, input[type="reset"].button-primary:hover, input[type="button"].button-primary:hover {
  color: #fff;
  background-color: #1eaedb;
  border-color: #1eaedb; }

.button.button-primary:focus,
button.button-primary:focus {
  color: #fff;
  background-color: #1eaedb;
  border-color: #1eaedb; }

input[type="submit"].button-primary:focus, input[type="reset"].button-primary:focus, input[type="button"].button-primary:focus {
  color: #fff;
  background-color: #1eaedb;
  border-color: #1eaedb; }
input[type="email"], input[type="number"], input[type="search"], input[type="text"], input[type="tel"], input[type="url"], input[type="password"] {
  height: 38px;
  padding: 6px 10px;
  background-color: #fff;
  border: 1px solid #d1d1d1;
  border-radius: 4px;
  box-shadow: none;
  box-sizing: border-box; }

textarea,
select {
  height: 38px;
  padding: 6px 10px;
  background-color: #fff;
  border: 1px solid #d1d1d1;
  border-radius: 4px;
  box-shadow: none;
  box-sizing: border-box; }

input[type="email"], input[type="number"], input[type="search"], input[type="text"], input[type="tel"], input[type="url"], input[type="password"] {
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none; }

textarea {
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  min-height: 65px;
  padding-top: 6px;
  padding-bottom: 6px; }

input[type="email"]:focus, input[type="number"]:focus, input[type="search"]:focus, input[type="text"]:focus, input[type="tel"]:focus, input[type="url"]:focus, input[type="password"]:focus {
  border: 1px solid #33c3f0;
  outline: 0; }

textarea:focus,
select:focus {
  border: 1px solid #33c3f0;
  outline: 0; }

label,
legend {
  display: block;
  margin-bottom: .5rem;
  font-weight: 600; }

fieldset {
  padding: 0;
  border-width: 0; }

input[type="checkbox"], input[type="radio"] {
  display: inline; }

label > .label-body {
  display: inline-block;
  margin-left: .5rem;
  font-weight: normal; }

ul {
  list-style: circle inside; }

ol {
  list-style: decimal inside;
  padding-left: 0;
  margin-top: 0; }

ul {
  padding-left: 0;
  margin-top: 0; }
  ul ul, ul ol {
    margin: 1.5rem 0 1.5rem 3rem;
    font-size: 90%; }

ol ol, ol ul {
  margin: 1.5rem 0 1.5rem 3rem;
  font-size: 90%; }

li {
  margin-bottom: 1rem; }

code {
  padding: .2rem .5rem;
  margin: 0 .2rem;
  font-size: 90%;
  white-space: nowrap;
  background: #f1f1f1;
  border: 1px solid #e1e1e1;
  border-radius: 4px; }

pre > code {
  display: block;
  padding: 1rem 1.5rem;
  white-space: pre; }

th,
td {
  padding: 12px 15px;
  text-align: left;
  border-bottom: 1px solid #e1e1e1; }

th:first-child,
td:first-child {
  padding-left: 0; }

th:last-child,
td:last-child {
  padding-right: 0; }

button,
.button {
  margin-bottom: 1rem; }

input,
textarea,
select,
fieldset {
  margin-bottom: 1.5rem; }

pre,
blockquote,
dl,
figure,
table,
p,
ul,
ol,
form {
  margin-bottom: 2.5rem; }

body {
  text-align: center;
  background-color: #ECF0E7; }

.app {
  margin: 1em 0;
  border: 1px solid #333;
  overflow: hidden;
  background-color: #fff; }

.header {
  text-align: center;
  text-transform: uppercase;
  border-bottom: 1px solid #efefef;
  padding: 10px 0 0; }

.headline {
  text-align: left;
  font-size: 3em;
  font-family: "Ubuntu", sans-serif;
  font-weight: 900;
  padding: 5px 10px 0; }
  .headline span {
    color: #7550BA; }

.search {
  margin: 0 0 0; }

form {
  margin-bottom: 1em; }

input[type="search"] {
  float: left;
  display: inline-block;
  width: 80%;
  border-radius: 0px;
  border-right: thin solid #efefef; }

.search-twitch-btn {
  width: 38px;
  height: 38px;
  float: left;
  background: url("https://cdn.rawgit.com/ayoisaiah/freeCodeCamp/master/twitch/images/search.png");
  background-color: #efefef;
  background-size: cover; }

.status {
  padding-top: 20px;
  padding-bottom: 10px;
  border-bottom: 1px solid #efefef; }

button {
  width: 80%; }

.online .twitch {
  background-color: #2ECC71; }

.offline .twitch {
  background-color: #F1C40F; }

.unavailable .twitch {
  background-color: #3498DB; }

.twitch {
  text-align: left;
  margin-top: 0.2em;
  background-color: #efefef;
  line-height: 70px; }
  .twitch .one-third.column {
    width: 22%; }
  .twitch .two-thirds.column {
    width: 74%; }

.image-holder {
  width: 55px;
  height: 55px;
  margin: 7.5px 10px;
  border: 1px solid #222;
  float: left;
  background: url("https://cdn.rawgit.com/ayoisaiah/freeCodeCamp/master/twitch/images/placeholder-2.jpg");
  background-size: cover;
  border-radius: 50%; }

.status-message {
  font-size: 16px;
  display: inline-block;
  vertical-align: middle;
  line-height: normal; }

a {
  text-decoration: none;
  color: #196090; }

a:hover {
  color: #196090;
  text-decoration: underline; }

.hidden {
  display: none; }

.focus {
  background-color: #7550BA;
  color: #fff; }

.focus:hover, .focus:focus {
  color: #fff; }

@media screen and (max-width: 550px) {
  .headline {
    text-align: center; }

  .search {
    width: 80%;
    margin: 0 auto; }

  .twitch {
    text-align: center; }

  .image-holder {
    margin: 7.5px auto 5px;
    float: none; }

  span {
    padding: 10px 10px; } }
JS
window.onload = function () {

	//Define variables
	var status, url, picture, x = 0;
	var twitchStreamers = ["dreamhackcs", "skyzhar", "freecodecamp", "faceittv", "comster404", "brunofin", "terakilobyte", "robotcaleb", "sheevergaming", "esl_sc2", "ogamingsc2", "jacksofamerica"];

	//Define functions
	function updateHTML (section) {
		$(section).append('
' + status + '
'); if (section == ".online" || section == ".offline") { //If users are online or offline, load profile images $("#user-image-" + x).css({ background: picture, 'background-size': '55px' }); } x++; } function updateOfflineUsers () { //If users are offline, make new ajax request to find user info $.ajax({ url: "https://api.twitch.tv/kraken/channels/" + url, dataType: "jsonp", data: {format: "json"}, success: function (json) { status = "Channel " + "'" + json.display_name + "'" + " is currently offline"; if (json.logo !== null) { picture = 'url("' + json.logo + '")'; } else { picture = 'url("https://cdn.rawgit.com/ayoisaiah/freeCodeCamp/master/twitch/images/placeholder-2.jpg")'; } updateHTML(".offline"); } }); } function fetchData (data) { console.log(data); if (data.stream === null) { url = data._links.channel.substr(38); updateOfflineUsers(); } else if (data.status == 422 || data.status == 404) { status = data.message; updateHTML(".unavailable"); } else { if (data.stream.channel.logo !== null) { picture = 'url("' + data.stream.channel.logo + '")'; } else { picture = 'url("https://cdn.rawgit.com/ayoisaiah/freeCodeCamp/master/twitch/images/placeholder-2.jpg")'; } url = data._links.channel.substr(38); status = "" + data.stream.channel.display_name + "" + " is currently streaming " + data.stream.game; updateHTML(".online"); } } function ajax () { $.ajax({ url: "https://api.twitch.tv/kraken/streams/" + twitchStreamers[i] + "?callback=?", dataType: "jsonp", data: { format: "json" }, success: function (data) { fetchData(data); }, error: function () { console.log("unable to access json"); } }); } function showOnline () { //Show only online users $(".offline-users, .all-users").removeClass('focus'); $(".online-users").addClass('focus'); $(".offline, .unavailable").addClass('hidden'); $(".online").removeClass('hidden'); } function showOffline () { //Show only offline users $(".online-users, .all-users").removeClass('focus'); $(".offline-users").addClass('focus'); $(".offline, .unavailable").removeClass('hidden'); $(".online").addClass('hidden'); } function showAll () { //Show all users $(".offline-users, .online-users").removeClass('focus'); $(".all-users").addClass('focus'); $(".online, .offline, .unavailable").removeClass('hidden'); } //Loop for (var i = 0; i < twitchStreamers.length; i++) { ajax(); } //Search Function function search () { $(".online, .offline, .unavailable").empty(); showAll(); var searchQuery = $(".search-twitch").val(); var user = searchQuery.replace(/[^A-Z0-9_]/ig, ""); $.ajax({ url: "https://api.twitch.tv/kraken/streams/" + user, dataType: "jsonp", data: { format: "json" }, success: function (data) { fetchData(data); } }); } $(".search-twitch-btn").click(function () { search(); }); $(".search-twitch").keypress(function(event) { if (event.keyCode === 13) { event.preventDefault(); search(); } }); //Buttons $(".online-users").click(function () { showOnline(); }); $(".offline-users").click(function () { showOffline(); }); $(".all-users").click(function () { showAll(); }); };
Host Instantly Drag and Drop Website Builder

 

Description

An app to show the status of users on Twitch using the TwitchTv API
Term
Mon, 11/27/2017 - 21:46

Related Codes

Pen ID
Pen ID
Pen ID