2019-05-15 17:04:39 +03:00
|
|
|
<!--
|
|
|
|
|
|
|
|
|
|
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-dialog aria-label="{{ vm.importTitle | translate }}">
|
|
|
|
|
<form name="theForm" ng-submit="vm.importFromJson()">
|
|
|
|
|
<md-toolbar>
|
|
|
|
|
<div class="md-toolbar-tools">
|
|
|
|
|
<h2 translate>{{ vm.importTitle }}</h2>
|
|
|
|
|
<span flex></span>
|
|
|
|
|
<md-button class="md-icon-button" ng-click="vm.cancel()">
|
|
|
|
|
<ng-md-icon icon="close" aria-label="{{ 'dialog.close' | translate }}"></ng-md-icon>
|
|
|
|
|
</md-button>
|
|
|
|
|
</div>
|
|
|
|
|
</md-toolbar>
|
2019-05-20 11:57:43 +03:00
|
|
|
<md-progress-linear class="md-warn" md-mode="indeterminate" ng-disabled="!$root.loading"
|
|
|
|
|
ng-show="$root.loading"></md-progress-linear>
|
2019-05-15 17:04:39 +03:00
|
|
|
<span style="min-height: 5px;" flex="" ng-show="!$root.loading"></span>
|
|
|
|
|
<md-dialog-content>
|
|
|
|
|
<div class="md-dialog-content">
|
|
|
|
|
<fieldset ng-disabled="$root.loading">
|
|
|
|
|
<div layout="column" layout-padding>
|
|
|
|
|
<div class="tb-container">
|
|
|
|
|
<label class="tb-label" translate>{{ vm.importFileLabel }}</label>
|
|
|
|
|
<div flow-init="{singleFile:true}"
|
|
|
|
|
flow-file-added="vm.fileAdded( $file )" class="tb-file-select-container">
|
|
|
|
|
<div class="tb-file-clear-container">
|
|
|
|
|
<md-button ng-click="vm.clearFile()"
|
2019-05-20 11:57:43 +03:00
|
|
|
class="tb-file-clear-btn md-icon-button md-primary"
|
|
|
|
|
aria-label="{{ 'action.remove' | translate }}">
|
2019-05-15 17:04:39 +03:00
|
|
|
<md-tooltip md-direction="top">
|
|
|
|
|
{{ 'action.remove' | translate }}
|
|
|
|
|
</md-tooltip>
|
|
|
|
|
<md-icon aria-label="{{ 'action.remove' | translate }}" class="material-icons">
|
|
|
|
|
close
|
|
|
|
|
</md-icon>
|
|
|
|
|
</md-button>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="alert tb-flow-drop" flow-drop>
|
|
|
|
|
<label for="select" translate>import.drop-file-csv</label>
|
2019-05-20 11:57:43 +03:00
|
|
|
<input class="file-input" flow-btn
|
|
|
|
|
flow-attrs="{accept:'.csv,application/csv,text/csv'}" id="select">
|
2019-05-15 17:04:39 +03:00
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div>
|
|
|
|
|
<div ng-show="!vm.fileName" translate>import.no-file</div>
|
|
|
|
|
<div ng-show="vm.fileName">{{ vm.fileName }}</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</fieldset>
|
2019-05-20 11:57:43 +03:00
|
|
|
<div flex layout="row">
|
|
|
|
|
<md-input-container class="md-block">
|
|
|
|
|
<label translate>CSV delimiter parametr</label>
|
|
|
|
|
<input ng-model="vm.importParams.delim">
|
|
|
|
|
</md-input-container>
|
|
|
|
|
<md-input-container class="md-block">
|
|
|
|
|
<md-checkbox ng-model="vm.importParams.isHeader" aria-label="Checkbox 1">
|
|
|
|
|
Use first line is header
|
|
|
|
|
</md-checkbox>
|
|
|
|
|
</md-input-container>
|
|
|
|
|
<md-input-container class="md-block">
|
|
|
|
|
<md-checkbox ng-model="vm.importParams.isUpdate" aria-label="Checkbox 1">
|
|
|
|
|
Update parameter device
|
|
|
|
|
</md-checkbox>
|
|
|
|
|
</md-input-container>
|
|
|
|
|
</div>
|
|
|
|
|
<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.columnsParam">
|
|
|
|
|
<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>
|
2019-05-15 17:04:39 +03:00
|
|
|
</div>
|
|
|
|
|
</md-dialog-content>
|
|
|
|
|
<md-dialog-actions layout="row">
|
|
|
|
|
<span flex></span>
|
2019-05-20 11:57:43 +03:00
|
|
|
<md-button ng-disabled="$root.loading" ng-click="vm.addDevices()" style="margin-right:20px;">
|
|
|
|
|
Add Device
|
|
|
|
|
</md-button>
|
|
|
|
|
<md-button ng-disabled="$root.loading || !theForm.$dirty || !theForm.$valid || !vm.importData" type="submit"
|
|
|
|
|
class="md-raised md-primary">
|
2019-05-15 17:04:39 +03:00
|
|
|
{{ 'action.import' | translate }}
|
|
|
|
|
</md-button>
|
2019-05-20 11:57:43 +03:00
|
|
|
<md-button ng-disabled="$root.loading" ng-click="vm.cancel()" style="margin-right:20px;">{{ 'action.cancel'
|
|
|
|
|
| translate }}
|
|
|
|
|
</md-button>
|
2019-05-15 17:04:39 +03:00
|
|
|
</md-dialog-actions>
|
|
|
|
|
</form>
|
|
|
|
|
</md-dialog>
|