Browse Source

Merge pull request #129 from ErlantzCalvo/main

Added set workflow icon functionality
Ahmad Kholid 3 years ago
parent
commit
02d5a85a31

+ 1 - 0
src/components/newtab/shared/SharedCard.vue

@@ -49,6 +49,7 @@
   </ui-card>
   </ui-card>
 </template>
 </template>
 <script setup>
 <script setup>
+import { computed } from 'vue';
 import dayjs from '@/lib/dayjs';
 import dayjs from '@/lib/dayjs';
 
 
 const props = defineProps({
 const props = defineProps({

+ 5 - 0
src/components/newtab/workflow/WorkflowActions.vue

@@ -142,5 +142,10 @@ const moreActions = [
     name: t('common.delete'),
     name: t('common.delete'),
     icon: 'riDeleteBin7Line',
     icon: 'riDeleteBin7Line',
   },
   },
+  {
+    id: 'setIcon',
+    name: 'Set icon',
+    icon: 'riImageLine',
+  },
 ];
 ];
 </script>
 </script>

+ 1 - 0
src/models/workflow.js

@@ -15,6 +15,7 @@ class Workflow extends Model {
       id: this.uid(() => nanoid()),
       id: this.uid(() => nanoid()),
       name: this.string(''),
       name: this.string(''),
       icon: this.string('riGlobalLine'),
       icon: this.string('riGlobalLine'),
+      isIconFromURL: this.boolean(false),
       data: this.attr(null),
       data: this.attr(null),
       drawflow: this.string(''),
       drawflow: this.string(''),
       dataColumns: this.attr([]),
       dataColumns: this.attr([]),

+ 26 - 0
src/newtab/pages/Workflows.vue

@@ -121,6 +121,7 @@ import { sendMessage } from '@/utils/message';
 import { exportWorkflow, importWorkflow } from '@/utils/workflow-data';
 import { exportWorkflow, importWorkflow } from '@/utils/workflow-data';
 import SharedCard from '@/components/newtab/shared/SharedCard.vue';
 import SharedCard from '@/components/newtab/shared/SharedCard.vue';
 import Workflow from '@/models/workflow';
 import Workflow from '@/models/workflow';
+import { isWhiteSpace } from '@/utils/helper';
 
 
 const dialog = useDialog();
 const dialog = useDialog();
 const { t } = useI18n();
 const { t } = useI18n();
@@ -195,14 +196,39 @@ function renameWorkflow({ id, name }) {
           name: newName,
           name: newName,
         },
         },
       });
       });
+      console.log(Workflow.data);
     },
     },
   });
   });
 }
 }
 
 
+function setIconWorkflow({ id }) {
+  dialog.prompt({
+    title: 'Set icon workflow',
+    placeholder: 'URL of the new icon',
+    okText: 'Set Icon',
+    inputValue: '',
+    onConfirm: (iconUrl) => {
+      let isIconFromURL = true;
+      if (!iconUrl || isWhiteSpace(iconUrl)) {
+        iconUrl = String('riGlobalLine');
+        isIconFromURL = false;
+      }
+
+      Workflow.update({
+        where: id,
+        data: {
+          icon: String(iconUrl),
+          isIconFromURL,
+        },
+      });
+    },
+  });
+}
 const menuHandlers = {
 const menuHandlers = {
   export: exportWorkflow,
   export: exportWorkflow,
   rename: renameWorkflow,
   rename: renameWorkflow,
   delete: deleteWorkflow,
   delete: deleteWorkflow,
+  setIcon: setIconWorkflow,
 };
 };
 
 
 watch(
 watch(

+ 4 - 0
src/utils/helper.js

@@ -77,6 +77,10 @@ export function objectHasKey(obj, key) {
   return Object.prototype.hasOwnProperty.call(obj, key);
   return Object.prototype.hasOwnProperty.call(obj, key);
 }
 }
 
 
+export function isWhiteSpace(str) {
+  return !/\S/.test(str);
+}
+
 export function debounce(callback, time = 200) {
 export function debounce(callback, time = 200) {
   let interval;
   let interval;