Skip to content

Commit

Permalink
chore: Format files
Browse files Browse the repository at this point in the history
  • Loading branch information
surajshetty3416 committed Feb 20, 2025
1 parent 470d6c2 commit b3ddeda
Show file tree
Hide file tree
Showing 14 changed files with 211 additions and 141 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,20 @@
// For license information, please see license.txt

frappe.ui.form.on("Builder Client Script", {
refresh(frm) {
frm.trigger("set_editor_options");
},
script_type(frm) {
frm.trigger("set_editor_options");
},
set_editor_options(frm) {
if (!frm.get_field("script").editor) {
return;
}
if (frm.doc.script_type == "CSS") {
frm.get_field("script").editor.session.setMode("ace/mode/css");
} else if (frm.doc.script_type == "JavaScript") {
frm.get_field("script").editor.session.setMode("ace/mode/javascript");
}
}
refresh(frm) {
frm.trigger("set_editor_options");
},
script_type(frm) {
frm.trigger("set_editor_options");
},
set_editor_options(frm) {
if (!frm.get_field("script").editor) {
return;
}
if (frm.doc.script_type == "CSS") {
frm.get_field("script").editor.session.setMode("ace/mode/css");
} else if (frm.doc.script_type == "JavaScript") {
frm.get_field("script").editor.session.setMode("ace/mode/javascript");
}
},
});
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@

import frappe


def execute():
"""Set Component ID"""
component_list = frappe.get_all("Builder Component")

for component in component_list:
component_doc = frappe.get_doc("Builder Component", component)
component_doc.component_id = component_doc.name
component_doc.db_set("component_id", component_doc.name, update_modified=False)
component_doc.db_set("component_id", component_doc.name, update_modified=False)
Original file line number Diff line number Diff line change
@@ -1,31 +1,40 @@
import frappe


def execute():
"""Attach Client Script to Builder Page"""
for builder_page in frappe.db.sql("""select name, client_script, style from `tabBuilder Page`""", as_dict=True):
for builder_page in frappe.db.sql(
"""select name, client_script, style from `tabBuilder Page`""", as_dict=True
):
if builder_page.client_script:
script_doc = get_or_create_builder_script("Builder Client Script", builder_page.client_script, "JavaScript")
script_doc = get_or_create_builder_script(
"Builder Client Script", builder_page.client_script, "JavaScript"
)
create_builder_page_client_script(builder_page.name, script_doc.name)
elif builder_page.style:
style_doc = get_or_create_builder_script("Builder Client Script", builder_page.style, "CSS")
create_builder_page_client_script(builder_page.name, style_doc.name)


def get_or_create_builder_script(doctype, script, script_type):
script_name = frappe.db.exists(doctype, {"script": script})
if script_name:
return frappe.get_doc(doctype, script_name)
else:
return frappe.get_doc({
"doctype": doctype,
"script_type": script_type,
"script": script
}).insert(ignore_permissions=True)
return frappe.get_doc({"doctype": doctype, "script_type": script_type, "script": script}).insert(
ignore_permissions=True
)


def create_builder_page_client_script(parent, builder_script, parentfield="client_scripts", parenttype="Builder Page"):
frappe.get_doc({
"doctype": "Builder Page Client Script",
"parent": parent,
"builder_script": builder_script,
"parentfield": parentfield,
"parenttype": parenttype
}).insert(ignore_permissions=True)
def create_builder_page_client_script(
parent, builder_script, parentfield="client_scripts", parenttype="Builder Page"
):
frappe.get_doc(
{
"doctype": "Builder Page Client Script",
"parent": parent,
"builder_script": builder_script,
"parentfield": parentfield,
"parenttype": parenttype,
}
).insert(ignore_permissions=True)
Original file line number Diff line number Diff line change
@@ -1,18 +1,31 @@

import frappe


def execute():
"""Properly extend blocks from component"""
web_pages = frappe.get_all("Builder Page", fields=["name", "blocks"])
for web_page in web_pages:
blocks = frappe.parse_json(web_page.blocks)
if blocks:
update_blocks(blocks)
frappe.db.set_value("Builder Page", web_page.name, "blocks", frappe.as_json(blocks, indent=None), update_modified=False)
frappe.db.set_value(
"Builder Page",
web_page.name,
"blocks",
frappe.as_json(blocks, indent=None),
update_modified=False,
)
draft_blocks = frappe.parse_json(web_page.draft_blocks)
if draft_blocks:
update_blocks(draft_blocks)
frappe.db.set_value("Builder Page", web_page.name, "draft_blocks", frappe.as_json(blocks, indent=None), update_modified=False)
frappe.db.set_value(
"Builder Page",
web_page.name,
"draft_blocks",
frappe.as_json(blocks, indent=None),
update_modified=False,
)


