diff --git a/apps/gifted-subs/src/app/giftedsubs/giftedsubs.component.css b/apps/gifted-subs/src/app/giftedsubs/giftedsubs.component.css
index 6bfb9a6..9f603b7 100644
--- a/apps/gifted-subs/src/app/giftedsubs/giftedsubs.component.css
+++ b/apps/gifted-subs/src/app/giftedsubs/giftedsubs.component.css
@@ -18,6 +18,11 @@
font-size: 0.8rem;
padding-top: 0.5rem;
padding-bottom: 0.5rem;
+ padding-right: 0.5rem;
+}
+
+.mat-cell:last-child {
+ padding-right: 0;
}
.spinner-container {
diff --git a/apps/quotes/src/app/quotes/quotes.component.css b/apps/quotes/src/app/quotes/quotes.component.css
index 5bd3804..17647e2 100644
--- a/apps/quotes/src/app/quotes/quotes.component.css
+++ b/apps/quotes/src/app/quotes/quotes.component.css
@@ -18,6 +18,11 @@
font-size: 0.8rem;
padding-top: 0.5rem;
padding-bottom: 0.5rem;
+ padding-right: 0.5rem;
+}
+
+.mat-cell:last-child {
+ padding-right: 0;
}
.spinner-container {
diff --git a/apps/regular-subs/src/app/regularsubs/regularsubs.component.css b/apps/regular-subs/src/app/regularsubs/regularsubs.component.css
index 2253a8c..88e5a54 100644
--- a/apps/regular-subs/src/app/regularsubs/regularsubs.component.css
+++ b/apps/regular-subs/src/app/regularsubs/regularsubs.component.css
@@ -18,6 +18,11 @@
font-size: 0.8rem;
padding-top: 0.5rem;
padding-bottom: 0.5rem;
+ padding-right: 0.5rem;
+}
+
+.mat-cell:last-child {
+ padding-right: 0;
}
.spinner-container {
diff --git a/apps/schedule/src/app/schedule/schedule.component.css b/apps/schedule/src/app/schedule/schedule.component.css
index 3145a0f..81c23e9 100644
--- a/apps/schedule/src/app/schedule/schedule.component.css
+++ b/apps/schedule/src/app/schedule/schedule.component.css
@@ -1,3 +1,7 @@
+.timezone-picker {
+ width: 100%;
+}
+
.schedule {
text-align: center;
}
@@ -26,6 +30,11 @@
font-size: 0.8rem;
padding-top: 0.5rem;
padding-bottom: 0.5rem;
+ padding-right: 0.5rem;
+}
+
+.mat-cell:last-child {
+ padding-right: 0;
}
.mat-cell img {
diff --git a/apps/schedule/src/app/schedule/schedule.component.html b/apps/schedule/src/app/schedule/schedule.component.html
index d686e9d..75f384b 100644
--- a/apps/schedule/src/app/schedule/schedule.component.html
+++ b/apps/schedule/src/app/schedule/schedule.component.html
@@ -2,7 +2,7 @@
-
+
@@ -44,7 +44,7 @@
-
+
{{event.title}}
diff --git a/apps/twitch-logs/package-lock.json b/apps/twitch-logs/package-lock.json
index 76aaeaf..ebc7f47 100644
--- a/apps/twitch-logs/package-lock.json
+++ b/apps/twitch-logs/package-lock.json
@@ -648,7 +648,6 @@
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
"integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=",
- "dev": true,
"optional": true
},
"asn1": {
@@ -2613,6 +2612,15 @@
"integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=",
"dev": true
},
+ "encoding": {
+ "version": "0.1.12",
+ "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz",
+ "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=",
+ "optional": true,
+ "requires": {
+ "iconv-lite": "~0.4.13"
+ }
+ },
"end-of-stream": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz",
@@ -3232,6 +3240,29 @@
"websocket-driver": ">=0.5.1"
}
},
+ "fbjs": {
+ "version": "0.8.17",
+ "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.17.tgz",
+ "integrity": "sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90=",
+ "optional": true,
+ "requires": {
+ "core-js": "^1.0.0",
+ "isomorphic-fetch": "^2.1.1",
+ "loose-envify": "^1.0.0",
+ "object-assign": "^4.1.0",
+ "promise": "^7.1.1",
+ "setimmediate": "^1.0.5",
+ "ua-parser-js": "^0.7.18"
+ },
+ "dependencies": {
+ "core-js": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz",
+ "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=",
+ "optional": true
+ }
+ }
+ },
"file-loader": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/file-loader/-/file-loader-1.1.11.tgz",
@@ -4744,8 +4775,7 @@
"iconv-lite": {
"version": "0.4.19",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz",
- "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==",
- "dev": true
+ "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ=="
},
"ieee754": {
"version": "1.1.11",
@@ -5123,8 +5153,7 @@
"is-stream": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
- "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
- "dev": true
+ "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ="
},
"is-symbol": {
"version": "1.0.1",
@@ -5179,6 +5208,16 @@
"isarray": "1.0.0"
}
},
+ "isomorphic-fetch": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz",
+ "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=",
+ "optional": true,
+ "requires": {
+ "node-fetch": "^1.0.1",
+ "whatwg-fetch": ">=0.10.0"
+ }
+ },
"isstream": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
@@ -5371,6 +5410,12 @@
"integrity": "sha1-43zwsX8ZnM4jvqcbIDk5Uka07E4=",
"dev": true
},
+ "jquery": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.3.1.tgz",
+ "integrity": "sha512-Ubldcmxp5np52/ENotGxlLe6aGMvmF4R8S6tZjsP6Knsaxd/xp3Zrh50cG93lR6nPXyUFwzN3ZSOQI0wRJNdGg==",
+ "optional": true
+ },
"js-base64": {
"version": "2.4.5",
"resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.5.tgz",
@@ -5379,8 +5424,7 @@
"js-tokens": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
- "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=",
- "dev": true
+ "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls="
},
"js-yaml": {
"version": "3.12.0",
@@ -5695,6 +5739,16 @@
"ejs": "^2.5.7"
}
},
+ "linkifyjs": {
+ "version": "2.1.6",
+ "resolved": "https://registry.npmjs.org/linkifyjs/-/linkifyjs-2.1.6.tgz",
+ "integrity": "sha512-nA94bEM9rmt7Iu4OEIYSKpW+Dy6fhlBTjk2Bg9bFuxHQYcy+lWq2EleHb0rp/ev8oBO82vLHZctM5YlSR5DTzw==",
+ "requires": {
+ "jquery": "^3.3.1",
+ "react": "^16.2.0",
+ "react-dom": "^16.2.0"
+ }
+ },
"load-json-file": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
@@ -5940,7 +5994,6 @@
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz",
"integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=",
- "dev": true,
"requires": {
"js-tokens": "^3.0.0"
}
@@ -6404,6 +6457,16 @@
"lower-case": "^1.1.1"
}
},
+ "node-fetch": {
+ "version": "1.7.3",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz",
+ "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==",
+ "optional": true,
+ "requires": {
+ "encoding": "^0.1.11",
+ "is-stream": "^1.0.1"
+ }
+ },
"node-forge": {
"version": "0.7.5",
"resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.5.tgz",
@@ -7444,7 +7507,6 @@
"version": "7.3.1",
"resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
"integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==",
- "dev": true,
"optional": true,
"requires": {
"asap": "~2.0.3"
@@ -7466,6 +7528,16 @@
"with-callback": "^1.0.2"
}
},
+ "prop-types": {
+ "version": "15.6.2",
+ "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.2.tgz",
+ "integrity": "sha512-3pboPvLiWD7dkI3qf3KbUe6hKFKa52w+AE0VCqECtf+QHAKgOL37tTaNCnuX1nAAQ4ZhyP+kYVKf8rLmJ/feDQ==",
+ "optional": true,
+ "requires": {
+ "loose-envify": "^1.3.1",
+ "object-assign": "^4.1.1"
+ }
+ },
"protractor": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/protractor/-/protractor-5.1.2.tgz",
@@ -7802,6 +7874,30 @@
"integrity": "sha1-DD0L6u2KAclm2Xh793goElKpeao=",
"dev": true
},
+ "react": {
+ "version": "16.4.2",
+ "resolved": "https://registry.npmjs.org/react/-/react-16.4.2.tgz",
+ "integrity": "sha512-dMv7YrbxO4y2aqnvA7f/ik9ibeLSHQJTI6TrYAenPSaQ6OXfb+Oti+oJiy8WBxgRzlKatYqtCjphTgDSCEiWFg==",
+ "optional": true,
+ "requires": {
+ "fbjs": "^0.8.16",
+ "loose-envify": "^1.1.0",
+ "object-assign": "^4.1.1",
+ "prop-types": "^15.6.0"
+ }
+ },
+ "react-dom": {
+ "version": "16.4.2",
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.4.2.tgz",
+ "integrity": "sha512-Usl73nQqzvmJN+89r97zmeUpQDKDlh58eX6Hbs/ERdDHzeBzWy+ENk7fsGQ+5KxArV1iOFPT46/VneklK9zoWw==",
+ "optional": true,
+ "requires": {
+ "fbjs": "^0.8.16",
+ "loose-envify": "^1.1.0",
+ "object-assign": "^4.1.1",
+ "prop-types": "^15.6.0"
+ }
+ },
"read-cache": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
@@ -8488,8 +8584,7 @@
"setimmediate": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
- "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=",
- "dev": true
+ "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU="
},
"setprototypeof": {
"version": "1.1.0",
@@ -9664,6 +9759,12 @@
"integrity": "sha512-ptLSQs2S4QuS6/OD1eAKG+S5G8QQtrU5RT32JULdZQtM1L3WTi34Wsu48Yndzi8xsObRAB9RPt/KhA9wlpEF6w==",
"dev": true
},
+ "ua-parser-js": {
+ "version": "0.7.18",
+ "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.18.tgz",
+ "integrity": "sha512-LtzwHlVHwFGTptfNSgezHp7WUlwiqb0gA9AALRbKaERfxwJoiX0A73QbTToxteIAuIaFshhgIZfqK8s7clqgnA==",
+ "optional": true
+ },
"uglify-js": {
"version": "3.3.28",
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.3.28.tgz",
@@ -11316,6 +11417,12 @@
"integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==",
"dev": true
},
+ "whatwg-fetch": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz",
+ "integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng==",
+ "optional": true
+ },
"when": {
"version": "3.6.4",
"resolved": "https://registry.npmjs.org/when/-/when-3.6.4.tgz",
diff --git a/apps/twitch-logs/package.json b/apps/twitch-logs/package.json
index d2fa891..6b19774 100644
--- a/apps/twitch-logs/package.json
+++ b/apps/twitch-logs/package.json
@@ -26,6 +26,7 @@
"@angular/router": "^5.2.0",
"core-js": "^2.4.1",
"hammerjs": "^2.0.8",
+ "linkifyjs": "^2.1.6",
"node-sass": "^4.9.0",
"rxjs": "^5.5.6",
"zone.js": "^0.8.19"
diff --git a/apps/twitch-logs/src/app/comments/comments.component.css b/apps/twitch-logs/src/app/comments/comments.component.css
index d91df96..6a9bbf0 100644
--- a/apps/twitch-logs/src/app/comments/comments.component.css
+++ b/apps/twitch-logs/src/app/comments/comments.component.css
@@ -34,6 +34,11 @@
font-size: 0.8rem;
padding-top: 0.5rem;
padding-bottom: 0.5rem;
+ padding-right: 0.5rem;
+}
+
+.mat-cell:last-child {
+ padding-right: 0;
}
.spinner-container {
diff --git a/apps/twitch-logs/src/app/comments/comments.component.html b/apps/twitch-logs/src/app/comments/comments.component.html
index 2945f9e..93b9f81 100644
--- a/apps/twitch-logs/src/app/comments/comments.component.html
+++ b/apps/twitch-logs/src/app/comments/comments.component.html
@@ -29,7 +29,7 @@
-
+
{{comment.offset | totime : comment.video_recorded_at | tohms : 'colons'}}
@@ -75,7 +75,7 @@
- {{token}}
+
diff --git a/apps/twitch-logs/src/app/pipes/splitmessage.pipe.ts b/apps/twitch-logs/src/app/pipes/splitmessage.pipe.ts
index e09a062..8a57210 100644
--- a/apps/twitch-logs/src/app/pipes/splitmessage.pipe.ts
+++ b/apps/twitch-logs/src/app/pipes/splitmessage.pipe.ts
@@ -3,6 +3,8 @@ import {
PipeTransform
} from '@angular/core';
+import * as linkifyString from 'linkifyjs/string';
+
@Pipe({
name: 'splitmessage'
@@ -20,12 +22,13 @@ export class SplitMessagePipe implements PipeTransform {
let regexp = RegExp('(' + exps.join('|') + ')');
+ // FIXME: do not split URLs
let tokens = message.split(regexp);
return tokens.map((token: any) => {
let e = emotes.filter((emote: any) => emote.title == token);
- return e.length > 0 ? e[0] : token;
+ return e.length > 0 ? e[0] : linkifyString(token);
});
}
}
diff --git a/apps/twitch-logs/src/app/search/search.component.css b/apps/twitch-logs/src/app/search/search.component.css
index 7355317..713a8ee 100644
--- a/apps/twitch-logs/src/app/search/search.component.css
+++ b/apps/twitch-logs/src/app/search/search.component.css
@@ -6,12 +6,8 @@
text-align: left;
}
-.mat-column-video_title {
- white-space: nowrap;
-}
-
-.mat-column-video_title img, .mat-column-video_title a {
- vertical-align: middle;
+.mat-column-video_title img {
+ margin-top: 0.5em;
}
.mat-column-commenter_display_name {
@@ -46,6 +42,11 @@
font-size: 0.8rem;
padding-top: 0.5rem;
padding-bottom: 0.5rem;
+ padding-right: 0.5rem;
+}
+
+.mat-cell:last-child {
+ padding-right: 0;
}
.spinner-container {
diff --git a/apps/twitch-logs/src/app/search/search.component.html b/apps/twitch-logs/src/app/search/search.component.html
index 63bdef4..bbb44b5 100644
--- a/apps/twitch-logs/src/app/search/search.component.html
+++ b/apps/twitch-logs/src/app/search/search.component.html
@@ -33,27 +33,29 @@
- Video
+ Video
-
-
-
+
-
+
{{result.video_title}}
+
+
+
+
- Recorded
+ Recorded
- {{result.video_recorded_at | date : 'yyyy-MM-dd'}}
+ {{result.video_recorded_at | date : 'yyyy-MM-dd'}}
@@ -63,7 +65,8 @@
-
+
{{result.offset | totime : result.video_recorded_at | tohms : 'colons'}}
@@ -109,7 +112,7 @@
- {{token}}
+
diff --git a/apps/twitch-logs/src/app/search/search.component.ts b/apps/twitch-logs/src/app/search/search.component.ts
index 17242d3..0e1201f 100644
--- a/apps/twitch-logs/src/app/search/search.component.ts
+++ b/apps/twitch-logs/src/app/search/search.component.ts
@@ -85,7 +85,7 @@ export class SearchComponent implements OnInit, OnDestroy, AfterViewInit {
fromEvent(this.input1.nativeElement, 'keyup')
.pipe(
- debounceTime(300),
+ debounceTime(600),
distinctUntilChanged(),
tap(() => {
this.paginator.pageIndex = 0;
@@ -96,7 +96,7 @@ export class SearchComponent implements OnInit, OnDestroy, AfterViewInit {
fromEvent(this.input2.nativeElement, 'keyup')
.pipe(
- debounceTime(300),
+ debounceTime(600),
distinctUntilChanged(),
tap(() => {
this.paginator.pageIndex = 0;
diff --git a/apps/twitch-logs/src/app/videos/videos.component.css b/apps/twitch-logs/src/app/videos/videos.component.css
index ddd39a5..5133cd5 100644
--- a/apps/twitch-logs/src/app/videos/videos.component.css
+++ b/apps/twitch-logs/src/app/videos/videos.component.css
@@ -18,14 +18,15 @@
font-size: 0.8rem;
padding-top: 0.5rem;
padding-bottom: 0.5rem;
+ padding-right: 0.5rem;
}
-.mat-column-title {
- white-space: nowrap;
+.mat-cell:last-child {
+ padding-right: 0;
}
-.mat-column-title img, .mat-column-title a {
- vertical-align: middle;
+.mat-column-title img {
+ margin-top: 0.5em;
}
.spinner-container {
diff --git a/apps/twitch-logs/src/app/videos/videos.component.html b/apps/twitch-logs/src/app/videos/videos.component.html
index df651c5..a93116a 100644
--- a/apps/twitch-logs/src/app/videos/videos.component.html
+++ b/apps/twitch-logs/src/app/videos/videos.component.html
@@ -25,26 +25,28 @@
- Recorded
+ Recorded
- {{video.recorded_at | date : 'yyyy-MM-dd'}}
+ {{video.recorded_at | date : 'yyyy-MM-dd'}}
- Title
+ Title
-
+
-
-
-
+
{{video.title}}
-
+
+
+
+
+
@@ -59,9 +61,9 @@
- Length
+ Length
- {{video.length | tohms : 'spaces'}}
+ {{video.length | tohms : 'spaces'}}