11 changed files with 332 additions and 160 deletions
@ -0,0 +1,91 @@ |
|||||
|
/* |
||||
|
* Copyright © 2016-2019 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 './timeinterval.scss';
|
||||
|
|
||||
|
/* eslint-disable import/no-unresolved, import/default */ |
||||
|
|
||||
|
import tableColumnsAssignment from './table-columns-assignment.tpl.html'; |
||||
|
|
||||
|
/* eslint-enable import/no-unresolved, import/default */ |
||||
|
|
||||
|
/*@ngInject*/ |
||||
|
export default function TableColumnsAssignment() { |
||||
|
return { |
||||
|
restrict: "E", |
||||
|
scope: true, |
||||
|
bindToController: { |
||||
|
theForm: '=?', |
||||
|
columns: '=', |
||||
|
entityType: '=', |
||||
|
}, |
||||
|
templateUrl: tableColumnsAssignment, |
||||
|
controller: TableColumnsAssignmentController, |
||||
|
controllerAs: 'vm' |
||||
|
}; |
||||
|
} |
||||
|
|
||||
|
/*@ngInject*/ |
||||
|
function TableColumnsAssignmentController($scope, types, $timeout) { |
||||
|
var vm = this; |
||||
|
|
||||
|
vm.columnTypes = {}; |
||||
|
vm.entityField = {}; |
||||
|
|
||||
|
switch (vm.entityType) { |
||||
|
case types.entityType.device: |
||||
|
vm.columnTypes.sharedAttribute = types.entityGroup.columnType.sharedAttribute; |
||||
|
vm.columnTypes.serverAttribute = types.entityGroup.columnType.serverAttribute; |
||||
|
vm.columnTypes.timeseries = types.entityGroup.columnType.timeseries; |
||||
|
vm.columnTypes.entityField = types.entityGroup.columnType.entityField; |
||||
|
break; |
||||
|
} |
||||
|
|
||||
|
vm.entityField.name = types.entityGroup.entityField.name; |
||||
|
|
||||
|
switch (vm.entityType) { |
||||
|
case types.entityType.device: |
||||
|
vm.entityField.type = types.entityGroup.entityField.type; |
||||
|
// vm.entityField.assigned_customer = types.entityGroup.entityField.assigned_customer;
|
||||
|
break; |
||||
|
} |
||||
|
|
||||
|
$scope.$watch('vm.columns', function(newVal, prevVal){ |
||||
|
if (newVal && !angular.equals(newVal, prevVal)) { |
||||
|
var isSelectName = false; |
||||
|
var isSelectType = false; |
||||
|
for (var i = 0; i < newVal.length; i++) { |
||||
|
if (newVal[i].type === types.entityGroup.columnType.entityField.value && |
||||
|
newVal[i].key === types.entityGroup.entityField.name.value) { |
||||
|
isSelectName = true; |
||||
|
} |
||||
|
if (newVal[i].type === types.entityGroup.columnType.entityField.value && |
||||
|
newVal[i].key === types.entityGroup.entityField.type.value) { |
||||
|
isSelectType = true; |
||||
|
} |
||||
|
} |
||||
|
$timeout(function () { |
||||
|
vm.entityField.name.disable = isSelectName; |
||||
|
vm.entityField.type.disable = isSelectType; |
||||
|
}); |
||||
|
} |
||||
|
}, true); |
||||
|
|
||||
|
$scope.$watch('vm.columns', function(newVal, prevVal) { |
||||
|
if (vm.isEdit && !angular.equals(newVal, prevVal)) { |
||||
|
vm.theForm.$setDirty(); |
||||
|
} |
||||
|
}, true); |
||||
|
} |
||||
@ -0,0 +1,62 @@ |
|||||
|
<!-- |
||||
|
|
||||
|
Copyright © 2016-2019 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-table-container flex class="tb-table-select"> |
||||
|
<table md-table> |
||||
|
<thead md-head> |
||||
|
<tr md-row> |
||||
|
<th md-column> </th> |
||||
|
<th md-column>Example value data</th> |
||||
|
<th md-column style="min-width: 140px">Column type</th> |
||||
|
<th md-column style="min-width: 140px">Value</th> |
||||
|
</tr> |
||||
|
</thead> |
||||
|
<tbody md-body> |
||||
|
<tr md-row ng-repeat="column in vm.columns track by $index"> |
||||
|
<td md-cell>{{$index + 1}}</td> |
||||
|
<td md-cell>{{column.sampleData}}</td> |
||||
|
<td md-cell> |
||||
|
<md-select ng-model="column.type" required name="columnType" |
||||
|
aria-label="{{ 'entity-group.column-type' | translate }}"> |
||||
|
<md-option ng-repeat="type in vm.columnTypes" ng-value="type.value"> |
||||
|
{{type.name | translate}} |
||||
|
</md-option> |
||||
|
</md-select> |
||||
|
</td> |
||||
|
<td md-cell> |
||||
|
<md-select ng-if="column.type == vm.columnTypes.entityField.value" |
||||
|
required name="columnKey" ng-model="column.key" |
||||
|
aria-label="{{ 'entity-group.column-value' | translate }}"> |
||||
|
<md-option ng-repeat="field in vm.entityField" ng-value="field.value" ng-disabled="field.disable"> |
||||
|
{{field.name | translate}} |
||||
|
</md-option> |
||||
|
</md-select> |
||||
|
<md-input-container md-no-float |
||||
|
ng-if="column.type != vm.columnTypes.entityField.value && |
||||
|
column.type != vm.columnTypes.name.value && |
||||
|
column.type != vm.columnTypes.type.value"> |
||||
|
<input required name="columnKeyName" |
||||
|
placeholder="{{ 'entity-group.column-value' | translate }}" |
||||
|
ng-model="column.key" |
||||
|
aria-label="{{ 'entity-group.column-value' | translate }}"> |
||||
|
</md-input-container> |
||||
|
</td> |
||||
|
</tr> |
||||
|
</tbody> |
||||
|
</table> |
||||
|
<md-divider></md-divider> |
||||
|
</md-table-container> |
||||
Loading…
Reference in new issue