MultiplotRequestObject.js 3.28 KB
/**
 * Project      : AMDA-NG
 * Name         : MultiplotRequestObject.js
 * @class   amdaPlotObj.MutiplotRequestObject
 * @extends amdaModel.AmdaTimeObject
 * @brief   Multi-Plot Request Business Object Definition 
 * @author  Benjamin Renard
 * @version $Id: MultiplotRequestObject.js benjamin $
 ******************************************************************************
 *    FT Id     :   Date   : Name - Description
 ******************************************************************************
 *	:           :28/02/2020: BRE  - file creation
 */
 
 		
Ext.define('amdaPlotObj.MultiplotRequestObject', {
    extend: 'amdaModel.AmdaTimeObject',
    idProperty: 'id',

    requires: [
        'amdaModel.PlotNode',
        'amdaPlotObj.PlotRequestObject'
    ],
	
    hasMany: {
        model : 'amdaModel.PlotNode',
        name  : 'plots',
        associationKey:'plots'
    },
    
    constructor: function(){
    	var me = this;
    	me.callParent(arguments);
    },

    isDirty: function() {
        var dirty = false;
        this.plots().each(function(plotNode) {
            var plotObject = plotNode.get('object');
            if (plotObject && (plotObject.get('id') != '') && plotObject.dirty) {
                dirty = true;
            }
        });
        return dirty;
    },
    
    createNewPlot: function() {
        var plotObject = Ext.create('amdaPlotObj.PlotRequestObject');
        return this.createNewPlotFromObject(plotObject);
    },

    duplicatePlot: function(plotNode) {
        var me = this;
        var newPlotNode = null;
        this.plots().each(function(node, index) {
            if (node == plotNode) {
                newPlotNode = Ext.create('amdaModel.PlotNode', {
                    leaf : true
                });
		var data = plotNode.get('object').getJsonValues();
                newPlotNode.set('object', Ext.create('amdaPlotObj.PlotRequestObject', data));
		plotNode.get('object').reject();
                me.plots().remove(plotNode);
                me.plots().insert(index, [newPlotNode]);
            }
        });
        return newPlotNode;
    },

    overwritePlot: function(plotNode, targetPlotNode) {
        var targetIndex = -1;
        this.plots().each(function(node, index) {
            if (node == targetPlotNode) {
                targetIndex = index;
            }
        });
        if (targetIndex < 0) {
            //Target not exists in multiplot node => add it
            this.plots().add(targetPlotNode);
            targetIndex = this.plots().count() - 1;
        }
        var data = plotNode.get('object').getJsonValues();
        data.id = targetPlotNode.get('id');
        targetPlotNode.set('object', Ext.create('amdaPlotObj.PlotRequestObject', data));
        plotNode.get('object').reject();
        return targetPlotNode;
    },

    createNewPlotFromObject: function(plotObject) {
        var plotNode = Ext.create('amdaModel.PlotNode', {
            leaf : true
        });
        plotNode.set('object',plotObject);
        this.plots().add(plotNode);
        return this.plots().getAt(this.plots().count()-1);
    },

    removePlotByInternalId: function(internalId) {
        var plotNode = this.plots().data.getByKey(internalId);
        if (plotNode)
            this.plots().remove(plotNode);
    },

    addPlot: function(plotNode) {
    }
});