Changeset 6424


Ignore:
Timestamp:
Dec 1, 2017, 2:56:19 PM (21 months ago)
Author:
joamuran
Message:

WIp WIp

Location:
classroom-assembly/trunk/fuentes
Files:
54 added
14 edited

Legend:

Unmodified
Added
Removed
  • classroom-assembly/trunk/fuentes/classroom-assembly/src/components/classmates/classmates.js

    r6195 r6424  
    293293        $(classmatesConfig).append(fileselector);
    294294        $(fileselector).on("change", function(){
    295             console.log("111111111111111111111111111111");
     295           
    296296            try{
    297297                // Check mimetype for image
    298298                var newImage=this.value;
    299                 console.log("New Image"+newImage);
    300299                // https://www.npmjs.com/package/file-type
    301300                const readChunk = require('read-chunk');
     
    308307                if (!fs.existsSync(classmatesdir)) {
    309308                    fs.mkdirSync(classmatesdir); }
    310                 console.log("2222222222222222222");
     309   
    311310                //console.log(fileType(buffer));
    312311                   
    313312                if (fileType(buffer).mime.split("/")[0]=="image"){
    314313                    var fs=require('fs');
    315                        console.log("333333333333333333333333333333");
     314                       
    316315                    var filename=newImage.split("/").pop();
    317316                    var oldImage=self.configDir+"/components/classmates/"+filename;
    318                        
     317                        
    319318                    console.log(oldImage+ " - "+newImage);
    320319                   
     
    333332                        });
    334333                   
    335                     console.log("333333333333333333333333333333333333");   
     334                       
    336335                    /*var stream=fs.createReadStream(newImage).pipe(fs.createWriteStream(oldImage));
    337336                   
  • classroom-assembly/trunk/fuentes/classroom-assembly/src/components/component.js

    r6178 r6424  
    33    this.info={};
    44    this.config={};
     5    this.actions={};
    56    this.visible="true";
    67    this.configDir="";
     
    910}
    1011
    11 Component.prototype.init=function init(data, config, configDir, visibility){
     12Component.prototype.init=function init(data, config, configDir, visibility, actions){
    1213    var self=this;
    1314    self.info=data;
     
    1516    self.configDir=configDir;
    1617    self.visible=visibility;
     18    self.actions=actions;
    1719};
    1820
     
    235237}
    236238
     239Component.prototype.getPlayComponentButton=function getPlayComponentButton(){
     240    var item=$(document.createElement("span")).addClass("PlayComponentButton");
     241    return item;   
     242}
     243
     244Component.prototype.getPlayableContent=function getPlayableContent(){
     245    var item=$(document.createElement("div")).addClass("PlayableContent").html("Component has no playable info");
     246    return item;
     247};
  • classroom-assembly/trunk/fuentes/classroom-assembly/src/components/weekday/weekday.js

    r6178 r6424  
    110110   
    111111    self.info={"weekday":""};
     112    self.actions={"actions":"tralari pajaritos"};
    112113    self.config={"monday":true,"tuesday":true,"wednesday":true,"thursday":true,
    113114                 "friday":true,"saturday":true,"sunday":true};
     
    121122weekdayComponentClass.prototype.drawComponent=function drawComponent(){
    122123    var self=this;
    123     var li=$(document.createElement("li")).attr("id","weekdayComponent").attr("data", JSON.stringify(self.info)).attr("config", JSON.stringify(self.config)).addClass("component");
     124   
     125    var li=$(document.createElement("li")).attr("id","weekdayComponent").attr("data", JSON.stringify(self.info)).attr("config", JSON.stringify(self.config)).attr("actions", JSON.stringify(self.actions)).addClass("component");
    124126    var weekdaystatus="";
    125127   
     
    136138        //$(li).append(weekdaytext).append(weekdayicon).append(weekdaystatus);
    137139        $(li).append(weekdayicon).append(weekdaystatuscontainer);
     140        var PlayComponentButton=self.getPlayComponentButton();
     141        $(li).append(PlayComponentButton);
     142       
    138143    }
    139144   
     
    176181   
    177182    ret.input=$(input).prop("outerHTML");
    178    
    179     //console.log(ret.input);
    180    
     183       
    181184    ret.bindEvents=function(){
    182185        $(".weekdaySelectIcon").on("click", function(){
     
    192195        if (selected) self.info.weekday=selected;
    193196        self.reDrawComponent();
     197        appGlobal.bindCompomentsEvents(); // Rebind component events to allow click on Play after redrawing it
    194198    };
    195199       
     
    246250            if (found.length>0) self.config[weekday]=true; else self.config[weekday]=false;
    247251        }
    248        
    249252        // Apply changes to data in widget
    250253        $("#weekdayComponent").attr("config", JSON.stringify(self.config));
    251254       
    252        
    253     };
    254    
    255        
     255    };
     256   
    256257    return ret;
    257258};
     259
     260weekdayComponentClass.prototype.getPlayableContent=function getPlayableContent(){
     261    var self=this;
     262   
     263    var item=$(document.createElement("div")).addClass("PlayableContent");
     264   
     265   
     266    var toptext=$(document.createElement("div")).html(i18n.gettext("today is")).css("text-align","center").css("top", "0px").attr("fontzoom", "1.2").addClass("textfluid").css("z-index","1001").css("position", "absolute");
     267    var icon=$(document.createElement("div")).addClass(self.info.weekday+" playBigIcon");
     268    var bottomtext=$(document.createElement("div")).html(i18n.gettext(self.info.weekday)).css("text-align","center").css("bottom", "0px").attr("fontzoom", "1.5").addClass("textfluid").css("position", "absolute").css("z-index","1001");
     269   
     270   
     271    // Check if there is an action for item show
     272    //
     273    // WIP... comprovar si self.actions[self.info.weekday].onshow.action existix...
     274    //
     275    try{
     276    console.log(self.actions[self.info.weekday].onshow.action);
     277    if(self.actions[self.info.weekday].onshow.action=="speech") {
     278        $(item).attr("tts", i18n.gettext("today is")+" "+i18n.gettext(self.info.weekday));
     279        }
     280    } catch (err) {}; // Nothing to do
     281
     282    $(item).append(toptext, icon, bottomtext);
     283    //if (self.actionsonshow)
     284   
     285    return item;
     286};
  • classroom-assembly/trunk/fuentes/classroom-assembly/src/css/loadDialog.css

    r5857 r6424  
    2020.fileSelector{
    2121    float: left;
    22     width: 100%;
     22    width: 60%;
     23    margin-left: 20%;
    2324    margin-top: 250px;
    2425    transition: all ease 0.3s;
     
    102103    background-origin: content-box;
    103104    text-align:center;
     105    transition: all ease 0.2s !important;
    104106}
    105107
     
    116118    margin-top: 0px;
    117119    box-shadow: 0 8px 6px -6px black;
     120}
     121
     122.asName{
     123    width: 100%;
     124    text-align: center;
     125    border: none;
     126    background-color: transparent;
     127}
     128
     129
     130.asName:focus{
     131    background-color: #ffffff;
    118132}
    119133
     
    153167   
    154168}
     169
     170.trashIcon{
     171    position: fixed;
     172    bottom: 100px;
     173    left: 100px;
     174    width: 128px;
     175    height: 128px;
     176    background-image: url("images/icons/trash.png");
     177    background-size: contain;
     178    transition: all ease 0.4s;
     179}
     180
     181.trashIconDrag{
     182    width: 150px !important;
     183    height: 150px !important;
     184    bottom: 89px !important;
     185    left: 89px !important;
     186   
     187}
     188
     189.dragIcon{
     190    width: 100px;
     191    height: 134px;
     192    padding-top: 34px;
     193    display: block;
     194    opacity: 0.9 !important;
     195    box-shadow: 0 6px 6px -6px black;
     196    background-color: #ffffff;
     197}
  • classroom-assembly/trunk/fuentes/classroom-assembly/src/css/main.css

    r6178 r6424  
    9292}
    9393
     94
     95.PlayComponentButton{
     96    width: 20px;
     97    height: 20px;
     98    background: #00ff00;
     99    position: absolute;
     100    bottom: 0px;
     101    left: 0px;
     102}
     103
    94104/* Icons */
    95105
     
    300310}
    301311
    302 
    303 
    304312.visibilityIcon{
    305313    width: 24px;
     
    330338}
    331339
     340/* playWindow */
     341
     342.playWindow{
     343    position: absolute;
     344    top: 0px;
     345    left: 0px;
     346    right: 0px;
     347    bottom: 0px;
     348    background: #ffffff;
     349    z-index: 100;
     350    opacity: 0;
     351}
     352
     353.playWindowCloseButton{
     354    position: absolute;
     355    top: 0px;
     356    right: 0px;
     357    width: 50px;
     358    height: 50px;
     359    background-color: #cccccc;
     360}
     361
     362.PlayableContent{
     363    position: absolute;
     364    top: 10%;
     365    bottom: 10%;
     366    left: 10%;
     367    width: 80%;
     368    height: auto;
     369    background: #ffff00;
     370}
     371
     372.playBigIcon{
     373    background-size: contain;
     374    background-position: center;
     375    background-repeat: no-repeat;
     376    background-color: #ff00ff;
     377    position: absolute;
     378    top: 15%;
     379    left: 15%;
     380    bottom:15%;
     381    right: 15%;
     382}
     383
     384playBigIcon
  • classroom-assembly/trunk/fuentes/classroom-assembly/src/index.html

    r6178 r6424  
    1818                <!-- Loading Components-->
    1919                <script type="text/javascript" src="components/component.js"></script>
    20                 <script type="text/javascript" src="components/data/data.js"></script>
     20                <!--script type="text/javascript" src="components/data/data.js"></script>
    2121                <script type="text/javascript" src="components/weather/weather.js"></script>
    2222                <script type="text/javascript" src="components/season/season.js"></script>
     
    2424                <script type="text/javascript" src="components/weekday/weekday.js"></script>
    2525                <script type="text/javascript" src="components/classmates/classmates.js"></script>
    26                 <script type="text/javascript" src="components/agenda/agenda.js"></script>
     26                <script type="text/javascript" src="components/agenda/agenda.js"></script-->
    2727               
    2828                <!-- Loading main -->
     
    4646                <link rel="stylesheet" type="text/css" href="css/main.css">
    4747                <link rel="stylesheet" type="text/css" href="css/loadDialog.css">
    48                 <link rel="stylesheet" type="text/css" href="components/weather/weather.css">
     48                <!--link rel="stylesheet" type="text/css" href="components/weather/weather.css">
    4949                <link rel="stylesheet" type="text/css" href="components/data/data.css">
    5050                <link rel="stylesheet" type="text/css" href="components/season/season.css">
     
    5252                <link rel="stylesheet" type="text/css" href="components/weekday/weekday.css">
    5353                <link rel="stylesheet" type="text/css" href="components/classmates/classmates.css">
    54                 <link rel="stylesheet" type="text/css" href="components/agenda/agenda.css">
     54                <link rel="stylesheet" type="text/css" href="components/agenda/agenda.css"-->
    5555               
    5656                <style id="customStyles"></style>
  • classroom-assembly/trunk/fuentes/classroom-assembly/src/js/main.js

    r6192 r6424  
    3333    this.filedata={};
    3434    this.components=[];
     35    this.dragSrcEl = null;
     36   
    3537   
    3638   
     
    4951            ref.components.dataComponent=new dataComponentClass();
    5052        },*/
     53       
     54       
     55        /*
    5156        "weatherComponent":function(ref){
    5257            ref.components.weatherComponent=new weatherComponentClass();
     
    6772            ref.components.agendaComponent=new agendaComponentClass();
    6873        }
    69        
     74        */
    7075    };
    7176   
     
    113118   
    114119    var self=this;
     120   
    115121    $(".gridster li").off("dblclick");
    116122    $(".gridster li").off("click");
     
    150156         
    151157        });
    152 }
     158
     159    $(".PlayComponentButton").on("click", function(event){
     160        event.preventDefault(); 
     161        event.stopPropagation();
     162       
     163        if(self.mode=="player"){
     164            self.PlayComponent($(event.target).parent());
     165            }
     166       
     167    });
     168
     169}
     170
     171UI.prototype.PlayComponent=function PlayComponent(component){
     172    var self=this;
     173    var id=$(component).attr("id");
     174    var compDiv=self.components[id].getPlayableContent();
     175   
     176    var playWindow=$(document.createElement("div")).addClass("playWindow");
     177    $("body").append(playWindow);
     178    $(playWindow).animate({
     179        opacity: 1
     180        }, 500, function() {
     181            var closebutton=$(document.createElement("div")).addClass("playWindowCloseButton");
     182            $(playWindow).append(compDiv);
     183            $(playWindow).append(closebutton);
     184            resizeFonts();
     185            console.log($(compDiv));
     186           
     187            // Perform onSow event
     188            if ($(compDiv).attr("tts")!==undefined)
     189                self.speakPhrase($(compDiv).attr("tts"));
     190           
     191            /*
     192           
     193            WIP HERE::::
     194            He baixat la llibreria play-sound de https://www.npmjs.com/package/play-sound
     195           
     196            Mirar ahi on es fan les coses i tal...
     197           
     198            Estic amb el playing de l'audio
     199                     
     200           
     201            */
     202           
     203            if ($(compDiv).attr("audio")!==undefined)
     204                self.playAudio($(compDiv).attr("audio"));
     205           
     206            $(closebutton).on("click", function(){
     207                $(playWindow).animate({
     208                    opacity: 0
     209                    },500,function(){
     210                        $(".playWindow").remove();
     211                        });
     212                });
     213        });
     214};
     215
     216
    153217
    154218UI.prototype.exportAssemblyClick=function exportAssemblyClick(){
     
    549613        // If there is no component in filedata, let's create it empty
    550614       
    551         self.componentHelper[component](self); // Call function to create object in function of its type
    552         self.components[component].init({}, {}, self.configDir, false);
     615        //self.componentHelper[component](self); // Call function to create object in function of its type
     616        self.components[component]=eval(self.componentHelper[component]);
     617       
     618       
     619       
     620        //self.components[component].init({}, {}, self.configDir, false); // Adding empty config for actions
     621        self.components[component].init({}, {}, self.configDir, false, {});
    553622        // Setting empty config
    554623        self.components[component].setBaseConfig();
     
    605674        if(item.componentconfig) {currentconfig=JSON.parse(item.componentconfig);}
    606675       
    607         self.componentHelper[current](self); // Call function to create object in function of its type
    608        
    609         self.components[current].init(currentdata, currentconfig, self.configDir, currentvisibility);
     676        // loading widget actions
     677        var currentcomponentactions={};
     678
     679        if(item.componentactions) {
     680            console.log(typeof(item.componentactions));
     681            if (typeof(item.componentactions)=="object"){
     682                currentcomponentactions=item.componentactions;
     683                } // If is object no need to parse
     684            else {currentcomponentactions=JSON.parse(item.componentactions);
     685                }
     686            }
     687        //self.componentHelper[current](self); // Call function to create object in function of its type
     688        self.components[component]=eval(self.componentHelper[component]);
     689       
     690        self.components[current].init(currentdata, currentconfig, self.configDir, currentvisibility,currentcomponentactions);
    610691        var gridItem=self.components[current].drawComponent();
    611692       
     
    687768   
    688769    var text=$(document.createElement("div")).html("").addClass("loadWinHelpMessage").attr("id","loadWinHelpMessage");
     770   
    689771       
    690772    var fs=require("fs");
     
    706788        var iconImage="url(css/images/icons/asmode.png)";
    707789        if (typeof(config.metadata.icon)!=="undefined") iconImage="url("+config.metadata.icon+")";
    708         var content=$(document.createElement("div")).html(config.metadata.name).attr("id", config.metadata.id).addClass("asItem").css("background-image", iconImage);
     790        var content=$(document.createElement("div")).attr("id", config.metadata.id).addClass("asItem").css("background-image", iconImage).attr("iconimage", config.metadata.icon);
     791        var asName=$(document.createElement("input")).attr("type","text").val(config.metadata.name).addClass("asName");
     792        $(content).append(asName);
     793       
     794        //$(li).attr("draggable","true").attr("ondragstart", "drag(event)");
     795        $(li).attr("data-draggable","item");
    709796       
    710797        $(li).append(content);
     
    732819    // window.innerWidth
    733820    // Fer el fileselector amb width=130*nº elements i amb un margin-left en funció del tamany de la finestra...
    734     var width=(assembleaList.length+1)*130;
    735     $(fileSelector).css("width", 1.5*width+"px").css("margin-left", ((window.innerWidth/2)-(width/2)-90)+"px");
     821   
     822    /*var width=(assembleaList.length+2)*130;
     823    $(fileSelector).css("width", 1.5*width+"px").css("margin-left", ((window.innerWidth/2)-(width/2)-90)+"px");*/
     824   
    736825   
    737826    $(fileSelector).append(hrtop);
     
    748837    // Pages
    749838    var pages=$(document.createElement("ul")).addClass("pages");
    750     var li1=$(document.createElement("li")).html("1");
    751     var li2=$(document.createElement("li")).html("2");
    752     var li3=$(document.createElement("li")).html("3");
    753     $(pages).append(li1, li2, li3);
    754839    $(fileSelector).append(pages);
    755    
    756840   
    757841    $(loadContainer).append(fileSelector);
    758842    $(loadDiv).append(loadContainer);
    759843   
    760    
    761    
     844    // Create trash icon
     845   
     846    var trash=$(document.createElement("div")).addClass("trashIcon").attr("id","trash");
     847    $(loadDiv).append(trash);
    762848   
    763849   
    764850    $("body").append(loadDiv);
    765851   
    766    
    767     var $wrap = $('#frameFileSelector').parent();
    768    
    769     // Activate sly
    770     $('#frameFileSelector').sly({
    771       horizontal: 1,
    772       itemNav: 'centered',
    773       activateMiddle: 1,
    774       smart: 1,
    775       activateOn: 'click',
    776       mouseDragging: 1,
    777       touchDragging: 1,
    778       releaseSwing: 1,
    779       pagesBar: $wrap.find('.pages'),
     852                               
     853    $("#loadMainContainer").on("dragover", function(event) {
     854    event.preventDefault(); 
     855    event.stopPropagation();
     856    });
     857   
     858    $("#loadMainContainer").on("dragleave", function(event) {
     859        event.preventDefault(); 
     860        event.stopPropagation();
     861    });
     862   
     863    $("body").on("drop", function(e) {
     864  // this/e.target is current target element.
     865
     866      if (e.stopPropagation) {
     867         e.stopPropagation(); // Stops some browsers from redirecting.
     868      }
     869    var asToDelete=$($(e.originalEvent.dataTransfer.getData('text/html'))[0]).attr("id");
     870    if ($(e.target).attr("id")=="trash") {
     871      vex.dialog.confirm({
     872            message: i18n.gettext('ask_delete_assembly'),
     873            buttons: [
     874                $.extend({}, vex.dialog.buttons.YES, {
     875                className: 'vex-dialog-button-primary',
     876                //text: i18n.gettext("confirm.save.msg.yes"),
     877                text: i18n.gettext("delete_assembly"),
     878                click: function() {
     879                // If answers yes, delete
     880                $(self.dragSrcEl).html("");
     881                $(self.dragSrcEl).animate({
     882                  opacity: 0.25,
     883                  width: "10px"
     884                  }, 500, function() {
     885                    var fs=require("fs-extra");
     886                    // And delete from disk
     887                    var rmdir=self.configBaseDir+"/"+asToDelete;
     888                    console.log(rmdir);
     889                    fs.removeSync(rmdir);
     890                    $(self.dragSrcEl).remove();
     891   
     892                 
     893                 
     894                 
     895                  });
     896               
     897                } // end click on yes
     898            }),
     899            $.extend({}, vex.dialog.buttons.NO, {
     900            className: 'vex-dialog-button',
     901            text: i18n.gettext("cancel_delete_assembly"),
     902            click: function() {
     903                $(self.dragSrcEl).css("opacity", "1");
     904                vex.close(this);
     905            }})
     906            ],
     907            callback: function () {}
     908        });
     909     
     910     
     911    } else{
     912      $(self.dragSrcEl).css("opacity", "1");
     913    }
     914   
     915    $("#trash").removeClass("trashIconDrag").addClass("trashIcon");
     916   
     917    return false;
     918    });
     919   
     920    $("#trash").on("dragenter", function(event) {
     921    event.preventDefault(); 
     922    event.stopPropagation();
     923    $("#trash").addClass("trashIconDrag");   
     924    });
     925   
     926    $("#trash").on("dragleave", function(event) {
     927    event.preventDefault(); 
     928    event.stopPropagation();
     929   
     930    $("#trash").removeClass("trashIconDrag").addClass("trashIcon");
     931    });
     932   
     933   
     934     
     935    var options = {
     936        horizontal: 1,
     937        itemNav: 'basic',
     938        speed: 300,
     939        mouseDragging: 0,
     940        touchDragging: 1,
     941    pagesBar: $('.pages'),
    780942      activatePageOn: 'click',
    781       speed: 300,
     943        pageBuilder:          // Page item generator.
     944                function (index) {
     945                        return '<li>' + (index + 1) + '</li>';
     946                }
     947    };
     948    $('#frameFileSelector').sly(options);
    782949     
    783         });
    784 
     950     
    785951    // Event listener
    786952    $(".asItem").on("click", function(){
     
    822988     });
    823989   
     990    $(".asName").on("click", function(event){
     991        // Just prevent default and stop propagation to avoid load assemby on double click
     992        event.preventDefault(); 
     993        event.stopPropagation();
     994    });
     995   
     996    $(".asName").on('keyup', function (e) {
     997        if (e.keyCode == 13) {
     998            $(e.target).blur();
     999        }
     1000    });
     1001
     1002    $(".asName").on("change", function(event){
     1003        // Changes on text input. Let's rename Assembly
     1004        var newName=$(event.target).val();
     1005        var oldName=$(event.target).parent().attr("id");
     1006        var newid=self.renameAssembly(oldName, newName);
     1007        $(event.target).parent().attr("id", newid);
     1008       
     1009    });
     1010   
     1011   
     1012    // Setting "draggable" atribute to items with "data-draggable" set to item...
     1013    for (var items = document.querySelectorAll('[data-draggable="item"]'),
     1014        len = items.length,
     1015        i = 0; i < len; i ++)
     1016    {
     1017        items[i].setAttribute('draggable', 'true');
     1018       
     1019        $(items[i]).on("dragstart", function(e) {
     1020           
     1021                this.style.opacity = '0.4';
     1022             
     1023                self.dragSrcEl = this;
     1024             
     1025                e.originalEvent.dataTransfer.effectAllowed = 'move';
     1026                e.originalEvent.dataTransfer.setData('text/html', this.innerHTML);
     1027                         
     1028            /*//$(event.target).css("display", "none");
     1029             //$(event.target).css("opacity", "0");
     1030            this.style.opacity = '0.2';
     1031           
     1032            event.originalEvent.dataTransfer.setData("item", ($($(event.target).find("div")[0]).attr("id")));
     1033            var dragimg=($($(event.target).find("div")[0]).attr("iconimage"));
     1034 
     1035            $(".dragIcon").remove();
     1036            var img = document.createElement("img");
     1037            $(img).addClass("dragIcon");
     1038            $("body").append(img);
     1039           
     1040           
     1041            $(img).attr("src", dragimg);
     1042                   
     1043            event.originalEvent.dataTransfer.setDragImage(img, 50, 50);
     1044            console.log($("#tralari_pajaritos"));*/
     1045
     1046            });
     1047    }   
    8241048};
     1049
     1050UI.prototype.renameAssembly=function renameAssembly(oldName, newName){
     1051    var self=this;
     1052    var fs=require("fs");
     1053    var id=newName.replace(/([^a-z0-9]+)/gi, '');
     1054    var oldDir=self.configBaseDir+"/"+oldName;
     1055    var newDir=self.configBaseDir+"/"+id;
     1056    var configFile=oldDir+"/config.json";
     1057   
     1058    fs.accessSync(configFile, fs.R_OK | fs.W_OK);
     1059    var file=fs.readFileSync(configFile);
     1060    var fileContent=(JSON.parse(file));
     1061   
     1062    // Rename Content and change dir name
     1063    fileContent.metadata.id=id;
     1064    fileContent.metadata.name=newName;
     1065   
     1066    var saveData={"metadata": fileContent.metadata, "components":fileContent.components};
     1067    fs.writeFileSync(configFile, JSON.stringify(saveData, null, '\t'));
     1068    fs.renameSync(oldDir, newDir);
     1069   
     1070    return id; // Returns new id for item   
     1071                 
     1072};
     1073
     1074   
    8251075
    8261076UI.prototype.createNewAssembly=function createNewAssembly(){
     
    9101160    else
    9111161    {
    912         phrase='<?xml version="1.0"?><speak>' +phrase+'</speak>';
    913         chrome.tts.speak(phrase, {'enqueue': true, 'lang':navigator.language, 'voiceName':"catalan espeak"});
     1162        //phrase='<?xml version="1.0"?><speak>' +phrase+'</speak>';
     1163        //phrase='<speak>' +phrase+'</speak>';
     1164        //chrome.tts.speak(phrase, {'enqueue': true, 'lang':navigator.language, 'voiceName':"catalan espeak"});
     1165        chrome.tts.speak(phrase, {'enqueue': true, 'lang':'es', 'voiceName':"catalan espeak"});
    9141166               
    9151167        /*chrome.tts.getVoices(
     
    9601212    }, 100);
    9611213};
     1214
     1215
     1216UI.prototype.registerComponents=function registerComponents(){
     1217   
     1218    var self=this;
     1219       
     1220        var fs=require("fs");
     1221       
     1222            var componentDescriptors=fs.readdirSync("components");
     1223           
     1224            var componentCSSFileList=[];
     1225            var componentJSFileList=[];
     1226            for (var JSONdescriptor in componentDescriptors){
     1227                // Getting file extension
     1228                var file=componentDescriptors[JSONdescriptor].split(".");
     1229                var fileExt=file[file.length-1];
     1230                if (fileExt=="json") {
     1231                    var comp=JSON.parse(fs.readFileSync("components/"+componentDescriptors[JSONdescriptor]));
     1232                    // Extract data from components: CSS, JS
     1233                    componentCSSFileList.push("components/"+comp.style);
     1234                    componentJSFileList.push("components/"+comp.script);
     1235                   
     1236                    // Registering Components i ComponentHelper
     1237                var componentName=comp.component+"Component";
     1238                self.componentHelper[componentName]=comp.constructorCall;
     1239                   
     1240                }
     1241            }
     1242           
     1243            // Loading Components Scripts
     1244            for (var componentJSFile in componentJSFileList){
     1245                var JSFile=componentJSFileList[componentJSFile];
     1246                if (JSFile.substring(JSFile.length-3)==".js") {
     1247                    // If it's a js file, let's get it
     1248                    var script=$(document.createElement("script")).attr("type", "text/javascript");
     1249                    $(script).attr("src", JSFile);
     1250                    $("head").append(script);
     1251                }
     1252            }
     1253           
     1254            // Loading Components CSS
     1255            for (var componentCSSFile in componentCSSFileList){
     1256                var CSSFile=componentCSSFileList[componentCSSFile];
     1257                if (CSSFile.substring(CSSFile.length-4)==".css") {
     1258                    // If it's a CSS file, let's get it
     1259                    var link=$(document.createElement("link")).attr("rel", "stylesheet").attr("type", "text/css");
     1260                    $(link).attr("href", CSSFile);
     1261                    $("head").append(link);
     1262                }
     1263            }
     1264}
    9621265
    9631266
     
    10341337    //app.speakPhrase("Welcome to Classroom Assembly");
    10351338   
     1339   
     1340    // Registering Components
     1341   
     1342    app.registerComponents();
     1343   
    10361344    // Binding change event on import dialog
    10371345    $("#importDialog").on("change", function(){
  • classroom-assembly/trunk/fuentes/classroom-assembly/src/locale/ca_ES.UTF-8.json

    r6178 r6424  
    2121  "undefined day":"Quin dia és hui?",
    2222  "weekday.component.options":"Configureu els dies de la setmana",
     23  "today is":"Hui és",
    2324  "monday":"Dilluns",
    2425  "tuesday":"Dimarts",
     
    123124  "assembly":"Assemblea",
    124125  "Activities": "Activitats",
    125   "No tasks defined for today":"Encara no hi ha activitats per a hui"
     126  "No tasks defined for today":"Encara no hi ha activitats per a hui",
     127  "ask_delete_assembly": "Esteu segurs que desitgeu esborrar l'assemblea?",
     128  "delete_assembly": "Sí, esborra-la",
     129  "cancel_delete_assembly":"No, cancel·la l'operació"
    126130 
    127131}
  • classroom-assembly/trunk/fuentes/classroom-assembly/src/locale/en_US.UTF-8.json

    r6178 r6424  
    2121  "undefined day":"What day is today?",
    2222  "weekday.component.options":"Configure days of week",
     23  "today is":"Today is",
    2324  "monday":"Monday",
    2425  "tuesday":"Tuesday",
     
    122123  "assembly":"Assembly",
    123124  "Activities": "Activities",
    124   "No tasks defined for today":"No tasks defined for today"
     125  "No tasks defined for today":"No tasks defined for today",
     126  "ask_delete_assembly": "Are you sure to delete this assembly",
     127  "delete_assembly": "Yes, delete it",
     128  "cancel_delete_assembly":"No, cancel it"
     129 
    125130}
  • classroom-assembly/trunk/fuentes/classroom-assembly/src/locale/es_ES.UTF-8.json

    r6178 r6424  
    2121  "undefined day":"¿Qué dia es hoy?",
    2222  "weekday.component.options":"Configurar los dias de la semana",
     23  "today is":"Hoy es",
    2324  "monday":"Lunes",
    2425  "tuesday":"Martes",
     
    124125  "assembly":"Asamblea",
    125126  "Activities": "Actividades",
    126   "No tasks defined for today":"Aún no hay actividades para hoy"
     127  "No tasks defined for today":"Aún no hay actividades para hoy",
     128  "ask_delete_assembly": "?Desea eliminar esta asamblea?",
     129  "delete_assembly": "Sí, elimínela",
     130  "cancel_delete_assembly":"No, cancelar la operación"
    127131 
    128132 
  • classroom-assembly/trunk/fuentes/classroom-assembly/src/package-lock.json

    r6195 r6424  
    275275      "integrity": "sha1-Wn26mBOPoKvsevxD5amgsqrHKfE="
    276276    },
     277    "find-exec": {
     278      "version": "0.0.8",
     279      "resolved": "https://registry.npmjs.org/find-exec/-/find-exec-0.0.8.tgz",
     280      "integrity": "sha1-yJ02iUrXtuKqNrhCcNCyycMjRNs=",
     281      "requires": {
     282        "sync-exec": "0.6.2"
     283      }
     284    },
    277285    "fs-extra": {
    278286      "version": "4.0.2",
     
    470478      "requires": {
    471479        "pinkie": "2.0.4"
     480      }
     481    },
     482    "play-sound": {
     483      "version": "1.1.1",
     484      "resolved": "https://registry.npmjs.org/play-sound/-/play-sound-1.1.1.tgz",
     485      "integrity": "sha1-oKXSk1i+spjTMCGxO97e4Jxn5/E=",
     486      "requires": {
     487        "find-exec": "0.0.8"
    472488      }
    473489    },
     
    580596      }
    581597    },
     598    "sync-exec": {
     599      "version": "0.6.2",
     600      "resolved": "https://registry.npmjs.org/sync-exec/-/sync-exec-0.6.2.tgz",
     601      "integrity": "sha1-cX0izFPwzh3vVZQ2LzqJouu5EQU="
     602    },
    582603    "tar-stream": {
    583604      "version": "1.5.4",
  • classroom-assembly/trunk/fuentes/classroom-assembly/src/package.json

    r6195 r6424  
    2929    "fs-extra": "^4.0.2",
    3030    "gm": "^1.23.0",
     31    "play-sound": "^1.1.1",
    3132    "read-chunk": "^2.1.0",
    3233    "sortablejs": "^1.6.1"
  • classroom-assembly/trunk/fuentes/debian/changelog

    r6195 r6424  
     1classroom-assembly (1.0) xenial; urgency=medium
     2
     3  * Core: Restructured component architecture (more plugable)
     4  * Added trash to remove an Assemby
     5  * Added rename assembly capabilities
     6
     7 -- Jose A. Murcia <joamuran@gmail.com>  Wed, 29 Nov 2017 09:54:23 +0100
     8
    19classroom-assembly (0.9.1) xenial; urgency=high
    210
  • classroom-assembly/trunk/fuentes/desktops/applications/classroom-assembly.desktop

    r5049 r6424  
    77Comment=Classroom Assembly for children and special education
    88Name[es]=Asamblea de aula
     9Name[ca@valencia]=Assemblea d'aula
     10Name[ca_ES.UTF-8@valencia]=Assemblea d'aula
     11Name[ca_ES@valencia]=Assemblea d'aula
    912Comment[es]=Asamblea de aula para infantil y educación especial
    10 Name[ca_ES.UTF-8@valencia]=Assemblea d'aula
    11 Name[ca_ES@valencia]=Assemblea d'aula per a infantil i educació especial
    12 Comment[ca_ES.UTF-8@valencia]=Assemblea d'aula
     13Comment[ca@valencia]=Assemblea d'aula per a infantil i educació especial
     14Comment[ca_ES.UTF-8@valencia]=Assemblea d'aula per a infantil i educació especial
    1315Comment[ca_ES@valencia]=Assemblea d'aula per a infantil i educació especial
    1416Exec=classroom-assembly
Note: See TracChangeset for help on using the changeset viewer.