You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ak...@apache.org on 2018/04/02 04:50:07 UTC
ignite git commit: IGNITE-8095 Web Console: Refactored previews for
generated code.
Repository: ignite
Updated Branches:
refs/heads/master 79be449dc -> f80d3a95d
IGNITE-8095 Web Console: Refactored previews for generated code.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/f80d3a95
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/f80d3a95
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/f80d3a95
Branch: refs/heads/master
Commit: f80d3a95d7abcab16138808e3b6f0785308867f1
Parents: 79be449
Author: Vasiliy Sisko <vs...@gridgain.com>
Authored: Mon Apr 2 11:49:10 2018 +0700
Committer: Alexey Kuznetsov <ak...@apache.org>
Committed: Mon Apr 2 11:49:10 2018 +0700
----------------------------------------------------------------------
modules/web-console/frontend/app/app.js | 9 +-
.../app/directives/ui-ace-java/index.js | 26 ++++
.../ui-ace-java/ui-ace-java.controller.js | 108 +------------
.../ui-ace-java/ui-ace-java.directive.js | 43 ++----
.../app/directives/ui-ace-spring/index.js | 26 ++++
.../ui-ace-spring/ui-ace-spring.controller.js | 104 +------------
.../ui-ace-spring/ui-ace-spring.directive.js | 46 ++----
.../app/directives/ui-ace.controller.js | 154 +++++++++++++++++++
8 files changed, 239 insertions(+), 277 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/f80d3a95/modules/web-console/frontend/app/app.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/app.js b/modules/web-console/frontend/app/app.js
index d015ba9..d01d9aa 100644
--- a/modules/web-console/frontend/app/app.js
+++ b/modules/web-console/frontend/app/app.js
@@ -60,8 +60,6 @@ import igniteOnEnterFocusMove from './directives/on-enter-focus-move.directive.j
import igniteOnEscape from './directives/on-escape.directive.js';
import igniteOnFocusOut from './directives/on-focus-out.directive.js';
import igniteRestoreInputFocus from './directives/restore-input-focus.directive.js';
-import igniteUiAceJava from './directives/ui-ace-java/ui-ace-java.directive';
-import igniteUiAceSpring from './directives/ui-ace-spring/ui-ace-spring.directive';
import igniteUiAceCSharp from './directives/ui-ace-sharp/ui-ace-sharp.directive';
import igniteUiAcePojos from './directives/ui-ace-pojos/ui-ace-pojos.directive';
import igniteUiAcePom from './directives/ui-ace-pom/ui-ace-pom.directive';
@@ -142,6 +140,9 @@ import pagePasswordReset from './components/page-password-reset';
import igniteServices from './services';
+import uiAceJava from './directives/ui-ace-java';
+import uiAceSpring from './directives/ui-ace-spring';
+
// Inject external modules.
import IgniteModules from 'IgniteModules/index';
@@ -227,6 +228,8 @@ angular.module('ignite-console', [
pageLanding.name,
pagePasswordChanged.name,
pagePasswordReset.name,
+ uiAceJava.name,
+ uiAceSpring.name,
breadcrumbs.name,
// Ignite modules.
IgniteModules.name
@@ -244,8 +247,6 @@ angular.module('ignite-console', [
.directive(...igniteOnEnter)
.directive(...igniteOnEnterFocusMove)
.directive(...igniteOnEscape)
-.directive(...igniteUiAceSpring)
-.directive(...igniteUiAceJava)
.directive(...igniteUiAceCSharp)
.directive(...igniteUiAcePojos)
.directive(...igniteUiAcePom)
http://git-wip-us.apache.org/repos/asf/ignite/blob/f80d3a95/modules/web-console/frontend/app/directives/ui-ace-java/index.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/directives/ui-ace-java/index.js b/modules/web-console/frontend/app/directives/ui-ace-java/index.js
new file mode 100644
index 0000000..2efdf32
--- /dev/null
+++ b/modules/web-console/frontend/app/directives/ui-ace-java/index.js
@@ -0,0 +1,26 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import angular from 'angular';
+
+import UiAceJavaDirective from './ui-ace-java.directive';
+
+export default angular.module('ignite-console.ui-ace-java', [
+ 'ignite-console.services',
+ 'ignite-console.configuration'
+])
+.directive('igniteUiAceJava', UiAceJavaDirective);
http://git-wip-us.apache.org/repos/asf/ignite/blob/f80d3a95/modules/web-console/frontend/app/directives/ui-ace-java/ui-ace-java.controller.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/directives/ui-ace-java/ui-ace-java.controller.js b/modules/web-console/frontend/app/directives/ui-ace-java/ui-ace-java.controller.js
index efd317c..2d636c0 100644
--- a/modules/web-console/frontend/app/directives/ui-ace-java/ui-ace-java.controller.js
+++ b/modules/web-console/frontend/app/directives/ui-ace-java/ui-ace-java.controller.js
@@ -15,108 +15,8 @@
* limitations under the License.
*/
-export default ['IgniteVersion', 'JavaTransformer', function(Version, java) {
- const ctrl = this;
+import IgniteUiAceGeneratorFactory from '../ui-ace.controller';
- this.$onInit = () => {
- delete ctrl.data;
-
- const client = ctrl.client === 'true';
-
- const available = Version.available.bind(Version);
-
- // Setup generator.
- switch (ctrl.generator) {
- case 'igniteConfiguration':
- const clsName = client ? 'ClientConfigurationFactory' : 'ServerConfigurationFactory';
-
- ctrl.generate = (cluster) => java.cluster(cluster, Version.currentSbj.getValue(), 'config', clsName, client);
-
- break;
- case 'clusterCaches':
- ctrl.generate = (cluster, caches) => {
- const clusterCaches = _.reduce(caches, (acc, cache) => {
- if (_.includes(cluster.caches, cache.value))
- acc.push(cache.cache);
-
- return acc;
- }, []);
-
- const cfg = java.generator.clusterGeneral(cluster, available);
-
- java.generator.clusterCaches(cluster, clusterCaches, null, available, false, cfg);
-
- return java.toSection(cfg);
- };
-
- break;
- case 'cacheStore':
- case 'cacheQuery':
- ctrl.generate = (cache, domains) => {
- const cacheDomains = _.reduce(domains, (acc, domain) => {
- if (_.includes(cache.domains, domain.value))
- acc.push(domain.meta);
-
- return acc;
- }, []);
-
- return java[ctrl.generator](cache, cacheDomains, available);
- };
-
- break;
- case 'cacheNodeFilter':
- ctrl.generate = (cache, igfss) => {
- const cacheIgfss = _.reduce(igfss, (acc, igfs) => {
- acc.push(igfs.igfs);
-
- return acc;
- }, []);
-
- return java.cacheNodeFilter(cache, cacheIgfss);
- };
-
- break;
- case 'clusterServiceConfiguration':
- ctrl.generate = (cluster, caches) => {
- const clusterCaches = _.reduce(caches, (acc, cache) => {
- if (_.includes(cluster.caches, cache.value))
- acc.push(cache.cache);
-
- return acc;
- }, []);
-
- return java.clusterServiceConfiguration(cluster.serviceConfigurations, clusterCaches);
- };
-
- break;
- case 'clusterCheckpoint':
- ctrl.generate = (cluster, caches) => {
- const clusterCaches = _.reduce(caches, (acc, cache) => {
- if (_.includes(cluster.caches, cache.value))
- acc.push(cache.cache);
-
- return acc;
- }, []);
-
- return java.clusterCheckpoint(cluster, available, clusterCaches);
- };
-
- break;
- case 'igfss':
- ctrl.generate = (cluster, igfss) => {
- const clusterIgfss = _.reduce(igfss, (acc, igfs) => {
- if (_.includes(cluster.igfss, igfs.value))
- acc.push(igfs.igfs);
-
- return acc;
- }, []);
-
- return java.clusterIgfss(clusterIgfss, available);
- };
-
- break;
- default:
- ctrl.generate = (master) => java[ctrl.generator](master, available);
- }
- };
-}];
+export default class IgniteUiAceJava extends IgniteUiAceGeneratorFactory {
+ static $inject = ['$scope', '$attrs', 'IgniteVersion', 'JavaTransformer'];
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/f80d3a95/modules/web-console/frontend/app/directives/ui-ace-java/ui-ace-java.directive.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/directives/ui-ace-java/ui-ace-java.directive.js b/modules/web-console/frontend/app/directives/ui-ace-java/ui-ace-java.directive.js
index 5d1df42..62eb376 100644
--- a/modules/web-console/frontend/app/directives/ui-ace-java/ui-ace-java.directive.js
+++ b/modules/web-console/frontend/app/directives/ui-ace-java/ui-ace-java.directive.js
@@ -16,36 +16,9 @@
*/
import template from './ui-ace-java.pug';
-import controller from './ui-ace-java.controller';
-
-export default ['igniteUiAceJava', ['IgniteVersion', (Version) => {
- const link = (scope, $el, attrs, [ctrl, igniteUiAceTabs, formCtrl, ngModelCtrl]) => {
- if (formCtrl && ngModelCtrl)
- formCtrl.$removeControl(ngModelCtrl);
-
- if (igniteUiAceTabs && igniteUiAceTabs.onLoad) {
- scope.onLoad = (editor) => {
- igniteUiAceTabs.onLoad(editor);
-
- scope.$watch('master', () => editor.attractAttention = false);
- };
- }
-
- if (igniteUiAceTabs && igniteUiAceTabs.onChange)
- scope.onChange = igniteUiAceTabs.onChange;
-
- const noDeepWatch = !(typeof attrs.noDeepWatch !== 'undefined');
-
- const next = () => {
- ctrl.data = _.isNil(scope.master) ? null : ctrl.generate(scope.master, scope.detail).asString();
- };
-
- // Setup watchers.
- scope.$watch('master', next, noDeepWatch);
-
- Version.currentSbj.subscribe({next});
- };
+import IgniteUiAceJava from './ui-ace-java.controller';
+export default () => {
return {
priority: 1,
restrict: 'E',
@@ -58,10 +31,14 @@ export default ['igniteUiAceJava', ['IgniteVersion', (Version) => {
generator: '@',
client: '@'
},
- link,
template,
- controller,
+ controller: IgniteUiAceJava,
controllerAs: 'ctrl',
- require: ['igniteUiAceJava', '?^igniteUiAceTabs', '?^form', '?ngModel']
+ require: {
+ ctrl: 'igniteUiAceJava',
+ igniteUiAceTabs: '?^igniteUiAceTabs',
+ formCtrl: '?^form',
+ ngModelCtrl: '?ngModel'
+ }
};
-}]];
+};
http://git-wip-us.apache.org/repos/asf/ignite/blob/f80d3a95/modules/web-console/frontend/app/directives/ui-ace-spring/index.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/directives/ui-ace-spring/index.js b/modules/web-console/frontend/app/directives/ui-ace-spring/index.js
new file mode 100644
index 0000000..8bb75dc
--- /dev/null
+++ b/modules/web-console/frontend/app/directives/ui-ace-spring/index.js
@@ -0,0 +1,26 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import angular from 'angular';
+
+import UiAceSpringDirective from './ui-ace-spring.directive';
+
+export default angular.module('ignite-console.ui-ace-spring', [
+ 'ignite-console.services',
+ 'ignite-console.configuration'
+])
+.directive('igniteUiAceSpring', UiAceSpringDirective);
http://git-wip-us.apache.org/repos/asf/ignite/blob/f80d3a95/modules/web-console/frontend/app/directives/ui-ace-spring/ui-ace-spring.controller.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/directives/ui-ace-spring/ui-ace-spring.controller.js b/modules/web-console/frontend/app/directives/ui-ace-spring/ui-ace-spring.controller.js
index 5df734f..09c351c 100644
--- a/modules/web-console/frontend/app/directives/ui-ace-spring/ui-ace-spring.controller.js
+++ b/modules/web-console/frontend/app/directives/ui-ace-spring/ui-ace-spring.controller.js
@@ -15,104 +15,8 @@
* limitations under the License.
*/
-export default ['IgniteVersion', 'SpringTransformer', function(Version, spring) {
- const ctrl = this;
+import IgniteUiAceGeneratorFactory from '../ui-ace.controller';
- this.$onInit = () => {
- delete ctrl.data;
-
- const available = Version.available.bind(Version);
-
- // Setup generator.
- switch (ctrl.generator) {
- case 'igniteConfiguration':
- ctrl.generate = (cluster) => spring.cluster(cluster, Version.currentSbj.getValue(), ctrl.client === 'true');
-
- break;
- case 'clusterCaches':
- ctrl.generate = (cluster, caches) => {
- const clusterCaches = _.reduce(caches, (acc, cache) => {
- if (_.includes(cluster.caches, cache.value))
- acc.push(cache.cache);
-
- return acc;
- }, []);
-
- const cfg = spring.generator.clusterGeneral(cluster, available);
-
- spring.generator.clusterCaches(cluster, clusterCaches, null, available, false, cfg);
-
- return spring.toSection(cfg);
- };
-
- break;
- case 'cacheStore':
- case 'cacheQuery':
- ctrl.generate = (cache, domains) => {
- const cacheDomains = _.reduce(domains, (acc, domain) => {
- if (_.includes(cache.domains, domain.value))
- acc.push(domain.meta);
-
- return acc;
- }, []);
-
- return spring[ctrl.generator](cache, cacheDomains, available);
- };
-
- break;
- case 'cacheNodeFilter':
- ctrl.generate = (cache, igfss) => {
- const cacheIgfss = _.reduce(igfss, (acc, igfs) => {
- acc.push(igfs.igfs);
-
- return acc;
- }, []);
-
- return spring.cacheNodeFilter(cache, cacheIgfss);
- };
-
- break;
- case 'clusterServiceConfiguration':
- ctrl.generate = (cluster, caches) => {
- const clusterCaches = _.reduce(caches, (acc, cache) => {
- if (_.includes(cluster.caches, cache.value))
- acc.push(cache.cache);
-
- return acc;
- }, []);
-
- return spring.clusterServiceConfiguration(cluster.serviceConfigurations, clusterCaches);
- };
-
- break;
- case 'clusterCheckpoint':
- ctrl.generate = (cluster, caches) => {
- const clusterCaches = _.reduce(caches, (acc, cache) => {
- if (_.includes(cluster.caches, cache.value))
- acc.push(cache.cache);
-
- return acc;
- }, []);
-
- return spring.clusterCheckpoint(cluster, available, clusterCaches);
- };
-
- break;
- case 'igfss':
- ctrl.generate = (cluster, igfss) => {
- const clusterIgfss = _.reduce(igfss, (acc, igfs) => {
- if (_.includes(cluster.igfss, igfs.value))
- acc.push(igfs.igfs);
-
- return acc;
- }, []);
-
- return spring.clusterIgfss(clusterIgfss, available);
- };
-
- break;
- default:
- ctrl.generate = (master) => spring[ctrl.generator](master, available);
- }
- };
-}];
+export default class IgniteUiAceSpring extends IgniteUiAceGeneratorFactory {
+ static $inject = ['$scope', '$attrs', 'IgniteVersion', 'SpringTransformer'];
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/f80d3a95/modules/web-console/frontend/app/directives/ui-ace-spring/ui-ace-spring.directive.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/directives/ui-ace-spring/ui-ace-spring.directive.js b/modules/web-console/frontend/app/directives/ui-ace-spring/ui-ace-spring.directive.js
index 953d6cd..8655fd1 100644
--- a/modules/web-console/frontend/app/directives/ui-ace-spring/ui-ace-spring.directive.js
+++ b/modules/web-console/frontend/app/directives/ui-ace-spring/ui-ace-spring.directive.js
@@ -15,40 +15,10 @@
* limitations under the License.
*/
-import _ from 'lodash';
-
import template from './ui-ace-spring.pug';
-import controller from './ui-ace-spring.controller';
-
-export default ['igniteUiAceSpring', ['IgniteVersion', (Version) => {
- const link = (scope, $el, attrs, [ctrl, igniteUiAceTabs, formCtrl, ngModelCtrl]) => {
- if (formCtrl && ngModelCtrl)
- formCtrl.$removeControl(ngModelCtrl);
-
- if (igniteUiAceTabs && igniteUiAceTabs.onLoad) {
- scope.onLoad = (editor) => {
- igniteUiAceTabs.onLoad(editor);
-
- // Disable highlight in model switch.
- scope.$watch('master', () => editor.attractAttention = false);
- };
- }
-
- if (igniteUiAceTabs && igniteUiAceTabs.onChange)
- scope.onChange = igniteUiAceTabs.onChange;
-
- const noDeepWatch = !(typeof attrs.noDeepWatch !== 'undefined');
-
- const next = () => {
- ctrl.data = _.isNil(scope.master) ? null : ctrl.generate(scope.master, scope.detail).asString();
- };
-
- // Setup watchers.
- scope.$watch('master', next, noDeepWatch);
-
- Version.currentSbj.subscribe({next});
- };
+import IgniteUiAceSpring from './ui-ace-spring.controller';
+export default () => {
return {
priority: 1,
restrict: 'E',
@@ -61,10 +31,14 @@ export default ['igniteUiAceSpring', ['IgniteVersion', (Version) => {
generator: '@',
client: '@'
},
- link,
template,
- controller,
+ controller: IgniteUiAceSpring,
controllerAs: 'ctrl',
- require: ['igniteUiAceSpring', '?^igniteUiAceTabs', '?^form', '?ngModel']
+ require: {
+ ctrl: 'igniteUiAceSpring',
+ igniteUiAceTabs: '?^igniteUiAceTabs',
+ formCtrl: '?^form',
+ ngModelCtrl: '?ngModel'
+ }
};
-}]];
+};
http://git-wip-us.apache.org/repos/asf/ignite/blob/f80d3a95/modules/web-console/frontend/app/directives/ui-ace.controller.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/directives/ui-ace.controller.js b/modules/web-console/frontend/app/directives/ui-ace.controller.js
new file mode 100644
index 0000000..96e9c5e
--- /dev/null
+++ b/modules/web-console/frontend/app/directives/ui-ace.controller.js
@@ -0,0 +1,154 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+export default class IgniteUiAceGeneratorFactory {
+ constructor($scope, $attrs, Version, generatorFactory) {
+ this.scope = $scope;
+ this.attrs = $attrs;
+ this.Version = Version;
+ this.generatorFactory = generatorFactory;
+ }
+
+ $onInit() {
+ delete this.data;
+
+ const available = this.Version.available.bind(this.Version);
+
+ // Setup generator.
+ switch (this.generator) {
+ case 'igniteConfiguration':
+ this.generate = (cluster) => this.generatorFactory.cluster(cluster, this.Version.currentSbj.getValue(), this.client === 'true');
+
+ break;
+ case 'clusterCaches':
+ this.generate = (cluster, caches) => {
+ const clusterCaches = _.reduce(caches, (acc, cache) => {
+ if (_.includes(cluster.caches, cache.value))
+ acc.push(cache.cache);
+
+ return acc;
+ }, []);
+
+ const cfg = this.generatorFactory.generator.clusterGeneral(cluster, available);
+
+ this.generatorFactory.generator.clusterCaches(cluster, clusterCaches, null, available, false, cfg);
+
+ return this.generatorFactory.toSection(cfg);
+ };
+
+ break;
+ case 'cacheStore':
+ case 'cacheQuery':
+ this.generate = (cache, domains) => {
+ const cacheDomains = _.reduce(domains, (acc, domain) => {
+ if (_.includes(cache.domains, domain.value))
+ acc.push(domain.meta);
+
+ return acc;
+ }, []);
+
+ return this.generatorFactory[this.generator](cache, cacheDomains, available);
+ };
+
+ break;
+ case 'cacheNodeFilter':
+ this.generate = (cache, igfss) => {
+ const cacheIgfss = _.reduce(igfss, (acc, igfs) => {
+ acc.push(igfs.igfs);
+
+ return acc;
+ }, []);
+
+ return this.generatorFactory.cacheNodeFilter(cache, cacheIgfss);
+ };
+
+ break;
+ case 'clusterServiceConfiguration':
+ this.generate = (cluster, caches) => {
+ const clusterCaches = _.reduce(caches, (acc, cache) => {
+ if (_.includes(cluster.caches, cache.value))
+ acc.push(cache.cache);
+
+ return acc;
+ }, []);
+
+ return this.generatorFactory.clusterServiceConfiguration(cluster.serviceConfigurations, clusterCaches);
+ };
+
+ break;
+ case 'clusterCheckpoint':
+ this.generate = (cluster, caches) => {
+ const clusterCaches = _.reduce(caches, (acc, cache) => {
+ if (_.includes(cluster.caches, cache.value))
+ acc.push(cache.cache);
+
+ return acc;
+ }, []);
+
+ return this.generatorFactory.clusterCheckpoint(cluster, available, clusterCaches);
+ };
+
+ break;
+ case 'igfss':
+ this.generate = (cluster, igfss) => {
+ const clusterIgfss = _.reduce(igfss, (acc, igfs) => {
+ if (_.includes(cluster.igfss, igfs.value))
+ acc.push(igfs.igfs);
+
+ return acc;
+ }, []);
+
+ return this.generatorFactory.clusterIgfss(clusterIgfss, available);
+ };
+
+ break;
+ default:
+ this.generate = (master) => this.generatorFactory[this.generator](master, available);
+ }
+ }
+
+ $postLink() {
+ if (this.formCtrl && this.ngModelCtrl)
+ this.formCtrl.$removeControl(this.ngModelCtrl);
+
+ if (this.igniteUiAceTabs && this.igniteUiAceTabs.onLoad) {
+ this.scope.onLoad = (editor) => {
+ this.igniteUiAceTabs.onLoad(editor);
+
+ this.scope.$watch('master', () => editor.attractAttention = false);
+ };
+ }
+
+ if (this.igniteUiAceTabs && this.igniteUiAceTabs.onChange)
+ this.scope.onChange = this.igniteUiAceTabs.onChange;
+
+ const noDeepWatch = !(typeof this.attrs.noDeepWatch !== 'undefined');
+
+ const next = () => {
+ this.ctrl.data = _.isNil(this.scope.master) ? null : this.ctrl.generate(this.scope.master, this.scope.detail).asString();
+ };
+
+ // Setup watchers.
+ this.scope.$watch('master', next, noDeepWatch);
+
+ this.subscription = this.Version.currentSbj.subscribe({next});
+ }
+
+ $onDestroy() {
+ this.subscription.unsubscribe();
+ }
+}