github.com/billybanfield/evergreen@v0.0.0-20170525200750-eeee692790f7/service/templates/projects.html (about)

     1  {{define "scripts"}}
     2  <script>
     3    window.allTrackedProjects = {{.AllProjects}}
     4    window.availableTriggers = {{.AvailableTriggers}}
     5    {{if .User}}
     6    window.isSuperUser = {{IsSuperUser .User.Id}};
     7    window.user = {{.User}};
     8    window.isAdmin = {{.ProjectData.IsAdmin}}
     9    {{else}}
    10    window.isSuperUser = false;
    11    {{end}}
    12  </script>
    13  <script type="text/javascript" src="{{Static "js" "tablesorter.js"}}"></script>
    14  <script type="text/javascript" src="{{Static "js" "alerts.js"}}?hash={{ StaticsMD5 }}"></script>
    15  <script type="text/javascript" src="{{Static "js" "projects.js"}}?hash={{ StaticsMD5 }}"></script>
    16  {{end}}
    17  {{define "title"}}
    18  Evergreen Projects
    19  {{end}}
    20  {{define "content"}}
    21  <div id="content" class="container-fluid row" ng-controller="ProjectCtrl" ng-hide="isAdmin">
    22    <div class="row" style="text-align: center; margin-top:50px;" ng-cloak>
    23      <h1>Looks like you're not an admin... awkward.</h1>
    24      <h2> If you need access, please contact your Evergreen administrator. </h2>
    25    </div>
    26  </div>
    27  <div id="content" class="container-fluid row" ng-controller="ProjectCtrl" ng-show="isAdmin">
    28    <div class="col-lg-2 col-lg-offset-1">
    29      <h1> Projects</h1>
    30      <div class="row">
    31        <div class="col-lg-12">
    32          <button class="btn btn-primary" ng-click="openAdminModal('newProject')"> New Project </button>
    33          <label>[[newProjectMessage]] </label>
    34        </div>
    35      </div>
    36      <div class="row">
    37        <h3 class="col-lg-12" ng-show="showProject(enabledProjects)" > Enabled </h3>
    38      </div>
    39      <div class="row">
    40        <ul class="list-unstyled col-lg-offset-1" id="projects-table">
    41          <li ng-repeat="project in enabledProjects | orderBy:'identifier'" style="padding:3px">
    42            <a ng-click="loadProject(project.identifier)"  ng-class="{true:'current-project', false:''}[shouldHighlight(project)]" style="cursor:pointer;padding:5px;">
    43              [[project.identifier]]
    44            </a>
    45          </li>
    46        </ul>
    47      </div>
    48      <div class="row">
    49        <h3 class="col-lg-12" ng-show="showProject(disabledProjects)"> Disabled </h3>
    50      </div>
    51      <div class="row">
    52        <ul class="list-unstyled col-lg-offset-1">
    53          <li ng-repeat="project in disabledProjects | orderBy : 'identifier'" style="padding:3px">
    54            <a ng-click="loadProject(project.identifier)" ng-class="{true:'current-project', false:''}[shouldHighlight(project)]" style="cursor:pointer;padding:5px">
    55              [[project.identifier]]
    56            </a>
    57          </li>
    58        </ul>
    59      </div>
    60      <admin-modal>
    61      <admin-new-project></admin-new-project>
    62    </admin-modal>
    63  </div>
    64  <div class="col-lg-8" ng-show="projectView">
    65    <div class="form-horizontal">
    66      <h2> Settings for [[displayName]]</h2>
    67      <div class="col-lg-8">
    68        <div class="panel panel-danger" ng-show="settingsFormData.repotracker_error.exists">
    69          <div class="panel-heading">
    70            <i class="fa fa-exclamation-circle"></i>
    71            The current base revision ([[settingsFormData.repotracker_error.invalid_revision]]) cannot be found on branch, [[settingsFormData.branch_name]]. In order to resume tracking the repository, please confirm or enter a new base revision.
    72          </div>
    73          <div class="panel-body">
    74            <div class="form-group">
    75              <div class="col-lg-3 col-header">
    76                <label class="control-label"> New Merge Base Revision </label>
    77              </div>
    78              <div class="col-lg-6">
    79                <input class="form-control" type="text" ng-model="settingsFormData.repotracker_error.merge_base_revision">
    80                <label class="icon fa fa-warning project-error" ng-show="!isValidMergeBaseRevision(settingsFormData.repotracker_error.merge_base_revision)">&nbsp;Merge Base Revision must be a valid SHA GitHub Revision </label>
    81              </div>
    82              <div class="col-lg-2">
    83                <button class="form-control btn btn-primary" type="button" ng-disabled="!isValidMergeBaseRevision(settingsFormData.repotracker_error.merge_base_revision)"ng-click="setLastRevision()">
    84                  <i class="fa fa-check"></i>
    85                </button>
    86              </div>
    87            </div>
    88          </div>
    89        </div>
    90      </div>
    91      <form name="settingsForm" ng-submit="saveProject(settingsFormData)">
    92        <div class ="form-group">
    93          <div class="col-lg-8">
    94            <div class="radio">
    95              <label class="control-label">
    96                <input type="radio" ng-model="settingsFormData.enabled" ng-value="true"> <strong> Enabled </strong>
    97              </label> <br>
    98              <label class="muted col-lg-offset-1"> Track incoming commits to the repo and create/schedule its tasks.</label>
    99            </div>
   100            <div class="radio">
   101              <label class="control-label">
   102                <input type="radio" ng-model="settingsFormData.enabled" ng-value="false"> <strong> Disabled </strong>
   103              </label> <br>
   104              <label class="muted col-lg-offset-1">Don&#39;t track any new commits until re-enabled.</label>
   105            </div>
   106          </div>
   107        </div>
   108  
   109        <div class="form-group">
   110          <div class="col-lg-2 col-header">
   111            <label class="control-label"> Display Name</label>
   112          </div>
   113          <div class="col-lg-4">
   114            <input class="form-control" type="text" ng-model="settingsFormData.display_name">
   115          </div>
   116        </div>
   117  
   118        <div class="form-group">
   119          <div class="col-lg-2 col-header">
   120            <label class="control-label"> Config File</label>
   121          </div>
   122          <div class="col-lg-4">
   123            <input class="form-control" type="text" ng-model="settingsFormData.remote_path" placeholder=".evergreen.yml">
   124          </div>
   125        </div>
   126  
   127        <div class="form-group">
   128          <div class="col-lg-2 col-header">
   129            <label class="control-label">Batch Time (min)</label>
   130          </div>
   131          <div class="col-lg-4">
   132            <input class="form-control" type="text" ng-model="settingsFormData.batch_time">
   133            <label class="icon fa fa-warning project-error" ng-show="!isBatchTimeValid(settingsFormData.batch_time)">&nbsp;Batch time must be a number, &gt;=0.</label>
   134          </div>
   135        </div>
   136  
   137        <div id="github-info">
   138          <div class="h3"> Repository Info </div>
   139          <div class="form-group">
   140            <div class="col-lg-3 col-header">
   141              <label class="control-label">Owner</label>
   142            </div>
   143            <div class="col-lg-5">
   144              <input class="form-control" type="text" ng-model="settingsFormData.owner_name">
   145            </div>
   146          </div>
   147          <div class="form-group">
   148            <div class="col-lg-3 col-header">
   149              <label class="control-label">Repo Name</label>
   150            </div>
   151            <div class="col-lg-6">
   152              <input class="form-control" type="text" ng-model="settingsFormData.repo_name">
   153            </div>
   154          </div>
   155          <div class="form-group">
   156            <div class="col-lg-3 col-header">
   157              <label class="control-label">Branch Name</label>
   158            </div>
   159            <div class="col-lg-6">
   160              <input  class="form-control" type="textarea" ng-model="settingsFormData.branch_name" placeholder="master">
   161            </div>
   162          </div>
   163        </div>
   164  
   165        <div id="access-info">
   166          <div class="h3">Access Settings</div>
   167          <form name="settingsForm" ng-submit="saveProject(settingsFormData)">
   168            <div class ="form-group">
   169              <div class="col-lg-8">
   170                <div class="radio">
   171                  <label class="control-label">
   172                    <input type="radio" ng-model="settingsFormData.private" ng-value="true"> <strong> Private </strong>
   173                  </label> <br>
   174                  <label class="muted col-lg-offset-1">Users must be logged in to see this project.</label>
   175                </div>
   176                <div class="radio">
   177                  <label class="control-label">
   178                    <input type="radio" ng-model="settingsFormData.private" ng-value="false"> <strong> Public </strong>
   179                  </label> <br>
   180                  <label class="muted col-lg-offset-1">Anyone can see this project.</label>
   181                </div>
   182              </div>
   183            </div>
   184          </div>
   185          <div class="admins">
   186            <div class="form-group">
   187              <div class="col-header col-lg-4 form-control-static"> <h3> Admins </h3></div>
   188            </div>
   189            <div id="adminsList" class="form-group" ng-repeat="(index, admin) in settingsFormData.admins">
   190              <div class="col-lg-4"> <label class="control-label">[[admin]]</label> </div>
   191              <div class="col-lg-2">
   192                <button class="btn btn-default btn-danger" id="variable-add" type="button" ng-click="removeAdmin(index)">
   193                  <i class="fa fa-trash"></i>
   194                </button>
   195              </div>
   196            </div>
   197            <div class="form-group">
   198              <div class="col-lg-4">
   199                <input ng-model="admin_name" class="form-control" type="text" placeholder="username">
   200              </div>
   201              <div class="col-lg-2">
   202                <button class="plus-button btn btn-primary " ng-disabled="!(admin_name)" id="admin-add" type="button" ng-click="addAdmin()">
   203                  <i class="fa fa-plus"></i>
   204                </button>
   205              </div>
   206            </div>
   207          </div>
   208  
   209  
   210          <div id="scheduling-info">
   211            <div class="h3">Scheduling Settings</div>
   212            <div class="form-group">
   213              <div class="col-lg-4 col-header">
   214                <label class="control-label">Unschedule old tasks on success&nbsp;&nbsp;
   215                  <input type="checkbox" name="deactivate_previous" ng-model="settingsFormData.deactivate_previous"/>
   216                </label>
   217                <div class="muted small">When checked, tasks from previous revisions will be unscheduled when the equivalent task in a newer commit finishes successfully.</div>
   218              </div>
   219            </div>
   220          </div>
   221  
   222          <div class="form-group">
   223            <div class="col-lg-6">
   224              <h3>Alerts</h3>
   225              <ul class="notifications-list" ng-repeat="trigger in availableTriggers">
   226                <li class="triggerinfo">
   227                  <div>
   228                    <div class="trigger-display-wrapper">
   229                      When <span class="trigger-description">[[trigger.display]]</span>&hellip;
   230                      <div class="add-action pull-right"><a href="javascript:void(0)" ng-click="editing=true">add action</a></div>
   231                    </div>
   232                    <ul class="trigger-actions">
   233                      <li ng-repeat="alertConfig in getProjectAlertConfig(trigger.id)" class="action-config">&nbsp;&bull;&nbsp;[[getAlertDisplay(alertConfig)]] <div class="btn btn-danger btn-xs pull-right" ng-click="removeAlert(trigger.id, $index)"><i class="fa fa-trash" style="font-size:1.3em;">&nbsp;</i></div><div class="clearfix"/></li>
   234                      <!-- TODO only email for now. More providers can be supported by adding more options to this form. -->
   235                      <div ng-show="editing==true" class="editalert-form">
   236                        <label>Send alert to:</label>
   237                        <input type="text" ng-model="email" ng-required/>
   238                        <div class="btn btn-primary btn-xs" ng-disabled="!isValidAlertDefinition(this.email)" ng-click="addAlert(this, trigger)">Add</div>
   239                        <div class="btn btn-default btn-xs" ng-click="editing=false">Cancel</div>
   240                      </div>
   241                      <div ng-show="getProjectAlertConfig(trigger.id).length==0 && !editing" class="do-nothing">do nothing.</div>
   242                    </ul>
   243                  </div>
   244                </li>
   245              </ul>
   246            </div>
   247          </div>
   248  
   249  
   250  
   251          <div class="variables">
   252            <div class="form-group">
   253              <div class="col-header col-lg-4 form-control-static"> <h3> Variables </h3></div>
   254            </div>
   255            <div id="projectVarsList" class="form-group" ng-repeat="(name, value) in settingsFormData.project_vars">
   256              <div class="col-lg-2"> <label class="control-label">[[name]]</label> </div>
   257              <div class="col-lg-4" >
   258                <textarea class="form-control" style="font-family:monospace;" readonly>[[valueString(name, value)]]</textarea>
   259              </div>
   260              <div class="col-lg-2">
   261                <button class="btn btn-default btn-danger" id="variable-add" type="button" ng-click="removeProjectVar(name)">
   262                  <i class="fa fa-trash"></i>
   263                </button>
   264              </div>
   265            </div>
   266            <div class="form-group">
   267              <div class="col-lg-2">
   268                <input ng-model="proj_var.name" class="form-control" type="text" placeholder="variable name">
   269              </div>
   270              <div class="col-lg-4">
   271                <textarea ng-model="proj_var.value" class="form-control" placeholder="variable" style="font-family:monospace;"></textarea>
   272              </div>
   273              <div>
   274               <label class="control-label">
   275                 <input type="checkbox" name="set_private" ng-model="proj_var.is_private" ng-disabled="!validKeyValue(proj_var.name, proj_var.value)" /> <strong>Private Variable</strong>
   276              </div>
   277              <div class="col-lg-6">
   278                <button class="plus-button btn btn-primary " ng-disabled="!validKeyValue(proj_var.name, proj_var.value)" id="variable-add" type="button" ng-click="addProjectVar()">
   279                  <i class="fa fa-plus"></i>
   280                </button>
   281                <label class="distro-error">[[invalidKeyMessage]]</label>
   282              </div>
   283            </div>
   284          </div>
   285          <br>
   286          <div class="row">
   287            <div class="col-lg-2">
   288              <label>[[saveMessage]]</label>
   289            </div>
   290            <div class="col-lg-4">
   291              <input class="btn btn-primary" input ng-disabled="!isDirty || !isBatchTimeValid(settingsFormData.batch_time)" type="submit" value="Save Changes">
   292            </div>
   293          </div>
   294      </form>
   295    </div>
   296  </div>
   297  {{end}}