Ignore:
Timestamp:
09/28/20 09:29:02 (4 years ago)
Author:
bart
Message:

Version 1.5.2

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/main/webapp/plotlog.xhtml

    r18 r19  
    8787        */
    8888        function processLogFile(json) {
     89               
    8990                if (json['SAOPState']!=undefined) {
    90                         processSAOP(json['SAOPState']);
     91                        processStandard(json['SAOPState'], 'SAOP');
    9192                } else if (json['SHAOPState']!=undefined) {
    9293                        processSHAOP(json['SHAOPState']);
     
    9495                        // just use the SAOP processor, which shows the
    9596                        // utilities of all Offers in sequence.
    96                         processSAOP(json['MOPACState']);
     97                        processStandard(json['MOPACState'], 'MOPAC');
    9798                } else{
    9899                setStatus("Unknown log file contents "+Object.keys(json));
     
    101102       
    102103        /**
    103         Handle SAOP protocol result.
    104         */
    105         function processSAOP(json) {
     104        Handle standard protocol result.
     105        @param protocol either SAOP or MOPAC or another SAOP-like protocol
     106        */
     107        function processStandard(json, protocol) {
    106108                var partyprofiles={}
    107109                var profs=json['partyprofiles'];
     
    110112                }
    111113               
    112                 getProfiles(json, partyprofiles);
     114                getProfiles(json, partyprofiles, protocol);
    113115        }
    114116       
     
    129131                       
    130132               
    131                 getProfiles(json, partyprofiles);
     133                getProfiles(json, partyprofiles, "SHAOP");
    132134        }
    133135
     
    148150        /**
    149151        Get the partyprofiles.
    150         @json the json protocol result
    151         @partyprofileURIs dict with the websocket addresses for each party'as profile
    152         @partyprofiles dict with each party's profile. Initially should be {}
    153         */
    154         function getProfiles(json, partyprofileURIs, partyprofiles={}) {
     152        @param json the json protocol result
     153        @param partyprofileURIs dict with the websocket addresses for each party'as profile
     154        @param partyprofiles dict with each party's profile. Initially should be {}
     155        @param protocol protocolname, eg "SAOP"
     156        */
     157        function getProfiles(json, partyprofileURIs, protocol, partyprofiles={} ) {
    155158                var keys = Object.keys(partyprofileURIs);
    156159                        if (keys.length==0) {
    157                                 plotResults(computeUtils(json, partyprofiles), isAgreement(json));
     160                                plotResults(computeUtils(json, partyprofiles), isAgreement(json, protocol));
    158161                                return;
    159162                        }
     
    178181                }
    179182                partyprofiles[party]=profile['LinearAdditiveUtilitySpace'];
    180                 getProfiles(json, partyprofileURIs, partyprofiles);
     183                getProfiles(json, partyprofileURIs, protocol, partyprofiles);
    181184            };
    182185            ws.onerror=function(event) {
     
    186189       
    187190        /**
    188         @return true if there is agreement
    189         */
    190         function isAgreement(logfile) {
    191                 var actions=logfile['actions'];
    192                         var lastact = actions[actions.length -1];
    193                         return 'accept' in lastact;
     191        @param logfile the logfile content, but below the protocol header
     192        @param protocol the protocol name, eg SAOP, SHAOP, MOPAC
     193        @return 'Yes' if there is agreement, 'No' if there is no agreement at all,
     194        or 'Partial'  if part of the parties agreed and part did not.
     195        or '?' if unsupported protocol
     196        */
     197        function isAgreement(logfile, protocol) {
     198                        switch (protocol) {
     199                                case "SAOP":
     200                                case "SHAOP":
     201                                        var actions=logfile['actions'];
     202                                        var lastact = actions[actions.length -1];
     203                                        return 'accept' in lastact ? 'Yes':'No';
     204                                case "MOPAC":
     205                                        var finalstate=logfile['phase']['partyStates'];
     206                                        var nagrees=Object.keys(finalstate['agreements']).length;
     207                                        var nparties=Object.keys(finalstate['powers']).length;
     208                                        if (nagrees==nparties) return "Yes";
     209                                        if (nagrees==0) return "No"
     210                                        return "Partial";
     211                                default:
     212                                        return "?";
     213                                }
    194214        }
    195215        /**
     
    235255        /**
    236256        @param utilities the dict with key=party id  of the utilities of all steps for each party )
    237         @param isAgreement true iff there is agreement reached
     257        @param isAgreement either Yes, No, Partial or ?
    238258        */
    239259       
     
    241261                setStatus("Plotting" )
    242262               
    243             document.getElementById('agreement').innerHTML=isAgreement?"Yes":"No";
     263            document.getElementById('agreement').innerHTML=isAgreement;
    244264
    245265                var parties=Object.keys(utilities);
     
    287307                                                scaleLabel: {
    288308                                                        display: true,
    289                                                         labelString: 'Turn'
     309                                                        labelString: 'Offer'
    290310                                                }
    291311                                        }],
Note: See TracChangeset for help on using the changeset viewer.