This project is read-only.

Thoughts on 1.5

Feb 25, 2009 at 11:40 AM
Making a post here for input on the upcoming release 1.5.

For this release, I think we can look forward to the following:

1) Leaderboard displaying name and saved DKP.

2) Player grid displaying current info + last loot date and life time attendance (maybe).

3) Player detail displaying all raids, with raids missed in red (or something). Been thinking of making a different css background style or something. Should help track down raids missed for players that have a disagreement with the attendance values.

4) Sorting stored in cookies, along with maybe some visual cues for which column is actually being sorted and in what direction. (this one might be hard, since there's no way to programmatically reference bound columns other than by their position in the grid. Column(0), Column(1), etc.

Filtering, meh, it's not widely supported in other DKP systems, but if we can do it, I'll try. Definitely not going to be in 1.5 though. Preliminary works shows it's going to be an effort, i.e. I tried to code it a little, hated it, and completely erased it by starting over at the checked-in revision.... usually a bad sign.

Also looking at this mod that Hue uses for raid importing. It's pretty slick. I have yet to evaluate which export setting most matches the data we collect, but once I figure that out, there shouldn;t be any problem supporting it.
Feb 26, 2009 at 10:58 PM
Hue, could you take a look at the demo site to see if the data displayed is what you would like to see from a leaderboard?

There's more that needs to be done to clean up the graphics of it, but I can do that while you evaluate.
Feb 27, 2009 at 3:07 AM
Looks awesome!

The only thing it misses is an icon to show what class is listed and attendance percentage could be really cool to have there as well, but only if there is room for it.
Feb 27, 2009 at 8:32 AM
I tried a layout with 10 columns wide... as you can see, it's pretty cramped.

I think I'd like to shoot for a 5 x 2 still, and perhaps we can display more data than jsut name and saved dkp, as you've suggested. I think we could swing 3 or 4 pieces of info per name, but I don;t want to try to get into making them sortable or anything.

As it is now, the sort order is SavedDKP descending, and then PlayerName ascending for players with the same saved DKP. The list is limited to the top 5 players in each class.
Mar 4, 2009 at 11:26 PM
I like the 5x2 layout, and I've done some things to skin it out, etc. Take a look at the test site and give me your thoughts.
Mar 5, 2009 at 2:46 PM
Looks really awesome!!!

Shamans is a bit hard to read, but else it looks really cool!
Mar 5, 2009 at 9:07 PM
You have yourself another tester. Good stuff.
Mar 7, 2009 at 10:22 PM
I'm currently trying to do a few things in 1.5 to clean up the web pages and hopefully eliminate reliance on viewstate.

I'm also looking at using URL parameters again... not sure. One thing that I really don't like at the moment is a lack of personalization. For example, you can't bookmark your own profile.

I think I can do a few things to improve this. For example, users who are logged in should be able to set a few profile's as favorites, similar to what wowarmory does. That way, each user could say "this is my profile" and when they go to the DKP system, a simple click on a link would take them right to their profile. I could also keep a list of favorite profiles, etc.

Creating raids has to become easier. I'm hoping in 1.5 to get the importer working.

We'll hopefully also get the roster modification working that Rey suggested.
Mar 9, 2009 at 8:47 AM
I've been mulling over a pretty big change to the module, and I think we're going to give it a try.

The change is that I'm going to start using request parameters in the url to manage application state.

The downside to this is that you will probably not be able to have more than one DKP application on the same page. There's also a risk that if you put the dkp module on a page with some other module that uses the same method to manage state, you could run into state collisions across modules.

I'll be doing my best to prevent this from happening, and in 99.99% of cases, there shouldn't be a problem.

This will allow people to more effectively bookmark sections that interest them most. For example, the following url could be bookmarked to take me right to my profile whenever I wanted to see it:

http://dnndkp.dyndns.org/?player=Salaza

Editing a mob might look something like...

http://dnndkp.syste.net/?mob=Gluth&mode=edit

Getting this worked out might take some time, but I think in the end, it'll be more friendly to all users.
Mar 10, 2009 at 9:18 PM
1.5 should be out either tonight or tomorrow.

There will be improved styling, leaderboard, modified "Add roster" function per Rey's request, and support for importing raids from Hue's raid tracker using the "Plain Text" export option.

No filtering yet, and no bookmark ability.
Mar 11, 2009 at 2:24 AM
Edited Mar 11, 2009 at 2:27 AM
Woohoo!

A note to the importer:
Will the importer be able to add players, instances, mobs and items that does not exist?
Also some bosses has several events e.g. Sartharion with 3 drakes does the importer take that in account too?
Aswell as items that are disenenchanted or banked.

Looking forward to it :)

