committed by
GitHub
7 changed files with 224 additions and 70 deletions
@ -1,54 +0,0 @@ |
|||||
/* |
|
||||
* 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. |
|
||||
*/ |
|
||||
/*@ngInject*/ |
|
||||
export default function AddRelationDialogController($scope, $mdDialog, types, entityRelationService, direction, entityId) { |
|
||||
|
|
||||
var vm = this; |
|
||||
|
|
||||
vm.types = types; |
|
||||
vm.direction = direction; |
|
||||
vm.targetEntityId = {}; |
|
||||
|
|
||||
vm.relation = {}; |
|
||||
if (vm.direction == vm.types.entitySearchDirection.from) { |
|
||||
vm.relation.from = entityId; |
|
||||
} else { |
|
||||
vm.relation.to = entityId; |
|
||||
} |
|
||||
vm.relation.type = types.entityRelationType.contains; |
|
||||
|
|
||||
vm.add = add; |
|
||||
vm.cancel = cancel; |
|
||||
|
|
||||
function cancel() { |
|
||||
$mdDialog.cancel(); |
|
||||
} |
|
||||
|
|
||||
function add() { |
|
||||
if (vm.direction == vm.types.entitySearchDirection.from) { |
|
||||
vm.relation.to = vm.targetEntityId; |
|
||||
} else { |
|
||||
vm.relation.from = vm.targetEntityId; |
|
||||
} |
|
||||
$scope.theForm.$setPristine(); |
|
||||
entityRelationService.saveRelation(vm.relation).then( |
|
||||
function success() { |
|
||||
$mdDialog.hide(); |
|
||||
} |
|
||||
); |
|
||||
} |
|
||||
|
|
||||
} |
|
||||
@ -0,0 +1,125 @@ |
|||||
|
/* |
||||
|
* 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 'brace/ext/language_tools'; |
||||
|
import 'brace/mode/json'; |
||||
|
import 'brace/theme/github'; |
||||
|
import beautify from 'js-beautify'; |
||||
|
|
||||
|
import './relation-dialog.scss'; |
||||
|
|
||||
|
const js_beautify = beautify.js; |
||||
|
|
||||
|
/*@ngInject*/ |
||||
|
export default function RelationDialogController($scope, $mdDialog, types, entityRelationService, isAdd, direction, relation, showingCallback) { |
||||
|
|
||||
|
var vm = this; |
||||
|
|
||||
|
vm.types = types; |
||||
|
vm.isAdd = isAdd; |
||||
|
vm.direction = direction; |
||||
|
|
||||
|
showingCallback.onShowing = function(scope, element) { |
||||
|
updateEditorSize(element); |
||||
|
} |
||||
|
|
||||
|
vm.relationAdditionalInfoOptions = { |
||||
|
useWrapMode: false, |
||||
|
mode: 'json', |
||||
|
showGutter: false, |
||||
|
showPrintMargin: false, |
||||
|
theme: 'github', |
||||
|
advanced: { |
||||
|
enableSnippets: false, |
||||
|
enableBasicAutocompletion: false, |
||||
|
enableLiveAutocompletion: false |
||||
|
}, |
||||
|
onLoad: function (_ace) { |
||||
|
vm.editor = _ace; |
||||
|
} |
||||
|
}; |
||||
|
|
||||
|
vm.relation = relation; |
||||
|
if (vm.isAdd) { |
||||
|
vm.relation.type = types.entityRelationType.contains; |
||||
|
vm.targetEntityId = {}; |
||||
|
} else { |
||||
|
if (vm.direction == vm.types.entitySearchDirection.from) { |
||||
|
vm.targetEntityId = vm.relation.to; |
||||
|
} else { |
||||
|
vm.targetEntityId = vm.relation.from; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
vm.save = save; |
||||
|
vm.cancel = cancel; |
||||
|
|
||||
|
vm.additionalInfo = ''; |
||||
|
|
||||
|
if (vm.relation.additionalInfo) { |
||||
|
vm.additionalInfo = angular.toJson(vm.relation.additionalInfo); |
||||
|
vm.additionalInfo = js_beautify(vm.additionalInfo, {indent_size: 4}); |
||||
|
} |
||||
|
|
||||
|
$scope.$watch('vm.additionalInfo', () => { |
||||
|
$scope.theForm.$setValidity("additionalInfo", true); |
||||
|
}); |
||||
|
|
||||
|
function updateEditorSize(element) { |
||||
|
var newWidth = 600; |
||||
|
var newHeight = 200; |
||||
|
angular.element('#tb-relation-additional-info', element).height(newHeight.toString() + "px") |
||||
|
.width(newWidth.toString() + "px"); |
||||
|
vm.editor.resize(); |
||||
|
} |
||||
|
|
||||
|
function cancel() { |
||||
|
$mdDialog.cancel(); |
||||
|
} |
||||
|
|
||||
|
function save() { |
||||
|
if (vm.isAdd) { |
||||
|
if (vm.direction == vm.types.entitySearchDirection.from) { |
||||
|
vm.relation.to = vm.targetEntityId; |
||||
|
} else { |
||||
|
vm.relation.from = vm.targetEntityId; |
||||
|
} |
||||
|
} |
||||
|
$scope.theForm.$setPristine(); |
||||
|
|
||||
|
var valid = true; |
||||
|
if (vm.additionalInfo && vm.additionalInfo.length) { |
||||
|
try { |
||||
|
vm.relation.additionalInfo = angular.fromJson(vm.additionalInfo); |
||||
|
} catch(e) { |
||||
|
valid = false; |
||||
|
} |
||||
|
} else { |
||||
|
vm.relation.additionalInfo = null; |
||||
|
} |
||||
|
|
||||
|
$scope.theForm.$setValidity("additionalInfo", valid); |
||||
|
|
||||
|
if (valid) { |
||||
|
entityRelationService.saveRelation(vm.relation).then( |
||||
|
function success() { |
||||
|
$mdDialog.hide(); |
||||
|
} |
||||
|
); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
} |
||||
@ -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. |
||||
|
*/ |
||||
|
|
||||
|
.tb-relation-additional-info-panel { |
||||
|
margin-left: 15px; |
||||
|
border: 1px solid #C0C0C0; |
||||
|
height: 100%; |
||||
|
#tb-relation-additional-info { |
||||
|
min-width: 600px; |
||||
|
min-height: 200px; |
||||
|
width: 100%; |
||||
|
height: 100%; |
||||
|
} |
||||
|
} |
||||
Loading…
Reference in new issue