GithubHelp home page GithubHelp logo

leif81 / bzkanban Goto Github PK

View Code? Open in Web Editor NEW
42.0 7.0 15.0 790 KB

:bug: A kanban board for the Bugzilla issue tracker

License: Other

HTML 1.78% CSS 10.29% JavaScript 87.88% Vim Script 0.05%
bugzilla kanban web-app issue-board project-management single-page-app agile scrum server-less

bzkanban's People

Contributors

env123 avatar gizzmojr avatar leif81 avatar rjnewsham avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

bzkanban's Issues

Last Drop Target Highlighted

When a card is dropped into resolved with resolution, the drop highlighting remains.

In fact, it's stacks in that you can have multiple already highlighted. When you roll on then off with a card, the correct behavior happens.

What is expected is the resolution is not in the roll-on state

Closing the bug modal can cause changes to be lost

Supposing you've started to enter a comment into the bug modal and you click outside the modal (by accident when multi-tasking, etc) you will lose what you've typed.

A "do you want to discard your changes" yes/no should probably occur.

Bug resolution values that are disabled are appearing

When you click on a card that is in the RESOLVED column you can see the resolution value it has (e.g. FIXED, WONTFIX, etc). However some resolution values are appearing there that I wouldn't expect to see. For example values field values that have "Enabled for bugs" set to No are appearing.

This is the rest query we are using:

http://bugzilla.msec.local//rest.cgi/field/bug/resolution

There's nothing in that query that gives indication of a field value being enabled or not.

I'm beginning to think this may be a bug in upstream Bugzilla REST api. The docs suggest that some fields provide an is_active flag, but resolution, status and severity fields don't seem to be one of them. This seems like an oversight.

http://bugzilla.readthedocs.io/en/latest/api/core/v1/field.html

Uncaught TypeError - Bug Status name with whitespace

I'm afraid I'm receiving the following error in the console and the kanban board it's loading any cards. I'm not sure how to debug further.

Uncaught TypeError: Cannot read property 'appendChild' of null
    at bzkanban.js:401
    at Array.forEach (<anonymous>)
    at bzkanban.js:399
    at XMLHttpRequest.xhr.onreadystatechange (bzkanban.js:931)
(anonymous) @ bzkanban.js:401
(anonymous) @ bzkanban.js:399
xhr.onreadystatechange @ bzkanban.js:931

Set bug resolution in modal

Now that we have modal appear on drag and drop for adding comments, I'm thinking the place to set resolution (fixed/won't fix/invalid/etc) would be in the modal too. Instead of our drop targets.

So the user would drag a card into RESOLVED column, a modal pops up, choose "fixed", add comment, click OK.

Similarly, changing priority and severity could happen in modal for the other columns.

Remove "autocomments" feature

Now that we have a bug modal for adding comments, is the auto commenting feature we want to keep? I'm leaning towards removing it.

@gizzmojr what do you think?

Connecting to Bugzilla with login cause several popups

First I would like to say that this board is a very nice graphical front end to Bugzilla! Good work!

When loading Bz Kanban Board connected to a Bugzilla site using login you get several "You must log in before using this part of Bugzilla." pop up messages. These prevent pressing anything on the web page including the login button and force you to acknowledge this several times before being able to press the login button. I guess this is caused by the initBoard() function doing async.parallel() call to fetch several different data before a successful login attempt is made.

I have also noticed that sometimes also after pressing the login button I get more of these pop ups. Something is evidently trying to fetch data while not logged in. One possible solution might be to try to determine if login is needed, if so don't fetch any data. Once logged in (or no login needed) data can be fetched.

Mobile Styling

There's some downstream projects that use bzkanban, but could benefit from a mobile theme. I don't mean bootstrap stuff, just adjusting modal width and such if resolution less then X, etc

Alpha sort the products drop list

We currently populate the product drop list with the values in order back from the server, but the problem with this is the order is not alphabetical. And even more annoying is they seem to be in a random order each time.

Allow embedding into custom html page

This is something that came to my mind after seeing what @dylanwh was up to.

Since the beginning we've put everything into index.html. This simplified development and in some cases deployment too (here, one file, done!). But there are some advantages to splitting up the index.html into html, css and js. For example it'd be nice to be able to run jslint without it barfing on the html and css. And vim autohighlighting would work reliably again. And GitHub would think our project was more than just 100% HTML. Etc.

But the larger motivation would be so that the board could be embedded easily into someone's existing page. Whether it be inside a wiki, or a custom page with common site header/footer, etc.

