leif81 / bzkanban Goto Github PK
View Code? Open in Web Editor NEW:bug: A kanban board for the Bugzilla issue tracker
License: Other
:bug: A kanban board for the Bugzilla issue tracker
License: Other
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
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.
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
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
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.
Steps to reproduce:
Actual results:
Modal doesn't populate Component and Version fields this time.
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?
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.
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
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.
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.
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:
A really nice way of sharing and trying out the board is to share this link:
https://htmlpreview.github.io/?https://github.com/leif81/bzkanban/blob/master/index.html
However currently things break down once you hit the form submit button.
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.
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.
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.
Bugzilla 6.0 is expected to provide an improved Bug.get
API that includes returning comments. This should speed up performance considerably over the way we do it for Bugzilla 5.x which requires an extra request per card.
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.
Ok, just discovered how to reproduce it.
Steps:
Actual results:
The Component and Version fields have duplicates values.
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".
I am trying to open this kanban board in the Edge browser. The board is not displayed.
In the yandex browser this board is displayed correct.
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.
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.
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.
A simple popup comment box with OK/Cancel options should do.
And probably control this behaviour with a new configuration option like providecomment=true/false
.
If I'm already signed in, Drag-n-Drop works.
After signing on a fresh session, they don't.
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.
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.
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:
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
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
We currently use Bugzilla tokens for authentication, but there are a couple problems with them:
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
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?
Sometimes the UNCONFIRMED column appears for products that have it disabled. Refreshing the page usually fixes it. I assume this is a race condition in the board load.
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.
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.
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 .
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.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.