{{/*
This file is part of SystemTestPortal.
Copyright (C) 2017  Institute of Software Technology, University of Stuttgart

SystemTestPortal is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

SystemTestPortal is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with SystemTestPortal.  If not, see <http://www.gnu.org/licenses/>.
*/}}

{{define "tab-content"}}
<div class="modal fade" id="helpModal">
    <div class="modal-dialog" role="document">
        <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title">{{T "Summary" .}}</h5>
                <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                    <span>&times;</span>
                </button>
            </div>
            <div class="modal-body">
                <table class="help-table">
                    <!-- Will be generated by js -->
                </table>
                <span class="mt-3 float-left">{{T "For more information visit our" .}} <a href="http://docs.systemtestportal.org" target="_blank">{{T "documentation" .}}</a>.</span>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-secondary" data-dismiss="modal">{{T "Close" .}}</button>
            </div>
        </div>
    </div>
</div>
{{template "execution-abort-modal" .}}
<div class="tab-card card" id="tabTestCases">
    <nav class="navbar navbar-light action-bar p-3">
        <button type="button" class="btn btn-danger mr-2" id="buttonAbort" title="Stop execution and discard protocol." data-shortcut="Esc">
            <i class="fa fa-times" aria-hidden="true"></i>
            <span class="d-none d-sm-inline"> {{T "Abort" .}}</span>
        </button>
            <button type="button" class="btn btn-secondary mr-4" data-placement="bottom"
                id="buttonPreviousStepFromSummary" title="Go back to previous step" data-shortcut="<- , Backspace">
                <i class="fa fa-step-backward" aria-hidden="true"></i>
                <span class="d-none d-sm-inline"> {{T "Previous" .}}</span>
            </button>
        <div class="progress mr-4" style="flex-grow: 100;">
            <div class="progress-bar" role="progressbar" style="width: {{ .ProgressBarPercent }}%;" aria-valuenow="{{ .ProgressBarPercent }}" aria-valuemin="0" aria-valuemax="100">{{ .ProgressBarCurrent }}/{{ .ProgressBarTotal }}</div>
        </div>
        <span {{if not .SystemSettings.IsExecutionTime}} hidden {{end}} class="navbar-text mr-4" id="timeTracker">
            <span id="timeHours">{{ .hours }}</span>:<span id="timeMinutes">{{ .minutes }}</span>:<span id="timeSeconds">{{ .seconds }}</span>
        </span>
        <button type="button" class="btn btn-secondary mr-2" id="buttonPause" title="Resume/Pause the execution timer." data-shortcut="Space">
            <i class="fa fa-fw fa-pause buttonPauseIcon" aria-hidden="true"></i>
        </button>
        <button type="button" class="btn btn-success" id="buttonSummaryFinish" title="Finish execution and save protocol.">
            <i class="fa {{if and .isInSequenceExecution (not .isSequence)}}fa-step-forward{{else}}fa-check{{end}}" aria-hidden="true"></i>
            <span class="d-none d-sm-inline"> {{if and .isInSequenceExecution (not .isSequence)}}{{T "Next" .}}{{else}}{{T "Finish" .}}{{end}}</span>
        </button>
    </nav>
    <div class="row tab-side-bar-row">

        <div class="col-md-12 p-3">

            <!-- Summary header -->
            <h4 class="mb-3">{{T "Summary of" .}} {{.TestObject.Name}}</h4>

            <!-- Results section-->
            <label><strong>{{T "Test" .}}{{if .isSequence}}{{T " Case" .}}{{else}}{{T "Step" .}}{{end}} {{T "Results" .}}</strong></label>
            <div class="form-group mb-4">
                {{ if .SubObjects }}
                <ol class="list-group" id="testStepsAccordion" data-children=".li">
                    {{ range $index, $element := .SubObjects }}
                    <li class="list-group-item">
                        <a data-toggle="collapse" data-parent="#testStepsAccordion" href="#testStepsAccordion{{ $index }}"
                            aria-expanded="true" aria-controls="testStepsAccordion{{ $index }}">
                            {{if eq .Result 1 }}
                                <i class="text-success fa fa-check-circle" aria-hidden="true"></i>
                            {{end}}
                            {{if eq .Result 2 }}
                                <i class="text-warning fa fa-exclamation-circle" aria-hidden="true"></i>
                            {{end}}
                            {{if eq .Result 3 }}
                                <i class="text-danger fa fa-exclamation-circle" aria-hidden="true"></i>
                            {{end}}
                            {{if eq .Result 0 }}
                                <i class="text-secondary fa fa-question-circle" aria-hidden="true"></i>
                            {{end}}
                            {{if $.isSequence}}{{.Name}}{{else}}{{printMarkdown .Action }}{{end}}
                            <div {{if not $.SystemSettings.IsExecutionTime }} hidden {{end}} class="float-right">{{ .NeededTime }}</div>
                        </a>
                        <div id="testStepsAccordion{{ $index }}" class="collapse" role="tabpanel">
                            {{if not $.isSequence}}
                            <p class="mb-1">
                            {{T "Actual Result" .}}: {{if .ObservedBehavior}}{{printMarkdown .ObservedBehavior }}{{else}}-{{end}}
                            </p>
                            {{end}}
                            <p class="mb-1">
                                {{T "Note" .}}: {{if .Comment}}{{printMarkdown .Comment}}{{else}}-{{end}}
                            </p>
                        </div>
                    </li>
                    {{ end }}
                </ol>
                {{ else }}
                <p class="text-muted">{{T "No Test" .}}{{if .isSequence}}{{T " Case" .}}{{else}}{{T " Step" .}}{{end}}</p>
                {{ end }}
            </div>

            <!-- Result radio selection -->
            {{ if not .isSequence}}
                <label><strong>{{T "Overall Assessment" .}}</strong></label>
                <div class="mb-3">

                    <!-- Passed -->
                    <div class="custom-control custom-radio">
                        <input type="radio" id="1" name="testResults" class="custom-control-input"
                               value="Pass">
                        <label class="custom-control-label text-success" for="1">{{T "Passed" .}}</label>
                    </div>

                    <!-- Partially passed -->
                    <div class="custom-control custom-radio">
                        <input type="radio" id="2" name="testResults" class="custom-control-input"
                               value="PartiallySuccessful">
                        <label class="custom-control-label text-warning" for="2">{{T "Partially successful" .}}</label>
                    </div>

                    <!-- Failed -->
                    <div class="custom-control custom-radio">
                        <input type="radio" id="3" name="testResults" class="custom-control-input"
                               value="Fail">
                        <label class="custom-control-label text-danger" for="3">{{T "Failed" .}}</label>
                    </div>

                    <!-- Not assessed -->
                    <div class="custom-control custom-radio">
                        <input type="radio" id="0" name="testResults" class="custom-control-input active "
                               value="NotAssessed" checked>
                        <label class="custom-control-label text-muted active" for="0">{{T "Not assessed" .}}</label>
                    </div>
                </div>
            {{end}}

            <!-- Note -->
            <div class="form-group">
                {{if not .isSequence }}
                    <label for="inputTestComment"><strong>Notes</strong></label>
                    <div class="md-area">
                        <textarea class="form-control markdown-textarea" id="inputTestComment" rows="4"></textarea>
                        <div class="md-area-bottom-toolbar">
                            <div style="float:left">{{T "Markdown supported" .}}</div>
                        </div>
                    </div>
                {{ end }}
                <input type="hidden" class="" id="inputTestStepNumber" value="{{ .step }}">
                <input type="hidden" class="" id="inputTestCaseNumber" value="{{ .case }}">
            </div>

        </div>
    </div>
