7 changed files with 240 additions and 17 deletions
@ -0,0 +1,117 @@ |
|||||
|
/* |
||||
|
* Copyright © 2016-2017 The Thingsboard Authors |
||||
|
* |
||||
|
* Licensed 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 './extensions-table-widget.scss'; |
||||
|
|
||||
|
/* eslint-disable import/no-unresolved, import/default */ |
||||
|
|
||||
|
import extensionsTableWidgetTemplate from './extensions-table-widget.tpl.html'; |
||||
|
|
||||
|
/* eslint-enable import/no-unresolved, import/default */ |
||||
|
|
||||
|
export default angular.module('thingsboard.widgets.extensionsTableWidget', []) |
||||
|
.directive('tbExtensionsTableWidget', ExtensionsTableWidget) |
||||
|
.name; |
||||
|
|
||||
|
/*@ngInject*/ |
||||
|
function ExtensionsTableWidget() { |
||||
|
return { |
||||
|
restrict: "E", |
||||
|
scope: true, |
||||
|
bindToController: { |
||||
|
ctx: '=' |
||||
|
}, |
||||
|
controller: ExtensionsTableWidgetController, |
||||
|
controllerAs: 'vm', |
||||
|
templateUrl: extensionsTableWidgetTemplate |
||||
|
}; |
||||
|
} |
||||
|
|
||||
|
/*@ngInject*/ |
||||
|
function ExtensionsTableWidgetController($scope, $translate, utils) { |
||||
|
var vm = this; |
||||
|
|
||||
|
vm.datasources = null; |
||||
|
vm.tabsHidden = false; |
||||
|
|
||||
|
$scope.$watch('vm.ctx', function() { |
||||
|
if (vm.ctx && vm.ctx.defaultSubscription) { |
||||
|
vm.settings = vm.ctx.settings; |
||||
|
vm.subscription = vm.ctx.defaultSubscription; |
||||
|
vm.datasources = vm.subscription.datasources; |
||||
|
initializeConfig(); |
||||
|
updateDatasources(); |
||||
|
} |
||||
|
}); |
||||
|
|
||||
|
function initializeConfig() { |
||||
|
|
||||
|
if (vm.settings.extensionsTitle && vm.settings.extensionsTitle.length) { |
||||
|
vm.extensionsTitle = utils.customTranslation(vm.settings.extensionsTitle, vm.settings.extensionsTitle); |
||||
|
} else { |
||||
|
vm.extensionsTitle = $translate.instant('extension.extensions'); |
||||
|
} |
||||
|
vm.ctx.widgetTitle = vm.extensionsTitle; |
||||
|
|
||||
|
vm.ctx.widgetActions = [vm.addAction, vm.searchAction, vm.refreshAction]; |
||||
|
} |
||||
|
|
||||
|
function updateDatasources() { |
||||
|
|
||||
|
var datasource = vm.datasources[0]; |
||||
|
vm.selectedSource = vm.datasources[0]; |
||||
|
vm.ctx.widgetTitle = utils.createLabelFromDatasource(datasource, vm.extensionsTitle); |
||||
|
} |
||||
|
|
||||
|
vm.changeSelectedSource = function(source) { |
||||
|
vm.selectedSource = source; |
||||
|
} |
||||
|
|
||||
|
vm.searchAction = { |
||||
|
name: "action.search", |
||||
|
show: true, |
||||
|
onAction: function() { |
||||
|
$scope.$broadcast("showSearch", vm.selectedSource); |
||||
|
}, |
||||
|
icon: "search" |
||||
|
}; |
||||
|
|
||||
|
vm.refreshAction = { |
||||
|
name: "action.refresh", |
||||
|
show: true, |
||||
|
onAction: function() { |
||||
|
$scope.$broadcast("refreshExtensions", vm.selectedSource); |
||||
|
}, |
||||
|
icon: "refresh" |
||||
|
} |
||||
|
|
||||
|
vm.addAction = { |
||||
|
name: "action.add", |
||||
|
show: true, |
||||
|
onAction: function() { |
||||
|
$scope.$broadcast("addExtension", vm.selectedSource); |
||||
|
}, |
||||
|
icon: "add" |
||||
|
} |
||||
|
|
||||
|
$scope.$on("filterMode", function($event, mode) { |
||||
|
vm.tabsHidden = mode; |
||||
|
}); |
||||
|
|
||||
|
$scope.$on("selectedExtensions", function($event, mode) { |
||||
|
vm.tabsHidden = mode; |
||||
|
}); |
||||
|
} |
||||
@ -0,0 +1,29 @@ |
|||||
|
/** |
||||
|
* Copyright © 2016-2017 The Thingsboard Authors |
||||
|
* |
||||
|
* Licensed 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. |
||||
|
*/ |
||||
|
|
||||
|
tb-extension-table { |
||||
|
md-content { |
||||
|
background-color: #fff; |
||||
|
} |
||||
|
} |
||||
|
md-tabs.hide-tabs-menu { |
||||
|
md-tabs-wrapper { |
||||
|
display: none; |
||||
|
} |
||||
|
md-tabs-content-wrapper { |
||||
|
top: 0 !important; |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,27 @@ |
|||||
|
<!-- |
||||
|
|
||||
|
Copyright © 2016-2017 The Thingsboard Authors |
||||
|
|
||||
|
Licensed 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. |
||||
|
|
||||
|
--> |
||||
|
<md-tabs id="tabs" md-border-bottom flex class="tb-absolute-fill" ng-class="{'hide-tabs-menu': vm.datasources.length == 1 || vm.tabsHidden}"> |
||||
|
<md-tab ng-repeat="source in vm.datasources" label="{{ source.name }}" md-on-select="vm.changeSelectedSource(source)"> |
||||
|
<tb-extension-table flex |
||||
|
entity-id="source.entityId" |
||||
|
entity-type="{{source.entityType}}" |
||||
|
in-widget="true" |
||||
|
ctx="vm.ctx"> |
||||
|
</tb-extension-table> |
||||
|
</md-tab> |
||||
|
</md-tabs> |
||||
Loading…
Reference in new issue