sams-webapp
Version:
Some awesome memory scheduler, client.
211 lines (202 loc) • 8.21 kB
HTML
<div class="panel panel-default">
<div class="panel-body">
<ng-include src="'templates/partials/options.popup.html'" class="no-printable"></ng-include>
<!--Breadcrumb, step 4 -->
<nav class="no-printable">
<ol class="cd-multi-steps text-top">
<li class="visited"><em>{{ 'BREADCRUMB_REQUIREMENTS' | translate }}</em></li>
<li class="visited"><em>{{ 'BREADCRUMB_POLICIES' | translate }}</em></li>
<li class="current"><em>{{ 'BREADCRUMB_RESOLUTION' | translate }}</em></li>
</ol>
</nav>
<!-- /breacrumbs -->
<!-- Back-Forward buttons -->
<div class="row no-printable">
<div class="col-sm-6">
<a class="btn btn-primary btn pull-right" ui-sref="step.policies"><span class="glyphicon glyphicon-chevron-left"></span></a>
</div>
<div class="col-sm-6">
<button class="btn btn-primary btn" ng-click="showSolve=!showSolve"><span class="glyphicon glyphicon-cog"></span>
{{showSolve ? "Back to Resolution" : "Show Solution"}}
</button>
</div>
</div>
<!-- /Back-Forward buttons -->
<div class="row">
<!-- Rendered User Solution Table -->
<div class="col-sm-12" ng-hide="showSolve">
<!-- results memory-->
<table class="center-table printable">
<thead>
<!-- render nº instant-->
<tr>
<td class="rtable rtable-default">Instant #</td>
<td class="rtable rtable-space"></td>
<td class="rtable rtable-default" ng-repeat="instant in [0, instants] | makeRange">{{instant}}</td>
</tr>
<!-- specify the required page for the instant-->
<tr>
<td class="rtable rtable-default">Requirement</td>
<td class="rtable rtable-space"></td>
<td class="rtable rtable-default" ng-repeat="p in userSolution">
<span class="text-primary">{{ p.requirement.mode == 'read' ? p.requirement.process + p.requirement.pageNumber + ' R' : ''}}</span>
<span class="text-default">{{ p.requirement.mode == 'write' ? p.requirement.process + p.requirement.pageNumber + ' W' : ''}}</span>
<span class="text-success">{{ p.requirement.mode == 'finish' ? p.requirement.process + ' F' : '' }}</span>
</td>
</tr>
</thead>
<tbody>
<!-- render nº frames-->
<tr ng-repeat="n in [0, framesTotal] | makeRange">
<td class="rtable rtable-frame">Frame {{n}}</td>
<td class="rtable rtable-space"></td>
<td class="rtable rtable-frame" ng-repeat="p in userSolution"
ng-dblclick="showOptions(n,$index)"
ng-class="frameClassFor(p.frames[n])" contenteditable="true" strip-br="true"
ng-model="inputMatrix[$index][n]" ng-change="changeFrame(n,$index)">
<!-- {{(p.frames[n].reservedForPageBuffering || p.frames[n].finished) ? '' : (p.frames[n].process + p.frames[n].pageNumber)}} -->
{{ inputMatrix[$index][n] }}
</td>
</tr>
</tbody>
</table>
<button class="btn btn-primary btn pull-left no-printable" ng-click="print()"><span class="glyphicon glyphicon-print"></span> Print</button>
<button class="btn btn-success btn pull-right no-printable" ng-click="checkSolution()"> Check solution <span class="glyphicon glyphicon-ok"></span></button>
</div>
<!-- /Rendered User Solution Table -->
<!-- Rendered Table -->
<div class="col-sm-12" ng-show="showSolve">
<!-- results memory-->
<table class="center-table">
<thead>
<!-- render nº instant-->
<tr>
<td class="rtable rtable-default">Instant #</td>
<td class="rtable rtable-space"></td>
<td class="rtable rtable-default" ng-repeat="instant in [0, instants] | makeRange">{{instant}}</td>
</tr>
<!-- specify the required page for the instant-->
<tr>
<td class="rtable rtable-default">Requirement</td>
<td class="rtable rtable-space"></td>
<td class="rtable rtable-default" ng-repeat="p in results">
<span class="text-primary">{{ p.requirement.mode == 'read' ? p.requirement.process + p.requirement.pageNumber + ' R' : ''}}</span>
<span class="text-default">{{ p.requirement.mode == 'write' ? p.requirement.process + p.requirement.pageNumber + ' W' : ''}}</span>
<span class="text-success">{{ p.requirement.mode == 'finish' ? p.requirement.process + ' F' : '' }}</span>
</td>
</tr>
</thead>
<tbody>
<!-- render nº frames-->
<tr ng-repeat="n in [0, framesTotal] | makeRange">
<td class="rtable rtable-frame">Frame {{n}}</td>
<td class="rtable rtable-space"></td>
<td class="rtable rtable-frame" ng-repeat="p in results"
ng-class="frameClassFor(p.frames[n])">
{{(p.frames[n].reservedForPageBuffering || p.frames[n].finished || (p.frames[n].process == "empty")) ? '' : (p.frames[n].process + p.frames[n].pageNumber)}}
</td>
</tr>
<!-- render page faults -->
<tr>
<td class="rtable rtable-default rtable-pf">PF</td>
<td class="rtable rtable-space"></td>
<td class="rtable rtable-default rtable-pf" ng-repeat="p in results">
{{ p.pageFault ? 'X' : ''}}
</td>
</tr>
<!-- render victim for this instant -->
<tr>
<td class="rtable rtable-default">Victim</td>
<td class="rtable rtable-space"></td>
<td class="rtable rtable-default" ng-repeat="p in results">
{{ {true: p.victim.process + p.victim.pageNumber, false:''}[p.victim != undefinded] }}
</td>
</tr>
<!-- render victims queue buttons -->
<tr>
<td class="rtable rtable-default">Victims' Queue</td>
<td class="rtable rtable-space"></td>
<td class="rtable rtable-default" ng-repeat="(i, p) in results">
<button ng-click="showVictims(i)" type="button" name="button" class="btn btn-info btn-lg">
<span class="glyphicon glyphicon-chevron-down"></span>
</button>
</td>
</tr>
</tbody>
</table>
</div>
<!-- /Rendered Table -->
<!-- Render victim queue -->
<div class="col-xs-offset-1 col-xs-10 no-printable" ng-show="showSolve">
<div class="page-header section-header">
<h4>Victims' Queue</h4>
</div>
<div class="panel panel-default panel-body grey-color">
<table id="victims-queue">
<tbody>
<tr>
<td class="rtable rtable-default" ng-repeat="v in victimsQueue">
{{ v.process }}{{v.pageNumber}}
</td>
</tr>
</tbody>
</table>
</div>
</div>
<!-- /Render victim queue -->
<!-- legend panel -->
<div class="col-xs-offset-1 col-xs-10 no-printable">
<div class="page-header section-header">
<h4>Legend</h4>
</div>
<div class="panel panel-default panel-body grey-color">
<div class="row">
<div class="col-lg-2 col-sm-4 col-xs-12">
<div class="panel panel-default">
<div class="panel-body rtable-legend rtable-frame">
Empty frame, frame with no changes
</div>
</div>
</div>
<div class="col-lg-2 col-sm-4 col-xs-12">
<div class="panel panel-default">
<div class="panel-body rtable-legend rtable-newinmemory">
New page in memory
</div>
</div>
</div>
<div class="col-lg-2 col-sm-4 col-xs-12">
<div class="panel panel-default">
<div class="panel-body rtable-legend rtable-referenced">
Referenced page
</div>
</div>
</div>
<div class="col-lg-2 col-sm-4 col-xs-12">
<div class="panel panel-default">
<div class="panel-body rtable-legend rtable-modified">
Modified page
</div>
</div>
</div>
<div class="col-lg-2 col-sm-4 col-xs-12">
<div class="panel panel-default">
<div class="panel-body rtable-legend rtable-async">
Frame reserved for Page Buffering
</div>
</div>
</div>
<div class="col-lg-2 col-sm-4 col-xs-12">
<div class="panel panel-default">
<div class="panel-body rtable-legend rtable-finished">
Frame freed from a finished process
</div>
</div>
</div>
</div>
</div>
</div>
<!--/legend panel-->
</div>
</div>
</div>