/* * Project Name : Visual Python * Description : GUI-based Python code generator * File Name : TaskItem.js * Author : Black Logic * Note : Render and load task item * License : GNU GPLv3 with Visual Python special exception * Date : 2021. 09. 13 * Change Date : */ //============================================================================ // [CLASS] TaskItem //============================================================================ define([ '../com/com_Const', '../com/com_String', '../com/component/Component', ], function(com_Const, com_String, Component) { 'use strict'; //======================================================================== // Declare class //======================================================================== /** * TaskItem */ class TaskItem extends Component{ _init() { // set taskitem to component this.state.task.setTaskItem(this); } _bindEvent() { let that = this; // click event - emphasize TaskItem & open/hide PopupComponent $(this.wrapSelector()).on('click', function(evt) { let isOpen = $(that.wrapSelector()).hasClass('vp-focus'); if (isOpen) { // hide task if it's already opened // open task that.state.task.hide(); } else { // open task $('#vp_wrapper').trigger({ type: 'open_option_page', component: that.state.task }); } }); // remove click event $(this.wrapSelector('.vp-menu-task-remove')).on('click', function(evt) { $('#vp_wrapper').trigger({ type: 'remove_option_page', component: that.state.task }); }); } _getOptionInfo() { let task = this.state.task; let info = {}; if (task && task.state && task.config) { let { id, name } = task; let { desc, apps }= task.config; info = { id: id, title: name, desc: desc, icon: 'apps/apps_white.svg' }; if (apps) { info.icon = apps.icon; } } return info; } template() { let { title, icon, desc } = this._getOptionInfo(); let page = new com_String(); page.appendFormatLine('