From fc8a0a8d9bfad0ae90f92ec88a87ef6db394bdeb Mon Sep 17 00:00:00 2001 From: Philippe PITTOLI Date: Thu, 5 Dec 2019 04:47:29 +0100 Subject: [PATCH] almost display tasks --- client/index.ls | 71 +++++++++++++++++++++++++++++++---------------- client/project.ls | 62 +++++++++++++++++++++++++++++++---------- 2 files changed, 95 insertions(+), 38 deletions(-) diff --git a/client/index.ls b/client/index.ls index ee84ac2..64d62d4 100644 --- a/client/index.ls +++ b/client/index.ls @@ -42,6 +42,7 @@ Task = require "./task.ls" Project = require "./project.ls" Modal = require "./modal.ls" # ValidationModal = require "./validation-modal.ls" +UUID = require "uuid/v4" {create-projector, h} = maquette projector = create-projector! @@ -186,6 +187,27 @@ model.todod-ws.add-event-listener \list-removed, (message) -> model.project-list := model.project-list.filter((.id != message.list)) +model.todod-ws.add-event-listener \tasks, (message) -> + console.log message + + project = model.project-list.find((.id == message.list)) + + if project + tasks = message.tasks.map (e) -> Task e, project, model + project.tasks = tasks + projector.schedule-render! + +model.todod-ws.add-event-listener \task-created, (message) -> + console.log message + + task = message.task + list = model.project-list.find((.id == task.list)) + console.log task, list + + if list + list.tasks ++= [ Task task, list, model ] + projector.schedule-render! + render-navbar = -> h \div.navbar [ h \div.navbar-start [ @@ -207,22 +229,36 @@ render-navbar = -> render-project-list = -> h \div.section model.project-list.map (project) -> - if project - h \div.box { - key: project.id - onclick: -> - model.current-view := "project" - model.viewed-project := project.id - model.todod-ws.get-list project.id - } [ - bulma.title 4 project.title - ] + h \div.box { + key: project.id + onclick: -> + model.current-view := "project" + model.viewed-project := project.id + model.todod-ws.get-list project.id + model.todod-ws.get-tasks project.id + } [ + bulma.title 4 project.title + ] + +Column = (title) -> + { + title: title + id: UUID! # TODO FIXME XXX + } render-new-project-button = -> h \div.button.is-primary.is-large.is-fullwidth { onclick: -> model.todod-ws.add-list "New project", { - columns: ["Unassigned", "Work in progress", "To be checked", "Being checked", "Done"] + extra_properties: { + columns: [ + Column "Unassigned" + Column "Work in progress" + Column "To be checked" + Column "Being checked" + Column "Done" + ] + } } } [ "New project!" ] @@ -259,19 +295,6 @@ render-body = -> render-new-project-button! ] - # FIXME: TODO: XXX: modal testing - when "testing-modals" - h \div#testing-modals [ - render-navbar! - - console.log "rendering a modal" - # bulma.asking-modal model, {}, [ (h \button.button {} [ "rendering a modal" ]) ] - if model.modal - model.modal.render! - - render-new-project-button! - ] - when "project" h \div [ render-navbar! diff --git a/client/project.ls b/client/project.ls index 5601148..6bb4152 100644 --- a/client/project.ls +++ b/client/project.ls @@ -6,31 +6,65 @@ Modal = require './modal.ls' Project = (self, todod-ws) -> self.todod-ws = todod-ws - self.tasks = self.tasks.map (e) -> Task e, self, model + self.tasks = self.tasks.map (e) -> Task e, self, {} modal = void - self.render-column = (column) -> + self.render-column = (column, first) -> + # FIXME: display unregistred tasks in the first column + h \div.column [ + bulma.title 4 column.title + self.tasks.filter (task) -> + task-column = task.extra_properties.column + task-column == column.id || (! task-column && first) + ] self.render = -> # console.log "Project to render: ", self h \div.project {} [ - h \div.button.is-danger.is-outlined { - onclick: -> - modal := Modal { - +visible - content: - h \p [ "Are you sure you want to remove board #{self.title}?" ] - on-validation: -> - self.todod-ws.remove-list self.id - } - } [ "X" ] + + h \div.navbar [ + + h \div.navbar-brand [ + h \div.navbar-item [ + self.title + ] + ] + + h \div.navbar-end [ + h \div.navbar-item [ + h \div.button.is-success.is-outlined { + onclick: -> + modal := Modal { + +visible + content: + h \p [ "New task lol?" ] + on-validation: -> + self.todod-ws.add-task self.id, "Hello There", {} + } + } [ "+" ] + ] + + h \div.navbar-item [ + h \div.button.is-danger.is-outlined { + onclick: -> + modal := Modal { + +visible + content: + h \p [ "Are you sure you want to remove board #{self.title}?" ] + on-validation: -> + self.todod-ws.remove-list self.id + } + } [ "X" ] + ] + ] + ] h \div.columns [ - if self.extra_properties.columns - for dom in self.extra_properties.columns.map((column) -> self.render-column(column)) + if columns = self.extra_properties.columns + for dom in columns.map((column, index) -> self.render-column(column, index == 0)) dom ]