/*
*
* Copyright 2016 RIFT.IO Inc
*
* 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 React from 'react';
import RecordViewStore from '../recordViewer/recordViewStore.js';
import Utils from 'utils/utils.js';
import _isArray from 'lodash/isArray';
import './nsVirtualLinks.scss';
import UpTime from 'widgets/uptime/uptime.jsx';
import NSVirtualLinksStore from './nsVirtualLinksStore.js';
import NSVirtualLinksActions from './nsVirtualLinksActions.js';
import SkyquakeComponent from 'widgets/skyquake_container/skyquakeComponent.jsx';
import TextInput from 'widgets/form_controls/textInput.jsx';
class NsVirtualLinkDetails extends React.Component {
constructor(props) {
super(props);
this.state = NSVirtualLinksStore.getState();
}
resolvePath = (obj, path) => {
// supports a.b, a[1] and foo[bar], etc.
// where obj is ['nope', 'yes', {a: {b: 1}, foo: 2}]
// then [1] returns 'yes'; [2].a.b returns 1; [2].a[foo] returns 2;
path = path.split(/[\.\[\]]/).filter(d => d);
return path.reduce((r, p) => {
if (r) {
return r[p];
}
}, obj);
}
transformValue(field, value) {
let transformedValue = (field.transform && field.transform(value)) || value;
if (typeof transformedValue == 'object') {
transformedValue = JSON.stringify(transformedValue);
}
return transformedValue;
}
render() {
let self = this;
let column = [];
this.state.column.categories.map((category) => {
let fields = [];
category.fields && category.fields.map((field) => {
let value = this.resolvePath(this.props.virtualLink, field.key);
let textFields = [];
if (_isArray(value)) {
value.map((v, idx) => {
let transformedValue = this.transformValue(field, v);
textFields.push(