Btw it's Heu not Hue :P  In danish a hue is a hat, and i'm not a hat!!!
Mar 11, 2009 at 5:07 AM
Edited Mar 11, 2009 at 6:15 AM
Ked af!

This is an example of my guild Sarth 3D from tonight....



Session:
Zone,Difficulty,Start,End,Note
"The Obsidian Sanctum",Heroic,03/10/09 21:32:01,03/10/09 23:11:40,

Players:
Index,Name,Join,Leave,Race,Class,Level,Guild,Note
1,"Alinah",03/10/09 21:32:01,03/10/09 23:11:40,"Draenei","SHAMAN",80,"Rochambeau World Champs",
2,"Ashaellia",03/10/09 21:32:01,03/10/09 23:11:40,"Human","DEATHKNIGHT",80,"Rochambeau World Champs",
3,"Bigspence",03/10/09 21:32:01,03/10/09 23:11:40,"Draenei","SHAMAN",80,"Rochambeau World Champs",
4,"Bobeuker",03/10/09 21:32:01,03/10/09 23:11:40,"Dwarf","PALADIN",80,"Rochambeau World Champs",
5,"Bruschetta",03/10/09 21:32:01,03/10/09 23:11:40,"NightElf","DRUID",80,"Rochambeau World Champs",
6,"Deshua",03/10/09 21:32:01,03/10/09 23:10:37,"Gnome","MAGE",80,"Rochambeau World Champs",
7,"Drholmes",03/10/09 21:32:01,03/10/09 23:11:40,"Human","PRIEST",80,"Rochambeau World Champs",
8,"Elkrain",03/10/09 22:40:04,03/10/09 23:11:40,"NightElf","PRIEST",80,"Rochambeau World Champs",
9,"Fjord",03/10/09 21:32:01,03/10/09 23:11:40,"Human","PALADIN",80,"Rochambeau World Champs",
10,"Jorick",03/10/09 21:32:01,03/10/09 23:11:40,"Human","ROGUE",80,"Rochambeau World Champs",
11,"Lebowski",03/10/09 21:32:01,03/10/09 23:11:40,"NightElf","DRUID",80,"Rochambeau World Champs",
12,"Lexxan",03/10/09 21:32:01,03/10/09 23:11:40,"NightElf","HUNTER",80,"Rochambeau World Champs",
13,"Lutharus",03/10/09 21:32:01,03/10/09 23:11:40,"Human","PRIEST",80,"Rochambeau World Champs",
14,"Melira",03/10/09 21:32:01,03/10/09 23:11:40,"NightElf","DRUID",80,"Rochambeau World Champs",
15,"Miste",03/10/09 21:32:01,03/10/09 23:11:40,"Human","DEATHKNIGHT",80,"Rochambeau World Champs",
16,"Najei",03/10/09 21:32:01,03/10/09 23:11:40,"NightElf","PRIEST",80,"Rochambeau World Champs",
17,"Oscallus",03/10/09 21:32:01,03/10/09 23:10:45,"Gnome","WARLOCK",80,"Rochambeau World Champs",
18,"Pensive",03/10/09 21:32:01,03/10/09 23:11:40,"NightElf","ROGUE",80,"Rochambeau World Champs",
19,"Salaza",03/10/09 21:32:01,03/10/09 23:11:40,"NightElf","PRIEST",80,"Rochambeau World Champs",
20,"Scippio",03/10/09 21:32:01,03/10/09 23:11:40,"Human","PRIEST",80,"Rochambeau World Champs",
21,"Tamaye",03/10/09 21:32:01,03/10/09 22:59:33,"Draenei","SHAMAN",80,"Rochambeau World Champs",
22,"Thorlen",03/10/09 21:32:01,03/10/09 23:11:40,"Dwarf","HUNTER",80,"Rochambeau World Champs",
23,"Trast",03/10/09 21:32:01,03/10/09 23:11:40,"NightElf","WARRIOR",80,"Rochambeau World Champs",
24,"Twiztid",03/10/09 21:32:01,03/10/09 23:11:40,"NightElf","ROGUE",80,"Rochambeau World Champs",
25,"Zergie",03/10/09 21:32:01,03/10/09 23:11:40,"NightElf","DEATHKNIGHT",80,"Rochambeau World Champs",
26,"Áphrael",03/10/09 21:32:01,03/10/09 23:11:40,"Gnome","MAGE",80,"Rochambeau World Champs",

