3 from PageConfig
import PageConfig
4 from ChainData
import *
9 import ViewHTML
as html_view
10 import ViewGoogleCharts
as google_view
11 import ProductionTestTools
as tools
16 parser = argparse.ArgumentParser(prog=prog, description=
'Make dataset definitions page')
18 parser.add_argument(
"cfgFile",help=
"Configuration file for web-page",type=str)
19 parser.add_argument(
"-v",
"--verbose",
20 help=
"Print lots of debugging output",
23 args=parser.parse_args()
27 pageFileName= cfg.pageFileName
28 pageTitle = cfg.pageTitle
29 pageDesc = cfg.pageDesc
36 <div class="page-header"> 43 The datasets for this sample are: 46 <div class="container"> 51 page = PM.PageMaker(pageFileName, base_html, verbose=args.verbose)
52 page.insertContent(
"<!--NAVBAR_HOOK-->",
53 '<li class="active"><a href="http://nusoft.fnal.gov/nova/production/%s">%s</a></li>'%(pageFileName,pageTitle))
54 page.insertContent(
"NOvA | datasets",pageTitle,
True)
55 page.insertContent(
"<!--TEXT_HOOK-->",pageDesc)
58 defDescriptions=OrderedDict()
67 if args.verbose:
print "PMS : Reading data for chain " + chainName
69 chainTitle=chain.title
73 <div class="col-md-6"> 74 <div class="panel panel-default"> 75 <div class="panel-heading"> 76 <h3 class="panel-title">%s</h3> 78 <div class="panel-body"> 80 for tier
in chain.tierData.keys():
82 thisTier=chain.tierData[tier]
86 chainTierName = (chainName +
"_" + tier).replace(
" ",
"_").replace(
"-",
"_")
87 list_html +=
'<strong>%s</strong>: ' % tier
88 list_html +=
'<a href="#" data-toggle="modal" data-target="#%s">%s</a><br>'%(tools.makeAlphanumeric(chainTierName),defName)
90 defDescriptions[chainTierName]=thisTier.description
91 defInfo[defName]=thisTier.summary
94 defInfo[defName][
"status"]=html_view.makeSAMQueryStatusBadge(thisTier.state,time=thisTier.queryTime,date=thisTier.queryDate())
96 defInfo[defName][
"status"]=html_view.makeSAMQueryStatusBadge(
"Not Fetched",time=0)
97 chainTiers.append((chainTitle,tier))
99 if tier
not in legend:
104 nFiles .
append( chain.getFileCounts())
105 nEvents .
append(chain.getTotEventCounts())
106 fileSizes.append( chain.getTotFileSizes())
114 page.insertContent(
"<!--LIST-->",list_html)
116 modal_html = html_view.samDefinitionDescriptionsModal(defDescriptions)
117 page.insertContent(
"<!--BODY_HOOK-->",
"%s\n<!--BODY_HOOK-->"%modal_html)
119 table_html,totals = html_view.samFileInfoSummaryTable(defInfo,names=chainTiers,configs=
False,status=
True)
120 page.insertContent(
"<!--BODY_HOOK-->",
"%s\n<hr><!--BODY_HOOK-->"%table_html)
125 head_n_files, body_n_files = google_view.stackedColumnChart(name=
"n_files",
128 title=
"Number of files per definition",
130 y_title=
"Number of files",
132 head_html += head_n_files
133 body_html += body_n_files
135 head_n_files, body_n_files = google_view.stackedColumnChart(name=
"n_events",
138 title=
"Number of events per definition",
140 y_title=
"Number of events",
142 head_html += head_n_files
143 body_html += body_n_files
145 head_n_files, body_n_files = google_view.stackedColumnChart(name=
"size",
148 title=
"Size of definition",
152 head_html += head_n_files
153 body_html += body_n_files
156 page.insertContent(
"<!--HEADER_HOOK-->",
"%s\n<!--HEADER_HOOK-->"%head_html)
157 page.insertContent(
"<!--BODY_HOOK-->",
"%s\n<!--BODY_HOOK-->"%body_html)