/**
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

var App = require('app');

/**
 * Mixin for wizard controller for enabling done/complete buttons if last task fails
 * This should
 * @type {Ember.Mixin}
 */
App.WizardEnableDone = Em.Mixin.create({
  statusChangeCallback: function (data) {
    var wizardController = App.router.get(this.get('content.controllerName'));
    this._super(data);
    if (wizardController.get('totalSteps') == wizardController.get('currentStep') && this.get('tasks.lastObject.status') === 'FAILED') {
      this.set('isSubmitDisabled', false);
    }
  }
});