inital commit
This commit is contained in:
commit
2c08fe4957
|
@ -0,0 +1,4 @@
|
|||
|
||||
sources/
|
||||
Analyse/
|
||||
backups/
|
|
@ -0,0 +1,620 @@
|
|||
{
|
||||
"ap-r5-m2-001": {
|
||||
"id": "ap-r5-m2-001",
|
||||
"x": 0.6305722152167912,
|
||||
"y": 0.9018257033384726,
|
||||
"group": "workshop4"
|
||||
},
|
||||
"ap-r5-m5-001": {
|
||||
"id": "ap-r5-m5-001",
|
||||
"x": 0.6305722152167912,
|
||||
"y": 0.9018257033384726,
|
||||
"group": "workshop4"
|
||||
},
|
||||
"ap-r5-m2-002": {
|
||||
"id": "ap-r5-m2-002",
|
||||
"x": 0.5526915529424054,
|
||||
"y": 0.9018257033384726,
|
||||
"group": "workshop3"
|
||||
},
|
||||
"ap-r5-m5-002": {
|
||||
"id": "ap-r5-m5-002",
|
||||
"x": 0.5526915529424054,
|
||||
"y": 0.9018257033384726,
|
||||
"group": "workshop3"
|
||||
},
|
||||
"ap-r5-m2-003": {
|
||||
"id": "ap-r5-m2-003",
|
||||
"x": 0.39445453392328184,
|
||||
"y": 0.8987726877222977,
|
||||
"group": "workshop1"
|
||||
},
|
||||
"ap-r5-m2-004": {
|
||||
"id": "ap-r5-m2-004",
|
||||
"x": 0.39445453392328184,
|
||||
"y": 0.8987726877222977,
|
||||
"group": "workshop1"
|
||||
},
|
||||
"ap-r5-m5-003": {
|
||||
"id": "ap-r5-m5-003",
|
||||
"x": 0.4463575654924901,
|
||||
"y": 0.8987726877222977,
|
||||
"group": "workshop2"
|
||||
},
|
||||
"ap-r5-m5-004": {
|
||||
"id": "ap-r5-m5-004",
|
||||
"x": 0.4463575654924901,
|
||||
"y": 0.8987726877222977,
|
||||
"group": "workshop2"
|
||||
},
|
||||
"ap-r4-m2-002": {
|
||||
"id": "ap-r4-m2-002",
|
||||
"x": 0.5648566290860524,
|
||||
"y": 0.55974140957731,
|
||||
"group": "stage5"
|
||||
},
|
||||
"ap-r4-m5-002": {
|
||||
"id": "ap-r4-m5-002",
|
||||
"x": 0.5648566290860524,
|
||||
"y": 0.55974140957731,
|
||||
"group": "stage5"
|
||||
},
|
||||
"ap-r4-m2-001": {
|
||||
"id": "ap-r4-m2-001",
|
||||
"x": 0.6020681524812905,
|
||||
"y": 0.55974140957731,
|
||||
"group": "stage5"
|
||||
},
|
||||
"ap-r4-m5-001": {
|
||||
"id": "ap-r4-m5-001",
|
||||
"x": 0.6020681524812905,
|
||||
"y": 0.55974140957731,
|
||||
"group": "stage5"
|
||||
},
|
||||
"ap-r4-m2-003": {
|
||||
"id": "ap-r4-m2-003",
|
||||
"x": 0.7045445930922304,
|
||||
"y": 0.581091147781221,
|
||||
"group": "stage6"
|
||||
},
|
||||
"ap-r4-m5-003": {
|
||||
"id": "ap-r4-m5-003",
|
||||
"x": 0.7045445930922304,
|
||||
"y": 0.581091147781221,
|
||||
"group": "stage6"
|
||||
},
|
||||
"ap-r4-m2-004": {
|
||||
"id": "ap-r4-m2-004",
|
||||
"x": 0.7550732336986934,
|
||||
"y": 0.581091147781221,
|
||||
"group": "stage6"
|
||||
},
|
||||
"ap-r4-m5-004": {
|
||||
"id": "ap-r4-m5-004",
|
||||
"x": 0.7550732336986934,
|
||||
"y": 0.581091147781221,
|
||||
"group": "stage6"
|
||||
},
|
||||
"ap-r4-m2-020": {
|
||||
"id": "ap-r4-m2-020",
|
||||
"x": 0.7302401826552158,
|
||||
"y": 0.44599520676548265,
|
||||
"group": ""
|
||||
},
|
||||
"ap-r4-m5-020": {
|
||||
"id": "ap-r4-m5-020",
|
||||
"x": 0.7302401826552158,
|
||||
"y": 0.44599520676548265,
|
||||
"group": ""
|
||||
},
|
||||
"ap-r1-m2-002": {
|
||||
"id": "ap-r1-m2-002",
|
||||
"x": 0.5577533706901054,
|
||||
"y": 0.10696392862049484,
|
||||
"group": ""
|
||||
},
|
||||
"ap-r1-m5-002": {
|
||||
"id": "ap-r1-m5-002",
|
||||
"x": 0.5577533706901054,
|
||||
"y": 0.10696392862049484,
|
||||
"group": ""
|
||||
},
|
||||
"ap-r1-m2-005": {
|
||||
"id": "ap-r1-m2-005",
|
||||
"x": 0.5735849816822486,
|
||||
"y": 0.23955639683096974,
|
||||
"group": ""
|
||||
},
|
||||
"ap-r1-m5-005": {
|
||||
"id": "ap-r1-m5-005",
|
||||
"x": 0.5735849816822486,
|
||||
"y": 0.23955639683096974,
|
||||
"group": ""
|
||||
},
|
||||
"ap-r1-m2-007": {
|
||||
"id": "ap-r1-m2-007",
|
||||
"x": 0.5212133738238959,
|
||||
"y": 0.23955639683096974,
|
||||
"group": ""
|
||||
},
|
||||
"ap-r1-m5-007": {
|
||||
"id": "ap-r1-m5-007",
|
||||
"x": 0.5212133738238959,
|
||||
"y": 0.23955639683096974,
|
||||
"group": ""
|
||||
},
|
||||
"ap-r1-m2-008": {
|
||||
"id": "ap-r1-m2-008",
|
||||
"x": 0.4589777873947009,
|
||||
"y": 0.23955639683096974,
|
||||
"group": ""
|
||||
},
|
||||
"ap-r1-m5-008": {
|
||||
"id": "ap-r1-m5-008",
|
||||
"x": 0.4589777873947009,
|
||||
"y": 0.23955639683096974,
|
||||
"group": ""
|
||||
},
|
||||
"ap-r1-m2-001": {
|
||||
"id": "ap-r1-m2-001",
|
||||
"x": 0.6523833968796401,
|
||||
"y": 0.16703811689996795,
|
||||
"group": ""
|
||||
},
|
||||
"ap-r1-m5-001": {
|
||||
"id": "ap-r1-m5-001",
|
||||
"x": 0.6523833968796401,
|
||||
"y": 0.16703811689996795,
|
||||
"group": ""
|
||||
},
|
||||
"ap-r1-m2-009": {
|
||||
"id": "ap-r1-m2-009",
|
||||
"x": 0.631345216865762,
|
||||
"y": 0.31025202643911515,
|
||||
"group": ""
|
||||
},
|
||||
"ap-r1-m5-009": {
|
||||
"id": "ap-r1-m5-009",
|
||||
"x": 0.631345216865762,
|
||||
"y": 0.31025202643911515,
|
||||
"group": ""
|
||||
},
|
||||
"ap-r1-m2-006": {
|
||||
"id": "ap-r1-m2-006",
|
||||
"x": 0.6199994030875298,
|
||||
"y": 0.4179929475339266,
|
||||
"group": ""
|
||||
},
|
||||
"ap-r1-m5-006": {
|
||||
"id": "ap-r1-m5-006",
|
||||
"x": 0.6199994030875298,
|
||||
"y": 0.4179929475339266,
|
||||
"group": ""
|
||||
},
|
||||
"ap-r3-m2-007": {
|
||||
"id": "ap-r3-m2-007",
|
||||
"x": 0.40454086238929143,
|
||||
"y": 0.214524721793952,
|
||||
"group": ""
|
||||
},
|
||||
"ap-r3-m5-007": {
|
||||
"id": "ap-r3-m5-007",
|
||||
"x": 0.40454086238929143,
|
||||
"y": 0.214524721793952,
|
||||
"group": ""
|
||||
},
|
||||
"ap-r3-m2-003": {
|
||||
"id": "ap-r3-m2-003",
|
||||
"x": 0.3930577587429024,
|
||||
"y": 0.4288403120181959,
|
||||
"group": ""
|
||||
},
|
||||
"ap-r3-m5-003": {
|
||||
"id": "ap-r3-m5-003",
|
||||
"x": 0.3930577587429024,
|
||||
"y": 0.4288403120181959,
|
||||
"group": ""
|
||||
},
|
||||
"ap-r3-m2-001": {
|
||||
"id": "ap-r3-m2-001",
|
||||
"x": 0.45714377382986504,
|
||||
"y": 0.4179929475339266,
|
||||
"group": ""
|
||||
},
|
||||
"ap-r3-m5-001": {
|
||||
"id": "ap-r3-m5-001",
|
||||
"x": 0.45714377382986504,
|
||||
"y": 0.4179929475339266,
|
||||
"group": ""
|
||||
},
|
||||
"ap-r3-m2-002": {
|
||||
"id": "ap-r3-m2-002",
|
||||
"x": 0.5272093595875335,
|
||||
"y": 0.4179929475339266,
|
||||
"group": ""
|
||||
},
|
||||
"ap-r3-m5-002": {
|
||||
"id": "ap-r3-m5-002",
|
||||
"x": 0.5272093595875335,
|
||||
"y": 0.4179929475339266,
|
||||
"group": ""
|
||||
},
|
||||
"ap-r3-m2-008": {
|
||||
"id": "ap-r3-m2-008",
|
||||
"x": 0.40269938741857736,
|
||||
"y": 0.55974140957731,
|
||||
"group": "stage4"
|
||||
},
|
||||
"ap-r3-m5-008": {
|
||||
"id": "ap-r3-m5-008",
|
||||
"x": 0.40269938741857736,
|
||||
"y": 0.55974140957731,
|
||||
"group": "stage4"
|
||||
},
|
||||
"ap-r3-m2-005": {
|
||||
"id": "ap-r3-m2-005",
|
||||
"x": 0.4433730031412519,
|
||||
"y": 0.55974140957731,
|
||||
"group": "stage4"
|
||||
},
|
||||
"ap-r3-m5-005": {
|
||||
"id": "ap-r3-m5-005",
|
||||
"x": 0.4433730031412519,
|
||||
"y": 0.55974140957731,
|
||||
"group": "stage4"
|
||||
},
|
||||
"ap-r2-m2-002": {
|
||||
"id": "ap-r2-m2-002",
|
||||
"x": 0.3568923244517732,
|
||||
"y": 0.214524721793952,
|
||||
"group": ""
|
||||
},
|
||||
"ap-vi-m2-002": {
|
||||
"id": "ap-vi-m2-002",
|
||||
"x": 0.7548195458988383,
|
||||
"y": 0.2606038864888793,
|
||||
"group": ""
|
||||
},
|
||||
"ap-vi-m5-002": {
|
||||
"id": "ap-vi-m5-002",
|
||||
"x": 0.7548195458988383,
|
||||
"y": 0.2606038864888793,
|
||||
"group": ""
|
||||
},
|
||||
"ap-vi-m2-003": {
|
||||
"id": "ap-vi-m2-003",
|
||||
"x": 0.9330620863583116,
|
||||
"y": 0.36500786151521153,
|
||||
"group": ""
|
||||
},
|
||||
"ap-vi-m2-001": {
|
||||
"id": "ap-vi-m2-001",
|
||||
"x": 0.8290083045447423,
|
||||
"y": 0.25331023218183757,
|
||||
"group": ""
|
||||
},
|
||||
"ap-vi-m5-001": {
|
||||
"id": "ap-vi-m5-001",
|
||||
"x": 0.8290083045447423,
|
||||
"y": 0.25331023218183757,
|
||||
"group": ""
|
||||
},
|
||||
"ap-vi-m2-020": {
|
||||
"id": "ap-vi-m2-020",
|
||||
"x": 0.722893682427643,
|
||||
"y": 0.3561266390877589,
|
||||
"group": ""
|
||||
},
|
||||
"ap-vi-m5-020": {
|
||||
"id": "ap-vi-m5-020",
|
||||
"x": 0.722893682427643,
|
||||
"y": 0.3561266390877589,
|
||||
"group": ""
|
||||
},
|
||||
"ap-r7-m2-013": {
|
||||
"id": "ap-r7-m2-013",
|
||||
"x": 0.2763733090588929,
|
||||
"y": 0.5353417087728404,
|
||||
"group": "stage3"
|
||||
},
|
||||
"ap-r7-m5-013": {
|
||||
"id": "ap-r7-m5-013",
|
||||
"x": 0.2763733090588929,
|
||||
"y": 0.5353417087728404,
|
||||
"group": "stage3"
|
||||
},
|
||||
"ap-r7-m2-014": {
|
||||
"id": "ap-r7-m2-014",
|
||||
"x": 0.23320459921058329,
|
||||
"y": 0.5353417087728404,
|
||||
"group": "stage3"
|
||||
},
|
||||
"ap-r7-m5-014": {
|
||||
"id": "ap-r7-m5-014",
|
||||
"x": 0.23320459921058329,
|
||||
"y": 0.5353417087728404,
|
||||
"group": "stage3"
|
||||
},
|
||||
"ap-r7-m2-004": {
|
||||
"id": "ap-r7-m2-004",
|
||||
"x": 0.2353609455093529,
|
||||
"y": 0.3811552611091606,
|
||||
"group": "stage1"
|
||||
},
|
||||
"ap-r7-m5-004": {
|
||||
"id": "ap-r7-m5-004",
|
||||
"x": 0.2353609455093529,
|
||||
"y": 0.3811552611091606,
|
||||
"group": "stage1"
|
||||
},
|
||||
"ap-r7-m2-001": {
|
||||
"id": "ap-r7-m2-001",
|
||||
"x": 0.28980980876416734,
|
||||
"y": 0.3811552611091606,
|
||||
"group": "stage1"
|
||||
},
|
||||
"ap-r7-m5-001": {
|
||||
"id": "ap-r7-m5-001",
|
||||
"x": 0.28980980876416734,
|
||||
"y": 0.3811552611091606,
|
||||
"group": "stage1"
|
||||
},
|
||||
"ap-r7-m2-005": {
|
||||
"id": "ap-r7-m2-005",
|
||||
"x": 0.2353609455093529,
|
||||
"y": 0.2980399639744156,
|
||||
"group": "stage1"
|
||||
},
|
||||
"ap-r7-m5-005": {
|
||||
"id": "ap-r7-m5-005",
|
||||
"x": 0.2353609455093529,
|
||||
"y": 0.2980399639744156,
|
||||
"group": "stage1"
|
||||
},
|
||||
"ap-r7-m2-002": {
|
||||
"id": "ap-r7-m2-002",
|
||||
"x": 0.28980980876416734,
|
||||
"y": 0.2980399639744156,
|
||||
"group": "stage1"
|
||||
},
|
||||
"ap-r7-m5-002": {
|
||||
"id": "ap-r7-m5-002",
|
||||
"x": 0.28980980876416734,
|
||||
"y": 0.2980399639744156,
|
||||
"group": "stage1"
|
||||
},
|
||||
"ap-r7-m2-006": {
|
||||
"id": "ap-r7-m2-006",
|
||||
"x": 0.2353609455093529,
|
||||
"y": 0.20544505335144786,
|
||||
"group": "stage1"
|
||||
},
|
||||
"ap-r7-m5-006": {
|
||||
"id": "ap-r7-m5-006",
|
||||
"x": 0.2353609455093529,
|
||||
"y": 0.20544505335144786,
|
||||
"group": "stage1"
|
||||
},
|
||||
"ap-r7-m2-003": {
|
||||
"id": "ap-r7-m2-003",
|
||||
"x": 0.28980980876416734,
|
||||
"y": 0.20544505335144786,
|
||||
"group": "stage1"
|
||||
},
|
||||
"ap-r7-m5-003": {
|
||||
"id": "ap-r7-m5-003",
|
||||
"x": 0.28980980876416734,
|
||||
"y": 0.20544505335144786,
|
||||
"group": "stage1"
|
||||
},
|
||||
"ap-r7-m2-007": {
|
||||
"id": "ap-r7-m2-007",
|
||||
"x": 0.17332830932004206,
|
||||
"y": 0.3811552611091606,
|
||||
"group": "stage1"
|
||||
},
|
||||
"ap-r7-m5-007": {
|
||||
"id": "ap-r7-m5-007",
|
||||
"x": 0.17332830932004206,
|
||||
"y": 0.3811552611091606,
|
||||
"group": "stage1"
|
||||
},
|
||||
"ap-r7-m2-008": {
|
||||
"id": "ap-r7-m2-008",
|
||||
"x": 0.17332830932004206,
|
||||
"y": 0.2980399639744156,
|
||||
"group": "stage1"
|
||||
},
|
||||
"ap-r7-m5-008": {
|
||||
"id": "ap-r7-m5-008",
|
||||
"x": 0.17332830932004206,
|
||||
"y": 0.2980399639744156,
|
||||
"group": "stage1"
|
||||
},
|
||||
"ap-r7-m2-009": {
|
||||
"id": "ap-r7-m2-009",
|
||||
"x": 0.17332830932004206,
|
||||
"y": 0.20544505335144786,
|
||||
"group": "stage1"
|
||||
},
|
||||
"ap-r7-m5-009": {
|
||||
"id": "ap-r7-m5-009",
|
||||
"x": 0.17332830932004206,
|
||||
"y": 0.20544505335144786,
|
||||
"group": "stage1"
|
||||
},
|
||||
"ap-r7-m2-010": {
|
||||
"id": "ap-r7-m2-010",
|
||||
"x": 0.10971534736575066,
|
||||
"y": 0.3811552611091606,
|
||||
"group": "stage1"
|
||||
},
|
||||
"ap-r7-m5-010": {
|
||||
"id": "ap-r7-m5-010",
|
||||
"x": 0.10971534736575066,
|
||||
"y": 0.3811552611091606,
|
||||
"group": "stage1"
|
||||
},
|
||||
"ap-r7-m2-011": {
|
||||
"id": "ap-r7-m2-011",
|
||||
"x": 0.10971534736575066,
|
||||
"y": 0.2980399639744156,
|
||||
"group": "stage1"
|
||||
},
|
||||
"ap-r7-m5-011": {
|
||||
"id": "ap-r7-m5-011",
|
||||
"x": 0.10971534736575066,
|
||||
"y": 0.2980399639744156,
|
||||
"group": "stage1"
|
||||
},
|
||||
"ap-r7-m2-012": {
|
||||
"id": "ap-r7-m2-012",
|
||||
"x": 0.10971534736575066,
|
||||
"y": 0.20544505335144786,
|
||||
"group": "stage1"
|
||||
},
|
||||
"ap-r7-m5-012": {
|
||||
"id": "ap-r7-m5-012",
|
||||
"x": 0.10971534736575066,
|
||||
"y": 0.20544505335144786,
|
||||
"group": "stage1"
|
||||
},
|
||||
"ap-r7-m2-020": {
|
||||
"id": "ap-r7-m2-020",
|
||||
"x": 0.206991188079658,
|
||||
"y": 0.32117876932940503,
|
||||
"group": "stage1"
|
||||
},
|
||||
"ap-r7-m5-020": {
|
||||
"id": "ap-r7-m5-020",
|
||||
"x": 0.206991188079658,
|
||||
"y": 0.32117876932940503,
|
||||
"group": "stage1"
|
||||
},
|
||||
"ap-r7-m2-021": {
|
||||
"id": "ap-r7-m2-021",
|
||||
"x": 0.206991188079658,
|
||||
"y": 0.254696301271581,
|
||||
"group": "stage1"
|
||||
},
|
||||
"ap-r7-m5-021": {
|
||||
"id": "ap-r7-m5-021",
|
||||
"x": 0.206991188079658,
|
||||
"y": 0.254696301271581,
|
||||
"group": "stage1"
|
||||
},
|
||||
"ap-r2-m5-002": {
|
||||
"id": "ap-r2-m5-002",
|
||||
"x": 0.3568923244517732,
|
||||
"y": 0.214524721793952,
|
||||
"group": ""
|
||||
},
|
||||
"ap-r1-m2-004": {
|
||||
"id": "ap-r1-m2-004",
|
||||
"x": 0.41579863157816194,
|
||||
"y": 0.10261032835182951,
|
||||
"group": "stage2"
|
||||
},
|
||||
"ap-r1-m5-004": {
|
||||
"id": "ap-r1-m5-004",
|
||||
"x": 0.41579863157816194,
|
||||
"y": 0.10261032835182951,
|
||||
"group": "stage2"
|
||||
},
|
||||
"ap-r1-m2-003": {
|
||||
"id": "ap-r1-m2-003",
|
||||
"x": 0.47989658491452963,
|
||||
"y": 0.10261032835182951,
|
||||
"group": "stage2"
|
||||
},
|
||||
"ap-r1-m5-003": {
|
||||
"id": "ap-r1-m5-003",
|
||||
"x": 0.47989658491452963,
|
||||
"y": 0.10261032835182951,
|
||||
"group": "stage2"
|
||||
},
|
||||
"ap-r1-m2-020": {
|
||||
"id": "ap-r1-m2-020",
|
||||
"x": 0.44265969273930594,
|
||||
"y": 0.10261032835182951,
|
||||
"group": "stage2"
|
||||
},
|
||||
"ap-r1-m5-020": {
|
||||
"id": "ap-r1-m5-020",
|
||||
"x": 0.44265969273930594,
|
||||
"y": 0.10261032835182951,
|
||||
"group": "stage2"
|
||||
},
|
||||
"ap-r1-m2-021": {
|
||||
"id": "ap-r1-m2-021",
|
||||
"x": 0.39143415682382876,
|
||||
"y": 0.10261032835182951,
|
||||
"group": "stage2"
|
||||
},
|
||||
"ap-lo-m2-001": {
|
||||
"id": "ap-lo-m2-001",
|
||||
"x": 0.8620444252105982,
|
||||
"y": 0.6600635027248163,
|
||||
"group": "VIP"
|
||||
},
|
||||
"ap-lo-m5-001": {
|
||||
"id": "ap-lo-m5-001",
|
||||
"x": 0.8620444252105982,
|
||||
"y": 0.6600635027248163,
|
||||
"group": "VIP"
|
||||
},
|
||||
"ap-lo-m2-002": {
|
||||
"id": "ap-lo-m2-002",
|
||||
"x": 0.8610460891041088,
|
||||
"y": 0.6061716710680974,
|
||||
"group": "VIP"
|
||||
},
|
||||
"ap-lo-m5-002": {
|
||||
"id": "ap-lo-m5-002",
|
||||
"x": 0.8610460891041088,
|
||||
"y": 0.6061716710680974,
|
||||
"group": "VIP"
|
||||
},
|
||||
"ap-lo-m2-003": {
|
||||
"id": "ap-lo-m2-003",
|
||||
"x": 0.8504270162584033,
|
||||
"y": 0.5450014501824176,
|
||||
"group": "VIP"
|
||||
},
|
||||
"ap-lo-m5-003": {
|
||||
"id": "ap-lo-m5-003",
|
||||
"x": 0.8504270162584033,
|
||||
"y": 0.5450014501824176,
|
||||
"group": "VIP"
|
||||
},
|
||||
"ap-r3-m2-004": {
|
||||
"id": "ap-r3-m2-004",
|
||||
"x": 0.4994230840975057,
|
||||
"y": 0.31343632172678554,
|
||||
"group": ""
|
||||
},
|
||||
"ap-r3-m5-004": {
|
||||
"id": "ap-r3-m5-004",
|
||||
"x": 0.4994230840975057,
|
||||
"y": 0.31343632172678554,
|
||||
"group": ""
|
||||
},
|
||||
"ap-r4-m2-005": {
|
||||
"id": "ap-r4-m2-005",
|
||||
"x": 0.7004781268886684,
|
||||
"y": 0.9290097543848936,
|
||||
"group": "stage7"
|
||||
},
|
||||
"ap-r4-m5-005": {
|
||||
"id": "ap-r4-m5-005",
|
||||
"x": 0.7004781268886684,
|
||||
"y": 0.9290097543848936,
|
||||
"group": "stage7"
|
||||
},
|
||||
"ap-noc-test": {
|
||||
"id": "ap-noc-test",
|
||||
"x": 0.31858546667363064,
|
||||
"y": 0.260701582988597,
|
||||
"group": ""
|
||||
}
|
||||
}
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,43 @@
|
|||
<html>
|
||||
<head>
|
||||
<title>re:publica - Animation</title>
|
||||
|
||||
<script type="text/javascript" src="jquery-1.9.1.min.js"></script>
|
||||
<script type="text/javascript" src="data.js"></script>
|
||||
<script type="text/javascript" src="main.js"></script>
|
||||
<style type="text/css">
|
||||
body {
|
||||
position: relative;
|
||||
}
|
||||
#canvas, #map {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
}
|
||||
#timer {
|
||||
position: absolute;
|
||||
top: 520;
|
||||
left: 0px;
|
||||
font-size: 20px;
|
||||
font-family: georgia;
|
||||
}
|
||||
#menu {
|
||||
position: absolute;
|
||||
top: 550px;
|
||||
left: 0;
|
||||
}
|
||||
.button {
|
||||
margin-right: 10px;
|
||||
background: #eee;
|
||||
padding: 3px;
|
||||
cursor: pointer;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<img id="map" src="map.jpg" width="1024" height="500">
|
||||
<canvas id="canvas" width="1024" height="500"></canvas>
|
||||
<div id="timer"></div>
|
||||
<div id="menu"></div>
|
||||
</body>
|
||||
</html>
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,177 @@
|
|||
var currentTime = 60*(24*2+9);
|
||||
var clients = [];
|
||||
var context;
|
||||
var width = 1024;
|
||||
var height = 500;
|
||||
|
||||
var decay = 0.5;
|
||||
var timeStep = 1;
|
||||
var stepSize = 50*timeStep;
|
||||
var frameDuration = 50;
|
||||
|
||||
var interval;
|
||||
|
||||
$(function () {
|
||||
init();
|
||||
start();
|
||||
})
|
||||
|
||||
function start() {
|
||||
if (!interval) interval = setInterval(update, frameDuration);
|
||||
setTimeout(stop, 10000);
|
||||
}
|
||||
|
||||
function stop() {
|
||||
if (interval) {
|
||||
clearInterval(interval);
|
||||
interval = false;
|
||||
}
|
||||
}
|
||||
|
||||
function update() {
|
||||
currentTime += timeStep;
|
||||
if (currentTime >= 4*24*60) {
|
||||
stop();
|
||||
return;
|
||||
}
|
||||
|
||||
renderTime();
|
||||
updateData();
|
||||
updatePosition();
|
||||
renderCanvas();
|
||||
}
|
||||
|
||||
function init() {
|
||||
context = $('#canvas')[0].getContext('2d');
|
||||
clients = [];
|
||||
data.matrix.forEach(function (times, index) {
|
||||
clients[index] = {point:undefined, x:0, y:0, r:0, x0:0, y0:0, r0:0};
|
||||
});
|
||||
|
||||
var menu = $('#menu');
|
||||
for (var i = 2; i < 16; i++) {
|
||||
(function () {
|
||||
var time = i*6*60;
|
||||
var d = Math.floor(i/4);
|
||||
var h = (i % 4)*6;
|
||||
var node = $('<span class="button">T'+d+' '+h+':00</span>');
|
||||
node.click(function () {
|
||||
currentTime = time;
|
||||
start();
|
||||
})
|
||||
menu.append(node);
|
||||
})();
|
||||
}
|
||||
}
|
||||
|
||||
function renderTime() {
|
||||
var d = Math.floor(currentTime/1440);
|
||||
var h = Math.floor(currentTime/60) % 24;
|
||||
var m = Math.floor(currentTime) % 60;
|
||||
h = (h+100+'').substr(1);
|
||||
m = (m+100+'').substr(1);
|
||||
$('#timer').html('Tag '+d+' - '+h+':'+m);
|
||||
}
|
||||
|
||||
function updateData() {
|
||||
var timeId = -1;
|
||||
data.times.forEach(function (time, index) {
|
||||
if (time < currentTime) timeId = index;
|
||||
});
|
||||
|
||||
var points = [];
|
||||
data.points.forEach(function (point, index) {
|
||||
points[index] = [];
|
||||
})
|
||||
|
||||
data.matrix.forEach(function (times, index) {
|
||||
var point = undefined;
|
||||
if (isFinite(times[timeId])) point = times[timeId];
|
||||
|
||||
var client = clients[index];
|
||||
if ((client.point != point) && (Math.random() > 0.8)) {
|
||||
if (valid(point)) {
|
||||
client.x0 = data.points[point].x;
|
||||
client.y0 = data.points[point].y;
|
||||
client.r0 = 1;
|
||||
if (!valid(client.point)) client.x = undefined;
|
||||
} else {
|
||||
client.r0 = 0;
|
||||
}
|
||||
client.point = point;
|
||||
}
|
||||
if (valid(client.point)) points[client.point].push(index);
|
||||
});
|
||||
|
||||
points.forEach(function (clientList, pointIndex) {
|
||||
var point = data.points[pointIndex];
|
||||
var x0 = point.x*width;
|
||||
var y0 = point.y*height;
|
||||
clientList.forEach(function (clientIndex, index) {
|
||||
var client = clients[clientIndex];
|
||||
var a = Math.sqrt(index)*4;
|
||||
var r = Math.sqrt(index)*1.5;
|
||||
client.x0 = x0 + Math.cos(a)*r;
|
||||
client.y0 = y0 + Math.sin(a)*r;
|
||||
if (client.x === undefined) {
|
||||
client.x = client.x0;
|
||||
client.y = client.y0;
|
||||
}
|
||||
})
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
function updatePosition() {
|
||||
clients.forEach(function (client) {
|
||||
client.xo = client.x;
|
||||
client.yo = client.y;
|
||||
|
||||
var dx = (client.x0 - client.x);
|
||||
var dy = (client.y0 - client.y);
|
||||
var r = Math.sqrt(dx*dx + dy+dy);
|
||||
if (r > 1e-2) {
|
||||
var rn = Math.max(r-stepSize, 0);
|
||||
var f = 1-rn/r;
|
||||
|
||||
client.x += (client.x0 - client.x)*f;
|
||||
client.y += (client.y0 - client.y)*f;
|
||||
} else {
|
||||
client.x = client.x0;
|
||||
client.y = client.y0;
|
||||
}
|
||||
client.r += (client.r0 - client.r)*decay;
|
||||
})
|
||||
}
|
||||
|
||||
function renderCanvas() {
|
||||
context.clearRect(0, 0, width, height);
|
||||
context.fillStyle = '#F00';
|
||||
|
||||
clients.forEach(function (client) {
|
||||
if (client.r > 1e-2) {
|
||||
var dx = client.x - client.xo;
|
||||
var dy = client.y - client.yo;
|
||||
var r = Math.sqrt(dx*dx + dy*dy);
|
||||
|
||||
if (r > 1) {
|
||||
var a = Math.min(10/r, 1);
|
||||
context.strokeStyle = 'rgba(255,0,0,'+a+')';
|
||||
context.beginPath();
|
||||
context.moveTo(client.xo, client.yo);
|
||||
context.lineTo(client.x, client.y );
|
||||
context.stroke();
|
||||
|
||||
} else {
|
||||
context.beginPath();
|
||||
context.arc(client.x, client.y, client.r, 0, 2*Math.PI, false);
|
||||
context.fill();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function valid(point) {
|
||||
return (point != null) && (point !== undefined);
|
||||
}
|
||||
|
Binary file not shown.
After Width: | Height: | Size: 94 KiB |
|
@ -0,0 +1,91 @@
|
|||
var path = '../sources/rp13-hashed/';
|
||||
|
||||
var fs = require('fs');
|
||||
|
||||
var entriesObj = [];
|
||||
var entriesArr = [];
|
||||
|
||||
var files = fs.readdirSync(path);
|
||||
|
||||
files.sort();
|
||||
|
||||
files.forEach(function (file, index) {
|
||||
if (/clients_0[5-8]\.05\._[0-3][0-9][0-5][0-9]_hashed/.test(file)) {
|
||||
var day = file.substr(8,2);
|
||||
var hour = file.substr(15,2);
|
||||
var minute = file.substr(17,2);
|
||||
var date = new Date(2013, 4, day, hour, minute, 0, 0);
|
||||
|
||||
console.log(file);
|
||||
processFile(path+file, index, date);
|
||||
|
||||
//process.exit();
|
||||
} else {
|
||||
//
|
||||
console.warn('unknown file: '+file);
|
||||
}
|
||||
})
|
||||
|
||||
console.log('Schreibe Object-JSON');
|
||||
fs.writeFileSync('../cleaned/rp13-obj.json', JSON.stringify(entriesObj), 'utf8');
|
||||
fs.writeFileSync('../cleaned/rp13-obj-pretty.json', JSON.stringify(entriesObj, null, '\t'), 'utf8');
|
||||
|
||||
console.log('Schreibe Array-JSON');
|
||||
fs.writeFileSync('../cleaned/rp13-arr.json', JSON.stringify(entriesArr), 'utf8');
|
||||
fs.writeFileSync('../cleaned/rp13-arr-pretty.json', JSON.stringify(entriesArr, null, '\t'), 'utf8');
|
||||
|
||||
console.log('Schreibe TSV');
|
||||
fs.writeFileSync('../cleaned/rp13.tsv', entriesArr.map(function (o) { return o.join('\t'); }).join('\n'), 'utf8');
|
||||
|
||||
console.log('Schreibe CSV');
|
||||
fs.writeFileSync('../cleaned/rp13.csv', entriesArr.map(function (o) { return o.join(','); }).join('\n'), 'utf8');
|
||||
|
||||
function processFile(file, index, date) {
|
||||
var lines = fs.readFileSync(file, 'utf8').split('\n');
|
||||
lines.forEach(function (line) {
|
||||
if (line != '') {
|
||||
line = line.split('\t');
|
||||
var vendor = line[0];
|
||||
line = line[1].split(' ');
|
||||
if ((line.length == 17) && (line[0] != 'Total:')) {
|
||||
var access_point = line[0];
|
||||
var i = access_point.lastIndexOf('ap-');
|
||||
if (i < 0) {
|
||||
console.error(access_point);
|
||||
process.exit();
|
||||
}
|
||||
access_point = access_point.substr(i);
|
||||
|
||||
var obj = {
|
||||
date: date,
|
||||
file_id: index,
|
||||
access_point: access_point,
|
||||
vendor: vendor,
|
||||
mac_hash: line[1],
|
||||
signal_strength: parseInt(line[2], 10),
|
||||
mb_in: parseInt(line[4], 10),
|
||||
mb_out: parseInt(line[7], 10),
|
||||
speed_in: parseInt(line[12], 10),
|
||||
speed_out: parseInt(line[10], 10),
|
||||
duration: parseInt(line[14], 10)
|
||||
};
|
||||
|
||||
entriesObj.push(obj);
|
||||
|
||||
entriesArr.push([
|
||||
obj.date,
|
||||
obj.file_id,
|
||||
obj.access_point,
|
||||
obj.vendor,
|
||||
obj.mac_hash,
|
||||
obj.signal_strength,
|
||||
obj.mb_in,
|
||||
obj.mb_out,
|
||||
obj.speed_in,
|
||||
obj.speed_out,
|
||||
obj.duration
|
||||
]);
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
|
@ -0,0 +1,43 @@
|
|||
var svg = '../sources/access points_wtf.svg';
|
||||
|
||||
var fs = require('fs');
|
||||
|
||||
svg = fs.readFileSync(svg, 'utf8');
|
||||
|
||||
var image = svg.match(/\<image.*?\>/g)[0];
|
||||
|
||||
var w = parseFloat(image.match(/width\=\"(.*?)\"/)[1]);
|
||||
var h = parseFloat(image.match(/height\=\"(.*?)\"/)[1]);
|
||||
|
||||
var matrix = image.match(/matrix\((.*?)\)/)[1].split(' ');
|
||||
matrix = matrix.map(function (v) { return parseFloat(v) });
|
||||
|
||||
var width = w*matrix[0] + h*matrix[1];
|
||||
var height = w*matrix[2] + h*matrix[3];
|
||||
var x0 = matrix[4];
|
||||
var y0 = matrix[5];
|
||||
|
||||
svg = svg.split('\r\n');
|
||||
|
||||
var group = '';
|
||||
var accesspoints = {};
|
||||
|
||||
svg.forEach(function (line) {
|
||||
if (line.match(/\<line id\=/) != null) {
|
||||
|
||||
var id = line.match(/id\=\"(.*?)\"/)[1].toLowerCase();
|
||||
var x = parseFloat(line.match(/x1\=\"(.*?)\"/)[1]);
|
||||
var y = parseFloat(line.match(/y1\=\"(.*?)\"/)[1]);
|
||||
|
||||
x = (x - x0)/width;
|
||||
y = (y - y0)/height;
|
||||
accesspoints[id] = {id:id, x:x, y:y, group:group}
|
||||
} else if (line.match(/\<g id\=/) != null) {
|
||||
group = line.match(/id\=\"(.*?)\"/)[1];
|
||||
} else if (line.match(/\<\/g\>/) != null) {
|
||||
group = '';
|
||||
}
|
||||
//console.log(line);
|
||||
});
|
||||
|
||||
fs.writeFileSync('../cleaned/accesspoints.json', JSON.stringify(accesspoints, null, '\t'), 'utf8');
|
|
@ -0,0 +1,75 @@
|
|||
var fs = require('fs');
|
||||
|
||||
var data = fs.readFileSync('../cleaned/rp13-arr.json', 'utf8');
|
||||
data = JSON.parse(data);
|
||||
|
||||
var points = [];
|
||||
var addresses = {};
|
||||
|
||||
data.forEach(function (o) {
|
||||
var point = o[2]+o[0];
|
||||
var address = o[4];
|
||||
|
||||
if (points[point] === undefined) points[point] = [];
|
||||
points[point].push(address);
|
||||
|
||||
if (addresses[address] === undefined) addresses[address] = 0;
|
||||
addresses[address]++;
|
||||
});
|
||||
|
||||
var addressList = [];
|
||||
Object.keys(addresses).forEach(function (address) {
|
||||
if (addresses[address] > 100) addressList.push(address);
|
||||
});
|
||||
addresses = {};
|
||||
addressList.forEach(function (address, index) {
|
||||
addresses[address] = index;
|
||||
});
|
||||
|
||||
console.log(addressList.length);
|
||||
|
||||
var matrix = [];
|
||||
var visible = [];
|
||||
var n = 0;
|
||||
for (var i = 0; i < addressList.length; i++) {
|
||||
matrix[i] = [];
|
||||
visible[i] = 0;
|
||||
for (var j = 0; j < addressList.length; j++) matrix[i][j] = 0;
|
||||
}
|
||||
|
||||
Object.keys(points).forEach(function (point) {
|
||||
var subAddressList = points[point];
|
||||
var list = [];
|
||||
subAddressList.forEach(function (address) {
|
||||
if (addresses[address] !== undefined) list.push(addresses[address]);
|
||||
});
|
||||
|
||||
for (var i = 0; i < list.length; i++) {
|
||||
var a = list[i];
|
||||
visible[a]++;
|
||||
for (var j = i+1; j < list.length; j++) {
|
||||
var b = list[j];
|
||||
matrix[a][b]++;
|
||||
matrix[b][a]++;
|
||||
}
|
||||
}
|
||||
|
||||
n++;
|
||||
});
|
||||
|
||||
var result = ['target\tsource\tweight'];
|
||||
for (var i = 0; i < addressList.length; i++) {
|
||||
for (var j = i+1; j < addressList.length; j++) {
|
||||
var v = (matrix[i][j] - visible[i]*visible[j]/n)/n;
|
||||
v *= 20;
|
||||
if (v > 1e-2) {
|
||||
v = Math.pow(v, 0.5);
|
||||
result.push([i, j, v.toFixed(4)].join('\t'));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
console.log(result.length);
|
||||
|
||||
fs.writeFileSync('./edges.tsv', result.join('\n'), 'utf8');
|
||||
|
|
@ -0,0 +1,96 @@
|
|||
var fs = require('fs');
|
||||
|
||||
var log = fs.readFileSync('../cleaned/rp13-obj.json', 'utf8');
|
||||
log = JSON.parse(log);
|
||||
|
||||
var accesspoints = fs.readFileSync('../cleaned/accesspoints.json', 'utf8');
|
||||
accesspoints = JSON.parse(accesspoints);
|
||||
|
||||
var ap = new Lookup();
|
||||
Object.keys(accesspoints).forEach(function (name) {
|
||||
var point = accesspoints[name];
|
||||
var name = Math.round(point.x*100)+'_'+Math.round(point.y*50);
|
||||
point.name = name;
|
||||
ap.add(name);
|
||||
});
|
||||
|
||||
var condensedAccesspoints = [];
|
||||
Object.keys(accesspoints).forEach(function (name) {
|
||||
var point = accesspoints[name];
|
||||
point.index = ap.getId(point.name);
|
||||
condensedAccesspoints[point.index] = {
|
||||
x: point.x,
|
||||
y: point.y,
|
||||
room: point.group
|
||||
};
|
||||
});
|
||||
|
||||
var macs = new Lookup();
|
||||
var times = new Lookup();
|
||||
|
||||
log.forEach(function (entry) {
|
||||
if (accesspoints[entry.access_point] === undefined) return;
|
||||
|
||||
entry.time = ((new Date(entry.date)).getTime()-1367712000000)/60000+60;
|
||||
times.add(entry.time);
|
||||
|
||||
macs.add(entry.mac_hash);
|
||||
});
|
||||
|
||||
times.sort(function (a,b) { return a-b });
|
||||
|
||||
var newEntries = [];
|
||||
log.forEach(function (entry) {
|
||||
if (accesspoints[entry.access_point] === undefined) return;
|
||||
|
||||
var mac = macs.getId(entry.mac_hash);
|
||||
var time = times.getId(entry.time);
|
||||
var point = accesspoints[entry.access_point].index;
|
||||
|
||||
if (newEntries[mac] === undefined) newEntries[mac] = [];
|
||||
newEntries[mac][time] = point;
|
||||
});
|
||||
|
||||
var result = {
|
||||
/*macs: macs.getJSON(),*/
|
||||
times: times.getJSON(),
|
||||
points: condensedAccesspoints,
|
||||
matrix: newEntries
|
||||
};
|
||||
|
||||
fs.writeFileSync('../clients/anim/data.js', 'var data = '+JSON.stringify(result, null, '\t'), 'utf8');
|
||||
|
||||
|
||||
|
||||
|
||||
function Lookup() {
|
||||
var me = this;
|
||||
var entry2index = {};
|
||||
var index2entry = [];
|
||||
|
||||
me.add = function (entry) {
|
||||
if (entry2index[entry] === undefined) {
|
||||
var index = index2entry.length;
|
||||
entry2index[entry] = index;
|
||||
index2entry[index] = entry;
|
||||
}
|
||||
}
|
||||
|
||||
me.sort = function (callback) {
|
||||
entry2index = {};
|
||||
index2entry = index2entry.sort(callback);
|
||||
index2entry.forEach(function (entry, index) {
|
||||
entry2index[entry] = index;
|
||||
})
|
||||
}
|
||||
|
||||
me.getId = function (entry) {
|
||||
return entry2index[entry];
|
||||
}
|
||||
|
||||
me.getJSON = function () {
|
||||
return index2entry.slice(0);
|
||||
}
|
||||
|
||||
return me;
|
||||
}
|
Loading…
Reference in New Issue