import * as React from "bloatless-react"; import { PropertyValueList, createPropertyValueIndexState, } from "../Components/propertyValueList"; import BoardViewModel from "../../ViewModel/Pages/boardViewModel"; import { FilteredList } from "../Components/filteredList"; import { TaskCategoryBulkChangeViewModel } from "../../ViewModel/Utility/taskPropertyBulkChangeViewModel"; import TaskViewModel from "../../ViewModel/Pages/taskViewModel"; import { TaskViewModelToEntry } from "../Components/taskEntry"; import { allowDrop } from "../utility"; import { translations } from "../translations"; export function BoardKanbanPage(boardViewModel: BoardViewModel) { return PropertyValueList( "category", (taskViewModel: TaskViewModel) => taskViewModel.task, boardViewModel.taskViewModels, ( categories: React.ListState, sortedCategories: React.State ) => { const categoryNameConverter: React.StateItemConverter = ( categoryName: string ) => { const index: React.State = createPropertyValueIndexState( sortedCategories, categoryName ); return KanbanBoard(categoryName, index, boardViewModel); }; return (
); } ); } function KanbanBoard( categoryName: string, index: React.State, boardViewModel: BoardViewModel ) { return FilteredList( { category: categoryName }, (taskViewModel: TaskViewModel) => taskViewModel.task, boardViewModel.filteredTaskViewModels, (taskViewModels: React.ListState) => { const viewModel: TaskCategoryBulkChangeViewModel = new TaskCategoryBulkChangeViewModel(taskViewModels, categoryName); function drop() { boardViewModel.handleDropWithinBoard(categoryName); } const view = (

); index.subscribe((newIndex) => { view.style.order = newIndex; }); return view; } ); }