I'm sure there are many projects that behave like this, but the one that comes to my mind is OpenLayers. The user creates an instance of the map widget (in our case it'd be the board) and pass some configuration to it, attaches it to a page element id, and they're done.

e.g. http://openlayers.org/en/latest/doc/quickstart.html

Maybe later we could publish stable releases of the project into npm or a cdn so users could grab it easily too.

But at the same time, still offering a sample index.html for users who just want to grab a copy to host locally and be done with it.

Remove hard coded bug status RESOLVED column references

We got rid of most places we hard coded column name(s), but there's one left, the RESOLVED column name, to handle drag and drop.

The problem is that from what I can tell there are only two bug statuses that are guaranteed to exist in 5.0; UNCONFIRMED and VERIFIED. So if our goal is for bzkanban to be usable by anybody's Bugzilla install, we should only rely on guaranteed values.

It turns out, any bug statuses where the bug resolution must be set (i.e. where we need to show the bug resolution boxes for dnd) have an is_open value of false. We can figure out which ones programmatically using this REST call:

https://bugzilla.mozilla.org/rest/field/bug/bug_status

Overnight JavaScript Alert

When the board is left open overnight I regularly see this alert first thing in the morning:

bzkanban-overnight-error

I'm guessing it has something to do with the scheduleCheckForUpdates function that constantly polls the server. And maybe caused by when the db is being restored in the middle of the night?

Failed login handling

Having issues if the key/token has expired or is invalid, how we handle refreshing everything after signing back in. I get the login button but after logging in, spinner will remain constantly (false impression waiting for something to happen) and no products get loaded.

Quick refresh of the page and I'm at the expected functionality.

Instead of just being able to hide the backlog, be able to select columns to view

We don't use Unconfirmed in our workflow at all. In most cases I'd personally just want to see New, Assigned, and Reopened. Other uses may vary (while doing regression testing maybe just Resolved and Verified.

Implemented maybe as "Set Columns" rather than Hide/Show Backlog, then bring up a dialog where columns that are desired are selected via checkbox.

Drop down single auto-selection

Let's have it so if the dropdown list contains a single return (product & milestone), automatically select and move on.

Example is a Product with a single milestone, it seems like wasted time waiting for the milestone list to display a single result.

Spaces in column names not supported

I did a quick attempt to fix an issue I hit lastnight, moving cards into columns with spaces in names.

We use the status' as names, and use those as IDs. Kind of a problem once your making class calls and queryselectors with spaces, because it's interpreting "#ONE TWO" as separate things versus one argument.

The simple fix, is to state as a known_issue that it's unsupported until we rework how to build up the column elements (naming based of returned status')

Or hopefully, some Bugzilla document will state spaces are a no-no, and problem solved? Default status of "IN_PROGRESS" makes me think they might of crossed this issue before.

New Bug dialog can show duplicate values

Ok, just discovered how to reproduce it.

Steps:

  1. Login.
  2. New Bug, file out form and Submit
  3. New Bug again

Actual results:

The Component and Version fields have duplicates values.

Display limited products for admins

One issue, being an administrator of a Bugzilla instance, is you always see all products whether valid for input or not.

It be nice to have a feature where I can toggle the ability to only list products that are "is_active: true".

Javascript error in bzkanban.js - easy fix

