Ignore:
Timestamp:
2015-08-04T13:50:35+12:00 (9 years ago)
Author:
davidb
Message:

Development work done in at JCDL

File:
1 edited

Legend:

Unmodified
Added
Removed
  • main/trunk/model-sites-dev/respooled/collect/popup-video-respooled/js/game-on.js

    r29980 r30093  
    4040    var docStorage = null;
    4141
     42    var site_name  = gs.xsltParams.site_name;
     43    var collection = gs.cgiParams["c"];
     44
    4245    if (hasLocalStorage) {
    4346
     
    5558    }
    5659
     60    console.log("docStorage = " + docStorage);
     61    //console.log("docOID = " + docOID);
     62    //console.log("*** docOID in docStorage = " + (docOID in docStorage));
     63    console.log("*** palTracks = " + (JSON.stringify(docStorage.palTracks)));
     64    console.log("*** popTracks = " + (JSON.stringify(docStorage.popTracks)));
     65   
     66    //console.log("*** palTracks.length = " + (Object.keys(docStorage.palTracks).length));
     67
     68/*
     69   
     70    //if ((docStorage==null) || !(docOID in docStorage) || (docOID in Storage && !(docStorage[docOID].palTracks.length) )) {
     71    if ((docStorage==null) || !(docStorage.palTracks) || (docStorage.palTracks && (Object.keys(docStorage.palTracks).length==0))) {
     72   
     73
     74    console.log("**** Need to retrieve Respooled data from DL");
     75
     76    if (docStorage==null) {
     77        docStorage = {palTracks:{}, popTracks:{}};
     78    }
     79    gs.functions.getArchivesMetadata(collection, site_name, docOID,
     80                     "docStorage", 0,  function(metadata) {
     81                         var metaval_encoded_str = metadata.getValue();
     82                         var metaval_str = decodeURIComponent(metaval_encoded_str)
     83                         console.log("***!!! metadata = '" + metaval_str + "'");
     84                         if (metaval_str != "") {
     85                         var metaval = eval("("+metaval_str+")");
     86                         console.log("***!!! metadata JSON = " + JSON.stringify(metaval));
     87                         docStorage = metaval;
     88                         }
     89                         else {
     90                         docStorage = {palTracks:{}, popTracks:{}};
     91                         }
     92                         goDocStorage = docStorage;
     93                     }
     94                    );
     95   
     96    }
     97*/
     98   
     99    //console.log("*** returning docStorage.palTracks " + JSON.stringify(docStorage.palTracks));
     100   
    57101    return docStorage;
     102}
     103
     104
     105function saveDocStorage(log_prefix)
     106{
     107    var docOID = gs.cgiParams.d;
     108    var site_name = gs.xsltParams.site_name;
     109    var collection = gs.cgiParams["c"];
     110
     111    if (hasLocalStorage) {
     112    console.log(log_prefix + ": Saving in Browser localStorage track data for '" + docOID + "'");
     113    localStorage.setItem(docOID,JSON.stringify(goDocStorage));
     114    }
     115
     116    /*
     117    var goDocStorageStrEncoded = encodeURIComponent(JSON.stringify(goDocStorage));
     118
     119    console.log(log_prefix+": Away to save metadata to DL: " + goDocStorageStrEncoded);
     120
     121    gs.functions.setArchivesMetadata(collection, site_name, docOID,
     122                     "docStorage", null, goDocStorageStrEncoded, null, "override",
     123                     function(response){
     124                     console.log("**** saved Respooled metadata to the DL server")
     125                     console.log("*** response: " + JSON.stringify(response));
     126                     }
     127                    );
     128*/
    58129}
    59130
     
    70141}
    71142
     143function getActiveOverlayLayers(opt_field)
     144{
     145    var field = opt_field || "name";
     146
     147    var popActiveLayers = [];
     148    $('#popForm input:checked').each(function() {
     149        popActiveLayers.push(this[field]);
     150    });
     151
     152    return popActiveLayers;
     153}
     154
     155
     156function getPalTracks(docOID) {
     157
     158    if (!("palTracks" in goDocStorage)) {
     159    goDocStorage = {palTracks:{}, popTracks:{}};
     160    }
     161   
     162    return goDocStorage.palTracks;
     163   
     164}
     165
     166function getPopTracks(docOID) {
     167
     168    if (!("popTracks" in goDocStorage)) {
     169    goDocStorage = {palTracks:{}, popTracks:{}};
     170    }
     171   
     172    return goDocStorage.popTracks;
     173   
     174}
     175
    72176function populatePalList(docStorage)
    73177{
    74178    // populate pal List
     179    var docOID = gs.cgiParams.d;
     180
    75181    if (hasLocalStorage) {
    76182
    77     var palTracks = docStorage.palTracks || {};
     183    var palTracks = getPalTracks(docOID);
    78184
    79185    //console.log("*** palTracks = " + JSON.stringify(palTracks));
     
    103209
    104210
     211function populatePopList(docStorage)
     212{
     213    // populate pop List
     214    var docOID = gs.cgiParams.d;
     215    var hasPopTracks = false;
     216   
     217    if (hasLocalStorage) {
     218
     219    var popTracks = getPopTracks(docOID);
     220   
     221    //console.log("*** popTracks = " + JSON.stringify(popTracks));
     222    var popListKeys = Object.keys(popTracks).sort();
     223
     224    if (popListKeys.length>0) {
     225        hasPopTracks = true;
     226    }
     227    for (var i=0; i<popListKeys.length; i++) {
     228        var key = popListKeys[i];
     229        var track = popTracks[key];
     230        var name = key;
     231        var cb_name = name.replace(/[ -]/g,"");
     232        var cb_value = name;
     233
     234        var opt_checked = (i==0) ? ' checked="checked"' : "";
     235
     236        $('#popList').append('<div id="pop'+cb_name+'"><input type="checkbox" '
     237                 + '" name="'+cb_name+'" value="' + cb_value + '"'
     238                 + opt_checked + '>'
     239                 + name + '</div>');
     240    }
     241    }
     242
     243    if (!hasPopTracks) {
     244    // Put in some fake data for now
     245    console.log("**** adding baseline Popup Trivia item");
     246   
     247    $('#popList').append('<input type="checkbox" id="popPopupTrivia"    name="PopupTrivia" value="Popup Trivia" checked="checked"/>Popup Trivia<br />');
     248
     249    if (hasLocalStorage) {
     250        var popTracks = getPopTracks(docOID);
     251        popTracks["Popup Trivia"] = "";
     252    }
     253
     254   
     255    //$('#palList').append('<input type="checkbox" id="palDrumbeatHero" name="DrumbeatHero"  value="Drum-beat Hero" />Drum-beat Hero<br />');
     256    }
     257}
     258
     259
    105260function computeMidiStats(track)
    106261{
     
    168323    go_top_level_group = new goPaper.group("gameOnPaper",[]);
    169324
     325    var docOID = gs.cgiParams.d;
     326   
    170327    if (hasLocalStorage) {
    171328
     
    173330    //    palTracks[save_name] = [ { name: "my recording 1", baseCTime: 123.3, events: [ .... ] } ]
    174331
    175     var palTracks = docStorage.palTracks || {};
     332    var palTracks = getPalTracks(docOID);
    176333
    177334    var total_duration = mediaPlayer.duration;
     
    233390            var block_events_len = block_events.length;
    234391            for (var ne=0; ne<block_events_len; ne++) {
    235            
     392
    236393            var note_event = block_events[ne];
    237394            var midi_pitch = note_event.midiPitch;
    238 
     395           
    239396            var startPercTime = (base_ctime + note_event.startCurrentTime)/total_duration;
     397
    240398            var rx_org = startPercTime * go_paper_x_dim;
    241             var ry_org = go_paper_y_dim - ((note_event.midiPitch - min_midi_pitch) * midi_y_dim_spacing) - midi_y_dim_spacing;
     399            var ry_org;
    242400           
    243             var rx_dim = (note_event.duration/1000)/total_duration * go_paper_x_dim;
    244             var ry_dim = midi_y_dim_spacing;
     401            var rx_dim;
     402            var ry_dim;
    245403           
     404            if (note_event.type && (note_event.type=="drum")) {
     405                ry_org = 0;
     406               
     407                rx_dim = 1;
     408                ry_dim = go_paper_y_dim;
     409            }
     410            else {
     411                var midi_pitch = note_event.midiPitch;
     412
     413                //var startPercTime = (base_ctime + note_event.startCurrentTime)/total_duration;
     414                //var rx_org = startPercTime * go_paper_x_dim;
     415                ry_org = go_paper_y_dim - ((note_event.midiPitch - min_midi_pitch) * midi_y_dim_spacing) - midi_y_dim_spacing;
     416               
     417                rx_dim = (note_event.duration/1000)/total_duration * go_paper_x_dim;
     418                ry_dim = midi_y_dim_spacing;
     419            }
     420
    246421            var rect = goPaper.rect(rx_org,ry_org,rx_dim,ry_dim-0.2);
    247422            //rect.attr({stroke:"none", strokeWidth:0.2, fill:"#2E52A4"});
     
    251426            go_top_level_group.push(rect);
    252427
    253             if (midi_pitch < block_min_midi_pitch) {
    254                 block_min_midi_pitch = midi_pitch;
     428            if (midi_pitch) {
     429                if (midi_pitch < block_min_midi_pitch) {
     430                block_min_midi_pitch = midi_pitch;
     431                }
     432                if (midi_pitch > block_max_midi_pitch) {
     433                block_max_midi_pitch = midi_pitch;
     434                }
    255435            }
    256             if (midi_pitch > block_max_midi_pitch) {
    257                 block_max_midi_pitch = midi_pitch;
    258             }
     436
    259437            }
    260438
     
    343521    goPaper = Raphael("gameOnPaper",go_paper_x_dim,go_paper_y_dim);
    344522    goPaper.canvas.style.backgroundColor = '#FFFFFF';
     523   
     524    if (gs.xsltParams.interface_name == "dlfm") {
     525   
     526    $("#gameOnPaper>svg").panzoom({
     527        $zoomIn: $(".zoom-in"),
     528        $zoomOut: $(".zoom-out"),
     529        $zoomRange: $(".zoom-range"),
     530        $reset: $(".reset")
     531    });
     532
     533    $("#gameOnPaper>svg").panzoom("option", "contain", true );
     534
     535    }
    345536
    346537
     
    348539
    349540    populatePalList(goDocStorage);
     541    populatePopList(goDocStorage);
     542   
    350543    displayActiveTrackLayers(goDocStorage);
    351544}
    352545
     546// pal routines
    353547
    354548function palDeleteConfirmed()
     
    359553    var palActiveLayersValue = getActiveTrackLayers("value");
    360554
    361     var palTracks = goDocStorage.palTracks || {};
     555    var docOID = gs.cgiParams.d;
     556    var palTracks = getPalTracks(docOID);
    362557
    363558    for (var i=0; i<palActiveLayersID.length; i++) {
     
    368563    delete palTracks[value];
    369564    }
     565
     566    saveDocStorage("palDeleteConfirmed()");   
    370567}
    371568
     
    387584function palSave()
    388585{
    389     var palTracks = goDocStorage.palTracks || {};
     586    var docOID = gs.cgiParams.d;
     587    var palTracks = getPalTracks(docOID);
    390588
    391589    var json_edit_str = trackEditor.getSession().getValue();
    392     console.log("**** json edit str = " + json_edit_str);
     590    console.log("**** palSave() trackEditor.getSession value = " + json_edit_str);
    393591
    394592    var json_edit = eval("("+json_edit_str+")");
     
    398596        //console.log("*** key = " + key);
    399597        var val = json_edit[key];
    400         console.log("**** Saving under key[ " + key + "]: " + JSON.stringify(val));
     598        console.log("**** Saving under key[" + key + "]: " + JSON.stringify(val));
    401599        palTracks[key] = val;       
    402600    }
    403601    }
    404602
    405     if (hasLocalStorage) {
    406     var docOID = gs.cgiParams.d;
    407     console.log("Saving in Browser localStorage track data for '" + docOID + "'");
    408     localStorage.setItem(docOID,JSON.stringify(goDocStorage));
    409     }
     603    saveDocStorage("palSave()");
     604   
    410605}
    411606
    412607function palEdit()
    413608{
    414     var palTracks = goDocStorage.palTracks || {};
     609    var docOID = gs.cgiParams.d;
     610    var palTracks = getPalTracks(docOID);
    415611
    416612    var palActiveLayers = getActiveTrackLayers("value");
     
    431627}
    432628
     629//
     630// Popup Info Overlay routines
     631//
     632
     633
     634function popCreate()
     635{
     636    $('#create-info-popup').dialog('open');
     637
     638    return false;  // no need to process the event any further
     639}
     640
     641function popDeleteConfirmed()
     642{
     643    //var popActiveLayers = $('input[type=checkbox]:checked', '#popForm');
     644
     645    var popActiveLayersID   = getActiveOverlayLayers("name");
     646    var popActiveLayersValue = getActiveOverlayLayers("value");
     647
     648    var docOID = gs.cgiParams.d;
     649    var popTracks = getPopTracks(docOID);
     650
     651    for (var i=0; i<popActiveLayersID.length; i++) {
     652    var id = popActiveLayersID[i];
     653    $('#pop'+id).remove();
     654
     655    var value = popActiveLayersValue[i];
     656    delete popTracks[value];
     657    }
     658
     659    //console.log("***### pop mode, skipping saving for now");
     660    saveDocStorage("popDeleteConfirmed()");
     661       
     662}
     663
     664
     665function popDelete()
     666{
     667    $('#delete-info-popup').dialog('open');
     668
     669    return false;  // no need to process the event any further
     670}
     671
     672function popSave()
     673{
     674    var docOID = gs.cgiParams.d;
     675    var popTracks = getPopTracks(docOID);
     676
     677    var text_edit_str = infoEditor.getSession().getValue();
     678    console.log("**** popSave() infoEditor.getSession value = " + text_edit_str);
     679
     680    var popActiveLayers = getActiveOverlayLayers();
     681    //var json_edit = eval("("+json_edit_str+")");
     682
     683    var key = popActiveLayers[0];
     684    //console.log("**** Saving under key[" + key + "]: " + JSON.stringify(val));
     685    console.log("**** Saving under key[" + key + "]: " + text_edit_str);
     686    popTracks[key] = text_edit_str;
     687
     688    /*
     689    for (var key in json_edit){
     690    if (json_edit.hasOwnProperty(key)) {
     691        //console.log("*** key = " + key);
     692        var val = json_edit[key];
     693        console.log("**** Saving under key[" + key + "]: " + JSON.stringify(val));
     694        popTracks[key] = val;       
     695    }
     696    }
     697    */
     698   
     699    //console.log("***### pop mode, skipping saving for now");
     700    saveDocStorage("popSave()");
     701   
     702}
     703
     704
     705function popEdit()
     706{
     707    var docOID = gs.cgiParams.d;
     708    var popTracks = getPopTracks(docOID);
     709
     710    var popActiveLayers = getActiveOverlayLayers("value");
     711
     712    //var edit_json = {};
     713    var edit_text = "";
     714 
     715    for (var i=0; i<popActiveLayers.length; i++) {
     716    var track_name = popActiveLayers[i];
     717    //edit_json[track_name] = popTracks[track_name];
     718    edit_text += popTracks[track_name];
     719    }
     720
     721    //infoEditor.setValue(JSON.stringify(edit_json,null,'\t'));
     722    infoEditor.setValue(edit_text);
     723    infoEditor.clearSelection();
     724
     725    $('#edit-info-popup').dialog('open');
     726
     727    return false;  // no need to process the event any further
     728}
     729
     730
     731
     732
Note: See TracChangeset for help on using the changeset viewer.