MCPcopy Create free account
hub / github.com/cryptii/cryptii / appendSubviewElement

Method appendSubviewElement

src/View/Form.js:25–64  ·  view source on GitHub ↗

* Injects subview's root element into own DOM structure. * @protected * @param {View} view * @return {View} Fluent interface

(view)

Source from the content-addressed store, hash-verified

23 * @return {View} Fluent interface
24 */
25 appendSubviewElement (view) {
26 if (view instanceof FieldView) {
27 this.getElement()
28
29 // Get field subviews
30 const fieldViews = this.getSubviews()
31 .filter(view => view instanceof FieldView)
32
33 // Integrate new setting view
34 fieldViews.push(view)
35
36 // Maintain the order of fields set in the form model
37 const fields = this.getModel().getFields()
38 fieldViews.sort((a, b) =>
39 fields.indexOf(a.getModel()) - fields.indexOf(b.getModel()))
40
41 // Retrieve position of setting view we are integrating
42 const index = fieldViews.indexOf(view)
43 const $referenceNode = index < fieldViews.length - 1
44 ? fieldViews[index + 1].getElement()
45 : null
46
47 this.getElement().insertBefore(view.getElement(), $referenceNode)
48
49 // Determine for each setting view wether it appears first in a row
50 let columns = 0
51 fieldViews.forEach(settingView => {
52 const width = settingView.getModel().getWidth()
53 columns += width
54 if (columns === width || columns > 12) {
55 columns = width
56 settingView.setFirst(true)
57 } else {
58 settingView.setFirst(false)
59 }
60 })
61 return this
62 }
63 return super.appendSubviewElement(view)
64 }
65}

Callers

nothing calls this directly

Calls 7

getElementMethod · 0.80
getSubviewsMethod · 0.80
getFieldsMethod · 0.80
indexOfMethod · 0.80
getWidthMethod · 0.80
setFirstMethod · 0.80
getModelMethod · 0.45

Tested by

no test coverage detected