Skip to content

Commit

Permalink
200910 objectMap(), Classification(Pair), "old"-Classification
Browse files Browse the repository at this point in the history
objectMap() - map() wie beim Array, nur mit Object

refs #91

Klasse Classification:
	renameParamFun()

Klasse ClassificationPair:
	optSelect (get/set)
	optSet (get/set)
	renameOptions()
	deleteOptions()
	renameParamFun()

__LASTZATCLASS - "old"-Classification zur Haltung von alten
Optionswerten

buildOptions():
	optParams.oldData steuert zusätzliche Classification

procHaupt():
	"old"-Classification verschiebt Daten nach "old"

fixes #89
  • Loading branch information
Eselce committed Sep 19, 2020
1 parent 5a90f2a commit 3cb4a7e
Showing 1 changed file with 142 additions and 16 deletions.
158 changes: 142 additions & 16 deletions OS2.training.user.js
Original file line number Diff line number Diff line change
Expand Up @@ -3488,25 +3488,95 @@ function Classification() {
}

Class.define(Classification, Object, {
'renameOptions' : function() {
const __PARAM = this.renameParamFun();
'renameOptions' : function() {
const __PARAM = this.renameParamFun();

if (__PARAM !== undefined) {
// Klassifizierte Optionen umbenennen...
return renameOptions(this.optSet, this.optSelect, __PARAM, this.renameFun);
} else {
return Promise.resolve();
}
},
'deleteOptions' : function(ignList) {
const __OPTSELECT = addProps([], this.optSelect, null, ignList);
if (__PARAM !== undefined) {
// Klassifizierte Optionen umbenennen...
return renameOptions(this.optSet, this.optSelect, __PARAM, this.renameFun);
} else {
return Promise.resolve();
}
},
'deleteOptions' : function(ignList) {
const __OPTSELECT = addProps([], this.optSelect, null, ignList);

return deleteOptions(this.optSet, __OPTSELECT, true, true);
}
return deleteOptions(this.optSet, __OPTSELECT, true, true);
},
'renameParamFun' : function() {
// Parameter fuer 'prefixName': Prefix "old:"
return "old:";
}
});

// ==================== Ende Abschnitt fuer Klasse Classification ====================

// ==================== Abschnitt fuer Klasse ClassificationPair ====================

// Klasse fuer die Klassifikation der Optionen nach Team (Erst- und Zweitteam oder Fremdteam)
function ClassificationPair(classA, classB) {
'use strict';

Classification.call(this);

this.A = classA;
this.B = classB;

// Zugriff auf optSelect synchronisieren...
Object.defineProperty(this, 'optSelect', {
get : function() {
const __A = getValue(this.A, { });
const __B = getValue(this.B, { });

return (this.A ? __A.optSelect : __B.optSelect);
},
set : function(optSelect) {
const __A = getValue(this.A, { });
const __B = getValue(this.B, { });

__A.optSelect = optSelect;
__B.optSelect = optSelect;

return optSelect;
}
});

// Zugriff auf optSet synchronisieren...
Object.defineProperty(this, 'optSet', {
get : function() {
const __A = getValue(this.A, { });
const __B = getValue(this.B, { });

return (this.A ? __A.optSet : __B.optSet);
},
set : function(optSet) {
const __A = getValue(this.A, { });
const __B = getValue(this.B, { });

__A.optSet = optSet;
__B.optSet = optSet;

return optSet;
}
});
}

Class.define(ClassificationPair, Classification, {
'renameOptions' : function() {
return (this.A ? this.A.renameOptions() : Promise.resolve()).then(retValue =>
(this.B ? this.B.renameOptions() : Promise.resolve()));
},
'deleteOptions' : function(ignList) {
return (this.A ? this.A.deleteOptions(ignList) : Promise.resolve()).then(retValue =>
(this.B ? this.B.deleteOptions(ignList) : Promise.resolve()));
},
'renameParamFun' : function() {
return undefined;
}
});

// ==================== Ende Abschnitt fuer Klasse ClassificationPair ====================

// ==================== Abschnitt fuer Klasse TeamClassification ====================

// Klasse fuer die Klassifikation der Optionen nach Team (Erst- und Zweitteam oder Fremdteam)
Expand Down Expand Up @@ -3622,6 +3692,34 @@ __TEAMCLASS.optSelect = {
'blessuren' : true
};

// Teamparameter fuer getrennte Speicherung der Optionen fuer Erst- und Zweitteam...
const __LASTZATCLASS = new Classification();

// Optionen mit Daten, die ZAT-bezogen (fuer jetzigen und vergangenen ZAT) gemerkt werden...
__LASTZATCLASS.optSelect = {
'trainer' : true,
'tGehaelter' : true,
'tVertraege' : true,
'tReste' : true,
'tAnzahlen' : true,
'ids' : true,
'names' : true,
'ages' : true,
'positions' : true,
'opti27' : true,
'verletzt' : true,
'skills' : true,
'tSkills' : true,
'trainiert' : true,
'skillPos' : true,
'isPrio' : true,
'einsaetze' : true,
'prozente' : true,
'erwartungen' : true,
'erfolge' : true,
'blessuren' : true
};

