mc-core
Version:
Deployments made simple
218 lines (200 loc) • 11.9 kB
HTML
<div class="pull-right" style="display:inline-block">
<a class="btn btn-success" ng-click="modal.open('stage', refresh, {pipelineId: pipeline.id})">
<i class="fa fa-plus"></i> Add Stage
</a>
</div>
<h1><i class="fa fa-tasks"></i> {{ pipeline.name }}</h1>
<h4 style="margin-top: 0;color: #aaa;font-weight: normal;margin-bottom: 30px;"><i class="fa fa-code"></i> {{ project.name }}</h4>
<div class="row">
<div class="col-md-3">
<div class="panel panel-default">
<div class="panel-heading">Pipeline Settings</div>
<div class="panel-body">
<div class="form-group">
<label>Pipeline Name</label>
<div>
<a href="javascript:void(0);" class="btn btn-xs btn-default pull-right"><i class="fa fa-pencil"></i></a>
{{ pipeline.name }}
</div>
</div>
<hr>
<div class="form-group">
<label><i class="fa fa-code"></i> Project</label>
<div>
<a href="javascript:void(0);" class="btn btn-xs btn-default pull-right"><i class="fa fa-pencil"></i></a>
{{ project.name }}
</div>
</div>
</div>
</div>
</div>
<!-- Right column -->
<div class="col-md-9">
<!-- Pipeline Variables -->
<div class="panel panel-default">
<div class="panel-heading"><a ng-click="toggleStandardSection()" class="pull-right btn btn-xs btn-default"><span ng-if="!standardVariablesSectionShowing"><i class="fa fa-plus"></i> Expand</span><span ng-if="standardVariablesSectionShowing"><i class="fa fa-minus"></i> Minimize</span></a>Standard Variables and Helpers</div>
<table class="table" ng-if="standardVariablesSectionShowing">
<thead>
<tr>
<th>Name</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="monospace"><span class="text-muted">mc.</span>workspace_path</td>
<td>The path of the workspace for a given pipeline execution.<br><small>Example Value: <code>/path/to/workspaces/pe_123/</code></small></td>
</tr>
<tr>
<td class="monospace"><span class="text-muted">mc.</span>timestamp()</td>
<td>Generates a timestamp unix timestamp.<br><small>Example Value: <code>12398134572</code></small></td>
</tr>
</tbody>
</table>
</div>
<!-- Pipeline Variables -->
<div class="panel panel-default">
<div class="panel-heading"><a ng-click="toggleCustomSection()" class="pull-right btn btn-xs btn-default"><span ng-if="!customVariablesSectionShowing"><i class="fa fa-plus"></i> Expand</span><span ng-if="customVariablesSectionShowing"><i class="fa fa-minus"></i> Minimize</span></a>Custom Variables — {{ variables.length }}</div>
<table class="table" ng-if="customVariablesSectionShowing">
<thead>
<tr>
<th style="width: 270px;">Name</th>
<th>Details</th>
<th>Options</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="var in variables">
<td class="monospace"><span class="text-muted">mc.var.</span>{{ var.name }}</td>
<td ng-if="var.required"><i class="fa fa-check"></i> Required</td>
<td ng-if="!var.required">Optional. Default: <code>{{ var.default_value }}</code></td>
<td><a ng-click="editVar(var)" class="btn btn-xs btn-default" ng-if="!editVarFormShowing"><i class="fa fa-pencil"></i> Edit</a> <a ng-click="deleteVar(var)" class="btn btn-xs btn-default"><i class="fa fa-trash"></i> Delete</a></td>
</tr>
<tr ng-if="!createVarFormShowing">
<td colspan="3" class="" style="padding-top: 8px;padding-bottom: 7px;">
<a class="btn btn-sm btn-success" ng-click="showCreateVarForm()"><i class="fa fa-plus"></i> Add Custom Variable/Input</a>
</td>
</tr>
<tr ng-if="createVarFormShowing">
<td>
<div class="form-group"><label>Name</label>
<div class="input-group input-group-sm">
<div class="input-group-addon monospace">mc.var.</div>
<input type="text" class="form-control monospace" ng-model="createVarFormValues.name">
</div>
</div><div class="form-group"><label>Description</label><textarea class="form-control" ng-model="createVarFormValues.description"></textarea></div>
</td>
<td>
<div class="form-group">
<label>Mode</label>
<select class="form-control" ng-model="createVarFormValues.required">
<option value="1">Required input</option>
<option value="0">Optional Input</option>
</select>
</div>
<div class="form-group" ng-if="createVarFormValues.required != 1">
<label>Default Value</label>
<input type="text" class="form-control monospace" ng-model="createVarFormValues.default_value">
</div>
</td>
<td>
<a ng-click="cancelCreateVar()" class="btn btn-default">Cancel</a>
<a ng-click="createVar()" class="btn btn-success">Create</a>
</td>
</tr>
<tr ng-if="editVarFormShowing">
<td>
<div class="form-group"><label>Name</label>
<div class="input-group input-group-sm">
<div class="input-group-addon monospace">mc.var.</div>
<input type="text" class="form-control monospace" ng-model="editVarFormValues.name">
</div>
</div><div class="form-group"><label>Description</label><textarea class="form-control" ng-model="editVarFormValues.description"></textarea></div>
</td>
<td>
<div class="form-group">
<label>Mode</label>
<select class="form-control" ng-model="editVarFormValues.required">
<option value="1">Required input</option>
<option value="0">Optional Input</option>
</select>
</div>
<div class="form-group" ng-if="editVarFormValues.required != 1">
<label>Default Value</label>
<input type="text" class="form-control monospace" ng-model="editVarFormValues.default_value">
</div>
</td>
<td>
<a ng-click="cancelVarEdits()" class="btn btn-default">Cancel</a>
<a ng-click="saveVarEdits()" class="btn btn-success">Save</a>
</td>
</tr>
</tbody>
</table>
</div>
<h3>Stages</h3>
<!-- Stages -->
<div class="panel panel-default pipeline-stage" ng-repeat="stage in stages">
<div class="title-block">
<i class="fa fa-check-square-o icon"></i>
<a class="btn btn-default configure" ng-click="toggleOptions($event)">
<i class="fa fa-sliders text-muted"></i> Options
</a>
<h3>{{ $index + 1 }}. {{ stage.name }}</h3>
<small class="text-muted">Extension Name › {{ stage.schema.name }}</small>
</div>
<div class="panel-body">
<div class="row" ng-repeat="(key, option) in stageOptions.current[stage.id]">
<div class="col-md-4">
<h4>{{ stageOptions.metadata[stage.id][key].name }}</h4>
<p>{{ stageOptions.metadata[stage.id][key].description }}</p>
</div>
<div class="col-md-8" ng-switch="option.type">
<textarea ng-switch-when="textarea" ng-model="stageOptions.current[stage.id][key]" class="form-control monospace">{{ option }}</textarea>
<input ng-switch-default ng-model="stageOptions.current[stage.id][key]" type="text" class="form-control monospace" />
</div>
</div>
<hr>
<div ng-if="(stageOutputs.current[stage.id] | keysLength) > 0">
<h3>Output</h3>
<div class="row" ng-repeat="(name, output) in stageOutputs.current[stage.id]">
<div class="col-md-4">
<code>{{ name }}</code>
<br><small>{{ output.description }}</small>
</div>
<div class="col-md-8">
<input type="text" class="form-control" placeholder="(unused)" ng-model="stageOutputs.current[stage.id][name]">
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<button class="btn btn-danger pull-left" ng-click="removeStage(stage.id)">Delete Stage</button>
<button class="btn btn-success pull-right" ng-click="saveOptionsAndOutputs(stage.id)" ng-disabled="(stageOptions.current[stage.id] | json) == (stageOptions.saved[stage.id] | json) && (stageOutputs.current[stage.id] | json) == (stageOutputs.saved[stage.id] | json)">Save Stage Config</button>
</div>
</div>
</div>
</div>
</div>
</div>
<!--<hr>-->
<!--<div class="row">-->
<!--<div class="col-md-12">-->
<!--<h2>Completed Executions</h2>-->
<!--<table class="table">-->
<!--<tbody>-->
<!--<tr ng-repeat="pe in pipelineExecutions">-->
<!--<td class="text-center" style="vertical-align:middle;width: 30px;padding-right: 0;">-->
<!--<i class="fa fa-circle text-info" ng-if="pe.status === 'created'"></i>-->
<!--<i class="fa fa-circle text-info" ng-if="pe.status === 'queued'"></i>-->
<!--<i class="fa fa-circle text-info pulse" ng-if="pe.status === 'running'"></i>-->
<!--<i class="fa fa-circle text-warning" ng-if="pe.status === 'awaiting_confirmation'"></i>-->
<!--<i class="fa fa-circle text-danger" ng-if="pe.status === 'failed'"></i>-->
<!--<i class="fa fa-circle text-success" ng-if="pe.status === 'succeeded'"></i>-->
<!--</td>-->
<!--<td><a ui-sref="pipeline-execution-details({id: pe.id})">Execution #{{ pe.id }}<span ng-if="pe.status === 'awaiting_confirmation'"> – Awaiting Confirmation</span></a><br><small class="text-muted">{{ pe.pipeline_config_name }}</small></td>-->
<!--</tr>-->
<!--</tbody>-->
<!--</table>-->
<!--</div>-->
<!--</div>-->