Skip to main content

Handsontable 2

lookup value:
 
 lookupValue: function (handsontable, columns, srcColumnName, row, value) {
        var source = [];
        var real = [];
        for (var i = 0; i < columns.length; i++) {
            var col = columns[i];
            if (col.data == srcColumnName) {
                source = col.source;
                real = col.real;
            }
        }
        if (real && real.length == source.length && real.length > 0) {
            var idx = source.indexOf(value);
            return real[idx];
        }
    },  
    NewLookupValue: function (dropDownReal, value) {
        var real = dropDownReal;
        var selected_code;
        $.map(real, function(val, index) {
            if(val == value) {
                selected_code = index;
                return false;
            }
        });
        return selected_code;
    },

plugin app.js

var App = App || {};
App.Util = {
...
}

Spreadsheet js defaultMenuContextItem
'duplicate': {
      'name':'duplicate',
callback: function (key, selection) {
var index = selection.start.row;
var source = spreadsheet.core.getSourceDataAtRow(index);
this.alter("insert_row", index);
                var source = spreadsheet.core.getSourceDataAtRow(index);
                var tmp = spreadsheet.core.getDataAtRow(index);
                var next_row = spreadsheet.core.getDataAtRow(index+1);
                console.log(next_row);
                var data = [];
                for(var col in tmp) {
                    if (col == parseInt(col)){
                        data.push([index,parseInt(col),null]);
                    }
                }

                spreadsheet.core.setDataAtCell(data);

var _params = JSON.stringify({
    table: spreadsheet.core.getSettings().spreadsheetName,
               position: source.position,
               action_name: getCurrentActionName()
           });
    var successHandler = function(response) {
                    if(response.table !== undefined){
                        spreadsheet.core.setDataAtRowProp (index,'position',response.position);
                        spreadsheet.core.setDataAtRowProp (index,response.key_name,response.id);
                        spreadsheet.core.setDataAtRowProp (index,response.update_time_name,response.updated_date);
                    }else{
                        data = response.data;
                        spreadsheet.core.loadData(data);
                    }
    }
    App.Util.request("duplicate-row", _params, successHandler, function () {});
       }

},
....

