2021-03-22 05:04:19 +01:00
const { csrf , PageIsProjects } = window . config ;
2020-08-17 04:07:38 +01:00
export default async function initProject ( ) {
2021-03-22 05:04:19 +01:00
if ( ! PageIsProjects ) {
2020-08-17 04:07:38 +01:00
return ;
}
const { Sortable } = await import ( /* webpackChunkName: "sortable" */ 'sortablejs' ) ;
const boardColumns = document . getElementsByClassName ( 'board-column' ) ;
2021-02-11 17:32:27 +01:00
new Sortable (
document . getElementsByClassName ( 'board' ) [ 0 ] ,
{
group : 'board-column' ,
draggable : '.board-column' ,
animation : 150 ,
onSort : ( ) => {
const board = document . getElementsByClassName ( 'board' ) [ 0 ] ;
const boardColumns = board . getElementsByClassName ( 'board-column' ) ;
boardColumns . forEach ( ( column , i ) => {
if ( parseInt ( $ ( column ) . data ( 'sorting' ) ) !== i ) {
$ . ajax ( {
url : $ ( column ) . data ( 'url' ) ,
data : JSON . stringify ( { sorting : i } ) ,
headers : {
'X-Csrf-Token' : csrf ,
'X-Remote' : true ,
} ,
contentType : 'application/json' ,
method : 'PUT' ,
} ) ;
}
} ) ;
} ,
} ,
) ;
2020-08-17 04:07:38 +01:00
for ( const column of boardColumns ) {
new Sortable (
column . getElementsByClassName ( 'board' ) [ 0 ] ,
{
group : 'shared' ,
animation : 150 ,
onAdd : ( e ) => {
$ . ajax ( ` ${ e . to . dataset . url } / ${ e . item . dataset . issue } ` , {
headers : {
'X-Csrf-Token' : csrf ,
'X-Remote' : true ,
} ,
contentType : 'application/json' ,
type : 'POST' ,
error : ( ) => {
e . from . insertBefore ( e . item , e . from . children [ e . oldIndex ] ) ;
} ,
} ) ;
} ,
2021-01-15 21:29:32 +01:00
} ,
2020-08-17 04:07:38 +01:00
) ;
}
$ ( '.edit-project-board' ) . each ( function ( ) {
const projectTitleLabel = $ ( this ) . closest ( '.board-column-header' ) . find ( '.board-label' ) ;
const projectTitleInput = $ ( this ) . find (
2021-01-15 21:29:32 +01:00
'.content > .form > .field > .project-board-title' ,
2020-08-17 04:07:38 +01:00
) ;
$ ( this )
. find ( '.content > .form > .actions > .red' )
. on ( 'click' , function ( e ) {
e . preventDefault ( ) ;
$ . ajax ( {
url : $ ( this ) . data ( 'url' ) ,
data : JSON . stringify ( { title : projectTitleInput . val ( ) } ) ,
headers : {
'X-Csrf-Token' : csrf ,
'X-Remote' : true ,
} ,
contentType : 'application/json' ,
method : 'PUT' ,
} ) . done ( ( ) => {
projectTitleLabel . text ( projectTitleInput . val ( ) ) ;
projectTitleInput . closest ( 'form' ) . removeClass ( 'dirty' ) ;
$ ( '.ui.modal' ) . modal ( 'hide' ) ;
} ) ;
} ) ;
} ) ;
2021-01-15 21:29:32 +01:00
$ ( document ) . on ( 'click' , '.set-default-project-board' , async function ( e ) {
e . preventDefault ( ) ;
await $ . ajax ( {
method : 'POST' ,
url : $ ( this ) . data ( 'url' ) ,
headers : {
'X-Csrf-Token' : csrf ,
'X-Remote' : true ,
} ,
contentType : 'application/json' ,
} ) ;
window . location . reload ( ) ;
} ) ;
2021-02-11 17:32:27 +01:00
2020-08-17 04:07:38 +01:00
$ ( '.delete-project-board' ) . each ( function ( ) {
$ ( this ) . click ( function ( e ) {
e . preventDefault ( ) ;
$ . ajax ( {
url : $ ( this ) . data ( 'url' ) ,
headers : {
'X-Csrf-Token' : csrf ,
'X-Remote' : true ,
} ,
contentType : 'application/json' ,
method : 'DELETE' ,
} ) . done ( ( ) => {
2021-01-15 21:29:32 +01:00
window . location . reload ( ) ;
2020-08-17 04:07:38 +01:00
} ) ;
} ) ;
} ) ;
$ ( '#new_board_submit' ) . click ( function ( e ) {
e . preventDefault ( ) ;
const boardTitle = $ ( '#new_board' ) ;
$ . ajax ( {
url : $ ( this ) . data ( 'url' ) ,
data : JSON . stringify ( { title : boardTitle . val ( ) } ) ,
headers : {
'X-Csrf-Token' : csrf ,
'X-Remote' : true ,
} ,
contentType : 'application/json' ,
method : 'POST' ,
} ) . done ( ( ) => {
boardTitle . closest ( 'form' ) . removeClass ( 'dirty' ) ;
2021-01-15 21:29:32 +01:00
window . location . reload ( ) ;
2020-08-17 04:07:38 +01:00
} ) ;
} ) ;
}