Changeset 1869


Ignore:
Timestamp:
Jun 8, 2016, 12:53:20 PM (3 years ago)
Author:
joamuran
Message:

Fixed release 0.5

Location:
admin-center/trunk/fuentes
Files:
6 added
3 edited

Legend:

Unmodified
Added
Removed
  • admin-center/trunk/fuentes/admin-center.install/usr/share/admin-center/css/main.css

    r1512 r1869  
    177177.divider-color         { border-color: #B6B6B6  !important; }
    178178
    179 
     179.modal-body{
     180    max-height: calc(100vh - 341px) !important;
     181    min-width: 610px;
     182    overflow-y: auto !important;
     183}
    180184
    181185
  • admin-center/trunk/fuentes/admin-center.install/usr/share/admin-center/lib/utils.js

    r1609 r1869  
    88        // Utilities collection
    99        this.activeWebSockets=[];
     10        this.logfilesadded=0;
     11        this.maxlogfilesadded=50;
    1012}
    1113
    1214UtilsClass.prototype._=function _(text){
    1315  return ( i18n.gettext("main", text));
    14 }
     16};
    1517
    1618UtilsClass.prototype.msg=function msg(message, type){
     
    3335                }
    3436
    35                 var msg="<div class='snackContainer'>"+
     37                var snackbarmsg="<div class='snackContainer'>"+
    3638                "<div class='snackicon' style='background-image:url(icons/"+
    3739                                                icon+")'></div><div class='snack_msg'>"+message+"</div></div>";
    3840                //console.log(msg);
    3941
    40                 $("#snack").attr("data-content", msg);
     42                $("#snack").attr("data-content", snackbarmsg);
    4143                $("#snack").snackbar("show").css("background",bg);
    4244
     
    6971};
    7072
    71 UtilsClass.prototype.showWSListener=function showWSListener(port, sport, srv_job_id=-1){
     73/*
     74UtilsClass.prototype.showWSListener=function showWSListener(port, sport, srv_job_id=-1, target_id=null){
    7275        var self=this;
    7376        // 1st Preparing log window
     
    8992       
    9093        var modalfooter=$(document.createElement("div")).addClass("modal-footer");
    91         var bt1=$(document.createElement("button")).addClass("btn btn-primary").attr("id", "logviewer_bt1").attr("targetjob", logJobId).html(("Close log"))     
     94        var bt1=$(document.createElement("button")).addClass("btn btn-primary").attr("id", "logviewer_bt1").attr("targetjob", logJobId).html(("Close log"));
    9295        var bt2=$(document.createElement("button")).addClass("btn btn-primary").attr("id", "logviewer_bt2");
    9396        $(bt2).attr("targetjob", logJobId).attr("srv_job_id", srv_job_id).html(("Cancel task"));
    94        
     97        $(bt2).attr("target_id", logJobId).attr("target_id",target_id);
     98
    9599        $(modalfooter).append(bt1).append(bt2);
    96        
    97100       
    98101        $(modalcnt).append(modalheader);
     
    102105        $(modaldlg).append(modalcnt);
    103106        $(modaldiv).append(modaldlg);
    104        
    105107       
    106108        $("body").prepend(modaldiv);
     
    125127                                                         "closeConnection",
    126128                                                         [port_to_close],
     129                                                         //null
    127130                                                         function finish_close_socket(){
    128                                                                 self.activeWebSockets[i].ws.close();
    129                                                                 self.activeWebSockets.splice(i,1);                                             
     131                                                                //self.activeWebSockets[i].ws.close();
     132                                                                //self.activeWebSockets.splice(i,1);                                           
    130133                                                                });
    131134                                       
     
    135138                }
    136139            }
    137                 })
     140                });
    138141       
    139142        $(bt2).on("click", function(event){
     
    141144                        var text=self._("main_confirm_cancel_task");
    142145                        var srv_job_id=$(event.target).attr("srv_job_id");
    143                         alert("cancel "+srv_job_id);
     146                        var targetid=$(event.target).attr("target_id");
     147                        alert("cancel "+srv_job_id+ "target: "+targetid);
    144148                       
    145149                        bootbox.confirm(text, function(res){
     
    158162                                        Utils.n4d(credentials, n4dclass, n4dmethod, arglist, function(response){
    159163                                                self.msg(self._("main_task_cancelled"), MSG_SUCCESS);
     164                                                console.log(targetid);
     165                                                var div_to_remove=$("#llx-ltsp-imagelist").find("[target_id='"+targetid+"']");
     166                                                console.log(div_to_remove);
     167                                                $(div_to_remove).remove();
     168                                                console.log(response);
    160169                                                });
    161170                                }catch(error){
    162171                                        self.msg("Error: "+error, MSG_ERROR);
    163                                 };
     172                                }
    164173                               
    165174                                $("#logviewer_bt1").trigger("click");
     
    171180         var wsUri = "ws://"+sessionStorage.server +":"+port;
    172181     websocket = new WebSocket(wsUri);       
    173      websocket.onopen = function(ev) { // connection is open
     182     websocket.onopen = function() { // connection is open
    174183        $(modallog).append("<div>"+self._("main_log_connected_message")+"</div>"); //notify user
    175      }
     184     };
    176185         
    177186          websocket.onmessage = function(ev) {
     
    211220       
    212221};
     222*/
     223
     224
     225UtilsClass.prototype.listenJob=function listenJob(jobid=0){
     226   var self=this;
     227   // 1srt... call to acquire a websocket on
     228   //console.log("***-"+jobid);
     229    self.n4d("", "TaskMan", "getWS", [], function(response){
     230                        //console.log(response);
     231                        /* getWS is the server websocket  */
     232                        if (response.status) {
     233                                var ws=response.ws; //response.ws is server websocket
     234                                self.showWSListener(ws, jobid);
     235                               
     236                        }       
     237    });
     238};
     239
     240UtilsClass.prototype.showWSListener=function showWSListener(ws, jobid=0){
     241        var self=this;
     242       
     243        // 1st Preparing log window
     244       
     245        var logJobId="logjob"+jobid;
     246               
     247        var modaldiv=$(document.createElement("div")).attr("id", logJobId).addClass("modal");
     248        var modaldlg=$(document.createElement("div")).addClass("modal-dialog");
     249        var modalcnt=$(document.createElement("div")).addClass("modal-content");
     250       
     251        var modaltitle=$(document.createElement("h4")).addClass("modal-title").html("WIP");
     252        var modalheader=$(document.createElement("div")).addClass("modal-header");
     253        $(modalheader).append(modaltitle);
     254       
     255        var modalbody=$(document.createElement("div")).addClass("modal-body");
     256        var modallog=$(document.createElement("div")).addClass("modal-content-log").attr("id", "job1").html("Server log...");
     257        $(modalbody).append(modallog);
     258       
     259        var modalfooter=$(document.createElement("div")).addClass("modal-footer");
     260        var btClose=$(document.createElement("button")).addClass("btn btn-primary").attr("id", "logviewer_btClose").attr("targetjob", logJobId).html(("Close log"));
     261        var btStop=$(document.createElement("button")).addClass("btn btn-primary").attr("id", "logviewer_btStop");
     262        // logjob id will be: "logjobXXXX"
     263        // where xXX is jobid.
     264        // and any container will have a logjob attribute tu know where tasks are cancelled...
     265        $(btStop).attr("targetjob", logJobId).html(("Cancel task"));
     266        //$(btStop).attr("target_id", logJobId).attr("target_id",target_id);
     267
     268        $(modalfooter).append(btClose).append(btStop);
     269       
     270        $(modalcnt).append(modalheader);
     271        $(modalcnt).append(modalbody);
     272        $(modalcnt).append(modalfooter);
     273       
     274        $(modaldlg).append(modalcnt);
     275        $(modaldiv).append(modaldlg);
     276       
     277        $("body").prepend(modaldiv);
     278       
     279        $(".modal").hide();
     280        $(modaldiv).show();
     281       
     282        // 1.1. Preparing buttons for cancel and close
     283       
     284        $(btClose).on("click", function(event){
     285                var jobid=$(event.target).attr("targetjob");
     286                        $("#"+jobid).fadeOut();
     287                        for (var i in self.activeWebSockets) {
     288                    if (self.activeWebSockets[i].job===jobid) {
     289                                        self.activeWebSockets[i].ws.close();
     290                                        self.activeWebSockets.splice(i,1);
     291                                        break;
     292                }
     293            }
     294                });
     295       
     296        $(btStop).on("click", function(event){
     297                       
     298                        var text=self._("main_confirm_cancel_task");
     299                        var srv_job_id=$(event.target).attr("targetjob");
     300                        //alert("cancel "+srv_job_id);
     301                       
     302                        bootbox.confirm(text, function(res){
     303            if (res) {
     304                                var jobid=srv_job_id.substring(6, srv_job_id.length);
     305                                                                               
     306                                var credentials=[sessionStorage.username , sessionStorage.password];
     307                                var n4dclass="TaskMan";
     308                                var n4dmethod="cancelTask";
     309                                var arglist=[jobid];
     310                                try {
     311                                        Utils.n4d(credentials, n4dclass, n4dmethod, arglist, function(response){
     312                                                if (response.status)
     313                                                        self.msg(self._("main_task_cancelled"), MSG_SUCCESS);
     314                                                else
     315                                                        self.msg("Error cancelling task: "+(response.msg), MSG_ERROR);
     316                                                       
     317                                                        // Faig un trigger per a que s'enteren que s'ha cancelat??
     318                                                       
     319                                               
     320                                                console.log(response);
     321                                                });
     322                                }catch(error){
     323                                        self.msg("Error: "+error, MSG_ERROR);
     324                                }
     325                               
     326                                $("#logviewer_logviewer_btClose").trigger("click");
     327               }
     328            });
     329                });
     330       
     331        // 2nd Prepare Listener through websocket
     332         //var wsUri = "ws://"+sessionStorage.server +":"+port;
     333     websocket = new WebSocket(ws+"/"+jobid);
     334         //console.log(websocket);
     335     websocket.onopen = function() { // connection is open
     336                self.logfilesadded=0;
     337        $(modallog).append("<div>"+self._("main_log_connected_message")+"</div>"); //notify user
     338     };
     339         
     340          websocket.onmessage = function(ev) {
     341                        //console.log(ev.data);
     342                        var data_string=ev.data;
     343                        var sub=data_string;
     344               var msg = JSON.parse(sub); //PHP sends Json data                         
     345                        msgtext=atob(msg.msg);
     346                       
     347                        $(modallog).append("<div>"+atob(msg.msg)+"</div>");
     348                        self.logfilesadded++;
     349                        //console.log (self.logfilesadded);
     350                        //console.log (self.maxlogfilesadded);
     351                       
     352                        // Avoid to grow log content divs more than "maxlogfilesadded"
     353                        if (self.logfilesadded>=self.maxlogfilesadded)
     354                                $(modallog).children().first().remove();
     355                               
     356                        //console.log(typeof(msg.type));
     357                        if (typeof(msg.type)!="undefined" && msg.type==="end_signal") {
     358                                console.log("CLOSING...");
     359                                websocket.close();
     360            }
     361        };
     362               
     363                // Adding job/socket to active websockets
     364                self.activeWebSockets.push({job:logJobId, ws:websocket});
     365       
     366        websocket.onerror       = function(ev){self.msg("log_connection_error", MSG_ERROR);}
     367        websocket.onclose       = function(ev){self.msg("log_connection_closed", MSG_INFO);}
     368
     369       
     370};
     371
     372
     373
    213374
    214375
     
    218379        var n4dargs=[];
    219380
    220         //console.log("Getting into n4d: ");
    221         //console.log(credentials);
    222         //console.log(n4dclass);
    223         //console.log(n4dmethod);
    224         //console.log(arglist);
    225         //console.log(callback);
    226         //console.log("**********************************");
    227381        // Building credentials
    228382        if(credentials===null)
     
    236390        // Adding argument list
    237391
    238         for (i in arglist) n4dargs.push(arglist[i]);
     392        for (var i in arglist) n4dargs.push(arglist[i]);
    239393
    240394        //console.log(n4dargs);
     
    269423        var n4dargs=[];
    270424
    271         //console.log("Getting into n4d: ");
    272         /*console.log(credentials);
    273         console.log(n4dclass);
    274         console.log(n4dmethod);
    275         console.log(arglist);
    276         console.log(callback);
    277         //console.log("**********************************");
    278         */
    279425        // Building credentials
    280426        if(credentials===null)
     
    289435        n4dargs.push(ip);
    290436        n4dargs.push(port);
    291        
    292         // Adding argument list
    293 
    294         //console.log(arglist); -> Deprecated,
    295         //alert(typeof(arglist)+ " has " +arglist.length);
    296         /*if (Object.keys(arglist).length>0) {
    297                 n4dargs.push(arglist);
    298         };*/
    299 
    300 
    301         for (i in arglist) n4dargs.push(arglist[i]);
    302 
    303         //console.log(n4dargs);
    304         // Calling method
    305         /*console.log("-----------------------------1");
    306         console.log(JSON.stringify(n4dargs));
    307         console.log("-----------------------------2");
    308         */
     437
     438
     439        for (var i in arglist) n4dargs.push(arglist[i]);
    309440       
    310441        $.ajax(
     
    322453                });
    323454       
    324 }
    325 
    326 UtilsClass.prototype.n4dWithLog=function n4dWithLog(credentials, n4dclass, n4dmethod, arglist,  srv_job_id=-1, callback=null){
     455};
     456
     457
     458UtilsClass.prototype.n4dWithLog=function n4dWithLog(credentials, n4dclass, n4dmethod, arglist, drawItemFunc){
    327459   var self=this;
    328    
    329460   // 1srt... call to acquire a websocket on
    330    //console.log("1111111111111111111");
    331                
    332     self.n4d([sessionStorage.username , sessionStorage.password], "LogManager", "prepareConnection", [], function(response){
    333                 //console.log("222222222222222222222222222222222");
    334             // response has socket port
    335             var port=response["wsport"];
    336                         var sport=response["sport"];
    337                         //console.log("Port is: "+port+" srv_port is: "+sport);
    338                         //console.log("3333333333333333333333333333333333");
    339                         self.showWSListener(port, sport, srv_job_id);
    340                         //console.log("44444444444444444444444444444444444");
    341                        
    342        
    343         Utils.n4dWithExtraParams(credentials, n4dclass, n4dmethod, "", sport, arglist, function(response){
    344                         //console.log("55555555555555555555555555555555555555");
    345             //console.log(response);
    346                         //console.log("666666666666666666666666666");
    347         });
    348                
    349                
    350                                                
    351         });
    352 
    353 };
     461                //(credentials, n4dclass, n4dmethod, arglist, callback){
     462    self.n4d("", "TaskMan", "getWS", [], function(response){
     463                        /* getWS is the server websocket  */
     464                        if (response.status) {
     465                                var ws=response.ws; //response.ws is server websocket
     466                                self.n4d([sessionStorage.username , sessionStorage.password],
     467                                        n4dclass,
     468                                        n4dmethod,
     469                                        arglist,
     470                                        function (resp){
     471                                                if (resp.status){
     472                                                        var taskid=resp.msg;
     473                                                        self.showWSListener(ws, taskid);
     474                                                } else {
     475                                                        self.msg(resp.msg, MSG_ERROR);
     476                                                        ws.close();
     477                                                }
     478                                        });
     479                        }
     480                               
     481    });
     482
     483};
     484
    354485
    355486
  • admin-center/trunk/fuentes/debian/changelog

    r1541 r1869  
     1admin-center (0.5) xenial; urgency=high
     2
     3  * Added new logging environment and Task Manager (TaskMan)
     4  * Added python libreries (wsmnager.py and actasks) to support TaskMan
     5
     6 -- joamuran <joamuran@gmail.com>  Wed, 08 Jun 2016 12:51:18 +0200
     7
    18admin-center (0.4.7) xenial; urgency=high
    29
Note: See TracChangeset for help on using the changeset viewer.