accordion for static analysis modules

pull/5370/head
LianaHus 5 years ago committed by Liana Husikyan
parent c15c21ba72
commit 4288d0bc8b
  1. 3
      src/app/tabs/analysis-tab.js
  2. 24
      src/app/tabs/staticanalysis/staticAnalysisView.js
  3. 13
      src/app/tabs/staticanalysis/styles/staticAnalysisView-styles.js
  4. 4
      src/app/tabs/styles/analysis-tab-styles.js

@ -1,7 +1,6 @@
var yo = require('yo-yo')
var StaticAnalysis = require('./staticanalysis/staticAnalysisView')
var EventManager = require('../../lib/events')
var css = require('./styles/analysis-tab-styles')
import { ViewPlugin } from '@remixproject/engine'
import { EventEmitter } from 'events'
@ -43,7 +42,7 @@ class AnalysisTab extends ViewPlugin {
})
this.registry.put({api: this.staticanalysis, name: 'staticanalysis'})
return yo`<div class="${css.analysisTabView}" id="staticanalysisView">${this.staticanalysis.render()}</div>`
return yo`<div class="p-3 pb-1" id="staticanalysisView">${this.staticanalysis.render()}</div>`
}
}

@ -158,7 +158,7 @@ staticAnalysisView.prototype.checkAll = function (event) {
staticAnalysisView.prototype.renderModules = function () {
var self = this
var groupedModules = utils.groupBy(preProcessModules(self.runner.modules()), 'categoryId')
return Object.keys(groupedModules).map((categoryId, i) => {
const moduleEntries = Object.keys(groupedModules).map((categoryId, i) => {
var category = groupedModules[categoryId]
var entriesDom = category.map((item, i) => {
return yo`
@ -173,18 +173,28 @@ staticAnalysisView.prototype.renderModules = function () {
onclick="${function (event) { self.checkModule(event) }}"
>
<label for="staticanalysismodule_${categoryId}_${i}" class="form-check-label mb-1">
${item.name}
<p class="mb-0 font-weight-bold text-capitalize">${item.name}</p>
${item.description}
</label>
</div>
`
`
})
return yo`
<div class="${css.analysisModulesContainer} list-group-item py-1">
<label class="${css.label}"><b>${category[0].categoryDisplayName}</b></label>
${entriesDom}
</div>`
<div class="${css.block}">
<input type="radio" name="accordion" class="w-100 d-none card" id="heading${categoryId}"/>
<label for="heading${categoryId}" style="cursor: pointer;" class="h6 card-header font-weight-bold border-bottom px-1 py-2 w-100">
<span>${category[0].categoryDisplayName}</span>
</label>
<div class="w-100 d-block px-2 py-1 ${css.entries}">
${entriesDom}
</div>
</>
`
})
return yo`
<div class="accordion" id="accordionModules">
${moduleEntries}
</div>`
}
module.exports = staticAnalysisView

@ -31,9 +31,20 @@ var css = csjs`
align-items: center;
}
.container {
max-height: 300px;
max-height: 500px;
overflow-y: auto;
}
.block input[type='radio']:checked ~ .entries{
height: auto;
transition: .3s ease-in;
}
.entries{
height: 0;
overflow: hidden;
transition: .3s ease-out;
}
`
module.exports = css

@ -1,10 +1,6 @@
var csjs = require('csjs-inject')
const css = csjs`
.analysisTabView {
padding: 2%;
padding-bottom: 3em;
}
`
module.exports = css

Loading…
Cancel
Save