Skip to content

Commit cf2214c

Browse files
committed
duplicate sheet
1 parent cb896f2 commit cf2214c

File tree

7 files changed

+167
-10
lines changed

7 files changed

+167
-10
lines changed

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,9 @@ Use the available blocks to automatically interact with your spreadsheet.
6767
* (Thomas Pohl) Added "add Sheet"
6868
* (Thomas Pohl) Added "remove Sheet"
6969

70+
### 0.0.4
71+
72+
* (Thomas Pohl) Added "duplicate Sheet"
7073
<!--
7174
Placeholder for the next version (at the beginning of the line):
7275
### **WORK IN PROGRESS**

admin/blockly.js

Lines changed: 69 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,15 @@ Blockly.Translate =
2424
Blockly.Words["google-spreadsheet"] = { en: "Google Spreadsheet", de: "Google Tabelle" };
2525
Blockly.Words["google-spreadsheet_instance"] = { en: "instance", de: "Instanz" };
2626
Blockly.Words["google-spreadsheet_append"] = { en: "append to Google Spreadsheet", de: "An Google Tabelle anhängen" };
27-
Blockly.Words["google-spreadsheet_createSheet"] = { en: "create a new sheet in Google Spreadsheet", de: "Neues sheet" };
28-
Blockly.Words["google-spreadsheet_deleteSheet"] = { en: "delete a sheet in Google Spreadsheet", de: "Sheet löschen" };
27+
Blockly.Words["google-spreadsheet_createSheet"] = { en: "create a new sheet in Google Spreadsheet", de: "Neues Blatt" };
28+
Blockly.Words["google-spreadsheet_deleteSheet"] = { en: "delete a sheet in Google Spreadsheet", de: "Blatt löschen" };
29+
Blockly.Words["google-spreadsheet_duplicateSheet"] = { en: "duplicate a sheet in Google Spreadsheet", de: "Blatt duplizieren" };
2930
Blockly.Words["google-spreadsheet_data"] = { en: "data", de: "Daten" };
3031
Blockly.Words["google-spreadsheet_deleteRows"] = { en: "delete rows from Google Spreadsheet", de: "Zeilen aus Google Tabelle löschen" };
3132
Blockly.Words["google-spreadsheet_startRow"] = { en: "from row", de: "ab Zeile" };
3233
Blockly.Words["google-spreadsheet_endRow"] = { en: "to row", de: "bis Zeile" };
33-
Blockly.Words["google-spreadsheet_sheetName"] = { en: "sheet name", de: "Tab Name" };
34+
Blockly.Words["google-spreadsheet_sheetName"] = { en: "sheet name", de: "Blattname" };
35+
Blockly.Words["google-spreadsheet_newSheetName"] = { en: "sheet name", de: "Neuer Blasttname" };
3436

3537

3638
Blockly.Words["google-spreadsheet_anyInstance"] = { en: "all instances", de: "Alle Instanzen" };
@@ -98,6 +100,19 @@ Blockly.Sendto.blocks["google-spreadsheet.append"] =
98100
" </value>" +
99101
"</block>";
100102

103+
104+
Blockly.Sendto.blocks["google-spreadsheetduplicateSheet"] =
105+
'<block type="google-spreadsheet.duplicateSheet">' +
106+
' <value name="NAME">' +
107+
" </value>" +
108+
' <value name="INSTANCE">' +
109+
" </value>" +
110+
' <value name="SHEET_NAME">' +
111+
" </value>" +
112+
' <value name="NEW_SHEET_NAME">' +
113+
" </value>" +
114+
"</block>";
115+
101116
Blockly.Blocks["google-spreadsheet.append"] = {
102117
init: function () {
103118
var options = [[Blockly.Translate("google-spreadsheet_anyInstance"), ""]];
@@ -297,7 +312,57 @@ Blockly.Blocks["google-spreadsheet.deleteSheet"] = {
297312

298313
Blockly.JavaScript["google-spreadsheet.deleteSheet"] = function (block) {
299314
var dropdown_instance = block.getFieldValue("INSTANCE");
300-
var data = Blockly.JavaScript.valueToCode(block, "SHEETNAME", Blockly.JavaScript.ORDER_ATOMIC);
315+
var data = Blockly.JavaScript.valueToCode(block, "SHEET_NAME", Blockly.JavaScript.ORDER_ATOMIC);
301316

302317
return 'sendTo("google-spreadsheet' + dropdown_instance + '", "deleteSheet", ' + data + ");\n";
318+
};
319+
Blockly.Blocks["google-spreadsheet.duplicateSheet"] = {
320+
init: function () {
321+
var options = [[Blockly.Translate("google-spreadsheet_anyInstance"), ""]];
322+
if (typeof main !== "undefined" && main.instances) {
323+
for (var i = 0; i < main.instances.length; i++) {
324+
var m = main.instances[i].match(/^system.adapter.google-spreadsheet.(\d+)$/);
325+
if (m) {
326+
var n = parseInt(m[1], 10);
327+
options.push(["google-spreadsheet." + n, "." + n]);
328+
}
329+
}
330+
}
331+
332+
if (!options.length) {
333+
for (var u = 0; u <= 4; u++) {
334+
options.push(["google-spreadsheet." + u, "." + u]);
335+
}
336+
}
337+
338+
this.appendDummyInput("NAME")
339+
.appendField(Blockly.Translate("google-spreadsheet_duplicateSheet"));
340+
341+
this.appendDummyInput("INSTANCE")
342+
.appendField(Blockly.Translate("google-spreadsheet_instance"))
343+
.appendField(new Blockly.FieldDropdown(options), "INSTANCE");
344+
345+
this.appendValueInput("SHEET_NAME").appendField(Blockly.Translate("google-spreadsheet_sheetName"));
346+
this.appendValueInput("NEW_SHEET_NAME").appendField(Blockly.Translate("google-spreadsheet_newSheetName"));
347+
348+
/* if (input && input.connection) {
349+
input.connection._optional = true;
350+
}*/
351+
352+
this.setInputsInline(false);
353+
this.setPreviousStatement(true, null);
354+
this.setNextStatement(true, null);
355+
356+
this.setColour(Blockly.Sendto.HUE);
357+
this.setTooltip(Blockly.Translate("google-spreadsheet_tooltip"));
358+
this.setHelpUrl(Blockly.Translate("google-spreadsheet_help"));
359+
},
360+
};
361+
362+
Blockly.JavaScript["google-spreadsheet.duplicateSheet"] = function (block) {
363+
var dropdown_instance = block.getFieldValue("INSTANCE");
364+
var source = Blockly.JavaScript.valueToCode(block, "SHEET_NAME", Blockly.JavaScript.ORDER_ATOMIC);
365+
var target = Blockly.JavaScript.valueToCode(block, "NEW_SHEET_NAME", Blockly.JavaScript.ORDER_ATOMIC);
366+
367+
return 'sendTo("google-spreadsheet' + dropdown_instance + '", "duplicateSheet", {"source": '+source+', "target": '+target+'}' + ");\n";
303368
};

build/main.js

Lines changed: 36 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)