/*
 * Waltz - Enterprise Architecture
 * Copyright (C) 2016, 2017, 2018, 2019 Waltz open source project
 * See README.md for more information
 *
 * 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
 *
 */

import _ from "lodash";
import {initialiseData} from "../common";
import {CORE_API} from "../common/services/core-api-utils";
import template from './view.html';


const initialState = {
    entries: [],
    entityRef: null
};


function controller($stateParams,
                    serviceBroker) {

    const vm = initialiseData(this, initialState);

    const entityRef = {
        kind: $stateParams.kind,
        id: _.toNumber($stateParams.id),
        name: $stateParams.name
    };

    vm.changeLogTableInitialised = (api) => {
        vm.exportChangeLog = () => api.exportFn("change-log.csv");
    };

    vm.entityRef = entityRef;

    serviceBroker
        .loadViewData(CORE_API.ChangeLogStore.findByEntityReference, [vm.entityRef, null])
        .then(result => vm.entries = result.data);
}


controller.$inject = [
    '$stateParams',
    'ServiceBroker'
];


const view = {
    template,
    controller,
    controllerAs: 'ctrl'
};


export default view;
