| Index: polymer_1.0.4/bower_components/google-youtube-upload/demo/demo.elements.html
|
| diff --git a/polymer_1.0.4/bower_components/google-youtube-upload/demo/demo.elements.html b/polymer_1.0.4/bower_components/google-youtube-upload/demo/demo.elements.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..d6c9188b059e1f11013cc961087278294a96ca3f
|
| --- /dev/null
|
| +++ b/polymer_1.0.4/bower_components/google-youtube-upload/demo/demo.elements.html
|
| @@ -0,0 +1,223 @@
|
| +<link rel="import" href="../../polymer/polymer.html">
|
| +<link rel="import" href="../../google-youtube/google-youtube.html">
|
| +<link rel="import" href="../google-youtube-upload.html">
|
| +
|
| +<dom-module id="youtube-upload-demo-element">
|
| + <style>
|
| + label {
|
| + display: block;
|
| + margin-top: 1em;
|
| + }
|
| +
|
| + input {
|
| + font-size: 100%;
|
| + width: 50%;
|
| + }
|
| +
|
| + textarea {
|
| + font-size: 100%;
|
| + width: 50%;
|
| + height: 6em;
|
| + }
|
| +
|
| + google-youtube-upload {
|
| + margin-top: 1em;
|
| + }
|
| + </style>
|
| + <template>
|
| + <p>
|
| + Upload videos with a
|
| + <code><a href="index.html" target="_blank"><google-youtube-upload></a></code>
|
| + element!
|
| + </p>
|
| +
|
| + <template is="dom-if" if="{{canShowPreUpload(state)}}">
|
| + <div>
|
| + <label for="video-title">Title:</label>
|
| + <input id="video-title" type="text" value="{{videoTitle::change}}">
|
| + </div>
|
| + <div>
|
| + <label for="description">Description:</label>
|
| + <textarea id="description" value="{{description::change}}"></textarea>
|
| + </div>
|
| + <div>
|
| + <label for="privacy-status">Privacy Status:</label>
|
| + <select id="privacy-status" value="{{privacyStatus::change}}">
|
| + <option>public</option>
|
| + <option>unlisted</option>
|
| + <option>private</option>
|
| + </select>
|
| + </div>
|
| + <google-youtube-upload
|
| + client-id="1054047045356-j8pgqgls9vdef3rl09hapoicumbte0bo.apps.googleusercontent.com"
|
| + video-title="{{videoTitle}}"
|
| + description="{{description}}"
|
| + privacy-status="{{privacyStatus}}"
|
| + video-id="{{videoId}}"
|
| + on-youtube-upload-start="handleYouTubeUploadStart"
|
| + on-youtube-upload-progress="handleYouTubeUploadProgress"
|
| + on-youtube-upload-complete="handleYouTubeUploadComplete"
|
| + on-youtube-upload-fail="handleYouTubeUploadFail"
|
| + on-youtube-processing-poll="handleYouTubeProcessingPoll"
|
| + on-youtube-processing-complete="handleYouTubeProcessingComplete"
|
| + on-youtube-processing-fail="handleYouTubeProcessingFail">
|
| + </google-youtube-upload>
|
| + </template>
|
| +
|
| + <template is="dom-if" if="{{canShowUpload(state)}}">
|
| + <div>
|
| + Upload Progress:
|
| + <progress max="1" value="{{fractionComplete}}"></progress>
|
| + <span>{{computeProgressText(megabytesPerSecond, minutesRemaining, secondsRemaining)}}</span>
|
| + </div>
|
| + </template>
|
| +
|
| + <template is="dom-if" if="{{canShowUploadComplete(state)}}">
|
| + <p>
|
| + Upload complete. Please wait while video id '<span>{{videoId}}</span>' is
|
| + <a href="https://support.google.com/youtube/answer/71674?ref_topic=2888603" target="_blank">processing</a><span>{{processingEllipses}}</span>
|
| + </p>
|
| + </template>
|
| +
|
| + <template is="dom-if" if="{{canShowProcessingComplete(state)}}" restamp>
|
| + <p>
|
| + Processing complete. The video is available at
|
| + <a href$="{{videoUrl}}" target="_blank">{{videoUrl}}</a>
|
| + and embedded below:
|
| + </p>
|
| + <google-youtube video-id="{{videoId}}"></google-youtube>
|
| + </template>
|
| +
|
| + <template is="dom-if" if="{{canShowError(state)}}">
|
| + <p>{{error}}</p>
|
| + </template>
|
| +
|
| + </template>
|
| +</dom-module>
|
| +<script>
|
| + Polymer({
|
| + is: 'youtube-upload-demo-element',
|
| +
|
| + properties: {
|
| + state: {
|
| + type: String,
|
| + value: 'pre-upload'
|
| + },
|
| + processingEllipses: {
|
| + type: String,
|
| + value: '...'
|
| + },
|
| + megabytesPerSecond: {
|
| + type: Number,
|
| + value: 0
|
| + },
|
| + minutesRemaining: {
|
| + type: Number,
|
| + value: 0
|
| + },
|
| + secondsRemaining: {
|
| + type: Number,
|
| + value: 0
|
| + },
|
| + fractionComplete: {
|
| + type: Number,
|
| + value: 0
|
| + },
|
| + error: {
|
| + type: String,
|
| + value: ''
|
| + },
|
| + videoTitle: {
|
| + type: String,
|
| + value: 'Untitled Video'
|
| + },
|
| + description: {
|
| + type: String,
|
| + value: 'Uploaded via a web component! Check out https://github.com/GoogleWebComponents/google-youtube-upload'
|
| + },
|
| + privacyStatus: {
|
| + type: String,
|
| + value: 'public'
|
| + },
|
| + videoId: {
|
| + type: String,
|
| + value: ''
|
| + },
|
| + videoUrl: {
|
| + type: String,
|
| + computed: 'computeVideoUrl(videoId)'
|
| + }
|
| + },
|
| +
|
| + canShowPreUpload: function(state) {
|
| + return state === 'pre-upload';
|
| + },
|
| + canShowUpload: function(state) {
|
| + return state === 'upload'
|
| + },
|
| + canShowUploadComplete: function(state) {
|
| + return state === 'upload-complete';
|
| + },
|
| + canShowProcessingComplete: function(state) {
|
| + return state === 'processing-complete';
|
| + },
|
| + canShowError: function(state) {
|
| + return state === 'error';
|
| + },
|
| + computeProgressText: function( megabytesPerSecond, minutesRemaining, secondsRemaining) {
|
| + return megabytesPerSecond + "MB/s, " + minutesRemaining + "m" + secondsRemaining + "s remaining";
|
| + },
|
| + computeVideoUrl: function(videoId) {
|
| + return "https://youtu.be/" + videoId;
|
| + },
|
| + handleYouTubeUploadStart: function(e) {
|
| + this.state = 'upload';
|
| + },
|
| +
|
| + handleYouTubeUploadProgress: function(e) {
|
| + this.megabytesPerSecond = (e.detail.bytesPerSecond / (1024 * 1024)).toFixed(2);
|
| + this.minutesRemaining = Math.floor(e.detail.estimatedSecondsRemaining / 60);
|
| + this.secondsRemaining = Math.round(e.detail.estimatedSecondsRemaining % 60);
|
| + this.fractionComplete = e.detail.fractionComplete;
|
| + },
|
| +
|
| + handleYouTubeUploadComplete: function(e) {
|
| + this.state = 'upload-complete';
|
| + },
|
| +
|
| + handleYouTubeUploadFail: function(e) {
|
| + this.error = e.detail;
|
| + this.state = 'error';
|
| + },
|
| +
|
| + handleYouTubeProcessingPoll: function(e) {
|
| + this.processingEllipses += '.';
|
| + },
|
| +
|
| + handleYouTubeProcessingComplete: function(e) {
|
| + this.state = 'processing-complete';
|
| + },
|
| +
|
| + handleYouTubeProcessingFail: function(e) {
|
| + var error;
|
| + switch(e.detail.uploadStatus) {
|
| + case 'failed':
|
| + error = e.detail.failureReason || 'unknown error';
|
| + break;
|
| +
|
| + case 'rejected':
|
| + error = e.detail.rejectionReason || 'unknown error';
|
| + break;
|
| +
|
| + default:
|
| + error = 'unknown error';
|
| + break;
|
| + }
|
| +
|
| + this.error = 'YouTube processing failed (' + error + ').';
|
| + this.state = 'error';
|
| + }
|
| + });
|
| +
|
| +
|
| +</script>
|
|
|