// Gibt die Teamdaten zurueck und aktualisiert sie ggfs. in der Option
// optSet: Platz fuer die gesetzten Optionen
// teamParams: Dynamisch ermittelte Teamdaten ('Team', 'Liga', 'Land', 'LdNr' und 'LgNr')
Expand Down Expand Up @@ -3663,10 +3761,14 @@ function getMyTeam(optSet = undefined, teamParams = undefined, myTeam = new Team
// return Promise auf gefuelltes Objekt mit den gesetzten Optionen
function buildOptions(optConfig, optSet = undefined, optParams = { 'hideMenu' : false }) {
// Klassifikation ueber Land und Liga des Teams...
__TEAMCLASS.optSet = optSet; // Classification mit optSet verknuepfen
__TEAMCLASS.teamParams = optParams.teamParams; // Ermittelte Parameter

return startOptions(optConfig, optSet, __TEAMCLASS).then(optSet => {
// Beide Classifications kombinieren, als waere es nur eine...
const __CLASSIFICATION = ((!! optParams.oldData) ? new ClassificationPair(__TEAMCLASS, __LASTZATCLASS) : __TEAMCLASS);

__CLASSIFICATION.optSet = optSet; // Classification mit optSet verknuepfen

return startOptions(optConfig, optSet, __CLASSIFICATION).then(optSet => {
return showOptions(optSet, optParams);
}, defaultCatch);
}
Expand Down Expand Up @@ -5502,6 +5604,16 @@ function getZATNrFromCell(cell) {
return ZATNr;
}

// Fuehrt eine Map-Function auf ein Object aus
// obj: Das Object, das gemappt wird
// fun: Eine Mapping-Funktion
// return Ein neues Object mit gemappten Werten
function objectMap(obj, fun) {
return Object.fromEntries(
Object.entries(obj).map(
([key, value], index) => [key, fun(value, key, index)]));
}

// ==================== Ende Abschnitt fuer sonstige Parameter des Spielplans ====================

// ==================== Ende Abschnitt fuer Spielplan und ZATs ====================
Expand All @@ -5516,6 +5628,7 @@ function procHaupt() {
'teamParams' : __TEAMPARAMS,
// 'menuAnchor' : getTable(0, 'div'),
'hideMenu' : true,
'oldData' : false,
'showForm' : {
'showForm' : true
}
Expand Down Expand Up @@ -5543,6 +5656,13 @@ function procHaupt() {
'oldDatenZat' : true
}).catch(defaultCatch);

const __CLASSIFICATION = new Classification();

// Daten in "old"-Daten ueberfuehren...
__CLASSIFICATION.optSelect = objectMap(__LASTZATCLASS.optSelect, value => false);
__CLASSIFICATION.optSet = optSet;
await __CLASSIFICATION.renameOptions();

// Neuen Daten-ZAT speichern...
setOpt(__OPTSET.datenZat, __CURRZAT, false);
}
Expand Down Expand Up @@ -5575,6 +5695,7 @@ function procAufstellung() {
} else {
return buildOptions(__OPTCONFIG, __OPTSET, {
'menuAnchor' : getTable(0, 'div'),
'oldData' : false,
'showForm' : {
'saison' : true,
'aktuellerZat' : true,
Expand All @@ -5583,7 +5704,7 @@ function procAufstellung() {
'names' : true,
'einsaetze' : true,
'reset' : true,
'showForm' : true
'showForm' : false
},
'formWidth' : 1
}).then(optSet => {
Expand Down Expand Up @@ -5658,6 +5779,7 @@ function procAktionen() {
} else {
return buildOptions(__OPTCONFIG, __OPTSET, {
'menuAnchor' : getTable(0, 'div'),
'oldData' : false,
'showForm' : {
'saison' : true,
'aktuellerZat' : true,
Expand All @@ -5683,6 +5805,7 @@ function procEinstellungen() {
} else {
return buildOptions(__OPTCONFIG, __OPTSET, {
'menuAnchor' : getTable(0, 'div'),
'oldData' : false,
'showForm' : {
'saison' : true,
'aktuellerZat' : true,
Expand All @@ -5708,6 +5831,7 @@ function procTrainer() {
} else {
return buildOptions(__OPTCONFIG, __OPTSET, {
'menuAnchor' : getTable(0, 'div'),
'oldData' : false,
'showForm' : {
'saison' : true,
'aktuellerZat' : true,
Expand Down Expand Up @@ -5766,6 +5890,7 @@ function procTraining() {
} else {
return buildOptions(__OPTCONFIG, __OPTSET, {
'menuAnchor' : getTable(0, 'div'),
'oldData' : false,
'showForm' : {
'sepStyle' : true,
'sepColor' : true,
Expand Down Expand Up @@ -5996,6 +6121,7 @@ function procZatReport() {
} else {
return buildOptions(__OPTCONFIG, __OPTSET, {
'menuAnchor' : getTable(0, 'div'),
'oldData' : true,
'showForm' : {
'sepStyle' : true,
'sepColor' : true,
Expand Down

0 comments on commit 3cb4a7e

Please sign in to comment.