2 * Copyright (c) 2014 DataTorrent, Inc. ALL Rights Reserved.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
19 angular.module('ui.dashboard')
20 .directive('widget', ['$injector', function ($injector) {
24 controller: 'DashboardWidgetCtrl',
26 link: function (scope) {
28 var widget = scope.widget;
29 var dataModelType = widget.dataModelType;
33 var DataModelConstructor; // data model constructor function
35 if (angular.isFunction(dataModelType)) {
36 DataModelConstructor = dataModelType;
37 } else if (angular.isString(dataModelType)) {
38 $injector.invoke([dataModelType, function (DataModelType) {
39 DataModelConstructor = DataModelType;
42 throw new Error('widget dataModelType should be function or string');
46 if (widget.dataModelArgs) {
47 ds = new DataModelConstructor(widget.dataModelArgs);
49 ds = new DataModelConstructor();
51 widget.dataModel = ds;
52 ds.setup(widget, scope);
54 scope.$on('$destroy', _.bind(ds.destroy,ds));
57 // Compile the widget template, emit add event
58 scope.compileTemplate();
59 scope.$emit('widgetAdded', widget);