def update_blocks(blocks):
for block in blocks:
Expand All @@ -25,53 +38,62 @@ def update_blocks(blocks):
component = frappe.get_cached_doc("Builder Component", block.get("extendedFromComponent"))
component_block = frappe.parse_json(component.get("block"))
update_blocks([component_block])
frappe.db.set_value("Builder Component", component.name, "block", frappe.as_json(component_block, indent=None), update_modified=False)
extend_block_from_component(block, component.name, component_block.get("children"), component_block)
frappe.db.set_value(
"Builder Component",
component.name,
"block",
frappe.as_json(component_block, indent=None),
update_modified=False,
)
extend_block_from_component(
block, component.name, component_block.get("children"), component_block
)
except frappe.DoesNotExistError:
frappe.log_error(f"Builder Component {block.get('extendedFromComponent')} not found")

if "children" in block:
update_blocks(block["children"])


def extend_block_from_component(block, extended_from_component, children, component_block):
block["blockId"] = generate_id()
block["baseStyles"] = get_dict_difference(component_block["baseStyles"], block["baseStyles"])
block["mobileStyles"] = get_dict_difference(component_block["mobileStyles"], block["mobileStyles"])
block["tabletStyles"] = get_dict_difference(component_block["tabletStyles"], block["tabletStyles"])
block["attributes"] = get_dict_difference(component_block["attributes"], block["attributes"])
if block.get('innerHTML') and block.get('innerHTML') == component_block.get('innerHTML'):
del block['innerHTML']
if block.get('element') and block.get('element') == component_block.get('element'):
del block['element']
if block.get("innerHTML") and block.get("innerHTML") == component_block.get("innerHTML"):
del block["innerHTML"]
if block.get("element") and block.get("element") == component_block.get("element"):
del block["element"]

if "children" in block:
for index, child in enumerate(block["children"]):
child["isChildOfComponent"] = extended_from_component
if children and index < len(children):
if component_child := children[index]:
child["referenceBlockId"] = component_child["blockId"]
extend_block_from_component(child, extended_from_component, component_child["children"], component_child)
extend_block_from_component(
child, extended_from_component, component_child["children"], component_child
)


def generate_id():
return frappe.generate_hash("", 10)


def get_dict_difference(dict_1, dict_2):
dict_1 = convert_dict_keys_to_camel_case(dict_1)
dict_2 = convert_dict_keys_to_camel_case(dict_2)
return {key: dict_2[key] for key in dict_2 if key not in dict_1 or dict_1[key] != dict_2[key]}


def convert_dict_keys_to_camel_case(dict_):
sorted_keys = sorted(dict_.keys(), key=lambda x: x.islower())
sorted_dict = {key: dict_[key] for key in sorted_keys}
return {
kebab_to_camel_case(key): value
for key, value in sorted_dict.items()
}
return {kebab_to_camel_case(key): value for key, value in sorted_dict.items()}


def kebab_to_camel_case(string):
# font-size -> fontSize
# height -> height
return "".join(
word.capitalize() if index > 0 else word
for index, word in enumerate(string.split("-"))
)
return "".join(word.capitalize() if index > 0 else word for index, word in enumerate(string.split("-")))
Original file line number Diff line number Diff line change
Expand Up @@ -8,42 +8,73 @@
url_start = "pages/"
replace_url_start = ""


def update_block_href(blocks):
for block in blocks:
if block.get("attributes") and block.get("attributes").get("href") and block.get("attributes").get("href").startswith(f'/{url_start}'):
if (
block.get("attributes")
and block.get("attributes").get("href")
and block.get("attributes").get("href").startswith(f"/{url_start}")
):
print(block.get("attributes").get("href"))
block["attributes"]["href"] = block["attributes"]["href"].replace(url_start, replace_url_start)

if "children" in block:
update_block_href(block["children"])


