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 yo = require('yo-yo')
var StaticAnalysis = require('./staticanalysis/staticAnalysisView') var StaticAnalysis = require('./staticanalysis/staticAnalysisView')
var EventManager = require('../../lib/events') var EventManager = require('../../lib/events')
var css = require('./styles/analysis-tab-styles')
import { ViewPlugin } from '@remixproject/engine' import { ViewPlugin } from '@remixproject/engine'
import { EventEmitter } from 'events' import { EventEmitter } from 'events'
@ -43,7 +42,7 @@ class AnalysisTab extends ViewPlugin {
}) })
this.registry.put({api: this.staticanalysis, name: 'staticanalysis'}) 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 () { staticAnalysisView.prototype.renderModules = function () {
var self = this var self = this
var groupedModules = utils.groupBy(preProcessModules(self.runner.modules()), 'categoryId') 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 category = groupedModules[categoryId]
var entriesDom = category.map((item, i) => { var entriesDom = category.map((item, i) => {
return yo` return yo`
@ -173,18 +173,28 @@ staticAnalysisView.prototype.renderModules = function () {
onclick="${function (event) { self.checkModule(event) }}" onclick="${function (event) { self.checkModule(event) }}"
> >
<label for="staticanalysismodule_${categoryId}_${i}" class="form-check-label mb-1"> <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} ${item.description}
</label> </label>
</div> </div>
` `
}) })
return yo` return yo`
<div class="${css.analysisModulesContainer} list-group-item py-1"> <div class="${css.block}">
<label class="${css.label}"><b>${category[0].categoryDisplayName}</b></label> <input type="radio" name="accordion" class="w-100 d-none card" id="heading${categoryId}"/>
${entriesDom} <label for="heading${categoryId}" style="cursor: pointer;" class="h6 card-header font-weight-bold border-bottom px-1 py-2 w-100">
</div>` <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 module.exports = staticAnalysisView

@ -31,9 +31,20 @@ var css = csjs`
align-items: center; align-items: center;
} }
.container { .container {
max-height: 300px; max-height: 500px;
overflow-y: auto; 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 module.exports = css

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

Loading…
Cancel
Save