Commit 459bcf75 authored by Pedro Eduardo Trujillo's avatar Pedro Eduardo Trujillo
Browse files

Separa WidgetProvider en nueva capa compilada

Modifica la lógica de _CustomLayout para requerir dinámicamente al
componente WidgetProvider. De esta manera, las vistas de detalle no
contienen todas las definiciones de widgets cuando se compilan. Se
define una nueva capa de compilación independiente para el componente,
de tal manera que pueda ser requerido también al compilar la app.
parent 90984295
Loading
Loading
Loading
Loading
+29 −18
Original line number Diff line number Diff line
var includeLocales = ['es', 'en'];
const includeLocales = ['es', 'en'];

var packagesMap = {
const packagesMap = {
	'd3Tip/d3-v6-tip.min': {
		'd3-selection': 'd3'
	},
@@ -9,17 +9,17 @@ var packagesMap = {
	}
};

var amdTagger = function(filename) {
const amdTagger = function(filename) {

	return /\.js$/.test(filename);
};

var copyOnlyTagger = function() {
const copyOnlyTagger = function() {

	return true;
};

var ignoreAllButExceptionsTagger = function(desiredModuleId, _filename, mid) {
const ignoreAllButExceptionsTagger = function(desiredModuleId, _filename, mid) {

	if (desiredModuleId instanceof Array) {
		return desiredModuleId.indexOf(mid) === -1;
@@ -28,12 +28,12 @@ var ignoreAllButExceptionsTagger = function(desiredModuleId, _filename, mid) {
	return mid !== desiredModuleId;
};

var declarativeTagger = function(filename) {
const declarativeTagger = function(filename) {

	return /\.htm(l)?$/.test(filename);
};

var profileObj = {
const profileObj = {
	basePath: '.',
	releaseDir: 'dist',
	releaseName: 'js',
@@ -447,14 +447,16 @@ var profileObj = {
				, 'dojo/touch'
				, 'dojo/window'
			]
		},
		'src/app/App': {
			includeLocales: includeLocales
		}
	}
};

var viewLayers = {
const componentLayers = {
	'src/app/App': {}
	, 'src/component/layout/widgetProvider/WidgetProvider': {}
};

const viewLayers = {
	// especiales
	'src/error/404': {}
	, 'src/error/NoSupportBrowser': {}
@@ -556,15 +558,24 @@ var viewLayers = {
	, 'app/edition/views/LoadDataDocumentEditionView': {}
};

var viewLayerDefaultConfig = {
	includeLocales: includeLocales
var profile = (function() {

	const layerDefaultConfig = {
		includeLocales
	};

var profile = (function() {
	for (let componentLayer in componentLayers) {
		profileObj.layers[componentLayer] = {
			...componentLayers[componentLayer],
			...layerDefaultConfig
		};
	}

	for (var viewLayer in viewLayers) {
		var viewLayerConfig = viewLayers[viewLayer];
		profileObj.layers[viewLayer] = { ...viewLayerConfig, ...viewLayerDefaultConfig };
	for (let viewLayer in viewLayers) {
		profileObj.layers[viewLayer] = {
			...viewLayers[viewLayer],
			...layerDefaultConfig
		};
	}

	return profileObj;
+31 −14
Original line number Diff line number Diff line
define([
	'dojo/_base/declare'
	, 'dojo/_base/lang'
	, 'src/component/layout/widgetProvider/WidgetProvider'
	, 'dojo/Deferred'
], function(
	declare
	, lang
	, WidgetProvider
	, Deferred
) {

	return declare(null, {
@@ -33,6 +33,7 @@ define([

			this.inherited(arguments);

			this._getWidgetsConfigHandler = this._onceEvt('GET_WIDGETS_CONFIG', (obj) => this._onGetWidgetsConfig(obj));
			this._onEvt('ME_OR_ANCESTOR_HIDDEN', lang.hitch(this, this._onCustomLayoutHidden));
		},

@@ -40,29 +41,45 @@ define([

			this.inherited(arguments);

			this._widgetProvider = new WidgetProvider({
				parentChannel: this.getChannel()
			});
			const dfd = new Deferred();

			require(['src/component/layout/widgetProvider/WidgetProvider'],
				(WidgetProvider) => this._onWidgetProviderRequired(WidgetProvider, dfd));

			this._widgetProviderDfd = dfd;

			return dfd;
		},

		_defineSubscriptions: function() {
		_onGetWidgetsConfig: function(obj) {

			this.inherited(arguments);
			if (this._widgetProviderDfd && !this._widgetProviderDfd.isFulfilled()) {
				this._widgetProviderDfd.then(() => this._emitEvt('GET_WIDGETS_CONFIG', obj));
				return;
			}

			this.subscriptionsConfig.push({
				channel: this._widgetProvider.getChannel('GOT_WIDGET_CONFIG'),
				callback: '_subGotWidgetConfig'
			});
			console.error('WidgetProvider component not available, failed to get widgets configuration!');
		},

		_definePublications: function() {
		_onWidgetProviderRequired: function(WidgetProvider, dfd) {

			this.inherited(arguments);
			this._widgetProvider = new WidgetProvider({
				parentChannel: this.getChannel()
			});

			this.publicationsConfig.push({
			this._setSubscription({
				channel: this._widgetProvider.getChannel('GOT_WIDGET_CONFIG'),
				callback: '_subGotWidgetConfig'
			});

			this._setPublication({
				event: 'GET_WIDGETS_CONFIG',
				channel: this._widgetProvider.getChannel('GET_WIDGETS_CONFIG')
			});

			this._getWidgetsConfigHandler?.remove?.();

			dfd.resolve();
		},

		_subGotWidgetConfig: function(res) {
+2 −2
Original line number Diff line number Diff line
@@ -16,8 +16,8 @@ module.exports = function(grunt) {
			'leaflet/dist/images/*.png'
		],
		cleanSrcFileExceptions: [
			'App.js', '*[A-Za-z0-9]View.js', '_Edition.js', '*Form.html', '404.js', 'ActivateAccount.js',
			'NoSupportBrowser.js'
			'App.js', '*[A-Za-z0-9]View.js', '_Edition.js', 'WidgetProvider.js', '*Form.html', '404.js',
			'ActivateAccount.js', 'NoSupportBrowser.js'
		]
	});
};
+0 −20
Original line number Diff line number Diff line
@@ -72,25 +72,6 @@ module.exports = function(grunt) {
		return cleanRecursiveDirsCmd;
	};

	// TODO desaparecerá cuando todo vaya por src/
	var oldGetCleanAppFilesCmds = function() {

		var fileExtension = '.js',
			strippedSuffix = 'consoleStripped' + fileExtension,
			uncompressedSuffix = 'uncompressed' + fileExtension,
			strippedFiles = '*.' + strippedSuffix,
			uncompressedFiles = '*.' + uncompressedSuffix,
			filesToClean = [strippedFiles, uncompressedFiles];

		var cleanAppFilesCmd = 'find ' + path.join(destPath, 'app', '/') + ' -type f';

		for (var j = 0; j < filesToClean.length; j++) {
			cleanAppFilesCmd += (j === 0 ? '' : ' -o') + ' -name "' + filesToClean[j] + '" -delete';
		}

		return cleanAppFilesCmd;
	};

	// TODO desaparecerá cuando todo vaya por src/
	var getCleanAppFilesCmds = function(fileExceptions) {

@@ -141,7 +122,6 @@ module.exports = function(grunt) {
				getCleanDirectoriesCmd(cleanBuiltAppConfig.directoriesToClean),
				getCleanRecursiveDirectoriesCmd(cleanBuiltAppConfig.recursiveDirectoriesToClean),
				keepAndRestoreCmds.restoreFilesCmds,
				//oldGetCleanAppFilesCmds(),
				getCleanAppFilesCmds(cleanBuiltAppConfig.cleanSrcFileExceptions),
				getCleanSrcFilesCmds(cleanBuiltAppConfig.cleanSrcFileExceptions),
				getCleanEmptyDirectoriesCmds()