123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173 |
- define(
- function( require ) {
- var Backbone = require( "backbone" ),
- _ = require( "underscore" ),
- fui = require( "app/fui" ),
- datasetManagementViewTpl = require( "plugins/text!app/templates/dataset-management.tpl" );
- var DataManagementView = Backbone.Marionette.ItemView.extend( {
- initialize: function(){
- _.bindAll( this, "onRemoveDataset", "onConfirmAction",
- "onDatasetRemoveSuccess", "onDatasetRemoveFail",
- "onTaskStatus", "onTaskFailed", "cleanup" );
- this.listenTo( this.model, "change", this.onModelChange, this );
- fui.vent.on( "action.delete.confirm", this.onConfirmRemoveDataset, this );
- fui.vent.on( "action.backup.confirm", this.onConfirmBackupDataset, this );
- fui.vent.on( "task.status", this.onTaskStatus, this );
- fui.vent.on( "task.failed", this.onTaskFailed, this );
- },
- template: _.template( datasetManagementViewTpl ),
- ui: {
- actionConfirmModal: "#actionConfirmModal"
- },
- el: "#dataset-management",
- events: {
- "click .action.remove": "onRemoveDataset",
- "click .action.confirm": "onConfirmAction",
- "click .action.backup": "onBackupDataset"
- },
- templateHelpers: {
- },
- cleanup: function() {
- this.unbind();
- this.undelegateEvents();
- this.model.unbind( 'change', this.onModelChange, this );
- fui.vent.unbind( 'action.delete.confirm', this.onConfirmRemoveDataset, this );
- },
- /** If the model changes, update the summary */
- onModelChange: function( event ) {
- this.cleanup();
- this.render();
- },
- /** User has requested a dataset be removed */
- onRemoveDataset: function( e ) {
- e.preventDefault();
- var elem = $(e.currentTarget);
- var dsId = elem.data( "ds-id" );
- var msg = sprintf( "Are you sure you want to delete dataset <code>%s</code>? This action cannot be reversed.", dsId );
- this.showConfirmationModal( msg, dsId, "action.delete.confirm" );
- },
- /** User has requested a dataset be backed up */
- onBackupDataset: function( e ) {
- e.preventDefault();
- var elem = $(e.currentTarget);
- var dsId = elem.data( "ds-id" );
- var msg = sprintf( "Are you sure you want to create a backup of dataset <code>%s</code>? This action may take some time to complete", dsId );
- this.showConfirmationModal( msg, dsId, "action.backup.confirm" );
- },
- /** Show a generic modal confirmation */
- showConfirmationModal: function( msg, dsId, eventId ) {
- this.ui.actionConfirmModal
- .find( ".modal-body p" )
- .html( msg );
- this.ui.actionConfirmModal
- .find( ".action.confirm" )
- .data( "ds-id", dsId )
- .data( "event-id", eventId );
- this.clearFeedback();
- this.ui.actionConfirmModal.modal( 'show' );
- },
- /** Generic response to confirming the current modal dialogue */
- onConfirmAction: function( e ) {
- e.preventDefault();
- var elem = $(e.currentTarget);
- var dsId = elem.data( "ds-id" );
- var eventId = elem.data( "event-id" );
- //this.ui.actionConfirmModal.modal( 'hide' );
- $('.modal.in').modal('hide');
- $('body').removeClass('modal-open');
- $('.modal-backdrop').remove();
- _.delay( function() {
- fui.vent.trigger( eventId, dsId );
- }, 100 );
- },
- /** User has confirmed that the dataset can be deleted */
- onConfirmRemoveDataset: function( dsId ) {
- var self = this;
- fui.models
- .fusekiServer
- .dataset( dsId )
- .deleteDataset()
- .done( function( data ) {self.onDatasetRemoveSuccess( data, dsId );} )
- .error( function( jqxhr, msg, err ) {self.onDatasetRemoveFail( jqxhr, msg, err, dsId );} );
- },
- /** Callback after successfully removing a dataset */
- onDatasetRemoveSuccess: function( data, dsId ) {
- this.model.loadServerDescription();
- },
- /** Removing the dataset did not work: notify the user */
- onDatasetRemoveFail: function( jqxhr, msg, err, dsId ) {
- this.feedbackArea( dsId )
- .html( sprintf( "<p class='text-warning'>Sorry, removing dataset %s did not work, because: '%s'</p>", dsId, err || msg ) );
- },
- /** User has confirmed backing up the dataset */
- onConfirmBackupDataset: function( dsId ) {
- var self = this;
- fui.models
- .fusekiServer
- .dataset( dsId )
- .backupDataset();
- },
- /** Remove any current feedback content */
- clearFeedback: function() {
- $(".action.feedback").empty();
- },
- /** Long running task has updated status */
- onTaskStatus: function( status ) {
- var task = status.task;
- var msg = sprintf( "<p>Task <strong>%s</strong> started at %s%s</p>",
- task.operationType,
- task.taskDescription.started,
- status.finished ? sprintf( ", finished at %s", status.finished ) : " – ongoing" );
- this.feedbackArea( status.dsId )
- .html( msg );
- },
- /** Long running task has failed to start */
- onTaskFailed: function( status ) {
- this.feedbackArea( status.dsId )
- .html( sprintf( "<p class='text-danger'>Task %s failed: '%s'</p>", task.operationType, task.errorMessage ));
- },
- /** Find the feedback area for a particular dataset */
- feedbackArea: function( dsId ) {
- return $(sprintf( ".action[data-ds-id='%s']", dsId ) )
- .parent()
- .siblings(".action.feedback");
- }
- });
- return DataManagementView;
- }
- );
|