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...

Notes Windows 10 Virtualbox config, PHP Storm Japanese, custom PHP, Apache build, Postgresql

 cmd => Ctrl + Shift + Enter mklink "C:\Users\HauNT\Videos\host3" "C:\Windows\System32\drivers\etc\hosts" https://www.quora.com/How-to-create-a-router-in-php https://serverfault.com/questions/225155/virtualbox-how-to-set-up-networking-so-both-host-and-guest-can-access-internet 1 NAT + 1 host only config https://unix.stackexchange.com/questions/115464/how-to-properly-set-up-2-network-interfaces-in-centos-running-in-virtualbox DEVICE=eth0 TYPE=Ethernet #BOOTPROTO=dhcp BOOTPROTO=none #IPADDR=10.9.11.246 #PREFIX=24 #GATEWAY=10.9.11.1 #IPV4_FAILURE_FATAL=yes #HWADDR=08:00:27:CC:AC:AC ONBOOT=yes NAME="System eth0" [root@localhost www]# cat /etc/sysconfig/network-scripts/ifcfg-eth1 # Advanced Micro Devices, Inc. [AMD] 79c970 [PCnet32 LANCE] DEVICE=eth1 IPADDR=192.168.56.28 <= no eff => auto like DHCP #GATEWAY=192.168.56.1 #BOOTPROTO=dhcp BOOTPROTO=static <= no eff ONBOOT=yes HWADDR=08:00:27:b4:20:10 [root@localhost www]# ...

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...