'use strict'; /* *+------------------------------------------------------------------------+ *| Licensed Materials - Property of IBM *| IBM Cognos Products: BI Dashboard *| (C) Copyright IBM Corp. 2016, 2017 *| *| US Government Users Restricted Rights - Use, duplication or disclosure *| restricted by GSA ADP Schedule Contract with IBM Corp. *+------------------------------------------------------------------------+ */ define(['../../../lib/@waca/core-client/js/core-client/ui/core/Class', '../../../lib/@waca/upgrades/UpgradeBase', './RAVE1ArcheTypes', 'underscore'], function (Class, UpgradeBase, ArcheTypes, _) { /*upgrade handlers that have special logic to do properties/slots upgrade instead of just IDs conversions*/ var UPGRADE_HANDLDERS = { pieAsDonutUpgradeHandler: function pieAsDonutUpgradeHandler(value) { if (value + '' !== 'true') { return 1; } return 0.4; }, hideRadialValueHandler: function hideRadialValueHandler(value) { if (value + '' === 'true') { return 'none'; } return 'center'; } }; /*Common slots and properties upgrade mappings across all widgets*/ var COMMON_UPGRADE_MAPPINGS = { SLOTS: { //No common slots upgrade currently }, PROPERTIES: { 'legendPosition': { 'id': 'legend.position' } } }; /*Individual chart slots and properties upgrade mappings*/ var UPGRADE_MAPPINGS = { 'area': { 'ID': 'RAVE2_smoothArea', 'SLOTS': { 'categories': 'x', 'color': 'color', 'values': 'y' } }, 'pie': { 'ID': 'RAVE2_pie', 'SLOTS': { 'categories': 'color', 'values': 'value' }, 'PROPERTIES': { 'pieAsDonut': { 'id': 'donutRadius', 'propertyValueHandler': UPGRADE_HANDLDERS.pieAsDonutUpgradeHandler }, 'hideRadialValue': { 'id': 'labelLocation', 'propertyValueHandler': UPGRADE_HANDLDERS.hideRadialValueHandler } } }, 'clusterLine': { 'ID': 'RAVE2_smoothline', 'SLOTS': { 'categories': 'x', 'values': 'y', 'color': 'color', 'valuesRepeating': 'y0' }, 'PROPERTIES': { 'symbolShape': { 'id': 'lineWithPoints.symbol' //RAVE2 default to circle } } }, 'bubble': { 'ID': 'RAVE2_bubble', 'SLOTS': { 'xAxis': 'x', 'yAxis': 'y', 'size': 'size', 'color': 'color' } }, 'packedBubble': { 'ID': 'RAVE2_packedBubble', 'SLOTS': { 'categories': 'label', 'color': 'color', 'size': 'size' } }, 'radial': { 'ID': 'RAVE2_multipleDialCategoryLabel', 'SLOTS': { 'categories': 'category', 'values': 'value', 'maxSize': 'maxValue' } }, 'radialBar': { 'ID': 'RAVE2_dial', 'SLOTS': { 'categories': 'label', 'values': 'value' } }, 'point': { 'ID': 'RAVE2_point', 'SLOTS': { 'categories': 'x', 'values': 'y', 'color': 'color' } }, 'clusterColumn': { 'ID': 'RAVE2_clusteredcolumn', 'SLOTS': { 'categories': 'x', 'color': 'color', 'values': 'y', 'valuesRepeating': 'y0' } }, 'stackedColumn': { 'ID': 'RAVE2_stackedcolumn', 'SLOTS': { 'categories': 'x', 'color': 'color', 'values': 'y', 'valuesRepeating': 'y0' } }, 'clusterBar': { 'ID': 'RAVE2_clusteredbar', 'SLOTS': { 'categories': 'x', 'color': 'color', 'values': 'y', 'valuesRepeating': 'y0' } }, 'stackedBar': { 'ID': 'RAVE2_stackedbar', 'SLOTS': { 'categories': 'x', 'color': 'color', 'values': 'y', 'valuesRepeating': 'y0' } }, 'wordCloud': { 'ID': 'RAVE2_wordcloud', 'SLOTS': { 'word': 'label', 'color': 'color', 'scale': 'size' } }, 'scatterPlot': { 'ID': 'RAVE2_scatter', 'SLOTS': { 'xAxis': 'x', 'yAxis': 'y', 'categories': 'label', 'color': 'color' } }, 'lineColumnCombo': { 'ID': 'RAVE2_compositeSmoothOneDataSet', 'SLOTS': { 'lineValue': 'yLine', 'columnValue': 'y', 'category': 'x' }, 'PROPERTIES': { 'symbolShape': { 'id': 'lineWithPoints.symbol' } } }, 'heat': { 'ID': 'RAVE2_heatmap', 'SLOTS': { 'xAxis': 'x', 'yAxis': 'y', 'values': 'color' } } }; var Upgrade = Class.extend([UpgradeBase], { init: function init() { this.VERSION = 7; }, /** * Perform upgrade * * @param {object} spec - spec to perform upgrade on * * @return {Promise} Promise to be resolved when upgrade performed */ up: function up(spec) { if (!spec) { return Promise.resolve(spec); } _.each(spec.widgets, this._widgetSpecUpgrade.bind(this)); return Promise.resolve(spec); }, _widgetSpecUpgrade: function _widgetSpecUpgrade(oWidgetSpec) { var sArchetype = oWidgetSpec.archetype || ArcheTypes.getArcheTypeFromVizId(oWidgetSpec.visId); if (sArchetype) { var oUpgradedArcheType = UPGRADE_MAPPINGS[sArchetype]; if (oUpgradedArcheType) { if (oWidgetSpec.archetype) { oWidgetSpec.archetype = oUpgradedArcheType.ID; } oWidgetSpec.visId = oUpgradedArcheType.ID; this._slotsUpgrade(oWidgetSpec.id, oWidgetSpec.mapping, sArchetype); this._propertyUpgrade(oWidgetSpec.properties, sArchetype); } } }, _propertyUpgrade: function _propertyUpgrade(properties, archetype) { _.each(properties, function (property) { this._upgradeSingleProperty(property, COMMON_UPGRADE_MAPPINGS.PROPERTIES); if (UPGRADE_MAPPINGS[archetype] && UPGRADE_MAPPINGS[archetype].PROPERTIES) { this._upgradeSingleProperty(property, UPGRADE_MAPPINGS[archetype].PROPERTIES); } }.bind(this)); }, _upgradeSingleProperty: function _upgradeSingleProperty(property, propertiesMap) { var oMatched = propertiesMap[property.id]; if (oMatched) { var sValue = property.value; if (oMatched.propertyValueHandler) { sValue = oMatched.propertyValueHandler(property.value); } property.id = oMatched.id; property.value = sValue; } }, _slotsUpgrade: function _slotsUpgrade(widgetID, oOldSlots, sArchetype) { var oMappedRave2Slots = UPGRADE_MAPPINGS[sArchetype].SLOTS; _.each(oOldSlots, function (slot) { var sId = oMappedRave2Slots[slot.slotId]; if (!sId) { var logger = this.data && this.data.logger && this.data.logger; if (logger) { this.data.logger.warn('No id for ' + widgetID + ' archetype ' + sArchetype + ' slotId ' + slot.slotId); } } else { slot.id = sId; slot.slotId = sId; } }.bind(this)); }, down: function down(spec) { // no downgrade at this time; return as is return Promise.resolve(spec); } }); return new Upgrade(); }); //# sourceMappingURL=7.js.map