Events:
Index,Name,Zone,Difficulty,End,Attendees
1,"Tenebron","The Obsidian Sanctum",Heroic,03/10/09 21:47:00,"Najei;Ashaellia;Zergie;Miste;Bruschetta;Tamaye;Alinah;Lutharus;Twiztid;Jorick;
Bobeuker;Bigspence;Thorlen;Scippio;Áphrael;Trast;Oscallus;Deshua;Lexxan;Pensive;Fjord;Lebowski;Drholmes;Melira;Salaza"
2,"Shadron","The Obsidian Sanctum",Heroic,03/10/09 22:19:48,"Najei;Ashaellia;Zergie;Miste;Bruschetta;Tamaye;Alinah;Twiztid;Jorick;Bobeuker;
Bigspence;Thorlen;Scippio;Áphrael;Trast;Oscallus;Deshua;Lexxan;Pensive;Fjord;Lebowski;Drholmes;Melira;Salaza"
3,"Vesperon","The Obsidian Sanctum",Heroic,03/10/09 22:52:28,"Najei;Ashaellia;Zergie;Miste;Bruschetta;Tamaye;Alinah;Twiztid;Jorick;Bobeuker;
Bigspence;Thorlen;Scippio;Áphrael;Trast;Elkrain;Oscallus;Deshua;Lexxan;Pensive;Fjord;Lebowski;Drholmes;Melira;Salaza"
4,"Sartharion","The Obsidian Sanctum",Heroic,03/10/09 22:56:17,"Najei;Ashaellia;Zergie;Miste;Bruschetta;Tamaye;Alinah;Twiztid;Jorick;Bobeuker;
Bigspence;Thorlen;Scippio;Áphrael;Trast;Elkrain;Oscallus;Deshua;Lexxan;Pensive;Fjord;Lebowski;Drholmes;Melira;Salaza"

