Hi Thierry,
The recordSource of my grid is indexed with a candidate key.
The grid does not appear and the screen controls do not respond.
If I don't index, or if I change the recordSource, it works.
I checked, the cursor and its index are valid.
Here is the detected error (no FiC message):
Thanks in advance
Hi Vincent,
Please try to click en savoir plus
, it may display the exact line where the error occurs (missing ) after argument list
)
If not, please post the server response from the network
tab (réseau
in your language).
TIA
This Code ?
no, we need the script that is a parameter to eval()
.
please post the server response.
And the server response:
<?xml version='1.0' encoding='UTF-8' standalone='yes'?><IntuiCat><_script>(function(){ var oLink = jQuery('link[type="text/css"][href^="/snoTest/awDefault_"]'), href = oLink.attr('href'); !href.endsWith("/snoTest/awDefault_5TE15LN76.css") && oLink.replaceWith('<link href="/snoTest/awDefault_5TE15LN76.css" type="text/css", rel="stylesheet">'); })();</_script>
<HTMLDialog>
<DivID>carnetadr_scx</DivID>
<DivTitle>Carnet d'adresses - FoxInCloud App</DivTitle>
<DivHTML>
<div class="modal fade" id="modal-carnetadr_scx" tabindex="-1" data-backdrop="true" role="dialog" aria-hidden="true" aria-labelledby="carnetadr_scx_caption">
<div class="Window_carnetadr_scx modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title" id="carnetadr_scx_caption">Carnet d'adresses - FoxInCloud App</h4>
</div>
<div class="modal-body">
<!-- Généré le 16/07/2020 19:24:34 en 0,37 sec. par FAS version 2.31.0-beta.3 du 25/06/2020 11:31:10 /-->
<div id="carnetadr_scx" class="carnetadr_scx form bootstrap" style="position:relative;">
<span id="carnetadr_scx-waitpic" class="fa fa-2x fa-spinner fa-pulse" aria-hidden="true" style="position:absolute;display:none;"></span>
<div class="row row-compteur">
<div class="col col-listeauto col-xs-12 col-sm-8 text-left">
<div class="form-group">
<div class="input-group">
<input type="text" id="carnetadr_scx-listeauto" class="form-control awBS-IGmember typeahead carnetadr_scx-listeauto" tabindex="1" placeholder="Rechercher un contact" data-provide="typeahead" autocomplete="off" value="">
<span class="input-group-addon"><div id="carnetadr_scx-listeauto-search" class="carnetadr_scx-listeauto-search awBS-IGmember" title="Search" disabled=""><span class="fa fa-search" aria-hidden="true"></span></div></span>
</div>
</div>
</div>
<div class="col col-compteur col-xs-12 col-sm-4 text-right">
<div class="form-group">
<label id="carnetadr_scx-compteur" style="float: right;margin-top: 3px;padding-bottom: 4px;visibility: visible;">Inscrits: <span class="label label-default" style="padding: 5px 10px 5px 45px;margin-left: 5px;font-size: 85%";>0 </span></label>
</div>
</div>
</div>
<div class="form-group">
<div id="carnetadr_scx-grid" class="carnetadr_scx-grid needsclick bootstrap" title="Double clic pour valider votre choix">
</div>
</div>
<div class="form-group awBSgrp-retirer p003">
<div class="btn-group-sm btn-group awBSgrp-retirer p003">
<button type="button" id="carnetadr_scx-retirer" class="carnetadr_scx-retirer doo-retirer btn-default btn" title="Retirer l&#39;option sélectionnée" tabindex="4" accesskey="R"><span class="fa fa-minus-circle text-danger" aria-hidden="true"></span> Retirer</button>
<button type="button" id="carnetadr_scx-modifier" class="carnetadr_scx-modifier doo-modifier btn-default btn" tabindex="5" accesskey="M"><span class="fa fa-edit text-primary fa-lg" aria-hidden="true"></span> Modifier</button>
<button type="button" id="carnetadr_scx-ajouter" class="carnetadr_scx-ajouter doo-ajouter btn-default btn" title="Ajouter une ligne" tabindex="6" accesskey="A"><span class="fa fa-plus-circle" aria-hidden="true"></span> Ajouter</button>
</div>
</div>
<div class="row row-fermer">
<div class="col col-bsdropdown1 col-xs-12 col-sm-5 text-left">
<div class="dropup" style="float: left;" id="carnetadr_scx-bsdropdown1">
<button class="btn btn-info dropdown-toggle" type="button" data-toggle="dropdown" title="">Copier les données <span class="caret"></span></button>
<ul class="dropdown-menu">
<li value="1"><a href="javascript:void(0)">Copier le contact en cours dans le presse-papiers</a></li><li role="separator" class="divider"></li><li value="3"><a href="javascript:void(0)">Export du carnet d&#39;adresses</a></li>
</ul>
</div>
</div>
<div class="col col-fermer col-xs-12 col-sm-7 text-right">
<button type="button" id="carnetadr_scx-fermer" class="carnetadr_scx-fermer btn-primary btn" title="Fermer le travail en cours" tabindex="7" accesskey="F"><span class="fa fa-window-close text-" aria-hidden="true"></span> Fermer</button>
</div>
</div>
</div>
<!--/ Généré le 16/07/2020 19:24:34 en 0,37 sec. par FAS version 2.31.0-beta.3 du 25/06/2020 11:31:10 -->
</div>
</div>
</div>
</div>
</DivHTML>
<DivWidth>420px</DivWidth>
<DivHeight>318px</DivHeight>
<DivModal>true</DivModal>
<ObjAddr></ObjAddr>
<MethAddr></MethAddr>
<Theme>mac_os_x</Theme>
<Center>true</Center>
<Buttons>[false,false,false]</Buttons>
<QueryUnload></QueryUnload>
<Resizable>true</Resizable>
<MinMaxWH>-1,-1,-1,-1</MinMaxWH>
<Bootstrap>b</Bootstrap>
</HTMLDialog>
<Result><v>true</v><t>boolean</t></Result>
<script>jQuery('#').replaceWith('<label id="" style="float: right;margin-top: 3px;padding-bottom: 4px;visibility: visible;">Inscrits: <span class="label label-default" style="padding: 5px 10px 5px 45px;margin-left: 5px;font-size: 85%";>0 </span></label>');
jQuery('#_txt').attr('placeholder', 'Rechercher un contact');
jQuery('#carnetadr_scx-compteur').replaceWith('<label id="carnetadr_scx-compteur" style="float: right;margin-top: 3px;padding-bottom: 4px;visibility: visible;">Inscrits: <span class="label label-default" style="padding: 5px 10px 5px 45px;margin-left: 5px;font-size: 85%";>64 </span></label>');
jQuery('#carnetadr_scx-listeauto_txt').attr('placeholder', 'Rechercher un contact');
jQuery('#carnetadr_scx-bsdropdown1').replaceWith('<div class="dropup" style="float: left;" id="carnetadr_scx-bsdropdown1">\n<button class="btn btn-info dropdown-toggle" type="button" data-toggle="dropdown" title="">Copier les données <span class="caret"></span></button>\n<ul class="dropdown-menu">\n<li value="1"><a href="javascript:void(0)">Copier le contact en cours dans le presse-papiers</a></li><li role="separator" class="divider"></li><li value="3"><a href="javascript:void(0)">Export du carnet d&#39;adresses</a></li>\n</ul>\n</div>');
jQuery('#carnetadr_scx-bsdropdown1 li').click(function(event){FoxInCloud.EventRequest('DOMEvent', event, this, jQuery(this).val(), "carnetadr_scx-bsdropdown1");});
/* Généré le 16/07/2020 19:24:34 en 0,37 sec. par FAS version 2.31.0-beta.3 du 25/06/2020 11:31:10 -- */
jQuery('#carnetadr_scx-waitpic').prop('effectShow', false).prop('effectHide', false);
jQuery('#carnetadr_scx-listeauto').typeahead({ minLength: 3 , highlight: true , items: 'all' , source: function(query, process){return jQuery.get('AJAXautoComp.sno?value=' + query + '&ObjAddr=carnetadr_scx-listeauto', process)} , sorter: function(items){!items.length && this.$menu.html(""); return items;} , afterSelect: function(item){jQuery('#carnetadr_scx-listeauto').select()} });
jQuery('#carnetadr_scx-listeauto').prop('effectShow', false).prop('effectHide', false);
jQuery('#carnetadr_scx-compteur').prop('effectShow', false).prop('effectHide', false);
(function(){
var dStart = new Date();
var grd = document.getElementById('carnetadr_scx-grid');
if (grd){
jQuery.extend(grd, {oGrid: new AW.UI.Grid, oTable: new AW.XML.Table});
var oGrid = grd.oGrid, oTable = grd.oTable, oTempl;
oGrid.defineCellProperty('CurrentControl', null);
oGrid.defineControlProperty('DataUpdate', false);
oGrid.setTabIndex("3");
oGrid.setSelectorWidth(10);
oGrid.getSelectorTemplate().setStyle('font-weight','bold');
oGrid.setRowCount(64);
oGrid.setCellEditable(true);
oGrid.setCurrentColumn(-1);
oGrid.setCellSelected(false, oGrid.getCurrentColumn(), oGrid.getCurrentRow());
oGrid.setSelectionMode('single-row');
oGrid.setSelectedRows([-1]);
oGrid.setSelectedRows([parseInt(oGrid.getCurrentRow(), 10)]);
oGrid.clearColumnModel();
oGrid.setColumnCount(3);
oGrid.setStyle('font-family','Arial');
oGrid.setStyle('font-size','9pt');
oGrid.setHeaderHeight(19);
oGrid.setSize(undefined, 214);
jQuery(grd)[FoxInCloud.posDimEffect ? "animate" : "css"]({"left": "10px"});
oGrid.setSelectorVisible(true);
oGrid.defineControlProperty('Statusbartext');
oGrid.setControlStatusbartext('');
jQuery(grd)[FoxInCloud.posDimEffect ? "animate" : "css"]({"top": "38px"});
oGrid.setSize(399,undefined);
oGrid.setColumnIndices([0,1,2]);
oGrid.setCellEditable(true, 0);
oGrid.setColumnResizable(true, 0);
oGrid.setColumnWidth(292+1, 0);
oGrid.setCellEditable(true, 1);
oGrid.setColumnResizable(true, 1);
oGrid.setColumnWidth(135+1, 1);
oGrid.setCellEditable(true, 2);
oGrid.setColumnResizable(true, 2);
oGrid.setColumnWidth(116+1, 2);
/* Column 0 'Column1' */
oTempl = oGrid.getHeaderTemplate(0);
oTempl.setStyle('text-align','left');
oGrid.setCellTemplate('',0,undefined);
oGrid.setCellCurrentControl('text1', 0);
oTempl = oGrid.getCellTemplate(0);
oTempl.setStyle('text-align','left');
/* Column 1 'Column2' */
oTempl = oGrid.getHeaderTemplate(1);
oTempl.setStyle('text-align','left');
oGrid.setCellTemplate('',1,undefined);
oGrid.setCellCurrentControl('text1', 1);
oTempl = oGrid.getCellTemplate(1);
oTempl.setStyle('text-align','left');
/* Column 2 'Column3' */
oTempl = oGrid.getHeaderTemplate(2);
oTempl.setStyle('text-align','left');
oGrid.setCellTemplate('',2,undefined);
oGrid.setCellCurrentControl('text1', 2);
oTempl = oGrid.getCellTemplate(2);
oTempl.setStyle('text-align','left');
oGrid.setHeaderText('Nom', 0);
oGrid.setCellEditable(true, 0);
oGrid.setHeaderText('Prénom', 1);
oGrid.setCellEditable(true, 1);
oGrid.setHeaderText('Commune', 2);
oGrid.setCellEditable(true, 2);
var scrollTop = oGrid.getScrollTop();
oGrid.setCellModel(oTable);
oGrid.setVirtualMode(false);
oTable.setURL("Temp/carnetadr_scx-grid.xml");
oTable.setAsync(false);
oTable.request();
scrollTop && oGrid.setScrollTop(scrollTop);
oGrid.setSortDirection();
oGrid.setSortDirection('ascending', 0);
oGrid.refresh();
oGrid.setCellTooltip('Double clic pour valider votre choix', 0, undefined);
oGrid.setCellTooltip('Double clic pour valider votre choix', 1, undefined);
oGrid.setCellTooltip('Double clic pour valider votre choix', 2, undefined);
oGrid.defineRowProperty('tuRow', null);
var srp = oGrid.setRowProperty.bind(oGrid);
srp('tuRow','ABC IMMODIAG M. HUMEAU Pierre - SAINT NAZAIRE (44600) _5SS0WE8QM',0);srp('tuRow','ABC IMMODIAG Max SIBERIL - NANTES (44000) _5SS0WE8QN',1);srp('tuRow','ABRISAIN Mme DEBRAY Patricia - ST ANDRE DES EAUX (44117) _5SS0WE8PO',2);srp('tuRow','AC ENVIRONNEMENT - SCHILTIGHEIM (67300) _5SS0WE8QX',3);srp('tuRow','ACTIV\' EXPERTISE Grégoire WILLEFERT - GETIGNE (44190) _5SS0WE8QQ',4);srp('tuRow','AGENCE ARC ATLANTIQUE Laurent BOUCHER - BAIN DE BRETAGNE (35470) _5SS0WE8Q4',5);srp('tuRow','AGENCE DIAGNOSTICS IMMOBILIERS PACA - SALERNES (83690) _5SS0WE8QV',6);srp('tuRow','AGENCE DU GRAND LARGE GUEZOU Thomas - LA BAULE-ESCOUBLAC (44500) _5SS0WE8PY',7);srp('tuRow','AGENDA DIAG 44 Hervé Fravalo - ST BREVIN LES PINS (44250) _5SS0WE8QD',8);srp('tuRow','AGENDA Jonathan MENEGON - LA BAULE ESCOUBLAC (44500) _5SS0WE8PN',9);srp('tuRow','AGENTYS SAINT MANDE Olivier HAMOU - ST MANDE (94160) _5SS0WE8PX',10);srp('tuRow','AGEXIA Trochet - LE RAINCY (93340) _5SS0WE8Q7',11);srp('tuRow','AGIPORT SYNDIC ET GESTION - PORNICHET (44380) _5SS0WE8QT',12);srp('tuRow','AJP - AGENCE DU DAUPHIN Madame Nathalie DERVAL - PORNICHET (44380) _5SS0WE8Q5',13);srp('tuRow','APROGIM - ST NAZAIRE (44600) _5SS0WE8PH',14);srp('tuRow','BASILE RICHARD IMMOBILIER Basile RICHARD - CUGAND (85610) _5SS0WE8QP',15);srp('tuRow','BODIN PLAGE IMMOBILIER PIAU Emmanuelle - ST BREVIN LES PINS (44250) _5SS0WE8PZ',16);srp('tuRow','CABINET BOSSARD BOSSARD - REZE (44400) _5SS0WE8QL',17);srp('tuRow','CABINET C.H.V. hugues Vartanian - ST MAUR DES FOSSES (94100) _5SS0WE8Q0',18);srp('tuRow','CABINET D'EXPERTISES BAPTISTE SOUILLÉ - MARMANDE (47200) _5SS0WE8QW',19);srp('tuRow','CABINET IMMOBILIER MACE Christophe - LA BAULE ESCOUBLAC (44500) _5SS0WE8QK',20);srp('tuRow','CABINET JACQUES ARAV - PARIS 16 (75016) _5SS0WE8R0',21);srp('tuRow','CABINET LOCGEST Patrick MABILAIS - LA BAULE ESCOUBLAC (44500) _5SS0WE8Q2',22);srp('tuRow','CABINET LOISY EXPERTISES BATIMENT Patrick LOISY - PORNICHET (44380) _5SS0WE8PE',23);srp('tuRow','CABINET MACE - LA BAULE ESCOUBLAC (44503) _5SS0WE8PF',24);srp('tuRow','CABINET PAQUEREAU - LA BAULE ESCOUBLAC (44505) _5SS0WE8PG',25);srp('tuRow','CAPPEX DIAGNOSTICS IMMOBILIERS PENOS Isabelle - LE POULIGUEN (44510) _5SS0WE8PR',26);srp('tuRow','CHANTAL RIGHI AGENT MANDATAIRE OPTIMHOME RIGHI Chantal - SAINT-NAZAIRE (44600) _5SS0WE8PT',27);srp('tuRow','COCOONING - VALLET (44330) _5SS0WE8QS',28);srp('tuRow','COTE DEMEURES - GHI Emmanuel BERANGER - LA BAULE ESCOUBLAC (44500) _5SS0WE8PQ',29);srp('tuRow','DETEX - ST NAZAIRE (44600) _5SS0WE8PV',30);srp('tuRow','DETEX GALLARD Valérie - ST NAZAIRE (44600) _5SS0WE8QH',31);srp('tuRow','DIAG\' AGENCES - STE LUCE SUR LOIRE (44980) _5SS0WE8QE',32);srp('tuRow','DIAGNOSTIQUES ENVIRONNEMENT PREVENTION CZYZ Thomas - NEUILLY PLAISANCE (93360) _5SS0WE8Q8',33);srp('tuRow','DIAGONAL/KAPECO PERRARD - GUERANDE (44350) _5SS0WE8Q6',34);srp('tuRow','DRUARD Alexandre - LE TAMPON (97430) _5SS0WE8QG',35);srp('tuRow','DUGAST EXPERTISE Philippe DUGAST - STE LUCE SUR LOIRE (44980) _5SS0WE8R6',36);srp('tuRow','EMCV ACTIV' EXPERTISE SUCY EN BRIE - LIMEIL BREVANNES (94450) _5SS0WE8QU',37);srp('tuRow','ESTU\'AIRES Mr RONGIER LAURENT - COUERON (44220) _5SS0WE8QR',38);srp('tuRow','EXABITAT Mr Adrien MENANT - LA BAULE ESCOUBLAC (44500) _5SS0WE8QO',39);srp('tuRow','FONCIA - LA BAULE ESCOUBLAC CEDEX (44504) _5SS0WE8PJ',40);srp('tuRow','FONCIA GOBELINS Ranaivojaona Kanto - PARIS CEDEX 14 (75682) _5SS0WE8R5',41);srp('tuRow','HEYDIAG - PARIS 08 (75008) _5SS0WE8QA',42);srp('tuRow','HORIZON CONTROLE ET FORMATION - AUBERVILLIERS (93305) _5SS0WE8QZ',43);srp('tuRow','IDF - IMMO DIAG FRANCE Francisco JIMENEZ - ST MAUR DES FOSSES (94100) _5SS0WE8Q1',44);srp('tuRow','L\'OEIL DE L\'EXPERT FERNANDES Francisco - 95003 (95003) _5SS0WE8PS',45);srp('tuRow','LEPAGE DIDIER - LAVAL (53000) _5SS0WE8R2',46);srp('tuRow','NORD SUD IMMO (DR HOUSE IMMO) ERBETTA Patricia - SAINTE ANNE (97180) _5SS0WE8R1',47);srp('tuRow','NORD SUD IMMO (DR HOUSE IMMO) LOUVARD Jacky - CHANGE (53810) _5SS0WE8R3',48);srp('tuRow','NORD SUD IMMO (DR HOUSE IMMO) MARGERIT Pascal - AUREC SUR LOIRE (43110) _5SS0WE8R4',49);srp('tuRow','OUEST EXPERTISE - REZE CEDEX (44405) _5SS0WE8PW',50);srp('tuRow','OUEST EXPERTISE Fabien MELOTTE - REZE CEDEX (44405) _5SS0WE8Q3',51);srp('tuRow','OUEST EXPERTISE Thomas Arnoud - ANDREZEL (44400) _5SS0WE8QJ',52);srp('tuRow','OUEST UNION JOUAN Sébastien - LA BAULE ESCOUBLAC (44500) _5SS0WE8PM',53);srp('tuRow','OUEST UNION Sébastien JOUAN - LA BAULE ESCOUBLAC (44500) _5SS0WE8PI',54);srp('tuRow','PANURGE Stéphanie - ST PIERRE (97410) _5SS0WE8QF',55);srp('tuRow','PAQUEREAU - LA BAULE ESCOUBLAC (44500) _5SS0WE8PP',56);srp('tuRow','PROMOTHEUS Arnaud EMOND - CRÉTEIL (94000) _5SS0WE8Q9',57);srp('tuRow','QUADRAL IMMOBILIER - PARIS 10 (75010) _5SS0WE8QY',58);srp('tuRow','SARL ATLANTIQUE CIRRUS Raphaêl BOSSY - LE TEMPLE DE BRETAGNE (44360) _5SS0WE8PU',59);srp('tuRow','THIERRY IMMOBILIER - NANTES (44010) _5SS0WE8QC',60);srp('tuRow','TOUIKI Frédéric - MERY-SUR-OISE (95540) _5SS0WE8QB',61);srp('tuRow','VILLA MYRTIL Chantal GUILLOUARD - VERSAILLES (78000) _5SS0WE8PL',62);srp('tuRow','WINDAL ET KLEIN - LE POULIGUEN (44510) _5SS0WE8QI',63);
srp = null;
oGrid.defineRowProperty('Clicked', false);
if (FoxInCloud.gridRowChangeDelay > 0){
oGrid.onRowMouseDown = function(event, row){this.setRowClicked(true, row)};
oGrid.onRowMouseUp = function(event, row){this.setRowClicked(false, row)};
}
oGrid.onCurrentRowChanged = function(row){
var value = this.getRowProperty('tuRow', row);
if (!(this.disabled || value === null)){
var rowClicked = this.getRowClicked(row)
, grd = document.getElementById('carnetadr_scx-grid');
if (FoxInCloud.gridRowChangeDelay > 0 && (!rowClicked || FoxInCloud.gridRowChangeDelayClicked > 0)){
this.nTOrow && window.clearTimeout(this.nTOrow);
this.nTOrow = window.setTimeout(jQuery.proxy(FoxInCloud.gridMethod, FoxInCloud), FoxInCloud[rowClicked ? 'gridRowChangeDelayClicked' : 'gridRowChangeDelay'] * 1000, 'wAfterRowChange', grd, value);
}
else FoxInCloud.gridMethod('wAfterRowChange', grd, value);
}
};
oGrid.onControlDoubleClicked = function(event){
if(event.cancelBubble) return;
event = jQuery.event.fix(event);
if(event.which === 1){
return FoxInCloud.gridEvent(event, 'carnetadr_scx-grid');
}
};
oGrid.onCellValidating = function(text, col, row){
var result, dynCC, template, fmt, value, done;
col = parseInt(col, 10);
if (typeof row === 'undefined') {
template = this.getCellTemplate(col);
dynCC = this.getCellCurrentControl(col);
}
else {
row = parseInt(row, 10);
dynCC = this.getCellCurrentControl(col,row);
template = this.getCellTemplate(col,row);
}
if (template.disabled) return;
if (template.readOnly) return;
if (typeof text === 'string'){
fmt = this.getCellFormat(col, row);
value = fmt ? fmt.textToValue(text) : text;
}
switch (col){
case 0: if(dynCC === 'text1'){result = FoxInCloud.gridEditEvent('blur', 'carnetadr_scx-grid', value, 'carnetadr_scx-grid-column1-text1', true); done=!result; break;}
case 1: if(dynCC === 'text1'){result = FoxInCloud.gridEditEvent('blur', 'carnetadr_scx-grid', value, 'carnetadr_scx-grid-column2-text1', true); done=!result; break;}
case 2: if(dynCC === 'text1'){result = FoxInCloud.gridEditEvent('blur', 'carnetadr_scx-grid', value, 'carnetadr_scx-grid-column3-text1', true); done=!result; break;}
}
if (done){
var cols = this.getColumnCount(), rows = this.getRowCount(), done = false, row_ = row;
col++;
while (row < rows && !done) {
if (this.getCellEditable(col,row)) {
this.setSelectedColumns([col]);
this.setCurrentColumn(col);
if (row !== row_){
this.setSelectedRows([row]);
this.setCurrentRow(row);
}
done = true;
}
else {
col++;
if (col >= cols){
col = 0;
row++;
}
}
}
}
return result;
};
oGrid.onKeyBackspace = function(event){
event = jQuery.event.fix(event);
event.stopPropagation();
event.preventDefault();
};
oGrid.setSelectedRows([-1]);
oGrid.setSelectedRows([0]);
oGrid.disabled = true;
oGrid.setCurrentRow(0);
oGrid.disabled = false;
jQuery(grd).html(oGrid.toString());
}
dStart = new Date() - dStart;
window.console && console.log && console.log("'carnetadr_scx-grid' grid script took 84 ms. to generate on the server, " + dStart + " ms to execute on the browser, total " + (dStart + 84) + " ms.\n" + 'awhtml.fxp!Ogrid.gethtml_grd_aw_cscript_() - state changes > JavaScript: 31 ms.\nawhtml.fxp!Ogrid.gethtml_grd_aw_cxml_() - current state XML 38 ms.\nawhtml.fxp!Ogrid.gethtml_grd_aw_cxml_rs_calias() - .RecordSource "CCarnetadr" > RecordSet using Select-SQL: 15 ms.\nawhtml.fxp!Ogrid.gethtml_grd_aw_cxml_rs_calias() - Current record located using unique key expression "PADR(ALLTRIM(CCarnetadr.NOM)+" "+ALLTRIM(CCarnetadr.PRENOM)+" - "+ALLTRIM(CCarnetadr.COMMUNE)+" ("+CCarnetadr.CODEPOSTAL+")"+" "+CCarnetadr.IDUNIQUE,120)" = "ABC IMMODIAG M. HUMEAU Pierre - SAINT NAZAIRE (44600) _5SS0WE8QM ": 0 ms.\nawhtml.fxp!Ogrid.gethtml_grd_aw_cxml_rs() - \'CCarnetadr\' RecordSet > XML (64 rows): 23 ms.\nawhtml.fxp!Ogrid.gethtml_grd_aw_cscript_oxmlchanges() - state changes: 15 ms.\nawhtml.fxp!Ogrid.gethtml_grd_aw_cscript_rs() - data changes > JS: 0 ms.\nawhtml.fxp!Ogrid.gethtml_grd_aw_cscript_events() - event handlers: 0 ms.');
})();
jQuery('#carnetadr_scx-retirer').prop('effectShow', false).prop('effectHide', false);
jQuery('#carnetadr_scx-modifier').prop('effectShow', false).prop('effectHide', false);
jQuery('#carnetadr_scx-ajouter').prop('effectShow', false).prop('effectHide', false);
jQuery('#carnetadr_scx-bsdropdown1').prop('effectShow', false).prop('effectHide', false);
jQuery('#carnetadr_scx-fermer').prop('effectShow', false).prop('effectHide', false);
FoxInCloud.formActivateObserve('carnetadr_scx', null, null);
jQuery('#carnetadr_scx').prop('wuValue ', null);
FoxInCloud.XBrowserFix('carnetadr_scx');
jQuery('#carnetadr_scx').prop('effectShow', true).prop('effectHide', true);
jQuery('#carnetadr_scx-listeauto').on('change', jQuery.proxy(FoxInCloud.DOMEvent, FoxInCloud, undefined, false));
jQuery('#carnetadr_scx-retirer').on('click', jQuery.proxy(FoxInCloud.LeftClick, FoxInCloud, undefined, false));
jQuery('#carnetadr_scx-modifier').on('click', jQuery.proxy(FoxInCloud.LeftClick, FoxInCloud, undefined, false));
jQuery('#carnetadr_scx-ajouter').on('click', jQuery.proxy(FoxInCloud.LeftClick, FoxInCloud, undefined, false));
jQuery('#carnetadr_scx-fermer').on('click', jQuery.proxy(FoxInCloud.LeftClick, FoxInCloud, undefined, false));
var inputs = jQuery("#carnetadr_scx *[tabindex]:not(div):not(.aw-grid-control, .aw-control-focus)")
.filter(function(){return this.tabIndex > 0;})
.sort(function(a,b){return a.tabIndex - b.tabIndex;});
inputs.each(function(idx, elt){
jQuery(elt).on('keydown', function(e){
var $this = jQuery(this), keyCode = e.which;
if (!(keyCode === 9 || keyCode === 13 && $this.is('input, select') && !($this.is('input.typeahead') && $this.data('typeahead')['shown']))) return;
if (keyCode === 9) e.preventDefault();
FoxInCloud.lastKey = keyCode;
var inputTo
, inputTos = e.shiftKey ? jQuery(inputs.slice(0).get().reverse()) : inputs.slice(0)
, index = inputTos.index(this)
;
!inputTo && inputTos.each(function(idx, inpTo){
inpTo = jQuery(inpTo);
if (true
&& idx > index
&& inpTo.prop('tabIndex') > 0
&& !inpTo.prop('disabled')
&& inpTo.is(':visible')
){
inputTo = inpTo;
return false;
}
});
!inputTo && inputTos.each(function(idx, inpTo){
inpTo = jQuery(inpTo);
if (true
&& idx < index
&& inpTo.prop('tabIndex') > 0
&& !inpTo.prop('disabled')
&& inpTo.is(':visible')
) {
inputTo = inpTo;
return false;
}
});
var nextFocus = function(){
if (FoxInCloud.lDialog){
if (FoxInCloud.$Dialog) FoxInCloud.$Dialog.data('oSrce', inputTo);
}
else inputTo
&& !FoxInCloud.lDialog
&& !inputTo.is(':focus')
&& inputTo.focus()
&& (!(keyCode === 13 && inputTo.is('textarea, button')) || e.preventDefault() || true)
&& true
&& window.console && console.log && console.log('tabbing to #' + inputTo.attr('id'))
;
};
$this.blur();
if (FoxInCloud.lRequest) FoxInCloud.AjaxComplete__ = nextFocus;
else nextFocus();
});
});
window.setTimeout(function(){jQuery('#carnetadr_scx-listeauto').focus();}, 500);
/* -- Généré le 16/07/2020 19:24:34 en 0,37 sec. par FAS version 2.31.0-beta.3 du 25/06/2020 11:31:10 */;
jQuery('#carnetadr_scx').addClass('container-fluid');</script>
<UserID>5TE0KMCLZ</UserID>
<reqID>8144_5TE15LMNO-001</reqID>
<ServerVersion>2.31.0-beta.3</ServerVersion>
<ServerTimeStamp>{^2020-06-25 11:31:10 AM}</ServerTimeStamp>
<AppTime>0.987</AppTime>
<ServerTime>2.172800</ServerTime></IntuiCat>
Hi Vincent,
Your Grid is innocent 😉.
Error occurs on this instruction, because of an unescaped '
in "carnet d'adresses"
(even the markdown interpreter can sniff it, see the white color at the end of the instruction):
jQuery('#carnetadr_scx-bsdropdown1').replaceWith('<div class="dropup" style="float: left;" id="carnetadr_scx-bsdropdown1">\n<button class="btn btn-info dropdown-toggle" type="button" data-toggle="dropdown" title="">Copier les données <span class="caret"></span></button>\n<ul class="dropdown-menu">\n<li value="1"><a href="javascript:void(0)">Copier le contact en cours dans le presse-papiers</a></li><li role="separator" class="divider"></li><li value="3"><a href="javascript:void(0)">Export du carnet d'adresses</a></li>\n</ul>\n</div>');
I suggest you always build the complex arguments to JS functions using the cLitteralJS()
FoxInCloud function; eg. in .wcHTMLgen()
:
lcHTML = [<div class="dropup" style=" …]
this.wcHTML = textmerge([jQuery('#<<this.wcID>>').replaceWith(<<cLitteralJS(m.lcHTML)>>)])
Not that innocent ... 😉
I removed the control whose wording included a '
(thanks for the reminder, always useful) but the result is unchanged
OK got it
In
srp('tuRow','CABINET D'EXPERTISES BAPTISTE SOUILLÉ - MARMANDE (47200) _5SS0WE8QW',19);
,
the quote '
is not escaped while it's properly escaped in
srp('tuRow','ACTIV\' EXPERTISE Grégoire WILLEFERT - GETIGNE (44190) _5SS0WE8QQ',4);
several lines above.
Reason for that is: the source data is
CABINET D’EXPERTISES BAPTISTE SOUILLÉ
,
with a ’
instead of a plain '
So far awHTML.prg
, cLitteralJS('CABINET D’EXPERTISES BAPTISTE SOUILLÉ') == 'CABINET D’EXPERTISES BAPTISTE SOUILLÉ'
For some reason outside of FoxInCloud, ’
is turned into a plain '
when building the XML and/or transmitting it to the client browser.
Please try this fix:
modify command abTxt.prg
&& change:
+ ['];
+ strtran(strtran(strtran(strtran(strtran(iif(lTrue(m.tlTrim), trim(m.tuValue), m.tuValue);
, '\', '\\');
, ['], [\']); && {fr} see GA_STRINGPARSE_CLASS.MaskStrings(), parameter JSstring
, CRLF, '\n');
, CR, '\n');
, LF, '\n');
+ ['];
&& by
+ ['];
+ strtran(strtran(strtran(strtran(chrtran(strtran(iif(lTrue(m.tlTrim), trim(m.tuValue), m.tuValue);
, '\', '\\');
, [’], [']);
, ['], [\']); && {fr} see GA_STRINGPARSE_CLASS.MaskStrings(), parameter JSstring
, CRLF, '\n');
, CR, '\n');
, LF, '\n');
+ ['];
Bravo and thank you !
Mac dirt ...
why not ?
, [’], [\']);
Update!
We should preserve the apostrophe ’
otherwise the client will send a key that the server won't be able to find…
Please revert the change in abTxt.prg
and try this fix instead:
modify command awServer.prg
&& replace this procedure with the following code:
PROCEDURE XMLeltAdd && {fr} Ajoute un élément au document XML
&& {fr} PUBLIC car peut être appelée par awProcess
LPARAMETERS ;
tcElt; && {fr} Nom de l'élément à ajouter
, tuContent; && {fr} Contenu de l'élément
, tlPrepend && [.F.] {fr} Ajouter au début
LOCAL llResult, llScript, lcType, lcContent
* {fr} Si le noeud est défini et n'est pas déjà dans le document XML
IF Vartype(m.tcElt) == 'C';
AND !Empty(m.tcElt);
and varSet(@m.tcElt, Alltrim(m.tcElt));
and !([<] + m.tcElt + [>] $ m.this.cXML)
llScript = Alltrim(m.tcElt, '_') == 'script'
lcType = Vartype(m.tuContent)
lcContent = '';
+ [<] + m.tcElt + [>];
+ cEscaped_XML(ICase(; && {fr} cUTF8() à la toute fin
m.lcType == 'C',;
Rtrim(Iif(m.llScript, Strtran(m.tuContent, Chr(146), '’'), m.tuContent)),; && 2020-07-17 thn -- {en} https://support.west-wind.com/Thread5TD05C1YE.wwt
m.lcType == 'N',;
cLitteralNum(Transform(m.tuContent), .T.),;
Transform(m.tuContent);
));
+ [</] + m.tcElt + [>]
* {fr} Ajouter aux données
this.cXML = Iif(lTrue(m.tlPrepend);
, m.lcContent + CRLF + m.this.cXML;
, m.this.cXML + CRLF + m.lcContent;
)
llResult = .T.
ENDIF
return m.llResult
endproc
Done, but it's doesn't work
Markdown parser has replaced the entity in the sample code
please read Strtran(m.tuContent, Chr(146), '’')
as Strtran(m.tuContent, Chr(146), '’')
Same bad result
Can you post the server response using this change?
Yes, of course. Here it is:
<?xml version='1.0' encoding='UTF-8' standalone='yes'?><IntuiCat><_script>(function(){ var oLink = jQuery('link[type="text/css"][href^="/snoTest/awDefault_"]'), href = oLink.attr('href'); !href.endsWith("/snoTest/awDefault_5TG0PJAH9.css") && oLink.replaceWith('<link href="/snoTest/awDefault_5TG0PJAH9.css" type="text/css", rel="stylesheet">'); })();</_script>
<HTMLDialog>
<DivID>carnetadr_scx</DivID>
<DivTitle>Carnet d'adresses - FoxInCloud App</DivTitle>
<DivHTML>
<div class="modal fade" id="modal-carnetadr_scx" tabindex="-1" data-backdrop="true" role="dialog" aria-hidden="true" aria-labelledby="carnetadr_scx_caption">
<div class="Window_carnetadr_scx modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title" id="carnetadr_scx_caption">Carnet d'adresses - FoxInCloud App</h4>
</div>
<div class="modal-body">
<!-- Généré le 18/07/2020 11:54:50 en 0,43 sec. par FAS version 2.31.0-beta.3 du 25/06/2020 11:31:10 /-->
<div id="carnetadr_scx" class="carnetadr_scx form bootstrap" style="position:relative;">
<span id="carnetadr_scx-waitpic" class="fa fa-2x fa-spinner fa-pulse" aria-hidden="true" style="position:absolute;display:none;"></span>
<div class="row row-compteur">
<div class="col col-listeauto col-xs-12 col-sm-8 text-left">
<div class="form-group">
<div class="input-group">
<input type="text" id="carnetadr_scx-listeauto" class="form-control awBS-IGmember typeahead carnetadr_scx-listeauto" tabindex="1" placeholder="Rechercher un contact" data-provide="typeahead" autocomplete="off" value="">
<span class="input-group-addon"><div id="carnetadr_scx-listeauto-search" class="carnetadr_scx-listeauto-search awBS-IGmember" title="Search" disabled=""><span class="fa fa-search" aria-hidden="true"></span></div></span>
</div>
</div>
</div>
<div class="col col-compteur col-xs-12 col-sm-4 text-right">
<div class="form-group">
<label id="carnetadr_scx-compteur" style="float: right;margin-top: 3px;padding-bottom: 4px;visibility: visible;">Inscrits: <span class="label label-default" style="padding: 5px 10px 5px 45px;margin-left: 5px;font-size: 85%";>0 </span></label>
</div>
</div>
</div>
<div class="form-group">
<div id="carnetadr_scx-grid" class="carnetadr_scx-grid needsclick bootstrap" title="Double clic pour valider votre choix">
</div>
</div>
<div class="form-group awBSgrp-retirer p003">
<div class="btn-group-sm btn-group awBSgrp-retirer p003">
<button type="button" id="carnetadr_scx-retirer" class="carnetadr_scx-retirer doo-retirer btn-default btn" title="Retirer l&#39;option sélectionnée" tabindex="4" accesskey="R"><span class="fa fa-minus-circle text-danger" aria-hidden="true"></span> Retirer</button>
<button type="button" id="carnetadr_scx-modifier" class="carnetadr_scx-modifier doo-modifier btn-default btn" tabindex="5" accesskey="M"><span class="fa fa-edit text-primary fa-lg" aria-hidden="true"></span> Modifier</button>
<button type="button" id="carnetadr_scx-ajouter" class="carnetadr_scx-ajouter doo-ajouter btn-default btn" title="Ajouter une ligne" tabindex="6" accesskey="A"><span class="fa fa-plus-circle" aria-hidden="true"></span> Ajouter</button>
</div>
</div>
<div class="row row-fermer">
<div class="col col-bsdropdown1 col-xs-12 col-sm-5 text-left">
<div class="dropup" style="float: left;" id="carnetadr_scx-bsdropdown1">
<button class="btn btn-info dropdown-toggle" type="button" data-toggle="dropdown" title="">Copier les données <span class="caret"></span></button>
<ul class="dropdown-menu">
<li value="1"><a href="javascript:void(0)">Copier le contact en cours dans le presse-papiers</a></li><li role="separator" class="divider"></li><li value="3"><a href="javascript:void(0)">Export du carnet d&#39;adresses</a></li>
</ul>
</div>
</div>
<div class="col col-fermer col-xs-12 col-sm-7 text-right">
<button type="button" id="carnetadr_scx-fermer" class="carnetadr_scx-fermer btn-primary btn" title="Fermer le travail en cours" tabindex="7" accesskey="F"><span class="fa fa-window-close text-" aria-hidden="true"></span> Fermer</button>
</div>
</div>
</div>
<!--/ Généré le 18/07/2020 11:54:50 en 0,43 sec. par FAS version 2.31.0-beta.3 du 25/06/2020 11:31:10 -->
</div>
</div>
</div>
</div>
</DivHTML>
<DivWidth>420px</DivWidth>
<DivHeight>318px</DivHeight>
<DivModal>true</DivModal>
<ObjAddr></ObjAddr>
<MethAddr></MethAddr>
<Theme>mac_os_x</Theme>
<Center>true</Center>
<Buttons>[false,false,false]</Buttons>
<QueryUnload></QueryUnload>
<Resizable>true</Resizable>
<MinMaxWH>-1,-1,-1,-1</MinMaxWH>
<Bootstrap>b</Bootstrap>
</HTMLDialog>
<Result><v>true</v><t>boolean</t></Result>
<script>jQuery('#').replaceWith('<label id="" style="float: right;margin-top: 3px;padding-bottom: 4px;visibility: visible;">Inscrits: <span class="label label-default" style="padding: 5px 10px 5px 45px;margin-left: 5px;font-size: 85%";>0 </span></label>');
jQuery('#_txt').attr('placeholder', 'Rechercher un contact');
jQuery('#carnetadr_scx-compteur').replaceWith('<label id="carnetadr_scx-compteur" style="float: right;margin-top: 3px;padding-bottom: 4px;visibility: visible;">Inscrits: <span class="label label-default" style="padding: 5px 10px 5px 45px;margin-left: 5px;font-size: 85%";>64 </span></label>');
jQuery('#carnetadr_scx-listeauto_txt').attr('placeholder', 'Rechercher un contact');
jQuery('#carnetadr_scx-bsdropdown1').replaceWith('<div class="dropup" style="float: left;" id="carnetadr_scx-bsdropdown1">\n<button class="btn btn-info dropdown-toggle" type="button" data-toggle="dropdown" title="">Copier les données <span class="caret"></span></button>\n<ul class="dropdown-menu">\n<li value="1"><a href="javascript:void(0)">Copier le contact en cours dans le presse-papiers</a></li><li role="separator" class="divider"></li><li value="3"><a href="javascript:void(0)">Export du carnet d&#39;adresses</a></li>\n</ul>\n</div>');
jQuery('#carnetadr_scx-bsdropdown1 li').click(function(event){FoxInCloud.EventRequest('DOMEvent', event, this, jQuery(this).val(), "carnetadr_scx-bsdropdown1");});
/* Généré le 18/07/2020 11:54:50 en 0,43 sec. par FAS version 2.31.0-beta.3 du 25/06/2020 11:31:10 -- */
jQuery('#carnetadr_scx-waitpic').prop('effectShow', false).prop('effectHide', false);
jQuery('#carnetadr_scx-listeauto').typeahead({ minLength: 3 , highlight: true , items: 'all' , source: function(query, process){return jQuery.get('AJAXautoComp.sno?value=' + query + '&ObjAddr=carnetadr_scx-listeauto', process)} , sorter: function(items){!items.length && this.$menu.html(""); return items;} , afterSelect: function(item){jQuery('#carnetadr_scx-listeauto').select()} });
jQuery('#carnetadr_scx-listeauto').prop('effectShow', false).prop('effectHide', false);
jQuery('#carnetadr_scx-compteur').prop('effectShow', false).prop('effectHide', false);
(function(){
var dStart = new Date();
var grd = document.getElementById('carnetadr_scx-grid');
if (grd){
jQuery.extend(grd, {oGrid: new AW.UI.Grid, oTable: new AW.XML.Table});
var oGrid = grd.oGrid, oTable = grd.oTable, oTempl;
oGrid.defineCellProperty('CurrentControl', null);
oGrid.defineControlProperty('DataUpdate', false);
oGrid.setTabIndex("3");
oGrid.setSelectorWidth(10);
oGrid.getSelectorTemplate().setStyle('font-weight','bold');
oGrid.setRowCount(64);
oGrid.setCellEditable(true);
oGrid.setCurrentColumn(-1);
oGrid.setCellSelected(false, oGrid.getCurrentColumn(), oGrid.getCurrentRow());
oGrid.setSelectionMode('single-row');
oGrid.setSelectedRows([-1]);
oGrid.setSelectedRows([parseInt(oGrid.getCurrentRow(), 10)]);
oGrid.clearColumnModel();
oGrid.setColumnCount(3);
oGrid.setStyle('font-family','Arial');
oGrid.setStyle('font-size','9pt');
oGrid.setHeaderHeight(19);
oGrid.setSize(undefined, 214);
jQuery(grd)[FoxInCloud.posDimEffect ? "animate" : "css"]({"left": "10px"});
oGrid.setSelectorVisible(true);
oGrid.defineControlProperty('Statusbartext');
oGrid.setControlStatusbartext('');
jQuery(grd)[FoxInCloud.posDimEffect ? "animate" : "css"]({"top": "38px"});
oGrid.setSize(399,undefined);
oGrid.setColumnIndices([0,1,2]);
oGrid.setCellEditable(true, 0);
oGrid.setColumnResizable(true, 0);
oGrid.setColumnWidth(292+1, 0);
oGrid.setCellEditable(true, 1);
oGrid.setColumnResizable(true, 1);
oGrid.setColumnWidth(135+1, 1);
oGrid.setCellEditable(true, 2);
oGrid.setColumnResizable(true, 2);
oGrid.setColumnWidth(116+1, 2);
/* Column 0 'Column1' */
oTempl = oGrid.getHeaderTemplate(0);
oTempl.setStyle('text-align','left');
oGrid.setCellTemplate('',0,undefined);
oGrid.setCellCurrentControl('text1', 0);
oTempl = oGrid.getCellTemplate(0);
oTempl.setStyle('text-align','left');
/* Column 1 'Column2' */
oTempl = oGrid.getHeaderTemplate(1);
oTempl.setStyle('text-align','left');
oGrid.setCellTemplate('',1,undefined);
oGrid.setCellCurrentControl('text1', 1);
oTempl = oGrid.getCellTemplate(1);
oTempl.setStyle('text-align','left');
/* Column 2 'Column3' */
oTempl = oGrid.getHeaderTemplate(2);
oTempl.setStyle('text-align','left');
oGrid.setCellTemplate('',2,undefined);
oGrid.setCellCurrentControl('text1', 2);
oTempl = oGrid.getCellTemplate(2);
oTempl.setStyle('text-align','left');
oGrid.setHeaderText('Nom', 0);
oGrid.setCellEditable(true, 0);
oGrid.setHeaderText('Prénom', 1);
oGrid.setCellEditable(true, 1);
oGrid.setHeaderText('Commune', 2);
oGrid.setCellEditable(true, 2);
var scrollTop = oGrid.getScrollTop();
oGrid.setCellModel(oTable);
oGrid.setVirtualMode(false);
oTable.setURL("Temp/carnetadr_scx-grid.xml");
oTable.setAsync(false);
oTable.request();
scrollTop && oGrid.setScrollTop(scrollTop);
oGrid.setSortDirection();
oGrid.setSortDirection('ascending', 0);
oGrid.refresh();
oGrid.setCellTooltip('Double clic pour valider votre choix', 0, undefined);
oGrid.setCellTooltip('Double clic pour valider votre choix', 1, undefined);
oGrid.setCellTooltip('Double clic pour valider votre choix', 2, undefined);
oGrid.defineRowProperty('tuRow', null);
var srp = oGrid.setRowProperty.bind(oGrid);
srp('tuRow','ABC IMMODIAG M. HUMEAU Pierre - SAINT NAZAIRE (44600) _5SS0WE8QM',0);srp('tuRow','ABC IMMODIAG Max SIBERIL - NANTES (44000) _5SS0WE8QN',1);srp('tuRow','ABRISAIN Mme DEBRAY Patricia - ST ANDRE DES EAUX (44117) _5SS0WE8PO',2);srp('tuRow','AC ENVIRONNEMENT - SCHILTIGHEIM (67300) _5SS0WE8QX',3);srp('tuRow','ACTIV\ EXPERTISE Grégoire WILLEFERT - GETIGNE (44190) _5SS0WE8QQ',4);srp('tuRow','AGENCE ARC ATLANTIQUE Laurent BOUCHER - BAIN DE BRETAGNE (35470) _5SS0WE8Q4',5);srp('tuRow','AGENCE DIAGNOSTICS IMMOBILIERS PACA - SALERNES (83690) _5SS0WE8QV',6);srp('tuRow','AGENCE DU GRAND LARGE GUEZOU Thomas - LA BAULE-ESCOUBLAC (44500) _5SS0WE8PY',7);srp('tuRow','AGENDA DIAG 44 Hervé Fravalo - ST BREVIN LES PINS (44250) _5SS0WE8QD',8);srp('tuRow','AGENDA Jonathan MENEGON - LA BAULE ESCOUBLAC (44500) _5SS0WE8PN',9);srp('tuRow','AGENTYS SAINT MANDE Olivier HAMOU - ST MANDE (94160) _5SS0WE8PX',10);srp('tuRow','AGEXIA Trochet - LE RAINCY (93340) _5SS0WE8Q7',11);srp('tuRow','AGIPORT SYNDIC ET GESTION - PORNICHET (44380) _5SS0WE8QT',12);srp('tuRow','AJP - AGENCE DU DAUPHIN Madame Nathalie DERVAL - PORNICHET (44380) _5SS0WE8Q5',13);srp('tuRow','APROGIM - ST NAZAIRE (44600) _5SS0WE8PH',14);srp('tuRow','BASILE RICHARD IMMOBILIER Basile RICHARD - CUGAND (85610) _5SS0WE8QP',15);srp('tuRow','BODIN PLAGE IMMOBILIER PIAU Emmanuelle - ST BREVIN LES PINS (44250) _5SS0WE8PZ',16);srp('tuRow','CABINET BOSSARD BOSSARD - REZE (44400) _5SS0WE8QL',17);srp('tuRow','CABINET C.H.V. hugues Vartanian - ST MAUR DES FOSSES (94100) _5SS0WE8Q0',18);srp('tuRow','CABINET D'EXPERTISES BAPTISTE SOUILLÉ - MARMANDE (47200) _5SS0WE8QW',19);srp('tuRow','CABINET IMMOBILIER MACE Christophe - LA BAULE ESCOUBLAC (44500) _5SS0WE8QK',20);srp('tuRow','CABINET JACQUES ARAV - PARIS 16 (75016) _5SS0WE8R0',21);srp('tuRow','CABINET LOCGEST Patrick MABILAIS - LA BAULE ESCOUBLAC (44500) _5SS0WE8Q2',22);srp('tuRow','CABINET LOISY EXPERTISES BATIMENT Patrick LOISY - PORNICHET (44380) _5SS0WE8PE',23);srp('tuRow','CABINET MACE - LA BAULE ESCOUBLAC (44503) _5SS0WE8PF',24);srp('tuRow','CABINET PAQUEREAU - LA BAULE ESCOUBLAC (44505) _5SS0WE8PG',25);srp('tuRow','CAPPEX DIAGNOSTICS IMMOBILIERS PENOS Isabelle - LE POULIGUEN (44510) _5SS0WE8PR',26);srp('tuRow','CHANTAL RIGHI AGENT MANDATAIRE OPTIMHOME RIGHI Chantal - SAINT-NAZAIRE (44600) _5SS0WE8PT',27);srp('tuRow','COCOONING - VALLET (44330) _5SS0WE8QS',28);srp('tuRow','COTE DEMEURES - GHI Emmanuel BERANGER - LA BAULE ESCOUBLAC (44500) _5SS0WE8PQ',29);srp('tuRow','DETEX - ST NAZAIRE (44600) _5SS0WE8PV',30);srp('tuRow','DETEX GALLARD Valérie - ST NAZAIRE (44600) _5SS0WE8QH',31);srp('tuRow','DIAG\ AGENCES - STE LUCE SUR LOIRE (44980) _5SS0WE8QE',32);srp('tuRow','DIAGNOSTIQUES ENVIRONNEMENT PREVENTION CZYZ Thomas - NEUILLY PLAISANCE (93360) _5SS0WE8Q8',33);srp('tuRow','DIAGONAL/KAPECO PERRARD - GUERANDE (44350) _5SS0WE8Q6',34);srp('tuRow','DRUARD Alexandre - LE TAMPON (97430) _5SS0WE8QG',35);srp('tuRow','DUGAST EXPERTISE Philippe DUGAST - STE LUCE SUR LOIRE (44980) _5SS0WE8R6',36);srp('tuRow','EMCV ACTIV' EXPERTISE SUCY EN BRIE - LIMEIL BREVANNES (94450) _5SS0WE8QU',37);srp('tuRow','ESTU\AIRES Mr RONGIER LAURENT - COUERON (44220) _5SS0WE8QR',38);srp('tuRow','EXABITAT Mr Adrien MENANT - LA BAULE ESCOUBLAC (44500) _5SS0WE8QO',39);srp('tuRow','FONCIA - LA BAULE ESCOUBLAC CEDEX (44504) _5SS0WE8PJ',40);srp('tuRow','FONCIA GOBELINS Ranaivojaona Kanto - PARIS CEDEX 14 (75682) _5SS0WE8R5',41);srp('tuRow','HEYDIAG - PARIS 08 (75008) _5SS0WE8QA',42);srp('tuRow','HORIZON CONTROLE ET FORMATION - AUBERVILLIERS (93305) _5SS0WE8QZ',43);srp('tuRow','IDF - IMMO DIAG FRANCE Francisco JIMENEZ - ST MAUR DES FOSSES (94100) _5SS0WE8Q1',44);srp('tuRow','L\OEIL DE L\EXPERT FERNANDES Francisco - 95003 (95003) _5SS0WE8PS',45);srp('tuRow','LEPAGE DIDIER - LAVAL (53000) _5SS0WE8R2',46);srp('tuRow','NORD SUD IMMO (DR HOUSE IMMO) ERBETTA Patricia - SAINTE ANNE (97180) _5SS0WE8R1',47);srp('tuRow','NORD SUD IMMO (DR HOUSE IMMO) LOUVARD Jacky - CHANGE (53810) _5SS0WE8R3',48);srp('tuRow','NORD SUD IMMO (DR HOUSE IMMO) MARGERIT Pascal - AUREC SUR LOIRE (43110) _5SS0WE8R4',49);srp('tuRow','OUEST EXPERTISE - REZE CEDEX (44405) _5SS0WE8PW',50);srp('tuRow','OUEST EXPERTISE Fabien MELOTTE - REZE CEDEX (44405) _5SS0WE8Q3',51);srp('tuRow','OUEST EXPERTISE Thomas Arnoud - ANDREZEL (44400) _5SS0WE8QJ',52);srp('tuRow','OUEST UNION JOUAN Sébastien - LA BAULE ESCOUBLAC (44500) _5SS0WE8PM',53);srp('tuRow','OUEST UNION Sébastien JOUAN - LA BAULE ESCOUBLAC (44500) _5SS0WE8PI',54);srp('tuRow','PANURGE Stéphanie - ST PIERRE (97410) _5SS0WE8QF',55);srp('tuRow','PAQUEREAU - LA BAULE ESCOUBLAC (44500) _5SS0WE8PP',56);srp('tuRow','PROMOTHEUS Arnaud EMOND - CRÉTEIL (94000) _5SS0WE8Q9',57);srp('tuRow','QUADRAL IMMOBILIER - PARIS 10 (75010) _5SS0WE8QY',58);srp('tuRow','SARL ATLANTIQUE CIRRUS Raphaêl BOSSY - LE TEMPLE DE BRETAGNE (44360) _5SS0WE8PU',59);srp('tuRow','THIERRY IMMOBILIER - NANTES (44010) _5SS0WE8QC',60);srp('tuRow','TOUIKI Frédéric - MERY-SUR-OISE (95540) _5SS0WE8QB',61);srp('tuRow','VILLA MYRTIL Chantal GUILLOUARD - VERSAILLES (78000) _5SS0WE8PL',62);srp('tuRow','WINDAL ET KLEIN - LE POULIGUEN (44510) _5SS0WE8QI',63);
srp = null;
oGrid.defineRowProperty('Clicked', false);
if (FoxInCloud.gridRowChangeDelay > 0){
oGrid.onRowMouseDown = function(event, row){this.setRowClicked(true, row)};
oGrid.onRowMouseUp = function(event, row){this.setRowClicked(false, row)};
}
oGrid.onCurrentRowChanged = function(row){
var value = this.getRowProperty('tuRow', row);
if (!(this.disabled || value === null)){
var rowClicked = this.getRowClicked(row)
, grd = document.getElementById('carnetadr_scx-grid');
if (FoxInCloud.gridRowChangeDelay > 0 && (!rowClicked || FoxInCloud.gridRowChangeDelayClicked > 0)){
this.nTOrow && window.clearTimeout(this.nTOrow);
this.nTOrow = window.setTimeout(jQuery.proxy(FoxInCloud.gridMethod, FoxInCloud), FoxInCloud[rowClicked ? 'gridRowChangeDelayClicked' : 'gridRowChangeDelay'] * 1000, 'wAfterRowChange', grd, value);
}
else FoxInCloud.gridMethod('wAfterRowChange', grd, value);
}
};
oGrid.onControlDoubleClicked = function(event){
if(event.cancelBubble) return;
event = jQuery.event.fix(event);
if(event.which === 1){
return FoxInCloud.gridEvent(event, 'carnetadr_scx-grid');
}
};
oGrid.onCellValidating = function(text, col, row){
var result, dynCC, template, fmt, value, done;
col = parseInt(col, 10);
if (typeof row === 'undefined') {
template = this.getCellTemplate(col);
dynCC = this.getCellCurrentControl(col);
}
else {
row = parseInt(row, 10);
dynCC = this.getCellCurrentControl(col,row);
template = this.getCellTemplate(col,row);
}
if (template.disabled) return;
if (template.readOnly) return;
if (typeof text === 'string'){
fmt = this.getCellFormat(col, row);
value = fmt ? fmt.textToValue(text) : text;
}
switch (col){
case 0: if(dynCC === 'text1'){result = FoxInCloud.gridEditEvent('blur', 'carnetadr_scx-grid', value, 'carnetadr_scx-grid-column1-text1', true); done=!result; break;}
case 1: if(dynCC === 'text1'){result = FoxInCloud.gridEditEvent('blur', 'carnetadr_scx-grid', value, 'carnetadr_scx-grid-column2-text1', true); done=!result; break;}
case 2: if(dynCC === 'text1'){result = FoxInCloud.gridEditEvent('blur', 'carnetadr_scx-grid', value, 'carnetadr_scx-grid-column3-text1', true); done=!result; break;}
}
if (done){
var cols = this.getColumnCount(), rows = this.getRowCount(), done = false, row_ = row;
col++;
while (row < rows && !done) {
if (this.getCellEditable(col,row)) {
this.setSelectedColumns([col]);
this.setCurrentColumn(col);
if (row !== row_){
this.setSelectedRows([row]);
this.setCurrentRow(row);
}
done = true;
}
else {
col++;
if (col >= cols){
col = 0;
row++;
}
}
}
}
return result;
};
oGrid.onKeyBackspace = function(event){
event = jQuery.event.fix(event);
event.stopPropagation();
event.preventDefault();
};
oGrid.setSelectedRows([-1]);
oGrid.setSelectedRows([0]);
oGrid.disabled = true;
oGrid.setCurrentRow(0);
oGrid.disabled = false;
jQuery(grd).html(oGrid.toString());
}
dStart = new Date() - dStart;
window.console && console.log && console.log("'carnetadr_scx-grid' grid script took 69 ms. to generate on the server, " + dStart + " ms to execute on the browser, total " + (dStart + 69) + " ms.\n" + 'awhtml.fxp!Ogrid.gethtml_grd_aw_cscript_() - state changes > JavaScript: 31 ms.\nawhtml.fxp!Ogrid.gethtml_grd_aw_cxml_() - current state XML 32 ms.\nawhtml.fxp!Ogrid.gethtml_grd_aw_cxml_rs_calias() - .RecordSource "CCarnetadr" > RecordSet using Select-SQL: 16 ms.\nawhtml.fxp!Ogrid.gethtml_grd_aw_cxml_rs_calias() - Current record located using unique key expression "PADR(ALLTRIM(CCarnetadr.NOM)+" "+ALLTRIM(CCarnetadr.PRENOM)+" - "+ALLTRIM(CCarnetadr.COMMUNE)+" ("+CCarnetadr.CODEPOSTAL+")"+" "+CCarnetadr.IDUNIQUE,120)" = "ABC IMMODIAG M. HUMEAU Pierre - SAINT NAZAIRE (44600) _5SS0WE8QM ": 0 ms.\nawhtml.fxp!Ogrid.gethtml_grd_aw_cxml_rs() - \CCarnetadr\ RecordSet > XML (64 rows): 0 ms.\nawhtml.fxp!Ogrid.gethtml_grd_aw_cscript_oxmlchanges() - state changes: 0 ms.\nawhtml.fxp!Ogrid.gethtml_grd_aw_cscript_rs() - data changes > JS: 16 ms.\nawhtml.fxp!Ogrid.gethtml_grd_aw_cscript_events() - event handlers: 15 ms.');
})();
jQuery('#carnetadr_scx-retirer').prop('effectShow', false).prop('effectHide', false);
jQuery('#carnetadr_scx-modifier').prop('effectShow', false).prop('effectHide', false);
jQuery('#carnetadr_scx-ajouter').prop('effectShow', false).prop('effectHide', false);
jQuery('#carnetadr_scx-bsdropdown1').prop('effectShow', false).prop('effectHide', false);
jQuery('#carnetadr_scx-fermer').prop('effectShow', false).prop('effectHide', false);
FoxInCloud.formActivateObserve('carnetadr_scx', null, null);
jQuery('#carnetadr_scx').prop('wuValue ', null);
FoxInCloud.XBrowserFix('carnetadr_scx');
jQuery('#carnetadr_scx').prop('effectShow', true).prop('effectHide', true);
jQuery('#carnetadr_scx-listeauto').on('change', jQuery.proxy(FoxInCloud.DOMEvent, FoxInCloud, undefined, false));
jQuery('#carnetadr_scx-retirer').on('click', jQuery.proxy(FoxInCloud.LeftClick, FoxInCloud, undefined, false));
jQuery('#carnetadr_scx-modifier').on('click', jQuery.proxy(FoxInCloud.LeftClick, FoxInCloud, undefined, false));
jQuery('#carnetadr_scx-ajouter').on('click', jQuery.proxy(FoxInCloud.LeftClick, FoxInCloud, undefined, false));
jQuery('#carnetadr_scx-fermer').on('click', jQuery.proxy(FoxInCloud.LeftClick, FoxInCloud, undefined, false));
var inputs = jQuery("#carnetadr_scx *[tabindex]:not(div):not(.aw-grid-control, .aw-control-focus)")
.filter(function(){return this.tabIndex > 0;})
.sort(function(a,b){return a.tabIndex - b.tabIndex;});
inputs.each(function(idx, elt){
jQuery(elt).on('keydown', function(e){
var $this = jQuery(this), keyCode = e.which;
if (!(keyCode === 9 || keyCode === 13 && $this.is('input, select') && !($this.is('input.typeahead') && $this.data('typeahead')['shown']))) return;
if (keyCode === 9) e.preventDefault();
FoxInCloud.lastKey = keyCode;
var inputTo
, inputTos = e.shiftKey ? jQuery(inputs.slice(0).get().reverse()) : inputs.slice(0)
, index = inputTos.index(this)
;
!inputTo && inputTos.each(function(idx, inpTo){
inpTo = jQuery(inpTo);
if (true
&& idx > index
&& inpTo.prop('tabIndex') > 0
&& !inpTo.prop('disabled')
&& inpTo.is(':visible')
){
inputTo = inpTo;
return false;
}
});
!inputTo && inputTos.each(function(idx, inpTo){
inpTo = jQuery(inpTo);
if (true
&& idx < index
&& inpTo.prop('tabIndex') > 0
&& !inpTo.prop('disabled')
&& inpTo.is(':visible')
) {
inputTo = inpTo;
return false;
}
});
var nextFocus = function(){
if (FoxInCloud.lDialog){
if (FoxInCloud.$Dialog) FoxInCloud.$Dialog.data('oSrce', inputTo);
}
else inputTo
&& !FoxInCloud.lDialog
&& !inputTo.is(':focus')
&& inputTo.focus()
&& (!(keyCode === 13 && inputTo.is('textarea, button')) || e.preventDefault() || true)
&& true
&& window.console && console.log && console.log('tabbing to #' + inputTo.attr('id'))
;
};
$this.blur();
if (FoxInCloud.lRequest) FoxInCloud.AjaxComplete__ = nextFocus;
else nextFocus();
});
});
window.setTimeout(function(){jQuery('#carnetadr_scx-listeauto').focus();}, 500);
/* -- Généré le 18/07/2020 11:54:50 en 0,43 sec. par FAS version 2.31.0-beta.3 du 25/06/2020 11:31:10 */;
jQuery('#carnetadr_scx').addClass('container-fluid');</script>
<UserID>5TE0KMCLZ</UserID>
<reqID>1723_5TG0PJ9UC-001</reqID>
<ServerVersion>2.31.0-beta.3</ServerVersion>
<ServerTimeStamp>{^2020-06-25 11:31:10 AM}</ServerTimeStamp>
<AppTime>1.188</AppTime>
<ServerTime>2.481800</ServerTime></IntuiCat>
something wrong probably happened when restoring cLitteralJS()
because \'
is now \
in srp('tuRow','ACTIV\ EXPERTISE Grégoire WILLEFERT - GETIGNE (44190) _5SS0WE8QQ',4);
I see that the name is ACTIV' EXPERTISE
srp('tuRow','ACTIV\ EXPERTISE Grégoire WILLEFERT - GETIGNE (44190) _5SS0WE8QQ',4);
should read
srp('tuRow','ACTIV\' EXPERTISE Grégoire WILLEFERT - GETIGNE (44190) _5SS0WE8QQ',4);
maybe we've reached the limit of forum support, we may need to switch to private support.
I understand, but there is nothing urgent.
I'll make it right in the meantime.
As a reminder, the 1st correction worked well
the first correction worked well
Only because your index is in collate “General”, with “machine” (most general case) it’d fail.
I prefer generic solutions that work in all cases.
Well.
For the moment, with this, all is in order:
REPLACE ALL Nom WITH STRTRAN (Nom, "’", "'") IN Carnetadr
Alas we’ve lost our test case… hopefully you’ve saved the original table