code cleanup
This commit is contained in:
@@ -1,34 +1,33 @@
|
||||
<script>
|
||||
import { useTinyRouter } from 'svelte-tiny-router';
|
||||
|
||||
import { t } from '../../translations.svelte.js';
|
||||
import { api } from '../../urls.svelte.js';
|
||||
import { t } from '../../translations.svelte.js';
|
||||
|
||||
import CompanySelector from '../../Components/CompanySelector.svelte';
|
||||
import MarkdownEditor from '../../Components/MarkdownEditor.svelte';
|
||||
import Settings from './Settings.svelte';
|
||||
import Tags from '../tags/TagList.svelte';
|
||||
import CompanySelector from '../../Components/CompanySelector.svelte';
|
||||
import MarkdownEditor from '../../Components/MarkdownEditor.svelte';
|
||||
import Settings from './Settings.svelte';
|
||||
import Tags from '../tags/TagList.svelte';
|
||||
|
||||
let error = $state(null);
|
||||
let ready = $derived(!!project.name.trim())
|
||||
const router = useTinyRouter();
|
||||
let error = $state(null);
|
||||
let ready = $derived(!!project.name.trim())
|
||||
const router = useTinyRouter();
|
||||
let showSettings = $state(false);
|
||||
|
||||
let project = $state({
|
||||
name:'',
|
||||
name : '',
|
||||
description : { source : '', rendered : '' },
|
||||
settings:{
|
||||
show_closed:false
|
||||
},
|
||||
tags: []
|
||||
settings : { show_closed:false },
|
||||
tags : []
|
||||
});
|
||||
|
||||
async function onsubmit(ev){
|
||||
ev.preventDefault();
|
||||
const url = `${location.protocol}//${location.host.replace('5173','8080')}/api/project`;
|
||||
var resp = await fetch(url,{
|
||||
credentials: 'include',
|
||||
method: 'POST',
|
||||
body: JSON.stringify(project)
|
||||
const url = api('project');
|
||||
var resp = await fetch(url,{
|
||||
credentials : 'include',
|
||||
method : 'POST',
|
||||
body : JSON.stringify(project)
|
||||
});
|
||||
if (resp.ok){
|
||||
var newProject = await resp.json();
|
||||
|
||||
@@ -1,48 +1,47 @@
|
||||
<script>
|
||||
import { onMount } from 'svelte';
|
||||
import { onMount } from 'svelte';
|
||||
import { useTinyRouter } from 'svelte-tiny-router';
|
||||
|
||||
import { api } from '../../urls.svelte.js';
|
||||
import { t } from '../../translations.svelte.js';
|
||||
import { user } from '../../user.svelte.js';
|
||||
import { api } from '../../urls.svelte.js';
|
||||
import { t } from '../../translations.svelte.js';
|
||||
import { user } from '../../user.svelte.js';
|
||||
|
||||
import Card from './KanbanCard.svelte';
|
||||
import LineEditor from '../../Components/LineEditor.svelte';
|
||||
|
||||
let { id } = $props();
|
||||
|
||||
let dragged = null;
|
||||
let error = $state(null);
|
||||
let highlight = $state({});
|
||||
let project = $state(null);
|
||||
let ready = $state(false);
|
||||
let router = useTinyRouter();
|
||||
let states = $state(null);
|
||||
let tasks = $state({});
|
||||
let dragged = null;
|
||||
let error = $state(null);
|
||||
let highlight = $state({});
|
||||
let filter_input = $state('');
|
||||
let filter = $derived(filter_input.toLowerCase());
|
||||
let users = {};
|
||||
|
||||
let columns = $derived(states?Object.keys(states).length+1:1);
|
||||
let filter = $derived(filter_input.toLowerCase());
|
||||
let project = $state(null);
|
||||
let ready = $state(false);
|
||||
let router = useTinyRouter();
|
||||
let states = $state(null);
|
||||
let tasks = $state({});
|
||||
let users = {};
|
||||
let columns = $derived(states?Object.keys(states).length+1:1);
|
||||
|
||||
async function create(name,user_id,state){
|
||||
var url = api('task/add');
|
||||
let task = {
|
||||
description: '',
|
||||
members : {},
|
||||
name: name,
|
||||
project_id: +id,
|
||||
status : { code : +state}
|
||||
description : '',
|
||||
members : {},
|
||||
name : name,
|
||||
project_id : +id,
|
||||
status : { code : +state}
|
||||
}
|
||||
task.members[user_id] = { permission: { name : 'ASSIGNEE' }};
|
||||
task.members[user.id] = { permission: { name : 'OWNER' }};
|
||||
const resp = await fetch(url,{
|
||||
credentials:'include',
|
||||
method:'POST',
|
||||
body: JSON.stringify(task)
|
||||
const resp = await fetch(url,{
|
||||
credentials : 'include',
|
||||
method : 'POST',
|
||||
body : JSON.stringify(task)
|
||||
});
|
||||
if (resp.ok) {
|
||||
task = await resp.json();
|
||||
task = await resp.json();
|
||||
task.assignee = user_id;
|
||||
if (!tasks[user_id]) tasks[user_id] = {};
|
||||
if (!tasks[user_id][state]) tasks[user_id][state] = {};
|
||||
@@ -54,18 +53,18 @@
|
||||
}
|
||||
|
||||
async function drop(user_id,state){
|
||||
let task = dragged;
|
||||
dragged = null;
|
||||
let task = dragged;
|
||||
dragged = null;
|
||||
highlight = {};
|
||||
if (task.assignee == user_id && task.status.code == state) return; // no change
|
||||
let patch = {members:{},status:+state}
|
||||
let patch = {members:{},status:+state}
|
||||
patch.members[user_id] = 'ASSIGNEE';
|
||||
|
||||
const url = api(`task/${task.id}`);
|
||||
const resp = await fetch(url,{
|
||||
credentials: 'include',
|
||||
method: 'PATCH',
|
||||
body: JSON.stringify(patch)
|
||||
credentials : 'include',
|
||||
method : 'PATCH',
|
||||
body : JSON.stringify(patch)
|
||||
});
|
||||
if (resp.ok){
|
||||
delete tasks[task.assignee][task.status.code][task.id]
|
||||
@@ -73,8 +72,8 @@
|
||||
if (!tasks[user_id][state]) tasks[user_id][state] = {}
|
||||
tasks[user_id][state][task.id] = task;
|
||||
task.assignee = user_id;
|
||||
task.status = {code:state,name:states[state]};
|
||||
error = null;
|
||||
task.status = {code:state,name:states[state]};
|
||||
error = null;
|
||||
} else {
|
||||
error = await resp.text();
|
||||
}
|
||||
@@ -89,7 +88,7 @@
|
||||
}
|
||||
|
||||
async function loadProject(){
|
||||
const url = api(`project/${id}`);
|
||||
const url = api(`project/${id}`);
|
||||
const resp = await fetch(url,{credentials:'include'});
|
||||
if (resp.ok){
|
||||
project = await resp.json();
|
||||
@@ -105,18 +104,18 @@
|
||||
}
|
||||
|
||||
async function loadStates(){
|
||||
const url = api(`project/${id}/states`);
|
||||
const url = api(`project/${id}/states`);
|
||||
const resp = await fetch(url,{credentials:'include'});
|
||||
if (resp.ok){
|
||||
states = await resp.json();
|
||||
error = null;
|
||||
error = null;
|
||||
} else {
|
||||
error = await resp.text();
|
||||
}
|
||||
}
|
||||
|
||||
async function loadTag(task){
|
||||
const url = api(`tags/task/${task.id}`);
|
||||
const url = api(`tags/task/${task.id}`);
|
||||
const resp = await fetch(url,{credentials:'include'});
|
||||
if (resp.ok) {
|
||||
const tags = await resp.json();
|
||||
@@ -136,24 +135,24 @@
|
||||
}
|
||||
|
||||
async function loadTasks(selector){
|
||||
const url = api('task/list');
|
||||
const url = api('task/list');
|
||||
selector.show_closed = true;
|
||||
selector.no_index = true;
|
||||
selector.no_index = true;
|
||||
var resp = await fetch(url,{
|
||||
credentials: 'include',
|
||||
method:'POST',
|
||||
body:JSON.stringify(selector)
|
||||
credentials : 'include',
|
||||
method : 'POST',
|
||||
body : JSON.stringify(selector)
|
||||
});
|
||||
if (resp.ok){
|
||||
var json = await resp.json();
|
||||
for (var task_id of Object.keys(json)) {
|
||||
let task = json[task_id];
|
||||
let state = task.status.code;
|
||||
let owner = null;
|
||||
let task = json[task_id];
|
||||
let state = task.status.code;
|
||||
let owner = null;
|
||||
let assignee = null;
|
||||
for (var user_id of Object.keys(task.members)){
|
||||
var member = task.members[user_id];
|
||||
if (member.permission.name == 'OWNER') owner = user_id;
|
||||
if (member.permission.name == 'OWNER') owner = user_id;
|
||||
if (member.permission.name == 'ASSIGNEE') assignee = user_id;
|
||||
|
||||
}
|
||||
|
||||
@@ -1,28 +1,28 @@
|
||||
<script>
|
||||
import { onMount } from 'svelte';
|
||||
import { useTinyRouter } from 'svelte-tiny-router';
|
||||
import { onMount } from 'svelte';
|
||||
|
||||
import { t } from '../../translations.svelte.js';
|
||||
import { api } from '../../urls.svelte.js';
|
||||
import { api } from '../../urls.svelte.js';
|
||||
import { t } from '../../translations.svelte.js';
|
||||
|
||||
const router = useTinyRouter();
|
||||
let error = $state(null);
|
||||
let projects = $state(null);
|
||||
let companies = $state(null);
|
||||
const router = useTinyRouter();
|
||||
let error = $state(null);
|
||||
let projects = $state(null);
|
||||
let companies = $state(null);
|
||||
let showClosed = $state(router.query.closed == "show");
|
||||
|
||||
let sortedProjects = $derived.by(() => Object.values(projects).sort((a, b) => a.name.localeCompare(b.name)));
|
||||
|
||||
async function loadProjects(){
|
||||
let url = api('company/list');
|
||||
let url = api('company/list');
|
||||
let resp = await fetch(url,{credentials:'include'});
|
||||
if (resp.ok){
|
||||
companies = await resp.json();
|
||||
url = `${location.protocol}//${location.host.replace('5173','8080')}/api/project/list`;
|
||||
url = `${location.protocol}//${location.host.replace('5173','8080')}/api/project/list`;
|
||||
resp = await fetch(url,{
|
||||
credentials:'include',
|
||||
method:'POST',
|
||||
body:JSON.stringify({show_closed:showClosed})
|
||||
credentials : 'include',
|
||||
method : 'POST',
|
||||
body : JSON.stringify({show_closed:showClosed})
|
||||
});
|
||||
if (resp.ok){
|
||||
projects = await resp.json();
|
||||
@@ -35,14 +35,14 @@
|
||||
}
|
||||
|
||||
async function setState(pid,state_name){
|
||||
const url = api(`project/${pid}`);
|
||||
const url = api(`project/${pid}`);
|
||||
const resp = await fetch(url,{
|
||||
credentials:'include',
|
||||
method:'PATCH',
|
||||
body:JSON.stringify({status:state_name})
|
||||
credentials : 'include',
|
||||
method : 'PATCH',
|
||||
body : JSON.stringify({status:state_name})
|
||||
});
|
||||
if (resp.ok){
|
||||
var prj = await resp.json();
|
||||
var prj = await resp.json();
|
||||
projects[prj.id].status = prj.status;
|
||||
} else {
|
||||
error = await resp.text();
|
||||
|
||||
@@ -1,25 +1,25 @@
|
||||
<script>
|
||||
import { onMount } from 'svelte';
|
||||
import { onMount } from 'svelte';
|
||||
import { useTinyRouter } from 'svelte-tiny-router';
|
||||
|
||||
import { api } from '../../urls.svelte.js';
|
||||
import { t } from '../../translations.svelte.js';
|
||||
import { api } from '../../urls.svelte.js';
|
||||
import { t } from '../../translations.svelte.js';
|
||||
|
||||
import LineEditor from '../../Components/LineEditor.svelte';
|
||||
import MarkdownEditor from '../../Components/MarkdownEditor.svelte';
|
||||
import MemberEditor from '../../Components/MemberEditor.svelte';
|
||||
import Notes from '../notes/List.svelte';
|
||||
import StateSelector from '../../Components/StateSelector.svelte';
|
||||
import Tags from '../tags/TagList.svelte';
|
||||
import TaskList from '../task/TaskList.svelte';
|
||||
import LineEditor from '../../Components/LineEditor.svelte';
|
||||
import MarkdownEditor from '../../Components/MarkdownEditor.svelte';
|
||||
import MemberEditor from '../../Components/MemberEditor.svelte';
|
||||
import Notes from '../notes/List.svelte';
|
||||
import StateSelector from '../../Components/StateSelector.svelte';
|
||||
import Tags from '../tags/TagList.svelte';
|
||||
import TaskList from '../task/TaskList.svelte';
|
||||
|
||||
let router = useTinyRouter();
|
||||
let { id } = $props();
|
||||
let project = $state(null);
|
||||
let error = $state(null);
|
||||
let tasks = $state(null);
|
||||
let { id } = $props();
|
||||
let error = $state(null);
|
||||
let estimated_time = $state({sum:0});
|
||||
let showSettings = $state(false);
|
||||
let project = $state(null);
|
||||
let router = useTinyRouter();
|
||||
let showSettings = $state(false);
|
||||
let tasks = $state(null);
|
||||
|
||||
async function addMember(entry){
|
||||
const ids = Object.keys(entry);
|
||||
@@ -40,11 +40,11 @@
|
||||
}
|
||||
|
||||
async function getCandidates(text){
|
||||
const url = api('user/search');
|
||||
var resp = await fetch(url,{
|
||||
credentials: 'include',
|
||||
method: 'POST',
|
||||
body: text
|
||||
const url = api('user/search');
|
||||
const resp = await fetch(url,{
|
||||
credentials : 'include',
|
||||
method : 'POST',
|
||||
body : text
|
||||
});
|
||||
if (resp.ok){
|
||||
var json = await resp.json();
|
||||
@@ -59,11 +59,11 @@
|
||||
}
|
||||
|
||||
async function loadProject(){
|
||||
const url = api(`project/${id}`);
|
||||
const url = api(`project/${id}`);
|
||||
const resp = await fetch(url,{credentials:'include'});
|
||||
if (resp.ok){
|
||||
project = await resp.json();
|
||||
error = null;
|
||||
error = null;
|
||||
loadTasks();
|
||||
} else {
|
||||
error = await resp.text();
|
||||
@@ -71,35 +71,35 @@
|
||||
}
|
||||
|
||||
async function loadTasks(){
|
||||
const url = api('task/list');
|
||||
const url = api('task/list');
|
||||
const data = {
|
||||
project_id:+id,
|
||||
show_closed:project.show_closed
|
||||
}
|
||||
const resp = await fetch(url,{
|
||||
credentials:'include',
|
||||
method:'POST',
|
||||
body:JSON.stringify(data)
|
||||
credentials : 'include',
|
||||
method : 'POST',
|
||||
body : JSON.stringify(data)
|
||||
});
|
||||
if (resp.ok){
|
||||
tasks = {};
|
||||
tasks = {};
|
||||
estimated_time.sum = 0;
|
||||
tasks = await resp.json();
|
||||
error = null;
|
||||
tasks = await resp.json();
|
||||
error = null;
|
||||
} else {
|
||||
error = await resp.text();
|
||||
}
|
||||
}
|
||||
|
||||
async function update(data){
|
||||
const url = api(`project/${id}`);
|
||||
const url = api(`project/${id}`);
|
||||
const resp = await fetch(url,{
|
||||
credentials:'include',
|
||||
method:'PATCH',
|
||||
body:JSON.stringify(data)
|
||||
credentials : 'include',
|
||||
method : 'PATCH',
|
||||
body : JSON.stringify(data)
|
||||
});
|
||||
if (resp.ok){
|
||||
error = null;
|
||||
error = null;
|
||||
project = await resp.json();
|
||||
return true;
|
||||
} else {
|
||||
@@ -114,7 +114,7 @@
|
||||
|
||||
|
||||
function updatePermission(user_id,permission){
|
||||
let members = {};
|
||||
let members = {};
|
||||
members[user_id] = permission.code;
|
||||
update({members:members});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user