1
0
mirror of synced 2025-12-10 08:28:08 +08:00

chore: remove network hbs template

This commit is contained in:
redhoodsu
2022-12-11 13:54:15 +08:00
parent 8739533aad
commit 08ed039023
6 changed files with 151 additions and 133 deletions

View File

@@ -44,7 +44,7 @@
"autoprefixer": "^9.7.4",
"babel-eslint": "^10.1.0",
"babel-loader": "^8.2.5",
"chobitsu": "^1.4.1",
"chobitsu": "^1.4.2",
"core-js": "^3.26.1",
"css-loader": "^3.4.2",
"draggabilly": "^2.2.0",

113
src/Network/Detail.js Normal file
View File

@@ -0,0 +1,113 @@
import Emitter from 'licia/Emitter'
import trim from 'licia/trim'
import isEmpty from 'licia/isEmpty'
import map from 'licia/map'
import escape from 'licia/escape'
import { classPrefix as c } from '../lib/util'
export default class Detail extends Emitter {
constructor($container) {
super()
this._$container = $container
this._detailData = {}
this._bindEvent()
}
show(data) {
if (data.resTxt && trim(data.resTxt) === '') {
delete data.resTxt
}
if (isEmpty(data.resHeaders)) {
delete data.resHeaders
}
if (isEmpty(data.reqHeaders)) {
delete data.reqHeaders
}
let postData = ''
if (data.data) {
postData = `<pre class="${c('data')}">${escape(data.data)}</pre>`
}
let reqHeaders = '<tr><td>Empty</td></tr>'
if (data.reqHeaders) {
reqHeaders = map(data.reqHeaders, (val, key) => {
return `<tr>
<td class="${c('key')}">${escape(key)}</td>
<td>${escape(val)}</td>
</tr>`
}).join('')
}
let resHeaders = '<tr><td>Empty</td></tr>'
if (data.resHeaders) {
resHeaders = map(data.resHeaders, (val, key) => {
return `<tr>
<td class="${c('key')}">${escape(key)}</td>
<td>${escape(val)}</td>
</tr>`
}).join('')
}
let resTxt = ''
if (data.resTxt) {
resTxt = `<pre class="${c('response')}">${escape(data.resTxt)}</pre>`
}
const html = `<div class="${c('http')}">
<div class="${c('breadcrumb')}">${escape(data.url)}</div>
${postData}
<div class="${c('section')}">
<h2>Request Headers</h2>
<table class="${c('headers')}">
<tbody>
${reqHeaders}
</tbody>
</table>
</div>
<div class="${c('section')}">
<h2>Response Headers</h2>
<table class="${c('headers')}">
<tbody>
${resHeaders}
</tbody>
</table>
</div>
${resTxt}
</div>
<div class="${c('back')}">Back to the List</div>`
this._$container.html(html).show()
this._detailData = data
}
hide() {
this._$container.hide()
}
_bindEvent() {
this._$container
.on('click', c('.back'), () => this.hide())
.on('click', c('.http .response'), () => {
const data = this._detailData
const resTxt = data.resTxt
switch (data.subType) {
case 'css':
return showSources('css', resTxt)
case 'html':
return showSources('html', resTxt)
case 'javascript':
return showSources('js', resTxt)
case 'json':
return showSources('object', resTxt)
}
switch (data.type) {
case 'image':
return showSources('img', data.url)
}
})
const showSources = (type, data) => {
this.emit('showSources', type, data)
}
}
}

View File

@@ -1,8 +0,0 @@
<div {{{class 'title'}}}>
Request
<div {{{class 'btn clear-request'}}}>
<span {{{class 'icon-clear'}}}></span>
</div>
</div>
<ul {{{class 'requests'}}}></ul>
<div {{{class 'detail'}}}></div>

View File

