Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
03/16/16 16:57:46 (8 years ago)
Author:
jlodewyc
Message:

#2582 Distribution childs and priority done. Display current jobs and start graphs

Location:
branches/WebJobManager
Files:
15 added
17 edited

Legend:

Unmodified
Added
Removed
  • branches/WebJobManager/HeuristicLab.Clients.Hive.WebJobManager/Controllers/JobController.cs

    r13696 r13712  
    3838            try
    3939            {
    40 
    41                 vm.userJobs = client.GetJobs();
     40                HiveClientWeb.Instance.Refresh();
     41
     42                vm.userJobs = HiveClientWeb.Instance.Jobs.ToList();
    4243            }
    4344            catch (Exception e)
     
    5758            if (((HiveServiceLocatorWebManagerService)(HiveServiceLocatorWebManagerService.Instance)).CheckLogin())
    5859            {
    59                 vm.userJobs = client.GetJobs();
    60                 vm.selectedJob = client.GetJob(id);
    61 
    62                 vm.lightJobTasks = client.GetLightweightJobTasks(id);
    63                 foreach (var light in vm.lightJobTasks)
    64                 {
    65                     vm.filledJobTasks.Add(client.GetTask(light.Id));
    66                 }
    67                 ViewBag.Title = vm.selectedJob.Name + " - Jobs";
     60                HiveClientWeb.Instance.Refresh();
     61
     62                vm.userJobs = HiveClientWeb.Instance.Jobs.ToList();
     63                foreach(var j in vm.userJobs)
     64                {
     65                    if(j.Id == id)
     66                    {
     67                        vm.selectedJob = j;
     68                    }
     69                }
     70                vm.selectedJob.RefreshAutomatically = true;
     71                HiveClientWeb.LoadJob(vm.selectedJob);
     72                ViewBag.Title = vm.selectedJob.Job.Name + " - Jobs";
    6873                return View("Index", vm);
    6974            }
     
    8186                vm.message = client.GetJob(id).Name + " deleted";
    8287                client.DeleteJob(id);
    83                 vm.userJobs = client.GetJobs();
     88                HiveClientWeb.Instance.Refresh();
     89
     90                vm.userJobs = HiveClientWeb.Instance.Jobs.ToList();
    8491                ViewBag.Title = "Jobs";
    8592                return View("Index", vm);
  • branches/WebJobManager/HeuristicLab.Clients.Hive.WebJobManager/Models/AlgorithmContainer.cs

    r13696 r13712  
    1111        public IAlgorithm algo { get; set; }
    1212        public System.Random randy { get; set; }
    13 
    14         public AlgorithmContainer(IAlgorithm al, System.Random r)
     13        public List<int[]> depth { get; set; }
     14        public AlgorithmContainer(IAlgorithm al, List<int[]> d, int[] v, System.Random r)
    1515        {
    1616            algo = al;
     17            depth = d;
     18            depth.Add(v);
    1719            randy = r;
    1820        }
  • branches/WebJobManager/HeuristicLab.Clients.Hive.WebJobManager/ProgressHub.cs

    r13696 r13712  
    2121        public void ChangeName(string name)
    2222        {
    23             FileOpeningService.Instance.Job.Job.Name = name;
     23            if (name != null)
     24                FileOpeningService.Instance.Job.Job.Name = name;
    2425        }
    2526        public void ToggleChild(int[][] arr)
     
    2829            HiveTask current = Job.HiveTasks.ToList()[0];
    2930            //  IOptimizer current = Job.HiveTasks.ToArray() ;
    30             for (var i = 0; i < arr.Length; i++)
     31            if (arr.Length == 0)
    3132            {
    32 
     33                current.ItemTask.ComputeInParallel = !current.ItemTask.ComputeInParallel;
    3334               
    34                 if(i == arr.Length - 1)
     35            }
     36            else {
     37                for (var i = 0; i < arr.Length; i++)
    3538                {
    36                     current.ChildHiveTasks[arr[i][1]].ItemTask.ComputeInParallel = !current.ChildHiveTasks[arr[i][1]].ItemTask.ComputeInParallel;
    3739
    3840
     41                    if (i == arr.Length - 1)
     42                    {
     43                        if (current.ItemTask.Item is BatchRun)
     44                        {
     45                            current.ChildHiveTasks[arr[i][1]].ItemTask.ComputeInParallel = !current.ChildHiveTasks[arr[i][1]].ItemTask.ComputeInParallel;
     46                        }
     47                        else if (current.ItemTask.Item is Experiment)
     48                        {
     49                            current.ChildHiveTasks[arr[i][0]].ItemTask.ComputeInParallel = !current.ChildHiveTasks[arr[i][0]].ItemTask.ComputeInParallel;
     50                        }
     51
     52                    }
     53                    else {
     54                        if (current.ItemTask.Item is BatchRun)
     55                            current = current.ChildHiveTasks[arr[i][1]]; // select right batch
     56                        else if (current.ItemTask.Item is Experiment)
     57                            current = current.ChildHiveTasks[arr[i][0]]; // select right sub task from experiment
     58                    }
    3959                }
    40                 else
    41                     current = current.ChildHiveTasks[arr[i][0]];
     60            }
     61        }
     62        public void ChangePriority(int[][] arr, int prior)
     63        {
     64            Job = FileOpeningService.Instance.Job;
     65            HiveTask current = Job.HiveTasks.ToList()[0];
     66            //  IOptimizer current = Job.HiveTasks.ToArray() ;
     67            if (arr.Length == 0)
     68            {
     69                current.Task.Priority = prior;
     70
     71            }
     72            else {
     73                for (var i = 0; i < arr.Length; i++)
     74                {
     75
     76
     77                    if (i == arr.Length - 1)
     78                    {
     79                        if (current.ItemTask.Item is BatchRun)
     80                        {
     81                            current.ChildHiveTasks[arr[i][1]].Task.Priority = prior;
     82                        }
     83                        else if (current.ItemTask.Item is Experiment)
     84                        {
     85                            current.ChildHiveTasks[arr[i][0]].Task.Priority = prior;
     86                        }
     87
     88                    }
     89                    else {
     90                        if (current.ItemTask.Item is BatchRun)
     91                            current = current.ChildHiveTasks[arr[i][1]]; // select right batch
     92                        else if (current.ItemTask.Item is Experiment)
     93                            current = current.ChildHiveTasks[arr[i][0]]; // select right sub task from experiment
     94                    }
     95                }
    4296            }
    4397        }
  • branches/WebJobManager/HeuristicLab.Clients.Hive.WebJobManager/Services/HiveClientWeb.cs

    r13689 r13712  
    3636using HeuristicLab.Clients.Common.Properties;
    3737using Microsoft.AspNet.Hosting;
     38using HeuristicLab.Clients.Hive.WebJobManager.Services.Imports;
    3839
    3940namespace HeuristicLab.Clients.Hive.WebJobManager
     
    320321                }
    321322
    322 
     323                foreach (OptimizerHiveTask hiveJob in refreshableJob.HiveTasks.OfType<OptimizerHiveTask>())
     324                {
     325                    hiveJob.SetIndexInParentOptimizerList(null);
     326                }
    323327
    324328                // upload Job
     
    486490            var hiveExperiment = refreshableJob.Job;
    487491            refreshableJob.IsProgressing = true;
    488             TaskDownloader downloader = null;
     492            TaskDownloaderWeb downloader = null;
    489493
    490494            try
     
    499503
    500504                refreshableJob.Progress.Status = "Downloading tasks...";
    501                 downloader = new TaskDownloader(allTasks.Select(x => x.Id));
     505                downloader = new TaskDownloaderWeb(allTasks.Select(x => x.Id));
    502506                downloader.StartAsync();
    503507
  • branches/WebJobManager/HeuristicLab.Clients.Hive.WebJobManager/Services/HiveServiceLocatorWebManagerService.cs

    r13656 r13712  
    149149            binding.AllowCookies = false;
    150150
     151            binding.ReaderQuotas.MaxDepth = 32;
     152            binding.ReaderQuotas.MaxStringContentLength = 200000000;
     153            binding.ReaderQuotas.MaxArrayLength = 200000000;
     154            binding.ReaderQuotas.MaxBytesPerRead = 4096;
     155            binding.ReaderQuotas.MaxNameTableCharCount = 16384;
     156
     157            binding.ReliableSession.Ordered = true;
     158            binding.ReliableSession.InactivityTimeout = TimeSpan.Parse("00:10:00");
     159            binding.ReliableSession.Enabled = false;
     160
     161
    151162            binding.Security.Mode = SecurityMode.Message;
    152163            binding.Security.Message.ClientCredentialType = MessageCredentialType.UserName;
  • branches/WebJobManager/HeuristicLab.Clients.Hive.WebJobManager/ViewModels/JobViewModel.cs

    r13689 r13712  
    88    public class JobViewModel
    99    {
    10         public List<Job> userJobs { get; set; }
     10        public List<RefreshableJob> userJobs { get; set; }
    1111
    12         public List<LightweightTask> lightJobTasks { get; set; }
    13         public List<Task> filledJobTasks { get; set; }
    14         public Job selectedJob { get; set; }
     12        public RefreshableJob selectedJob { get; set; }
     13
     14        public List<HiveTask> selectedHiveTasks { get; set; }
    1515        public string message { get; set; }
    1616        public JobViewModel()
     
    1818            userJobs = null;
    1919            selectedJob = null;
    20             filledJobTasks = new List<Task>();
     20            selectedHiveTasks = new List<HiveTask>();
    2121            message = "";
    2222        }
  • branches/WebJobManager/HeuristicLab.Clients.Hive.WebJobManager/Views/Job/Index.cshtml

    r13689 r13712  
    1818        </a>
    1919    </div>
    20     <div class="row" style="padding:10px">
     20    <div class="row" style="padding:10px; margin-right:0px!important">
    2121        @if (Model.userJobs.Count == 0)
    2222        {
     
    3434                           asp-controller="Job"
    3535                           asp-action="Selected"
    36                            asp-route-id="@job.Id">
    37                             @job.Name - @job.DateCreated
    38                             <span class="badge">@job.JobCount</span>
     36                           asp-route-id="@job.Id"
     37                           onclick="showLoader()">
     38                            @job.Job.Name - @job.Job.DateCreated
     39                            <span class="badge">@job.Job.JobCount</span>
    3940                        </a>
    4041                    }
     
    4243                </div>
    4344            </div>
     45            <p style="display:none" id="loader" class="text-center">
     46                <br /><br /><br /><br /><br /><br /><br />
     47                <i class="fa fa-cog fa-spin fa-5x" id="spinner">
     48                </i>
     49            </p>
    4450            @if (Model.selectedJob != null)
    4551            {
    46                 <div class="col-sm-8" style="padding:5px; padding-left:10px;">
     52                <div class="col-sm-8" id="content" style="padding:5px; padding-left:10px;">
    4753                    <div class="row">
    4854                        <h2 style="padding-left:20px">
    49                             @Model.selectedJob.Name
     55                            @Model.selectedJob.Job.Name
    5056                            <a onclick="popUpDelete()"
    51                                style="margin-bottom:10px;"
    52                                
     57                               style="margin-bottom:10px;"
    5358                               class='btn btn-danger'>
    5459                                <span class="glyphicon glyphicon-trash" aria-hidden="true"></span>
    5560                            </a>
    56                             <a style="display:none"
    57                                asp-action="Delete"
    58                                asp-route-id="@Model.selectedJob.Id"
    59                                asp-controller="Job" id="del"  ></a>
     61                            <a style="display:none"
     62                               asp-action="Delete"
     63                               asp-route-id="@Model.selectedJob.Id"
     64                               asp-controller="Job" id="del"
     65                               onclick="showDeleter()"></a>
    6066
    6167                            <script type="text/javascript">
     
    6773                                }
    6874                            </script>
    69            
     75
    7076                        </h2>
    7177                        <div class="col-sm-6" style="padding-left:30px">
    72                             <p>Description: @Model.selectedJob.Description</p>
    73                             <p>Resources: @Model.selectedJob.ResourceNames</p>
    74                             <p>Created: @Model.selectedJob.DateCreated</p>
    75                             <p>Owned by: @Model.selectedJob.OwnerUsername</p>
     78                            <p>Description: @Model.selectedJob.Job.Description</p>
     79                            <p>Resources: @Model.selectedJob.Job.ResourceNames</p>
     80                            <p>Created: @Model.selectedJob.Job.DateCreated</p>
     81                            <p>Owned by: @Model.selectedJob.Job.OwnerUsername</p>
    7682
    7783                        </div>
    7884                        <div class="col-sm-6" style="padding-left:30px">
    79                             <p>Calculating: @Model.selectedJob.CalculatingCount</p>
    80                             <p>Finished: @Model.selectedJob.FinishedCount</p>
     85                            <p>Calculating: @Model.selectedJob.Job.CalculatingCount</p>
     86                            <p>Finished: @Model.selectedJob.Job.FinishedCount</p>
    8187                        </div>
    8288
    8389                    </div>
    8490                    <div class="row">
    85                         <h3 style="padding-left:20px">@Model.lightJobTasks.Count Task@(Model.lightJobTasks != null && Model.lightJobTasks.Count != 1 ? "s" : "" )</h3>
    86                         @foreach (var task in Model.lightJobTasks)
     91                        <h3 style="padding-left:20px">Tasks</h3>
     92                        <script type="text/javascript">
     93                            //TODO Globale variabele waar data per categorie in gestoken kan worden
     94                        </script>
     95                        @foreach (var task in Model.selectedJob.HiveTasks)
    8796                        {
    88                             <table class="table "
    89                                    style="margin-left:20px;">
    90                                 <thead>
    91                                     <tr>
    92                                         <th>@task</th>
    93                                     </tr>
    94                                 </thead>
    95                                 <tbody>
    96                                     <tr>
    97                                         <td>Last update @task.LastTaskDataUpdate</td>
    98                                         <td>State: @task.State</td>
    99                                        
    100                                     </tr>
    101                                     <tr>
    102                                         <td>@task.ExecutionTime executed</td>
    103                                         <td>Created: @task.DateCreated</td>
    104                                     </tr>
    105                                 </tbody>
    106                             </table>
     97                            @Html.Partial("SelectedJobPartials/_TaskPartial",
     98                           new HeuristicLab.Clients.Hive.WebJobManager.Models.HiveTaskContainer(task))
    10799
    108100                        }
     
    111103            }
    112104        }
     105        <script type="text/javascript">
     106            function showLoader() {
     107                document.getElementById("loader").style.display = "";
     108                document.getElementById("content").style.display = "none";
     109            }
     110            function showDeleter() {
     111                document.getElementById("loader").style.display = "";
     112                document.getElementById("content").style.display = "none";
     113                document.getElementById("spinner").className = "fa fa-trash-o fa-spin fa-5x";
     114            }
     115        </script>
    113116    </div>
    114117</div>
  • branches/WebJobManager/HeuristicLab.Clients.Hive.WebJobManager/Views/Job/OpenFilePartials/_Algorithm.cshtml

    r13689 r13712  
    11@model HeuristicLab.Clients.Hive.WebJobManager.ViewModels.FileOpeningViewModel
    2 
     2@{System.Random randomizer = new Random();
     3    int randy = randomizer.Next(5000); }
    34
    45
     
    89    </div>
    910    <div class="row" style="text-align:left">
    10         <h1 data-toggle="tooltip" title=" @Model.SelectedTask.ItemTask.ItemName
    11             @Model.SelectedTask.ItemTask.Description ">
     11        <h1 data-toggle="tooltip" title="@Model.SelectedTask.ItemTask.ItemName
     12            @Model.SelectedTask.ItemTask.Description">
    1213            <span class="label label-primary">Algorithm: @Model.SelectedTask.ItemTask.Name</span>
    1314        </h1>
    1415        <a class="btn btn-success" id="fakehiveadd" onclick="addtoHive()">Add to Hive</a>
     16
     17        <div class="btn-group">
     18            <button
     19                    type="button"
     20                    id="prior@(randy)"
     21                    class="btn btn-info dropdown-toggle"
     22                    data-toggle="dropdown"
     23                    aria-haspopup="true" aria-expanded="false">
     24                Normal <span class="caret"></span>
     25            </button>
     26            <ul class="dropdown-menu">
     27                <li><a onclick="changePriority([],0,@randy)">Low</a></li>
     28                <li><a onclick="changePriority([],1,@randy)">Normal</a></li>
     29                <li><a onclick="changePriority([],2,@randy)">Urgent</a></li>
     30                <li><a onclick="changePriority([],3,@randy)">Critical</a></li>
     31            </ul>
     32        </div>
     33
     34
    1535        <a class="btn btn-success" id="realhiveadd" asp-controller="Job" asp-action="AddToHive" style="display:none"></a>
    1636        <h4 id="result" style="display:none">Start uploading algorithm...</h4>
     
    2444        </div>
    2545    </div>
     46
    2647    <div class="row">
    2748        <div class="btn-group-justified">
  • branches/WebJobManager/HeuristicLab.Clients.Hive.WebJobManager/Views/Job/OpenFilePartials/_AlgorithmSmall.cshtml

    r13696 r13712  
    11@model HeuristicLab.Clients.Hive.WebJobManager.Models.AlgorithmContainer
    2 @{int randomal = Model.randy.Next(2000); }
     2@{int randomal = Model.randy.Next(5000);
     3    var builder = "[";
     4    foreach (var arr in Model.depth)
     5    {
     6        builder += "[" + String.Join(",", arr) + "],";
     7    }
     8    builder += "]";
     9}
    310<p class="text-center">
    4     <a class="btn btn-primary" 
    5        data-toggle="collapse" 
    6        href="#collapseExample@(randomal)" 
    7        aria-expanded="false" 
     11    <a class="btn btn-primary"
     12       data-toggle="collapse"
     13       href="#collapseExample@(randomal)"
     14       aria-expanded="false"
    815       aria-controls="collapseExample@(randomal)">
    916        @Model.algo.Name
    1017    </a>
     18   
     19</p>
     20<div class="collapse" id="collapseExample@(randomal)" style="margin-left:10px;margin-right:10px;margin-top:-10px">
     21    <img src="~/img/accoladealg.png" style="width:100%;" />
     22    <div class="panel panel-primary" style="border-width:2px!important">
     23        <div class="panel-heading panel-primary text-center">
     24            <p>@Model.algo.Description</p>
    1125
    12 </p>
    13 <div class="collapse" id="collapseExample@(randomal)" style="margin-left:10px;margin-right:10px">
    14     <div class="panel panel-primary">
    15         <div class="panel-heading panel-primary text-center" >
    16             <p>@Model.algo.Description</p>
     26            <div class="btn-group">
     27                <button type="button"
     28                        id="prior@(randomal)"
     29                        class="btn btn-info dropdown-toggle"
     30                        data-toggle="dropdown"
     31                        aria-haspopup="true" aria-expanded="false">
     32                    Normal <span class="caret"></span>
     33                </button>
     34                <ul class="dropdown-menu">
     35                    <li><a onclick="changePriority(@builder,0,@randomal)">Low</a></li>
     36                    <li><a onclick="changePriority(@builder,1,@randomal)">Normal</a></li>
     37                    <li><a onclick="changePriority(@builder,2,@randomal)">Urgent</a></li>
     38                    <li><a onclick="changePriority(@builder,3,@randomal)">Critical</a></li>
     39                </ul>
     40            </div>
    1741        </div>
    1842        <table class="table table-responsive card-block" style="table-layout:fixed;overflow-wrap:break-word">
     
    2751                {
    2852                    <tr>
    29                         <td >@prob.Name</td>
     53                        <td>@prob.Name</td>
    3054
    31                         <td >@prob.ActualValue</td>
     55                        <td>@prob.ActualValue</td>
    3256                    </tr>
    3357
  • branches/WebJobManager/HeuristicLab.Clients.Hive.WebJobManager/Views/Job/OpenFilePartials/_BatchRun.cshtml

    r13696 r13712  
    11@model HeuristicLab.Clients.Hive.WebJobManager.ViewModels.FileOpeningViewModel
    22@{System.Random randomizer = new Random();
    3     int randy = randomizer.Next(2000); }
     3    int randy = randomizer.Next(5000); }
    44<div style="margin-left:20px;margin-right:20px">
    55    <div class="row" style="text-align:center">
     
    1212        </h1>
    1313        <a class="btn btn-success" id="fakehiveadd" onclick="addtoHive()">Add to Hive</a>
     14
     15        <div class="btn-group">
     16            <button type="button"
     17                    id="prior@(randy)"
     18                    class="btn btn-info dropdown-toggle"
     19                    data-toggle="dropdown"
     20                    aria-haspopup="true" aria-expanded="false">
     21                Normal <span class="caret"></span>
     22            </button>
     23            <ul class="dropdown-menu">
     24                <li><a onclick="changePriority([],0,@randy)">Low</a></li>
     25                <li><a onclick="changePriority([],1,@randy)">Normal</a></li>
     26                <li><a onclick="changePriority([],2,@randy)">Urgent</a></li>
     27                <li><a onclick="changePriority([],3,@randy)">Critical</a></li>
     28            </ul>
     29        </div>
     30
    1431        <a class="btn btn-success" id="realhiveadd" asp-controller="Job" asp-action="AddToHive" style="display:none"></a>
    1532        <h4 id="result" style="display:none">Start uploading batch run...</h4>
     
    2542    <h4>
    2643        Repeats: @Model.SelectedBatchRun.Repetitions x
    27         <label>
    28             <input type="checkbox" checked data-toggle="toggle" data-onstyle="warning"
    29                    onchange="toggleChild([], @randy)" />
    30             Distribute child tasks
    31         </label>
     44
    3245    </h4>
     46    <p class="text-center">
     47        <input type="checkbox" checked data-toggle="toggle" data-onstyle="warning"
     48               onchange="toggleChild([], @randy)" />
     49        Distribute child tasks
     50    </p>
    3351    <div id="childs@(randy)">
    3452        @for (var k = 0; k < Model.SelectedBatchRun.Repetitions; k++)
     
    3957                new HeuristicLab.Clients.Hive.WebJobManager.Models.AlgorithmContainer(
    4058                    ((HeuristicLab.Optimization.IAlgorithm)Model.SelectedBatchRun.Optimizer),
     59                    new List<int[]>(),
     60                    new int[] { 0, k },
    4161                    randomizer));
    4262
  • branches/WebJobManager/HeuristicLab.Clients.Hive.WebJobManager/Views/Job/OpenFilePartials/_BatchRunSmall.cshtml

    r13696 r13712  
    11@model HeuristicLab.Clients.Hive.WebJobManager.Models.BatchRunContainer
    22@{
    3     int randombr = Model.randy.Next(2000); }
     3    int randombr = Model.randy.Next(5000);
     4    var builder = "[";
     5    foreach (var arr in Model.depth)
     6    {
     7        builder += "[" + String.Join(",", arr) + "],";
     8    }
     9    builder += "]";
     10}
     11
     12
    413<p class="text-center">
    514    <a class="btn btn-warning"
     
    1221
    1322</p>
    14 <div class="collapse" id="collapseExample@(randombr)" style="margin-left:10px;margin-right:10px">
    15     <div class="panel panel-warning">
    16         <div class="panel-heading panel-warning text-center">
    17             <p>
     23<div class="collapse"
     24     id="collapseExample@(randombr)" style="margin-left:10px;margin-right:10px;margin-top:-10px ">
     25    <img src="~/img/accoladebatch.png" style="width:100%" />
     26    <div class="panel panel-warning" style="border-color:#f6cd94!important; border-width:2px!important">
     27        <div class="panel-heading  text-center">
     28            <p class="panel-title">
    1829                Repeats @Model.batch.Repetitions X
    1930            </p>
    2031            <p>
    21                 <label>
    22                     @{ var builder = "[";
    23                         foreach (var arr in Model.depth)
    24                         {
    25                             builder += "[" + String.Join(",", arr) + "],";
    26                         }
    27                         builder += "]";
    28                     }
    29                     <input type="checkbox" checked data-toggle="toggle" data-onstyle="warning"
    30                            onchange="toggleChild(@builder, @randombr)" />
    31                     Distribute child tasks
    32                 </label>
     32
     33
     34                <input type="checkbox" checked data-toggle="toggle" data-onstyle="warning"
     35                       onchange="toggleChild(@builder, @randombr)" />
     36                Distribute child tasks
     37
    3338            </p>
     39            <div class="btn-group">
     40                <button type="button"
     41                        id="prior@(randombr)"
     42                        class="btn btn-info dropdown-toggle"
     43                        data-toggle="dropdown"
     44                        aria-haspopup="true" aria-expanded="false">
     45                    Normal <span class="caret"></span>
     46                </button>
     47                <ul class="dropdown-menu">
     48                    <li><a onclick="changePriority(@builder,0,@randombr)">Low</a></li>
     49                    <li><a onclick="changePriority(@builder,1,@randombr)">Normal</a></li>
     50                    <li><a onclick="changePriority(@builder,2,@randombr)">Urgent</a></li>
     51                    <li><a onclick="changePriority(@builder,3,@randombr)">Critical</a></li>
     52                </ul>
     53            </div>
    3454        </div>
    3555        <div id="childs@(randombr)">
     
    4161                    new HeuristicLab.Clients.Hive.WebJobManager.Models.AlgorithmContainer(
    4262                        ((HeuristicLab.Optimization.IAlgorithm)Model.batch.Optimizer),
     63                        Model.depth.ToList(),
     64                        new int[] { 0, k },
    4365                        Model.randy))
    4466
  • branches/WebJobManager/HeuristicLab.Clients.Hive.WebJobManager/Views/Job/OpenFilePartials/_Experiment.cshtml

    r13696 r13712  
    11@model HeuristicLab.Clients.Hive.WebJobManager.ViewModels.FileOpeningViewModel
    2 @{System.Random randomizer = new Random(); }
     2@{System.Random randomizer = new Random();
     3    int randy = randomizer.Next(5000); }
    34<div style="margin-left:20px;margin-right:20px">
    45    <div class="row" style="text-align:center">
     
    1112        </h1>
    1213        <a class="btn btn-success" id="fakehiveadd" onclick="addtoHive()">Add to Hive</a>
     14
     15
     16        <div class="btn-group">
     17            <button type="button"
     18                    id="prior@(randy)"
     19                    class="btn btn-info dropdown-toggle"
     20                    data-toggle="dropdown"
     21                    aria-haspopup="true" aria-expanded="false">
     22                Normal <span class="caret"></span>
     23            </button>
     24            <ul class="dropdown-menu">
     25                <li><a onclick="changePriority([],0,@randy)">Low</a></li>
     26                <li><a onclick="changePriority([],1,@randy)">Normal</a></li>
     27                <li><a onclick="changePriority([],2,@randy)">Urgent</a></li>
     28                <li><a onclick="changePriority([],3,@randy)">Critical</a></li>
     29            </ul>
     30        </div>
    1331        <a class="btn btn-success" id="realhiveadd" asp-controller="Job" asp-action="AddToHive" style="display:none"></a>
    1432        <h4 id="result" style="display:none">Start uploading experiment...</h4>
     
    2543        Children: @Model.SelectedExperiment.Optimizers.Count
    2644    </h4>
    27     @for (var i = 0; i < Model.SelectedExperiment.Optimizers.Count; i++)
    28     {
    29         @if (Model.SelectedExperiment.Optimizers[i] is HeuristicLab.Optimization.IAlgorithm)
     45    <p class="text-center">
     46        <input type="checkbox" checked data-toggle="toggle" data-onstyle="danger"
     47               onchange="toggleChild([], @randy)" />
     48        Distribute child tasks
     49    </p>
     50    <div id="childs@(randy)">
     51        @for (var i = 0; i < Model.SelectedExperiment.Optimizers.Count; i++)
    3052        {
    31             @Html.Partial("OpenFilePartials/_AlgorithmSmall",
    32 new HeuristicLab.Clients.Hive.WebJobManager.Models.AlgorithmContainer(
    33  ((HeuristicLab.Optimization.IAlgorithm)Model.SelectedExperiment.Optimizers[i]),
    34  randomizer));
     53            @if (Model.SelectedExperiment.Optimizers[i] is HeuristicLab.Optimization.IAlgorithm)
     54            {
     55                @Html.Partial("OpenFilePartials/_AlgorithmSmall",
     56                    new HeuristicLab.Clients.Hive.WebJobManager.Models.AlgorithmContainer(
     57                    ((HeuristicLab.Optimization.IAlgorithm)Model.SelectedExperiment.Optimizers[i]),
     58                    new List<int[]>(),
     59                    new int[] { i, 0 },
     60                    randomizer));
     61
     62            }
     63            else if (Model.SelectedExperiment.Optimizers[i] is HeuristicLab.Optimization.BatchRun)
     64            {
     65                @Html.Partial("OpenFilePartials/_BatchRunSmall",
     66                    new HeuristicLab.Clients.Hive.WebJobManager.Models.BatchRunContainer(
     67                    ((HeuristicLab.Optimization.BatchRun)Model.SelectedExperiment.Optimizers[i]),
     68                    new List<int[]>(),
     69                    new int[] { i, 0 },
     70                    randomizer)) ;
     71
     72            }
     73            else if (Model.SelectedExperiment.Optimizers[i] is HeuristicLab.Optimization.Experiment)
     74            {
     75                @Html.Partial("OpenFilePartials/_ExperimentSmall",
     76                    new HeuristicLab.Clients.Hive.WebJobManager.Models.ExperimentContainer(
     77                    ((HeuristicLab.Optimization.Experiment)Model.SelectedExperiment.Optimizers[i]),
     78                    new List<int[]>(),
     79                    new int[] { i, 0 },
     80                    randomizer)) ;
     81
     82            }
    3583
    3684        }
    37         else if (Model.SelectedExperiment.Optimizers[i] is HeuristicLab.Optimization.BatchRun)
    38         {
    39             @Html.Partial("OpenFilePartials/_BatchRunSmall",
    40 new HeuristicLab.Clients.Hive.WebJobManager.Models.BatchRunContainer(
    41     ((HeuristicLab.Optimization.BatchRun)Model.SelectedExperiment.Optimizers[i]),
    42     new List<int[]>(),
    43     new int[] { i, 0 },
    44     randomizer)) ;
    45 
    46         }
    47         else if (Model.SelectedExperiment.Optimizers[i] is HeuristicLab.Optimization.Experiment)
    48         {
    49             @Html.Partial("OpenFilePartials/_ExperimentSmall",
    50 new HeuristicLab.Clients.Hive.WebJobManager.Models.ExperimentContainer(
    51     ((HeuristicLab.Optimization.Experiment)Model.SelectedExperiment.Optimizers[i]),
    52     new List<int[]>(),
    53     new int[] { i, 0 },
    54            randomizer)) ;
    55 
    56         }
    57 
    58     }
    59 
     85    </div>
    6086    <script type="text/javascript">
    6187
  • branches/WebJobManager/HeuristicLab.Clients.Hive.WebJobManager/Views/Job/OpenFilePartials/_ExperimentSmall.cshtml

    r13696 r13712  
    11@model HeuristicLab.Clients.Hive.WebJobManager.Models.ExperimentContainer
    2 @{int randombr = Model.randy.Next(2000); }
     2@{int randomex = Model.randy.Next(5000);
     3    var builder = "[";
     4    foreach (var arr in Model.depth)
     5    {
     6        builder += "[" + String.Join(",", arr) + "],";
     7    }
     8    builder += "]";
     9}
    310<p class="text-center">
    411    <a class="btn btn-danger"
    512       data-toggle="collapse"
    6        href="#collapseExample@(randombr)"
     13       href="#collapseExample@(randomex)"
    714       aria-expanded="false"
    8        aria-controls="collapseExample@(randombr)">
     15       aria-controls="collapseExample@(randomex)">
    916        @Model.exp.Name
    1017    </a>
    1118
    1219</p>
    13 <div class="collapse" id="collapseExample@(randombr)" style="margin-left:10px;margin-right:10px">
    14     <div class="panel panel-danger">
     20<div class="collapse" id="collapseExample@(randomex)" style="margin-left:10px;margin-right:10px;margin-top:-10px">
     21    <img src="~/img/accoladeexp.png" style="width:100%" />
     22    <div class="panel panel-danger" style="border-color:#c12e2a!important; border-width:2px!important">
    1523        <div class="panel-heading panel-danger text-center">
    16             <p>Children: @Model.exp.Optimizers.Count</p>
     24            <p class="panel-title">Children: @Model.exp.Optimizers.Count</p>
     25            <p>
     26                <label>
     27
     28                    <input type="checkbox" checked data-toggle="toggle" data-onstyle="danger"
     29                           onchange="toggleChild(@builder, @randomex)" />
     30                    Distribute child tasks
     31                </label>
     32            </p>
     33            <div class="btn-group">
     34                <button type="button"
     35                        id="prior@(randomex)"
     36                        class="btn btn-info dropdown-toggle"
     37                        data-toggle="dropdown"
     38                        aria-haspopup="true" aria-expanded="false">
     39                    Normal <span class="caret"></span>
     40                </button>
     41                <ul class="dropdown-menu">
     42                    <li><a onclick="changePriority(@builder,0,@randomex)">Low</a></li>
     43                    <li><a onclick="changePriority(@builder,1,@randomex)">Normal</a></li>
     44                    <li><a onclick="changePriority(@builder,2,@randomex)">Urgent</a></li>
     45                    <li><a onclick="changePriority(@builder,3,@randomex)">Critical</a></li>
     46                </ul>
     47            </div>
    1748        </div>
    18         @for (var j = 0; j < Model.exp.Optimizers.Count; j++)
    19         {
    20             @if (Model.exp.Optimizers[j] is HeuristicLab.Optimization.IAlgorithm)
     49        <div id="childs@(randomex)">
     50            @for (var j = 0; j < Model.exp.Optimizers.Count; j++)
    2151            {
    22                 @Html.Partial("OpenFilePartials/_AlgorithmSmall",
     52                @if (Model.exp.Optimizers[j] is HeuristicLab.Optimization.IAlgorithm)
     53                {
     54                    @Html.Partial("OpenFilePartials/_AlgorithmSmall",
    2355                    new HeuristicLab.Clients.Hive.WebJobManager.Models.AlgorithmContainer(
    24                  ((HeuristicLab.Optimization.IAlgorithm)Model.exp.Optimizers[j]),
    25                  Model.randy))
     56                        ((HeuristicLab.Optimization.IAlgorithm)Model.exp.Optimizers[j]),
     57                         Model.depth.ToList(),
     58                        new int[] { j, 0 },
     59                        Model.randy))
    2660
    27             }
    28             else if (Model.exp.Optimizers[j] is HeuristicLab.Optimization.BatchRun)
    29             {
    30                 @Html.Partial("OpenFilePartials/_BatchRunSmall",
     61                }
     62                else if (Model.exp.Optimizers[j] is HeuristicLab.Optimization.BatchRun)
     63                {
     64                    @Html.Partial("OpenFilePartials/_BatchRunSmall",
    3165                new HeuristicLab.Clients.Hive.WebJobManager.Models.BatchRunContainer(
    3266                    ((HeuristicLab.Optimization.BatchRun)Model.exp.Optimizers[j]),
     
    3569                    Model.randy)) ;
    3670
    37             }
    38             else if (Model.exp.Optimizers[j] is HeuristicLab.Optimization.Experiment)
    39             {
    40                 @Html.Partial("OpenFilePartials/_ExperimentSmall",
     71                }
     72                else if (Model.exp.Optimizers[j] is HeuristicLab.Optimization.Experiment)
     73                {
     74                    @Html.Partial("OpenFilePartials/_ExperimentSmall",
    4175                new HeuristicLab.Clients.Hive.WebJobManager.Models.ExperimentContainer(
    4276                    ((HeuristicLab.Optimization.Experiment)Model.exp.Optimizers[j]),
     
    4579                    Model.randy)) ;
    4680
     81                }
    4782            }
    48         }
     83        </div>
    4984    </div>
    5085</div>
  • branches/WebJobManager/HeuristicLab.Clients.Hive.WebJobManager/Views/Shared/_Layout.cshtml

    r13696 r13712  
    3131        <script src="~/js/npm.js"></script>
    3232        <script src="~/js/raphael.js"></script>
     33        <script src="~/js/plotly.js"></script>
    3334        @RenderBody()
    3435    </div>
  • branches/WebJobManager/HeuristicLab.Clients.Hive.WebJobManager/wwwroot/css/StyleSheet.css

    r13656 r13712  
    3838    text-align: center;
    3939}
     40.panel-warning > .panel-heading{
     41    background-image: linear-gradient(to bottom,#eb9114 0,#f1b25b 100%)!important;
     42    color:white!important;
     43}
     44.panel-danger > .panel-heading{
     45    background-image: linear-gradient(to bottom,#c12e2a 0,#d9534f 100%)!important;
     46    color:white!important;
     47}
  • branches/WebJobManager/HeuristicLab.Clients.Hive.WebJobManager/wwwroot/js/Scripts/hubber.js

    r13696 r13712  
    3131
    3232    var jobname = prompt("Please enter a job name", "Job");
    33     if (jobname != "") {
     33    if (jobname && jobname != "" && jobname != null) {
    3434        hubber.server.changeName(jobname);
    3535        document.getElementById("fakehiveadd").style.display = "none";
     
    4040}
    4141function toggleChild(arr, idchilds) {
    42     console.log(arr);
     42    console.log(arr + " toggled");
    4343    hubber.server.toggleChild(arr);
    4444    if ($("#childs" + idchilds).css("display") == "none")
     
    4747        $("#childs" + idchilds).css("display", "none");
    4848}
     49function changePriority(arr, prior, idprior) {
     50    console.log(arr + " to priority " + prior);
     51    hubber.server.changePriority(arr, prior);
     52    resetPrior(idprior);
     53    switch (prior) {
     54        case 0:
     55            document.getElementById("prior" + idprior).className += "btn-default";
     56            document.getElementById("prior" + idprior).innerHTML = "Low"
     57            break;
     58        case 1:
     59            document.getElementById("prior" + idprior).className += "btn-info";
     60            document.getElementById("prior" + idprior).innerHTML = "Normal"
     61            break;
     62        case 2:
     63            document.getElementById("prior" + idprior).className += "btn-warning";
     64            document.getElementById("prior" + idprior).innerHTML = "Urgent"
     65            break;
     66        case 3:
     67            document.getElementById("prior" + idprior).className += "btn-danger";
     68            document.getElementById("prior" + idprior).innerHTML = "Critical";
     69            break;
     70    }
     71    document.getElementById("prior" + idprior).innerHTML += "<span class='caret'></span>";
     72}
     73function resetPrior(id) {
     74    document.getElementById("prior" + id).className = "btn dropdown-toggle ";
     75}
  • branches/WebJobManager/HeuristicLab.Clients.Hive/3.3/HiveTasks/OptimizerHiveTask.cs

    r12621 r13712  
    295295    /// Recursively updates all the child-jobs as well
    296296    /// </summary>
    297     internal void SetIndexInParentOptimizerList(OptimizerHiveTask parentHiveTask) {
     297    public void SetIndexInParentOptimizerList(OptimizerHiveTask parentHiveTask) {
    298298      if (parentHiveTask != null) {
    299299        if (parentHiveTask.ItemTask.Item is Optimization.Experiment) {
Note: See TracChangeset for help on using the changeset viewer.