Loot:
Index,Name,ID,Time,Mob,Player,Cost,Note
1,"Runic Mana Potion",33448,03/10/09 21:35:51,"Trash mob","Fjord",0,
2,"Frostweave Cloth",33470,03/10/09 21:35:57,"Trash mob","Áphrael",0,
3,"Icy Dragonscale",38557,03/10/09 21:36:02,"Trash mob","Tamaye",0,
4,"Borean Leather",33568,03/10/09 21:36:13,"Trash mob","Tamaye",0,
5,"Frostweave Cloth",33470,03/10/09 21:39:13,"Trash mob","Lebowski",0,
6,"Wisdom Carver of Spirit",36681,03/10/09 21:40:59,"Trash mob","Oscallus",0,
7,"Arcane Dust",22445,03/10/09 22:14:18,"Tenebron","Áphrael",0,
8,"Chestplate of the Great Aspects",40453,03/10/09 22:58:45,"Sartharion","Fjord",0,
9,"Gauntlets of the Lost Protector",40629,03/10/09 22:58:54,"Sartharion","Bigspence",0,
10,"Headpiece of Reconciliation",44007,03/10/09 22:59:19,"Sartharion","Bruschetta",0,
11,"Gauntlets of the Lost Conqueror",40628,03/10/09 22:59:54,"Sartharion","Bobeuker",0,
12,"Wyrmrest Band",40433,03/10/09 23:02:07,"Sartharion","Fjord",0,
13,"Bountiful Gauntlets",44004,03/10/09 23:02:23,"Sartharion","Najei",0,
14,"Dragon Hide Bag",43345,03/10/09 23:03:21,"Sartharion","Oscallus",0,
15,"Large Satchel of Spoils",43346,03/10/09 23:04:22,"Sartharion","Deshua",0,
16,"Reins of the Twilight Drake",43954,03/10/09 23:05:40,"Sartharion","Lexxan",0,


 

A few things to point out here.

First, the sections we care about are the Events and Loots sections.

From an event, we can get the instance's name, difficulty, time and attending members. There is no value, but we can pull that up from the DKP system's Mob library.

From a loot, we get... well, loot.

Second, you'll notice I have a bunch of non-epic loots in the loot list. This is because I fail and didn't set the option correctly in the addon to only collect epic quality or better items.

It looks like there is a way to also handle guildies not in the raid (standby), but I haven't collected an example of that yet. 1.5 may balk if you turn that feature on. After I get an example of the output, I'll be sure to put up 1.6 with the standby's in mind.


 

Also, as you can see by the data, there is no distinction between Sarth and his multiple forms. I'm not really sure what to say about this. I don't think any system really handles the hard modes of heroic raids well.

There are several ways you could try to tackle this, but each has it's problems.

The first would be to create several copies of Sarth in the DKP Mob's section. Each version of Sarth could be tied to WowHead using the same WowHead ID, and you could Mob Sync on each version to setup drops. Each version would have a different DKP reward value if you wanted to reflect difficulty. The problem with this setup is that when you try to raid import, the mob coming from the importer won't match up to any Mob other than "Sartharion". The import text would have to be modified, manually, prior to processing.

The second would be to create one instance of Sarth. The importer would obviously match up better and your interface with WowHead would be cleaner, but then you have issues with reflecting differing DKP values across 0D,1D, 2D, and 3D. It's not impossible though, to do this. With the way the system currently works, you would have to import, then after importing, edit the raid and assign whatever DKP value you wanted to assign manually.

If I had to pick a method, I'd use #2 for now. A reality of Sarth is that once your guild can do a particular difficulty level, you rarely go back to lower levels. What I would do is start Sarth out at a DKP value that corresponds to your current capabilities. Then, the night that you down him at a new level, go into the library and increase his DKP value. Then import your raids. The new raids will get the new DKP value from the library, and the old raids will retain their lower-difficulty DKP values.

This is important to understand DKP between the Mob's and Raid's section. The Raid's DKP value is standalone once assigned to a Raid. We only use the Mob's DKP value when we're making a new raid. Once the raid is made, the raid's DKP will only change by changing it from the Raid's section. Changing the Mob's DKP will not automatically change existing raids for that mob.



Lastly, on this issue of automatically generating dependent data when importing raids. Currently, the importer does not do this, and here's why. Tools that automatically do things are like loaded guns, screw something up and you're generally left with a real mess. If an import went bad, entire sections of the system could be hosed with no real measure for fixing it.

So rather than doing a bunch of stuff automatically, for now, I'm just issuing warnings if anything fails. If anything fails, the entire import is canceled. This means we thoroughly test the effects of the import before we begin changing the database.

