Compare commits

..
11 Commits
6 changed files with 603 additions and 17 deletions

No files matched your search

+94
View File
@@ -0,0 +1,94 @@
function helpper() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Oct 26");
var date = new Date();
var year = Utilities.formatDate(date, "Atlantic/Canary", "yy");
var onetwo
var cell
var cellbefore
var datecell
var coursecell
var values = sheet.getRange(1, 1, 877, 1).getValues();
//Code
//====================
for (var i = values.length - 1; i >= 0; i--){
let cell = values[i][0];
var forcell = sheet.getRange(i, 1);
//Paste WORKING3
if (cell instanceof Date && cell >= year) {
if(cellbefore && cellbefore.getTime() === cell.getTime()){
onetwo = 1;
}
else{
onetwo = 2;
}
//console.log(onetwo);
cellbefore = cell;
var ziel = forcell.offset(2,1);
ziel.activate();
//Pause
SpreadsheetApp.flush();
//var weiter = pause();
//if (!weiter) return;
//------
if(onetwo == 1){
datecell = ziel.offset(-1,-1).getA1Notation();
ziel.setValue('=WORKING1('+ datecell +';"surf")');
}
else{
datecell = ziel.offset(-1,-1).getA1Notation();
coursecell = ziel.offset(0,8).getA1Notation();
ziel.setValue('=WORKING3('+ datecell +';"surf";'+ coursecell +')');
}
}
//Paste Second
if(cell == 9){
var ziel = forcell.offset(1,0);
ziel.offset(-10,0).activate();
SpreadsheetApp.flush();
ziel.activate();
//Pause
SpreadsheetApp.flush();
//var weiter = pause();
//if (!weiter) return;
//------
sheet.insertRowsBefore(i + 1, 2);
ss.getSheetByName("template").getRange('A20:U21').copyTo(ziel, SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
datecell = ziel.offset(0,0).getA1Notation();
coursecell = ziel.offset(11,9).getA1Notation();
ziel.offset(1,1).setValue('=WORKING2('+ datecell +';"surf";'+ coursecell +')');
}
}
}
function pause(){
var ui = SpreadsheetApp.getUi();
var antwort = ui.alert(ui.ButtonSet.OK_CANCEL);
return antwort == ui.Button.OK;
}
+17 -17
View File
@@ -1,18 +1,18 @@
=IF(weight<>"";IFNA(IFS(
And(age>14;gender="m";weight>=40;weight<=60);"XS/S";
And(age>14;gender="m";weight>=61;weight<=70);"S/M";
And(age>14;gender="m";weight>=71;weight<=80);"M/L";
And(age>14;gender="m";weight>=81;weight<=89);"L/XL";
And(age>14;gender="m";weight>=90;weight<=95);"XL/XXL";
And(age>14;gender="m";weight>=96);"XXL/3XL";
And(age>14;gender="f";weight>=40;weight<=53);"8/10";
And(age>14;gender="f";weight>=54;weight<=60);"10/12";
And(age>14;gender="f";weight>=61;weight<=70);"12/14";
And(age>14;gender="f";weight>=71;weight<=80);"14/16";
And(age>14;gender="f";weight>=81;weight<=90);"16/XXL";
And(age>14;gender="f";weight>=91);"XXL/3XL";
And(age<=14;weight>=18;weight<=22);"6/8";
And(age<=14;weight>=23;weight<=34);"8/10";
And(age<=14;weight>=35;weight<=40);"10/12";
And(age<=14;weight>=41;weight<=55);"12/14"
);"--");"")
And(age<>"";age<=14;weight>=18;weight<=22);"6/8";
And(age<>"";age<=14;weight>=23;weight<=34);"8/10";
And(age<>"";age<=14;weight>=35;weight<=40);"10/12";
And(age<>"";age<=14;weight>=41;weight<=55);"12/14";
And(gender="m";weight>=40;weight<=60);"XS/S";
And(gender="m";weight>=61;weight<=70);"S/M";
And(gender="m";weight>=71;weight<=80);"M/L";
And(gender="m";weight>=81;weight<=89);"L/XL";
And(gender="m";weight>=90;weight<=95);"XL/XXL";
And(gender="m";weight>=96);"XXL/3XL";
And(gender="f";weight>=40;weight<=53);"8/10";
And(gender="f";weight>=54;weight<=60);"10/12";
And(gender="f";weight>=61;weight<=70);"12/14";
And(gender="f";weight>=71;weight<=80);"14/16";
And(gender="f";weight>=81;weight<=90);"16/XXL";
And(gender="f";weight>=91);"XXL/3XL"
);"--");"")
+9
View File
@@ -0,0 +1,9 @@
=LET(work;Filter(
IMPORTRANGE("https://docs.google.com/spreadsheets/d/1MPCIXoBqguYu9oRnwQ2tfYMqY_vY4tS5dJzNF7by3aY/edit?usp=sharing";"'"&Cell("Sheet";date)&"'!B1:S1");
INDEX(IMPORTRANGE("https://docs.google.com/spreadsheets/d/1MPCIXoBqguYu9oRnwQ2tfYMqY_vY4tS5dJzNF7by3aY/edit?usp=sharing";"'"&Cell("Sheet";date)&"'!B2:S40");Day(date))
=job);
IfNA(
CHOOSECOLS(work; 1);
"No workers planned today"
)
)
+16
View File
@@ -0,0 +1,16 @@
=LET(work;Filter(
IMPORTRANGE("https://docs.google.com/spreadsheets/d/1MPCIXoBqguYu9oRnwQ2tfYMqY_vY4tS5dJzNF7by3aY/edit?usp=sharing";"'"&Cell("Sheet";date)&"'!B1:S1");
INDEX(IMPORTRANGE("https://docs.google.com/spreadsheets/d/1MPCIXoBqguYu9oRnwQ2tfYMqY_vY4tS5dJzNF7by3aY/edit?usp=sharing";"'"&Cell("Sheet";date)&"'!B2:S40");Day(date))
=job);
If(third="--";
SWITCH(true;
COUNTA(work) = 1; "Not enough workers planned";
COUNTA(work) >= 2; TEXTJOIN(", ";true;CHOOSECOLS(work;SEQUENCE(1;COUNTA(work)-1;2)));
);
SWITCH(true;
COUNTA(work) = 1; "Not enough workers planned";
COUNTA(work) = 2; "Not enough workers planned";
COUNTA(work) >= 3; TEXTJOIN(", ";true;CHOOSECOLS(work;2));
)
)
)
+12
View File
@@ -0,0 +1,12 @@
=LET(work;Filter(
IMPORTRANGE("https://docs.google.com/spreadsheets/d/1MPCIXoBqguYu9oRnwQ2tfYMqY_vY4tS5dJzNF7by3aY/edit?usp=sharing";"'"&Cell("Sheet";date)&"'!B1:S1");
INDEX(IMPORTRANGE("https://docs.google.com/spreadsheets/d/1MPCIXoBqguYu9oRnwQ2tfYMqY_vY4tS5dJzNF7by3aY/edit?usp=sharing";"'"&Cell("Sheet";date)&"'!B2:S40");Day(date))
=job);
If(third="--";"Course not possible";
SWITCH(true;
COUNTA(work) = 1; "Not enough workers planned";
COUNTA(work) = 2; TEXTJOIN(", ";true;CHOOSECOLS(work;2));
COUNTA(work) >=3; TEXTJOIN(", ";true;CHOOSECOLS(work;SEQUENCE(1;COUNTA(work)-2;3)));
)
)
)
+455
View File
@@ -0,0 +1,455 @@
<head>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/flatpickr/dist/flatpickr.min.css">
<script src="https://cdn.jsdelivr.net/npm/flatpickr"></script>
</head>
<div class="container strongly-spaced-row" data-section-type="contact" data-components="custom-select" data-cc-animate>
<div id="template" class="reading-width">
{% form 'contact' %}
{% if form.posted_successfully? %}
<p><strong>{{ 'contact.form.post_success' | t }}</strong></p>
<!-- Meta Pixel Code for Lead -->
<script>
if (window.fbq) {
fbq('track', 'Lead');
}
</script>
{% else %}
{% if section.settings.contact_title != blank or section.settings.contact_text != blank %}
<div class="lightish-spaced-row">
{% if section.settings.contact_title != blank %}
<h2>{{ section.settings.contact_title | escape }}</h2>
{% endif %}
{% if section.settings.contact_text != blank %}
<div class="rte">{{ section.settings.contact_text }}</div>
{% endif %}
</div>
{% endif %}
{% if form.errors %}
<ul class="errors">
{% for field in form.errors %}
<li>{{ field | replace: 'body','Message' | capitalize }} - {{ form.errors.messages[field] }}</li>
{% endfor %}
</ul>
{% endif %}
{%- if request.design_mode -%}
{%- liquid
assign email_exists = false
for block in section.blocks
if block.type == 'email_input'
assign email_exists = true
endif
endfor
-%}
{%- if email_exists == false -%}
<div class="errors">You must include the 'Email input' block for the form to work correctly.</div>
{%- endif -%}
{%- endif -%}
<div class="flexible-layout flexible-layout--form">
{% for block in section.blocks %}
<div class="column column--{% if block.settings.half_width %}half{% else %}full{% endif %}">
{% case block.type %}
{% when 'name_input' %}
<label for="contact_name">{{ 'contact.form.name' | t }}</label>
<input
type="text"
autocomplete="name"
required
id="contact_name"
name="contact[name]"
value="{% if form.name %}{{ form.name }}{% elsif customer %}{{ customer.name }}{% endif %}" />
{% when 'email_input' %}
<label for="contact_email">{{ 'contact.form.email' | t }}</label>
<input
type="email"
required
id="contact_email"
class="email"
name="contact[email]"
autocomplete="email"
spellcheck="false"
autocapitalize="off"
pattern="[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}$"
title="Please enter a valid email address."
value="{% if form.email %}{{ form.email }}{% elsif customer %}{{ customer.email }}{% endif %}" />
{% when 'message_input' %}
<label for="message">{{ 'contact.form.message' | t }}</label>
<textarea id="message" name="contact[body]">{{ form.body }}</textarea>
{% when 'phone_input' %}
<label for="contact_phone">{{ 'contact.form.phone' | t }}</label>
<input
type="tel"
id="contact_phone"
autocomplete="tel"
name="contact[{{ 'contact.form.phone' | t }}]"
{% if block.settings.required %}required{% endif %}
value="{% if form.phone %}{{ form.phone }}{% elsif customer %}{{ customer.phone }}{% endif %}" />
{% when 'custom_input' %}
{% if block.settings.title != blank %}
{%- assign title_handle = block.settings.title | handle -%}
<label for="contact_{{ title_handle }}">{{ block.settings.title | escape }}</label>
{% if block.settings.type == 'textarea' %}
<textarea
id="contact_{{ title_handle }}"
name="contact[{{ title_handle }}]"
{% if block.settings.required %}required{% endif %}>{{- form[title_handle] -}}</textarea>
{% else %}
<input
type="{{ block.settings.type }}"
id="contact_{{ title_handle }}"
name="contact[{{ title_handle }}]"
value="{{ form[title_handle] }}"
{% if block.settings.required %}required{% endif %}/>
{% endif %}
{% endif %}
{% when 'calendar_input' %}
{% if block.settings.title != blank %}
{%- assign title_handle = block.settings.title | handle -%}
<label for="contact_{{ title_handle }}">{{ block.settings.title | escape }}</label>
<input
type="text"
id="ContactFormDates"
name="contact[{{ title_handle }}]"
value="{{ form[title_handle] }}"
{% if block.settings.required %}required{% endif %}
/>
{% endif %}
{% when 'custom_dropdown' %}
{% if block.settings.title != blank %}
{%- liquid
assign custom_options = block.settings.multiple_options | newline_to_br | strip_newlines | split: '<br />'
assign input_id = block.settings.title | handle | prepend: 'contact_'
assign input_name = block.settings.title | handle | prepend: 'contact[' | append: ']'
-%}
<div class="option-selector" data-selector-type="dropdown">
{% render 'custom-select',
id: input_id,
label: block.settings.title,
option_values: custom_options,
selected_value: custom_options.first,
include_native: true,
native_name: input_name
%}
</div>
{% endif %}
{% when 'text' %}
<div class="rte">{{ block.settings.text }}</div>
{% endcase %}
</div>
{% endfor %}
</div>
<!-- PRIVACY CHECKBOX HIER -->
<div class="field field--checkbox lightly-spaced-row">
<label class="field__label" for="privacy">
<input
class="field__input"
type="checkbox"
id="privacy"
name="contact[privacy]"
required
value="yes"
>
* I agree to the <a href="/pages/privacy-policy" target="_blank">Privacy Policy</a>
</label>
</div>
<div class="lightly-spaced-row">
<button type="submit">{{ 'contact.form.send' | t }}</button>
</div>
{% endif %}
{% endform %}
</div>
</div>
<script>
document.addEventListener('DOMContentLoaded', function() {
const form = document.querySelector('form[action="/contact"]');
if (form) {
form.addEventListener('submit', function(event) {
const emailInput = form.querySelector('input[name="contact[email]"]');
if (emailInput) {
const email = emailInput.value.trim();
const emailPattern = /^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}$/i;
if (!emailPattern.test(email)) {
alert('Please enter a valid email address.');
emailInput.focus();
event.preventDefault();
}
}
});
}
});
</script>
<script>
document.addEventListener("DOMContentLoaded", function () {
flatpickr("#ContactFormDates", {
mode: "multiple",
dateFormat: "d-m-y",
altInput: true,
altFormat: "d.m.Y",
minDate: "today",
"locale": {
"firstDayOfWeek": 1 // start week on Monday
},
allowInput:true,
onOpen: function(selectedDates, dateStr, instance) {
$(instance.altInput).prop('readonly', true);
},
onClose: function(selectedDates, dateStr, instance) {
$(instance.altInput).prop('readonly', false);
$(instance.altInput).blur();
}
});
});
</script>
{% schema %}
{
"name": "Contact form",
"class": "section-contact-form",
"settings": [
{
"type": "text",
"id": "contact_title",
"label": "Heading",
"default": "Contact us"
},
{
"type": "richtext",
"id": "contact_text",
"label": "Introduction"
}
],
"blocks": [
{
"type": "name_input",
"name": "Name input",
"limit": 1,
"settings": [
{
"type": "paragraph",
"content": "The label can be changed in the translation editor."
},
{
"type": "checkbox",
"id": "half_width",
"label": "Half width",
"default": false
}
]
},
{
"type": "email_input",
"name": "Email input",
"limit": 1,
"settings": [
{
"type": "paragraph",
"content": "REQUIRED - Contact form will not work if this block is removed."
},
{
"type": "paragraph",
"content": "The label can be changed in the translation editor."
},
{
"type": "checkbox",
"id": "half_width",
"label": "Half width",
"default": false
}
]
},
{
"type": "message_input",
"name": "Message input",
"limit": 1,
"settings": [
{
"type": "paragraph",
"content": "The label can be changed in the translation editor."
},
{
"type": "checkbox",
"id": "half_width",
"label": "Half width",
"default": false
}
]
},
{
"type": "phone_input",
"name": "Phone input",
"limit": 1,
"settings": [
{
"type": "checkbox",
"id": "required",
"label": "Required",
"default": false
},
{
"type": "checkbox",
"id": "half_width",
"label": "Half width",
"default": false
}
]
},
{
"type": "calendar_input",
"name": "Calendar",
"limit": 1,
"settings": [
{
"type": "text",
"id": "title",
"label": "Label",
"default": "Calendar"
},
{
"type": "checkbox",
"id": "required",
"label": "Required",
"default": true
},
{
"type": "checkbox",
"id": "half_width",
"label": "Half width",
"default": false
}
]
},
{
"type": "custom_input",
"name": "Custom input",
"settings": [
{
"type": "paragraph",
"content": "Custom inputs require a label, and that label may only be used once in the form."
},
{
"type": "text",
"id": "title",
"label": "Label",
"default": "Custom input"
},
{
"type": "select",
"id": "type",
"label": "Type",
"default": "text",
"options": [
{
"label": "Text",
"value": "text"
},
{
"label": "Number",
"value": "number"
},
{
"label": "Email",
"value": "email"
},
{
"label": "Text area",
"value": "textarea"
},
]
},
{
"type": "checkbox",
"id": "required",
"label": "Required",
"default": false
},
{
"type": "checkbox",
"id": "half_width",
"label": "Half width",
"default": false
}
]
},
{
"type": "custom_dropdown",
"name": "Custom dropdown",
"settings": [
{
"type": "paragraph",
"content": "Custom dropdowns require a label, and that label may only be used once in the form."
},
{
"type": "text",
"id": "title",
"label": "Label",
"default": "Custom dropdown"
},
{
"type": "textarea",
"id": "multiple_options",
"label": "Options",
"default": "Option 1\nOption 2\nOption 3",
"info": "One option on each line"
},
{
"type": "checkbox",
"id": "half_width",
"label": "Half width",
"default": false
}
]
},
{
"type": "text",
"name": "Text",
"settings": [
{
"type": "richtext",
"id": "text",
"label": "Text",
"default": "<p>Text content</p>"
}
]
}
],
"presets": [
{
"name": "Contact form",
"blocks": [
{
"type": "name_input",
"settings": {
"half_width": true
}
},
{
"type": "email_input",
"settings": {
"half_width": true
}
},
{
"type": "message_input"
}
]
}
]
}
{% endschema %}