'use strict';

/**
 * Licensed Materials - Property of IBM
 *
 * IBM Cognos Products: BI Dashboard
 *
 * Copyright IBM Corp. 2016, 2020
 *
 * US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
 */
define(['underscore', '../../../lib/@waca/core-client/js/core-client/ui/content/dialog/OpenDialog', 'bi/content_apps/utils/ContentStoreObject', '../../nls/StringResources'], function (_, BaseDialog, ContentStoreObject, resources) {

	var RelinkDialog = BaseDialog.extend({
		oDataset: null,
		/**
   * @param options {object} Options to initialize the dialog object
   * */
		init: function init(options) {
			this.glassContext = options.glassContext;
			this.setDataset(options.dataset);
			RelinkDialog.inherited('init', this, [this.getRelinkDlgOptions(options)]);
		},

		/**
   * Populate the options used to initialize dataset relink dialog
   * @param {object} options:{context:<object>, dataset:<object>}
   *
   * @returns {object}
   */
		getRelinkDlgOptions: function getRelinkDlgOptions(options) {
			var supportedTypes = ['module', 'dataSet2', 'uploadedFile', 'package'];
			var filtersByType = ['folder|package|module|dataSet2|uploadedFile'];
			var oResult = {
				'primaryBtnText': resources.get('dlg_use'),
				'typesToOpen': supportedTypes,
				'dialogTitle': resources.get('dlg_RelinkDatasetTitle', {
					'datasetName': _.escape(options.dataset.name)
				}),
				'filtersByTypes': filtersByType,
				'multiSelect': false,
				'glassContext': this.glassContext,
				'onOpenCallback': this.onOpenCallback.bind(this)
			};
			var oDepRefAncestors = options.dataset.ancestors;
			if (oDepRefAncestors && oDepRefAncestors.length > 0) {
				var oLastItem = _.last(oDepRefAncestors);
				oResult.url = oLastItem._meta.links.items.url;
				oResult.selfUrl = oLastItem._meta.links.self.url;
				oResult.ancestors = this.getAncestors(oDepRefAncestors);
			}
			return oResult;
		},

		/**
   * @return {object} Dataset object that is to be relinked
   * */
		getDataset: function getDataset() {
			return this.oDataset;
		},

		setDataset: function setDataset(dataset) {
			this.oDataset = dataset;
		},

		/**
   * Return the ancestors object which content open view supports
   * @return {array}
   * @param {array} ancestors Object returned originally from dataset deployment reference
   * */
		getAncestors: function getAncestors(ancestors) {
			return ContentStoreObject.getAncestors({
				'ancestors': ancestors
			});
		},

		/**
   * Callback hander after user clicks 'use' button to do dataset relink
   * @param {object} item selected from dialog
   * */
		onOpenCallback: function onOpenCallback(selectedItem) {
			if (selectedItem && selectedItem.length > 0) {
				var item = selectedItem[0];
				var oNewDatasetObj = {
					'id': item.id,
					'name': item.defaultName,
					'type': item.type,
					'state': 'ready',
					'ancestors': item.ancestors
				};
				if (this.oDataset) {
					this.oDataset.set(oNewDatasetObj);
				}
			}
		}
	});

	return RelinkDialog;
});
//# sourceMappingURL=DatasetRelinkDialog.js.map