</div>

<!-- Import Scripts here -->
<script src="/static/js/project/execute.js" integrity="{{sha256 "/static/js/project/execute.js"}}"></script>
<script src="/static/js/util/generate_help.js" integrity="{{sha256 "/static/js/util/generate_help.js"}}"></script>

<script>
    isInSequenceExecution = {{ .isInSequenceExecution }};
    isSequence = {{ .isSequence }};
    if (!isSequence) {
        //aseProtocol = retrieveCaseProtocol();
        //let time = caseProtocol.OtherNeededTime;
        caseProtocol = {{.caseProtocol}};
        caseProtocol.OtherNeededTime = getDuration(caseProtocol.OtherNeededTime.Duration/1000000000);
        caseProtocol.StepProtocols.forEach(function (stepProt){
           stepProt.NeededTime = getDuration(stepProt.NeededTime.Duration/1000000000)
        });
        caseProtocol.CurrentStep = {{.step}}-1;
        storeCaseProtocol(caseProtocol);
    }
    if (isSequence){
        let caseProtocols = seqProtocol.caseProtocols;
        seqProtocol = {{.seqProtocol}};
        seqProtocol.CurrentCase = {{.case}}
        seqProtocol.caseProtocols = caseProtocols;
        storeSeqProtocol(seqProtocol);
    }
    if (isInSequenceExecution){
        seqProtocol.CurrentCase = {{.case}}
    }

    initHours = {{ .hours }};
    initMinutes = {{ .minutes }};
    initSeconds = {{ .seconds }};
    //Initializes the Execution buttons
    initializeExecutionClickListener();


    // Generate help
    $(function() {
        generateHelp($("#tabTestCases"));
    });
    if (!isSequence){
        fillSummaryWithData();
    }
</script>
{{ end }}