ASL Smartsign Trigger

ASL Test 131018

目前为 2015-03-05 提交的版本。查看 最新版本

// ==UserScript==
// @name        ASL Smartsign Trigger
// @namespace   http://m3.cip.gatech.edu/d/ogoldbart3/
// @description ASL Test 131018
// @version     24
// @include http://*/*
// @include https://*/*
// @include chrome://*/*
// @grant metadata
// @grant GM_xmlhttpRequest
// @require  http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js
// ==/UserScript==


$(document).ready(function() {
    $('body').append('<div id="lightbox" style="display:none;position:fixed;top:0;center:0;width:100%;height:100%;background:rgba(0,0,0,0.6);text-align:center;z-index:9999"></div>');
    //$('html').prepend('<div id="searchwindow" style="position:fixed;width:15%;height:10%;top:0;right:0;text-align:center;z-index:8888"> <table><tr><td><img src="http://m3.cip.gatech.edu/d/ogoldbart3/w/hosting/c/ssdlogo.JPG" style="vertical-align: top" width="49" height="47"></td><td><textarea id="triggertext" rows="2" cols="20">SMARTSignDictionary</textarea> <button id="triggerbutton">Trigger</button></td></td></table></div>');
    $('html').prepend('<div id="searchwindow" style="position:fixed;width:15%;height:10%;top:0;left:0;text-align:center;z-index:8888"> <table><tr><td></td><td><textarea id="triggertext" rows="1" cols="18">SMARTSignDictionary</textarea></td></td></table></div>');


    $("#triggertext").keyup(function(event){
        if(event.keyCode == 13){
            //$("#triggerbutton").click();
            var t = $("#triggertext").val();
            t = t.replace(/'s/g,"");
            t = t.replace(/'d/g,"");
            t = t.replace(/~~/g,"");
            t = t.replace(/~/g," ");
            t = t.replace(/_/g," ");
            t = t.replace(".", "");
            t = t.replace(",","");
            t = t.replace("!", "");
            t = t.replace("?","");
            t = t.replace(";","");
            t = t.replace(",", "");
            t = t.replace("_","");
            console.log( "testing" );
            console.log( $("#triggertext").val() );
            $("#searchwindow").hide();
            //$("#triggertext").hide();
            $("#triggertext").val( "" );
            showVideos( t );

            //$("#searchwindow").hide();
        }

    });



    $("#searchwindow").click(function() {
        // Gets click
        $("#triggertext").val( "" );

    });

    //showVideos(document.getElementById(\'triggertext\').value)
    console.log("ex3");


    $("body").dblclick(function() {
        // Gets clicked on word (or selected text if text is selected)
        var t = '';
        var s = window.getSelection();
        if (s) {
            if (s.isCollapsed) //nothing is selected. Only clicked.
            {

                s.modify('move', 'forward', 'character');
                s.modify('move', 'backward', 'word');
                s.modify('extend', 'forward', 'word');

                //s.modify('move', 'forward', 'character'); //clear selection
                console.log("happened " + s.toString() );

                t = s.toString();
                t = t.replace(/'s/g,"");
                t = t.replace(/'d/g,"");
                t = t.replace(/~~/g,"");
                t = t.replace(/~/g," ");
                t = t.replace(/_/g," ");
                t = t.replace(".", "");
                t = t.replace(",","");
                t = t.replace(";","");
                t = t.replace("!", "");
                t = t.replace("?","");
                t = t.replace(",", "");
                t = t.replace("_","");

                s.modify('move', 'forward', 'character'); //clear selection
            }
        }
        console.log('http://smartsign.imtc.gatech.edu/videos?keywords=' + t);

        //Ajax call to database, input = t, fails in function, and won't return data
        //however, data is visible, and succeeded in the GET command when viewed
        //from within browser's network tab of console

        if ( ( t !== "" )&&( t.length <= 100 ) ) {
            var idArray;

            t.replace("~", " ");

            showVideos( t );


        }
    });

    $("body").click(function() {
        // Gets clicked on word (or selected text if text is selected)
        var t = '';
        var s = window.getSelection();
        if (s) {
            if (s.isCollapsed) //nothing is selected. Only clicked.
            {

            } else {
                console.log("not happened " + s.toString() );

                t = s.toString();

                t = t.trim();
                t = t.replace(/'s/g,"");
                t = t.replace(/'d/g,"");
                t = t.replace(/~~/g,"");
                t = t.replace(/~/g," ");
                t = t.replace(/_/g," ");
                t = t.replace(".", "");
                t = t.replace(",","");
                t = t.replace(";","");
                t = t.replace("!", "");
                t = t.replace("?","");
                t = t.replace(",", "");
                t = t.replace("_","");

            }
        }
        console.log('http://smartsign.imtc.gatech.edu/videos?keywords=' + t);

        //Ajax call to database, input = t, fails in function, and won't return data
        //however, data is visible, and succeeded in the GET command when viewed
        //from within browser's network tab of console

        if ( ( t !== "" )&&( t.length <= 100 ) ) {
            var idArray;


            t.replace("~", " ");

            showVideos( t );

        }
    });



});

// get video display order keyword, if present - pattern is {#}
function getVideoOrder(vid) {
    var keywords = vid.keywords,
        orderKey, order = 999;

    orderKey = keywords.filter(function(element) {
        return element.match(/^\{\d+\}$/) !== null;
    });
    if (orderKey.length > 0) {
        order = parseInt(orderKey[0].slice(1,-1), 10);
    }
    return order;
}

function showVideos( t ) {

    console.log( "getting to here with " + t);
    $.ajax({
        method: "GET",
        url: "http://smartsign.imtc.gatech.edu/videos?keywords=" + t,
        dataType: 'jsonp',
        success: function(response) {
            console.log( response );
            console.log( response[0] );

            //var data = $.parseJSON(response.responseText);
            var data = response;

            // sort data array
            data.sort(function(a, b) {
                return getVideoOrder(a) - getVideoOrder(b);
            });

            var idArray = new Array(data.length);

            for ( var i = 0; i < data.length; i++ ) {
                idArray[i] = '<iframe width="640" height="360" align:center src="http://www.youtube.com/embed/' + data[i]['id'] + '?rel=0"> </iframe>';
                console.log( idArray[i] );
            }

            console.log( data.length);

            var htmlString = '<div style="width:100%;position=absolute;text-align:center"> <div style="position:relative;left:25%;width:640px;text-align:left;">';

            for(var k=0; k<idArray.length; k++) {
                htmlString += idArray[k];
            }

            $('#lightbox')
                .html(htmlString)
                .css({"line-height":($(window).height()*0)+"px", "overflow":"auto", "display":"block"})
                .fadeIn('fast')
                .on('click', function(){
                    $(this).fadeOut('fast');
                });
            //console.log( htmlString );
            //console.log("running fine");
            //console.log("T = " + t);



            $('#searchwindow').hide();
        }
    });
    // $.ajax({
    //     method: "GET",
    //     dataType: 'jsonp',
    //     url: "http://smartsign.imtc.gatech.edu/videos?keywords=" + t,
    //     onload: function(response) {
    //         var data = $.parseJSON(response.responseText);

    //         idArray= new Array(data.length);
    //         orderedIdArray= new Array(data.length);




    //         for ( var i = 0; i < data.length; i++ ) {
    //             idArray[i] = '<iframe width="420" height="345" align:right src="http://www.youtube.com/embed/' + data[i]['id'] + '?rel=0"> </iframe>';
    //             console.log( idArray[i] );

    //         }

    //         console.log( data.length);

    //         var htmlString = '<div style="width:100%;position=absolute;text-align:right"> <div style="position:relative;left:72%;width:420px;text-align:left;">';



    //         var last = idArray.length - 1;
    //         var currnumber;

    //         for(var j=0; j<idArray.length; j++) {
    //             if ( data[j]['keywords'] ) {
    //                 if ( data[j]['keywords'][ data[j]['keywords'].length - 1 ].charAt(0) == "{" ) {
    //                     //console.log( data[j]['keywords'][ data[j]['keywords'].length - 1 ] );

    //                     currnumber = data[j]['keywords'][ data[j]['keywords'].length - 1 ];
    //                     currnumber = currnumber.slice( 1, currnumber.length - 1 );
    //                     console.log( currnumber );
    //                     orderedIdArray[ currnumber ] = idArray[j];
    //                     //orderedId[ 
    //                 }
    //                 else { 
    //                     console.log( "not found" );
    //                     orderedIdArray[ last ] = idArray[j];
    //                     last--;
    //                 }
    //             } 
    //         }

    //         for(var k=0; k<idArray.length; k++) {

    //             htmlString += orderedIdArray[k];  
    //         }

    //         $('#lightbox')
    //         .html(htmlString + '</div></div>')
    //         .css({"line-height":($(window).height()*0)+"px", "overflow":"auto", "display":"block"})
    //         .fadeIn('fast')
    //         .live('click', function() {
    //             $(this).fadeOut('fast');
    //             $('#searchwindow').show();
    //         });
    //         //console.log( htmlString );
    //         console.log("running fine");
    //         console.log("T = " + t);



    //     	$('#searchwindow').hide();
    //     }

    // });
}