phrrngtn / flaming-octo-happiness

shared test & learn space for paul & andrew to do stuff with D3 web apps
0 stars 0 forks source link

Hello world extension in vanilla JS and with access to WebSQL #2

Open phrrngtn opened 9 years ago

phrrngtn commented 9 years ago

http://ahoj.io/chrome-extensions-and-web-sql-practical-experience

phrrngtn commented 9 years ago

some nice-looking code in https://rickosborne.org/html5-dbstorage-sudoku/ ... much better than any other JavaScript I have seen.

http://www.slideshare.net/casden/inbrowser-storage-and-me

phrrngtn commented 9 years ago

Found a site that generated one for me. Metaprogramming at its best!

http://extensionizr.com/!#{"modules":["hidden-mode","with-bg","with-persistent-bg","no-options","no-override"],"boolean_perms":[],"match_ptrns":[]}

Added it to whitelist. Packed it from Chrome. Dragged and dropped the packed extension onto the chrome://extensions page

HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome\ExtensionInstallWhitelist

Was unable to get the --load-extension command-line switch to work for me.

phrrngtn commented 9 years ago

Some JS snippets that demonstrate opening a database and running some transactions against it.

    /*
     * Constructor code begins here.
     */
    if(!window.openDatabase) {
        alert("Your browser does not appear to support the openDatabase call from the HTML5 Database Storage API.");
        return null;
    } // if not openDatabase
    db = openDatabase(dbName, DB_VERSION, DB_TITLE, DB_BYTES);
    if(!db) {
        alert("The browser rejected the request to open the database.");
        return null;
    } //
    /**
     * Return the values that are written (known) on the game board.
     * Rows and columns are converted to 0-base (0-8) from the 1-base (1-9) stored in the database.
     * 
     * @param {Function} doneCallback   Next step once the values have been fetched.
     */
    function getKnowns (doneCallback) {
        db.transaction(function(tx) {
            tx.executeSql("SELECT row, col, box, term FROM rs_cells;", [], function(tx, r) {
                var knowns = [];
                for(var i = 0; i < r.rows.length; i++) {
                    var rec = r.rows.item(i);
                    knowns.push({ row: rec.row - 1, col: rec.col - 1, box: rec.box, term: rec.term });
                } // for i
                doneCallback(knowns);
            }, sqlFailed);
        }); // transaction
    } // getKnowns
phrrngtn commented 2 years ago

This may be less relevant now that an embedded browser in an Excel CTP seems feasible.