Passed
Push — master ( 61dd3f...482d1b )
by greg
01:51
created

src/cli/cms/editor/handlebars/sourceAttr.js   A

Complexity

Total Complexity 25
Complexity/F 8.33

Size

Lines of Code 63
Function Count 3

Duplication

Duplicated Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 0
wmc 25
c 1
b 0
f 0
nc 1
mnd 4
bc 19
fnc 3
dl 0
loc 63
rs 10
bpm 6.3333
cpm 8.3333
noi 3

1 Function

Rating   Name   Duplication   Size   Complexity  
C sourceAttr.js ➔ sourceAttr 0 61 11
1
2
import {Sql} from '../../../'
3
4
export default function sourceAttr(val, params) {
5
  var hiddenVal = val
6
  var selected = ''
7
8
  if(typeof hiddenVal === 'object' && Object.prototype.toString.call(hiddenVal) === '[object Object]') {
9
    hiddenVal = JSON.stringify(hiddenVal).replace(/'/g, ''')
10
11
    try {
12
      var displayVal = eval('val.' + params.display)
0 ignored issues
show
Security Performance introduced by
Calls to eval are slow and potentially dangerous, especially on untrusted code. Please consider whether there is another way to achieve your goal.
Loading history...
13
      if(typeof params.display !== 'undefined' && params.display !== null
14
        && typeof displayVal !== 'undefined' && displayVal !== null) {
15
        val = displayVal
16
      }else {
17
        val = val[Object.keys(val)[0]]
18
      }
19
    }catch(e) {
20
      val = val[Object.keys(val)[0]]
21
    }
22
  }
23
24
  if(typeof params.value === 'object' && Object.prototype.toString.call(params.value) === '[object Array]') {
25
    Array.prototype.forEach.call(params.value, (v) => {
26
      var item = v
0 ignored issues
show
Unused Code introduced by
The assignment to variable item seems to be never used. Consider removing it.
Loading history...
27
      try {
28
        var displayV = eval('item.' + params.display)
0 ignored issues
show
Security Performance introduced by
Calls to eval are slow and potentially dangerous, especially on untrusted code. Please consider whether there is another way to achieve your goal.
Loading history...
29
        if(typeof params.display !== 'undefined' && params.display !== null
30
          && typeof displayV !== 'undefined' && displayV !== null) {
31
          item = displayV
32
        }else {
33
          if(typeof v === 'string') {
34
            item = v
35
          }else {
36
            item = v[Object.keys(v)[0]]
37
          }
38
        }
39
      }catch(e) {
40
        item = v[Object.keys(v)[0]]
41
      }
42
      
43
      if(typeof val === 'object' && Object.prototype.toString.call(val) === '[object Array]'
44
        && typeof item === 'object' && Object.prototype.toString.call(item) === '[object Array]') {
45
        
46
        Array.prototype.forEach.call(item, (i) => {
47
          if(val.includes(i)) {
48
            selected = 'selected="selected"'
49
          }
50
        })
51
      }else if(val === item) {
52
        selected = 'selected="selected"'
53
      }
54
    })
55
  }else if(params.value === hiddenVal) {
56
    selected = 'selected="selected"'
57
  }
58
59
  return {
60
    hiddenVal: hiddenVal,
61
    selected: selected,
62
    val: val
63
  }
64
}
65