-
Notifications
You must be signed in to change notification settings - Fork 0
kanban_metrics
- added intervalStart, intervalEnd Dates ** mark the interval for which the metric is for
- removed date field
- renamed baseDate to forecastDate (represents the date when a forcast was mad)
-
added new field "onKanban" (INT) => to select which items are shown and which not => to keep items and not delete them
-
implemented new state "killed" => own symbol (item_killed) => no delay lines => greyed out
- changed reference to agile (former "skywalker"
- removed target 9 (reg markets consolidation)
- fixed subheadlines of metric timelines
20140418
- ideas to switch easily between single lanes
=> just play with values in FILTER
ITEMDATA_FILTER = {"name":"lane", "operator":"==", "value":"bwin"}; CONTEXT=ITEMDATA_FILTER.value; drawAll()
=> has an error currently - looks like in targets rendering...
20140422
=> on csv import => skip first line in phpmyadmin
ALTER TABLE initiatives AUTO_INCREMENT=1000
v1sync:
- first version of insert, update delete WORKS :o)
mongo windows service install
sc.exe create MongoDB binPath= ""C:\mongodb\bin\mongod.exe" --dbpath="C:\mongodb\db" --config="C:\mongodb\mongod.cfg"" DisplayName= "MongoDB 2.6 Standard" start= "auto"
mongoimport items.json
mongoimport "c:\Users\gkathan\Dropbox\_work\d3\kanban\data\initiatives.json" --jsonArray
WOW :-)
node.js + mongodb
- restify
https://www.openshift.com/blogs/day-27-restify-build-correct-rest-web-services-in-nodejs
=> built a REST server in 10 minutes
in work dir where source (mongo_gateway.js) sits => npm install restify => npm install mongojs
node mongo_gateway.js
20140428
- json diff (compare) http://snipplr.com/view/41249/ https://github.com/benjamine/jsondiffpatch
=> for row based compare on diff on update => application logic for something like an update trigger
function update (row){ var _old = db.initiatives.findOne(by row id); var _diff = compare (_old,row);
// update row
// insert diff into change trail
}
nodejs excel exporter https://www.npmjs.org/package/excel-export
npm install excel-export
=> styles.xml extracted froma a table excel ....hmmm not so awesome => what i am looking for is a json2excel converter
mongoimport c:\Users\gkathan\Dropbox_work\d3\kanban\data\json\themes.json --jsonArray --db kanban --collection themes mongoimport c:\Users\gkathan\Dropbox_work\d3\kanban\data\json\lanes.json --jsonArray --db kanban --collection lanes mongoimport c:\Users\gkathan\Dropbox_work\d3\kanban\data\json\sublanes.json --jsonArray --db kanban --collection sublanes mongoimport c:\Users\gkathan\Dropbox_work\d3\kanban\data\json\bm.json --jsonArray --db kanban --collection bm
mongodump --db kanban
===== v1 admin console from now on in PRODUCTION :-)
- insert, update, delete OK
IDEA = daily / weekly auto generated report / pix / newly added items / changes / etc
mongo_gateway => CRUD
- change trail
- initiatives_trai npm install jsondiffpatch
recursion /asynch for loops
- http://www.richardrodger.com/2011/04/21/node-js-how-to-write-a-for-loop-with-callbacks/#.U2OnCfmSw9Q
- http://book.mixu.net/node/ch7.html =>7.2.1!!
WORKS :-)))
=> kanban.js
- switch between PERSTISTENCE_CONFIGS (mongo/mysql)
20140503 QUESTION?
- is it better to store full trail of changed entities or just the diffs
- or maybe just both ? =>just added both old and diff into the diff_trail and added a timestamp of insert
http://localhost:9999/initiatives_diff_trail
autoinc field
db.initiatives_counter.insert({_id:"initiativeId",seq:0})
=> implemented async if then => quite weird with "restOfTheFucntion" continuation callback...
NOT SURE whether i need this autoinc additional kanbanID at all => have anyhow the extId (as numeric unique ID) => in fact it is just about a more human readable ref for mappings etc... hmmm
uuh and initiatives.id still has semantic !!!!!
-
order for lane buildup and more NEEDS INVESTIGATION !!!!
-
sorting of lanes --> experimenting in kanban.js -> drawAll()
initiativeData.sort(function(a,b){return (b.lane>a.lane) ?1 :-1}); https://github.com/Teun/thenBy.js
=> sorting behaves very strange !
- not deterministic as if it runs async ....
- needs to be called twice - then it works
[OK] application join between initiatives and lanes
- for sorting
- function joinInitiatives2LanesSort(){
mongodb csv export
- WORKS :-)
mongoexport --collection metrics --db kanban --fields id,dimension,class,lane,intervalStart,intervalEnd,forecastDate,number,scale,type,sustainable,reforecast,targets,direction --csv --out metrics.csv
http://docs.mongodb.org/manual/tutorial/write-scripts-for-the-mongo-shell/
** easy to script via simple .js files :-)
c:\mongodb\scripts> mongo kanban _mongofind.js
cursor = db.lanes.find(); while ( cursor.hasNext() ) { printjson( cursor.next() ); }
- mongo data restore /setup on ubuntu
mongorestore --drop from above ..dump\ directory
when locale crah abort...
==> export LC_ALL=C
- ok => collections missing
- lanes (not yet in mongodump....) on helix
- initiatives_counter
check nodejs / mongo environment on PROD system
update DEV in office
tools
- install robomongo
(1) mongoDB
-
cd C:\Users\gkathan\Dropbox_work\d3\kanban\data\mongo
-
mongorestore --drop
-
mongoimport c:\Users\gkathan\Dropbox_work\d3\kanban\data\json\lanes.json --jsonArray --db kanban --collection lanes --drop
-
mongo => use kanban => db.initiatives_counter.insert({_id:"initiativeId",seq:1000})
new mongodump on DEV
- mongodump --db kanban --out mongodump_DEV_20140506_0946
/**
==> ???? metrics not shown ==> something does not WORK ????
re-import from prod instance
mongoimport c:\Users\gkathan\Dropbox_work\d3\kanban\data\json\metrics_PROD_20140409_1900.json --jsonArray --db kanban --collection metrics --drop
===> does NOT HELP ????
==> ok reverting back to orgiginal dump version fixes
-
now checking what made the difference ....
-
mongodump --db kanban --out mongodump_DEV_20140506_1040
-
and restore again
mongorestore --drop mongodump_DEV_20140506_1040 ==> !!!! on restore it breaks .... ===> aha - metricData has only 200 elements ????
===> after manual drop -- ok also 200 ;-) => that was not the issue
**** so lets check the DIFF between the concrete metricData arrays as JSON.stringify
HAHAHAHAHAAAAAAAAAAAAAAAAAAAA !!! it was a .limit(200) in my findAll() mongo_gateway code FUUUCK !!! but works now !!!
*/
(2) start node mongo_gateway.js
OK - somehow i need to manually db.dropDatabase() before mongorestore !!!!
=> if i do twice a mongorestore => metrics break .-...
(3) howto run node server
http://stackoverflow.com/questions/4797050/how-to-run-process-as-background-and-never-die ??
nohup /opt/node/bin/node js/node/mongo_gateway.js </dev/null & [1] 3374
** to stop it kill 3374
- added node nad mongo into my path
- /home/gkathan/.bashrc
- export PATH=$PATH:/opt/node/bin:/opt/mongodb/bin
=================
- diff_trail
=> have working 0.0.1 REST endpoint http://localhost:9999/initiatives_diff_trail/5368f67f2940aa15bf4cd174
=> returns diff trails by refId
=> prototype with backside of the tooltip ;-)
in kanban_item.js
WORKS :-))))
==================
excel export from metrics WORkS
- connected to mongoDB :o)
20140507
http://localhost:7777/excel => node/excel_metrics_exporter.js
- playing with spreadsheetML
TESTRUN with PROD deploy of mongodb version
*) update of latest mysql initaiveData.json on DEV
- mongoimport c:\Users\gkathan\Dropbox_work\d3\kanban\data\json\initiatives_PROD_20140423_1709.json --jsonArray --db kanban --collection initiatives --drop
*) create unique index on initiative.ExTId und id
in mongo shell:
- db.initiatives.ensureIndex( { ExtId: 1 }, { unique: true, sparse:true } ) => ERROR ?? have to check later
- db.initiatives.ensureIndex( { id: 1 }, { unique: true } )
*) how to transfer a mongoDB dump from DEV to PROD
- first do a mongodump on DEV
- mongodump --db kanban --out C:\Users\gkathan\Dropbox_work\d3\kanban\data\mongo\mongodump_DEV_20140508_0856
- zip it
==> hack for now
- winscp the dump folder ==> on ssh run
- mongorestore --drop mongodump_DEV_20140508_0856/
[OK] now - had to fix some issues with data gateway URLS => went to localhost ;-)))
running mongoversion on PROD as test.....
- change kanban.html to kanban.php
-
fixed auth stuff
- included v1sync => now also a php file
-
some data cleansing => subLaneOffset has "Arr" ???? values => set them to null
- db.initiatives.update( { sublaneOffset: "Arr" }, { $set: { sublaneOffset: null } }, { multi: true })
[OK] done on PROD
=> need to do ONE PROD dump and see whether i can get this dump into DEV...
>via SSH on portfolio.ea>
+ mongodump --db kanban --out mongodump_PROD_20140509_1733
[OK] worked and created a DIR
> tar it
+ tar -cvf mongodump_PROD_20140509_1733.tar mongodump_PROD_20140509_1733/
> and winscp it to kanban/data/mongo and extract it
[OK]
> and restore it locally on DEV (from kanban/data/mongo/ dir)
+ mongorestore --drop mongodump_PROD_20140509_1733
[OK]
=> and put into ant task "mongodumpPROD"
[OK]
-
items NOT in V1 are NOT shown in V1sync (naturally) => what to do with those ? => e.g. premium phase 2 [TODO]
-
names too long [TODO] strip out the "[backlog/blah]" part when showing it in kanban_item.js str.replace(/\s*[.?]\s/g, '')
[DONE]
-
sort joins are impliciely stored on v1admin CRD => interesting ....
-
adaptive config switch based on window.location.host
=> when on localhost => DEV => when on portfolio.ea.bwinparty.corp => PROD
[DONE in kanban_config.js] OK
20140510 *** IDEA
automatically do a daily PNG snapshit
- calling form post save as png =
submit_download_form("png");
201400511
playing with phantomjs
- login works
- download attachement does not work
20140521 => peter needs excel initiative export => already started to implement this in a nodejs service
=> do NOT export HealthComment and Description field => CRASHES export !! +++ \n seems to be the root cause of excel failing
mongoexport --collection initiatives --db kanban --fields id,ExtId,name,name2,bm,theme,lane,themesl,sublane,sublaneOffset,startDate,planDate,state,actualDate,progress,health,status,size,Type,cost,Swag,benefit,dependsOn,accuracy,productOwner,businessOwner,programLead,createDate,changeDate --csv --out initiatives.csv
- shell script "initiatives_csv_dump.sh"
=> [OK] created ant target
ant initiativesCsvPROD
- exports initiative collection on PROD
- downloads it (scp) locally into data/mongo/csv_export
- and timestamps the file :-)
20140522
- excel_kanban_exporter.js
fixing excel export of initiatives:
- sorting of columns for row export
- investigating what breaks the excel
- it is the DoD field
- experimenting with _stripCrap() method to clean out the shit -..
[OK] works now => isolated the shitty \u00xx shit
- started a admin.php => for managing kanban data => concisoucly separated from the v1 sync
20140534
- excel_kanban_exporter.js
=> finalized export for targets, metrics, initiatives => path is htpp://blabla/excel/metrics etc.
-
try to combine this to mongo_gateway.js => to just have one resitify server process ! => and deploy to PROD....
-
fixed date format handliung of SlickGrid Date Editor => put d3.formater in it..
target, metrics, lanetext need seqcounter collections
run in mongoDB:
!!!IMPORTANT befor deploying NEW VERSION TO PROD !!!
db.targets_counter.insert( { _id: "targetsId", seq: 100 } )
db.initiatives_counter.insert( { _id: "initiativesId", seq: 1029 } )
==> initiatives_counter on PROD is on 1001 ==> but some items had been synced => but have to date .... ==> 1019
sooo funzt alles - aber deploy next week => weekend ;-)
HINT:
- when i add a new item for a new lane
- current config (manual override in kanban.php / lane setup => add new lane there !
storing of v1 dates
- v1plannedStart, v1plannedEnd, v1launchdate [OK] works
!!! URLS auf mongogateway sind hardcoded und zeigen auf localhost ....
18:17
- deploy on PROD => ant deploy => restart mongo_gateway on SSH
ps ax |grep mongo_gateway.js => 5949 kill 5549 => [OK] down
start_mongo_gateway.sh
[OK] up and running
test: excel export NOPE => {"code":"InternalError","message":"ENOENT, no such file or directory 'styles.xml'"}
- ok - styles.xml muss in dem dir liegen wo mongo_gateway gestart wird .... [TODO] fix => for now (as hack) styles.xml copied into home dir where the start script resides ....
last thing for today => fixing the seq for initiatives
db.initiatives_counter.drop()
db.initiatives_counter.insert( { _id: "initiativesId", seq: 1020 } )
[OK]
20140527
-
http://craig.is/killing/mice => keyboard shortcuts javascript
-
bootstrap notification http://goodybag.github.io/bootstrap-notify/
-
local v1 knbnproxy =================== sucessfully installed and compiled knbproxy on localDEV machine:
-
intelliJ
-
checkout GIT project https://github.com/bwinparty/knbnprxy
-
build artifacts
-
copy config.xml into folder where knbnproxy.jar sits
-
edit config.xml with stuff from V1 permitted apps (member details -> permitted apps, http://v1.bwinparty.corp/V1-Production/member.mvc/Oauth2Clients?oidToken=Member%3A88955)
-
start knbnproxy with "java -jar knbnproxy.jar"
-
access proxy via http://localhost:8585/rest/epics
-
kanban node gateway startscript ================================= kanban_node_gateway.sh (start|stop|restart)
=> replaces old script (nohup /opt/node/bin/node portfolio/html/js/node/mongo_gateway.js </dev/null &)
- snapshot of PROD mongo -> DEV ================================ ant mongodumpPROD
mongorestore --drop mongodump_PROD_TIMESTAMP
[OK} works fine
- started DIFF indication in v1sync ==================================
- v1 meta api
http://v1.bwinparty.corp/V1-Production/meta.v1/Epic http://v1.bwinparty.corp/V1-Production/meta.v1/Scope http://v1.bwinparty.corp/V1-Production/meta.v1/Schedule http://v1.bwinparty.corp/V1-Production/meta.v1/Team
- beautification and small stuff onKanban..
together with peter K we did an online kanban admin session
- v1 sync
- kanban admin
=> in general basic functions worked as expected (CRUDS) => in specific many UX glitches and not thought through (yet) usecases
e.g.
- edit from board - click on tooltip admin link => list / edit => here a details form (instead of a list and 1 row view) would be awesome
[TODO] we decided that v1.launchDate is the one to sync for kanbanPlan in case of prefill [TODO] sublaneOffset drag and drop would be awesome in admin mode [TODO] de-glitch the admin process
- v1 sync new initiatives
- search and filter [TODO] sublane select box (prefilter based on lane select) [
- started to implement status based on peters list for target
- RAG formatter
[TODO] rendering of status in corpkanban view
orgtree/radial experiemnts
=> need to disable formpost limit in tomcat .....
- this is right now a painful manual process
- get xls from HYD
- save as TAB delimited (.txt) from excel
- use org.js as base
- comment building root => will produced an error on org.html
- use chrome console to output JSON.stringify(orgData)
- copy paste into geany
- replace all weird characters
- save as json
mongoimport c:\Users\gkathan\Dropbox_work\d3\kanban\data\bpty_org_20140610.json --jsonArray --drop --db kanban --collection org [OK] imported 3449 rows
add endpoint in kanban_node_gateway
[ok] http://localhost:9999/org
cd data/ mongoimport ./bpty_org_20140610.json --jsonArray --db kanban --collection org
[ok]
- stop => kanban_node_gateway.sh
- manually copy update kanban_gateway
- restart node kanbangateway
- refreshing my tree algorthimitc skills ;-)
- until yet i implicietly implemented depth first traversal
- this is right now a painful manual process
- get xls from HYD
- use node xlsx2json => edit code
- done :-)
- add endpoint in kanban_node_gateway.js import historic data
mongoimport ./bpty_org_20130429.json --jsonArray --db kanban --drop --collection org2013april
cd data/mongo mongorestore --drop mongodump_PROD_20140613_173813
- convert excel to json via xlsx2json.js (node)
- import into DEV
- add nodegateway endpoint C:\Users\gkathan\Dropbox_work\d3\kanban\js\node>mongoimport ./x2011.json --jsonArray --drop --db kanban --collection org2011april
kanban_item
-
i need a "doneDate" which ideally should match the launchDate in v1
-
state sync => on hold => gray out the initiative
import latest PI snapshot
mongoimport ./x2014jun26.json --jsonArray --db kanban --drop --collection org2014jun26
voila
-
convert excel to json
-
import json into mongo on DEV
-
upload json on PROD
-
import json on PROD
-
change shoudl be possible without touching node_gateway or other scripts
mongoimport ./x2014jul23.json --jsonArray --db kanban --drop --collection org2014jul23
experimented in knbnproxy
- added EpicRootName + EpicRootNumber 3 places
- model.Epic
- service.V1Client
- util.EpicAdapter
=> works => when i want to access Super.ID it crashes ;-)
scrum teams imported to mongodb
mongoimport ./scrumteams2014jul25.json --jsonArray --db kanban --drop --collection scrumteams
find teammembers
db.org2014jul23.find({"Scrum Team 1":"TEAMNAME"})
interesting orgchart library
http://librerias.logicas.org/lib_gg_orgchart/download.php
BRAIN FUCK for 6 MONTH
experimenting with drag drop
=> currently a specific dragdrop handler for items is implemented in kanban_utils => try to get lanes movable => experimental reuse of drag_item behaviour in kanban_lanes.drawLaneBox()
=> i am still not fully back with my brain but getting there ;-)
[STORY] = make laneboxtext inline editable via html overlay form => derzeit ist lanetext zeilenweise in mongodb
- experimenting with console and my textarea helper class (in d3_util.js)
=> yet quite weird => braucht als erstes ein "text" element => und dann kann man damit ein textarea ding machen
textarea(svg.append("text"),"UBBA BAZOOKA | + list item1 | +list item2 | +list item3",0,-170,200);
=> " | " ist zeilenumbruch
- setup kanban on HOME DEV WORKSTATION (bender)
- install mongodb on WIN (a bit quirky .)
- ant mongodumpPROD
- restore manually C:\Program Files\MongoDB 2.6 Standard\bin>mongorestore --drop C:\Users\cactus\Dropbox_work\d3\kanban\data\mongo\mongodump_PROD_20150111_193900
- SUCCESS
[EPIC]
- migrate php webfiles (only used for session handling) to node.js express
[STORY]
- selective filter view for ITEMS e.g. show only DONE items d3.select("#items").selectAll("g").filter(function(d){return d.state!="done"}).style("visibility","hidden")
=> check whether the DONE percentage count is accurate => seems currently not to be the case => only those which also have the planned End date in the visible kanban corridor are counted
20150113
-
checkInSync() method to include Status and Health
-
derive & map kanban state from v1 data
- "done" => "Monitoring", "Done"
- "killed" => "On Hold"
- "planned" => "Implementation" "Conception" "New"
[TUTORIAL]
- how to start kanban_node_gateway.js
- in my home dir there is a start shell script
- kanban_node_gateway.sh => start => stop
refactoring admin.php
=> extracting ajaxCall function into kanban_util => can be called from everywhere now
testing initiative on drop sublaneOffset save
- works EASILY => just had to call the new ajaxCall() method on dragEnd and voila :-)
=> OK now also lane, sublane works BUT !!!!
the sublaneOffset Handling is broken as it takes the absolute moved pixels as offset !!!!!
=> OK fixed
- drag & drop only in ISOLATIONMODE
- sublaneoffset only within same sublane
- crossing lanes possible
on PROD
/opt/mongodb/bin/mongoimport ./x2015jan15.json --jsonArray --db kanban --drop --collection org2015jan15
/opt/mongodb/bin/mongoimport ./scrumteams2014jul25.json --jsonArray --db kanban --drop --collection scrumteams
[EPIC] rewrite tree stuff
=> refactor hardcoded theme,lane,sublane, fields to generic path like structure
item.bm="b2c gaming" item.theme="topline" item.lane"bwin" item.sublane="mobile"
and then use _.nest("
http://stackoverflow.com/questions/8781983/build-a-json-tree-from-materialized-paths
conceptually we are now just talking about "nested lanes" => lane in a lane in a lane .....
item.path="/b2c gaming/topline/bwin/mobile/"
- decide whether items can only sit under leaf node of path or not
=> build tree based on path
step1:
- encapsulate all calls / references to hardcoded item.lane, item.topline,... calls
- generic format could be e.g. get
=> current implementation has more or less one hardcoded structure
bm = the board instance e.g. "b2c gaming" theme = first lane level lane = second lane level sublane = third lane level themeSl = experiment with alternative grouping => can be scrapped
all calls to _item.lane should be replaced with a getter/setter() method call
var items =[{item:"item1",path:"/b2cgaming/topline/bwin/touch"},{item:"item2",path:"/b2cgaming/topline/bwin/click"},{item:"item3",path:"/b2cgaming/topline/bwin/product"},{item:"item4",path:"/b2cgaming/topline/pp/market"},{item:"item5",path:"/b2cgaming/enabling/studios/agile"}];
items = items.map(function(d) { return d.path.split('/'); });
=> in kanban_util.js first experiment with function called
var items =[{item:"item1",lanePath:"/b2cgaming/topline/bwin/touch"},{item:"item2",lanePath:"/b2cgaming/topline/bwin/click"},{item:"item3",lanePath:"/b2cgaming/topline/bwin/product"},{item:"item4",lanePath:"/b2cgaming/topline/pp/market"},{item:"item5",lanePath:"/b2cgaming/enabling/studios/agile"}]; items = items.map(function(d) { return d.lanePath.split('/'); }); var t = buildTreeFromPathArray(items)
structure of initiativeData = array of item objects [item1,item2,..] item= {id:"id",name:"name",lane:"lane",.....]
- in kanban_core.createLaneHierarchy()
in console:
- ITEMDATA_NEST= ["theme","lane","sublane"];
- var h = _.nest(initiativeData,ITEMDATA_NEST)
- h
STEP1 = create new field in mongo.collection "initiatives" called "path" => should be automatically doable to take the bm+theme+lane+sublane and string it together
use kanban
// bulk update to create new field lanePath and prefill with existing data from hardcoded fields
db.initiatives.find().forEach(function (elem) {db.initiatives.update({_id: elem._id},{ $set: { lanePath: elem.bm + '/' + elem.theme + '/' + elem.lane + '/' + elem.sublane }});});
[OK]
- in kanban console i can now already apply the new tree building based on lanePath field
var items = initiativeData.map(function(d) { return d.lanePath.split('/'); }); var t = buildTreeFromPathArray(items)
t[0] has the same structure needed for createLaneHierarchy() :o)
=> only thing missing is to put the concrete initiatives in the leaf nodes where the last "/" is !
=> HOLY SHIT => i do not even need to have the items in the leave path !!!! => works also without that !!! => experiment in kanban_core.createLaneHierarchy() works !!!!!
LEARNING = itemTree does NOT need to have items in leaf path ! => therefore it could/should be renamed to "laneTree" !
[OK]
- added RUNMODE configuration to switch between "LEGACY" and "NG" mode
kanban current flow
- itemTree is "only" needed for lanes
- currently implicitly called in kanban.drawInitiatives() => drawLanes() is called in that function ...
=> all the kanban_util.getLanesNEW()... methods call the generic method
function getElementsByDepth(depth){ var _elements = new Array(); traverse(itemTree,0,depth,_elements); return _elements; }
=> which uses the itemTree !
- das ist eh schon alles total richtig !
- wenn ich die draItems() auskommentiere baut er mir im NG mode bereits fixfertig die lane structure auf !!!!
ABER das ganze ist ja leider immer noch auf basis der impliziten lanePath info von der summe aller initiatives ;-) => sprich das lane gerüst ist derzeit NICHT explizit definiert (unabhängig von den initiatives) sondern in den dingern drin ...
it looks like we have a 3 level lane default
level 0 = sublane ==> items level 1 = lane level 2 = theme (level 3 = bm ?) ==> board
how to map now calls like ?
check path depth
- item.theme => item.lanePath.split("/").first()
- item.lane => item.lanePath.split("/").middle()
- item.sublane => item.lanePath.split("/").last()
remove theme,lane,sublane,themesl fields
db.initiatives.find().forEach(function (elem) {db.initiatives.update({_id: elem._id},{ $unset: { lane:"",theme:"",sublane:"",themesl:"" }});});
- immerhin zeichnet er mir wieder die ganze lane structure
- now works already nearly :-)
20150117
OK now we go into the core with lane, board , etc schema design !!!
=> added new field "path" in collection.lanes
contain the FQ path
=> mongoDEVdump
mongodump --db kanban --out mongodump_DEV_20150117
export LC_ALL="en_US.UTF-8"
- copy inititives collection to initiativesOLD
mongo use kanban db.initiatives.copyTo("initiativesOLD");
- remove non-initiative data fields to get a pure data collection
- accuracy
- bm
- lanePath
- onKanban
- size
- sublaneOffset
db.initiatives.find().forEach(function (elem) {db.initiatives.update({_id: elem._id},{ $unset: { accuracy:"",bm:"",lanePath:"",onKanban:"",size:"",sublaneOffset:"" }});});
- create new collection "boards"
- will hold the instances of concrete kanbanboards => our current one will be called "b2c gaming" (formerly known as "bm" field)
-
name (string)
-
height (int)
-
width (int)
-
itemScale (float)
-
laneboxRightWidth (int)
-
kanbanStart (date)
-
kanbanEnd (date)
-
viewConfig (default visibility of layers,...)
-
itemsOnBoard (array of item references mixed with the view information per item (the ones stripped out above) [{_id:xxxxx,itemRef:_id from initiative,itemViemInfo:{lanePath:xx,size:xx,sublaneOffset:xx,accuracy,}
-
lanesOnBoard (array of lane references)
=> import of items as an example
console:
var _items = [] for (var i in filteredInitiativeData){var _f = filteredInitiativeData[i];_items.push({itemRef:_f._id,itemView:{sublaneOffset:_f.sublaneOffset,size:_f.size,lanePath:_f.lanePath,accuracy:_f.accuracy}})}
- application level join to "emulate" current needed initiativeData
[OK] have a version running "NG" mode
=> alle the filteredInititaive data becomes obsolete in "NG" !!
so i have now:
- initiatives and boards split (mongo)
- app level join in kanban.renderB2Cgaming()
UUUUUUUHH => das ganze admin v1sync save / remove handling muss adaptiert werden .....
split write and remove... = ganze menge TODO :o)
*** initiative becomes transient in NG mode *** just temporary data for rendering !!! *** needs to be refreshed on updates joinBoard2Initiatives
howto remove an element from array
- search for item
var i =BOARD.items[100] BOARD.items.indexOf(i) => 100
BOARD.items.splice(100,1);
ideas:
- lanes sollten auch referenzierbar in boards sein
- einmal eine lane definieren - eg. bwin und je nach board in verschiedenen views anzeigen !
- ähnlich wie mit items
- name
- description
- swot ?
- strategy pillars
- logo
- type (p&l, costcenter,...)
- REF to metrics
- REF to items ?
==> first experiment with a second board instance ..... board.id=2 board.name=studios
[IMPORTANT]
-
im boards.items.itemView => der path sollte NICHT den boardnamen drin haben sondern nur /lane1/lane2/lane3 !!
=> hab ich mal manuell im board (id=2,name="studios") gemacht und geht :-)
=> im legacy board (id=0, name="b2c gaming" sind die path noch mit "b2c gaming/lane/lane" drin...
-
switch boards without postback:
renderBoard(boardsData[1]); drawAll();
targets [TODO] refactoring
==> needs a REAL refactoring ==> raus aus items ==> bissi nachdenken
BMM
vision-> goals -> objectives
- was sind da "targets" überhaupt ?
- kpi / metrics
means <-> end
- brauchen auch noch ein "path" feld !!
- zuordnung wo sie sind analog zu items in boards
NODE express playfield
-
created in /express folder
-
npm install express --save
-
npm install -g nodemon => start apps now via nodemon !
-
doing some tutorial stuff
http://cwbuecheler.com/web/tutorials/2013/node-express-mongo/
kanbanexpress
- fileupload working
- login with bootstrap testing
kanbanexpress
-
session handling
-
login
-
base for kanban views / routes
-
update PROD kanban with portfolio changes => history.xlsx
[TODO] upload and checker for portfoliogate excel
=> only show items with v1 status = "Implemnetation" d3.select("#items").selectAll("g").filter(function(d){return ((d.status!="Implementation"))}).style("visibility","hidden")
further refactored
- kanban_core
=> ITEMDATA_NEST no longer needed in "NG" !
start a new branch of kanban js package for the express version
=> includes all NG features => reomve all legacy features => v2.0 => directly edit out of kanbanexpress dir
refactor all GLOBAL js variables to be stored in one of the available HTML5 resources
- sessionStorage
=> replace global var AUTH with getAUTH() call (in kanban_util.js)
=> started to get the save functions to work:
-
hidden form in kanban.jad
-
submit_download_form() function copied into kanban_util.js => might be better idea to introduce new "kanban_view.js" ??
-
manual call of submit_download_form("pdf"); => works but css is not handled correct
-
FIXED hack in css declaration for transcoder => in kanban_util.js
loading initiatives on the fly:
var d = $.getJSON(dataSourceFor("initiatives")); d.responseJSON = array of objects
- playing with bower clientside package manager
- bower.json for kanban2.0 => wiki2html is not in github
=> added bower.json to app root http://stackoverflow.com/questions/14079833/how-to-change-bowers-default-components-folder => installs stuff into public/javascripts/components
http://gruntjs.com/getting-started
http://bocoup.com/weblog/introducing-grunt/
- sudo npm install -g grunt
- sudo npm install -g grunt-cli
[EPIC]
- json schema
- alpaca form
- edit details for boards
[EPIC]
- user / login management
- passport node.js
[EPIC]
- think about requireJS
[EPIC]
- board lane handling
- create empty board
- add / remove / update lanes and store them in lanes
[EPIC]
- drag drop initiatives onto new board handling
[EPIC]
- isolate v1 initiatives
- automated regular v1 sync
[EPIC]
- alternative item renderer
- whiteboard sketchy stlye vs. existing detailed planning stlye
[EPIC]
- find a way fo kanban menu
- refactor slidr
[EPIC]
- send email from express
- notifcations, reports... http://www.sitepoint.com/sending-email-using-node-js/
[EPIC] package and deploy app
[EPIC] scrum tool
=> free versionone for a single project :-) https://www53.v1host.com/kathanat
http://nodejs.org/docs/latest/api/modules.html
quite simple
- create a file "module1.js"
- is like a class => e.g. if you declare a var x in this file thsi will stay private
- interfaces are exposed via "exports.myInterface()"
and the consumer just references the module with
- var module1 = require ("module1.js")
- module1.myInterface()
===================================================================
-
npm install jsdoc -g => does not work
-
sidr
$.sidr("close")