<commit_before>/* Copyright 2015 Bloomberg Finance L.P.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

import * as widgets from '@jupyter-widgets/base';
import * as basemodel from './BaseModel';
import * as serialize from './serialize';
import { semver_range } from './version';
import _ from 'underscore';

export const AxisModel = basemodel.BaseModel.extend({

    defaults: function() {
        return _.extend(widgets.WidgetModel.prototype.defaults(), {
            _model_name: "AxisModel",
            _view_name: "Axis",
            _model_module: "bqplot",
            _view_module: "bqplot",
            _model_module_version: semver_range,
            _view_module_version: semver_range,

            orientation: "horizontal",
            side: null,
            label: "",
            grid_lines: "solid",
            tick_format: null,
            scale: undefined,
            num_ticks: null,
            tick_values: [],
            offset: {},
            label_location: "middle",
            label_color: null,
            grid_color: null,
            color: null,
            label_offset: null,
            visible: true,
            tick_style: {},
            tick_rotate: 0
        });
    },

    initialize: function() {
        AxisModel.__super__.initialize.apply(this, arguments);
        this.on("change:side", this.validate_orientation, this);
        this.on("change:orientation", this.validate_side, this);
        this.validate_orientation();
        this.validate_side();
    },

    validate_side: function() {
        var orientation = this.get("orientation"),
            side = this.get("side");
        if(orientation === "vertical") {
            if (side !== "left" && side !== "right") {
                this.set("side", "left");
            }
        } else {
            if (side !== "bottom" && side !== "top") {
                this.set("side", "bottom");
            }
        }
        this.save_changes();
    },

    validate_orientation: function() {
        const side = this.get("side");
        if (side) {
            if(side === "left" || side === "right") {
                this.set("orientation", "vertical");
            } else {
                this.set("orientation", "horizontal");
            }
            this.save_changes();
        }
    }
}, {
    serializers: _.extend({
         scale: { deserialize: widgets.unpack_models },
         offset: { deserialize: widgets.unpack_models },
         tick_values: serialize.array_or_json,
    }, widgets.WidgetModel.serializers)
});

export const ColorAxisModel = AxisModel.extend({

    defaults: function() {
        return _.extend(AxisModel.prototype.defaults(), {
            _model_name: "ColorAxisModel",
            _view_name: "ColorAxis"
        });
    }
});
<commit_msg>AxisModel as es6 class<commit_after>/* Copyright 2015 Bloomberg Finance L.P.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

import * as widgets from '@jupyter-widgets/base';
import { BaseModel } from './BaseModel';
import * as serialize from './serialize';
import { semver_range } from './version';

export class AxisModel extends BaseModel {

    defaults() {
        return {...widgets.WidgetModel.prototype.defaults(),
            _model_name: "AxisModel",
            _view_name: "Axis",
            _model_module: "bqplot",
            _view_module: "bqplot",
            _model_module_version: semver_range,
            _view_module_version: semver_range,

            orientation: "horizontal",
            side: null,
            label: "",
            grid_lines: "solid",
            tick_format: null,
            scale: undefined,
            num_ticks: null,
            tick_values: [],
            offset: {},
            label_location: "middle",
            label_color: null,
            grid_color: null,
            color: null,
            label_offset: null,
            visible: true,
            tick_style: {},
            tick_rotate: 0
        };
    }

    initialize() {
        super.initialize();
        this.on("change:side", this.validate_orientation, this);
        this.on("change:orientation", this.validate_side, this);
        this.validate_orientation();
        this.validate_side();
    }

    validate_side() {
        var orientation = this.get("orientation"),
            side = this.get("side");
        if(orientation === "vertical") {
            if (side !== "left" && side !== "right") {
                this.set("side", "left");
            }
        } else {
            if (side !== "bottom" && side !== "top") {
                this.set("side", "bottom");
            }
        }
        this.save_changes();
    }

    validate_orientation() {
        const side = this.get("side");
        if (side) {
            if(side === "left" || side === "right") {
                this.set("orientation", "vertical");
            } else {
                this.set("orientation", "horizontal");
            }
            this.save_changes();
        }
    }

    static serializers = {
        ...widgets.WidgetModel.serializers,
        scale: { deserialize: widgets.unpack_models },
        offset: { deserialize: widgets.unpack_models },
        tick_values: serialize.array_or_json,
    };
}

export class ColorAxisModel extends AxisModel {

    defaults() {
        return {...AxisModel.prototype.defaults(),
            _model_name: "ColorAxisModel",
            _view_name: "ColorAxis"
        };
    }
}

{'fraction_non_alphanumeric': 0.12120277563608327, 'fraction_numerical': 0.0029298380878951427, 'mean_word_length': 2.01534170153417, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1313362', 'n_tokens_mistral': 1768, 'n_tokens_neox': 1707, 'n_words': 461}