工作区::任务介绍






4.86/5 (8投票s)
使用、管理并爱上你的待办事项列表。
引言
多年来,我们 CodeProject 的人在任务跟踪系统选择上争论不休,争论的核心都是“哪个系统最不糟糕”。市面上有一些很棒的任务跟踪系统,几乎能满足我们的需求,但它们要么太复杂,要么太慢,要么在平板电脑上无法使用,要么强制你做一些你不想做的事情。
我们 ::Tasks 的目标是创建一个相当“笨”的系统,它不知道你想做什么,它只是提供一个一致且可扩展的框架,让你可以在其中完成任务。Tasks 的基本目标是:
- 创建一个比记事本或 Excel 电子表格更好的任务跟踪系统
- 创建一个专注于用户数据而不是应用程序本身的应用程序
软件开发者常常有一种冲动,想把应用程序本身作为主要功能,而不是把应用程序中的用户数据作为主要功能。在一个伟大的视频游戏背后,软件对用户来说是隐形的;你完全忘记了你正在使用一个软件应用程序。而商业应用程序,则走向了另一个极端,常常把应用程序作为焦点。我们的每周会议有 50% 的时间在讨论如何使用我们正在使用的工具,50% 的时间在讨论如何写一个更好的工具。还有 50% 的时间在讨论我们本来应该讨论的内容。软件的目的是让生活更轻松,而不仅仅是成为其本身的目的。
工作区::任务
::Tasks 是我们第一个基于 Workspaces 平台编写的应用程序,该平台为我们的文章系统提供支持。CodeProject 上的每篇文章都有一个“Bug 和建议”选项卡,为该文章提供一个 ::Tasks 实例。如果你想将 ::Tasks 用于自己的项目,只需在 Workspaces 上打开一个新的工作区——它是免费的。
Workspaces 主要使用 CoffeeScript 编写,是一个单页应用程序,使用 Ember.js 框架,后端是 Node.js,持久层是 MongoDB。::Tasks 使用相同的技术栈,但额外加入了少量的 Ruby On Rails,尽管我们正在从 Ruby 转向纯 Node.js。整个系统都托管在 Amazon Web Services 上,使用 Capistrano 和 Chef 进行管理和部署。其中还零星地加入了少量的 Go,只是为了好玩,只是一点点尝试。
::Tasks 的具体目标是:
- 组织和管理任务列表
- 快速
- 简单
- 在桌面和平板电脑上都能工作
- 可扩展
进一步(隐含的)目标是 ::Tasks 应该:
- 运行在 ::Workspaces 平台上
- 面向多用户同时使用
- 确保内置提醒、更新和用户沟通功能
网格
::Tasks UI 的核心是网格。我们尝试了许多商业和开源网格,但都不适合。许多都接近,但最终为了满足我们的需求而重新设计网格(以及绕过网格)所付出的努力,意味着直接编写自己的网格效率更高。
该网格是纯 JavaScript,支持您期望的功能:可调整大小的列、可排序、拖放和就地编辑。
网格(可以理解地)占据了 90% 的 UI 工作,并且是大部分优化的重点。为了提高速度,我们优化了数据序列化,在首次加载时预渲染 HTML,添加了部分和按需网格填充,并花费数周时间在这里那里削减毫秒,以确保应用程序在交互过程中尽可能快。我们仍在计划实施一些技巧,所以工作仍在继续。随着 Ember.js 的发展,它也为未来的速度提升打开了大门。
您的任务
目标是确保系统像记事本或 Excel 一样易于使用,因此重点放在简单的、可就地编辑的列表上,并且可以使用简单的拖放来安排。
在默认布局中,您会看到您的任务一个接一个地列出。要使一个任务成为另一个任务的子任务,只需将一个任务拖到另一个任务之上即可。要创建一个新任务,只需选择“添加新”菜单下拉列表,它允许您在列表末尾添加一个新任务,为当前选定任务添加一个新同级任务,或者为当前任务添加一个新子任务。提示:使用键盘快捷键 Ctrl+Enter / Shift+Enter 可以节省时间。
添加新项后,只需填写详细信息:标题、类型、描述(使用 Markdown)、经办人以及您正在使用的其他字段。
按下回车键,任务就创建了,并且一个新的空白任务也随之创建,随时准备让你添加下一个项目。目标是“比记事本更好”,而在记事本中,你输入、按回车、输入、按回车。这就是我们在 ::Tasks 中使用的模式。
组织和管理您的任务
::Tasks 的一个核心功能是“组织和管理任务列表”,但从根本上说,组织任务有两种方式:
- 按项目分层。根据项目在“宏伟计划”中的位置来组织项目。
- 扁平列表:例如按优先级、按经办人,或者只是一个“今天有什么待办事项?”的列表。
默认的树状布局允许您将列表组织成一个层次结构。您输入任务,然后通过拖放将它们组织成任务树。
还有一种布局叫做“列表布局”,它允许您根据与树状列表不同的排序标准,将项目组织成一个扁平的列表。
最初,项目将按您输入它们的顺序排列,但在列表布局中,您可以拖放项目以重新排列它们(但不能添加父/子关系——这仅适用于树形布局)。您放置项目的顺序将在列表和树形布局之间切换时保持不变。
筛选和分组
您不总是希望一直看到所有任务,因此 ::Tasks 允许您筛选和分组任务。
要筛选,请单击列顶部的“漏斗”图标,该列的值您希望筛选,然后选择您希望包含在筛选器中的项目。在下面的示例中,我选择只查看状态为新建、开放、进行中、暂停、需要帮助和已解决的项目。我不会显示已关闭、已拒绝或已完成的项目。
点击应用,你就得到了你的过滤器。在任意多列上执行此操作,以微调你的过滤器。你最终的过滤器集可以通过过滤器下拉菜单查看和调整。
通过在“分组依据”下拉菜单中选择要分组项目的列来完成分组。
定义和保存您的任务视图
能够将任务视为项目树或待办事项的平面列表固然不错,但您需要一种方法来定义您正在管理的不同项目的不同视图。在 ::Tasks 中,这样做简单得令人难以置信。
- 选择您的布局:列表或树形
- 应用您需要的任何过滤器
- 如有必要,对项目进行分组
- 如有必要,调整列宽
- 转到“视图”下拉菜单,在底部输入您要保存的视图标题,然后点击“添加”。
视图创建后,您可以共享该视图,以便其他人可以使用您的视图,将其设为您的主要(默认)视图,或者(如果您已共享该视图)将其设为所有人的主要视图,而不仅仅是您自己。
查看和编辑项目
我们提供的用于输入项目描述的小窗口有时不足够,主网格任务视图也无法提供完整的描述。点击任何任务的标题会打开详情窗格,显示任务的扩展和可编辑版本。
点击描述以编辑描述,或点击任何属性以显示下拉菜单(或其他控件)以编辑其设置。此外,可以通过拖放添加附件,如果您使用的是现代浏览器,图片可以直接粘贴到描述中。请注意,描述使用 Markdown 格式化,但请记住 Markdown 也支持纯 HTML。两全其美。
当然,当多个人一起在一个项目上工作时,他们之间会有一些来回沟通,所以每个项目底部都有一个评论区。同样,所有内容都用 Markdown 格式化。
最后一部分是通知系统。在详细信息窗格的末尾有两个控件:“通知”复选框,允许您启用项目的通知(如果受让人全局设置了该选项,他们将始终收到通知),以及另一个下拉菜单,允许您让其他人收到通知。当您需要将项目分配给一个人,但又要让另一个人收到状态更改通知时,这非常方便。
总结
到目前为止,我已介绍了使用 ::Tasks 的基本知识。添加、管理、查看和修改项目的设计都力求尽可能简单,并提供根据不同需求以不同方式组织和呈现项目的途径。
::Tasks 简单易用,并非旨在取代带有甘特图和燃尽图的完整项目管理系统。它旨在让您组织您的任务、待办事项和想法,同时它也提供了显著的配置可能性。
在我的下一篇文章中,我将深入探讨可能的自定义和扩展,以及我们开放的一些 UI 技巧。