unageanu/jiji2

View on GitHub
sites/src/js/viewmodel/widgets/pair-selector-model.js

Summary

Maintainability
A
0 mins
Test Coverage
import ContainerJS         from "container-js"
import Observable          from "../../utils/observable"
import ValidationUtils     from "../utils/validation-utils"

export default class PairSelectorModel extends Observable {

  constructor(validator) {
    super();
    this.validator = validator;

    this.pairNamesError = null;
  }

  initialize(availablePairs, defaultSelectedPairNames=[]) {
    this.pairNamesError = null;
    this.availablePairs = availablePairs;
    this.pairNames = defaultSelectedPairNames;
  }

  validate( ) {
    return ValidationUtils.validate(this.validator, this.pairNames,
      {field: "通貨ペア"}, (error) => this.pairNamesError = error );
  }

  update(checked, pair) {
    const pairNames = this.pairNames;
    if (checked) {
      if (!pairNames.find((p) => p == pair.name)) {
        pairNames.push(pair.name);
        this.setProperty("pairNames", pairNames, () => false);
      }
    } else {
      this.setProperty("pairNames",
        pairNames.filter((p) => p != pair.name), () => false);
    }
  }

  get pairNames() {
    return this.getProperty("pairNames");
  }
  set pairNames(pairNames) {
    this.setProperty("pairNames", pairNames);
  }
  get pairNamesError() {
    return this.getProperty("pairNamesError");
  }
  set pairNamesError(error) {
    this.setProperty("pairNamesError", error);
  }

  get availablePairs() {
    return this.getProperty("availablePairs");
  }
  set availablePairs(availablePairs) {
    this.setProperty("availablePairs", availablePairs);
  }

}