So a few things we test for now....

Does the instance exist at the difficulty specified?
Does the mob exist?
Does the item exist for that mob?
Do all of the attendees exist?

If these questions pass, then it will import.

Now, what's the load of these questions?

Well, the first question requires you to manaully make the instance if it's not there. No biggie really. Maybe 2-3 minutes of overhead?

Questions two and three are easily handled by syncing the instance.

Question four is fied by syncing, and if after a sync the player is still not there, then you might have to make the player maually.

I don't think the load is that big of a deal, given the mess we could end up with if we automated this.

Also, keep in mind this basically the beta of the whole thing. Once we've had it out for a release or two, we can begin making improvements.
Mar 11, 2009 at 6:14 AM

I think the final method for raid importing will be very different from what this release will have.

In my mind, the ideal way to do a raid import is as follows:

1) Ask for the raid import string.
2) Parse string for the imports effect.
3) Display the effects in a user interface that allows confirmation of changes.
4) Apply confirmed changes.

In the end, I think this is the best of both worlds. Steps two and three provide that critical step of saying "Hey, based on what you just gave me, this is what I'm going to do." Step four automates it.

Ideally, I'd have this done now, but it's probably going to take a week or so to make that interface. If I can, I'd like to get something that can help in some little way out there now.

Mar 11, 2009 at 4:41 PM
Edited Mar 11, 2009 at 4:42 PM
"Ked af!"

Lol.... Google translate ftw?? :P

I still think there should be some automation when it comes to Players and Items cause those are the worst things to add or the most time consuming. I know you have added that import from WoWHead but it's not always updated.
As long as you make a failsafe Try Catch or something that warns ppl that there is an error, this is the error and please correct it by doing this... Then i don't think there will be a problem.
The RaidTracker does have all the information you need to add stuff.

Also another thing is that the current RaidTracker version has a bug where the cost of items doesn't get exported so it always says 0 in cost.
I have fixed that bug and uploaded it to my site for everyone to download Here. I'm gonna keep it updated untill the authors of the addon fixes the problem.
Mar 11, 2009 at 10:22 PM
Edited Mar 11, 2009 at 10:23 PM
Unfortunately I am only fluent in Spanish, Japanese, and English... it's the effort that counts?

I hear what you're saying. I just want to take it slow.

Curious, but are you running your site in ASP 1.1 or ASP 2.0?

I'm working on replacing the Datagrid in 1.4 with the GridView control in 1.5 and I don't think ASP 1.1 supports the GridView.

The reason is multi-faceted. The GridView is much easier to work with programmatically, and it'll be easier to code the aspx so that if you choose, you can cut/paste the grid's column definitions around to reorder grid columns as you see fit.

As the module is now, if you do this, you also have to change code. This will make the code and appearance more independent.
Mar 11, 2009 at 11:22 PM
Edited Mar 11, 2009 at 11:22 PM
It's always the effort that counts :D

I'm running ASP 2.0 and i'm 99% it won't be a problem to use the GridView, most hosts supports ASP 2.0 and if they don't they don't support 1.1 either.
Are you really using a Datagrid???? I'm like... lol.... :P

Gogo GridView!!
Mar 12, 2009 at 12:22 AM
In the interest of compatibility, yes. For what I actually use the grid for, switching between the two isn't that big of a deal, especially since I realized one of the things I was thinking I could do with the GridView can't be done, so I had to come up with another method, which as it turns out... can also be done in the DataGrid as well.

Perhaps the most annoying thing about all these grids is the inability to identify columns by name. Maybe you've ran into this as well.

At any rate, to disconnect the code from the layout of the columns in the grid, I'm going to hijack the grid footer and store a string in each column's footer that will describe each column's name and type for skinning. Referencing a column's footer for reading is fairly easy.

This will allow the columns to be reorder without code modification. Turning a column on and off can be handled in the aspx as well.