Near line 1000:
switch (obj.code) {

obj.code is a number but the case values are strings ("32000" and "410") - so they will never match as comparison in a switch is strict (aka ===).

The fix is to remove the quotes round the numbers.

Drag drop targets missing

Would appear in 23f293c we lost the ability to drag-n-drop within a column to set priority and severity.

showCards and hideCards will do the work but are no longer being called when the event for dragging a card is fired.

Make the bug modal in view linkable via page URL

Imagine you want to share a specific bug with someone in chat or email, you have the bug modal open, now what? It'd be nice to be able to grab the page URL and have then see exactly what you are seeing. i.e. the same board and bug modal open.

fixed width columns

Perhaps minimum width instead of fixed width? Personally, I'd rather them always take the available space. Some items have long titles and increasing the width of the card means that the titles won't take up so much space.
The font for the titles seems a little big too.

Product change race condition

When I change product and hit submit quickly, I get an alert about unable to connect to site. If I delay pressing Submit for ~1sec it won't pop up.

I also notice milestone console errors on product changes, I don't know if the same problem is causing it to.

Both are paper cuts thou.

Gravatar with v6 BZ

Just realized having switched from 5.0 branch to 5.1.1 tag, that gravatar icons no longer work.

Latest doc, http://bugzilla.readthedocs.io/en/latest/api/core/v1/bug.html#get-bug, states that "the email address of users is private and is no longer returned as part of the user object."

So that's the problem, bug.assigned_to_detail.email is undefined.

A suggestion is to create a SET of all people on the board. Doing a GET /user/ID on each, then return their email.

Problems:

  1. Requires the user to be signed in. Read only view will show all the same Gravatar icon, so best hide it all together
  2. Doing a GET for each user could be expensive. Do you block the board until it's done, or show the icons after the cards are loaded?

Support custom boards with quicksearch query

There may be an advanced use case worth supporting where we want to fill a board with a custom list of bugs. These bugs may span multiple products or just fall into some very specific search criteria that we otherwise don't support filtering on.

This is a pretty niche use case, so building a UI to support this does not seem worth the effort. And would confuse the simple product and milestone use case we currently support and encourage. But if it were an advanced only thing controllable via the page URL, I could get behind that.

To do this we could leverage the existing Bugzilla quicksearch language. So a custom board page URL might look like:

e.g. index.html?quicksearch=ALL%20prod:foo,bar

And then internally it passes the quicksearch param value through to the REST API and the results are put on the board as normal:

e.g. /rest.cgi/bug?quicksearch=ALL%20prod:foo,bar

"defaultpriority undefined" error when loading BMO board

Going to https://rawgit.com/leif81/bzkanban/master/index.html?product=Bugzilla&milestone=Bugzilla%206.0&assignee=&comments=false&autorefresh=false&site=https://bugzilla.mozilla.org returns an error in the console which prevents a clean startup.

bzkanban.js:660 Uncaught TypeError: Cannot read property 'defaultpriority' of undefined
at bzkanban.js:660
at XMLHttpRequest.xhr.onreadystatechange (bzkanban.js:925)

Seems to be caused by the fact the request for /rest/parameters/ is returning "No such a method" on BMO.

https://bugzilla.mozilla.org/rest.cgi/parameters

I've reached out to Dylan on Twitter for help https://twitter.com/leif81/status/978817726247555072

Switch to Bugzilla API Keys for auth

We currently use Bugzilla tokens for authentication, but there are a couple problems with them:

  • they expire after 24hrs and we don't handle that well yet, but we could
  • they are deprecated and going away "in the version after Bugzilla 5.0."

The best alternative looks like Bugzilla API Keys.

An API Key can be created through the Bugzilla user prefs page (API Keys tab) and then pasted into our app (instead of providing a user and password) and never expire until revoked.

http://bugzilla.readthedocs.org/en/latest/api/core/v1/general.html#authentication

The even slicker way of using API Keys is something called "authentication deligation". The user would click the Login button in our app, it would redirect them to a sign-in page on the Bugzilla instance and then return them back to our app when successfully authenticated. However we're unsure how to enable that auth.cgi page in the example so for now this step seems a reach.

http://bugzilla.readthedocs.org/en/latest/integrating/auth-delegation.html#auth-delegation

Automatic user login in same origin

We use external env authentication for our bugzilla, to auth it against our other auth infrastructure. That means user can't login to rest via username / password.

I've seen the patches to use api keys, but I'd rather run bzkanban in the same origin as bugzilla and just automatically login the user.

I've dug around in bugzilla but I can't figure out any sane way of doing this, so that's why I'm asking you guys. Is there any way to implement such a functionallity?

Double Users list

Begin non-authenticated. View a board that is populated, thus has a valid user list filter.

Sign in. Now the users list is doubled. Quick guess this might get addressed when #46 is worked on.

Closing bug modal may leave DOM element behind

When the bug modal is closed by clicking outside the modal it doesn't clean up after itself in the same way that pressing the X button does. If a modal is then reopened, the X button then won't work on first try.

Show board activity

A sidebar (?) that shows in chronological order all activity that's happened to cards (bugs) on the board might be useful.

e.g.

Alice added a comment on bug 123 an hour ago .
Bob changed the status to RESOLVED FIXED on bug 456 yesterday .

Support Markdown comments

Bugzilla 6 is adding support for Markdown comments. So we might want to resurrect the experimental Markdown rendering branch we had.

https://github.com/leif81/bzkanban/tree/markdown

Plus investigate why writing markdown in our comments doesn't render as markdown in native Bugzilla UI. Must have something to do with that Use Markdown for this comment tickbox.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.