// Copyright (c) 2000-2017 Ericsson Telecom AB                                                       //
// All rights reserved. This program and the accompanying materials are made available under the     //
// terms of the Eclipse Public License v1.0 which accompanies this distribution, and is available at //
// http://www.eclipse.org/legal/epl-v10.html                                                         //
///////////////////////////////////////////////////////////////////////////////////////////////////////
function CViewModel_WritableCondition(p_viewmodel, p_options) {
    "use strict";

    var base = new CViewModel_Condition(p_viewmodel, p_options);
    base.isWritable = base.getState;
    base.getState = undefined;
    return base;
}

CViewModel_WritableCondition.getHelp = function() {
    return "This viewmodel is the same as the condition viewmodel, but its interface is called differently.";
}

CViewModel_WritableCondition.providesInterface = function() {
    return ["isWritable"];
};

CViewModel_WritableCondition.getCustomDataSchema = function() {
    return CViewModel_Condition.getCustomDataSchema();
};

//# sourceURL=CustomizableApp\ViewModels\CViewModel_WritableCondition.js