+
-
+
{field.name.value}
diff --git a/package.json b/package.json
index ebe3fb517..c81a14e77 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "undb",
- "version": "1.0.0-96",
+ "version": "1.0.0-97",
"private": true,
"scripts": {
"build": "NODE_ENV=production bun --bun turbo build",
diff --git a/packages/persistence/src/template/template-data.ts b/packages/persistence/src/template/template-data.ts
index b6d6e6d2c..cbed464d8 100644
--- a/packages/persistence/src/template/template-data.ts
+++ b/packages/persistence/src/template/template-data.ts
@@ -1,11 +1,162 @@
import { env } from "@undb/env"
-import { templates,type IBaseTemplateDTO,type ITemplateDTO } from "@undb/template"
+import { templates, type IBaseTemplateDTO, type ITemplateDTO } from "@undb/template"
function getTemplateImage(folder: string, file: string) {
return env.UNDB_BASE_URL + "/assets/templates/" + folder + "/" + file
}
export const templateData: ITemplateDTO[] = [
+ {
+ id: "6ba7b815-9dad-11d1-80b4-00c04fd430c8",
+ icon: "๐จโ๐งโ๐ฆ",
+ name: "Human Resource Management",
+ categories: ["hr"],
+ cover: getTemplateImage("hr", "cover.jpg"),
+ images: [
+ getTemplateImage("hr", "image1.png"),
+ getTemplateImage("hr", "image2.png"),
+ getTemplateImage("hr", "image3.png"),
+ getTemplateImage("hr", "image4.png"),
+ getTemplateImage("hr", "image5.png"),
+ ],
+ description: "A template for managing human resources, including employees, positions, and departments.",
+ detail: `
+
UnDB Human Resource Management Template: Streamline Your HR Processes
+
+
Comprehensive HR Management Features for Modern Businesses
+
+
UnDB's Human Resource Management template offers a powerful set of tools to revolutionize your HR operations:
+
+
Employee Management System
+
+ - Create and maintain detailed employee profiles
+ - Track positions, departments, salaries, and employment status
+ - Manage organizational hierarchy with reporting structures
+
+
+
Department and Payroll Administration
+
+ - Organize company departments with budget and location tracking
+ - Administer payroll, including salaries, bonuses, and deductions
+ - Automate net pay calculations for efficient processing
+
+
+
Leave Management and Performance Evaluation
+
+ - Streamline time-off requests with customizable leave types
+ - Conduct regular performance reviews with rating systems
+ - Set and track employee goals for career development
+
+
+
Benefits of UnDB's HR Software Template
+
+
Transform your human resources processes with our comprehensive solution:
+
+
+ - Centralized HR Data Management
+ - Improved Operational Efficiency
+ - Enhanced Organizational Visibility
+ - Scalable and Customizable Platform
+ - Data-Driven HR Decision Making
+
+
+
HR Template Structure
+
+
Our HR management system includes five key components:
+
+
+ - Employees Database
+ - Departments Tracker
+ - Payroll Management System
+ - Time Off Request Platform
+ - Performance Review Module
+
+
+
Getting Started with UnDB's HR Template
+
+
Follow these steps to implement our HR solution:
+
+
+ - Import the HR template to your UnDB workspace
+ - Customize fields and views to match your organization
+ - Input employee and department data
+ - Configure leave request and performance review workflows
+ - Start tracking payroll and departmental budgets
+
+
+
Frequently Asked Questions
+
+
Q: Is UnDB's HR template suitable for small businesses?
+
A: Yes, our template is scalable and can be customized for businesses of all sizes.
+
+
Q: Can I integrate this template with other HR tools?
+
A: UnDB offers various integration options. Contact our support team for specific integration queries.
+
+
Q: How secure is the employee data in this system?
+
A: We prioritize data security with encryption and access controls.
+
+
Transform your HR processes today with UnDB's comprehensive Human Resource Management template!
+
+ `,
+ template: {
+ type: "base",
+ template: templates.hr as IBaseTemplateDTO,
+ },
+ },
+ {
+ id: "6ba7b816-9dad-11d1-80b4-00c04fd430c8",
+ icon: "๐",
+ name: "Agile Development Management",
+ categories: ["development", "agile", "startup"],
+ cover: getTemplateImage("agileDevelopment", "cover.jpg"),
+ images: [
+ getTemplateImage("agileDevelopment", "image1.png"),
+ getTemplateImage("agileDevelopment", "image2.png"),
+ getTemplateImage("agileDevelopment", "image3.png"),
+ ],
+ description: "A template for managing agile development projects, including requirements, tasks, and defects.",
+ detail: `
+
Optimize Your Agile Development Process: UnDB's Agile Development Management Template
+
+
Comprehensive Agile Development Management Features
+
UnDB's Agile Development Management template offers a powerful set of tools to enhance your agile development process:
+
+ - Requirements Management: Easily create, assign, and track project requirements
+ - Task Tracking: Efficiently manage and monitor development tasks
+ - Defect Management: Track and resolve software defects
+ - Iteration Planning: Plan and manage sprints or iterations
+ - Test Case Management: Create and execute test cases
+ - Team Management: Organize and track team members' contributions
+ - Time Tracking: Monitor time spent on tasks and projects
+
+
+
Why Choose UnDB for Agile Development Management?
+
UnDB offers unique advantages for your agile development needs:
+
+ - Customizable: Tailor the template to fit your specific agile methodology and project requirements
+ - User-Friendly: Intuitive interface for easy adoption across your development team
+ - Scalable: Grows with your projects, from small teams to large-scale development efforts
+ - Integration-Ready: Seamlessly connects with other UnDB templates and tools
+ - Data-Driven: Make informed decisions with real-time project insights and analytics
+
+
+
Getting Started with UnDB's Agile Development Template
+
Follow these steps to implement our agile development solution:
+
+ - Import the Agile Development template to your UnDB workspace
+ - Customize fields and views to match your team's agile processes
+ - Input your project requirements and create initial tasks
+ - Set up iterations or sprints and assign team members
+ - Start tracking progress, managing defects, and monitoring team performance
+
+
+
Transform your agile development process today with UnDB's comprehensive Agile Development Management template!
+ `,
+ template: {
+ type: "base",
+ template: templates.agileDevelopment as IBaseTemplateDTO,
+ },
+ },
{
id: "550e8400-e29b-41d4-a716-446655440000",
icon: "๐",
@@ -236,46 +387,6 @@ export const templateData: ITemplateDTO[] = [
template: templates.socialMediaContent as IBaseTemplateDTO,
},
},
- // {
- // id: "6ba7b815-9dad-11d1-80b4-00c04fd430c8",
- // icon: "๐จโ๐งโ๐ฆ",
- // name: "Human Resource Management",
- // categories: ["hr"],
- // cover: getTemplateImage("hr", "cover.jpg"),
- // images: [getTemplateImage("hr", "image1.png"), getTemplateImage("hr", "image2.png")],
- // description: "A template for managing human resources, including employees, positions, and departments.",
- // detail: `
- //
Streamline Your Human Resource Management with UnDB's HR Management Template
- //
Comprehensive HR Management Features
- //
UnDB's HR Management template offers a powerful set of tools to enhance your human resource management:
- //
- // - Employee Management: Easily create, assign, and monitor employee records
- // - Department Organization: Efficiently structure and manage company departments
- // - Payroll Administration: Track and manage employee compensation, including salaries, bonuses, and benefits
- // - Performance Evaluation: Set up and conduct regular performance reviews and goal-setting sessions
- // - Time Off Management: Streamline the process of requesting, approving, and tracking employee leave
- // - Recruitment and Onboarding: Manage job postings, applications, and new employee onboarding processes
- // - Training and Development: Plan and track employee training programs and career development initiatives
- // - Compliance Management: Ensure adherence to labor laws and company policies
- // - Reporting and Analytics: Generate insightful reports on various HR metrics for data-driven decision making
- //
- //
Benefits of Using UnDB's HR Management Template
- //
Implementing our HR Management template can bring numerous advantages to your organization:
- //
- // - Increased Efficiency: Automate routine HR tasks and streamline workflows
- // - Improved Data Accuracy: Centralize employee information and reduce errors in record-keeping
- // - Enhanced Employee Experience: Provide self-service options for employees to access their information
- // - Better Decision Making: Leverage HR analytics to make informed strategic decisions
- // - Scalability: Easily adapt the template to your growing organization's needs
- // - Cost Savings: Reduce administrative overhead and optimize resource allocation
- //
- //
Start transforming your HR processes today with UnDB's comprehensive HR Management template!
- // `,
- // template: {
- // type: "base",
- // template: templates.hr as IBaseTemplateDTO,
- // },
- // },
]
if (env.NODE_ENV === "development") {
diff --git a/packages/table/src/dto/create-table.dto.ts b/packages/table/src/dto/create-table.dto.ts
index e0acaf2ba..b81f2fc8c 100644
--- a/packages/table/src/dto/create-table.dto.ts
+++ b/packages/table/src/dto/create-table.dto.ts
@@ -4,6 +4,8 @@ import { z } from "@undb/zod"
import { createFormDTO } from "../modules/forms/dto/create-form.dto"
import { createRecordDTO } from "../modules/records/record/dto/create-record.dto"
import { createSchemaDTO, createTablesSchemaDTO } from "../modules/schema/dto/create-schema.dto"
+import { fieldId } from "../modules/schema/fields/field-id.vo"
+import { fieldName } from "../modules/schema/fields/field-name.vo"
import { createViewDTO } from "../modules/views/dto/create-view.dto"
import { tableId } from "../table-id.vo"
import { tableName } from "../table-name.vo"
@@ -15,6 +17,7 @@ export const createTableDTO = z.object({
spaceId: spaceIdSchema,
schema: createSchemaDTO,
+ fieldsOrder: z.array(fieldName.or(fieldId)).optional(),
views: createViewDTO.array().optional(),
forms: createFormDTO.array().optional(),
diff --git a/packages/table/src/modules/schema/schema.vo.ts b/packages/table/src/modules/schema/schema.vo.ts
index cd5030a62..f6c5f9500 100644
--- a/packages/table/src/modules/schema/schema.vo.ts
+++ b/packages/table/src/modules/schema/schema.vo.ts
@@ -82,6 +82,28 @@ export class Schema extends ValueObject
{
return new WithNewFieldSpecification(field)
}
+ reorderFields(fieldsOrder: string[]): Schema {
+ const orderedFields: Field[] = []
+ const fieldSet = new Set(fieldsOrder)
+
+ // ้ฆๅ
ๆทปๅ ๆ็
ง fieldsOrder ๆๅบ็ๅญๆฎต
+ for (const idOrName of fieldsOrder) {
+ const field = this.fieldMapById.get(idOrName) || this.fieldMapByName.get(idOrName)
+ if (field) {
+ orderedFields.push(field)
+ }
+ }
+
+ // ๆทปๅ ๆชๅจ fieldsOrder ไธญๆๅฎ็ๅญๆฎต
+ for (const field of this.fields) {
+ if (!fieldSet.has(field.id.value) && !fieldSet.has(field.name.value)) {
+ orderedFields.push(field)
+ }
+ }
+
+ return new Schema(orderedFields)
+ }
+
createField(field: Field) {
return new Schema([...this.fields, field])
}
diff --git a/packages/table/src/table.do.ts b/packages/table/src/table.do.ts
index 6f4ecb9b3..b855cdbc9 100644
--- a/packages/table/src/table.do.ts
+++ b/packages/table/src/table.do.ts
@@ -83,6 +83,10 @@ export class TableDo extends AggregateRoot {
#createReferenceField = createReferenceField
+ reorderFields(fieldsOrder: string[]) {
+ this.schema = this.schema.reorderFields(fieldsOrder)
+ }
+
getOrderedFields(formId?: FormId, viewId?: string): Field[] {
const fields = this.schema.fields
if (formId) {
diff --git a/packages/table/src/table.factory.ts b/packages/table/src/table.factory.ts
index c2d40e03a..bb2a88a2e 100644
--- a/packages/table/src/table.factory.ts
+++ b/packages/table/src/table.factory.ts
@@ -162,6 +162,12 @@ export class TableFactory {
}
}
+ for (const { table, dto } of tables) {
+ if (Array.isArray(dto.fieldsOrder)) {
+ table.reorderFields(dto.fieldsOrder)
+ }
+ }
+
return tables.map(({ table, dto }) => {
const records = dto.records?.map((record) => RecordDO.create(table, record)) ?? []
return { table, records }
diff --git a/packages/template/src/dto/template-schema.dto.ts b/packages/template/src/dto/template-schema.dto.ts
index 0f05f4efc..f9f8c5c3a 100644
--- a/packages/template/src/dto/template-schema.dto.ts
+++ b/packages/template/src/dto/template-schema.dto.ts
@@ -20,6 +20,7 @@ import {
createTablesUrlFieldDTO,
createTablesUserFieldDTO,
createViewWithoutNameDTO,
+ fieldId,
fieldName,
flattenCreateRecordDTO,
formName,
@@ -59,6 +60,7 @@ const templateFormDTO = z.record(formName, createFormWithoutNameDTO)
const basicTemplateTableDTO = z.object({
id: tableId.optional(),
schema: templateSchemaDTO,
+ fieldsOrder: z.array(fieldName.or(fieldId)).optional(),
views: tempalteViewDTO.optional(),
forms: templateFormDTO.optional(),
diff --git a/packages/template/src/template.factory.ts b/packages/template/src/template.factory.ts
index a7388025e..50b2642b9 100644
--- a/packages/template/src/template.factory.ts
+++ b/packages/template/src/template.factory.ts
@@ -50,6 +50,7 @@ export class TemplateFactory {
name,
schema,
spaceId,
+ fieldsOrder: table.fieldsOrder,
views,
forms,
diff --git a/packages/template/src/template/value-objects/template-category.vo.ts b/packages/template/src/template/value-objects/template-category.vo.ts
index 0fed6d4ce..c5fd807be 100644
--- a/packages/template/src/template/value-objects/template-category.vo.ts
+++ b/packages/template/src/template/value-objects/template-category.vo.ts
@@ -16,6 +16,8 @@ export const templateCategory = z.enum([
"startup",
"project",
"personal",
+ "development",
+ "agile",
])
export type ITemplateCategory = z.infer
diff --git a/packages/template/src/templates/agileDevelopment.base.json b/packages/template/src/templates/agileDevelopment.base.json
new file mode 100644
index 000000000..d23c4055f
--- /dev/null
+++ b/packages/template/src/templates/agileDevelopment.base.json
@@ -0,0 +1,1219 @@
+{
+ "Agile Development Management": {
+ "tables": {
+ "Requirements": {
+ "fieldsOrder": [
+ "Title",
+ "Description",
+ "Priority",
+ "Status",
+ "Created Date",
+ "Estimated Completion Date",
+ "Actual Completion Date",
+ "Assignee",
+ "Assignee Name",
+ "Related Tasks",
+ "Related Defects"
+ ],
+ "schema": {
+ "Title": {
+ "id": "title",
+ "type": "string",
+ "constraint": {
+ "required": true
+ },
+ "display": true
+ },
+ "Description": {
+ "id": "description",
+ "type": "longText"
+ },
+ "Priority": {
+ "id": "priority",
+ "type": "select",
+ "constraint": {
+ "max": 1,
+ "required": true
+ },
+ "option": {
+ "options": [
+ {
+ "id": "high",
+ "name": "High",
+ "color": "red"
+ },
+ {
+ "id": "medium",
+ "name": "Medium",
+ "color": "yellow"
+ },
+ {
+ "id": "low",
+ "name": "Low",
+ "color": "green"
+ }
+ ]
+ }
+ },
+ "Status": {
+ "id": "status",
+ "type": "select",
+ "constraint": {
+ "max": 1,
+ "required": true
+ },
+ "option": {
+ "options": [
+ {
+ "id": "new",
+ "name": "New",
+ "color": "blue"
+ },
+ {
+ "id": "in_progress",
+ "name": "In Progress",
+ "color": "yellow"
+ },
+ {
+ "id": "completed",
+ "name": "Completed",
+ "color": "green"
+ }
+ ]
+ }
+ },
+ "Created Date": {
+ "id": "created_date",
+ "type": "date",
+ "constraint": {
+ "required": true
+ }
+ },
+ "Estimated Completion Date": {
+ "id": "estimated_completion_date",
+ "type": "date"
+ },
+ "Actual Completion Date": {
+ "id": "actual_completion_date",
+ "type": "date"
+ },
+ "Assignee": {
+ "id": "assignee",
+ "type": "reference",
+ "option": {
+ "foreignTable": {
+ "tableName": "Team Members"
+ }
+ }
+ },
+ "Assignee Name": {
+ "id": "assignee_name",
+ "type": "rollup",
+ "option": {
+ "referenceFieldId": "assignee",
+ "rollupFieldId": "name",
+ "fn": "lookup"
+ }
+ },
+ "Related Tasks": {
+ "id": "related_tasks",
+ "type": "reference",
+ "option": {
+ "symmetricFieldId": "related_requirement"
+ }
+ },
+ "Related Defects": {
+ "id": "related_defects",
+ "type": "reference",
+ "option": {
+ "symmetricFieldId": "related_requirement"
+ }
+ }
+ },
+ "views": {
+ "All Requirements": {
+ "type": "grid",
+ "sort": [
+ {
+ "fieldId": "created_date",
+ "direction": "desc"
+ }
+ ]
+ },
+ "By Status": {
+ "type": "kanban",
+ "kanban": {
+ "field": "status"
+ }
+ }
+ },
+ "records": [
+ {
+ "id": "REQ001",
+ "title": "User Login Feature",
+ "description": "Implement user login and authentication functionality",
+ "priority": "high",
+ "status": "in_progress",
+ "created_date": "2023-05-01",
+ "estimated_completion_date": "2023-05-15",
+ "assignee": ["TM001"],
+ "related_tasks": ["TASK001", "TASK002"],
+ "related_defects": ["DEF001"]
+ },
+ {
+ "id": "REQ002",
+ "title": "Data Visualization Dashboard",
+ "description": "Create a dashboard for displaying key metrics",
+ "priority": "medium",
+ "status": "new",
+ "created_date": "2023-05-02",
+ "estimated_completion_date": "2023-05-30",
+ "assignee": ["TM002"],
+ "related_tasks": ["TASK003"]
+ },
+ {
+ "id": "REQ003",
+ "title": "User Profile Management",
+ "description": "Implement functionality for users to manage their profiles",
+ "priority": "medium",
+ "status": "new",
+ "created_date": "2023-05-03",
+ "estimated_completion_date": "2023-05-20",
+ "assignee": ["TM003"],
+ "related_tasks": ["TASK004", "TASK005"]
+ },
+ {
+ "id": "REQ004",
+ "title": "Search Functionality",
+ "description": "Implement search feature across the application",
+ "priority": "high",
+ "status": "new",
+ "created_date": "2023-05-04",
+ "estimated_completion_date": "2023-05-25",
+ "assignee": ["TM004"],
+ "related_tasks": ["TASK006"]
+ },
+ {
+ "id": "REQ005",
+ "title": "Email Notification System",
+ "description": "Implement email notifications for various user actions",
+ "priority": "low",
+ "status": "new",
+ "created_date": "2023-05-05",
+ "estimated_completion_date": "2023-06-10",
+ "assignee": ["TM001"],
+ "related_tasks": ["TASK007", "TASK008"]
+ },
+ {
+ "id": "REQ006",
+ "title": "Mobile Responsiveness",
+ "description": "Ensure the application is fully responsive on mobile devices",
+ "priority": "high",
+ "status": "new",
+ "created_date": "2023-05-06",
+ "estimated_completion_date": "2023-06-15",
+ "assignee": ["TM002"],
+ "related_tasks": ["TASK009", "TASK010"]
+ },
+ {
+ "id": "REQ007",
+ "title": "User Activity Logging",
+ "description": "Implement logging system for user activities",
+ "priority": "medium",
+ "status": "new",
+ "created_date": "2023-05-07",
+ "estimated_completion_date": "2023-05-28",
+ "assignee": ["TM003"],
+ "related_tasks": ["TASK011"]
+ },
+ {
+ "id": "REQ008",
+ "title": "Data Export Feature",
+ "description": "Allow users to export their data in various formats",
+ "priority": "low",
+ "status": "new",
+ "created_date": "2023-05-08",
+ "estimated_completion_date": "2023-06-20",
+ "assignee": ["TM004"],
+ "related_tasks": ["TASK012", "TASK013"]
+ },
+ {
+ "id": "REQ009",
+ "title": "Multi-language Support",
+ "description": "Implement multi-language support for the application",
+ "priority": "medium",
+ "status": "new",
+ "created_date": "2023-05-09",
+ "estimated_completion_date": "2023-06-30",
+ "assignee": ["TM001"],
+ "related_tasks": ["TASK014", "TASK015"]
+ },
+ {
+ "id": "REQ010",
+ "title": "Performance Optimization",
+ "description": "Optimize application performance and loading times",
+ "priority": "high",
+ "status": "new",
+ "created_date": "2023-05-10",
+ "estimated_completion_date": "2023-06-25",
+ "assignee": ["TM002"],
+ "related_tasks": ["TASK016", "TASK017"]
+ }
+ ]
+ },
+ "Defects": {
+ "fieldsOrder": [
+ "Title",
+ "Description",
+ "Severity",
+ "Status",
+ "Created Date",
+ "Resolved Date",
+ "Assignee",
+ "Assignee Name",
+ "Related Requirement"
+ ],
+ "schema": {
+ "Title": {
+ "id": "title",
+ "type": "string",
+ "constraint": {
+ "required": true
+ },
+ "display": true
+ },
+ "Description": {
+ "id": "description",
+ "type": "longText"
+ },
+ "Severity": {
+ "id": "severity",
+ "type": "select",
+ "constraint": {
+ "max": 1,
+ "required": true
+ },
+ "option": {
+ "options": [
+ {
+ "id": "critical",
+ "name": "Critical",
+ "color": "red"
+ },
+ {
+ "id": "major",
+ "name": "Major",
+ "color": "orange"
+ },
+ {
+ "id": "minor",
+ "name": "Minor",
+ "color": "yellow"
+ }
+ ]
+ }
+ },
+ "Status": {
+ "id": "status",
+ "type": "select",
+ "constraint": {
+ "max": 1,
+ "required": true
+ },
+ "option": {
+ "options": [
+ {
+ "id": "open",
+ "name": "Open",
+ "color": "red"
+ },
+ {
+ "id": "in_progress",
+ "name": "In Progress",
+ "color": "yellow"
+ },
+ {
+ "id": "resolved",
+ "name": "Resolved",
+ "color": "green"
+ }
+ ]
+ }
+ },
+ "Created Date": {
+ "id": "created_date",
+ "type": "date",
+ "constraint": {
+ "required": true
+ }
+ },
+ "Resolved Date": {
+ "id": "resolved_date",
+ "type": "date"
+ },
+ "Assignee": {
+ "id": "assignee",
+ "type": "reference",
+ "option": {
+ "foreignTable": {
+ "tableName": "Team Members"
+ }
+ }
+ },
+ "Assignee Name": {
+ "id": "assignee_name",
+ "type": "rollup",
+ "option": {
+ "referenceFieldId": "assignee",
+ "rollupFieldId": "name",
+ "fn": "lookup"
+ }
+ },
+ "Related Requirement": {
+ "id": "related_requirement",
+ "type": "reference",
+ "option": {
+ "foreignTable": {
+ "tableName": "Requirements"
+ }
+ }
+ }
+ },
+ "views": {
+ "All Defects": {
+ "type": "grid",
+ "sort": [
+ {
+ "fieldId": "created_date",
+ "direction": "desc"
+ }
+ ]
+ },
+ "By Status": {
+ "type": "kanban",
+ "kanban": {
+ "field": "status"
+ }
+ }
+ },
+ "records": [
+ {
+ "id": "DEF001",
+ "title": "Login Button Unresponsive",
+ "description": "The login button doesn't respond when clicked",
+ "severity": "major",
+ "status": "open",
+ "created_date": "2023-05-03",
+ "assignee": ["TM003"],
+ "related_requirement": ["REQ001"]
+ },
+ {
+ "id": "DEF002",
+ "title": "Incorrect Data in Dashboard",
+ "description": "The sales data in the dashboard is showing incorrect values",
+ "severity": "critical",
+ "status": "in_progress",
+ "created_date": "2023-05-04",
+ "assignee": ["TM004"],
+ "related_requirement": ["REQ002"]
+ },
+ {
+ "id": "DEF003",
+ "title": "Profile Picture Upload Fails",
+ "description": "Users are unable to upload profile pictures",
+ "severity": "minor",
+ "status": "open",
+ "created_date": "2023-05-05",
+ "assignee": ["TM001"],
+ "related_requirement": ["REQ003"]
+ },
+ {
+ "id": "DEF004",
+ "title": "Search Results Inconsistent",
+ "description": "Search results are inconsistent across different pages",
+ "severity": "major",
+ "status": "open",
+ "created_date": "2023-05-06",
+ "assignee": ["TM002"],
+ "related_requirement": ["REQ004"]
+ },
+ {
+ "id": "DEF005",
+ "title": "Email Notifications Not Sending",
+ "description": "Users are not receiving email notifications",
+ "severity": "critical",
+ "status": "in_progress",
+ "created_date": "2023-05-07",
+ "assignee": ["TM003"],
+ "related_requirement": ["REQ005"]
+ },
+ {
+ "id": "DEF006",
+ "title": "Mobile Layout Broken",
+ "description": "The layout is broken on certain mobile devices",
+ "severity": "major",
+ "status": "open",
+ "created_date": "2023-05-08",
+ "assignee": ["TM004"],
+ "related_requirement": ["REQ006"]
+ },
+ {
+ "id": "DEF007",
+ "title": "User Activity Logs Incomplete",
+ "description": "Some user activities are not being logged",
+ "severity": "minor",
+ "status": "open",
+ "created_date": "2023-05-09",
+ "assignee": ["TM001"],
+ "related_requirement": ["REQ007"]
+ },
+ {
+ "id": "DEF008",
+ "title": "Data Export Formatting Issues",
+ "description": "Exported data has formatting issues in certain file types",
+ "severity": "minor",
+ "status": "open",
+ "created_date": "2023-05-10",
+ "assignee": ["TM002"],
+ "related_requirement": ["REQ008"]
+ },
+ {
+ "id": "DEF009",
+ "title": "Language Switch Causes Crash",
+ "description": "App crashes when switching languages in certain scenarios",
+ "severity": "critical",
+ "status": "in_progress",
+ "created_date": "2023-05-11",
+ "assignee": ["TM003"],
+ "related_requirement": ["REQ009"]
+ },
+ {
+ "id": "DEF010",
+ "title": "Slow Loading on Large Datasets",
+ "description": "Application becomes unresponsive with large datasets",
+ "severity": "major",
+ "status": "open",
+ "created_date": "2023-05-12",
+ "assignee": ["TM004"],
+ "related_requirement": ["REQ010"]
+ }
+ ]
+ },
+ "Iterations": {
+ "fieldsOrder": ["Name", "Start Date", "End Date", "Status", "Goals", "Related Requirements", "Related Tasks"],
+ "schema": {
+ "Name": {
+ "id": "name",
+ "type": "string",
+ "constraint": {
+ "required": true
+ },
+ "display": true
+ },
+ "Start Date": {
+ "id": "start_date",
+ "type": "date",
+ "constraint": {
+ "required": true
+ }
+ },
+ "End Date": {
+ "id": "end_date",
+ "type": "date",
+ "constraint": {
+ "required": true
+ }
+ },
+ "Status": {
+ "id": "status",
+ "type": "select",
+ "constraint": {
+ "max": 1,
+ "required": true
+ },
+ "option": {
+ "options": [
+ {
+ "id": "planned",
+ "name": "Planned",
+ "color": "blue"
+ },
+ {
+ "id": "in_progress",
+ "name": "In Progress",
+ "color": "yellow"
+ },
+ {
+ "id": "completed",
+ "name": "Completed",
+ "color": "green"
+ }
+ ]
+ }
+ },
+ "Goals": {
+ "id": "goals",
+ "type": "longText"
+ },
+ "Related Requirements": {
+ "id": "related_requirements",
+ "type": "reference",
+ "option": {
+ "foreignTable": {
+ "tableName": "Requirements"
+ }
+ }
+ },
+ "Related Tasks": {
+ "id": "related_tasks",
+ "type": "reference",
+ "option": {
+ "foreignTable": {
+ "tableName": "Tasks"
+ }
+ }
+ }
+ },
+ "views": {
+ "All Iterations": {
+ "type": "grid",
+ "sort": [
+ {
+ "fieldId": "start_date",
+ "direction": "desc"
+ }
+ ]
+ }
+ },
+ "records": [
+ {
+ "id": "IT001",
+ "name": "Sprint 1",
+ "start_date": "2023-05-01",
+ "end_date": "2023-05-14",
+ "status": "in_progress",
+ "goals": "Complete user login feature and start dashboard development",
+ "related_requirements": ["REQ001", "REQ002"],
+ "related_tasks": ["TASK001", "TASK002", "TASK003"]
+ },
+ {
+ "id": "IT002",
+ "name": "Sprint 2",
+ "start_date": "2023-05-15",
+ "end_date": "2023-05-28",
+ "status": "planned",
+ "goals": "Finish dashboard development and address major defects",
+ "related_requirements": ["REQ002"],
+ "related_tasks": ["TASK004", "TASK005"]
+ },
+ {
+ "id": "IT003",
+ "name": "Sprint 3",
+ "start_date": "2023-05-29",
+ "end_date": "2023-06-11",
+ "status": "planned",
+ "goals": "Implement user profile management and search functionality",
+ "related_requirements": ["REQ003", "REQ004"],
+ "related_tasks": ["TASK006", "TASK007", "TASK008"]
+ },
+ {
+ "id": "IT004",
+ "name": "Sprint 4",
+ "start_date": "2023-06-12",
+ "end_date": "2023-06-25",
+ "status": "planned",
+ "goals": "Develop email notification system and improve mobile responsiveness",
+ "related_requirements": ["REQ005", "REQ006"],
+ "related_tasks": ["TASK009", "TASK010", "TASK011"]
+ },
+ {
+ "id": "IT005",
+ "name": "Sprint 5",
+ "start_date": "2023-06-26",
+ "end_date": "2023-07-09",
+ "status": "planned",
+ "goals": "Implement user activity logging and data export feature",
+ "related_requirements": ["REQ007", "REQ008"],
+ "related_tasks": ["TASK012", "TASK013", "TASK014"]
+ },
+ {
+ "id": "IT006",
+ "name": "Sprint 6",
+ "start_date": "2023-07-10",
+ "end_date": "2023-07-23",
+ "status": "planned",
+ "goals": "Add multi-language support and focus on performance optimization",
+ "related_requirements": ["REQ009", "REQ010"],
+ "related_tasks": ["TASK015", "TASK016", "TASK017"]
+ }
+ ]
+ },
+ "Test Cases": {
+ "fieldsOrder": [
+ "Title",
+ "Description",
+ "Status",
+ "Created Date",
+ "Last Executed Date",
+ "Related Requirement",
+ "Related Defect"
+ ],
+ "schema": {
+ "Title": {
+ "id": "title",
+ "type": "string",
+ "constraint": {
+ "required": true
+ },
+ "display": true
+ },
+ "Description": {
+ "id": "description",
+ "type": "longText"
+ },
+ "Status": {
+ "id": "status",
+ "type": "select",
+ "constraint": {
+ "max": 1,
+ "required": true
+ },
+ "option": {
+ "options": [
+ {
+ "id": "not_executed",
+ "name": "Not Executed",
+ "color": "gray"
+ },
+ {
+ "id": "passed",
+ "name": "Passed",
+ "color": "green"
+ },
+ {
+ "id": "failed",
+ "name": "Failed",
+ "color": "red"
+ }
+ ]
+ }
+ },
+ "Created Date": {
+ "id": "created_date",
+ "type": "date",
+ "constraint": {
+ "required": true
+ }
+ },
+ "Last Executed Date": {
+ "id": "last_executed_date",
+ "type": "date"
+ },
+ "Related Requirement": {
+ "id": "related_requirement",
+ "type": "reference",
+ "option": {
+ "foreignTable": {
+ "tableName": "Requirements"
+ }
+ }
+ },
+ "Related Defect": {
+ "id": "related_defect",
+ "type": "reference",
+ "option": {
+ "foreignTable": {
+ "tableName": "Defects"
+ }
+ }
+ }
+ },
+ "views": {
+ "All Test Cases": {
+ "type": "grid",
+ "sort": [
+ {
+ "fieldId": "created_date",
+ "direction": "desc"
+ }
+ ]
+ },
+ "By Status": {
+ "type": "kanban",
+ "kanban": {
+ "field": "status"
+ }
+ }
+ },
+ "records": [
+ {
+ "id": "TC001",
+ "title": "User Login Test",
+ "description": "Test user login functionality with valid credentials",
+ "status": "failed",
+ "created_date": "2023-05-02",
+ "last_executed_date": "2023-05-03",
+ "related_requirement": ["REQ001"],
+ "related_defect": ["DEF001"]
+ },
+ {
+ "id": "TC002",
+ "title": "Dashboard Data Accuracy Test",
+ "description": "Verify the accuracy of data displayed in the dashboard",
+ "status": "not_executed",
+ "created_date": "2023-05-03",
+ "related_requirement": ["REQ002"]
+ },
+ {
+ "id": "TC003",
+ "title": "User Profile Update Test",
+ "description": "Test the functionality of updating user profile information",
+ "status": "passed",
+ "created_date": "2023-05-04",
+ "last_executed_date": "2023-05-05",
+ "related_requirement": ["REQ003"]
+ },
+ {
+ "id": "TC004",
+ "title": "Search Functionality Test",
+ "description": "Verify the search feature returns accurate results",
+ "status": "failed",
+ "created_date": "2023-05-05",
+ "last_executed_date": "2023-05-06",
+ "related_requirement": ["REQ004"],
+ "related_defect": ["DEF004"]
+ },
+ {
+ "id": "TC005",
+ "title": "Email Notification Test",
+ "description": "Test if email notifications are sent correctly for various actions",
+ "status": "not_executed",
+ "created_date": "2023-05-06",
+ "related_requirement": ["REQ005"]
+ },
+ {
+ "id": "TC006",
+ "title": "Mobile Responsiveness Test",
+ "description": "Verify the application's responsiveness on various mobile devices",
+ "status": "failed",
+ "created_date": "2023-05-07",
+ "last_executed_date": "2023-05-08",
+ "related_requirement": ["REQ006"],
+ "related_defect": ["DEF006"]
+ },
+ {
+ "id": "TC007",
+ "title": "User Activity Logging Test",
+ "description": "Verify that all user activities are correctly logged",
+ "status": "passed",
+ "created_date": "2023-05-08",
+ "last_executed_date": "2023-05-09",
+ "related_requirement": ["REQ007"]
+ },
+ {
+ "id": "TC008",
+ "title": "Data Export Feature Test",
+ "description": "Test the functionality of exporting data in various formats",
+ "status": "failed",
+ "created_date": "2023-05-09",
+ "last_executed_date": "2023-05-10",
+ "related_requirement": ["REQ008"],
+ "related_defect": ["DEF008"]
+ },
+ {
+ "id": "TC009",
+ "title": "Multi-language Support Test",
+ "description": "Verify that the application correctly supports multiple languages",
+ "status": "not_executed",
+ "created_date": "2023-05-10",
+ "related_requirement": ["REQ009"]
+ },
+ {
+ "id": "TC010",
+ "title": "Performance Optimization Test",
+ "description": "Test the application's performance under various load conditions",
+ "status": "not_executed",
+ "created_date": "2023-05-11",
+ "related_requirement": ["REQ010"]
+ }
+ ]
+ },
+ "Tasks": {
+ "fieldsOrder": [
+ "Title",
+ "Description",
+ "Status",
+ "Priority",
+ "Estimated Hours",
+ "Actual Hours",
+ "Assignee",
+ "Assignee Name",
+ "Related Requirement",
+ "Related Iteration"
+ ],
+ "schema": {
+ "Title": {
+ "id": "title",
+ "type": "string",
+ "constraint": {
+ "required": true
+ },
+ "display": true
+ },
+ "Description": {
+ "id": "description",
+ "type": "longText"
+ },
+ "Status": {
+ "id": "status",
+ "type": "select",
+ "constraint": {
+ "max": 1,
+ "required": true
+ },
+ "option": {
+ "options": [
+ {
+ "id": "to_do",
+ "name": "To Do",
+ "color": "blue"
+ },
+ {
+ "id": "in_progress",
+ "name": "In Progress",
+ "color": "yellow"
+ },
+ {
+ "id": "done",
+ "name": "Done",
+ "color": "green"
+ }
+ ]
+ }
+ },
+ "Priority": {
+ "id": "priority",
+ "type": "select",
+ "constraint": {
+ "max": 1,
+ "required": true
+ },
+ "option": {
+ "options": [
+ {
+ "id": "high",
+ "name": "High",
+ "color": "red"
+ },
+ {
+ "id": "medium",
+ "name": "Medium",
+ "color": "yellow"
+ },
+ {
+ "id": "low",
+ "name": "Low",
+ "color": "green"
+ }
+ ]
+ }
+ },
+ "Estimated Hours": {
+ "id": "estimated_hours",
+ "type": "number"
+ },
+ "Actual Hours": {
+ "id": "actual_hours",
+ "type": "number"
+ },
+ "Assignee": {
+ "id": "assignee",
+ "type": "reference",
+ "option": {
+ "foreignTable": {
+ "tableName": "Team Members"
+ }
+ }
+ },
+ "Assignee Name": {
+ "id": "assignee_name",
+ "type": "rollup",
+ "option": {
+ "referenceFieldId": "assignee",
+ "rollupFieldId": "name",
+ "fn": "lookup"
+ }
+ },
+ "Related Requirement": {
+ "id": "related_requirement",
+ "type": "reference",
+ "option": {
+ "foreignTable": {
+ "tableName": "Requirements"
+ }
+ }
+ },
+ "Related Iteration": {
+ "id": "related_iteration",
+ "type": "reference",
+ "option": {
+ "foreignTable": {
+ "tableName": "Iterations"
+ }
+ }
+ }
+ },
+ "views": {
+ "All Tasks": {
+ "type": "grid",
+ "sort": [
+ {
+ "fieldId": "priority",
+ "direction": "desc"
+ }
+ ]
+ },
+ "By Status": {
+ "type": "kanban",
+ "kanban": {
+ "field": "status"
+ }
+ }
+ },
+ "records": [
+ {
+ "id": "TASK001",
+ "title": "Implement Login UI",
+ "description": "Create the user interface for the login screen",
+ "status": "done",
+ "priority": "high",
+ "estimated_hours": 8,
+ "actual_hours": 10,
+ "assignee": ["TM001"],
+ "related_requirement": ["REQ001"],
+ "related_iteration": ["IT001"]
+ },
+ {
+ "id": "TASK002",
+ "title": "Implement Login Backend",
+ "description": "Develop the backend logic for user authentication",
+ "status": "in_progress",
+ "priority": "high",
+ "estimated_hours": 16,
+ "actual_hours": 12,
+ "assignee": ["TM002"],
+ "related_requirement": ["REQ001"],
+ "related_iteration": ["IT001"]
+ },
+ {
+ "id": "TASK003",
+ "title": "Design Dashboard Layout",
+ "description": "Create the layout design for the data visualization dashboard",
+ "status": "to_do",
+ "priority": "medium",
+ "estimated_hours": 12,
+ "assignee": ["TM003"],
+ "related_requirement": ["REQ002"],
+ "related_iteration": ["IT001"]
+ }
+ ]
+ },
+ "Time Entries": {
+ "fieldsOrder": ["Date", "Hours", "Description", "Team Member", "Team Member Name", "Related Task"],
+ "schema": {
+ "Date": {
+ "id": "date",
+ "type": "date",
+ "constraint": {
+ "required": true
+ }
+ },
+ "Hours": {
+ "id": "hours",
+ "type": "number",
+ "constraint": {
+ "required": true
+ }
+ },
+ "Description": {
+ "id": "description",
+ "type": "longText"
+ },
+ "Team Member": {
+ "id": "team_member",
+ "type": "reference",
+ "option": {
+ "foreignTable": {
+ "tableName": "Team Members"
+ }
+ }
+ },
+ "Team Member Name": {
+ "id": "team_member_name",
+ "type": "rollup",
+ "option": {
+ "referenceFieldId": "team_member",
+ "rollupFieldId": "name",
+ "fn": "lookup"
+ }
+ },
+ "Related Task": {
+ "id": "related_task",
+ "type": "reference",
+ "option": {
+ "foreignTable": {
+ "tableName": "Tasks"
+ }
+ }
+ }
+ },
+ "views": {
+ "All Time Entries": {
+ "type": "grid",
+ "sort": [
+ {
+ "fieldId": "date",
+ "direction": "desc"
+ }
+ ]
+ }
+ },
+ "records": [
+ {
+ "id": "TE001",
+ "date": "2023-05-01",
+ "hours": 6,
+ "description": "Worked on login UI implementation",
+ "team_member": ["TM001"],
+ "related_task": ["TASK001"]
+ },
+ {
+ "id": "TE002",
+ "date": "2023-05-02",
+ "hours": 8,
+ "description": "Continued work on login backend",
+ "team_member": ["TM002"],
+ "related_task": ["TASK002"]
+ }
+ ]
+ },
+ "Team Members": {
+ "fieldsOrder": ["Name", "Email", "Role", "Assigned Tasks", "Assigned Requirements", "Time Entries"],
+ "schema": {
+ "Name": {
+ "id": "name",
+ "type": "string",
+ "constraint": {
+ "required": true
+ },
+ "display": true
+ },
+ "Email": {
+ "id": "email",
+ "type": "email",
+ "constraint": {
+ "required": true
+ }
+ },
+ "Role": {
+ "id": "role",
+ "type": "select",
+ "constraint": {
+ "max": 1,
+ "required": true
+ },
+ "option": {
+ "options": [
+ {
+ "id": "developer",
+ "name": "Developer",
+ "color": "blue"
+ },
+ {
+ "id": "tester",
+ "name": "Tester",
+ "color": "green"
+ },
+ {
+ "id": "product_owner",
+ "name": "Product Owner",
+ "color": "purple"
+ },
+ {
+ "id": "scrum_master",
+ "name": "Scrum Master",
+ "color": "orange"
+ }
+ ]
+ }
+ },
+ "Assigned Tasks": {
+ "id": "assigned_tasks",
+ "type": "reference",
+ "option": {
+ "symmetricFieldId": "assignee"
+ }
+ },
+ "Assigned Requirements": {
+ "id": "assigned_requirements",
+ "type": "reference",
+ "option": {
+ "symmetricFieldId": "assignee"
+ }
+ },
+ "Time Entries": {
+ "id": "time_entries",
+ "type": "reference",
+ "option": {
+ "symmetricFieldId": "team_member"
+ }
+ }
+ },
+ "views": {
+ "All Team Members": {
+ "type": "grid"
+ },
+ "By Role": {
+ "type": "kanban",
+ "kanban": {
+ "field": "role"
+ }
+ }
+ },
+ "records": [
+ {
+ "id": "TM001",
+ "name": "John Doe",
+ "email": "john.doe@example.com",
+ "role": "developer",
+ "assigned_tasks": ["TASK001"],
+ "assigned_requirements": ["REQ001"],
+ "time_entries": ["TE001"]
+ },
+ {
+ "id": "TM002",
+ "name": "Jane Smith",
+ "email": "jane.smith@example.com",
+ "role": "developer",
+ "assigned_tasks": ["TASK002"],
+ "assigned_requirements": ["REQ002"],
+ "time_entries": ["TE002"]
+ },
+ {
+ "id": "TM003",
+ "name": "Bob Johnson",
+ "email": "bob.johnson@example.com",
+ "role": "tester",
+ "assigned_tasks": ["TASK003"]
+ },
+ {
+ "id": "TM004",
+ "name": "Alice Brown",
+ "email": "alice.brown@example.com",
+ "role": "product_owner"
+ }
+ ]
+ }
+ }
+ }
+}
diff --git a/packages/template/src/templates/hr.base.json b/packages/template/src/templates/hr.base.json
index 8f85b23d6..4592bee12 100644
--- a/packages/template/src/templates/hr.base.json
+++ b/packages/template/src/templates/hr.base.json
@@ -2,6 +2,24 @@
"Human Resource Management": {
"tables": {
"Employees": {
+ "fieldsOrder": [
+ "Name",
+ "Position",
+ "Department",
+ "Department Name",
+ "Manage Department",
+ "Manage Department Name",
+ "Start Date",
+ "Salary",
+ "Reports To",
+ "Manager Name",
+ "Subordinates",
+ "Subordinates Count",
+ "Subordinates Name",
+ "Email",
+ "Phone",
+ "Employment Status"
+ ],
"schema": {
"Name": {
"id": "name",
@@ -128,6 +146,24 @@
"fn": "lookup"
}
},
+ "Subordinates Count": {
+ "id": "subordinates_count",
+ "type": "rollup",
+ "option": {
+ "referenceFieldId": "subordinates",
+ "rollupFieldId": "id",
+ "fn": "count"
+ }
+ },
+ "Subordinates Name": {
+ "id": "subordinates_name",
+ "type": "rollup",
+ "option": {
+ "referenceFieldId": "subordinates",
+ "rollupFieldId": "name",
+ "fn": "lookup"
+ }
+ },
"Email": {
"id": "email",
"type": "email",
@@ -198,7 +234,8 @@
"start_date": "2023-01-15",
"salary": 70000,
"email": "alice@example.com",
- "employment_status": "full_time"
+ "employment_status": "full_time",
+ "phone": "123-456-7890"
},
{
"id": "EMP002",
@@ -209,7 +246,8 @@
"salary": 90000,
"reports_to": ["EMP003"],
"email": "bob@example.com",
- "employment_status": "full_time"
+ "employment_status": "full_time",
+ "phone": "234-567-8901"
},
{
"id": "EMP003",
@@ -219,11 +257,120 @@
"start_date": "2021-03-10",
"salary": 60000,
"email": "carol@example.com",
- "employment_status": "full_time"
+ "employment_status": "full_time",
+ "phone": "345-678-9012"
+ },
+ {
+ "id": "EMP004",
+ "name": "David Brown",
+ "position": "developer",
+ "department": ["dept1"],
+ "start_date": "2023-02-01",
+ "salary": 75000,
+ "email": "david@example.com",
+ "employment_status": "full_time",
+ "phone": "456-789-0123"
+ },
+ {
+ "id": "EMP005",
+ "name": "Emma Davis",
+ "position": "designer",
+ "department": ["dept3"],
+ "start_date": "2022-11-15",
+ "salary": 65000,
+ "email": "emma@example.com",
+ "employment_status": "full_time",
+ "phone": "567-890-1234"
+ },
+ {
+ "id": "EMP006",
+ "name": "Frank Wilson",
+ "position": "marketing",
+ "department": ["dept2"],
+ "start_date": "2023-03-20",
+ "salary": 68000,
+ "email": "frank@example.com",
+ "employment_status": "full_time",
+ "phone": "678-901-2345"
+ },
+ {
+ "id": "EMP007",
+ "name": "Grace Taylor",
+ "position": "finance",
+ "department": ["dept2"],
+ "start_date": "2022-09-01",
+ "salary": 72000,
+ "email": "grace@example.com",
+ "employment_status": "full_time",
+ "phone": "789-012-3456"
+ },
+ {
+ "id": "EMP008",
+ "name": "Henry Clark",
+ "position": "developer",
+ "department": ["dept1"],
+ "start_date": "2023-04-10",
+ "salary": 71000,
+ "email": "henry@example.com",
+ "employment_status": "full_time",
+ "phone": "890-123-4567"
+ },
+ {
+ "id": "EMP009",
+ "name": "Isabel Rodriguez",
+ "position": "hr",
+ "department": ["dept3"],
+ "start_date": "2022-07-15",
+ "salary": 62000,
+ "email": "isabel@example.com",
+ "employment_status": "full_time",
+ "phone": "901-234-5678"
+ },
+ {
+ "id": "EMP010",
+ "name": "Jack Thompson",
+ "position": "manager",
+ "department": ["dept1"],
+ "start_date": "2021-12-01",
+ "salary": 92000,
+ "email": "jack@example.com",
+ "employment_status": "full_time",
+ "phone": "012-345-6789"
+ },
+ {
+ "id": "EMP011",
+ "name": "Karen Lee",
+ "position": "designer",
+ "department": ["dept3"],
+ "start_date": "2023-01-05",
+ "salary": 67000,
+ "email": "karen@example.com",
+ "employment_status": "full_time",
+ "phone": "123-456-7891"
+ },
+ {
+ "id": "EMP012",
+ "name": "Liam Harris",
+ "position": "developer",
+ "department": ["dept1"],
+ "start_date": "2022-10-20",
+ "salary": 73000,
+ "email": "liam@example.com",
+ "employment_status": "full_time",
+ "phone": "234-567-8902"
}
]
},
"Departments": {
+ "fieldsOrder": [
+ "Department Name",
+ "Manager",
+ "Manager Name",
+ "Budget",
+ "Location",
+ "Employees",
+ "Employees Count"
+ ],
"schema": {
"Department Name": {
"id": "department_name",
@@ -306,10 +453,60 @@
"manager": null,
"budget": 250000,
"location": "San Francisco"
+ },
+ {
+ "id": "dept4",
+ "department_name": "Marketing",
+ "manager": ["EMP006"],
+ "budget": 400000,
+ "location": "Los Angeles"
+ },
+ {
+ "id": "dept5",
+ "department_name": "Finance",
+ "manager": ["EMP007"],
+ "budget": 350000,
+ "location": "Boston"
+ },
+ {
+ "id": "dept6",
+ "department_name": "Customer Support",
+ "manager": null,
+ "budget": 200000,
+ "location": "Dallas"
+ },
+ {
+ "id": "dept7",
+ "department_name": "Sales",
+ "manager": null,
+ "budget": 450000,
+ "location": "Miami"
+ },
+ {
+ "id": "dept8",
+ "department_name": "Research and Development",
+ "manager": ["EMP010"],
+ "budget": 600000,
+ "location": "Seattle"
+ },
+ {
+ "id": "dept9",
+ "department_name": "Quality Assurance",
+ "manager": null,
+ "budget": 180000,
+ "location": "Austin"
+ },
+ {
+ "id": "dept10",
+ "department_name": "Operations",
+ "manager": null,
+ "budget": 280000,
+ "location": "Denver"
}
]
},
"Payroll": {
+ "fieldsOrder": ["Employee Name", "Employee", "Month", "Amount", "Bonus", "Deductions", "Net Pay"],
"schema": {
"Employee Name": {
"id": "employee_name",
@@ -404,16 +601,89 @@
"bonus": 300,
"deductions": 800,
"net_pay": 5500
+ },
+ {
+ "employee": ["EMP004"],
+ "month": "2023-08-01",
+ "amount": 7500,
+ "bonus": 600,
+ "deductions": 1100,
+ "net_pay": 7000
+ },
+ {
+ "employee": ["EMP005"],
+ "month": "2023-08-01",
+ "amount": 6500,
+ "bonus": 400,
+ "deductions": 900,
+ "net_pay": 6000
+ },
+ {
+ "employee": ["EMP006"],
+ "month": "2023-08-01",
+ "amount": 6800,
+ "bonus": 450,
+ "deductions": 950,
+ "net_pay": 6300
+ },
+ {
+ "employee": ["EMP007"],
+ "month": "2023-08-01",
+ "amount": 7200,
+ "bonus": 550,
+ "deductions": 1050,
+ "net_pay": 6700
+ },
+ {
+ "employee": ["EMP008"],
+ "month": "2023-08-01",
+ "amount": 7100,
+ "bonus": 520,
+ "deductions": 1020,
+ "net_pay": 6600
+ },
+ {
+ "employee": ["EMP009"],
+ "month": "2023-08-01",
+ "amount": 6200,
+ "bonus": 320,
+ "deductions": 820,
+ "net_pay": 5700
+ },
+ {
+ "employee": ["EMP010"],
+ "month": "2023-08-01",
+ "amount": 9200,
+ "bonus": 1100,
+ "deductions": 1600,
+ "net_pay": 8700
+ },
+ {
+ "employee": ["EMP011"],
+ "month": "2023-08-01",
+ "amount": 6700,
+ "bonus": 420,
+ "deductions": 920,
+ "net_pay": 6200
+ },
+ {
+ "employee": ["EMP012"],
+ "month": "2023-08-01",
+ "amount": 7300,
+ "bonus": 570,
+ "deductions": 1070,
+ "net_pay": 6800
}
]
},
"Time Off Requests": {
+ "fieldsOrder": ["Employee Name", "Employee", "Start Date", "End Date", "Type", "Status", "Reason"],
"schema": {
"Employee": {
"id": "employee",
"type": "reference",
"option": {
- "createSymmetricField": true,
+ "createSymmetricField": false,
"foreignTable": {
"tableName": "Employees"
}
@@ -519,6 +789,38 @@
}
}
},
+ "forms": {
+ "Time Off Request Form": {
+ "fields": [
+ {
+ "fieldId": "employee",
+ "hidden": false,
+ "required": true
+ },
+ {
+ "fieldId": "start_date",
+ "hidden": false,
+ "required": true
+ },
+ {
+ "fieldId": "end_date",
+ "hidden": false,
+ "required": true
+ },
+ {
+ "fieldId": "type",
+ "hidden": false,
+ "defaultValue": "vacation",
+ "required": true
+ },
+ {
+ "fieldId": "reason",
+ "hidden": false,
+ "required": true
+ }
+ ]
+ }
+ },
"records": [
{
"employee": ["EMP001"],
@@ -543,10 +845,77 @@
"type": "sick",
"status": "approved",
"reason": "Recovering from surgery"
+ },
+ {
+ "employee": ["EMP004"],
+ "start_date": "2023-12-20",
+ "end_date": "2023-12-31",
+ "type": "vacation",
+ "status": "approved",
+ "reason": "Holiday break"
+ },
+ {
+ "employee": ["EMP005"],
+ "start_date": "2023-09-25",
+ "end_date": "2023-09-26",
+ "type": "personal",
+ "status": "approved",
+ "reason": "Attending a wedding"
+ },
+ {
+ "employee": ["EMP006"],
+ "start_date": "2023-10-05",
+ "end_date": "2023-10-07",
+ "type": "sick",
+ "status": "approved",
+ "reason": "Flu"
+ },
+ {
+ "employee": ["EMP007"],
+ "start_date": "2023-11-20",
+ "end_date": "2023-11-24",
+ "type": "vacation",
+ "status": "pending",
+ "reason": "Thanksgiving break"
+ },
+ {
+ "employee": ["EMP008"],
+ "start_date": "2023-12-01",
+ "end_date": "2023-12-02",
+ "type": "personal",
+ "status": "approved",
+ "reason": "Moving to a new apartment"
+ },
+ {
+ "employee": ["EMP009"],
+ "start_date": "2023-09-15",
+ "end_date": "2023-09-16",
+ "type": "sick",
+ "status": "approved",
+ "reason": "Dental procedure"
+ },
+ {
+ "employee": ["EMP010"],
+ "start_date": "2023-10-10",
+ "end_date": "2023-10-14",
+ "type": "vacation",
+ "status": "approved",
+ "reason": "Family reunion"
}
]
},
"Performance Reviews": {
+ "fieldsOrder": [
+ "Employee Name",
+ "Performance Rating",
+ "Employee",
+ "Review Date",
+ "Reviewer",
+ "Reviewer Name",
+ "Comments",
+ "Goals",
+ "Next Review Date"
+ ],
"schema": {
"Employee": {
"id": "employee",
@@ -569,7 +938,7 @@
"id": "reviewer",
"type": "reference",
"option": {
- "createSymmetricField": true,
+ "createSymmetricField": false,
"foreignTable": {
"tableName": "Employees"
}
@@ -642,6 +1011,58 @@
"comments": "Outstanding leadership and project management.",
"goals": "Mentor junior team members",
"next_review_date": "2024-01-01"
+ },
+ {
+ "employee": ["EMP003"],
+ "review_date": "2023-06-20",
+ "reviewer": ["EMP010"],
+ "performance_rating": 4,
+ "comments": "Excellent HR initiatives implemented.",
+ "goals": "Develop new employee onboarding program",
+ "next_review_date": "2023-12-20"
+ },
+ {
+ "employee": ["EMP004"],
+ "review_date": "2023-07-10",
+ "reviewer": ["EMP002"],
+ "performance_rating": 3,
+ "comments": "Good technical skills, needs improvement in communication.",
+ "goals": "Enhance communication with team members",
+ "next_review_date": "2024-01-10"
+ },
+ {
+ "employee": ["EMP005"],
+ "review_date": "2023-06-25",
+ "reviewer": ["EMP010"],
+ "performance_rating": 4,
+ "comments": "Creative designs, meets deadlines consistently.",
+ "goals": "Explore new design tools and techniques",
+ "next_review_date": "2023-12-25"
+ },
+ {
+ "employee": ["EMP006"],
+ "review_date": "2023-07-05",
+ "reviewer": ["EMP003"],
+ "performance_rating": 4,
+ "comments": "Effective marketing campaigns, good team player.",
+ "goals": "Develop skills in digital marketing",
+ "next_review_date": "2024-01-05"
+ },
+ {
+ "employee": ["EMP007"],
+ "review_date": "2023-06-30",
+ "reviewer": ["EMP010"],
+ "performance_rating": 5,
+ "comments": "Exceptional financial analysis and reporting.",
+ "goals": "Lead a cost-saving initiative",
+ "next_review_date": "2023-12-30"
+ },
+ {
+ "employee": ["EMP008"],
+ "review_date": "2023-07-15",
+ "reviewer": ["EMP002"],
+ "performance_rating": 4,
+ "comments": "Strong problem-solving skills, reliable team member."
}
]
}
diff --git a/packages/template/src/templates/index.ts b/packages/template/src/templates/index.ts
index c4d2d5c0c..07a8332df 100644
--- a/packages/template/src/templates/index.ts
+++ b/packages/template/src/templates/index.ts
@@ -1,3 +1,4 @@
+import { default as agileDevelopment } from "./agileDevelopment.base.json"
import { default as crm } from "./crm.base.json"
import { default as eventPlaningList } from "./eventPlaning.base.json"
import { default as hr } from "./hr.base.json"
@@ -18,6 +19,8 @@ const templates = {
salesCrm,
socialMediaContent,
hr,
+ agileDevelopment,
} as const
export { templates }
+