118 lines
7.9 KiB
HTML
118 lines
7.9 KiB
HTML
<div>
|
|
<div class="modal" tabindex="-1" role="dialog" style="display: block; background-color: rgba(0, 0, 0, .5);">
|
|
<div class="modal-dialog modal-dialog-scrollable modal-lg" role="document">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<h5 class="modal-title">
|
|
Channel Editor
|
|
</h5>
|
|
</div>
|
|
<div class="modal-body">
|
|
<div>
|
|
<div>
|
|
<span class="pull-right text-danger">{{error.number}}</span>
|
|
<label id="channelNumber" class="small">Ch. #</label>
|
|
<input for="channelNumber" class="form-control form-control-sm" type="number"
|
|
ng-model="channel.number"/>
|
|
</div>
|
|
<div>
|
|
<span class="pull-right text-danger">{{error.name}}</span>
|
|
<label id="channelName" class="small">Channel Name</label>
|
|
<input for="channelName" class="form-control form-control-sm" type="text"
|
|
ng-model="channel.name"/>
|
|
</div>
|
|
<div>
|
|
<span class="pull-right text-danger">{{error.icon}}</span>
|
|
<label id="channelIcon" class="small">Channel Icon</label>
|
|
<input for="channelIcon" class="form-control form-control-sm" type="url"
|
|
ng-model="channel.icon" />
|
|
</div>
|
|
<div>
|
|
<span class="pull-right text-danger">{{error.startTime}}</span>
|
|
<label id="channelStartTime" class="small">Channel Timeline Start {{maxDate}}</label>
|
|
<input for="channelStartTime" class="form-control form-control-sm" type="datetime-local" ng-model="channel.startTime"/>
|
|
</div>
|
|
</div>
|
|
<hr />
|
|
<div>
|
|
|
|
<h6>Programs
|
|
<span class="small">Total: {{channel.programs.length}}</span>
|
|
<span class="badge badge-dark" style="margin-left: 15px;" ng-show="channel.programs.length !== 0">Commercials</span>
|
|
<button class="btn btn-sm btn-secondary" style="margin-left: 10px" ng-click="showShuffleOptions = !showShuffleOptions" ng-show="channel.programs.length !== 0">
|
|
Shuffle / Sort <span class="fa {{ showShuffleOptions ? 'fa-chevron-down' : 'fa-chevron-right'}}"></span>
|
|
</button>
|
|
<span class="pull-right">
|
|
<span class="text-danger small">{{error.programs}}</span>
|
|
<button class="btn btn-sm btn-primary" ng-click="displayPlexLibrary = true">
|
|
<span class="fa fa-plus"></span>
|
|
</button>
|
|
</span>
|
|
</h6>
|
|
<div ng-init="blockCount = 1; showShuffleOptions = false" ng-show="showShuffleOptions">
|
|
<p class="text-center text-info small">"Block Shuffle" and "Sort TV Shows" will push any movies to the end of the channel.</p>
|
|
<div class="input-group mb-1">
|
|
<div class="input-group-prepend">
|
|
<button class="btn btn-sm btn-warning" type="button" ng-click="blockShuffle(blockCount, randomizeBlockShuffle)">Block Shuffle</button>
|
|
</div>
|
|
<input type="number" class="form-control form-control-sm" placeholder="Desired number of consecutive TV shows." min="1" max="10" ng-model="blockCount">
|
|
|
|
<div class="input-group-append">
|
|
<div class="input-group-text" style="padding: 0">
|
|
<label class="small" for="randomizeBlockShuffle" style="margin-bottom: 4px;"> Randomize </label>
|
|
<input id="randomizeBlockShuffle" type="checkbox" ng-model="randomizeBlockShuffle">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="input-group mb-1">
|
|
<button class="btn btn-sm btn-warning form-control form-control-sm" type="button" ng-click="randomShuffle()">Random Shuffle</button>
|
|
</div>
|
|
<div class="input-group mb-1">
|
|
<button class="btn btn-sm btn-warning form-control form-control-sm" type="button" ng-click="sortShows()">Sort TV Shows</button>
|
|
</div>
|
|
<div class="input-group mb-1">
|
|
<button class="btn btn-sm btn-warning form-control form-control-sm" type="button" ng-click="removeDuplicates()">Remove Duplicates</button>
|
|
</div>
|
|
</div>
|
|
<div ng-if="channel.programs.length === 0">
|
|
<div class="small">Add programs to this channel by selecting media from your Plex library
|
|
</div>
|
|
<br />
|
|
<h5 class="text-center text-danger">No programs are currently scheduled</h5>
|
|
</div>
|
|
<div class="list-group list-group-root" dnd-list="channel.programs">
|
|
<li class="list-group-item flex-container" ng-repeat="x in channel.programs"
|
|
ng-click="selectProgram($index)" dnd-draggable="x" dnd-moved="channel.programs.splice($index, 1)"
|
|
dnd-effect-allowed="move">
|
|
<div class="small" style="width: 150px; margin-right: 5px;">
|
|
<div class="text-success">{{x.start.toLocaleString()}}</div>
|
|
<div class="text-danger">{{x.stop.toLocaleString()}}</div>
|
|
</div>
|
|
<div style="margin-right: 15px; text-align: center">
|
|
<span class="badge badge-dark">{{x.commercials.length}}</span>
|
|
</div>
|
|
<div style="margin-right: 5px;">
|
|
{{ x.type === 'episode' ? x.showTitle + ' - S' + x.season.toString().padStart(2, '0') + 'E' + x.episode.toString().padStart(2, '0') : x.title}}
|
|
</div>
|
|
<span class="flex-pull-right btn fa fa-trash"
|
|
ng-click="removeItem($index); $event.stopPropagation()"></span>
|
|
</li>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="modal-footer">
|
|
<div class="text-right">
|
|
<button class="btn btn-sm btn-link" ng-click="_onDone()">
|
|
Cancel
|
|
</button>
|
|
<button class="btn btn-sm btn-primary" ng-click="_onDone(channel)">
|
|
{{ isNewChannel ? 'Add Channel' : 'Update Channel' }}
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<program-config program="_selectedProgram" on-done="finshedProgramEdit"></program-config>
|
|
<plex-library height="300" visible="displayPlexLibrary" on-finish="importPrograms"></plex-library>
|
|
</div> |