full menu:
(function ($, window, document, undefined) {
var spreadsheet;

var defaultSettings = {
columnSorting: true,
outsideClickDeselects: false,
copyRowsLimit: Number.MAX_VALUE,
rowHeaders: true,
manualColumnResize: true,
manualRowResize: true,
stretchH: 'all',
colorPalette: false,
autosave: 0,
spreadsheetName: 'project-management-index',//spreadsheetNameValue,
cellColors: (spreadsheetCellColorValue.length > 0) ? JSON.parse(spreadsheetCellColorValue) : {},
filterData: {},
dataConnection: {}
};

var defaultContextMenuItems = {
'row_above': {
'name':'行挿入',
callback: function (key, selection) {
var index = selection.start.row;
var source = spreadsheet.core.getSourceDataAtRow(index);
this.alter("insert_row", index);
                var source = spreadsheet.core.getSourceDataAtRow(index);
                var tmp = spreadsheet.core.getDataAtRow(index);
                var data = [];
                for(var col in tmp) {
                    if (col == parseInt(col)){
                        data.push([index,parseInt(col),null]);
                    }
                }

                spreadsheet.core.setDataAtCell(data);

var _params = JSON.stringify({
    table: spreadsheet.core.getSettings().spreadsheetName,
               position: source.position,
               action_name: getCurrentActionName()
           });

    var successHandler = function(response) {
                    if(response.table !== undefined){
                        spreadsheet.core.setDataAtRowProp (index,'position',response.position);
                        spreadsheet.core.setDataAtRowProp (index,response.key_name,response.id);
                        spreadsheet.core.setDataAtRowProp (index,response.update_time_name,response.updated_date);
                    }else{
                        data = response.data;
                        spreadsheet.core.loadData(data);
                    }
    }
    App.Util.request("create-spreadsheet-row", _params, successHandler, function () {});
       }
},
//'row_below': {
// 'name':'1行を下に挿入',
// callback: function (key, selection) {
// var index = selection.start.row;
//
// var source = spreadsheet.core.getSourceDataAtRow(index);
// var pos= parseInt(source.position) + 1;
//
// this.alter("insert_row", index+1);
//
// var _params = JSON.stringify({
    // table: spreadsheet.core.getSettings().spreadsheetName,
    //           position: pos,
    //           action_name: getCurrentActionName()
    //       });
//
    // var successHandler = function(response) {
         //           if(response.table !== undefined){
         //               spreadsheet.core.setDataAtRowProp (index+1,'position',response.position);
         //               spreadsheet.core.setDataAtRowProp (index+1,response.key_name,response.id);
         //               spreadsheet.core.setDataAtRowProp (index+1,response.update_time_name,response.updated_date);
         //           }else{
         //               data = response.data;
         //               spreadsheet.core.loadData(data);
         //           }
    // }
    // App.Util.request("create-spreadsheet-row", _params, successHandler, function () {});
    //   }
//},
//'undo': {},
//'redo': {},
'duplicate': {
      'name':'行複製',
callback: function (key, selection) {
var index = selection.start.row;
var source = spreadsheet.core.getSourceDataAtRow(index);
this.alter("insert_row", index);
                var source = spreadsheet.core.getSourceDataAtRow(index);
                var tmp = spreadsheet.core.getDataAtRow(index);
                var next_row = spreadsheet.core.getDataAtRow(index+1);
                console.log(next_row);
                var data = [];
                for(var col in tmp) {
                    if (col == parseInt(col)){
                        data.push([index,parseInt(col),next_row[col]]);
                    }
                }

                spreadsheet.core.setDataAtCell(data);

var _params = JSON.stringify({
    table: spreadsheet.core.getSettings().spreadsheetName,
               position: source.position,
               action_name: getCurrentActionName()
           });

    var successHandler = function(response) {
                    if(response.table !== undefined){
                        spreadsheet.core.setDataAtRowProp (index,'position',response.position);
                        spreadsheet.core.setDataAtRowProp (index,response.key_name,response.id);
                        spreadsheet.core.setDataAtRowProp (index,response.update_time_name,response.updated_date);
                    }else{
                        data = response.data;
                        spreadsheet.core.loadData(data);
                    }
    }
    App.Util.request("duplicate-row", _params, successHandler, function () {});
       }

},
'remove_row': {
'name': '行削除'
},
};

Comments

  1. This article is both interesting and informative for anyone interested in blogging. It is greatly appreciated. For more information, please read my profile about Mouse Button & Scroll Wheel Test. Please click here for more information. You can test your mouse scroll speed test here. Read more here.

    ReplyDelete

Post a Comment

Popular posts from this blog

AWS Elasticache Memcached connection

https://docs.aws.amazon.com/AmazonElastiCache/latest/mem-ug/accessing-elasticache.html#access-from-outside-aws http://hourlyapps.blogspot.com/2010/06/examples-of-memcached-commands.html Access memcached https://docs.aws.amazon.com/AmazonElastiCache/latest/mem-ug/GettingStarted.AuthorizeAccess.html Zip include hidden file https://stackoverflow.com/questions/12493206/zip-including-hidden-files phpmemcachedadmin ~ phpMyAdmin or phpPgAdmin ... telnet mycachecluster.eaogs8.0001.usw2.cache.amazonaws.com 11211 stats items stats cachedump 27 100 https://docs.aws.amazon.com/AmazonElastiCache/latest/mem-ug/VPCs.EC.html https://lzone.de/cheat-sheet/memcached VPC ID Security Group ID (sg-...) Cluster: The identifier for the cluster memcached1 Creation Time: The time (UTC) when the cluster was created January 9, 2019 at 11:47:16 AM UTC+7 Configuration Endpoint: The configuration endpoint of the cluster memcached1.ahgofe.cfg.usw1.cache.amazonaws.com:11211 St...

Simulate Fail2ban on Apache request spam with mod_evasive limitipconn ...

https://en.wikipedia.org/wiki/Manchu_alphabet https://en.wikipedia.org/wiki/Sweet_potato https://en.wikipedia.org/wiki/New_World_crops https://www.mdpi.com/journal/energies http://www.cired.net/publications/cired2007/pdfs/CIRED2007_0342_paper.pdf https://www.davidpashley.com/articles/writing-robust-shell-scripts/ trap command https://en.wikipedia.org/wiki/Race_condition https://unix.stackexchange.com/questions/172541/why-does-exit-1-not-exit-the-script exit 1 not work it seem { } brace bound fixed it. cat access_log | cut -d ' ' -f 1 > ip1 sort -n -t. -k1,1 -k2,2 -k3,3 -k4,4 | uniq -c | sort -n -r -s https://unix.stackexchange.com/questions/246104/unix-count-unique-ip-addresses-sort-them-by-most-frequent-and-also-sort-them https://stackoverflow.com/questions/20164696/how-to-block-spam-and-spam-bots-for-good-with-htaccess  Code: ------------------------------------------------------------------- #Block Spam Bots and Spam on your website #Block proxies...

Rocket.Chat DB schema

_raix_push_notifications avatars.chunks avatars.files instances meteor_accounts_loginServiceConfiguration meteor_oauth_pendingCredentials meteor_oauth_pendingRequestTokens migrations rocketchat__trash rocketchat_cron_history rocketchat_custom_emoji rocketchat_custom_sounds rocketchat_import rocketchat_integration_history rocketchat_integrations rocketchat_livechat_custom_field rocketchat_livechat_department rocketchat_livechat_department_agents rocketchat_livechat_external_message rocketchat_livechat_inquiry rocketchat_livechat_office_hour rocketchat_livechat_page_visited rocketchat_livechat_trigger rocketchat_message rocketchat_oauth_apps rocketchat_oembed_cache rocketchat_permissions rocketchat_raw_imports rocketchat_reports rocketchat_roles rocketchat_room rocketchat_settings rocketchat_smarsh_history rocketchat_statistics rocketchat_subscription rocketchat_uploads system.indexes users usersSessions https://rocket.chat/docs/developer-guides/sc...