diff --git a/labelstower/getter.py b/labelstower/getter.py index 4f170433dd833c5577cffad3af6b2a62ad1e6f09..fc1be2fd2754e08efab67a1006ea73df82861e45 100644 --- a/labelstower/getter.py +++ b/labelstower/getter.py @@ -14,28 +14,24 @@ def get_selected_elements(id_mandatory_labels: int, id_forbiden_labels: str, num EXEMPLE ------- >>> print(get_selected_elements("","",0)) # si aucun labels n'est interdit ou obligatoire - [{'id': 4, 'name': 'peugeot, 2000'}, {'id': 3, 'name': 'renault, 2000'}, {'id': 2, 'name': 'renault, bleu, 2000'}, {'id': 1, 'name': 'renault, rouge, 2000'}] + [{'id': 4, 'element_name': 'peugeot, 2000'}, {'id': 3, 'element_name': 'renault, 2000'}, {'id': 2, 'element_name': 'renault, bleu, 2000'}, {'id': 1, 'element_name': 'renault, rouge, 2000'}] >>> print(get_selected_elements("1,2","5,9",2)) # si la voiture doit-être bleu - [{'id': 4, 'name': 'peugeot, 2000'}] + [{'id': 4, 'element_name': 'peugeot, 2000'}] >>> print(get_selected_elements("5","",1)) - [{'id': 3, 'name': 'renault, 2000'}, {'id': 2, 'name': 'renault, bleu, 2000'}, {'id': 1, 'name': 'renault, rouge, 2000'}] + [{'id': 3, 'element_name': 'renault, 2000'}, {'id': 2, 'element_name': 'renault, bleu, 2000'}, {'id': 1, 'element_name': 'renault, rouge, 2000'}] >>> print(get_selected_elements("","5",0)) - [{'id': 4, 'name': 'peugeot, 2020'}] + [{'id': 4, 'element_name': 'peugeot, 2020'}] """ #query slightly vary if number_of_mandatory_labels > 0 or not if(number_of_mandatory_labels): query = ''' SELECT - ELEMENT.id - , element_name + ELEMENT.* FROM ELEMENT INNER JOIN ELEMENT_LABEL ON ELEMENT.id=ELEMENT_LABEL.id_element - INNER JOIN - LABEL - ON ELEMENT_LABEL.id_label=LABEL.id WHERE id_label IN ({}) AND @@ -46,10 +42,7 @@ def get_selected_elements(id_mandatory_labels: int, id_forbiden_labels: str, num ELEMENT INNER JOIN ELEMENT_LABEL - ON ELEMENT.id=ELEMENT_LABEL.id_element - INNER JOIN - LABEL - ON ELEMENT_LABEL.id_label=LABEL.id + ON ELEMENT.id=ELEMENT_LABEL.id_element WHERE id_label IN ({})) GROUP BY id_element @@ -59,30 +52,24 @@ def get_selected_elements(id_mandatory_labels: int, id_forbiden_labels: str, num else: query = ''' SELECT - DISTINCT ELEMENT.id - , element_name + ELEMENT.* FROM ELEMENT INNER JOIN ELEMENT_LABEL ON ELEMENT.id = ELEMENT_LABEL.id_element - INNER JOIN - label - ON ELEMENT_LABEL.id_label=label.id WHERE - element_name NOT IN ( + id_element NOT IN ( SELECT - element_name + id_element FROM ELEMENT INNER JOIN ELEMENT_LABEL - ON ELEMENT.id = ELEMENT_LABEL.id_element - INNER JOIN - label - ON ELEMENT_LABEL.id_label = label.id - WHERE id_label IN ({}) ) - ORDER BY element_name ASC + ON ELEMENT.id = ELEMENT_LABEL.id_element + WHERE id_label IN ({}) ) + GROUP BY ELEMENT.id + ORDER BY element_name ASC '''.format(id_forbiden_labels) selected_elements = send_query_to_db(query) @@ -97,7 +84,7 @@ def get_discriminating_labels(selected_elements: List[Dict[int, str]]) -> List[D EXEMPLE ------- >>> get_discriminating_labels([{"id":2,"name":"renault, bleu, 2000"}, {"id":1,"name":"renault, rouge, 2000"}]) - [{'id': 8, 'name': 'rouge'}, {'id': 9, 'name': 'bleu'}] + [{'id': 8, 'label_name': 'rouge'}, {'id': 9, 'label_name': 'bleu'}] >>> get_discriminating_labels([]) [] """ @@ -135,7 +122,7 @@ def get_high_discriminating_labels(discriminating_labels: List[Dict[int, str]]) EXEMPLE ------- >>> get_high_discriminating_labels([{"id":7, "name":"couleur"}, {"id":8, "name":"rouge"}, {"id":9, "name":"bleu"}]) - [{'id': 7, 'name': 'couleur'}] + [{'id': 7, 'label_name': 'couleur'}] """ id_discriminating_labels = get_ids(discriminating_labels) diff --git a/labelstower/request_db.py b/labelstower/request_db.py index 0af37906aca55352436a0c59a967e7559dd1b954..cc00871f1bda8856f7ee7c638b0f59e3a752accd 100644 --- a/labelstower/request_db.py +++ b/labelstower/request_db.py @@ -11,5 +11,8 @@ def send_query_to_db(query: str) -> List[Dict[int, str]] : stmt = bp.db.text(query) response = bp.db.session.execute(stmt) for row in response: - result.append({"id": row[0], "name": row[1]}) + record = {} + for index in range(len(row)): + record.update({str(row.keys()[index]):row[index]}) + result.append(record) return result \ No newline at end of file diff --git a/test/demo/__init__.py b/test/demo/__init__.py index 915afb47e5c5329edca7a69b4799a9ed85278e5e..1c31cb5efc9759079715dcf27ceadda292b1b34d 100644 --- a/test/demo/__init__.py +++ b/test/demo/__init__.py @@ -14,8 +14,7 @@ class CustomFlask(Flask): def create_app(): - text_component = {"project_name": "LabelsTower", - "Element_name": "Element(s)", + text_component = {"project_name": "LabelsTower", "Label": "Label(s)" } app = CustomFlask(__name__) diff --git a/test/demo/static/js/cookies.js b/test/demo/static/js/cookies.js index edbc7bc146db7d772a7df7e7a98e51a4ae57801a..2dc3d73ce08781e852ded61af948638d7ec68970 100644 --- a/test/demo/static/js/cookies.js +++ b/test/demo/static/js/cookies.js @@ -30,7 +30,7 @@ function labels_tab_to_str(labels) { var result = ""; var inter = [] for (var i = 0; labels[i]; i++) - inter.push([labels[i]['id'], labels[i]['name'], labels[i]['father_id']]); + inter.push([labels[i]['id'], labels[i]['label_name'], labels[i]['father_id']]); result = inter.join('|'); return (result); } @@ -46,9 +46,9 @@ function str_to_labels_tab(str) { for (var i = 0; split[i]; i++) { var inter = split[i].split(',') if (inter.length == 2) - result.push({'id': inter[0], 'name': inter[1]}); + result.push({'id': inter[0], 'label_name': inter[1]}); else - result.push({'id': inter[0], 'name': inter[1], 'father_id': inter[2]}); + result.push({'id': inter[0], 'label_name': inter[1], 'father_id': inter[2]}); } return (result); } diff --git a/test/demo/templates/browse.html b/test/demo/templates/browse.html index b3b8d215354d6cc54005fcb866b017a583fc840f..d31b00288e67b41bc6f345d1b5ab86819649b524 100644 --- a/test/demo/templates/browse.html +++ b/test/demo/templates/browse.html @@ -45,7 +45,7 @@ <!-- HIERARCHY.MANDATORY_LABELS --> <span v-for='(label, index) in mandatory_labels'> <img title="Deselect the elements bearing this label" class="hierarchy-icone_left" @click="rm_mandatory_label(index)" src="static/img/plus-encadre.png" onmouseover="this.src='static/img/plus-encadre-vert.png'" onmouseout="this.src='static/img/plus-encadre.png'"> - <span :title="label['name']"><b>{{ redim_labels(label['name']) }}</b></span> + <span :title="label['label_name']"><b>{{ redim_labels(label['label_name']) }}</b></span> <img class="hierarchy-icone_right" src="static/img/moins.png" style="visibility: hidden;"><br> <!-- MARQUEUR (elliot)--> </span> <!-- HIERARCHY.MANDATORY_LABELS --> @@ -53,21 +53,21 @@ <!-- HIERARCHY.FORBIDEN_LABELS --> <span v-if="forbiden_labels.length != 0" v-for='(label, index) in forbiden_labels'> <img class="hierarchy-icone_left" src="static/img/plus.png" style="visibility: hidden;"> - <span :title="label['name']"><b>{{ redim_labels(label['name']) }}</b></span> + <span :title="label['label_name']"><b>{{ redim_labels(label['label_name']) }}</b></span> <img title="Authorizes elements bearing this label" class="hierarchy-icone_right" @click="rm_forbiden_label(index)" src="static/img/moins-encadre.png" onmouseover="this.src='static/img/moins-encadre-rouge.png'" onmouseout="this.src='static/img/moins-encadre.png'"> <br> </span> <!-- HIERARCHY.FORBIDEN_LABELS --> - + <!-- HIERARCHY.HIGH_DISCRIMATING_LABELS --> <div v-if="loading == 1"> <div id="hierarchy-separator" v-if="(mandatory_labels.length > 0 || forbiden_labels.length > 0) && high_discriminating_labels.length > 0"> <img src="static/img/monSeparateur.png"/> </div> <transition-group name="new_labels"> - <span v-for='(label, index) in high_discriminating_labels' v-bind:key="label['name']"> + <span v-for='(label, index) in high_discriminating_labels' v-bind:key="label['label_name']"> <img title="Selects elements with this label" class="hierarchy-icone_left" @click="add_mandatory_label(index, 'new')" src="static/img/plus.png" onmouseover="this.src='static/img/plus-vert.png'" onmouseout="this.src='static/img/plus.png'"> - <span :title="label['name']"><b>{{ redim_labels(label['name']) }}</b></span> + <span :title="label['label_name']"><b>{{ redim_labels(label['label_name']) }}</b></span> <img title="Prohibits elements with this label" class="hierarchy-icone_right" @click="add_forbiden_label(index, 'new')" src="static/img/moins.png" onmouseover="this.src='static/img/moins-rouge.png'" onmouseout="this.src='static/img/moins.png'"> <br> </span> @@ -77,14 +77,14 @@ </div> </div> - + </div> <div class="col-md-9" id="result" v-cloak> <div class="panel panel-primary"> <div class="panel-heading title"> <span id="result-title"> - <span >{{ selected_elements.length }} [[ txt['Element_name'] ]]</span> + <span >{{ selected_elements.length }}{{ selected_elements.length > 1 ? " Elements":" Element"}} </span> </span> </div> @@ -92,7 +92,7 @@ <ul v-if="loading == 1" class="list-group" v-bind:style="'max-height: '+((width_window > 991) ? (height_window - 151 - 70) : (450))+'px;'"> <li class="list-group-item" v-for='element in selected_elements' v-bind:key="element['id']"> <span> - <b class="single_result" v-bind:title="(redim_element(element['name']).indexOf('...') == -1) ? '' : element['name']">{{ redim_element(element['name']) }}</b> + <b class="single_result" v-bind:title="(redim_element(element['element_name']).indexOf('...') == -1) ? '' : element['element_name']">{{ redim_element(element['element_name']) }}</b> </span> </li> </ul> @@ -101,9 +101,8 @@ </div> </div> - - </div> + </div> </body> <script src="static/js/search_new_elements.js"></script> @@ -175,9 +174,7 @@ update_loading(0); hierarchy.mandatory_labels.push(hierarchy.high_discriminating_labels[index]); hierarchy.high_discriminating_labels.splice(index, 1); - console.log("av") update_elements_and_labels(); - console.log("ap") save_session(); update_loading(1); }, diff --git a/test/instance/pip_init_db.sh b/test/instance/pip_init_db.sh index f1e4f505c74d03e6aed27da08f499ddc659eb789..86e689ff078d839462b6edc0eb41f3b3578d6a90 100755 --- a/test/instance/pip_init_db.sh +++ b/test/instance/pip_init_db.sh @@ -7,4 +7,4 @@ cd `dirname ${SCRIPT_NAME}` cd ../.. dist/install.sh -test/instance/init_voiture_db.sh \ No newline at end of file +test/instance/init_voiture_db.sh # mais où se trouve ou qui génère ce script ? \ No newline at end of file