def execute():
pages = frappe.get_all("Builder Page", fields=["name", "route", "blocks", "draft_blocks", "page_data_script"])
pages = frappe.get_all(
"Builder Page", fields=["name", "route", "blocks", "draft_blocks", "page_data_script"]
)
for page in pages:
frappe.db.set_value("Builder Page", page.name, "route", page.route.replace(url_start, replace_url_start), update_modified=False)
frappe.db.set_value(
"Builder Page",
page.name,
"route",
page.route.replace(url_start, replace_url_start),
update_modified=False,
)
blocks = frappe.parse_json(page.get("blocks"))
if blocks:
update_block_href(blocks)
frappe.db.set_value("Builder Page", page.name, "blocks", frappe.as_json(blocks, indent=None), update_modified=False)
frappe.db.set_value(
"Builder Page",
page.name,
"blocks",
frappe.as_json(blocks, indent=None),
update_modified=False,
)

draft_blocks = frappe.parse_json(page.get("draft_blocks"))
if draft_blocks:
update_block_href(draft_blocks)
frappe.db.set_value("Builder Page", page.name, "draft_blocks", frappe.as_json(draft_blocks, indent=None), update_modified=False)
frappe.db.set_value(
"Builder Page",
page.name,
"draft_blocks",
frappe.as_json(draft_blocks, indent=None),
update_modified=False,
)

if page.page_data_script:
page_data_script = page.page_data_script.replace(url_start, replace_url_start)
frappe.db.set_value("Builder Page", page.name, "page_data_script", page_data_script, update_modified=False)

frappe.db.set_value(
"Builder Page", page.name, "page_data_script", page_data_script, update_modified=False
)

components = frappe.get_all("Builder Component", fields=["name", "block"])
for component in components:
component_block = frappe.parse_json(component.get("block"))
if component_block:
update_block_href([component_block])
frappe.db.set_value("Builder Component", component.name, "block", frappe.as_json(component_block, indent=None), update_modified=False)


frappe.db.set_value(
"Builder Component",
component.name,
"block",
frappe.as_json(component_block, indent=None),
update_modified=False,
)


# def extend_with_component(block, extended_from_component, component_children):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,4 @@


class BuilderPageClientScript(Document):
pass
pass
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,5 @@


def execute():
if frappe.db.exists("DocType", "Web Page Beta") and not frappe.db.exists(
"DocType", "Builder Page"
):
if frappe.db.exists("DocType", "Web Page Beta") and not frappe.db.exists("DocType", "Builder Page"):
rename_doc("DocType", "Web Page Beta", "Builder Page")
6 changes: 3 additions & 3 deletions builder/public/js/builder.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
frappe.search.utils.make_function_searchable(
() => window.open("/builder"),
"Open Builder",
);
() => window.open("/builder"),
"Open Builder",
);
2 changes: 1 addition & 1 deletion frontend/cypress.config.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
const { defineConfig } = require("cypress");

module.exports = defineConfig({
projectId: "jvejd7",
projectId: "jvejd7",
e2e: {
baseUrl: "http://builder.test:8000",
adminPassword: "admin",
Expand Down
2 changes: 1 addition & 1 deletion frontend/cypress/support/commands.js
Original file line number Diff line number Diff line change
Expand Up @@ -35,4 +35,4 @@ Cypress.Commands.add("login", (email, password) => {
method: "POST",
body: { usr: email, pwd: password },
});
});
});
4 changes: 2 additions & 2 deletions frontend/cypress/support/e2e.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
// ***********************************************************

// Import commands.js using ES2015 syntax:
import './commands'
import "./commands";

// Alternatively you can use CommonJS syntax:
// require('./commands')
// require('./commands')
2 changes: 1 addition & 1 deletion frontend/src/components/BlockHTML.vue
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ const html = computed(
() => `
<div class="absolute top-0 bottom-0 right-0 left-0"></div>
${props.block.getInnerHTML()}
`
`,
);
defineExpose({
Expand Down
2 changes: 1 addition & 1 deletion frontend/src/components/Controls/Autocomplete.vue
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
@change="query = $event.target.value"
:displayValue="getDisplayValue"
:placeholder="!modelValue ? placeholder : null"
class="focus:ring-outline-gray-3 h-full w-full rounded border-none bg-transparent pl-2 pr-5 text-base focus:ring-2" />
class="h-full w-full rounded border-none bg-transparent pl-2 pr-5 text-base focus:ring-2 focus:ring-outline-gray-3" />
</div>
<ComboboxOptions
class="absolute right-0 z-50 w-full overflow-y-auto rounded-lg border border-outline-gray-2 bg-surface-white p-0 shadow-2xl"
Expand Down
Loading

0 comments on commit b3ddeda

Please sign in to comment.