diff --git a/crm/api/doc.py b/crm/api/doc.py index aeb76a6f..a5a7c51e 100644 --- a/crm/api/doc.py +++ b/crm/api/doc.py @@ -682,6 +682,9 @@ def get_fields(doctype: str, allow_all_fieldtypes: bool = False): "mandatory": field.reqd, "read_only": field.read_only, "hidden": field.hidden, + "depends_on": field.depends_on, + "mandatory_depends_on": field.mandatory_depends_on, + "read_only_depends_on": field.read_only_depends_on, }) return _fields diff --git a/crm/public/manifest/apple-icon-180.png b/crm/public/manifest/apple-icon-180.png index 1da7f510..e2d92d6e 100644 Binary files a/crm/public/manifest/apple-icon-180.png and b/crm/public/manifest/apple-icon-180.png differ diff --git a/crm/public/manifest/apple-splash-1125-2436.jpg b/crm/public/manifest/apple-splash-1125-2436.jpg index 2cfee64a..53890cce 100644 Binary files a/crm/public/manifest/apple-splash-1125-2436.jpg and b/crm/public/manifest/apple-splash-1125-2436.jpg differ diff --git a/crm/public/manifest/apple-splash-1136-640.jpg b/crm/public/manifest/apple-splash-1136-640.jpg index b176cbdf..6b67bc32 100644 Binary files a/crm/public/manifest/apple-splash-1136-640.jpg and b/crm/public/manifest/apple-splash-1136-640.jpg differ diff --git a/crm/public/manifest/apple-splash-1170-2532.jpg b/crm/public/manifest/apple-splash-1170-2532.jpg index 295fe420..5eda760e 100644 Binary files a/crm/public/manifest/apple-splash-1170-2532.jpg and b/crm/public/manifest/apple-splash-1170-2532.jpg differ diff --git a/crm/public/manifest/apple-splash-1179-2556.jpg b/crm/public/manifest/apple-splash-1179-2556.jpg index e4767ac8..c8f8075c 100644 Binary files a/crm/public/manifest/apple-splash-1179-2556.jpg and b/crm/public/manifest/apple-splash-1179-2556.jpg differ diff --git a/crm/public/manifest/apple-splash-1242-2208.jpg b/crm/public/manifest/apple-splash-1242-2208.jpg index cb3d07ca..baa7ad2b 100644 Binary files a/crm/public/manifest/apple-splash-1242-2208.jpg and b/crm/public/manifest/apple-splash-1242-2208.jpg differ diff --git a/crm/public/manifest/apple-splash-1242-2688.jpg b/crm/public/manifest/apple-splash-1242-2688.jpg index e6c939c3..c1f788cc 100644 Binary files a/crm/public/manifest/apple-splash-1242-2688.jpg and b/crm/public/manifest/apple-splash-1242-2688.jpg differ diff --git a/crm/public/manifest/apple-splash-1284-2778.jpg b/crm/public/manifest/apple-splash-1284-2778.jpg index f62dc334..609988c5 100644 Binary files a/crm/public/manifest/apple-splash-1284-2778.jpg and b/crm/public/manifest/apple-splash-1284-2778.jpg differ diff --git a/crm/public/manifest/apple-splash-1290-2796.jpg b/crm/public/manifest/apple-splash-1290-2796.jpg index b629c685..2775e3df 100644 Binary files a/crm/public/manifest/apple-splash-1290-2796.jpg and b/crm/public/manifest/apple-splash-1290-2796.jpg differ diff --git a/crm/public/manifest/apple-splash-1334-750.jpg b/crm/public/manifest/apple-splash-1334-750.jpg index 282517c9..f93d5e78 100644 Binary files a/crm/public/manifest/apple-splash-1334-750.jpg and b/crm/public/manifest/apple-splash-1334-750.jpg differ diff --git a/crm/public/manifest/apple-splash-1488-2266.jpg b/crm/public/manifest/apple-splash-1488-2266.jpg index 87884508..00b7808d 100644 Binary files a/crm/public/manifest/apple-splash-1488-2266.jpg and b/crm/public/manifest/apple-splash-1488-2266.jpg differ diff --git a/crm/public/manifest/apple-splash-1536-2048.jpg b/crm/public/manifest/apple-splash-1536-2048.jpg index 37bca0cb..c2b42fab 100644 Binary files a/crm/public/manifest/apple-splash-1536-2048.jpg and b/crm/public/manifest/apple-splash-1536-2048.jpg differ diff --git a/crm/public/manifest/apple-splash-1620-2160.jpg b/crm/public/manifest/apple-splash-1620-2160.jpg index cce6ab5d..30701874 100644 Binary files a/crm/public/manifest/apple-splash-1620-2160.jpg and b/crm/public/manifest/apple-splash-1620-2160.jpg differ diff --git a/crm/public/manifest/apple-splash-1640-2360.jpg b/crm/public/manifest/apple-splash-1640-2360.jpg index 84a6cca8..ba73c6bf 100644 Binary files a/crm/public/manifest/apple-splash-1640-2360.jpg and b/crm/public/manifest/apple-splash-1640-2360.jpg differ diff --git a/crm/public/manifest/apple-splash-1668-2224.jpg b/crm/public/manifest/apple-splash-1668-2224.jpg index 3f1503c7..8098f835 100644 Binary files a/crm/public/manifest/apple-splash-1668-2224.jpg and b/crm/public/manifest/apple-splash-1668-2224.jpg differ diff --git a/crm/public/manifest/apple-splash-1668-2388.jpg b/crm/public/manifest/apple-splash-1668-2388.jpg index 4af76774..94a970c4 100644 Binary files a/crm/public/manifest/apple-splash-1668-2388.jpg and b/crm/public/manifest/apple-splash-1668-2388.jpg differ diff --git a/crm/public/manifest/apple-splash-1792-828.jpg b/crm/public/manifest/apple-splash-1792-828.jpg index 2c99bbc5..e64de76e 100644 Binary files a/crm/public/manifest/apple-splash-1792-828.jpg and b/crm/public/manifest/apple-splash-1792-828.jpg differ diff --git a/crm/public/manifest/apple-splash-2048-1536.jpg b/crm/public/manifest/apple-splash-2048-1536.jpg index 6ebcdfd0..f4e1a3c8 100644 Binary files a/crm/public/manifest/apple-splash-2048-1536.jpg and b/crm/public/manifest/apple-splash-2048-1536.jpg differ diff --git a/crm/public/manifest/apple-splash-2048-2732.jpg b/crm/public/manifest/apple-splash-2048-2732.jpg index 8118a8cf..fceacbae 100644 Binary files a/crm/public/manifest/apple-splash-2048-2732.jpg and b/crm/public/manifest/apple-splash-2048-2732.jpg differ diff --git a/crm/public/manifest/apple-splash-2160-1620.jpg b/crm/public/manifest/apple-splash-2160-1620.jpg index 825b47ab..8d82fa10 100644 Binary files a/crm/public/manifest/apple-splash-2160-1620.jpg and b/crm/public/manifest/apple-splash-2160-1620.jpg differ diff --git a/crm/public/manifest/apple-splash-2208-1242.jpg b/crm/public/manifest/apple-splash-2208-1242.jpg index b72315d8..9ab6fc3f 100644 Binary files a/crm/public/manifest/apple-splash-2208-1242.jpg and b/crm/public/manifest/apple-splash-2208-1242.jpg differ diff --git a/crm/public/manifest/apple-splash-2224-1668.jpg b/crm/public/manifest/apple-splash-2224-1668.jpg index 01bbb813..1f5bc008 100644 Binary files a/crm/public/manifest/apple-splash-2224-1668.jpg and b/crm/public/manifest/apple-splash-2224-1668.jpg differ diff --git a/crm/public/manifest/apple-splash-2266-1488.jpg b/crm/public/manifest/apple-splash-2266-1488.jpg index eb895fe9..2d944a3f 100644 Binary files a/crm/public/manifest/apple-splash-2266-1488.jpg and b/crm/public/manifest/apple-splash-2266-1488.jpg differ diff --git a/crm/public/manifest/apple-splash-2360-1640.jpg b/crm/public/manifest/apple-splash-2360-1640.jpg index aed697b9..6425fd54 100644 Binary files a/crm/public/manifest/apple-splash-2360-1640.jpg and b/crm/public/manifest/apple-splash-2360-1640.jpg differ diff --git a/crm/public/manifest/apple-splash-2388-1668.jpg b/crm/public/manifest/apple-splash-2388-1668.jpg index 76fa5ff8..fab1edb2 100644 Binary files a/crm/public/manifest/apple-splash-2388-1668.jpg and b/crm/public/manifest/apple-splash-2388-1668.jpg differ diff --git a/crm/public/manifest/apple-splash-2436-1125.jpg b/crm/public/manifest/apple-splash-2436-1125.jpg index 5426940c..2bc4aad1 100644 Binary files a/crm/public/manifest/apple-splash-2436-1125.jpg and b/crm/public/manifest/apple-splash-2436-1125.jpg differ diff --git a/crm/public/manifest/apple-splash-2532-1170.jpg b/crm/public/manifest/apple-splash-2532-1170.jpg index ce7f3a61..f7d6c6ce 100644 Binary files a/crm/public/manifest/apple-splash-2532-1170.jpg and b/crm/public/manifest/apple-splash-2532-1170.jpg differ diff --git a/crm/public/manifest/apple-splash-2556-1179.jpg b/crm/public/manifest/apple-splash-2556-1179.jpg index 4f231e9d..6176e45f 100644 Binary files a/crm/public/manifest/apple-splash-2556-1179.jpg and b/crm/public/manifest/apple-splash-2556-1179.jpg differ diff --git a/crm/public/manifest/apple-splash-2688-1242.jpg b/crm/public/manifest/apple-splash-2688-1242.jpg index 0d726d6b..05ea200b 100644 Binary files a/crm/public/manifest/apple-splash-2688-1242.jpg and b/crm/public/manifest/apple-splash-2688-1242.jpg differ diff --git a/crm/public/manifest/apple-splash-2732-2048.jpg b/crm/public/manifest/apple-splash-2732-2048.jpg index 11cb58ec..d5531305 100644 Binary files a/crm/public/manifest/apple-splash-2732-2048.jpg and b/crm/public/manifest/apple-splash-2732-2048.jpg differ diff --git a/crm/public/manifest/apple-splash-2778-1284.jpg b/crm/public/manifest/apple-splash-2778-1284.jpg index 49b29391..d8f3b02d 100644 Binary files a/crm/public/manifest/apple-splash-2778-1284.jpg and b/crm/public/manifest/apple-splash-2778-1284.jpg differ diff --git a/crm/public/manifest/apple-splash-2796-1290.jpg b/crm/public/manifest/apple-splash-2796-1290.jpg index 56cbbb40..2c508efd 100644 Binary files a/crm/public/manifest/apple-splash-2796-1290.jpg and b/crm/public/manifest/apple-splash-2796-1290.jpg differ diff --git a/crm/public/manifest/apple-splash-640-1136.jpg b/crm/public/manifest/apple-splash-640-1136.jpg index 59ebe23f..abfcc9c9 100644 Binary files a/crm/public/manifest/apple-splash-640-1136.jpg and b/crm/public/manifest/apple-splash-640-1136.jpg differ diff --git a/crm/public/manifest/apple-splash-750-1334.jpg b/crm/public/manifest/apple-splash-750-1334.jpg index bc472325..bc15913a 100644 Binary files a/crm/public/manifest/apple-splash-750-1334.jpg and b/crm/public/manifest/apple-splash-750-1334.jpg differ diff --git a/crm/public/manifest/apple-splash-828-1792.jpg b/crm/public/manifest/apple-splash-828-1792.jpg index c9866c49..9013d49d 100644 Binary files a/crm/public/manifest/apple-splash-828-1792.jpg and b/crm/public/manifest/apple-splash-828-1792.jpg differ diff --git a/crm/public/manifest/manifest-icon-192.maskable.png b/crm/public/manifest/manifest-icon-192.maskable.png index 274e5c24..5b45f9ad 100644 Binary files a/crm/public/manifest/manifest-icon-192.maskable.png and b/crm/public/manifest/manifest-icon-192.maskable.png differ diff --git a/crm/public/manifest/manifest-icon-512.maskable.png b/crm/public/manifest/manifest-icon-512.maskable.png index 8e6e55d9..a5f4aa7c 100644 Binary files a/crm/public/manifest/manifest-icon-512.maskable.png and b/crm/public/manifest/manifest-icon-512.maskable.png differ diff --git a/frontend/src/components/Fields.vue b/frontend/src/components/Fields.vue index fe723d8b..80cea4ba 100644 --- a/frontend/src/components/Fields.vue +++ b/frontend/src/components/Fields.vue @@ -23,9 +23,11 @@
diff --git a/frontend/src/components/Settings/SettingsPage.vue b/frontend/src/components/Settings/SettingsPage.vue index deebce3d..cf085c99 100644 --- a/frontend/src/components/Settings/SettingsPage.vue +++ b/frontend/src/components/Settings/SettingsPage.vue @@ -37,6 +37,7 @@ import { Spinner, Badge, } from 'frappe-ui' +import { evaluate_depends_on_value, createToast } from '@/utils' import { computed } from 'vue' const props = defineProps({ @@ -48,6 +49,10 @@ const props = defineProps({ type: String, default: '', }, + successMessage: { + type: String, + default: 'Updated Successfully', + }, }) const fields = createResource({ @@ -66,6 +71,24 @@ const data = createDocumentResource({ fields: ['*'], cache: props.doctype, auto: true, + setValue: { + onSuccess: () => { + createToast({ + title: __('Success'), + text: __(props.successMessage), + icon: 'check', + iconClasses: 'text-green-600', + }) + }, + onError: (err) => { + createToast({ + title: __('Error'), + text: err.message + ': ' + err.messages[0], + icon: 'x', + iconClasses: 'text-red-600', + }) + }, + }, }) const sections = computed(() => { @@ -94,6 +117,10 @@ const sections = computed(() => { } else { _sections[_sections.length - 1].fields.push({ ...field, + display_depends_on: evaluate_depends_on_value( + field.depends_on, + data.doc, + ), name: field.value, }) } diff --git a/frontend/src/utils/index.js b/frontend/src/utils/index.js index f7cbbd0c..c233668d 100644 --- a/frontend/src/utils/index.js +++ b/frontend/src/utils/index.js @@ -241,3 +241,45 @@ export function isTouchScreenDevice() { export function convertArrayToString(array) { return array.map((item) => item).join(',') } + +export function _eval(code, context = {}) { + let variable_names = Object.keys(context) + let variables = Object.values(context) + code = `let out = ${code}; return out` + try { + let expression_function = new Function(...variable_names, code) + return expression_function(...variables) + } catch (error) { + console.log('Error evaluating the following expression:') + console.error(code) + throw error + } +} + +export function evaluate_depends_on_value(expression, doc) { + if (!expression) return true + if (!doc) return true + + let out = null + + if (typeof expression === 'boolean') { + out = expression + } else if (typeof expression === 'function') { + out = expression(doc) + } else if (expression.substr(0, 5) == 'eval:') { + try { + out = _eval(expression.substr(5), { doc }) + } catch (e) { + out = true + } + } else { + let value = doc[expression] + if (Array.isArray(value)) { + out = !!value.length + } else { + out = !!value + } + } + + return out +} \ No newline at end of file