From 1503343fde3b9e6ef80a2fc1b68ddf2bc0d8de74 Mon Sep 17 00:00:00 2001 From: zamhaq Date: Thu, 16 Aug 2018 20:24:21 +0530 Subject: [PATCH 01/19] Show Create Kanban button if items present in list has select fieldtype --- ui/components/List/List.vue | 41 ++++++++++++++---------------- ui/components/List/ListActions.vue | 5 ++-- 2 files changed, 22 insertions(+), 24 deletions(-) diff --git a/ui/components/List/List.vue b/ui/components/List/List.vue index 9e99ba85..62859d09 100644 --- a/ui/components/List/List.vue +++ b/ui/components/List/List.vue @@ -1,26 +1,15 @@ From 26469d2cc6ab731652c6b5344414b28a9653bd25 Mon Sep 17 00:00:00 2001 From: zamhaq Date: Sun, 26 Aug 2018 13:31:18 +0530 Subject: [PATCH 02/19] Create Kanban modal for configuring kanban model --- models/doctype/Kanban/Kanban.js | 46 ++++++++++++++++++++++++++++++ models/doctype/Kanban/config.js | 0 models/index.js | 33 ++++++++++----------- ui/components/Form/Form.vue | 6 ++-- ui/components/Form/FormLayout.vue | 11 ++++--- ui/components/KanbanModal.vue | 44 ++++++++++++++++++++++++++++ ui/components/List/List.vue | 25 +++++++++++++++- ui/components/List/ListActions.vue | 2 +- 8 files changed, 143 insertions(+), 24 deletions(-) create mode 100644 models/doctype/Kanban/Kanban.js create mode 100644 models/doctype/Kanban/config.js create mode 100644 ui/components/KanbanModal.vue diff --git a/models/doctype/Kanban/Kanban.js b/models/doctype/Kanban/Kanban.js new file mode 100644 index 00000000..c7651000 --- /dev/null +++ b/models/doctype/Kanban/Kanban.js @@ -0,0 +1,46 @@ +let options = []; +let referencedoctype = ''; + +async function populateFieldsAndOptions(doctype){ + const meta = await frappe.getMeta(doctype); + referencedoctype = doctype; + console.log(referencedoctype); + meta.fields.forEach(field => { + if(field.fieldtype==='Select') + options.push(field.fieldname) + }); + return meta.fields; +}; + +module.exports = { + name: 'Kanban', + doctype: 'DocType', + naming: 'autoincrement', + isSingle: 0, + isChild: 0, + "keywordFields": [], + "fields": [ + { + "fieldname": "kanbanname", + "label": "Kanban Name", + "fieldtype": "Data", + "required": 1 + }, + { + "fieldname": "referencedoctype", + "label": "Reference Doctype", + "fieldtype": "Data", + "value": 'something', + "required": 1 + }, + { + "fieldname": "sortby", + "label": "Sort By", + "fieldtype": "Select", + "options": options, + "required": 1, + } + ], + populateFieldsAndOptions +}; + \ No newline at end of file diff --git a/models/doctype/Kanban/config.js b/models/doctype/Kanban/config.js new file mode 100644 index 00000000..e69de29b diff --git a/models/index.js b/models/index.js index 4e0abb23..bc2a3556 100644 --- a/models/index.js +++ b/models/index.js @@ -1,17 +1,18 @@ module.exports = { - models: { - FilterItem: require('./doctype/FilterItem/FilterItem.js'), - FilterGroup: require('./doctype/FilterGroup/FilterGroup.js'), - FilterSelector: require('./doctype/FilterSelector/FilterSelector.js'), - NumberSeries: require('./doctype/NumberSeries/NumberSeries.js'), - PrintFormat: require('./doctype/PrintFormat/PrintFormat.js'), - Role: require('./doctype/Role/Role.js'), - Session: require('./doctype/Session/Session.js'), - SingleValue: require('./doctype/SingleValue/SingleValue.js'), - SystemSettings: require('./doctype/SystemSettings/SystemSettings.js'), - ToDo: require('./doctype/ToDo/ToDo.js'), - User: require('./doctype/User/User.js'), - UserRole: require('./doctype/UserRole/UserRole.js'), - File: require('./doctype/File/File.js'), - } -} + models: { + FilterItem: require('./doctype/FilterItem/FilterItem.js'), + FilterGroup: require('./doctype/FilterGroup/FilterGroup.js'), + FilterSelector: require('./doctype/FilterSelector/FilterSelector.js'), + NumberSeries: require('./doctype/NumberSeries/NumberSeries.js'), + PrintFormat: require('./doctype/PrintFormat/PrintFormat.js'), + Role: require('./doctype/Role/Role.js'), + Session: require('./doctype/Session/Session.js'), + SingleValue: require('./doctype/SingleValue/SingleValue.js'), + SystemSettings: require('./doctype/SystemSettings/SystemSettings.js'), + ToDo: require('./doctype/ToDo/ToDo.js'), + User: require('./doctype/User/User.js'), + UserRole: require('./doctype/UserRole/UserRole.js'), + File: require('./doctype/File/File.js'), + Kanban: require('./doctype/Kanban/Kanban.js') + } +}; diff --git a/ui/components/Form/Form.vue b/ui/components/Form/Form.vue index e9ac15f0..fe3d5372 100644 --- a/ui/components/Form/Form.vue +++ b/ui/components/Form/Form.vue @@ -56,7 +56,10 @@ export default { try { this.doc = await frappe.getDoc(this.doctype, this.name); - if (this.doc._notInserted && this.meta.fields.map(df => df.fieldname).includes('name')) { + if ( + this.doc._notInserted && + this.meta.fields.map(df => df.fieldname).includes('name') + ) { // For a user editable name field, // it should be unset since it is autogenerated this.doc.set('name', ''); @@ -89,7 +92,6 @@ export default { } this.$emit('save', this.doc); - } catch (e) { console.error(e); return; diff --git a/ui/components/Form/FormLayout.vue b/ui/components/Form/FormLayout.vue index 58048f5f..555ed2d6 100644 --- a/ui/components/Form/FormLayout.vue +++ b/ui/components/Form/FormLayout.vue @@ -26,6 +26,7 @@ export default { const dataObj = {}; for (let df of this.fields) { dataObj[df.fieldname] = this.doc[df.fieldname]; + console.log(dataObj[df.fieldname]); if (df.fieldtype === 'Table' && !dataObj[df.fieldname]) { dataObj[df.fieldname] = []; @@ -80,15 +81,17 @@ export default { if (!layout) { const fields = this.fields.map(df => df.fieldname); - layout = [{ - columns: [{ fields }] - }]; + layout = [ + { + columns: [{ fields }] + } + ]; } if (Array.isArray(layout)) { layout = { sections: layout - } + }; } return layout; } diff --git a/ui/components/KanbanModal.vue b/ui/components/KanbanModal.vue new file mode 100644 index 00000000..32eec8e2 --- /dev/null +++ b/ui/components/KanbanModal.vue @@ -0,0 +1,44 @@ + + + diff --git a/ui/components/List/List.vue b/ui/components/List/List.vue index 62859d09..598072e1 100644 --- a/ui/components/List/List.vue +++ b/ui/components/List/List.vue @@ -1,6 +1,6 @@ + }, + methods: { submit() { const { kanbanname, sortby, referencedoctype } = this.doc; console.log(kanbanname, sortby, referencedoctype); @@ -42,3 +85,39 @@ export default { } }; + + diff --git a/ui/components/List/List.vue b/ui/components/List/List.vue index 598072e1..1618dd58 100644 --- a/ui/components/List/List.vue +++ b/ui/components/List/List.vue @@ -9,6 +9,7 @@ + - }, - methods: { - submit() { - const { kanbanname, sortby, referencedoctype } = this.doc; - console.log(kanbanname, sortby, referencedoctype); - console.log(this.doc); - } + console.log('data', this.data); } }; From d577ac791236ba12c158af609aabde3c61fcfbe0 Mon Sep 17 00:00:00 2001 From: zamhaq Date: Sun, 9 Sep 2018 00:09:43 +0530 Subject: [PATCH 05/19] Add frappe styles in Kanban Modal --- ui/components/KanbanModal.vue | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/ui/components/KanbanModal.vue b/ui/components/KanbanModal.vue index af70d5e9..f4c91686 100644 --- a/ui/components/KanbanModal.vue +++ b/ui/components/KanbanModal.vue @@ -3,16 +3,16 @@