mirror of
https://github.com/Readarr/Readarr.git
synced 2026-04-21 22:04:31 -04:00
Metadata settings added to UI
This commit is contained in:
@@ -0,0 +1,12 @@
|
||||
'use strict';
|
||||
define(
|
||||
[
|
||||
'backbone',
|
||||
'Settings/Metadata/MetadataModel'
|
||||
], function (Backbone, MetadataModel) {
|
||||
|
||||
return Backbone.Collection.extend({
|
||||
model: MetadataModel,
|
||||
url : window.NzbDrone.ApiRoot + '/metadata'
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,13 @@
|
||||
'use strict';
|
||||
define(
|
||||
[
|
||||
'AppLayout',
|
||||
'marionette',
|
||||
'Settings/Metadata/MetadataItemView'
|
||||
], function (AppLayout, Marionette, MetadataItemView) {
|
||||
return Marionette.CompositeView.extend({
|
||||
itemView : MetadataItemView,
|
||||
itemViewContainer: '#x-metadata',
|
||||
template : 'Settings/Metadata/MetadataCollectionViewTemplate'
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,8 @@
|
||||
<fieldset>
|
||||
<legend>Metadata</legend>
|
||||
<div class="row">
|
||||
<div class="span12">
|
||||
<ul id="x-metadata" class="metadata-list"></ul>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
@@ -0,0 +1,44 @@
|
||||
'use strict';
|
||||
|
||||
define(
|
||||
[
|
||||
'vent',
|
||||
'marionette',
|
||||
'Mixins/AsModelBoundView',
|
||||
'Mixins/AsValidatedView'
|
||||
], function (vent, Marionette, AsModelBoundView, AsValidatedView) {
|
||||
|
||||
var view = Marionette.ItemView.extend({
|
||||
template: 'Settings/Metadata/MetadataEditViewTemplate',
|
||||
|
||||
ui: {
|
||||
activity: '.x-activity'
|
||||
},
|
||||
|
||||
events: {
|
||||
'click .x-save' : '_save'
|
||||
},
|
||||
|
||||
_save: function () {
|
||||
this.ui.activity.html('<i class="icon-nd-spinner"></i>');
|
||||
|
||||
var self = this;
|
||||
var promise = this.model.save();
|
||||
|
||||
if (promise) {
|
||||
promise.done(function () {
|
||||
vent.trigger(vent.Commands.CloseModalCommand);
|
||||
});
|
||||
|
||||
promise.fail(function () {
|
||||
self.ui.activity.empty();
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
AsModelBoundView.call(view);
|
||||
AsValidatedView.call(view);
|
||||
|
||||
return view;
|
||||
});
|
||||
@@ -0,0 +1,39 @@
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||||
<h3>Edit</h3>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="form-horizontal">
|
||||
<div class="control-group">
|
||||
<label class="control-label">Name</label>
|
||||
|
||||
<div class="controls">
|
||||
<input type="text" name="name"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<label class="control-label">Enable</label>
|
||||
|
||||
<div class="controls">
|
||||
<label class="checkbox toggle well">
|
||||
<input type="checkbox" name="enable"/>
|
||||
<p>
|
||||
<span>Yes</span>
|
||||
<span>No</span>
|
||||
</p>
|
||||
|
||||
<div class="btn btn-primary slide-button"/>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{formBuilder}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<span class="x-activity"></span>
|
||||
|
||||
<button class="btn" data-dismiss="modal">cancel</button>
|
||||
<button class="btn btn-primary x-save">save</button>
|
||||
</div>
|
||||
@@ -0,0 +1,30 @@
|
||||
'use strict';
|
||||
|
||||
define(
|
||||
[
|
||||
'AppLayout',
|
||||
'marionette',
|
||||
'Settings/Metadata/MetadataEditView',
|
||||
'Mixins/AsModelBoundView'
|
||||
], function (AppLayout, Marionette, EditView, AsModelBoundView) {
|
||||
|
||||
var view = Marionette.ItemView.extend({
|
||||
template: 'Settings/Metadata/MetadataItemViewTemplate',
|
||||
tagName : 'li',
|
||||
|
||||
events: {
|
||||
'click .x-edit' : '_edit'
|
||||
},
|
||||
|
||||
initialize: function () {
|
||||
this.listenTo(this.model, 'sync', this.render);
|
||||
},
|
||||
|
||||
_edit: function () {
|
||||
var view = new EditView({ model: this.model});
|
||||
AppLayout.modalRegion.show(view);
|
||||
}
|
||||
});
|
||||
|
||||
return AsModelBoundView.call(view);
|
||||
});
|
||||
@@ -0,0 +1,26 @@
|
||||
<div class="metadata-item">
|
||||
<div>
|
||||
<h3>{{name}}</h3>
|
||||
<span class="btn-group pull-right">
|
||||
<button class="btn btn-mini btn-icon-only x-edit"><i class="icon-nd-edit"/></button>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="settings">
|
||||
{{#if enable}}
|
||||
<span class="label label-success">Enabled</span>
|
||||
{{else}}
|
||||
<span class="label">Not Enabled</span>
|
||||
{{/if}}
|
||||
<hr>
|
||||
{{#each fields}}
|
||||
{{#if_eq type compare="checkbox"}}
|
||||
{{#if value}}
|
||||
<span class="label label-success">{{label}}</span>
|
||||
{{else}}
|
||||
<span class="label">{{label}}</span>
|
||||
{{/if}}
|
||||
{{/if_eq}}
|
||||
{{/each}}
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,27 @@
|
||||
'use strict';
|
||||
|
||||
define(
|
||||
[
|
||||
'marionette',
|
||||
'Settings/Metadata/MetadataCollection',
|
||||
'Settings/Metadata/MetadataCollectionView'
|
||||
], function (Marionette, MetadataCollection, MetadataCollectionView) {
|
||||
return Marionette.Layout.extend({
|
||||
template: 'Settings/Metadata/MetadataLayoutTemplate',
|
||||
|
||||
regions: {
|
||||
metadata : '#x-metadata-providers'
|
||||
},
|
||||
|
||||
initialize: function (options) {
|
||||
this.settings = options.settings;
|
||||
this.metadataCollection = new MetadataCollection();
|
||||
this.metadataCollection.fetch();
|
||||
},
|
||||
|
||||
onShow: function () {
|
||||
this.metadata.show(new MetadataCollectionView({collection: this.metadataCollection}));
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
<div class="row">
|
||||
<div class="span12" id="x-metadata-providers"/>
|
||||
</div>
|
||||
@@ -0,0 +1,10 @@
|
||||
'use strict';
|
||||
define(
|
||||
[
|
||||
'backbone.deepmodel'
|
||||
], function (DeepModel) {
|
||||
return DeepModel.DeepModel.extend({
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
@import "../../Shared/Styles/card";
|
||||
|
||||
.metadata-list {
|
||||
li {
|
||||
display: inline-block;
|
||||
vertical-align: top;
|
||||
}
|
||||
}
|
||||
|
||||
.metadata-item {
|
||||
|
||||
.card;
|
||||
|
||||
width: 200px;
|
||||
height: 230px;
|
||||
padding: 10px 15px;
|
||||
|
||||
h3 {
|
||||
margin-top: 0px;
|
||||
display: inline-block;
|
||||
width: 150px;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
.btn-group {
|
||||
margin-top: 8px;
|
||||
}
|
||||
|
||||
.label {
|
||||
margin-top : 3px;
|
||||
display : block;
|
||||
text-align : center;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user