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