├── .gitignore ├── README.md ├── config.json ├── create_hit.py ├── get_results.py ├── license.txt ├── static ├── css │ ├── coco_category_labeling.css │ ├── coco_image_selection.css │ └── coco_instance_spotting.css ├── images │ ├── categories │ │ ├── 1.png │ │ ├── 10.png │ │ ├── 11.png │ │ ├── 12.png │ │ ├── 13.png │ │ ├── 14.png │ │ ├── 15.png │ │ ├── 16.png │ │ ├── 17.png │ │ ├── 18.png │ │ ├── 19.png │ │ ├── 2.png │ │ ├── 20.png │ │ ├── 21.png │ │ ├── 22.png │ │ ├── 23.png │ │ ├── 24.png │ │ ├── 25.png │ │ ├── 26.png │ │ ├── 27.png │ │ ├── 28.png │ │ ├── 29.png │ │ ├── 3.png │ │ ├── 30.png │ │ ├── 31.png │ │ ├── 32.png │ │ ├── 33.png │ │ ├── 34.png │ │ ├── 35.png │ │ ├── 36.png │ │ ├── 37.png │ │ ├── 38.png │ │ ├── 39.png │ │ ├── 4.png │ │ ├── 40.png │ │ ├── 41.png │ │ ├── 42.png │ │ ├── 43.png │ │ ├── 44.png │ │ ├── 45.png │ │ ├── 46.png │ │ ├── 47.png │ │ ├── 48.png │ │ ├── 49.png │ │ ├── 5.png │ │ ├── 50.png │ │ ├── 51.png │ │ ├── 52.png │ │ ├── 53.png │ │ ├── 54.png │ │ ├── 55.png │ │ ├── 56.png │ │ ├── 57.png │ │ ├── 58.png │ │ ├── 59.png │ │ ├── 6.png │ │ ├── 60.png │ │ ├── 61.png │ │ ├── 62.png │ │ ├── 63.png │ │ ├── 64.png │ │ ├── 65.png │ │ ├── 66.png │ │ ├── 67.png │ │ ├── 68.png │ │ ├── 69.png │ │ ├── 7.png │ │ ├── 70.png │ │ ├── 71.png │ │ ├── 72.png │ │ ├── 73.png │ │ ├── 74.png │ │ ├── 75.png │ │ ├── 76.png │ │ ├── 77.png │ │ ├── 78.png │ │ ├── 79.png │ │ ├── 8.png │ │ ├── 80.png │ │ ├── 81.png │ │ ├── 82.png │ │ ├── 83.png │ │ ├── 84.png │ │ ├── 85.png │ │ ├── 86.png │ │ ├── 87.png │ │ ├── 88.png │ │ ├── 89.png │ │ ├── 9.png │ │ ├── 90.png │ │ └── 91.png │ ├── category_labeling │ │ └── example.jpg │ ├── crowd_labeling │ │ ├── example-1.jpg │ │ └── example-2.jpg │ ├── demo │ │ ├── cat.jpg │ │ └── dog.jpg │ ├── icons │ │ ├── left.png │ │ ├── left_green.png │ │ ├── right.png │ │ └── right_green.png │ └── instance_spotting │ │ └── example.jpg ├── js │ ├── coco_category_labeling.js │ ├── coco_image_selection.js │ ├── coco_instance_spotting.js │ ├── kinetic-v5.1.0.min.js │ └── mturk_form_submission.js └── opensurfaces │ ├── LICENSE │ ├── css │ ├── bootstrap-2.2.1.min.css │ ├── bootstrap-responsive.min.css │ ├── jquery-ui-1.9.1.custom.min.css │ └── mturk.css │ ├── examples │ ├── bad-examples.jpg │ ├── bench-example.jpg │ ├── cat-1.jpg │ ├── cat-2.jpg │ ├── cat-3.jpg │ ├── control-bar.jpg │ ├── disjointed-objects.jpg │ ├── good-examples.jpg │ └── zoom.jpg │ ├── img │ ├── adjust0.jpg │ ├── adjust1.jpg │ ├── adjust2.jpg │ ├── bad-close.jpg │ ├── bad-vertex.jpg │ ├── bad1.jpg │ ├── bad2.jpg │ ├── bad3.jpg │ ├── bad4.jpg │ ├── bad5.jpg │ ├── bad6.jpg │ ├── controls.jpg │ ├── draw1.jpg │ ├── draw5.jpg │ ├── draw6.jpg │ ├── glyphicons-halflings.png │ ├── good-close.jpg │ ├── good11.jpg │ ├── good12.jpg │ ├── good4.jpg │ ├── good5.jpg │ ├── good9.jpg │ ├── segment_material_bad1.jpg │ ├── segment_material_bad2.jpg │ ├── segment_material_bad3.jpg │ ├── segment_material_bad4.jpg │ ├── segment_material_good1.jpg │ └── segment_material_good2.jpg │ └── js │ ├── build-coffee-coco.js │ ├── build-js.js │ └── coco_instance_segmentation.js └── tasks ├── coco_category_labeling.html ├── coco_crowd_labeling.html ├── coco_image_captioning.html ├── coco_instance_segmentation.html └── coco_instance_spotting.html /.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | keys.json -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | COCO Annotation UI 3 | ============================ 4 | 5 | This project includes the front end user interfaces that are used to annotate COCO dataset. 6 | For more details, please visit [COCO](http://cocodataset.org) 7 | -------------------------------------------------------------------------------- /config.json: -------------------------------------------------------------------------------- 1 | { 2 | "STATIC_ROOT": "https://storage.googleapis.com/ui-static.cocodataset.org", 3 | "HIT":{ 4 | "USE_SANDBOX": true, 5 | "REGION_NAME": "us-east-1", 6 | "Title": "Label All Object Categories in the images", 7 | "Description": "Label all object categoires in the images. change static root.", 8 | "Keywords": "image, category, classification", 9 | "Reward": "0.05", 10 | "MaxAssignments": 1, 11 | "LifetimeInSeconds": 172800, 12 | "AssignmentDurationInSeconds": 600, 13 | "AutoApprovalDelayInSeconds": 86400, 14 | "Question": "tasks/coco_category_labeling.html" 15 | } 16 | } -------------------------------------------------------------------------------- /create_hit.py: -------------------------------------------------------------------------------- 1 | import boto3 2 | import json 3 | import os 4 | 5 | def create_xml_question(html_text): 6 | return '600' 9 | 10 | def replace_static_root(html_text, static_root): 11 | return html_text.replace("../static", static_root.encode("utf8")) 12 | 13 | # static can only be used to indicate static root in html! 14 | def replace_mturk_form_action(html_text, mturk_form_action): 15 | return html_text.replace("MTURK_FORM_ACTION", mturk_form_action) 16 | 17 | 18 | if not os.path.exists("keys.json"): 19 | raise Exception('Please add your aws keys to create HIT on aws') 20 | 21 | # TODO Ssyncing static files to gcp bucket 22 | 23 | 24 | # add your aws keys to 25 | aws_key = json.load(open("keys.json")) 26 | config = json.load(open("config.json")) 27 | HIT = config["HIT"] 28 | if HIT["USE_SANDBOX"]: 29 | print("create HIT on sandbox") 30 | endpoint_url = "https://mturk-requester-sandbox.us-east-1.amazonaws.com" 31 | mturk_form_action = "https://workersandbox.mturk.com/mturk/externalSubmit" 32 | mturk_url = "https://workersandbox.mturk.com/" 33 | else: 34 | print("create HIT on mturk") 35 | endpoint_url = "https://mturk-requester.us-east-1.amazonaws.com" 36 | mturk_form_action = "https://www.mturk.com/mturk/externalSubmit" 37 | mturk_url = "https://worker.mturk.com/" 38 | 39 | # create mturk connection through boto3 40 | mturk = boto3.client('mturk', 41 | aws_access_key_id = aws_key["aws_access_key_id"], 42 | aws_secret_access_key = aws_key["aws_secret_access_key"], 43 | region_name=HIT["REGION_NAME"], 44 | endpoint_url = endpoint_url 45 | ) 46 | 47 | # create hit with config 48 | html_text = open(HIT["Question"], "r").read() 49 | html_text = replace_static_root(html_text, config["STATIC_ROOT"]) 50 | html_text = replace_mturk_form_action(html_text, mturk_form_action) 51 | new_hit = mturk.create_hit( 52 | Title = HIT['Title'], 53 | Description = HIT["Description"], 54 | Keywords = HIT["Keywords"], 55 | Reward = HIT["Reward"], 56 | MaxAssignments = HIT["MaxAssignments"], 57 | LifetimeInSeconds = HIT["LifetimeInSeconds"], 58 | AssignmentDurationInSeconds = HIT["AssignmentDurationInSeconds"], 59 | AutoApprovalDelayInSeconds = HIT["AutoApprovalDelayInSeconds"], 60 | Question = create_xml_question(html_text), 61 | ) 62 | print("HITId: " + new_hit['HIT']['HITId']) 63 | print("A new HIT has been created. You can preview it here:") 64 | print(mturk_url + "mturk/preview?groupId=" + new_hit['HIT']['HITGroupId']) -------------------------------------------------------------------------------- /get_results.py: -------------------------------------------------------------------------------- 1 | import boto3 2 | import json 3 | import xmltodict 4 | 5 | # add your aws keys to 6 | aws_key = json.load(open("keys.json")) 7 | config = json.load(open("config.json")) 8 | HIT = config["HIT"] 9 | 10 | if HIT["USE_SANDBOX"]: 11 | endpoint_url = "https://mturk-requester-sandbox.us-east-1.amazonaws.com" 12 | else: 13 | endpoint_url = "https://mturk-requester.us-east-1.amazonaws.com" 14 | 15 | # create mturk connection through boto3 16 | mturk = boto3.client('mturk', 17 | aws_access_key_id = aws_key["aws_access_key_id"], 18 | aws_secret_access_key = aws_key["aws_secret_access_key"], 19 | region_name=HIT["REGION_NAME"], 20 | endpoint_url = endpoint_url 21 | ) 22 | 23 | # hit_id = 'PASTE_IN_YOUR_HIT_ID' 24 | hit_id = '338431Z1FLPM53G4LCNQFGPCSRNROC' 25 | worker_results = mturk.list_assignments_for_hit(HITId=hit_id) 26 | response = mturk.get_assignment( 27 | AssignmentId = worker_results['Assignments'][0]['AssignmentId'] 28 | ) 29 | xml_doc = xmltodict.parse(response['Assignment']['Answer']) 30 | answer = json.loads(xml_doc['QuestionFormAnswers']['Answer']['FreeText']) 31 | print(answer) -------------------------------------------------------------------------------- /license.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2015, Tsung-Yi Lin 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | 7 | 1. Redistributions of source code must retain the above copyright notice, this 8 | list of conditions and the following disclaimer. 9 | 2. Redistributions in binary form must reproduce the above copyright notice, 10 | this list of conditions and the following disclaimer in the documentation 11 | and/or other materials provided with the distribution. 12 | 13 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 14 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 15 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 16 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR 17 | ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 18 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 19 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 20 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 21 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 22 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 23 | 24 | The views and conclusions contained in the software and documentation are those 25 | of the authors and should not be interpreted as representing official policies, 26 | either expressed or implied, of the FreeBSD Project. -------------------------------------------------------------------------------- /static/css/coco_category_labeling.css: -------------------------------------------------------------------------------- 1 | #title 2 | { 3 | font-size:18pt; 4 | font-weight:820; 5 | color:black 6 | } 7 | .container 8 | { 9 | width:750px; 10 | } 11 | .div-image 12 | { 13 | width:80%; 14 | height:500px; 15 | display:inline-block; 16 | vertical-align:text-bottom; 17 | /* border-style:solid;*/ 18 | float:left; 19 | } 20 | .image-task 21 | { 22 | /* border-style:dashed; */ 23 | display:inline-block; 24 | } 25 | .div-selected-icon-panel 26 | { 27 | font-size:16pt; 28 | border-style:solid; 29 | margin-left:10px; 30 | padding-left:2px; 31 | padding-right:2px; 32 | width:17%; 33 | height: 500px; 34 | display:inline-block; 35 | vertical-align:text-bottom; 36 | } 37 | .div-task 38 | { 39 | font-size: 18pt; 40 | width:100%; 41 | } 42 | .div-icons-panel 43 | { 44 | width:95%; 45 | height:120px; 46 | /* border:solid;*/ 47 | display:table-cell; 48 | } 49 | .div-candidate-icons 50 | { 51 | vertical-align: top; 52 | display:inline-block; 53 | width:56px; 54 | height:56px; 55 | margin-left:2px; 56 | margin-top:2px; 57 | } 58 | .icon 59 | { 60 | color: blue; 61 | vertical-align:middle; 62 | font-size:12pt; 63 | display: table-cell; 64 | width:50px; 65 | height:50px; 66 | } 67 | .icon-selected 68 | { 69 | color: blue; 70 | vertical-align:middle; 71 | font-size:12pt; 72 | display: table-cell; 73 | width:25px; 74 | height:25px; 75 | } 76 | .div-icon 77 | { 78 | position:relative; 79 | border-color:white; 80 | display:inline-block; 81 | width:50px; 82 | height:50px; 83 | margin-left:2px; 84 | margin-top:2px; 85 | border-style:solid; 86 | } 87 | .div-icon-selected 88 | { 89 | position:relative; 90 | border-color:white; 91 | display:inline-block; 92 | width:25px; 93 | height:25px; 94 | margin-left:2px; 95 | margin-top:2px; 96 | border-style:solid; 97 | } 98 | #imdiv 99 | { 100 | width:100%; 101 | } 102 | .progressbar 103 | { 104 | width:200px; 105 | height:10px; 106 | background:red; 107 | } 108 | .progress 109 | { 110 | height:10px; 111 | display:inline-block; 112 | float:right; 113 | margin-top:5px; 114 | font-size:10pt; 115 | margin-right:10px; 116 | } 117 | .progress-number 118 | { 119 | margin-top:5px; 120 | /* display:inline-block;*/ 121 | font-size:12pt; 122 | margin-right:5px; 123 | float:right; 124 | color:red; 125 | font-weight:800; 126 | } 127 | .button 128 | { 129 | float:right; 130 | font-size:14pt; 131 | } 132 | .button-panel 133 | { 134 | vertical-align:middle; 135 | display:table-cell; 136 | width:100px; 137 | height:30px; 138 | margin-left:10px; 139 | margin-right:10px; 140 | padding-left:10px; 141 | padding-right:10px; 142 | } 143 | .caption { 144 | /* display: none; */ 145 | position: absolute; 146 | top: 50px; 147 | left: 0; 148 | /* background: url(images/trans-black-50.png);*/ 149 | width: 100%; 150 | height: 30pt; 151 | } 152 | .caption h3, .caption p { 153 | color: blue; 154 | vertical-align:top; 155 | text-align:center; 156 | font-size:11pt; 157 | font-weight:800; 158 | display: table-cell; 159 | width:100px; 160 | height:15px; 161 | } 162 | .img-button { 163 | width:35px; 164 | height:60px; 165 | vertical-align:middle; 166 | } 167 | .div-icon-and-arrow{ 168 | border:solid; 169 | width:99%; 170 | } 171 | .ui-dialog{ 172 | position: absolute; 173 | left: 0; 174 | top: 0; 175 | } 176 | #dialog-confirm{ 177 | position: absolute; 178 | left: 0; 179 | top: 0; 180 | } -------------------------------------------------------------------------------- /static/css/coco_image_selection.css: -------------------------------------------------------------------------------- 1 | #title 2 | { 3 | font-size:18pt; 4 | font-weight:800; 5 | color:black 6 | } 7 | .div_icon_grid 8 | { 9 | height:100px; 10 | width:100px; 11 | border:solid; 12 | display:inline-block; 13 | } 14 | .im_icon_grid 15 | { 16 | height:100px; 17 | width:100px; 18 | display:inline-block; 19 | } 20 | #instruction 21 | { 22 | border:solid; 23 | text-align: left; 24 | padding-left: 8px; 25 | padding-top: 8px; 26 | width: 800px; 27 | font-size: 12pt; 28 | } 29 | .container 30 | { 31 | width:800px; 32 | } 33 | .div_grid_0 34 | { 35 | margin-left: 8px; 36 | margin-top: 8px; 37 | border: solid; 38 | border-width:6px; 39 | width: 180px; 40 | height: 150px; 41 | display:inline-block; 42 | } 43 | .div_grid_1 44 | { 45 | margin-left: 8px; 46 | margin-top: 8px; 47 | border: solid; 48 | border-width:6px; 49 | border-color:#98bf21; 50 | width: 180px; 51 | height: 150px; 52 | display:inline-block; 53 | } 54 | .im_grid 55 | { 56 | /* border-style:dashed; */ 57 | width:180px; 58 | height: 150px; 59 | display:inline-block; 60 | } 61 | .div_cats_icons 62 | { 63 | font-size:18pt; 64 | border-style:dashed; 65 | margin-left:10px; 66 | padding-left:2px; 67 | padding-right:2px; 68 | width:170px; 69 | display:inline-block; 70 | vertical-align:text-bottom; 71 | } 72 | .div_task 73 | { 74 | font-size: 24pt; 75 | width:800px; 76 | } 77 | .div_candidate_icons 78 | { 79 | width:780px; 80 | height:200px; 81 | border:dashed; 82 | } 83 | .icon 84 | { 85 | width:75px; 86 | margin-left:2px; 87 | margin-top:2px; 88 | border-style:solid; 89 | } 90 | #imdiv 91 | { 92 | width:800; 93 | } 94 | 95 | body { 96 | margin:0; 97 | padding:40px; 98 | background:#fff; 99 | font:80% Arial, Helvetica, sans-serif; 100 | color:#555; 101 | line-height:180%; 102 | } 103 | 104 | h1{ 105 | font-size:180%; 106 | font-weight:normal; 107 | color:#555; 108 | } 109 | h2{ 110 | clear:both; 111 | font-size:160%; 112 | font-weight:normal; 113 | color:#555; 114 | margin:0; 115 | padding:.5em 0; 116 | } 117 | a{ 118 | text-decoration:none; 119 | color:#f30; 120 | } 121 | p{ 122 | clear:both; 123 | margin:0; 124 | padding:.5em 0; 125 | } 126 | pre{ 127 | display:block; 128 | font:100% "Courier New", Courier, monospace; 129 | padding:10px; 130 | border:1px solid #bae2f0; 131 | background:#e3f4f9; 132 | margin:.5em 0; 133 | overflow:auto; 134 | width:800px; 135 | } 136 | 137 | img{border:none;} 138 | ul,li{ 139 | margin:0; 140 | padding:0; 141 | } 142 | li{ 143 | list-style:none; 144 | float:left; 145 | display:inline; 146 | margin-right:10px; 147 | } 148 | 149 | #preview{ 150 | position:absolute; 151 | border:1px solid #ccc; 152 | background:#333; 153 | padding:5px; 154 | display:none; 155 | color:#fff; 156 | } 157 | 158 | input[type="text"] { 159 | width: 500px; 160 | } 161 | -------------------------------------------------------------------------------- /static/css/coco_instance_spotting.css: -------------------------------------------------------------------------------- 1 | body 2 | { 3 | overflow-y: 4 | scroll; 5 | } 6 | #title 7 | { 8 | font-size:18pt; 9 | font-weight:820; 10 | color:black 11 | } 12 | .step-title 13 | { 14 | font:16pt bold ; 15 | text-decoration:underline; 16 | } 17 | .step-div 18 | { 19 | width:50%; 20 | display:table-cell; 21 | } 22 | .step-img 23 | { 24 | width:96%; 25 | } 26 | .container 27 | { 28 | width:800px; 29 | } 30 | 31 | .anno 32 | { 33 | position:absolute; 34 | font-size:40pt; 35 | font-family: sans-serif; 36 | font-weight:100; 37 | color:#3399FF; 38 | cursor: move; 39 | display:none; 40 | text-shadow: 41 | -2px -2px 0 #000, 42 | 2px -2px 0 #000, 43 | -2px 2px 0 #000, 44 | 2px 2px 0 #000; 45 | /* 46 | text-shadow: #000000 2px 2px; 47 | */ 48 | } 49 | 50 | .anno_bg 51 | { 52 | position:relative; 53 | font-size:40pt; 54 | font-family: sans-serif; 55 | font-weight:100; 56 | color:blue; 57 | cursor: move; 58 | z-index:10000; 59 | display:none; 60 | width:30px; 61 | height:61px; 62 | } 63 | 64 | .category-panel{ 65 | height:120px; 66 | display: table-cell; 67 | } 68 | 69 | #div-cat-img{ 70 | /* 71 | width:100px; 72 | */ 73 | width:50px; 74 | } 75 | 76 | #div-cat-name{ 77 | width:80; 78 | line-height:80%; 79 | text-align:center; 80 | font: 14pt bold; 81 | } 82 | #div-cat-example{ 83 | display: inline; 84 | width: 50%; 85 | height: 80px; 86 | } 87 | #button-panel{ 88 | width:30% 89 | } 90 | .icon 91 | { 92 | /* 93 | width:100px; 94 | */ 95 | width:50px; 96 | } 97 | .category 98 | { 99 | width: 100px; 100 | height: 80px; 101 | } 102 | /* 103 | .icon 104 | { 105 | width: 50; 106 | height: 50; 107 | } 108 | */ 109 | 110 | #bgim { 111 | background-position: 0px 0px; 112 | width: 100px; 113 | height: 100px; 114 | border-radius: 54px; 115 | border: 4px solid black; 116 | 117 | float: left; 118 | display: none; 119 | background-repeat: no-repeat; 120 | position: absolute; 121 | 122 | z-index:100; 123 | } 124 | 125 | #anno_status{ 126 | font-size: 16pt; 127 | height: 32px; 128 | } 129 | #anno_status_old{ 130 | font-size: 16pt; 131 | margin-top: 8px; 132 | margin-left: 220px; 133 | height: 32px; 134 | } 135 | 136 | .anno_test { 137 | position: absolute; 138 | z-index: 10; 139 | left: 0; 140 | top: 0; 141 | background: blue; 142 | width: 16px; 143 | height: 16px; 144 | border-radius: 100%; 145 | cursor: move; 146 | box-shadow: 1px 2px 5px -2px black; 147 | background: rgb(125, 185, 232); 148 | /* Old browsers */ 149 | background: -moz-radial-gradient(center, ellipse cover, rgba(125, 185, 232, 1) 0%, rgba(30, 87, 153, 1) 99%); 150 | /* FF3.6+ */ 151 | background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%, rgba(125, 185, 232, 1)), color-stop(99%, rgba(30, 87, 153, 1))); 152 | /* Chrome,Safari4+ */ 153 | background: -webkit-radial-gradient(center, ellipse cover, rgba(125, 185, 232, 1) 0%, rgba(30, 87, 153, 1) 99%); 154 | /* Chrome10+,Safari5.1+ */ 155 | background: -o-radial-gradient(center, ellipse cover, rgba(125, 185, 232, 1) 0%, rgba(30, 87, 153, 1) 99%); 156 | /* Opera 12+ */ 157 | background: -ms-radial-gradient(center, ellipse cover, rgba(125, 185, 232, 1) 0%, rgba(30, 87, 153, 1) 99%); 158 | /* IE10+ */ 159 | background: radial-gradient(ellipse at center, rgba(125, 185, 232, 1) 0%, rgba(30, 87, 153, 1) 99%); 160 | /* W3C */ 161 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#7db9e8', endColorstr='#1e5799', GradientType=1); 162 | /* IE6-9 fallback on horizontal gradient */ 163 | } 164 | 165 | 166 | .button { 167 | -moz-box-shadow:inset 0px 1px 0px 0px #dcecfb; 168 | -webkit-box-shadow:inset 0px 1px 0px 0px #dcecfb; 169 | box-shadow:inset 0px 1px 0px 0px #dcecfb; 170 | background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #bddbfa), color-stop(1, #80b5ea) ); 171 | background:-moz-linear-gradient( center top, #bddbfa 5%, #80b5ea 100% ); 172 | filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#bddbfa', endColorstr='#80b5ea'); 173 | background-color:#bddbfa; 174 | -webkit-border-top-left-radius:0px; 175 | -moz-border-radius-topleft:0px; 176 | border-top-left-radius:0px; 177 | -webkit-border-top-right-radius:0px; 178 | -moz-border-radius-topright:0px; 179 | border-top-right-radius:0px; 180 | -webkit-border-bottom-right-radius:0px; 181 | -moz-border-radius-bottomright:0px; 182 | border-bottom-right-radius:0px; 183 | -webkit-border-bottom-left-radius:0px; 184 | -moz-border-radius-bottomleft:0px; 185 | border-bottom-left-radius:0px; 186 | text-indent:0; 187 | border:1px solid #84bbf3; 188 | display:inline-block; 189 | color:#ffffff; 190 | font-family:Arial; 191 | font-size:15px; 192 | font-weight:bold; 193 | font-style:normal; 194 | height:40px; 195 | line-height:40px; 196 | width:100px; 197 | text-decoration:none; 198 | text-align:center; 199 | text-shadow:1px 1px 0px #528ecc; 200 | } 201 | .button:hover { 202 | background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #80b5ea), color-stop(1, #bddbfa) ); 203 | background:-moz-linear-gradient( center top, #80b5ea 5%, #bddbfa 100% ); 204 | filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80b5ea', endColorstr='#bddbfa'); 205 | background-color:#80b5ea; 206 | }.button:active { 207 | position:relative; 208 | top:1px; 209 | } 210 | /* This button was generated using CSSButtonGenerator.com */ 211 | 212 | .hint{ 213 | width:50px; 214 | height:50px; 215 | position:absolute; 216 | } 217 | .hint-img{ 218 | width:50px; 219 | height:50px; 220 | } 221 | -------------------------------------------------------------------------------- /static/images/categories/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/1.png -------------------------------------------------------------------------------- /static/images/categories/10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/10.png -------------------------------------------------------------------------------- /static/images/categories/11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/11.png -------------------------------------------------------------------------------- /static/images/categories/12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/12.png -------------------------------------------------------------------------------- /static/images/categories/13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/13.png -------------------------------------------------------------------------------- /static/images/categories/14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/14.png -------------------------------------------------------------------------------- /static/images/categories/15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/15.png -------------------------------------------------------------------------------- /static/images/categories/16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/16.png -------------------------------------------------------------------------------- /static/images/categories/17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/17.png -------------------------------------------------------------------------------- /static/images/categories/18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/18.png -------------------------------------------------------------------------------- /static/images/categories/19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/19.png -------------------------------------------------------------------------------- /static/images/categories/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/2.png -------------------------------------------------------------------------------- /static/images/categories/20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/20.png -------------------------------------------------------------------------------- /static/images/categories/21.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/21.png -------------------------------------------------------------------------------- /static/images/categories/22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/22.png -------------------------------------------------------------------------------- /static/images/categories/23.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/23.png -------------------------------------------------------------------------------- /static/images/categories/24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/24.png -------------------------------------------------------------------------------- /static/images/categories/25.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/25.png -------------------------------------------------------------------------------- /static/images/categories/26.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/26.png -------------------------------------------------------------------------------- /static/images/categories/27.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/27.png -------------------------------------------------------------------------------- /static/images/categories/28.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/28.png -------------------------------------------------------------------------------- /static/images/categories/29.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/29.png -------------------------------------------------------------------------------- /static/images/categories/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/3.png -------------------------------------------------------------------------------- /static/images/categories/30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/30.png -------------------------------------------------------------------------------- /static/images/categories/31.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/31.png -------------------------------------------------------------------------------- /static/images/categories/32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/32.png -------------------------------------------------------------------------------- /static/images/categories/33.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/33.png -------------------------------------------------------------------------------- /static/images/categories/34.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/34.png -------------------------------------------------------------------------------- /static/images/categories/35.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/35.png -------------------------------------------------------------------------------- /static/images/categories/36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/36.png -------------------------------------------------------------------------------- /static/images/categories/37.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/37.png -------------------------------------------------------------------------------- /static/images/categories/38.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/38.png -------------------------------------------------------------------------------- /static/images/categories/39.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/39.png -------------------------------------------------------------------------------- /static/images/categories/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/4.png -------------------------------------------------------------------------------- /static/images/categories/40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/40.png -------------------------------------------------------------------------------- /static/images/categories/41.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/41.png -------------------------------------------------------------------------------- /static/images/categories/42.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/42.png -------------------------------------------------------------------------------- /static/images/categories/43.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/43.png -------------------------------------------------------------------------------- /static/images/categories/44.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/44.png -------------------------------------------------------------------------------- /static/images/categories/45.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/45.png -------------------------------------------------------------------------------- /static/images/categories/46.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/46.png -------------------------------------------------------------------------------- /static/images/categories/47.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/47.png -------------------------------------------------------------------------------- /static/images/categories/48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/48.png -------------------------------------------------------------------------------- /static/images/categories/49.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/49.png -------------------------------------------------------------------------------- /static/images/categories/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/5.png -------------------------------------------------------------------------------- /static/images/categories/50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/50.png -------------------------------------------------------------------------------- /static/images/categories/51.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/51.png -------------------------------------------------------------------------------- /static/images/categories/52.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/52.png -------------------------------------------------------------------------------- /static/images/categories/53.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/53.png -------------------------------------------------------------------------------- /static/images/categories/54.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/54.png -------------------------------------------------------------------------------- /static/images/categories/55.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/55.png -------------------------------------------------------------------------------- /static/images/categories/56.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/56.png -------------------------------------------------------------------------------- /static/images/categories/57.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/57.png -------------------------------------------------------------------------------- /static/images/categories/58.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/58.png -------------------------------------------------------------------------------- /static/images/categories/59.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/59.png -------------------------------------------------------------------------------- /static/images/categories/6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/6.png -------------------------------------------------------------------------------- /static/images/categories/60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/60.png -------------------------------------------------------------------------------- /static/images/categories/61.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/61.png -------------------------------------------------------------------------------- /static/images/categories/62.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/62.png -------------------------------------------------------------------------------- /static/images/categories/63.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/63.png -------------------------------------------------------------------------------- /static/images/categories/64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/64.png -------------------------------------------------------------------------------- /static/images/categories/65.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/65.png -------------------------------------------------------------------------------- /static/images/categories/66.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/66.png -------------------------------------------------------------------------------- /static/images/categories/67.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/67.png -------------------------------------------------------------------------------- /static/images/categories/68.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/68.png -------------------------------------------------------------------------------- /static/images/categories/69.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/69.png -------------------------------------------------------------------------------- /static/images/categories/7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/7.png -------------------------------------------------------------------------------- /static/images/categories/70.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/70.png -------------------------------------------------------------------------------- /static/images/categories/71.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/71.png -------------------------------------------------------------------------------- /static/images/categories/72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/72.png -------------------------------------------------------------------------------- /static/images/categories/73.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/73.png -------------------------------------------------------------------------------- /static/images/categories/74.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/74.png -------------------------------------------------------------------------------- /static/images/categories/75.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/75.png -------------------------------------------------------------------------------- /static/images/categories/76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/76.png -------------------------------------------------------------------------------- /static/images/categories/77.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/77.png -------------------------------------------------------------------------------- /static/images/categories/78.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/78.png -------------------------------------------------------------------------------- /static/images/categories/79.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/79.png -------------------------------------------------------------------------------- /static/images/categories/8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/8.png -------------------------------------------------------------------------------- /static/images/categories/80.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/80.png -------------------------------------------------------------------------------- /static/images/categories/81.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/81.png -------------------------------------------------------------------------------- /static/images/categories/82.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/82.png -------------------------------------------------------------------------------- /static/images/categories/83.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/83.png -------------------------------------------------------------------------------- /static/images/categories/84.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/84.png -------------------------------------------------------------------------------- /static/images/categories/85.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/85.png -------------------------------------------------------------------------------- /static/images/categories/86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/86.png -------------------------------------------------------------------------------- /static/images/categories/87.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/87.png -------------------------------------------------------------------------------- /static/images/categories/88.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/88.png -------------------------------------------------------------------------------- /static/images/categories/89.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/89.png -------------------------------------------------------------------------------- /static/images/categories/9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/9.png -------------------------------------------------------------------------------- /static/images/categories/90.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/90.png -------------------------------------------------------------------------------- /static/images/categories/91.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/categories/91.png -------------------------------------------------------------------------------- /static/images/category_labeling/example.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/category_labeling/example.jpg -------------------------------------------------------------------------------- /static/images/crowd_labeling/example-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/crowd_labeling/example-1.jpg -------------------------------------------------------------------------------- /static/images/crowd_labeling/example-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/crowd_labeling/example-2.jpg -------------------------------------------------------------------------------- /static/images/demo/cat.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/demo/cat.jpg -------------------------------------------------------------------------------- /static/images/demo/dog.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/demo/dog.jpg -------------------------------------------------------------------------------- /static/images/icons/left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/icons/left.png -------------------------------------------------------------------------------- /static/images/icons/left_green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/icons/left_green.png -------------------------------------------------------------------------------- /static/images/icons/right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/icons/right.png -------------------------------------------------------------------------------- /static/images/icons/right_green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/icons/right_green.png -------------------------------------------------------------------------------- /static/images/instance_spotting/example.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/images/instance_spotting/example.jpg -------------------------------------------------------------------------------- /static/js/coco_category_labeling.js: -------------------------------------------------------------------------------- 1 | var task_cursor = 0; 2 | // define timer 3 | var init_time; 4 | // flag for images that can't be loaded 5 | // these images will be skipped 6 | var im_err = []; 7 | 8 | // number of images in this HIT 9 | var N_task = im_urls.length; 10 | 11 | // define supercateogry and category as array 12 | var supercats = []; 13 | var categories = []; 14 | 15 | // define icons for all tasks 16 | // icons_all is a two dimensional array 17 | // first index for images and the second index for icons 18 | // the normalized (x,y) coordinates is stored in each icon 19 | var icons_all = []; 20 | 21 | // define questions 22 | var questions = []; 23 | 24 | // define state variables that controls ui 25 | var supercat_cursor = []; 26 | for (i=0; i < N_task; i++){ 27 | supercat_cursor[i] = 0; 28 | } 29 | 30 | function initialize_anncats(){ 31 | // timer 32 | init_time = $.now(); 33 | // prepare data 34 | // initialize images 35 | for (i=0; i < im_urls.length; i++){ 36 | var im = new Image(); 37 | var q = new Object(); 38 | im.src = im_urls[i]; 39 | q.im = im; 40 | q.ans = ''; 41 | // TODO: add fields for identifying images here 42 | questions.push(q); 43 | } 44 | $("#example").attr("src", STATIC_ROOT + "/images/category_labeling/example.jpg"); 45 | $("#nimages").append(im_urls.length); 46 | 47 | // define supercategory 48 | // each task contains 11 sets of supercategory to annotate 49 | supercats[0] = {'name':"person and accessory",'id':1} 50 | supercats[1] = {'name':"animals",'id':4} 51 | supercats[2] = {'name':"vehicles",'id':2} 52 | supercats[3] = {'name':"street-view",'id':3} 53 | supercats[4] = {'name':"sports",'id':6} 54 | supercats[5] = {'name':"food",'id':8} 55 | supercats[6] = {'name':"kitchenware",'id':7} 56 | supercats[7] = {'name':"appliances",'id':11} 57 | supercats[8] = {'name':"furniture",'id':9} 58 | supercats[9] = {'name':"small indoor",'id':12} 59 | supercats[10] = {'name':"electronics",'id':10} 60 | 61 | // define categories 62 | categories = [{"supercat_id": 1, "name": "person", "cat_id": 1}, {"supercat_id": 2, "name": "bicycle", "cat_id": 2}, {"supercat_id": 2, "name": "car", "cat_id": 3}, {"supercat_id": 2, "name": "motorcycle", "cat_id": 4}, {"supercat_id": 2, "name": "airplane", "cat_id": 5}, {"supercat_id": 2, "name": "bus", "cat_id": 6}, {"supercat_id": 2, "name": "train", "cat_id": 7}, {"supercat_id": 2, "name": "truck", "cat_id": 8}, {"supercat_id": 2, "name": "boat", "cat_id": 9}, {"supercat_id": 3, "name": "traffic light", "cat_id": 10}, {"supercat_id": 3, "name": "fire hydrant", "cat_id": 11}, {"supercat_id": 3, "name": "stop sign", "cat_id": 13}, {"supercat_id": 3, "name": "parking meter", "cat_id": 14}, {"supercat_id": 3, "name": "bench", "cat_id": 15}, {"supercat_id": 4, "name": "bird", "cat_id": 16}, {"supercat_id": 4, "name": "cat", "cat_id": 17}, {"supercat_id": 4, "name": "dog", "cat_id": 18}, {"supercat_id": 4, "name": "horse", "cat_id": 19}, {"supercat_id": 4, "name": "sheep", "cat_id": 20}, {"supercat_id": 4, "name": "cow", "cat_id": 21}, {"supercat_id": 4, "name": "elephant", "cat_id": 22}, {"supercat_id": 4, "name": "bear", "cat_id": 23}, {"supercat_id": 4, "name": "zebra", "cat_id": 24}, {"supercat_id": 4, "name": "giraffe", "cat_id": 25}, {"supercat_id": 1, "name": "backpack", "cat_id": 27}, {"supercat_id": 1, "name": "umbrella", "cat_id": 28}, {"supercat_id": 1, "name": "handbag", "cat_id": 31}, {"supercat_id": 1, "name": "tie", "cat_id": 32}, {"supercat_id": 1, "name": "suitcase", "cat_id": 33}, {"supercat_id": 6, "name": "frisbee", "cat_id": 34}, {"supercat_id": 6, "name": "skis", "cat_id": 35}, {"supercat_id": 6, "name": "snowboard", "cat_id": 36}, {"supercat_id": 6, "name": "sports ball", "cat_id": 37}, {"supercat_id": 6, "name": "kite", "cat_id": 38}, {"supercat_id": 6, "name": "baseball bat", "cat_id": 39}, {"supercat_id": 6, "name": "baseball glove", "cat_id": 40}, {"supercat_id": 6, "name": "skateboard", "cat_id": 41}, {"supercat_id": 6, "name": "surfboard", "cat_id": 42}, {"supercat_id": 6, "name": "tennis racket", "cat_id": 43}, {"supercat_id": 7, "name": "bottle", "cat_id": 44}, {"supercat_id": 7, "name": "wine glass", "cat_id": 46}, {"supercat_id": 7, "name": "cup", "cat_id": 47}, {"supercat_id": 7, "name": "fork", "cat_id": 48}, {"supercat_id": 7, "name": "knife", "cat_id": 49}, {"supercat_id": 7, "name": "spoon", "cat_id": 50}, {"supercat_id": 7, "name": "bowl", "cat_id": 51}, {"supercat_id": 8, "name": "banana", "cat_id": 52}, {"supercat_id": 8, "name": "apple", "cat_id": 53}, {"supercat_id": 8, "name": "sandwich", "cat_id": 54}, {"supercat_id": 8, "name": "orange", "cat_id": 55}, {"supercat_id": 8, "name": "broccoli", "cat_id": 56}, {"supercat_id": 8, "name": "carrot", "cat_id": 57}, {"supercat_id": 8, "name": "hot dog", "cat_id": 58}, {"supercat_id": 8, "name": "pizza", "cat_id": 59}, {"supercat_id": 8, "name": "donut", "cat_id": 60}, {"supercat_id": 8, "name": "cake", "cat_id": 61}, {"supercat_id": 9, "name": "chair", "cat_id": 62}, {"supercat_id": 9, "name": "couch", "cat_id": 63}, {"supercat_id": 9, "name": "potted plant", "cat_id": 64}, {"supercat_id": 9, "name": "bed", "cat_id": 65}, {"supercat_id": 9, "name": "dining table", "cat_id": 67}, {"supercat_id": 9, "name": "toilet", "cat_id": 70}, {"supercat_id": 10, "name": "tv", "cat_id": 72}, {"supercat_id": 10, "name": "laptop", "cat_id": 73}, {"supercat_id": 10, "name": "mouse", "cat_id": 74}, {"supercat_id": 10, "name": "remote", "cat_id": 75}, {"supercat_id": 10, "name": "keyboard", "cat_id": 76}, {"supercat_id": 10, "name": "cell phone", "cat_id": 77}, {"supercat_id": 11, "name": "microwave", "cat_id": 78}, {"supercat_id": 11, "name": "oven", "cat_id": 79}, {"supercat_id": 11, "name": "toaster", "cat_id": 80}, {"supercat_id": 11, "name": "sink", "cat_id": 81}, {"supercat_id": 11, "name": "refrigerator", "cat_id": 82}, {"supercat_id": 12, "name": "book", "cat_id": 84}, {"supercat_id": 12, "name": "clock", "cat_id": 85}, {"supercat_id": 12, "name": "vase", "cat_id": 86}, {"supercat_id": 12, "name": "scissors", "cat_id": 87}, {"supercat_id": 12, "name": "teddy bear", "cat_id": 88}, {"supercat_id": 12, "name": "hair drier", "cat_id": 89}, {"supercat_id": 12, "name": "toothbrush", "cat_id": 90}] 63 | 64 | // define icons 65 | for (i=0; i < im_urls.length; i++){ 66 | var icons = []; 67 | for (j=0; j < categories.length; j++){ 68 | var cat = categories[j]; 69 | var img_src = STATIC_ROOT + "/images/categories/"+cat.cat_id+".png"; 70 | icons.push({ 71 | 'name': cat.name, 72 | 'supercat_id':cat.supercat_id, 73 | 'cat_id': cat.cat_id, 74 | 'div':$('

cat.name

'), 75 | 'div1':$('
'), 76 | 'isselected':0, 77 | 'panel_idx':-1, 78 | 'x':0, 79 | 'y':0, 80 | 'drag_time':0, 81 | 82 | }); 83 | icons_all[i] = icons; 84 | } 85 | } 86 | 87 | // prepare for interactive icon panel 88 | // icons_all[i][j], i: images, j: icons 89 | for (var i=0; i < im_urls.length; i++){ 90 | for (var j=0; j< icons.length; j++){ 91 | icons_all[i][j]['div'].data('idx',j); 92 | icons_all[i][j]['div1'].data('idx',j); 93 | icons_all[i][j]['div'].data('img_idx',i); 94 | icons_all[i][j]['div1'].data('img_idx',i); 95 | // Set draggable 96 | icons_all[i][j]['div'].draggable({ 97 | cursor:"move", 98 | start: function(ev){ 99 | var i = $(this).data('img_idx'); 100 | var idx = $(this).data('idx'); 101 | var isselected = icons_all[i][idx]['isselected']; 102 | if (isselected == 0){ 103 | $(this).find('p').html(''); 104 | } 105 | $(this).data('clientX', ev.clientX); 106 | $(this).data('clientY', ev.clientY); 107 | $(this).data('drag_start_time', ev.timeStamp); 108 | if ($(this).css('position') == 'absolute'){ 109 | var top = $(document).scrollTop() + ev.clientY-20; 110 | var left = $(document).scrollLeft() + ev.clientX-20; 111 | $(this).css('top', top); 112 | $(this).css('left', left); 113 | } 114 | }, 115 | stop: function(ev){ 116 | var i = $(this).data('img_idx'); 117 | var idx = $(this).data('idx'); 118 | var isselected = icons_all[i][idx]['isselected']; 119 | // check if it's drop in image 120 | var im_y = parseFloat($('#imdiv'+i).find('.image-task').position().top ); 121 | var im_x = parseFloat($('#imdiv'+i).find('.image-task').position().left); 122 | var im_w = parseFloat($('#imdiv'+i).find('.image-task').css('width')); 123 | var im_h = parseFloat($('#imdiv'+i).find('.image-task').css('height')); 124 | var icon_x = ($(this).position().left+20.0 - im_x)/im_w; 125 | var icon_y = ($(this).position().top +20.0 - im_y)/im_h; 126 | icons_all[i][idx]['drag_time'] += -$(this).data('drag_start_time') + ev.timeStamp; 127 | if (icon_x < -0.01 || icon_x > 1.01 || icon_y < -0.01 || icon_y > 1.01){ 128 | if (isselected==1){ 129 | $(this).trigger('click'); // equal to de-select the icon 130 | }else{ 131 | $(this).css('left', 0); // go back to their original position 132 | $(this).css('top', 0); 133 | $(this).find('p').html(icons_all[i][idx]['name']); 134 | } 135 | return -1; 136 | } 137 | $(this).data('drag_start_time'); 138 | 139 | if (isselected == 0){ 140 | icons_all[i][idx]['div1'].appendTo($('#cats_icons'+i)); 141 | icons_all[i][idx]['div'].css('border-color', 'green'); 142 | $(this).find('.caption').find('p').css('color', 'green'); 143 | icons_all[i][idx]['div1'].css('border-color', 'green'); 144 | icons_all[i][idx]['isselected'] = 1; 145 | // change the content 146 | $(this).find('p').html(''); 147 | $(this).css('width', '25px'); 148 | $(this).css('height', '25px'); 149 | $(this).find('img').css('width', '25px'); 150 | $(this).find('img').css('height', '25px'); 151 | // change the dom structure 152 | $(this).detach(); 153 | $(this).appendTo('#imdiv'+i); 154 | var top = $(document).scrollTop() + ev.clientY-20; 155 | var left = $(document).scrollLeft() + ev.clientX-20; 156 | $(this).css('top', top); 157 | $(this).css('left', left); 158 | $(this).css('position', 'absolute'); 159 | } 160 | // save position at the end of the drag 161 | icons_all[i][idx]['x'] = ($(this).position().left - im_x)/im_w; 162 | icons_all[i][idx]['y'] = ($(this).position().top - im_y)/im_h; 163 | 164 | } 165 | }); 166 | } 167 | } 168 | N = supercats.length; 169 | var im = []; 170 | for (i=0;i'); 175 | im[i].children().data('i',i); 176 | im[i].appendTo(imdiv); 177 | // prepare images after load image 178 | im[i].children().load(function(){ 179 | // adapt to the scale of image 180 | var i = $(this).data('i'); 181 | var imdiv = $(this).parent().parent(); 182 | // div for icons that are in the image 183 | cats_icons = $('#cats_icons'+i); 184 | // deal with resizing the image 185 | var height = parseInt($(this).css('height')); 186 | var width = parseInt($(this).css('width')); 187 | if (width > height){ 188 | $(this).css('width', '600px'); 189 | }else{ 190 | $(this).css('height', '450px'); 191 | } 192 | var height_new = parseInt($(this).css('height')); 193 | $(this).parent().css('height', height_new + 'px'); 194 | cats_icons.css('height', height_new + 'px'); 195 | imdiv.css('height', height_new + 'px'); 196 | cats_icons.appendTo(imdiv); 197 | // questions panel 198 | question = $('#div-task'+i); 199 | icon_and_arrow = $('
'); 200 | icon_and_arrow.appendTo(question); 201 | // buton panel right 202 | button_panel_left = $('
') 203 | button_panel_right = $('
') 204 | // question panael 205 | icons_panel = $('
'); 206 | button_panel_left.appendTo(icon_and_arrow); 207 | icons_panel.appendTo(icon_and_arrow); 208 | button_panel_right.appendTo(icon_and_arrow); 209 | // render div in question 210 | for (j=0;j<20;j++){ 211 | icons_candidates = $('
'); 212 | icons_candidates.appendTo(icons_panel); 213 | } 214 | button_panel = $('
'); 215 | button_panel.appendTo(imdiv); 216 | // add next and previous buttons 217 | button_next = $(''); 218 | button_next.bind('click', function(){ 219 | nextTask(); 220 | }); 221 | button_panel_right.hover( function(){ $(this).find('img').attr('src', STATIC_ROOT + "/images/icons/right_green.png")}, 222 | function(){ $(this).find('img').attr('src', STATIC_ROOT + "/images/icons/right.png")}); 223 | 224 | button_prev = $(''); 225 | button_prev.bind('click', function(){ 226 | prevTask(); 227 | }); 228 | button_panel_left.hover( function(){ $(this).find('img').attr('src', STATIC_ROOT + "/images/icons/left_green.png")}, 229 | function(){ $(this).find('img').attr('src', STATIC_ROOT + "/images/icons/left.png")}); 230 | button_next.appendTo(button_panel_right); 231 | button_prev.appendTo(button_panel_left); 232 | // add progress bar 233 | progress = $('
');//+ 234 | progress_number = $('
'); 235 | progress.appendTo(question); 236 | progress_number.appendTo(question); 237 | progressbar = $('
'); 238 | progressbar.appendTo($('#progress'+i)); 239 | progressbar.progressbar({ 240 | value:1.0/N*100, 241 | }); 242 | $(".progressbar").height(20); 243 | $(".progressbar").width(690); 244 | // progress number 245 | $('#progress-number'+i).html('1/'+N); 246 | // render icons 247 | addIconListener(icons_all[i], i); 248 | renderIcons(0, icons_all[i], i); 249 | if (i!=0 && task_cursor !=i){ 250 | $('#task'+i).hide(); 251 | } 252 | }) 253 | .error(function(){ 254 | var i = $(this).data('i'); 255 | im_err[i] = -1; 256 | if (i==0){ 257 | $('#task'+i).hide(); 258 | $('#task'+1).show(); 259 | task_cursor = 1; 260 | } 261 | console.log('error') 262 | $('#task'+i).hide(); 263 | }); 264 | } 265 | // key press listener 266 | $(document).keyup(function(ev){ 267 | if (ev.keyCode==37){ 268 | prevTask(); 269 | }else if(ev.keyCode==39){ 270 | nextTask(); 271 | } 272 | }); 273 | } 274 | 275 | // next task 276 | function nextTask(){ 277 | while(im_err[task_cursor] == -1){ 278 | if (task_cursor == N_task -1){ 279 | break; // if it's the end of the task 280 | } 281 | task_cursor++; 282 | } 283 | idx = task_cursor; 284 | if (supercat_cursor[idx]0){ 315 | supercat_cursor[i]--; 316 | renderIcons(supercat_cursor[i], icons_all[i], i); 317 | // set progress 318 | $('#progress-number'+i).html((supercat_cursor[i]+1)+'/'+N); 319 | $("#progressbar"+i).progressbar({value:((supercat_cursor[i]+1)/N*100)}); 320 | $('#progress-number'+i).css('color', 'red'); 321 | }else{ 322 | if (task_cursor != 0){ 323 | while(im_err[task_cursor-1] == -1){ 324 | task_cursor--; 325 | if (task_cursor == 0){ 326 | break; // if it's the end of the task 327 | } 328 | } 329 | } 330 | if (task_cursor == 0){ 331 | alert('This is already the first task.'); 332 | }else{ 333 | task_cursor--; 334 | renderTask(); 335 | } 336 | } 337 | 338 | } 339 | // clean icon panel 340 | function cleanIconPanel(idx, icons){ 341 | icons_children = $("#div-icons-panel"+idx).children().children(); 342 | icons_children.detach(); 343 | } 344 | 345 | function renderTask(){ 346 | window.location = $('#anchor'+task_cursor).attr('href'); 347 | for (i=0; i < N_task; i++){ 348 | if (i==task_cursor){ 349 | $('#task'+i).show(); 350 | }else{ 351 | $('#task'+i).hide(); 352 | } 353 | } 354 | } 355 | // create a function to render icons when icon list change or move 356 | function renderIcons(supercat_cursor, icons, idx){ 357 | // redner TASK 358 | $('#question_panel'+idx).html('Task: select ' +'
'+supercats[supercat_cursor]['name']+'
'+' items shown in the image (if any):') 359 | // clean icon panel 360 | cleanIconPanel(idx,icons); 361 | // icons panel 362 | for (i = 0; i'); 12 | data[i]['div'].data('src', im_urls[i]); 13 | data[i]['div'].data('idx', i); 14 | data[i]['img'] = $("Image preview") 15 | data[i]['isselected'] = 0; 16 | data[i]['div'].appendTo($('#imdiv')); 17 | 18 | // bind click event listener to detect if image is selected 19 | data[i]['div'].bind('click', function(){ 20 | var idx = $(this).data('idx'); 21 | var isselected = data[idx]['isselected']; 22 | if (isselected){ 23 | $(this).attr('class', 'div_grid_0'); 24 | data[idx]['isselected'] = 0; 25 | }else{ 26 | $(this).attr('class', 'div_grid_1') 27 | data[idx]['isselected'] = 1; 28 | } 29 | }); 30 | 31 | } 32 | imagePreview(); 33 | return data; 34 | } 35 | 36 | // create a function to render icons when icon list change or move 37 | function renderIcons(){ 38 | } 39 | 40 | 41 | // ================================================================================================ 42 | // This script uses third party code for image hovering effect 43 | // (see below information for details) 44 | // ================================================================================================ 45 | /* 46 | url: http://jsfiddle.net/V5JCq/9/ 47 | */ 48 | 49 | /* 50 | * Image preview script 51 | * powered by jQuery (http://www.jquery.com) 52 | * 53 | * written by Alen Grakalic (http://cssglobe.com) 54 | * 55 | * for more info visit http://cssglobe.com/post/1695/easiest-tooltip-and-image-preview-using-jquery 56 | * 57 | */ 58 | function log(str, params) { 59 | var s = [str.length * 2]; 60 | for (var i = 0; i < str.length; ++i) { 61 | s[i*2] = str[i]; 62 | s[i*2 + 1] = params[i]; 63 | } 64 | 65 | $("#log").val(s.join("")); 66 | } 67 | 68 | this.imagePreview = function(){ 69 | /* CONFIG */ 70 | xOffset = 15; 71 | yOffset = 30; 72 | 73 | // these 2 variable determine popup's distance from the cursor 74 | // you might want to adjust to get the right result 75 | var Mx = $(document).width(); 76 | var My = $(document).height(); 77 | 78 | /* END CONFIG */ 79 | var callback = function(event) { 80 | var $img = $("#preview"); 81 | 82 | // top-right corner coords' offset 83 | if (event.pageX<440){ 84 | var trc_x = xOffset + $img.width(); 85 | var trc_y = yOffset + $img.height(); 86 | }else{ 87 | var trc_x = -xOffset; 88 | var trc_y = yOffset + $img.height(); 89 | } 90 | 91 | My = screen.height+$(window).scrollTop() -150 92 | trc_x = Math.min(trc_x + event.pageX, Mx); 93 | trc_y = Math.min(trc_y + event.pageY, My); 94 | 95 | log( 96 | ["[",";","](",";",") x: ", "; y: "], 97 | [Mx, My, event.pageX, event.pageY, trc_x, trc_y]); 98 | $img 99 | .css("top", (trc_y - $img.height()) + "px") 100 | .css("left", (trc_x - $img.width())+ "px"); 101 | $img.show() 102 | }; 103 | var callback_hover = function(event, modulus) { 104 | var $img = $("#preview"); 105 | 106 | // top-right corner coords' offset 107 | if (modulus==0 || modulus==1){ 108 | var trc_x = xOffset + $img.width(); 109 | var trc_y = yOffset + $img.height(); 110 | }else{ 111 | var trc_x = -xOffset; 112 | var trc_y = yOffset + $img.height(); 113 | } 114 | 115 | My = screen.height+$(window).scrollTop()-150 116 | trc_x = Math.min(trc_x + event.pageX, Mx); 117 | trc_y = Math.min(trc_y + event.pageY, My); 118 | 119 | log( 120 | ["[",";","](",";",") x: ", "; y: "], 121 | [Mx, My, event.pageX, event.pageY, trc_x, trc_y]); 122 | $img 123 | .css("top", (trc_y - $img.height()) + "px") 124 | .css("left", (trc_x - $img.width())+ "px"); 125 | }; 126 | 127 | $(".div_grid_0").hover(function(e){ 128 | var idx = $(this).data('idx'); 129 | Mx = $(document).width(); 130 | My = $(document).height(); 131 | My = screen.height+$(window).scrollTop() -150 132 | 133 | $("body").append("

"); 134 | $("#preview").hide(); 135 | questions[idx]['img'].appendTo($('#preview')) 136 | var modulus = idx % 4; 137 | callback_hover(e, modulus); 138 | $("#preview").fadeIn("fast"); 139 | }, 140 | function(){ 141 | $("#preview").remove(); 142 | } 143 | ) 144 | .mousemove(callback); 145 | }; -------------------------------------------------------------------------------- /static/js/coco_instance_spotting.js: -------------------------------------------------------------------------------- 1 | // Ctrler controls the state of UI and rendering 2 | function Ctrler(){ 3 | this.N = 0; 4 | this.cur_img_idx = 0; // image 5 | this.cur_obj_idx = 0; // object category 6 | this.cur_anno_idx = 0;// annotation from 1 to 10, start from 0 7 | this.len_ratio = 2; 8 | this.hint_status = false; 9 | } 10 | // render image panel for given working image id 11 | Ctrler.prototype.render_im_panel = function(){ 12 | for (i = 0; i < this.N; i++){ 13 | if (i == this.cur_img_idx){ 14 | $('#im-panel-'+i).find('img').attr('src', Im[i].src); 15 | $('#im-panel-'+i).show(); 16 | }else{ 17 | $('#im-panel-'+i).hide(); 18 | } 19 | } 20 | for (i = 0; i < this.N; i++){ 21 | if (i == this.cur_img_idx){ 22 | $('#category-panel-'+i).show(); 23 | }else{ 24 | $('#category-panel-'+i).hide(); 25 | } 26 | } 27 | this.render_bgim(); 28 | } 29 | // render category panel which includes icon and examples 30 | Ctrler.prototype.render_category_panel = function(){ 31 | var i = this.cur_img_idx; 32 | var j = this.cur_obj_idx; 33 | var cat_id = Anno[i].cat_id 34 | var src = STATIC_ROOT + '/images/categories/' + cat_id[0] + '.png'; 35 | // render icon 36 | var cat_div = $('#div-cat-img'); 37 | cat_div.find('img').attr('src', src); 38 | cat_div.find('img').css('width', 80); 39 | cat_div.find('img').css('height', 80); 40 | // redner name 41 | $('#div-cat-name').html(cat_name); 42 | } 43 | Ctrler.prototype.render_hint = function(){ 44 | $('.hint').stop(true); 45 | // load annotation from stage 2 46 | // render saved annotation for the first time 47 | var i = this.cur_img_idx; 48 | var j = this.cur_obj_idx; 49 | var x = Anno[i].x[j]; 50 | var y = Anno[i].y[j]; 51 | var img = $('#img-'+i); 52 | // compute hint's position 53 | var img_left = img.position().left; 54 | var img_top = img.position().top; 55 | var img_wid = parseFloat(img.css('width')); 56 | var img_hei = parseFloat(img.css('height')); 57 | var pos_x = Math.round(img_left+x*img_wid); 58 | var pos_y = Math.round(img_top+y*img_hei); 59 | // show hints 60 | $('.hint').css('left', pos_x); 61 | $('.hint').css('top', pos_y); 62 | var cat_id = Anno[i].cat_id 63 | var src = STATIC_ROOT + '/images/categories/' + cat_id + '.png'; 64 | $('.hint-img').attr('src', src); 65 | var s = 400; 66 | $('.hint').fadeTo(s,0.1).fadeTo(s,1).fadeTo(s,0.1).fadeTo(s,1).fadeTo(s, 0); 67 | } 68 | // render annotation 69 | Ctrler.prototype.render_anno = function(){ 70 | // image index, object category index, annotation index 71 | var i = this.cur_img_idx; 72 | var j = this.cur_obj_idx; 73 | var k = this.cur_anno_idx; 74 | 75 | for (k=0;k<10;k++){ 76 | if (Anno[i].ans[j][k] == 1){ 77 | var e = new Object(); 78 | e.pageX = Anno[i].annoloc[j][k][0]; 79 | e.pageY = Anno[i].annoloc[j][k][1]; 80 | showMarker(i,j,k, e); 81 | Marker[k].css('left', e.pageX-15); 82 | Marker[k].css('top', e.pageY-31); 83 | }else{ 84 | hideMarker(i,j,k); 85 | } 86 | } 87 | // set visible & marker_bg 88 | for (idx=0; idx<10; idx++){ 89 | if (Marker[idx].data('show') == 1){ 90 | Marker[idx].show(); 91 | Marker_bg[idx].hide() 92 | }else{ 93 | Marker[idx].hide(); 94 | Marker_bg[idx].hide(); 95 | } 96 | } 97 | var count = 0; 98 | for (p = 0; p<10; p++){ 99 | if (Marker[p].data('show')==1){ 100 | count++; 101 | } 102 | } 103 | $('#anno_status').html('
' + count +'
cat(s) found in this image.'); 104 | } 105 | // render background image 106 | Ctrler.prototype.render_bgim = function(){ 107 | var i = this.cur_img_idx; 108 | var ratio = this.len_ratio; 109 | $('#bgim').css({ backgroundImage: "url('" + Im[i].src + "')" }) 110 | $('#bgim').css('background-size', parseFloat(Im[i].width)*ratio+ "px " + parseFloat(Im[i].height)*ratio + 'px'); 111 | } 112 | 113 | Ctrler.prototype.renderLen = function(e){ 114 | var i = ctrler.cur_img_idx; 115 | var obj = $('#img-'+i); 116 | var obj2 = $('#category-panel'); 117 | var target = $('#bgim'); 118 | var offset = obj.offset(); 119 | var widthRatio = ctrler.len_ratio; 120 | var heightRatio = ctrler.len_ratio; 121 | var leftPos = parseInt(e.pageX - offset.left); 122 | var topPos = parseInt(e.pageY - offset.top); 123 | if (leftPos < 0 || topPos < 0 || leftPos > obj.width() || topPos > obj.height()) { 124 | target.hide(); 125 | } 126 | else { 127 | target.show(); 128 | 129 | bgleftPos = String(((e.pageX - offset.left) * widthRatio - target.width() / 2) * (-1)); 130 | bgtopPos = String(((e.pageY - offset.top) * heightRatio - target.height() / 2) * (-1)); 131 | target.css({ backgroundPosition: bgleftPos + 'px ' + bgtopPos + 'px' }); 132 | 133 | var leftPos = String(e.pageX - target.width() / 2); 134 | var topPos = String(e.pageY - target.height() / 2); 135 | target.css({ left: leftPos + 'px', top: topPos + 'px' }); 136 | // render Marker on background layer 137 | for (i=0; i<10; i++){ 138 | if (Marker[i].data('show') == 1){ 139 | left_marker = parseFloat(Marker[i].css('left') )-obj.position().left; 140 | top_marker = parseFloat(Marker[i].css('top') )-obj.position().top; 141 | wid_marker = parseFloat(Marker[i].css('width') ); 142 | hei_marker = parseFloat(Marker[i].css('height')); 143 | 144 | if (Marker_bg[i].data('ondrag') != 'TRUE'){ 145 | Marker_bg[i].css('left', (left_marker*2 +parseFloat(bgleftPos)+(wid_marker/2) + parseFloat(leftPos) )); 146 | Marker_bg[i].css('top', (top_marker*2 +parseFloat(bgtopPos) +(hei_marker/2) + parseFloat(topPos) )); 147 | } 148 | // if Marker_bg is in radius, show it, else hide it 149 | var abs_left = parseFloat(Marker_bg[i].css('left')) - parseFloat(Marker[i].css('left')); 150 | var abs_top = parseFloat(Marker_bg[i].css('top')) - parseFloat(Marker[i].css('top')); 151 | if (abs_left*abs_left + abs_top*abs_top < 25*25){ 152 | Marker_bg[i].show(); 153 | Marker[i].hide(); 154 | }else{ 155 | Marker_bg[i].hide(); 156 | Marker[i].show(); 157 | } 158 | } 159 | } 160 | } 161 | } 162 | 163 | // render previous image 164 | Ctrler.prototype.back = function(){ 165 | var i = this.cur_img_idx; 166 | var j = this.cur_obj_idx; 167 | this.cur_obj_idx--; 168 | if (this.cur_obj_idx < 0){ 169 | this.cur_img_idx--; 170 | if (this.cur_img_idx < 0){ 171 | this.cur_img_idx++; 172 | this.cur_obj_idx++; 173 | }else{ 174 | this.cur_obj_idx = Anno[i-1].cat_id.length-1; 175 | this.render_im_panel(); 176 | } 177 | } 178 | var i = this.cur_img_idx; 179 | var j = this.cur_obj_idx; 180 | this.render_category_panel(); 181 | this.render_anno(); 182 | this.render_hint(); 183 | } 184 | 185 | // render next image 186 | Ctrler.prototype.next = function(){ 187 | var i = this.cur_img_idx; 188 | var j = this.cur_obj_idx; 189 | var k = Anno[i].cat_id.length; 190 | this.cur_obj_idx++; 191 | if (this.cur_obj_idx >= k){ 192 | this.cur_img_idx++; 193 | if (this.cur_img_idx >= this.N){ 194 | this.cur_obj_idx--; 195 | this.cur_img_idx--; 196 | $( "#dialog-confirm" ).dialog( "open" ); 197 | $( ".ui-dialog" ).css('top', window.scrollY+200); 198 | $( ".ui-dialog" ).css('left', window.scrollX+200); 199 | }else{ 200 | this.cur_obj_idx = 0; 201 | this.render_im_panel(); 202 | this.render_category_panel(); 203 | this.render_anno(); 204 | this.render_hint(); 205 | $('html, body').scrollTop( $(document).height() - $(window).height() ); 206 | } 207 | } 208 | } 209 | 210 | 211 | // add Markers 212 | Ctrler.prototype.addMarker = function(ev, flag){ 213 | if (ev.which == 1){ 214 | var i = ctrler.cur_img_idx; 215 | var j = ctrler.cur_obj_idx; 216 | var k = 10; 217 | for (p = 0; p<10; p++){ 218 | if (Marker[p].data('show')==0){ 219 | k = p; 220 | break; 221 | } 222 | } 223 | if (k == 10){ 224 | ctrler.next(); 225 | return 0; 226 | } 227 | // add marker 228 | var wid = parseFloat(Marker[k].css('width')); 229 | var hei = parseFloat(Marker[k].css('height')); 230 | var leftPos = parseFloat(ev.pageX); 231 | var topPos = parseFloat(ev.pageY); 232 | var leftPosIm = $('#img-'+i).position().left; 233 | var topPosIm = $('#img-'+i).position().top; 234 | var widIm = parseFloat($('#img-'+i).css('width')); 235 | var heiIm = parseFloat($('#img-'+i).css('height')); 236 | var offset = 0; 237 | // check if 10 markers 238 | if (leftPos > leftPosIm-offset && leftPos < leftPosIm+widIm+offset && 239 | topPos > topPosIm -offset && topPos < topPosIm +heiIm+offset){ 240 | Marker[k].css('left', leftPos -wid/2); 241 | Marker[k].css('top', topPos -hei/2); 242 | showMarker(i,j,k, ev); 243 | ctrler.render_anno(); 244 | } 245 | ctrler.renderLen(ev); 246 | } 247 | } 248 | 249 | // delete Markers 250 | Ctrler.prototype.deleteMarker = function(ev, kk){ 251 | // i: index of the object 252 | var i = ctrler.cur_img_idx; 253 | var j = ctrler.cur_obj_idx; 254 | var k = ctrler.cur_anno_idx; 255 | ev.preventDefault(); 256 | if (ev.which == 3){ 257 | // click event 258 | hideMarker(i,j, kk); 259 | ctrler.render_anno(); 260 | } 261 | } 262 | 263 | // add mouse and keyboard listener 264 | function addListener(){ 265 | //=============== Keyboard Lisenter ===================== 266 | $(document).keyup(function(ev){ 267 | // Confirmation stage 268 | if (ev.keyCode==78 || ev.keyCode==110){ //space 269 | ctrler.next(); 270 | } 271 | if(ev.keyCode == 72 || ev.keyCode == 104){ //h 272 | ctrler.render_hint(); 273 | } 274 | if(ev.keyCode == 66 || ev.keyCode == 98){ //b 275 | ctrler.back(); 276 | } 277 | }); 278 | $('#button-next').bind('click', function(){ctrler.next()}); 279 | $('#button-hint').bind('click', function(){ctrler.render_hint()}); 280 | $('#button-back').bind('click', function(){ctrler.back()}); 281 | //=============== mouse Lisenter ===================== 282 | $('#bgim').bind('click', function(ev){ 283 | // left click add markers 284 | ctrler.addMarker(ev,0); 285 | }); 286 | $('.anno').bind('click', function(ev){ 287 | // left click add markers 288 | ctrler.addMarker(ev,0); 289 | }); 290 | // right click listener on anno 291 | $('.anno').bind('mouseup', function(ev){ 292 | ctrler.deleteMarker(ev, $(this).data('idx')); 293 | }); 294 | // mouse over Listener for rendering Lens 295 | $('#bgim').bind( 'mousemove', ctrler.renderLen); 296 | $('.img' ).bind( 'mousemove', ctrler.renderLen); 297 | $('.imgdiv').bind('mousemove', ctrler.renderLen); 298 | $('.anno').bind( 'mousemove', ctrler.renderLen); 299 | } 300 | 301 | // add markers 302 | function createMarker(){ 303 | for (i=0; i < 10; i++){ 304 | Marker[i] = $('
+
'); 305 | Marker[i].data('show',0); 306 | Marker[i].data('idx',i); 307 | Marker[i].appendTo($('#category-panel')); 308 | Marker_bg[i] = $('
+
'); 309 | Marker_bg[i].data('idx', i); 310 | Marker_bg[i].css('z-index', 10000); 311 | Marker_bg[i].appendTo($('#category-panel')); 312 | 313 | Marker_bg[i].draggable({ 314 | cursor: 'move', 315 | cursorAt: { top: 31, left: 15.5 }, 316 | start: function (e, ui){ 317 | var k = $(this).data('idx'); 318 | Marker[k].data('x', e.pageX-15.5); 319 | Marker[k].data('y', e.pageY-30); 320 | Marker[k].css('left', e.pageX-15.5); 321 | Marker[k].css('top', e.pageY-30); 322 | Marker_bg[k].css('left', e.pageX-15.5); 323 | Marker_bg[k].css('top', e.pageY-30); 324 | Marker_bg[k].data('ondrag', 'TRUE'); 325 | }, 326 | drag: function (e, ui) { 327 | // reset Marker's position 328 | var i = ctrler.cur_img_idx; 329 | var j = ctrler.cur_obj_idx; 330 | var k = $(this).data('idx'); 331 | var offsetX = parseFloat(Marker_bg[k].css('width')); 332 | var offsetY = parseFloat(Marker_bg[k].css('height')); 333 | Marker[k].css('left', e.pageX-offsetX/2); 334 | Marker[k].css('top', e.pageY-offsetY/2); 335 | if (Anno[i].ans[j] == -1){ 336 | Anno[i].ans[j] = 1; 337 | Marker[0].css('color', 'blue'); 338 | Marker[0].html('+'); 339 | } 340 | }, 341 | stop: function (e, ui) { 342 | var k = $(this).data('idx'); 343 | var i = ctrler.cur_img_idx; 344 | var j = ctrler.cur_obj_idx; 345 | Marker_bg[k].data('ondrag', 'FALSE'); 346 | var wid = parseFloat(Marker[k].css('width')); 347 | var hei = parseFloat(Marker[k].css('height')); 348 | var leftPos = parseFloat(e.pageX); 349 | var topPos = parseFloat(e.pageY); 350 | var leftPosIm = $('#img-'+i).position().left; 351 | var topPosIm = $('#img-'+i).position().top; 352 | var widIm = parseFloat($('#img-'+i).css('width')); 353 | var heiIm = parseFloat($('#img-'+i).css('height')); 354 | var offset = 0; 355 | if (!(leftPos > leftPosIm-offset && leftPos < leftPosIm+widIm+offset && 356 | topPos > topPosIm -offset && topPos < topPosIm +heiIm+offset)){ 357 | hideMarker(i, j, k); 358 | }else{ 359 | showMarker(i, j, k, e); 360 | } 361 | ctrler.render_anno(); 362 | ctrler.renderLen(e); 363 | } 364 | }); 365 | hideMarker(0,0,i); 366 | } 367 | } 368 | 369 | function showMarker(i,j,k,e){ 370 | Marker[k].data('show' , 1); 371 | Anno[i].ans[j][k] = 1; 372 | Anno[i].annoloc[j][k] = [e.pageX, e.pageY]; 373 | var im = $('#img-'+i); 374 | var imLeft = im.position().left; 375 | var imTop = im.position().top; 376 | var imWid = Im[i].width; 377 | var imHei = Im[i].height; 378 | var x = (e.pageX - imLeft)/imWid; 379 | var y = (e.pageY - imTop)/imHei; 380 | Anno[i].annoloc_percentage[j][k] = [x, y]; 381 | } 382 | function hideMarker(i,j,k){ 383 | Marker[k].data('show' , 0); 384 | Anno[i].ans[j][k] = 0; 385 | Anno[i].annoloc[j][k] = [-1, -1]; 386 | Anno[i].annoloc_percentage[j][k] = [-1, -1]; 387 | } 388 | 389 | // script starts here 390 | function imClick_Ctrl(){ 391 | ctrler = new Ctrler(); 392 | ctrler.N = Anno.length; 393 | createMarker(); 394 | addDialog(); 395 | // redner image 396 | ctrler.render_im_panel(); // render image and bg image 397 | ctrler.render_category_panel(); 398 | ctrler.render_anno(); 399 | // add listner after things set up 400 | addListener(); 401 | // set finishing dialog 402 | ctrler.render_hint(); 403 | } 404 | 405 | -------------------------------------------------------------------------------- /static/js/mturk_form_submission.js: -------------------------------------------------------------------------------- 1 | // ================================================================ 2 | // Function to submit form to Server 3 | // The form is submitted to MTurk after server successfully process the submission 4 | // The HIT is completed after MTurk server receives the submission 5 | // ================================================================ 6 | function submit_form(){ 7 | 8 | // process answers 9 | // pack user's response in a dictionary structure and send to the server in JSON format 10 | // TODO: fill in the answers you'd like to send back to server 11 | answers = []; 12 | 13 | var ans = JSON.stringify(answers); 14 | var duration = ($.now()-init_time)/1000; 15 | duration = duration.toString(); 16 | 17 | // set the resp to send back to the server here 18 | // the values to send to MTurk has already defined inside #mturk_form 19 | // if you don't need to bother to set value here 20 | resp = 21 | { 22 | // TODO: set the data to be submitted back to server 23 | }; 24 | 25 | // post ajax request to server 26 | // if there's no backend to process the request, form can be directly submitted to MTurk 27 | $.ajax({ 28 | type: "POST", 29 | // "TODO: set the url of server to process the data", 30 | url: "", 31 | data: {'resp':JSON.stringify(resp)} 32 | }).done(function(data) { 33 | $('#mturk_form').submit(); 34 | }); 35 | } -------------------------------------------------------------------------------- /static/opensurfaces/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2014 Sean Bell 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of 6 | this software and associated documentation files (the "Software"), to deal in 7 | the Software without restriction, including without limitation the rights to 8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 9 | the Software, and to permit persons to whom the Software is furnished to do so, 10 | subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /static/opensurfaces/css/bootstrap-responsive.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap Responsive v2.2.2 3 | * 4 | * Copyright 2012 Twitter, Inc 5 | * Licensed under the Apache License v2.0 6 | * http://www.apache.org/licenses/LICENSE-2.0 7 | * 8 | * Designed and built with all the love in the world @twitter by @mdo and @fat. 9 | */@-ms-viewport{width:device-width}.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;line-height:0;content:""}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.hidden{display:none;visibility:hidden}.visible-phone{display:none!important}.visible-tablet{display:none!important}.hidden-desktop{display:none!important}.visible-desktop{display:inherit!important}@media(min-width:768px) and (max-width:979px){.hidden-desktop{display:inherit!important}.visible-desktop{display:none!important}.visible-tablet{display:inherit!important}.hidden-tablet{display:none!important}}@media(max-width:767px){.hidden-desktop{display:inherit!important}.visible-desktop{display:none!important}.visible-phone{display:inherit!important}.hidden-phone{display:none!important}}@media(min-width:1200px){.row{margin-left:-30px;*zoom:1}.row:before,.row:after{display:table;line-height:0;content:""}.row:after{clear:both}[class*="span"]{float:left;min-height:1px;margin-left:30px}.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:1170px}.span12{width:1170px}.span11{width:1070px}.span10{width:970px}.span9{width:870px}.span8{width:770px}.span7{width:670px}.span6{width:570px}.span5{width:470px}.span4{width:370px}.span3{width:270px}.span2{width:170px}.span1{width:70px}.offset12{margin-left:1230px}.offset11{margin-left:1130px}.offset10{margin-left:1030px}.offset9{margin-left:930px}.offset8{margin-left:830px}.offset7{margin-left:730px}.offset6{margin-left:630px}.offset5{margin-left:530px}.offset4{margin-left:430px}.offset3{margin-left:330px}.offset2{margin-left:230px}.offset1{margin-left:130px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;line-height:0;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:30px;margin-left:2.564102564102564%;*margin-left:2.5109110747408616%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.564102564102564%}.row-fluid .span12{width:100%;*width:99.94680851063829%}.row-fluid .span11{width:91.45299145299145%;*width:91.39979996362975%}.row-fluid .span10{width:82.90598290598291%;*width:82.8527914166212%}.row-fluid .span9{width:74.35897435897436%;*width:74.30578286961266%}.row-fluid .span8{width:65.81196581196582%;*width:65.75877432260411%}.row-fluid .span7{width:57.26495726495726%;*width:57.21176577559556%}.row-fluid .span6{width:48.717948717948715%;*width:48.664757228587014%}.row-fluid .span5{width:40.17094017094017%;*width:40.11774868157847%}.row-fluid .span4{width:31.623931623931625%;*width:31.570740134569924%}.row-fluid .span3{width:23.076923076923077%;*width:23.023731587561375%}.row-fluid .span2{width:14.52991452991453%;*width:14.476723040552828%}.row-fluid .span1{width:5.982905982905983%;*width:5.929714493544281%}.row-fluid .offset12{margin-left:105.12820512820512%;*margin-left:105.02182214948171%}.row-fluid .offset12:first-child{margin-left:102.56410256410257%;*margin-left:102.45771958537915%}.row-fluid .offset11{margin-left:96.58119658119658%;*margin-left:96.47481360247316%}.row-fluid .offset11:first-child{margin-left:94.01709401709402%;*margin-left:93.91071103837061%}.row-fluid .offset10{margin-left:88.03418803418803%;*margin-left:87.92780505546462%}.row-fluid .offset10:first-child{margin-left:85.47008547008548%;*margin-left:85.36370249136206%}.row-fluid .offset9{margin-left:79.48717948717949%;*margin-left:79.38079650845607%}.row-fluid .offset9:first-child{margin-left:76.92307692307693%;*margin-left:76.81669394435352%}.row-fluid .offset8{margin-left:70.94017094017094%;*margin-left:70.83378796144753%}.row-fluid .offset8:first-child{margin-left:68.37606837606839%;*margin-left:68.26968539734497%}.row-fluid .offset7{margin-left:62.393162393162385%;*margin-left:62.28677941443899%}.row-fluid .offset7:first-child{margin-left:59.82905982905982%;*margin-left:59.72267685033642%}.row-fluid .offset6{margin-left:53.84615384615384%;*margin-left:53.739770867430444%}.row-fluid .offset6:first-child{margin-left:51.28205128205128%;*margin-left:51.175668303327875%}.row-fluid .offset5{margin-left:45.299145299145295%;*margin-left:45.1927623204219%}.row-fluid .offset5:first-child{margin-left:42.73504273504273%;*margin-left:42.62865975631933%}.row-fluid .offset4{margin-left:36.75213675213675%;*margin-left:36.645753773413354%}.row-fluid .offset4:first-child{margin-left:34.18803418803419%;*margin-left:34.081651209310785%}.row-fluid .offset3{margin-left:28.205128205128204%;*margin-left:28.0987452264048%}.row-fluid .offset3:first-child{margin-left:25.641025641025642%;*margin-left:25.53464266230224%}.row-fluid .offset2{margin-left:19.65811965811966%;*margin-left:19.551736679396257%}.row-fluid .offset2:first-child{margin-left:17.094017094017094%;*margin-left:16.98763411529369%}.row-fluid .offset1{margin-left:11.11111111111111%;*margin-left:11.004728132387708%}.row-fluid .offset1:first-child{margin-left:8.547008547008547%;*margin-left:8.440625568285142%}input,textarea,.uneditable-input{margin-left:0}.controls-row [class*="span"]+[class*="span"]{margin-left:30px}input.span12,textarea.span12,.uneditable-input.span12{width:1156px}input.span11,textarea.span11,.uneditable-input.span11{width:1056px}input.span10,textarea.span10,.uneditable-input.span10{width:956px}input.span9,textarea.span9,.uneditable-input.span9{width:856px}input.span8,textarea.span8,.uneditable-input.span8{width:756px}input.span7,textarea.span7,.uneditable-input.span7{width:656px}input.span6,textarea.span6,.uneditable-input.span6{width:556px}input.span5,textarea.span5,.uneditable-input.span5{width:456px}input.span4,textarea.span4,.uneditable-input.span4{width:356px}input.span3,textarea.span3,.uneditable-input.span3{width:256px}input.span2,textarea.span2,.uneditable-input.span2{width:156px}input.span1,textarea.span1,.uneditable-input.span1{width:56px}.thumbnails{margin-left:-30px}.thumbnails>li{margin-left:30px}.row-fluid .thumbnails{margin-left:0}}@media(min-width:768px) and (max-width:979px){.row{margin-left:-20px;*zoom:1}.row:before,.row:after{display:table;line-height:0;content:""}.row:after{clear:both}[class*="span"]{float:left;min-height:1px;margin-left:20px}.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:724px}.span12{width:724px}.span11{width:662px}.span10{width:600px}.span9{width:538px}.span8{width:476px}.span7{width:414px}.span6{width:352px}.span5{width:290px}.span4{width:228px}.span3{width:166px}.span2{width:104px}.span1{width:42px}.offset12{margin-left:764px}.offset11{margin-left:702px}.offset10{margin-left:640px}.offset9{margin-left:578px}.offset8{margin-left:516px}.offset7{margin-left:454px}.offset6{margin-left:392px}.offset5{margin-left:330px}.offset4{margin-left:268px}.offset3{margin-left:206px}.offset2{margin-left:144px}.offset1{margin-left:82px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;line-height:0;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:30px;margin-left:2.7624309392265194%;*margin-left:2.709239449864817%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.7624309392265194%}.row-fluid .span12{width:100%;*width:99.94680851063829%}.row-fluid .span11{width:91.43646408839778%;*width:91.38327259903608%}.row-fluid .span10{width:82.87292817679558%;*width:82.81973668743387%}.row-fluid .span9{width:74.30939226519337%;*width:74.25620077583166%}.row-fluid .span8{width:65.74585635359117%;*width:65.69266486422946%}.row-fluid .span7{width:57.18232044198895%;*width:57.12912895262725%}.row-fluid .span6{width:48.61878453038674%;*width:48.56559304102504%}.row-fluid .span5{width:40.05524861878453%;*width:40.00205712942283%}.row-fluid .span4{width:31.491712707182323%;*width:31.43852121782062%}.row-fluid .span3{width:22.92817679558011%;*width:22.87498530621841%}.row-fluid .span2{width:14.3646408839779%;*width:14.311449394616199%}.row-fluid .span1{width:5.801104972375691%;*width:5.747913483013988%}.row-fluid .offset12{margin-left:105.52486187845304%;*margin-left:105.41847889972962%}.row-fluid .offset12:first-child{margin-left:102.76243093922652%;*margin-left:102.6560479605031%}.row-fluid .offset11{margin-left:96.96132596685082%;*margin-left:96.8549429881274%}.row-fluid .offset11:first-child{margin-left:94.1988950276243%;*margin-left:94.09251204890089%}.row-fluid .offset10{margin-left:88.39779005524862%;*margin-left:88.2914070765252%}.row-fluid .offset10:first-child{margin-left:85.6353591160221%;*margin-left:85.52897613729868%}.row-fluid .offset9{margin-left:79.8342541436464%;*margin-left:79.72787116492299%}.row-fluid .offset9:first-child{margin-left:77.07182320441989%;*margin-left:76.96544022569647%}.row-fluid .offset8{margin-left:71.2707182320442%;*margin-left:71.16433525332079%}.row-fluid .offset8:first-child{margin-left:68.50828729281768%;*margin-left:68.40190431409427%}.row-fluid .offset7{margin-left:62.70718232044199%;*margin-left:62.600799341718584%}.row-fluid .offset7:first-child{margin-left:59.94475138121547%;*margin-left:59.838368402492065%}.row-fluid .offset6{margin-left:54.14364640883978%;*margin-left:54.037263430116376%}.row-fluid .offset6:first-child{margin-left:51.38121546961326%;*margin-left:51.27483249088986%}.row-fluid .offset5{margin-left:45.58011049723757%;*margin-left:45.47372751851417%}.row-fluid .offset5:first-child{margin-left:42.81767955801105%;*margin-left:42.71129657928765%}.row-fluid .offset4{margin-left:37.01657458563536%;*margin-left:36.91019160691196%}.row-fluid .offset4:first-child{margin-left:34.25414364640884%;*margin-left:34.14776066768544%}.row-fluid .offset3{margin-left:28.45303867403315%;*margin-left:28.346655695309746%}.row-fluid .offset3:first-child{margin-left:25.69060773480663%;*margin-left:25.584224756083227%}.row-fluid .offset2{margin-left:19.88950276243094%;*margin-left:19.783119783707537%}.row-fluid .offset2:first-child{margin-left:17.12707182320442%;*margin-left:17.02068884448102%}.row-fluid .offset1{margin-left:11.32596685082873%;*margin-left:11.219583872105325%}.row-fluid .offset1:first-child{margin-left:8.56353591160221%;*margin-left:8.457152932878806%}input,textarea,.uneditable-input{margin-left:0}.controls-row [class*="span"]+[class*="span"]{margin-left:20px}input.span12,textarea.span12,.uneditable-input.span12{width:710px}input.span11,textarea.span11,.uneditable-input.span11{width:648px}input.span10,textarea.span10,.uneditable-input.span10{width:586px}input.span9,textarea.span9,.uneditable-input.span9{width:524px}input.span8,textarea.span8,.uneditable-input.span8{width:462px}input.span7,textarea.span7,.uneditable-input.span7{width:400px}input.span6,textarea.span6,.uneditable-input.span6{width:338px}input.span5,textarea.span5,.uneditable-input.span5{width:276px}input.span4,textarea.span4,.uneditable-input.span4{width:214px}input.span3,textarea.span3,.uneditable-input.span3{width:152px}input.span2,textarea.span2,.uneditable-input.span2{width:90px}input.span1,textarea.span1,.uneditable-input.span1{width:28px}}@media(max-width:767px){body{padding-right:20px;padding-left:20px}.navbar-fixed-top,.navbar-fixed-bottom,.navbar-static-top{margin-right:-20px;margin-left:-20px}.container-fluid{padding:0}.dl-horizontal dt{float:none;width:auto;clear:none;text-align:left}.dl-horizontal dd{margin-left:0}.container{width:auto}.row-fluid{width:100%}.row,.thumbnails{margin-left:0}.thumbnails>li{float:none;margin-left:0}[class*="span"],.uneditable-input[class*="span"],.row-fluid [class*="span"]{display:block;float:none;width:100%;margin-left:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.span12,.row-fluid .span12{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="offset"]:first-child{margin-left:0}.input-large,.input-xlarge,.input-xxlarge,input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.input-prepend input,.input-append input,.input-prepend input[class*="span"],.input-append input[class*="span"]{display:inline-block;width:auto}.controls-row [class*="span"]+[class*="span"]{margin-left:0}.modal{position:fixed;top:20px;right:20px;left:20px;width:auto;margin:0}.modal.fade{top:-100px}.modal.fade.in{top:20px}}@media(max-width:480px){.nav-collapse{-webkit-transform:translate3d(0,0,0)}.page-header h1 small{display:block;line-height:20px}input[type="checkbox"],input[type="radio"]{border:1px solid #ccc}.form-horizontal .control-label{float:none;width:auto;padding-top:0;text-align:left}.form-horizontal .controls{margin-left:0}.form-horizontal .control-list{padding-top:0}.form-horizontal .form-actions{padding-right:10px;padding-left:10px}.media .pull-left,.media .pull-right{display:block;float:none;margin-bottom:10px}.media-object{margin-right:0;margin-left:0}.modal{top:10px;right:10px;left:10px}.modal-header .close{padding:10px;margin:-10px}.carousel-caption{position:static}}@media(max-width:979px){body{padding-top:0}.navbar-fixed-top,.navbar-fixed-bottom{position:static}.navbar-fixed-top{margin-bottom:20px}.navbar-fixed-bottom{margin-top:20px}.navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding:5px}.navbar .container{width:auto;padding:0}.navbar .brand{padding-right:10px;padding-left:10px;margin:0 0 0 -5px}.nav-collapse{clear:both}.nav-collapse .nav{float:none;margin:0 0 10px}.nav-collapse .nav>li{float:none}.nav-collapse .nav>li>a{margin-bottom:2px}.nav-collapse .nav>.divider-vertical{display:none}.nav-collapse .nav .nav-header{color:#777;text-shadow:none}.nav-collapse .nav>li>a,.nav-collapse .dropdown-menu a{padding:9px 15px;font-weight:bold;color:#777;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.nav-collapse .btn{padding:4px 10px 4px;font-weight:normal;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.nav-collapse .dropdown-menu li+li a{margin-bottom:2px}.nav-collapse .nav>li>a:hover,.nav-collapse .dropdown-menu a:hover{background-color:#f2f2f2}.navbar-inverse .nav-collapse .nav>li>a,.navbar-inverse .nav-collapse .dropdown-menu a{color:#999}.navbar-inverse .nav-collapse .nav>li>a:hover,.navbar-inverse .nav-collapse .dropdown-menu a:hover{background-color:#111}.nav-collapse.in .btn-group{padding:0;margin-top:5px}.nav-collapse .dropdown-menu{position:static;top:auto;left:auto;display:none;float:none;max-width:none;padding:0;margin:0 15px;background-color:transparent;border:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.nav-collapse .open>.dropdown-menu{display:block}.nav-collapse .dropdown-menu:before,.nav-collapse .dropdown-menu:after{display:none}.nav-collapse .dropdown-menu .divider{display:none}.nav-collapse .nav>li>.dropdown-menu:before,.nav-collapse .nav>li>.dropdown-menu:after{display:none}.nav-collapse .navbar-form,.nav-collapse .navbar-search{float:none;padding:10px 15px;margin:10px 0;border-top:1px solid #f2f2f2;border-bottom:1px solid #f2f2f2;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1)}.navbar-inverse .nav-collapse .navbar-form,.navbar-inverse .nav-collapse .navbar-search{border-top-color:#111;border-bottom-color:#111}.navbar .nav-collapse .nav.pull-right{float:none;margin-left:0}.nav-collapse,.nav-collapse.collapse{height:0;overflow:hidden}.navbar .btn-navbar{display:block}.navbar-static .navbar-inner{padding-right:10px;padding-left:10px}}@media(min-width:980px){.nav-collapse.collapse{height:auto!important;overflow:visible!important}} 10 | -------------------------------------------------------------------------------- /static/opensurfaces/css/jquery-ui-1.9.1.custom.min.css: -------------------------------------------------------------------------------- 1 | /*! jQuery UI - v1.9.1 - 2012-10-30 2 | * http://jqueryui.com 3 | * Includes: jquery.ui.core.css, jquery.ui.resizable.css, jquery.ui.selectable.css, jquery.ui.accordion.css, jquery.ui.autocomplete.css, jquery.ui.button.css, jquery.ui.datepicker.css, jquery.ui.dialog.css, jquery.ui.menu.css, jquery.ui.progressbar.css, jquery.ui.slider.css, jquery.ui.spinner.css, jquery.ui.tabs.css, jquery.ui.tooltip.css 4 | * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=01_flat.png&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=02_glass.png&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=02_glass.png&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=02_glass.png&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px 5 | * Copyright (c) 2012 jQuery Foundation and other contributors Licensed MIT */.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{position:absolute!important;clip:rect(1px);clip:rect(1px,1px,1px,1px)}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{zoom:1}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:absolute;top:0;left:0;width:100%;height:100%}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin-top:2px;padding:.5em .5em .5em .7em;zoom:1}.ui-accordion .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-noicons{padding-left:.7em}.ui-accordion .ui-accordion-icons .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto;zoom:1}.ui-autocomplete{position:absolute;top:0;cursor:default}* html .ui-autocomplete{width:1px}.ui-button{display:inline-block;position:relative;padding:0;margin-right:.1em;cursor:pointer;text-align:center;zoom:1;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:1.4}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month-year{width:100%}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:49%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0em}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current{float:right}.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker-cover{position:absolute;z-index:-1;filter:mask();top:-4px;left:-4px;width:200px;height:200px}.ui-dialog{position:absolute;padding:.2em;width:300px;overflow:hidden}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 16px .1em 0}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:19px;margin:-10px 0 0 0;padding:1px;height:18px}.ui-dialog .ui-dialog-titlebar-close span{display:block;margin:1px}.ui-dialog .ui-dialog-titlebar-close:hover,.ui-dialog .ui-dialog-titlebar-close:focus{padding:0}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto;zoom:1}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin:.5em 0 0 0;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:14px;height:14px;right:3px;bottom:3px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-menu{list-style:none;padding:2px;margin:0;display:block;outline:none}.ui-menu .ui-menu{margin-top:-3px;position:absolute}.ui-menu .ui-menu-item{margin:0;padding:0;zoom:1;width:100%}.ui-menu .ui-menu-divider{margin:5px -2px 5px -2px;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-menu-item a{text-decoration:none;display:block;padding:2px .4em;line-height:1.5;zoom:1;font-weight:normal}.ui-menu .ui-menu-item a.ui-state-focus,.ui-menu .ui-menu-item a.ui-state-active{font-weight:normal;margin:-1px}.ui-menu .ui-state-disabled{font-weight:normal;margin:.4em 0 .2em;line-height:1.5}.ui-menu .ui-state-disabled a{cursor:default}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item a{position:relative;padding-left:2em}.ui-menu .ui-icon{position:absolute;top:.2em;left:.2em}.ui-menu .ui-menu-icon{position:static;float:right}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;padding:0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:22px}.ui-spinner-button{width:16px;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top:none;border-bottom:none;border-right:none}.ui-spinner .ui-icon{position:absolute;margin-top:-8px;top:50%;left:0}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-spinner .ui-icon-triangle-1-s{background-position:-65px -16px}.ui-tabs{position:relative;padding:.2em;zoom:1}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav li a{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active a,.ui-tabs .ui-tabs-nav li.ui-state-disabled a,.ui-tabs .ui-tabs-nav li.ui-tabs-loading a{cursor:text}.ui-tabs .ui-tabs-nav li a,.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active a{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px;-webkit-box-shadow:0 0 5px #aaa;box-shadow:0 0 5px #aaa}* html .ui-tooltip{background-image:none}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Verdana,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Verdana,Arial,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #aaa;background:#fff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x;color:#222}.ui-widget-content a{color:#222}.ui-widget-header{border:1px solid #aaa;background:#ccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x;color:#222;font-weight:bold}.ui-widget-header a{color:#222}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #d3d3d3;background:#e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#555}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#555;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #999;background:#dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited{color:#212121;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #aaa;background:#fff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#212121;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fcefa1;background:#fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x;color:#363636}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x;color:#cd0a0a}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#cd0a0a}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#cd0a0a}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px;background-image:url(images/ui-icons_222222_256x240.png)}.ui-widget-content .ui-icon{background-image:url(images/ui-icons_222222_256x240.png)}.ui-widget-header .ui-icon{background-image:url(images/ui-icons_222222_256x240.png)}.ui-state-default .ui-icon{background-image:url(images/ui-icons_888888_256x240.png)}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url(images/ui-icons_454545_256x240.png)}.ui-state-active .ui-icon{background-image:url(images/ui-icons_454545_256x240.png)}.ui-state-highlight .ui-icon{background-image:url(images/ui-icons_2e83ff_256x240.png)}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url(images/ui-icons_cd0a0a_256x240.png)}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;-khtml-border-top-right-radius:4px;border-top-right-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;-khtml-border-bottom-left-radius:4px;border-bottom-left-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-khtml-border-bottom-right-radius:4px;border-bottom-right-radius:4px}.ui-widget-overlay{background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30);-moz-border-radius:8px;-khtml-border-radius:8px;-webkit-border-radius:8px;border-radius:8px} -------------------------------------------------------------------------------- /static/opensurfaces/css/mturk.css: -------------------------------------------------------------------------------- 1 | /*body, html { padding: 0px; margin: 0px; [>overflow:hidden;<] }*/ 2 | iframe { border: 1px solid #969696; } 3 | #mt-top { 4 | position: fixed; 5 | top: 0px; 6 | left: 0px; 7 | z-index: 999; 8 | width: 100%; 9 | height: 20px; 10 | } 11 | #mt-top-padding { 12 | height: 60px; 13 | } 14 | #modal-instructions { 15 | width: 1000px; 16 | margin-left: -500px; 17 | } 18 | #mt-feedback { 19 | padding: 0px; 20 | margin: 0px; 21 | margin-left: 20px; 22 | } 23 | #mt-feedback > input { 24 | margin-bottom: 0px; 25 | margin-top: -2px; 26 | vertical-align: middle; 27 | } 28 | #mt-instructions { 29 | background-color: #EDA126; 30 | font-weight: bold; 31 | padding: 8px; 32 | margin: 0px; 33 | } 34 | #mt-instructions > .btn { 35 | margin: 0px; 36 | } 37 | #mt-instructions > span { 38 | padding: 0px; 39 | margin: 0px; 40 | margin-top: -5px; 41 | } 42 | #mt-num-shapes { 43 | text-decoration: underline; 44 | } 45 | .ui-controls-top { 46 | background-color:#EEE; 47 | padding: 5px; 48 | margin: 0px; 49 | } 50 | .mt-caption { 51 | text-align: center; 52 | } 53 | .item-selected { 54 | background-color: #fff1c5; border: 1px solid #ff7000; 55 | -webkit-box-shadow: 0px 0px 5px #ff7000; 56 | -moz-box-shadow: 0px 0px 5px #ff7000; 57 | box-shadow: 0px 0px 5px #ff7000; 58 | } 59 | -------------------------------------------------------------------------------- /static/opensurfaces/examples/bad-examples.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/opensurfaces/examples/bad-examples.jpg -------------------------------------------------------------------------------- /static/opensurfaces/examples/bench-example.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/opensurfaces/examples/bench-example.jpg -------------------------------------------------------------------------------- /static/opensurfaces/examples/cat-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/opensurfaces/examples/cat-1.jpg -------------------------------------------------------------------------------- /static/opensurfaces/examples/cat-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/opensurfaces/examples/cat-2.jpg -------------------------------------------------------------------------------- /static/opensurfaces/examples/cat-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/opensurfaces/examples/cat-3.jpg -------------------------------------------------------------------------------- /static/opensurfaces/examples/control-bar.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/opensurfaces/examples/control-bar.jpg -------------------------------------------------------------------------------- /static/opensurfaces/examples/disjointed-objects.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/opensurfaces/examples/disjointed-objects.jpg -------------------------------------------------------------------------------- /static/opensurfaces/examples/good-examples.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/opensurfaces/examples/good-examples.jpg -------------------------------------------------------------------------------- /static/opensurfaces/examples/zoom.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/opensurfaces/examples/zoom.jpg -------------------------------------------------------------------------------- /static/opensurfaces/img/adjust0.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/opensurfaces/img/adjust0.jpg -------------------------------------------------------------------------------- /static/opensurfaces/img/adjust1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/opensurfaces/img/adjust1.jpg -------------------------------------------------------------------------------- /static/opensurfaces/img/adjust2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/opensurfaces/img/adjust2.jpg -------------------------------------------------------------------------------- /static/opensurfaces/img/bad-close.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/opensurfaces/img/bad-close.jpg -------------------------------------------------------------------------------- /static/opensurfaces/img/bad-vertex.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/opensurfaces/img/bad-vertex.jpg -------------------------------------------------------------------------------- /static/opensurfaces/img/bad1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/opensurfaces/img/bad1.jpg -------------------------------------------------------------------------------- /static/opensurfaces/img/bad2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/opensurfaces/img/bad2.jpg -------------------------------------------------------------------------------- /static/opensurfaces/img/bad3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/opensurfaces/img/bad3.jpg -------------------------------------------------------------------------------- /static/opensurfaces/img/bad4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/opensurfaces/img/bad4.jpg -------------------------------------------------------------------------------- /static/opensurfaces/img/bad5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/opensurfaces/img/bad5.jpg -------------------------------------------------------------------------------- /static/opensurfaces/img/bad6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/opensurfaces/img/bad6.jpg -------------------------------------------------------------------------------- /static/opensurfaces/img/controls.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/opensurfaces/img/controls.jpg -------------------------------------------------------------------------------- /static/opensurfaces/img/draw1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/opensurfaces/img/draw1.jpg -------------------------------------------------------------------------------- /static/opensurfaces/img/draw5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/opensurfaces/img/draw5.jpg -------------------------------------------------------------------------------- /static/opensurfaces/img/draw6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/opensurfaces/img/draw6.jpg -------------------------------------------------------------------------------- /static/opensurfaces/img/glyphicons-halflings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/opensurfaces/img/glyphicons-halflings.png -------------------------------------------------------------------------------- /static/opensurfaces/img/good-close.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/opensurfaces/img/good-close.jpg -------------------------------------------------------------------------------- /static/opensurfaces/img/good11.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/opensurfaces/img/good11.jpg -------------------------------------------------------------------------------- /static/opensurfaces/img/good12.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/opensurfaces/img/good12.jpg -------------------------------------------------------------------------------- /static/opensurfaces/img/good4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/opensurfaces/img/good4.jpg -------------------------------------------------------------------------------- /static/opensurfaces/img/good5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/opensurfaces/img/good5.jpg -------------------------------------------------------------------------------- /static/opensurfaces/img/good9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/opensurfaces/img/good9.jpg -------------------------------------------------------------------------------- /static/opensurfaces/img/segment_material_bad1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/opensurfaces/img/segment_material_bad1.jpg -------------------------------------------------------------------------------- /static/opensurfaces/img/segment_material_bad2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/opensurfaces/img/segment_material_bad2.jpg -------------------------------------------------------------------------------- /static/opensurfaces/img/segment_material_bad3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/opensurfaces/img/segment_material_bad3.jpg -------------------------------------------------------------------------------- /static/opensurfaces/img/segment_material_bad4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/opensurfaces/img/segment_material_bad4.jpg -------------------------------------------------------------------------------- /static/opensurfaces/img/segment_material_good1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/opensurfaces/img/segment_material_good1.jpg -------------------------------------------------------------------------------- /static/opensurfaces/img/segment_material_good2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tylin/coco-ui/6f2b3e3dc6726ee7fc36c08a923a6daf89cd9df4/static/opensurfaces/img/segment_material_good2.jpg -------------------------------------------------------------------------------- /static/opensurfaces/js/coco_instance_segmentation.js: -------------------------------------------------------------------------------- 1 | //write functions here 2 | function Ctrler(){ 3 | this.N = 0; 4 | this.cur_anno_idx = 0; 5 | this.originX; 6 | this.originY; 7 | this.im = new Image(); 8 | // use cat icon for demo 9 | var cat_id = 17; 10 | this.im.src = STATIC_ROOT + '/images/categories/'+cat_id+'.png'; 11 | this.zoomLevel = 0; 12 | } 13 | // center icon 14 | Ctrler.prototype.centerIcon = function(){ 15 | var stage_ui = window.controller_ui.s.stage_ui; 16 | var imWid = stage_ui.size['width']; 17 | var imHei = stage_ui.size['height']; 18 | var bbox = window.controller_ui.s.stage_ui.bbox; 19 | var zoom = ctrler.getZoomFactor(); 20 | origin = ctrler.getOrigin(); 21 | // compute new origin 22 | stage_ui.translate_delta(Anno[0][0]* imWid- imWid/2/zoom - origin['x'], Anno[0][1]*imHei- imHei/2/zoom - origin['y']); 23 | setTimeout(function(){ctrler.renderHint();}, 300); 24 | } 25 | Ctrler.prototype.zoomAtCenter = function(delta){ 26 | var stage_ui = window.controller_ui.s.stage_ui; 27 | var imWid = stage_ui.size['width']; 28 | var imHei = stage_ui.size['height']; 29 | var p = new Object(); 30 | p['x'] = imWid/2 31 | p['y'] = imHei/2 32 | stage_ui.zoom_delta(delta,p); 33 | } 34 | //render hint 35 | Ctrler.prototype.renderHint = function(){ 36 | var stage_ui = window.controller_ui.s.stage_ui; 37 | var imWid = stage_ui.size['width']; 38 | var imHei = stage_ui.size['height']; 39 | var ctx = $('canvas')[0].getContext('2d'); 40 | var icon_size=20; 41 | 42 | for (i=0; i < ctrler.N; i++){ 43 | var x = Anno[i][0]; 44 | var y = Anno[i][1]; 45 | var left = x * imWid; 46 | var top = y * imHei; 47 | var container = $('#mt-container'); 48 | var offsetX = parseFloat(container.position().left); 49 | var offsetY = parseFloat(container.position().top ); 50 | // adjust with new zoom and origin 51 | var origin = ctrler.getOrigin(); 52 | var zoom = ctrler.getZoomFactor(); 53 | left = (left - origin['x'])*zoom; 54 | top = (top - origin['y'])*zoom; 55 | if (left >0 && left < Math.min($(window).width()-icon_size/2, imWid*zoom) && 56 | top > 0 && top < Math.min( $(window).width()-icon_size/2, imHei*zoom)){ 57 | for (k = 0; k < polys.length; k++){ 58 | ctx.beginPath(); 59 | vertex = polys[k]; 60 | ctx.moveTo((vertex[0]*imWid - origin['x'])*zoom, (vertex[1]*imHei-origin['y'])*zoom); 61 | for (j=2; j< vertex.length; j+=2){ 62 | ctx.lineTo((vertex[j]*imWid - origin['x'])*zoom, (vertex[j+1]*imHei-origin['y'])*zoom); 63 | } 64 | ctx.closePath(); 65 | ctx.fillStyle = 'rgba(0,0,255, 0.5)'; 66 | ctx.stroke(); 67 | ctx.fill(); 68 | } 69 | ctx.drawImage(ctrler.im, left-15, top-15, 30, 30); 70 | } 71 | } 72 | 73 | } 74 | Ctrler.prototype.getOrigin = function(){ 75 | return window.controller_ui.s.stage_ui.origin 76 | } 77 | Ctrler.prototype.getZoomFactor = function(){ 78 | return window.controller_ui.s.stage_ui.get_zoom_factor() 79 | } 80 | Ctrler.prototype.getPolys = function(){ 81 | // polygon points: 82 | return window.controller_ui.s.closed_polys 83 | } 84 | Ctrler.prototype.submitNoObj = function(){ 85 | if (!mt_submit_ready) { 86 | return; 87 | } 88 | window.show_modal_loading("Submitting...", 0); 89 | var data = $.extend(true, { 90 | screen_width: screen.width, 91 | screen_height: screen.height, 92 | time_load_ms: window.time_load_ms 93 | }, data); 94 | var ans = JSON.stringify(data); 95 | var duration = ($.now()-init_time)/1000; 96 | var resp = 97 | {'ans':ans, 98 | 'duration': duration, 99 | 'assignmentId':$('#assignmentId').val(), 100 | 'workerId': $('#workerId').val(), 101 | 'hitId': $('#hitId').val(), 102 | 'isObj': 0, 103 | }; 104 | $("input[name='duration']").val(duration) 105 | $("input[name='ans']").val(ans); 106 | $("input[name='isObj']").val(0); 107 | $('#mturk_form').submit(); 108 | } 109 | Ctrler.prototype.submit_form = function(data_callback) { 110 | var data, feedback; 111 | if (!mt_submit_ready) { 112 | return; 113 | } 114 | window.show_modal_loading("Submitting...", 0); 115 | data = data_callback(); 116 | if (window.ask_for_feedback) { 117 | feedback = typeof window.get_modal_feedback === "function" ? window.get_modal_feedback() : void 0; 118 | } 119 | if ((feedback != null) && !$.isEmptyObject(feedback)) { 120 | data.feedback = JSON.stringify(feedback); 121 | } 122 | console.log("submit data:"); 123 | console.log(data); 124 | var data = $.extend(true, { 125 | screen_width: screen.width, 126 | screen_height: screen.height, 127 | time_load_ms: window.time_load_ms 128 | }, data); 129 | var ans = JSON.stringify(data); 130 | var duration = ($.now()-init_time)/1000; 131 | var resp = 132 | {'ans':ans, 133 | 'duration': duration, 134 | 'assignmentId':$('#assignmentId').val(), 135 | 'workerId': $('#workerId').val(), 136 | 'hitId': $('#hitId').val(), 137 | 'isObj': 1, 138 | }; 139 | $("input[name='duration']").val(duration) 140 | $("input[name='ans']").val(ans); 141 | $("input[name='isObj']").val(1); 142 | $('#mturk_form').submit(); 143 | } 144 | Ctrler.prototype.addListener = function(){ 145 | $('#btn-zoom-in').bind('click', function(e){ 146 | ctrler.zoomAtCenter(600); 147 | ctrler.zoomLevel++; 148 | ctrler.renderHint(); 149 | return stop_event(e); 150 | }); 151 | $('#btn-zoom-out').bind('click', function(e){ 152 | ctrler.zoomAtCenter(-600); 153 | ctrler.renderHint(); 154 | return stop_event(e); 155 | }); 156 | $('#btn-move').bind('click', function(e){ 157 | ctrler.centerIcon(); 158 | return stop_event(e); 159 | //return stop_event(ev); 160 | }); 161 | $(document).keydown(function(ev){ 162 | if (ev.keyCode == 77 || ev.keyCode == 109){ 163 | $('#btn-move').trigger('click'); 164 | }else if(ev.keyCode == 73 || ev.keyCode == 105){ 165 | $('#btn-zoom-in').trigger('click'); 166 | }else if(ev.keyCode == 79 || ev.keyCode == 111){ 167 | $('#btn-zoom-out').trigger('click'); 168 | }else if(ev.keyCode == 37 || ev.keyCode == 38){ 169 | } 170 | } ); 171 | $('#btn-submit-noobj').bind('click', ctrler.submitNoObj); 172 | $(document).keypress( function(ev){ 173 | if (ev.keyCode == 37 || ev.keyCode == 38){ 174 | setTimeout(function(){ 175 | ctrler.renderHint();}, 100); 176 | } 177 | }); 178 | } 179 | // polygonal comparison 180 | function isPointInPoly(poly, pt){ 181 | nvert = poly.length 182 | var c = false; 183 | for(i = 0, j = nvert - 1; i < nvert; j = i++){ 184 | if ( (poly[i]['y'] > pt['y'] )!=(poly[j]['y']>pt['y']) && 185 | (pt['x'] < (poly[j]['x']-poly[i]['x']) * (pt['y']-poly[i]['y']) / (poly[j]['y']-poly[i]['y']) + poly[i]['x'] )){ 186 | c = !c; 187 | } 188 | } 189 | return c; 190 | } 191 | 192 | function accOfOverlappedPolygons(poly1, poly2){ 193 | var bbox = getbboxOfPolys(poly1, poly2); 194 | var intersection = 0; 195 | var union = 0; 196 | var poly1Pixel = 0; 197 | var poly2Pixel = 0; 198 | for (var i = bbox['x_min']; i < bbox['x_max']; i++){ 199 | for (var j = bbox['y_min']; j < bbox['y_max']; j++){ 200 | var pt = new Object(); 201 | pt = {'x':i, 'y':j}; 202 | var inPoly1 = isPointInPoly(poly1, pt); 203 | var inPoly2 = isPointInPoly(poly2, pt); 204 | if (inPoly1 || inPoly2){ 205 | union++; 206 | } 207 | if (inPoly1){ 208 | poly1Pixel++; 209 | } 210 | if(inPoly1 ^ inPoly2){ 211 | intersection++; 212 | } 213 | } 214 | } 215 | return intersection/poly1Pixel; 216 | } 217 | function getbboxOfPolys(poly1, poly2){ 218 | bbox1 =getbbox(poly1); 219 | bbox2 =getbbox(poly2); 220 | var bbox = new Object(); 221 | bbox['x_min'] = Math.min(bbox1['x_min'], bbox2['x_min']); 222 | bbox['y_min'] = Math.min(bbox1['y_min'], bbox2['y_min']); 223 | bbox['x_max'] = Math.max(bbox1['x_max'], bbox2['x_max']); 224 | bbox['y_max'] = Math.max(bbox1['y_max'], bbox2['y_max']); 225 | return bbox 226 | } 227 | function getbbox(poly){ 228 | var x_min=1000000, x_max=0, y_min=100000, y_max = 0; 229 | for (var i=0; i poly[i]['x']){x_min = poly[i]['x'];}; 231 | if (x_max < poly[i]['x']){x_max = poly[i]['x'];}; 232 | if (y_min > poly[i]['y']){y_min = poly[i]['y'];}; 233 | if (y_max < poly[i]['y']){y_max = poly[i]['y'];}; 234 | } 235 | return {'x_min':x_min, 'x_max':x_max, 'y_min':y_min, 'y_max':y_max,} 236 | } 237 | // windows 238 | var ctrler; 239 | $(window).load(function(){ 240 | // append a invisible annotation 241 | // set up things 242 | ctrler = new Ctrler(); 243 | ctrler.N = Anno.length; 244 | // redner things 245 | ctrler.renderHint(); 246 | // ctrler.centerIcon(); 247 | ctrler.addListener(); 248 | window.controller_ui.s.stage_ui.layer.afterDrawFunc = ctrler.renderHint 249 | }); 250 | -------------------------------------------------------------------------------- /tasks/coco_category_labeling.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 42 | 43 | 44 | 45 | 46 |
47 | 48 | 49 | 50 |
51 | 52 | 53 |
54 |
55 |
Instructions:
56 |
57 |
58 | Please 59 | drag and drop 60 | icons from the bottom panel to matching objects in the image. 61 | If an icon matches multiple objects you can drag the icon onto any of the objects. 62 | There are 11 63 | sets of objects to drag onto the image. 64 | Use the buttons or arrow keys 65 | to cycle through them. 66 | There are total of 67 | 68 | images to label. 69 |
70 | Please drag and drop ICONS to matching objects in the image. 71 |
72 |
73 | Here is an example of a labeled image:
74 | 75 |
76 |
77 | 78 | 83 |
84 |
85 |
86 | 87 | -------------------------------------------------------------------------------- /tasks/coco_crowd_labeling.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 23 | 99 | 100 | 101 |
102 | 103 | 104 | 105 | 106 | 107 | 108 |
109 | 110 | 124 | 125 | 126 | 127 | 128 |
129 |
130 | Draw all unlabeled cat(s) in the image. 131 |
  • Find and draw on all cat(s) that haven't been labeled. 132 |
  • No need to draw on previously labeled (green) regions. It's fine to overlap. 133 |
  • 134 |
    135 | 136 | 137 | 138 | 139 | 140 | 141 |
    142 | 143 | 145 | 147 | 148 | 149 | 150 | 152 | 154 | 155 | 156 | 157 |
    158 |
    159 | 160 |
    161 | 586 | 587 | 588 | -------------------------------------------------------------------------------- /tasks/coco_image_captioning.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 181 | 182 | 183 |
    184 |
    185 |
    186 | 187 | 188 | 189 |
    190 | 191 |
    192 |
    193 |
    194 |
    195 | 196 |
    197 |
    198 |
    199 | 202 | 203 |
    204 | 206 |
    207 |
    208 | 209 |
    210 |
    211 | 212 |
    213 |
    214 |
    215 |
    216 |
    217 | Instructions: 218 |
  • Describe all the important parts of the scene.
  • 219 |
  • Do not start the sentences with "There is".
  • 220 |
  • Do not describe unimportant details.
  • 221 |
  • Do not describe things that might have happened in the future or past.
  • 222 |
  • Do not describe what a person might say.
  • 223 |
  • Do not give people proper names.
  • 224 |
  • The sentence should contain at least 8 words.
  • 225 |
    226 |
    227 |
    228 | 229 | 230 | -------------------------------------------------------------------------------- /tasks/coco_instance_spotting.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 86 | 87 | 88 |
    89 | 90 | 91 | 92 | 93 |
    94 |
    95 |
    96 |
    97 |
    Instructions:
    98 | 99 |
    100 |
    101 |
    102 |
      103 |
    • Mark ALL cat(s) in the image. 104 |
    • You only need to mark up to 10 instances if multiple cat(s) exist in the image. 105 | It is possible for some images that this object does not appear.
    • 106 |
    • The blinking icon (Hint) shows where one instance of the object could be. 107 | The Hint is NOT ALWAYS correct. Go NEXT when no cat in the image. 108 |
    • Use key N to go to the next image and B to go back. 109 |
    • There are 3 images in this HIT. 110 |
    111 |
    112 |
    113 | 114 |
    115 |
    116 |
    117 |
    118 |
    119 |
    120 |
    121 |
    122 |
    123 |
    124 |
    125 |
    126 |
    127 |
    128 |
    129 | 130 | 131 | 132 |
    133 |
    134 | 140 |
    141 |
    142 | 143 | 144 | --------------------------------------------------------------------------------