@yuebai008/cli
Version:
Command line interface for rapid qg-minigame development
1 lines • 2.51 kB
JavaScript
import*as IssuesManager from"../../models/issues_manager/issues_manager.js";import*as DataGrid from"../../ui/components/data_grid/data_grid.js";import*as Linkifier from"../../ui/components/linkifier/linkifier.js";import*as UI from"../../ui/legacy/legacy.js";import*as LitHtml from"../../ui/lit-html/lit-html.js";import cspViolationsListViewStyles from"./cspViolationsListView.css.js";export class CSPViolationsListView extends UI.Widget.VBox{#e=new DataGrid.DataGridController.DataGridController;#i=new Set;#t=new Map;constructor(){super(!0),this.#e.data={columns:[{id:"sourceCode",title:"Source Code",sortable:!1,widthWeighting:1,visible:!0,hideable:!1},{id:"violatedDirective",title:"Violated Directive",sortable:!1,widthWeighting:1,visible:!0,hideable:!1},{id:"category",title:"Category",sortable:!1,widthWeighting:1,visible:!0,hideable:!1},{id:"status",title:"Status",sortable:!1,widthWeighting:1,visible:!0,hideable:!1}],rows:[]},this.contentElement.appendChild(this.#e)}updateTextFilter(e){0===e.length?this.#e.data={...this.#e.data,filters:[]}:this.#e.data={...this.#e.data,filters:[{text:e,key:void 0,regex:void 0,negative:!1}]}}updateCategoryFilter(e){this.#i=e;const i=[];for(const[e,t]of this.#t.entries())this.#s(e)&&i.push(t);this.#e.data={...this.#e.data,rows:i}}#s(e){return this.#i.has(e.code())||0===this.#i.size}addIssue(e){const i=IssuesManager.Issue.toZeroBasedLocation(e.details().sourceCodeLocation);if(!i)return;const t=e.details().isReportOnly?"report-only":"blocked",s=this.#a(e.code()),a={cells:[{columnId:"sourceCode",value:i.url,renderer:()=>LitHtml.html`<${Linkifier.Linkifier.Linkifier.litTagName} .data=${i}></${Linkifier.Linkifier.Linkifier.litTagName}>`},{columnId:"violatedDirective",value:e.details().violatedDirective},{columnId:"category",value:s},{columnId:"status",value:t}]};this.#t.set(e,a),this.#s(e)&&(this.#e.data.rows.push(a),this.#e.data={...this.#e.data})}clearIssues(){this.#t.clear(),this.#e.data={...this.#e.data,rows:[]}}#a(e){return e===IssuesManager.ContentSecurityPolicyIssue.inlineViolationCode?"Inline Violation":e===IssuesManager.ContentSecurityPolicyIssue.urlViolationCode?"URL Violation":e===IssuesManager.ContentSecurityPolicyIssue.evalViolationCode?"Eval Violation":e===IssuesManager.ContentSecurityPolicyIssue.trustedTypesSinkViolationCode?"Sink Violation":e===IssuesManager.ContentSecurityPolicyIssue.trustedTypesPolicyViolationCode?"Policy Violation":"unknown"}wasShown(){super.wasShown(),this.registerCSSFiles([cspViolationsListViewStyles])}}