@@ -2,10 +2,11 @@ import Tool from '../DevTools/Tool'
import isEmpty from 'licia/isEmpty'
import $ from 'licia/$'
import ms from 'licia/ms'
import trim from 'licia/trim'
import each from 'licia/each'
import last from 'licia/last'
import Emitter from 'licia/Emitter'
import Detail from './Detail'
import map from 'licia/map'
import escape from 'licia/escape'
import { getFileName, classPrefix as c } from '../lib/util'
import evalCss from '../lib/evalCss'
import chobitsu from '../lib/chobitsu'
@@ -18,8 +19,6 @@ export default class Network extends Tool {
this.name = 'network'
this._requests = {}
this._tpl = require('./Network.hbs')
this._requestsTpl = require('./requests.hbs')
}
init($el, container) {
super.init($el)
@@ -124,7 +123,7 @@ export default class Network extends Tool {
const self = this
$el
.on('click', '.eruda-request', function () {
.on('click', c('.request'), function () {
const id = $(this).data('id')
const data = self._requests[id]
@@ -132,7 +131,7 @@ export default class Network extends Tool {
self._detail.show(data)
})
.on('click', '.eruda-clear-request', () => this.clear())
.on('click', c('.clear-request'), () => this.clear())
this._detail.on('showSources', function (type, data) {
const sources = container.get('sources')
@@ -164,9 +163,18 @@ export default class Network extends Tool {
}
_initTpl() {
const $el = this._$el
$el.html(this._tpl())
this._$detail = $el.find('.eruda-detail')
this._$requests = $el.find('.eruda-requests')
$el.html(
c(`<div class="title">
Request
<div class="btn clear-request">
<span class="icon-clear"></span>
</div>
</div>
<ul class="requests"></ul>
<div class="detail"></div>`)
)
this._$detail = $el.find(c('.detail'))
this._$requests = $el.find(c('.requests'))
}
_render() {
if (!this.active) return
@@ -175,7 +183,26 @@ export default class Network extends Tool {
if (!isEmpty(this._requests)) renderData.requests = this._requests
this._renderHtml(this._requestsTpl(renderData))
let html = `<li><span class="${c('name')}">Empty</span></li>`
if (renderData.requests) {
html = map(
renderData.requests,
({ hasErr, name, status, method, subType, size, displayTime }, idx) => {
return `<li class="${c('request')} ${
hasErr ? c('error') : ''
}" data-id="${idx}">
<span class="${c('name')}">${escape(name)}</span>
<span class="${c('status')}">${status}</span>
<span class="${c('method')}">${method}</span>
<span class="${c('type')}">${subType}</span>
<span class="${c('size')}">${size}</span>
<span class="${c('time')}">${displayTime}</span>
</li>`
}
).join('')
}
this._renderHtml(html)
}
_renderHtml(html) {
if (html === this._lastHtml) return
@@ -184,60 +211,6 @@ export default class Network extends Tool {
}
}
class Detail extends Emitter {
constructor($container) {
super()
this._$container = $container
this._detailData = {}
this._detailTpl = require('./detail.hbs')
this._bindEvent()
}
show(data) {
if (data.resTxt && trim(data.resTxt) === '') {
delete data.resTxt
}
if (isEmpty(data.resHeaders)) {
delete data.resHeaders
}
if (isEmpty(data.reqHeaders)) {
delete data.reqHeaders
}
this._$container.html(this._detailTpl(data)).show()
this._detailData = data
}
hide() {
this._$container.hide()
}
_bindEvent() {
this._$container
.on('click', c('.back'), () => this.hide())
.on('click', '.eruda-http .eruda-response', () => {
const data = this._detailData
const resTxt = data.resTxt
switch (data.subType) {
case 'css':
return showSources('css', resTxt)
case 'html':
return showSources('html', resTxt)
case 'javascript':
return showSources('js', resTxt)
case 'json':
return showSources('object', resTxt)
}
switch (data.type) {
case 'image':
return showSources('img', data.url)
}
})
const showSources = (type, data) => {
this.emit('showSources', type, data)
}
}
}
function getType(contentType) {
if (!contentType) return 'unknown'

View File

@@ -1,46 +0,0 @@
<div {{{class 'http'}}}>
<div {{{class 'breadcrumb'}}}>{{url}}</div>
{{#if data}}
<pre {{{class 'data'}}}>{{data}}</pre>
{{/if}}
<div {{{class 'section'}}}>
<h2>Request Headers</h2>
<table {{{class 'headers'}}}>
<tbody>
{{#if reqHeaders}}
{{#each reqHeaders}}
<tr>
<td {{{class 'key'}}}>{{@key}}</td>
<td>{{.}}</td>
</tr>
{{/each}}
{{else}}
<tr>
<td>Empty</td>
</tr>
{{/if}}
</tbody>
</table>
<h2>Response Headers</h2>
<table {{{class 'headers'}}}>
<tbody>
{{#if resHeaders}}
{{#each resHeaders}}
<tr>
<td {{{class 'key'}}}>{{@key}}</td>
<td>{{.}}</td>
</tr>
{{/each}}
{{else}}
<tr>
<td>Empty</td>
</tr>
{{/if}}
</tbody>
</table>
</div>
{{#if resTxt}}
<pre {{{class 'response'}}}>{{resTxt}}</pre>
{{/if}}
</div>
<div {{{class 'back'}}}>Back to the List</div>

View File

@@ -1,14 +0,0 @@
{{#if requests}}
{{#each requests}}
<li class="eruda-request {{#if hasErr}}eruda-error{{/if}}" data-id="{{@key}}">
<span {{{class 'name'}}}>{{name}}</span>
<span {{{class 'status'}}}>{{status}}</span>
<span {{{class 'method'}}}>{{method}}</span>
<span {{{class 'type'}}}>{{subType}}</span>
<span {{{class 'size'}}}>{{size}}</span>
<span {{{class 'time'}}}>{{displayTime}}</span>
</li>
{{/each}}
{{else}}
<li><span {{{class 'name'}}}>Empty</span></li>
{{/if}}