Move results generator into html_root.py
This commit is contained in:
@@ -40,21 +40,21 @@ Given A → B, B depends on A
|
|||||||
|
|
||||||
```
|
```
|
||||||
digraph Dependency {
|
digraph Dependency {
|
||||||
"." -> html_root
|
|
||||||
"." -> download_itunes
|
"." -> download_itunes
|
||||||
"." -> bundle_combine
|
"." -> bundle_combine
|
||||||
download_itunes -> index_app_names
|
download_itunes -> index_app_names
|
||||||
|
index_app_names -> index_categories
|
||||||
|
index_app_names -> index_rank
|
||||||
|
index_app_names -> html_index_domains
|
||||||
|
index_categories -> html_categories
|
||||||
|
index_categories -> html_index_apps
|
||||||
bundle_combine -> index_rank
|
bundle_combine -> index_rank
|
||||||
bundle_combine -> index_domains
|
bundle_combine -> index_domains
|
||||||
index_categories -> html_index_apps
|
|
||||||
index_app_names -> index_rank
|
|
||||||
index_app_names -> index_categories
|
|
||||||
index_categories -> html_categories
|
|
||||||
html_categories -> html_ranking
|
|
||||||
html_index_apps -> html_ranking
|
|
||||||
index_rank -> html_bundle
|
index_rank -> html_bundle
|
||||||
index_rank -> html_index_domains
|
|
||||||
index_domains -> html_index_domains
|
index_domains -> html_index_domains
|
||||||
|
html_index_apps -> html_ranking
|
||||||
|
html_categories -> html_ranking
|
||||||
|
html_index_domains -> html_root
|
||||||
"." -> download_tracker
|
"." -> download_tracker
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ import lib_graphs as Graph
|
|||||||
import lib_html as HTML
|
import lib_html as HTML
|
||||||
import index_app_names # get_name
|
import index_app_names # get_name
|
||||||
import index_domains
|
import index_domains
|
||||||
import index_rank # get_total_counts, fname_app_rank
|
|
||||||
|
|
||||||
|
|
||||||
def dropdown_choose(button):
|
def dropdown_choose(button):
|
||||||
@@ -111,27 +110,6 @@ def gen_lookup(html_dir, doms_dict, names_dict, title):
|
|||||||
mylib.json_write(mylib.path_add(html_dir, 'doms.json'), doms_dict)
|
mylib.json_write(mylib.path_add(html_dir, 'doms.json'), doms_dict)
|
||||||
|
|
||||||
|
|
||||||
def gen_results(c_apps, c_domains, title):
|
|
||||||
[c_recordings, c_logs] = index_rank.get_total_counts()
|
|
||||||
print(' {} apps'.format(c_apps))
|
|
||||||
print(' {} domains'.format(c_domains))
|
|
||||||
print(' {} recordings'.format(c_recordings))
|
|
||||||
print(' {} logs'.format(c_logs))
|
|
||||||
HTML.write(mylib.path_out('results'), '''
|
|
||||||
<h2>{}</h2>
|
|
||||||
<p>The AppCheck database currently contains <b>{:,} apps</b> with a total of <b>{:,} unique domains</b>.</p>
|
|
||||||
<p>Collected through <b>{:,} recordings</b> with <b>{:,} individual requests</b>.</p>
|
|
||||||
<ul>
|
|
||||||
<li>List of <a href="/index/apps/">Apps</a></li>
|
|
||||||
<li>List of <a href="/category/">Categories</a></li>
|
|
||||||
<li>List of <a href="/index/domains/all/">Requested Domains</a></li>
|
|
||||||
<li>List of <a href="/index/domains/tracker/">Trackers</a></li>
|
|
||||||
</ul>
|
|
||||||
'''.format(title, c_apps, c_domains, c_recordings, c_logs), title=title)
|
|
||||||
mylib.symlink(index_rank.fname_app_rank(),
|
|
||||||
mylib.path_out('results', 'rank.json')) # after HTML.write
|
|
||||||
|
|
||||||
|
|
||||||
def process():
|
def process():
|
||||||
# bundle_combine assures domain name is [a-zA-Z0-9.-]
|
# bundle_combine assures domain name is [a-zA-Z0-9.-]
|
||||||
print('generating html: domain-index ...')
|
print('generating html: domain-index ...')
|
||||||
@@ -157,10 +135,8 @@ def process():
|
|||||||
gen_html_trinity(mylib.path_out('index', 'domains', 'tracker'), app_count,
|
gen_html_trinity(mylib.path_out('index', 'domains', 'tracker'), app_count,
|
||||||
json=index_domains.load(tracker=True), title='Tracker',
|
json=index_domains.load(tracker=True), title='Tracker',
|
||||||
symlink=index_domains.fname_tracker())
|
symlink=index_domains.fname_tracker())
|
||||||
# Stats
|
|
||||||
print(' Results')
|
|
||||||
gen_results(app_count, dom_count, title='Results')
|
|
||||||
print('')
|
print('')
|
||||||
|
return app_count, dom_count
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
import os
|
import os
|
||||||
import lib_common as mylib
|
import lib_common as mylib
|
||||||
import lib_html as HTML
|
import lib_html as HTML
|
||||||
|
import index_rank # get_total_counts
|
||||||
|
|
||||||
|
|
||||||
def gen_root():
|
def gen_root():
|
||||||
@@ -10,6 +11,22 @@ def gen_root():
|
|||||||
HTML.write(mylib.path_out(), fp.read())
|
HTML.write(mylib.path_out(), fp.read())
|
||||||
|
|
||||||
|
|
||||||
|
def gen_redirect():
|
||||||
|
HTML.write(mylib.path_out(), '''
|
||||||
|
<h2>Redirecting …</h2>
|
||||||
|
<script type="text/javascript">
|
||||||
|
var GET={};
|
||||||
|
window.location.search.substr(1).split("&").forEach(function(x){GET[x.split("=")[0]]=x.split("=")[1]});
|
||||||
|
if (GET["id"]) { window.location = "/app/" + GET["id"] + "/"; }
|
||||||
|
</script>''', fname='redirect.html')
|
||||||
|
|
||||||
|
|
||||||
|
def gen_404():
|
||||||
|
HTML.write(mylib.path_out(), '''
|
||||||
|
<h2>404 – Not Found</h2>
|
||||||
|
<p>Go back to <a href="/">start page</a></p>''', fname='404.html')
|
||||||
|
|
||||||
|
|
||||||
def gen_help():
|
def gen_help():
|
||||||
many = 7
|
many = 7
|
||||||
txt = '''<h2>Help needed!</h2>
|
txt = '''<h2>Help needed!</h2>
|
||||||
@@ -60,32 +77,41 @@ def gen_help():
|
|||||||
HTML.write(mylib.path_out('help'), txt)
|
HTML.write(mylib.path_out('help'), txt)
|
||||||
|
|
||||||
|
|
||||||
def gen_search():
|
def gen_results(base_dir, c_apps, c_domains, title):
|
||||||
HTML.write(mylib.path_out(), '''
|
[c_recs, c_logs] = index_rank.get_total_counts()
|
||||||
<h2>Redirecting …</h2>
|
print(' {} apps'.format(c_apps))
|
||||||
<script type="text/javascript">
|
print(' {} domains'.format(c_domains))
|
||||||
var GET={};
|
print(' {} recordings'.format(c_recs))
|
||||||
window.location.search.substr(1).split("&").forEach(function(x){GET[x.split("=")[0]]=x.split("=")[1]});
|
print(' {} logs'.format(c_logs))
|
||||||
if (GET["id"]) { window.location = "/app/" + GET["id"] + "/"; }
|
HTML.write(base_dir, '''
|
||||||
</script>''', fname='redirect.html')
|
<h2>{}</h2>
|
||||||
|
<p>The AppCheck database currently contains <b>{:,} apps</b> with a total of <b>{:,} unique domains</b>.</p>
|
||||||
|
<p>Collected through <b>{:,} recordings</b> with <b>{:,} individual requests</b>.</p>
|
||||||
|
<ul>
|
||||||
|
<li>List of <a href="/index/apps/">Apps</a></li>
|
||||||
|
<li>List of <a href="/category/">Categories</a></li>
|
||||||
|
<li>List of <a href="/index/domains/all/">Requested Domains</a></li>
|
||||||
|
<li>List of <a href="/index/domains/tracker/">Trackers</a></li>
|
||||||
|
</ul>
|
||||||
|
'''.format(title, c_apps, c_domains, c_recs, c_logs), title=title)
|
||||||
|
mylib.symlink(index_rank.fname_app_rank(),
|
||||||
|
mylib.path_add(base_dir, 'rank.json')) # after HTML.write
|
||||||
|
|
||||||
|
|
||||||
def gen_404():
|
def process(app_count, dom_count, inclStatic=False):
|
||||||
HTML.write(mylib.path_out(), '''
|
|
||||||
<h2>404 – Not Found</h2>
|
|
||||||
<p>Go back to <a href="/">start page</a></p>''', fname='404.html')
|
|
||||||
|
|
||||||
|
|
||||||
def process():
|
|
||||||
print('generating root html ...')
|
print('generating root html ...')
|
||||||
print(' index.html')
|
if inclStatic:
|
||||||
gen_root() # root index.thml
|
print(' index.html')
|
||||||
print(' redirect.html')
|
gen_root() # root index.thml
|
||||||
gen_search() # root redirect.html?id=my.bundle.id
|
print(' redirect.html')
|
||||||
print(' 404.html')
|
gen_redirect() # root redirect.html?id=my.bundle.id
|
||||||
gen_404()
|
print(' 404.html')
|
||||||
print(' /help/')
|
gen_404()
|
||||||
|
print(' /help/') # dynamic content
|
||||||
gen_help()
|
gen_help()
|
||||||
|
print(' /results/') # dynamic content
|
||||||
|
gen_results(mylib.path_out('results'), app_count, dom_count,
|
||||||
|
title='Results')
|
||||||
print('')
|
print('')
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -36,14 +36,13 @@ def rebuild_html(bundle_ids=None, cat_ids=None, inclIApp=True, inclRoot=False):
|
|||||||
if bundle_ids:
|
if bundle_ids:
|
||||||
html_bundle.process(bundle_ids) # after index_rank
|
html_bundle.process(bundle_ids) # after index_rank
|
||||||
html_categories.process(affected=cat_ids) # after index_categories
|
html_categories.process(affected=cat_ids) # after index_categories
|
||||||
html_index_domains.process() # after index_domains & index_rank
|
|
||||||
if inclIApp:
|
if inclIApp:
|
||||||
html_index_apps.process() # after index_categories
|
html_index_apps.process() # after index_categories
|
||||||
else:
|
else:
|
||||||
print('no new bundle, not rebuilding index')
|
print('no new bundle, not rebuilding index')
|
||||||
html_ranking.process() # after html_categories & html_index_apps
|
html_ranking.process() # after html_categories & html_index_apps
|
||||||
if inclRoot: # TODO: remove check if root contains dynamic content
|
app_count, dom_count = html_index_domains.process() # after index_domains
|
||||||
html_root.process()
|
html_root.process(app_count, dom_count, inclStatic=inclRoot)
|
||||||
|
|
||||||
|
|
||||||
def del_id(bundle_ids):
|
def del_id(bundle_ids):
|
||||||
@@ -98,7 +97,6 @@ def import_update():
|
|||||||
print('')
|
print('')
|
||||||
if len(needs_update) > 0:
|
if len(needs_update) > 0:
|
||||||
combine_and_update(needs_update)
|
combine_and_update(needs_update)
|
||||||
html_root.gen_help()
|
|
||||||
if len(then_delete) > 0:
|
if len(then_delete) > 0:
|
||||||
print('cleanup _in folder ...')
|
print('cleanup _in folder ...')
|
||||||
for x in then_delete:
|
for x in then_delete:
|
||||||
|
|||||||
@@ -1,156 +1,156 @@
|
|||||||
<svg width="666pt" height="404pt" viewBox="0.00 0.00 666.00 404.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
<svg width="660pt" height="404pt" viewBox="0.00 0.00 660.00 404.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||||
<g id="graph1" class="graph" transform="scale(1 1) rotate(0) translate(4 400)">
|
<g id="graph1" class="graph" transform="scale(1 1) rotate(0) translate(4 400)">
|
||||||
<title>Dependency</title>
|
<title>Dependency</title>
|
||||||
<polygon fill="white" stroke="white" points="-4,5 -4,-400 663,-400 663,5 -4,5"></polygon>
|
<polygon fill="white" stroke="white" points="-4,5 -4,-400 657,-400 657,5 -4,5"></polygon>
|
||||||
<!-- . -->
|
<!-- . -->
|
||||||
<g id="node1" class="node"><title>.</title>
|
<g id="node1" class="node"><title>.</title>
|
||||||
<ellipse fill="none" stroke="black" cx="401" cy="-378" rx="27" ry="18"></ellipse>
|
<ellipse fill="none" stroke="black" cx="299" cy="-378" rx="27" ry="18"></ellipse>
|
||||||
<text text-anchor="middle" x="401" y="-373.8" font-family="Times,serif" font-size="14.00">.</text>
|
<text text-anchor="middle" x="299" y="-373.8" font-family="Times,serif" font-size="14.00">.</text>
|
||||||
</g>
|
|
||||||
<!-- html_root -->
|
|
||||||
<g id="node3" class="node"><title>html_root</title>
|
|
||||||
<ellipse fill="none" stroke="black" cx="205" cy="-306" rx="49.1927" ry="18"></ellipse>
|
|
||||||
<text text-anchor="middle" x="205" y="-301.8" font-family="Times,serif" font-size="14.00">html_root</text>
|
|
||||||
</g>
|
|
||||||
<!-- .->html_root -->
|
|
||||||
<g id="edge2" class="edge"><title>.->html_root</title>
|
|
||||||
<path fill="none" stroke="black" d="M377.747,-368.695C345.989,-357.353 288.45,-336.804 248.551,-322.554"></path>
|
|
||||||
<polygon fill="black" stroke="black" points="249.66,-319.234 239.065,-319.166 247.306,-325.826 249.66,-319.234"></polygon>
|
|
||||||
</g>
|
</g>
|
||||||
<!-- download_itunes -->
|
<!-- download_itunes -->
|
||||||
<g id="node5" class="node"><title>download_itunes</title>
|
<g id="node3" class="node"><title>download_itunes</title>
|
||||||
<ellipse fill="none" stroke="black" cx="349" cy="-306" rx="77.0235" ry="18"></ellipse>
|
<ellipse fill="none" stroke="black" cx="299" cy="-306" rx="77.0235" ry="18"></ellipse>
|
||||||
<text text-anchor="middle" x="349" y="-301.8" font-family="Times,serif" font-size="14.00">download_itunes</text>
|
<text text-anchor="middle" x="299" y="-301.8" font-family="Times,serif" font-size="14.00">download_itunes</text>
|
||||||
</g>
|
</g>
|
||||||
<!-- .->download_itunes -->
|
<!-- .->download_itunes -->
|
||||||
<g id="edge4" class="edge"><title>.->download_itunes</title>
|
<g id="edge2" class="edge"><title>.->download_itunes</title>
|
||||||
<path fill="none" stroke="black" d="M389.46,-361.465C383.072,-352.867 374.978,-341.97 367.71,-332.187"></path>
|
<path fill="none" stroke="black" d="M299,-359.697C299,-351.983 299,-342.712 299,-334.112"></path>
|
||||||
<polygon fill="black" stroke="black" points="370.373,-329.902 361.6,-323.962 364.754,-334.076 370.373,-329.902"></polygon>
|
<polygon fill="black" stroke="black" points="302.5,-334.104 299,-324.104 295.5,-334.104 302.5,-334.104"></polygon>
|
||||||
</g>
|
</g>
|
||||||
<!-- bundle_combine -->
|
<!-- bundle_combine -->
|
||||||
<g id="node7" class="node"><title>bundle_combine</title>
|
<g id="node5" class="node"><title>bundle_combine</title>
|
||||||
<ellipse fill="none" stroke="black" cx="489" cy="-234" rx="75.1062" ry="18"></ellipse>
|
<ellipse fill="none" stroke="black" cx="129" cy="-306" rx="75.1062" ry="18"></ellipse>
|
||||||
<text text-anchor="middle" x="489" y="-229.8" font-family="Times,serif" font-size="14.00">bundle_combine</text>
|
<text text-anchor="middle" x="129" y="-301.8" font-family="Times,serif" font-size="14.00">bundle_combine</text>
|
||||||
</g>
|
</g>
|
||||||
<!-- .->bundle_combine -->
|
<!-- .->bundle_combine -->
|
||||||
<g id="edge6" class="edge"><title>.->bundle_combine</title>
|
<g id="edge4" class="edge"><title>.->bundle_combine</title>
|
||||||
<path fill="none" stroke="black" d="M411.22,-361.296C418.026,-350.783 427.129,-336.613 435,-324 448.199,-302.848 462.854,-278.648 473.562,-260.827"></path>
|
<path fill="none" stroke="black" d="M276.425,-367.705C250.531,-357.042 207.41,-339.287 174.475,-325.725"></path>
|
||||||
<polygon fill="black" stroke="black" points="476.631,-262.515 478.774,-252.14 470.628,-258.914 476.631,-262.515"></polygon>
|
<polygon fill="black" stroke="black" points="175.625,-322.413 165.045,-321.842 172.959,-328.886 175.625,-322.413"></polygon>
|
||||||
</g>
|
</g>
|
||||||
<!-- download_tracker -->
|
<!-- download_tracker -->
|
||||||
<g id="node30" class="node"><title>download_tracker</title>
|
<g id="node30" class="node"><title>download_tracker</title>
|
||||||
<ellipse fill="none" stroke="black" cx="563" cy="-306" rx="80.1284" ry="18"></ellipse>
|
<ellipse fill="none" stroke="black" cx="475" cy="-306" rx="80.1284" ry="18"></ellipse>
|
||||||
<text text-anchor="middle" x="563" y="-301.8" font-family="Times,serif" font-size="14.00">download_tracker</text>
|
<text text-anchor="middle" x="475" y="-301.8" font-family="Times,serif" font-size="14.00">download_tracker</text>
|
||||||
</g>
|
</g>
|
||||||
<!-- .->download_tracker -->
|
<!-- .->download_tracker -->
|
||||||
<g id="edge32" class="edge"><title>.->download_tracker</title>
|
<g id="edge32" class="edge"><title>.->download_tracker</title>
|
||||||
<path fill="none" stroke="black" d="M423.186,-367.414C447.609,-356.86 487.511,-339.619 518.449,-326.251"></path>
|
<path fill="none" stroke="black" d="M321.649,-367.992C348.38,-357.36 393.544,-339.397 427.955,-325.711"></path>
|
||||||
<polygon fill="black" stroke="black" points="519.944,-329.417 527.735,-322.238 517.167,-322.992 519.944,-329.417"></polygon>
|
<polygon fill="black" stroke="black" points="429.352,-328.922 437.351,-321.974 426.765,-322.418 429.352,-328.922"></polygon>
|
||||||
</g>
|
</g>
|
||||||
<!-- index_app_names -->
|
<!-- index_app_names -->
|
||||||
<g id="node9" class="node"><title>index_app_names</title>
|
<g id="node7" class="node"><title>index_app_names</title>
|
||||||
<ellipse fill="none" stroke="black" cx="315" cy="-234" rx="80.1456" ry="18"></ellipse>
|
<ellipse fill="none" stroke="black" cx="299" cy="-234" rx="80.1456" ry="18"></ellipse>
|
||||||
<text text-anchor="middle" x="315" y="-229.8" font-family="Times,serif" font-size="14.00">index_app_names</text>
|
<text text-anchor="middle" x="299" y="-229.8" font-family="Times,serif" font-size="14.00">index_app_names</text>
|
||||||
</g>
|
</g>
|
||||||
<!-- download_itunes->index_app_names -->
|
<!-- download_itunes->index_app_names -->
|
||||||
<g id="edge8" class="edge"><title>download_itunes->index_app_names</title>
|
<g id="edge6" class="edge"><title>download_itunes->index_app_names</title>
|
||||||
<path fill="none" stroke="black" d="M340.77,-288.055C336.902,-280.091 332.2,-270.411 327.876,-261.51"></path>
|
<path fill="none" stroke="black" d="M299,-287.697C299,-279.983 299,-270.712 299,-262.112"></path>
|
||||||
<polygon fill="black" stroke="black" points="330.908,-259.741 323.391,-252.275 324.612,-262.8 330.908,-259.741"></polygon>
|
<polygon fill="black" stroke="black" points="302.5,-262.104 299,-252.104 295.5,-262.104 302.5,-262.104"></polygon>
|
||||||
</g>
|
</g>
|
||||||
<!-- index_rank -->
|
<!-- index_rank -->
|
||||||
<g id="node11" class="node"><title>index_rank</title>
|
<g id="node11" class="node"><title>index_rank</title>
|
||||||
<ellipse fill="none" stroke="black" cx="403" cy="-162" rx="54.219" ry="18"></ellipse>
|
<ellipse fill="none" stroke="black" cx="257" cy="-162" rx="54.219" ry="18"></ellipse>
|
||||||
<text text-anchor="middle" x="403" y="-157.8" font-family="Times,serif" font-size="14.00">index_rank</text>
|
<text text-anchor="middle" x="257" y="-157.8" font-family="Times,serif" font-size="14.00">index_rank</text>
|
||||||
</g>
|
</g>
|
||||||
<!-- bundle_combine->index_rank -->
|
<!-- bundle_combine->index_rank -->
|
||||||
<g id="edge10" class="edge"><title>bundle_combine->index_rank</title>
|
<g id="edge18" class="edge"><title>bundle_combine->index_rank</title>
|
||||||
<path fill="none" stroke="black" d="M468.619,-216.411C457.21,-207.125 442.832,-195.421 430.444,-185.338"></path>
|
<path fill="none" stroke="black" d="M144.021,-288.252C160.084,-270.35 186.314,-241.143 209,-216 217.49,-206.59 226.843,-196.256 235.019,-187.232"></path>
|
||||||
<polygon fill="black" stroke="black" points="432.608,-182.586 422.643,-178.988 428.189,-188.015 432.608,-182.586"></polygon>
|
<polygon fill="black" stroke="black" points="237.729,-189.455 241.851,-179.695 232.542,-184.754 237.729,-189.455"></polygon>
|
||||||
</g>
|
</g>
|
||||||
<!-- index_domains -->
|
<!-- index_domains -->
|
||||||
<g id="node13" class="node"><title>index_domains</title>
|
<g id="node20" class="node"><title>index_domains</title>
|
||||||
<ellipse fill="none" stroke="black" cx="559" cy="-162" rx="70.0665" ry="18"></ellipse>
|
<ellipse fill="none" stroke="black" cx="92" cy="-234" rx="70.0665" ry="18"></ellipse>
|
||||||
<text text-anchor="middle" x="559" y="-157.8" font-family="Times,serif" font-size="14.00">index_domains</text>
|
<text text-anchor="middle" x="92" y="-229.8" font-family="Times,serif" font-size="14.00">index_domains</text>
|
||||||
</g>
|
</g>
|
||||||
<!-- bundle_combine->index_domains -->
|
<!-- bundle_combine->index_domains -->
|
||||||
<g id="edge12" class="edge"><title>bundle_combine->index_domains</title>
|
<g id="edge20" class="edge"><title>bundle_combine->index_domains</title>
|
||||||
<path fill="none" stroke="black" d="M505.589,-216.411C514.352,-207.648 525.268,-196.732 534.943,-187.057"></path>
|
<path fill="none" stroke="black" d="M120.043,-288.055C115.789,-280.007 110.608,-270.205 105.862,-261.226"></path>
|
||||||
<polygon fill="black" stroke="black" points="537.448,-189.502 542.044,-179.956 532.498,-184.552 537.448,-189.502"></polygon>
|
<polygon fill="black" stroke="black" points="108.899,-259.481 101.131,-252.275 102.71,-262.752 108.899,-259.481"></polygon>
|
||||||
</g>
|
|
||||||
<!-- index_app_names->index_rank -->
|
|
||||||
<g id="edge16" class="edge"><title>index_app_names->index_rank</title>
|
|
||||||
<path fill="none" stroke="black" d="M335.855,-216.411C347.529,-207.125 362.242,-195.421 374.917,-185.338"></path>
|
|
||||||
<polygon fill="black" stroke="black" points="377.253,-187.952 382.901,-178.988 372.896,-182.474 377.253,-187.952"></polygon>
|
|
||||||
</g>
|
</g>
|
||||||
<!-- index_categories -->
|
<!-- index_categories -->
|
||||||
<g id="node14" class="node"><title>index_categories</title>
|
<g id="node9" class="node"><title>index_categories</title>
|
||||||
<ellipse fill="none" stroke="black" cx="245" cy="-162" rx="76.1936" ry="18"></ellipse>
|
<ellipse fill="none" stroke="black" cx="407" cy="-162" rx="76.1936" ry="18"></ellipse>
|
||||||
<text text-anchor="middle" x="245" y="-157.8" font-family="Times,serif" font-size="14.00">index_categories</text>
|
<text text-anchor="middle" x="407" y="-157.8" font-family="Times,serif" font-size="14.00">index_categories</text>
|
||||||
</g>
|
</g>
|
||||||
<!-- index_app_names->index_categories -->
|
<!-- index_app_names->index_categories -->
|
||||||
<g id="edge18" class="edge"><title>index_app_names->index_categories</title>
|
<g id="edge8" class="edge"><title>index_app_names->index_categories</title>
|
||||||
<path fill="none" stroke="black" d="M298.055,-216.055C289.371,-207.371 278.644,-196.644 269.114,-187.114"></path>
|
<path fill="none" stroke="black" d="M324.049,-216.765C338.77,-207.223 357.567,-195.04 373.545,-184.684"></path>
|
||||||
<polygon fill="black" stroke="black" points="271.335,-184.385 261.789,-179.789 266.385,-189.335 271.335,-184.385"></polygon>
|
<polygon fill="black" stroke="black" points="375.599,-187.523 382.087,-179.147 371.792,-181.649 375.599,-187.523"></polygon>
|
||||||
</g>
|
</g>
|
||||||
<!-- html_bundle -->
|
<!-- index_app_names->index_rank -->
|
||||||
<g id="node25" class="node"><title>html_bundle</title>
|
<g id="edge10" class="edge"><title>index_app_names->index_rank</title>
|
||||||
<ellipse fill="none" stroke="black" cx="396" cy="-90" rx="59.2871" ry="18"></ellipse>
|
<path fill="none" stroke="black" d="M288.833,-216.055C283.88,-207.801 277.821,-197.701 272.323,-188.538"></path>
|
||||||
<text text-anchor="middle" x="396" y="-85.8" font-family="Times,serif" font-size="14.00">html_bundle</text>
|
<polygon fill="black" stroke="black" points="275.22,-186.563 267.073,-179.789 269.217,-190.165 275.22,-186.563"></polygon>
|
||||||
</g>
|
|
||||||
<!-- index_rank->html_bundle -->
|
|
||||||
<g id="edge26" class="edge"><title>index_rank->html_bundle</title>
|
|
||||||
<path fill="none" stroke="black" d="M401.27,-143.697C400.498,-135.983 399.571,-126.712 398.711,-118.112"></path>
|
|
||||||
<polygon fill="black" stroke="black" points="402.188,-117.706 397.71,-108.104 395.223,-118.403 402.188,-117.706"></polygon>
|
|
||||||
</g>
|
</g>
|
||||||
<!-- html_index_domains -->
|
<!-- html_index_domains -->
|
||||||
<g id="node27" class="node"><title>html_index_domains</title>
|
<g id="node13" class="node"><title>html_index_domains</title>
|
||||||
<ellipse fill="none" stroke="black" cx="566" cy="-90" rx="92.3709" ry="18"></ellipse>
|
<ellipse fill="none" stroke="black" cx="92" cy="-162" rx="92.3709" ry="18"></ellipse>
|
||||||
<text text-anchor="middle" x="566" y="-85.8" font-family="Times,serif" font-size="14.00">html_index_domains</text>
|
<text text-anchor="middle" x="92" y="-157.8" font-family="Times,serif" font-size="14.00">html_index_domains</text>
|
||||||
</g>
|
</g>
|
||||||
<!-- index_rank->html_index_domains -->
|
<!-- index_app_names->html_index_domains -->
|
||||||
<g id="edge28" class="edge"><title>index_rank->html_index_domains</title>
|
<g id="edge12" class="edge"><title>index_app_names->html_index_domains</title>
|
||||||
<path fill="none" stroke="black" d="M434.815,-147.337C459.181,-136.873 493.128,-122.295 520.384,-110.59"></path>
|
<path fill="none" stroke="black" d="M256.611,-218.666C224.5,-207.807 180.162,-192.813 145.592,-181.123"></path>
|
||||||
<polygon fill="black" stroke="black" points="521.912,-113.743 529.719,-106.581 519.149,-107.311 521.912,-113.743"></polygon>
|
<polygon fill="black" stroke="black" points="146.712,-177.807 136.118,-177.919 144.47,-184.438 146.712,-177.807"></polygon>
|
||||||
</g>
|
|
||||||
<!-- index_domains->html_index_domains -->
|
|
||||||
<g id="edge30" class="edge"><title>index_domains->html_index_domains</title>
|
|
||||||
<path fill="none" stroke="black" d="M560.73,-143.697C561.502,-135.983 562.429,-126.712 563.289,-118.112"></path>
|
|
||||||
<polygon fill="black" stroke="black" points="566.777,-118.403 564.29,-108.104 559.812,-117.706 566.777,-118.403"></polygon>
|
|
||||||
</g>
|
|
||||||
<!-- html_index_apps -->
|
|
||||||
<g id="node16" class="node"><title>html_index_apps</title>
|
|
||||||
<ellipse fill="none" stroke="black" cx="77" cy="-90" rx="77.3345" ry="18"></ellipse>
|
|
||||||
<text text-anchor="middle" x="77" y="-85.8" font-family="Times,serif" font-size="14.00">html_index_apps</text>
|
|
||||||
</g>
|
|
||||||
<!-- index_categories->html_index_apps -->
|
|
||||||
<g id="edge14" class="edge"><title>index_categories->html_index_apps</title>
|
|
||||||
<path fill="none" stroke="black" d="M208.96,-145.983C183.604,-135.418 149.48,-121.2 122.285,-109.869"></path>
|
|
||||||
<polygon fill="black" stroke="black" points="123.558,-106.607 112.981,-105.992 120.865,-113.069 123.558,-106.607"></polygon>
|
|
||||||
</g>
|
</g>
|
||||||
<!-- html_categories -->
|
<!-- html_categories -->
|
||||||
<g id="node20" class="node"><title>html_categories</title>
|
<g id="node15" class="node"><title>html_categories</title>
|
||||||
<ellipse fill="none" stroke="black" cx="245" cy="-90" rx="72.5712" ry="18"></ellipse>
|
<ellipse fill="none" stroke="black" cx="407" cy="-90" rx="72.5712" ry="18"></ellipse>
|
||||||
<text text-anchor="middle" x="245" y="-85.8" font-family="Times,serif" font-size="14.00">html_categories</text>
|
<text text-anchor="middle" x="407" y="-85.8" font-family="Times,serif" font-size="14.00">html_categories</text>
|
||||||
</g>
|
</g>
|
||||||
<!-- index_categories->html_categories -->
|
<!-- index_categories->html_categories -->
|
||||||
<g id="edge20" class="edge"><title>index_categories->html_categories</title>
|
<g id="edge14" class="edge"><title>index_categories->html_categories</title>
|
||||||
<path fill="none" stroke="black" d="M245,-143.697C245,-135.983 245,-126.712 245,-118.112"></path>
|
<path fill="none" stroke="black" d="M407,-143.697C407,-135.983 407,-126.712 407,-118.112"></path>
|
||||||
<polygon fill="black" stroke="black" points="248.5,-118.104 245,-108.104 241.5,-118.104 248.5,-118.104"></polygon>
|
<polygon fill="black" stroke="black" points="410.5,-118.104 407,-108.104 403.5,-118.104 410.5,-118.104"></polygon>
|
||||||
|
</g>
|
||||||
|
<!-- html_index_apps -->
|
||||||
|
<g id="node17" class="node"><title>html_index_apps</title>
|
||||||
|
<ellipse fill="none" stroke="black" cx="575" cy="-90" rx="77.3345" ry="18"></ellipse>
|
||||||
|
<text text-anchor="middle" x="575" y="-85.8" font-family="Times,serif" font-size="14.00">html_index_apps</text>
|
||||||
|
</g>
|
||||||
|
<!-- index_categories->html_index_apps -->
|
||||||
|
<g id="edge16" class="edge"><title>index_categories->html_index_apps</title>
|
||||||
|
<path fill="none" stroke="black" d="M443.04,-145.983C468.396,-135.418 502.52,-121.2 529.715,-109.869"></path>
|
||||||
|
<polygon fill="black" stroke="black" points="531.135,-113.069 539.019,-105.992 528.442,-106.607 531.135,-113.069"></polygon>
|
||||||
|
</g>
|
||||||
|
<!-- html_bundle -->
|
||||||
|
<g id="node22" class="node"><title>html_bundle</title>
|
||||||
|
<ellipse fill="none" stroke="black" cx="256" cy="-90" rx="59.2871" ry="18"></ellipse>
|
||||||
|
<text text-anchor="middle" x="256" y="-85.8" font-family="Times,serif" font-size="14.00">html_bundle</text>
|
||||||
|
</g>
|
||||||
|
<!-- index_rank->html_bundle -->
|
||||||
|
<g id="edge22" class="edge"><title>index_rank->html_bundle</title>
|
||||||
|
<path fill="none" stroke="black" d="M256.753,-143.697C256.643,-135.983 256.51,-126.712 256.387,-118.112"></path>
|
||||||
|
<polygon fill="black" stroke="black" points="259.887,-118.053 256.244,-108.104 252.888,-118.153 259.887,-118.053"></polygon>
|
||||||
|
</g>
|
||||||
|
<!-- html_root -->
|
||||||
|
<g id="node28" class="node"><title>html_root</title>
|
||||||
|
<ellipse fill="none" stroke="black" cx="92" cy="-90" rx="49.1927" ry="18"></ellipse>
|
||||||
|
<text text-anchor="middle" x="92" y="-85.8" font-family="Times,serif" font-size="14.00">html_root</text>
|
||||||
|
</g>
|
||||||
|
<!-- html_index_domains->html_root -->
|
||||||
|
<g id="edge30" class="edge"><title>html_index_domains->html_root</title>
|
||||||
|
<path fill="none" stroke="black" d="M92,-143.697C92,-135.983 92,-126.712 92,-118.112"></path>
|
||||||
|
<polygon fill="black" stroke="black" points="95.5001,-118.104 92,-108.104 88.5001,-118.104 95.5001,-118.104"></polygon>
|
||||||
</g>
|
</g>
|
||||||
<!-- html_ranking -->
|
<!-- html_ranking -->
|
||||||
<g id="node22" class="node"><title>html_ranking</title>
|
<g id="node25" class="node"><title>html_ranking</title>
|
||||||
<ellipse fill="none" stroke="black" cx="161" cy="-18" rx="63.108" ry="18"></ellipse>
|
<ellipse fill="none" stroke="black" cx="491" cy="-18" rx="63.108" ry="18"></ellipse>
|
||||||
<text text-anchor="middle" x="161" y="-13.8" font-family="Times,serif" font-size="14.00">html_ranking</text>
|
<text text-anchor="middle" x="491" y="-13.8" font-family="Times,serif" font-size="14.00">html_ranking</text>
|
||||||
</g>
|
|
||||||
<!-- html_index_apps->html_ranking -->
|
|
||||||
<g id="edge24" class="edge"><title>html_index_apps->html_ranking</title>
|
|
||||||
<path fill="none" stroke="black" d="M96.9068,-72.411C107.865,-63.2789 121.629,-51.8093 133.59,-41.8418"></path>
|
|
||||||
<polygon fill="black" stroke="black" points="136.084,-44.3191 141.526,-35.2285 131.603,-38.9416 136.084,-44.3191"></polygon>
|
|
||||||
</g>
|
</g>
|
||||||
<!-- html_categories->html_ranking -->
|
<!-- html_categories->html_ranking -->
|
||||||
<g id="edge22" class="edge"><title>html_categories->html_ranking</title>
|
<g id="edge28" class="edge"><title>html_categories->html_ranking</title>
|
||||||
<path fill="none" stroke="black" d="M225.093,-72.411C214.135,-63.2789 200.371,-51.8093 188.41,-41.8418"></path>
|
<path fill="none" stroke="black" d="M426.907,-72.411C437.865,-63.2789 451.629,-51.8093 463.59,-41.8418"></path>
|
||||||
<polygon fill="black" stroke="black" points="190.397,-38.9416 180.474,-35.2285 185.916,-44.3191 190.397,-38.9416"></polygon>
|
<polygon fill="black" stroke="black" points="466.084,-44.3191 471.526,-35.2285 461.603,-38.9416 466.084,-44.3191"></polygon>
|
||||||
|
</g>
|
||||||
|
<!-- html_index_apps->html_ranking -->
|
||||||
|
<g id="edge26" class="edge"><title>html_index_apps->html_ranking</title>
|
||||||
|
<path fill="none" stroke="black" d="M555.093,-72.411C544.135,-63.2789 530.371,-51.8093 518.41,-41.8418"></path>
|
||||||
|
<polygon fill="black" stroke="black" points="520.397,-38.9416 510.474,-35.2285 515.916,-44.3191 520.397,-38.9416"></polygon>
|
||||||
|
</g>
|
||||||
|
<!-- index_domains->html_index_domains -->
|
||||||
|
<g id="edge24" class="edge"><title>index_domains->html_index_domains</title>
|
||||||
|
<path fill="none" stroke="black" d="M92,-215.697C92,-207.983 92,-198.712 92,-190.112"></path>
|
||||||
|
<polygon fill="black" stroke="black" points="95.5001,-190.104 92,-180.104 88.5001,-190.104 95.5001,-190.104"></polygon>
|
||||||
</g>
|
</g>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
Before Width: | Height: | Size: 9.8 KiB After Width: | Height: | Size: 9.8 KiB |
Reference in New Issue
Block a user