diff src/implab/components/_ActivatableMixin.js @ 34:27e8e9e38e07 default tip

Слияние
author nickolay
date Wed, 05 Jun 2019 20:44:15 +0300
parents 8af8e840dd49 1dc2fd263b90
children
line wrap: on
line diff
--- a/src/implab/components/_ActivatableMixin.js	Wed Jun 05 17:44:17 2019 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,153 +0,0 @@
-define(["dojo/_base/declare", "../guard", "./StateMachine", "../log/_LogMixin", ], function (declare, guard, StateMachine, _LogMixin) {
-
-	var states = {
-		inactive: {
-			activate: "activating"
-		},
-		activating: {
-			success: "active",
-			failed: "inactive"
-		},
-		active: {
-			deactivate: "deactivating"
-		},
-		deactivating: {
-			success: "inactive",
-			failed: "active"
-		}
-	};
-
-	return declare([_LogMixin], {
-		_controller: null,
-
-		_active: null,
-
-		constructor: function () {
-			this._active = new StateMachine({
-				states: states,
-				initial: "inactive"
-			});
-		},
-
-		/**
-		 * @returns {Object} контроллер для активации текущей компоненты
-		 */
-		getController: function () {
-			return this._controller;
-		},
-
-		/**
-		 * @param {Object}
-		 *            v Контроллер для активации текущей компоненты
-		 */
-		setController: function (v) {
-			this._controller = v;
-		},
-
-		/**
-		 * @returns {Boolean} текущая компонента активна
-		 */
-		isActive: function () {
-			return this._active.current == "active";
-		},
-
-		assertActive: function () {
-			if (!this.isActive())
-				throw new Error("The object must be active to perform the operation");
-		},
-
-		/**
-		 * Активирует текущую компоненту, если у текущей компоненты задан
-		 * контроллер, то активация будет осуществляться через него
-		 * 
-		 * @async
-		 * @param{Boolean}
-		 *            direct вызов должен осуществится напрямую, без участия
-		 *            контроллера.
-		 * @return{Boolean} успешно/неуспешно
-		 */
-		activate: function (direct) {
-			var me = this;
-			if (!direct && this._controller)
-				return me._controller.activate(me).then(function () {
-					me.onActivated();
-				});
-
-			me._active.move("activate");
-			return guard(me, "onActivating").then(function () {
-				me.log("Activated");
-				me._active.move("success");
-				if (!me._controller)
-					me.onActivated();
-			}, function (err) {
-				console.error(err);
-				me.error("Activation failed: {0}", err);
-				me._active.move("failed");
-				throw err;
-			});
-		},
-
-		/**
-		 * Деактивирует текущую компоненту, если у компоненты задан контроллер,
-		 * то деактивация будет осуществляться через него.
-		 * 
-		 * @async
-		 * @param{Boolean} direct вызов должен осуществится напрямую, без
-		 *                 участия контроллера.
-		 * 
-		 */
-		deactivate: function (direct) {
-			var me = this;
-			if (!direct && me._controller)
-				return me._controller.deactivate(me).then(function () {
-					me.onDeactivated();
-				});
-
-			me._active.move("deactivate");
-			return guard(me, "onDeactivating").then(function () {
-				me.log("Deactivated");
-				me._active.move("success");
-				if (!me._controller)
-					me.onDeactivated();
-			}, function (err) {
-				console.error(err);
-				me.error("Deactivation failed: {0}", err);
-				me.move("failed");
-				throw err;
-			});
-
-		},
-
-		toogleActive: function () {
-			var me = this;
-			return (me.isActive() ? me.deactivate() : me.activate()).then(function () {
-				return me.isActive();
-			});
-		},
-
-		/**
-		 * Событие вызывается перед активацией текущей компоненты
-		 * 
-		 * @returns{Boolean|undefined} если false - активация будет отменена
-		 */
-		onActivating: function () {},
-
-		/**
-		 * Событие вызывается перед деактивацией текущей компоненты
-		 * 
-		 * @returns {Boolean|undefined} если false - деактивация будет отменена
-		 */
-		onDeactivating: function () {},
-
-		/**
-		 * Событие вызывается после активации текущей компоненты
-		 */
-		onActivated: function () {},
-
-		/**
-		 * Событие вызывается после деактивации текущей компоненты
-		 */
-		onDeactivated: function () {}
-
-	});
-});
\ No newline at end of file